2008年03月17日
_ Rubyのリフレクションとか
cuzicさんに、 この前Ruby勉強会@関西で話したリフレクションの話のような ことをまとめた文章ない?と聞かれたので、あちこちにちらばって いる私の書いた文章をちょっと探してみました。
- Rubyのproc Symbol#to_procとか
- Rubyに型チェック機構をつけてみる
- 手続きオブジェクトとブロック
- __send__とMethodクラス
- Module#define_method
- 変数/定数
- instance_eval, module_eval
- クラス階層関連
- この前のRuby勉強会@関西の発表資料
あと参考資料としてRHGをよくあげていますが、それは何故かというと 実装を見たほうが話が簡単であることがよくあるからです。 Rubyの仕様は一貫性よりも便利さを優先して決められた部分がありますし、 def … endの中のdef … endのようにどう決めてもあまり自然ではないが なんらかの動作が必要なので仕様が決まっている、なんていうのもあります。 コンテキストまわりは特にそういう傾向があります。で、そういう場合は 論理的な整合性を考えるより実装を見たほうが早いといえます。 Rubyの実装は日々変化するのでどこまで有効か、という話もありますが そこに注意すれば実装を見るのは有効な手段です。
_ LinuxでWindowsの実行ファイルを作ったりする話
Linux上でDで書いたプログラムからWindowsの実行ファイルを作る場合、gdcでクロスコンパイラを作るより wineでdmdを動かしたほうが簡単だったりします。このテクニックはshinhさんに教えてもらいました。 SDL+OpenGLくらいなら性能を気にしなければ実行テストもwineでできます。
またexerbでRubyのプログラムを作るときには、Linux上でもexerbが動くのでそれを利用すれば簡単に できます。これで作った実行ファイルもwineで動くので、簡単なテストならちゃんと動きます。 Visualu Rubyもwineでちゃんと動きます。
といったことを利用してPencil-BulletのWindows版はWindowsをほとんど使わずに作成されました。 正直VM上にWindowsを動かしたほうが簡単な気もしますが結構なんとかなるものです。