2009 29/07
Arquivos de 07/2009
2009 23/07
apache2: Could not reliably determine the server's fully qualified domain name...
Se você vê essa mensagem todas as vezes que você reinicia o Apache no seu Ubuntu mas nunca foi atrás de como solucioná-la, não se preocupe, você não é o único.
A solução é bem simples, adicione a propriedade ServerName ao arquivo de configurações do seu Apache: (provavelmente /etc/apache2/apache2.conf)
ServerName nome_aqui
Pronto, mensagem removida!
Vi aqui.
2009 22/07
Web Workers - Threads em Javascript
No final do mês passado eu coloquei aqui no blog uma nota sobre o lançamento do Firefox 3.5 e as novidades trazidas por essa versão.
Fiz uma leitura mais aprofundada nos textos e vi um recurso bastante interessante chamado Web Workers. Segundo a descrição do MDC, os Web Workers permitem a execução de códigos de forma multi-thread dentro de aplicações web e sites.
Quem escreve código Javascript hoje em dia sabe que não é raro o navegador "congelar" durante um código que exige um pouco mais de processamento. Existem algumas formas de evitar esse "congelamento" sim... mas certamente os Web Workers elevam a resolução deste problema a outro nível de soluções e possibilidades.
Com os Web Workers você pode iniciar um código que será executado em paralelo ao código Javascript da sua página. Esse código executado pelo "worker" trabalha num ambiente diferente, sem acesso à página pai e, principalmente, sem acesso ao DOM. A única forma de comunicação entre a página pai e um processo "worker" se dá através de mensagens.
Como eu estava interessado em verificar se esses Web Workers realmente trabalham em paralelo
, fiz uma página que faz esse teste. Nela, há duas versões de um mesmo código que calcula a sequência (ou número) de Fibonacci. Além disso, na página há uma animação com jQuery rodando, o que vai permitir perceber claramente se o navegador vai ou não "congelar".
Veja aqui o teste com Web Workers. (para o Firefox só funciona na versão 3.5)
Como você pode ver pelo teste acima, realmente o código roda em background, sem afetar a página renderizada.
Vale ressaltar que nos testes eu exibo também o tempo em milissegundos que a operação levou. Fazendo os testes aqui no meu computador, a versão com Web Workers leva em média 1600 ms, enquanto a versão "normal" leva em média 800 ms. O dobro de tempo mas é algo a se ponderar se lembrarmos que a versão "normal" trava totalmente o navegador enquanto o cálculo é feito. (interessante... rodando o teste local, a versão com "worker" executa bem mais rápido do que a versão online aqui no blog, talvez pelo tempo de download do "worker.js"?)
Update: na versão do código de testes que eu fiz ontem, ao clicar no botão para calcular o número de Fibonacci, o código do "worker.js" era baixado antes do cálculo em si ser executado. Isso causava uma grande diferença entre o teste rodando local e o teste rodando online (óbvio hehe). Fiz uma modificação hoje para deixar o "worker.js" já carregado (assim como os demais arquivos ".js").
E como comentário final: tentei deixar os códigos tão similares quanto possível para não afetar significativamente os resultados em favor de uma ou outra forma de cálculo. Sugestões e/ou correções são bem-vindas.
- Referências
- developer.mozilla.org: Using web workers
- hacks.mozilla.org: using web workers: working smarter, not harder
- ejohn.org: Computing with JavaScript Web Workers
2009 06/07
Encoding no post para o PagSeguro
Atualmente estou fazendo uma loja utilizando o Magento como plataforma base. O projeto está ficando bem legal, apesar da curva de aprendizado inicial ter sido bastante acentuada.
Uma coisa que eu gastei um tempinho, digamos desnecessário, esse final de semana foi no momento do post dos dados para o PagSeguro.
Quando as informações que eu passava eram lidas pelo PagSeguro, a acentuação quebrava. Apesar de não ser legal, faz sentido, afinal o Magento usa UTF-8 como encoding e o PagSeguro usa ISO-8859-1.
A princípio comecei a procurar as funções do PHP para conversão de encoding, encontrei, mas precisava definir também os cabeçalhos da página para ISO... no final das contas, foi só ler a documentação do PagSeguro sobre o assunto e lá estava a solução mais simples possível.
Basta adicionar um campo hidden no seu formulário de dados que indica qual o encoding que sua aplicação está enviado ao PagSeguro. Simples assim:
<input type="text" name="encoding" value="utf-8" />
Fácil, hein?