平々毎々 (Hey hey, My my)

rock and roll can never die.

月別アーカイブ: 10月 2008

猫カテゴリ追加

アクセスアップを狙って、猫カテゴリを作ることにしました。
猫グッズの紹介などもできれば……

Una & Nene

上にいるのがウナ(オス1歳)、下にいるのがネネ(メス6ヶ月)です。よろしくお願いします。

広告

赤い犬が青くなった:Windows Azure

今日の午前は時間がないので午後からあちこち読むことにする。

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) | 明日まで暇じゃ。

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文の羅列になっている。

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″にすればいい。

なお、対応したコンテンツは

だ。

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になって少し修正された。

JavaScriptでMVPパターン(jQuery編)

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


jQueryでアニメーションしながらMVPパターン
jQueryでアニメーションしながらMVPパターン

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


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


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

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

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

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

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

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

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

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

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

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

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