2009-06-01から1ヶ月間の記事一覧

丁寧な設計

人にコーディングしてもらうなら端折ったりせず必須情報を見易く書いてなければダメなのだが。。。 public class TestMain{ public static void main(String[] args){ Runtime.getRuntime().addShutdownHook(new Thread(new _Hook())); // リスナ等の起動 //…

JettyでのMySQL接続

どうでもいいことだが、今まで規模の大きいプロジェクトで仕事をしてた時に、メンバのみならずPL の方々と 雑談をしていると、彼らは Tomcat を知っていても Jetty の存在を知らない。というのが多い。 結構、古くからあるオープンソースなのに。。。 彼らは…

ConfigurationException

Google guice でコーディング&デバッグをしていて、 時々、ConfigurationException を発生させてしまうことがある。 A binding to xxxx already exists on a child injector. どう見てもバインド定義に誤りがないといえるとき、 このエラーメッセージが出て…

オープンソースの中を

オープンソースの中を覗いて勉強になることがある。 Google guice の Servlet を利用する時。 web.xml の、<servlet-mapping>を Javaで記述というと、そんなことして何の意味がある!と思うだろうが、 実際に実行すると意外な機能に気づく。 GuiceServletContextListener を継</servlet-mapping>…

サーブレットでGoogle guice

サーブレットで Google guice を使用する場合、guice-servlet-2.0.jar を使う。 web.xml に、com.google.inject.servlet.GuiceFilter でフィルタを宣言。 サーブレットの初期化で com.google.inject.servlet.ServletModule を install のバインド定義したイ…

build.xml

今まで使い回しで記述してた Ant build.xml は良くなかった。 Ant-Contrib を使える状態が前提であるが、書き直すことにした。 <project name="Labo-build" basedir="." default="buildRequest"> <property file="build.properties"/> <property environment="env"/> <path id="my-classpath"> <fileset dir="${my.lib}"> <include name="*.jar"/>…</include></fileset></path></property></property></project>

Ant contrib

Ant contrib は便利だ。非常に助かる。 http://ant-contrib.sourceforge.net/tasks/tasks/

ESCキー

久々にLinuxを触りとまどったことと。。。 最新のTeraTermをWinXPにインストールして、Linuxサーバに、SSH接続、 → あるファイルを vi で編集中、入力モードを抜けるのに、ESCキーを打つのと同じ意味は何だっけ? Ctrl + p 押してすぐに、[ キーを押す。

rpm

久々にLinuxの世界の仕事に戻ってきた。かなり忘れてる。 つくづく自分がインフラや基盤構築関係に弱い人間なのかを痛感させられる。 やっぱりプログラミングが性に合ってる。 rpm コマンド 新規のみインストール rpm -ivh xxx.rpm アップグレードオプション…

@Named は便利

Google guice の Named アノテーションは、やはり便利であると思う。 あるクラスのインスタンスを Properties や、Map が示す状況で 初期インスタンスを作成したい時に、@Named( Key ) をつけた Field に初期値を Properties や、Map の Key が示す値にして…

ソートの見直し

ソートされるSetを作成するのに、いちいち Comparator 実装クラスを書くのは面倒くさくなった。 そこで、一定の Comparator 実装クラスをインジェクトさせる方法を考えた。 でも、当たり前の制約はある。 ソート対象のオブジェクトが Comparable#compareTo …

TypeLiteral進化の先は?

Google guice Binder#bind(TypeLiteral<T> typeLiteral) が、バージョン1.0 の頃から存在し、 List<String> 等のバインド等、 new AbstractModule(){ protected void configure(){ binder().bind(new TypeLiteral<List<String>>(){}).toInstance(new ArrayList<String>()); : みたいなことを</string></list<string></string></t>…

役立つかどうかわからない

以下のようなアノテーションが存在したときに、アノテーションを スーパー・インタフェースにするには、 Eclipse [設定]→[Java]→[コンパイラ]→[エラー/警告] ▼注釈(N) 注釈をスーパー・インタフェースとして使用 → 無視 を設定 import java.lang.annotation.…

インナークラスへのInject

Sample というオブジェクトが存在し Date型の属性値を必ず持ってるとします。 これを、オブジェクトの自然ソートでなくて、オブジェクトの属性値に よるソートして使用したい時に、今までは、、、 public class SampleSetWrapper{ private Set<Sample> sampleSet; pu</sample>…