トップ 最新 追記

niche diary

2003|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|04|11|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|
半期 四半期 全カテゴリ
Teeda OLUG Java-Kuche
[HOME] [AGILE] [OBJECT] [PROGRAMMING] [JAVA] [LINUX] [OKINAWA] [BBS] [DIARY]

2006-10-01 [J] [長年日記]  この日を編集

_[sports]ランニング

4kmくらい。

体重75.6kg、体脂肪率24.6% むぅ。

_10月の月間目標

  • 体重5kg減
  • 読書4冊


2006-10-03 [J] [長年日記]  この日を編集

_お見舞い

盲腸で入院した新部長のお見舞いへ。お見舞いとして漫画を数冊差し入れ。


2006-10-05 [J] [長年日記]  この日を編集

_[Nancle]NancleNankuruアイデアベース

public class Fuga {
    @ActionURL("/fuga/fuga")
    @Pages({@Page(status="bb", page="bb.jsp"), 
        @Page(status="cc", page="cc.jsp")})
    @ErrorPage("aa.jsp")
    public String fuga(FugaForm fugaForm){
        return "bb";
    }
}

みたいに書くと、例えばブラウザからhttp://〜/fuga/fugaって入力すると、このfugaメソッドが呼び出される。

FugaFormの指定はあってもなくてもOK。リクエストパラメータからFugaFormのセッターメソッドのシグネチャとパラメータ名が一致するものをセッターメソッドを呼び出してFugaFormに*1設定する。

fugaメソッドの戻り値の結果で遷移先を指定可能。

メソッドより例外が帰った場合は@ErrorPageの内容へ遷移。

一通り実装はできた。テストを全然作ってないので、テストを充実させて一旦公開しようかな。

Strutsよりはお手軽に使えると思う。

バリデーション周りはさっぱりなのでこれから設計します。

_java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet

Sysdeo Tomcatプラグインで開発用クラスローダをONにすると、こんなエラーになる。原因不明(T-T)(T-T)(T-T)(T-T)(T-T)(T-T)

つーか、Nankuru->Nancleってリファクタリングしてたらでるようになった。

なんとなく、今まではたまたま動いていて、動かなくなったのが正しい(?)っぽいけど、解消方法が分からん。

とりあえず、開発用クラスローダをOFFにすれば良いんだけど、いちいちJarに固めてWEB-INF/libに放り込まないと確認できないのは辛い。

なんとかならんかなぁ。

*1 FugaFormはセッターゲッターのみのクラス


2006-10-06 [J] [長年日記]  この日を編集

_[Nancle]顧客登録のサンプル

を作ってみた。 Nancleは完全なPOJOベースなのでCustomerManagerみたいなクラスに顧客に関連する処理をまとめて記述することが可能。

それぞれのURLとメソッドの対応は@ActionURLアノテーションにて指定する。

public class CustomerManager {

    /**
     * 顧客登録初期画面の表示。
     */
    @ActionURL("/customer/input.do")
    @Pages({@Page(status="success", page="/mayaa/customer_input.html")})
    public String input() {
        return "success";
    }

    /**
     * 顧客登録確認画面の表示。
     */
    @ActionURL("/customer/confirm.do")
    @Pages({@Page(status="success", page="/mayaa/customer_confirm.html")})
    @ErrorPage("/mayaa/customer_input.html")
    public String confirm(CustomerForm cf) {
        NancleContext.getRequest().setAttribute("customerForm", cf);
        return "success";
    }
    
    /**
     * 顧客登録完了画面の表示。
     */
    @ActionURL("/customer/regist.do")
    @Pages({@Page(status="success", page="/mayaa/customer_regist.html")})
    @ErrorPage("/mayaa/customer_input.html")
    public String regist(CustomerForm cf) {
        // DBに書き込んだりする処理
        //...
        //...
        NancleContext.getRequest().setAttribute("customerForm", cf);
        return "success";
    }
}

バリデーションは思い切ってシンプルに画面の値を受け取るFormクラスにvalidateメソッドが存在する場合、それを呼び出すだけにした。あと、基本的なチェックメソッドを用意。

