雑記帳 2006年 1月第2週

2006/01/08 Sun.

今日は少し早めの14時起床。さて、今日も元気に飲み会ですよ。ってか、2日連続で新宿で飲み会ってどんなもんよ。
n-yutaka」氏がS濱氏を見事に大阪から呼び寄せることに成功したらしく、18時から「串蔵」で飲み会開始。
電車の接続を間違えたせいで数分遅刻して行ったところ、「n-yutaka」氏と「wtr」氏とS濱氏、それにI黒がいた。
S濱氏の結婚の話を聞いたり、「wtr」氏とPerlについてあれこれ話をしたりしていると「gadult」とK岡、M野さんが来る。
仕事の話で盛り上がったり、相方の有無を訊かれて微妙に冷めたり、大和市役所勤務の某K平が結婚してるとか聞いたり。
18時から2時間ってことで入ったせいで、20時には店を出される。2次会は埼玉の何とかってトコ(場所忘れた)らしい。
M野さんの家らしいんだけど、さすがにお邪魔するのは気がひけるし、そもそも埼玉とか遠すぎなので参加見送りで。
残った自分と「gadult」とI黒も帰るには早すぎるってことで、適当に喫茶店に入ってコーヒーでも飲みながら雑談。
Blu-ray Disc」やHDDの暗号化、セキュリティ関係やら「gadult」の仕事についてなどをダラダラと話してから帰る。
2日連続の飲み会で財布も痛いが体調まで微妙になってきた。どう見ても暴飲暴食です、本当にありがとうございました。

2006/01/09 Mon.

連休の最終日くらいは午前中に起きようと思ったが、そもそも就寝時間が朝の7時である時点で無理だとわかってました。
まだ太陽が空に見える時間に起きれただけでも十分だと思います。さて、今日は何も予定が無く、落ち着いた最後の休日。

先日「Google」にこのサイトのURLを登録したのだが、検索結果にはまだ反映されてはいない模様。結構時間かかるのか?
n-yutaka」氏と「gadult」のサイトからしかリンクが貼られていないため、「Google」が検出するのは相当先になりそうだな。
Google 登録 反映 時間」で検索してみたら「Google よくある質問」なんていうのが引っかかった。説明ページあるじゃないか。

登録とクロールのタイミングにもよりますが、全ての手続きが終了するには1~4週間かかります。

こりゃ長いな。登録したのが1月4日ってことは、早くて来週で遅くて来月上旬ってとこか。また忘れた頃に調べてみますか。
サークルの後輩で「junmixの検索結果」でこのサイトが出てこないからURL教えてってのがたまにいるし、登録されてくれ。

2006/01/10 Tue.

出社して早々に自分が関わった部分のプログラムがおかしいという報告を受ける。またややこしい話が来たもんだ。
おかしいと言われている箇所は、本来自分が開発しているのとは別の環境で使われているもの。別システムの話だった。
使い勝手がいいので、別システムでもそれを導入しているらしいのだが、本番環境での動作が正常にいかないらしい。
とりあえずそっちのエラーログを見せてもらったところ、どうやらDB接続の際に不具合が毎回発生している模様。

ORA-01034: ORACLE not available

DBがavailableではないということは、DBの調子がおかしいと言うことだろうか。とりあえずエラーコードを「検索」してみる。
いくつかの似たような例が引っかかり、どうやらSIDが設定されていないのではということだ。要するにどういうこっちゃ。
ログを読んでエラーを吐いている箇所を見てみると、connectionを生成する部分で落ちている。接続できないってことか。
「jdbc:oracle:thin:@localhost:1521:ORCL」などという接続に用いる文字列があるのだが、この場合は「ORCL」がSIDになる。
接続時のユーザー名やパスワードが定義されているファイルを見てみると、何故か本番環境が開発環境のDBを見てる。
何でこんな状態で本番環境が動いていたのかは知らないけど、その辺の接続関連の設定を見直すように指摘しておく。
で、しばらくしたら動きましたとの報告が。あのな、DBに繋がらないんなら最初に設定関連を疑ってかからんかい。

2006/01/11 Wed.

