最近は

Java + Swingで GUIのプログラムとか作っている。ER13のDVDを昨晩見終わる。10月からはBSでER14を見たい。

CodeRuler (2)

勤労感謝の日
CodeRulerで遊ぶ。動作は怪しいが、なんとか自作サーバも動くようになった。もっとプログラムを改善して行きたいが、サンプルで使っている自作rulerが弱いので、とりあえずそちらを作り直す。CodeRuler附属サンプルrulerには勝てるようになった。

CodeRuler再び

IBM developerWorks で公開されているJavaで作る(?)ゲームCodeRulerを再びやりたくなる。以前やったのは3年前なので、今なら、もっといろいろできるのではないか。

CodeRulerをダウンロード、インストールすると3年前から若干アップデートされているようだ。getSchoolName()やgetRulerName()は無くなり、xmlファイルで情報を提供するらしい。動かしてみて、3年前と同じ結論になる。まず、自分でシミュレータを作らなくては…

ThrowableとException

JavaのThrowableとExceptionって何が違うんだと前から気になっていたのだが、やっと調べた。ThrowableにはErrorが含まれるが、Exceptionには含まれないらしい。このjava.lang.Errorというのは一般のアプリケーションではcatchすべきではない重大な問題を示すそうだ。ということで、これからはcatch(Throwable e){}は 止めてcatch(Exception e){}することにしよう。

AssertErrorもErrorのサブクラスなんだ。確かにAssertErrorとかcatchしても困るよなぁ。

Linux+Java/AWTだと日本語が出ない?

借物のPCが届き、Fedora 7をインストールする。JavaやEclipseも順調にインストールでき、開発中のプログラムを動かすと日本語が表示されない。Swing/Awtだと、Fedora 7のX-windowだと日本語が□になってしまうようだ。javaの設定ファイルを漁ると、kochi-minchoとか書いてあったりするからこの辺が原因臭い。今までは、Windows上のAstec-Xで表示させていたので気が付かなかった。

フォントの設定を変更するのとSwingからSWTに乗り換えるのはどちらが楽か考える。Eclipseではちゃんと日本語も表示されるのでSWTなら問題ないはず。Swingを使っている部分は、まだ少いので、いまなら簡単に移れる気がする。

jaclは便利だね

最近 javaのプログラムにtclのインタプリタ(jacl)を組み込むのが気に入っている。最終的にGUIで操作するプログラムでも、開発中 GUIを作る前にいろいろ操作できるのは便利だし、スクリプトでいろいろ実行できるのも便利。pythonやrubyを組み込んでもいいのだが、tclが一番コマンドっぽくてお手軽な気がする。

JNIの本購入

JNI:Java Native Interfaceプログラミング―C/C++コードを用いたJavaアプリケーション開発 (Java books)
ロブ ゴードン Rob Gordon 林 秀幸


Amazonで詳しく見る
by G-Tools

Javaで細かい処理を書く

Javaで装置近くの処理を行うコードを書く。頻繁に呼び出される部分なのでnewをできるだけ避けたいと思ってコードを書いていたら、なんかCで書いていたのと同じようなコードになってきた。

Java Puzzlers

Java Puzzlers購入。パズルのようなプログラムを書く気はないが、Javaの細かい仕様を知るには良い本だ。

Java Puzzlers 罠、落とし穴、コーナーケース
ジョシュア・ブロック ニール・ガフター 柴田 芳樹


Amazonで詳しく見る
by G-Tools

Effective Java

雨でポストを探しに行けない代わりに本屋に行き、Effective Javaを購入。最近、この辺の本を読むのが楽しい。原書は第2版が予約開始している。ちょっと早まったかな?

Javaのvsprintf()

Cのvsprintf()相当のことをJavaでやる方法を調べていて、String.format()等でそのままできることに気が付く。

Object [] a = new Object[]{1,2,3};System.out.printf("a=%s%n", a);

とすると, a.toString()の値が出力されるのではないかと思ったのだが試すとa=1が出力される。次のようにすると、a.toString()の値が出力される。

int [] a = new int[]{1,2,3};System.out.printf("a=%s%n", a);

Cで言えば、sprintf()とvsprintf()が同じ関数みたいなもの。面白い。

Java,Java

仕事でJavaして、帰ってJavaで遊ぶ。いい加減な実装でなんとかIMEを使えるようになった。

プログラミングJava第4版

本屋でプログラミングJava第4版を見かける。Java1.5対応のようだ。既に持っている第3版はJava1.3対応だそうで、欲しくなり購入。Javaは1.5からだよなぁ。で、読んでみて

  System.err.printf("Hello World%n");

なんてことができることを知る。%nで、システムの改行文字(Unix/Linuxなら\n, Windowsなら\r\n, Macなら昔は\rだったけど今は何?)を出力できるそうだ。これでprintln()と混ぜても、改行コードが変にならないで済む。ほかにもprintfのフォーマットの指定が拡張されているらしい。詳しくはjava.util.Formatterのjavadocをどうぞ。

Javaのお勉強

今日もInput Method Frameworkのお勉強をする。ダウンロードしたサンプルプログラムのappletを動かしたり、Java APIを読んだりしてだいぶ分かった気になる。AttributedCharacterIteratorとかTextHitInfoとか知らないことが多い。JavaのIME制御は思ったよりも高機能なようだ。

Input Method Framework

趣味でJavaのInput Method Framework IME制御まわりを勉強中。「ルートウィンドウ」方式は何もしなくても動く。「ビロウザスポット」方式も簡単にできそうな気がするのだがよくわからない。Javaのドキュメントがよく揃っていることには感心する。この辺の話はX11R5のころにも一度やったんだよなぁ。