全くIT系ではない製造業の社員がイントラ上でColdFusionと格闘。システム構築を外部委託するとき「できればColdFusionでお願いします」と頼むのだが・・・・
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
♪地震に強くみせーたり、
地震を弱くみせーたり・・・・♪
平井堅のLIFE IS ・・・ 好きだったんですが、この替え歌聴いてからこの歌詞ばっかり浮かびます。
さて、
ColdFusionとは少し離れますが、FlashPlayerのバージョン別普及率について。
先日8.5が9.0として正式リリースされました。
σ(・・*)ワタシ的には、7.0と8.0の普及率が気になります。
先月あたりに、会社の外部コンテンツでFLVを使った動画配信を本格的(?)に始めたのですが、そのときFlash7以上を対象とするか、8以上にするかで悩みました。
8で作ると、圧縮率の高いFLVのコーデックを使えるし、コンポーネントも扱いやすい。
でもFlashPlayer8の普及率は6割くらいと言われていました。
で、結局FlashPlayer7以上を対象として作りました。
ホントに8の普及率は6割なんだろうか・・・と思いながらも、最近のデータはどこにも見つからず、まぁそのうち・・・と思っていたのですが、最近始めたGoogleのanalyticsデータには実はFlashのバージョンが記録されていると知ったわけです。
一応会社のサイトはGooglePageRankが5です。直近1週間の訪問者のFlashのバージョンが記録されています。ちなみに5278人。
何か同じバージョンでもr22とかr24とか細かく分かれてしまっていますが、集計すると、
9:4.1%
8:58.4%
7:29.3%
6:6.2%
5:0.6%
4:0.1%
未インストール:1.3%
といった感じです。8と9合わせて62.5%ですから、もうちょっとですかね。
早くバージョン8以上を前提にして作りたいところです。
ちなみにColdFusionが生成するswfやflashpaperなんかは、Ver6以上が対象のようです。
地震を弱くみせーたり・・・・♪
平井堅のLIFE IS ・・・ 好きだったんですが、この替え歌聴いてからこの歌詞ばっかり浮かびます。
さて、
ColdFusionとは少し離れますが、FlashPlayerのバージョン別普及率について。
先日8.5が9.0として正式リリースされました。
σ(・・*)ワタシ的には、7.0と8.0の普及率が気になります。
先月あたりに、会社の外部コンテンツでFLVを使った動画配信を本格的(?)に始めたのですが、そのときFlash7以上を対象とするか、8以上にするかで悩みました。
8で作ると、圧縮率の高いFLVのコーデックを使えるし、コンポーネントも扱いやすい。
でもFlashPlayer8の普及率は6割くらいと言われていました。
で、結局FlashPlayer7以上を対象として作りました。
ホントに8の普及率は6割なんだろうか・・・と思いながらも、最近のデータはどこにも見つからず、まぁそのうち・・・と思っていたのですが、最近始めたGoogleのanalyticsデータには実はFlashのバージョンが記録されていると知ったわけです。
一応会社のサイトはGooglePageRankが5です。直近1週間の訪問者のFlashのバージョンが記録されています。ちなみに5278人。
何か同じバージョンでもr22とかr24とか細かく分かれてしまっていますが、集計すると、
9:4.1%
8:58.4%
7:29.3%
6:6.2%
5:0.6%
4:0.1%
未インストール:1.3%
といった感じです。8と9合わせて62.5%ですから、もうちょっとですかね。
早くバージョン8以上を前提にして作りたいところです。
ちなみにColdFusionが生成するswfやflashpaperなんかは、Ver6以上が対象のようです。
PR
♪土日も休まずに 築 宅 築 宅
おじまさんといっしょに 築 宅 築 宅♪
耳から離れません。
さて、
何かの時に「プロってのは、エラー処理まで考えるんだよ」という話を聞いた覚えがあります。
エラーが出たら出っぱなしになるのがアマチュア。想定できるエラーなら処理を考えておくのがプロってことでしょうか。
まぁσ(・・*)はプロフィールにあるとおりプロじゃないわけですが、アマとしてのエラー処理くらいはやっておこうと思います。自動スケジュールものは、エラーが出ても気がつかないことが多いので、「通知」する程度のエラー処理ですが。
<cftry>
<!--- ■RSS get --->
<!--- ■xml解析 --->
<!--- ■内部mt_entry更新 --->
<!--- ■表示部分 --->
<!--- ■html作成 --->
<!--- ■ftpでput --->
<cfcatch>
<cfmail from="server@hoge.co.jp" to="cfif@hoge.co.jp" subject="RSS更新のエラーでてますって!">
#cfcatch.message#
例外エラー、type = #CFCATCH.TYPE# を検出しました。
</cfcatch>
</cftry>
こんな感じで、エラーが想定される場所を<cftry>(→LiveDocs )でくくって、エラーが起きたときの処理を<cfcatch>(→LiveDocs )に書くのが基本です。すると、例えばRSSのxmlをcfhttpで取れなかった時や、putに失敗した時など、何らかのエラーが発生した場合に<cfmail>(→LiveDocs )でColdFusionがメールを送ってくれます。
なんでもかんでも一緒くたにメール飛ばすだけ ってところがアマチュア対応ですなぁ。
おじまさんといっしょに 築 宅 築 宅♪
耳から離れません。
さて、
何かの時に「プロってのは、エラー処理まで考えるんだよ」という話を聞いた覚えがあります。
エラーが出たら出っぱなしになるのがアマチュア。想定できるエラーなら処理を考えておくのがプロってことでしょうか。
まぁσ(・・*)はプロフィールにあるとおりプロじゃないわけですが、アマとしてのエラー処理くらいはやっておこうと思います。自動スケジュールものは、エラーが出ても気がつかないことが多いので、「通知」する程度のエラー処理ですが。
<cftry>
<!--- ■RSS get --->
<!--- ■xml解析 --->
<!--- ■内部mt_entry更新 --->
<!--- ■表示部分 --->
<!--- ■html作成 --->
<!--- ■ftpでput --->
<cfcatch>
<cfmail from="server@hoge.co.jp" to="cfif@hoge.co.jp" subject="RSS更新のエラーでてますって!">
#cfcatch.message#
例外エラー、type = #CFCATCH.TYPE# を検出しました。
</cfcatch>
</cftry>
こんな感じで、エラーが想定される場所を<cftry>(→LiveDocs )でくくって、エラーが起きたときの処理を<cfcatch>(→LiveDocs )に書くのが基本です。すると、例えばRSSのxmlをcfhttpで取れなかった時や、putに失敗した時など、何らかのエラーが発生した場合に<cfmail>(→LiveDocs )でColdFusionがメールを送ってくれます。
なんでもかんでも一緒くたにメール飛ばすだけ ってところがアマチュア対応ですなぁ。
愛という字は真心で、 恋という字は下心。
・・・・最近肩こりがひどくなってきました。
さて、
取ってきたRSSから新着を取って、それをhtmlファイルにして社外にFTPでputする最後の部分です。
使うColdFusionのタグは、<cffile>(→LiveDocs ) と <cfftp>(→LiveDocs )
まず、htmlファイルの元ネタを文字列変数にします。
<cfset htmlDoc = '
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>各ブログのRSSを取ってくる</title>
</head>'>
こんな感じで、改行含めてそのまんま変数に突っ込んでいきます。
それから
<!--- ■File書き込み --->
<cffile action="write" output="#htmlDoc#" file="/var/www/blogs/ftp/test.html" >
ここで file はサーバーの絶対パスです。windowsなら、D:\inetpub\wwwroot\・・・・とか。
これでファイルがColdFusionサーバー側に作成されます。
そんでもって、
<!--- ■FTP --->
<cfftp action = "open" username = "hoge" connection = "Blogs_new" password = "hoge" server = "hoge.co.jp" stopOnError = "Yes">
<cfftp action="putfile" connection="Blogs_new" localfile="/var/www/blogs/ftp/test.html" remotefile="/blogs_html/test.html">
<cfftp action = "close" connection = "Blogs_new" stopOnError = "Yes">
action="open" でFTPサーバーに接続して、
action="putfile" でPUT。
action="close" で接続のクローズ。
行儀良くやるとこんな感じですかね。実は今回初めて使ったタグです。
初めてでもColdFusionのリファレンス(Dreamweaverのヘルプからいつも開いてます)を見れば、ちょっとの試行錯誤ですぐ使えるので、ColdFusionが大好きです。
次回はエラー処理についてでも。
こういう自動スケジュールモノってエラーが出ても気がつかないことが多いですからね。
・・・・最近肩こりがひどくなってきました。
さて、
取ってきたRSSから新着を取って、それをhtmlファイルにして社外にFTPでputする最後の部分です。
使うColdFusionのタグは、<cffile>(→LiveDocs ) と <cfftp>(→LiveDocs )
まず、htmlファイルの元ネタを文字列変数にします。
<cfset htmlDoc = '
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>各ブログのRSSを取ってくる</title>
</head>'>
こんな感じで、改行含めてそのまんま変数に突っ込んでいきます。
それから
<!--- ■File書き込み --->
<cffile action="write" output="#htmlDoc#" file="/var/www/blogs/ftp/test.html" >
ここで file はサーバーの絶対パスです。windowsなら、D:\inetpub\wwwroot\・・・・とか。
これでファイルがColdFusionサーバー側に作成されます。
そんでもって、
<!--- ■FTP --->
<cfftp action = "open" username = "hoge" connection = "Blogs_new" password = "hoge" server = "hoge.co.jp" stopOnError = "Yes">
<cfftp action="putfile" connection="Blogs_new" localfile="/var/www/blogs/ftp/test.html" remotefile="/blogs_html/test.html">
<cfftp action = "close" connection = "Blogs_new" stopOnError = "Yes">
action="open" でFTPサーバーに接続して、
action="putfile" でPUT。
action="close" で接続のクローズ。
行儀良くやるとこんな感じですかね。実は今回初めて使ったタグです。
初めてでもColdFusionのリファレンス(Dreamweaverのヘルプからいつも開いてます)を見れば、ちょっとの試行錯誤ですぐ使えるので、ColdFusionが大好きです。
次回はエラー処理についてでも。
こういう自動スケジュールモノってエラーが出ても気がつかないことが多いですからね。
苦い濃いより、甘い濃い。
毎日暑くてふにゃふにゃです。
さて、
<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は。
RSSを外から取ってきて、必要な情報を抜き出せればRSSリーダー「もどき」としては出来たも同然。
あとはどう見せるかという、プログラマが苦手なデザインセンス部分が問題になります。
とりあえず現状のままだと記事のhtmlタグもついてきてしまうので、タグを取らないことには画像なんかも入ってくるので厄介です。
ColdFusionにはタグストリップ関数みたいなのはありません。
で、どうするかというと、文字を置き換えてくれるReplace関数(→LiveDocs )というやつを使います。タグの部分を""に置き換えて取っちゃうわけですね。
普通のReplace関数だと、置き換えるテキストを完全一致で書かなければいけません。まさか全部のhtmlタグを書くことは出来ないので、
正規表現で置き換えてくれる、REReplace関数(→LiveDocs )を使います。
RE は正規表現(Regular Expression)のREだと思われます。
σ(・・*)ワタシ的には、正規表現、かなり苦手です。多分、正規表現をマスターする数学的な脳がちょっと足りないんだろうと思います。物理的脳はいいセンいってると思うんですがね・・・・
#REReplace(tag_tuki_Text , "<[^>]*>" , "" , "All")#
はい、これでタグストリップ完了です。
tag_tuki_Text はタグ付きテキストが入っている変数です。(そのまんまやん)
< [ ^ > ] * >
こいつが正規表現。顔文字じゃあない。こう書くと、「最初の < から 次の > まで」という意味になる。
それを "" で "All"全部 置き換えちゃってくれ! という事になる。
えーと、
"<[^>]*>" < が出てきて、
"<[^>]*>" > ではない文字が、
"<[^>]*>" 連続して、
"<[^>]*>" > が出てくるまで。
無理矢理訳すとこんな感じかな・・・
ってことで、次回仕上げます。
あとはどう見せるかという、プログラマが苦手なデザインセンス部分が問題になります。
とりあえず現状のままだと記事のhtmlタグもついてきてしまうので、タグを取らないことには画像なんかも入ってくるので厄介です。
ColdFusionにはタグストリップ関数みたいなのはありません。
で、どうするかというと、文字を置き換えてくれるReplace関数(→LiveDocs )というやつを使います。タグの部分を""に置き換えて取っちゃうわけですね。
普通のReplace関数だと、置き換えるテキストを完全一致で書かなければいけません。まさか全部のhtmlタグを書くことは出来ないので、
正規表現で置き換えてくれる、REReplace関数(→LiveDocs )を使います。
RE は正規表現(Regular Expression)のREだと思われます。
σ(・・*)ワタシ的には、正規表現、かなり苦手です。多分、正規表現をマスターする数学的な脳がちょっと足りないんだろうと思います。物理的脳はいいセンいってると思うんですがね・・・・
#REReplace(tag_tuki_Text , "<[^>]*>" , "" , "All")#
はい、これでタグストリップ完了です。
tag_tuki_Text はタグ付きテキストが入っている変数です。(そのまんまやん)
< [ ^ > ] * >
こいつが正規表現。顔文字じゃあない。こう書くと、「最初の < から 次の > まで」という意味になる。
それを "" で "All"全部 置き換えちゃってくれ! という事になる。
えーと、
"<[^>]*>" < が出てきて、
"<[^>]*>" > ではない文字が、
"<[^>]*>" 連続して、
"<[^>]*>" > が出てくるまで。
無理矢理訳すとこんな感じかな・・・
ってことで、次回仕上げます。
最新記事
(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)
最新トラックバック
カレンダー
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 |
ColdFusionリンク
アーカイブ
最古記事
(06/23)
(06/26)
(06/27)
(06/28)
(06/29)
(06/30)
(07/03)
(07/04)
(07/05)
(07/06)
なかのひと