自分用にUbiquityコマンドを登録する場合は、Ctrl+SpaceでUbiquityを起動してから、command-editorコマンドを実行し、コマンドを実装するためのJavaScriptを登録すればOkです。 これを一般に公開するためには、以下のようなLINKタグをHEAD内に含むHTMLページを用意する必要があります。

   1  <link rel="commands" href="http://url-to-jsfile.js" name="タイトル"/>

このjsファイルは、'application/x-javascript'のMIME TYPEで配信される必要があります。'text/javascript'の場合は無視されてしまいます。 jsファイルの中には、自分用のコマンドで作ったものと同じ形式のJavaScriptを記述可能です。

上述のHTMLページを閲覧した閲覧者は、コマンドをインストールするかどうか質問され、Subscribeボタンを押すと購読画面に遷移します。 いまのところ、購読する気がない場合に「×」ボタンを押して無視しても、 次回訪問時に何度も確認されてしまうため、 Ubiquityコマンドのインストールページは、通常のページとは別に用意したほうがいいかもしれません。

See Also

posted by Png genki on Thu 28 Aug 2008 at 07:42

s21gブログの検索を Ubiquity から行えるようにしました。 Ubiquity commandのSubscribeは以下のページから行えます。

フッタのリンク「Ubiquity」からJumpすることもできます。

コマンドをインストールした後は、 Ctrl+SpaceもしくはAlt+Spaceキーを押してUbiquityを立ち上げた後、 以下のようなコマンドでs21gブログ内の記事をどこからでも検索できるようになります。

   1  s21g-blog-search search word

コマンド名は省略可能(abbrev)なので、

   1  s21g search word
のように使うこともできます。

s21g blogのubiquity commandを利用するためには、Ubiquityをインストールする必要があります。

See Also

posted by Png genki on Thu 28 Aug 2008 at 07:27

Rails 2.1より前では、Polymorphicアソシエイションを Eagerローディングするのは面倒でした。 しかし、Rails 2.1以降では、Eagerローディングの方法が変わったため、 自分でEager Loadingが行われるタイミングを決める方法 を使って簡単にPolymorphicなアソシエイションをEagerロードすることができます。

   1  trackbacks = Trackback.all(:limit => 10)
   2  Trackback.send :preload_associations, trackbacks, :trackbackable

このように、事後にpreload_associationsを呼ぶだけです。

posted by Png genki on Wed 27 Aug 2008 at 09:36

技術評論社さまより献本いただきました。ありがとうございます。

WEB+DB PRESS Vol.46
WEB+DB PRESS Vol.46
posted with amazlet at 08.08.26

技術評論社
売り上げランキング: 99

今号で印象に残ったのはこんな感じです。

  1. AIR開発入門 基礎から応用までまとまっているので、これからAIRを使いたい人には非常に便利だと思います。
  2. ALPHA GEEKに逢いたい(よしおかさん) よしおかさんの喋りっぷりに脱帽。あの弾さんが無口な人に見える。そして代表作に期待!
  3. プロトコルバッファ 深追いしていなかったので参考になりました。分散レンダラを作る時に使えるかな…? しかし全部自分でプロトコル設計するだろうなぁ…。 安藤さんのRuby版プロトコルバッファにはGAE的な意味で期待。
posted by Png genki on Tue 26 Aug 2008 at 21:03

