忍者ブログ
全くIT系ではない製造業の社員がイントラ上でColdFusionと格闘。システム構築を外部委託するとき「できればColdFusionでお願いします」と頼むのだが・・・・
[15] [16] [17] [18] [19] [20] [21] [22]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

cfhttpでrssを
<cfhttp url="http://blog.toda.co.jp/suzuki/index.xml" result="suzuki" />
といった感じで構造体変数に取り込んだだけでは単なるテキストデータです。

正規表現の達人なら、このテキスト(#suzuki.filecontent#)の中から必要な所だけを抜き出すことができるかもしれませんが、σ(・・*)ワタシ的にはムリなので、ColdFusion様サマなわけです。

<cfset xmlDoc = XmlParse(suzuki.filecontent)>

XmlParse(→LiveDocs ) という関数で、xmlドキュメントオブジェクトに一発変換。

最終更新:#xmlDoc.rss.channel.lastBuildDate.XmlText#
タイトル:#xmlDoc.rss.channel.item[1].title.XmlText#
内容:#xmlDoc.rss.channel.item[1].description.XmlText#

変換すると、上のように構造体変数として参照することができるようになります。
で、このドット表記については、変換したxmlDocをcfdumpするとすぐわかります。このへんがColdFusionの好きなところ。(まぁ、他の言語でもできるんでしょうけど(´∀`)
<cfdump var="#xmlDoc#">
cfdump2
rss2.0の場合、 item が繰り返し出てきます。itemの中を参照するときは、item[1]、item[2]などと配列のように参照できます。

itemがいくつあるのかを知りたいときは、ArrayLen関数(→LiveDocs )で。
#ArrayLen(xmlDoc.rss.channel.item)#
これでitemの個数がわかるので、ループで廻すなりお好きにどうぞ。

ところで、#xmlDoc.rss.channel.item[1].description.XmlText# とすると、MovableTypeのRSSの場合、タグも全部付いてきます。それはそれでありがたかったりしますが、邪魔な場合も。

次回はそのhtmlタグを取る方法でも書きますか。

PR
い、いつの間に?
MX 7.0.2のアップデータが出ていました。

http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=4ac796d0

むー・・・・・

Flex2がらみの機能追加がメインかな?
ワタシ的にはFlashRemortingが新しくなっているのがポイントですね。
接続の呪文がまた変わってるんだろうか・・・・

FlashRemortingを使ってないサーバーに当てて検証が必要かなぁ。
(背景)

まずはブログのRSSを<cfhttp>で取り込みます。
 <cfhttp url="http://blog.himitu.co.jp/suzuki/index.xml" result="suzuki" />
以上・・・・(^▽^;)

こんなノリでできるのがColdFusionの大好きなところ。(このURLはデタラメです。念のため)

MovableType(3.2)が自動的に作成するRSSフィードのURLは決まっているので、それを指定して、変数 suzuki に格納です。
するとsuzukiは構造体変数として、HTTPのヘッダやらなにやら、いろんな情報が入ります。(実はよくわかってないが(*´ー`)
で、この中の、suzuki.filecontent がRSSのネタなわけです。
コイツから、新着や更新日を抜きます。

ちなみに、このブログのRSSを取り込んでダンプするとこんな感じ。
<cfhttp url="http://ameblo.jp/cfif/rss.html" result="sample">
<cfdump var="#sample#">
cfdump1


ちなみに、ブログは複数あるので、リストで廻してRSSを全部ひっぱります。
<cfset blogList = "suzuki,satou,tanaka,yamaguchi">
<cfloop list="#blogList#" index="blogname">
 <cfhttp url="http://blog.himitu.co.jp/#blogname#/index.xml" result="#blogname#" />
</cfloop>
これで、鈴木君・佐藤君・田中君・山口君 のRSSゲットです。

参考までに、
<cfhttp url="http://blog.himitu.co.jp/suzuki/index.xml" path="/var/www/blogs/ftp" file="suzuki.xml" />
とすると、こちらのサーバーにファイルとして保存されます。
ファイルとして保存したときはresultを指定しても、FileContentはカラッポなので注意が必要です。
コレ↑ちょっとハマッタのでした。


次に、FileContent をxmlに変換して必要なデータを取り出します。
社内で新人君の有志にブログを書いてもらっています。kyuw号 でMovableTypeを使って。
その中の数名のブログを来年の内定者にも読ませよう、ということになりました。
なかなか面白い企画なので大賛成です。

社外の会社の公式webサイトでもMovableTypeを既に使っているので、ブログを書いてもらう環境は整っています。ちょっと.htaccessでbasic認証つけるくらいでOK。

困ったのはブログのポータルです。
ブログを書いている新人君は30名弱なので、社内には新人君ブログのポータルを用意していました。
当然ColdFusionでポータルを作ってあります。
MovableTypeのDB(MySQL)から最新記事の概要や更新日時を抜いてきて表示させています。

この中の数名が社外の環境に引っ越してしまうわけです。

社内、社外に分かれてしまったブログの新着をどうやってまとめるか・・・・です。
社外のサーバーに社内のColdFusionからデーターソース接続することは今のところできません。
また、社外のサーバーはCGI/PHPしか使えず、ColdFusionは載っていません。内定者向けのブログポータルも欲しいところです。で、σ(・・*)ワタシはPHPとかはダメダメ君。

ということで、MovableTypeが生成するRSSを社内のColdFusionで読み込んで何とかすることにしました。
ロジックはこんな感じ。
■まずは、外にある各ブログからRSS2.0のxmlをもらってくる。
■最新記事を抜き出す。
日時・タイトル・概要
■外部用ポータルのindex.htmlファイル生成
■ftpで内定者向けindex.htmlを社外にput
■内部用に外ブログ新着専用DB(内部MySQL)をupdate

以上の処理をColdFusionでスケジューリング。30分毎かな?

  ■社内ブログポータル(ColdFusion)は、社内のMovableTypeDBテーブルと、外ブログ新着テーブルをmargeして処理

てな感じです。ColdFusionサマサマです。(うまくいけばですが)

・・・・・・前置きが長くなりました。続きは次回。
kenw02号の環境です。

テーブル名やフィールド名がバリバリ日本語のmdbを使う必要が出ました。
日本語だとSQLもめんどくさくてイライラします。

それ以前に、ColdFusionMX7の場合(他の環境未確認)バケバケになります。
呪文が必要です。

コマンドプロンプトで、

1. {cf.root}/db/slserver54/admin ディレクトリに移動
2. swcla -l sar 'ColdFusion MX 7 ODBC Server' ServiceCodePage OS
というコマンドを実行
3. ColdFusion MX ODBC サービスを再起動


最近はめっきりaccess使うことがなくなりました。
accessはバックアップがラクでいいんですが、OracleとSI Object Browser の環境に慣れると抜けられません。
外部結合が(+)でできるところもポイント高いですね。

ブログ内検索
プロフィール
HN:
CFIF
性別:
男性
自己紹介:
もっと日本でもColdFusionが広まって欲しいです。

情報通信を生業としない企業の、システム系でもない普通の社員なので、 ColdFusionは独学。参考書が少ないのがツライです・・・・なんだかんだ、ColdFusion4.xのシリウス時代から7年くらいのおつきあい?リンコムNextのソースが教科書かも。

外注するときはよく「できればColdFusionで・・・・」とお願いするのですが、ほとんどの場合「えっ!?」と驚かれてしまい、「SEのアサインが・・・」などと営業さんが困ってしまうことが多くて悲しいです。
ちょっとしたものなら自分でシステム構築しちゃいますが、一人でやるには時間が足りませんね・・・

FlashRemotingとかもやりますが、Flexには手を出してません。
と、最初の頃書きましたが、ついにFlexに手を出しました。Flex1.5はイマイチわかりませんでしたが、Flex2は別物ですね。これで6万円でイインデスカ?
そしてFlex2とColdFusionの組み合わせなら無敵な気がしますよ。ほんとに。
最新トラックバック
カレンダー
03 2025/04 05
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 29 30
なかのひと
忍者ブログ [PR]