fc2ブログ

2024.11 «  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 - - - - » 2025.01
TOP > CATEGORY > Rubyでアクセス解析

TOP | NEXT

【Rubyでアクセス解析 その6】総仕上げ 

2010年11月22日 ()
課題の残りの以下3つも、一応何からの形で解決させたので、このシリーズはおしまいにしたいと思います。

・UserIDがuser-agentになっているが、apache提供のユニークIDフィールドや、ユーザのIPアドレスも加味した形でUserIDを振りたい
・apacheログの要素の場所が固定
・アウトプットがまだ



今の段階のソースコードを参照したい方は以下のコマンドでどうぞ

git clone http://github.com/rorkaido/farfalle.git
cd farfalle/
git checkout v1.1



ソースコード中、main.rb の write_access_count のソートの仕方が、けっこうお気に入り(というか苦労した点)です。PV数で降順でソートして、そしてURL文字列で昇順でソートしたりを1行で行っています。

それでは、応援してくださった全国のファン約3名ぐらいの皆様ありがとうございました。私は今日から普通の女の子に戻ります。

【広告】

[2010.11.22(Mon) 00:26] Rubyでアクセス解析Trackback(0) | Comments(0) 見る▼
↑TOPへ

【Rubyでアクセス解析 その5】キーワードを抽出する 

2010年11月14日 ()
sjis, euc, utf-8 などの文字コードが混じっている URL エンコード文字列を、どーにか日本語にデコードできないか、が今回課題です。

以下でなんとか出来ました!

require 'uri'
require 'kconv'
$KCODE = 'UTF-8'
URI.decode(ここにURLエンコード文字列を入れる).toutf8



というのを発見するのにだいぶ時間が掛かって、ビールの酔いが覚めました。もう一杯飲もう。

ちなみに、JavaScriptのescape関数でエンコードされた日本語は、上記ではデコードできません。

別途、正規表現で1文字ずつ読み取って、unpackみたいなことをしましょう!ソースコードは、ここには載せませんが、知りたい人は是非コメント欄にリクエストを書いて下さい ><

それから、今回は、モジュールファイルを1ファイルから細切れに分けました。

簡単に言うと、以下のようなことをしました。

### ファイル my_module.rb
module MyModule
  def method1
  end

  def method2
  end

  def method3
  end
end



を分散させて

### ファイル my_module.rb
require 'my_module/method1'
require 'my_module/method2'
require 'my_module/method3'

### ファイル my_module/method1.rb
module MyModule
  def method1
  end
end

### ファイル my_module/method2.rb
module MyModule
  def method2
  end
end

### ファイル my_module/method3.rb
module MyModule
  def method3
  end
end



さーて、あと1~2回は続く予定です。

今の段階のソースコードを参照したい方は以下のコマンドでどうぞ

git clone http://github.com/rorkaido/farfalle.git
cd farfalle/
git checkout v0.3




【広告】

[2010.11.14(Sun) 00:40] Rubyでアクセス解析Trackback(0) | Comments(0) 見る▼
↑TOPへ

【Rubyでアクセス解析 その4】apacheログファイルを読み込む 

2010年11月04日 ()
やるっきゃないと土井先生のように宣言したからには、何かしら成果を残そうと思いました。

apacheログファイルを読み込むところまでは、なんとか形にしてみました。

色んな課題が途中で入ってきて大変でしたけどね。

例えば
・apacheログの標準の日時フィールドは[と]で囲まれているから、パースするのが大変
→[と]をダブルクォーテーションに置換して対処
・apacheログの標準の日時フィールドの文字がParseDate::parsedateでは解釈できない
→解釈できるように日時フィールドの値を置換して対処
・apacheログの標準フォーマットではユーザをユニークに判別するフィールドはユーザーエージェントぐらいしかない
→これはしょうがない

そして以下のような課題がまだまだ残ってます!

・keyword取得
・UserIDがuser-agentになっているが、apache提供のユニークIDフィールドや、ユーザのIPアドレスも加味した形でUserIDを振りたい
・apacheログの要素の場所が固定
・アウトプットがまだ



今の段階のソースコードを参照したい方は以下のコマンドでどうぞ

git clone http://github.com/rorkaido/farfalle.git
cd farfalle/
git checkout v0.2



もー、簡単な指標しか出さないのに意外と壁は厚い・・・次回もがんばろう!(たぶん3ヶ月後・・・ってか?)

【広告】

[2010.11.04(Thu) 00:20] Rubyでアクセス解析Trackback(0) | Comments(0) 見る▼
↑TOPへ

【Rubyでアクセス解析 その3】機能を絞る 

2010年11月03日 ()
apache のログって調べてみたら暴れん坊さんですね。

取り敢えずは機能を絞ってプログラムを作らないと、とんでもなく柔軟にいろんな事に対応しなくてはならなさそうな予感がしてきました。

なんでかっていうと

1. 日付ごとにaccess_logファイルが必ずしも作成される訳ではない
2. ブラウザごとにユニークなIDが必ずしも付与されている訳ではない

ですので、以下のような機能に絞れば、それなりに作れそうな気がしてきました。

1. インプットは複数ファイルもOK
2. 日別の指標しか集計しない
3. URLのPVとUU, キーワードの流入数と流入UUしか集計しない
(↑セッションという概念が入ると、ユーザ・日時順にソートしなくてはならないので、インプットがガチガチに固まっていない限り相当面倒)

よしではこれから作るぞ!

【広告】

[2010.11.03(Wed) 12:48] Rubyでアクセス解析Trackback(0) | Comments(0) 見る▼
↑TOPへ

【Rubyでアクセス解析 その2】githubに登録しました 

2010年10月25日 ()
やべぇ何にも前に進んでないんですけど。
なので、githubにプロジェクトを登録してどんどん前に進めるように環境を整えることにしました。

とは言っても、現段階でgithubに登録したのは空のプロジェクトですけど。

しかもファルファッレといういかにも適当につけましたというプロジェクト名にしました。リングィーネの方が良かったかな?といらぬ心配。

以下にgithubにプロジェクトを公開するまでの手順をメモっておきます。

# githubで新しいプロジェクト名を登録してから以下の手順を行う。今回は「farfalle」というプロジェクト名にした
# 追加しようとしているプロジェクトのルートディレクトリに居るという仮定で以下を始めます。
vi README
git add README
git commit -m ' empty repo version to kick off' # ここは適切なコメントを入れるのです
git remote add origin [email protected]:rorkaido/farfalle.git # 「rorkaido/farfalle.git」の部分は適宜変えないといけない
git push origin master
git tag v0.1 # タグも付けてみるけど、毎回のコミットにタグを付ける必要はない
git push origin v0.1




以下のコマンドで今回までのプロジェクトを取得することができます。

git clone http://github.com/rorkaido/farfalle.git
cd farfalle/
git checkout v0.1



次こそは、何かしらのコードを書いていきたい。一年後ぐらいか?!

【広告】

[2010.10.25(Mon) 00:14] Rubyでアクセス解析Trackback(0) | Comments(0) 見る▼
↑TOPへ

TOP | NEXT