他のプロジェクトでも使用していて「WiKicker でも使いたいのだけれど、これ以上依存するモジュールを増やすのものぁ」というものの一つであった Log::Log4perl をやはり採用する事に。
Perl 5.005_03 でもギリギリOKのようである。
Debugログおよび、アクセスログ等もすべてこの上にのせていくつもり。
www.naney.org のアクセスログをローカルにもってきて統計解析をするのに、今回は analog ではなく AWStats を使うことに。
以前 www.naney.org に入れてみた時より、随分使いやすくなった感じ。
Debian パッケージを入れた後、awstats.naney.org というバーチャルドメインをローカルのApacheに用意(/var/www/awstats.naney.org)。
Alias /icon/ "/usr/share/awstats/icon/"
も設定に追加しておく。
ファイルレイアウト:
/var/www/awstats.naney.org/ | +-- .htaccess | +-- awstats.conf <-- 作成 | +-- awstats.pl <-- コピーしてきて一部修正 | +-- cache <-- DNSキャッシュ用 (まだ未使用) | +-- data <-- データを保存 | +-- plugins <-- プラグイン | +-- wikicker.pm <-- /wiki/(.*).html を $1 で表示するプラグイン(自作)
awstats.pl はパッケージのものをコピー。DecodeEncodedString の中で Jcode.pm を使って文字列を UTF-8 に変換するように修正。
ローカル用なのであまり気にせず DocumentRoot の下にもりっとファイルを置いておく。
awstats.conf はこんな感じ。
LogFile="/path/to/downloaded-log/access.log" LogType=W LogFormat=1 LogSeparator=" " DNSLookup=2 DirData="./data" SiteDomain="www.naney.org" HostAliases="localhost" DNSStaticCacheFile="cache/dnscache.txt" DNSLastUpdateCacheFile="cache/dnscachelastupdate.txt" URLWithQuery=1 URLReferrerWithQuery=1 LevelForWormsDetection=2 ShowWormsStats=1 LoadPlugin="wikicker" ValidHTTPCodes="200 304 -"
ValidHTTPCodes の '-' というのは、本来不要。自前のSSIで似非 Combined Log を生成する際に '-' を出力する事があるので追加。
日本語もきちんと出るしいい感じ。 指定した月ではなく、指定した日のログを見れるといいのだが設定すればできるようにならないかな。
analog と違ってプラグインが使えるのが良い。 Perlスクリプトだから、その気になれば簡単に awstats.pl 自体を変更する事もできるし。
今回は ShowInfoURL 用プラグインを書いて、/wiki 以下のURLの際は unescape して PageName を表示するようにしてみた。
その他いろいろ遊べそう。
ちょっと落ちついたので、2日ほど前に招待されていたmixiに登録してみる。 そういえばorkutは(予想通り)最近ほったらかし。
チェックしてみると mixi は日記に関して外部のものを(RSS)を通して使えるようなので、ちょっと興味が出てきた。
mixi のシステムから送られてくるメールは、行末に ^M がつくのでちょっと嫌。
で登録。
nDiki (DiKicker) はまだ RSS を生成しないので、かわりに NaneyOrgWiki (WiKicker) の RSS を指定してみる。 フォームに入力して、送信。
Internal Server Error
そうですか。die を捕捉してませんか。 こちらのサイトのアクセスログを見るとRSSは取得していっているので、解析以降でこけているらしい。
いろいろチェックしてみると一つは日付表示の問題らしい。 mixi の要求する dc:date 要素はあるのだが、WiKicker で生成している YYYY-MM-DDThh:mm:ssZ (W3CDTFの一つ)では駄目らしい。
でどうやら YYYY-MM-DDThh:mm:ss+09:00 でないと駄目らしい (YYYY-MM-DDThh:mm:ss+00:00 でも駄目)。 まあこれもW3CDTFの形式ではあるけれど、もうちょっと許容してくれてもいいのになと思う。 いや駄目でもいいけど、 Internal Server Error はよろしくないんじゃないか。
とにかく RSS は設定できた。 がうまく表示されない。
がくり。
mixi の dc:date について誤認。 いろいろ試してみたところタイムゾーン指定は Z でもOKだった。
(2004年11月21日追記)
[ Naney と mixi ]
Tor: An anonymous Internet communication system を試してみる。 Torは匿名接続を提供するシステム。 アプリケーションで Tor クライアント(あるいはサーバ)をSOCKSサーバとして指定すると、いくつかの Tor サーバを経由して目的のサービスに接続されるようになる。 途中の経路は時間とともにどんどん変わっていく(らしい)。
Debian パッケージになっているので apt-get。
もともと普段から使用している Privoxy の config に、
forward-socks4a / localhost:9050 .
という設定を追加して再起動。Privoxy がローカルサーバで動いている Tor 経由で接続するようになる。
Firefox -> Privoxy(localhost:8118) -> Tor(localhost:9050) -> Tor server -> ... -> Tor server -> Web サーバ
という感じに複数の Tor サーバを経由して目的にサーバに接続されるようになる。
Web サーバのアクセスログを見ながら何度かHTTPアクセスをしてみると、IP アドレス(経路の最後の Tor server)が変わっていくのがわかる。
かなりレスポンスが悪くなる。 現状では常時設定しておくのは辛い感じ。
Tor では名乗りを上げない限り(待ち受けポートを開けた上で、ディレクトリサーバに登録する)サーバにはならない。 このため、Tor server が絶対的に足りていないのかもしれない。
Tor の面白い機能の一つに匿名サービスを提供する機能がある。 Web サーバやSSHサーバなどを匿名で晒すことができる。
この時動かす tor は Tor サーバである必要はなく Tor クライアントでかまわない。
/etc/tor/torrc に
HiddenServerDir /var/lib/tor/hidden_http_service/ HiddenServicePort 80 127.0.0.1:80
を追加して、tor を再起動。
/var/lib/tor/hiden_http_service/hostname というファイルに ****************.onion というホスト名が書かれているので、Tor + Privoxy 経由で http://****************.onion/ にアクセスすると、先ほどの tor が動いているサーバの Web サーバのページが見える。 hidden service を提供している tor は NAT の中にいてもOK(のようだ)。
閲覧者側に Tor (とPrivoxyなど)がインストールしてあれば、ダイナミックDNSに登録したりしなくても好きなタイミングで Web サーバにアクセスしてもらえるようになる。 面白い。
ローカルの Apache に 「ServerAlias *.onion」な Virtual Host の設定を追加して、Tor 経由専用のWebサイトも実験的に準備しておいてみた(例によって Wiki)。
昨年無料サービス開始時には申し込みが殺到して新規登録を一時中止したという経緯があった Google Analytics、当時はそのうち試してみたいと思っていたのだが気がつけばもうすぐ1年だ。
アクセス解析を見るのは結構楽しいもので、周期的に見たいという衝動がくる。 analog やら AWStats やら自作やらで過去にもいろいろ解析してみた経験がある。
会社でも最近アクセスログ解析が話題になっているし、www.naney.org 用に Google Analytics に申し込んでみた。
解析を取りたいページの最後に JavaScript を埋め込むタイプの解析で、404 であったりその他のリソースのアクセス数のチェックには向かないものの、その分 Web サーバのアクセスログ解析では得られない統計を得ることができる。
レポートの種類は豊富で、最初は「あのレポートは、どれだっけ?」と何度もいろいろ見直したりしなければならないぐらい。
アクセス傾向が分かるようになるので、重点的に内容を充実させるべきページを把握してサイトを改良していきたい。
Google Analytics から1日1回キーワードのレポートを TSV 形式でメールで配信するように設定している。 このデータをもとに「よく検索されるキーワード」を抽出して、nDiki の下の方に表示するようにした。
1日1回の作業なので、メールからスクリプトにかける部分とアップロードする部分は手動で。
そこそこの処理なので、そこそこの精度なのだけれど傾向は何となくわかる感じだ。
実際にはアクセスログの対象となっているのは nDiki 以外の www.naney.org 内のアクセスも含まれているけれどもまあいいであろう。
キーワードの処理は細かいことをいうと結構面倒だったりする。
などなど。
この辺りは精度を上げようとするといろいろ工夫の余地がって楽しそうではあるな。
2007年4月20日にベータ版が開始され話題になってから随分たつが、nDiki に「なかのひと」を昨晩からつけてみた。 なかのひとは、
「どんな組織からアクセスがあったか」に特化したサービス
である。地図表示付きなどその他の機能もあるが、組織名がわかるのが一番面白い点。
基本的にはアクセスログ解析でアクセス元の IP アドレスから組織がわかるのだが、実際のところ対応表をメンテナンスするのって面倒なので、こういったサービス便利である。
別にどうといったことではないんだけれど、メジャーな組織名があると「おっ」と思ってしまうし、どの組織の人にどんな目的で見られているんだろうと考えると想像するだけで楽しくなってくる。
サイト運営の清涼剤になるな。
LINE株式会社で開催された Shibuya Plack/PSGI Conference (shibuya.pl) #1 #plackcon 「秋のPlack/PSGI祭り」に参加してきた。今回は YAPC::Asia Tokyo でもよくトークされている masartz 氏とご一緒させていただいた。ここの会場にくるのは「第3.5回 データ構造と情報検索と言語処理勉強会」「PerlCasual #05」に続き3回目。
開催を知った時には定員60人すでに埋まっていて補欠だったんだけれど、その後定員80人に増やしてくれたようで参加できるようになった。当日時点ではキャンセル等で定員切っていてきたい人はこれるようになってたよ。
会場アンケートをとりつつ、必須な/便利なモジュールや Plack::Middleware の紹介。
Plack/PSGI のパフォーマンス向上の取り組みが進めば Perl の適用領域を広がるし(リアルタイムな広告系とか)、Perl 使いの仕事も増えるよ。
など。プラクティカルなトーク。
リクエスト中のパラメータの decode を Plack で一箇所でやってしまう話。
「YAPC::Asia 2014 やります!」とのことです。
@bayashi 氏の plackup -e でちょっとしたこといろいろできて便利だよという話や、@azumakuniyuki 氏の Haineko の話や、 @hkoba 氏のコントローラを書く人がいないプロジェクト向けのテンプレートエンジンの話や、@songmu 氏の .psgi からの卒業の話とか、@tasukuchan 氏のきまぐれオレンジ☆ロードについてのラジオみたいなビデオ LT とか。
空気を読まない(読めない)一方通行なビデオ LT は新しく。
Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。