kumaryu日記
2010-07-26
_ 日記
気がついたら今週も週末はほぼ外に出ず。暑くてねぇ。
もう一個気付いたんだけど相変わらず日記が週一だ。
土曜日は暑くてだらだらしてたら一日終わった。なんてことだ。 扇風機回してるだけにしてて分かったんだが、室温が35℃近いのに冷房入れないのは頭悪い。 というか30℃行ったら冷房入れよう。
日曜は朝から冷房入れっぱなしだったので活動できた。部屋の中限定で。あ、買い物くらいは行ったか。
作業はいつもどおりゲーム作って、9月のイベント用のWebページ作っておわり。
_ [Ruby][Silverlight] IronRubyとSilverlightでゲーム
ゲーム作りはもうプログラム書くところも少なくて、データ作りになってる。
今までビットマップ描画してたところを全部ベクトル描画に置き換えてみたり。xaml読み込んでくるの楽だから、つい全部ベクトル描画にしてみたいとかやりたくなっちゃったわけよ。今のところ問題無さげ。そんなに複雑な描画はしてないしね。
Macで開発してるのでVisualStudio使ってないんだけど、デバッグがやはりめんどいのでVisualStudioを使ってみることに。
VisualStudio使わない理由はVisualStudio2010用のViEmuがまだだったのと、VMの中で動かすので重いこと、あとファイルをいちいちプロジェクトに登録するのがめんどいことだったんだけど、ViEmuは正式版出たのでまあなんとかなるかなと。
VisualStudioでデバッグを開始してみるが開始がものすごく重い。なんでかは知らないが実用的でないかも…。
例外が出てる場所をつきとめたかったんだが、例外が出たらデバッグしますかダイアログが出てデバッグしようとすると新しいVSが立ち上がって、既にデバッガがアタッチされてるよーと言いやがる。そりゃそうだがアタッチしてるんだからそっちでデバッグしてよ。
UnhandledExceptionイベントにハンドラを追加しちゃってるのがまずいみたい。中身何もしてないのになんでだー!!
てなわけでなんとか処理されてない例外が出たらブレークしてくれるようになったんだけど、どうも止まってくれる位置が怪しいのでやっぱり例外が投げられた所で止めるようにしてみた。
そしたら起動時に止まること止まること。
Raccのファイルが無いよ例外なんかは無くて正しいし一回だけなので別に問題無いんだが、BulletMLの式パース中でブロックの中からbreakした!と言って例外が投げられまくってる。例外というか例外で実装された大域脱出っぽいんだけど、これがめっちゃ遅いのね。
.NETの例外はおっそいから本当に「例外」の時に使えよー的なことがドキュメントに書いてあるんだけど、これのおかげでBulletMLの読み込みが遅いのかも…。今までREXMLが遅いんだと思ってた。
今回はRaccの処理が終わったあとで例外が出たら止めるようにして解決したけど、普通に遅いのは直ってないのでVisualStudioでのデバッグはおあずけかなぁ。簡単な式のパースだけだし外部データ使わないからevalにしちゃってもいいんだけど。
VisualStudioとIronRubyはIronRubyの変数なんかも見れて本当に便利なんだけどね。IronRubyの構文強調は出来ないのが微妙に残念なところだけど。
_ [Ruby] GLSLパーサ作り
トークン毎に元のソースと行と桁を保持させるのはできたんだけど、#lineディレクティブが超めんどくさい!! これどうやって処理すればいいんだ?
プリプロセス中に#lineをみつけたら、ここから先はこのソースと行が基準位置ですから、ってなるので、新しいトークンをひろってきたら、トークン位置からと#lineの元の位置を引いて新しい位置を足してあげればいいはず。できたー。か?
マクロ展開を再帰的にやるんだけどその時に同じトークンが何度も位置補正されちゃうかも。されちゃいそう。されちゃう。
されないようにすればいいのか。再帰的に展開するのは同じプリプロセッサコンテキストでやってたんだけど、マクロの定義情報だけ引き継いだコンテキストを新しく作って展開してあげればいいのか。あとはトップレベルのコンテキストが位置補正すればいいのね。なんとかなるかも…。