よしおかさんがRubyコードを書いてるっ。 私の中で評価が高い人がRubyを使ってるのを見ると、ちょっとうれしい。 増田さんがRuby使いはじめたのを見た時もうれしかったなあ。
で、当の吉岡さんのコードだが、ちょっと冗長な印象がある。 特に三回あるmakehashメソッド呼び出しの周辺がいかにも同じことの繰り返しである。
ここは
などをぜんぶmakehashメソッドに詰め込んで、DRYで行こう。 本体部分はよくわからなかったので(手元にデータもないし)、手をつけてない。
で、結果はこんな感じ。テストしてないけど。
#!/usr/bin/env ruby def makehash(path) h = {} open(path, "r") do |f| f.each do |line| line=line.chop h[line]=line end end h rescue puts 'error ' + path.to_s exit end hash1 = makehash(ARGV[0]) hash2 = makehash(ARGV[1]) hash3 = makehash(ARGV[2]) hash1.each do |key, pkg| line = pkg.to_s + ', ' line = line + if pkg == hash2[pkg] "included, " else "not included, " end line = line + if pkg == hash3[pkg] "included\n" else "not included\n" end print line end
昨年のRubyConfにおけるRejectConfレポート。
体力なくて出席しなかったんだよなあ。 出てればよかったかなあ。
カプコムのMTフレームワークにおける種々の工夫。
っていうか、並列度をあげるための(私の知らない)テクニックの数々。 これって「普通」のコンピューティングには応用できないもんかね。 まあ、日常的なタスクにはそんなに並列度はないか。
どう逆立ちしてもtrunkがYARVであるのは間違いのない事実で、 いつまでもmatzrubyの箱庭で遊んでいても、世間様には貢献できない。
というわけで、意を決してtrunkに手を入れてみる。 あまり難しい(coreに大々的に手を入れる)ようなものは 手に負えなそうなので、とりあえず簡単なものから。
コア以外のソースコードは共通なので、意外と簡単。 で、コミットしてみた。
この後、
も導入しよう。クラスローカルインスタンス変数には 命令の追加が必要になる。ちょっと手ごわい感じ(だけど、動いてるみたい)。
ところで、命令が追加されると tool/compile.rbでダンプされた命令が読み込めなくなるんだけど、 命令セットのバージョンとか付ける必要があるのかな。