[SP-pm] rodar coisas periodicas em perl

Vinícius Miasato viniciusmiasato at gmail.com
Tue Aug 27 16:17:02 PDT 2013


Opa,

agora sim eu me lembrei pq eu entrei na sp-pm =)

abs.


Em 27 de agosto de 2013 15:30, Blabos de Blebe <blabos at gmail.com> escreveu:

> Se bem que uma flame, não deixa de ser algo periódico que roda na
> comunidade Perl
>
> :)
>
>
> 2013/8/27 Marcio Ferreira <marciodesouzaferreira at gmail.com>
>
>> 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
>>>
>>>
>>
>> =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/cc3c08c9/attachment-0001.html>


More information about the SaoPaulo-pm mailing list