2008年10月24日金曜日

Silverlightに3Dゲーム"Quake"を移植中

QuakeLight, the Silverlight port of Quake, is coming...

ほほう。
しかし、Flashみたいに環境が整備されているわけじゃないので、ハードルは高そうだ。
ちなみにFlashの環境の話は、「C 言語で書かれたソフトウェアが Flash で動くようになるかもしれない | METAREAL」とか、LL Future 「古い言語、新しい言語」におけるalohakunの発表資料(ppt)とかを参照のこと。

ソフトウェア開発の学派

ソフトウェア開発の学派をやっつけた。

「ソフトウェアのOOPSLA派(OOPSLA学派)」角谷さんが書いているので、"school"の訳語は「学派」にしておいた。


“OOPSLA school”は、「OOPSLA派」がいいじゃろうか
それとも「OOPSLA学派」がいいじゃろうか


わしは「OOPSLA流」も好きじゃ


「OOPSLA式だよ派」はふざけすぎじゃの


じゃあの。


平々毎々 (Hey hey, My my) | 明日まで暇じゃ。

2008年10月18日土曜日

GLEEでExpression Treeを視覚化

ソースはこちら(GraphAppSolution.zip, 1.94MB)

Expression Tree Visualizer を自作/改良してみようという人で,見た目をどうしようか悩んだときは,Mathematica 6.0 の TreeForm あたりが参考になるかも.

Visual Studio 2008 Add-Ins - NyaRuRuの日記
気が向いたので、Microsoft版GraphVizとも言えるGLEEを使って、Expression Treeを視覚化してみた。
試してみたExpressionはこちら。

結果はこのようになった。
Expression Tree Visualizer
  • 最初はリフレクションを使っていたが、見た目を良くしようと思うとif文が多くなってしまったのでやめた。
  • 拡張メソッドを使用してVisitorパターンっぽく書いてみた。
  • ところが、拡張メソッドではダブルディスパッチにならないので、結局のところif文の羅列になっている。

2008年10月16日木曜日

Silverlight 2 RTW対応した

今までブログにあげていた、Silverlight2 Beta用コンテンツをRC0および正式版で動くようにした。 Silverlightの起動パラメータに
<param name="minRuntimeVersion" value="2.0.30930.0">
<param name="autoUpgrade" value="true">
と書いておくと、RC0と正式版以外ではこんなダイアログが出る。 Silverlight Update 1 "Remind me later"をクリックすると、こんな表示になる。 Silverlight Update 2 正式版を強制するのなら、minRuntimeVersionの値を"2.0.31005.0"にすればいい。 なお、対応したコンテンツは だ。

2008年10月15日水曜日

Silverlight 2.0 RTW

Silverlight 2.0 RTW
出ましたね。

インストールされてるSilverlightのバージョンを知るJS

こんな記事を書いても4人ぐらいしか読まないのでは……
Silverlight 2.0のインストール用ページに含まれているJSをざっと読んだ。 ポイントは、
  • ActiveXコントロールの場合はIsVersionSupported()で細かく問い合わせていくしかない
  • Mozillaプラグイン(Netscapeプラグイン)にはdescriptionプロパティがあるのでそこを見ればいい
  • ところがMacOSのMozillaプラグインだとdescriptionプロパティは"major.minor. build" までしか返してくれないので、revisionを知りたければやっぱりIsVersionSupported()で細かく問い合わせていくしかない
ということのようだ。

http://www.microsoft.com/silverlight/scripts/General.jsより抜粋

http://www.microsoft.com/silverlight/scripts/Install.jsより抜粋

http://www.microsoft.com/silverlight/scripts/silverlight/General.jsより抜粋

(追記)2.0RTWになって少し修正された。

2008年10月10日金曜日

JavaScriptでMVPパターン(jQuery編)

昨日の「JavaScriptでMVPパターン(ぷよぷよ編)」ではアニメーションできてないのが嫌だったので、今日はアニメーションを書いてみた。
jQueryでアニメーションしながらMVPパターン
jQueryでアニメーションしながらMVPパターン

モデルはこんな感じ。start()で開始。next()で状態遷移し、オブザーバーに通知。


ビューはこんな感じ。jQueryを使っている。update()の中でアニメーションを開始し、コールバック関数はプレゼンターを呼び出すようにしている。


プレゼンターはすごく短い。こんなのでもプレゼンターと言うのか?


MVPパターンを何か勘違いしてるだろうか?

2008年10月9日木曜日

JavaScriptでMVPパターン(ぷよぷよ編)

せっかくUIパターンについて3つも記事を書いた(UIパターン その1UIパターン その2UIパターン その3)ので、自分でもコードを書いて試してみようと思った。

連鎖シミュレーションツール
ぷよぷよ連鎖シミュレーションツールの画面キャプチャ


JavaScriptのコードはこれ(puyopuyo.js)
オブジェクト図(全体)

モデルは2つ。fieldModel (6x12のフィールド)と、nextModel (次ぷよ)。observersフィールドにビューを追加しておくと、適宜update()関数をキックしてくれる。
fieldModelを書いたときにはgetter/setterをつけてみたのだが、まどろっこしかったのでnextModelではフィールドを直接公開してみた。
オブジェクト図(Model)

ビューも2つ。fieldViewと、nextView。どちらもupdate()関数を持つ。ビューを組み立てるときにはHTML DOMのノードコレクションを渡すようにしている。
オブジェクト図(View)

プレゼンターは1つ。といってもあまりやることがない。
オブジェクト図(Presenter)

作ってみて気がついたが、Observerパターンを単純に実装すると困る。何が困るかって、アニメーションだ。
ぷよの落下と消滅はアニメーションするように作らないと、一瞬で終わってしまって何のことやらわからん。
ところが、JavaScriptでアニメーションするときって、完了後の処理はコールバック関数として渡さないといけないわけだ。
今回は手を抜いて、画面を更新するたびにダイアログを表示することにした。結果は情けないことになっているが、本来の目的はMVPのサンプル実装なので、大目に見てくれ。

ちなみに、なぜ「ぷよぷよ連鎖シミュレーション」にしたかというと、ぷよぷよが下手で連鎖を組めないからだ。これでじっくり研究できるぞ。

2008年10月8日水曜日

ボウリングといえば、例のXPエピソード


最近会社の部署内で、ボーリングのスコア計算のプログラムを作るということがPGのネタのお題にあがっている。


[Other]最近は - かずきのBlog

ボウリングと聞いて思い出すのが、エクストリームプログラミング エピソード(関西弁バージョンもある)。

たまにKent Beckが出てきて、「私は、いつでも見ているぞー。」とか言うのが愉快。

2008年10月7日火曜日

Sudden Death Source

お台場のデックスに入ってたD&Beeで発見。
Sudden Death Source
……や、買わなかったけど。
俺はCoCo壱の10辛をたまに食べる程度で充分。
(蒙古タンメン中本は、量が多すぎるのでツライ)

2008年10月3日金曜日

駄洒落

「ovenで炙んの?」
「なんでそんな英語っぽい発音なの?」

2008年10月2日木曜日

今夜わかるVBファミリー アップロードした

JavaとC#ならわかるという人向けに、カジュアルにVB6/VBA/VBScriptを説明する資料を作っている。でも俺もぜんぜん詳しくないんだけどな。

download pdf file