Home > Archives > 2007年01月

2007年01月

Fortress つづき

fortress スクリプトのクラスパスがおかしい(revision 89).手動で直せということか? ここら辺全部まとめて ant のタスクにしてくれたほうが使いやすいのだが… とりあえず syntax expander を求めてソースをさかのぼる.

Fortress@Windows は要修正

Windows 環境で Fortress 動かそうとしたら二回目の実行でこけることが判明.何が悪いのかとエラーメッセージを見てみたら,ライブラリの AST (FortressLibrary.jst) の読み込みに失敗しているらしい.まだまだ開発途中らしくライブラリのソースをパースした AST を *.jst に吐き出しておいて,次回以降の実行で再利用する仕様らしい.この*.jst には元のソースのファイル名も出力されるのだが,このファイル名が少々問題となっていた.

具体的には, Windows のファイル名には \ が含まれるため,パースに失敗する.解決としては \ をちゃんとエスケープすればいい.ライブラリの読み込みの処理を追っていくと

 com.sun.fortress.interpreter.driver
 com.sun.fortress.interpreter.nodes

あたりのクラスが関係していて

 Libraries#link -> Driver#writeJavaAst -> Printer#dumpSpan -> Span#appendTo -> SourceLoc#getFileName 

となっている.SourceLoc#getFileName の返すファイル名を Span#appendTo が出力しているので,この部分でエスケープをいれてやればいいはず.ということで,

            w.append("\"");
            // Need to add escapes to the file name
            w.append(begin.getFileName());
            w.append("\"");
            w.append(",");

            w.append("\"");
            // Need to add escapes to the file name
            w.append(begin.getFileName().replaceAll("\\\\", "\\\\\\\\"));
            w.append("\"");
            w.append(",");

にしてやってとりあえずの問題解決を図った.

Fortress を落としてくる

http://fortress.sunsource.net/ にてソースが公開された Fortress のソースをダウンロード.初めて Subversion を使用した.ダウンロードするだけなら guest のアカウントで落とせるとのことなので,

svn checkout http://fortress.sunsource.net/svn/fortress/trunk fortress --username guest

でパスワードは空で落とせる.とりあえずライセンスは BSD らしいのでどうとでもいじれる.

んで,何も考えず eclipse でプロジェクト開いたらエラーだらけ.500個超えてた気がする.どうやら一部のソースファイルをプログラムで生成するらしく ant 使って

 ant clean compile 

としてやらないとダメらしい.READMEにこのコマンド書いてあったけどふっ飛ばしてた.とりあえずコンパイル終わったので一休み.

CVS でHEADのバージョンと更新日付を一覧表示なスクリプト(無用?)

cvs でどのファイルが最近更新されてバージョンがいくつなのかを見やすく一覧表示したかった.というより,HEAD のやつと一個前のバージョンとの diff をうまく取る方法を知らんのでこんなことをしてみたくなった.ということで何も考えず次の一行が出来上がった.

cvs log  | awk 'BEGIN{ form = "%-20s %-10s %-20s\n"; printf form,"name","head","date"; } /Working file/{ p = $3} /head:/{ h = $2; cnt=0;} /date:/{ d = $2; if (cnt==0) { cnt = cnt + 1; printf form,p,h,d;}}'

cvs の出力の整形の仕方とか絶対あると思うのだけど… 調べるより書いたほうが速いに違いないと思ってみる.

クラスタの調子が…

実験用のプログラム書いたのにクラスタの一部のマシンの調子があまりよろしくないみたい.特定の部分のマシンを入れると実行時間が極端に変化する.やっぱりマシンの元気度を測るためのプログラムを一回作るべきなのだろうなぁ…

Haskell ではまる

existential type でバインドされてて外側からは見えない型が二つあって,それらが同じ型である場合しか考えたくないのだがコンパイラにはそんなこと分からず… 動かん.そこの型を明示的に持てばこの部分だけは問題解決するが他の部分で… とりあえず計算のシミュレートさえ出来れば良いのでトリックでごまかす.

Home > Archives > 2007年01月

Search
Feeds

Page Top