[SP-pm] rodar coisas periodicas em perl

Andre Carneiro andregarciacarneiro at gmail.com
Tue Aug 27 07:28:32 PDT 2013


Se o Tiago estivesse com pressa, ele diria! E duvido que faria isso da
maneira como vocês fizeram.

Achei chato mesmo e foda-se! Essa é a minha opinião!


Proost!



2013/8/27 Blabos de Blebe <blabos at gmail.com>

> Na minha opinião, vc pode ter a sua opinião ;)
>
>
> 2013/8/26 Lucas Moraes <lucastiagodemoraes at gmail.com>
>
>> Mas ficar procurando soluções que não vai mudar muito o projeto é trocar
>> 6 por meia duzia. Conhecimento nunca é demais mesmo, isso é fato! Mas tem
>> quantas coisas novas para aprender em milhões de outros assuntos, o que
>> adianta você aprender várias formas de fazer se o final vai ser quase o
>> mesmo ou o mesmo. Tempo custa dinheiro, não é porque você tem tempo para
>> achar uma solução melhor que você é obrigado a fazer, aconselho a pessoa
>> descansar a mente ou procurar algo novo para fazer. Respeito sua opinião,
>> mas vou defendo a minha opinião. Eu postei minha opinião porque o código do
>> Tiago não esta feio, o módulo AE apesar de eu nunca ter usado, olhei no
>> metacpan esta com 49++ até o momento. Lembrando que é só uma opinião minha,
>> não estou colocando o revolver na cabeça de ninguém. Falou.
>>
>>
>> Em 26 de agosto de 2013 16:41, Andre Carneiro <
>> andregarciacarneiro at gmail.com> escreveu:
>>
>> Que feio!
>>>
>>> Se houver prazo para pesquisa de novas soluções, eu não vejo porque
>>> usar! Além do mais eu aprendi que conhecimento nunca é demais. Então eu
>>> acho que essa nova visão agrega sim, e também qualquer visão diferente
>>> sobre a solução do problema. Obrigado Lorn!
>>>
>>> Aprendi também, que desenvolvedor tem que resolver o problema da melhor
>>> maneira possível! Que desempenho nunca é demais, e olhar para coisas novas
>>> deveria ser um incentivo para fazer as coisas corretamente, e não uma
>>> desculpa esfarrapada para resolver as coisas de qualquer maneira, ou
>>> desprezar a opinião dos outros de maneira tão grosseira.
>>>
>>> Proost!
>>>
>>>
>>>
>>>
>>>
>>>
>>> 2013/8/26 Lucas Moraes <lucastiagodemoraes at gmail.com>
>>>
>>>> Tiago se seu código esta funcionando deixa rodando. Melhor código é
>>>> aquele que atende as necessidades do cliente. Pare de procurar problemas
>>>> onde não existe :)
>>>>
>>>>
>>>> Em 26 de agosto de 2013 11:33, Tiago Peczenyj <tiago.peczenyj at gmail.com
>>>> > escreveu:
>>>>
>>>> não entendi
>>>>>
>>>>>
>>>>> 2013/8/26 Daniel de Oliveira Mantovani <
>>>>> daniel.oliveira.mantovani at gmail.com>
>>>>>
>>>>>> Para de perder tempo com coisas banais que não vão te agregar nada.
>>>>>>
>>>>>> 2013/8/26 Tiago Peczenyj <tiago.peczenyj at gmail.com>:
>>>>>> > e?
>>>>>> >
>>>>>> >
>>>>>> > 2013/8/26 Daniel de Oliveira Mantovani <
>>>>>> daniel.oliveira.mantovani at gmail.com>
>>>>>> >>
>>>>>> >> Tiago, "Easy things should be easy, and hard things should be
>>>>>> >> possible" - Larry Wall
>>>>>> >>
>>>>>> >> 2013/8/26 Tiago Peczenyj <tiago.peczenyj at gmail.com>:
>>>>>> >> > Depois vcs me pagam uma cerveja e fica tudo sussa.
>>>>>> >> >
>>>>>> >> >
>>>>>> >> > 2013/8/26 Lindolfo Lorn Rodrigues <lorn at lornlab.org>
>>>>>> >> >>
>>>>>> >> >> Antes que eu me esqueça: desculpe-me se insultei.
>>>>>> >> >>
>>>>>> >> >>
>>>>>> >> >> 2013/8/26 Lindolfo Lorn Rodrigues <lorn at lornlab.org>
>>>>>> >> >>>
>>>>>> >> >>> Não quis insultar, apenas dar outra visão para o problema :)
>>>>>> >> >>>
>>>>>> >> >>>
>>>>>> >> >>>
>>>>>> >> >>> 2013/8/26 Tiago Peczenyj <tiago.peczenyj at gmail.com>
>>>>>> >> >>>>
>>>>>> >> >>>> foi mal, agora eu tenho algo como
>>>>>> >> >>>>
>>>>>> >> >>>> while(1){
>>>>>> >> >>>>    # calcula
>>>>>> >> >>>>    # if passou um minuto envia pro zabbix
>>>>>> >> >>>>    # if passou um dia reinicia o contador
>>>>>> >> >>>>    sleep(1);
>>>>>> >> >>>> }
>>>>>> >> >>>>
>>>>>> >> >>>> qualquer sugestão é bem vinda. de repente o zabbix pode
>>>>>> continuar com
>>>>>> >> >>>> a
>>>>>> >> >>>> monitoria e posso usar o StatsD para essas coisas novas,
>>>>>> ainda mais
>>>>>> >> >>>> se for
>>>>>> >> >>>> menos burocratico.
>>>>>> >> >>>>
>>>>>> >> >>>>
>>>>>> >> >>>> 2013/8/26 Stanislaw Pusep <creaktive at gmail.com>
>>>>>> >> >>>>>
>>>>>> >> >>>>> Seja qual for o seu objetivo, o código que você postou já
>>>>>> está feito
>>>>>> >> >>>>> e
>>>>>> >> >>>>> funcionando bem, aparenemente.
>>>>>> >> >>>>> "Eu mudaria boa parte do que você fez" e "Eu usaria o Statsd
>>>>>> para
>>>>>> >> >>>>> acumular o valor e exportaria via graphite", seguido de "Eu
>>>>>> não
>>>>>> >> >>>>> entendi bem
>>>>>> >> >>>>> o motivo de ficar rodando a cada segundo então vou chutar" é
>>>>>> um
>>>>>> >> >>>>> insulto a
>>>>>> >> >>>>> sua inteligência, IMHO
>>>>>> >> >>>>>
>>>>>> >> >>>>>
>>>>>> >> >>>>> 2013/8/26 Tiago Peczenyj <tiago.peczenyj at gmail.com>
>>>>>> >> >>>>>>
>>>>>> >> >>>>>> Explain creaktive
>>>>>> >> >>>>>>
>>>>>> >> >>>>>>
>>>>>> >> >>>>>> 2013/8/26 Stanislaw Pusep <creaktive at gmail.com>
>>>>>> >> >>>>>>>
>>>>>> >> >>>>>>> Overengineering detected!
>>>>>> >> >>>>>>>
>>>>>> >> >>>>>>>
>>>>>> >> >>>>>>> 2013/8/26 Lindolfo Lorn Rodrigues <lorn at lornlab.org>
>>>>>> >> >>>>>>>>
>>>>>> >> >>>>>>>> Eu mudaria boa parte do que você fez.
>>>>>> >> >>>>>>>>
>>>>>> >> >>>>>>>> Não sei qual problema que você está tentando resolver com
>>>>>> isso,
>>>>>> >> >>>>>>>> por
>>>>>> >> >>>>>>>> isso tudo
>>>>>> >> >>>>>>>> isso aqui será uma mega hipotese, se puder dizer qual o
>>>>>> problema
>>>>>> >> >>>>>>>> está tentando
>>>>>> >> >>>>>>>> resolver, seria legal :)
>>>>>> >> >>>>>>>>
>>>>>> >> >>>>>>>> Eu usaria o Statsd para acumular o valor e exportaria via
>>>>>> >> >>>>>>>> graphite.
>>>>>> >> >>>>>>>>
>>>>>> >> >>>>>>>> Eu não entendi bem o motivo de ficar rodando a cada
>>>>>> segundo então
>>>>>> >> >>>>>>>> vou chutar:
>>>>>> >> >>>>>>>>
>>>>>> >> >>>>>>>> Você que capturar ações de usuário/sistema em algum lugar?
>>>>>> >> >>>>>>>>
>>>>>> >> >>>>>>>> Caso sim, você poderia colocar esse codigo logo depois a
>>>>>> ação do
>>>>>> >> >>>>>>>> usuário/sistema:
>>>>>> >> >>>>>>>>
>>>>>> >> >>>>>>>> my $statsd = Etsy::StatsD->new
>>>>>> >> >>>>>>>> my $bucket = "pacman.hit_number"
>>>>>> >> >>>>>>>> $statsd->increment($bucket);
>>>>>> >> >>>>>>>>
>>>>>> >> >>>>>>>> O stasd usa UDP, não vai alterar em nada perceptivo na
>>>>>> >> >>>>>>>> perfomance,
>>>>>> >> >>>>>>>> do seu sistema.
>>>>>> >> >>>>>>>>
>>>>>> >> >>>>>>>> Mandando o contador acima para o statsd ele irá acumular
>>>>>> e mandar
>>>>>> >> >>>>>>>> para o graphite,
>>>>>> >> >>>>>>>> no graphite com o dado cru você pode criar várias
>>>>>> operações de
>>>>>> >> >>>>>>>> estatistica
>>>>>> >> >>>>>>>> ( mediana, media, percentile..etc ) e gerar graficos.
>>>>>> >> >>>>>>>>
>>>>>> >> >>>>>>>>
>>>>>> >> >>>>>>>>
>>>>>> >> >>>>>>>>
>>>>>> http://graphite.readthedocs.org/en/0.9.10/functions.html#module-graphite.render.functions
>>>>>> >> >>>>>>>>
>>>>>> >> >>>>>>>> O Statsd suporta vários backend o mais conhecido/usado
>>>>>> deles é o
>>>>>> >> >>>>>>>> Graphite:
>>>>>> >> >>>>>>>> http://graphite.wikidot.com/screen-shots
>>>>>> >> >>>>>>>>
>>>>>> >> >>>>>>>> A Etsy tem um post explicando melhor a "metodologia"
>>>>>> deles de
>>>>>> >> >>>>>>>> medir
>>>>>> >> >>>>>>>> tudo:
>>>>>> >> >>>>>>>>
>>>>>> >> >>>>>>>>
>>>>>> >> >>>>>>>>
>>>>>> >> >>>>>>>>
>>>>>> http://codeascraft.com/2011/02/15/measure-anything-measure-everything/
>>>>>> >> >>>>>>>> https://github.com/etsy/statsd
>>>>>> >> >>>>>>>>
>>>>>> >> >>>>>>>> PS: O Statsd teve origem no Flickr, e a primeira versão
>>>>>> era em
>>>>>> >> >>>>>>>> Perl
>>>>>> >> >>>>>>>> recentemente eles
>>>>>> >> >>>>>>>> liberaram o código fonte:
>>>>>> >> >>>>>>>>
>>>>>> >> >>>>>>>> https://github.com/iamcal/Flickr-StatsD
>>>>>> >> >>>>>>>>
>>>>>> >> >>>>>>>>
>>>>>> >> >>>>>>>>
>>>>>> >> >>>>>>>> 2013/8/26 Stanislaw Pusep <creaktive at gmail.com>
>>>>>> >> >>>>>>>>>
>>>>>> >> >>>>>>>>> Use AE::time() no lugar do localtime
>>>>>> >> >>>>>>>>>
>>>>>> >> >>>>>>>>> понедельник, 26 августа 2013 г. пользователь Tiago
>>>>>> Peczenyj
>>>>>> >> >>>>>>>>> писал:
>>>>>> >> >>>>>>>>>
>>>>>> >> >>>>>>>>>> Ola
>>>>>> >> >>>>>>>>>>
>>>>>> >> >>>>>>>>>> Eu tenho o seguinte caso
>>>>>> >> >>>>>>>>>>
>>>>>> >> >>>>>>>>>> preciso rodar um certo método a cada segundo, que por
>>>>>> sua vez
>>>>>> >> >>>>>>>>>> acumula um valor em algum atributo interno do objeto (
>>>>>> total +=
>>>>>> >> >>>>>>>>>> por exemplo
>>>>>> >> >>>>>>>>>> ).
>>>>>> >> >>>>>>>>>>
>>>>>> >> >>>>>>>>>> a cada minuto quero enviar o valor de total para algum
>>>>>> lugar
>>>>>> >> >>>>>>>>>> (ex
>>>>>> >> >>>>>>>>>> Zabbix).
>>>>>> >> >>>>>>>>>>
>>>>>> >> >>>>>>>>>> a meia noite eu quero limpar o total para 0.
>>>>>> >> >>>>>>>>>>
>>>>>> >> >>>>>>>>>> Eu cheguei a algo assim:
>>>>>> >> >>>>>>>>>> use AnyEvent;
>>>>>> >> >>>>>>>>>>
>>>>>> >> >>>>>>>>>> sub loop {
>>>>>> >> >>>>>>>>>> my $obj   = Foo->new;
>>>>>> >> >>>>>>>>>> my $cv    = AE::cv;
>>>>>> >> >>>>>>>>>>
>>>>>> >> >>>>>>>>>> my $seconds_in_a_day = 60 * 60 * 24;
>>>>>> >> >>>>>>>>>> my $seconds_to_midnight =  $seconds_in_a_day -
>>>>>> >> >>>>>>>>>> seconds_from_midnight();
>>>>>> >> >>>>>>>>>>
>>>>>> >> >>>>>>>>>> my $loop = AE::timer  0, 1,  sub { $obj->run   };
>>>>>> >> >>>>>>>>>>
>>>>>> >> >>>>>>>>>> my $send = AE::timer  60, 60,  sub { $obj->send  };
>>>>>> >> >>>>>>>>>>
>>>>>> >> >>>>>>>>>> my $clear= AE::timer  $seconds_to_midnight,
>>>>>> $seconds_in_a_day,
>>>>>> >> >>>>>>>>>> sub { $obj->clear };
>>>>>> >> >>>>>>>>>> $cv->recv;
>>>>>> >> >>>>>>>>>> }
>>>>>> >> >>>>>>>>>>
>>>>>> >> >>>>>>>>>> a sub seconds_from_midnight usa localtime pra fazer uma
>>>>>> conta
>>>>>> >> >>>>>>>>>> marota.
>>>>>> >> >>>>>>>>>>
>>>>>> >> >>>>>>>>>> A assinatura do AE::timer eh
>>>>>> >> >>>>>>>>>>
>>>>>> >> >>>>>>>>>> AE::timer $delay, $interval, $callback;
>>>>>> >> >>>>>>>>>>
>>>>>> >> >>>>>>>>>> No primeiro timer eu tenho o meu main loop, chamando o
>>>>>> metodo
>>>>>> >> >>>>>>>>>> run.
>>>>>> >> >>>>>>>>>> No segundo eu tenho o metodo que envia os dados a cada
>>>>>> 60
>>>>>> >> >>>>>>>>>> segundos
>>>>>> >> >>>>>>>>>> No terceiro eu calculo quantos segundos faltam para a
>>>>>> meia
>>>>>> >> >>>>>>>>>> noite e
>>>>>> >> >>>>>>>>>> mando repetir a cada 24 horas.
>>>>>> >> >>>>>>>>>>
>>>>>> >> >>>>>>>>>> hoje eu tenho um loop com um sleep 1 e varios ifs.
>>>>>> quero que
>>>>>> >> >>>>>>>>>> fique
>>>>>> >> >>>>>>>>>> mais legivel e nao utilizo anyEvent em nenhum outro
>>>>>> lugar. Nao
>>>>>> >> >>>>>>>>>> precisa ser
>>>>>> >> >>>>>>>>>> EXATO, portanto um atraso de alguns segundos pode
>>>>>> acontecer.
>>>>>> >> >>>>>>>>>>
>>>>>> >> >>>>>>>>>> Parece bom, mas eu tenho algumas duvidas.
>>>>>> >> >>>>>>>>>>
>>>>>> >> >>>>>>>>>> 1) esta claro o suficiente?
>>>>>> >> >>>>>>>>>> 2) o overhead do AnyEvent parece ser o mesmo do sleep
>>>>>> (1)
>>>>>> >> >>>>>>>>>> durante
>>>>>> >> >>>>>>>>>> o runtime (ignorando quanto tempo demora pra iniciar ou
>>>>>> não),
>>>>>> >> >>>>>>>>>> certo?
>>>>>> >> >>>>>>>>>> 3) para rodar algo "a meia noite" me parece um tanto
>>>>>> confuso
>>>>>> >> >>>>>>>>>> ainda. não encontrei nenhum helper q me ajude (o
>>>>>> AnyEvent::Cron
>>>>>> >> >>>>>>>>>> da pau pra
>>>>>> >> >>>>>>>>>> mim). sera q nao eh melhor "re-setar" o time watcher
>>>>>> para a
>>>>>> >> >>>>>>>>>> proxima meia
>>>>>> >> >>>>>>>>>> noite?
>>>>>> >> >>>>>>>>>> 4) alias tem algo melhor do que ficar brincando com
>>>>>> localtime()
>>>>>> >> >>>>>>>>>> pra pegar quantos segundos faltam pra proxima meia
>>>>>> noite? algo
>>>>>> >> >>>>>>>>>> usando
>>>>>> >> >>>>>>>>>> DateTime
>>>>>> >> >>>>>>>>>>
>>>>>> >> >>>>>>>>>> por fim
>>>>>> >> >>>>>>>>>>
>>>>>> >> >>>>>>>>>> 5) tem algum problema ao usar AE::timer q eu não esteja
>>>>>> vendo?
>>>>>> >> >>>>>>>>>> Fora os problemas interentes como se eu usar IO
>>>>>> Bloqueante eu
>>>>>> >> >>>>>>>>>> não vou ter os
>>>>>> >> >>>>>>>>>> timers "exatos".
>>>>>> >> >>>>>>>>>>
>>>>>> >> >>>>>>>>>> Obrigado
>>>>>> >> >>>>>>>>>>
>>>>>> >> >>>>>>>>>> Tiago
>>>>>> >> >>>>>>>>>>
>>>>>> >> >>>>>>>>>> --
>>>>>> >> >>>>>>>>>> Tiago B. Peczenyj
>>>>>> >> >>>>>>>>>> Linux User #405772
>>>>>> >> >>>>>>>>>>
>>>>>> >> >>>>>>>>>> http://about.me/peczenyj
>>>>>> >> >>>>>>>>>
>>>>>> >> >>>>>>>>>
>>>>>> >> >>>>>>>>> =begin disclaimer
>>>>>> >> >>>>>>>>>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>>>> >> >>>>>>>>>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>>>>>> >> >>>>>>>>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>>>>> >> >>>>>>>>> =end disclaimer
>>>>>> >> >>>>>>>>>
>>>>>> >> >>>>>>>>
>>>>>> >> >>>>>>>>
>>>>>> >> >>>>>>>> =begin disclaimer
>>>>>> >> >>>>>>>>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>>>> >> >>>>>>>>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>>>>>> >> >>>>>>>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>>>>> >> >>>>>>>> =end disclaimer
>>>>>> >> >>>>>>>>
>>>>>> >> >>>>>>>
>>>>>> >> >>>>>>>
>>>>>> >> >>>>>>> =begin disclaimer
>>>>>> >> >>>>>>>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>>>> >> >>>>>>>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>>>>>> >> >>>>>>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>>>>> >> >>>>>>> =end disclaimer
>>>>>> >> >>>>>>>
>>>>>> >> >>>>>>
>>>>>> >> >>>>>>
>>>>>> >> >>>>>>
>>>>>> >> >>>>>> --
>>>>>> >> >>>>>> Tiago B. Peczenyj
>>>>>> >> >>>>>> Linux User #405772
>>>>>> >> >>>>>>
>>>>>> >> >>>>>> http://about.me/peczenyj
>>>>>> >> >>>>>>
>>>>>> >> >>>>>> =begin disclaimer
>>>>>> >> >>>>>>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>>>> >> >>>>>>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>>>>>> >> >>>>>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>>>>> >> >>>>>> =end disclaimer
>>>>>> >> >>>>>>
>>>>>> >> >>>>>
>>>>>> >> >>>>>
>>>>>> >> >>>>> =begin disclaimer
>>>>>> >> >>>>>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>>>> >> >>>>>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>>>>>> >> >>>>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>>>>> >> >>>>> =end disclaimer
>>>>>> >> >>>>>
>>>>>> >> >>>>
>>>>>> >> >>>>
>>>>>> >> >>>>
>>>>>> >> >>>> --
>>>>>> >> >>>> Tiago B. Peczenyj
>>>>>> >> >>>> Linux User #405772
>>>>>> >> >>>>
>>>>>> >> >>>> http://about.me/peczenyj
>>>>>> >> >>>>
>>>>>> >> >>>> =begin disclaimer
>>>>>> >> >>>>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>>>> >> >>>>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>>>>>> >> >>>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>>>>> >> >>>> =end disclaimer
>>>>>> >> >>>>
>>>>>> >> >>>
>>>>>> >> >>
>>>>>> >> >>
>>>>>> >> >> =begin disclaimer
>>>>>> >> >>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>>>> >> >>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>>>>>> >> >>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>>>>> >> >> =end disclaimer
>>>>>> >> >>
>>>>>> >> >
>>>>>> >> >
>>>>>> >> >
>>>>>> >> > --
>>>>>> >> > Tiago B. Peczenyj
>>>>>> >> > Linux User #405772
>>>>>> >> >
>>>>>> >> > http://about.me/peczenyj
>>>>>> >> >
>>>>>> >> > =begin disclaimer
>>>>>> >> >    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>>>> >> >  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>>>>>> >> >  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>>>>> >> > =end disclaimer
>>>>>> >> >
>>>>>> >>
>>>>>> >>
>>>>>> >>
>>>>>> >> --
>>>>>> >>
>>>>>> >> -dom
>>>>>> >>
>>>>>> >> --
>>>>>> >>
>>>>>> >> Daniel de Oliveira Mantovani
>>>>>> >> Business Analytic Specialist
>>>>>> >> Perl Evangelist /Astrophysics hobbyist.
>>>>>> >> +55 11 9 8538-9897
>>>>>> >> XOXO
>>>>>> >> =begin disclaimer
>>>>>> >>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>>>> >>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>>>>>> >>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>>>>> >> =end disclaimer
>>>>>> >
>>>>>> >
>>>>>> >
>>>>>> >
>>>>>> > --
>>>>>> > Tiago B. Peczenyj
>>>>>> > Linux User #405772
>>>>>> >
>>>>>> > http://about.me/peczenyj
>>>>>> >
>>>>>> > =begin disclaimer
>>>>>> >    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>>>> >  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>>>>>> >  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>>>>> > =end disclaimer
>>>>>> >
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>>
>>>>>> -dom
>>>>>>
>>>>>> --
>>>>>>
>>>>>> Daniel de Oliveira Mantovani
>>>>>> Business Analytic Specialist
>>>>>> Perl Evangelist /Astrophysics hobbyist.
>>>>>> +55 11 9 8538-9897
>>>>>> XOXO
>>>>>> =begin disclaimer
>>>>>>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>>>>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>>>>>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>>>>> =end disclaimer
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Tiago B. Peczenyj
>>>>> Linux User #405772
>>>>>
>>>>> http://about.me/peczenyj
>>>>>
>>>>> =begin disclaimer
>>>>>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>>>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>>>>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>>>> =end disclaimer
>>>>>
>>>>>
>>>>
>>>> =begin disclaimer
>>>>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>>>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>>> =end disclaimer
>>>>
>>>>
>>>
>>>
>>> --
>>> André Garcia Carneiro
>>> Software Engineer
>>> (11)982907780
>>>
>>> =begin disclaimer
>>>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>> =end disclaimer
>>>
>>>
>>
>> =begin disclaimer
>>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>> =end disclaimer
>>
>>
>
> =begin disclaimer
>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
>


-- 
André Garcia Carneiro
Software Engineer
(11)982907780
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20130827/3ca59f0a/attachment-0001.html>


More information about the SaoPaulo-pm mailing list