[SP-pm] rodar coisas periodicas em perl
ricardostock at bol.com.br
ricardostock at bol.com.br
Tue Aug 27 07:48:00 PDT 2013
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
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
-------------- Pr�xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20130827/6be72fd8/attachment-0001.html>
More information about the SaoPaulo-pm
mailing list