martedì 31 marzo 2015

OpenPilot problemi di aggiornamento della scheda CC3D

Sa qualche tempo mi stanno interessando i quadcopter. Dopo aver giocato con uno precostruito sto analizzando e studiando come realizzarne uno in casa utilizzando i componenti espandibili disponibili sul mercato.

Dopo varie ricerche per la scheda del gestore motore arrivo a trovare questo ottimo progetto open.

Compro una scheda CC3D su Hobbyking, scarico il software (disponibile sia Linux che Windows) dal sito di OpenPilot e tento di aggiornare la versione del firmware della scheda... disastro.. quando arrivo ad aggiornare mi segnala che non riesce a eseguire l'upgrade.

Alla fine risolvo con un semplice trick..

Inserisco la scheda, vado sulla parte firmware del software, in basso a sinistra scollego la scheda dal bottone. La scheda viene riconosciuta come CC3D. a questo punto stacco la usb di connessione, premo "update" il software mi chiede di inserire la usb, inserisco la usb e finalmente l'update del firmware funziona!!!


lunedì 23 marzo 2015

Retrofit e Log4j

Retrofit è un ottimo client per gestire chiamate rest.

Utilizzo la libreria con successo sia su java app che su android.

Il problema è riuscire a wrappare i log su log4j usato comunemente su tutte le app java.

la soluzione dopo richiesta su stackoverflow arriva velocemente:
unico problema è che non è possibile differenziare il livello di logging.



[via]

giovedì 12 marzo 2015

Migrazione a MongoDB 3


Finalmente è arrivato MongoDB 3.0 !!!

Eseguo subito qualche test di migrazione!!!

Per migrare alla versione 3 bisogna almeno prima passare le eventuali versioni 2.4 alla 2.6. 

La migrazione è leggermente complessa, si tratta di cambiare l'engine di elaborazione su fs con http://www.wiredtiger.com/ azienda comprata da mongo per gestire in modo velocemente le transazioni e ottimizzare le risorse su disco. 


- test di migrazione su db non in replica/cluster. 

- Prendo un succoso dump da 21GB. Ripristinato su un mongo 2.6.6 (circa 2 ore di restore)

situazione di partenza:

DB1 0.5GB
DB2 27.4GB
DB3 0.03GB
DB4 2.49GB
local 0.03B

cartella di storage 40GB

- Cambio l'engine al mongo 3.0 e forzo il motore a quello standard:

/bin/mongod --dbpath /mongo/mongodatastandalone/ --logpath "standalone_3.0.log" --storageEngine mmapv1

la partenza è lenta esegue dei recovery del journal (40 secondi)

- Eseguo un dump dei dati (35 minuti circa) :

/mongodump --out /backup_mongo_3/

rimango basito... il mongodump adesso lavora con processi paralleli!!!
il dump generato è circa 21GB

- Start del mongo che punta ad una cartella di dati diversa da quella precedente specificando il motore di engine nuovo.

/bin/mongod --dbpath /mongo/mongodatastandalone_3/ --logpath "standalone_3.0.log" --storageEngine wiredTiger


- Eseguo la restore dei dati sul tiger (2 ore e 10 minuti circa):

mongorestore /backup_mongo_3/

siamo passati da uno storage su disco di 40GB ad uno di 17GB


il prossimo passo sarà di testare la migrazione delle repliche.
Per evitar di farmi una migrazione per ogni server replica si potrebbe eseguire tutto su un nodo singolo sganciando prima le repliche e poi attivare le repliche su nodi di mongo 3 pulito in modo da far replicare i dati in modo automatico dal mongo.


problema per le app:
il java driver attualmente è alla beta 3 - https://github.com/mongodb/mongo-java-driver/releases