Jythonインタプリタの組み込み

朝からJavaプログラミング。リスターのプログラムにJythonインタプリタを組み込む、と言ってもとても簡単。new PythonInterpreter()するだけ。さぁ次は?このサイトのトップページのCGI化を検討中。試しにHTML::Templateを使って見ると、とても使いやすい。いままで知らなかったのが悔しいぐらい。他にも知らないことが一杯あるんだろうなぁ。

PDF出力のリスター

ゆるゆると仕事を始める。

コーディング中、 前に書いたコードのリストを印刷したくなったが、適当なプログラムがないので、随分前に自作したリスターでPostscriptに変換し、Acrobat DistillerでPDFに変換し印刷する。手間はかかるが、プレビューできるし、部分印刷も簡単で便利でもある。テキストを直接PDFに変換するリスターがあれば便利だろうと思い、いろいろライブラリーを調べ、名前をつけるなら普通a2pdfだろうと思ったところで、既にありそうな気がして調べて見るとperlで実装したものとJavaで実装したものが見つかる。ちょっとガッカリして、インストールを試みるが、perlの奴はうまく動いてくれない。うまく動いても日本語の扱いは不明。Javaのやつは作者が日本の方で、日本語もちゃんと変換できるが、使い勝手に不満。ということで、PDFのライブラリを調べるがClibPDFがよさそう。商用利用は有料のようだが、その心配は無い。ダウンロードして展開すると、サンプルもドキュメントも豊富でキレイ。日本語の出力例もある。ということで、リスターを作り始める。まぁ完成しなくてもCLibPDFの勉強にはなるだろう。正月なにもしなかったおかげで、やるきが割とある。

GetGlyphOutlineと戯れる一日

GetGlyphOutlineと戯れる一日。最初フォントの設定をせずハマル。このページが参考になった。日本語を出そうとして再度ハマル。フォントのcodingをSHIFT_JISと指定して解決。夜、テニススクールに行くと休みだった。というか電気が消えていた。休みだったのだろうか?昭和史読了。

TWAINの勉強中

寒い、冬を思い出す。人さし指が痛い。Track Pointの使いすぎ?スキャナーを使うプログラムを作ろうとTWAINの勉強中。

LoadLibrary("c:\\WINDOWS\\TWAIN_32.DLL");

が失敗するのに悩むが、gdbとの相性?gdb下でなければ成功する。
Twain.hにあるVisual C++用(?)のpragma

#pragma pack (push, before_twain)#pragma pack (2)

を、gcc用に

#pragma pack (push, before_twain, 2) 

と書き直す。ちゃんと同じ機能があるのね。

Ming – a SWF output library

Ming – a SWF output library and PHP moduleの存在を知る。Micromedia Flashのファイルを出力するライブラリ。私としてはPerlからも使えるのが嬉しい。いろいろ使えそうだ。でもMinGW – Minimalist GNU for Windows と まぎわらしいなぁ。今日も、ハンダ付けを少々。

Windowsのプログラミング環境整う

このところ、Meadow + cygwinでWindowsのプログラムを作っていて、なんか普通にプログラムを作れるようになった気がする。じゃぁ何作ろう..夜、テニス。暑い。もう夏のテニスだ。バテ具合と汗の量が違う。ゲームは6-5で惜敗。本当に惜しい。でも楽しい。

completion-ignore-case

ひさしぶりにJavaのプログラムを書き始め、とりあえずEclipse-3.02をインストール。Javaのpackageは名前空間を区別する良い仕組みだと思うが深いディレクトリを掘られてしまうのが少し面倒。emacsでこれらのファイルを参照する時、completionで簡単にファイルを指定できそうだが、CVSに登録すると各ディレクトリにCVSというディレクトリができるので、CVSも候補として表示され面倒。completionで特定のファイルを無視する機能があったはずと調べると completion-ignored-extensions という変数がある。これで行けると思ったが、既に”CVS/”という文字列が登録されている。なんで無視されないのだろう….この時、ついでに completion-ignore-caseという変数を知る。これでLinux上のemacsでもmeadowと同じように大文字/小文字を無視して completionできるようになり、ちょっとハッピー。

-mno-cygwin (ハイフン1つ)

