netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2003-06-02 古い日記からの変換データ [長年日記] ▲
2003-06-03 古い日記からの変換データ [長年日記] ▲
_ AOSD ▲
Java World 2003年7月号に,特別企画として「アスペクト指向開発のススメ」というのが載っていた.この筆者がどんな人なのか良く分からないが,こんな感じでアスペクトは出てきますね,というところだけはまあそれなりに分かりやすい.
後半は,なんかよく分からないけど.Change Concern (変化に対する関心)って誰が言い出したんだろう.Concern for Change なら FEAT の人たちがちょっとだけ書いてた気はするが.
実践派っぽいところは好感が持てるが,何か足りないような気がする.特に,Change Concern の説明を読んでる限りは「システムの変更はアスペクトを貼り付けてやりましょう」のように聞こえるのが非常に気になる.
2003-06-04 古い日記からの変換データ [長年日記] ▲
_ アスキーアート ▲
ASCII 文字以外でもアスキーアートって言うのかな?と思ったら,やっぱり言わないのが正解らしい.でも,ASCII ってコードセットだから,EBCDIC で,ASCII に含まれている文字だけを使って書いても,文字コード体系は違うから「これは ASCII ART ではありません」ってなるのかなぁ.まあ,体系が違うから仕方ないか.
ASCII を包含するようなエンコーディングでASCII 文字セットに含まれている文字だけで書いてたらアスキーアート,っていうのは悪くない判断ではあるが…….
2003-06-06 古い日記からの変換データ [長年日記] ▲
2003-06-08 古い日記からの変換データ [長年日記] ▲
2003-06-11 古い日記からの変換データ [長年日記] ▲
_ javadoc ▲
Javadoc2HTML は,HTML2WinHelp を使ってやってみたが,どうも日本語 javadoc 中に正しい HTML でない(あるいは怪しいコード列が存在している)らしい.hhc.exe がエラーを出してしまうので,あきらめ.しかも,生成途中の .chm にしても約40MB程度あったので,JDK に対する HTMLHelp は無意味な存在っぽい.Google が使える場所なら Google のほうが軽量だ.ということで,このネタはお蔵入りさせておくことにする.
_ javadoc ▲
Javadoc2htmlhelp を作ろうとすると,HTML Help の中でインデクスとして何を含めるかが悩ましい.クラス名だけだと手抜だろうか.でも,HTML を parse したくはないし,Java ソースの doc コメントを parse するのも面倒なのでクラス名だけインデクシングしておいてあとは全文検索で使うことを前提にしてみよう.
適当に find や grep を使ってファイルを列挙するだけのスクリプトでいけるだろうか?
_ JBoss ▲
JBoss AOP のドキュメントに目を通す.XML で pointcut などのコンフィギュレーションを書くらしい.しかも Dynamic AOP でいきますとか,JSR 175 (C#などの持つ属性宣言機能,JDK 1.5で実装予定)に相当する機能も加わってるぞ,とか主張している.
JBoss を使ってる人が身近にいないのですごいのかどうか良く分からないが,XML でアスペクトのコンフィギュレーションを書くというのはちょっと良さそうに聞こえる.
まあ,言語(あるいはフレームワーク)が作れるのは当然で,問題はその上で何をするか,それに加えてアスペクトによってもたらされる複雑さをどうするか,ということになってくるのだろうけれど.
_ 論文 ▲
ちょっと名前が気になって H. Masuhara, G. Kiczales, C. Dutchyn:"A Compilation and Optimization Model for Aspect-Oriented Programs", Proceedings of Compiler Construction (CC2003)を見てみた.
Pointcut などの定義を関数型言語 (CLOS?) で書いてるのだが,partial evaluation して static に決定できたらstatic に埋め込んで,評価結果に if が残ったらguard つきの dynamic advice を埋め込むらしい.関数型言語がそれらしく使われているのは,初めて見たような気がする.
_ 論文 ▲
暇つぶしに SPA2003 に出ていた佐藤 芳樹,千葉 滋: ``Dynamic AOP とその実装手法について''を読んでみる.5ページのショートペーパーで具体的なことはほとんど書いてないのだが,JPDA の HotSwap (クラスファイルの再ロード)機構を使って動的 weaving を実装したらしい.しかも,パフォーマンス的に問題ない場所はブレークポイントでプログラムを実行し,ボトルネックだけを weave するという渋い方式.
それにしても,動的 weaving ってデバッグするの大変なんじゃなかろうか.ほとんどのデバッガ(およびプログラマ)は,実行時にプログラムが置き換えられることは想定していないと思うのだが…….自律コンピューティングの人たちはもう考えてるのかな?
2003-06-12 古い日記からの変換データ [長年日記] ▲
_ 来客 ▲
人から受け取る物があるので家から身動きができない.とりあえず研究室に ssh などを使って作業をすることにする.
緊急の用件が入ったりしたらイヤではあるが,今日は何の予定もない(はず)と信じて家で作業.
_ ネットワーク ▲
車を利用したアドホックなネットワークの構築の話.http://www.zdnet.co.jp/broadband/0306/10/lp18.html
以前,冗談で話していたことはあったが,そろそろ現実に近づいてきたかも.日本だと道の面積のわりに車の台数が多いのできっとすごく濃密なネットワークが構築できそうなのだが.渋滞のときなどは高速道路が強力なバックボーンがわりになったりしないかと密かに期待してみる.マルチキャストでストリーミングとかすれば渋滞の待ち時間も楽しめる……かも?
2003-06-13 古い日記からの変換データ [長年日記] ▲
_ Java ▲
新 I/O まわりの話は,JSR 203 などで議論されるらしい?51 も Final Release まで進んだのに65 が CAFE から進んでないあたりが怪しげではある.ちなみに,1.5 (Tiger) で加わるという噂のJSR #201: auto boxing あたりも進んでないのでこの辺はまだこれからなのかもしれない.
_ SDカード ▲
コンパクトフラッシュのデータ転送速度の実験を発見.これによると,IO-DATA の PCCF-ADP で400KB/s 程度らしい.ということは,SDカードの 2MB/s(CF-T1ではそれ以上は出ない)のほうが明らかに高速.512MB はまだ値段が高いようなので,256MB くらいで使ってみようか.
http://www.geocities.co.jp/Hollywood-Studio/3078/cf_speed.html
_ Java ▲
Java 1.5 に関して,http://itpro.nikkeibp.co.jp/free/NBY/NEWS/20030611/2/でスクリプト言語との連携機能(スクリプト言語からJava クラスを呼べるようにする機能)を作るって言っているが,これは Jython などと似たようなものなんだろうか?
それに加えて,printf も結局導入されるらしい.JSR 51 で printf を I/O に付けましょうと言っているが,Java では可変個数の引数は許されないのでformat("%s %s %s ", new Object[] { a, b, c} ); なんて書くのかなーと思っていたら,JSR 65 で format("%s %s %s ", { a, b, c} ); と書けるような,いわゆる「配列のリテラル」を提案していた.最近 JSR 自体見てなかったが,もうちょっと,ちゃんと調べておけばよかった.
静的型付けの言語ではどうしても配列の型がObject[] になってしまうのが弱点で,個人的にはList
2003-06-14 古い日記からの変換データ [長年日記] ▲
2003-06-16 古い日記からの変換データ [長年日記] ▲
_ Eclipse ▲
本屋にEclipse 関連の本が2冊ほど置いてあったが,どちらも Java 開発環境あるいはチーム開発環境としての側面だけを取り上げていて,プラグイン開発などの話が掲載されていないので,買うのは見送り.もっとも,開発環境の解説としても,いわゆるトラブルシューティングに相当する記事がないと不十分だと思っているのだが.
特に,プラグインが(なぜか)非アクティブになった場合の対処などは説明しておいてほしい.(実際には再起動くらいしか手がないにしても)
まあ,プラグイン開発者としては,IBM の Developers Guide だけがプラグイン開発の説明を含んでいるようなので選択の余地はあまりない.
2003-06-18 古い日記からの変換データ [長年日記] ▲
_ MAngband ▲
三度目の MAngband サーバ始動に向けて改造開始.キャラクターが死んだら,幽霊状態で地上への Word of Recall が発動するように改造.
また,家の鍵だけは死んでも落とさないように修正してみる.物の落下順序は xtra2.c で,価値順序で sort で決定しているのだが,装備品と所持品の欄内で sort してるので,アイテムを残すと(価値順序的に)装備品欄に鍵が移動したままになったりすることがある.これは,sort 順序の評価値を変えて,強制的に一番高い(あるいは低い)価値とみなせば,アイテム欄に無理矢理残すように実装できそう.また,鍵は盗まれないので,これで十分安全そうだ.
あとは味方にかける支援魔法系を実装できるかどうか.
2003-06-20 古い日記からの変換データ [長年日記] ▲
_ 携帯 ▲
携帯電話での物品購入システムの構築が動き始めたらしい.http://itpro.nikkeibp.co.jp/free/NCC/NEWS/20030619/2/
携帯電話だと身元情報がある程度存在するので有効かもしれない.限度額が低く設定されているけど,実質は一種のクレジットだし.ただ,逆に置き忘れたときなんかは痛そうではあるけど.
既に駅の改札と連動する仕組みがあるんだから,改札通ったら自動で料金引き落としとかもできるのだが…….既に Suica があるから,やらないかな.携帯電話だと身元情報が取れてしまうので,誰がどこを通過したかが記録できてしまうし,そうなるとプライバシーの問題も引っかかってくる.やはり利便性とのトレードオフか.
2003-06-24 古い日記からの変換データ [長年日記] ▲
2003-06-25 古い日記からの変換データ [長年日記] ▲
_ AspectJ ▲
実験用に AspectJ のソースがほしくてsorceforge.net を検索してみたら,けっこうたくさん当たった.しかし,実際には Planning フェイズのものも多くて,フェイズが 3 - alpha まで進んでたのは次の二つだけだった.
http://sourceforge.net/projects/barter/http://sourceforge.net/projects/cricketcage/
2003-06-26 古い日記からの変換データ [長年日記] ▲
_ ニュース ▲
文化系の趣味を持っている人はボケにくい,とかいう話があるらしい.http://biztech.nikkeibp.co.jp/wcs/leaf/CID/onair/biztech/medi/254262
こういう実験(統計調査?)してる人がいるんだなぁと感心.いちおう TRPG も文化系か.ボケを気にする年まで遊んでるかどうかは知らないが.
2003-06-27 古い日記からの変換データ [長年日記] ▲
_ dW: パフォーマンスの都市伝説 ▲
Introduction の文章といい,developerWorks は読み物としてよくできているような気がする.http://www-6.ibm.com/jp/developerworks/java/030627/j_j-jtp04223.html
2003-06-28 古い日記からの変換データ [長年日記] ▲
_ 読書 ▲
ゲド戦記5「アースシーの風」読了.原題 "The Other Wind" を微妙に訳してるなぁ.(作中では「もうひとつの風」)
とりあえず今まで伏線だらけ(微妙な解決だったもの)に完全な解答セットを公開してる,ような感じがする.1巻を読んだときからは12年くらい経ってるので,作品中も時間が流れてるので以前の作品の話が「そんなこともあったなぁ」と感慨深いものがある.この続け方はうまいなぁ.
外伝の Tales from Earthsea が翻訳されたらフルセットで読み直そうかな.文庫本で出てくれれば一番いいのだが…….
_ RPG研 ▲
ゲド戦記5「アースシーの風」を借りるために朝だけ顔を出す.
レポートがあるとかで,一緒に帰った後輩の子が,実家が近所(マンションの隣の公営住宅)という人な上に実は下宿も近所(徒歩8分程度)だったことが発覚.だからといって特に意味はないのだが,微妙な縁というのはあるものかも.
_ MAngband ▲
ランダムダンジョン生成のアルゴリズムがいまいち怪しいので,http://www.trpg.net/webzine/200303/1000000034.htmlで紹介されていたhttp://www.aarg.net/%7Eminam/dungeon.cgi をかっぱらってくることにする.しかしこれ,ソースコードは公開してくれてるのだが,ライセンスが書いてないので,そのまま取り込むのはちょっと微妙ではある.まあ,実験的に使うだけだが.
_ AspectJ ▲
AspectJ 1.0.6 から 1.1 へ移行したとき,interface Identifiable { void setId(Id id); Id getId(); } aspect IdentifiableAspect { private Id Identifiable.id = null; public Id Identifiable.getId() { return this.id; } public void Identifiable.setId(Id id) { this.id = id; } public int Identifiable.hashCode() { return (this.getId() == null) ? super.hashCode() : this.getId().hashCode(); } }
と書いたアスペクトが動かなくなるらしい.
int around(Identifiable i): target(i) && call(public int hashCode()) { return (i.getId() == null) ? proceed(i) : i.getId().hashCode(); }
と書いたらうまくいった,とWilliam DeMoss II が Changes in introduction for aspectj compiler 1.1 というSubject で AspectJ-users に投げていた.
どうやらこれ,AspectJ 1.1 のバグらしいので fix されそう.個人的には,introduction はもうちょっと設計レベルで何か表現可能な図が思い浮かぶまではあまり使いたくないのでaround な実装でもいいかなぁ,とか思ってたりする.
2003-06-30 古い日記からの変換データ [長年日記] ▲
_ AspectJ ▲
sorceforge.net で公開されている AspectJ を使ったプログラムだが,
http://sourceforge.net/projects/barter/はポリシー記述などから AspectJ プログラムを生成するコードジェネレータっぽい様子なので役に立たず.
http://sourceforge.net/projects/cricketcage/のほうも,テストケース生成とかがメインで,AspectJ を実装に有効に使っている様子はなかった.
結局,Roberto E. Lopez-Herrejon and Don Batory:"Using AspectJ to Implement Product-Lines: A Case Study"という論文で使われていた AspectJ のコードが一番有望そう.規模としては約2000行.グラフオブジェクト+グラフの特性アスペクトという構成をしている,面白い実装ではある.全部が全部アスペクトとして実装されてるあたりが怪しくはあるが…….http://www.cs.utexas.edu/users/rlopez/Publications.html