giovedì 19 gennaio 2012

recuperare dati da apk android

Oggi pomeriggio mi è capitata una cosa sul terrificante andante.
Mentre stavo lavorando su un progetto html5 + phonegap invece di
eliminare una risorsa siccome ho il rm -rf facile ho eliminato la
directory del progetto (apk incluso). dopo essere rimasto impietrito
dal terrore per 15 secondi netti, visto che avevo ancora l'emulatore
funzionante con l'ultimo apk ancora runnante mi sono dato al recupero
e visto che questa situazione potrebbe succedere anche ad altri
diciamo che il recupero è sempplice si apktool e adb. Con adb si
recupera l'apk in maniera semplice.
Con:
adb remount
adb shell
si va sul file system dell'emulatore, poi sotto la directory data/app
cerchiamo la nostra applicazione, copiatevi il nome ;-)
poi scarichiamo apktool da http://code.google.com/p/android-apktool/,
che è un semplice jar...
quindi:
mkdir recupero
cd recupero
adb remount
adb pull /data/app/{nome_app.apk}
java -jar apktool.jar d {nome_app.apk}
dove {nome_app.apk} è il nome della vostra bella applicazione.
Semplice no?... stavolta ho sudato freddo...

sabato 7 gennaio 2012

servizio di shorturl scritto in 12h!

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!

PHP Slim Framework e TOPHOST

è qualche tempo che sto utilizzando una serie di microframework per i miei progetti web; fondamentalmente sinatra, flesk e slim (rispettivamente per ruby, python e php).
Visto la vasta diffusione di hosting php molti dei miei progetti si concentrano su questo linguaggio.
Dovo voglio andare a parare? e un secondo e che cavolo.
Dicevo.. Alcune dei miei clienti non vogliono nemmeno permettersi aruba e ripiegano sul veramente economicissimo tophost.
Ora il problema è che non sono riuscito a fare funzionare l'.htaccess standard di slim (e che utilizzo un pò ovunque) su tophost... il fatto che non sia possibile accedere all'error log del dominio mi ha lasciato poca libertà di esplorazione.
Dopo vari tentativi una htaccess minimale, ma funzionante l'ho trovato ;-)
(gioia gaudio e tripudio, pure il poster di darth fener sembra dirmi uè comessibravo)
allora cianciando le bande e bando alle ciance...

----- .htaccess testato solo con framework slim

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule . /index.php [L]

-----

In pratica se non sei un file o una directory fisica o la favicon ridirige all'index.php.
Questo file va messo nella directory htdocs del dominio tophost.

Ben'inteso che se qualcuno ha testato meglio slim con questo provider e ha soluzioni migliori le proponga pure!