[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混じってる。ちょっと嬉しい発見。
アンパンマンの世界は食糧が全て。
喜びも、悲しみも、怒りも、欲望も、全て食い物が発端。
さて、
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.content を pingという変数に取り込みます。2)3)
取り込んだものを視覚的に見るとこんな感じ。<cfcump var="#ping#">
ここから、最後にある「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 |
|
||||||||||||||
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 |
|
||||||||||||||
method | POST | ||||||||||||||
protocol | HTTP/1.1 |
こんなんでした。
つづく・・・・・
情報通信を生業としない企業の、システム系でもない普通の社員なので、 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 |