雑記

mixiに書いている日記の代わりだったりします。

2006/05/25

=?ISO-2022-JP?B?GyRCNChDSCROOjkbKEI=?=

暑かったり、でも朝晩は寒かったり。

朝のニュースで、朝晩の「おかえり天気」もっとやってくれないかな。

ま、ネットで教えてくれればそれで(オレは)十分だけど、調べるのが面倒。

あ、ついでに何時頃から雨が降るのかってのも教えて。できればメールで。

2006/05/12

=?ISO-2022-JP?B?GyRCOnJGfCROOi47KBsoQg==?=

電車の遅れもゆるせないが、回避ルートをうまく使えない人があれだけいることにも驚き。

警備の警察官の警備が、回数を重ねるごとに上手になっていることにも驚き。いや、これまでが下手だったということなのですが。

2006/05/09

=?ISO-2022-JP?B?GyRCJGQkQyRRJGohIktNJE87RTt2JCwkRyQtJEokJBsoQg==?=

タイトルをデコードすれば、意味がわかるかと。

ううむ。

2006/05/07

=?ISO-2022-JP?B?GyRCJF4kSCRhJEYkXyQ/GyhC?=

とりあえず、Apacheのログをサマライズするツールらしきものを作ってみた。そして、インストールから動かすところまでの結果をまとめてみた

見栄えは悪いし、サマライズも洗練されてはいないけれど、それはまた先の話ということで。

そういえば、まだ仕様書作ってないんだよな。後から作ることほどアホなことはないのだが・・・オレ、職業なんだっけ。ついでに、オレ、監査の資格持ってなかったっけ。まぁ、その辺のツッコミはすべて不許可ということにしておきます。

経験値が1つ上がりました。いや、DBって、便利かも。これまで食わず嫌いだった自分を反省。そして、「オマエなら簡単だよ」って言ってくれたnaganonoにも感謝。連絡を取らなくなってからしばらく立つけれど、ありがとう。

2006/05/05

=?ISO-2022-JP?B?GyRCJTMlcyVTJUsbKEI=?=

コンビニで納豆を買ってみた。食いたかったし。

1パック68円は、やっぱり高いだろ。

PHPとPerlとMySQLと(2)

ということで、次はログをサマライズするツールを作ってみる。Apacheのログは標準なので、こんな感じのコードを作ってみた。入出力のファイルを指定して、コマンドラインとして起動する。Webサーバで動作させても保証できません(動くかもしれないが、試していない)。すると、出力側のファイルが、今回作成するテーブルに入力できるようになっている。

本来は、テーブル設計をきちんとやるべきなのだが、今回は苦心の末、こんな感じにまとめてみた。異論はあると思うけれど、とりあえず、これだけのデータがそろえば、あとはSQLをどうするか、というだけの問題に帰着できるはず(ただし、リファラについては、今回は解析の対象としていないため、PerlのツールではNULLが格納されるようになっている。カラムとしては存在する)。

あとは、以下のコマンドで、ファイルが読み込まれ、テーブルに登録される。

load data infile "出力ファイル名" into table logs;

と、ここまでくれば、あとはPHPでSQL文を書いていけばよいと言うことになるわけで、とりあえず、全レコードの件数をカウントするスクリプト用意してみる。あとは、これもhtdocsに入れて実行してみる。うまくいったら、あとはSQLの切り方次第ということになる。でも、まだ作ってないんだよね。そのうち作らなきゃ。

PHPとPerlとMySQLと(1)

ということで、MySQLとPerlとPHPを組み合わせるという技を使ってみることにした。
何をしたいのか。うーん、つまり、Webサーバのアクセスログサマライザを作ろうとしていたのだけど、この前のPerlのツールが、再インストールで吹っ飛んでしまったので、ただ作り直すのも芸がないので、DBを使ってやってみることにした。前々からDBは使ってみたかったのだけど、なかなか勢いがつかなかったので、この連休にやってみることにした。

以下の情報はこのブログを書いたときの最新であって、常に最新とは限らないので、要注意。
まず、PHPMySQLをダウンロードする。で、インストールしてしまう。インストール時は、Cドライブにインストールした。後々面倒なことになるような気がしたので。

