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を呼ぶ様にしてください。 以上、バットノウハウでした。 属性検索の演算子は、ユーザーズガイドの検索条件式を見てください。通常の=演算子などは使えません。

明日はRuby検定

Posted filed under Ruby.

明日はRuby認定試験だ。 何人受けるのかなぁ。知ってる人は結構受けてそうな気がするけど。 予想問題(別の)すらロクに見ていないので、受かるか、かなり微妙です。

Google交流会に参加してきました & OpenSocial勉強会を身内でやりました

Posted filed under Ruby on Rails.

 ちょっと遅くなっちゃいましたが、11月2日にGoogle交流会に参加してきました。 お題は「GData」。Google MapsとかじゃなくてGData。マイナーだw 使ったことある人いないよねw つうか、これはプロトコルでAPIじゃないから、あまり意識することないしね。  名前的に、Google Data APIなのでGoogleの情報をやりとりするためのAPIなのかと思ってる人が多いけど、早い話がAtomを拡張したAPIのプロトコルです。  一番使えそうなのは、Googleカレンダーの情報をやりとりするAPIが、GDataベースになっています。  そんなわけで、あまり表に出ないけど、使えそうなベース技術GDataに興味のある人は、Googleブログを見てください。ビデオなんかも公開されてます。  それと全然関係ないんですが、永和の方々とOpenSocialについてgdgd勉強会?してきました。

OSC2007-niigataでも、マッシュアップ話です

Posted filed under Publications, Ruby on Rails.

 OSC2007-niigataでも、マッシュアップ話をします。  本当は、ニワンゴのメールAPIを使ったヤツにしようと思っていたのですが、時間が無くて北海道や関西と同じ内容となっています。 ソースは、osc-onsen-niigata.zip。 | View | Upload your own

1時間版 PHPからRails

Posted filed under Publications, Ruby on Rails.

楽天さんで話しをさせていただいた、PHPからRailsへの移行方法の講演資料です。 今までの比べて短いので、すこし読みやすくなっていると思います。 [追記] if構文の変数スコープの説明に間違えがあります。新しいスコープは作られません。 | View | Upload your own

Railsプラグイン紹介サイト – RAILSify.com

Posted filed under Ruby on Rails.

 Railsを人に勧めると必ず聞かれるのが、「プラグインをどこで探せばいいんですか?」  公式Wikiにもプラグイン情報はあるのですが、サイトがたまに落ちてたりスパムにやられたりで、あまり活用されていなく、結局Google先生頼りで検索したり、他のブログで見つけたのをブックマークしたりとしていました。  みんなプラグインをまとめるサイトを待ち望んではいたのですが、だれも作らないまま結構な時間が過ぎました。  しかし、やっとプラグインやツールをまとめるサイトRAILSify.comが、公開されました。  たぶん管理者側で追加したのだと思いますが、既にメジャーなプラグインについては、登録されているようです。ちょっと使ってみたところ、使い勝手もデザインもいいようなので、これが安定して、プラグイン情報がここに集まるようになるといいなぁ。 via eHub

9/29(sat) Webキャリアさん主催で”PHPプログラマの為のRuby on Rails入門”をやります。

Posted filed under Ruby on Rails.

[追記] if構文の変数スコープの説明に間違えがあります。新しいスコープは作られません。  告知が立て続けですが、Webキャリアさん主催で”PHPプログラマの為のRuby on Rails入門“をやります。  こっちは、土曜日開催で、5時間バージョンになっています。土曜日だけあって長いです。懇親会もあります。正直、体力が持つか心配ですw  9/26(水) 19:00からのプログラマを幸福にするRuby on Railsセミナーと、9/29(土) 13:00からのPHPプログラマの為のRuby on Rails入門、興味のあるかたは、ご都合の付く方に参加いただけるとうれしくおもいます。 m(_ _)m 追記 17:42  こちらのセミナー懇親会込みの有料(3000円)になっています。 会社の時と違って、手を動かしながらではないし、1時間長いので、Capistranoとかの話しをちょっと追加しようかなと思っています。

9/26(wed) プログラマを幸福にするRuby on Railsセミナーを開催します

Posted filed under Publications, Ruby on Rails.

 先日、会社で「PHPユーザの為のRuby/Rails入門」を行ったところ、内外から非常に反響が大きく、社内だけだともったいないということで、誰でも参加できる形で開催することになりました。  多くの方に聞いてもらいたいということで、実際に触りながらというのではなく、講義形式で2時間に縮めて、9月26日(水)の19時から開催します。  対象は、PHP/Perl/Javaなどの言語でMVCフレームワークを使った経験がある方です。定員は30名で先着順となっていますので、興味のあるかたは是非、下記のページからお申し込みください。 “プログラマを幸福にするRuby on Rails”セミナー申し込みフォーム 追記 15:43  その週の土曜日9/29日にWebキャリアさん主催で、5時間バージョンもやります→9/29(sat) Webキャリアさん主催で”PHPプログラマの為のRuby on Rails入門”をやります。

携帯端末のUAや解像度、Flashのバージョンなどの詳細情報公開している ke-tai.org

Posted filed under Ruby on Rails.

 前に一緒に会社をやっていた友人が、携帯電話の各種スペック一覧表を公開しました。  このページでは、この夏までに発売されているほとんどの携帯の「メーカ名, 機種名, 機種略名, ユーザエージェント, ブラウザ幅(x), ブラウザ高さ(y), 表示カラー数, ブラウザキャッシュ, GIF, JPG, PNG, Flash, Flashバージョン, Flashワークメモリ量, Javaアプリ, BREW, HTMLバージョン, SSL, ログイン, クッキー」を網羅しています。  さらにCSVで取得可能なので、自作のシステムに組み込むことも簡単です。  これで、端末ごとに画像サイズを変えたり、Flashで表示するか画像で表示するかを適切に判断するなど、端末のスペックにあった使いやすいサイトを作りやすくなるなー。 そこまでやるのもある意味大変だけどw この辺はフレームワーク的な部分でこのデータをみて、吸収してくれる仕組みがあるとうれしいな。  jpmobileに組み込まない?>daraくん – 携帯端末スペック一覧 – ke-tai.org – 携帯電話スペック一覧