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
