<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/yasshii/">
    <title>yasshii @ ウィキ</title>
    <link>http://w.atwiki.jp/yasshii/</link>
    <atom:link href="https://w.atwiki.jp/yasshii/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>yasshii @ ウィキ</description>

    <dc:language>ja</dc:language>
    <dc:date>2010-11-28T12:15:37+09:00</dc:date>
    <utime>1290914137</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/yasshii/pages/32.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/yasshii/pages/1.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/yasshii/pages/30.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/yasshii/pages/31.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/yasshii/pages/29.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/yasshii/pages/28.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/yasshii/pages/27.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/yasshii/pages/26.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/yasshii/pages/21.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/yasshii/pages/15.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/yasshii/pages/32.html">
    <title>Click-Guice</title>
    <link>https://w.atwiki.jp/yasshii/pages/32.html</link>
    <description>
      ■勉強するお！
・目標
　最低限の薄めのフレームワークで業務アプリケーションを作成する枠組みを考える

・方針
　フロントエンド：Click
　サービス層　　：Guice
　DB層　　　　　：未定
　設計　　　　　：ICONIX
の妄想の元、基礎を勉強する。

・なぜClick?
１）楽しそう
２）HTMLの詳細隠蔽されてて楽そう
３）JSP使わなくていいから楽そう
４）XML書かなくてよいから楽そう

・なぜGuice?
１）S2もSpringも私用でかすぎるよ。
２）EE5は論外だよ。
３）でも今更DIなしはつらいよ。
４）Guiceはシンプルそうだしよさげじゃない？

----------------------------
・ClickでGuiceの連携
http://d.hatena.ne.jp/yyamano/20090203/p1
ちょう簡単。

・Guiceの基本
http://d.hatena.ne.jp/shot6/20070320#1174359874
 1.基本は@ImplementedByを使って実装クラスを指定。Namedを使うことはないだろう。
 2.UnitTestではJMock使うか、Mock差替モジュールを使う。モジュールは@ImplementedByに勝つのでそれでよい。
 3.メソッドインターセプターも、わりかしさすのは簡単。
 4.Guice2.0のProviderはよさそうなので、試す価値あり

・Click
ちょっと遊んでみたがだいぶ手になじむ感じ。
HTMLとCSSの知識つけないとなぁ。。。
 →http://www.scollabo.com/banban/
 →http://www.google.co.jp/search?hl=ja&amp;rls=com.microsoft%3Aja%3AIE-SearchBox&amp;rlz=1I7GGLL_ja&amp;q=html+%E5%AD%A6%E7%BF%92%E6%96%B9%E6%B3%95&amp;aq=0r&amp;aqi=g-r1&amp;aql=&amp;oq=HTML+%E3%81%8C%E3%81%8F%E3%81%97%E3%82%85%E3%81%86%E3%81%BB&amp;gs_rfai=


・設計モデル
１）ロバストを書く
２）バウンダリ＝Pageクラス
　コントロール＝Pageのアクションリスナ
　サブコントロール＝Guiceのサービス層
　DAOは未定。
----------------------------

勉強したこと
・Guiceさらっと動かす
・Clickさらっと動かす
・両者をくっつけた
・WTP

TODO
■Guice
・injectionの方法
・モジュール拡張方法
・インターセプター
・ライフサイクル

■Click
・基本
・テーブル
・フォーム
・画面遷移
・JavaScript使うパターンをいくつか
・戻る対策とか
・バリデーション    </description>
    <dc:date>2010-11-28T12:15:37+09:00</dc:date>
    <utime>1290914137</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/yasshii/pages/1.html">
    <title>トップページ</title>
    <link>https://w.atwiki.jp/yasshii/pages/1.html</link>
    <description>
      &amp;bold(){やっしーのJavaお勉強日記}
