Home > Archives > 2006年11月

2006年11月

どうにかならんものか

GWTのTreeItemにごちゃごちゃ機能をつけまくったらブラウザごとの動作が怪しくなってきた.イベントチェインがどうやって動いてるのか今一良く理解してないので何かおかしなことをやってる気がする.でも面倒なのでほっておく.どうでもいいが javascript の DOM Element から Java の DOM Element への変換が欲しい.

悩む

C++ のテンプレート引数の推論の動作が良く分からん.どっかに規定されとるのか実装依存なのか?

OpenOffice.org のプレゼンのファイル

OpenDocument な XML を ZIP で固めてあるだけだったとは….ということで,XMLを生成して ZIP で固めてプレゼンを生成できることが分かった.

Ogg Vorbis を C# で

http://www.codeproject.com/cs/media/OggPlayer.asp にて使えそうなものを発見.自前で DLL のラッパを書くのも面倒なのでこういうのがあるのはありがたい.でもこう,ファイル以外からも読みたいなぁと思わなくない.

RawInput + SendInputs + GlobalHook

これらを使えば複数のキーボードによる入力を複数のウィンドウに分配できる気がするのだが… RawInput をグローバルhookするのが C# 単体だと無理だよなぁ.Low Level Hook みたいに DLL なしでもフックできると便利なのだが…

素朴な疑問と解決

C# で mmap 使いたいなぁと思って色々調べてたら, Windows だと MapViewOfFile という API だったのね.

それはさておき Marshal.StructToPtr は便利そうだ.

GWTのバージョンが上がってた

TreeItem を in-place に編集しようとテキストボックスを setHTML で指定したらキーボードイベントやらがテキストボックスに送られずまともな編集は不可能.そんなでいろいろ試行錯誤してたら先週 GWT のバージョンが上がってたようで,今度のバージョン (1.2.22) では TreeItem に widget を入れ放題とのこと.

ということで,GWTのTextBoxをつっこんで in-place 編集も可能になった.あとは Ctrl+C, Ctrl+V とかの通常のショートカットを TreeView の編集用にキャッチできれば一通り終了なのだが… ブラウザによって取得できたり出来なかったり2回取れちゃったり… 先は長いかも.まあ,D&D でコピーとか移動とか出来るから必要ないといえば必要ないのだが.

TreeItem のドラッグ続き

どうやら昨日の実装はおかしいらしく子要素をドラッグしても親まで一緒にドラッグしてしまう.ちょいと調べたら子供にイベントが飛ぶ前に親側でイベントが取られていたらしい.ということで,MenuBar の実装を参考にイベントのターゲットが子孫である場合の子要素へのイベント転送を実装.そしたら今度はうまくドラッグできるようになった.当たり前といえば当たり前な原因だったが… WT がUIObject にイベント関係のルーチンを書いてくれてあればこんな面倒は無かったのに…

GWTのWidgetのソースを読む

TreeItem の Drag & Drop を実装しようとしたら TreeItem は Widget でないし,SourcesMouseEvents のインターフェースも実装してないし(基本はWidgetしか実装できない),SourcesMouseEvents も Widget しかリスナに返せない仕様になっている.つーことは,TreeItem にマウスリスナを登録して Drag & Drop をするという単純な話にはならない.結局,前に書いた Drag & Drop の仕組みが SourcesMouseEvents を実装できれば動作するので,無理やり TreeItem に SourcesMouseEvents を実装し,マウスリスナ側には DOM element を共有した Widget (意味無い) を渡すことした.この無理やりな実装を実現するために,GWT の Widget のソースを読む羽目に.ひじゃうにめんどーだ.とにかくドラッグは出来るようになったから良いけど…

System4.0プレゼン

Alicesoft の System4.0 + SACT2 を使ってプレゼンする.スライド切り替え時のエフェクトを使いたい放題.効果音もやりたい放題.書くスライドでしゃべることはメッセージとして表示.オートも音声付も可能? バックログもあるので前を振り返りやすい.途中画面のスナップショットも取れる.

こまる点:スクリーンサイズが起動時に固定.フルスクリーンにしても解像度が低いと泣ける?

とりあえず,スライドはPDFを画像化->固める,メッセージはテキストファイル->圧縮,音なし,というものは一日で出来た.Java/C++ と近い文法なのでとっつきやすかったし.VMにJITが入ってたり気合入ってるし.スプライトエンジン(など)である SACT2 も使いやすくてありがたい.外部DLLに PDFlib を呼ぶ部分を用意して pdf をダイレクトに読めるようにできるといいなぁ.

Prim と Kruskal のアルゴリズム

Kruskal はソートと union/find があれば出来る.Prim はヒープ(バイナリヒープ)があれば出来る.これだけみると Prim のほうが単純そうなんだけどなぁ… ゼロから実装してみた感じでは Kruskal の方が断然単純だった気がする.実用上はどっちの方が速いのだろうか?

Jをちょっと

折角APLというものの存在を知ったので,その発展である J を少し使えるようになろうかと考えた.J の実行環境としては JSoftwareからインタプリタがダウンロード可能.JAPLA のシンポジウムの資料を見つつ簡単なところからやってみる.

とりあえず,配列の定義. i. という動詞(関数)で 0 から n-1 の要素を持つ長さ n の配列を作る.代入は =: ないし =. とのことで,値の出力は ] とのこと.

  ] D=: i.8
0 1 2 3 4 5 6 7

すでに分かりにくい.

ついで,reduction に手を出してみる.正確には insertion とか言うらしいが… BMF の reduce と同じで左にオペレータを取って配列をぶっ潰す.和を求めるのも簡単.

  sum =: +/
  ] sum D
28

これはまだ分かりやすい.

次に訳の分からん(気がする)動詞の fork 合成を試す.fork は3つの動詞からなり, f g h という fork に引数 x を適用すると (f x) g (h x) とかになるらしい.こんなのどこに使えばいいか良くわからんが,とりあえず平均がこれで書ける.# は要素数を返す演算子で % は割り算(剰余ではないらしい)の演算子.

  mean =: +/%#
  ] mean D
3.5

うーん,微妙に気持ち悪い気がしなくも無い.Lisp の括弧だらけの式を読むのと APL ないし J の式を読むのとどっちが面倒なんだか…

Home > Archives > 2006年11月

Search
Feeds

Page Top