IP::Country のデータを更新してみた記録

| 0 Comments | 0 TrackBacks

メールの Received を見て何らかの処理をするために使えそうなモジュールだなぁと思ったので、まずは、データを更新することにした。

ちなみにこのモジュールは、Plagger の Filter::GuessTimeZoneByDomain に使われているモジュールらしい。

とりあえず、ファイルの準備をする。

$ wget http://search.cpan.org/CPAN/authors/id/N/NW/NWETTERS/IP-Country-2.23.tar.gz
$ tar xzf IP-Country-2.23.tar.gz
$ cd IP-Country-2.23
$ mkdir rir_data
$ cd rir_data
$ wget ftp://ftp.arin.net/pub/stats/afrinic/delegated-afrinic-latest
$ wget ftp://ftp.arin.net/pub/stats/lacnic/delegated-lacnic-latest
$ wget ftp://ftp.apnic.net/public/apnic/stats/apnic/delegated-apnic-latest
$ wget ftp://ftp.ripe.net/ripe/dbase/split/ripe.db.inetnum.gz
$ wget ftp://ftp.arin.net/pub/stats/arin/delegated-arin-latest

で、dbmScripts/ipcc_loader.pl を実行する。うちの北森 2.6Hz な Celeron だと 30 分かかった。30 分もあるので、ヌいてすっきりする等の生産的な活動を行うと時間の節約になってよいだろう。

メモリは 750M ほど食われた。これで 2M ほどの sorted_countries.txt ができる。

$ time perl ../dbmScripts/ipcc_loader.pl
loading data from delegated-afrinic-latest
loading data from delegated-lacnic-latest
loading data from delegated-apnic-latest
loading data from ripe.db.inetnum
loading data from delegated-arin-latest
optimizing by joining neighbouring ranges
  repeating (714116 joins)
  repeating (229049 joins)
  repeating (71680 joins)
  repeating (21495 joins)
  repeating (6440 joins)
  repeating (1913 joins)
  repeating (520 joins)
  repeating (127 joins)
  repeating (22 joins)
  repeating (2 joins)
removing overlapping ranges
  repeating (576743 overlapping ranges)
  repeating (35071 overlapping ranges)
  repeating (11 overlapping ranges)
performing final optimizations
  repeating (376904 joins)
  repeating (276636 joins)
  repeating (195295 joins)
  repeating (132263 joins)
  repeating (88548 joins)
  repeating (59143 joins)
  repeating (39704 joins)
  repeating (26317 joins)
  repeating (17423 joins)
  repeating (11329 joins)
  repeating (7136 joins)
  repeating (4456 joins)
  repeating (2748 joins)
  repeating (1450 joins)
  repeating (770 joins)
  repeating (424 joins)
  repeating (170 joins)
  repeating (73 joins)
  repeating (35 joins)
  repeating (14 joins)
  repeating (3 joins)

real    29m10.890s
user    27m18.838s
sys     0m8.461s

次に、dbmScripts/ipcc_maker.pl を実行する。

メモリの消費は 40M ほど。../lib/IP/Country/Fast/ip.gif と ../lib/IP/Country/Fast/cc.gif が更新される。

$ time perl ../dbmScripts/ipcc_maker.pl
Building registry... this will take a moment...
Saving ultralite IP registry to disk
Saving ultralite country database to disk
Finished.

real    0m53.124s
user    0m50.998s
sys     0m0.223s

とりあえず使ってみる。

$ cat test.pl
#!/usr/bin/perl

use strict;
use IP::Country::Fast;

my $me = "pub.woremacx.com";

my $reg = IP::Country::Fast->new();
print $reg->inet_atocc($me)  ."\n";
print localtime($reg->db_time()) ."\n"; # revision date

$ perl -Ilib test.pl
JP
Sun Dec 17 21:20:26 2006

No TrackBacks

TrackBack URL: http://blog.woremacx.com/MT/mt-tb.cgi/209

Leave a comment

About this Entry

This page contains a single entry by woremacx published on April 16, 2007 10:36 PM.

ブログのフィードをマージしました was the previous entry in this blog.

dropz / SWEET OBLIVION is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.