In un precedente post ho spiegato come recuperare dati da un supporto danneggiato utilizzando il programma GNU ddrescue. Sfortunatamente se il recupero non è completo ci possono essere dei file danneggiati all’interno del materiale recuperato. In questo post utilizzeremo nuovamente il programma ddrescue per verificare quanto e quale del materiale sia stato effettivamente recuperato.
Creazione di un raid software livello 5 con Debian o Ubuntu
Nella gestione dei dati una delle tecniche migliori da utilizzare è sicuramente il RAID, in particolare tra tutti i livelli disponibili per questa tecnologia, quello che offre il miglior rapporto tra prestazioni, uso disco e ridondanza è sicuramente il livello 5. Esistono 3 tipologie di RAID a livello implementativo
- RAID hardware: disponibile sui server di fascia alta, è quello che offre forse le migliori performance in quanto le operazioni vengono eseguite tutte dal controller in maniera completamente trasparente, ma ha sicuramente i costi più elevati. Inoltre utilizzando questa tipologia di raid i dati sono legati al controller utilizzato e non possono essere utilizzati ad esempio in un’altra macchina senza che si utilizzi lo stesso controlloer
- FAKERAID: ovvero RAID hardware a basso costo. Questa è la tecnologia che viene usata sui controller di fascia bassa oppure implementata nelle motherboard dei computer desktop. Questa tecnologia viene chiamata fakeraid in quanto non è un RAID vero e proprio ma una parte dell’implementazione e della computazione viene lasciata alla CPU e l’interfacciamento con i dati avviene tramite un driver. Qui le performance sono decisamente più basse e rimane il problema del trasporto dei dati da un sistema all’altro. Inoltre non è detto che il driver di questi controller sia disponibile per tutti i sistemi operativi.
- RAID software: quello di cui discuteremo qui. Il maggiore vantaggio di questa tecnologia è il controllo assoluto sui propri dati, si possono aggiungere e rimuovere dispositivi a piacere e soprattutto si possono trasferire da una macchina all’altra. Inoltre è possibile eseguire le operazioni di manutenzione a sistema attivo, cosa che non è possibile negli altri due casi in cui è richiesto un reboot.
Geotag delle foto con iPhone, Everytrail ed exiftool
Una delle funzioni che ho apprezzato maggiormente di iPhoto 09 è l’aggiunta di “Places” (nella versione italiana “Luoghi”). Questa funzione si interfaccia con Google Maps per mostrare una mappa interattiva delle proprie fotografie e dei luoghi dove esse sono state scattate.
Per far si che le foto vengano mostrate sulla mappa è necessario però che le immagini contengano i dati GPS negli appositi campi EXIF. Questo può essere ottenuto in vari modi, ad esempio iPhone, essendo dotato di un modulo GPS interno, inserisce automaticamente tali dati nelle proprie foto. Altre macchine fotografiche di fascia medio alta hanno integrato un sensore GPS oppure dispongono di un interfaccia hardware per collegare un ricevitore esterno, normalmente questo comporta una spesa aggiuntiva che con un iPhone ed un po di sforzo possiamo evitare.
Cambiare la posizione delle screenshot in Snow Leopard
Una funzione molto comoda di OS X è quella di poter creare con semplicità screenshot di quello che si visualizza a schermo. Per utilizzare questa funzionalità si può usare il programma Istantanea presente nella directory Applicazioni – Utility oppure delle comode shortcut da tastiera. Personalmente preferisco il secondo metodo in quanto una volta imparate le scorciatoie è sicuramente di più immediato richiamo.
A differenza del programma Istantanea, utilizzando le combinazioni di tasti non è possibile decidere dove saranno salvate le immagini prodotte, queste saranno registrate tutte sul Desktop. In alcuni casi può essere desiderabile cambiare la posizione di default per mantenere un pò di ordine sulla propria scrivania.
Database profiling con Firebug in Zend Framework
Un metodo rapido e veloce per tenere sott’occhio quello che succede nel vostro database durante l’esecuzione di applicazioni Zend Framework è quello di utilizzare la classe Zend_Db_Profiler_Firebug. A differenza del plugin ZFDebug, il setup di questa classe è immediato e non richiede l’installazione di files aggiuntivi, ma solamente un paio di direttive nel file application.ini e delle due estensioni per Firefox Firebug e Firephp (che a prescindere da questo utilizzo sono indispensabili per chi sviluppa siti web di qualunque natura).
Migliorare le performance del proprio sito PHP con l’estensione APC
Se avete un sito web realizzato in PHP e volete raddoppiarne le performance con un semplice ma significativo passo, allora la soluzione giusta è l’estensione PECL APC.
Come molti sapranno PHP è un linguaggio interpretato, questo fa si che ad ogni singola richiesta di una pagina web, l’interprete PHP debba leggere il codice nei files memorizzati su disco, valutarne la correttezza, trasformarlo in istruzioni eseguibili, trasformare i nomi di variabili e funzioni in indirizzi di memoria, ed eseguire le istruzioni specificate.
Inoltre per chi fa uso di framework o librerie particolarmente corpose, c’è l’overhead dovuto alle dozzine di files contenuti in queste librerie. Per esempio Zend Framework è composto da più di 2500 files, e spesso e volentieri per istanziare un singolo oggetto di una data classe è necessario che l’interprete legga decine di files.
Usare Google CDN per caricare i framework javascript
Una Content Delivery Network (in breve CDN), è una rete distribuita per la distribuzione di contenuti al grande pubblico. Vediamo come è perché utilizzare Google come CDN per il caricamento dei più diffusi framework javascript nelle nostre applicazioni web.
Spesso capita di dover utilizzare un framework javascript per aggiungere funzionalità 2.0 al proprio sito, in tale contesto su siti sviluppati ad hoc è prassi comune includere i files javascript contenenti le librerie direttamente nel proprio dominio.
Questa procedura può e dovrebbe essere evitata andando ad utilizzare le versioni di tali librerie messe a disposizione da Google nella propria rete di distribuzione. Utilizzare tale approccio ha innumerevoli vantaggi tra i quali
- La rete di Google è distribuita e replicata attraverso innumerevoli host dislocati in tutto il mondo, nel risolvere l’hostname i dns di Google reindirizzeranno la richiesta al server geograficamente più vicino alla locazione del utente che fa richiesta della risorsa, garantendo tempi di download e di latenza migliori rispetto al vostro webserver.
- Più siti utilizzano questa tecnica (e ci sono già innumerevoli siti e portali che lo fanno, incluse le principali piattaforme di blogging), maggiore è la probabilità che la stessa richiesta che il browser dell’utente effettua sia già stata eseguita in precedenza. Dal momento che Google indica al browser di mantenere i file scaricati in cache per un anno, nella stragrande maggioranza dei casi il download del file richiesto non sarà neppure necessario, trovandosi esso in cache.
- Gli aggiornamenti dei framework sono gestiti da Google che mette a disposizione le ultime release stabili delle librerie disponibili.
- Con alcuni contratti di hosting la banda può essere una risorsa preziosa, in questo modo si svincola il proprio server dal dover inviare i files javascript portando ad un risparmio di banda notevole. Ad esempio, la versione attualmente disponibile di prototype pesa 143KB, mentre la versione compressa di jQuery pesa 56KB. Moltiplicate per il numero di utenti ed la banda impiegata cresce a dismisura.
Recuperare i propri files da un disco danneggiato
Mi è appena capitato di dovermi cimentare in questa impresa per fare un favore ad un amico. Come al solito ci si accorge di non aver fatto i backup dei propri files importanti sempre quando e troppo tardi per recuperarli, o quasi. Nella fattispecie si trattava di una pendrive (piuttosto attempata) che non risultava più leggibile con nessun sistema operativo/computer.
Inserendola in un computer con Windowx XP compariva in esplora risorse il messaggio “L’unità F: non è formattata, formattare?”
Fortunatamente la chiavetta mi è capitata in mano prima che qualcuno rispondesse avventatamente si a tale domanda.
Come recuperare i dati
La procedura che ho usato in questo caso è abbastanza semplice, richiede solamente un paio di programmi per provare il recupero testdisk e photorec. In più per lavorare con un buon margine di sicurezza e lasciarsi aperta la strada per tentare altri approcci di recupero conviene non lavorare direttamente sul dispositivo, ma su una sua immagine salvata su un altro harddisk. A questo scopo ci sono varie soluzioni, ma quella con cui mi sono trovato meglio è dd_rescue.
Configurare Zend_Mail usando application.ini
In un precedente articolo ho parlato di come scrivere un’application resource per Zend Framework per utilizzare il plugin ZFDebug. In questo articolo vedremo come utilizzare lo stesso meccanismo per un’operazione più semplice ma di utilizzo molto più frequente, ovvero configurare il default transport per l’invio di messaggi di posta elettronica tramite il componente Zend_Mail.
Normalmente per configurare l’invio dei messaggi si utilizza il seguente codice (ad esempio nel bootstrap):
$config = array('auth' => 'login',
'username' => 'myusername',
'password' => 'password');
$transport = new Zend_Mail_Transport_Smtp('mail.server.com', $config);
Zend_Mail::setDefaultTransport($transport);
Per liberarci di questo codice in ogni applicazione che utilizzi la classe Zend_Mail ho scritto una classe Application Resource da inserire nella propria libreria. Il codice della classe è piuttosto semplice


