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

ymir-0.9.6を公開しました

本日のSeasar Conference 2008のタイミングに合わせる形で、昨日ymir-0.9.6を公開しました。実に1年近くぶりのリリースです。でもここから1.0.0リリースまでは1ヶ月くらいの予定です。頑張ります。http://ymir.sandbox.seasar.org/news/20080905ところで0.9.…

T2+ZPT

T2はビューテンプレートエンジンを選ばないため、もちろんZPTとも利用可能です。ZPTはすばらしいテンプレート言語なのですが、どうもJavaの世界ではイマイチ普及しない(って当たり前か)。ということでみなさんにぜひZPTを使ってもらおうと、T2とZPTの連携…

T2 0.3リリース

部品化指向のWebフレームワーク「T2」の初期バージョンであるバージョン0.3がリリースされました。http://d.hatena.ne.jp/shot6/20080902#1220349253私も微力ながら開発に協力しています。みなさんぜひ使ってみてフィードバックをいただければと思います。T2…

実行可能WARファイルの作り方

HudsonのWARはサーブレットコンテナに配備して動作するが、次のようにすることで単体で動作させることも可能になっている。 java -jar hudson.war 一体どういう風にしてこのようなことを実現しているのだろうと思い調べてみた。結果: 軽量サーブレットコン…

@SuppressWarningsアノテーションのvalueプロパティに指定できる値

Eclipseを使っているとQuick Fixの候補としてよく登場する@SuppressWarningsアノテーション。このアノテーションのvalueプロパティには"unchecked"等が指定できるが、指定できる文字列としては他に何があるのだろうか。というわけで調べてみた。試しにEclips…

chunkedの制御

Tomcat6ではレスポンスとして「Transfer-Encoding: chunked」なレスポンスを返すことができるが、この制御がどう行なわれているか分かっていなかったので調べてみた。具体的にはTomcat6の今日の時点でのtrunkのHttp11Processorクラスの実装を見てみた。http:…

Transitive Path Strategyはやはり見通しが良い

今日はあるアプリを試しにT2で作ってみた。やりたいことは割とサクサクできる感じ。もちろん完成度はまだまだだが、そんなのは強力なコミッタ達と将来使ってくださるであろう大勢のユーザによってあっという間に解消されるだろう。今はサンプルを作ってみて…

JavaBeansのプロパティ名とGetter/Setter名

JavaBeansのプロパティ名とGetter/Setter名の対応について、何となくは知っていたがきちんと調べてたことがなかったので調べてみた。The JavaBeans 1.01 specificationまずプロパティ名からGetter/Setter名を生成する際のルールについて。これは「8.3 Design…

ログイン成功時のリダイレクト先として任意サイトの指定が可能であってはいけない

Web

ちょっと昔の記事だがメモとして貼っておく。ログイン成功時のリダイレクト先として任意サイトの指定が可能であってはいけないログイン成功時のリダイレクト先として任意サイトの指定が可能であってはいけないというのは覚えているんだけど、いつもその具体…

ぶり1.0.0+S2.3

ぶり1.0.0はSeasar2.4との組み合わせで動作するが、Seasar2.3ベースのフレームワーク上でぶりを使いたいという話を受け、ぶりがSeasar2.3との組み合わせで動作するかを調査した。動くらしいとは聞いていたので多分動くかなと思い調査。ぶり1.0.0をsvnからチ…

Seasar Conference 2008 Autumnで話すことになりました

9月6日開催のSeasar Conference 2008 AutumnでYmirについて話すことになりました。http://event.seasarfoundation.org/sc2008autumn/Session#f4内容としては、おさらいとして簡単にYmirの特徴と、前回発表時からの新機能の紹介、そして今後のロードマップ等…

「Google ストリートビューは新しくない」

IT

「Google ストリートビューは新しくない」という記事を読んだ。はっきり言って負け惜しみにしか聞こえなかった。この手のサービスは新しいか新しくないかではなく、実際にやったかやらなかったか、である。もちろん全く意味もなく採算も見込めずサービスを提…

YmirとJavaRebelの連携

YmirではS2のHOT Deploy機能を使ってアプリケーションの再配備なしにコードの変更を動作中のアプリケーションにリアルタイムに反映させることで、開発のテンポアップを図っている。HOT Deploy機能はYmirの自動生成機構のようなリクエストドリブンの自動生成…

m2eclipseプラグインのWorkspace Resolution機能

m2eclipseプラグインの0.9.5系(sonatype.org開発版)にはWorkspace Resolution機能というのがあって、これを有効にすると、依存しているJARのプロジェクトがワークスペースに存在する場合、JARを暮らすパスに通す代わりにワークスペースをプロジェクト参照…

デザイン変えた

etc

ソースコードが見づらいというご指摘を受けたので、デザインを変えてみました。どうでしょう?

アノテーションオブジェクトの代入

