Resolvendo problemas de travamento do thunderbird (em definitivo!)

Se você é que nem eu que recebe centenas de milhares de emails todos os dias, aliado a uma quantidade generosa de filtros pra organizar tudo, passa ou com cerveja já passou por situações de travamentos, aos quais as vezes são constantes.

Em minha maquina de trabalho (core I5 com 4Gb RAM) chegou a um ponto que o thunderbird passava 60% ou mais do dia travado, sendo que as vezes eu ra obrigado a apelar para o webmail 😛

Bom, graças ao meu grande colega totoro, esses problemas “se acabaram-se”, o programa (gratuito) thunderfix resolve esse problema na hora! E o bom é que não precisa ficar rodando ele sempre, faz mais de um mes que rodei e até agora nada de travar! =D

O funcionamento dele consiste basicamente em procurar todos os arquivos .msf do profile escolhido e apagar.

Link para download:

http://www.superdownloads.com.br/download/93/thunderfix/

———————————————-
Posted Listening: “El Dorado – Iron Maiden”

Function para retornar todos os IPs de um range

Esses tempos tive a necessidade de obter uma lista de todos os ips contidos em um range.

Se fossem somente ranges /24 seria muito fácil, porém para o sistema que eu estava desenvolvendo havia necessidade de escalabilidade, podendo ser inserido qualquer range como /16 /30 /28, etc.

Depois de procurar muito no oráculo google achei algo que se aproximava do que eu precisava, a classe net/ipv4 do PEAR, eu digo que se aproximava porque ela retorna o primeiro e o último IP de qualquer range, mas não a lista completa.

Com a classe ipv4 em mãos, resolví escrever a function abaixo que me retorna a lista completa:

function calculateIpRange($cidr) {
        $cidr = trim($cidr);
        if(!preg_match("/[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}/[0-9]{1,2}/", $cidr)){
                return Array(false, 'O IP deve estar no formato XXX.XXX.XXX.XXX/XX --> Exemplo 192.168.0.50/28');
        }
        if(!@include_once 'Net/IPv4.php')
        {
                return Array(false, 'Classe Net_IPv4 não está instalada --> http://pear.php.net/package/Net_IPv4/');
        }

        if(!is_callable('Net_IPv4', 'parseAddress'))
        {
                return Array(false, 'Metodo Net_IPv4::parseAddress inexistente');
        }
        $ip_calc = Net_IPv4::parseAddress($cidr);
        if($ip_calc->message)
        {
                return Array(False, $ip_calc->message);
        }

        $s = sprintf("%u",ip2long($ip_calc->network));
        $e = sprintf("%u",ip2long($ip_calc->broadcast));
        for($i=$s;$i<=$e;$i++){
                $r[] = long2ip($i);
        }
        return Array(
                true,
                'info' => Array(
                        'total' => sizeof($r),
                        'source'        => $cidr,
                        'network' => $ip_calc->network,
                        'broadcast' => $ip_calc->broadcast,
                        'netmask'       => $ip_calc->netmask
                ),
                'data' => $r
        );
}

NOTA: Este método necessita da classe net/ipv4 do pear instalada no servidor, o que pode ser realizado com o comando abaixo:

pear install Net_IPv4-1.3.4

Na dúvida, consulte seu provedor para instalação da mesma no servidor 😉

———————————————-
Posted Listening: “Starblind – Iron Maiden”