2007-09-01から1ヶ月間の記事一覧

tcc

zaurusにtcc-0.9.23を移植した。 のだが、その後にtcc-0.9.22のzaurusパッチを見つけた。 がーん。仕方ないので二つをマージした。 主はそのパッチで周辺環境を整備したという形に近い。 gccよりかなり速いよ、コンパイル速度が。

makefile

makefileを整備したので公開する。要点は ソースやヘッダーだけでなく一時ファイルも専用ディレクトリに入れる。 make cleanをしたら一時ファイルが全て消える。 ソースだけでなくヘッダーが変更された場合にもそれに依存するオブジェクトファイルを更新する…

UnixやLinuxはCで出来ている。

そしてgccは元々Cをコンパイルするように作られている。 ならばCとバイナリの仕組みさえ理解すれば良いのだ。 例えばC++は本質的にはCへの変換とみなせる。 関数のオーバーロードはそれぞれの関数実体へのエイリアスだ。元の関数名と内部識別子を繋いだ関数…

Closure

http://d.hatena.ne.jp/kilrey/20070705 の続き。 Rubyの標準の関数オブジェクトであるProcはMarshalやYAMLによる永続化が出来ない。 原因は評価環境であるBindingが永続化出来ないため、それを参照するProcも永続化出来ないということらしい。 よく考えたら…

Javaで

コンパイル時に必ずテストが実行されると便利かもと思った。 まあ、make allの最後にテストを設定すれば良いのだけど。

文法2

前回の方法でinclude先のクラスで定義されたメソッドを上書きする方法が判った。 あるクラスの親クラスで既に定義されているメソッドを上書きするには普通にモジュールをincludeするだけで良い。 さて、上書きされるメソッドをこの二つの事例ともに同じ名前…

文法

module Mod def test return "Mod" end end class Cls def test return "Cls" end include(Cls) end p Cls.new()test() 上のスクリプトを実行すると何が表示されるか。答えは"Cls"。 実はモジュールをincludeすると既存のメソッド定義を上書きするのだと勘違…

思い付いたこと

種族レベルというのはどうだろう。クラスレベルとは別に上げることが出来るものとして。 例えば、人間Lv6/戦士Lv10は総Lv16だし、ドラゴンLv32/魔術師Lv17は総Lv49。 利点は*bandで顕著な種族間による能力差をレベル差として吸収出来ることか。 人間Lv1(戦闘…

忙しくなったので

本業が忙しくなった上に私生活も忙しくなったので開発ペースを遅くします。というか、しばらく中断します。生活が落ち着いたら復帰する予定ですが、春ごろまでかかりそうです。