たぷつきません

おなかがでてきた。もうたぷついてるやん。

Java

Enumeration から Iterable

毎回作ってはどこかにやっちゃうのでコピペ用。 package com.gluegent.common.collect; import java.util.Enumeration; import java.util.Iterator; public class Iterables { public static <T> Iterable<T> from(final Enumeration<T> from) { return new Iterable<T>(</t></t></t></t>…

恐怖、コンソールでログインしてログアウトしたら、落ちるTomcat

これも、9月17日に実際に起きた話。なんだったんだこの日は...。あるIIS+Tomcatのクラスタ構成にしているお客さんのところで、運用者が差バーにリモートログインしてログオフしただけで、Tomcatが落ちるという恐ろしい現象が。 いろいろ調べたところ、こち…

DecimalFormatが一番速い。

DecimalFormat, MessageFormat, String.format を比較。 だいたい予想通りの結果。 MessageFormatが一番遅いのか。 実行回数:1000 MessageFormat: time=83ms 35ms 15ms 13ms 13ms String.format: time=44ms 27ms 13ms 10ms 10ms DecimalFormat: time=14ms 9m…

JNAがちょい進化したようです。

年末に@ITにアップされた記事で 実は、プリミティブデータ型しか使わないAPIだけなら、JNA 3.2.0から、5行目のインターフェイスも書かず、もっと簡単に呼び出せます。詳細はJNAサイトを参照してください。 JNIより簡単にJavaとC/C++をつなぐ「JNA」とは(2/4…

Javaコードに埋め込む暗号化用キー生成

ASCII文字だと弱いのでバイナリキーを用意したいけど手動でJavaコード書くなんて骨が折れるので作成。 import java.util.Random; public class BinaryKeyGenerator { /** * @param args [0]=出力するバイト配列の長さ */ public static void main(String[] a…

昨日受けたショックな出来事

9年Java触っているのに、ローカルクラスを知らなかった。昨日初めて知った。きっかけはGWTのサンプルコード。メソッド内でクラス定義がいきなり出ていて驚いてしまった。若手2人は知っていた。ショック!

日付のフォーマット

commons.langのFastDateFormat、java6からの和暦対応してほしいなぁ。いつになったらプール作成から解放されるんだろう。commons.poolは使わないクラスがてんこ盛りだしジェネリックス使えないしで、Poolクラスを作成。 import java.util.ArrayList; import …

GAE/JでJavassist

使える機能をうまく選択することで制限付きながらGAE/JでJavassistが扱えます。GAEではクラスパスが無いのでルックアップがうまくいきません。サーブレットやフィルタのinit()で以下のようにクラスパスを登録しておきます。 ClassPool pool = ClassPool.getD…

double値のassertEquals

deprecatedコメントで、epsilon が必要とかいう。これは final double EPSION = 0.0000000001; を宣言しておいて、題3引数 deltaに渡せばいいらしい。 rhino-js内でテストケース書いてて気づいた。Numberだからint比較できず全部doubleになっちゃうから仕方…

javaのclassすげえ。

javaのclassは32bitでも64bitでも同じで、64bitのJITが頑張るって話をid:ashigeruさんに聞いた。JNIに踏み込まなければclassだけ差し替えればそのまま行けるようだ。やるなぁ。

BigDecimalのフォーマットのバグ

BigDecimalのフォーマットに問題があって成果物をリリースできなかった。以下はJDK5_U12〜U14だと落ちるがJDK6_U03だと正常動作する。 public class BigDecimalTest { public static void main(String[] args) { System.out.println("9.4 -> " + String.form…

クラスパスをワイルドカードで

いま丁度困っている。 http://java.sun.com/javase/ja/6/docs/ja/technotes/tools/windows/classpath.html 6からか〜!5で欲しかった〜。 mavenのdependenciesから持ってきたjarのリストをANTでテンプレート置換・クラスパスに展開できないかなぁと模索して…

ちなみにx-windows-iso2022jp

いがぴょんさんのまとめが分かりやすい。 使えるようになったのはJDK5のUpdate7かららしい。

hudsonでExecute Shell

たいしたメモではないが残しておく。 current_dir=$PWD export current_dir cd リポジトリの名前 sh 対象リポジトリにあるシェルプログラムを相対パスで指定 cd $current_dir としておけば良い。非公開なdependencyが多かったり既に提供元がハッキリせずどの…

プロパティファイル

いい加減にnative2asciiから解放されたい。UTF-8対応してくれーと思っていたら、Properties#loadFromXMLなんてのが5から出ていた。こんな感じ↓。 @Test public void xmlPropertyCheck() throws Throwable { Properties properties = new Properties(); URL r…

開発環境フルスタック的なもの

仕事の機会で、3日前に情報収集した内容です。javaに限らないとは思いますが、java前提で書いてます。 開発上のプラクティス SCM,ITS(BTS),JUnit,Jcoverage,check-style,FindBugs これらをIDEやCIに統合する。 負荷テスト,プロファイラ,監視ツール 人の手を…

普通にJDK6

おおっ!知らない間にJDKダウンロードは標準が6になってたんですね。すっかりウラシマたろう。

CoCの好例だったんだなぁ

思い返すとJUnitってCoCの好例ですね。思い返しシリーズが多いけど、お仕事でフレームワークの採用評価に関わるガイドラインを作るというプロジェクトに関わっているので、日々思い返さないといけないのです。 もう毎日、フレームワークの常識、定説、考えま…

インピーダンスミスマッチ

思い返せば、シリアライズってインピーダンスミスマッチの最たる例だった。参照オブジェクトの同一性と関係性を確保しながらツリー構造を保持しつつ、バイナリに退避・復元するのはかなりきついです。主キー的なものもなかったりするのでO/Rより厳しい感じ。…

おお!ちゃんとデシリアライズできる

Tigerから加わったenumは、コンパイル時にEnum型と組み合わせる際にいろいろ自動的にコードジェネレート(valueOf(String)やvalues)してるんですが、デシリアライズ時のreadResolveもちゃんと実装しているようです。 Enumクラスを見るとordinal,nameがシリア…

SimpleDateFormat

スレッドセーフじゃないことを騒いでるような文書がありますけど、問題はドキュメント化うんぬんじゃないでしょう。こちらの情報は実験とかしているけどソース見れば一発で分かるんで実験するまでもない。calendar というフィールドを持っちゃっていて、form…

xercesImpl.jarだった。

stream closed. は、jetty-5.1.10についているxercesImpl.jarだと出るようだ。2.7.1だと出なくなった。

SAXParse以前の問題が…

高い負荷がかかると、読んでいる最中のファイルハンドルが閉じられて、stream closed. や、Premature end of file. などのIOExceptionが出る。システムリソースを食いつぶさせない緊急措置としての機構なのかもしれない。さべぇ。調べなきゃ。

パフォチューの一環としてaopやらリフレクションを使わない方法を思案中

antで予め実装コードを作成するようなものを考えてみているけどリフレクションだけじゃ引数の宣言名とか取れないのでjavaCCを試してみることに。最新(javaCC 4.0)には、javaGrammerに1.5もあるようでtiger使った案件のソースでチェックした。ほぼ成功する…

なにげにjavaでwith構文もどき

今まで自然に書いていたのですが、何気にwith構文の代替機能っぽいなと気付いたのでメモしときます。誰か気に入るかもしれないし。どこかで既出かもしれないけど個人的には発見した感じだったので。 _thread = new Thread(this) { { setDaemon(true); setNam…

SUNのコーディング規約で、ふと気づいたこと

最近プライベートフィールドの前にアンダースコアを付けて使っているんですけど、どうも規約に反してることになるらしい。後ろにアンダースコアをつける流儀は、このコーディング規約との折衷案だったのかなと。

perlの実数精度に合わせる

perlプログラムが出力する実数よりJavaの方が1桁ほど丸めが少ないようです。きちんとコンバートされているかdiffで比較がし辛いのはよくないということで、ちょっと調べたところ以下のように、DECIMAL64の定義から1桁引くと良いようです。 MathContext mat…

お、OGNLサイトが…

Resinデフォルトページになっちゃって、リファレンス見れないじゃないですか。

コマンドライン

-classpathを依存jar全てに通しているのにNoClassDefFoundではまった。-jarで打ち消されてしまうらしい。-jarのやつの中のMANIFEST.MFのClass-Pathに全て指定することで解決したんだけど、javaコマンドのUsageだけじゃ分かりにくい。Class-Pathが追加定義と…

ImageIOでJVM死に

途方にくれていたけど、http://www.kbmj.com/tech/index.php?itemid=16&catid=2 で解決しそうな予感。 おんなじようにハマってググッたらココにあたるように、ログを置いときます。 An unexpected exception has been detected in native code outside the V…