全くIT系ではない製造業の社員がイントラ上でColdFusionと格闘。システム構築を外部委託するとき「できればColdFusionでお願いします」と頼むのだが・・・・
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
苦い濃いより、甘い濃い。
毎日暑くてふにゃふにゃです。
さて、
<cfset blogList = "satou,suzuki,tanaka,yamaguchi,yamada">
<cfset rssDoc = structnew()>
<!--- ■RSS get --->
<cfloop list="#blogList#" index="blogname">
<cfhttp url="http://blog.hogehoge.co.jp/#blogname#/index.xml" result="#blogname#" />
</cfloop>
<!--- ■xml解析 --->
<cfloop list="#blogList#" index="blogname">
<cfset rssDoc[#blogname#] = XmlParse(Evaluate("#blogname#.filecontent"))>
</cfloop>
<!--- ■内部mt_entry更新 --->
<cfquery name="upd" datasource="mtdb">
UPDATE hogehoge SET hoge WHERE entry_id = '123'
</cfquery>
<!--- ■表示部分 --->
<cfloop list="#blogList#" index="blogername">
<cfoutput>
BlogerName:#blogername#<br />
lastBuildDate:#CreateODBCDateTime(rssDoc[blogername].rss.channel.lastBuildDate.XmlText)#<br />
TITLE:#rssDoc[blogername].rss.channel.item[1].title.XmlText#<br />
description:#REReplace(rssDoc[blogername].rss.channel.item[1].description.XmlText,"<[^>]*>","","All")#
<hr />
</cfoutput>
</cfloop>
コアな部分はこんな感じですね。
ポイントとしては、数人分のxmlオブジェクトをループ処理できるように、rssDoc という構造体にまとめて入れたこと。
で、構造体を扱うときにハマリがちな部分は、
rssDoc.satou.hoge.fuga.ColdFusion.great という風に、直書きなら扱えるけれど、
rssDoc.#blogername#.hoge.fuga.ColdFusion.great という風に変数をドットシンタックスには入れられない点。なんで?と言われてもよくわかりまへん。変数名なのか構造体のキー名なのかわからないからかな?ColdFusionの仕様
その場合は、[連想配列]として扱えばOKです。
rssDoc[blogername].hoge.fuga.ColdFusion.great
あと、わかってるようで実はイマイチわかっていないのが Evaluate 関数。(→LiveDocs )
マニュアルには、
とありますが、σ(・・*)ワタシ的には意味不明。
ただ、いろいろやっているうちに、この関数は、「変数で変数名を作る」ときに使える と理解しています。
今回の場合、satou.filecontent や suzuki.filecontent という変数をXmlParseする必要があったのですが、XmlParse(#blogername#.filecontent) とするとエラーになります。
XmlParse(Evaluate("#blogername#.filecontent")) とすると、XmlParse(satou.filecontent) としたときと同じ処理になってくれます。
構造体や配列をループ処理するときによく使いますね。Evaluateは。
毎日暑くてふにゃふにゃです。
さて、
<cfset blogList = "satou,suzuki,tanaka,yamaguchi,yamada">
<cfset rssDoc = structnew()>
<!--- ■RSS get --->
<cfloop list="#blogList#" index="blogname">
<cfhttp url="http://blog.hogehoge.co.jp/#blogname#/index.xml" result="#blogname#" />
</cfloop>
<!--- ■xml解析 --->
<cfloop list="#blogList#" index="blogname">
<cfset rssDoc[#blogname#] = XmlParse(Evaluate("#blogname#.filecontent"))>
</cfloop>
<!--- ■内部mt_entry更新 --->
<cfquery name="upd" datasource="mtdb">
UPDATE hogehoge SET hoge WHERE entry_id = '123'
</cfquery>
<!--- ■表示部分 --->
<cfloop list="#blogList#" index="blogername">
<cfoutput>
BlogerName:#blogername#<br />
lastBuildDate:#CreateODBCDateTime(rssDoc[blogername].rss.channel.lastBuildDate.XmlText)#<br />
TITLE:#rssDoc[blogername].rss.channel.item[1].title.XmlText#<br />
description:#REReplace(rssDoc[blogername].rss.channel.item[1].description.XmlText,"<[^>]*>","","All")#
<hr />
</cfoutput>
</cfloop>
コアな部分はこんな感じですね。
ポイントとしては、数人分のxmlオブジェクトをループ処理できるように、rssDoc という構造体にまとめて入れたこと。
で、構造体を扱うときにハマリがちな部分は、
rssDoc.satou.hoge.fuga.ColdFusion.great という風に、直書きなら扱えるけれど、
rssDoc.#blogername#.hoge.fuga.ColdFusion.great という風に変数をドットシンタックスには入れられない点。なんで?と言われてもよくわかりまへん。変数名なのか構造体のキー名なのかわからないからかな?ColdFusionの仕様
その場合は、[連想配列]として扱えばOKです。
rssDoc[blogername].hoge.fuga.ColdFusion.great
あと、わかってるようで実はイマイチわかっていないのが Evaluate 関数。(→LiveDocs )
マニュアルには、
説明
1 つ以上の文字列式をダイナミックに左から右へ評価します(左部分の評価結果が右部分に対して意味を持つことがあります)。右端にある式の評価結果が返されます。とありますが、σ(・・*)ワタシ的には意味不明。
ただ、いろいろやっているうちに、この関数は、「変数で変数名を作る」ときに使える と理解しています。
今回の場合、satou.filecontent や suzuki.filecontent という変数をXmlParseする必要があったのですが、XmlParse(#blogername#.filecontent) とするとエラーになります。
XmlParse(Evaluate("#blogername#.filecontent")) とすると、XmlParse(satou.filecontent) としたときと同じ処理になってくれます。
構造体や配列をループ処理するときによく使いますね。Evaluateは。
PR
最新記事
(12/04)
(12/19)
(10/07)
(09/11)
(05/07)
(04/24)
(01/11)
(12/27)
(11/05)
(11/03)
ブログ内検索
カテゴリー
プロフィール
HN:
CFIF
性別:
男性
自己紹介:
もっと日本でもColdFusionが広まって欲しいです。
情報通信を生業としない企業の、システム系でもない普通の社員なので、 ColdFusionは独学。参考書が少ないのがツライです・・・・なんだかんだ、ColdFusion4.xのシリウス時代から7年くらいのおつきあい?リンコムNextのソースが教科書かも。
外注するときはよく「できればColdFusionで・・・・」とお願いするのですが、ほとんどの場合「えっ!?」と驚かれてしまい、「SEのアサインが・・・」などと営業さんが困ってしまうことが多くて悲しいです。
ちょっとしたものなら自分でシステム構築しちゃいますが、一人でやるには時間が足りませんね・・・
FlashRemotingとかもやりますが、Flexには手を出してません。
と、最初の頃書きましたが、ついにFlexに手を出しました。Flex1.5はイマイチわかりませんでしたが、Flex2は別物ですね。これで6万円でイインデスカ?
そしてFlex2とColdFusionの組み合わせなら無敵な気がしますよ。ほんとに。
情報通信を生業としない企業の、システム系でもない普通の社員なので、 ColdFusionは独学。参考書が少ないのがツライです・・・・なんだかんだ、ColdFusion4.xのシリウス時代から7年くらいのおつきあい?リンコムNextのソースが教科書かも。
外注するときはよく「できればColdFusionで・・・・」とお願いするのですが、ほとんどの場合「えっ!?」と驚かれてしまい、「SEのアサインが・・・」などと営業さんが困ってしまうことが多くて悲しいです。
ちょっとしたものなら自分でシステム構築しちゃいますが、一人でやるには時間が足りませんね・・・
FlashRemotingとかもやりますが、Flexには手を出してません。
と、最初の頃書きましたが、ついにFlexに手を出しました。Flex1.5はイマイチわかりませんでしたが、Flex2は別物ですね。これで6万円でイインデスカ?
そしてFlex2とColdFusionの組み合わせなら無敵な気がしますよ。ほんとに。
最新コメント
(05/20)
(03/15)
(05/25)
(02/07)
(12/19)
最新トラックバック
カレンダー
01 | 2025/02 | 03 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
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 |
ColdFusionリンク
アーカイブ
最古記事
(06/23)
(06/26)
(06/27)
(06/28)
(06/29)
(06/30)
(07/03)
(07/04)
(07/05)
(07/06)
なかのひと