夜、テニス。ふくらはぎは無事。痛くない。ゲームは6-0で勝利。キーフックのプログラムはdllwrapのオプションの情報をコンパイラに1円も払わない窓プログラミングで獲得。-mno-cygwin(ハイフンが1つ)に変更することで cygwin1.dllを参照しなくなることが判明。ハイフンを2つ付けていたのは、dllwrap -hで、そう表示されていたから。コンソールにprintfで出力できるようにもなったし、Meadow+cygwin+gmake+gccでのWindowsのプログラムが楽になってきた。でも日本語処理やリソースコンパイラ/エディタの問題もあるのでMeadow+cygwin+gmake+VCに移行するかも。

Exception

ライティングソリッドコード 2,854円(税込)

まじめに仕事をする。最近Exceptionという単語をタイプすることが多いがスペルに自信がないのか入力がぎこちない。少し意識して練習しよう。STARTという単語なんて意識もせずに左手だけで入力(当たり前だが)できるが、これは卒研のときに入力し続けたせい。

Exceptionは、つまりJavaのわけだけど、何をExceptionにして何を値で返すのか結構悩んでいた。特に tcl/tkやWriting Solid Codeの何でも値で返す世界に馴染んでいたのでExceptionには抵抗があった。けど、最近すこし分かったような気がする。基本的に Exceptionはエラー時に出す。メッセージを出して処理を中断するような場合に出す。それなら System.errにメッセージを出して、System.exit()してもよさそうなものだが、System.exit()するとVMごと落ちてしまうのでかなりまずい。Exceptionを投げて、上位でうまく処理するべきだろう。こうしてみると、Javaというのはアプリケーションとしての境界が曖昧な、なんか渾然一体となって動く世界なのねぇ。

JavaServer Faces 完全ガイドを読む。JavaScriptも使うんだ。ふ〜ん。

Java3DやらTomcatやら

Java3DやらTomcatやらインストールして遊ぶ。Java3Dはサンプルプログラムを動かすことができたが、複雑な形になると私のノートでは遅い。偶然Java2Dサンプルを見て、私の目的(?)にはこちらの方が合っているかもと思う。Tomcatは無事サーバとして動作。servletの動かし方がまだわからない。

halt後 suspendするようにする

N-CardのLinuxのkernelをいじりhalt後 suspendするようにする。今まではlinux動作中はstanbyで割込みを待っているのにhaltするとwhile(1);の全速力busy loopに入るのでhaltするとなんと消費電力があがるシステムだったのだ。これで haltしても安心。 ^_^;とても寒い。昼間なのにとても寒い。テニス。惜敗。夜、squeakと戯れる。

2004年1月20日 火曜日の日記

まだちょっとおかしいN-Card + Webカメラで
画像取得

LinuxのSL811HSドライバをいじりisochronous転送が出来るように改造中。今日、なんとかN-Card +ov511.oドライバ +vidcatコマンド +ELECOM-C1C30WHで画像を取得できるところまでこぎ着けた。 まだエラーは出まくるし、連続取得はできないのだがここまで出来たことを喜ぼう。ソースは相当いじった。 usb.hまで変更したのは反則かも。


FEther USB-TXC調査

開けました。FEther USB-TXC 分解

土曜日購入した CoregaのFEther USB-TXCを開け調査。チップはDAVICOM社のDM9601。Linuxの既存のドライバーは対応してないようだ。メーカのホームページにLinux用のドライバーがあった。ちなみに 前の機種 USB-TXSのチップはADMtek社の ADM8511

Treeコントロール風widget

夜、プログラム。Treeコントロール風widgetをクリックに反応できるようにする。面白いなぁ。

VR4131ボードのRTL8019AS用にドライバーを書く

台風。風がひどい。VR4131ボードのRTL8019AS用にドライバーを書く。NE2000用のne.cをからボードの検出用のコードをごっぞり削る。なんか動いているようなので nfsrootを試みるがうまくいかない。マウントできない。tcpdumpでみるとパケットは飛んでいる。そんなportには接続できんというICMPのパケットが返ってきている。設定ミスかな?今日の失敗。nfsrootができそうなので、ROMモニターのパラメータを変更しflash-romに書き込もうとするがうまく行かない。flash-romの読み出しテストをするだけでモニタが固まってしまう。flash-rom書き換えのプログラムはRAM上で動いているのだが、割り込みの処理でflash-romを参照するようになっていたのを忘れていたのが原因。 flash-rom書き込み時に割込みが発生すると、変な値が読み出されていたようだ。flash-rom操作中は割込みを禁止し、割り込み許可まえにflash-romにリセットコマンドを入力し、通常の読み出しモードに戻すことで正常に動くようになった。夕方、台風は去ったし、雨も降っていないのでテニススクールに行くが、人がほとんどいない。さすがに今日は風が強いので休みだそうだ。