忍者ブログ
全くIT系ではない製造業の社員がイントラ上でColdFusionと格闘。システム構築を外部委託するとき「できればColdFusionでお願いします」と頼むのだが・・・・
[50] [49] [48] [47] [46] [45] [44] [43] [42] [41] [40]
×

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

今朝、会社の女子トイレから「キャー!きゃー!」と何度も悲鳴が聞こえた。
あとで聞くと、「コオロギが出た!」と言う・・・・

ここは東京都中央区のビルの8階。
そいつは絶対コオロギじゃないと思うぞ。

さて、

MovabeType用のpingサーバーの作り方、その5です。
[その1] [その2] [その3] [その4]

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

の7) について。

DBにping用のテーブルを用意します。
とりあえず、SEQ,URL,PINGDATE,TITLE,CONTENTSといったフィールドにしました。

<cfquery datasource="etc" name="pingins">
INSERT INTO BLOG (SEQ,URL,PINGDATE,TITLE,CONTENTS) VALUES
(BLOG_SEQ.NEXTVAL,'#ping.methodCall.params.param[2].value.xmltext#','#xmlDoc["rdf:RDF"].item[1]["dc:date"].XmlText#','#xmlDoc["rdf:RDF"].channel.title.xmltext#','#xmlDoc["rdf:RDF"].item[1].title.XmlText#')
</cfquery>

SEQ以外は文字列型でそのまんま突っ込んでます。f(^^;)

ColdFusionのわかりやすさの一つが、この<cfquery>の書き方。
aspやphpなどは、SQL文を作るのがめんどくさいなぁ といつも思います。文字列変数を何度もつなげて・・・・。作るのがめんどくさいというより、実はワタシ的にはほとんどaspやphpでゼロから作ることは無いので、ソースから逆追いするのがメンドクサい・・・・・といつも思います。
検索用に条件がいろいろ変わるときなんかは特にそうです。
aspやphpだと、結局どんなSQL文になってるのか、デバッグ用にsqlを表示させながら確認するしか方法をしりません。

ColdFusionだと、SQL文をそのまま書けるから見た目にわかりやすい。

検索系で動的に条件が変わる場合は、CFCとして別出しすることが多いかな?
そのときはそれなりに複雑になってしまいますが・・・・

さて、DBに突っ込めばとりあえずおしまいな訳ですが、なにやらpingを受け取ると結果をxmlで返すルールのようなので(よくわかってない)見よう見まねで返しておきます。本来なら成功か失敗かで返すxmlが代わるわけですが、その辺はなんちゃってイントラpingサーバーなので、気にしない気にしない。

=======以下、実際に使ってるソース index.cfm ========

<cfprocessingdirective pageencoding="utf-8">
<cfset x = GetHttpRequestData()><!---httpリクエストを取る--->
<cfif x.method is "POST">
<cfset ping = XMLParse(x.content)><!---xml展開--->
<cfset Variable.url = "#ping.methodCall.params.param[2].value.xmltext#index.rdf">
<cfhttp url="#Variable.url#" method="GET" resolveurl="Yes" throwOnError="Yes" />
<cfset xmlDoc = XmlParse(CFHTTP.FileContent)>
<cfset resources=xmlDoc.xmlroot.xmlChildren>
<cfquery datasource="etc" name="pingins">
INSERT INTO BLOG (SEQ,URL,PINGDATE,TITLE,CONTENTS) VALUES
(BLOG_SEQ.NEXTVAL,'#ping.methodCall.params.param[2].value.xmltext#',#now()#,'#resources[1].title.xmltext#','#resources[2].title.xmltext#')
</cfquery>
<?xml version="1.0" encording="UTF-8"?>
<methodResponse>
  <params>
  <param>
  <value>
  <struct>
    <member>
      <name>flerror</name>
      <value>
      <boolean>0</boolean>
      </value>
    </member>
    <member>
      <name>message</name>
      <value>Thanks for the ping.</value>
    </member>
  </struct>
  </value>
  </param>
  </params>
</methodResponse>
<cfelse>
<!---そうか GETだったら表示しよう--->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ブログ更新情報</title>
</head>

<cfquery name="blogs" datasource="etc">
 SELECT
 C.SEQ , B.URL , B.LASTUPDATE , C.TITLE , C.CONTENTS
 FROM
 (SELECT A.URL,MAX(A.PINGDATE) LASTUPDATE FROM BLOG A GROUP BY A.URL) B, BLOG C
 WHERE
 B.URL = C.URL AND B.LASTUPDATE = C.PINGDATE
 ORDER BY B.LASTUPDATE DESC
</cfquery>

<body>

<div id="blogs">
 <h3>Blogs</h3>
 <ul>
 <cfoutput query="blogs">
 <li><a href="#url#">#TITLE#</a>(#dateformat(lastupdate,'m/d')# <cfif datediff('d',lastupdate,now()) lt 3><span style="color:red">New!</span></cfif>)<br>
  #CONTENTS#
 </li>
 </cfoutput>
 </ul>
</div>

</body>
</html>
</cfif>

以上でした。

≪ColdFusionでpingサーバーを作る[4]へ

PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
ブログ内検索
プロフィール
HN:
CFIF
性別:
男性
自己紹介:
もっと日本でもColdFusionが広まって欲しいです。

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

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

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