netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2006-03-12 [長年日記] ▲
_ [読書] プレファクタリング ▲
Ken Pugh 著「プレファクタリング -リファクタリング軽減のための新設計-」(オライリー・ジャパン).
リファクタリングとかの必要性が少しは減るように(なるべく変更量が小さく保守しやすいコードになるように),コーディング前にリファクタリングをする,というのが紹介文には書いてあった.
ざっと中身を眺めた限りでは,分析やクラス設計,コーディングまで,今まで色々言われてきたプラクティスを整理していて,保守しやすいコードを作ることを考えよう,ということを,1つのシステム開発の例を題材に解説している.
「関心事の分離」(「横断的関心事の分離」ではなく)に関する記述なんかが気になったので購入してみた.
_ [論文] アスペクトの記述支援 ▲
斉藤 瞳,櫻井 孝平,山崎 雄大,古宮 誠一: 横断的関心事の特定に基づくアスペクトモジュールの記述支援.
第68回情報処理学会全国大会,4F-6,2006年3月.
アスペクトの生成支援は,元のコードと,追加したい処理を書き加えたコードの差分から,アスペクトの定義を生成しようというものらしい.
α-ωマーキングをしたところを機械的にリファクタリングする Binkley らのアプローチ(ICSM2005)に似ている.
after call と after execution のように,同じことを実現する複数の選択肢がある場合をどうやって決めていくかといった,設計をどう支援できるかにもよるかも.
_ [論文] Bugdelを使ったAOP的デバッグ ▲
組み込みJava向け開発環境へのアスペクト指向ツールの適用
第68回情報処理学会全国大会,4F-7,2006年3月.
Bugdel を使って,本稼動に近い環境上でデバッグ用コード(トレースとか)付きのシステムを走らせてみた,という話.
組み込み環境ではデバッグ用VMだとJITが使えないとか,厳しい制限があるので,そのあたりをデバッグ用アスペクトとして書いてしまう,という発想になったらしい.
デバッグ用コードの分離・再利用がいちおうできるというのも利点の1つ.
行ポイントカットは,デバッグ用だからOKといえばOKなのだけど,CVSとかでチェックアウトしてきて,差分でコードがずれたとかいうことになると厄介.
コメント行として何かを書き込んでおいて,ツールを通してポイントカット定義を生成するなんて方法を使えば,的確に固定のデバッグ用ポイントを埋め込めるんじゃないかな?と思ったりもする.
2006-03-11 [長年日記] ▲
_ [VolumeDeskbar] デバイス変更への自動追随はあきらめ. ▲
色々試してみたものの,RegNotifyChangeKeyValueでデバイス変更をトラップした直後にミキサーの状態を取得しても,直後にはまだミキサーAPI側で新しい状態が取れない(1秒程度待つ必要がある)ので,いまいちレスポンスが悪く,切り替わったタイミングについてもうまくユーザに表示できないので,あきらめることにした.かわりに「最新の状態に更新」メニューとかを付けて実験中.デバイスが変わったら,そのメニューを選ぶと,新しいデバイスの音量を表示するようになるというもの.ちょっと不親切な気もするけど.
Norton Internet Security とかの「更新しました」メッセージポップアップは偉大な通知方法なのかもしれない,とちょっと思ったものの,たかが音量のためにそこまで実装するのも面倒だったりする.
2006-03-09 [長年日記] ▲
2006-03-07 [長年日記] ▲
_ [VolumeDeskbar] レジストリ変更への対応 ▲
確定申告やら事務手続きを色々片付けつつ,RegNotifyChangeKeyValue を使って「既定のデバイス」の変更を監視する処理を実験してみたら,実験コードはちゃんと動いた.
というわけで,次は,実際に Volume Deskbar に組み込んでみることにする.Explorer のプロセス内部で勝手に監視用スレッドを作るので,ちょっと気持ち悪い気もするけど…….
2006-03-05 [長年日記] ▲
_ [hyCalendar][お知らせ] hyCalendar 1.3.4 リリース ▲
ドキュメントの更新も無事終わったので,公開しました.ダウンロードはこちらから.
また何かご意見/ご要望ありましたら,tdiaryのツッコミないし掲示板にて,コメントをお願いいたします.
_ [VolumeDeskbar] Bluetooth ヘッドセットと「既定のデバイス」の変化 ▲
Skypeとか使うために Plantronics M3000 + Planex BT-01UDE を買ってインストールしてみた.音声出力先を Bluetooth デバイスに指定しないと内蔵スピーカから音が出てしまうので,切り替えはどうするのだろうと思っていたら,接続が確立されると同時に「Bluetooth Wave」というデバイスが出現し,「既定のデバイス」をそれに切り替えるという仕組みが付いていた.
ところが,VolumeDeskbar 側は,この突然のデバイス出現と切り替えに追随できないので,これらの Bluetooth デバイスに対する音量はうまく動作しない.
定期的にポーリングして変更を検知するのも効率が悪いということであちこち調べてみて,オーディオの「既定のデバイス」は,レジストリのHKEY_CURRENT_USER\Software\Microsoft\Multimedia\Sound Mapper
という場所に書き込まれていることがようやく判明.
ということは,レジストリ変更を通知するRegNotifyChangeKeyValue あたりを使えば,ちゃんと変更に追随できるようになるかも.
2006-03-03 [長年日記] ▲
_ [hyCalendar] 1.3.4 での修正内容 ▲
hyCalendar 1.3.4 バイナリがいちおう出来上がった.修正内容は以下の2点.
- 日付の右クリックメニュー,テキスト編集エリアの右クリックメニューに「切り取り・コピー・貼り付け」を追加.
- ツールバーの位置を入れ替えたとき,ツールバーが正しく表示・非表示を切り替えられない問題を修正.
またドキュメントの修正が必要なので,とりあえずバイナリだけ,リリースまで置いときます.