27.2.07
What the Web’s most popular sites are running on
Uma avaliação técnica de 7 dos mais visitados sites da Internet. PHP e MySql ainda dominam, e pelo visto vão passar um bom tempo no topo...
26.2.07
Diários de um Captcha!
Recentemente tive o prazer de descobrir que meu sitezinho cresceu, e já é até alvo de ferramentas de spam automatizado! Quanta honra...
Ok, passado o orgulho inicial, vamos ao problema. A solução mais simples (e atualmente mais comum, Internet afora) para combater os spammers é conhecida por CAPTCHA. Em resumo, são aquelas imagens com texto distorcido, as vezes ilegíveis até mesmo por seres humanos convencionais.
Como qualquer solução no mundo Ruby, existe pelo menos uma dezena de bibliotecas de Captcha diferentes. Após testar um punhado, decidi por utilizar o plugin simple_captcha, por ser um dos mais simples de configurar e com menos dependências (somente o RMagick, veja você!). Este post mostra direitinho os passos para instalação e configuração do plugin.
Em 2 minutos estava com o plugin no ar, gerando texto distorcido para validar os posts de meus usuários. Tudo bom, tudo bonito.
Bug da Hora: unable to read font '(null)'
Como nada costuma funcionar logo de cara, o plugin resolveu entrar em greve quando fiz o deployment no servidor de produção (um box Linux):
ActionView::TemplateError (unable to read font `(null)') on line #49 of app/views/xxx/_xxxxx.rhtml:
46: <% end %>
47: <% if @map.captchaValidate %>
48:
49: <%= show_simple_captcha %>
50:
51: <% end %>
Não se trata de um problema com o simple_captcha, mas sim com o RMagick. Phew. Mais um dragão para derrubar...
Ok, passado o orgulho inicial, vamos ao problema. A solução mais simples (e atualmente mais comum, Internet afora) para combater os spammers é conhecida por CAPTCHA. Em resumo, são aquelas imagens com texto distorcido, as vezes ilegíveis até mesmo por seres humanos convencionais.
Como qualquer solução no mundo Ruby, existe pelo menos uma dezena de bibliotecas de Captcha diferentes. Após testar um punhado, decidi por utilizar o plugin simple_captcha, por ser um dos mais simples de configurar e com menos dependências (somente o RMagick, veja você!). Este post mostra direitinho os passos para instalação e configuração do plugin.
Em 2 minutos estava com o plugin no ar, gerando texto distorcido para validar os posts de meus usuários. Tudo bom, tudo bonito.
Bug da Hora: unable to read font '(null)'
Como nada costuma funcionar logo de cara, o plugin resolveu entrar em greve quando fiz o deployment no servidor de produção (um box Linux):
ActionView::TemplateError (unable to read font `(null)') on line #49 of app/views/xxx/_xxxxx.rhtml:
46: <% end %>
47: <% if @map.captchaValidate %>
48:
49: <%= show_simple_captcha %>
50:
51: <% end %>
Não se trata de um problema com o simple_captcha, mas sim com o RMagick. Phew. Mais um dragão para derrubar...
25.2.07
Mephisto e o mistério do cache
Então você começou a brincar de Rails, precisava botar um Blog no ar por algum motivo e resolveu testar o Mephisto. A instalação veio fácil, o blog entrou no ar em minutos...
...e 5 dias depois, ninguém comentou no seu blog ainda - se muito, aparecia um comentário eventual por post - mesmo aquele post polêmico, xingando a mãe dos desenvolvedores Java.
Se você utiliza Apache + cgi/fcgi, é bem provável que seja um problema de configuração do Apache...
...e 5 dias depois, ninguém comentou no seu blog ainda - se muito, aparecia um comentário eventual por post - mesmo aquele post polêmico, xingando a mãe dos desenvolvedores Java.
Se você utiliza Apache + cgi/fcgi, é bem provável que seja um problema de configuração do Apache...
22.2.07
O que acontece quando um gigante soluça?
Esse tipo de evento sempre serve para me lembrar de fazer backup de informações online - como os emails do GMail, ou as fotos do Flickr.
E de preferência, fazer um backup do backup também. Quem sabe em algum outro serviço online de backups...
E de preferência, fazer um backup do backup também. Quem sabe em algum outro serviço online de backups...
18.2.07
A Síndrome das Dobradiças
"Arquitetos" de software são uma espécie de animal interessante. Sua profissão resume-se a resolver problemas de forma elegante (em muitos dos casos, resolver problemas abstratos, sem escrever nenhum tipo de código). Não que isso seja pouco: em qualquer indústria, elegância é uma meta que raramente é atingida. Mas com a exposição prolongada à profissão, alguns desenvolvem uma bizarra doença psicológica: a Síndrome das Dobradiças.
Como um tipo de dependência química, os portadores da SdD precisam desenhar. Eles não passam um dia sem rabiscar bonequinhos de palito e quadradinhos com setas apontando para eles mesmos, para os bonequinhos, e para outros quadradinhos. E como um tipo de aspirante a artista pós moderno, os SdDs buscam desesperadamente o desenho mais complexo, a cada dia. Não conseguem dormir de noite enquanto não transformarem aquele simples componente de envio de e-mails em um conjunto de quadradinhos: uma Abstract Factory pra flebixilizar aquela Factory que vai produzir o agora genérico Componente de Envio de Qualquer Coisa, uma série de interfaces para definir Coisa, Email e EnviadorDeQualquerCoisa, e finalmente um conjunto de arquivos de configuração para unir a coisa toda. Se o cliente precisa de uma porta, não basta projetá-la com duas dobradiças (e eventualmente um olho mágico): a porta tem que ter dobradiças que permitam abri-la em qualquer direção, cadeados de todos os lados e mecanismos de autenticação redundantes.
E claro, quanto mais obscura a tecnologia para unir tudo isso, melhor. Já vi casos de arquitetos em êxtase por descobrirem um modo de integrar 5 novos buzzwords (e suas 5 respectivas implementações de referência) para resolver um problema que a) não necessitava de flexibilidade nenhuma e b) poderia ser resolvido com 20 linhas de código.
Se você apresenta alguns destes sintomas, procure um médico. Você pode ser portador de SdD. Outros sintomas incluem possuir mais de um livro sobre UML em sua mesa, um aumento visível do teor de padrão-de-projetês em seus diálogos, sonhos com bonequinhos de palito contadores de histórias e modelagens que não cabem em uma folha de papel A3.
Cuidado: portadores de SdD costumam ser confundidos com especialistas.
Como um tipo de dependência química, os portadores da SdD precisam desenhar. Eles não passam um dia sem rabiscar bonequinhos de palito e quadradinhos com setas apontando para eles mesmos, para os bonequinhos, e para outros quadradinhos. E como um tipo de aspirante a artista pós moderno, os SdDs buscam desesperadamente o desenho mais complexo, a cada dia. Não conseguem dormir de noite enquanto não transformarem aquele simples componente de envio de e-mails em um conjunto de quadradinhos: uma Abstract Factory pra flebixilizar aquela Factory que vai produzir o agora genérico Componente de Envio de Qualquer Coisa, uma série de interfaces para definir Coisa, Email e EnviadorDeQualquerCoisa, e finalmente um conjunto de arquivos de configuração para unir a coisa toda. Se o cliente precisa de uma porta, não basta projetá-la com duas dobradiças (e eventualmente um olho mágico): a porta tem que ter dobradiças que permitam abri-la em qualquer direção, cadeados de todos os lados e mecanismos de autenticação redundantes.
E claro, quanto mais obscura a tecnologia para unir tudo isso, melhor. Já vi casos de arquitetos em êxtase por descobrirem um modo de integrar 5 novos buzzwords (e suas 5 respectivas implementações de referência) para resolver um problema que a) não necessitava de flexibilidade nenhuma e b) poderia ser resolvido com 20 linhas de código.
Se você apresenta alguns destes sintomas, procure um médico. Você pode ser portador de SdD. Outros sintomas incluem possuir mais de um livro sobre UML em sua mesa, um aumento visível do teor de padrão-de-projetês em seus diálogos, sonhos com bonequinhos de palito contadores de histórias e modelagens que não cabem em uma folha de papel A3.
Cuidado: portadores de SdD costumam ser confundidos com especialistas.
17.2.07
Querido Diário...
Retomei o contato com este blog graças a duas pessoas que o acharam por acaso, navegando pela Internet. A Internet (ou seria a sua interface principal, o Google?) é um bicho interessante. Funciona como uma máquina do tempo que tanto dita tendências quanto revela fósseis de longínquas eras. Como este site que vos fala.
Blogs são fósseis engraçados. Com exceção dos blogs mais populares (ou os blog businesses, moda no já distante ano de 2005), você nunca sabe se tem alguém lendo o que você posta do outro lado. Você escreve, escreve, escreve. O contador de visitas mostra que existem 50 malucos que lêem seu blog quase que diariamente. Mas na maioria dos casos, soa como falar de olhos fechados para uma platéia que você não sabe se existe. Ou então falar para você mesmo.
É isso, caro leitor. Este blog voltou a ser mantido. Para que o interlocutor que vos fala possa, daqui a 5 anos , consultar a máquina do tempo e constatar como conhecia pouco ou quase nada (e no entanto se dava ao luxo de falar como se conhecesse). E como aquela promessa de aprender Ruby on Rails (que foi feita em 2005, segundo esse blog!) demoro quase 2 anos para ser cumprida... :)
Well, let's cut the crap. De volta à ativa... Assim espero :)
Blogs são fósseis engraçados. Com exceção dos blogs mais populares (ou os blog businesses, moda no já distante ano de 2005), você nunca sabe se tem alguém lendo o que você posta do outro lado. Você escreve, escreve, escreve. O contador de visitas mostra que existem 50 malucos que lêem seu blog quase que diariamente. Mas na maioria dos casos, soa como falar de olhos fechados para uma platéia que você não sabe se existe. Ou então falar para você mesmo.
É isso, caro leitor. Este blog voltou a ser mantido. Para que o interlocutor que vos fala possa, daqui a 5 anos , consultar a máquina do tempo e constatar como conhecia pouco ou quase nada (e no entanto se dava ao luxo de falar como se conhecesse). E como aquela promessa de aprender Ruby on Rails (que foi feita em 2005, segundo esse blog!) demoro quase 2 anos para ser cumprida... :)
Well, let's cut the crap. De volta à ativa... Assim espero :)
Assinar:
Postagens (Atom)