竹の 01/30 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] を実装してはいませんが、最近はこう いったことを行なうスクリプトを利用してアクセスしています。これを 公開することにしましたのでご利用ください。 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-20040130.tar.gz) 1) 展開 % gunzip -c fortexqa-20040130.tar.gz | tar xf - % cd fortexqa-20040130 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. 使用法 --------- 「3. install」で説明したように、fortexqa1.pl と fortexqa3.pl の 2 つがあります。これらは別々のコマンドで、 fortexqa1.pl: 一覧のみ持って来て target をつける fortexqa3.pl: 各項目のページも持って来てデータベースを作り加工 となっています。 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 と同じパターンです。よって bug がまだ色 々あるような気がします。 また、fortexqa1.pl と fortexqa3.pl になっているが、"fortexqa2.pl" はどうした、と言われそうなので先に言っておきますが、実はちゃんと ありますが、使ってみてあまり意味がなさそうなので使うのをやめてし まったのです。どういうものかというと、fortexqa1.pl, fortexqa3.pl の丁度中間のようなもので、 ・後方へのリンクを、一覧画面に付けたもの といったようなものです。つまり、fortexqa3.pl で各項目のページにつ く Next: の部分が、一覧のページの各項目の右に並んでいる、と考えれ ばいいです。しかし、これは使うと分かるのですが、fortexqa1.pl や fortexqa3.pl に比べてやや存在価値が薄く、fortexqa3.pl (に相当する csh と AWK の script) ができた段階で使っていません。 実は、案としては fortexqa4.pl まで考えてあり、これは一覧の thread 表示を作る、というものです。データベースを使えばできなくはなさそ うなんですが、前後の接続関係が一対多や多対一ではなく、多対多であ り、また完全ではない、という接続関係をどうするか、という問題があ って、まだコードを書くまでには至っていません。 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 01/30 2004 1) 公開開始。 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 +=================================================+