homeホームHTMLに役立つヒント マニュアルに書いてないNAMAZU > kbtitle.plの使い方

kbtitle.plの使い方


●機能と問題点 ▲このページのトップ

 きのぼずのための設定でも説明していますが、このファイルの機能をもう一度説明します。

 きのぼずの発言ファイルは、冒頭に必ず「<!-- Kb-System-Id: 1.0/6.3 -->」のようにきのぼず用のコメントが入っています。発言ファイル名はただの発言番号ですから、このままインデックスを作ると「要約」部分にこのコメント行が表示されてしまいます。加えて、NAMAZUのhtml判定ではきのぼずの発言ファイルはプレーンテキストと判定されてしまうため、htmlタグの除去がされず、こちらも表示されてしまいます。また、タイトル行もないため、ファイル名(つまり発言番号の数字だけ)がNAMAZUにはインデックスされてしまいますし、作者名もNAMAZUにはわかりません。
 そこで、一度オリジナル発言ファイルを「発言番号_@」という名前に変更し、インデックス作成用に同じ内容+タイトル・発言者名を加えたニセ「発言番号」ファイルを作ります。そのためのツールがkbtitle.plです。

 ニセファイルの内容はオリジナルの内容の先頭に「<title>発言番号とタイトル</title>
<link rev="MADE" href="mailto:発言者名">」という2行を追加したものです。
 こうしておくと、NAMAZUがインデックスを作る時に正しくタイトルと発言者名をインデックスに取り込み、htmlタグも除去してくれます。

 このままの状態でもきのぼずの表示には影響を与えませんが、「引用してコメント」すると「<title>発言番号とタイトル</title>」部分が表示されてしまいます。
 そのため、NAMAZUのインデックスを作ったら、すぐにオリジナル発言に戻しておく必要があります。

●最初の状態。
 1 2 3 4 5 6 7

●kbtitle.plで1回処理をするとオリジナルは「_@」、タイトル付きニセファイルは「数字のみ」となる。この状態でNAMAZUにインデックスを作らせる。
 1 1_@ 2 2_@ 3 3_@ 4 4_@ 5 5_@ 6 6_@ 7 7_@

●kbtitle.plで2回目の処理を行うとニセフィルは削除され、オリジナルファイルに戻される。
 1 2 3 4 5 6 7

 NAMAZUにインデックスを作らせるのは新しい発言だけでよく、いちいち全ファイルにこの処理を行うのは無駄です。kbtitle.plは前回処理したニセファイルの番号を記録しておき、まず前回作成したニセファイルを削除して、元のオリジナルファイルに戻します。
 次に、それ以降の発言番号があるかチェックして、新しい発言のニセファイルを作ります。
 前回の処理がどこからどこまでだったか覚えておくのが「titlecount」ファイルです。

 実際にkbtitle.plを動かすときには、次の手順で行うと良いでしょう。

1.kbtitle.plを動かし、新規発言にタイトル行を追加する。
2.NAMAZUでインデックスを作る。
3.kbtitle.plを動かし、今処理した発言ファイルをオリジナルファイルに戻す。

 この3つの動作を一気にやってしまうのです。こうすることでNAMAZUのインデックスにはタイトルと発言者が表示され、きのぼずでは通常通り動作させることができます。


●必要なファイルと設置 ▲このページのトップ

●ファイルの準備

 必要なファイルは本体である「kbtitle.pl」と、前回処理の発言番号を記録しておく「titlecount」だけです。titlecountの方は適当にお手持ちのテキストエディタで作ってください。過去ログを1番から一気に変換する場合は「titlecount」の中に「0」を、好きな発言番号から処理したい場合は「処理したい発言番号-1」を書き込んでおきます。2行目、3行目は書かないでください。状態によって自動的にkbtitle.plが書き込みます。

 「kbtitle.pl」には最初の行のperlの位置を指定する記述がありますから、これを環境に合わせて書き換えてください。
 また、オプション機能として発言番号の前に掲示板名を書き込めるようになっています。お好みでこの行も変更してください。

●ファイルの設置場所
 kbtitle.plもtitlecountも処理したいkb掲示板ディレクトリに置いてください。複数の掲示板で使いたい場合は、それぞれの掲示板ディレクトリに置きます。

●漢字コードなど。
 両方とも漢字コードはEUC、改行コードはLFにしてください。

●パーミッションは次の通り。
  kbtitle.pl 755
  titlecount  755

●.mknmzrcの設定

 もう一つ、大事な設定があります。退避中のオリジナルファイル「_@」をNAMAZUに検索させないことです。「.mknmzrc」ファイルに、次の赤い部分を追加してください。これでファイル名の最後が「_@」のファイルのインデックスを作らなくなります。

