netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2003-12-21 古い日記からの変換データ [長年日記] ▲
2003-12-20 古い日記からの変換データ [長年日記] ▲
_ Delphi ▲
ツリービューにて,MouseDown でノードのドラッグ開始処理,DblClick でノードの値編集ダイアログを表示,としていたらダブルクリック操作したときは先に DblClick のメッセージが実行されて(MouseDown はキューに入れられて)ダイアログ表示→戻ってきたらドラッグ開始となってしまう.
普通は MouseUp でドラッグ終了するのだけど,DblClick でダイアログを表示するとダイアログが MouseDown を持っていってツリービュー側に MouseUp が届かなくなるみたい.今回はDblClick時にフラグをセットして回避することにした.
_ Calendar ▲
月曜始まりで表示する機能を実装してみる.元々,グリッドのセル単位で描画していたので,グリッドのセル座標から日付の対応付けを行う関数を修正して,逆に日付から座標を計算していた部分も関数としてくくりだして(一箇所しかなかったけど)修正するだけで無事終了.
実装の都合上,任意の日から週を開始することが可能なのだということが判明したけど,さすがに需要もないだろうし,余計なオプションが増えるのもうれしくないので,「カレンダーを月曜始まりにする」オプションだけを追加.
周期予定まわりのインタフェースを書き直しているのもあと少しで終わりそうだし,1月上旬には確実にリリースできそう.できればもう少し早めたいところではあるけど.
2003-12-18 古い日記からの変換データ [長年日記] ▲
_ Delphi ▲
ドラッグ中のキーボード状態を取得するのには,KeyboardStateToShiftState というのを使えばいいらしい.VCL ヘルプに載ってないけど…….
CTRL が押されたら DragObject を継承して作ったCopy プロパティを ON にして,Copy プロパティが ON かどうかでドラッグ中のカーソルキーの値を返すようにgetDragCursor をオーバーライドしてみた.
カーソル自体も自作.影は付かないけど,Windows システムカーソルを手本にそれっぽいコピー時用のカーソルを作ってみた.[ツール]-[イメージエディタ]で書いてMYCURSOR CURSOR "ファイル名"const crMyCursor = 1;Screen[crMyCursor] := LoadCursor(hinstance, "MYCURSOR");とするだけ.けっこう簡単でいい.
2003-12-17 古い日記からの変換データ [長年日記] ▲
2003-12-15 古い日記からの変換データ [長年日記] ▲
_ 論文 ▲
APSEC2003 の proceedings を見せてもらったのだが,今回は,読みたいと思うものが少ない.
Jun Han and Ksze Kae Ker:Ensuring Compatible Interactions within Component-based Software Systems,Proceedings of APSEC 2003, pp.436-445 (2003).
インタフェース定義として Rich IDL を使って,それに加えてコンポーネントごとのメソッド呼び出し順序などの規定を記述する言語を追加している.たとえば COMPONENT Account { setupAccount BEFORE (deposit, withdraw);} といった感じ.で,この記述から eFSM を作って実行時にテストしてやろうというもの.
FSM で実現する場合,コンポーネントの「状態」が問題になるが,現実にはインタフェースには状態は現れてこないので,制御に関する条件のほうがユーザには分かりやすい,と言っている.
基本的に記述はあるコンポーネント単体に対して行う(他のコンポーネントに対する条件は限定的にしか記述できない).そのかわり,コンポーネント単体だけで適用できるようになっているので,すべてのコンポーネントに仕様を書かなくても,書いた場所だけチェックしてくれるので導入はしやすい.
_ 論文 ▲
メーリングリストに流れてたので拾ってみた.
Bruno Dufour, Christopher Goard, Laurie Hendren, Clark Verbrugge, Oege de Moor and Ganesh Sittampalam:Measuring the Dynamic Behaviour of AspectJ Programs.Sable Technical Report No. 2003-8 (2003).
AspectJ プログラムの動的メトリクスとして,従来から利用可能な
・実行時間
・実行されたバイトコードの命令数
・ロードされたバイトコードサイズ
・確保されたメモリ
に加えて,AspectJ 独自のメトリクスとして
・Tag Mix(実行されたバイトコードが,Javaコード,AspectJコード,CFlow の準備,アドバイスの実行条件のチェックなど,どの種類に属するかという比率を調べる)
・アドバイスの実行条件のテスト回数 (そのうち常に成功しているものや常に失敗しているものの割合)
・コードのカバレッジ(ロードされたうち実行されたバイトコードのサイズ)
を定義している.いくつかのアプリケーションを実行して,これらの値を計測しているのだが,cflow や args などがアスペクトのオーバーヘッドのかなりの割合を占めている様子.
これらはあくまでパフォーマンス上の話のことで,期待していたような実行時の複雑度の話とかではなかった.残念.