<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>
Bruno, obrigado por responder. Amanhã vou olhar com calma, ai darei um feedback independente de positivo ou negativo.<br>Contudo, quanto ao que me perguntou:<br><br><br>1) Esse "SECURITYTOKEN" muda? Se for estático, você poderia pegar ele uma única vez, talvez logo depois de fazer o login na hora que você faz uma instância da sua classe? [2]<br><b>R:</b> Mudei, agora to pegando o SECIRITYTOKEN apenas uma vez, e isto esta servindo para ver se o login esta correto, uma vez que toda pagina tem ele e que se for igual a "guest" é porque não houve login, pois o "Bem Vindo" aparece mesmo se o login falhar.<br><br>2) Porque você usa (.*?) ou invés de um simples (.*) no matching?<br><b>R:</b> Não sei, mudei já.<br><br>3) Veja bem que você está assumindo, que toda página contem esse SECURITYTOKEN, independente do que você fez por último com o seu $url... infelizmente a maneira como seu código está, não é nem um pouco "side-effect free", logo acho que você não deveria contar com isso...<br><br>Se por algum problema, ele não encontrar nada (eg. nem toda página do forum tem esse SECURITYTOKEN ou então por algum motivo a última requisição falhou ou não retornou esse token), o que terá na variável $1 e consequentemente na sua variável $token?<br><b>R:</b> Toda pagina tem o "SECURITYTOKEN" já que para fazer qualquer ação preciso dele para gerar a permição, caso não haja login o SECURITYTOKEN é "guest".<br><br>4) Assim como no caso anterior, você está assumindo que a sua variável $url sempre terá um "Bem vindo" em algum lugar dela... isso poderia não acontecer? Talvez você estivesse assumindo isso porque após se logar aparece algo escrito "Bem-vindo"? Mais especificamente, depois de fazer o post da 1a mensagem [4], será que o conteúdo de $url ainda contem um SECURITYTOKEN ou ainda mesmo um "Bem-vindo" em alguma parte do html?<br><b>R:</b> Não tenho certeza se tem o "Bem Vindo" ma so "SECURITYTOKEN" sim, inclusive mudei, agora a forma de ver se o login foi bem sucedido é verificar o "SECURITYTOKEN", mas como você falou, mudei verifico apenas uma vez logo após o login.<br><br><div><div id="SkyDrivePlaceholder"></div><hr id="stopSpelling">From: bruno.buss@gmail.com<br>Date: Fri, 6 Jul 2012 13:09:49 -0300<br>To: rio-pm@pm.org<br>Subject: Re: [Rio-pm] Tk travando, devo usar threads?<br><br><div class="ecxgmail_quote">2012/7/6 Aureliano Guedes <span dir="ltr"><<a href="mailto:guedes_1000@hotmail.com">guedes_1000@hotmail.com</a>></span><br><blockquote class="ecxgmail_quote" style="border-left:1px #ccc solid;padding-left:1ex">




<div><div dir="ltr">
Eu modifiquei, o projeto, não entendi como encaixar o AnyEvent (na verdade o AnyEvent ainda é muito complexo para mim), então usei threads. </div></div></blockquote><blockquote class="ecxgmail_quote" style="border-left:1px #ccc solid;padding-left:1ex">

<div><div dir="ltr"><br><b><a href="https://github.com/acpguedes/Chat.git" target="_blank">https://github.com/acpguedes/Chat.git</a></b><br><br>Mas ainda está problematico.<br></div></div></blockquote><div><br></div><div>

Percebe-se, pois o modo que você está usando threads não está servindo de absolutamente nada. Seu programa não está multi-thread em nada...</div><div> </div><blockquote class="ecxgmail_quote" style="border-left:1px #ccc solid;padding-left:1ex">

<div><div dir="ltr"><br>Eu consigo enviar apenas uma msg, da segunda para frente não é enviada, alem disso, quando coloco para receber msg ele recebe de boa mas a interface fica travada, nem fechar ela eu consigo.<br></div>

</div></blockquote><div><br></div><div>Sobre o update e o fato dele estar travando seu código:</div><div><br></div><div><div><a href="https://github.com/acpguedes/Chat/blob/master/InterfaceSB.pm#L33-34" target="_blank">https://github.com/acpguedes/Chat/blob/master/InterfaceSB.pm#L33-34</a></div>

