シスプリの小部屋


counter

 このページはFreeBSDと咲耶を愛する方々のためにこっそりと設置された、非常に内容の偏ったページです。っていっても、他の妹達のおにいちゃんでも役に立つんですけどね:-) というわけで、その筋のページを開設している方々、リンクはがしがし張っちゃって下さいm(_ _)m

 しかし、だんだんなんのページなんだかアヤシくなってきたなぁ。ほとんどシェルの話ばかりな気がする。目的は偏ってるけど。

new


このページのなかみ

使用上の注意……ここだけ別ページです
一気にlogを取得する
Windows95/98用nise-fetch
スタンプの統計をとる
グラフにする(笑)
ログスプリッタ
ログ反転ツール(Windows95/98用)
バッチファイル生成プログラム

一気にlogを取得する

 ご存知の通り、メディアワークスの公式サイトにはシスプリ掲示版が設置されています。しかし、この掲示版は書き込みの速度が尋常ではなく、もの凄い勢いでlogが増えていくため、過去logを読むのは結構大変です。オンラインで読むのも苦しいので、特定の領域のlogを取得するためのシェルスクリプトを作成しました。

 使い方は、これ(get.sh)をダウンロードし、viなどのエディタで取得したいlogの番号のはじめと終りを書き換えてsh get.shまたは./get.shとして実行するだけです。PROXYがある場合はHTTP_PROXYを書き換え、HTTP_PROXYと次のexport行の#を外して下さい。logの番号は発言番号1〜50が1、51〜100が2という風に50発言毎になっています。自力で計算して下さい。

 残念ながら、このスクリプトが対応しているのはFreeBSDだけです。fetchがある、またはfetchと同等の機能を持ったプログラム(指定されたURLのHTMLを取得するもの)がある環境ならばちょっと書き換えれば使えます。ちなみに、ここでのfetchとMac用のfetchとは別物なのでご注意下さい:-)
#そのうちfetchの代りになるperlスクリプトでも作ろうかと思いますが……、perlってまだうまく使えないんですよ。変数の省略が激しかったり特殊変数がやたらとあったりして。かといってCで書くと機種依存するので意味無いですし。

おまけ機能
 密かに妹スタンプのURLも書き換えているため、同じディレクトリにbbs_*.gifを置いておくとスタンプもしっかり表示されます:-) 同様に、前のページと次のページへのリンクも書き換えています。

history

1999/11/08
 HTTP_PROXYをexportするのを忘れていたのを直した
1999/11/09
 ちょっとだけエレガントに。でも、動作自体は変わらない
1999/12/27
 増えた妹達を追加。

page menu

Windows95/98用 偽fetch

 Windowsユーザの方々、お待たせ致しました。Windows95/98用偽fetchです。これで、Win32環境においてlogのまとめ落しが出来るようになります。実行にあたってはCygnus(B20.1以降)のランタイム・ライブラリが必要なので、適当なサイトから取得して下さい。私はfull.exe(開発用ツールまで全部入っている方)でしか動かしていませんが、usertools.exe(実行用のツールとライブラリだけのパッケージ)でも大丈夫のはずです。

使い方

1.
 まず、usertools.exeを手にいれて、インストールして下さい。インストールすると、スタートメニューにCygnus Solutionsというグループが出来、Cygwin B20というプログラムが登録されます。とりあえず起動して、
mkdir /bin
cp H-i586-cygwin32/bin/sh.exe /bin

としておいて下さい。

2.
 そうしたら、しばらくそっちはほっといて、これ(n_fetchb.lzh)をダウンロードしてlhutなどで展開します。UNIXを知らない人ならば、Cygnusをいれたのと同じドライブの/bin(Windows/MS-DOSで言うと¥bin)に展開すると良いでしょう。

3.
 偽fetch用のniseget.shをダウンロードして下さい。これもやっぱり/binに置くと良いでしょう。

4.
 メモ帳かなにかでniseget.shのstartとendのログ番号の所を書き換えます。

5.
 Cygwinのウインドウに戻って、適当なディレクトリでsh /bin/niseget.shとすると、ログのダウンロードを行います。他のツールを使うときにじゃまになるといけないので、mkdir /sislog(まるでsyslogみたいだ(笑))してcd /sislogしておくと後で楽だと思います。d:ドライブとかがあるならば、
mkdir /sislog
mount 'd:\data\sislog' /sislog

