竹の 02/03 2004
---------------
奥村晴彦さんの TeX QandA の掲示板
http://www.matsusaka-u.ac.jp/~okumura/texfaq/qa/
へのアクセス性を改善するために、私が普段利用している perl script
を公開します。現在の version は 0.1 です。
1. はじめに
-----------
奥村晴彦さんの TeX QandA の掲示板
http://www.matsusaka-u.ac.jp/~okumura/texfaq/qa/
は、利用者が多く、回答も詳しい方々が行なっておられてとても良質な
QandA コーナーであると思いますが、普段 Netscape 3.04 でアクセスし
ていていくつか不満を感じていました。
1) 各項目のページに、次や前の項目のページへのリンクが貼られていな
いので、次の項目に行く場合に一旦ブラウザの機能で一覧のページに
戻って、そこからアクセスしないといけない (次々順番に見るときに
手間がかかる)
2) その項目のページが別の項目の返答のページである場合は、元のペー
ジへのリンクが本文記事中にあることもあるが、逆にその項目からそ
れへの返答のリンクがない (質問を前方向には手繰れるが、後方向に
は手繰れない)
3) 検索機能がついているが、通常の検索エンジンのようなものに比べて
やや貧弱
ただ、例えば 1) は、私は知らないのですが、タブブラウザというもの
なら別にそう問題にはならないかもしれませんし、3) も使い方によって
そう欠点とも言えないかもしれません。
2) は、そのページの検索機能によって検索した場合に特に欲しい機能で
す。つまり、同じ質問をしたページが見つかっても、そのページの回答
のページがそこには出てなくて、再びその質問のタイトルで検索しない
といけない (という解決策もあるにはある) からです。
このうち、例えば 1) は一覧のページから各項目のページへのリンク
24978
を、
24978
のように変えれば改善が可能であることに気がつきました。また、2) も
前に戻るデータベースを作れば、それを逆方向のものにすれば後方向の
情報が得られるので、それで改善できそうだとわかりましたが、そのた
めには各項目のページを一つ一つ持って来る必要があります。ただ、考
えてみれば
[a] 結局全部目を通すなら全部持って来ているようなもの
[b] むしろ全部手元持ってくればアクセスは速くなる
[c] 各ページに 2) の後方リンクをつけることもできるようになるし、
1) のリンクをつけることもできるようになる
[d] 手元に各ページがあれば、3) も namazu 等を利用すれば改善できる
などの利点もあります。
ということで、まだ完全に [a-d] を実装してはいませんが、最近はこう
いったことを行なうスクリプトを利用してアクセスしています。これを
公開することにしましたのでご利用ください。
現在は、fortexqa1.pl と fortexqa3.pl の 2 つの perl script コマン
ドを含んでいて、
fortexqa1.pl: 一覧のみ持って来て target をつける
fortexqa3.pl: 各項目のページも持って来て database を作り加工する
となっています。
2. 動作環境
-----------
Unix 上でしか試していませんので、MS-Windows 上の perl で動作する
かは未確認です。必要なものは以下のものです。
1) perl (多分 4.036 以降)
2) wget または w3m (HTML ファイルを取得するのに使用)
3) cp,rm,echo (script 内部で使用)
通常 3) は Unix にはあるはずです。fortexqa3.pl を使う場合は、perl
が何らかの DBM (DataBase Management) をサポートしている必要があり
ます。なお、DBM はパッケージ宣言なしに dbmopen(),dbmclose() を利
用していますが、(perl5 等で) もし必要ならばパッケージの使用宣言を
書き加えてください。
3. install
----------
0) ダウンロード
下記サイトから持って来てください。
http://takeno.iee.niit.ac.jp/~shige/TeX/TeX.html
(fortexqa-20040203.tar.gz)
1) 展開
% gunzip -c fortexqa-20040203.tar.gz | tar xf -
% cd fortexqa-20040203
2) 設定
各種定義が fortexqa1.pl, fortexqa3.pl の先頭に書かれていますが、
それらを適当に修正します。意味は下にまとめて書きます。また、1 行
目の
#!/usr/local/bin/perl
を、適宜適切な perl のパスに書き換えてください。
3) インストール
パスの通ったところに fortexqa1.pl と fortexqa3.pl を置いてくださ
い。コマンド名は適当に変更して結構です。例えば ~/bin にパスが通っ
ているならば
% cp fortexqa1.pl ~/bin/fortexqa1
% cp fortexqa3.pl ~/bin/fortexqa3
% chmod u+x ~/bin/fortexqa1 ~/bin/fortexqa3
のようにすればいいでしょう。
4) ディレクトリ等の作成
fortexqa3.pl は、ファイルを保管するディレクトリ等を作成する必要が
あります。後で説明する $LETDIR と $TMPDIR がそれですが、例えば
$LETDIR = ~/texqa、$TMPDIR = $LETDIR/tmp だとして、以下のようにす
れば準備 OK です。
% mkdir ~/texqa ($LETDIR)
% mkdir ~/texqa/tmp ($TMPDIR)
% echo 24500 > ~/texqa/curlast
最後の "24500" は、この番号より大きい番号から持って来始めることを
意味します。"1" とすると全部持って来ることになりますが、現在
(01/30 2004)、25000 程度のファイルがあり、それら全てを持って来る
のは大変ですし、データベースもかなり大きなものになって効率が悪く
なるでしょうから、適当な大きな数字から始めることをお勧めします。
なお、このファイルは fortexqa3.pl を実行する度に、持って来た記事
の一番大きな番号を保存していきます。
上の 2) の設定のところであげた各種定義について説明します。
・$tmpf : 一時ファイル名
fortexqa1.pl では /tmp に作るようになっていますが必要なら修正して
ください (fortexqa3.pl では $TMPDIR 内に作る)。
・$URL : 奥村晴彦さんの掲示板の URL (多分変更不要)
・$WGETCOM : HTML ファイルを持って来るプログラム名
現在は w3m と wget の 2 つのみサポートしています。パスが通ってい
ない場合はフルパスで w3m と wget を書いてください。
・$LINKTARGET : に追加する target frame の名前
デフォルトでは "texqa" (fortexqa1.pl), "contents" (fortexqa3.pl)
となっています。なお、実行時にオプション (-t) で変更することもで
きます。他のウィンドウフレーム名と重なって使いにくくなる場合は適
宜変更してください。
・$outfname : 最終的に作る HTML ファイル名 (fortexqa1.pl のみ)
デフォルトでは、カレントディレクトリに "texqa.html" という名前の
ファイルを生成しますが、ディレクトリを固定したい場合はフルパス名
を書いてください。なお、その場合自分のホームディレクトリは $HOME
で参照できます。また、実行時にオプション (-o) で変更することもで
きます。
・$LETDIR : 各項目の HTML ファイルやデータベース等を保管するディ
レクトリ (fortexqa3.pl のみ)
fortexqa3.pl では、一時ファイル以外の全てのファイルがここに作られ
ます。
・$TMPDIR : 作業用ディレクトリ (fortexqa3.pl のみ)
fortexqa3.pl の作業用ディレクトリで、各項目の HTML ファイルも、一
旦ここに置かれ、それを加工して $TMPDIR にコピーします。デフォルト
では $LETDIR/tmp です (多分修正不要)。
4. 使用法
---------
4.1. fortexqa1.pl
-----------------
fortexqa1.pl が実際にやることは以下の通りです。
1) 奥村晴彦さんの TeX QandA の掲示板
http://www.matsusaka-u.ac.jp/~okumura/texfaq/qa/index.html
を持って来て
2) それの先頭と最後の部分をカットして一覧だけにして
3) リンクの貼り換え、target の追加を行ない texqa.html として出力
この、3) は、例えば
Re: 飛鳥の取り扱いについて
という部分を
Re: 飛鳥の取り扱いについて
のように書き換えます。できた texqa.html は、現在のディレクトリの
絶対パスが /home/hoge であるとして、ブラウザで
file://home/hoge/texqa.html
のようにしてアクセスできるでしょう。上で分かるように、各項目のペ
ージは奥村晴彦さんのページに見に行きますが、それらは、フレームに
対応したブラウザの場合、"texqa" という名前のウィンドウフレームに
開きますので、一覧と各項目の内容のウィンドウを独立に開いてアクセ
スできます。これによって (こんな簡単なことで) 各項目の内容参照の
やりやすさがかなり向上すると思います。
fortexqa1.pl のオプションは以下の通りです。
-o [output]: 出力ファイル名の指定 (default: "texqa.html")
-t [target]: の target フレーム名 (default: "texqa")
-h: ヘルプメッセージ
-v: バージョン表示
4.2. fortexqa3.pl
-----------------
fortexqa3.pl が実際にやることは以下の通りです。
1) 奥村晴彦さんの TeX QandA の掲示板
http://www.matsusaka-u.ac.jp/~okumura/texfaq/qa/index.html
を持って来て、新たに追加されたファイルを各項目を調べ
2) それらを持って来て ($TMPDIR) そこからデータベースを作り直し
3) それにしたがって各項目のページも加工して $LETDIR にコピー
各項目ファイルには、元々はそれへの返事を書く form が下についてい
ますが、それを削除し、以下のようなものをつけます:
Original:
(texfaq):25004.html
Next: 25005, 25012
Prev: 25003
つまり、
・Original: 奥村晴彦さんの所のオリジナルの HTML へのリンク
・Next: この項目への返答のファイルへのリンク (昇順)
・Prev: この項目が引用しているファイルへのリンク (降順)
が追加されます。もちろん Prev: が複数の場合もあります。返答を書く
場合は Original: のリンクをたどって下さい。
Next, Prev は、各項目のページ内に書かれている
を元に作っています。よって、ある項目に対する返答であってもそれを
つけていない場合は Next, Prev のリンクはつきません。Prev のリンク
は、実際にはそのページ本文にリンクが貼られているので必ずしも必要
ではないのですが、とりあえず今はつけています。
また、一覧ファイルからは、fortexqa1.pl 同様、別ウィンドウフレーム
(名前は"contents") への各項目のリンクがついているので、一覧ファイ
ルの表示画面と各項目の表示画面は独立して見ることができます。
fortexqa1.pl とは、その各項目のページが
・奥村晴彦さんの掲示板へ見に行くようになっているのか
・加工されたものをローカルに置いてそれを見ているのか
が違う、とも言えます。このページへのアクセスは、$LETDIR の絶対パ
スが /home/hoge/texqa であるとして、ブラウザで
file://home/hoge/texqa/index.html
のようにしてアクセスできるでしょう。
fortexqa3.pl のオプションは以下の通りです。
-d [dir]: データ保存ディレクトリの指定 (default: $LETDIR)
-t [target]: の target フレーム名 (default: "contents")
-h: ヘルプメッセージ
-v: バージョン表示
5. その他
---------
(01/30 2004: fortexqa Ver.0.1)
fortexqa を公開することにしました。実は元々は csh script + AWK
script の形態だったのですが、公開に際して perl で書くことにしまし
た。私はこの形でプログラミングすることがほとんどで、公開時に perl
にする、というのは yomi と全く同じパターンです。perl 版はまだ使い
込んでいないので bug が色々あるような気がします。
また、fortexqa1.pl と fortexqa3.pl になっているが、"fortexqa2.pl"
はどうした、と言われそうなので先に言っておきますが、実はちゃんと
あります。しかし、使ってみてあまり意味がなさそうなので使うのをや
めてしまったのです。どういうものかというと、fortexqa1.pl,
fortexqa3.pl の丁度中間のようなもので、
・後方へのリンクを、一覧画面の方につけたもの
といったようなものです。つまり、fortexqa3.pl で各項目のページにつ
く Next: の部分が、一覧のページの各項目の右に並んでいる、と考えれ
ばいいです。各項目のファイルは一応 database を作るために新規のフ
ァイルを一旦取得して中を参照しますが、保存はしません。しかし、これ
は使ってみると分かるのですが、fortexqa1.pl や fortexqa3.pl に比べ
てやや存在価値が薄く、fortexqa3.pl (に相当する csh と AWK の
script) ができた段階で使っていません。
実は、案としては fortexqa4.pl まで考えていて、fortexqa4.pl は一覧
の thread 表示を作る、というものです。データベースを使えばできな
くはなさそうなんですが、前後の接続関係が一対多や多対一ではなく多
対多であること、しかもそれは完全なものではない、など接続関係の処
理に問題があるようなので、まだ csh + AWK script 版すらコードを書
いていません。
6. バグリポート、ライセンス
---------------------------
この perl script は無保証です。しかし色々な不具合は、対応できるも
のは行う予定ですので、不具合の報告、意見などは歓迎します。報告等
は下記メールアドレスへお願い致します。また、バグリポート等、各種
情報は、順次下記の WWW page に掲載する予定です。
e-mail: shige@iee.niit.ac.jp
WWW page: http://takeno.iee.niit.ac.jp/~shige/TeX/TeX.html
また、このソフトはフリーソフトとして公開します。再配布、改良は可
能ですが、その際、このライセンス部分は改変せずに付属させてくださ
い。改良は変更箇所を別途明記してください。ソースコードも自由に使
用して頂いて構いません。
6. 変更履歴
-----------
01/30 2004 Ver.0.1
02/01 2004
02/03 2004
01/30 2004
1) 公開開始。
02/01 2004
2) ドキュメントの表現等を少し修正。
02/03 2004
3) 奥村晴彦さんの所属名を書き間違えていたところを修正
(Thanks 奥村さん)。
7. 目次
-------
1. はじめに
2. 動作環境
3. install
4. 使用法
4.1. fortexqa1.pl
4.2. fortexqa3.pl
5. その他
6. 変更履歴
7. 目次
+=================================================+
竹野茂治 〒945-1195 新潟工科大学 情報電子工学科
shige@iee.niit.ac.jp TEL(&FAX): 0257-22-8161
+=================================================+