O SAPO sempre se prezou pela inovação e experimentação e esta semana lança um novo serviço: o Puny URL.
Apesar de à primeira vista o Puny URL parecer apenas um outro compactador de URLs, traz uma inovação excelente: Unicode.
O Puny URL compacta um URL de duas formas diferentes, retornando um URL compacto típico e um outro mais compacto ainda, fazendo uso de caracteres Unicode.
Para uma melhor compreensão do serviço colocamos algumas questões à equipa da Pesquisa do SAPO, que desenvolveu este sistema:
Q: Quantos URLs conseguem ter na plataforma?
R: Os que quiseres :) As PunyURLs em Unicode permitem ter aproximadamente 41,000 URLs únicas comprimidas num único caracter; com dois caracteres existem 1,7 mil milhões de combinações possíveis.
Q: Este serviço fornece alguma API para developers que queiram integrar este serviço nas suas aplicações?
R: Sim! Fornecemos uma API nos Web Services do SAPO em http://services.sapo.pt/Metadata/Service/PunyURL e fornecemos uma "Bookmarklet" que os utilizadores podem acrescentar à sua barra de favoritos para criar automaticamente uma PunyURL para a página que estejam a ver.
Q: Que casos práticos de utilização prevêem?
R: O Twitter, o envio de URLs por SMS, dizer um endereço na internet que é complicado pelo telefone... as URLs no formato http://br3.sl.pt são bastante práticas para soletrar - não há maiúsculas nem minúsculas. Essencialmente situações em que a brevidade seja importante. No caso da PunyURL em Unicode poupamos *imenso* espaço, e pode ser útil em serviços como o Twitter, em que se clica na URL.
Q: Como é que isto funciona por baixo e que tecnologia está envolvida?
R: Os serviços de compressão existentes de URLs têm uma base de dados por detrás que mapeia a URL enviada para um número. A URL comprimida é o número convertido de base 10 - o nosso sistema de algarismos - para base 62 - 26 letras maíusculas + 26 letras minúsculas mais os dez algarismos.
O número 500,000 é assim convertido para '264w' em base 62.
No PunyURL funcionamos de forma ligeiramente diferente em *ambas* as URLs comprimidas que fornecemos.
Os browsers modernos permitem caracteres acentuados, como é o caso do domínio da Força Aérea Portuguesa, http://www.forçaaérea.pt/.
Na realidade, o domínio 'forçaaérea.pt' é convertido em 'xn--foraarea-u0aw.pt', através dum sistema de codificação chamado "Punycode", definido no RFC 3492.
Estas regras de conversão permitem que caracteres Unicode europeus, russos e asiáticos possam ser utilizados em domínios.
No PunyURL utilizamos os caracteres dos diversos planos asiáticos, o que nos permite definir o número 500,000 em apenas dois caracteres: 㐋촔.
Assim o serviço pode armazenar milhões de endereços dos nossos utilizadores e continuar a fornecer domínios curtos sem termos de reciclar endereços, o que significa que ficam sempre permanentes.
No caso dos endereços em ASCII, http://b.oi.sl.pt/, utilizamos um truque de DNS chamado "Wildcarding" que permite que endereços não criados vão parar a determinado site. É o que acontece há já alguns anos com o SAPO: http://perl.sapo.pt/ resulta numa pesquisa pela palavra 'perl', porque o domínio .sapo.pt aponta para a Pesquisa do SAPO quando não existe um hostname definido.
No caso do www.sapo.pt, este está definido e não vai à pesquisa do SAPO.
Q: Que protecções contra spam foram implementadas?
R: Verificamos quais os hosts de destino, não permitimos referências circulares e monitorizamos a sua utilização. No entanto, disponibilizamos o serviço de "preview"; se se acrescentar um '-' ao final de uma PunyURL consegue-se ver qual o destino da mesma sem ter de visitar o destino.
Por exemplo: http://b.kp.sl.pt/-.
Para gerar uma Puny URL a partir de qualquer página na Internet arraste o seguinte link para a sua barra de favoritos: PunyURL.