カテゴリ:Java


2010年03月14日

Java 6 をインストールすると、SiI3124 SATARaid5Manager が動かなくなる。

久しぶりの技術ねた。ただし備忘録w。

SiI3124系ハード(玄人志向SATA2RI4-LPPCIなど)に付属するSATARaid5Managerは、インストールする際、Java 1.5 のランタイムを一緒にインストールする。

しかし、これとは別にJava 6など最近のランタイムや、Java 1.4.2 など古いランタイムをインストールすると、特にWindowsなどで動かなくなることがある。

これは、SATARaid5ManagerがJava のバージョンに依存していて、デフォルトランタイムがJava 5以外のものが使われるようになるために動かなくなる様子。

この場合は、SATARaid5Managerを実行する場合には、必ず Java 5 を使うようにしなければならない。

私はbatファイルを作成して、

"\Program Files (x86)\Java\jre1.5.0_05\bin\java.exe" -jar SATARaid5Manager.jar

これをキックするようにした。

Posted by masamic at 13:03 [Java, パソコン・インターネット, 科学・技術] | 固定リンク | コメント (0) | トラックバック (0)


2006年03月27日

Asahi.comの昨日の記事「電子政府も「縦割り」弊害 同一パソコンで申請不可」

久しぶりのエントリです。いろいろ忙しかったもので。

あぁ、ついに新聞にも出たねぇ。
http://www.asahi.com/digital/internet/OSK200603260013.html
※リンクはこのエントリ以降に切れてしまう可能性があります。

新聞の内容に関係する話を「入院日記:36日目」で書いた。一年近く前の話だ。
実はすでにそのときから、JRE: Java Runtime Environment のバージョン問題があって、同時に使えないことはわかっていたのだけれど、あえて当時の記事には書かなかった。

なぜかというと、JREに関してはアプリケーションのアップデートで、いずれ是正されるだろうと思っていたからなんだけど、いまだに是正されていないなんて…。

「相変わらずだねぇ」って言いたいです。

Posted by masamic at 09:03 [Java, パソコン・インターネット, 経済・政治・国際] | 固定リンク | コメント (0) | トラックバック (0)


2006年03月11日

体調非常に悪し。しかし、Board Game TV第一弾の編集は佳境に。

ここ2~3日原因不明な疲れがあって、会社に出社できていない。今日も朝目が覚めるもあまりに強烈な疲労感で昼まで起きれなかった。何なんだろう?原因が分からないので対処のしようがない。とりあえず、早く寝て疲労感が消えるころに定時出社ができるようにするしかないようだ。

とりあえず、仕事がらみで、寝ながら使用フリーソフトのコード調査などをするが、利用しようと思っていたImageIOのプラグインがプラグインとしてはちゃんと完成していないことが分かった。残念だ。一応プラグインとしてでなければ使えるので、公開した本人もそのような使い方しかしていなかったのではと思っている。とりあえずその方向で行くことにしようと思う。しかし、今度はImageIOでBufferedImageをjpeg形式で出力する際、スケーリングするとうまくいかない(壊れているとのたまう)のが謎だ。
何ででしょう?

編集中だった Board Game TV の第一弾の編集がほぼ終了。関係者にチェックをお願い中。今月中には出せることがほぼ確定。もうすぐ公開するからね。派手さはないけどお楽しみに。

Posted by masamic at 17:03 [Java, ボードゲーム, 心と体, 映画・テレビ, 自主制作] | 固定リンク | コメント (0) | トラックバック (0)


2006年03月08日

パフォーマンス改善検討中、そして家の掃除

例のものはパフォーマンスを少しでも改善できないか検討中。どこまでマシになるか。
PDFを通常のイメージで取得するフリーなJavaライブラリは無いような感じ。これは諦めるしかないのか?

で、家に戻って、部屋の掃除。
とんでもなく散らかっていたので、掃除をする。まだ終わらない。まず、ゴミ袋を探さなきゃ。w

で、土曜日はBフレッツ・光プレミアムの導入のためのNTTによる事前確認がある。そのための掃除だったりする。
しかし、うちはアパートなので、全戸に導入できるようになるかは、この確認が終わってから、管理会社に確認する手順になっている。実際に工事するときは、いろいろな機器を屋家に設置しなければならないこともあり、当然電話とインターネットは一時的に使えなくなる。

はてさて、事前確認して、どれくらいの待ち期間で工事に入れるか…。申し込みからここまでくるのに半年かかっているからなぁ。

Posted by masamic at 21:03 [Java, パソコン・インターネット, 仕事, 住まい・インテリア] | 固定リンク | コメント (0) | トラックバック (0)


2006年03月07日

動いたけど、パフォーマンス悪すぎ

予想してはいたが、これほどパフォーマンスが悪いとは。

あんまし手を出したくなかったけど javax.imageio を使うかなぁ。
少なくとも PDF を標準グラフィックイメージに変換する処理以外はJavaのコードだけで完結できる。
もっとも、一番オーバーヘッドが大きいのはそのPDFから標準グラフィックイメージ変換なんだが…。

