読者です 読者をやめる 読者になる 読者になる

理系学生日記

おまえはいつまで学生気分なのか

忍者TOOLS

synchronized は相互排他のためだけにあるわけではない件

起動しているスレッドを別スレッドから停止させようとするとき、次のような形のコードを時々見る。 import java.util.concurrent.TimeUnit; public class StopThread { private static boolean stopRequested; public static void main(String[] args) throw…

ローカル AP サーバへの JNDI lookup と RMI 用の JNDI lookup をまぜたときにうまく動かないんだけどこれなんなんだろ

前提として、RMI 呼び出しの際に用いる InitialContext は引数なしのコンストラクタによって構築されており、その構築部分は触わることができない。また、jndi.properties に記述されている JNDI プロパイダの情報はすべて正しく、RMI を提供するリモートサ…

OC4J で HTTP ステータスとして 600 番以降を返そうとすると

ArrayIndexOutOfBoundsException が出てわらえたけど、HTTP の RFC を良く読むと The first digit of the Status-Code defines the class of response. The last two digits do not have any categorization role. There are 5 values for the first digit: …

Commons Collections で FizzBuzz

Java SE では、機能ロジックをカプセル化した関数オブジェクトとして例えば Comparator や Iterator が定義されていますが、Apache Commons collections には、for 文や while 文、if 文をカプセル化した Functor が用意されています。なるほど、これを使え…

port で tomcat6 をビルドしようと思ったら BUILD FAILED になる件

これが fail する。 $ sudo port install tomcat6 原因調査のために port を debug モード(sudo port -d install tomcat6)にすると、原因がヒープ領域不足であることが判明する。tomcat のビルドは ant で行われており、その build.xml の絶対パスも debug …

SimpleDateFormat がスレッドセーフでない件

Java 1.3 の頃は、スレッドセーフでないことが明示されていなかったのではないか。 日付フォーマットは同期化されません。スレッドごとに別のフォーマットインスタンスを作成することをお勧めします。複数のスレッドがフォーマットに同時にアクセスする場合…

特定の例外が発生することを確認するユニットテスト

Perl でいう dies_ok (See: Test::Exception - search.cpan.org)的なユニットテストだが、JUnit 4 を使ってるんだったら @Test アノテーションでできる。 http://kentbeck.github.com/junit/javadoc/latest/org/junit/Test.html @Test(expected=FileNotFound…

並行

Java並行処理プログラミング ―その「基盤」と「最新API」を究める―作者: Brian Goetz,Joshua Bloch,Doug Lea出版社/メーカー: ソフトバンククリエイティブ発売日: 2006/11/22メディア: 単行本購入: 30人 クリック: 442回この商品を含むブログ (173件) を見る…

xmlint

EJB ではデプロイメント記述子が重要な役割を持つが、そのデプロイメント記述子は xml にて記述される。そして当然ながら、その xml は DTD に沿って記述されなければならない。 作成した xml が DTD に沿っているかを確認できるツールとして、xmllint があ…

EJB の勉強です

EJB の勉強にはこれを使う。J2EE 時代の本ですが、評判が良いのと、今ぼくが一番使うのが J2EE であることに起因してる。J2EEプログラマのためのEJBパーフェクトガイド―基本からコンポーネントプログラミングまで一挙解説! (Advanced Server‐Side Programmin…

Effective Java

ようやく Effective Java を読み終えました。内容については、Effective Perl や Effective C++ を読んだ方は、その Java 版だよといえば分かりやすいかと思います。Effective Java 第2版 (The Java Series)作者: Joshua Bloch,柴田芳樹出版社/メーカー: ピ…

コメント入れただけでクラスファイルは変化し得る

よくわかんないんだけど、コメント入れただけで Java のクラスファイルが変化するケースに遭遇したりしました。 例えば、こういう意味のないクラスを作ってコンパイルします。このとき生成されるクラスファイルの MD5 値を取っておきます。 public class Dum…

GlassFish で JNDI がうまくいかなかった件

JavaEE をなんとかせんといかんわねってことですから、当面は JavaEE5 のリファレンス実装たる GlassFish を使って勉強をしようと思い立ちまして、ノート PC 上に環境などを構築してみたのです。 GlassFish はこのあたり。インストール超楽ちんだった。 Glas…

やばい状態にある

業務知識をもっとしっかりつけないといけないし、そろそろ JavaEE をなんとかしないとヤバい状況に陥るかんじになってきているのがたいへんにおそろしい。死期が近づいてる!!!!!!

Eclipse 3.4 徹底攻略

業務システムなんて初めてだし、そもそも Java を扱うのも大学以来だったりしたのですが、4 月からそういう感じで業務に携わることになり、Emacs だけでは不自由することも多くなったりしたので、Eclipse などを触るようになりました。しかし Eclipse は高機…

static にまつわる実行順

static というとクラス変数、クラス関数につける修飾子というイメージがありますが、Java には static initializer と呼ばれるブロックを static キーワードで記述ができます。 下のはクソ簡単な例ですけど、Map にエラーコードとメッセージのマッピングを入…

? extends E と ? super E は結局見方の違いだった

先日ぼくはジェネリクスとかわかるしみたいなことを書いたけど、もちろんこんなのはデタラメだし、わかってるわけがありません。ぼくがこんな風に簡単にウソをつくことに対して、烈火のごとく怒りだしたりする人もいらっしゃるとおもいますけど、まず怒る前…

あー

そういや全然講義の内容と関係ないけど、ボクシング変換って int Integer とかのリテラルとそれに対応するラッパクラス間のみで働くものかと思ってたら、リテラル Object 間でもちゃんと変換してくれるんだとか思った。5.0 からなんですかね。1.4 だとこんな…

Java 研修に来てオブジェクト指向からやりなおしてる

今週はなんか業務とか中断して Java の研修を受けることになりました。なりましたっていうと、なんだか突然決まってぼくが急遽研修に参加することになったような言い回しですけど、そう思ったお前とかは社会をなめてる!!!! ぼくが研修に行くってのは 2 週間…

RMI を試す!

Java にはリモートにあるオブジェクトのメソッドを,ローカルにあるように呼び出せる RMI という仕組みがあります.あるんだったら試さないといけないし,そうしないと死ぬ.実験するために,リモートにあるサーバで足し算をするようなもんを作ります. RMI …

フィールドの隠蔽

プログラミング言語 Java より. public class SuperShow { public String str = "SuperStr"; public void show() { System.out.println("Super.show: " + str); } } public class ExtendShow extends SuperShow { public String str = "ExtendShow"; public…

Mac における Java 開発の問題点

Carbon Emacs と Eclipse のアイコンが似ていて,Command + Tab を押したときに分かりにくい.

Java を勉強せねばならない

アプリ開発を希望していたら,どうも Java っぽいところに行く予感なので,なんとかせねばなりません.Java は大学で触って以来だったりします.当時は 1.4 が出たばかりで,ぼくは何か家計簿みたいなソフトを作り,ムダに 1.4 で導入された正規表現ライブラ…