アノテーションはAnnotatedElementに付与するものであって、それを取得するにはAnnotatedElement#getAnnotation()などを使うのが通常である。次のように、直接アノテーションを変数に代入したりはできない。 Anno anno = @Anno("hoehoe"); // ... NG ところ…

HttpServletRequest#getRequestURL()とforward

Javadocによると、HttpServletRequest#getRequestURL()は クライアントが要求を作成するために使用した URL を再構築します。- JavaTM 2 Platform, Enterprise Edition, v 1.3.1 API 仕様 となっているので、常にリクエストURLを返すのかと思いきや、forward…

拡張for文でできそうでできないこと

拡張for文でできそうでできないこと。 List<String> list = ...; String str = null; for (str: list) { ... } これができないので、for中でなんらかの条件を満たす値をlistから見つける処理を書く場合等は、見つけた値を格納する別の変数を定義する必要がある。以下</string>…

型パラメータつき引数

ちょっと誤解していたので書いておく。 ArrayList<String> list = new ArrayList<String>(); で、list.getClass()が返すClassオブジェクトは型パラメータ(String)の情報を持たないが、 public void hoe(List<String> list) { } のhoeメソッドに対応するMethodオブジェクトは、型パ</string></string></string>…

Freemarkerの「??」演算子

Freemarkerでnullチェックをするための「??」演算子はfreemarker-2.3.6では使えなかった。2.3.9にバージョンアップしたところ使えた。

Boolean.TYPEとboolean.class

プリミティブ型に対応するラッパ型が持つ「TYPE」という定数はプリミティブ型のクラスを表す。 例えばBeoolean.TYPEはbooleanのクラス型を表すが、これはboolean.classと同じ。 System.out.println(boolean.class == Boolean.TYPE); → trueところで次のよう…

アノテーションオブジェクトの生成

アノテーションAnnoのオブジェクトは@Annoが付与されているクラスやメソッドに対応するClassやMethodオブジェクトについてAnnotatedElement#getAnnotation(Anno.class)を呼び出すことで取得できるが、新たに生成したいことがある(かもしれない)。そこでい…

throw null

なんとなく気になったので試してみた。 public void test() { RuntimeException ex = null; throw ex; } 実行すると「throw ex」のところでNPE。当たり前と言えば当たり前か。

いまさらdouble-checked locking問題

友人に聞かれたので、ちょっとあいまいになっていた記憶を呼び覚ますためにdouble-checked lockingについて調査。以下のページにまとめられていた。 http://blogs.wankuma.com/nagise/archive/2007/08/24/91598.aspx 要約: JDK1.5からはメモリモデルが変更…

Maven Integration for Eclipse

いわゆるm2eclipseプラグイン。久々に見てみたら状況がいろいろ変わっていた。まずEclipseのUpdate SiteのURLが変わっていた。 (旧)http://m2eclipse.codehaus.org/update/ (新)http://m2eclipse.sonatype.org/update/ バージョンも、春くらいの時点では…

Tomcatの自動デプロイ機構

Tomcat(5.5。6も多分そう)の自動デプロイ機構は、 Tomcatの稼働中にWARが更新されると、WARに対応するディレクトリが存在してもそれを自動的に削除し、WARを再展開する。 Tomcatを停止した状態でWARを更新してTomcatを起動した場合は、WARに対応するディレ…

Tomcatのデフォルトのエラー画面の差し替え

Tomcatのデフォルトのエラー画面を差し替えるには、TOMCAT_HOME/conf/web.xmlにタグを書くのが簡単。 <error-page> <error-code>404</error-code> <location>/error/404.html</location> </error-page> ここで注意すべきは、locationの値は存在するコンテキストについてはそのコンテキスト相対パス、存在しないコンテキストについては…

Tomcatののの参照方法

Tomcat5.5のserver.xmlのセクションに例えば以下のように書いたの値をWebアプリケーションから参照する方法。 <Environment name="simpleValue" type="java.lang.Integer" value="30" /> Webアプリケーションのweb.xmlに <resource-env-ref> <resource-env-ref-name>simpleValue</resource-env-ref-name> <resource-env-ref-type>java.lang.Integer</resource-env-ref-type> </resource-env-ref></environment>

ブラウザのキャッシュの挙動

Web

PRGパターンを使ったWebアプリケーションを実装するに当たって、最後のGetの際に最新のページではなく、以前のキャッシュされたページが表示されてしまうことがあるのではないかと思い調査している。例えばform.jspに以下のようなフォームとリンクを設置する…

Strutsのタグ

Struts1.3.8のタグの話。DBに入っているURLをタグで出力しようとして、href属性を使えばいいのかなーと思ったのだが、href属性の値はHTMLエンコードされずに出力されてしまう。JSP: <% String url = "http://www.example.co.jp\" onclick=\"alert('hello!')…