Kouhei Sutou
kou****@clear*****
2012年 11月 29日 (木) 12:59:02 JST
須藤です。 今日は年に一度のいい肉の日ですね! groongaが使っている独自プロトコル「GQTP」をRubyで実装したラ イブラリgqtp 1.0.0をリリースしました! https://github.com/ranguba/gqtp ちょっと、まだ荒削りなのですが、GQTPクライアント、GQTPサー バー、GQTPプロキシとして使える機能が揃っています。また、API は非同期で使えるようなAPIにしているので、同時に複数の接続を 受け付けるような使い方にも対応できます。 例えば、こんな感じになります。 GQTPクライアントとして使う: require "gqtp" client = GQTP::Client.new(:address => "192.168.0.1", :port => 10041) request = client.send("status") do |header, body| p body # => "{\"alloc_count\":163,...}" end request.wait GQTPサーバーとして使う: require "gqtp" server = GQTP::Server.new(:address => "192.168.0.1", :port => 10041) server.on_request do |request, client| body = "{\"alloc_count\":163,...}" header = GQTP::Header.new header.query_type = GQTP::Header::ContentType::JSON header.flags = GQTP::Header::Flag::TAIL header.size = body.bytesize client.write(header.pack, body) do client.close end end server.run.wait GQTPプロキシとして使う: require "gqtp" proxy = GQTP::Proxy.new(:listen_address => "127.0.0.1", :listen_port => 10041, :upstream_address => "192.168.0.1", :upstream_port => 10041) proxy.run.wait GQTPのプロトコルはとてもシンプルなのでRuby以外の他の言語でも わりと簡単に実装できるはずです。Rubyの実装もコメントとかなに やらを入れても1000行くらいです。GQTPのプロトコルは今日リリー スされたgroonga 2.0.9からドキュメント化したのでぜひ他の言語 でもチャレンジしてみてください! http://groonga.org/ja/docs/spec/gqtp.html さて、今日は年に一度のgroonga勉強会「全文検索エンジンgroonga を囲む夕べ 3」が開催されます。 http://atnd.org/events/33070 補欠の人もいるので、参加登録はしたけど来れなくなってしまった 人はキャンセルしてもらえると補欠の人も参加できて助かります! また、今回もUStreamなどで会場にこれなくても内容がわかるような 仕組みを用意する予定です。遠方でこれない人や、補欠で入れない 人や、残念ながら体調不良でキャンセルしてしまった人はtwitter で@groongaをチェックしていてください! https://twitter.com/groonga/ 開場が18:30で、開演が19:00なのですが、開演前に groonga/mroongaの開発者に直接話を聞ける場所を用意する予定で す。直接、開発者に質問・要望できるチャンスなので、都合があう 参加者は早めに会場に来てみてください! -- 須藤 功平 <kou****@clear*****> 株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270) groongaサポート: http://groonga.org/ja/support/ パッチ採用はじめました: http://www.clear-code.com/recruitment/