一応、MPL/LGPLでフリーのPDF操作ライブラリ「iText」が存在するんだが、商用目的でどこまで使えることやら。

どうするかなぁ。ま、今でもGPLの外部コマンドを使用しているのでMPL/LGPLライブラリの使用は大差無いか。

Posted by masamic at 20:03 [Java, 仕事] | 固定リンク | コメント (0) | トラックバック (0)


2006年03月06日

う~ん、うまくいかない。

イメージフォーマットを変換するライブラリ(外部プログラムとしてNetPBMなどを使用)を作ったが、システムと結合してみるとうまくいかない。

どうもフルパスファイル名とかに空白が入っていると面倒なようだ。

とりあえず、フルパスファイル名をクオートしてやればいいとは思うけど、うまくいくかな。

Posted by masamic at 19:03 [Java, 仕事] | 固定リンク | コメント (0) | トラックバック (0)


2006年03月03日

いまさら聞けない Java 2D :-D

ということで、初めて Java 2D を使うことになった。Java 2D の書籍って最近のものはほとんどないのね。

Java Developer Connection (JDC) で API は見れるから、つらつらと見ていたが、AWT と Java 2D の関係が今ひとつ分かりにくかった(たとえば、getGraphics() は Graphics クラスを返すが、どうやったら Graphics2D を得られるか)。

手元にある資料でいろいろ調べてみると、AWT も Java 2 になった時点で、Java 1.1 と互換性を保ったまま Java 2D を中心に書き換えられている(つまり、getGraphics() は互換性の関係で Graphics クラスを返すが、実際はそのサブクラスである Graphics2D クラスが得られる)ようだ。

これだけ分かれば、後は何とかなるか。

Posted by masamic at 23:03 [Java, 仕事] | 固定リンク | コメント (0) | トラックバック (0)


2006年02月23日

Windowsのstdin/stdout/stderrはキャラクタモード

のため、JavaのProcessクラスのgetInputStream他で取得したStreamにバイナリデータを流すのはうまく行かないらしい。

う~ん、どうしたらいいんだろう?どうやったらバイナリモードに変えられるのか悩ましい。調べてはいるがなかなか答えは見つからない。

Unix系OSではstdin/stdout/stderrはバイナリモードなので、それはそれで大変なこともあるんだけど、今回はテキストモードなのが問題だ。

Posted by masamic at 21:02 [Java, プログラミング, 仕事] | 固定リンク | コメント (0) | トラックバック (0)


2006年01月30日

今日も眠かったが、少しは案がまとまってきた。

やっぱ絵に描くと格段に解りやすくなるね。

フリーで商用開発できるECLIPSE+UMLツールというのがなかなか無いので、単体のUMLツールを使うか。
最初は手書きのラフな図でブレインストーミングみたいなことして、ある程度まとまったら、ツールで図を描きAPIを確定する。

いきなりコードを書くのはこういった場合は良くないみたいだね。いくら昔自分で設計したからといっても、既にパラダイムシフトした環境にいる今のAPIは、当時とはかなり異なることは間違いない状況だから、実質リファクタリングしているようなものか。細かい描画(表示)仕様はほとんどそのまま使えるけど。ま、明日中にクラス構成、シーケンスなどを確定して、今週末までにはAPIも確定しなきゃ。

Posted by masamic at 21:01 [Java, 仕事] | 固定リンク | コメント (0) | トラックバック (0)


2006年01月17日

豊沢さんと連絡が取れて嬉しい。更なる数式処理部の高機能化。

実はひそかに狙っていたのだが、豊沢さんがこのサイトの該当エントリに気づいてくださり、豊沢さんと久しぶりにコンタクトを取ることができた。また会いたいと強く思っている人に連絡がついたことは(あっちの気があるわけではないがw)本当に嬉しい。東京に行く機会があったら是非一緒に飲みたいと思っている。

で、別システムでも利用すると思われる数式処理部だが、少しずつ機能を向上させ、他のパッケージとの依存性もかなり少なくなってきた。ただその分、大きな修正も必要で、今はリファクタリングの真っ最中だ。もうちょっとなんだけどなぁ。

さらに、10年前にX-Windowシステム用に自分が設計した汎用グラフライブラリが、仕様レベルで再び日の目を見ようとしている。10年前に作った仕様ではあるが、かなりきちっとオブジェクト指向で設計しているので、ユーザから見ると、APIは実にシンプルにできている。5種類以上のグラフがたった10個未満のAPIで同じように自在に操れる。当然Xイベント処理もサポートしている。たとえばリサイズ処理にも追従してグラフの大きさが自動的に変動する。これまで設計した中でも5本の指に入る自信作だ。しかも、オリジナルはCで実装しているのだからね。今度はJavaでの実装になるので、当然全くそのままのAPI仕様にするわけではない。シンタックスがオブジェクト指向に対応しているのだから、仕様もそれに沿った修正を行う。元の出来が良いので、基本的な考え方はいじる必要はないから、使い勝手も悪くはならないだろう。現実に実装されるのが楽しみだ。

Posted by masamic at 21:01 [Java, LISP, 日記・コラム・つぶやき] | 固定リンク | コメント (2) | トラックバック (0)


