本を読む

読書やコンピュータなどに関するメモ

IT勉強会カレンダーの集計

誰か、月別の勉強会数とか地域別開催数とかマッシュアップしてくれないかなあ

 マッシュアップというよりグレップ(grep)な出来ですが。

 月別集計。

#!/usr/bin/perl
use strict;
use warnings;
use Data::ICal;
use Date::ICal;
use LWP::Simple qw( get );

my $data = get('http://www.google.com/calendar/ical/fvijvohm91uifvd9hratehf65k%40group.calendar.google.com/public/basic.ics') or die;

my $ical = Data::ICal->new(data => $data);
my %h;

for my $e (@{$ical->entries}) {
    my $s = $e->property('DTSTART') or next;
    for my $d (@$s) {
        my $dt = Date::ICal->new(ical => $d->value);
        $h{sprintf "%d-%02d", $dt->year, $dt->month}++;
    }
}

print sort(map { "$_: $h{$_}\n" } keys(%h));

 結果。2006年は入力ミスだと思う。

2006-04: 1
2008-04: 21
2008-05: 127
2008-06: 221
2008-07: 310
2008-08: 260
2008-09: 147
2008-10: 58
2008-11: 37
2008-12: 18
2009-01: 10
2009-02: 13
2009-03: 1
2009-04: 1
2009-06: 1

 続いて地域別。

#!/usr/bin/perl
use strict;
use warnings;
use Data::ICal;
use Date::ICal;
use LWP::Simple qw( get );

my $data = get('http://www.google.com/calendar/ical/fvijvohm91uifvd9hratehf65k%40group.calendar.google.com/public/basic.ics') or die;

my $ical = Data::ICal->new(data => $data);
my %h;

for my $e (@{$ical->entries}) {
    my $ary = $e->property('SUMMARY') or next;
    for my $summary (@$ary) {
        (my $str) = $summary->value =~ /\[(.*?)\]/ or next;
        for my $p (split(/\//, $str)) {
            $h{$p}++;
        }
    }
}

print map { "$_: $h{$_}\n" } sort { $h{$b} <=> $h{$a} } keys(%h);

 結果。東京が多いのは予想どおりとして、オンラインが意外に多かった。

東京: 580
大阪: 106
名古屋: 73
オンライン: 56
京都: 37
福岡: 37
北海道: 32
札幌: 25
長野: 25
広島: 21
島根: 17
横浜: 13
神奈川: 13
岩手: 12
仙台: 12
福島: 11
沖縄: 9
大分: 9
茨城: 8
静岡: 8
兵庫: 8
愛知: 8
松江: 7
宮城: 7
締切: 7
神戸: 6
鹿児島: 6
群馬: 6
富山: 6
栃木: 6
青森: 5
香川: 5
山形: 4
千葉: 4
筑波: 4
新潟: 4
佐賀: 4
長崎: 4
石川: 3
愛媛: 3
岐阜: 3
室蘭: 3
高知: 3
つくば: 3
小樽: 3
松本: 2
埼玉: 2
和歌山: 2
チケット: 2
徳島: 2
鎌倉: 2
福井: 2
新宿: 2
熱海: 2
滋賀: 2
秋田: 2
博多: 1
函館: 1
湘南: 1
山梨: 1
上田: 1
水戸: 1
箱根: 1
釧路: 1
岡山: 1
鳥取: 1
前橋: 1
三重: 1
宮崎: 1
旭川: 1
山口: 1
佐世保: 1
熊本: 1
呉: 1
奈良: 1
軽井沢: 1

 ちなみに、使用PerlモジュールはUbuntu 8.04の公式パッケージにあるものだけ。

コメント

2006年は入力ミスだと思う。

∑(-△-|||)
ミスですねぇ...
ここ最近はcsvからインポート形式とってるのでたぶん大丈夫だと思うんですが、
こうやって並んでいる開催地を見ると、私の地理に対するダメダメ感が見えてきそうです(汗

複数日のイベントの数え方

素晴らしい。

実はわたくし手で数えていましたw
手で数えるときは3日連続のイベントなんかを3回分と数えていました。毎日毎日すごい数の勉強会やっていて、迷っちゃうよねという感じが実感できたりして、それはそれでよかったかとw

しかし8月23日の他24件って。はじまったな勉強会。

おおっ、ご本人とご本人が

>hanazukinさん
おおっ、IT勉強会カレンダーにはお世話になっています。
あれだけの量の情報をまとめているので、1つや2つのミスは入っちゃいますよね。
これからも期待してます。

>hyoshiokさん
さすがベテラン技術者、処理の境界条件な部分をきっちりと嗅ぎつけますね。
この集計では、イベント単位で開始日を拾っています。日ごとに分けることもちょっとだけ考えましたが、月ごとの件数という意味ではイベント単位のほうがより望ましいと思うので(というのは建前で、本音は面倒だから)、こうしてみました。

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://emasaka.blog65.fc2.com/tb.php/433-5b9bf104

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad