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

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

すこし落ち着いてきたので、ひさびさ更新。

ちょっと本格的なFlashRemotingをすれば解決できそうな課題が持ち上がったので、やってみることに。
最初はColdFusionのFlashFormでいけるかな?と思ったのですが、結構ボリュームのあるフォームなのでFlashRemotingで検討開始です。
Flexは敷居が高いですね。ワタシみたいな使い方だと。

ColdFusionはデフォルトでFlashRemoting付(?)なので、Flash Professional 8があればOK。

4774117153.jpg←以前の教科書はコレだったんですが、FlashもColdFusionも2世代前なので古さは否めません。ActionScriptのバージョン違っているため、参考程度にしかならなくなってしまいました。

新しいFlashRemotingの教科書を探してみたんですが、無いんですよねぇ・・・・・ColdFusionと同じく・・・・・

結局本家の『FlashRemoting for FlashMX2004 ActionScript2.0ユーザーガイド』が唯一の頼りです。

import mx.remoting.Service;

からスタートです。

なにかいい教科書あったら教えてください。お願いします。

PR

先日某データーセンターで作業がありました。
ICカード+パスワード+指静脈 というトリプルロックがあるのですが、静脈認証の認識率がイマイチ。
はまると、トイレに行きたいのに部屋から出るのに5分かかっちゃう・・・・なんて事も。
あせると血流も変わるのでしょうかね。

さて、

2006年9月における、FlashPlayerのバージョン別普及率をまとめました。

2006年9月のflashバージョン別普及率

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=""> で廻してるわけです。

当然、ディレクトリ内に何百もファイルがあれば、全部表示されてしまうところが「お気楽」なところですねぇ。

その辺は増えたときに考えます。はい。

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