このページはFreeBSDと咲耶を愛する方々のためにこっそりと設置された、非常に内容の偏ったページです。っていっても、他の妹達のおにいちゃんでも役に立つんですけどね:-) というわけで、その筋のページを開設している方々、リンクはがしがし張っちゃって下さいm(_ _)m
しかし、だんだんなんのページなんだかアヤシくなってきたなぁ。ほとんどシェルの話ばかりな気がする。目的は偏ってるけど。
new
ご存知の通り、メディアワークスの公式サイトにはシスプリ掲示版が設置されています。しかし、この掲示版は書き込みの速度が尋常ではなく、もの凄い勢いで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を置いておくとスタンプもしっかり表示されます:-) 同様に、前のページと次のページへのリンクも書き換えています。
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 |
#追記……っていうか訂正
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でバイナリはいらない人や、どうしてもソースが読みたい人はどうぞ。ただし、あまりの汚さに目がくらんでも知りません。また、最新を保つのは面倒なので、ソースの更新をサボルことが予想されます。御了承下さい:-)
どの妹のお兄様/にいさま/お兄ちゃま/その他が多いのかは気になる所です。ですが、いちいち数えていたら雛子ちゃんが大人になってしまいます。(ローダンの最終巻が出てしまう、でも可) やはり、電子文書化されている以上は機械に数えてもらうのが正しい姿勢でしょう。
というわけで、これ(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.
スタンプの統計情報をgnuplotでグラフにしました。PNG形式がうまく表示出来なかったら、QuickTime3.0以降をインストールするか、ディスクに保存(アイコンの上で右クリックするとメニューがでるので、名前を付けて保存を選択してください)してGVとかSUSIEで見て下さい。
日本語が上から下へと進行する関係上、現在のログファイルの「新しい発言が上になる」形式は読み進む上でどうにも不便です。そこで、一旦ログを発言毎に切り分け、必要に応じて繋ぎ直すという力業に訴えてみました。
これ(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の内側で外から接続出来ないのなら無いことも無いんですけど、これじゃ意味無いし。あ、メディアワークスさんの許可もらえなかったらどのみち公開できないのか。
ログが新しいものから順になっているので、古いものから順に並べ変えるプログラムです。なんと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でマニュアルが読めます:-)
Windows95/98用のバッチファイルを出力するプログラムです。reverseやnise-fetchと組み合わせて使いましょう:-) 詳しい使い方は付属のドキュメントを見て下さい。
Download batmake.lzh