java

jdk7のリソース管理

先日リリースされたjdk7。 あまり大きな変更点は無いのかな? 気になるのはStringのswitch、AutoCloseale、ジェネリクスコンストラクタの簡略化くらいか。 早速AutoCloseableを試してみた。 import java.io.*; public class Main { public static void main(…

java.util.logging

同僚から相談された。 logging.propertiesの設定が部分的に反映されないのだとか。 単純なmainから呼び出すとうまくいくのにtomcatプロジェクトだとダメなのだとか。 jdkのログ関係はあまり使ったことが無いので時間をもらって調べたところ・・・ handlerや…

xincaのバカヤロー

どのくらいメジャーなのか知らないがjavaのpdf生成ライブラリ。 こんなレベルのものが商用として販売されていることが信じられない。 OSSだとしても使いたくない。 マニュアルは間違ってるし、 イメージに加工かけるとカレントディレクトリにゴミファイル残…

初期化の順番とか内部クラスとか

ちょっとハマった。 public class Outer { class Inner { public Inner() { list.add(xxx); // NullPointerException } } private List list = new ArrayList(); public void method() { new Inner(); } } 確かこんなコードだったか。 最初はなんでかさっぱ…

jsp:useBeanタグ

内部クラスは使えない、と。メモメモ・・・ スコープが違っていても同じ名前は使えない、と。メモメモ・・・なんでjavaに変換する時にチェックしてるのさ。コンパイルできればいいじゃないか・・・

ダイアログ

新しい言語やら環境やらに触れるたびにいつも作るものがある。 ボタンをいくつでも表示できるダイアログ。 OKとキャンセルとかならあらかじめ用意されていたりもするが、ボタンを3つ4つ表示しようとすると画面を一から作らなければいけないことが多い。 だ…

AutoCompleteAdapter

AutoCompleteTextViewで使用するためのAdapter。 AutoCompleteTextViewは、単純に選択肢を表示するだけならArrayAdapterを使うと楽だが、ビューをカスタマイズしようとすると途端にややこしくなる。 自分で作ってていろいろハマッたので、そこらへんをラップ…

BufferedReaderEx

テキストファイルのキーワード置換処理。 まあ単純な処理だ。 BufferedReaderで1行ずつ読んで置換してBufferedWriterに出力。 しかし、改行コードがバラバラのファイルが数百個あるとなると? もちろん置換結果のファイルは元のファイルと同じように改行して…

AutoCompleteTextViewの罠。

あちこちにサンプルは見かけるが、とりあえず自分で動かしてみようと思ってハマッた。 サンプルをそのままコピーしたわけではないが、一通り必要なコードは実装したはずなのに動かない。 テキストを入力しても選択肢が表示されないのだ。 何がおかしいのかあ…

StringUtils#abbreviate

仕事でcommons-langライブラリのソースを見る機会があり、ちょっとメソッドの挙動に疑問を持つ。 javadocの使用例は下記のようになっている。 StringUtils.abbreviate("abcdefghijklmno", 0, 10) = "abcdefg..." StringUtils.abbreviate("abcdefghijklmno", …

将来展望

SI業界(日本)のJavaプログラマーにはオブジェクト指向より忍耐力が求められている? - 達人プログラマーを目指して 仕事でjavaやっててもこんなのばっかりじゃ何も身につかないし、面白くも何ともないよな〜 ま、仕事中ヒマを見つけては趣味でコーディング…

フレームワーク・・・

面白い記事だ。 Java EEや.NETはCOBOLやVB6よりも本当に生産性が高いか? - 達人プログラマーを目指して オープンソースのフレームワークはスキルの高い技術者が効率良く開発するためのもの。 開発現場独自のフレームワークは規約(型)にはめることでスキルの…

O/Rマッパーその3

以前こんなことを書いたけど、結局ORマッパーで生成するエンティティクラスってのはビジネスモデルのエンティティそのままなんだよね・・・ ただそれをDBの定義を基にして作っているだけで、DBアクセスのために作っているわけじゃないんだ。 DBから取得した…

時代遅れ

今の客先の環境はjava1.4。 もうサポートも切れてるのに、何でか知らないがバージョンを上げようとしない。 まあ今稼動してるシステムのリプレースが大変なのはわかるけどさ・・・ それはともかく、ちょっとしたツールを作ることになって、ざっと仕様を確認…

またもやGMTの罠。

久しぶりにはまった。 なんでjava.sql.Dateってequalsメソッドをオーバーライドしないんだ? そもそもDBのDATE型に対応するための型なんだから、日付が同じなら一致とみなしてくれれぱいいのに。 まあ一口にDATE型といっても、時間まで保持するRDBもあるけど…

当然?

先日プロジェクトのメンバーに「標準出力って何ですか?」と聞かれた。 ・・・は? 知らない・・・の? 数年javaのシステムやってるはずの人。 (プロジェクトの中では)中堅どころの人。 webサイト作ってるだけならもしかしたら知らないかもしれないが、いく…

プロセスの起動

コンソール限定だけども。 後始末とか意外と知られていないようなので。 public class Main { public static void main(String[] args) { try { run("cmd.exe", "/c", "dir", "/s", "\\*.exe"); } catch (Exception e) { e.printStackTrace(); } } public st…

ORマッパー

というか、薄いDBラッパーのようなものを考えているんだけど、例えばシンプルなSELECTを実行するには Entity e = new Entity(); e.put("column1", "abc"); e.put("column2", "123"); List<Entity> list = Table.select("TABLE1", e); で SELECT * FROM TABLE1 WHERE </entity>…

ジェネリクスの罠。

どえらい勘違いをしていた。 class A{} class B extends A{} List<A> list = new ArrayList<A>(); list.add(new B()); ができないと思っていた。ワイルドカード使おうとしても class A{} class B extends A{} List list = new ArrayList(); list.add(new B()); だ</a></a>…

axis2メモ

axis2への入れ替えはかなり手間がかかりそうだということで立ち消えになった。今までわかった事だけでもメモとして残しておく。 POJOでWEBサービスが作れる。(axis1でも同じ) wsdlは自動生成してくれるが、protectedやstaticメソッドまで含まれるので使い物…

axis2の起動でエラー

以前axis1で作ったWEBサービスをaxis2に入れ替えるという話が出た。 axis2は使ったことなかったので色々調べてみるが、最初の最初でつまずく。 axis2のwarファイルを展開したwebappが起動できないのだ。 よく覚えてないがLogConfigurationExceptionが起きて…

SimpleDateFormat。GMT。オフセット。

SimpleDateFormatでZを指定すると出力される文字。 +0900 言わずとしれたGMTとの時間差を示しているんだが・・・ RFCによると +09:00 が正しい形式らしい。 だもんだから、他の言語の実装とのやり取りを想定したWEBサービスでは使えない。 わざわざ自前で +0…

axis。datetime。Z

axisでのxsd:datetime表記。 yyyy-MM-ddTHH:mm:ss.SSSZ 最後の'Z'がGMT表記(=タイムゾーンオフセット無し)を意味することを初めて知った。 だから日時もGMTに変換されてたのか・・・

Connectionのclose。

ちょっとしたシステムの改修をしたのだが、どうも処理が遅い。 修正したSQLを手で実行してみてもほとんど待たずに結果がとれてるし、はて何なのか・・・ あちこちにストップウォッチ的なコードを仕込んで実行時間を確認したら、Connectionのcloseで2秒程度…

メッセージ管理

プログラムの中ではいろいろメッセージを使用することがある。 ほとんどの場合、メッセージの文言はソース埋め込みではなく、何かしら外部化されているものだが、そのやり方はプロジェクトによって様々だ。 また、自分でちょっとしたライブラリを作っていて…

axis。日付変換の罠

axisを使っていて気になったことが一つ。 xsd:datetimeとjavaの日付を変換する際にGMT・JSTの違いによって9時間の誤差が生じることは以前のシステムで経験があったので、あらかじめCalendarのSerializer/Deserializerをカスタマイズして誤差を吸収していたが…

wsdlの形式

axisでサービスを公開する際にwsdlの形式を選択することができる。 server-config.wsddのserviceタグに設定するstyle属性のことだが、有効な形式はwrapped/document/rpcの3種類かな?一般的なのはdocumentらしいのだが、リクエストデータを表す構造体に妙な…

soapのバージョン指定

WEBサービスを作ることになったので、以前使ったことのあるaxisをいじる。 soapの1.1と1.2と両方対応しているらしいけど、どこで指定するのか皆目わからず。クライアントならそもそも呼び出すメソッドが違うんだけど、サーバーは?1.1のリクエストしか受け付…

BackupFileWriter

import java.io.File; import java.io.IOException; import java.io.Writer; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; /*…

CyclicFileWriter

Log4jの中に自動的に出力先のファイルをバックアップするクラスがあるが、ログだけではなく、自分でファイルに出力する時にもその機能が使えないかと思って、作ってみた。 実際にバックアップする機能は別のクラスになっていて、このクラスはバックアップの…