Rails 2.0リリース! でもActiveModelが….

Posted filed under Ruby on Rails.

http://dev.rubyonrails.org/browser/tags/rel_2-0-0 Rails2.0でました! rubyforgeではパッケージが公開されているので、数時間でgemでもインストールできるようになるでしょう。 ActiveModelを楽しみにしてたんだけど、やっぱり空っぽ・・・。 http://dev.rubyonrails.org/browser/tags/rel_2-0-0/activemodel/lib/active_model これが正式版でいいのか? つうかこんだけ広範囲に影響するものをRC1で入れるあたりが怖いなぁ。

Google Chart APIで日本語が通るか試してみる

Posted filed under Javascript.

 グラフが簡単に生成できるAPI、Google Chart APIが公開されたので、早速使ってみました。  Railsのプラグインとかは誰かが作ってくれるだろうから、自分でやらないとして、気になるのは日本語が通るのか。 早速試してみたところ、ひらがなは通るが漢字や長音記号は通らない。おしい。あと一歩。 修正 13:47 Typo: 感じ→漢字 矢崎さんありがとうございました。 追記 14:20 弾さんの所で、ブラウザから簡単に試せるフォームが公開されてます。

HyperEstraierで個人データを検索する[まだ調べ中]

Posted filed under Ruby on Rails.

mixiでも使われているって言う全文検索エンジンHyperEstraier。mixiの膨大な件数を処理するぐらいだから相当スケーラビリティもあるだろなーとおもいつつ、SQLだけで全文検索できちゃうMySQL+Sennaが便利なんで、そっちばっかり使ってました。 MySQL+Senna(Triton)も、PostgreSQL+Senna(Ludia)も、属性付きで検索した場合、Sennaで全文検索してから、その答えをSQLで絞り込みを行っているようで、たとえば、個人のメッセージを保存しているテーブルを検索した場合など、属性の値が多い場合には、かなり効率が悪くなる事が見えてました。 本当は、メッセージみたいなものは、個人ごとにインデックスをもって処理するべきなんだろうなと思っていて、SennaでやるかHyperEstraierでやるか迷いつつ、ぐぐっていたところ、HyperEstraierがどんぴしゃりな機能を持っているのを発見しました。 疑似ノードマスタという機能で、大量のインデックスを保持することが容易にできるようです。 この疑似ノードマスターの話は、おいおい調べるとして、まずはRailsからHyperEstraierを触ってみます。 というほどのものではなく、acts_as_searchableというプラグインを使えば、ほぼ意識することなく、HyperEstraierを扱えるようです。 このプラグインは単純な全文検索だけでなく、属性検索などもサポートしており、通常の用途であれば、これで事が足りそうです。 # estcmd create -tr -attr @user_id num messages class Message < ActiveRecord::Base acts_as_searchable :searchable_fields => [:subject, :body], :attributes => {:user_id => :user_id} end と指定する事で、下記の様に特定ユーザのメッセージだけ検索するという事ができます。 Message.fulltext_search(“masuidrive”, :attributes => “user_id NUMEQ %d” % User.find_by_name(‘guest’)) このプラグインで、注意が必要なのは、検索対象として指定したカラムのsetterメソッドが定義されている点です。 この場合は、subject=, body=, user_id=が上書きされます。 プラグインの実行タイミングなどから、define_method_chainは使えないようなので、これらのメソッドを上書きするときは、そのメソッドの中から値を更新するときに、write_attributeの代わりに、write_changed_attributeを呼ぶ様にしてください。 以上、バットノウハウでした。 属性検索の演算子は、ユーザーズガイドの検索条件式を見てください。通常の=演算子などは使えません。

ies4osxを使ってOSX上でIE6を動かす(でも遅くて使えない)

Posted filed under Mac.

 ies4osxを使うとIntel版OSXにdarwineを使ってIE6を入れられると言うので試してみました。  ies4osxの起動後に出る言語選択で「日本語」があるので、あっさり行くかと思いきや、日本語が表示されない・・・・。 ちょっと無茶をして「/Applications/Internet Explorer 6.0.app/Contents/Resources/ie6/drive_c/windows/fonts/」に日本語のフォントを入れたら、表示されるようになりました。大体同じかと思いきやボールドがイキてない。それ以外は再現性高いな。Flashも動いてるし。  とりあえずyahoo.co.jpを表示させてみたところ、表示に30秒近くかかり全然実用的な速度が出ません。昔の2400bpsのモデムの様に文字が流れる様が見えます。  ほんとはSelenium-RCで動かそうと思ったんだけど、あまりの遅さに難しいみたい。 おとなしくParallelsとか使った方が良さそう。 p.s  同じ画面をWindows2000 IE6で見た画面はこちら