ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 

  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА














     АРХИВ :: Apache-Talk
Apache-Talk mailing list archive (apache-talk@lists.lexa.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[apache-talk] Re: [apache-talk] Re: [apache-talk] Re: [apac he-talk] Re: [apache-talk] Re[2]: [apache-tal k] Сжатие Гео-базы для mod_geo.



Здравствуйте Антон,

AVY> Да. Просто Net::CIDR::Lite выполняет операции склеивания соседних
AVY> префиксов одинаковой длинны внутри себя.

Что-то я не понял. Прогнал всю базу через этот модуль и получил точно
такую же базу. Только поменялся поряддок строк. Размер не изменился.
Вот скрипт. На вход принимает геобазу вида:

2.6.190.56/29 GB
3.0.0.0/8 US
4.0.0.0/12 US
4.16.0.0/16 US
4.17.0.0/17 US
4.17.128.0/21 US
4.17.136.0/22 US
4.17.140.0/23 US

а на выходе должен выдавать её же, только со склеенными интервалами.

#!/usr/local/bin/perl -w

use Net::CIDR::Lite;
use strict;
use warnings;

my %countries_hash;
my $country;
my $range;

while (<>) {
        chomp;
        ($range,$country) = split /\s/;
        #подсеть каждой страны добавляем в отдельный массив
        push @{$countries_hash{$country}}, $range;
}

#цикл по странам
foreach $country (keys %countries_hash) {
        #print "$country\n";
        my $cidr = Net::CIDR::Lite->new;
        #цикл по подсетям страны
        foreach $range (@{$countries_hash{$country}}) {
                $cidr->add($range);
        }
        my @cidr_list = $cidr->list;
        my $string = join " $country\n",@cidr_list;
        print $string,"\n";
        $cidr->clean;
        undef $cidr;
}

Код  кривоват  конечно,  но  что-то мы не так делаем. как была база по
всем странам 2═362═431 байт так столько же в ней байт и осталось.
  

С уважением,
Михаил Монашёв, SoftSearch.ru
Member of Independent Software Developers Forum (ISDEF)
mailto:postmaster@xxxxxxxxxxxxx
ICQ# 166233339
http://softsearch.ru/
Без бэкапа по жизни.



 




Copyright © Lexa Software, 1996-2009.