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 <[email protected]> > Na minha opinião, vc pode ter a sua opinião ;) > > > 2013/8/26 Lucas Moraes <[email protected]> > >> 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 < >> [email protected]> 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 <[email protected]> >>> >>>> 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 <[email protected] >>>> > escreveu: >>>> >>>> não entendi >>>>> >>>>> >>>>> 2013/8/26 Daniel de Oliveira Mantovani < >>>>> [email protected]> >>>>> >>>>>> Para de perder tempo com coisas banais que não vão te agregar nada. >>>>>> >>>>>> 2013/8/26 Tiago Peczenyj <[email protected]>: >>>>>> > e? >>>>>> > >>>>>> > >>>>>> > 2013/8/26 Daniel de Oliveira Mantovani < >>>>>> [email protected]> >>>>>> >> >>>>>> >> Tiago, "Easy things should be easy, and hard things should be >>>>>> >> possible" - Larry Wall >>>>>> >> >>>>>> >> 2013/8/26 Tiago Peczenyj <[email protected]>: >>>>>> >> > Depois vcs me pagam uma cerveja e fica tudo sussa. >>>>>> >> > >>>>>> >> > >>>>>> >> > 2013/8/26 Lindolfo Lorn Rodrigues <[email protected]> >>>>>> >> >> >>>>>> >> >> Antes que eu me esqueça: desculpe-me se insultei. >>>>>> >> >> >>>>>> >> >> >>>>>> >> >> 2013/8/26 Lindolfo Lorn Rodrigues <[email protected]> >>>>>> >> >>> >>>>>> >> >>> Não quis insultar, apenas dar outra visão para o problema :) >>>>>> >> >>> >>>>>> >> >>> >>>>>> >> >>> >>>>>> >> >>> 2013/8/26 Tiago Peczenyj <[email protected]> >>>>>> >> >>>> >>>>>> >> >>>> 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 <[email protected]> >>>>>> >> >>>>> >>>>>> >> >>>>> 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 <[email protected]> >>>>>> >> >>>>>> >>>>>> >> >>>>>> Explain creaktive >>>>>> >> >>>>>> >>>>>> >> >>>>>> >>>>>> >> >>>>>> 2013/8/26 Stanislaw Pusep <[email protected]> >>>>>> >> >>>>>>> >>>>>> >> >>>>>>> Overengineering detected! >>>>>> >> >>>>>>> >>>>>> >> >>>>>>> >>>>>> >> >>>>>>> 2013/8/26 Lindolfo Lorn Rodrigues <[email protected]> >>>>>> >> >>>>>>>> >>>>>> >> >>>>>>>> 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 <[email protected]> >>>>>> >> >>>>>>>>> >>>>>> >> >>>>>>>>> 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: [email protected] >>>>>> >> >>>>>>>>> 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: [email protected] >>>>>> >> >>>>>>>> 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: [email protected] >>>>>> >> >>>>>>> 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: [email protected] >>>>>> >> >>>>>> 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: [email protected] >>>>>> >> >>>>> 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: [email protected] >>>>>> >> >>>> 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: [email protected] >>>>>> >> >> 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: [email protected] >>>>>> >> > 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: [email protected] >>>>>> >> 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: [email protected] >>>>>> > 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: [email protected] >>>>>> 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: [email protected] >>>>> 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: [email protected] >>>> 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: [email protected] >>> 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: [email protected] >> 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: [email protected] > 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: [email protected] L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> =end disclaimer
