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

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

ColdFusionが顧客満足度調査No1になったというウワサなので、日経コンピューターを情報システム部からかっぱらってきました。
webサイトには

ソフトウェア:Webアプリケーション・サーバー部門
1位 アドビシステムズ 65.5 ・・・・ 

と、社名だけで製品名が書いていないので、ちょっとモヤモヤした感じ。ホントにColdFusionのことかね?何か他のソフトと勘違いして1位になっちゃったんじゃないの?もうマクロメディアじゃないんだよなぁ・・・などと。

でも日経コンピューター本誌にはちゃんと書いてましたよ (*´ー`)

1位 アドビシステムズ(ColdFusion MXなど

あースッキリ。(^▽^喜)
「など」(JRun4)は薄くしときます。

ただ・・・・やっぱり有効回答数「33」ってのが現実ですね。
WebSphereが6位ということで、日本IBMの事業部長が「納得いかん!」と怒ってるようですが、WebSphereは有効回答数「152」。4~5倍のシェアがあるということです。
また、参考値としてTomcatやIISが載ってました。IISの有効回答数「394」ってのも現実。
それ以外にもPHPやらRubyやら、オープンソースは山ほどある事を思うとまだまだだよなぁ。

ということで、来年も1位でありますように!

あ、ARCserveでおなじみのCAのページってColdFusion混じってる。ちょっと嬉しい発見。

PR

ワタシのところの業界は、一斉に夏期休暇をとります。
先週一週間お休みでした。
今日から始動です。

東京大停電そんな夏休みの初っぱなに、東京大停電。
イントラのサーバーは当然社内にあり、思いっきり停電したようです。

で、自宅からVPNで調べてみるといろいろあるサーバーの内、3台が復電後も起動せず・・・・・

せっかくなので、4歳の子供を連れて会社まで電源スイッチを入れに行きましたよ。
(´△`) トホホ

起動しなかったのはWindows2003Serverばかり。(全部じゃない)
なんかあるな・・・・・

アンパンマンの世界は食糧が全て。
喜びも、悲しみも、怒りも、欲望も、全て食い物が発端。

さて、

MovableTypeのpingサーバーの作り方。

1)pingが来たら、
2)postされたcontentの内容を読んで
3)XMLとして取り込み
4)URLを取り出したら
5)RSSを読みに行って
6)新着記事を入手し
7)データーベースに書く

の2)からです。

<cfset ping =XMLParse(x.content)>・・・・2) 3)
<cfset blogurl = "#ping.methodCall.params.param[2].value.xmltext#index.rdf">・・・・4)

解説すると、まず変数 x (構造体になってる)はHTTPのPOSTリクエストとして入手済。
x.content がxmlのテキストとしてポストされています。
なので、XMLParse関数(→LiveDocs)を使ってx.contentpingという変数に取り込みます。2)3)

取り込んだものを視覚的に見るとこんな感じ。<cfcump var="#ping#">
pingのdump結果

 ここから、最後にある「http://kenw05/blog/yasmemo/」という文字列を取り出します。
そのためには、ColdFusionの構造体のドットシンタックスを理解している必要がありますが、試行錯誤すれば結構もやっとした知識でたどり着けます。コツはやっぱり<cfdump>して、まずは見ることですね。

基本的に上からドットで階層をたどっていけばたどり着けます。ドットを「の中の」と読み替えると、感覚的に理解できるかもしれません。

ping . methodCall . params . param[2] . value . xmltext 
ping の中の methodCall の中の params の中の ・・・・上の図を見ると、次は同じ名前のparam が2つ並んでいます。こういうときは、カギ括弧で上から何番目かを指定します。 param[2]  の中の value の中の xmltext でブログのURLにたどり着きました。

<cfset blogurl = "#ping.methodCall.params.param[2].value.xmltext#index.rdf">・・・・4)

こうすると、blogurl という変数に、http://kenw05/blog/yasmemo/index.rdf という文字列がセットされます。
最後につけているindex.rdfはMovableTypeが生成している、そのブログのRSSです。

次はこのRSSを読んで、更新内容を入手することになります。

テクノラティジャパンはどうしようもないが、http://www.technorati.com はまともかな?

さて、

