<div dir="ltr">e?</div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/8/26 Daniel de Oliveira Mantovani <span dir="ltr"><<a href="mailto:daniel.oliveira.mantovani@gmail.com" target="_blank">daniel.oliveira.mantovani@gmail.com</a>></span><br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Tiago, "Easy things should be easy, and hard things should be<br>
possible" - Larry Wall<br>
<br>
2013/8/26 Tiago Peczenyj <<a href="mailto:tiago.peczenyj@gmail.com">tiago.peczenyj@gmail.com</a>>:<br>
<div><div class="h5">> Depois vcs me pagam uma cerveja e fica tudo sussa.<br>
><br>
><br>
> 2013/8/26 Lindolfo Lorn Rodrigues <<a href="mailto:lorn@lornlab.org">lorn@lornlab.org</a>><br>
>><br>
>> Antes que eu me esqueça: desculpe-me se insultei.<br>
>><br>
>><br>
>> 2013/8/26 Lindolfo Lorn Rodrigues <<a href="mailto:lorn@lornlab.org">lorn@lornlab.org</a>><br>
>>><br>
>>> Não quis insultar, apenas dar outra visão para o problema :)<br>
>>><br>
>>><br>
>>><br>
>>> 2013/8/26 Tiago Peczenyj <<a href="mailto:tiago.peczenyj@gmail.com">tiago.peczenyj@gmail.com</a>><br>
>>>><br>
>>>> foi mal, agora eu tenho algo como<br>
>>>><br>
>>>> while(1){<br>
>>>>    # calcula<br>
>>>>    # if passou um minuto envia pro zabbix<br>
>>>>    # if passou um dia reinicia o contador<br>
>>>>    sleep(1);<br>
>>>> }<br>
>>>><br>
>>>> qualquer sugestão é bem vinda. de repente o zabbix pode continuar com a<br>
>>>> monitoria e posso usar o StatsD para essas coisas novas, ainda mais se for<br>
>>>> menos burocratico.<br>
>>>><br>
>>>><br>
>>>> 2013/8/26 Stanislaw Pusep <<a href="mailto:creaktive@gmail.com">creaktive@gmail.com</a>><br>
>>>>><br>
>>>>> Seja qual for o seu objetivo, o código que você postou já está feito e<br>
>>>>> funcionando bem, aparenemente.<br>
>>>>> "Eu mudaria boa parte do que você fez" e "Eu usaria o Statsd para<br>
>>>>> acumular o valor e exportaria via graphite", seguido de "Eu não entendi bem<br>
>>>>> o motivo de ficar rodando a cada segundo então vou chutar" é um insulto a<br>
>>>>> sua inteligência, IMHO<br>
>>>>><br>
>>>>><br>
>>>>> 2013/8/26 Tiago Peczenyj <<a href="mailto:tiago.peczenyj@gmail.com">tiago.peczenyj@gmail.com</a>><br>
>>>>>><br>
>>>>>> Explain creaktive<br>
>>>>>><br>
>>>>>><br>
>>>>>> 2013/8/26 Stanislaw Pusep <<a href="mailto:creaktive@gmail.com">creaktive@gmail.com</a>><br>
>>>>>>><br>
>>>>>>> Overengineering detected!<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>> 2013/8/26 Lindolfo Lorn Rodrigues <<a href="mailto:lorn@lornlab.org">lorn@lornlab.org</a>><br>
>>>>>>>><br>
>>>>>>>> Eu mudaria boa parte do que você fez.<br>
>>>>>>>><br>
>>>>>>>> Não sei qual problema que você está tentando resolver com isso, por<br>
>>>>>>>> isso tudo<br>
>>>>>>>> isso aqui será uma mega hipotese, se puder dizer qual o problema<br>
>>>>>>>> está tentando<br>
>>>>>>>> resolver, seria legal :)<br>
>>>>>>>><br>
>>>>>>>> Eu usaria o Statsd para acumular o valor e exportaria via graphite.<br>
>>>>>>>><br>
>>>>>>>> Eu não entendi bem o motivo de ficar rodando a cada segundo então<br>
>>>>>>>> vou chutar:<br>
>>>>>>>><br>
>>>>>>>> Você que capturar ações de usuário/sistema em algum lugar?<br>
>>>>>>>><br>
>>>>>>>> Caso sim, você poderia colocar esse codigo logo depois a ação do<br>
>>>>>>>> usuário/sistema:<br>
>>>>>>>><br>
>>>>>>>> my $statsd = Etsy::StatsD->new<br>
>>>>>>>> my $bucket = "pacman.hit_number"<br>
>>>>>>>> $statsd->increment($bucket);<br>
>>>>>>>><br>
>>>>>>>> O stasd usa UDP, não vai alterar em nada perceptivo na perfomance,<br>
>>>>>>>> do seu sistema.<br>
>>>>>>>><br>
>>>>>>>> Mandando o contador acima para o statsd ele irá acumular e mandar<br>
>>>>>>>> para o graphite,<br>
>>>>>>>> no graphite com o dado cru você pode criar várias operações de<br>
>>>>>>>> estatistica<br>
>>>>>>>> ( mediana, media, percentile..etc ) e gerar graficos.<br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>> <a href="http://graphite.readthedocs.org/en/0.9.10/functions.html#module-graphite.render.functions" target="_blank">http://graphite.readthedocs.org/en/0.9.10/functions.html#module-graphite.render.functions</a><br>


