SpringFramework で特定の Bean のみ再読み込みする

以下のような Service クラスがあるとします。Dao へのアクセスは大変コストがかかるため、Bean の初期化時に afterPropertiesSet メソッド内で1度だけアクセスし、その結果を Map に保持するような仕掛けになっています。 @Service public class FooService…

JUnitでプラットフォーム依存のテストを行う

JUnitでプラットフォーム依存のテストを行いたい*1とき、みなさんはどうされているのでしょうか。テストメソッド内で System.getProperty("os.name") 等としてOS判定し、実行する処理を分岐させたりしているのでしょうか。 こんな感じで、アノテーションで実…

iText で大量の PDF をマージする

Java コードから PDF を取り扱う際には iText が便利で、Java が公用語の皆様はよく利用されていることでしょう。 PDF を結合して新たな PDF を作るには PdfCopy を利用するのが簡単です。しかし、大量の PDF を結合していくと、すぐに OutOfMemoryError が…

Spring MVC 3 のアノテーションスタイルで、複数の Submit ボタンがあるフォームに対応する

このようなフォームがあったとします。 <form action="/add/confirm" method="post"> <p><input type="text" name="name" /></p> <p><input type="text" name="age" /></p> <p> <input type="submit" name="confirm" value="確認" /> <input type="submit" name="back" value="戻る" /> </p> </form> これに対応する Controller のアノテーションは以下になります。params …

ジェネリクスがらみで各種 Java コンパイラーの挙動が異なる件