ここでエラーが発生した場合は、各メソッドで指定してある@ErrorPageで指定されたページに遷移する。

public class CustomerForm {

    private String firstName;
    private String lastName;
    private String telNo;
    private String address;
    private String eMail;
    
    public void validate() {
        Errors errors = NancleContext.getErrors();
        if (Validates.required(lastName)) {
            errors.add("姓名-姓が未入力です。");
        }
        if (Validates.required(firstName)) {
            errors.add("姓名-名が未入力です。");
        }
        if (Validates.email(eMail)) {
            errors.add("メールアドレスが正しくありません。");
        }
    }

...セッターゲッター
...
...

画面はmayaaで作ってみたのだけれど、エラーが発生した場合に入力画面に値を戻すために。

<input id="first_name" type="text" value="" />
    <m:if m:id="last_name" test="${request.getAttribute(&quot;customerForm&quot;) != null}" >
        <m:echo m:id="last_name">
    	    <m:attribute name="value" value="${customerForm.getLastName()}" />
	    </m:echo>
    </m:if>

みたいに書いてみたのだけれど、customerFormがrequestに存在しない場合うまく動かない。

customerFormの存在チェックがまずいみたい何だけど、回避策が分からないのでmayaaメーリングリストにて質問中。

うまくできたら、バージョン0.0.1として公開しようかなぁ。


2006-10-07 [J] [長年日記]  この日を編集

_[Nancle]Nancle 0.0.1β

Nancle 0.0.1βを公開してみます。

Nancleとは、WebでMVCモデルを実現するためのPOJO+アノテーションベース、定義ファイルレスのフレームワークです。

動作環境はJDK5.0以上、Servlet/JSP Spec 2.4/2.0以上であれば動作すると思います。

まずは、顧客登録のサンプルを公開しますので、是非お試しください。

Nancleはまだβバージョンです。お試しいただき、色々なご意見をいただけると幸いです。

ダウンロードはこちらから

_[Nancle]Eclipseプロジェクト

NancleExampleのEclipseプロジェクトも公開しておきます。

Sysdeo Tomcatプラグインが必要です。

このプロジェクトをインポートするれば、Nancleを簡単に試すことができると思います。

ダウンロードはこちらから


2006-10-08 [J] [長年日記]  この日を編集

_ロンドン杜公園

意外と寒かった。


2006-10-09 [J] [長年日記]  この日を編集

_体中がバキバキ

昨日公園でちょっと子供達と遊んだだけで、体中がバキバキ。

年齢を感じるねぇ。やっぱり日頃から運動しないとね。

_都ホテルのランチ

義理の母とうちの家族で言ってきました。

値段の割には結構美味しい。見晴らしも良いしこれは良いかも。

_識名園

食後の散歩に識名園へ。天気も良くて、風が気持ちよかった。

_那覇祭り

夜は那覇祭りへ。

会場まで約30分かけて歩いていったので疲れた。

でも途中で潮が引いているときに止めたと思われる車が数十台水没仕掛けているのが見れたりして良かった。(w

那覇祭り最終日と言うことで、今日の花火は昨日、一昨日より盛大だった気がする。

祭り会場でオリオンビールを二杯飲んでご機嫌に帰ってきました。


2006-10-10 [J] [長年日記]  この日を編集

_ITEPリファクタリングとデザインパターン

今日から2日間、ITEPの講座、リファクタリングとデザインパターンを受講してきます。

もうお前は受けなくて良いんじゃない?と言う声もちらほらありましたが。合法的に会社をさぼれるこんな機会を逃す訳がありません。(w

どんな人が講師で、どんなことを喋るのかもすごく興味あるしね。

_[Nancle]バリデータ

From ITEPの教室より(w

バリデータはこんな感じのインターフェイスでいこうかと。

@Validates
public interface Validates {

    @Email("E-Mailアドレスのフォーマットが正しくありません。")
    @Require("E-Mailは入力必須です。")
    public String E_MAIL = "emai";
    ...
    ...
}

で、定数に指定されている文字列と同じものがRequestのパラメータに存在すれば、そいつをチェック対象とすると。


2006-10-11 [J] [長年日記]  この日を編集

_リファクタリングとデザインパターン

2日目終了。と言うわけで感想。

リファクタリングはテストが大事と行っていたのに、テストは初日に少しJUnitの説明があっただけ。せっかくリファクタリングの演習やってるんだからJUnitも絡めれば良いのに。

あと、この講座の対象はJava初心者だと思われるのに、XPだのテストファーストだのと言った単語を入れるのはいかがなものかと。

演習はなんだかJavaの演習をやっている感じで退屈だった。あと、講師の人がリファクタリングはデバッグの延長と言っていたのが気になった。

総じて退屈な講習だったけど、理解の再確認という意味では良かったかも。改めて自分のすごさが分かった。(w

社内の内定者向けのJava講師をやることになりそうなんだけど、こっちに向けての収穫もあったし、受けて良かったかな。

_[sports]ランニング

4kmくらい。

体重76.4kg、体脂肪率23.4%

先週計ったときは75kgだったのに(; ;)ホロホロ

なかなか超えられない75kgの壁。


2006-10-12 [J] [長年日記]  この日を編集

_[Nancle] http://nancle.sourceforge.jp/

オープンしてみました。

_[liquor]残波(黒)


2006-10-14 [J] [長年日記]  この日を編集

_hikiのamazonプラグイン

画像が持ってこれなくなっていたので、tDiary-2.1.x系のamazonプラグインをhikiに移植。

とりあえず、untaintを至る所につけて上手く動いた。^^;

やったこと。

  1. tDiaryのmisc/plugin配下のamazon.rb、amazon、ja/amazon.rbをhikiのpluginフォルダへコピー。
  2. hikiconf.rbにて@secure=falseを設定
  3. 37行目のopen( url, :proxy => proxy ) {|f| f.read}をopen( url.untaint, :proxy => proxy ) {|f| f.read}に変更。
  4. 137行目のxml = File::read( "#{cache}/#{asin}.xml")をxml = File::read( "#{cache}/#{asin}.xml".untaint)に変更。
  5. 140行目のFile::open( "#{cache}/#{asin}.xml", 'wb') {|f| f.write( xml )}をFile::open( "#{cache}/#{asin}.xml".untaint, 'wb') {|f| f.write( xml )}に変更。


2006-10-15 [J] [長年日記]  この日を編集

_豊見城市長選

投票に行ってきました。投票した人が当選してくれるとうれしいなぁ。

_オリオンビールとチェダーチーズとKINESIS

チーズをつまみにオリオン飲みながらプログラミング。良いねぇ。今度会社の残業でも試してみよう(w


2006-10-16 [J] [長年日記]  この日を編集

_[Nancle]Nancle0.0.1リリース

アノテーションでのバリデータを実装したNancle0.0.1をリリースしました。

これで最低限の機能は実装できたかな?

http://nancle.sourceforge.jp/

http://sourceforge.jp/projects/nancle/files/


2006-10-17 [J] [長年日記]  この日を編集

_0.3ミリのミニボールペン

本体も細いやつ。手帳用に欲しいんだけど、どっかにないかなぁ。

_体調悪い

昨日から微妙に吐き気が収まらない。

めまいもする。貧血なのかなぁ?

_マングース?

帰りの高速の南風原南あたりでマングースらしき生き物が高速を横切っていった。こんな所に野生のマングースなんているのね。

本日のツッコミ(全4件) [ツッコミを入れる]

_ zu [トラックバックうまくいかないのでここに。 http://www.zukeran.org/shin/funifuni/..]

_ t-doi [>zu様 ご紹介ありがとうございます。手帳に挟んでも違和感がないよう、なるべく細いのを探してます。紹介してもらったや..]

_ t-doi [トラックバックも直しました。m(__)m]

_ zu [http://www.t-doi.org/とhttp://t-doi.org/が両方使えるんですね。こういうのはSE..]


2006-10-18 [J] [長年日記]  この日を編集

_仕事

ぼちぼち忙しくなってきた。

今、上海で作られたPGの品質向上やってるんだけど品質悪すぎ。

あそこまで細かい仕様書提示してこのできじゃぁねぇ。

こりゃしばらくは中国に仕事取られる事はないな。(w


2006-10-19 [J] [長年日記]  この日を編集

_嫁さんが

体調悪いとの事なので、残業も早々に帰宅。

そんなに大したことはないみたい。


2006-10-20 [J] [長年日記]  この日を編集

_送別会

協力会社の人が介護系の学校に入り直すために会社を退社されるとのことで、その送別会がありました。

この業界からまったく異なる業界へ行くなんてすごく勇気のいることだと思います。頑張ってくださいね。


2006-10-21 [J] [長年日記]  この日を編集

_ビーチパーティ

会社のビーチパーティが開催されたので参加してきました。

天気も良くて気持ちよかったー。


2006-10-22 [J] [長年日記]  この日を編集

_[Nancle]Nancle 0.1.0リリース

Seasar2との連携機能を実装したNancle0.1.0をリリースしました。

http://nancle.sourceforge.jp/index.php?FrontPage


2006-10-24 [J] [長年日記]  この日を編集

_お休み

昨日から吐き気と腹痛と微熱があるので今日は会社をお休み。

病院行こうか悩み中。もう少し様子を見てみよう。


2006-10-25 [J] [長年日記]  この日を編集

_[S2]Seasarを利用したwebアプリを2つデプロイした場合

webap1,webap2それぞれでSeasar2を利用したい場合、両方のweb.xmlにS2ContainerServletを書くと思うんだけど、片方のS2ContainerServlet(app.dicon)しか初期化されない。Singletonだからね。

しかもこの場合、container.getComponent("hoge")とかって文字列指定すると、Seasar2を経由してwebap2からwebap1のオブジェクトのインスタンスが取得できてしまう。クラスがロードできないからリフレクションもできないし、実害ないのかなぁ?


2006-10-26 [J] [長年日記]  この日を編集

_病院へ

吐き気が治まらないので病院へ。

診察まで2時間も待たされた。診断結果は腸炎だって。

今年2月頃にもこの病院を受診したんだけど、同じように腸炎って言われたなぁ。

やぶなんじゃない?


2006-10-28 [J] [長年日記]  この日を編集

_Java Kuche役員会

昨日20時間ぐらい爆睡していたおかげか、体調も少し良くなってきたので、午後からJava Kuche役員会へ。

次回勉強会はXP祭りのチュートリアルみたいなことをやることに。面白そうだけど、参加者集まるかなぁ?

帰りにzu様に教えていただいた、一銀通りの安木屋へ。完全に希望通りのボールペンはなかったけど、ほぼ希望を満たすのがあったのでそれを購入。

で、この安木屋でフランクリンプランナーを発見!衝動買いしようかと思ったのですが、自分がいつも腰に下げているポーチ(?)に入らないので思いとどまりました。でも欲しいかも。持ち歩く手段を考えて買いだな。


2006-10-29 [J] [長年日記]  この日を編集

_サンエー潮崎シティーしおざきシティ

公園でも行こうかと思っていたけど、天気が悪かったので出来たばかりのサンエー潮崎シティーに行ってみました。

思っていたよりずっと広くてお店も多い!これは暇つぶしには良いところかも。でも行くまでの道が混んでるんだよねぇ。早く海沿いの道出来ないかなぁ。

本日のツッコミ(全2件) [ツッコミを入れる]

_ ga [んと、正確には「しおざきシティ」と、 ひらがならしいですよ(^^;]

_ t-doi [そうなんですか?それは知りませんでした。>ひらがな TV-CMはSHIOZAKI CITY(しおざきシティ)となって..]


2006-10-30 [J] [長年日記]  この日を編集

_あの試験

Hグループではおなじみの、あの試験がありました。

一昨年、じーわん受かっていたので、去年は免除だったけど今年再受験です。

一回じーわん受かったらもう二度と受けなくて良いと思っていたのに。


[HOME] [AGILE] [OBJECT] [PROGRAMMING] [JAVA] [LINUX] [OKINAWA] [BBS] [DIARY]