昨夜は珍しく0時半くらいに眠くなって、さっさと寝るチャンスが来たかと思いきや、結局は寝たのが3時だし。だめぽ。
新たな機能追加の話も少しずつ出てきてるし、落ち着いた状態で仕事していられる時間もそろそろ終わりか。
結局粘りに粘ったgzip圧縮転送対応は未完成のまま。原因がわからないんだからどうしようもない。マジで誰か助けてくれ。

以前作ると言って最近になって着手したスケジューラー、とりあえず名前はそのまんま「Simple Scheduler」としてみた。
まだまだ詰め込むべき機能も多いし、完成は当分先になるかな。ってか、またもやクオリティが微妙になる予感。
どうせ自分で使うのが目的になるだろうし、そもそも配布できるレベルに仕上がるか不明。どうせ誰も落とさないけどさ!
で、今までコーディングの際に守ってきたルールがあるんだけど、最近になって煩わしくなってきた。全行コメント付き。
そろそろ全行コメント付きってのを止めようかな。ぶっちゃけ、自分がコーディングする際に手間がかかってしょうがない。
それに、多少なりともPerlがわかってきたってこともあるし。たまにコメントが邪魔くさいと感じることも出てきた。
過去のや既存のプログラムに対してコメントだけ取り払うなんてことは今さらしないけど、今後作るものは考えてみるか。

2006/01/12 Thu.

「Simple Scheduler」の作成を進めていると、今更ながらにデザインを決めるのがメンドくさいと思ってしまう。
まず、職場のマシンがXGAだからそれをベースにして作らざるを得ないんだけど、家のマシンがSXGAなのがねぇ。
解像度の違いでデザインが変わるのはしょうがないけど。どのサイズに合わせて作るのが一番いいんだろうか。
ノートマシンならXGAが主流だろうし、デスクトップはSXGAが主流だと思っている。UXGAはそこまで普及してないだろう。
画面の解像度をJavascriptで読み取って、それに合わせてデザインを分けるとかは絶対にやりたくない。手間かかりすぎ。
今まで作ってきたスクリプトは、そういうのを大して気にしてなかったけど。まぁ素人プログラミングだし、別にいいか。
デザインは置いておいて、まずは機能。予定表とかに必要な機能って何があるんだか。予定の編集や削除くらいか?
「予定の新規追加」「既存の予定の編集」「予定の削除」で足りそうだな。重要度ってワケじゃないけど、フラグ設定もかな。

%COLOR_VALUE = (1 => "#602000", 2 => "#FF0000", 3 => "#008040", 4 => "#0000BB");
%COLOR_COMMENT = (1 => "未設定", 2 => "重要", 3 => "ビジネス", 4 => "個人用");
%COLOR_CLASS = (
    "#602000" => "none",
    "#FF0000" => "important",
    "#008040" => "business",
    "#0000BB" => "personal"
);

パッっと思いついたこんなハッシュをフラグ設定とかに使っているのだが、思いつきだから酷いデータ構造になってる。
%COLOR_VALUEと%COLOR_COMMENTのキーが数値になっているのはソート用。ってか、ホントにわかりにくいな。
おかげで、例えば「#008040」という値を持つ変数から「ビジネス」という値を取ってくるだけで一苦労してしまう。

$color = "#008040";
while (($key, $value) = each (%COLOR_VALUE)) {
    if ($color eq $value) {
        $comment = $COLOR_COMMENT{"$key"};
        last;
    }
}

ハッシュって基本的にキーと値がペアで存在しているけど、3つ以上の要素を上手く組み合わせる方法はないものだろうか。
あれこれ考えてみたんだけど、どうにもいいのが思いつかない。どこかに都合のいいサンプルでも転がってないかね。
この辺のは後日に回すか。とりあえず最低限動くようにしてテストしていかないと、完成が永遠にお待ち下さいになってしまう。

2006/01/13 Fri.

「Simple Scheduler」がそこそこ進む。ってか、何だかコーディングが雑になってきたような気がしないでもない。
「予定の新規追加」「既存の予定の編集」「予定の削除」の実装も終了。一応最低限の形だけは出来上がってきた。
予定を追加する時にタイトルを付けているんだけど、そこの部分でとんでもないことをしていたのに気付いてしまった。

