[SP-pm] rodar coisas periodicas em perl

Lucas Moraes lucastiagodemoraes at gmail.com
Tue Aug 27 08:23:33 PDT 2013


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 em 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 em gmail.com>
> *Sent:* Tuesday, August 27, 2013 11:30 AM
> *To:* saopaulo-pm em 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 em 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 em gmail.com>
>>
>>> Na minha opinião, vc pode ter a sua opinião ;)
>>>
>>>
>>> 2013/8/26 Lucas Moraes <lucastiagodemoraes em 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 em 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 em 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 em gmail.com> escreveu:
>>>>>>
>>>>>>  não entendi
>>>>>>>
>>>>>>>
>>>>>>> 2013/8/26 Daniel de Oliveira Mantovani <
>>>>>>> daniel.oliveira.mantovani em gmail.com>
>>>>>>>
>>>>>>>> Para de perder tempo com coisas banais que não vão te agregar nada.
>>>>>>>>
>>>>>>>> 2013/8/26 Tiago Peczenyj <tiago.peczenyj em gmail.com>:
>>>>>>>>  > e?
>>>>>>>> >
>>>>>>>> >
>>>>>>>> > 2013/8/26 Daniel de Oliveira Mantovani <
>>>>>>>> daniel.oliveira.mantovani em gmail.com>
>>>>>>>> >>
>>>>>>>> >> Tiago, "Easy things should be easy, and hard things should be
>>>>>>>> >> possible" - Larry Wall
>>>>>>>> >>
>>>>>>>> >> 2013/8/26 Tiago Peczenyj <tiago.peczenyj em gmail.com>:
>>>>>>>> >> > Depois vcs me pagam uma cerveja e fica tudo sussa.
>>>>>>>> >> >
>>>>>>>> >> >
>>>>>>>> >> > 2013/8/26 Lindolfo Lorn Rodrigues <lorn em lornlab.org>
>>>>>>>> >> >>
>>>>>>>> >> >> Antes que eu me esqueça: desculpe-me se insultei.
>>>>>>>> >> >>
>>>>>>>> >> >>
>>>>>>>> >> >> 2013/8/26 Lindolfo Lorn Rodrigues <lorn em lornlab.org>
>>>>>>>> >> >>>
>>>>>>>> >> >>> Não quis insultar, apenas dar outra visão para o problema :)
>>>>>>>> >> >>>
>>>>>>>> >> >>>
>>>>>>>> >> >>>
>>>>>>>> >> >>> 2013/8/26 Tiago Peczenyj <tiago.peczenyj em 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 em 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 em gmail.com>
>>>>>>>> >> >>>>>>
>>>>>>>> >> >>>>>> Explain creaktive
>>>>>>>> >> >>>>>>
>>>>>>>> >> >>>>>>
>>>>>>>> >> >>>>>> 2013/8/26 Stanislaw Pusep <creaktive em gmail.com>
>>>>>>>> >> >>>>>>>
>>>>>>>> >> >>>>>>> Overengineering detected!
>>>>>>>> >> >>>>>>>
>>>>>>>> >> >>>>>>>
>>>>>>>> >> >>>>>>> 2013/8/26 Lindolfo Lorn Rodrigues <lorn em 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 em 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 em 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 em 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 em 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 em 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 em 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 em 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 em 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 em 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 em 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 em 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 em 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 em 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 em 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 em 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 em 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 em 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 em 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 em 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 em pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
>
-------------- Pr�xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20130827/007ebbbc/attachment-0001.html>


More information about the SaoPaulo-pm mailing list