http://r.gnavi.co.jp/e290000/menu5.htm
http://wrs.search.yahoo.co.jp/S=2114736003/K=%E8%A6%AA%E6%96%B9%E3%83%90%E3%83%83%E3%83%95%E3%82%A1/v=2/SID=w/TID=jp0020_jp0020/l=WS1/R=2/VCA=1/wdm=0/IPC=jp/ln=ja/H=0/;_ylt=A3yTKjtBTctJpxcBgTCDTwx.;_ylu=X3oDMTFjYjVsaXFtBGNvbG8DdwRsA1dTMQRwb3MDMgRzZWMDc3IEdnRpZANqcDAwMjBfanAwMDIw/SIG=126st3kk5/EXP=1238146753/*-http%3A//www.amazon.co.jp/product-reviews/4806123315
[[GLOBIS DAY1]]
http://wrs.search.yahoo.co.jp/S=2114736003/K=IE6+Flex+apache/v=2/SID=w/TID=jp0013_jp0013/l=WS1/R=1/wdm=0/IPC=jp/ln=ja/H=0/;_ylt=A3xTxjgFR1xKHSkAjAqDTwx.;_ylu=X3oDMTFjZWFhYXVhBGNvbG8DdwRsA1dTMQRwb3MDMQRzZWMDc3IEdnRpZANqcDAwMTNfanAwMDEz/SIG=125dk21qm/EXP=1247647877/*-http%3A//d.hatena.ne.jp/dmpmorg/20090612/1244795718

[[はじめに]]

[[日本語リソース]]

&amp;bold(){JavaSE5} 
[[java言語仕様]]
[[generics]]     かいた
[[annotation]]　 かいた
[[enum]]　　　　  かいた
[[動的Proxy]]    アスペクトの実装手段に最適。前に試したが忘れたのでどこかでまとめる

&amp;bold(){自分で作ってみたもの} 
[[easydi]] genericsとenumとannotationのお勉強用に作成したもの

昔作成した料理wikiのバックアップ
[[料理バックアップ]]

#news(java)
#news(システム)
#news(経済)    </description>
    <dc:date>2010-03-18T00:57:38+09:00</dc:date>
    <utime>1268841458</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/yasshii/pages/30.html">
    <title>GLOBIS DAY1</title>
    <link>https://w.atwiki.jp/yasshii/pages/30.html</link>
    <description>
      hoge    </description>
    <dc:date>2010-03-10T23:01:37+09:00</dc:date>
    <utime>1268229697</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/yasshii/pages/31.html">
    <title>ついったふぁいんだー</title>
    <link>https://w.atwiki.jp/yasshii/pages/31.html</link>
    <description>
      ついったを検索するＨＴＭＬです
最近（今更だけど）、ちょっとJSONとかAJAXとか少しさわっとこうと思ってやってみた。

単に、ついったのWebServiceたたいてJSON形式で貰ってきたレスポンスをDHTMLでテーブルに
動的にデータかいてるだけです。

■つかいかた
添付されてるＨＴＭＬをＩＥで開いてください（ＩＥ６でしか動かしてないです。FireFoxでは動かない）
あとは直感で。

■参考情報（自分のために）
・JSonとAJAX
http://www.bnote.net/javascript/json.shtml
https://developer.mozilla.org/Ja/XMLHttpRequest
＃もっと楽なやり方探せば沢山アあるっぽい。

・DHTML
http://docolog.cocolog-nifty.com/papalog/2007/11/ie6tbody_f14c.html
＃画面系苦手さ～

・ついったＡＰＩ
http://apiwiki.twitter.com/Twitter-API-Documentation    </description>
    <dc:date>2009-12-20T00:25:35+09:00</dc:date>
    <utime>1261236335</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/yasshii/pages/29.html">
    <title>ant</title>
    <link>https://w.atwiki.jp/yasshii/pages/29.html</link>
    <description>
      http://www.jajakarta.org/ant/ant-1.6.1/docs/ja/manual/index.html    </description>
    <dc:date>2009-03-02T23:27:26+09:00</dc:date>
    <utime>1236004046</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/yasshii/pages/28.html">
    <title>日本語リソース</title>
    <link>https://w.atwiki.jp/yasshii/pages/28.html</link>
    <description>
      とりあえず。

JavaEEのAPIとかの邦訳。　http://doc.java.sun.com/DocWeb/    </description>
    <dc:date>2008-10-14T02:28:54+09:00</dc:date>
    <utime>1223918934</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/yasshii/pages/27.html">
    <title>glassfish</title>
    <link>https://w.atwiki.jp/yasshii/pages/27.html</link>
    <description>
      &amp;bold(){glassfish}

雰囲気だけ見ていると、やっぱりTomcatからの派生っぽいが・・・
取り合えずりんくぺた

