Java

Servletプログラミング

久しぶりに Servlet を書いたり。4年ぶりくらいかな。Deployment Descriptor の書き方とかすっかり忘れているかと思ったけど多少は覚えているもんだなぁ。 で、いまどきなら Maven2 かな、ってことで Maven2 で multi module な構成にしてみたり。てなことを…

POMがおかしい

commons-logging-1.1 の dependencies に含まれる servlet-api の scope が provided じゃなかったり、同じく ezmorph-0.8.1 の junit-3.8.1 の scope が test じゃないのは意図的なんだろうか。とりあえずそのままでは困るから local repository の方を修正…

Singleton

なんか mixi の Java コミュニティで「Multi Thread って必要?」って話から Double Checked Locking の話になってそこから延々と Singleton の話に。 てかさ、Double Checked Locking がだめだって言っているのにこのコードはないべ。 public class Singlet…

Too many open files

OOWeb を使ってごそごそやっていると Too many open files とかいわれてファイルがオープンできなくなった。 この間の件もあって、のっけから OOWeb を疑ってかかって「このヤロー」と思いながらコードを確認したら悪いのは自分のコードだった。すんません。

自作のライブラリにバグ発見

半年ぐらい前から MappedByteBuffer を使った自作のCDBライブラリ を使っているのだが、いまごろになってバグを発見してしまった。ぐはぁ。 ハッシュ値が衝突して、キーの長さが同じなら検索できなくなるというしょぼいミス。ちゃんと Unit Test もやってい…

OOWeb

OOWebにはめられた。 ことの経緯はこう。簡単な検索サーバが欲しくて、わざわざ Servlet/JSP Container 使うのもあれだし、自分で ServerSocket とか使ってマルチスレッドでサーバ書くのも面倒だっつうことで OOWeb を使って簡単に済ませようと思ったのだ。 …

cdb

Java 用の cdb 互換ライブラリなんてものを作って使ってたりするするんだけど、読み出しはともかく書き出しがえらく遅いことに今日気づいた。どれくらい遅いかといえば、tinycdb-0.76 で 400 MBytes のデータベースを作るより、自作ライブラリで 10 MBytes …

OutOfMemory

今日 java.lang.OutOfMemoryError が出てしまったので、そういや Java SE 6 では OutOfMemory のスタックフレームを表示してくれるんじゃなかったっけ、とか思って試してみたら確かに表示された。ふむ、これはいいな。

Java SE 6 リリース

なんかリリースされた?とりあえずダウンロード。

Java でメソッドを静的にディスパッチする

ref:sumim’s smalltalking-tos - Java でインスタンスメソッドを静的にコールする方法はない? 2 普通にReflectionを使っても無理。 基本となるメソッドがインスタンスメソッドの場合、動的メソッドルックアップを使用して呼び出しが行われ、ターゲットオブ…

何事も使い方次第

ref:おいっちょの日記 - [オープンソース]GNU Trove: High performance collections for Java. これを使うことのメリットってあまりないような気がする。Collection APIを使っているコードって全体の何分の1だろう?システムを稼動しているときに、全体の何…

Collection Library

ref:高速なコレクションAPI - 新・たけぞう瀕死の日記 Javolution ってのははじめて聞いた。trove はNLP関係のライブラリで使われているのを良く見るなぁ。 MALLET とか CRF とか maxent とか。 あと Collection Library としては fastutil なんてのも有名か…

Enum と static import

実際の話、Enumって:class Foo { enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY } ... } みたいに使うわけじゃん? ってことは、Foo以外の とこじゃ、Foo.Day.SUNDAYとかになるわけじゃん? 頭おかしいとしか思えんよな。で…

検査例外

ref:c⌒っ_д_)っ←のや - C++ってthrowsがないのか 最近の言語は大抵、例外機構をサポートしているけど、何気に今現在メジャーな言語で検査例外の機構を持っているのは Java くらいだよな。そもそも例外をサポートした静的言語ってのが少ないけど。 で前にも書…

Seasar の宣伝

今日見かけた Seasar 周りのネタ。 やっぱ Seasar カンファレンス行かなくて良かった。行ってたら、質疑応答で、「Rails 以上のことがやれてないのに "Super" は誇大広告じゃないですか?」とか言ってたに違いない。したり顔で。おぉ、恐ろしい。最悪だ。厚…

Comparison Dialog

Eclipse 3.2 + JUnit4 を使っていると assertEquals がこけたときの Comparison Dialog がでないってのを 以前書いた けど ここ 見ると Eclipse 3.2.1 でいけるっぽいのでアップグレード。 お、いけた。

