Após quase um mês indisponível, o Myhro.net voltou à ativa hoje pela manhã. O motivo pelo qual ele havia sido tirado do ar é muito simples: o sistema anterior utilizado para encurtar as urls, o Open URL Shortener, não funciona corretamente em outro servidor web além do Apache (mesmo reescrevendo as regras do mod_rewrite). Como no mês de agosto migrei todos os sites quais administro para o Lighttpd, só tinha duas opções: adaptar seu o funcionamento para o novo servidor ou deixar de usá-lo. Até cogitei a primeira opção, mas pelo fato do código do mesmo não ser lá muito bem escrito ou documentado, preferi abandoná-lo e adotar uma solução própria.

A demora para implementar o novo sistema deve-se não apenas à minha falta de tempo, mas também porque demorei vários dias procurando uma forma simples e rápida de fazê-lo em Python ou Ruby on Rails. Eu amo Python, de coração. Creio que não exista outra linguagem tão poderosa com uma sintaxe tão simples quanto ela, mas uma coisa tem de ser admitida: Python não foi feito pra web. Tentei usando CGI e me senti de volta aos anos 1990. Não queria utilizar um framework inteiro, como o Django, pra fazer algo tão simples. Tentei o minimalista web.py e não fiquei completamente satisfeito com seu sistema de templates. E o Ruby on Rails, bem, é um dos frameworks mais chatos que já vi pra se instalar.

Diante das frustrações enfrentadas, decidir partir pro princípio KISS (Keep it simple, Stupid!). Utilizei os últimos dois dias pra relembrar o HTML que permaneceu 10 anos mofando em algum canto do meu cérebro e aprender PHP. Costumava dizer que não tinha interesse em aprender esta linguagem, pois todos os sistemas web que precisava já estavam prontos (dificilmente eu escreveria algo melhor que o Wordpress, por exemplo). Mas a vida… A vida é uma caixinha de surpresas. Procurei nos confins do Google e do GitHub por um sistema de encurtamento de URLs simples e não encontrei nada do jeito que queria. Não sobrou outra alternativa senão escrever um novo. Na verdade esta possibilidade se mostrou muito interessante, pois enfim eu pude me livrar do mod_rewrite.

Que fique claro que não estou questionando a utilidade do mesmo. Acho o mod_rewrite interessantíssimo, mas para pessoas que não dominam expressões regulares, como eu, reescrever cada conjunto de regras feito pro Apache para ser utilizado em outro servidor web é um parto. Minha sorte é que uma vez estava instalando o Wordpress utilizando o Lighttpd e percebi que os permalinks não eram “pretty urls”, mas ficavam com um horrível “/index.php/” na frente, pelo fato do mesmo não suportar as configurações via “.htaccess”. O mais surpreendente nisso tudo, foi que ao buscar uma solução para este problema descobri que não era necessário reescrever as regras do mod_rewrite. Basta apenas configurar o Lighttpd para redirecionar todas as requisições que resultarem no erro “404 (Not Found)” para o “index.php” (e este se vira pra servir a página certa).

Com esta abordagem, não apenas tenho um sistema de encurtamento de URLs verdadeiramente multiplataforma (tanto no quesito sistema operacional quanto servidor web), mas todo o estresse possivelmente causado pelo mod_rewrite é anulado. Com algo em torno de 100 linhas, o sistema está completamente funcional, suporta por volta de três quatrilhões e seiscentos trilhões (36^10) de combinações possíveis, tem prevenção contra SQL Injection, impede as URLs de criarem um loop infinito e as repetidas de serem encurtadas com hashs diferentes. Ainda não estão disponíveis ferramentas como estatísticas (já implementada), um painel de administração ou coisas do tipo, mas é provável que apareçam com o tempo. Assim que o instalador (via “install.php”) estiver pronto, disponibilizarei o código no GitHub.

As URLs antigas estão disponíveis no http://old.myhro.net/ (ex.: http://old.myhro.net/d).