2006年01月11日

数式処理部に関数定義機能追加か?

以前やってたプロジェクトの数式処理部を今度のプロジェクトでも使う可能性が非常に高いこともあって、数式処理部の機能向上を行っている。前のプロジェクトで利用された数式定義を見ていると、どうも簡単な関数定義機能があると、もっと使いやすくなりそうなことが判明。

で、今の計算処理部計算定義ファイルのフォーマットに互換性を持たせたまま関数を定義する機能を付け加えることにした。

関数定義名はマングルして、「関数名」+「(」+パラメータ数で行くつもり。型チェックはしない。
例)test(i,j,k,l) ⇒ test(4

式のほうはAtomクラスを継承して、Funcクラスを作り、これに、S式とパラメータ関連の情報(定義名での関数パラメータの出現順とそのパラメータの名称および、関数が呼び出された時の値を管理。例)i,j,k,l)を持たせる。

未だ詳細なAPIの調整ができていないので、本当にうまく動くかはやってみないとわからんけどw。ま、なんとかなるっしょ。

Posted by masamic at 20:01 [Java, 仕事] | 固定リンク | コメント (0) | トラックバック (0)


2006年01月09日

Java 5 Tiger の拡張for文の挙動を調べる

mixiで話題が出てたので、自分でもチェックしてみた。

Java5 Tiger では、他の言語で実装されている foreach 文に相当する文が for 文に組み込まれた。

文法的には以下のようになる。

for (TypeOpt Type Ident: Iterable-Instance) {
  Statements
}

となる。例としては、

List<SomeClass> list = new ArrayList<SomeClass>(...);
for (SomeClass obj: list) {
  obj.doMethod();
}

と書く。

mixi内での調査を読むと、使いやすい反面、ある機能が無いと困るといった記述もあり、具体的にどうなのか、ちょっと調べてみた。

基本的には仕様上やむをえない問題で、for と foreach と同じように分けて考えるべきだというこのが多数の意見のようだ。

しかし、実際にコードを書いてみると、確かに(仕様には書かれていない範囲で)腑に落ちない点もあり、問題がないともいえなくはない。いずれは解消されるといいのだけれど。

Posted by masamic at 20:01 [Java] | 固定リンク | コメント (0) | トラックバック (0)


2005年11月17日

今日も仕事の話

いいネタがないだけなんだけど。

まあ、作業も佳境に入ってきて、のってきたということもある。

とは言ったものの、自宅からVPNで社内LANに入ってもCVSリポジトリをいじれないのがちょっと不満、今日明日あたりにはできる様になるらしいけど。

後で試してみよう。w

Posted by masamic at 22:11 [Java, 仕事] | 固定リンク | コメント (0) | トラックバック (0)


2005年11月16日

javascriptの互換性とjavaの小数点演算の誤差の大きさについて。

う~ん、昨日上げた画面は予想に反して、IE6では動作しないという、自分自身が情けなくなるようなバグ票がきた。

確かに、IE6では確認してませんでした。全面的に私が悪い。

ここ最近の顧客が研究所がらみが多くて、IEなんて使っている人が皆無だったから、すっかり眼中に入っていなかったけど、今度の開発は「パッケージ商品」であり、8割以上の利用者を占めるIEを無視することは絶対に出来ない。なので、試行錯誤した結果、何とか両方で動作するjavascriptコードがかけた。

webアプリを開発している人の苦労の一端を垣間見たよ。

後は仕様に載っていない事項だが、利用者の利便性を考えると当然修正する必要があるものだ。簡単に直るものもあれば、少々コードを書かなければならないものもある。まあ、「障害じゃない」から。最優先ではないけれど、今月中にはfixしておきたいところだ。

それと計算処理で、ちょっとした小数点演算でいきなり大きな誤差が出るのには参った。高々10個程度の0以上1未満の少数(しかも小数点以下1桁)の足し算だぞ。まあ、2進数的には小数点以下の値の扱いは厄介なの十分理解しているが、この問題をまじめに対処すると大掛かりなことになる。

結局、10のn乗をかけて小数点以下をround関数で丸めてまた10のn乗で割るという、これ以上ありえないほどの手抜きをして対処した。最初はもうちょっと凝った対処をしようと思ったけど時間がかかりそうなので…。ま、これで大丈夫だといいけど。実のところちょっと心配。ちゃんと誤差を考えて計算すればいいのだろうけど、現実には任意の計算を許しているので無理。せいぜいround関数を提供してやるくらいしかない。この辺は計算式を実際に書く人に気を遣ってもらおう。

計算処理部はとりあえず、デフォルトでは、最終的に小数点以下1桁まで丸めて、値を返すようにした。デフォルト値は任意に変更可で、いつも使う関数に丸める桁位置パラメータを追加してやると、そのときだけ任意の桁で丸めた結果を得ることが出来るようにした。これで一応十分だろう。

ということで、いよいよテストチームからの障害対処もしなければならなくなってきた。正念場だ。

Posted by masamic at 20:11 [Java, 仕事] | 固定リンク | コメント (0) | トラックバック (0)