pingサーバーの作り方のつづき。
struct
content <?xml version="1.0"?> <methodCall> <methodName>weblogUpdates.ping</methodName> <params> <param><value>MovableTYPE縺」縺ヲ縺ゥ縺?繧茨シ。ゥ</value></param> <param><value>http://kenw05/blog/yasmemo/</value></param> </params> </methodCall>
headers
struct
Connection close
Content-Length 250
Content-Type text/xml
Host kenw01
Range bytes=0-99999
User-Agent MovableType/3.2-ja-2
method POST
protocol HTTP/1.1

MovableTypeが送るpingの内容がこれ↑です。

まず、一番大事そうなところは、content の内容ですね。
XMLのようです。
このpingを送ったブログのタイトルは「MovableTypeってどうよ?」です。
なんか文字化けしてますな・・・・
あと、URLが含まれています。
headers.User-Agent を見るとブログの種類がわかるようですが、イントラでMovableType決め打ちなので使う必要はありません。

結局、pingで送られる情報はブログのタイトルとURLのみのようです。

ということで、だいたい見えました。
1)pingが来たら、
2)contentの内容を読んで
3)XMLとして取り込み
4)URLを取り出したら
5)RSSを読みに行って
6)新着記事を入手し
7)データーベースに書く

こんな感じでしょうか。

まず最初の1)pingが来たら ですが、こいつはmethodを見て判断しようと思います。
method が POST ならpingと判断します。
GETならブラウジングということで、データーベースから新着の一覧を表示させようかな?

するとまずはこうなります
========= ping.cfm ============
<cfprocessingdirective pageencoding="utf-8">
<cfset x = GetHttpRequestData()><!---httpリクエストを取る--->
<cfif x.method is "POST">
  2)
  3)
  4)
  5)
  6)
  7)
<cfelse>
 <html><body>一覧表示</body></html>
</cfif>
==============================

てな感じで、POSTかGETかで分岐させます。

つづく

今月のSkypeギフトデーは1日・・・・
逃しました。

さて、

イントラブログを立ち上げたりすると、更新通知のために社内にもpingサーバーが欲しくなりますね。
それじゃぁ、ってことでColdFusionでpingサーバーを作ってみました。

対象とするブログをMovableTypeと決め打ちできて、お気楽にはじめられるのはイントラならではですね。

そもそもブログのpingのしくみさえよく知らなかったわけですが、基本的にはMovableTypeで更新があったとき、指定されたアドレスに対してMovableTypeが何かしてるわけです。

ってことで、まずはどんなリクエストがMovableTypeから送られているかを調べてみます。

#GetHttpRequestData( )#→LiveDocs) この関数がキモです。
関数の説明には
「HTTP リクエストヘッダおよび本文を CFML ページで使用できるようにします。HTTP ヘッダ内で送信される SOAP リクエストデータを取り込む際に便利です。」
とあります。SORPはともかく、こいつでHTTPリクエストヘッダを調べれば、何がMovableTypeから送られているか解るはずです。

ところが・・・・・

MovalbeTypeが出したリクエストをどうやって「見る」かが問題です。
ブラウザにアドレスをping先のアドレスをぶち込んでも意味がありません。

で、ひらめきました。
内容をCFMAILしちゃうわけですよ。

こんな感じのソースで。
========= ping.cfm(←MovableTypeに指定するping先URL) ==========
<cfprocessingdirective pageencoding="utf-8">
 <cfset x = GetHttpRequestData()>
 <cfmail subject="pingの内容だよ" to="oreore@kaisha.com" from="pingserver">
 <cfdump var="#x#">
 </cfmail>

==============================================================

このアドレスにpingが送られると、GetHttpRequestData の内容がメールで見えるはずです。

きたきた。メールが来ましたよ。
さて、届いたメールの内容は・・・・・

struct
content <?xml version="1.0"?> <methodCall> <methodName>weblogUpdates.ping</methodName> <params> <param><value>MovableTYPE縺」縺ヲ縺ゥ縺?繧茨シ。ゥ</value></param> <param><value>http://kenw05/blog/yasmemo/</value></param> </params> </methodCall>
headers
struct
Connection close
Content-Length 250
Content-Type text/xml
Host kenw01
Range bytes=0-99999
User-Agent MovableType/3.2-ja-2
method POST
protocol HTTP/1.1

こんなんでした。

つづく・・・・・

ブログ内検索
プロフィール
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]