Bruno, obrigado por responder. Amanhã vou olhar com calma, ai darei um feedback 
independente de positivo ou negativo.
Contudo, quanto ao que me perguntou:


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]
R: 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.

2) Porque você usa (.*?) ou invés de um simples (.*) no matching?
R: Não sei, mudei já.

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...

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?
R: 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".

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?
R: 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.

From: [email protected]
Date: Fri, 6 Jul 2012 13:09:49 -0300
To: [email protected]
Subject: Re: [Rio-pm] Tk travando, devo usar threads?

2012/7/6 Aureliano Guedes <[email protected]>






Eu modifiquei, o projeto, não entendi como encaixar o AnyEvent (na verdade o 
AnyEvent ainda é muito complexo para mim), então usei threads. 


https://github.com/acpguedes/Chat.git

Mas ainda está problematico.



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... 


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.



Sobre o update e o fato dele estar travando seu código:
https://github.com/acpguedes/Chat/blob/master/InterfaceSB.pm#L33-34


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;".


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"?


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?







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


Como não conheço o sistema em questão (forum invaders, shoutbox, etc) vou fazer 
algumas perguntas:https://github.com/acpguedes/Chat/blob/master/Shoutbox.pm#L25


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]


2) Porque você usa (.*?) ou invés de um simples (.*) no matching?
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...


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?


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?





[1] https://github.com/acpguedes/Chat/blob/master/InterfaceSB.pm#L49


[2] https://github.com/acpguedes/Chat/blob/master/Shoutbox.pm#L12-17
[3] https://github.com/acpguedes/Chat/blob/master/Shoutbox.pm#L27


[4] https://github.com/acpguedes/Chat/blob/master/Shoutbox.pm#L29-31
[ ]'s-- 


Bruno C. Buss
http://www.brunobuss.net


_______________________________________________
Rio-pm mailing list
[email protected]
http://mail.pm.org/mailman/listinfo/rio-pm                                      
  
_______________________________________________
Rio-pm mailing list
[email protected]
http://mail.pm.org/mailman/listinfo/rio-pm

Responder a