■パソコン関係の雑記。ソフトからハードまでまんべんなく。2001年が最盛期で、「テキストだけで90KB」もザラ。一時期おとなしくなったけど、管理のCGI化によって息を吹き返し中。現在、2004年4月21日の記事のみ表示しています。Notesの統合管理CGI。皆様には突然の登場であるけど、去年の6月13日の日記にも記述が登場してるように、ずいぶん時間がかかってたりする。(実質の作業期間は一週間ほどだけど)このCGIはとても働き者で、これひとつでほとんどのことをやってくれるのだ。その辺の配布ものとは違って自分に最適化されてるので、とにかく(俺にとって)使いやすい。このメリットがあるからこそ自作したんだけど。配布ものの場合、サーバーにCGIをアップしてアクセスし、管理モードなりのボタンを押してパスワードを入れて編集画面に移るのがほとんどだ。(レンタル掲示板と同じだね)毎日書くようなコンテンツでそんなまだるっこしいことやってられない。HTMLを作っていちいちアップだなんて無理。規模のわりにテキスト量が異常に多い当サイトだから、管理の自動化は昔々からの悲願だったのだ。JavaScriptでやろうとしてた時期もあったが、ブラウザ依存のJavaScriptは、やはりこういう用途には向かなかった。CGIでないと不可能なのである。JavaScriptで修行を積みながら思っていたのさ。「いつかCGIが使えるようになったら絶対やってやる...!」と。その第1弾が、やっとお目見えなのである。素敵CGIの索敵ポイントHTMLファイルを作る最大の特徴であり特長でもあると思う。以前に使ってた日記CGI(配布ものの改造品)は、HTMLはTransitionalにもなってねえわ誰かが見にくるたびにCGIが起動してサーバー負荷的によろしくないわで、一刻も早くなんとかしたかったんだよね。このCGIはHTMLファイルを作ることで、サーバー負荷を最低限に抑えられる。手書きしたかのように綺麗なソースを吐く。最新の年月のみ「新しい方が上」でHTMLを作る。頻繁に来てくださる方にはそっちの方がいいだろう...という老婆心。次の月になって新しいHTMLが作られると、古くなった方は自動で通常の日付順に書き換えられる。引数をyymmdd形式にすることで「特定の記事だけ表示」ができる。これはさすがにCGI出力。過去記事へリンクを張った場合、その記事だけ表示することでトラフィックの増加や余計な待ち時間を抑えられる。パチョ奮闘記はひと月あたりのテキストサイズが100KBを超える馬鹿な年月があるので、これは重要だ。ちなみに、引数がyymm形式だった場合、該当年月のHTMLファイルへリダイレクトする。パチョ奮闘記、どこからCGIが呼び出されたかで動作モードが変わる。別に3つでなくていくらでも追加可能。(気分日常雑記帳が記事番号管理から日付管理に変更されたのはこのためだったりする)ローカルと連動するローカルの時のみ「write」が現れ、押すと記事を書く画面になる。これはローカルでの動作なので、サーバーを気にせず楽に書ける。JavaScriptがリアルタイムプレビューやカキコモードといった便利機能を提供。記事を書いて送信すると、ローカルとWebを両方同時に更新する。配布ものだとサーバーのみで動作するので、バックアップするには定期的にログファイルをダウンロードしないといけないが、このCGIはその手間がない。当然ながら、自分のPCにPerlインタプリタとHTTPサーバーを組みこまないといけない。編集が簡単ローカルの時のみ各記事のアドレス部分に「Edit」が現れ、押すと直接編集画面へ行ける。編集結果はWeb側にも反映されるし、反映させないこともできる。ローカル側CGIとWeb側CGIが連動してるからこそできる芸当。HTML構造の変更が簡単ページのHTML構造を変更したくなったら、テンプレートをいじるだけで一瞬にして全HTMLを更新。プログラムだからこそできる芸当。自分で作ったんだからあたり前だわな。人が作ったものを改造するのは骨が折れる。新しいバックナンバーが増えると、各ページのバックナンバーセレクトにも自動追加される。サイトマップやコンテンツ入口にも自動追加される。加えて、トップページの更新日付やWWWCのメタ情報、携帯向け更新情報も更新する。(これは更新しないようにもできる)記事の削除機能がついてない結構高性能なのに驚きの事実。これは俺の「一度出したものは引っこめない」という主義に基づくものであり、間違えて送信しようものなら記事データを直接編集しないと消せなかったりする。記事データを受け取ると、データファイルに追加する。データファイルを元に、該当する年月のHTMLファイルを更新する。なければ記事データをテンプレートに流しこんで新しいHTMLを作る。対象年月が最新号の時だけ「新しい方が上」に並べ替える。新しいHTMLファイルを作った場合は、バックナンバーを追加するために全HTMLファイルを更新。Notesが読みこむSSIファイルを更新。これによってバックナンバーが増えると両者にも自動追加される仕組み。指定がある場合、トップページの更新日付や携帯向け更新情報も更新する。下手な配布ものよりよっぽど高性能になってるはずだけど、最適化しすぎてsiteCTSでしか使えないのがなんとも。(汎用にデチューンして配るのも一手ではあるけど)なにより悲しいのは、このCGIを没にしてしまったことである。Editionでデビューするはずだったのだ。これから作る新型CGIは、これを凌ぐ性能...になる予定。恒例のCGIソースを...といきたいとこなのだが、CGIはJavaScriptと違ってセキュリティに直接関係するので、迂闊に公開できない。ひよこだった頃のソースなら見せても大丈夫だけど。(実装版はこれの3倍以上のサイズだ)仕方ないので書込画面の体験版モードを作ってみた。(それは無理な相談だ)※IE6専用なので他のブラウザで入るとエラー出まくるわよ。このコンテンツはのんびり更新したいので、日付管理だとバックナンバーのリストがひどい虫食いになっちゃうのよね。記事番号管理にしてたのだけど。Editionになったら全部ひとつに統合されるので、それまでは我慢か。hrhttp://cts.creasus.net。