2009-03-01から1ヶ月間の記事一覧

a == b == c

C

ふと目にしたCのコードでa == b == c と書いてある箇所を目にしてこれコンパイルできるのかなと思ってやってみるとコンパイルできたので見てみた。 yoshimi% cat test.c #include <stdio.h> int main () { int a, b, c; a = 0; b = 0; c = 0; if ( a == b == c ) { pr</stdio.h>…

第7回Gotanda.rb

もう何回目か数えるのもめんどくさくなってきましたが、今日もひたすら前回の続きをしてました。Rackの上で書いていると、 def action return not_found if cond1 return not_found if cond2 return not_found if cond3 [ 200, { 'Content-Type' => 'text/pl…

YARVの気持ちに触れる方法

ふとYARVの気持にふれてみようと思ったんですが、どうやるんだったかよく忘れてしまうのでメモ。 yoshimi% ruby -e 'puts RubyVM::InstructionSequence.compile("(0..100).each {|i| }").disasm' == disasm: <RubyVM::InstructionSequence:<compiled>@<compiled>>========== == catch table | catch type: brea</compiled></rubyvm::instructionsequence:<compiled>…

第7回Gotanda.rb

今回も前回の続きで、仮実装で済ませていたモデルの部分を実装してみました。このアプリはどうせあまり実用目的で使う予定はないので、実験的にTokyoTyrantのTCTDB形式で使用してみることにしました。http://github.com/walf443/todoit/blob/a23d4a2405cda2c…

実行しているrubyインタプリタを使って別のrubyスクリプトを実行する

ベンチマークをまとめて走らせるプログラムなどを書いているようなときは、 system('/usr/bin/ruby some_script.rb')とか書きがちなのですが、 /usr/bin/rubyと固定で書いてると、 別のところにある1.9.1とかでふと実行してしようと思ったときにスクリプトを…

第6回Gotanda.rb

今日は一人だったので大崎広小路のベローチェの2階でひたすら前回やってた続きを作ってました。http://github.com/walf443/todoit/commits/masterあとこの前のincludeした関数を明示的に書くやつは、もともとこのプロジェクトで使いたくて作ったので、改良し…

クラス内で使いたい関数を明示的にincludeできるようにする

rubyで次のようなコードはわりとよくあると思います。 # some/utils.rb module Utils module_function def html_escape str # ... end def html_unescape str # ... end end # some/more_utils module MoreUtils module_function def some_func end end # so…

第5回Gotanda.rb

今日は一人だったので、前回ちょっと進めてたRackレベルで書くようなWebアプリをオレオレ構成で作ってました。http://github.com/walf443/todoit/tree/masterタスク管理する何かがすごく作りたいかというとそうでもなく、最近RackがMerbブームとかの影響でか…