とすると、d:\data\sislogを/sislogとして認識するようになります。(このへん、UNIXのファイルシステムのエミュレーションです。わかると便利なんですが、分からないなら止めといた方が良いかも)

#追記……っていうか訂正
 sh(bash)は\をエスケープコードに使っているので、シングルクォートで囲む(文字列を展開せず、そのまま処理する)か\\のようにエスケープコードとして記述しないとうまくmount出来ません。

もっと簡単な使い方

 よく分からなかったり、nise-fetchを単独で使う場合は、パスの通ったディレクトリにcygwin1.dll(reverse.lzhに入ってます)をコピーして、DOS窓でnise-fetch ログ番号(.htmlとかはつけない)とするだけです。一番楽なのは、どっか適当にディレクトリ(例:C:ドライブの\sispri)を作ってそこにreverse.lzhとn_fetchb.lzhを展開し、DOS窓でそこにcd(先の例ならcd \sispri)して使うことです。
 一応、-p proxy.your.domain:8080みたいにするとプロキシサーバ(ポート番号はデフォルトの80番なら省略可)も使えます。防火壁があったりしてそのまんまじゃ届かない場合などにご利用下さい:-) なお、本プログラムはシスプリ掲示版専用に開発されたため、他のURLには一切対応していません(笑) また、実行ファイルはreverseと同じく著作権等はGPL規定です。

 FreeBSDでバイナリはいらない人や、どうしてもソースが読みたい人はどうぞ。ただし、あまりの汚さに目がくらんでも知りません。また、最新を保つのは面倒なので、ソースの更新をサボルことが予想されます。御了承下さい:-)

history

1999/11/21
 某関数内のエラー処理をちゃんといれました。ソースに埋め込んでいたreportlevelをコマンドラインから指定出来るように-rオプションも追加しました。
 サーバにあげて1時間程で-vオプションを衝動的に追加。再アップロード。

page menu

スタンプの統計をとる

 どの妹のお兄様/にいさま/お兄ちゃま/その他が多いのかは気になる所です。ですが、いちいち数えていたら雛子ちゃんが大人になってしまいます。(ローダンの最終巻が出てしまう、でも可) やはり、電子文書化されている以上は機械に数えてもらうのが正しい姿勢でしょう。

 というわけで、これ(stat.sh)を取得して、logのあるディレクトリで実行して下さい。(sh stat.shまたは、./stat.sh) 妹スタンプの数を数えて出力します。発言数よりもスタンプの数が少ないですが、管理者削除になったものやスタンプ無しの発言があるためです。スタンプ無しチェッカも作って確かめてみましたが、結構あるんですね。
#ほんとうはegrepよりjgrepを使うべきなのですが、半角カナに撃墜されるらしくまともな数字を出しません。nkfによる変換も失敗します。困ったもんです:-(

sample(1-23774の統計)

karen :     3169
kaho :     2097
mamoru :     1245
sakuya :     3732
hinako :     2900
marie :     1491
shirayuki :     1151
rinrin :     1806
chikage :     4705
haruka :      363
yotsuba :      199
aria :      405
total : 23263 stamps found.

history

1999/11/16
 ログのファイル名にPREFIXを設定出来るようにした。./stat.sh HOGEのようにして起動するとHOGE*.htmlを処理します。でも、sort -nするために小手先の技が必要になるので、ログ名はxxx.html(xxxは数字)にすることをお勧めします。
1999/12/27
 増えた3人を追加。

page menu

統計情報のグラフ化

 スタンプの統計情報をgnuplotでグラフにしました。PNG形式がうまく表示出来なかったら、QuickTime3.0以降をインストールするか、ディスクに保存(アイコンの上で右クリックするとメニューがでるので、名前を付けて保存を選択してください)してGVとかSUSIEで見て下さい。
スタンプ統計情報

 

データ加工用のスクリプト(stat3.sh)
 ファイル毎の妹スタンプの数を数えて妹名.datというファイルを出力します。
データ加工用のスクリプト
 stat3.shの出力を累積値に加工します。出力するファイルは妹名_s.datです。
gnuplot用の設定ファイル
 gnuplot plot.cmd > stat.pngという風に使います。リダイレクトをちゃんとしないとコンソールにイメージのバイナリが出力されます:-)

history

1999/11/08
 keyが邪魔な位置にあったので下にどけた
1999/11/16
 グリッドいれてみました
1999/12/27
 増えた3人を追加。

page menu