<div><br></div><div>Logo depois de criar uma thread, você está dando join() nela o que simplesmente bloqueia a "thread original" da sua interface gráfica enquanto espera a sua thread recém criada retornar... o que não acontece NUNCA, já que ele fica preso em um "while(1)" [1] para sempre, já que você nunca seta $work como zero, nem faz um "last;".</div>

</div><div><br></div><div>Talvez você tenha tentado contornar isso usando a chamada do update() (que vem do Tk::Widget), mas talvez ele não esteja pegando nenhuma mensagem nova, não entra no if nem no elsif e nunca faz esse update e por isso a interface fica "travada"?</div>

<div><br></div><div>No mais, apenas mais uma questão: Você está em um "loop infinito", bombardeando o servidor com uma cacetada de requisições com o seu get_msg... talvez fosse um pouco mais educado colocar um tempo entre uma requisição e outra, não?</div>

<div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div>Sobre o envio da 2a mensagem em diante falhar:</div><div><br></div><div>Primeiro, assim como no caso acima a sua thread não serve de nada....</div>

<div><br></div><div>Como não conheço o sistema em questão (forum invaders, shoutbox, etc) vou fazer algumas perguntas:</div><div><a href="https://github.com/acpguedes/Chat/blob/master/Shoutbox.pm#L25" target="_blank">https://github.com/acpguedes/Chat/blob/master/Shoutbox.pm#L25</a></div>

<div><br></div><div>1) Esse "SECURITYTOKEN" muda? Se for estático, você poderia pegar ele uma única vez, talvez logo depois de fazer o login na hora que você faz uma instância da sua classe? [2]</div><div><br></div>

<div>2) Porque você usa (.*?) ou invés de um simples (.*) no matching?</div><div><br></div><div>3) Veja bem que você está assumindo, que toda página contem esse SECURITYTOKEN, independente do que você fez por último com o seu $url... infelizmente a maneira como seu código está, não é nem um pouco "side-effect free", logo acho que você não deveria contar com isso...</div>

<div><br></div><div>Se por algum problema, ele não encontrar nada (eg. nem toda página do forum tem esse SECURITYTOKEN ou então por algum motivo a última requisição falhou ou não retornou esse token), o que terá na variável $1 e consequentemente na sua variável $token?</div>

<div><br></div><div>4) Assim como no caso anterior, você está assumindo que a sua variável $url sempre terá um "Bem vindo" em algum lugar dela... isso poderia não acontecer? Talvez você estivesse assumindo isso porque após se logar aparece algo escrito "Bem-vindo"? Mais especificamente, depois de fazer o post da 1a mensagem [4], será que o conteúdo de $url ainda contem um SECURITYTOKEN ou ainda mesmo um "Bem-vindo" em alguma parte do html?</div>

<div><br></div><div><br></div><div><br></div><div><br></div><div>[1] <a href="https://github.com/acpguedes/Chat/blob/master/InterfaceSB.pm#L49" target="_blank">https://github.com/acpguedes/Chat/blob/master/InterfaceSB.pm#L49</a></div><div>

<br></div><div>[2] <a href="https://github.com/acpguedes/Chat/blob/master/Shoutbox.pm#L12-17" target="_blank">https://github.com/acpguedes/Chat/blob/master/Shoutbox.pm#L12-17</a></div><div><br></div><div>[3] <a href="https://github.com/acpguedes/Chat/blob/master/Shoutbox.pm#L27" target="_blank">https://github.com/acpguedes/Chat/blob/master/Shoutbox.pm#L27</a></div>

<div><br></div><div>[4] <a href="https://github.com/acpguedes/Chat/blob/master/Shoutbox.pm#L29-31" target="_blank">https://github.com/acpguedes/Chat/blob/master/Shoutbox.pm#L29-31</a></div><div><br></div><div>[ ]'s</div></div>-- <br>

Bruno C. Buss<br><a href="http://www.brunobuss.net" target="_blank">http://www.brunobuss.net</a><br>
<br>_______________________________________________
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm</div>                                    </div></body>
</html>