Java

Doma で Joda-Time を使う

Annotation Processing を活用する Java製 ORM の Doma ですが、version 1.25.0 から外部のクラスをDomainとして使う事ができるという機能が実装されました。そこで、Joda-Time の DateTime などを使えるように DomainConverters を作成してみました。https:…

List内に最も多く出現するオブジェクトを取得するメソッド

Twitterでこんな処理はどう書けばいいんだろう?というツイートがあって、Scalaの勉強がてらちょっと書いてみました。仕様は以下の通り 引数で任意の要素型のListを受け取り、そのList内に最も多く出現するオブジェクトを取得する。 最も多く出現するオブジ…

Rails2.0 の Cookie Session を既存のJavaアプリに簡単に組み込める Servlet Filter

Rails2.0の Cookie Session Store 面白いですね。詳細については 2.0のcookie session storeを体感する といった記事が詳しいのでそちらに譲ります。この Cookie Session が RESTfull かどうかといった議論は正直どうでもよくて(個人的にはSessionて概念が発…

EnumのVisitorパターン

Enumに対してVisitorパターンを適用したいなーっていうケースはしばしばあったんですが、Visitor interface のメソッドオーバーロードのさせ方がわからずどうしたもんかな、と思ってました。しかしよくよく考えればオーバーロードの解決って静的だからこれで…

メンバーの順序

意見に対して別の論を示したら強烈にdisられてしまいました。議論にならないのは残念ですね。ともあれ、いい機会なのでメンバーの順序について掘り下げて考えたいと思います。といっても明確な結論は出なかったので、事実の確認と思考のメモということで。話…

generic の自己再帰定義活用

Haskell の Monad の bind は、戻り値が第一引数と同じ Monadインスタンスでないとなりません。そうでないとモナド則が成り立たないですしね。 そもそも Haskell の ad-hoc polymorphism では、同じ型クラスの違うインスタンスを混ぜて扱うことは許していな…

Singleton にするために enum を使う是非

以下思考の変遷。priority という値を持つ DTO と、その DTO の List を priority順で処理する必要があるロジックがありました。 ■Dto public class HogeDto { private short priority; public short getPriority() {return priority;} // その他の項目は省…

S2JDBCによる不変オブジェクト活用

以前から S2JDBC を利用しています。DTOとEntityを同じクラスにしたいため、public field は避けて JavaBeans にしていました。最初、S2Dao と同じ感覚で各種アノテーションをアクセサに指定してたんですが、これが何故か動かない。はて、と思って S2JDBC の…

Effective Java の Builderパターンとその拡張

Effective Java 第2版 (The Java Series)作者: Joshua Bloch,柴田芳樹出版社/メーカー: ピアソンエデュケーション発売日: 2008/11/27メディア: 単行本(ソフトカバー)購入: 77人 クリック: 936回この商品を含むブログ (264件) を見るちょいと前から Effecti…

Key-Value Store の統一インターフェイスが欲しい

最近 Tokyo Cabinet/Tokyo Tyrant で遊んでいます。分散楽しいです。最初は Key-Value型のデータストアっていっぱいあってどれがいいかなーとか比較してたりしたんですが、やっぱりエンティティをシリアライズするコストがどうにも気になって。BigTable みた…

countUp できる CountDownLatch

先日、CountDownLatch の Count をインスタンス生成してから決定したいというケースがありました。 JDK標準で提供されているモノでなんとかならないかと思ったのですが、要望に合致するものが見つけられなかったので書いてみました。 import java.util.concu…

Cache のクリア

以前に紹介した汎用オブジェクトCache [id:gakuzo:20090226:1235667999] ですが、キャッシュのクリアが無いと使えないよ!というご指摘を受けました。キャッシュのクリアについては、Cacheインスタンス自体を破棄すれば OK です。例としてはこんな感じに。 p…

Google、AppEngineでJavaのサポートを開始

http://jp.techcrunch.com/archives/20090326get-ready-for-java-on-appengine/ついに来た!Java対応のGoogle App Engineとも言うべき「Stax Networks」ローンチ ていうのを見かけて Stax で少し遊んでいたんですが、Google App Engine 本家もついに動き出し…

件数指定Iterator

前回の記事 [id:gakuzo:20090227:1235728271] で書いた take ですが、これも Iterator にした方が、遅延評価っぽくていいかもしれません。 import java.util.Iterator; public class FixedLengthIterator<T> implements Iterator<T> { private int index; private </t></t>…

Javaで無限リスト

Haskell の勉強をしていたら iterate という関数を見つけて非常に興味がわきました。 iterate は「初期値」と「現在の値から次の値を算出する関数」の二引数を与えると無限リストを生成してくれる関数です。 線形合同法を用いた疑似乱数列なども簡単に作れて…

Thread Safe な汎用オブジェクトCache

「DB負荷を減らしたいのでマスタテーブルはキャッシュして下さい><」だとか 「ファイルIOは重いのでテンプレートはキャッシュして下さい><」だとか 割と良く言われたりします。オブジェクトのキャッシュは手軽な高速化の手段だと思われているようですが…