TEMTECOMAI ORTHOSTATIC HYPOTENSION

元ダメプログラマで現ダメ中間管理職の駄文

February 2008

LacoodaST ネタが続いていますが。
スケジュール登録で開始日と終了日があって、終了日が 2038年 1月 1日以降だと画面がエライ事になります。PHP の吐き出したエラーがそのまんまブラウザに表示された。しかも繰り返し繰り返し。ページ出力が終わりません。サーバ死にそう。。。
思い切って 9999年にした時の方が可愛いエラーです。2行ぐらいのエラーだけで済んでます。
Lacooda Wiz ではエラー自体が画面に表示されちゃう事はないのですが、2038年 1月 1日の場合は画面こそ白紙ですが、後ろは同じ状況なんでしょうね。

入力された日付値の、日付としての妥当性チェックが先に行われ、パスしたらスケジュールとしての日付の妥当性チェック(開始日より終了日が前に来ているとか)をしてるようなのですが、各々で使っている日付関連関数が日付に対する許容範囲が違うためこんな事になっているようです。

LacoodaST や Apache などを管理する ST Server で Apache Errorlog を見る事が出来る。
やたらとエラーが記録されている。
大した内容ではないが、、、
C:/SpaceTag/www/htdocs/favicon.ico
C:/SpaceTag/www/htdocs/wiz/skin/default/css/task.css
なんだかお金取るわりにはおおざっぱだなぁ。。。

LacoodaST の全ファイルを grep して "gw.php" を検索してみたら結構な数の php ファイルで include していた。
なるほど、LacoodaST 内の環境変数だから各ページで読み込むわけか。
gw.php にはスクリプト的なものや html 的なものは何も書いてなくて、単純に複数の変数に値を仕込んでいるだけ。(LacoodaST の管理ページでこれらの値を書き換えるのだが、これは gw.php を上書き保存している。)
include ("gw.php") の処理をしているファイルと if ($smtpOnOff == "true") が書いてあるファイルを見比べてみると、keitaiRoutineForPc.php と NoticeDrawUp.php だけが gw.php をインクルードしてない。
この 2ファイルでどこかに gw.php をインクルードさせてあげればいいはず。。。
NoticeDrawUp.php の function insertPNotice() の最初の行に include ("gw.php"); を入れて試したらメールが飛んできた。OK
keitaiRoutineForPc.php の方はよくわからない。
if ($smtpOnOff == "true") が書いてある sendURLToUser() 関数の 1行目に global $smtpOnOff; って行があるのだが、これって・・・PHP はよくわからん。
global てだけにグローバル? $smtpOnOff て変数をグローバルで宣言?
んでもチュートリアルとかを見てみると、関数の外で定義されて値まで入ってる変数を関数の中で参照する場合に関数の中で global $hoge; ってやるみたい。
あーわからん。
sendURLToUser() 関数の外側で gw.php が読み込まれていれば関数内で global $smtpOnOff をする事によって関数内で $smtpOnOff の値を参照できるんだろうな。でも gw.php は読み込んでいない。それに keitaiRoutineForPc.php がどこでどのように使われる機能なのかが不明。

逆のアプローチ。
NoticeDrawUp.php の insertPNotice() 関数に追記した include ("gw.php") を削除し、替わりに同じ場所に global $smtpOnOff; を書いてみる。
そして NoticeDrawUp.php の先頭の方(関数の外側のベタ書き部分)で include ("../gw.php") って書いてみる。(gw.php は一個上のフォルダにある)
結果、エラー。
NoticeDrawUp.php をよく見ると class NoticeDrawUp ってなっていて、変数宣言と関数群で構成されている。
php はよくわからないけれど、クラスだから実質処理の部分は裸じゃダメってことだよな。
なのでさっきの状態、関数内で include する方法に戻した。

ちょっとまて。
insertPNotice() 関数で include ("../gw.php"); ってやったらエラーになった。「gw.php が見つからん」というような内容。
NoticeDrawUp.php から見たら gw.php は一個上の階層にあるはずなのだが。。。PHP はよくわからん。
ここは素直に include ("gw.php"); ってやることにした。

「if ($smtpOnOff == "true")」 で mb_send_mail を実行している部分は他にもあるので LacoodaST をフル機能で使うなら他もコメントアウトしたほうが良いかも。

解決した。
強引に。

飛ばない原因は wiz\class\NoticeDrawUp.php の中にあるメール送信の判断部分
if ($smtpOnOff == "true") {
  mb_send_mail($email, "[WIZ] 回覧が到着しました", $mailstr, "From:" . $fromMailStr . "\r\n" . "Date: " . date("D, d M Y H:i:s O") );
}
こいつの先頭 $smtpOnOff が空っぽだった。
とりあえず If のブロックをコメントアウトし、mb_send_mail を裸状態にしてあげたらメール送信できるようになった。
NoticeDrawUp.php は回覧を作成する部分らしい。
オイラの使い方では回覧機能自体は使わないが、スケジュール登録などでもこの機能を使ってメール通知をしているようだ。
管理機能でのメール通知使用 On/Off は効かなくなるが構わないだろう。

web でみっけたサンプルでやってみたけれど非常に遅かった。
処理中にメモリもガンガン使いまくったようだ。
よって今回は却下。