http://glassfish.jp/    </description>
    <dc:date>2008-10-14T02:27:48+09:00</dc:date>
    <utime>1223918868</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/yasshii/pages/26.html">
    <title>jmx</title>
    <link>https://w.atwiki.jp/yasshii/pages/26.html</link>
    <description>
      &amp;bold(){jmx}

とりあえず参考になりそうなリンクをぺたぺた張ってみる

http://nemuneko.com/jboss/jmx.html
http://www.javainthebox.net/laboratory/J2SE1.5/MonitoringAndManagement/JMX/JMX1.html
https://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/jmx/overview/intro.html
http://d.hatena.ne.jp/aufheben/20061103/1162651383
http://forums.java.net/jive/thread.jspa?messageID=232900&amp;tstart=0

J2SEで自分でJMXサーバ立てるやり方はわかりそうなのだが…JavaEEの場合は標準化されていないのか？
Java Management(JavaEE仕様)はまた別物？    </description>
    <dc:date>2008-10-14T02:25:26+09:00</dc:date>
    <utime>1223918726</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/yasshii/pages/21.html">
    <title>java言語仕様</title>
    <link>https://w.atwiki.jp/yasshii/pages/21.html</link>
    <description>
      http://www.amazon.co.jp/exec/obidos/ASIN/4894717166/hatena-22/ref=nosim

ほしい。誰か買って～

[[manifest]]
[[jmx]]    </description>
    <dc:date>2008-10-14T02:21:40+09:00</dc:date>
    <utime>1223918500</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/yasshii/pages/15.html">
    <title>easydi</title>
    <link>https://w.atwiki.jp/yasshii/pages/15.html</link>
    <description>
      &amp;bold(){easydi}

超簡単ＤＩコンテナ。このページの一番最後に開発時のeclipseプロジェクトの添付ファイルがあります。
かなり適当ですが、半日で作ったので勘弁。

※特徴
・アノテーションベース
・再帰的な注入が可能
・ライフサイクル管理が可能（シングルトン扱いと、毎回生成する扱いの２パターン）
・プロパティ設定が可能。（プロパティファイルから読み込みと、Javaで設定の２パターン）

※簡単な仕様
１）概念
・コンテナが管理するインスタンスを「コンポーネント」と呼びます。
・「コンポーネント」は、ある「型」と「名前」で一意になります。「型」ごとに複数のコンポーネントを保有できるイメージです。
・「コンポーネント」は、「コンポーネント」もしくは「コンポーネントではない通常のBean」に注入することができます。
・「コンポーネント」は、「コンポーネントファインダ」で明示的に取得することが可能です。

２）コンポーネントセット
・ある一組のコンポーネントを作るために必要な１郡のセットです。
　Ａ）インタフェース
  public BeanInterface {
    public void execute();
  }
　Ｂ）アノテーション
  @InjectionType(Interface=BeanInterface.class)
  @Retention(RetentionPolicy.RUNTIME)
  publlc @interface BeanInterface{
    public String name();
  }
　Ｃ）実装クラス
   public BeanInterfaceImpl implements BeanInterface {
    public void execute(){System.out.println(&quot;foo&quot;);}
  }
３）コンポーネントのセットアップと取得
 PropertyComposeStrategy propertyComposeStrategy = new PropertyComposeStrategyFromFile();
 ComponentManager manager = new ComponentManager (propertyComposeStrategy );
 Composer composer = new Composer(componentManager);
 ComponentFinder finder = new ComponentFinder(composer,componentManager);
 
 componentManager.load(FooService.class,FooServiceImpl.class, &quot;foo&quot;,LifeCycle.Application);
 componentManager.load(FooService.class,FooServiceImpl2.class, &quot;bar&quot;,LifeCycle.Requeied);
 componentManager.load(BarService.class,BarServiceImpl.class, &quot;baz&quot;,LifeCycle.Requeied);
 componentManager.load(Injected.class,InjectedImpl.class, &quot;foo&quot;,LifeCycle.Requeied);
 
 FooService foo = finder.find(FooService.class,&quot;foo&quot;);
 foo.service();
 型と名前に対して実装クラスをひとつ紐付けます。