2005年11月15日

やっと一画面完成

やっと一画面間完成した。何のことはない画面だが、ほとんど仕様がないに等しいし、独自なWebフレームワークのドキュメントもないし。ほとんど試行錯誤しながらの作成なので、ずいぶんと時間がかかってしまった。しかも仕様検討者との口頭レベルでの合意仕様になっているため、ドキュメントに残された仕様とは違う動作になっているw。いいんかそれで。後のテスト工程でバグ票になって帰ってくるか、その前にテスト実施担当から事前に仕様確認があるかもしれない。また、いくつかクリティカルでない既知の問題点も残っているので、これらはいずれ対応する必要があるだろう。

明日からは、あと一画面(厳密にはモードの違いで2種類の表示方法があるので、実質二画面)の残りの作業を終わらせなきゃ。提供されているデータモデルクラスに、どうデータを持たせればいいか悩む。お世辞にも良いクラス設計とは言えない。いろいろ話して、取り繕うことは出来そうだが、設計が良くなるわけではないのがつらいところ。自分か設計したところではないため、直接手が出せないのが悩ましい。つーか、全体構造を把握しきっていないので、逆に手を出す方が危ない。設計した人(相談相手)も別にデザインパターンならちゃんと知っているレベルの人なので、今の設計が今ひとつ使い勝手が悪いことは理解しているようで、ちょくちょく手直ししてはいるようだが、さすがに抜本的に手を入れるのは難しいんじゃないかなぁ。出来たら神。

ラムダ計算の出来ないLISPもどきといったつくりの計算処理部は、結局「分かち書きをする」という制限をつけることで合格できそうだ。いつか時間があれば、きちっとした(分かち書きなしの)中間記法⇒S式パーサを書きたいものだ。多分、フリーで作成中のflisp-jでのパーサで実現できるだろう(実現したい)。

Posted by masamic at 22:11 [Java, LISP, 仕事] | 固定リンク | コメント (0) | トラックバック (0)


2005年11月11日

体調が悪い

ここ最近体調が悪い。どうも風邪を引いているようだ。巷でも風邪がはやっているようだ。土日は予定もないし、ゆっくり養生しますか。

仕事のほうも若干遅れ気味ながら着々と進んでいる。特に無理をせずに作業は出来ているが、ほかの同僚に若干負担が大きいのが、申し訳ないような。とはいっても自分も無理は出来ないので、仕方ないんだけどね。

計算処理系の問題はやはりS式の取り扱いに一貫性のない部分があって、Consリスト以外は基本的にAtomとするように整理したら、ちゃんと動くようになった。よりLISPに近づいたわけだw。単体レベルのリグレッションテストでJUnitを使っているので、多分品質は以前より悪いということはないだろう。

Posted by masamic at 21:11 [Java, LISP, xUnit, 仕事, 心と体] | 固定リンク | コメント (0) | トラックバック (0)


2005年11月10日

計算処理部に思わぬ不具合が見つかった。

想定外だったのと、ここ2~3日体調が芳しくないことで、修正作業がはかどらない。
今日もゆっくり寝て、明日は、昨日の修正前の時点まで戻って、再度検討してみよう。

やっぱかなり中途半端なS式実装になっていたので、もう少しキチッと実装するかなぁ。

Posted by masamic at 19:11 [Java, LISP, 仕事] | 固定リンク | コメント (0) | トラックバック (0)


2005年11月01日

昨日のいろいろ

計算処理部はそこそこきれいに書き直すことができた。まだかなり効率化の余地はあるが、まあ、パフォーマンスが気になりだしたら考えれば良いだろう。私が対処できない場合に備えて、コメントくらいは書いておくかな。

TP-X40のリカバリーディスク発注完了。3営業日くらいで届くそうだから、金曜日くらいには手に入るだろう。
リカバリ作業は実家でするのか?今週の後半はいろいろと忙しい時期。作業できるかなぁ。今のうちから準備しておくのが吉か。

