«前の日(07-15) 最新 次の日(07-17)» 追記

netail.net

自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.

最近のお知らせ (古いものはこちら)


2002-07-16 古い日記からの変換データ

_ 論文

ECOOP 2002 に出ていた Dyamically Composable Collaborations with Delegation LayersKlaus Ostermannを読む.

Collaboration 単位での再利用を提案した論文.Runtime AOP みたいな雰囲気で,実行時に collaboration (アスペクトによく似ている)を結合する.

各クラスの実装に相当する部分をオブジェクトのdelegationで(一種の Decorator パターン?)で実現しているところがえらい.実際に使えるようなコンパイラ作るのは大変そうだけど.

_ JGL

Java Generic Library,Recursion Software Inc. が開発した Java 用の STL みたいなものか.有料な時点で使う気なし.とりあえず JDK 1.5 の Generics を待つことにする.

http://www.recursionsw.com/products/jgl/jgl.asp

_ YAML

Ruby で YAML4R が実装されたっていうので見てみた.オブジェクトを可読性の高いテキストにシリアライズできるらしい.バイナリフォーマットと違って気楽に読み書きできるのは嬉しい.オブジェクトの中身をデバッグしたいときとかに便利?手動で書き換えようとしたら死にそうだけど.

http://www.yaml.org/

_ self problem

論文を読んでて遭遇したキーワード.Broken Delegation とも言うらしい.

複数のオブジェクトがかたまって1個のオブジェクトを構成する場合(Decorator パターンなんかもその一種?)A の一部であるような B がいるが,そのオブジェクトを表す "self" はA の中であっても B の中であっても A を指さなければならない.しかし,ほとんどの言語では,B のコンテキストでは self がB を指してしまうという問題.

int A::foo() { return b.foo(); }int A::hoge() { return 1; }int B::foo() { return this->hoge(); }int B::hoge() { return 0; }a.foo() = b.foo() = a.hoge() となってほしいが,実際にはa.foo() = b.foo() = b.hoge() となってしまう.厄介なバグになる可能性が高そう.

_ F-bounded Polymorphism

論文を読んでて遭遇したキーワード.型パラメータが上界を持つ(bound される)という意味らしい.C++ でいう template の T が,どのようなクラスのサブクラスでなければならないか(つまり上界),ということを制約する.Cecil なんかでは使えるらしく,「Comparable[T] を型パラメータでもらいます」なんて書けるらしい.


2003-07-16 古い日記からの変換データ

_ activemail

neweb がいつまで残ってるか分からなくて不安なので,メールアカウントを ActiveMail に移行開始.activemail.jp ならまあ,残るだろう.

_ 無線LAN

WN-B11/CF を PDA にセットアップ.つながらないなーと思っていたら,ESS ID 入力フィールドが大文字・小文字を区別していたらしくて全部大文字にしたら通った.むー.

_ 日記CGI

ひそかに入っていた blockquote を外したりcolspan の値を変更したりして,微妙にレイアウトが変化.ウィンドウを小さくしたときに(PDAからとか),少し読みやくなったはず.

_ 無線LAN

自宅LANに無線ブリッジを追加.これでまた少しケーブルの本数が減る.

_ どせいさん

どせいさんのほんを購入.真空パックのどせいさんがどんなのか見たかっただけだが.家に置くほど作りがよくないので,部室に放置することにする.

_ 恋愛頭脳

http://hanihoh.com/love/の診断結果は「達人」だった.駆け引き過多らしいが :-)


2004-07-16 古い日記からの変換データ

_ [論文] アスペクトのインスタンス化

下滝 亜里: アスペクトのインスタンス化とインスタンス単位でのアスペクトの適用.FIT 2004, to appear.http://noselab.ise.osaka-sandai.ac.jp/~asato/pubs/fit2004.pdf

どちらかというとプログラミング言語なネタか?インスタンスごとに貼りつくアスペクトのインスタンスを簡単に利用できるように,AspectJだけを用いて記述する方法と,クラスタグ付けによる記述法の提案.

オブジェクト1個以上に対してアスペクトが1個貼りつく,どのインスタンスにアスペクトを付加するか自分で決める,というのは Mix-in に近い立場に見える.1個のインスタンスに同じアスペクトのインスタンスが動的に複数貼りつくことがありうるので少し違う?

アスペクト指向的にはやはり複数のクラスのインスタンスにアスペクトを貼り付けたくなるが,そうなると芝浦工大の櫻井さんたちのAssociation Aspectに近いように見える.スペースの都合か,関連研究に対する位置づけが説明されてないので不明.

個人的な思いつきとしては,インスタンスレベルのアスペクトは対象を「この」インスタンス,と手動で特定しているといわゆるベースコードとアスペクトが混ざってしまうので,特定の関係にあるオブジェクト間にアスペクトが貼りつく,みたいな書き方ができるようになればうれしいのかもしれない.これは Association Aspect を適切なタイミングで付けたり外したりするアスペクトを書けば実現可能?

余談だが,インスタンスごとにアスペクトを動的に貼り付けるようになると,干渉のしかたも動的に決まるから,干渉の検出に使うプログラム解析などは難しくなりそう.アスペクトの貼りつき順序の禁止ルールとかを作るのは難しいし一杉さんの「安全な結合ルール」みたいな手法をきちんと考えないと複雑さがすぐに爆発しそうな予感.スライシングは解析コスト高いし,もうちょっと Lightweight な手法に進まないと苦しいか.

