2010年6月28日月曜日

compojure.orgのサイトミラー

旧compojure.org? (compojure-0.2.0程度)の ミラーサイト を試験的に用意しました。
(ソース)

gh-pagesについても(6/28現在)エラーが出ているので、用意してみました。
(ソース)(7月上旬には復帰)

2010年6月22日火曜日

php pecl探索

APCやmemcachedなど従来から使われている物以外のPHPに新しい使い勝手を追加するpecl拡張を紹介したいと思います。 

ssh2
指定したファイルからの暗号鍵認証も、パスワード認証も可能。
SFTP接続からアップロード・ダウンロード、切断まで。
タイムアウトがある場合は、ポーリングについては不明ですので、バッチ処理を挟む場合、ファイル操作ごとに接続するなどしましょう。
http://www.php.net/ssh2

tokyo_tyrant
Webクラスター環境で、共有セッションの管理などに使えます。
http://www.php.net/manual/ja/tokyo-tyrant.installation.php 
ttserver -port 2000 -ext /path/to/expire.lua -extpc expire 30.0 '/tmp/sessions.tct#idx=ts:dec'
TokyoTyrantサーバーをluaで拡張することができます。
セッション管理は、pecl側で制御することも出来ます。

Tokyo Cabinet と Tokyo Tyrantが入っていれば、(rpmかlocalインストールなどで、自分は、specからインストールしました)。luaも入れておきましょう。
pecl install tokyo_tyrantで、いけますよ。(現在は、1.0前なので、 pecl install tokyo_tyrant-0.5.0 とか必要)
http://www.php.net/tokyo-tyrant
http://github.com/mkoppanen/php-tokyo_tyrant/

oauth
OAuthのC実装2010年6月2日にめでたく1.0.0がリリース
http://php.net/oauth


lzf
ストリーム圧縮向けの高速な圧縮伸張をサポート。
ただし、肝心のストリーム圧縮やフィルターでの利用は出来ない模様。
http://www.php.net/lzf

libevent
待望のモジュール、PHPでスレッドベースのイベントサーバが用意できます。いままでも、プロセスベースや、HTTP処理ベースの並列化は可能でしたが、のような軽量な処理 が可能になります。
http://www.php.net/libevent


mongo
MongoDB接続用モジュール

http://www.php.net/mongo

amqp
RabbitMQな どAMQP実装へのクライアント用の接続モジュールです。
http://www.php.net/amqp

stomp
こちらも、メッセージキュー(ActiveMQなど、stompプロトコルに対応した)クライアント用の接続モジュールです。

http://www.php.net/stomp

2010年6月21日月曜日

Kyoto Cabinetとluaとluajit

lua-5.14用にコンパイルした(/usr/local/lib/lua/5.1/)kyotocabinet.soを
luajitから使ってみました。luaとの違いは、おそらくループまわりの高速化になります。

vmplayer上の1core 2GHzで比較

$ lua kctest.lua order "casket.kch" 1000000

opening the database:
time: 0.001
setting records:
time: 4.013
getting records:
time: 3.867
removing records:
time: 4.019
closing the database:
time: 0.008

$ luajit kctest.lua order "casket.kch" 1000000
opening the database:
time: 0.001
setting records:
time: 3.576
getting records:
time: 3.483
removing records:
time: 3.417
closing the database:
time: 0.009

12%前後高速化したようです。

ちなみに、/usr/local/lib/kyotocabinet.soをldconfigしてないと、
luajitでは、require "kyotocabinet"で、セグメントフォルトしました。
luaでは、kyotocabinet.soが、見つからないというメッセージになりました。

ここら辺の面倒見は、luajitよりluaのが、いいようです。

仕組みを分かってないが、luajit-2.00-beta4.soと、リンクする必要はないのか。
必要なのは、Tokyo Tyrantみたいに、luaをKyoto Cabinet側に組み込むときかな?

そして、今後のlua-5.2.0登場で、luajitがどうなるのか戦々恐々としてます。