#    件名に使用できない文字列が含まれている場合
if ($filename =~ /[\\\/\,\;\:\*\?\"\&\<\>\|\=]/) {
    #    エラーメッセージを引数として、エラーページ出力サブルーチン(終了処理)呼び出し
    &error ("件名に使用できない文字列が含まれています。");
}

こんな感じで書いて、件名を入力した結果使用できない文字があったらエラーにしてたんだけど、これってダメじゃん。
例えば件名を「発表」とかにして予定を保存しようとすると、ここのエラーに引っかかってしまう。これがShift_JISの罠。
「表」という文字の2バイト目に「\x5C」があるために、この正規表現にマッチしてしまう。いかん、すっかり忘れてた。
またEUCの正規表現を使おうかとも思ったけど、メンドくさいので入力時にJavascriptの正規表現で対応することにする。

<SCRIPT type="text/javascript">
<!--
    /*  ボタンを押した際に呼ばれるメソ\ッド  */
    function check() {
        /*  ファイル名を取得する  */
        var filename = document.forms[0].filename.value;
        /*  正規表\現オブジェクトを設定  */
        rObj = new RegExp(/[\/\,\;\:\*\?\"\&\<\>\|\=\\]/g);
        /*  ファイル名に不正な文字がある場合  */
        if (filename.match(rObj)) {
            /*  アラートを表示  */
            alert("件名に使用できない文字列が含まれています。");
            /*  フォーカスを当てる  */
            document.forms[0].filename.focus();
            /*  終了  */
            return;
        }
        /*  フォームをsubmitして実行する  */
        document.forms[0].submit();
    }
-->
</SCRIPT>

一応これで動作してくれるのだが、問題なのはこのJavascriptを呼んでsubmitする時。どうにも動きがよくわからない。
<INPUT type="text">のフィールドにフォーカスがあるとEnterキーでsubmitできるけど、この辺りの仕様がわからない。
このJavascriptを呼ぶ時は<INPUT type="button">のボタンを押下して呼ぶ。では、ボタンを押さないでsubmitした時は?
例えばonkeydown="if (event.keyCode == 13) { check(); }"のようにしても、どうにも思った通りに動いてくれない。
やっぱりJavascriptの勉強を疎かにしてきたのはマズかったかなー。つーか、もともとJavascript嫌いだったんだよね!

2006/01/14 Sat.

20時から用事があるにもかかわらず、何故か18時から高幡でメシを食うだかお茶でもしようと誘ってくる某国家公務員。
マシンの調子がおかしい現状から考えると、新しいHDDへのデータ移行を最優先したかったのだが、とりあえず承諾しておく。
ってか、よりによってこんな天気の悪い日に誘わなくたっていいじゃないの。雨降ってるし風は強いし、いわゆる悪天候。
メールでその誘いが来たのが15時半くらいだったのだが、ちょうどその時に朝食を食っていたところだったのです。
15時半にメシ食って18時にメシを食えるかボケってことで、軽くお茶するくらいならいいかと思い、17時半くらいに家を出る。

18時ちょい過ぎくらいに高幡のジョナサンに入って、自分はアイス・ラテを飲みつつお偉いさんの愚痴に付き合うことに。
まぁ、どこも仕事は大変だってことですか。4人で起業とかの話もしたけど、どう見ても世迷い事です。夢は夢に留めましょう。
ちなみに目の前のS保は20時ちょいくらいから用事だと言っていて、何の用事なのだと訊くと相方と会う予定らしい。
gadult」の言葉を借りると「相方」は「愛方」になるらしいのだが、「gadult」がそういう事を言うと腹立たしいだけであります。
さて、突然ですが自分が大学1年から2年になる時に、「n-yutaka」氏が紙に残した以下のような名言がありまして。

世の中には、使う人と使われる人の2種類がいる。自分がどちらであるかを見極め(忘れたので略

なるほど、「n-yutaka」氏。実感致しました。自分はただS保が相方と会うまでの暇な時間を潰すために使われたのですね。
使う人と使われる人。国家公務員と安月給プログラマ。どう見ても自分は後者です、本当にありがとうございました。