[SP-pm] rodar coisas periodicas em perl

Marcio Ferreira marciodesouzaferreira at gmail.com
Tue Aug 27 11:18:01 PDT 2013


25


Em 27 de agosto de 2013 12:23, Lucas Moraes
<lucastiagodemoraes at gmail.com>escreveu:

> Responder nessa lista é dar soco em ponta de faca.
> Andre respeito sua opinião, mas o "foda-se" fica pra você :p
>
>
>
>
>
>
> Em 27 de agosto de 2013 11:48, <ricardostock at bol.com.br> escreveu:
>
>   Galera, eu vejo assim.
>>
>> Se trocar 6 por meia dúzia esta certo ? –> errado, é mostrar ao cliente
>> que esta fazendo algo quando na verdade não esta.
>>
>> Mexer no que esta funcionando esta errado ? –> errado, se fosse assim não
>> passaríamos horas otimizando, buscando novas formas de melhorar nosso
>> serviço e mostrar ao cliente que realmente estamos trabalhando.
>>
>> Quando comecei a aprender Perl, algo que nunca esqueci até hoje na capa
>> do livro do Larry Wall foi “Existe mais de uma maneira de se fazer”;
>>
>> Tiago, concordo com você, se esta tosco não esta gostando mude, otimize,
>> refaça, eu sigo algumas regras em meus códigos, e duas delas são:
>>
>> -> Tem que estar funcionando...    Mas tem que estar funcionando ao meu
>> agrado e de forma correta.
>>
>>
>> -> Se posso melhorar.... porque não tentar...
>>
>> Para mim todas as opniões são importantes.... mas nem todas são
>> validas....
>>
>>
>>  *From:* Tiago Peczenyj <tiago.peczenyj at gmail.com>
>> *Sent:* Tuesday, August 27, 2013 11:30 AM
>> *To:* saopaulo-pm at mail.pm.org
>> *Subject:* Re: [SP-pm] rodar coisas periodicas em perl
>>
>>  calma galera tb não é pra tanto
>>
>> eu tava achando essa porrada de if (dois) dentro do meu while algo tosco
>>
>>
>>
>>
>> 2013/8/27 Andre Carneiro <andregarciacarneiro at gmail.com>
>>
>>>  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
>>>
>>> =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
>>
>>
>
> =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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20130827/b6d34e58/attachment-0001.html>


More information about the SaoPaulo-pm mailing list