ひがやすを技術ブログ

電通国際情報サービスのプログラマ

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

2007年のSeasar2と今後

etc

2007年度のSeasar2のもっとも大きなテーマは、Seasar2.4,Teeda,S2Dao,Doltengを使ったさくさく感のある開発(HOT deploy)を実現することでした。 HOT deploy抜きに今のSeasar2を判断しても、正確な判断はできないと思います。HOT deployがなければ、あまり他…

Super Agile Struts開発記その11 - 遷移先の指定を簡易化

これまで、遷移先は、下記のように指定してきました。 @Result(name = "list", path = "/employee/list.jsp")1つだけならまだいいんですが、複数あるとちょっとうざったい。 @Results({ @Result(name = "list", path = "/employee/list.jsp"), @Result(name …

脱DTO

SAStrutsは、1ユースケースで1アクション。基本的には、Serviceクラスもなければ、DTOもありません。例えば、従業員の一覧に部署名も出力するには次のようになります。 <c:forEach var="e" items="${empItems}"> <tr> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> </c:forEach> @Result(name = "list", path="/employee/list.jsp") public class EmployeeAc…

tiles-defs.xmlなしのSuper AgileなTiles

TilesをJSPのみで使おうとすると、tiles:putで個別のレイアウトを指定するJSPとコンテンツ用のJSPを2つ用意しないといけないから、めんどくさいけど、tiles-defs.xmlを使うというのが、これまでのTilesの利用方法だと思う。 でもさぁ、tiles-defs.xmlのエン…

Railsの成功は枯れた技術を改良したところにあると思う

etc

最近、Strutsのソースコードを読みつつ、Super Agile Strutsを作っているわけですが、そこで気づいたことがあります。 Strutsは、確かに古さが目立つところがあるけど、結構わかりやすくて悪くないということ。 Railsは、実は、Struts、Hibernateのいいとこ…

Super Agile Struts開発記その10 - Validator

commons-validatorを使った検証は、フィールドにアノテーションをつけることで行ないます。 @Required @IntegerType public String arg1;メッセージを指定したい場合は、msg属性で指定します。 @Required(msg = @Msg(key = "errors.required"))メッセージの…

SeamとJBossToolsがやばい

etc

昨日、GavinにJBossToolsのデモを見せてもらいましたが、これがやばい。 もちろん良い意味で。 HOT deployでさくさく開発していくようすは、まるで私のデモのよう。HOT deployは、まだ完璧ではなくて、Hibernateが管理している部分とメッセージリソースは、H…

Gavin King

etc

Gavinに対して、怖いイメージを持っている人もいるんじゃないかと思いますが、あった感じはシャープなオニーチャンといった感じです。結構小柄。もちろん、私よりは、おっきいけど。 Webにでてくるようなやり取りを見てると、ちょっと性格がきつく見えるとこ…

WebBeans

etc

JBUGのセミナーでGavinから直接、WebBeansの仕様を聞かせてもらった。 EJB3、JSF、JPAとも必須じゃないんだね。それぞれの実装を必要と思えば利用できる感じ。これは、悪くないと思う。 WebBeansは基本的にはDIの仕様。SeamよりもGuiceに似ていて、Guiceより…

Super Agile Struts開発記その9 - 検証メソッド

検証をcommons-validatorではなくメソッドで行いたい場合は、引数がなく戻り値がActionMessagesのメソッドを用意し、そのメソッド名を@Executeのvalidate属性で指定します。 検証メソッドがエラーのメッセージを返した場合は、実行メソッドは呼び出されず、@…

好きを貫く

etc

「好きを貫く」よりも、もっと気分よく生きる方法 私は、プログラミングが好きではない。 じゃ、何でプログラマをやってるかって? 自分の力が発揮されるから。 私は大学のとき、ゴルフ部に入ったんだけど、半年でやめた。なぜって。 遠くに飛ばないから。 た…

Super Agile Struts開発記その8 - ActionFormの更新

ActionFormの更新機能をサポートしました。特徴的なのは、Strutsのタグを利用せず、JSTLのみ(html:formは使うこともあるかも)で開発ができることです。 例えば、nameプロパティを更新するには、つぎのようなJSPを用意します。 <form action="bbb2.do" method="post"> <input type="text" name="name" value="${name}"/> <input type="submit"/> </form>input系のタグのname属性を…

太るのが怖い

etc

何人かの方にもう少し太ったほうがいいといわれたけど、正直言うと私は、太るのが怖い。 子供のころ、デブっていじめられたから。 小学6年生のころは、体重が65kgくらいあったかなぁ。当時身長は、150cmくらいだったから、明らかに太ってるよね。 中学3年の…

Super Agile Struts開発記その7 - ActionFormの分離

SAStrutsでは、ActionとActionFormは、基本的に同じクラスで実装しますが、複数のActionで同じActionFormを共有したくなることもあるでしょう。 その場合、ActionFormをPOJOのDTOで作成し、Actionのプロパティに@ActionFormアノテーションをつけます。 publi…

Wii fit

etc

昨日、有楽町のビックカメラにWii fitを買いに行ったけど、売り切れだった。(;_;) 人間ドックの結果、体重が1.2kg増えて44kg、体脂肪が1増えて13.9だったんだよなぁ。まだ、微妙増だけど油断大敵。「ちりも積もればはぶになる」かもしれない(笑)。 年末、年…

Super Agile Struts開発記その6 - JSTL連動

JSTLと完全に連動できるようになりました。もちろん、JSTLやELがpublicフィールドを認識するし、HOT deployでメモリリークも起きません。よくあるHelloWorldのサンプルはこんな感じ。 package tutorial.web.hello @Result(path="/hello/world.jsp") public c…

常にフィードバックが得られる状態を保つ

etc

今回のSAStrutsのActionFormの機能を実装しようとしたときに、丸一日コンパイルが通らない状態が続いていました。DynaBeanの実装をどこに持たそうか悩んでいたためです。別にコードをあれこれ書いて試行錯誤していたわけではなく、StrutsとBeanUtilsのソース…

Super Agile Struts開発記その5 - BeanUtils

以前のエントリで、BeanUtilsとHOT deployをあわせて使うと、PropertyDescriptorが無駄にどんどんキャッシュされていってメモリリークする話を書きました。 http://d.hatena.ne.jp/higayasuo/20070725#1185340917 実は、問題はそれだけではなく、BeanUtilsは…

VisualBasic/Delphiの資産をWebアプリに簡単変換

etc

日経ソリューションビジネス(11/30号の52P)の「売れなきゃウソ!」のコーナーで、VisualBasic/Delphiの資産をWebアプリ(AIR/Flex)に簡単に変換するCoraleefという弊社のプロダクトを取り上げていただきました。ありがとうございます。 Coraleefのデモはこちら…

Super Agile Struts開発記その4

http://d.hatena.ne.jp/higayasuo/20071125#1195961089 で、*.doなんてかっこ悪い。/ユースケース名/アクション名で書けるようにします。 と書いたんですが、ServletMappingを/*にするとForwardでも自分に戻ってきちゃうからだめですね。Filterだと、Forward…

S2AOPの暗黙的インタフェース対応

現在のS2AOPでは、pointcutを指定しない場合、そのクラスが実装しているインターフェースのメソッドがすべて対象になります。 インターフェースありきの開発なら、便利な仕様だと思うのですが、今後の主流になると思われる暗黙的インタフェースを使うとなる…

Super Agile Struts開発記その3

バリデーションに対する質問がいくつかあったので、現状考えている仕様を書いてみます。 バリデーションは、commons-validatorによるものとvalidateメソッドによるものと2つ存在します。 commons-validatorによるバリデーションは、フィールドに指定します。…

Super Agile Struts開発記その2

Actionにリクエストが飛んできたとき、Actionクラスのメソッドで@Executeアノテーションがつけられているものを実行するようにします。 @Execute public String execute() { return "success"; }@Executeがついているメソッドが1つだけなら、デフォルトで実…

Super Agile Struts開発記

Super Agile Strutsとは、StrutsとSeasar2を使った開発をAgileに行なうためのフレームワークです。今回は、開発中に考えたことをそのまま書いてみようと思います。 Actionは、もちろんPOJOだよね。ActionFormなんていならない。リクエストパラメータは、Acti…

流れるようなインターフェースMap版

java-jaに流れるようなインターフェースでMapを組み立てる話が出ていましたが、Seasar2の2.4.18(もしかしたらもっと前かも)からは、Mapsクラスでその機能はサポートされています。 java-javaはhttp://www.lingr.com/room/java-ja/archives/2007/11/21#msg-18…

サイボウズ・ラボ見学

etc

ヨシオリがサイボウズ・ラボに面接に行くからついてきて欲しいというので、今日はサイボウズ・ラボにいってきます。半分は冗談だけど。 TAKESAKOさん(http://labs.cybozu.co.jp/blog/takesako/)、 西尾さん(http://labs.cybozu.co.jp/blog/nishio/)、 amacha…

BeanUtilsの流れるようなインターフェース

Commons-BeanUtilsの流れるようなインターフェース版を作成しました。 プロパティのコピーはこんな感じ。 SrcBean src = new SrcBean(); DestBean dest = new DestBean(); ... Beans.copy(src, dest).execute();特定のプロパティは除外したい場合は、exclude…

Seasar Conference 2007 Autumn終了

来てくださった皆様、どうもありがとうございました。スタッフ、スピーカの皆さんお疲れ様でした。 みなさん、楽しんでもらえたでしょうか。はてなを見る限りは、みんな楽しんでもらえたようで一安心です。 次のカンファレンスをよりよいものにするため、ア…

Seasar Conference 2007 Autumn

いよいよ本日開催です。 今回は、定員920人という大きな箱にいかに人を呼んで、満足していただけるかが大きなテーマでした。 そこで、私自身が、三時間連続で話すというチャレンジな企画を立て、カンファレンスの目玉として「流れるようなインターフェース」…

S2JDBC Tutorial

Seasar2.4.18-rc2からは、S2JDBC Tutorialが含まれています。 http://s2container.seasar.org/2.4/ja/downloads.html 解凍してEclipseのプロジェクトとしてインポートすると直ぐに使える状態になっています。 http://s2container.seasar.org/2.4/ja/s2jdbc_t…