〜 コラム作成CGI Column HTML 〜

最終更新日 2002.7.31 

 表示部をHTML形式にした、動作の軽いコラム作成支援CGIです。
 現在の最新ver.は 2.10 です。ログ(columnh.log)、環境設定ファイル(config.dat)に互換性がありません。バージョンアップ時には必ず「v.2.10へバージョンアップする際の注意」を読み、そこに書かれている作業を行って下さい。


■特徴

 自分でもコラムを書いているのでコラム作成支援CGIが欲しかったのですが、「フレームタイプであること」「表示部がHTMLになっていること」という2つの条件を満足させるCGIが(白砂が探した限りでは)ありませんでした。
 なので、自給自足(誤)の意味で作ったCGIです。


■サンプルとダウンロード

サンプル

以上の条件に同意できた場合のみ、ファイルをダウンロードして下さい。また、ファイルをダウンロードした場合、無条件に上の条件に同意したものとします。

Ver 2.10
LHA形式
column.lzh
ZIP形式
column.zip

■各種ファイルの説明

具体的な説明に入る前に、各フォルダ/ファイルの説明をしておきます。

 フレームの左側に表示される、メニュー部分のHTMLファイルが格納されます。この中に格納されるファイルはCGIが自動生成します。ちなみに、1.html、2.html……という名称です。

 フレームの右側に表示される記事部分のHTMLファイルが格納されます。この中に格納されるファイルはCGIが自動生成します。ちなみに、1.html、2.html……という名称です。menuフォルダの中身と同じ名前ですので、なんかのはずみに混ぜたりしてしまうと後が大変です(笑)。

 念のため、でしかないんですが、同時書き込みができないようにファイルロック処理を行っています。自分以外が書き込むことはない筈なんで必要ないんですが、本に書いてあったのでつい……(笑)。
 CGIが使用するだけで表に出ない(アドレスとして利用者には判らない)ものなので、そのままのフォルダ名で構わないと思います。

 CGI本体です。
 いろんなパラメーターが中に書かれています。そのままでは100%動かないので、パラメーターは書き直して下さい(後述)。

 拡張子で想像できる通り、ログファイルです。
 中身はエディタで見れば判る通りなんで省略しますが、4種類のデータしか書き込んでいないので、理解はしやすいと思います。
 ないことを祈りますが、CGIの不備等により正常なメンテナンスができなくなった場合、最悪ここを書き直せば何とかなるかもしれません。

 実はよく知らないんですが(笑)、なんでも日本語処理をするためのライブラリらしいです。お願いですからライブラリって何? なんて訊かないで下さい。

 v1.06までは、設置直後に?mode=adminと自分でURLを入力していたんですが、それでは面倒なのでこのファイルを添付しました。

 v.1.10から、各種設定をWeb上で更新できるようにしました。その設定を保存しておくファイルです。よくよく見れば意味は判ると思いますが、このファイルを直接修正するような事態は起こらないでしょう。
 v.2.00から、本ファイルの形式を一新しました。前バージョンまでとの互換性はありません。必ず変更し直して下さい。
 v.2.10で新しい項目を加えました。前バージョンまでとの互換性はありません。必ず変更し直して下さい。

 v.2.00から、スタイルシートを外部参照形式に変更しました。今まではスタイルシートが埋め込まれていましたが、これからは自分で好きなようにカスタマイズできます。

 v.2.10からデータを過去ログ化することができるようになりました。そのためのファイルです。

 この他にも、CGIが自動生成するファイルがありますが、それは使っていくうちに判るでしょうからここでは触れません。動きゃいいぢゃん(←暴言)。


■設置方法1.パラメーター設定

 columnh.cgiをエディタで開いて、以下のパラメーターを適切なものに設定しなおして下さい。
 ここでは「最低これだけを書き換えればCGIが動作する」というものを挙げています。表示に関わる部分など、細かい設定はcolumnh.cgiを参照して下さい。多分(笑)判ると思います。

#!/usr/local/bin/perl
 (プロバイダで定められたPerlへのパスを指定します)

$script = 'http://www.xxxxx.ne.jp/~xxx/column/columnh.cgi';
 (このCGIが置かれている場所をURLで指定して下さい)

$htm_url = 'http://www.xxxxx.ne.jp/~xxx/column/';
 (トップファイル(フレーム親。index.html)を置くディレクトリをURLで指定します)

$home = 'http://www.xxxxx.ne.jp/~xxx/index.html';
 (戻り先のURLを指定します)

$pass = '0123';
 (管理用パスワード(英数字)を指定して下さい。常識の範囲の長さでひとつ)

 以上を変更すれば、とりあえずCGIは動作する筈です。


■設置方法2.パーミッション設定