Java2 OSS化

ref:スラッシュドット ジャパン | Sun、JavaをGPLでオープンソース化へ ref:Open Source Java - Overview あ、結局 GPL version 2.0 or lator なんだ。でも公式サイトの記述は GPL v2 なのをもっと目立つ位置に書いたほうがいいような。FAQ探しちゃったよ。

JudoScript がなにげすごい件

JudoScript の Tutorial を見て、何気に JudoScript すげえと思った。 なんか、各種の DSL*1を一緒くたにした感じ?簡単に SQL を発行するための Syntax があったり、Event Driven な XML/SGML パージングが簡単に書けたり、Windows の COM も扱えたりすごす…

Java の資産を使えるスクリプト言語

Javaは今のところ、「Javaで書いたライブラリーを他の言語で使う」という風には進化していない(JPLなどの試みはあったが)。むしろJythonにしろGroovyにしろ、「javaで他の言語を実装する」という方向に行っている。これはある意味javaをもってCに換えようと…

ClassLoader

ref:Java Programming Tips:クラスローダーを自作する方法 知らない人には参考になるんだろうが、挙げられている例が URLClassLoader を使えば ClassLoader loader1 = new URLClassLoader(new URL[] { new File("c:\\1").toURL() });な感じで済んでしまうの…

Map の簡易初期化 #2

「Mapの簡易初期化」の別解。 Nicolas さんが Builder パターンでやっていたりしてそれはそれでいいのだけれども、以下の様なのを思いついた。 package collections; import java.util.HashMap; import java.util.Map; public class MapBuilder { private st…

クリップボードの内容をJavaプログラム用に加工する

Unit Test なんかで複数行にわたるちょっと大きな文字列をソースコード中に埋め込みたい場合があるんだけど、Java にはヒアドキュメントとかないので、いちいちエスケープしたりするのが面倒。 ということで、Ruby でクリップボードの文字列を Java のコード…

安全な close

トラックバック元のコードを勝手に添削。 Errorは即throw tryブロック内で例外が出るとそれをthrow。closeも試みる。 closeだけで例外が発生した場合はそれをthrow close で投げられる例外をハンドリングしたところでロギング以外にやることってあまり無いよ…

昨日の PrintWriter の件

昨日のPrintWriterの件に激しく誤解した「仕様です」との指摘が来たので説明ついでに検証しておく。 別に、生成したストリームを全部、個別に close しないといけないといったわけじゃなくて、 writer = new OutputStreamWriter(new FileOutputStream(file),…

java.io.PrintWriter のコンストラクタがやばい

エンコーディングを指定して Writer、Reader を生成する場合、 Writer writer = null; try { writer = new OutputStreamWriter(new FileOutputStream(file), encoding); doSomething(writer); } finally { IOUtils.closeQuietly(writer); }ではまずくて、 Ou…

別々の ClassLoader にロードされたクラスのフィールドは別になる

みねこあ - クラスはオブジェクトであると言い切れない大人の事情 うんまぁ、元記事がひどいのには異存は無いんだけどね。 「クラス」メソッドじゃないっ!「静的」メソッドなんだ!! はぁ、で、そのこころは。 つまり C で言う関数内の static な変数とは…

なんでも System.out に出すひと

なんでも System.out にエラーを出力するなよとか思う。っていうか IOException を catch して false を返すとか、それいつの時代のプログラミングだよ。 あと、こんなん。 public class Foo { private allTags = false; public void setAllTags(boolean all…

static method != class method ?

みねこあ - 大人の事情 えと、なんか書き直し中みたいですが、書き直し前のを見ちゃったのでとりあえず、別の勘違いを指摘しておく。 でもJavaもC++ も口が裂けてもそれをクラスメソッド/フィールドとは呼んでいないはずで、C++ではちゃんと「静的メンバ関数…

改行文字の扱いが面倒

使っているライブラリで改行文字を "\n" でハードコードしてくれているおかげで Windows で実行すると出力に CR + LF と LF がまじってひどいことに。 まあ、本来なら System.getProperty("line.separator") で改行文字を取得しなきゃならんわけで、ハードコ…

検査例外をパラメタライズするという手法

矢野勉のはてな日記 - Rubyのブロック構文のように、Javaで(略)任意の検査例外も投げられるようにしてみる 面白い。その発想は・・・なくはなかったけど。 しかし、throws の宣言がパラメタライズされた型でもOKだとは思わなかったし、OKだとしても検査例…