netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2006-11-13 [長年日記] ▲
_ [Java] Java への GPL 適用 ▲
J2SE が丸ごと GPL v2 になると,その上で動くアプリケーションはどうなるんだろう,と思って調べていたら,ライブラリに関しては「classpath exception」という例外項目がくっついていた.
FAQの解説とライセンスの記述によると,ライブラリを改変しない限りは任意のライセンスのコードとリンクして使って良いよ,という条項らしい.
これのおかげで,既存のアプリケーション側は特にライセンス変更せずとも新しい GPL v2 版の J2SE の実装を利用できる.これはけっこう親切なライセンス規定だといえそう.
アスペクトを使って JDK 標準のバイナリ改変をやりたかった人には,オープンになって「禁止」じゃなくなった点が良いのかも.
2006-11-10 [長年日記] ▲
_ [VolumeDeskbar] Vista 対応はしばらく見送り ▲
Vista ではマルチメディア系の API の構造がいくらか変わってるようです.mixerOpen などの従来の API も存続していますが,今までだとオーディオデバイス名などが見えたものが取れなくなってます(そのかわりアプリケーションごとの音量が制御可能です).
で,MSDN ライブラリによれば,それより抽象度の低い API としてCore Audio APIs in Windows Vistaというのが,mixerOpen などの下層に入り込んでいるようです.
この中に入っている IMMDevice オブジェクトを取得して Activate メソッドから IAudioEndpointVolume あたりを取得すればマスターボリュームが取れそう……と当たりは付けてます.正しいかどうかは分かりませんが.
実験コードを書くための環境を整えるところからまず大変なので,しばらくは対応については見送ります.少なくとも Vista がインストールされた開発環境を手に入れる(どんなに早くとも来年の4月以降)までは.
2006-11-07 [長年日記] ▲
_ [OUCC] ouccのサーバこけの影響(関係者向け情報) ▲
日本時間で11月6日夜ぐらいからディスクトラブル起こしてるようです.home のディスク以外は特に問題ないのでメールとかは読めたりします.メーリングリストは配送されないみたいですが.
MAngband サーバは停止後,データ回収に成功しています.復帰次第,再開する予定です.
(10日追記) POP3 の接続は通るものの,メールは配送されてないようです.エラーメールも帰ってこないので,どこかに引っかかっているか,もしかして全部ロストしている?
(29日追記) 部員専用wikiのミラーを勝手に設置しました.サイドバーの下のほうにリンクがあります.ユーザ名,パスワードは元サイトと同じです.
2006-11-05 [長年日記] ▲
_ [Java] Extensible Java Profiler を試してみた ▲
JDK 1.4 で動くプロファイラがほしくてExtensible Java Profilerを試してみた. 別に何でも良かったのだけど,@ITの記事 で紹介されていたプロファイラの中で,最新版が一番新しかったから選んでみた.(1.5用ならこんなのとかがある)
lib/tracer.dll にパスを通して -Xruntracer で実行すると,スレッドごととおぼしき *.ejp ファイルが生成されるので,それを presenter.bat で起動するツールに読ませる.出力結果はメソッド呼び出しの履歴(コールツリー)に時間情報が付加されているだけのシンプルなUIなので,使う段階で迷うことは特になし.
Extensible というのは,どうやら色々なフィルタを噛ませて閲覧できるという点らしい.メソッドごとに時間積算するぐらいで十分だけど…….
このツールは,どうもログファイルの肥大化が目立つ気がする.積極的にライブラリなどを排除しておかないと,すぐ数百MB,下手するとGB単位のファイルになってしまう.「後からプロファイル結果を加工する」という考え方をしてるので,JVM からデータを取っている段階でデータ量を減らせないというのが不利に働いている気がする.適用対象のプログラムがやたらと多数のオブジェクトを使ってたせいかもしれないけれど.
大規模な入力に対しては,このツールだと太刀打ちできなかったので, System.getCurrentMillis あたりを使っての簡易時間計測で済ませることにした.
2006-11-02 [長年日記] ▲
_ [論文] アスペクトを使ってアーキテクチャのプロトタイピング ▲
Ingolf H. Krueger, Reena Mathew, Michael Meisinger: Efficient Exploration of Service-Oriented Architectures using Aspects.
Proceedings of ICSE 2006, pp.62-71.
あまり詳しくは読みきってないけど,アイディアが面白かった論文.
目的は複数のアーキテクチャ候補の比較評価.シーケンス図やロールモデル,コンポーネントのマッピングを記述して,それらに基づいてアスペクト(AspectJ ソース)を生成し,プログラムとして実行することで性能の試算などを行おうというもの.
アーキテクチャごとに,コンポーネントがどう接続されるか,どう相互作用するかという部分をシーケンス図やロールモデルで記述する. 登場する個々のエンティティは,比較的単純にクラスとしてマッピングすることができる(と思う).
シーケンス図に書かれたメッセージ列は,「C1.A の実行が終わったあとに C2.B を実行する」というように解釈すれば,機械的にafter(): execution(C1.A) { C2.B; }
のようなアドバイスに変換できる.
また,ロールドメインモデルで,「Manager は Broadcaster にアクセスする必要がある」と書いてあったらインタータイプ宣言を使って Manager に Broadcast 型の変数と setter/getter を作成することができる.
クラスとアスペクトを一通り生成したら,あとは weaver に任せてコンパイルを通し,実行して評価するだけ.従来だと,シーケンス図に登場する各クラスに相互のメソッド呼び出し用のコードを適切な順序に並べて埋め込んでいくとかいった手間のかかっていた部分が,ほとんど weaver 任せになっている.
生成されたコードはえらいことになる気がするけれど,保守するわけではないので問題なし.
アスペクトだけでコードを書くと「アスペクトが全部の処理を接続して,クラスはデータ構造を宣言するだけになる」というのは想像したことはあったけれど,そういうコードを生成してプロトタイピング的に使ってしまおう,という考え方にはすごく感心してしまった.
2006-10-30 [長年日記] ▲
_ [お知らせ][hyCalendar] hyCalendar 1.4.2 リリース ▲
タスクバーに格納された状態のままウィンドウを閉じたとき(右クリックから「閉じる」を選ぶか,タスクマネージャから「タスクの終了」を指定されたとき)に,ファイルの保存確認あるいは自動保存が実行されない問題を修正しました.また,「この日を周期予定に追加する」メニューの使用後に表示が更新されない問題を修正しました.ダウンロードはこちらから.
1.5 β版のバイナリも,上記の修正を加えたものに置換してあります.
(10月31日追記) タスクバーに格納されてない状態でタスクバーの項目を右クリックして閉じるとやっぱりファイル保存ができない,との指摘を受け,1.4.2a としてアーカイブファイルを差し替えてました.
2006-10-28 [長年日記] ▲
_ [お知らせ][hyCalendar] hyCalendar 1.5 β版テスト中 ▲
1.5.0のβ版バイナリを作ってみました.今回,新機能として「〜まであと何日」という日数のカウントダウン機能を追加していますので,それについてちょっとご意見をいただけると嬉しいなと思っています.
例によってファイル形式が拡張されているので,試される場合は,必ずデータファイルのバックアップは取っておいてください.
メニューの[カレンダー]-[日付カウントダウンの設定]から,特定の日あるいは周期予定を選んで「追加」ボタンを押すことでカウントダウン項目を作成できます.カウンタの値は,ステータスバー(ウィンドウの一番下)に表示されます.
今のところ,設定としては,その日が近づくまでは(デフォルトで100日)カウンタを表示しないという項目ぐらいしかありません.他に設定可能な項目がほしい方はこの記事に「ツッコミを入れる」なり掲示板なりメールなりでご意見をいただけると幸いです.
それから,このβ版には,掲示板でご指摘いただいた「この日を周期予定から除く」機能に関する問題の修正と,期間予定の左右端の矢印をなしにできるという機能も入ってます(期間予定ダイアログに,左右端の形状を指定する項目が増えてます).
ちゃんとドキュメントまで整備したリリースは,作業時間をどれだけ取れるかに依存しますが,11月後半〜12月前半になるかと思います.