４）コンポーネントのインジェクション
 class SampleClass{
    
 //注入先のフィールドにアノテーションする
    @InjectFooService(&quot;name=foo&quot;)
    FooService fooService;
 
    public void execute(){
      fooService.service();
    }
 }
 注入時は下記の通り。
 SampleClass sampleClass = new SampleClass(); //これはコンポーネントではない。
 composer.compose(sampleClass);
 sampleClas.execute();
 
５）コンポーネント間のインジェクション
 class BarServiceImpl implemsnts BarService{
    //注入先のフィールドにアノテーションする。指定の仕方は４）とおなじ
    @InjectFooService(&quot;name=foo&quot;)
    FooService fooService;
 
    public void execute(){
      fooService.service();
    }
 }
コンポーネントをファインダから取得すると、自動的にインジェクション済みとなる。
 BarService bar = finder.find(BarService.class,&quot;baz&quot;);
 bar.service();
 
６）コンポーネントのライフサイクル
 componentManager.load(FooService.class,FooServiceImpl.class, &quot;foo&quot;,LifeCycle.Application); ←シングルトン。ＶＭ毎にインスタンスは唯一
 componentManager.load(FooService.class,FooServiceImpl2.class, &quot;bar&quot;,LifeCycle.Requeied);←要求都度生成。
LifeCycle.Requeiedは注意が必要。LifeCycle.Requeiedとした場合、コンポーネントが生成されるタイミングはそのコンポーネントがFinderから要求される都度。再帰的にコンポーネントが注入されるときにもFinderがよばれるのでそのたび作り直される。ただしLifeCycle.Requeiedのコンポーネントを保有するコンポーネントがLifeCycle.Applicationである場合は、親コンポーネントの取得を何度要求しても親コンポーネントが保有する子コンポーネントは同一インスタンスとなる。これは、親コンポーネントのインスタンスは一度作られたらそのまま同じものが使いまわされるためである。
たとえば上記のBarServiceImplの例でいうと
 型　　　　　　　　　ライフサイクル
 FooService       Application
 BarService       Request
  →BarServiceは要求都度生成。ただし、全てのBarServiceが参照するFooServiceはシングルトン

 型　　　　　　　　　ライフサイクル
 FooService       Request
 BarService       Application
 →BarServiceはシングルトン。FooServiceは、BarServiceが保有するインスタンスは全て同一。
    ただし、BarServiceを経由せず取得したFooServiceのインスタンスは、上記とは別インスタンスとなる。
というかんじ。

７）プロパティの設定
　①プロパティファイルから読み込む方法 （PropertyComposeStrategyFromFile）
　　コンポーネントの型インタフェースのクラス名（ＦＱＣＮ）とコンポーネント名より、以下の名前のファイルがロードされ、値が設定される。
 例）コンポーネントの型インタフェースがeasydi.FooComponent、コンポーネント名がfooの場合
 easydi/FooComponent.foo
 上記の名称のファイルをクラスローダ経由で取得する。
　　プロパティファイルには、Bean属性名に設定する値をプロパティファイル形式で記載する。
 callCount=10
　　これで、コンポーネント取得時に毎回上記の値が設定され返却される。（ライフサイクルがRequestの場合は、インスタンスが生成されるたびに設定される）

　②JavaAPIから設定する方法 （PropertyComposeStrategyFromJavaCode）
 PropertyComposeStrategyFromJavaCode propertyComposeStrategyFromJavaCode = new PropertyComposeStrategyFromJavaCode();
 propertyComposeStrategyFromJavaCode
    .getValueSetup(FooService.class, &quot;foo&quot;)
    .setup(&quot;callCount1&quot;, &quot;999&quot;)
    .setup(&quot;callCount&quot;, &quot;999&quot;);

&amp;bold(){ＴＯＤＯ}
-アノテーションをコンポーネントごとに作らなくても良いようにする
-ComposerとPropertyComposeStrategyを毎回ＡＰＩで意識しなくても良いようにする
-もうちょっとまともなドキュメントにする
-jacadoc
-アスペクト機能
-プロパティからコンポーネントをロードする機能。JUnitでのテストのことを考え、Javaからもロードできる（併用可能、上書きする）ようにするのがいい。
-シングルトン保証できてるかチェック。シングルトンは要求時ではなくブート時にインスタンス生成しているだろうか？    </description>
    <dc:date>2008-10-12T12:31:58+09:00</dc:date>
    <utime>1223782318</utime>
  </item>
  </rdf:RDF>
