2006年3月11日の日記を表示中

2006年 3月 11日 (土)

Perlでrefererのデコード

apacheのログで気になるのはやっぱreferer.特にどんなキーワードで自分のコンテンツに訪れているのか結構気になったりします.そんなことから,これまでawkとかsedとかiconvとか使ったシェルスクリプト書いて適当にログを整形して表示させてみたりしていたんですが,何かやっぱ遅いのと,他でもちょっと使えるようにしたかったんで,Perlで書き直してみることにしてみました.

URL見てサーチエンジンごとに正規表現で検索ワード切り出して云々というのはPerlなんで普通に正規表現書くだけで済むのでとっても簡単.問題はURLをデコードした後の文字コードの変換なんですが,これもEncodeなるPerl同梱のモジュール使って文字コードの変換とかできちゃうんですね.楽だ.

ちまちま書いてみたところ,手元のログの大部分は問題なく処理できました.ただ,一部,refererのURLに文字コード情報が入ってない場合の文字コードの推測処理がどうにもうまくいきません.あちこちで紹介されてるサンプルコードをそのまま動かしてるつもりなんですが,なぜか本来euc-jpやsjisなものがutf8として認識されちゃいます(´・ω・).

仕方ないので場当たり的に検索エンジンのページの文字コードにあわせて決め打ちでデコードするようにして(exciteならsjis,infoseekならeuc-jpみたいな感じで),更に検索ボタンのvalue値のURL値を元に元の文字コード推測するようにしてみたりしてやったところ,手元のログに関してはひとまず正常にデコードできるようになりました.うーん,でもやっぱそれでもダメな場合は自動判別したいところです.シェルスクリプトではiconv使わずにnkfの自動推測に頼ってたんで楽だったんですけどねー.phpならこの辺問題ないのかなー・・・ってここまで書いて気づいたんですが,他に使いまわすことも考えるとphpで書いた方が良かったか(;´Д`)?

あ,あと,たまに混じってる「"\x93\x8c\x95\xfb\x89i\x96\xe9\x8f\xb4"」みたいなやつもうざいですね.ブラウザが悪いのか何なのかよくわかりませんけど,こっちは大概sjis?

[コメントを書く]

tkng 2006/03/16(木) 03:24:01
文字コードの認識だと、Gaucheの認識率が高いとどっかで読んだような気がします。Perlじゃなくなっちゃいますけど…。
nosuke 2006/03/16(木) 08:30:50
あ,僕もその話読んだ覚えがあります.
yazさんのところで見たのかな.
http://www.cc.rim.or.jp/~yaz/patch.html
にあるlibguessはGaucheのコードを使ってますね.

部屋掃除

どうしてこうなったのかよく覚えてないんですが,気がついたら部屋をものすごい勢いで掃除してました.これまでにも何度かテーマ別に『数年に一度』クラスの掃除をしてましたが,今回も今までと違うところを重点的に.無駄に取ってあった裏紙を捨て,ボロボロいなったファイルとかを分解・分別して廃棄.本棚やPC回りもちょっと配置を変えて相当すっきり・・・するはずなんですがまだ終わってないので今は机の上がぐちゃぐちゃです.

いや〜,しかし,窓際にずっと置いてあったプラスチック製のバインダー,手に取っただけでぼろぼろ崩れたのにはびびりました.こんなに風化するとは・・・.置きっぱなしにしてたの,5〜6年程度だと思うんだけどなぁ・・・.

CDとか

Tir-na-n-Og (5/4TAKEPOD)
オリジナルCD.最初の方に20分位の長い曲があります.いいですねー.セミロックとか全然季節感無いですが(^^;.最初の曲は何かクロノっぽい気がします.あ,でも,「CHRONO CORRIDOR」っぽいだけなのかも(^^;.うーんしかしプログレの定義ってよくわからんです.聴く分野が狭い故,Fragile Onlineさんのキツイ変拍子曲のイメージしか無かったんですが,こうすっきり聴ける曲もプログレなんすね.Wikipedia見てもうーんな感じ.
Eternity II (best of shape)
SaGaアレンジ.これもいいですねー.6曲目とか特に好みでした.わかりやすい好みですが(^^;.

2006年3月11日の日記を表示中

中の人情報

名前:
nosuke (のすけ)
メール:
sasugaanijaのgmail.com
「の」は「@」みたいな
関連リンク:

カレンダー

2006年3月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

<<先月分

翌月分>>

最新の10件のエントリ

最近の10件のコメント

過去ログ