ここ最近、同僚の仕事場に出没して、ついつい長話をしてしまう。ちょっと悪いかなぁ。趣味的には、私の趣味セット(S)と彼の趣味セット(S')が大きく交わっているわけではないのですが、共通項(S'')から派生する話題が多くて、話が長くなっちゃうんだよね。しばしば邪魔してすまんねぇ。

Posted by masamic at 10:11 [Java, LISP, パソコン・インターネット, 仕事, 文化・芸術] | 固定リンク | コメント (0) | トラックバック (0)


2005年10月28日

計算処理部の大幅書き換え

計算処理部に要求を満たせない項目が見つかったため、コードを大幅に修正している。比較的使いやすいStreamTokenizerを大幅に取り入れた。メソッドの分割などで、かなり、すっきりとした記述に書き直りつつある。単体テスト(コードを書いた)レベルでは今までどおりすべてのテストコードが正常に動作しているので、残るは、懸案となった部分の処理だけだろう。

Posted by masamic at 23:10 [Java, LISP, 仕事] | 固定リンク | コメント (0) | トラックバック (0)


2005年10月25日

なんとなく様になってきた。

(バックグランドではLISPもどきで動作している)計算式処理部も順調に動いているようだ。その他担当画面も少しずつ形を成し始めている。その中の計算処理もちゃんと動いている。後は分かち書きしなくても良い様にシンボルとして使用できる文字を制限してやる必要があるようだ。

式定義ファイルでの式の定義で、式を複数行に渡っては書けないような仕様にしていたのはまずかったな。
自分もそれを痛感し始めていたところ、ちょうど同僚の開発者からも対応依頼が来た。

トークナイザに StreamTokenizer を使っているので、式の終了に 「;」 を指定しなければならないように仕様を変更し、改行は空白として認識するように3行ばかしの修正で対応できた。StreamTokenizer 結構使える。

Posted by masamic at 21:10 [Java, LISP, 仕事] | 固定リンク | コメント (0) | トラックバック (0)


2005年10月15日

FLISP-J: 関数定義特殊フォーム "de" をついか。

関数定義特殊フォーム "de" を追加したので、純粋にLISP形式の関数定義が出来るようになった。
まだ、S式はJavaで構築しないといけないが、早く文字列からS式を構築できるようにしないと…。
とりあえず、

S式表現) (de func (x) (+ x x))

をevalすると関数funcが定義される。Javaでは、S式を書くのはちょっと面倒。
アトム func には値として、S式: (LAMBDA (x) (+ x x)) が ConsセルとAtomで書かれている。

で次のS式表現) (func 2)

をevalすると、4.0 (もちろんアトム)が得られる。

Posted by masamic at 00:10 [Java, LISP] | 固定リンク | コメント (0) | トラックバック (0)


2005年10月12日

FLISP-J なんかおかしくなっていたのでちょっと修正

というか、どう修正しようとしていたか忘れていたのと、設計上おかしかったところとかを別に修正しようとしていたから、ごっちゃになっちゃっただけなんだけど。ずいぶんと修正に手間取ってしまった。

通常のS式はリストの中をサブリストも含めてツリーウォークで順に評価していけばいいんだよな。quoteオペレータや一部のスペシャルフォームと呼ばれるオペレータ群はちょっと扱いが違うみたいだけど。

Schemeなどで見られる継続を実装するのはちょっと厄介だなぁ。

Posted by masamic at 23:10 [Java, LISP, プログラミング] | 固定リンク | コメント (0) | トラックバック (0)


2005年09月30日

そろそろ画面を…

(正確にはHTMLをJSPに吐かせたり加工するためのクラス)を書かなきゃ。数式処理のほうはテストもだいぶ進み、バグも減ってきたので、ドキュメントの整理などが重要になってくるけど。あ、数式定義で別の数式くらいは指定できたほうがいいかなぁ?ちょっと考えてみるか。画面関連クラスを作っている合間にでも。

で、Free Lisp Library for Java のほうも、そろそろ S式 くらいはパースせんと遺憾よな。

Posted by masamic at 21:09 [Java, LISP, 仕事] | 固定リンク | コメント (0) | トラックバック (0)


2005年09月29日

今日は会社を休んだがFLISP-Jは進展あり。

どうも、全体的に調子良い所為か、ついつい体の疲れを忘れて夜遅くまで何かやってしまう。精神的にはきわめて順調なのだ。その所為かついつい体の疲れがたまり、今日はついに休んでしまった。

いかんよなぁ。うつ病克服での本当の最後の難関なんだよなこれが。

とか何とか言いつつ、自宅で横になりながら、FLISP-J: Free Lisp Library for Java のコードを書いてたりするから遺憾のだろうな。

で、その FLISP-J は、一応やっとラムダ式を処理できるようになった。これが出来ると今度はLISPレベルでの関数の定義が出来るし、関数の戻り値として関数(およびラムダ式)を返すことが出来るようになる。

そろそろ、ユーザーインターフェース(シェル)か、文字列で書かれたS式を内部モデルに再構成する処理を書かなきゃ、テストコードを書くのも大変だ。