>>>>>>>><br>
>>>>>>>> O Statsd suporta vários backend o mais conhecido/usado deles é o<br>
>>>>>>>> Graphite:<br>
>>>>>>>> <a href="http://graphite.wikidot.com/screen-shots" target="_blank">http://graphite.wikidot.com/screen-shots</a><br>
>>>>>>>><br>
>>>>>>>> A Etsy tem um post explicando melhor a "metodologia" deles de medir<br>
>>>>>>>> tudo:<br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>> <a href="http://codeascraft.com/2011/02/15/measure-anything-measure-everything/" target="_blank">http://codeascraft.com/2011/02/15/measure-anything-measure-everything/</a><br>
>>>>>>>> <a href="https://github.com/etsy/statsd" target="_blank">https://github.com/etsy/statsd</a><br>
>>>>>>>><br>
>>>>>>>> PS: O Statsd teve origem no Flickr, e a primeira versão era em Perl<br>
>>>>>>>> recentemente eles<br>
>>>>>>>> liberaram o código fonte:<br>
>>>>>>>><br>
>>>>>>>> <a href="https://github.com/iamcal/Flickr-StatsD" target="_blank">https://github.com/iamcal/Flickr-StatsD</a><br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>> 2013/8/26 Stanislaw Pusep <<a href="mailto:creaktive@gmail.com">creaktive@gmail.com</a>><br>
>>>>>>>>><br>
>>>>>>>>> Use AE::time() no lugar do localtime<br>
>>>>>>>>><br>
>>>>>>>>> понедельник, 26 августа 2013 г. пользователь Tiago Peczenyj писал:<br>
>>>>>>>>><br>
>>>>>>>>>> Ola<br>
>>>>>>>>>><br>
>>>>>>>>>> Eu tenho o seguinte caso<br>
>>>>>>>>>><br>
>>>>>>>>>> preciso rodar um certo método a cada segundo, que por sua vez<br>
>>>>>>>>>> acumula um valor em algum atributo interno do objeto ( total += por exemplo<br>
>>>>>>>>>> ).<br>
>>>>>>>>>><br>
>>>>>>>>>> a cada minuto quero enviar o valor de total para algum lugar (ex<br>
>>>>>>>>>> Zabbix).<br>
>>>>>>>>>><br>
>>>>>>>>>> a meia noite eu quero limpar o total para 0.<br>
>>>>>>>>>><br>
>>>>>>>>>> Eu cheguei a algo assim:<br>
>>>>>>>>>> use AnyEvent;<br>
>>>>>>>>>><br>
>>>>>>>>>> sub loop {<br>
>>>>>>>>>> my $obj   = Foo->new;<br>
>>>>>>>>>> my $cv    = AE::cv;<br>
>>>>>>>>>><br>
>>>>>>>>>> my $seconds_in_a_day = 60 * 60 * 24;<br>
>>>>>>>>>> my $seconds_to_midnight =  $seconds_in_a_day -<br>
>>>>>>>>>> seconds_from_midnight();<br>
>>>>>>>>>><br>
>>>>>>>>>> my $loop = AE::timer  0, 1,  sub { $obj->run   };<br>
>>>>>>>>>><br>
>>>>>>>>>> my $send = AE::timer  60, 60,  sub { $obj->send  };<br>
>>>>>>>>>><br>
>>>>>>>>>> my $clear= AE::timer  $seconds_to_midnight, $seconds_in_a_day,<br>
>>>>>>>>>> sub { $obj->clear };<br>
>>>>>>>>>> $cv->recv;<br>
>>>>>>>>>> }<br>
>>>>>>>>>><br>
>>>>>>>>>> a sub seconds_from_midnight usa localtime pra fazer uma conta<br>
>>>>>>>>>> marota.<br>
>>>>>>>>>><br>
>>>>>>>>>> A assinatura do AE::timer eh<br>
>>>>>>>>>><br>
>>>>>>>>>> AE::timer $delay, $interval, $callback;<br>
>>>>>>>>>><br>
>>>>>>>>>> No primeiro timer eu tenho o meu main loop, chamando o metodo run.<br>
>>>>>>>>>> No segundo eu tenho o metodo que envia os dados a cada 60 segundos<br>
>>>>>>>>>> No terceiro eu calculo quantos segundos faltam para a meia noite e<br>
>>>>>>>>>> mando repetir a cada 24 horas.<br>
>>>>>>>>>><br>
>>>>>>>>>> hoje eu tenho um loop com um sleep 1 e varios ifs. quero que fique<br>
>>>>>>>>>> mais legivel e nao utilizo anyEvent em nenhum outro lugar. Nao precisa ser<br>
>>>>>>>>>> EXATO, portanto um atraso de alguns segundos pode acontecer.<br>
>>>>>>>>>><br>
>>>>>>>>>> Parece bom, mas eu tenho algumas duvidas.<br>
>>>>>>>>>><br>
>>>>>>>>>> 1) esta claro o suficiente?<br>
>>>>>>>>>> 2) o overhead do AnyEvent parece ser o mesmo do sleep (1) durante<br>
>>>>>>>>>> o runtime (ignorando quanto tempo demora pra iniciar ou não), certo?<br>
>>>>>>>>>> 3) para rodar algo "a meia noite" me parece um tanto confuso<br>
>>>>>>>>>> ainda. não encontrei nenhum helper q me ajude (o AnyEvent::Cron da pau pra<br>
>>>>>>>>>> mim). sera q nao eh melhor "re-setar" o time watcher para a proxima meia<br>
>>>>>>>>>> noite?<br>
>>>>>>>>>> 4) alias tem algo melhor do que ficar brincando com localtime()<br>
>>>>>>>>>> pra pegar quantos segundos faltam pra proxima meia noite? algo usando<br>
>>>>>>>>>> DateTime<br>
>>>>>>>>>><br>
>>>>>>>>>> por fim<br>
>>>>>>>>>><br>
>>>>>>>>>> 5) tem algum problema ao usar AE::timer q eu não esteja vendo?<br>
>>>>>>>>>> Fora os problemas interentes como se eu usar IO Bloqueante eu não vou ter os<br>
>>>>>>>>>> timers "exatos".<br>
>>>>>>>>>><br>
>>>>>>>>>> Obrigado<br>
>>>>>>>>>><br>
>>>>>>>>>> Tiago<br>
>>>>>>>>>><br>
>>>>>>>>>> --<br>
>>>>>>>>>> Tiago B. Peczenyj<br>
>>>>>>>>>> Linux User #405772<br>
>>>>>>>>>><br>
>>>>>>>>>> <a href="http://about.me/peczenyj" target="_blank">http://about.me/peczenyj</a><br>
>>>>>>>>><br>
>>>>>>>>><br>
>>>>>>>>> =begin disclaimer<br>
>>>>>>>>>    Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
>>>>>>>>>  SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
>>>>>>>>>  L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
>>>>>>>>> =end disclaimer<br>
>>>>>>>>><br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>> =begin disclaimer<br>
>>>>>>>>    Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
>>>>>>>>  SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
>>>>>>>>  L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
>>>>>>>> =end disclaimer<br>
>>>>>>>><br>
>>>>>>><br>
>>>>>>><br>
>>>>>>> =begin disclaimer<br>
>>>>>>>    Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
>>>>>>>  SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
>>>>>>>  L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
>>>>>>> =end disclaimer<br>
>>>>>>><br>
>>>>>><br>
>>>>>><br>
>>>>>><br>
>>>>>> --<br>
>>>>>> Tiago B. Peczenyj<br>
>>>>>> Linux User #405772<br>
>>>>>><br>
>>>>>> <a href="http://about.me/peczenyj" target="_blank">http://about.me/peczenyj</a><br>
>>>>>><br>
>>>>>> =begin disclaimer<br>
>>>>>>    Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
>>>>>>  SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
>>>>>>  L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
>>>>>> =end disclaimer<br>
>>>>>><br>
>>>>><br>
>>>>><br>
>>>>> =begin disclaimer<br>
>>>>>    Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
>>>>>  SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
>>>>>  L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
>>>>> =end disclaimer<br>
>>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>> --<br>
>>>> Tiago B. Peczenyj<br>
>>>> Linux User #405772<br>
>>>><br>
>>>> <a href="http://about.me/peczenyj" target="_blank">http://about.me/peczenyj</a><br>
>>>><br>
>>>> =begin disclaimer<br>
>>>>    Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
>>>>  SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
>>>>  L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
>>>> =end disclaimer<br>
>>>><br>
>>><br>
>><br>
>><br>
>> =begin disclaimer<br>
>>    Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
>>  SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
>>  L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
>> =end disclaimer<br>
>><br>
><br>
><br>
><br>
> --<br>
> Tiago B. Peczenyj<br>
> Linux User #405772<br>
><br>
> <a href="http://about.me/peczenyj" target="_blank">http://about.me/peczenyj</a><br>
><br>
> =begin disclaimer<br>
>    Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
>  SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
>  L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
> =end disclaimer<br>
><br>
<br>
<br>
<br>
--<br>
<br>
</div></div>-dom<br>
<br>
--<br>
<br>
Daniel de Oliveira Mantovani<br>
Business Analytic Specialist<br>
Perl Evangelist /Astrophysics hobbyist.<br>
<a href="tel:%2B55%2011%209%208538-9897" value="+5511985389897">+55 11 9 8538-9897</a><br>
XOXO<br>
<div class="HOEnZb"><div class="h5">=begin disclaimer<br>
   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
 SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
 L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>Tiago B. Peczenyj<br>Linux User #405772<br><br><a href="http://about.me/peczenyj" target="_blank">http://about.me/peczenyj</a>
</div>