HHeLiBeXの日記 正道編

日々の記憶の記録とメモ‥

Java

改行コードの出力

改行コードがプラットフォームごとに異なるというのは常識だが、ついつい次のようなプログラムを書いてしまう。 System.out.printf("%5d %5d\n", 12, 345); さすがに、print、printlnを使う場合はエスケープシーケンス "\n" を直接ソースコード上に書くこと…

Simpleライブラリの検証(5)

ざっくりと試してみたSimpleライブラリ。 Simpleライブラリを試してみる - HHeLiBeXの日記 正道編 いろいろと気になる点もあったので、ざくっと検証してみる。の続き。 値の解析エラーの扱い たとえば、POJOではshort型として定義されているフィールドに対応…

java.lang.reflect.AccessibleObject#setAccessible()の影響範囲

自分は、設定を変更したら元に戻さないときがすまない性分なので、何気なく次のようなコードを書いていた。 private static void printPrivateFieldValue(Object obj, String name) throws Exception { Field field = obj.getClass().getDeclaredField(name)…

正規表現におけるメタ文字をエスケープするメソッド

今まで、正規表現のメタ文字をエスケープするのに、バックスラッシュとかをいっぱい書いていたのだが、簡単にエスケープする記法があることに最近気づいた。さらにそのような文字列を生成するためのメソッドがあることにも気づいた。 パターン(置換前)文字列…

Java Puzzlers 罠、落とし穴、コーナーケース

Java Puzzlers 罠、落とし穴、コーナーケース作者: ジョシュア・ブロック,ニール・ガフター,柴田芳樹出版社/メーカー: ピアソン・エデュケーション発売日: 2005/11/14メディア: 大型本購入: 3人 クリック: 92回この商品を含むブログ (57件) を見るふと目にし…

無駄にCPUを使いたい処理(謎)

次のようなコードに遭遇したとき、一瞬、見なかったことにしようかと思った。 private static String buildString(List codes) { String resStr = ""; // 何か別の処理 for (int j = 0; j < codes.size(); ++j) { if (Integer.parseInt((String) codes.get(j…

JSPで誤ったコメントアウト

実害がなかったので「未遂」ではあるのだが‥ 問題となったのは次のコード。 <%@ page contentType="text/html" pageEncoding="UTF-8" %><% response.setHeader("pragma","no-cache"); response.setHeader("Cache-Control","no-cache"); %>

Simpleライブラリの検証(4)

ざっくりと試してみたSimpleライブラリ。 Simpleライブラリを試してみる - HHeLiBeXの日記 正道編 いろいろと気になる点もあったので、ざくっと検証してみる。の続き。 Elementアノテーションのdata要素 JavaDocを見たときに気づいたElementアノテーションの…

Simpleライブラリの検証(3)

ざっくりと試してみたSimpleライブラリ。 Simpleライブラリを試してみる - HHeLiBeXの日記 正道編 いろいろと気になる点もあったので、ざくっと検証してみる。の続き。 Javaフィールドの値がnullの場合の扱い 当然のことながら、すべてのJavaフィールドの値…

Webアプリケーション開発の際の注意事項(4)

これまでの記事。 Webアプリケーション開発の際の注意事項 - HHeLiBeXの日記 正道編 Webアプリケーション開発の際の注意事項(2) - HHeLiBeXの日記 正道編 Webアプリケーション開発の際の注意事項(3) - HHeLiBeXの日記 正道編 今度はコードを書くときの注意で…

トランザクションを放置したために現れる亡霊データ

データベースのトランザクションの終了処理をきちんとしないために、トランザクションがタイムアウトするまでの間、未コミットの亡霊データ(何)が見えてしまうという爆弾コード。 実際のコードを簡略化し、JDBCに置き換えたコードで掲載。 private static vo…

Webアプリケーションが起動したスレッドからJNDIリソースを取得できるか

Webアプリケーションサーバー上で動作するアプリケーションから、JNDIリソースとして登録されたデータベース接続オブジェクト(データソース)を取得、なんていうのはよくやることだが、今まで知らなかった原因により、データソースを取得できないケースがあっ…

Simpleライブラリの検証(2)

ざっくりと試してみたSimpleライブラリ。 Simpleライブラリを試してみる - HHeLiBeXの日記 正道編 いろいろと気になる点もあったので、ざくっと検証してみる。の続き。 要素名や属性名は「JavaBean標準」固定なのか Lureクラスなら"lure"という風になるとい…

Simpleライブラリの検証(1)

ざっくりと試してみたSimpleライブラリ。 Simpleライブラリを試してみる - HHeLiBeXの日記 正道編 いろいろと気になる点もあったので、ざくっと検証してみる。 XML宣言と文字エンコーディング サンプルでは、出力されたXMLファイルにXML宣言が存在しない。そ…

Simpleライブラリを試してみる

「Simple」という名のライブラリがあるらしい。 JavaオブジェクトをXML形式にシリアライズするSimpleライブラリ | Unofficial DB2 BLOG Simple を使って XML シリアライズを行う Simple 2.7.1 (v2.0からはZIP形式で提供されているのに、2009年11月24日更新(…

Webアプリケーション開発の際の注意事項(3)

これまでの記事。 Webアプリケーション開発の際の注意事項 - HHeLiBeXの日記 正道編 Webアプリケーション開発の際の注意事項(2) - HHeLiBeXの日記 正道編 ただ、これまでとは違って、コードの書き方の問題ではなく使用しているライブラリに関連する問題。以…

Webアプリケーションクラスローダーのシミュレーション

以前に、止まってくれないWebアプリをテーマに次のような記事を書いた。 Webアプリケーション開発の際の注意事項 - HHeLiBeXの日記 正道編 Webアプリケーション開発の際の注意事項(2) - HHeLiBeXの日記 正道編 で、検証に使用していたWASのトライアル版は(た…

SQL Server のデータベースに JDBC 接続するまで

Microsoft SQL Server 2005 Express Edition を導入し、Java プログラムから JDBC 接続をしようとした。 Download Microsoft SQL Server 2005 Express Edition Service Pack 3 from Official Microsoft Download Center Download Microsoft SQL Server Manag…

TIMESTAMP のリテラル

TIMESTAMP のリテラルを記述する際に、DB2 で苦労した記憶が唐突によみがえってきたので、手元にある DBMS を比べてみた。 IBM DB2 Express-C v9.1.2 IBM DB2 Express-C v9.5.2 IBM DB2 Express-C v9.7.0 Oracle Database 10g Express Edition PostgreSQL v8…

Finalizerの動作を実際に見てみる

次の記事(2007/12/27): 現場から学ぶWebアプリ開発のトラブルハック(9):JavaのGC頻度に惑わされた年末年始の苦いメモリ (1/3) - @IT の「【第5話】犯人はお前だ! Finalizer!!」を久しぶりに目にして、Finalizerの動作を実際に見てみるか、と思ったらし…

ユーザ定義型(構造型)の値をJDBCで扱ってみる

せっかくSQLにユーザ定義型(構造型)を定義する機能があるので(謎)、JDBC経由で参照、更新をしてみる。 使用する環境は以下のとおり。 DB2 Express-C v9.7.0 (と書いて FP1 に更新しなきゃならないことを思い出したらしいが、それはまた後で) とりあえず、ア…

File.deleteOnExit() を使用していたライブラリ

トラブルは得てして古い環境で起こる。以下のエントリ: File.createTempFile() と File.deleteOnExit() のコンボ罠の続き - HHeLiBeXの日記 正道編 を書いたのもそんなトラブルがきっかけだが、原因の1つはアプリケーションそのものではない‥いや、(古いラ…

File.createTempFile() と File.deleteOnExit() のコンボ罠の続きの続き

過去のエントリで、 File.createTempFile() と File.deleteOnExit() のコンボ罠 - HHeLiBeXの日記 正道編 File.createTempFile() と File.deleteOnExit() のコンボ罠の続き - HHeLiBeXの日記 正道編 というのを書いたが、別に「コンボ罠」というわけではない…

java.lang.ref.Reference 関連 - 到達可能性

そういえば、大昔に「よく分からん」とか言って放り投げていた java.lang.ref パッケージ関連のクラスとその周辺知識。 先日、soft reference とかの話が出てきたので、今度はちゃんと読んでみた。(とりあえず到達可能性について) java.lang.ref (Java 2 Pla…

Webアプリケーション開発の際の注意事項(2)

初回の記事は以下。 Webアプリケーション開発の際の注意事項 - HHeLiBeXの日記 正道編 某所(何処)での某氏(誰)の報告が気になったので、シンプルケースで検証。 なんでも、java.io.ObjectStreamClass#lookup() を呼ぶだけでクラスローダーが残ってしまうとい…

java.sql.Array を使ってみる

DB2 v9.5 から ARRAY 型がサポートされるようになった。ただし、自分が認識している範囲では次の制限がある。 プロシジャ(Procedure)のパラメータでのみ指定できる。 (DB2 v9.7以降)関数(Function)のパラメータか戻り値にも指定できる。(とオンラインマニュ…

Generics+Auto-boxing の罠

Auto-boxing が導入されたことで、本来は Collection に格納できない(ラッパークラスによる明示的なラッピングが必要な)プリミティブ型の値を、コード上では明示的なラッピングをしなくても格納できるようになった。 しかし、あるプリミティブ型の引数をとる…

ByteArrayOutputStream クラスの toString() メソッド

Object.toString() メソッドは、デバッグ出力などのときに役立てる、くらいの意識しかなかったのでまったく気にしていなかったのだが、java.io.ByteArrayOutputStream クラスの toString() メソッドはオーバーライドされている。 で、何が返ってくるのかと思…

ThreadMXBean.findMonitorDeadlockedThreads() メソッド

前に書いた「java.lang.management パッケージ - ThreadMXBean インタフェース - HHeLiBeXの日記 正道編」の中の findMonitorDeadlockedThreads を、デッドロックを実際に発生させた後で情報出力してみる。 import java.lang.management.ManagementFactory; …

Threadはinterruptすれば停止するというものではないのだよ(2)

以下の続き。 Threadはinterruptすれば停止するというものではないのだよ - HHeLiBeXの日記 正道編 これを書いていたときに、「他に何かあったような‥」と思いながら、なかなか思い出せなかったので放置していたのだが、唐突に思い出したので。 今回示すどち…