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
