kumaryu日記
2009-08-03 体調が
_ 蝉自重
蝉がうるさくて朝から起こされる。うう、目覚しよりうるさいんですけど。
ナナオのFX2431とか言うモニターを買いました。Windowsマシン用*1。10万円。いまどき24inchで10万とかなかなかすごい値段ですね。
土曜に早速届いたので部屋の模様替えと設置作業。部屋はなんとか半分くらい片付いたんだけど、そこで力尽きた。あと半分も遅くとも今月中にはなんとかしたい。
なんかちゃんとノングレアだし、すっごい綺麗。となりに置いてある24inch iMacより綺麗なのでやっぱりiMacは失敗したなぁと。MacProにしておけば良かった。
iMacはてかてか液晶なので反射抑えるフィルタ貼ってあるんだけど、それのせいで汚いっていうのもあるんだよねぇ。ほんとてかてか液晶とか最近のAppleは気が違ってるとしか思えん。
あとはいろいろ端子あっていっぱいつなげるし、特に不満は無い感じ。特にものすごい機能とかも感じてないんだけど、平気で変なつかいかたする俺が何の不満もないというのはたぶんすごい。
なにはともあれ、片付けでPC周りが広々としたし、360もでかい画面で遊べるしWindowsマシンでプログラム書くのもやりやすくなったしいろいろやりたくなりますね。
*1 のはずが主にMacBook用になってしまった。24インチフルスクリーンでピアキャス
_ SilverlightとIronRubyと通信
IronRubyの0.9.0が出てました。これだと例外メッセージが正しくブラウザ上に表示される模様。よかったよかった。
あとは1.0に向けてバグフィックスを中心に進めるようです。
それはともかく、俺の方はSilverlightでサーバとの通信始めました。
HTTPだとサーバ側の変更検出するのにポーリングしないといけないから、SilverlightではTCPソケット使えるしソケット使おうかなぁと。
そしたらソケットは接続先ホストの943番ポートに常にセキュリティポリシーを取得しにいくとか。
943番ってroot権限ないとbind出来ないじゃないですか。べつに自分ではいいんだけど、サーバー自体も普通のアプリケーションとして配布したいから困るなぁ。943固定だから一つのマシンで2つサービス動かそうとしたら大変だし。
諦めてHTTPでポーリングすればいいか。サーバの負荷がやばいかと思ったけど、レスポンスをキャッシュしとけばそうでもないよねきっと。負荷が無視出来ない程高かったらそのとき考える。
で、YAMLを使ってやりとりしようとしたんだけど、YAMLライブラリはSilverlight版が無かった。自分でビルドしてもSilverlightではうまく読み込めなかったので仕方ないんだろう。
JSONライブラリがSilverlight SDKに入ってるのでこれを使おう。
で、使ってみたんだけど、なんか使い勝手悪いなぁ。
読み込みも値へのアクセスも簡単なんだけど、読み込んだ値はJsonPrimitive型になってる。
これのToStringメソッドを使うとRubyでいうinspectみたいになっちゃって、文字列が"aaa"のようにダブルクォーテーションで囲まれてしまう。
挙げ句の果てには文字列中の/もバックスラッシュでエスケープされる。なんでよ。
そうじゃなくて普通のCLRのStringにしたいんだけど。どうもJsonValueに暗黙的変換演算子が定義されてるな。
C++でいうところの型変換演算子オーバーロード、ってかまんまなんだけど、これで変換できるみたい…って、Rubyに暗黙的型変換なんてあるわけねぇよ!
明示的な変換は出来ないんですかねぇ…。うーん出来なさげ。こいつもC#前提か!.NETで動的言語なんて無理だったんだ!
嘆いても仕方ないのでいまできることを。サンプルでJson使ってるようなのでそこで何やってるのか調べる。
調べてみたらToStringしたあとダブルクォーテーション無理矢理外してるよこのひと。おーい、敗北宣言かよ。
それに倣ってみたけど、/がエスケープされてるのは駄目だなそういや。うーん、どうしようこれ。
あ、Rubyで文字列のinspectした奴を元に戻すのと同じ事すればいいのか。というわけでevalして完了。うう、明らかに負けてる。
これがIronRubyクオリティ。CLRはC#専用です。Rubyなんかの動的言語には触らせてもらえないのです。
あとはポーリングするのにスレッドで嵌まったけど、それはSystem::Windows::Threading::DispatcherTimerをつかえというだけの話だった。
とりあえずはUIの方っつーかSilverlight側はやばそうなところはぜんぶできた感じかなぁ。
あとサーバ側でiTunesとやりとりするのが面倒そうだ。