フォトアルバム

2009年7月

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

なかのひと

アンケート

  • Do you Like?
    アンケート
    どのColdfusion用フレームワークが好き?
    ModelGlue:Unity
    ModelGLue
    Mach-II
    FuseBox
    LiteWire
    OnTap
    ColdBox
    OnAir
    cfWheels
    CFRails

    [PR]アンログ.jp 自動車保険

373news.com

想ひ出

  • Dvc00050
    携帯で撮った写真をアルバムにしています。

サムネイル

  • CF-OOP









  • ganymean.org









  • シナプス

Google Analytics

« 2005年9月 | メイン | 2005年11月 »

GoogleMaps利用例「お散歩マニア」

日替わりeカードの上に、なにげにBlogに貼る地図登場!というリンク・・・
クリックしてみると、GoogleMapsを使った「お散歩マニア」という神奈川県湘南の
地域ポータルサイトのようです。
GoogleMapsの位置情報をブログタイトルに貼り付け、トラックバック欄にこの
サイトのトラックバックURLを貼り付けてくださいということだが、
地図表示用タグをHTMLに貼り付けるだけでもちょっとは使えるかも・・


ブログに貼る地図『お散歩マニア』

サムネイルイメージ

タイプリストに他人のブログやホームページのリンクをテキストで表示するのは、
おもしろくないと考え、Webイメージのサムネイルを生成してくれないかと
googleで検索したら・・・
Open ThumbShots.org
がありました。
このサービスには、3つのプランがあるんだけど、個人や一般企業が使うんだったら、
以下の2つのプランになると思います。
無料:Free         DMOZのオープンディレクトリーに登録済のサイトをサムネイル表示
有料:Simple      25$/月・10万ヒット~、任意URLのサムネイルを動的生成

ちなみに、シナプスさんのホームページをFree版を使って表示すると、
Synapse Homepage
のような感じになります。

私のブログをサムネイル表示したくて、トライしてみたいのですけど、
CF-OOP
と”ドット”だけが表示されるだけで、サムネイルは表示されませんでした。

最後に、注意事項を補足しておきます。
スクリプト埋め込み用URLは、必ずURLエンコーディングが必須です。

ModelGlue1.0.01の新機能

ModelGlue1.0.01の新機能について、ドキュメントの該当部分を和訳したので紹介しておきます。

1.ステートフルResultリダイレクト    <result name="xxx" do="yyy" redirect="ture" append="zzz" />
2.ステートフルフォワーディング      arguments.event.forward( )

■クイックスタート: ステートフルResultリダイレクト

しばしば、あるフォームがポストされたときに、"Reload"によってユーザがフォームをリポストすることを防ぐために、新しいページへのCFLocation を行うことが定例化しています。Model-Glue1.0 では、ModelGlue.xml ファイルを通じてこの動作を模倣することが可能になりました。

どのような<result>タグにも、REDIRECT属性を追加することができるようになりました。REDIRECT="true"にセットされている場合、フレームワークはすぐ現在の要求を停止し、すべての変数値を維持しながら、あらかじめ設計された<event-handler>へのサーバーサイドリダイレクトを実行します。

URL のparamaters を含んでいるページにリダイレクトしたいと思うことはかなりありうることです。例えば、誰かがコンテンツ管理システムのあるセクションに新しい記事をポストしたら、"index.cfm?event=showSection&sectionId=12345" のようなURL に遷移することを望むはずです。しかしながら、resultタグ上のREDIRECT属性は、url に追加すべきの"sectionId" 変数の値を知る方法がありません。この理由のために、オプションとしてAPEND属性が今回サポートされました。それは、変数コレクションをURLに追加するために、コンマ区切りの変数リストを含まなければなりません。フレームワークはURL に自動的にこのリストの単純変数すべてを追加します。

オーケー、それでは簡単なサンプルを見てみましょう:

<result name="articleAdded" do="showSection" redirect="true" append="sectionId">

全然OKでしょう?

■クイックスタート: ステートフルフォワーディング

行くためにどうしてもどこに知らない時があります。例えば、"ポッド" の中にあるフォームは、何かを行い、そしてどんなイベントから来たかユーザに示すことが必要になるでしょう。<result>タグを書くとき、"do"属性を動的にセットする方法はありません。

このような特別な事例のために、(arguments.event として知られている) EVENTオブジェクトは、Forward()メソッドを実装しました。このメソッドの使用方法は、次のようになります:

arguments.event.forward(<event-handler>名) - 直ちに指定された<event-handler>へのステートフルリダイレクトを実行する。arguments.event.forward("showSection ") は、index.cfm?event=showSection と同等です。

arguments.event.forward(<event-handler>名, append) - 直ちに、appendで与えられる変数コレクションをURLに追加しながら、指定された<event-handler>へのステートフルリダイレクトを実行します。arguments.event.forward("showSection" , sectionId )は、"12345" という値を有するsectionIdという変数コレクションを与えられた、index.cfm?event=showSection&sectionId=12345と同等です。

ColdSpringAOP Sample

SeanのModelGlue+ColdSpringサンプルアプリケーションGGCC9における
ColdSpringのAOP機能をチェックしてみます。

ggcc.xmlを眺めてみると・・・task関連処理におけるセキュリティチェックに
AOP機能を適用しているようです。

Target:
 taskDAOTarget(class->ggcc9.model.taskDAO)
 taskGatewayTarget(class->ggcc9.model.taskGateway)
Advice:
 checkIdentity(class->ggcc9.aspects.checkIdentity)
Advisor:
 securityAdvisor(Advice->checkIdentity MappedNames->*)
Service:
 taskDAO:Target->taskDAOTarget  InterCepternames->securityAdvisor
 taskGateway:Target->taskGatewayTarget  InterCepternames->securityAdvisor

