Un progetto collaterale: PUS, l'accorciatore di url personale
Qualche tempo fa, leggendo uno dei tanti articoli che criticano i sistemi per accorciare gli url (come tinyurl, snipurl, bit.ly, … ce ne sono milioni), mi è venuta in mente una parziale soluzione ad alcuni dei problemi proposti: gestire in proprio un url shortener. L’idea risolve (in maniera parziale, come dicevo prima) due problemi: la durata nel tempo degli url che creiamo, e la responsabilità di chi linka inopinatamente siti pericolosi per la sicurezza di chi vi accede. Per il primo punto, usando un servizio in proprio è possibile essere certi che gli url continueranno a funzionare finché lo vorremo noi, e non finché il servizio esterno scelto continuerà ad operare; per il secondo problema la risposta è che in un sistema privato di accorciamento si sa di chi è la responsabilità nell’aver creato un url malevolo, a meno di attacchi al sistema di accorciamento stesso.
Per questi motivi e per curiosità mia, è iniziato lo sviluppo di PUS, che sta molto banalmente per Persona Url Shortener.
Che faccia ha
Giusto un’immagine (tra l’altro nemmeno aggiornatissima), per mostrare la parte di PUS che riporta le statistiche dei link, altre immagini le potete trovare sulla pagina della mia installazione di PUS, che incidentalmente è anche l’home page del «progetto», ovvero qui.
Nella parte di inserimento link nuovi non c’è molto da vedere, giusto qualche campo per incollare l’url ed eventualmente un titolo, ed il pulsante per accorciare il tutto.
Scelte tecniche
PUS è un software realizzato in un php quasi «old style»: niente framework, niente pattern MVC, niente astrazione del db (e quindi o MySQL o niente). L’unico «scivolone» nella modernità è l’interfaccia JavaScript (AJAX) abbastanza spinta, per cui ho utilizzato il toolkit Dojo. Questo perché? Per il semplice motivo che volevo realizzare un’applicazione che avesse un’«impronta» sulle risorse molto piccola. Infatti PUS al momento (senza alcune ottimizzazioni che farò a breve), occupa circa 150 KB.
Per quello che riguarda l’algoritmo di accorciamento degli url, ho privilegiato la semplicità alla «sicurezza». In questo contesto con sicurezza intendo l’impossibilità, partendo da un url accorciato, di risalire a tutti gli altri. In PUS gli url sono infatti strettamente consecutivi, quindi è un attimo vedere gli url accorciati precedenti: basta «tornare indietro» con le lettere e le cifre. Ho ritenuto che questo non fosse un problema per me, e quindi gli url sono semplicemente la conversione in base 32 (10 cifre + alfabeto inglese) dell’indice progressivo con cui il link è salvato sul database. Un meccanismo che permette di mantenere una grande semplicità e rapidità nella risoluzione degli url quando vengono acceduti.
PUS è open source
Durante l’implementazione di PUS, ho deciso che sarebbe stato bello rilasciare il codice al pubblico, per permettere a tutti gli interessati l’installazione in proprio. Del resto, anche se PUS è stato modellato sulle mie esigenze, presenta pur sempre un set di funzionalità piuttosto generiche, che possono tornare utili anche ad altri.
Creare un accorciatore di url funzionante non è un lavoro lungo: un programmatore in un paio d’ore può realizzarne uno senza grandi difficoltà. Però se aggiungiamo la creazione di una interfaccia ed altre funzionalità, immancabilmente il tempo necessario inizia a crescere. E poi, se qualcuno l’ha già fatto per noi, perché non sfruttarlo e basta? Ecco perché mi sono deciso a rilasciare pubblicamente il lavoro: PUS non è un «gran pezzo di codice», ma può comunque tornare utile e far risparmiare un po’ di tempo a qualcuno.
Al momento PUS non è ancora pronto per il download diretto, manca ancora il wizard di installazione ed alcune ottimizzazioni, tuttavia potete già trovarlo su Launchpad (è necessario fare un pull con Bazaar per scaricarlo), rilasciato con licenza GNU GPL v3. Nei ritaglissimi di tempo sto provvedendo a finirlo, e pubblicherò uno zip «pronto all’uso» il prima possibile. Se poi qualcuno vuol anche partecipare allo sviluppo, beh, Launchpad serve proprio per quello!
Conclusione
È già da più di un mese che uso PUS con soddisfazione sul mio dominio, e non appena avrò terminato e pubblicato la versione 0.1, ho già qualche idea per la 0.2. Mi sono divertito a realizzare PUS, e lo porterò avanti fintanto che ne avrò voglia. L’url shortening ha parecchi difetti, come dicevo in apertura, ma se usato nei contesti corretti è senza dubbio comodo se non addirittura necessario (come su twitter). Vi terrò aggiornati su queste pagine delle novità riguardanti il progetto.
Articoli simili:

Rss
