よしおかさんが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でダンプされた命令が読み込めなくなるんだけど、 命令セットのバージョンとか付ける必要があるのかな。