mrubyをSQLiteに組み込んでみた
mruby いいですね〜。
とりあえずSQLiteから使えるようにしてみました。
https://github.com/spiritloose/sqlite3ext-mruby
とりあえずこんなことができます。
SELECT mrb_eval('ARGV.shift.to_i * 2', 42); SELECT mrb_load('/path/to/library.rb'); SELECT mrb_load_irep('/path/to/library.mrb');
eval とか load できるだけじゃ面白くないので、ruby で関数を定義できるようにしてみた。
def fib(n) n < 2 ? n : fib(n - 1) + fib(n - 2) end create_function(:fib) do |n| fib(n) end
っていうファイルを mrb_load すると呼び出せるようになる。
SELECT fib(30);
非常に組み込みやすくて良いわけですが、どう使うと面白いかなぁ。
MobiRuby は素晴らしいですねぇ。
と、約2年ぶりに更新してみるw
YAPC::Asia Tokyo 2010で発表してきました
YAPC::Asia Tokyo 2010で発表してきました。資料は Slide Share においておきました。
会場にこられていた方々、どうもありがとうございました!。
また、時間が足りなくて最後のほうがかなり駆け足になってしまってすみませんでした。
今回のYAPCは、いろいろな発表を聞いて得るものも多かったですし、またいろいろな方々と直接お会いしてお話できてよかったです。
Larryにサインも貰えました!
YAPC::Asia Tokyo 2010で発表します
さて、すごく久しぶりのPostなわけですが…
YAPC::Asia Tokyo 2010で(今日)発表します。
「Write Good Parser in Perl」というタイトルで、パーサについていろいろお話したいと思います。
http://yapcasia.org/2010/talks/63D6EAB0-BC8C-11DF-8791-B9FC0F276C45
よろしくお願いします。
追記
mod_psgi 永続化、Windows対応、autoconf化など
mod_psgi の開発をぼちぼち進めてます。
mod_psgi が Perlインタプリタを永続化するようになりました
ブログには書いてなかったんですが、mod_perl のような方法で永続化するようになってます。
親プロセス起動時に PSGIApp を全て do で読み込むようになっています。
ということで、mod_psgi での .psgi ファイルはアプリケーションの定義と、mod_perl での startup.pl のような効果があります。
Windowsに対応しました
mattnさんがやってくれました。すばらしいですね。
autoconf化しました
ということでインストール方法は
$ ./configure && make && sudo make install
になります。詳しくは README を参照してください。
今はパッケージングしたやつをリリースしてないので、最初にautoconfでconfigureを生成する必要があります。
で今後ですが、PSGI の SHOULD や MAY の部分で実装できてないところの実装(sendfile周りとか)とかをやって、落ち着いたら最適化などをやっていければいいなと思ってます。
あと、永続化方法はまだ検討していて、Passenger や mod_wsgi のような別デーモンを起動するような方法なども検討しています。
mod_psgi を実装してみた
http://github.com/spiritloose/mod_psgi
PSGI を実装したApache2モジュール。
% make && make install
でインストールできて、
LoadModule psgi_module modules/mod_psgi.so <Location /psgi> SetHandler psgi PSGIApp /path/to/app.psgi </Location>
で動く。
がーっと書いたのでまだまだの部分が多いとはおもうけど、一通り実装できたと思う。
Plack::Test::Suite を使ったテストも書いた。
http://github.com/spiritloose/mod_psgi/blob/master/t/suite.t
mod_perlのようにApacheの機能を提供する必要はなく、アプリケーションへはenvを渡せば
いいだけなので、実装は難しくない。
あとはそれ以外の部分をやっていければ。
あと、設定はmod_wsgiのように
PSGIScriptAlias /psgi /path/to/app.psgi
とかの方がいいのかしら。
mod_perlite については作ってる途中に気づいたんだけど、あれをPSGI対応にするにはほぼ書き直しになる
とおもったのでとりあえず作ってみることにした、という次第。
追記
miyagawaさんよりMac OS Xで以下のエラーでhttpdが起動しないとのこと。
Symbol not found: _PL_stack_sp Referenced from: /usr/libexec/apache2/mod_psgi.so Expected in: dynamic lookup
Mac OS X で動いた方がいらっしゃったら回避方法を教えていただけると助かります。
こちらの開発環境は以下の通りです。
ApacheとPerlはソースからビルドしたやつです。
$ uname -a Linux debian 2.6.26-2-686 #1 SMP Wed Aug 19 06:06:52 UTC 2009 i686 GNU/Linux $ cat /etc/debian_version 5.0.3 $ /usr/local/apache2/bin/httpd -v Server version: Apache/2.2.10 (Unix) Server built: Nov 20 2008 11:31:51 $ /usr/local/bin/perl -v This is perl, v5.10.1 (*) built for i686-linux === snip ===
YAPC::Asia 2009 前夜祭で発表してきました
http://conferences.yapcasia.org/ya2009/event/596
Yokohama.pm 出張版 in YAPC::Asia 2009 前夜祭のスピーカー発表(追記あり) - Yokohama Perl Mongers
前夜祭レポート[随時更新]:YAPC::Asia Tokyo 2009 スペシャルレポート|gihyo.jp … 技術評論社
「Yokohama.pm 出張版 in YAPC::Asia 2009 前夜祭」で、Schenker について発表させていただきました。
資料は以下に置きました。
他の皆さんのトークも非常に面白かったです。
Yokohama.pm、YAPC::Asia の運営の皆様、本当にありがとうございました。
もちろん YAPC本編も参加しています。
zshでcpanコマンド補完
すでにあるかなと思いつつも書いてみた。
以下のファイルを「_cpan」として$fpath に入れる。
とこうなる。
$ cpan -[TAB] -A -- Shows the primary maintainers for the specified modules -C -- Show the "Changes" files for the specified modules -D -- Show the module details. -L -- List the modules by the specified authors. -O -- Show the out-of-date modules. -a -- Creates the CPAN.pm autobundle with CPAN::Shell->autobundle. -c -- Runs a `make clean` in the specified module's directories. -f -- Forces the specified action, when it normally would have failed. -h -- Prints a help message. -i -- Installed the specified modules. -m -- Makes the specified modules. -r -- Recompiles dynamically loaded modules with CPAN::Shell->recompile. -t -- Runs a `make test` on the specified modules. -v -- Print the script version and CPAN.pm version.