_ [hyCalendar] iniファイル読み込み

hyCalendar が Windows 98 上で動かなかったのは,INIファイルから文字列を読み込むために使うGetProfileString (DLL上ではGetProfileStringA)が存在しない項目の一部にアクセスしようとしたときにページ違反を起こすためらしいということが判明.

hyCalendar 0.7.0 で追加された項目の中にどうやら引っかかるものがあるらしい.

とりあえず回避方法は,すべての設定が作られたini ファイルをあらかじめ用意しておくこと.なので,いちおうの対処はできた格好になった.

これで,少し余裕をもって対処できる.


2005-07-16

_ [お出かけ]アイス博覧会@天保山マーケットプレース

ふとアイスが食べたくなったので,このイベントに行ってみた.各地の名産(?)アイスが売られていたので,醤油マーブルアイスと,ソルベ ドンペリニヨン(「高級シャンパンアイス」という名前で売っていた)を食べてみた.醤油アイスは味が濃くて途中で食べる気力が大きく減退.ソルベのほうは,さっぱりした味で,かなり美味しかった.

とはいえ,アイスよりも,同じくマーケットプレースにあるカフェ デュ モンドのベニエ+アイスチコリコーヒーのほうが幸せのような気がしなくもない.

ついでで見に行ってみたサントリーミュージアム天保山では,「GUNDAM - 来るべき未来のために」という展示をやっていた.ニュータイプ適性検査とかいうものもやっていたが,さすがにそこまで興味もないので受けず.


2006-07-16

_ [読書] オブジェクト指向設計の経験則?

ACM のサービスでタダで読める範囲で見つけた Arthur J. Riel: Object-Oriented Design Heuristics を読み始めてみた.

2〜3章を読んだ限りでは,「余計なインタフェースを付けると,それだけ複雑になり,利用しにくくなる」といった,「比較的良い」設計の指針が提示されている.

オブジェクト指向をやり始めの人向けなのか,オブジェクト指向の基本概念の解説や,従来の手続き型言語でのプログラミング(この人は Action-Oriented と呼んでいる)との比較にもかなり分量を割いている.挙げられているのはよく知られている指針ばかりだけど,それぞれ具体例を出しながら「こう直したらいいよ」と解説してるので,かなり親切で読みやすい.

設計の問題のいくらかは,悪い設計を選んでもあまり全体には影響がないが,クラス数の増加(proliferation)の問題だけは違う,といったことが書いてあったので,まだ少し読み進めてみることにする.


2009-07-16

_ [近況] 論文の最終原稿作成における注意点

論文集の出版の仕事をやって色々 PDF の扱い方を覚えてきたので, ちょっとカメラレディを投稿する側が余計なトラブルを 回避するための方法をメモしときます.

Adobe Acrobat を使う. フリーソフトウェアである PrimoPDF で作られた PDF は, 通常の用途(単に PDF を作成,公開し,表示・印刷するだけの場合)には まったく問題なさそうなんですが, Acrobat を使ってヘッダ追加 & 複数の PDF を結合,というように 処理を重ねていったときにエラーが出やすいようです. 1段階ぐらいの加工ではエラーが起きなかったので, たぶんほとんどの用途では問題ないツールだと思いますが, 加工段数が多くなったときに突然エラーを出すようになりました. この辺の原因は詳しくは分析してませんが, Acrobat などで作られた PDF と連結していったせいかもしれません.

図をグレースケールにする. Acrobat Professional の「アドバンスト」メニューにある 「プリフライト」機能を使うと, 図がグレースケールになってるかどうか検査し, なっていなければ修正(フィックスアップ)を適用することができます. 出版工程で適当に誰かがグレースケール変換かけますし, 多くの場合はそれだけで大丈夫なんですが, 手元で確認しておいたほうが安全だと思います.

最小フォントサイズに注意する. フォントサイズが非常に小さい図について, 出版社からエラーが起きると指摘されました. エラーが起きた文字以降の原稿がごっそり消えてなくなるので, かなり致命的なエラーです. 情報処理学会の論文誌スタイルの場合,いわゆる添え字(「a_1」)系か 参考文献の番号あたりが最小の4.9ポイントぐらいに相当するようで, これを下回るような微小な文字は危険だと考えておいたほうがよさそうです.小さい文字の出現は「プリフライト」の「デジタルプリンティング」などで列挙してくれます.

フォントを埋め込む. 埋め込んでおかないと,編集者の環境で勝手に違う フォントに変わる可能性があります. 多くの場合は問題にならない程度の変化ですが, フォント置換の結果,見た目が違うと苦情が出るのは 出版側の人として心配になりますので, フォント埋め込んでおくほうがお互い安心だと思います. Acrobat の場合,「印刷」を選んで,Acrobat PDF を 出力する設定を選び,「プレス品質」などを選べば, 普通のフォントは埋め込んでくれます. 変なフォント使ってるとライセンス違反の可能性があるので怖いですが…….

日本国内の場合,A4 サイズであることを確認する. ついうっかり Letter サイズで作っちゃうことがありますので気をつけましょう. どちらかというと,国際会議で Letter 要求されているのに A4 で出してしまうことのほうが多いかもしれませんけど.