October 28, 2003RubyでHashのsort[Computer]
アクセスログをとっているのですが、そろそろどんな感じか整理してみようということで、Rubyでスクリプトを書いてみました。データの保管にはPStoreを使っているので、プログラムにはHashをいじっているのと同じ感覚でログの抽出操作ができるのです。 で、ここで問題となるのがHashのソート。今回はHashのキーにURL、値にアクセス回数が入っているものとして、アクセス回数の多いものを優先に、かつ、回数が等しいものはアルファベット順に整理してみることにしました。 hash = {'http://www.yahoo.co.jp/' => 3, 'http://www.google.co.jp/' => 3, 'https://fenrir.naruoka.org/' => 5}
hash.to_a.sort{|a, b| (b[1] <=> a[1]) * 2 + (a[0] <=> b[0]) } # => [['https://fenrir.naruoka.org/', 5], ['http://www.google.co.jp/', 3], ['http://www.yahoo.co.jp/', 3]] これで目的のソート済み配列([[key, value], [key, value],…]の二重配列になっています)が得られるので、後はeachかなんかでイテレーションすれば目的の操作ができると思います。 今回作成したスクリプトの成果は、右上のカウンタをクリックしてみてください。アクセスログが見られます。 あと、こんなサイトを見つけました。ドキュメントがしょぼいRubyにとっては初心者の方には役に立つかも。 コメント
田島です。 アクセスログ解析、自分で書くのもいいけど(俺も自分で書こうとしてパイチャートのFlashまで作ったのに途中で飽きてやめちゃいました。) そいじゃ、これからもちょくちょく見に来まーす。 Posted by: tomo : October 29, 2003 12:22 AMApacheのログを管理するツールのようですね。自分でつくると見栄えまわりがどうもしょぼくなってしまうので、近日中にこれをいれてみようかと。 コメントする
|
スポンサード リンク
|