public_html / index.html (トップページ)
     |
     +-- columnh / columnh.cgi  [755]
            |      columnh.log  [666]
            |      jcode.pl     [644]
            |      index.html   [644]
            |      config.dat   [666]
            |      style.css    [666]
            |      cnt.dat      [666]
            |
            +-- menu [777] /
            |
            +-- log  [777] /
            |
            +-- lock [777] /

 パーミッションを設定すれば設置は完了です。


■記事の書き方  v1.07から方法が違います

 先ほど設置したindex.htmlにアクセスして下さい。「書き込み画面へ」というリンクが貼られていますので、それをクリックします。
 管理モードへの入室画面になりますので、「書込」を選択してパスワードを入力して下さい。パスワードが認証されると、書き込みフォームが現れます。

 あとは、フォームに記事の内容を書いて送信ボタンを押すと、フレームのトップファイル、メニューファイル、記事ファイルが作成されます。
 2回目以降は、記事ファイルの上のメニューの「管理用」から入って下さい。

 index.htmlは単純な相対パスで書かれていますので、特殊な場所にCGIを設置した場合など、リンクが飛ばない場合があります。その場合は、少々面倒ですがCGI本体を引数つきで呼び出して下さい。引数は「mode=admin」です。
 具体的には、こんな感じです。

【呼び出し例】
   http://www.xxxxx.ne.jp/~xxx/column/columnh.cgi?mode=admin

 管理モードへの入室画面になりますので、以下は上で説明した手順と同様に進めて下さい。


■設置方法3.各種環境設定  v.1.10からの新機能です

 基本的には上記の処理をすれば動く筈です。
 ただ、それだけでは本当にただ動くだけです。戻り先も決めていないし、色やフォントもデフォルトのままです。
 これを変更するには、管理モードの「環境」を選択して下さい。

 1つ1つのパラメータについては、煩雑になりますので説明はしません。別にいろいろ試しても困る類のものでもないので(笑)、いろいろ試してみて下さい。

 v.2.00から環境設定の項目が変わっています。v.2.00以前をお使いの方で、v.2.00以降のバージョンを導入する場合、必ず設定をし直して下さい
 その際、以前のconfig.datは上書きされてしまいますので、アップロード前に退避しておくことをお勧めします。


■「全書替」について  v.1.10からの新機能です

 v.1.10からできた項目です。

 本スクリプトはHTMLデータを生成するので、運用途中でフォントや色設定、題名(コラム1つ1つではなく、そのものの方)などを変更した場合、その変更分は今まで作成したページには反映されません。一応、「ログモードで入って、全てのデータを変更する」ことで対処できるんですが、100件もデータがたまった日にはそれだけでも一苦労です(笑)。そこで作成したのがこの全書替モードです。

 処理の方法はいたって単純で、管理モードから全書替を選択するだけです。自動的に全てのデータを処理しなおします。

 ただし、あまりにもデータが多い場合、サーバに多大な負荷をかけることになってしまいます。1000件を超えるようなデータであれば、ローカルな環境で実施することをお薦めします。


■挿入機能について  v.2.00からの新機能です

 v.2.00からできた項目です。

 今までの本スクリプトでは、データの作成と編集・削除しか行えませんでしたが、それだけでは不便ということで挿入機能をつけました。

 使用方法は単純です。
 まず、「ログ」を選択します。
 今まで「修正」「削除」となっていたところに「挿入」という項目が増えましたので、それを選択します。その時、同時にログのうち1つを選択して下さい。選択したログの前に、新しいデータが挿入されます。
 例えば、23番を選択した場合、新しいデータは23番のデータとなり、今まで23番だったデータは24番、24番だったデータは25番、以下26番、27番……と繰り上がっていきます。
 前後ページへのリンクは自動的に修正されますが、本文中に書かれたリンクを修正することはできません(それができたら神だよなぁ……)。ですので、もしも本文中にリンクを書いている場合、それはご自分で修正して下さい。

 新機能ですが非常に危ない機能でもありますので、できることならご自分の環境でも一度はテストをして下さい。その際、ログは必ず退避しておくようお願いします。この機能のせいで今まで書いたデータがぶち壊れた……と言われても、白砂は責任を負いません。


■過去ログ化機能について  v.2.10からの新機能です

 v.2.10からできた項目です。

 本スクリプトは、書き込みの度にメニュー部分を書き直しており、また、修正などでも毎回すべてのデータを読み込んで処理しています。つまり、データ量が増えれば増えるほど、処理に時間がかかります。
 それを解消するために作ったのがこの機能です。

 過去ログ化をすると、ログから当該部分を削除します。
 HTMLはそのまま残しますので、データが完全に消えるわけではありません。見ることはできます。
 ログが消えますので、当然修正や削除はできません。また、その前後への挿入も行えません。

 過去ログ化の手順は簡単です。
 メニューから「過去ログ化」を選択するだけです。

 過去ログ化は1ページ記事数の件数単位で行います。フレーム左側のページ1ページ分、という意味です。もし1ページ記事数を途中で変更すると、当然過去ログ化の件数も変更します。できるだけ1ページ記事数は変更しないで運用することをお勧めします。
 また、全ログ件数が1ページ記事数よりも少ない場合、過去ログ生成は行いません

 過去ログ化は要するに「ログを廃棄する」ものです。
 Webスペースの軽減、処理速度の向上などメリットも多いですが、同時に、「そのHTMLファイルがなくなると復旧ができない」というデメリットも同時に持ち合わせています。
 必ずバックアップを取っておいて下さい


