[SP-pm] rodar coisas periodicas em perl

Blabos de Blebe blabos at gmail.com
Mon Aug 26 20:03:27 PDT 2013


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
>
>
-------------- Pr�xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20130827/6f9cd75c/attachment-0001.html>


More information about the SaoPaulo-pm mailing list