自分でもまだエラーの原因を特定できていないので、とりあえずメモレベル。 import java.util.ArrayList; import java.util.List; public class Foo {} class X<T extends X<T>> {} class Y<T extends X<T>> {} class Fuga { <T extends X<T>> void foo(Y<T> y) {} void main() { List<Y<? extends X<?>>> list = new ArrayList<Y<? extends X<?></y<?></y<?></t></t></t></t>…

寄付した内容まとめ

震災関連ネタ。 寄付に使ったサービス (2011/03/22時点) 楽天ポイントで寄付 1440円 (http://checkout.rakuten.co.jp/donation/index.html 〜2011/05/31) ニコニコ動画で寄付 4000円 (http://www.nicovideo.jp/bokin) SBIポイントで寄付 480円 (https://park…

MIME エンコードされた email の Subject をデコードする

メモしておかないと忘れそうなので。 # email.parser.Parser と email.header.decode_header をつかう >>> from email.parser import Parser >>> from email.header import decode_header # テキストファイルで保存されている email を開き、パースする >>> …

同じ型どうしのオブジェクトのプロパティを比較する

オブジェクトのプロパティを比較して、異なるプロパティの値だけを取り出す処理が必要になったのですが、せっかくなので汎用的な形として実装してみました。 commons-lang と SpringFramework を使用しています。頑張れば標準ライブラリでもできるのでしょう…

アノテーション使用時に SpringFramework がデフォルトで設定するコンポーネント名をカスタマイズする

SpringFramework も、アノテーションを使用してBean定義を行う案件がだいぶ定着してきたように思います。そんな中で、 interface を FooBarBaz を定義して、それを implement するクラスを FooBarBazImpl という名前で作りなさい そのとき、コンポーネント名…

SpringFramework と Velocity の統合

SpringFramework 上のコンポーネントとして Velocity を使いたいという状況は、割とよくあるのではないかなと思っています。プレゼンテーション層に Velocity を採用するパターンもありますが、アプリケーションから定型のメールを送信するケースなどでも、…

iBATIS の TypeHandlerCallback で getter.wasNull() するときの注意点など

iBATIS*1には、データベース型とエンティティの型を独自にカスタムしたい場合、いわゆるJDBCの自然なマッピングではない型を使用したいというニーズのために TypeHandler の拡張ポイントである TypeHandlerCallback を提供しています。特定のJava型*2にDBの…

hamcrest の Matcher を独自拡張 - java.util.Date 版 closeTo

テスト対象クラスの内部で new Date() しているようなコードをテストする場合、テストクラス側で new Date() した値とはミリ秒程度の誤差が出てしまうことがあります。 hamcrest の Matcher で、double の誤差を許容するためのメソッド closeTo があります。…

Step by Step Scala [vol.01]@scala-be 備忘録

Step by Step Scala [vol.01]@scala-be*1に参加した。 会場で記録したメモを忘れないうちにblogに載っけとく。鉄は熱いうちに打て。 テーマ:インタプリタに色々打ち込んで実験してみよう val と var の違い → val 宣言された変数は再代入不可 (Java でいう …

配列を分割する(Generics版) ※追記あり

配列を指定サイズで分割したい! なんてシチュエーションは少ないかもしれませんが、そんな数少ないシチュエーションに先日遭遇しました。 自分が必要としたのは String[] の分割処理だったのですが、せっかくですので、汎用版を作ってみました。 package ut…

ミラー付収納棚を購入した

子供が寝返りの練習を自発的にやり出したので、そろそろ家具の心配をしなければならなくなってきました。取り急ぎ、段ボールに無造作に詰められているボードゲームの格納先兼全身鏡として、ミラー付収納棚を買いました。http://www.dinos.co.jp/p/1281201238…

Spring Framework 3.0-M3 をビルドする

やたら時間がかかったり、OutOfMemory したりと悲しい思いを何度もしたので、せめて同じ悲劇が繰り返されないようにと Web 上に記録を残します。 事前準備 ant をインストールして、コマンドラインから使えるように PATH を通しておく。 環境変数 ANT_OPTS …

山崎元さんの「資産運用実践講座」がすごく良い

仕事が落ち着いてきて、時間的余裕がある程度確保できるようになってきたため、読書量が急激に増えた。その一方で書籍購入代が・・・。 というわけで、最近読んだ本。 資産運用実践講座I 投資理論と運用計画編作者: 山崎元出版社/メーカー: 東洋経済新報社発…

最近読んだ本

読んだ本ネタばかりで恐縮ですが。 入門Mercurial Linux/Windows対応作者: 藤原克則出版社/メーカー: 秀和システム発売日: 2009/01/20メディア: 単行本購入: 10人 クリック: 220回この商品を含むブログ (63件) を見る何ヶ月か運用業務で色々とスクリプトを書…

最近読んだ本

まつもとゆきひろ コードの世界?スーパー・プログラマになる14の思考法作者: まつもとゆきひろ,日経Linux出版社/メーカー: 日経BP社発売日: 2009/05/21メディア: 単行本購入: 50人 クリック: 1,711回この商品を含むブログ (110件) を見るなかなか面白かった…

Proxy 環境下で Gnuwin32 をインストールする

ちょっと Windows で Unix 的コマンドが使いたいけど、Cygwin を使うほどでは・・・という自分のような中途半端な人間には、Gnuwin32*1 はいい感じのソリューションだったりするわけです。 今月から少し仕事の環境が変わりまして、新たにPCのセットアップを…

スコープの短いコンポーネントの取得

暇つぶしネタ。 S2 などの DI コンテナを使っていると、sintleton コンポーネントから prototype などの、よりスコープの短いコンポーネントを取得したいケースがあります。 この場合、単純に DI するだけではうまくいきません。 public interface BarServic…

最近読んだ本

敗者のゲーム(新版) なぜ資産運用に勝てないのか作者: チャールズ・エリス出版社/メーカー: 日本経済新聞社発売日: 2003/12/04メディア: 単行本購入: 5人 クリック: 42回この商品を含むブログ (68件) を見る名著ですが、今まで読んだことがなかったので読ん…

最近読んだ本

経験ゼロでもできるプログラミング現場の単体テスト作者: 片桐一宗出版社/メーカー: 翔泳社発売日: 2009/05/29メディア: 単行本(ソフトカバー)購入: 11人 クリック: 564回この商品を含むブログ (25件) を見るユニットテスト本。解説はJUnitベース。「無理…

ニコニコ動画のとある動画に広告ポイント5000ptを投下した件

少し前の話になりますが、ようやくまとめる時間が取れたので記事にしました。 経緯、動機とか ocs@max747 広告ポイント5000点つっこんでみた。 鏡音リン オリジナル曲『Ever』 http://www.nicovideo.jp/watch/sm3381726 (00:00)(2009-06-02 23:34:18) link o…

ニコニコ動画の再生数、コメント数、マイリス数を定点観測するスクリプト

某氏から「最近日記書いてないですね」と言われたので書きますよー。 とある事情から、ニコニコ動画の特定の動画に関して再生数、コメント数、マイリス数の伸びを観測する必要が生じたため、観測用のスクリプトをでっち上げてみました。 情報の取得には、ニ…

直感は意外とあてにならない?

結城さんの日記に面白い問題がありました。 ある病気にかかっているかどうかを見分ける検査があるとしましょう。その検査の確かさは95%とします。つまり、 * その病気に実際にかかっている人100人に検査すると、正しく陽性になる人は95人いて(誤って陰性に…

ドキュメントルート下に svn リポジトリを置こうとしてハマる

svn

新しく自宅にサーバを用意したので、svn の設定をしたところ、svn co で以下のようなエラーが出た。 svn: Repository moved permanently to 'http://localhost/svn/central/'; please relocateなんだか HTTP 301 っぽいエラー。 色々と設定変更してみるも、…

10分コーディング

via http://ameblo.jp/programming/entry-10001721422.html 15分くらいかかったのでダメプログラマです! package example; public class Main { public static void main(String[] args) { Cards cards = new Cards(); dump(cards.deal(4, "123123123")); d…

S2Dao の IN 句で 1000 件以上のリストを渡すにはどうするか

DBMS に Oracle を使っている場合、Oracle の制限により IN 句には 1000 件までしかリストを記述できません。そのため、S2Dao のバインド変数で 1000 件を超えるサイズの配列や List を渡すと、それがそのまま変数展開されてしまい SQL 構文エラーとなってし…

S2Dao の SQL コメントでハマッたこと

落ち着いてきたので、今回係った開発プロジェクトで実際にあったハマリネタをひとつ紹介します。 select tab1.col1 from tab1 where col1 = 'foo' /*IF param=='hoge'*/ and col2 = 'bar' /*END*/ と書いたとき、IFブロックが想定通りに評価されません。 S2D…