kumaryu日記
2011-03-25
_ 日記
電車がずっと特別ダイヤとかで運転してるんでどれに乗ればいいのかまだ掴めん。普段よりちょっとだけ早く出ればよさそうな気はしてきた。
Firefox4が出たので会社のマシンに入れたらすげー速くなっててびっくり。JavaScriptなんざどうでもいいけど、レンダリングが速いな。すごい先読みもしてそう。
家のMacではCaminoを使ってるんだがGecko 2.0への対応はロードマップにも無さそうなんでいい加減Firefoxに乗り換えてしまおうかなぁ。昔Mac版のFirefoxが遅すぎて使い物にならなかった頃にCaminoにしたんだが、今更Caminoを使う理由もないんだよな。愛着があるくらいで。愛着があるってのは理由としてでかいけどさ。
いつものことながらFirefoxは使えない拡張機能が結構出るな。いや使えないのは問題ないんだが、使えるって申告しながらちゃんと動作しねぇ奴が困るよ!
Firefox4はWebGLも使えるんだっけーとサンプルを探しに行ったが、軒並みWebGL初期化失敗とか言われて起動しなかった。Mozilla公式のデモページを見に行ったらドライババージョンが古いんですよねーというエラーが。うーん、Forcewareの195だか6だかなので確かに古いんだが何がそこまで最新の機能を要求するんだろう。GL3.2が必要とか言うのか?XPでPerfHUDのためにInstrumented Driver入れてるから新しいドライバ入れられないんだよね。まあ会社のマシンだしWebGLなんて全然いらないんだけれども。
しかしWebGLがそんなに使われる物とは思えないがドライバのバージョン選ぶとかなると更にハードル上がるな。ChromeではANGPLEProject使ってるから少なくともWindowsでの動作環境は広そうだけどな。
_ PeerCastStation日記
monoとか。monoでPeerCastStationの開発もしたいと思ったんだがデバッグがどうすりゃいいのかわからん。どうもgdbをせっせと使うかMonoDevelop経由でデバッグするしかないようだ。昔はmdbってのがあったようだが公式バイナリには入ってない。MonoDevelopでデバッグしようとしたがIronRubyのスクリプトから呼び出されるクラスライブラリのデバッグってどうすればいいのかしら?ビルドコマンドなんかを指定するところにExecuteってのがあったのでここにirを指定してみたが、実行は出来るんだがデバッグは不可。困ったね。
方法を調べても出てこないので一旦は諦めたんだが、あとでもう一回試したらir.exeを指定するとデバッグ実行ができるようになった!そっか、irのシェルスクリプトじゃなくてexeを指定しないといけないのか。
monoのソフトデバッガとやらはVM組み込みの機能で、monoをデバッグ起動するとデバッガ接続可能状態になるのでそれと通信してごにょごにょって奴らしい。なので当然mono上で動くマネージドプログラムしかデバッグできない。しかし実行時にシェルスクリプトとか指定しちゃうとそいつは当然デバッグできないし、シェルスクリプト中で起動されるmonoにデバッグオプションを渡してないからデバッグ起動するわけもないので結局デバッグできないって話のようだ。つかexe指定するかどうかで変わるなんてわかりづらいからどこかに書いといてくれよ…。
さてIronRubyで書いてたテストも一応デバッグできるようになったので実行してみたんだが、途中で帰ってこなくなってしまった。.NETではそんなこと無かったんだけどな。
さっそくデバッガを止めてみたらどうもThread.Sleep(1)の中で止まってる様子。おや、1ms程度で起きてきませんかね?変数の値とか見ようにもVMがデバッグできるところで止まってません的なことを言われてよくわからない。デバッガも怪しいので前後にConsole.WriteLine仕込んでみたがやっぱりSleepで止まっちゃってた。何度も実行してみるとたまに動くんだが、だいたいは止まってしまう。止まるだけならまだしも、デバッグ終了してもmonoのプロセスが残っててCPUをぶん回し続けるようだ。ひでぇ。
これはまずいなぁとデバッグじゃなくて通常実行してみたら普通に動いてしまった。おやおや。何度か試してみるが止まる様子がない。デバッグ使えねぇってことかよ…。MonoDevelopの2.6βとか使ってんのが悪いだろうか。どっちかと言えばmonoの方が悪そうだけど、monoは2.10.1の公式バイナリ使ってるしなぁ。
そんな話は無いか調べてみたがちょっと見つからなかったのでいまのところは諦めた。
通常実行はできるので、テストが失敗するところだけ潰しといた。Uri.TryCreateが.NETと違う動きするんですよねぇ。
Uri.TryCreate("/foo/bar", UriKind.Absolute, out res)
これが.NETだと作成失敗してfalse返すんだけど、monoだと成功してfile:///foo/barと解釈されちゃうんですよねぇ。どっちが正しいかっつーとかなり微妙なところ…いや勝手にfileスキーム付け足すのまずくね?まあ今回はパスしか参照しないし、失敗した時はhttp://localhostを前にくっつけて再試行してたんでどっちでも良かったんですけどね。とりあえずテストはなんとかしないといけないので常に頭にhttp://localhostをくっつけとくようにしといた。
しかしWindowsマシンで別な箇所を変更中なのでやりづらい。MacBookにもVisualStudio入れてDropboxなんかでソース同期しちゃうのが楽なんだろうけど、MacBookのパワーというかメモリ的には楽じゃないんだよなぁ。