Per un mio studio sui microframework (studio orizzontale da css a js, da sql a php), ho deciso di fare un piccolo tour de force e realizzare un servizio di rimpicciolimento degli url utilizzando slim microframework come base (come middle-end diciamo), utilizzare framework css e js sul front-end e volevo utilizzare notorm.php per accedere ai dati, ma le query erano talmente semplici che mi è venuto più naturale scrivere l'sql quindi ho optato per utilizzare PDO e buona notte... (magari in una futura versione passo a notorm).
Torniamo al lato client, invece di utilizzare jquery ho optato per ender una libreria no-library che permette di costruirsi la propria versione in maniera modulare... be a me serviva fondamentalmente manipolazione del dom, ajax ed eventi, ho ottenuto un 19k minified gzipped contro i 31k di jquery minified gzipped (ho risparmiato 12k perché come dice gozzilla size matter)
perchì fosse interessato il mio build di ender per questo progetto è:
ender build domready qwery bean bonzo reqwest
(per installare ender servono node e npm)
Per i css essendo io un non-designer (cioè sono capace di buttare giù layout in css ci mancherebbe ma ci metto giusto giusto quei 6-7 giorni, meglio fare altro no?) avevo testato bootstrap di twitter ma visto che avevo già rotto le scatole abbastanza a fat per richieste su ender ho optato per toast.
Infine ho usato un semplice sqlite3. (magari in una prossima versione valuto altri db, comunque con pdo alla fine è solo una stringa di configurazione)
L'algoritmo per la generazione degli hash degli url accorciati è la cosa più stupida che mi è venuta in mente è utilizzare semplicemente un indice progressivo in base 36 che utilizza quindi numeri e lettere in maniera case insensitive, quindi facilitare la vita a chi vuole scrivere magari tutto maiuscolo o minuscolo senza problemi.
è una buona idea? nzomm' in base di 62 ci si guandagnava na cifra..
Comunque anche in base 36 già con 4 lettere si gestisce:
36*36*36*36-1 => 1.679.615 redirezioni visto che non voglio andare a competere con goo.gl diciamo che ci posso stare.
Il codice grazie ai microframework che semplificano la vita è molto semplice mappo 3 azioni: index, /:hash, /short/ (rispettivamente in get,get e post) sulle funzioni: servi il modulo, recupera _link_per_hash_da_db_e_ridirigi e genera_hash_da_url.
Un po di ajax un pò di css e zack il gioco è fatto.
Ho messo tutto su github, è una versione preliminare ed essendo scritta in tuor de force spero non ci sian castronerie.
https://github.com/micheg/piqo
Ah oh dimenticavo c'è pure: una demo qui.
Aggiunta dell'ultimora:
Mi han fatto notare che un servizio di short url a cui serve il www davanti è inutile... ok bè lo so, ho lavorato sui dns vediamo quanto ci mette a propagarsi la modifica!
Torniamo al lato client, invece di utilizzare jquery ho optato per ender una libreria no-library che permette di costruirsi la propria versione in maniera modulare... be a me serviva fondamentalmente manipolazione del dom, ajax ed eventi, ho ottenuto un 19k minified gzipped contro i 31k di jquery minified gzipped (ho risparmiato 12k perché come dice gozzilla size matter)
perchì fosse interessato il mio build di ender per questo progetto è:
ender build domready qwery bean bonzo reqwest
(per installare ender servono node e npm)
Per i css essendo io un non-designer (cioè sono capace di buttare giù layout in css ci mancherebbe ma ci metto giusto giusto quei 6-7 giorni, meglio fare altro no?) avevo testato bootstrap di twitter ma visto che avevo già rotto le scatole abbastanza a fat per richieste su ender ho optato per toast.
Infine ho usato un semplice sqlite3. (magari in una prossima versione valuto altri db, comunque con pdo alla fine è solo una stringa di configurazione)
L'algoritmo per la generazione degli hash degli url accorciati è la cosa più stupida che mi è venuta in mente è utilizzare semplicemente un indice progressivo in base 36 che utilizza quindi numeri e lettere in maniera case insensitive, quindi facilitare la vita a chi vuole scrivere magari tutto maiuscolo o minuscolo senza problemi.
è una buona idea? nzomm' in base di 62 ci si guandagnava na cifra..
Comunque anche in base 36 già con 4 lettere si gestisce:
36*36*36*36-1 => 1.679.615 redirezioni visto che non voglio andare a competere con goo.gl diciamo che ci posso stare.
Il codice grazie ai microframework che semplificano la vita è molto semplice mappo 3 azioni: index, /:hash, /short/ (rispettivamente in get,get e post) sulle funzioni: servi il modulo, recupera _link_per_hash_da_db_e_ridirigi e genera_hash_da_url.
Un po di ajax un pò di css e zack il gioco è fatto.
Ho messo tutto su github, è una versione preliminare ed essendo scritta in tuor de force spero non ci sian castronerie.
https://github.com/micheg/piqo
Ah oh dimenticavo c'è pure: una demo qui.
Aggiunta dell'ultimora:
Mi han fatto notare che un servizio di short url a cui serve il www davanti è inutile... ok bè lo so, ho lavorato sui dns vediamo quanto ci mette a propagarsi la modifica!
Commenti
http://piqo.it/goo/?url=http://www.piqo.it/goo/?url=http://www.piqo.it/
e tophost restituisce errore 406 :-D
cmq mi pare un ottimo lavoro!
Volevo chiederti ma slim framework ha anche un layer per connettersi ai database? thanks
ciao
* notorm
e poi miei preferiti (e che vanno a braccetto)
* idiorm e paris
http://j4mie.github.com/idiormandparis/
e scusa per la risposta tardiva