$DENY_FILE = ".*\\.(gif|png|jpg|jpeg)|.*\\.tar\\.gz|core|.*\\.bak|.*~|\\..*|\x23.*|kb.db|kb.bord|kb.aid|kn.conf|kb.mail|.*_[1-9]|.*_@";


●使い方 ▲このページのトップ

 「kbtitle.pl」は手動で実行してもいいですが(telnetしてkbtitle.plのあるディレクトリに移動し「./kbtitle.pl」を入力する)NAMAZUのインデックス作成と同時に自動実行した方が実用的です。連続実行ファイルを作成し、定期的にこの連続実行ファイルを自動的に起動させるのがベストです。
 やり方は「毎日午前7時にインデックスを更新する」でも説明していますが、ちょっと変更した方がいいのでもう一度書きます。

●連続実行ファイルを作る
 このファイルの置き場所はどこでもいいのですが、ここでは「毎日午前7時にインデックスを更新する」にならって「/home/name/html/NAMAZU/」ディレクトリにautoindex.shというファイル名で保存したことにします。パーミッションは755です。

------------------- ここから -----------------------
#!/bin/sh
# 自動インデックス更新.shファイル
#
## 以下の3行はLANG変数があらかじめサーバに設定されていない場合
## に必要なコマンドですので、設定が必要な場合は行頭のシャープを
## 外して有効にしてください。
# LANG=ja
# export LANG
# set | grep LANG

# ================ kbtitle.pl処理その1
# kbディレクトリに移動する
cd /home/name/html/kb/

#kbシステムを止める(処理中に発言がないようにする)
#リネーム中に発言があっても問題がでるとは思えませんが、念のためきのぼず
# システムを止めます。過去ログなど、発言できない掲示板の処理の場合は必要
# ありません。
chmod go-x kb.cgi

# インデックス対象ディレクトリに移動する --A
cd /home/name/html/kb/test

# ./kbtitle.plする --B
./kbtitle.pl

# 複数の掲示板を処理したい場合、上のAとBをさらに書き加える。NAMAZUのインデックスリストにもその掲示板を書くことを忘れずに。

# ================ NAMAZUでインデックスを作る
# kbディレクトリに移動する
cd /home/name/html/kb/

#kbシステムを動かす
chmod go+x kb.cgi

# indexを作成するディレクトリに移動する
cd /home/name/html/NAMAZU/index/

# リストによってインデックスを作る。
# この場合、indexディレクトリにindexlistという
# インデックスファイルリストがおいてある。
mknmz -F indexlist

# ================ kbtitle.pl処理その2 オリジナルファイルに戻す
# インデックス対象ディレクトリに移動する --A
cd /home/name/html/kb/test

# ./kbtitle.plする --B
./kbtitle.pl

# 最初のABと同じものです。この処理でオリジナルファイルに戻します。この処理をしないときのぼずで「引用してコメント」したときにタイトル行が出てしまいます。
------------------- ここまで -----------------------

●cronに登録する
 例によってcronに登録します。登録方法は「毎日午前7時にインデックスを更新する」を参照してください。

 ↓毎時0分に実行する例。
------------------- ここから -----------------------
0 * * * * /home/name/html/NAMAZU/autoindex.sh
------------------- ここまで -----------------------

 これで毎時0分にオリジナルファイルを退避させてニセファイルを作り、インデックスを作っったあと、ニセファイルを削除してオリジナルに戻してくれます。

●削除発言について
 きのぼずでは、「削除発言」は実はkb.dbでコメントアウトしているだけです。ファイルそのものは残っていますので、そのままにしておくとkbtitle.plやNAMAZUの処理・検索対象になってしまいます。
 そこで、できればkbtitle.plを実行する前に、該当の掲示板ディレクトリから削除発言ファイルそのものを外に出しておいてください。
 どうするかというと、kb.dbを頼りに「#」のついた発言を探して、その発言ファイルを移動させればよいのです。移動させる発言番号の一覧表は、kb.dbを手元にダウンロードしてきて、行頭に「#」のないものを削除していけば簡単です。
 ここでは「out」ディレクトリを該当の掲示板ディレクトリの外に作り、こちらに移動させます。

mv 発言番号 発言番号 発言番号 … ../out
  ↑「../out」はコピー先のディレクトリ名。こんな風に発言番号(発言ファイル名)を並べて一気に移動すると効率的。

 すでにkbtitle.plやNAMAZUのインデックスづくりが終わっていてもあわてる必要はありません。掲示板ディレクトリの外に削除発言を出してしまえば、NAMAZUは次のインデックスづくりの時にそれを検知して、インデックスから外してくれます。


