netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2007-01-19 [長年日記] ▲
_ [お知らせ][VolumeDeskbar] VolumeDeskbar 1.0.14 リリース ▲
ダウンロードは Volume Deskbar 公開ページからどうぞ.
今回の新機能はホットキー対応のみです.例によってデフォルトでは無効なので,設定ダイアログに新たに加わった「ホットキー」タブから有効にしてやってください.ホットキーなんか別に要らないという人は,即座にアップデートする必要はありません.
ホットキー自体を何にするかは趣味の問題ですが,標準はCTRL+ALT+カーソル上下となっています.テキストエディタなんかで CTRL+ALT のキーバインドを頻繁に使う人は,誤操作を避けるために設定を変えたほうがいいでしょう.
ノートPCユーザの人は,Intel のノートPCディスプレイ管理ツール(Intel(R) Graphics Media Accelerator Driver for Mobile) にご注意ください.このツールには,CTRL+ALT+カーソル上下左右で画面の表示向きを変えるというホットキー機能があり,それが有効になっていると,押した瞬間に画面表示が切り替わって驚くことになります.
このホットキー機能には「Volume Deskbar 自身がタスクバーから分離した状態だと働かない」という制限があります.これは仕様ということにさせてください.複数のウィンドウは同じホットキーを登録できないという制約と,デスクバーの「新しいインスタンスを作りつつ古いほうを破壊する」という処理との兼ね合いで,分離・合体時の切り替えにうまく対応できていません.
2007-01-15 [長年日記] ▲
_ [AspectJ] 誰が処理を行うかを隠蔽するアスペクト ▲
最近,Java で大規模なデータ構造を操作していて,呼び出したいメソッドを持ったオブジェクトへの参照をデータ構造のメンバー全員に行き渡らせるにはどうしたらいいか,などと悩んでいるうちの思いつきです.
メソッド呼び出しには,いつ処理を実行するか(その文をどこに置くか),誰が処理を実行するか(対象となるオブジェクト),どう処理を実行するか(その処理内容)という情報があります.このうち,「どう処理を行うか」については,インタフェースを使って隠蔽することができますが,「いつ,誰が」処理を実行するかというのはそのまま明記されています.
しかし,AspectJ のポイントカット+アドバイスを使うと,元のコードからメソッド呼び出しを取り除くことができます.こうすると,「いつ,誰が」という情報が丸ごと隠蔽されます.AspectJ のポイントカットだと,主に「いつ」実行するかという情報を一箇所にまとめるのが主な役割としているんですが,一方の「誰が」という情報を隠す(呼び出し先への参照の管理をオブジェクトから取り除く)ことも大きな役割ではないのかなーという感覚がしています.
「誰が」だけを隠蔽するアプローチとしては,ASE 2006 のポスター発表で教えてもらった Zhi#の人々の方法があります.この人たちは,あるオブジェクトから employee という関連を逆方向にたどって見つかるオブジェクト(company.employee == this が成り立つ company オブジェクト)を「this.^employee」というような形で参照できるようにしていました(データモデルの情報や,関連の名前についての ontology が与えられているという仮定はありますが).
AspectJ でこれと似たような記述を少ない手間でやろうとするなら,空のオブジェクト参照フィールドを用意しておいて,before(): get アドバイスを使ってそのフィールドを実行コンテキストの値に応じた適切なオブジェクトで埋める,とかいう形になりそうです.これは,Dependency Injection でやってるようなことを,実行時の情報を使って動的にやろうとしている,という気もします.
2007-01-13 [長年日記] ▲
_ [VolumeDeskbar] ホットキー機能の追加中 ▲
なんとか手元では動くものができたので,もう少ししたらリリースします.あまり極端に遅れないようにはするつもりですが,ドキュメント更新する時間に依存して時期は後ろにずれます.
THotkey.Hotkey の値が Num 8 と Up キーを区別しない(HKM_GETHOTKEY で獲得した情報が TShortcut 型に変換される段階で情報が落ちる)という仕様のおかげで,カーソルキーが Num 2 4 6 8 で表示されてしまいますが,実用上問題ないので放っておくことにしました.
フルスクリーンな環境については,ピンボールのフルスクリーンモードでいちおう実験してみました.音量のポップアップの表示が解像度と色数の都合で普段より汚く見えますが,ちゃんとキーは有効で,変更後の音量も分かるみたいです.
2007-01-08 [長年日記] ▲
_ [論文] アスペクトの情報だけを使って干渉の検出 ▲
Guenter Kniesel, Uwe Bardey: An Analysis of the Correctness and Completeness of Aspect Weaving.
Proceedings of WCRE 2006, pp.324-333. [IEEE site]
アスペクトが使うポイントカットに相当し,動作条件を指定する "predicate" と,実行されるアドバイスによって起こるプログラムの変化 "effect" をそれぞれ論理式で記述としたとき,「あるアスペクト effect の述語が,別のアスペクトの predicate に登場したら,アスペクト間に依存関係がある」とする手法の提案論文です.
アスペクトさえ揃えばどんなベースコードに結合するかに関係なく依存関係を検査でき,依存関係で作ったグラフをトポロジカルソートすればアスペクトのウィービング順序を決定したりできるので,かなり性格の良さそうな手法です.
実際にソースコードから述語を取り出すまではけっこう大変そうな気がしますが,アスペクトの干渉を論理式の関係に落とし込んでる点は読んでいて感心しました.AOASIA 2006 のときに「モジュラーな解析方法を用意するのが大事だ」とか当人が言ってた(気がする)のは,この辺のことだったのかなと思います.
2007-01-05 [長年日記] ▲
_ [hyCalendar] RFC2445を読んでみた結果 ▲
時刻とタイムゾーンのサポートや,カテゴリへの対応など,色々考えています.
最終的には Google のアレと相互運用できるようにしたいんですが,そこに至るまでにはデータ構造の拡張と,それに伴うUIの大幅な変更が必要で,下手するとほとんど別アプリケーションになりそうです.
2006-12-25 [長年日記] ▲
_ コメントスパム対策 ▲
CAPTCHAプラグインを導入してみました.それから,1年以上前の古い記事に対するツッコミもスパム認識するようにしてみました.古い記事についてのツッコミは,掲示板とかメールとか別方法を使ってやってください.
_ saito [iCalendar型式のファイルの入出力に対応すると汎用性出そうですね ]