[Rio-pm] Tk travando, devo usar threads?

Bruno Buss bruno.buss em gmail.com
Sexta Julho 6 15:06:01 PDT 2012


2012/7/6 Aureliano Guedes <guedes_1000 em hotmail.com>

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

Agora que você respondeu com tanta certeza, posso te mostrar que você está
errado =P
Nem sempre o content do $url no seu Shoutbox.pm terá um security token.
Quer um exemplo?

Suponha que você chame get_msg, então o content dele será o que ele
retornar de
http://www.forum-invaders.com.br/vb/vbshout.php?type=activeusers&do=ajax&action=fetch&instanceid=2,
aqui no caso ele retornou o seguinte:

{"ajax":"fetch","content":"There are currently no users
chatting.","activeusers":"0"}

Se logo depois você chamar o send_msg, o conteúdo de $url será esse daí (já
que não foi realizado nenhum outro post/get) e não terá "SECURITYTOKEN"
nenhum ;)
Não só isso, esse conteúdo também não contém nenhum "Bem-vindo", o que faz
com que seu regex não faça matching e você não submeta a mensagem ;)


Por isso que disse, seu código tem altas dependências de "side-effects"...
o que acontece numa função, não depende só dela, mas sim da sequência de
chamadas anteriores que antecederam ela. Isso além de ser uma coisa feia,
atrapalha você a debuggar e a escrever testes para seu programa :)

[ ]'s
-- 
Bruno C. Buss
http://www.brunobuss.net
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20120706/3b7dbbde/attachment.html>


Mais detalhes sobre a lista de discussão Rio-pm