Java
久しぶりに Servlet を書いたり。4年ぶりくらいかな。Deployment Descriptor の書き方とかすっかり忘れているかと思ったけど多少は覚えているもんだなぁ。 で、いまどきなら Maven2 かな、ってことで Maven2 で multi module な構成にしてみたり。てなことを…
commons-logging-1.1 の dependencies に含まれる servlet-api の scope が provided じゃなかったり、同じく ezmorph-0.8.1 の junit-3.8.1 の scope が test じゃないのは意図的なんだろうか。とりあえずそのままでは困るから local repository の方を修正…
なんか mixi の Java コミュニティで「Multi Thread って必要?」って話から Double Checked Locking の話になってそこから延々と Singleton の話に。 てかさ、Double Checked Locking がだめだって言っているのにこのコードはないべ。 public class Singlet…
OOWeb を使ってごそごそやっていると Too many open files とかいわれてファイルがオープンできなくなった。 この間の件もあって、のっけから OOWeb を疑ってかかって「このヤロー」と思いながらコードを確認したら悪いのは自分のコードだった。すんません。
半年ぐらい前から MappedByteBuffer を使った自作のCDBライブラリ を使っているのだが、いまごろになってバグを発見してしまった。ぐはぁ。 ハッシュ値が衝突して、キーの長さが同じなら検索できなくなるというしょぼいミス。ちゃんと Unit Test もやってい…
OOWebにはめられた。 ことの経緯はこう。簡単な検索サーバが欲しくて、わざわざ Servlet/JSP Container 使うのもあれだし、自分で ServerSocket とか使ってマルチスレッドでサーバ書くのも面倒だっつうことで OOWeb を使って簡単に済ませようと思ったのだ。 …
Java 用の cdb 互換ライブラリなんてものを作って使ってたりするするんだけど、読み出しはともかく書き出しがえらく遅いことに今日気づいた。どれくらい遅いかといえば、tinycdb-0.76 で 400 MBytes のデータベースを作るより、自作ライブラリで 10 MBytes …
今日 java.lang.OutOfMemoryError が出てしまったので、そういや Java SE 6 では OutOfMemory のスタックフレームを表示してくれるんじゃなかったっけ、とか思って試してみたら確かに表示された。ふむ、これはいいな。
なんかリリースされた?とりあえずダウンロード。
ref:sumim’s smalltalking-tos - Java でインスタンスメソッドを静的にコールする方法はない? 2 普通にReflectionを使っても無理。 基本となるメソッドがインスタンスメソッドの場合、動的メソッドルックアップを使用して呼び出しが行われ、ターゲットオブ…
ref:おいっちょの日記 - [オープンソース]GNU Trove: High performance collections for Java. これを使うことのメリットってあまりないような気がする。Collection APIを使っているコードって全体の何分の1だろう?システムを稼動しているときに、全体の何…
ref:高速なコレクションAPI - 新・たけぞう瀕死の日記 Javolution ってのははじめて聞いた。trove はNLP関係のライブラリで使われているのを良く見るなぁ。 MALLET とか CRF とか maxent とか。 あと Collection Library としては fastutil なんてのも有名か…
実際の話、Enumって:class Foo { enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY } ... } みたいに使うわけじゃん? ってことは、Foo以外の とこじゃ、Foo.Day.SUNDAYとかになるわけじゃん? 頭おかしいとしか思えんよな。で…
ref:c⌒っ_д_)っ←のや - C++ってthrowsがないのか 最近の言語は大抵、例外機構をサポートしているけど、何気に今現在メジャーな言語で検査例外の機構を持っているのは Java くらいだよな。そもそも例外をサポートした静的言語ってのが少ないけど。 で前にも書…
今日見かけた Seasar 周りのネタ。 やっぱ Seasar カンファレンス行かなくて良かった。行ってたら、質疑応答で、「Rails 以上のことがやれてないのに "Super" は誇大広告じゃないですか?」とか言ってたに違いない。したり顔で。おぉ、恐ろしい。最悪だ。厚…
Eclipse 3.2 + JUnit4 を使っていると assertEquals がこけたときの Comparison Dialog がでないってのを 以前書いた けど ここ 見ると Eclipse 3.2.1 でいけるっぽいのでアップグレード。 お、いけた。
ref:スラッシュドット ジャパン | Sun、JavaをGPLでオープンソース化へ ref:Open Source Java - Overview あ、結局 GPL version 2.0 or lator なんだ。でも公式サイトの記述は GPL v2 なのをもっと目立つ位置に書いたほうがいいような。FAQ探しちゃったよ。
JudoScript の Tutorial を見て、何気に JudoScript すげえと思った。 なんか、各種の DSL*1を一緒くたにした感じ?簡単に SQL を発行するための Syntax があったり、Event Driven な XML/SGML パージングが簡単に書けたり、Windows の COM も扱えたりすごす…
Javaは今のところ、「Javaで書いたライブラリーを他の言語で使う」という風には進化していない(JPLなどの試みはあったが)。むしろJythonにしろGroovyにしろ、「javaで他の言語を実装する」という方向に行っている。これはある意味javaをもってCに換えようと…
ref:Java Programming Tips:クラスローダーを自作する方法 知らない人には参考になるんだろうが、挙げられている例が URLClassLoader を使えば ClassLoader loader1 = new URLClassLoader(new URL[] { new File("c:\\1").toURL() });な感じで済んでしまうの…
「Mapの簡易初期化」の別解。 Nicolas さんが Builder パターンでやっていたりしてそれはそれでいいのだけれども、以下の様なのを思いついた。 package collections; import java.util.HashMap; import java.util.Map; public class MapBuilder { private st…
Unit Test なんかで複数行にわたるちょっと大きな文字列をソースコード中に埋め込みたい場合があるんだけど、Java にはヒアドキュメントとかないので、いちいちエスケープしたりするのが面倒。 ということで、Ruby でクリップボードの文字列を Java のコード…
トラックバック元のコードを勝手に添削。 Errorは即throw tryブロック内で例外が出るとそれをthrow。closeも試みる。 closeだけで例外が発生した場合はそれをthrow close で投げられる例外をハンドリングしたところでロギング以外にやることってあまり無いよ…
昨日のPrintWriterの件に激しく誤解した「仕様です」との指摘が来たので説明ついでに検証しておく。 別に、生成したストリームを全部、個別に close しないといけないといったわけじゃなくて、 writer = new OutputStreamWriter(new FileOutputStream(file),…
エンコーディングを指定して Writer、Reader を生成する場合、 Writer writer = null; try { writer = new OutputStreamWriter(new FileOutputStream(file), encoding); doSomething(writer); } finally { IOUtils.closeQuietly(writer); }ではまずくて、 Ou…
みねこあ - クラスはオブジェクトであると言い切れない大人の事情 うんまぁ、元記事がひどいのには異存は無いんだけどね。 「クラス」メソッドじゃないっ!「静的」メソッドなんだ!! はぁ、で、そのこころは。 つまり C で言う関数内の static な変数とは…
なんでも System.out にエラーを出力するなよとか思う。っていうか IOException を catch して false を返すとか、それいつの時代のプログラミングだよ。 あと、こんなん。 public class Foo { private allTags = false; public void setAllTags(boolean all…
みねこあ - 大人の事情 えと、なんか書き直し中みたいですが、書き直し前のを見ちゃったのでとりあえず、別の勘違いを指摘しておく。 でもJavaもC++ も口が裂けてもそれをクラスメソッド/フィールドとは呼んでいないはずで、C++ではちゃんと「静的メンバ関数…
使っているライブラリで改行文字を "\n" でハードコードしてくれているおかげで Windows で実行すると出力に CR + LF と LF がまじってひどいことに。 まあ、本来なら System.getProperty("line.separator") で改行文字を取得しなきゃならんわけで、ハードコ…
矢野勉のはてな日記 - Rubyのブロック構文のように、Javaで(略)任意の検査例外も投げられるようにしてみる 面白い。その発想は・・・なくはなかったけど。 しかし、throws の宣言がパラメタライズされた型でもOKだとは思わなかったし、OKだとしても検査例…