で、インストールが終わったら、とっとと設定するわけだが、ここでApacheとPerlも当然インストールが必要なので、前に作成したメモを参考にしておいてください。
設定項目はそれほど多くない・・・と言いたいところではあるのですが。細かいのがいくつかあるので、順番にやっていった。参考にしたのはHotwired

まずは、MySQLについては、Hotwiredの指示に従えば、何とかなる。ただし、Windowsの場合は、なかなか難しい問題があって、インストール後のbinディレクトリをコマンドプロンプトで呼び出せるようにしておくと便利(というのも、スタートメニューから呼び出せるのは、あくまでもrootの場合だけなんだよね・・・いや、ショートカットを編集すればいけるんだけど)。窓の手で設定すれば、フォルダをexplorerで右クリックすれば、「コマンドプロンプト」が出てくるようになります。これ、意外と便利。dirとか使えるし。余談ですが。

で、設定自体は、今回はデフォルトの設定のままです。英語としてはそれほど難しくないので、たぶんインストール自体は何事もなく終わるはず。

続いてPHP。これがちょっとやっかい。Hotwiredの解説とは異なるところが数カ所。「php.iniをphp3.iniにリネーム」とあるけれど、拡張子をphpで動作させたいので、今回はリネームせずに移動。それ以外はHotwiredの解説に従えばよい。中身の「extension=php_mysql.dll」行のコメント外しと、DLLの移動については、解説に従えば問題なく終わる。

今回はApacheと連動させるので、当然ながら拡張子phpをApacheに認識させる必要があること、そして今回は拡張子を「php」で動作させたいことから、以下の行を追加する。

ScriptAlias /php3/ "c:/php3/"
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php3/php-cgi.exe"

特に最後の行はHotwiredとは異なる。CGIとして動作させたいときは、cgi専用のプログラムを指定する必要がある。

ここまでくれば、とりあえず動かせる環境に・・・なったかな。ということで、動作確認は、当然ながらユーザに近いほうからやっておきましょう。ということで、PHPから。これもHotwiredにサンプルコードがあるので、これを使ってみる。

うまくいかなければ、設定のどこかが間違ってないか、再度確認してみればよい。
で、話はMySQL。まだまだ続く。Windowsの「サービス」を起動する。XPでは、コントロールパネルの「管理ツール」とかにあると思う。ここでMySQLを開始してみる。ファイアウオールが入っていたりすると、ここで警告されることがあるので、「許可」を選択する。できれば、ローカルホストだけに許可する、という設定がいいかもしれない。

続いて、DBを構築していく必要がある。今回は、logsというデータベースを作成し、中にlogsテーブルを作成した。今回のテーブルサンプル。このまま読み込めるようになってます。さらに、ユーザについてはこのlogsデータベースだけにパスワードなし(外部からの接続が容易な状態でこの設定にするのは勧めませんよ)で接続できるようにtestuserを作成した。

ということで、ここまでのコマンドはmysql上では、こんな感じ。

mysqladmin -u root -p create logs
#パスワードを入力
mysql -u root -p #これでmysqlのコマンドラインを起動
#パスワードを入力
create user testuser;
grant all on logs to testuser;
source createtable_logs.txt

これで、テーブルまでは作成できました。ということで、ここらで一服するもよし、勢いで進むもよし。
ブログとしてはここでいったん区切ります。

2006/05/02

=?ISO-2022-JP?B?GyRCOiNHLyROMFxGMDV3TiUbKEI=?=

すでに日本を縦断するくらいの移動距離だったりする。この調子だと兼高かおるを超える(違)。

まあ、オレが運転したわけじゃないから、寝てるだけでいいのは間違いないが。

2006/05/01

=?ISO-2022-JP?B?GyRCJWElYhsoQg==?=

メモ。

NTTの提供するIP電話機器は、停電などで電源が落ちると、復旧しても自分の番号ではない方からの着信で番号通知ができなくなることがある。自分の番号は問題ないが。戻すには初期状態に戻して再度設定するしかない。実際には、設定は保存されているように見えるが、想定通りには動かない。