ログスプリッタ

 日本語が上から下へと進行する関係上、現在のログファイルの「新しい発言が上になる」形式は読み進む上でどうにも不便です。そこで、一旦ログを発言毎に切り分け、必要に応じて繋ぎ直すという力業に訴えてみました。

 これ(logsplitter.sh)を取得し、ログファイルのあるディレクトリでsh logsplitter.sh ログファイル名(または./logsplitter.sh ログファイル名)として下さい。発言番号.mes.htmlというファイルに分割されて出力されます。他のスクリプトで出力を2次利用することを考えてHTMLヘッダなどはつけていません。

 おまけで結合スクリプト作りました。これ(loglinker.sh)を拾ってsh loglinker.sh 開始番号 終了番号とするとログを繋いで出力します。リダイレクトしてファイルにしてからブラウザで読んで下さい。例えば
sh loglinker.sh 1 50 > hoge.html
とすると1から50までの発言をhoge.htmlというファイルに出力します。ただし、HTMLヘッダなんかはつけないのでHTML的にはあんまり正しくないです:-)

 スクリプト本体をみれば分かりますが、無理をしないでperlやらCやらで書けばいいのにわざわざshスクリプトで書いているので効率はかなり悪いです。(ディスクアクセスがやたら多いし) そのかわりにほとんどの環境で動作するはずですが。

 このスプリッタの本来の用途は検索エンジン(namazuというフリーの検索エンジン。私のPCにもなぜかインストールしてあります)に渡すデータの作成です。メディアワークスのサイトから取得したログファイルは50発言毎になっているので、そのまま検索エンジンのデータベースを作成しても目的の情報の発言番号までは分からず、効率が悪いため、一発言毎にファイルを分割してデータベースを作ってしまえ! という非常に単純かつ力業的な発想のもとに作成されています。

 もっとも、検索エンジンを動かしたところで使えるのは自分だけなのであまり意味は無いんですが……。
#どっかにFreeBSD(なるべく2.2.8.1)でCGIとディスクスペースが自由に使えるサーバがあればいいんですけどね〜。firewallの内側で外から接続出来ないのなら無いことも無いんですけど、これじゃ意味無いし。あ、メディアワークスさんの許可もらえなかったらどのみち公開できないのか。

history

1999/11/08
 1770 - 1773.管理者削除みたいになっているとファイル名を正しく生成出来ない問題を解決
1999/12/09
 既に分割済みメッセージがあった場合のメッセージを修正。

page menu

ログ反転ツール

 ログが新しいものから順になっているので、古いものから順に並べ変えるプログラムです。なんとWindows95/98用ですが、実行にはgnu-win32のCygnusが必要……だと思います。
:一応、cygwin1.dllをアーカイブに入れておきましたが、これだけでちゃんと動いているのか検証できなかったので……

使い方

 これ(reverse.lzh)をダウンロードして、lhaで展開してください。DOS窓を開いてコマンドラインでreverse ログファイルとすると反転したログを出力します。(PATHの通っているところか、ファイルを置いた所で実行して下さい) オプションの使い方はreverse -hで表示されます。

 あと、これをコンパイルするのに使ったCygnus(gcc)はGNUプロジェクトの産物で著作権関係はGPLにしたがっているそうなので、本アーカイブに含まれるバイナリ(実行ファイル)もGPLに従うことになります。(大雑把に言うと無保証/無償配布/ソース公開)
#GPLってちゃんと読むと結構やかましいですね。Borland C++3.1でまともにコンパイルできればあっさり「無保証です。勝手に使って下さい」で終りなのに。

ソースコードのみ

 FreeBSDなど、ソースコードがあれば実行形式は不要な場合はこちら(reverse.tgz)をダウンロードして、適当にコンパイルして適当に実行して下さい。ドキュメントは一応ついているので、cp reverse.doc /usr/local/man/ja/cat1/reverse.1とかするとjmanでマニュアルが読めます:-)

history

1999/11/14
 ドキュメントを整備しアーカイブに添付。
1999/11/16
 バージョン管理にRCSを導入するついでにちょっとだけ改良。(ついでなのはRCSか?) ほとんど変わっていないのでアップロードはunixソース版のみ。

page menu

バッチファイル生成プログラム

 Windows95/98用のバッチファイルを出力するプログラムです。reverseやnise-fetchと組み合わせて使いましょう:-) 詳しい使い方は付属のドキュメントを見て下さい。
Download batmake.lzh

History

2000/01/07
 花穂の誕生日に登場しました:-)

page menu
小部屋の入口へ
一つ上の階層へ