_ IRCのログをDBに突っ込んで検索を早くする試み、テスト用のままずるずると続けてるんだけど、いちいち手動で前日のログファイルをデータベースに登録してるからかなり面倒。なので、Cygwinのcronを使って自動化できないものかと考えてみる。
_ cronあるかなーと思って調べてみたらインストールしてなかったので、Cygwinのバージョンを上げるついでに入れてみよう・・・・と思ったのが間違いだった(^^;
_ 新しいsetup.exeを落として、バージョンアップするユーティリティをあまり確認せずにcronを追加インストール指定して実行したら、rubyのバージョンも1.6.8から1.8.0に上がっちゃってさあ大変(笑)
_ 自分のPCで内向けに動かしてるWebサーバ、CGIはrubyとeruby使ってるんだけど、それがほとんど全滅(^^;。・・・・うわーん、ちゃんと考えてからやればよかったよー
_ www.ruby-lang.orgからCVS安定版スナップショットを持ってきてmakeして、Cygwin版のrubyはリネームして使わないように。それからerubyも落としてmake。mysql-rubyのバイナリはどこにやったっけ・・・ああもう、ruby-mysqlのライブラリを入れてごまかそう(^^;
_ エラーの出るスクリプトを一つ一つ修正。
_ なんとかCGIも動くようになって一安心。mysql-rubyもruby-mysqlも速度的にはそんなに変わらないな、私の環境だと。あるいはruby1.8にしたからその分だけ早くなってるのかな
_ やっと元通りになって当初の目的が全然進んでないことに気づく。しかもcronじゃなくてもWindowsのタスクを使えば何とかなるかも知れないと言うことを失念していて更に鬱。あぁもう・・・
_ やる気が失せたのでまた今度にしよう・・・
_ お風呂入ってる時に更に考えた。ruby1.6.8のソースは手元にあるんだから、CGI用に1.6.8をmakeし直せばよかったのでは、と。いやでも意識して使い分けできないだろうからこれでいいのか
_ やる気が失せたけど少しだけ考えてみる。CHOCOAのログの保存はBASE-DIR/チャンネル名/日付.txtになるから、ディレクトリを走査して前日の日付のファイルを探してファイルの内容を別のファイルに書き出すスクリプトを用意する。それとは別に、さっきのスクリプトで書き出したファイルの内容をMySQLに登録するSQLコマンドを記述したファイルを用意する。
_ loaddata.sql:
use irc;
LOAD DATA INFILE 'hoge.txt' INTO TABLE irc_data FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' (channel,time,msg);
_ shで起動するスクリプトはこんな感じか。
/usr/local/bin/ruby /any/path/to/log–extract.rb > /any/path/to/mysql/data/irc/hoge.txt
/any/path/to/mysql/bin/mysql –u hoge –pfoo –e "`cat /any/path/to/loaddata.sql`"
_ で、タスクに
X:\path\to\sh scriptfile
と指定して、毎日1:00にでも実行させればおっけーかな・・・
_ やってないから分からないけど(笑)<動きませんでした(笑)
(*1))
_ とゆーか、cron使ってないじゃん・・・(笑)