2008年 02月 01日

citrus, UriInformation の分離

いま mixi とか plagger の db から情報とってくるとかが一つのファイルにつっこまれてて非常にダサイので、どうにかする。たぶん UriInformation の中でさらに Plugins インスタンスをもつようになる。

plugins/uri_handlers/{mixi,plagger,image,ftp,http,urn,amazon}

これらは、実行順を持っていて、あるプラグインで処理が確定したら後続のプラグインは実行されない。


ということをやりたいけど眠くてしかたないのでねる……テストどうやってかこう。

リロード可能なぷらぎん

もっといい実装ないかなぁ……

今の方法

  • 匿名モジュールでロード
    • プラギンクラスは、そのファイルとしてはトップレベルの定義になる module::Foobar
  • グローバルな環境からこのクラスにアクセスには困難 (匿名モジュールなので
  • ロードする環境がいつも必ず別々になるのでリロードのときに問題がおこりにくい (とおもう)
  • プラギンがさらにプラギン機構をもとうとするとめんどい。(ベースクラスも匿名モジュール内に入るので、直接参照できず、class_eval とかでロードする必要がある)

つけかえする方法

  • グローバルな名前空間にロード
    • プラギンクラスは Plugin::Foobar みたいになる
  • どこからでもアクセスできる
  • インスタンス化のタイミングとか参照状況によってはリロードしても GC きかない可能性があるかも (デバッグむずい)
  • リロードするときは remove_const / const_set
  • 継承とか依存があるときはそれらもよみなおさないと前の参照がのこる
2008年 01月 31日

はてダ

その場編集つかってたのに設定戻ってしまった。

向日葵 - Syrup16g

すごいうただなぁ…… ちなみに最後のアルバムはまだ買ってない。

日記に文章を書いては消し書いては消し、まとまらない。いうべきではない気がする。(社会的な意味じゃなくて、個人的な意味で、今パブリックにすべきではない感じ)

ミナソコ - BURGER NUDS

やっぱり、この唄をきいて浮かぶ風景は、完璧すぎる。

2008年 01月 30日

chokan

名前変えたい。なんかいいアイデアないかな

いまやってること/やりたいこと (名前がきまらなくてコミットできない)

  • プラグインシステムを改訂 (ファイル名に依存しないように)
  • オレオレ RICE をやめて Net::IRC (これもオレオレ RICE なんだけど) に
  • RSpec 書きまくる。(プラグインも)

不安だなぁ……考えが纏まらない……

citrus (かいはつこーど)

名前来まんないので、citrus というコードで開発することにした。とかいってそのままこの名前に変えるかもしれないけど…… chokan の branches になってるけどオリジナルコードを殆ど使ってないw

http://svn.coderepos.org/share/lang/ruby/chokan/branches/citrus/

プラグイン機構との一番重要なところと、起動部分はできた。テストは全部 RSpec で、rcov でカバレッジみてる。
99.4% (run の部分のテストをどう書いていいかわからないお)

プラグインのテストをどうするか悩んでる。今のところ、プラグインファイルにそのまま書けるようにしてる。

テストを書きやすい設計ってすなわち疎結合で、いいものになる気がする。


あとどうでもいいけど chokan の kan は柑橘のカンであって、cho は IRC で名前を並べたとき、cho45 と並ぶようにしたからだったと思います。

rcov 楽しい

http://lab.lowreal.net/test/citrus/ (citrus の rcov)

やばい。RSpec との組み合わせが最強だなぁ。めんどくせーっておもって例外のところのテストをかかなかったりするけど、100% をめざすと書かざるをえない。

テストファーストはやってみたりやらなったり>< 慣れない