今日はこっちの作業が進んだから、今日は早く寝れそうだ。いや早く寝よう!(を

Posted by masamic at 18:09 [Java, LISP, 仕事, 心と体] | 固定リンク | コメント (0) | トラックバック (0)


2005年09月28日

単体テスト

あぁ、やっぱプログラマからの立場から考えるとついつい甘くなっちゃうなぁ。

ちょっと意地悪なフォーマットの文字列とか与えんとダメだね。
そこまで意地悪くしなくても、結構いいコードのデバッグと最適化は出来るんだけどね。
いかんせん能率が悪い。詳細設計書なんて無いしw。テストコードが詳細設計(&テスト仕様)書だから。
でも JUnit の使い方もほとんど解ったし、何とかなるでしょ。

Posted by masamic at 19:09 [Java, xUnit, 仕事] | 固定リンク | コメント (0) | トラックバック (0)


2005年09月18日

FindBugsをつかってみる

書店で、日本語書籍で「「標準FindBugs - 開発のプロが教える デベロッパー・ツール・シリーズ」宇野るいも/arton著 ASCII ISBN4-7561-4655-4」を見つけた。
Java用のバグパターンを指摘してくれるツールだ。すごく単純に云うとlintをもう少し賢くしたツールだ。一応eclipseプラグインもある。

Web上のドキュメントには日本語のものもあり、とっつきやすいだろう。

とりあえず、eclipseプラグインをインストールして使ってみる。結構いろいろと指摘してくれる。いい感じだ。中には意図的にそうしているのまで指摘されるが、まあこればっかりはどうしようもあるまい。

お試しあれ。

Posted by masamic at 23:09 [Java] | 固定リンク | コメント (2) | トラックバック (0)


2005年09月17日

FLISP-J: Free Lisp Library for Java

FLISP-J: Free Lisp Library for Javasourceforge.net にコミットした。

sourceforge.net における本プロジェクト名(unix名)は "flisp-j" になった。
当面は一人でメンテするし、さっきコミットしたやつもまだほとんど動作しないし、anonymous cvs co や Browse CVS ももう数時間しないと出来ない。

ということでおやすみなさい。

Posted by masamic at 00:09 [Java, LISP] | 固定リンク | コメント (0) | トラックバック (0)


2005年09月16日

数式処理部ほぼ完成

仕事で作っていた数式処理部の数式定義ファイルの読み込み処理のコーディング(単体テストを除く)が終了した。結構 java.io.StreamTokenizer が役に立った。

面倒くさい文字列(クォーテーション)の処理とか、コメントのスキップ処理がほとんど省ける(StreamTokenizerがほとんど自動的にやってくれる)のがいい。

javaの場合にはプロパティファイルを使うのが一般的だが、今回は、数式定義ファイルをXMLとかには詳しくない人が書く場合もあるので、古典的な定義ファイルのフォーマットで無ければならないのと、動的(システムを停止せずに)に定義を変更したい場合も考えられるのでプロパティファイルは使えなかったので、いいクラスが見つかってよかった。

あとは外部向けの定義ファイル記述仕様ドキュメントと、内部用ドキュメント、単体テスト用のコードとそれ以外のまだ実装していないがさして難しくなく、かつ必要に応じて書く程度のコードを追々やっていくことになるだろう。

とりあえず大きな区切りは付いた。

Posted by masamic at 22:09 [Java, 仕事] | 固定リンク | コメント (2) | トラックバック (0)


2005年09月15日

java.io.StreamTokenizer

java.io.StreamTokenizerは結構便利。まだ、動作の詳細は理解していないけど。コメント文字はクォーテーションでくくられた場合はちゃんと通常文字として認識するんだろうか。

あした、確認して見よっと。

それよりも Free Lisp Library for Java のコード書きたいけどここ最近寝不足なので、今日はそろそろ寝よう。

Posted by masamic at 21:09 [Java] | 固定リンク | コメント (0) | トラックバック (0)


2005年09月14日

Sourceforge.net にプロジェクト申請

今作っている Free Lisp Library for Java を OSI認定プロジェクトとして、sourceforge.net日本語版もある)に申請してみた。
申請結果は2日くらいかかるようなので、少し待たなければなりません。

おそらく正式なOSIプロジェクトとして認定されなくても、Sourceforge.net自体の利用は出来るはずなので、ま、問題は無いでしょう。

Sourceforge.netはバックアップまでしてくれるフリーのソースコード管理システムを提供してくれるので、重宝します。

Posted by masamic at 23:09 [Java, LISP] | 固定リンク | コメント (1) | トラックバック (0)


2005年09月13日

Free Lisp Library for Java(その2)

最も単純な式のevalは動作した。式のオペレータはjavaのリフレクション機能で、Javaのstaticメソッドにバインドされている。これで、基本的な動作は出来るはずだ。あとはLisp自身で定義した関数の実行だろう。このためにはlambda式の処理が必要で、大きな機能でevalに残っているのはこの処理だ。lambda式の処理をどう実装するかが鍵だろう。

それが終われば、文字列で書かれたS式のConsリスト及びAtomへの変換処理、AtomListの管理、envListの管理(これはlambda式で使うので、先に実装することになるかもしれない。)処理を追加すれば、Lispの核は完成だ。

これに、シェルを付ければ、最低限LISPインタプリタの体裁は整う。

もう少しだ。

Posted by masamic at 23:09 [Java, LISP] | 固定リンク | コメント (0) | トラックバック (0)


2005年09月10日

Free Lisp Library for Java

ちょこっとだけ進展。

といってもアンチョコ(「CプログラムブックIII - Lisp処理系の作成 -」 小西弘一/清水剛・著 アスキー出版局 ISBN4-87148-200-6)を見つつ、Will o'Lispの実装を勉強しているわけだが。

やっぱ、(オリジナルに近いという意味での)正統系Lispなら、Deep Bindingな環境リスト方式だよな。うん。

Posted by masamic at 23:09 [Java, LISP] | 固定リンク | コメント (0) | トラックバック (0)


2005年09月08日

JUnitで単体テストの自動化

ということで、使いたいと思いながら長らく使う機会がなかったJUnitを本格的に使う機会に恵まれることになった。

