terça-feira, abril 24, 2007

Olá via FeedBurner

Adeus aos feeds não rastreáveis do blogger :D

Sempre ouvi (na realidade li) que o Feedburner oferece um excelente serviço, então decidi conferir, principalmente porque quero conferir quantas pessoas estão lendo meu blog.

Leio muitos feeds, muito raramente vou ao site ler algo, então acompanhar quantas pessoas estão lendo teus textos pelos page views não dá, uma solução de tracking dos feeds é necessária, e como pode ver (se estiver lendo através da página ;)) na direita está o "Feedburner FeedCount", que te informa o número de leitores do feed provido por este blog.

Outro serviço legal do FeedBurner é o PingShot, que notifica vários servidores quando um novo post é publicado, muito útil, por exemplo, para usuários do Blogger como eu, que não possuem um serviço como este disponível.

Para seguir a filosofia DRY, editei o template do blog para não disponibilizar o feed que o Blogger provê. Para fazer isto vi que existe uma tag <b:include data="'blog'" name="'all-head-content'"/> entre o <head> e o <title>, esta tag é depois substituida por tags <link> e <meta>. Apenas substitui esta tag pelo código gerado por ela, substituídos os <link> relacionados a feed RSS/Atom dos posts pelo <link> oferencendo feed Atom do FeedBurner.

domingo, abril 15, 2007

Concordo: IE6 deve morrer

Como o Blogger não suporta Trackback ainda, então vai na mão mesmo:
http://www.tableless.com.br/ie6-deve-morrer

Na última sexta-feira, 13 por coincidência, tive 2 dores de cabeça com o IE6.

Problema #1: um Javascript responsável por salvar alguns dados no servidor:


for (country in countries) { ... }


isso funciona no Firefox, porém o IE acusava um problema. Graças a um debugger de Javascript que tenho instalado, consegui constatar que era esta expressão a culpada, então um amigo falou: "Coloca um var ali na declaração de country". Dito e feito, o correto é:


for (var country in countries) { ... }


Problema #2: tags A com background-image, quando se passava o mouse por cima do link, algumas vezes, acontecia que a imagem desaparecia e aparecia novamente, em inglês flickering. Pesquisando vi que isso já é um bug conhecido do IE6, uma página fazia uma série de teorias explicando o porque daquele bug, outra apenas relatava a solução que foi adotada, a terceira e última foi mais útil, explica que a causa do problema está nos response headers HTTP, mais precisamente no Expires. Como queria uma solução mais rápida e que respondesse na mesma moeda ao IE, optei pela solução que usa um Javascript apenas no IE6, que altera um parâmetro não documentado do browser:

<!--[if IE 6]><script type="text/javascript">
try {
document.execCommand("BackgroundImageCache", false, true);
} catch(err) {}
</script><![endif]-->

Solucionado! Muito melhor que perder tempo² (meu tempo desenvolvendo uma solução para retornar as imagens com o header Expires, e o tempo do processador do servidor depois para servir as imagens através dessa solução e não do procedimento padrão do servidor HTTP).

sexta-feira, abril 13, 2007

My nerd score

Como vi outros nerds mostrando seus scores, então aqui está:

I am nerdier than 90% of all people. Are you nerdier? Click here to find out!

Tinha feito este teste há algum tempo atrás e lembro que meu score foi 84, que evolução! :D

domingo, abril 08, 2007

Lições relacionadas a Javascript

Trabalhando com Javascript e "Ajax" em um projeto tomei as seguintes lições:

  • Opera 8.5 não lida bem com respostas cujo mime-type é 'application/json', a solução foi atualizar para a 9.0;
  • IE não gosta de vírgulas extra em suas matrizes, por exemplo [1,2,3,], ele interpreta aquela última vírgula como um outro elemento da matriz;
  • Usando as facilidades "Ajax" do jQuery, caso ocorra uma exceção dentro da callback de success, o jQuery irá chamar a callback de error;

sábado, março 24, 2007

JQuery, CSS e ids (X)HTML

Em um projeto que estou trabalhando no momento estou usando o JQuery, porém me deparei com um problema ao tentar utilizar o seu $() com elementos que contenham ids com caracteres como ponto e dois-pontos, que são caracteres válidos em ids.

Preparei um arquivo de testes e postei o problema na lista do JQuery, e em alguns minutos obtive entre as respostas uma que apontava que já existia um bug report para este problema (aqui entra a lição de sempre procurar pelo problema no bug tracker do projeto!), que até agora ainda não foi solucionado, existe uma sugestão de patch que altera a expressão regular do CSS selector do JQuery para uma solução parecida com o que já existe na especificação do CSS...


<style>
#test.x { background-color: green; color: yellow; }
</style>
...
<p id="test.x">P with id 'test.x'.</p>


O código acima não irá funcionar como esperado, ele na verdade seleciona o elemento com id 'test' e classe 'x', para ter o efeito desejado deve-se usar '#test\.x', ou seja, "escapa"-se o ponto, o que informa ao interpretador CSS para cancelar a busca pela classe.

A solução temporária é eu aplicar o patch e compilar a minha própria versão do JQuery...

segunda-feira, março 19, 2007

Ano novo copyright velho?

Parece que o ano de 2006 ainda não acabou, pelo menos para a página de login do Gmail, porque na parte interna já se está com o copyright atualizado para 2007...

... enquanto na interna:

PS.: a qualidade desse htmlarea do blogger é péssima²³

domingo, março 18, 2007

OpenSearch

Finalmente tive um tempo para olhar a especificação do OpenSearch e aproveitei para implementar uma descrição para o Mininova.org, um que procura normalmente, e outro que já procura e retorna o resultado ordenado pelo número de seeds, o que facilita muito a vida ;)

A implementação está aqui.