[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
すこし落ち着いてきたので、ひさびさ更新。
ちょっと本格的なFlashRemotingをすれば解決できそうな課題が持ち上がったので、やってみることに。
最初はColdFusionのFlashFormでいけるかな?と思ったのですが、結構ボリュームのあるフォームなのでFlashRemotingで検討開始です。
Flexは敷居が高いですね。ワタシみたいな使い方だと。
ColdFusionはデフォルトでFlashRemoting付(?)なので、Flash Professional 8があればOK。
←以前の教科書はコレだったんですが、FlashもColdFusionも2世代前なので古さは否めません。ActionScriptのバージョン違っているため、参考程度にしかならなくなってしまいました。
新しいFlashRemotingの教科書を探してみたんですが、無いんですよねぇ・・・・・ColdFusionと同じく・・・・・
結局本家の『FlashRemoting for FlashMX2004 ActionScript2.0ユーザーガイド』が唯一の頼りです。
import mx.remoting.Service;
からスタートです。
なにかいい教科書あったら教えてください。お願いします。
先日某データーセンターで作業がありました。
ICカード+パスワード+指静脈 というトリプルロックがあるのですが、静脈認証の認識率がイマイチ。
はまると、トイレに行きたいのに部屋から出るのに5分かかっちゃう・・・・なんて事も。
あせると血流も変わるのでしょうかね。
さて、
2006年9月における、FlashPlayerのバージョン別普及率をまとめました。
9月の訪問者数は約24400人でした。(会社のオフィシャルページ)
バージョン | 訪問数 | 9月 | 8月 |
---|---|---|---|
9.x |
3791 |
16.3% |
11.2% |
8.x |
12507 |
51.3% |
53.2% |
7.x |
5762 |
23.6% |
26.8% |
6.x |
1630 |
6.7% |
6.8% |
5.x |
161 |
0.7% |
0.7% |
4以下 |
28 |
0.1% |
0.1% |
未インストール |
341 |
1.4% |
1.1% |
でした。
前回に比べると、バージョン9が5ポイントアップ。
来月にはバージョン8以上が7割を超えてくれるかな?
データーベースを停止する直前になって、ColdFusionのシステムにエラー処理を仕込みました。
やっぱり今週は時間がとれなかった・・・・
さて、
エラー処理といっても、基本中の基本と思われる、データーベースが停止しているときの処理です。
ColdFusion MX7 なので、Application.cfcでやるのが王道でしょう。
拡張子 cfc は、コールドフュージョンコンポーネントです。その中でもApplication.cfcだけは特別扱いのコンポーネント。どの辺が特別かというと、どのcfmを実行するときでも必ず読み込まれるのです。(そのcfmと同一ディレクトリか上位ディレクトリにApplication.cfcが存在すれば ですが) あ、それとApplicationのAは必ず大文字で。
必ず読み込まれるので、そこで<cfquery>を発行して、エラーが出ない事を確認させれば、全部のcfmにチェックするコードを入れる手間は省けるわけです。
ColdFusionでセッション管理をする場合にもApplication.cfcで定義するのですが、ちょっとそれは置いといて、エラー処理について。
======== Application.cfc のソース===========
<cfcomponent>
<cfprocessingdirective pageencoding="UTF-8">
<cfscript>
This.name="genba_ph";
This.clientManagement="False";
This.sessionmanagement="True";
This.Sessiontimeout="#createtimespan(0,0,60,0)#";
</cfscript>
<cffunction name="onApplicationStart">
<!---アプリケーション変数設定--->
</cffunction>
<cffunction name="onRequestStart">
<!--- データーベース確認 --->
<cftry>
<cfquery name="check" datasource="tip">
SELECT COUNT(HONSTNCD) FROM HONSITENMST
</cfquery>
<cfcatch type="database">
<cfoutput><h1>データーベースが停止しているため、システムは現在利用できません</h1></cfoutput>
<cfreturn false>
</cfcatch>
</cftry>
<!--- ログインチェック --->
<!--- session.login があればログイン済
無ければクッキーを調べる。cookie.shimei_cdはポータルと同じクッキー --->
</cffunction>
<cffunction name="onSessionStart">
<!---セッション開始をログ記録--->
</cffunction>
<cffunction name="onSessionEnd">
<!---ディレクトリを作成したなら消す--->
</cffunction>
</cfcomponent>
====================================
Application.cfc は、だいたいこんな構成が多いんだと思います。
エラー処理をしてるのは、<!---データーベース確認--->と書いてあるところ。
<cftry>
エラーが発生する可能性がある処理(クエリ発行)
<cfcatch>
発生しちゃったときの処理
</cfcatch>
</cftry>
このパターンが普通ですね。
ところでApplication.cfc は、ColdFusionMX7から使えるようになったコンポーネント。以前はApplication.cfmでした。
cfcになってから、必ず読み込まれるだけでなく、<cffunction name="どんなときに実行する?">というファンクションがつきました。
<cffunction name="onApplicationStart">は、アプリケーションが開始したとき。
<cffunction name="onRequestStart">は、cfmページが呼ばれたときに最初に必ず。
<cffunction name="onRequestEnd">は、cfmページの最後に必ず。
<cffunction name="onSessionStart">は、セッションが開始したときに必ず。
<cffunction name="onSessionEnd">は、セッションが終了したときに必ず。
今回のデーターベースの稼働確認は、ページを表示する時に毎回チェックさせてます。
その他、注釈のような処理をさせたりしてます。
さて、明日はシステムの引っ越しです。
無事引っ越せるか、結構不安・・・・
ヽ(  ̄д ̄;)ノ あー
ここんとこ忙しくてColdFusionいじってません。
来週もダメっぽい。
週末までに、エラー処理仕込まなきゃならんのがある・・・・
明日やるしかないかな。
Core2Duoを積んだマシンをゲットした。
(T_T) うれしい・・・・
さて、
ColdFusionを使って、お気楽にディレクトリをweb公開する例のその2。
前回はcfdirectoryで一覧を取るところまででした。
<cfdirectory directory="/var/www/html/fuho" action="list" name="spf" filter="*.pdf" sort="name DESC"/>
今回は表示部分です。
<cfoutput>
<cfloop query="spf">
<div class="items">
<cfif (IsNumeric(ListGetAt(name,1,'.')) is false) or (Len(ListGetAt(name,1,'.')) neq 8)>
[#name#]←ファイル名がyyyymmdd.pdfでは無いようです....
<cfelse>
<h3><a href="./kyu/sambaweb/newspaper/#name#" target="_PDF">#left(name,4)#年 #mid(name,5,2)#月 #mid(name,7,2)#日</a> (#NumberFormat(size/1024/1024,'__._')#MB)</h3>
</cfif>
</div>
</cfloop>
</cfoutput>
いろいろ関数を使っています。
公開するルールとして、yyyymmdd.pdf形式でファイルをアップする事にしたので、そのルールに合っているかどうか一応チェックしています。相手はオツボネーゼだったりするので、何をしでかすかわかりませんから。
チェックは2種類。
ひとつは、拡張子を除いたファイル名が数字かどうかを、
IsNumeric(ListGetAt(name,1,'.'))
これでチェックしています。
IsNumeric(文字列)関数で、文字列が数字ならtrue、数字でなければFlaseが返ります。
で、拡張子.pdfを除くために、ListGetAt関数(→LiveDocs)を使っています。
left関数などを使って、「ファイル名の左から8文字とる」でも良さそうですが、そこはオツボネーゼ。何文字のファイル名になるのかわかりません。拡張子もアヤシイかもしれません。
なので、ListGetAtを使っています。
ColdFusionで言う「リスト」とは、
"1,3,5,7,11" とか "赤;青;黄色;紫" とか、決まった区切り文字を含んだ文字列です。
こいつの3番目を取り出すといった事ができます。
ListGetAt(リスト文字列 , 何番目を取るか , リストセパレータ ) という決まりなので、3つ目を取り出すにはそれぞれ、
ListGetAt("1,3,5,7,11" , 3 , ",") とすれば '5' を、 ListGetAt("赤;青;黄色;紫" , 3 , ';') とすれば '黄色' を取り出すことができます。
ListGetAt( name , 1 , "." ) は、
name(←ファイル名) をピリオドで区切られたリストと見立てて、1番目を取る。 ってことになります。
で、これが数字かどうかを判断しています。
もう一つのチェックは、その数字が8ケタかどうかをLen(ListGetAt(name,1,'.')) で、チェックしています。
まぁ、こんなチェックをしても、オツボネーゼが 20101500.pdf とか入れちゃうのは阻止できませんが、この先エラーは出なくなりますし、いくらなんでも変な日付だと気がつくと思います。
年月日の表示部分はleft関数とかmid関数なので、どんな言語でも当たり前。
その先のファイルサイズの表示ですが、
NumberFormat(size/1024/1024,'__._')
と、NumberFormat関数(→LiveDocs)を使って、少数第一位までの表示に整えています。
こいつを<cfloop query=""> で廻してるわけです。
当然、ディレクトリ内に何百もファイルがあれば、全部表示されてしまうところが「お気楽」なところですねぇ。
その辺は増えたときに考えます。はい。
情報通信を生業としない企業の、システム系でもない普通の社員なので、 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 |