ここ何年も既存ソフトの改造とかの仕事が多かったので、まともに単体テストスイートを使えるようなコードが少なかったせいもあるけど、「今頃かよ!」という声が聞こえてきそうだ。

でもやっぱ楽やねぇ。テスト技法の基礎に則ってきちんとしたテストコード書いておけば、ターゲットコードの修正による挙動の変化を検知できるし、IDE(たとえばEclipse)を使えば、リビルド毎に自動的にテストしてくれるので、ホント良いわ。まあ、makeとかAntとかでも同じことは出来るけど。

まあ、中間記法からS式への変換処理およびS式の生成・操作・評価・管理処理のテストなので、テスト項目自体はあまり無いのだけれど、それでもずいぶんと楽になった。

本来なら、テストファーストでテストプログラムを先に書きながら、ターゲットコードを書いていくのだけれど、そこまでは出来なかった。それでも、テストコードを書くことで仕様も明確になるので、テストコードを書いてテストしていくにつれ、ターゲットコードの質も結構上がってきている。いいことだ。

と、かなり楽しんでいるので、FORTHの移植とか、Free Lisp Library for Java とか進まなくなってきた。orz

Posted by masamic at 21:09 [Java, xUnit, 仕事] | 固定リンク | コメント (0) | トラックバック (0)


2005年09月06日

台風来襲、自宅で作業

台風14号が九州に一番被害を及ぼすルートを通過中です。

このため、熊本では、朝はそれほど風雨は強くはなかったのですが夕方からの吹き戻しを考えて、本日は自宅作業としました。

ネットワーク環境は万全であるのと、ソース管理システムが外部にも見えるようになっているので、自宅からチェックアウトして、修正、コミットしています。ただ、ディスクの空きが少なく、全体をコンパイルするには容量が足りず、テストが出来ません。残念。

なので、もっぱら、ドキュメントやコメントを書き足しています。

あと、せっかくなんで free lisp library で書いているコードから一部コードを拝借することにしましたw。

寝転がりながら作業しているので、時々ウトウトしてしまう。いかんいかん。仕事しなきゃ。

あと、もうちょっとましな食料を確保しておくんだった。orz...

Posted by masamic at 14:09 [Java, 仕事, 旅行・地域] | 固定リンク | コメント (2) | トラックバック (0)


2005年09月05日

フリーLISPライブラリ

ぼちぼちと作成中。

まだまだ、評価関数を書くまでにはいたらず。

台風も接近しているし、ここら辺でおやすみなさい。

Posted by masamic at 22:09 [Java, LISP] | 固定リンク | コメント (0) | トラックバック (0)


2005年09月04日

LISPライブラリ(その後)

う~ん、きちんとしたLISP処理系を作るにはやはりAtom(アトム)をどのように扱うかが大きな問題となる。Consリストはたいした問題ではない。処理系によってはAtomには任意のプロパティを設定できるため、当然Atomクラスを作る羽目になりそうだが…。

果たしてそれが正しいかどうか。

Atomを評価するとAtomが持つ値が得られる。⇒Atomは値を持つ。
(quote Atom)を評価するとAtomそのものが得られる。Atomには名前がある。
(Atom 1 2)を評価すると3が得られる場合、このAtomは+(plus)という関数である。
'(Atom 1 2)を評価すると、(Atom 1 2)が得られる。これは'Atomが(quote Atom)であるのと同じ理由である。

などなど。出来れば初期のLISP(LISP 1.5など)に近い処理系にしたい。拡張はそれからでも良い。

Posted by masamic at 22:09 [Java, LISP] | 固定リンク | コメント (0) | トラックバック (0)


2005年09月02日

中間記法パーサ(その5)

一応きちんと動作するようには出来た。関数もきちんとS式に変換できる。

変換処理では、オペレータの優先順位の処理を除けば、オペレータや関数の処理はせずにそのままS式に変換している。そのため、未定義のオペレータや関数もS式に変換する。

そして、実際にS式を評価(eval)するとき、S式のオペレータ(関数も同じ)はすべてJavaのリフレクション機能でJavaのメソッドを直接呼んで実行している。とはいえ現状ではまだ定義していないメソッドも多い。なので定義されていないオペレータ(=メソッド)を呼ぶと例外が発生する。

しかし、Javaのプログラムが書けるひとなら、必要に応じて簡単にメソッド(=オペレータ)を追加出来るのはいいアイデアだとおもう。

誰も、実際に複数の会社に(それぞれカスタマイズされて)販売されることになる製品の内部で(ラムダ式以外の)S式を処理しているなんて思わんだろうな。

Posted by masamic at 21:09 [Java, 仕事] | 固定リンク | コメント (0) | トラックバック (0)


フリーのS式処理(LISP)パッケージ

探してみるといくつかあるみたいだけど、やっぱ自分で作ってみると面白い。
いろいろとアイデアが浮かんでくる。

オリジナルのS式処理(≒LISP処理)ライブラリ作ってみるか。
やっぱJavaで作るんだからJavaの利点を活用できるような実装したいな。GCはこの際Javaに任せよう。
リフレクション機能でJavaコードとLISPコードを行ったり来たり。
基本的な仕様は会社で作ったものに近いかな。

