2010-01-01から1年間の記事一覧

GNU-JavaMailでメールを送ると件名が文字化けする

メール送信機能をJavaで実装したところ、なぜか件名が文字化けするという問題にぶち当たりました。 しかも、不思議なことにWindowsからだと大丈夫なのに、Linuxからだと化ける・・・。 最初は文字コード指定を間違えたと思っていろいろ確認したんですが、特…

シングルトンインスタンスの static 宣言は一番最後に書く

この前、後輩からきかれてちょっとびっくりしたこと。 一見するとただのシングルトンパターンのクラスが、なぜか動かないと言われました。 public class Sample { private static final Sample instance = new Sample(); private static Map<String, String> map = null; pri</string,>…

XKeymacsでWindowsキーバインドとEmacsキーバインドを併用する方法

日ごろ、職場でも自宅でも XKeymacs で Emacs キーバインドを使いまくってます。 このソフトのおかげで、プログラム書くのもドキュメント書くのも1.2倍ぐらい速く進みます(^^;) (頭が追いついてないですが w) そんな、もはや手放せなくなった XKeyma…

Add Tab Index for Google の対応ブラウザに Google Chrome 5を追加

greasemonkey「Add Tab Index for Google」をバージョンアップしました。 Add Tab Index for Googleとは?Googleの検索結果ページを3倍ぐらい使いやすくするためのgreasemonkeyです。 [1]検索結果の最初にフォーカスが当たる (Enterキーを叩くだけで検索結果…

FileクラスでNullPointerException

JavaのAPIは、基本的にIO関係でエラーが発生した場合、例外を投げるような設計になっています。 たとえば、FileInputStream はコンストラクタに存在しないファイルを指定した場合、FileNotFoundException を投げてきます。 また、各メソッドも何かあれば IOE…

拡張for文と匿名配列

あまり見かけないけど個人的に好んでつかうJavaのイディオムが拡張for文と匿名配列の組み合わせ。 for(String str : new String[]{"aaa", "bbb", "ccc"}){ System.out.println(str); } テストコードとかで、順番に値をチェックしたいときに使っています。 配…

Add Tab Index for Googleを公開しました

Firefox用のgreasemonkey「Add Tab Index for Google」をバージョンアップしました。 Add Tab Index for Googleとは?Googleの検索結果ページを3倍ぐらい使いやすくするためのgreasemonkeyです。 [1]検索結果の最初にフォーカスが当たる (Enterキーを叩くだ…

爆発物処理班

先々週、サーバ停止という致命的な事態をやってしまいました。 原因は、PostgreSQLの LOCK TABLE と SELECT によるデッドロック。 自分でそのことを記事にしたのに、完全に見落としました orz (単純にこの記事通りだったらポスグレがデッドロックを検出する…

iPod Touchには1582年がない (iPhoneにもない)

以前、iPod Touchのバグ?という記事で、0001年1月1日を選択すると、表示が1月3日になるというバグがあると書きました。 改めて確認したところ、どうやら1582年がないのが原因のようです。 なんでやねん・・・。 有名なバグかと思い、検索してみましたが全然…

PostgreSQLは、SELECTもロックを獲得する

SQL

PostgreSQLは、SELECT文を実行すると暗黙的にロックを獲得するということを、システムを止めて初めて知りました。 なので、こういうSQLはまずいです。 SELECT * FROM FooTable; LOCK TABLE FooTable; これを二つ同時に実行するとデッドロックが発生します。 …

文字列を == で比較してもいい例

昨日、トリムされているかの判定処理を書いていて気付いたのですが…。 Javaでは、文字列比較に == を使ってはいけないのが常識。 でも、以下の場合は == を使ってもOKです。 /** * トリムされている(両端が空白でない)かどうか判定します。 * * @param str …

OR条件よりもUNIONの方が速い!

一週間悩んで、やっと分かったのでメモ。 こういうSQLの場合、前者よりも後者の方が速いです。 SELECT * FROM FooTable LEFT OUTER JOIN BarTable1 ON FooTable.ID = BarTable1.ID LEFT OUTER JOIN BarTable2 ON BarTable1.F_ID = BarTable2.ID LEFT OUTER J…

プログラマの力量

よくプログラマは力量の差が大きいとは聞きますが・・・まさか自分でやるとは思わなかった。 一年前 「再帰SQLが使えないから無理!」 SQLは単純に、Javaで再帰処理やって工数3日、処理時間500ms 今日 「再帰SQLは無理でも自己結合すればいいじゃん!」 SQL…

SQLでFizzBuzz!

SQL

少し遅くなりましたが、あけましておめでとうございます。 新年明けて間もなく2週間経とうとしているのに・・・今年の目標はまだ決まってません(汗) でも、去年の秋ぐらいからSQLにはまったので、とりあえず今年はそれをマスターできればなと思っています…