[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
YouTubeでピタゴラスイッチのピタゴラ装置やアルゴリズム行進がワールドワイド。
フランス語で字幕のついたアルゴリズム行進とか、1000人弱の囚人(フィリピンセブ島?)によるアルゴリズム行進とか。
百科おじさんの声が名古屋章だった頃から録画で見ているワタシ的にはちょっと嬉しい。
「何してるの?おじさん」コーナーも好きだったが、無くなってしまった。ラーメンズを起用するあたり、NHKもなかなかやるな。と思った次第。
さて、
年末年始中にバックアップジョブが失敗し、Oracleが停止したままになっていたのは問題なので、ColdFusionでOracleの死活を通知させることにしました。
ColdFusionのスケジュールタスク機能を使って、下記のテンプレートを1時間ごとに呼ぶことで実現します。
ColdFusionAdministratorのタスクスケジューリング画面
<!---
スケジュールタスクとして呼ばれ、Oracleへの接続を確認する。
呼ばれるのは、AM7:00からPM22:30の間、1時間ごと。
メールで通知する。
復旧も通知する。
--->
<!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>Oracleへの接続確認をする</title>
</head>
<!--- 初期設定 --->
<cfset orastop = false>
<cfset mailto="cfif@hoge.co.jp,cfif@hoge.ne.jp"><!---メール通知先--->
<cffile action="read" file="d:\Inetpub\wwwroot\CF\pingOracle.txt" variable="oracleStatus"><!--- ファイルから前回の状態を読む。"stop" or "open" --->
<!--- 接続確認 --->
<cftry>
<cfquery datasource="tip" name="pin">
select litemid from techmstl
</cfquery>
<cfcatch type="database">
<cfset orastop = true>
</cfcatch>
</cftry>
<cfif orastop>
<!--- 停止している場合 --->
<!--- ファイルにstopを書く --->
<cfif oracleStatus is "open">
<cffile action="write" file="d:\Inetpub\wwwroot\CF\pingOracle.txt" addnewline="no" output="stop">
</cfif>
<!--- メール通知 --->
<cfmail subject="STOP Oracle" from="server@hoge.co.jp" to="#mailto#">
Oracleが停止しています。
</cfmail>
<cfelse>
<!--- 起動している場合 --->
<!--- 復旧かどうかの確認 --->
<cfif oracleStatus is "stop">
<!--- 復旧通知 --->
<cfmail subject="OPEN Oracle" from="server@hoge.co.jp" to="#mailto#">
Oracleが復旧しました。
</cfmail>
<!--- ファイルにopenを書く --->
<cffile action="write" file="d:\Inetpub\wwwroot\CF\pingOracle.txt" addnewline="no" output="open">
</cfif>
</cfif>
<body>
</body>
</html>
1時間に1回、データーベースに接続を行い、エラーが帰ってきた場合は、指定されたメールアドレスに通知を行います。また、前回エラーで今回正常だった場合は、「復旧」を通知します。
クエリを発行してデータベースのエラーをcfcatchするわけですが、「復旧」を通知するために、状態をファイルに書き込んでいます。application変数を使ってもいいのですが、ColdFusionやサーバーの再起動があった場合には保持できなくなるので、ファイルに書いています。
cffileで読み書きをしていますが、action="write"のaddnewlineプロパティはデフォルトで"yes" つまり追記になります。日時も含めて書き込み、ログ的に使うなら"yes"ですが、今回は"no"でやってます。
ややこしくならないし。f(^^;)
ColdFusionAdministratorの設定では、7:00 - 22:50 をスケジューリングの範囲にしています。
夜中に携帯が鳴るのも鬱陶しい(というか、夜中止まっても支障ないシステムだ)し、週末の23時からバックアップのためデーターベースを停止させているので。
ということで、今年最初のコードを書きました。
情報通信を生業としない企業の、システム系でもない普通の社員なので、 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 |