domingo, 26 de agosto de 2007

Microsoft Internet Explorer - Bug de cache em imagens dinâmicas

Sempre que se desenvolve uma aplicação Ajax existe a preocupação da funcionalidade CrossBrowser.

O Internet Explorer tem um problema sério com criação de imagens dinâmicas. Ao criar elementos img, seja por innerHTML ou DOM (createElement, appendChild), o Internet Explorer esquece de verificar em seu cache local a presença da imagem, fazendo um GET ao servidor para cada elas.

Ou seja, se você carregar uma árvore dinâmica por Ajax, cheia de ícones de pastas, o Internet Explorer demorará a uma eternidade para renderizar tudo.

A Microsoft descreve esse problema, segundo eles "by design". (ótimo)
http://support.microsoft.com/?scid=kb%3Ben-us%3B319546&x=8&y=8

A solução, apesar de extremamente deselegante, é simples:

Faça um preload de TODAS as imagens à serem criadas dinamicamente, através de uma DIV com display none:






Depois, dê um tempo para o Internet Explorer fazer o cache das imagens, daí sim proceda com a criação das tags dinâmicas:

window.setTimeout('addImgs()', 1000);

O grande problema aqui é que o timeout sempre terá que ser maior do que o tempo que o cliente levará para baixar as imagens, e como cada um tem uma conexão diferente, você obrigatoriamente terá que prejudicar os mais rápidos...

segunda-feira, 6 de agosto de 2007

Novo PHP MVC 2.0

Acabo de disponibilizar a nova versão 2.0 de minha implementação de MVC 2 para PHP.
Me baseei na implementação Struts 2.0 do Java JEE, trazendo as funcionalidades básicas de organização de código e separação entre design e programação, quesitos fundamentais em uma boa agência de Internet.

As grandes novidades da versão 2.0 é o arquivo de configuração do controlador em XML (muito semelhante ao do Struts) e suporte para Friendly Urls, deixando os sites com links visualmente mais agradáveis e fáceis de implementar.

Quem quiser experiementar, os fontes estão disponibilizados no PHP Classes.
Críticas CONSTRUTIVAS são bem vindas!

http://www.phpclasses.org/browse/package/3715.html

sexta-feira, 3 de agosto de 2007

Auditoria de rede - ARGUS

Argus, the network Audit Record Generation and Utilization System.

Um excelente pacote para Linux que permite extrair qualquer tipo de informação de utilização de rede, na camada 4 (serviços, TCP).
O daemon argus gera log de todo o tráfego de rede (em um PIPE ou arquivo). Através de ferramentas Argus Clients (ra, Read Argus), em conjunto com a biblioteca RRDTool, geração de gráficos PNG (a mesma do MRTG), permite extrair gráficos de utilização de cada host de sua rede interna, de qualquer serviço TCP em específico, etc.
A imaginação é o limite.

Atenção! O rapgraph (script em perl para gerar gráficos a partir do log da Argus) solicita geração de GIF ao RRD, que não é mais suportado. É necessário alterar os fontes para gerar PNG.

Confira:

http://www.qosient.com/argus/

http://oss.oetiker.ch/rrdtool/