このことによって、event-handlerの定義からセキュリティチェックの前処理がなくなって
います。
ggcc9->ModelGlue.xml->event-handler:showManager

        <event-handler name="ggcc.showmanager">
            <broadcasts>
                    <--
                    <message name="checkIdentity"/>        <--- AOP化したことにより、コメント化
                    -->
                <message name="needMembers"/>
                <message name="needMembersByID"/>
                <message name="needTasks"/>
                <message name="needStatii"/>
                <message name="needStatiiByID"/>
            </broadcasts>
            <views>
                <include template="dspShowTaskList.cfm" name="content">
                    <value name="XFA.AddTask" value="ggcc.newtask"/>
                    <value name="XFA.ChangeIdentity" value="ggcc.identify"/>
                    <value name="XFA.TaskDetail" value="ggcc.showtask"/>
                </include>
                <include template="layGGCC.cfm" name="final"/>
            </views>
        </event-handler>

また、DAOとGatewayをビーン化したことにより、コントローラーtaskManager.cfcの
内部が非常にシンプルになっています。

■GGCC7->taskManager.cfc->saveTask

    <cffunction name="saveTask" returntype="ModelGlue.Core.Event" access="public" output="false">
        <cfargument name="event" type="ModelGlue.Core.Event" required="true"/>
        <cfset var taskID = arguments.event.getValue("taskID") />
        <cfset var ownerID = arguments.event.getValue("ownerID") />
        <cfset var statusID = arguments.event.getValue("statusID") />
        <cfquery datasource="#variables.dsn#" username="#variables.dbUser#" password="#variables.dbPass#">
            UPDATE ggcctask
            SET ownerID = <cfqueryparam value="#ownerID#" cfsqltype="cf_sql_varchar"/>,
                statusID = <cfqueryparam value="#statusID#" cfsqltype="cf_sql_varchar"/>,
                lastUpdated = <cfqueryparam value="#now()#" cfsqltype="cf_sql_date"/>
            WHERE taskID = <cfqueryparam value="#taskID#" cfsqltype="cf_sql_varchar"/>
        </cfquery>
        <cfreturn arguments.event />
    </cffunction>

■GGCC9->taskManager.cfc->saveTask

    <cffunction name="saveTask" returntype="ModelGlue.Core.Event" access="public" output="false">
        <cfargument name="event" type="ModelGlue.Core.Event" required="true"/>

        <cfset var task = createObject("component","ggcc9.beans.taskBean").init(argumentCollection=arguments.event.getAllValues()) />
        <cfset variables.taskDAO.update(task) />

        <cfreturn arguments.event />

    </cffunction>

次回は、Javaのlog4Jをロギングに使う場合のサンプルについて解説します。


ColdSpringAOP

ColdSpringsの 正式サイトがオープンしました。

SpikeのCFCDOCによるColdSpringのコード参照機能、
Raymond CamdenのGalleonによるフォーラム機能、
Daemonの FarcryによるCMS機能を使っているようです。
ColdfusionMX用フリーソフトを使ってここまでできるんですねえー。

  • The code (that helps)
  • Docs (those help too)
  • Forums powered by Ray's Galleon
  • API Docs powered by Spikes CFCDoc
  • And of course the whole site is powered by Daemon's Farcry.

ModelGlue+ColdSpringAOP

Model-Glue + ColdSpringAOP連携アプリケーション ggcc9
じっくりながめてみた。
Model-Glue + tartan連携アプリケーション ggcc8 と比べてみると
ColdSpringAOPのAOP機能ではなく、bean(VO)機能によって
ずいぶんシンプルコードがシンプルになったなーという印象。
 


続きを読む "ModelGlue+ColdSpringAOP" »

Spring

Springの概要を以下のサイトを参照しながら、まとめてみた。
もともとはJava/J2EEアプリケーション用に開発されたフレームフレームなので、
非常にシンプルな考えに基づいている。

概要とキーワードは以下のとおりだろうか・・・

Java / J2EE アプリケーション用フレームワーク(オープンソース)

MVC フレームワーク
JDBC抽象化フレームワーク
既存フレームワークの利活用
トランザクション管理
AOP (アスペクト指向プログラミング)

すべての層をカバー

プレゼンテーション層、ビジネス層、パーシスタント層

IoC ( Inversion of Control )コンテナ

コンテナ上でコンポーネントを管理するための技術
XML で記述された Bean 定義ファイルを使用
オブジェクトの生成、オブジェクト同士の関連を生成
既存フレームワークへの統合アクセスを実現

Struts
Hibernate
WebWork
JDO

以下のサイトが参考になります。
Spring-Java/J2EEアプリケーションフレームワークリファレンスドキュメント

徹底解剖! Spring Framework の実力を探る

 

o

ColdSpringAOP & ModelGlue

ModelGlue+Tartanで当面はアプリケーションを作っていこうと思っていたら、
今月、Dave Ross & Chirs ScottによるColdSpringAOP0.2.1がリリースされ、ModelGlueとの連携も
あっという間に、Seanが作り上げてしまった。

しばらく、ColdSpringAOP関連を追っかけて、
Model-Glueとの連携についても整理したので、まとめておきます。

ColdSpringAOPのまとめ ColdSpringAOP.txtをダウンロード
Model-Glue + ColdSpringAOP連携アプリケーション ggcc9

次回から数回にわたって、ColdSpringAOPの解説してみます。

Flash Video

FLV MAKERのテスト


         

ログイン

  • コントロールパネルへのログイン
    アカウント:

    パスワード:

PR情報

  • [[PR]]
  • おすすめバナー

更新ブログ

google Search

  • Google
    blog.ganymean.org
    WWW

最近のトラックバック

Google

SHINOBI

Blog powered by TypePad
Member since 04/2005