LLVM勉強会以来、バックグラウンドプロセスでずっとyak shavingしてました。 debian/etchでllvm-2.3をソースからインストールする方法のメモです。

  1. gcc-4.3.1をソースからインストールする。 最新のllvmは、コンパイルするのにgcc-4.3以降が必要らしい。 全部入れようとするとgfortranのコンパイルあたりで symbol `fstat64' is already definedというようなエラーが出てしまったので、 色々解決策を探していたけれど、llvmをインストールする上では必要ない ことに気がついたので、gcc-coreとgcc-g++のみソースからmakeしてインストール
  2. llvm-2.3をソースからインストール。

で完了です。

See Also

posted by Png genki on Tue 26 Aug 2008 at 20:30

ruby-lang.orgより、REXMLの脆弱性に関する報告がありました。

REXMLのDoS脆弱性

RailsでXMLリクエストのパースに使用されているREXMLに、DoS脆弱性が発見されました。XML entity explosion attackと呼ばれる攻撃手法により、ユーザから与えられたXMLを解析するようなアプリケーションをサービス不能(DoS)状態にすることができます。大部分のRailsアプリケーションはこの攻撃に対して脆弱です。

問題に対処するためのGemがリリースされているようなので、 以下のように対処しました。

  1. Gemをインストール
       1  # gem install rexml-expansion-fix
    
  2. ライブラリを読み込む
       1  require 'rexml-expansion-fix'
    

また、RailsのPlugin Gemとして機能するものも作ってみました。

genki-rexml-expansion-fix

Gemをインストールした後、以下のようにconfig/environment.rb似記述します。

   1  config.gem 'genki-rexml-expansion-fix',
   2      :lib => 'rexml-expansion-fix',
   3      :source => 'http://gems.github.com'

See Also

posted by Png genki on Mon 25 Aug 2008 at 07:18 with 2 comments

Formulaは、数式や化学構造式をブログに貼り付けて共有するサービスです。

このたび、出力形式が透過PNGになりました。 以下のように、背景色が白以外の環境でもお使いいただけます。

ブラウザがIE6の場合、透過PNGを正しく扱えないため、 従来の非透過PNGと同様の出力となります。 IEPNGFix 2等を使うことで、IE6でも透過PNGを扱えるようになるようです。

今後の方向性としましては、

  • 黒背景用の白文字画像の生成
  • JavaScriptが利用不可能な環境で、IE6でも利用できるようにするために任意の背景色と前景色を指定して非透過PNGを生成する

等を予定しております。 今後ともよろしくお願いいたします。

posted by Png genki on Mon 25 Aug 2008 at 03:19

Capistrano-2.1を使って、Gitリポジトリからデプロイする為のレシピファイルの書き方のメモです。

config/deploy.rb

   1  set :application, "goodstuff"
   2  set :scm,         :git
   3  set :repository,  "git.foo.com:/path/to/#{application}.git"
   4  set :branch,      'master'
   5  set :deploy_via,  :copy
   6  set :deploy_to,   "/mnt/app/#{application}"
   7  set :user,        "app"
   8    (--snip--)

/path/to/goodstuff.gitがベアリポジトリだと仮定しています。 :branch:deploy_viaを指定しているところがポイントでしょうか。 後は

   1  % cap deploy

するだけ。

posted by Png genki on Sat 23 Aug 2008 at 01:58 with 1 comment

Amazon EBSを使う方法のメモ。

Elasticfox拡張 を使い、 EBSボリュームを作成し、適当なインスタンスにアタッチする。 仮にここでは、/dev/sdhにアタッチしたとする。

その後、ボリュームをアタッチしたインスタンスにSSHでログインし、 以下のコマンドでボリューム上にファイルシステムを構築する。

   1  # yes | mkfs -t ext3 /dev/sdh

続いて、適当なディレクトリを作成し、マウントする

   1  # mkdir /mnt/foo
   2  # mount /dev/sdh /mnt/foo

後は普通に/mnt/fooにアクセスすればOk。

See Also

posted by Png genki on Fri 22 Aug 2008 at 21:46

EC2でパッケージのRubyではなく、srcからRubyを入れて使う場合、 イメージの状態によってはAMI-toolsがLOAD_PATH不足で正しく起動できない場合がある。

その場合、以下のようにAMI-toolsのスクリプトを書き換える。

/usr/local/bin/ec2-bundle-vol

   1  #!/bin/bash
   2  ruby -I/usr/lib/site_ruby /usr/lib/site_ruby/aes/amiutil/bundlevol.rb $*

-IオプションでLOAD_PATHを補っている。

posted by Png genki on Fri 22 Aug 2008 at 04:17