Arquivo para janeiro \29\UTC 2010

Nunca use o método Date.getYear() do Javascript

Post movido para: http://blog.guilhermegarnier.com/2010/01/29/nunca-use-o-metodo-date-getyear-do-javascript/

Até a década de 1990, era muito comum escrevermos datas com apenas 2 dígitos representando o ano (ex: 1996 -> 96). Como todos já sabem, esta prática levou ao famoso bug do milênio, pois, desta forma, o ano 2000 tornava-se 0 (ou 100, dependendo do caso), gerando uma série de problemas, especialmente em códigos que calculavam um período entre duas datas. Felizmente, hoje em dia não temos mais esta preocupação. Ou temos?

Outro dia fui testar um sistema em diversos browsers, e ao realizar o teste no Opera, verifiquei que o componente inputCalendar do Tomahawk abria no ano de 3910. Testei no Firefox, Google Chrome e Internet Explorer 6, 7 e 8, e todos eles funcionavam corretamente. Resolvi olhar o código fonte do componente, e descobri que ele verificava o ano atual usando o método getYear da classe Date. Este método é fonte de diversos problemas e gambiarras em códigos Javascript que manipulam datas. O motivo é que diferentes browsers interpretam o método de maneiras diferentes. De acordo com a especificação ECMA-262, a função getYear deveria retornar o ano atual menos 1900. Nas versões mais recentes, o Firefox e o Google Chrome seguem esta especificação, retornando 110 para o ano de 2010. Já o Opera e o IE retornam 2010, contrariando a especificação e gerando os problemas já conhecidos. É muito comum encontrarmos códigos que verificam qual é o browser (com comentários condicionais ou verificações por Javascript) e, quando não for o IE, somando 1900 ao valor retornado pelo getYear. Esta verdadeira gambiarra não resolve completamente, pois, como já citado, o Opera se comporta da mesma forma que o IE.

A solução ideal para este problema é substituir o método getYear por getFullYear. Este método retorna o ano completo, com 4 dígitos, em todos os browsers, eliminando qualquer necessidade de verificação de browser. Esta recomendação, inclusive, faz parte da especificação ECMA-262, na página 242:

The getFullYear method is preferred for nearly all purposes, because it avoids the “year 2000 problem.”

Após corrigir este bug do Tomahawk, abri uma issue no Jira do projeto, anexando um patch para corrigir o problema.

Outras Referências:

Problema com a extensão do Remember The Milk no Gmail

Post movido para: http://blog.guilhermegarnier.com/2010/01/13/problema-com-a-extensao-do-remember-the-milk-no-gmail/

Ontem meu Gmail começou a apresentar um problema estranho. Quando eu clicava nas tags, nas pastas de spam ou lixeira, ou tentava fazer uma pesquisa, nada acontecia. Porém, na caixa de entrada tudo funcionava perfeitamente.

Inicialmente pensei que o problema fosse do Firefox, já que ontem atualizei para a versão 3.5.7. Antes de tentar fazer um downgrade, resolvi pesquisar por este problema e encontrei uma referência no forum do Remember The Milk. O problema estava relacionado ao add-on Remember The Milk for Gmail. O Google, de vez em quando, atualiza a versão Gmail, sem qualquer aviso, e a última atualização provocou alguma incompatibilidade nessa extensão. Como a atualização do Gmail é feita inicialmente para um grupo de usuários e só posteriormente replicada para todos, pode ser que muitos usuários não estejam passando por este problema.

O pior é que, como a compatibilidade depende da versão do Gmail, o Firefox não tem como descobrir se a extensão será compatível ou não. A melhor maneira de descobrir se a versão atual é suportada é consultando a página de status do add-on. Para verificar qual é a versão do seu Gmail, clique em Settings e depois na opção Tasks (que só aparece se a extensão estiver instalada e habilitada).

A solução provisória é desabilitar esta extensão até que ela seja atualizada para suportar a última versão do Gmail. O problema só ocorre na extensão de Firefox, o gadget do Remember The Milk, que fica na barra lateral do Gmail, continua funcionando normalmente.


@guilhermgarnier

Erro: o Twitter não respondeu. Por favor, aguarde alguns minutos e atualize esta página.

Estatísticas

  • 58,340 hits
Linux Counter