■v.2.10へバージョンアップする際の注意 ※重要

 v.2.10からの新機能「過去ログ化」を実現するため、ログの形式を新しい順から古い順に変更しました。そのため、v.2.10以前のスクリプトを使用している方が、v.2.10のcolumnh.cgiのみを入れ替えても、正常に動作しません。
 バージョンアップの際には、以下の処理を必ず行って下さい。

□ログの変換

 メニューの「ログ反転」を一度だけ実行して下さい。

 実行後、ログ修正画面へ飛びます。その際、ログが古い順に並んでいれば変換成功です。



■質問など

 質問などはサポート掲示板の方にお願いします。
 いろいろ質問が出揃えば、FAQみたいなものも作ると思います。

掲示板はこちら


■開発履歴  古いバージョンもダウンロードできます(LZH版です)

v2.10 過去ログ化対応。
「前ページ」「次の10件」などの文字を自由に設定できるようにした

環境設定の左上の「戻る」リンクの先を「入室画面」にした
v2.01 新規書き込みをした際の、前ページの「次頁」リンクがうまくいかなかったのを訂正。さん申し訳ねぇ。
これはPressの方も直さんといかんな……。
v2.00 挿入機能を追加(なおこ。さん、使って下さい)。
自分の環境ではテストできたんですが、今までと違いログをかなりいじるので不安ではあります。人柱バージョンと思って下さい(笑)。
v1.20 各ページにリンクを作成。
まだ画像に対応していなかったりと貧弱ですが、ベータ版と思って許して下さい(笑)。削除に対応するアルゴリズムを考えるのが大変でした(ホントに大変だった。実は3日間くらい悩んだ(泣))。できたのが今日の仕事の昼休み中で(笑)、家に帰ってきたら「あったらいいよ」という投稿があったんで、これは奇跡に違いないということで(<をい)調子に乗って公開です。
v1.10 大幅に更新したので、バージョンを進めました。
各種設定をWeb上から更新できるようにした(さたさんのアドバイスです。ありがとうございます)。設定を全てのページに反映させるべく、「全書替」モードを設置。
v1.07 トップhtmlのパラメータ修正。ページ上下に共有欄設置。フレーム非対応ブラウザ対応。パスワード認証不備(タイミングの差)修正。配布ファイルにindex.html同梱。げっとおんさん、capaさんありがとうございました。
v1.06 何をしたんだっけなぁ?
v1.05 題名を修正した場合、その題名がメニューに反映されないバグを修正。うふさんすいません(謝)。
v1.04 Location命令を受け付けないプロバイダー対策に、トップhtmlの飛び先を変更したものを作成。
v1.03 トップhtmlのパラメータ修正。。
v1.02 トップhtmlを絶対パスで指定するように変更。
v1.01 ソースの無駄な部分を削除。コメントも書き直した。みやこさん、kokkaさん、申し訳ない(謝)。
v1.00 公開。ソースは汚かった(今も汚いぞって突っ込みは勘弁して下さい(泣))

■各種改造版

 本スクリプトを改造して再配布している方々のページです。
 著作権は白砂も持っていますが、改造部分については改造された方々が持っています。

kuroさんのページ

 フレームタイプではなく、形としてはPress HTMLに近い表示形式になっています。
 カウンター機能、画像アップロード機能なども付加されています。フレーム式にも一長一短があるので、こちらの改造スクリプトを使うのもいいと思います。


■謝辞/ひとこと

 このCGIスクリプトは確かに白砂が作成したものですが、とはいえ全くの手助けなしに作成するのは不可能だったに違いありません。
 特にお世話になったのはKENTさんのホームページと著書でした。ファイルの扱い方やワード検索、サブルーチンの使い方などは、はっきりKENTさんの技術をパクった(笑)ものです。白砂が作ったんだよ〜ということが自慢したくて著作権表示こそ白砂のものになっていますが、技術はパクリまくりですんで文句を言われても仕方ないかもしれません(爆)。一応、既存スクリプトの改造ではないんでこういう処置をとってはいますが、それくらいお世話になったんだということを、ここで改めて表明しておきます。

 こんなしっかりしたページまで作ってCGIを公開するのははじめての経験です。いろんなところに宣伝しまくって自慢しちゃうつもりです(笑)。Perlを知っている人から見れば汚く拙いスクリプトかもしれませんが、自分としては自信作のつもりですので(爆)できるだけたくさんの人に使っていただければと思います。

白砂 青松

トップへ戻る