著作権の関係もあるので、設計から完全に一から作り直してみよう。
もちろん中間記法⇒S式コンバータつきで。

もちろん、ちゃんとLISPコマンドラインシェルも付いて来て単独でも利用できる。

んん~ん、いいかもw。

Posted by masamic at 21:09 [Java] | 固定リンク | コメント (0) | トラックバック (0)


2005年09月01日

中間記法パーサ(その後4)

分かち書きの制限をとる方法は実装できず、とりあえず関数の処理が出来るようにコードをかなり書き直す結果になった。残念ながら、非常に効率の悪いものになってしまった。

やっぱちゃんと設計しないといかんかなぁ。まあ、処理速度化要求されることはあるかもしれないので、高速化は考えておかんとなぁ。

Posted by masamic at 21:09 [Java, 仕事] | 固定リンク | コメント (0) | トラックバック (0)


2005年08月31日

中間記法パーサ(その3)

いやぁ、関数処理部分でちょっと詰まっている。大枠では括弧の処理と同じなのだが、パラメータの処理をしなきゃならない。その分だけ括弧の場合より複雑。

あと、式は分かち書きしなければならない。嫌がる人も多いと思うけど、うまいトークナイザーを思いつかない限りは、我慢するしかないかな。正直に言うと手抜き。と書いたけどもしかしたらいい案思いついたかも。(^^

何とか明日にはできそうだ。

後は…、ドキュメント書かなきゃなw。ログ出力追加しなきゃなw。コメント書かなきゃなw。コードきれいにしなきゃな。w

Posted by masamic at 18:08 [Java, 仕事] | 固定リンク | コメント (0) | トラックバック (0)


2005年08月30日

中間記法パーサ

関数処理部以外はほぼ正常に動作している模様。
想定どおりのS式を出力している。

後は関数の処理か。どうするかなぁ。

Posted by masamic at 16:08 [Java, 仕事] | 固定リンク | コメント (0) | トラックバック (0)


2005年08月29日

中間記法パーサ(その後)

中間記法パーサは結局JavaCCは使わずに自前で書くことにした。書いてはロジックをチェックしつつ進めているが、なんか変なところでNull Pointer Exceptionが発生する。何でだろう。もっとも、まだやっとデータとオペレータをそれぞれスタックに積んでいくところまでしかできてないけど。

明日中には(関数処理部を除く)大枠はできるだろう。

Posted by masamic at 19:08 [Java, 仕事] | 固定リンク | コメント (0) | トラックバック (0)


2005年08月26日

中間記法パーサ by JavaCC

JavaCCをつかってやろうと思っているが、ちょっとクラス作りすぎじゃないかなぁ。

とはいえなんとなく使い方はわかった。基本的にlex+yaccとそんなに差はないのね。
「もうちょっと高機能かなぁ?」と期待したが無駄だった。

現状の要求レベルだと自前でパーサー書いてもいいかも。休みにでもJavaCCでもう少し遊んでみるか。
一応基本は理解はしておかないと、もしものときに使えないしね。

Posted by masamic at 17:08 [Java, 仕事] | 固定リンク | コメント (0) | トラックバック (0)


2005年08月25日

S式(その後4)

このままいくとLISP処理系を完全実装しそうwなので、そろそろ中間記法からのコンバーターや条件判断関数などの実際のシステムとの連携部分の仕様を検討することにする。

ちょっと嵌りそうになったな。遺憾遺憾。

#う~ん、LISPもいいねぇ。

Posted by masamic at 16:08 [Java, 仕事] | 固定リンク | コメント (2) | トラックバック (0)


2005年08月24日

S式(その後3)

cond も使えるようになった。後は必要になったらメソッドを追加すればいいか。
そろそろパーサを書かないとやってられなくなってきたな。

JavaCCでも使ってみるかなぁ。

Posted by masamic at 13:08 [Java, 仕事] | 固定リンク | コメント (0) | トラックバック (0)


2005年08月23日

S式(その後2)

簡単なS式の (+ 1 2 3) とか、(- 8 4 2) とかは、できるようになった。+とか-の実行を実際に行っているメソッドは、スマートにJavaのリフレクション機能を使ってコールしているので、コードは割りと読みやすいと思う。たぶん cond も割と簡単に実装できそう。

もっとリストが重層化している式もevalできるようになるといいかも。今日中にそこまでいけるかなぁ?

Posted by masamic at 14:08 [Java, 仕事] | 固定リンク | コメント (0) | トラックバック (0)


2005年08月19日

S式解釈

探せばあるんだろうけど、Javaで、LISPよりは少し純粋なS式を解釈する処理を試しに書いてみている。データ構造はほぼできたけど、後はパーサーかな。数式の中間記法をS式に変形する処理も入れてみたい。

が、今日はなんかもうすごく眠い。明日にするかな。納車も来週になったし。orz

Posted by masamic at 19:08 [Java, 仕事] | 固定リンク | コメント (0) | トラックバック (0)