2010-01-01から1年間の記事一覧
面白い記事だ。 Java EEや.NETはCOBOLやVB6よりも本当に生産性が高いか? - 達人プログラマーを目指して オープンソースのフレームワークはスキルの高い技術者が効率良く開発するためのもの。 開発現場独自のフレームワークは規約(型)にはめることでスキルの…
以前こんなことを書いたけど、結局ORマッパーで生成するエンティティクラスってのはビジネスモデルのエンティティそのままなんだよね・・・ ただそれをDBの定義を基にして作っているだけで、DBアクセスのために作っているわけじゃないんだ。 DBから取得した…
今の客先の環境はjava1.4。 もうサポートも切れてるのに、何でか知らないがバージョンを上げようとしない。 まあ今稼動してるシステムのリプレースが大変なのはわかるけどさ・・・ それはともかく、ちょっとしたツールを作ることになって、ざっと仕様を確認…
久しぶりにはまった。 なんで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…
面白いのを見つけたので、ちょっと自分の思い出話なんかを。 ここに書かれてるほど極端なのはないけど・・・派遣PG時代の思い出 - Togetter ifの模様 VB5のシステム改修案件であった。 確か10階層くらいは超えてた見事な模様。 If ・・・ Then If ・・・ The…
というか、薄い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への入れ替えはかなり手間がかかりそうだということで立ち消えになった。今までわかった事だけでもメモとして残しておく。 POJOでWEBサービスが作れる。(axis1でも同じ) wsdlは自動生成してくれるが、protectedやstaticメソッドまで含まれるので使い物…
以前axis1で作ったWEBサービスをaxis2に入れ替えるという話が出た。 axis2は使ったことなかったので色々調べてみるが、最初の最初でつまずく。 axis2のwarファイルを展開したwebappが起動できないのだ。 よく覚えてないがLogConfigurationExceptionが起きて…
SimpleDateFormatでZを指定すると出力される文字。 +0900 言わずとしれたGMTとの時間差を示しているんだが・・・ RFCによると +09:00 が正しい形式らしい。 だもんだから、他の言語の実装とのやり取りを想定したWEBサービスでは使えない。 わざわざ自前で +0…
axisでのxsd:datetime表記。 yyyy-MM-ddTHH:mm:ss.SSSZ 最後の'Z'がGMT表記(=タイムゾーンオフセット無し)を意味することを初めて知った。 だから日時もGMTに変換されてたのか・・・
ちょっとしたシステムの改修をしたのだが、どうも処理が遅い。 修正したSQLを手で実行してみてもほとんど待たずに結果がとれてるし、はて何なのか・・・ あちこちにストップウォッチ的なコードを仕込んで実行時間を確認したら、Connectionのcloseで2秒程度…
近いうちにAndroidアプリの仕事がある『かも』ということで、SDKをインストールしてお勉強。 前から興味はあったんだけどね、まるっきり仕事に関係ないことを会社でやるわけにもいかないし。 これで大っぴらに遊べるわけだ。 まだSDKについてるサンプルをち…
プログラムの中ではいろいろメッセージを使用することがある。 ほとんどの場合、メッセージの文言はソース埋め込みではなく、何かしら外部化されているものだが、そのやり方はプロジェクトによって様々だ。 また、自分でちょっとしたライブラリを作っていて…
axisを使っていて気になったことが一つ。 xsd:datetimeとjavaの日付を変換する際にGMT・JSTの違いによって9時間の誤差が生じることは以前のシステムで経験があったので、あらかじめCalendarのSerializer/Deserializerをカスタマイズして誤差を吸収していたが…
axisでサービスを公開する際にwsdlの形式を選択することができる。 server-config.wsddのserviceタグに設定するstyle属性のことだが、有効な形式はwrapped/document/rpcの3種類かな?一般的なのはdocumentらしいのだが、リクエストデータを表す構造体に妙な…
WEBサービスを作ることになったので、以前使ったことのあるaxisをいじる。 soapの1.1と1.2と両方対応しているらしいけど、どこで指定するのか皆目わからず。クライアントならそもそも呼び出すメソッドが違うんだけど、サーバーは?1.1のリクエストしか受け付…
いやまだあるにはあるんだけど、ブログの形式で書くには関連するクラスの数が多すぎるんでね・・・ 何か面白いのないかなぁ。 前々から考えてることはあるんだけど・・・ javaのクラスって標準のjdkに含まれてるクラスだけでも膨大な数があるわけで。 中には…
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; /*…
Log4jの中に自動的に出力先のファイルをバックアップするクラスがあるが、ログだけではなく、自分でファイルに出力する時にもその機能が使えないかと思って、作ってみた。 実際にバックアップする機能は別のクラスになっていて、このクラスはバックアップの…
import java.io.ByteArrayOutputStream; import java.io.FilterWriter; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; import java.io.Writer; /** * 出力した文字数・バイト数を把握する…
おそらく他の人には使い道の想像がつかないのではないかと思う(笑)以前、コンソールアプリケーションを作ったことがある。 いわゆるバッチ的なものではなく、ユーザーの入力に応答する類のもの。当然いくつかコマンドがあり、そのコマンドのヘルプも表示する…
import java.io.FilterOutputStream; import java.io.IOException; import java.io.OutputStream; /** * 出力したバイト数を把握するためのStream。 */ public class CountOutputStream extends FilterOutputStream { // カウンタ long[] bytes; /** * 内部…
Dateクラスの派生クラスを作ろうかとも思ったけど、こっちのほうが使い回しがきくかなぁと。 public final class SystemUtils { private static long offsetCurrentTimeMillis; private static long fixCurrentTimeMillis; private SystemUtils() {} /** * {…
まあ特別なことはこれといってしていない。 ヘッダーの有無とか読み飛ばしとか必要かな・・・? /** * CSVの解析ロジック */ public interface Tokenizer { /** * 1つの文字列を複数の文字列に分割する * @param text * @return */ String[] toToken(String …
先日記事にしたCollectionsと似たようなものではあるが・・・時々キーブレイク(コントロールブレイク?)の処理を書くことがある。 先日プロジェクトの新人メンバーが言うには考え方はわかるが、javaでどう書いたらいいかわからないとのこと。 言われてみれば…
ソート順を逆にするためのComparator。 これもcommonsプロジェクトに似たようなクラスがある。 実際に使う機会はあまりない・・・ import java.util.Comparator; public class ReverseComparator<T> implements Comparator<T> { private Comparator<T> c; public Reve</t></t></t>…
ありがちと言えばありがち。 文字列を数値としてソートするためのComparator。 import java.math.BigDecimal; import java.util.Comparator; public class NumberStringComparator implements Comparator<String> { @Override public int compare(String o1, String </string>…