●トラブルシューティング ▲このページのトップ

 最後まで処理しないうちにkbtitle.plが止まってしまった場合、kb.dbを確認してみてください。kb.dbの中にタブで始まる行があると、それをkb.dbの終わりと判断してしまいます。kb.dbのタブで始まる行を削除して、もう一度kb.title.plを実行してください。
 その際、kbback.plを実行して元の状態に戻し、titlecountも「0」にすることを忘れずに。


●姉妹ツール「kbback.pl」 ▲このページのトップ

 姉妹ツール「kbback.pl」は、「kbtitle.pl」で作ったニセ発言ファイルを削除し、「_@」という名前に変更されているオリジナルファイルを元の発言番号だけの名前に変更します。
 こちらも「kbtitle.pl」同様に実行したい掲示板ディレクトリにおき、パーミッションを755にします。telnetして該当ディレクトリに行き「./kbback.pl」と打つだけです。
 おっと、ファイルの最初の行でperlの位置を指定することを忘れずに。
 このツールは、例えばkbtitle.plでニセ発言を作ってNAMAZUのインデックスを作った後、一気にニセ発言ファイルを削除するときに使ってください。通常はこのツールを使う必要はありません


●改訂履歴 ▲このページのトップ

●kbtitle.plの改訂履歴

 ver0.21r3 2000/5/26
・機能に変更はありません。付属のドキュメント(このファイルです)に不備があったので、これを差し替えたパッケージです。まだ不備があるかも(^^;

 ver0.21r2 2000/5/14
・機能に変更はありません。付属のドキュメント(このファイルです)に不備があったので、これを差し替えたパッケージです。

 ver0.21 2000/4/12
・途中で削除発言があるとそこでストップしてしまうバグを修正。くそ、今度こそ。

 ver0.20 2000/4/11
・作成するニセ発言ファイルの日付をオリジナルと同じものにするようにした。
・kbback.plの機能を統合し、前回処理したニセ発言ファイルを削除し、オリジナルファイルに戻す機能を付けた。

 ver0.13 2000/4/8
・処理番号の報告に実際とズレがでるバグを修正。
・0.11の時から残っていたtitlecountに2行(前回の処理開始番号と終了番号)書き出す仕様を、終了番号だけ(1行だけ)に変更した。kbback.plと連動しないので前回の開始番号は必要ないため。

 ver0.12 2000/4/7
・すでにリネームしたファイルかどうかチェックして、リネームされていればスキップする。
・発言ファイルの有無をチェックし、なければ削除発言と見なしてスキップする。
・発言番号の前に掲示板名を追加できるオプションを追加。

 ver0.11 2000/4/6 未発表
・kbback.plの無駄な動作を防ぐため、外部にtitlecountファイルをおき、ここに前回の処理を記録するように仕様変更。

 ver0.1 2000/4/5 未発表
・とりあえず動く。オリジナル発言をリネームし、タイトル行を追加したニセ発言を作る基本機能のみ。

●kbback.plの改訂履歴

 ver0.13 2000/4/8
・処理回数をほんのちょっとだけ変更。大して変わりませんが。

 ver0.12 2000/4/7
・ニセ発言を削除して元の状態に戻すと、NAMAZUはそれを察知してインデックスを作り直すことが判明。運用のためにはkbtitle.plで処理した状態にしておく必要があることがわかった。このため、kbback.plはニセ発言を削除してオリジナル発言を元の名前にリネームする単機能ツールに仕様変更。
・判定ルーチンもかなり省かれ、kb.dbの行数文だけ処理を繰り返すという原始的な方法にアルゴリズムを変更した。

 ver0.11 2000/4/6 未発表
・titlecountを読み込んでkbtitle.plの処理跡をたどり、kbtitle.plが処理した発言の後始末を自動的に行うように仕様変更。kbtitle.plとの連携強化版。次にkbtitle.plと一つのプログラムにする予定だった。

 ver0.1 2000/4/5 未発表
・自動的にニセファイルを削除し、元通りリネームする基本機能のみ実装。


●著作権

 忘れてました。著作権は放棄しませんが、改変することも、それを再配布することも自由です。どちらかというとですね、あまりにも汚いプログラムなので積極的に人に書き換えてもらいたいです(^^;


●ダウンロード ▲このページのトップ

 kbtitle.plのダウンロードは、ダウンロードページからお願いします。

▲トップへ