pg_dump で masters(Lacooda の DB) をダンプ出力したけどこいつをリストアするのは問題発生。
運用中の masters に pg_restore するとデータがダブってしまった。
結局 copy や insert でリストア先のテーブルにデータを "追加" しているので、リストア前に masters の中身を空っぽにしてあげる必要があるんじゃないかと思う。
LacoodaST インストール直後の masters はどうなっているのかというとインストーラによってイニシャル データが入ってるわけで、
システムのリストア: [ST 再インストール]->[ツールやコマンドで masters の中身のスキーマを空っぽにする]->[pg_restore で全てをリストアする]
ってなるんじゃないかと思う。(勝手な想像)
masters に接続するための DB ユーザー "lacooda" とその所有権情報は pgsql の管理 DB あたりにあると思うし、masters 自体を削除するんじゃないから問題ないとは思う。(勝手な想像)
んでも面倒くさい。
できればパッとやってパッと終わるほうがいい。

"LacoodaST の危機" てな場合にしかリストアしない方針。ユーザーが登録したデータを削除しちゃったとかいう細かいレベルは NG でいく方針。なので DB 全体をガバッとバックアップしてガバッと戻すほうが楽。

吉岡照雄さんの ZIP.VBS を参考にし、メッセージのダイアログを表示しないようにしたスクリプトを書き、こいつをタスクで深夜に動かすことにした。
【バックアップ元】
LacoodaST の php ファイル群(C:\SpaceTag\www\httdocs)
PostgreSQL の DB 全体(C:\SpaceTag\data\apgsql)
php.ini ファイル(C:\SpaceTag\server\php4\php.ini)
これらを zip 圧縮して、C:\STBackup\ の下に yyyyMMddHHmm のフォルダを作成し、その中に prefix + yyyyMMddHHmm.zip で保存。
prefix は "www" "pgsql" "php" の 3種類。

平城遷都1300年記念事業マスコット
平城遷都1300年祭マスコットキャラクターの愛称を募集!
ってこのマスコットに 「愛称」 ってもねぇ。

3月 5日に優寿司のみんなとスキーに行く予定だったけど考えてみれば夜から社内研修があったんだった。

Windows Server 2003 R2 Standerd Edition に LacoodaST をインストールした。IIS の SMTP 転送サービスは入れてない。
LacoodaST のメール設定は適切に設定したと思う。
php.ini 内の SMTP 項目は外のサーバを指定。
テスト用の php ページを作成して実行し、php だけでメールを送信できることを確認した。
しかし LacoodaST でスケジュール等からメールが飛ばない。
やっぱ普通に考えたら LacoodaST 内の設定だよな。

ようやくコメント書きが終わった。
一人だけ自信がなかったので出社してから仕上げます。
今日は二時間ぐらいしか寝れないね。
突発の打ち合わせでも入らなければ早めに帰ろう。

及川奈央が。。。
役名が "ケガレシア" って。。。
よい子のみんな、このオネエちゃんはね、ホントに汚れくぁwせdrftgyふじこlp

GLAY の中の人が公共広告機構の CM で自ら HIV 検査を受け、視聴者にも検査を促しています。
ちゃんと検査しておいたほうがいですよね。自分のためにも。愛する人のためにも。
大切な人を守り続けるためにボクはここに来ました。
既婚だよな、この人。
ツアー中に遊んだのが奥さんにバレちゃったの?

Live at the Royal Albert Hall到着しました。
キースの演奏にベタ惚れですわ。
やっぱ T 字演奏はキースがカッコいい。小室じゃダメだよ。

1
1/29 のエントリ、"こんなに飲めません" へのコメント。
comments
1. Posted by toto February 06, 2008 22:16
ココにいる(爆
ってか OFF企画するからこぉーい
久しぶりに怖い思いをしたw

でも面倒だったのでもんじ焼きに変更。 具はもちろんベビースターだけ。 小麦粉でお腹いっぱい。

仕事マシンが 4GB に成長しました。 Virtual PC 内の XP に 1GB プレゼントしました。

いや、
最後は肉で終わりたい

EL&P 2発。
Live at the Royal Albert Hall
こっちは再結成の頃じゃないかな。
来日したときは狂喜して見に行きましたよ。

ライヴ・アット・モントルー1997
モントルーの頃のは CD で持ってる。右手手術の影響かキースの演奏が少しもたるやつ。
んで庶民のファンファーレとかはシンセの音がベタベタしてるし全体的にダラダラしてる。

VisualYMO:the Best
まぁファンってことで一応・・・

細野晴臣イエローマジックショー
これもレアってことで一応・・・

HAS/YMO
画像ないけど、もうすぐ発売。去年の横浜ライブ。見に行きたかったなぁ・・・

チェリオ ホワイトチョコのシーズン真っ只中。
オイラこれ大好き。
お客様の所に入ってた時もこいつの美味しさを伝道し、同僚 1人を信者として迎え入れることができた。
今年もホワイトチョコが熱い。

経口補水液 OS-1
優寿司の若い衆を夜間診療所へ乗せてきた。
とりあえずヒマ人。
出張の用意もせにゃならん。
てかこんな病原体の巣窟で暇してたらオイラも殺られてしまう。
ここは一旦優寿司に帰投して待機する。

待合室の自販機で大塚製薬工場の経口補水液 OS-1 なる飲み物を買った。
飲みにくいポカリというか、吐きそうな時の胃液を薄めた感じ。
「医師から脱水状態の食事療法として指示された場合に限りお飲みください」 って書いてある。健康な舌には耐えられない味。

↑このページのトップヘ