Estrarre la rubrica da un BlackBerry con software danneggiato

Un’amica mi ha sottoposto un dispositivo BlackBerry 9780 per un’analisi. Lo scopo era quello di recuperare il contenuto integrale della rubrica contatti, in quanto il software di sistema era pesantemente danneggiato e il dispositivo faticava ad accendersi. Dopo alcuni minuti di inattività, crashava improvvisamente con un messaggio di tipo App Error.

La prima cosa da fare, in questo caso, è rimuovere la batteria e reinserirla, per effettuare un reset. Dopo diversi tentativi in cui il dispositivo sembrava bloccato all’avvio, ho verificato che effettivamente il sistema si avviava, mettendoci però 11 minuti. Alla fine del caricamento, comparivano numerosi messaggi di errore relativi al software basato su Java.

Schermata di caricamento ed errori del software
Schermata di caricamento ed errori del software

In questi casi è possibile premere ripetutamente OK per raggiungere il menu del telefono. Dopo aver effettuato questa operazione, sono iniziate le difficoltà reali:

  • la rubrica mostrava la lista dei contatti (nomi) ma non era possibile aprirli per visualizzare i numeri
  • le impostazioni di sistema non erano accessibili e facevano crashare il dispositivo
  • non si riusciva ad effettuare un accoppiamento via bluetooth
  • il programma BlackBerry Desktop Manager, oltre a essere solo per Windows o Mac, non riusciva a connettersi al dispositivo

Il fatto di non poter aprire le impostazioni di sistema significava non potersi collegare al Wi-Fi per tentare di esportare i contatti tramite qualche app. I problemi col bluetooth lasciavano il collegamento USB come unica speranza.

Il mio piano infatti era quello di effettuare un backup con il software ufficiale di BlackBerry e poi esportare la rubrica. Dopotutto è possibile usare Windows in macchina virtuale (come quelle fornite da Microsoft sul sito Modern.ie) oppure creare una USB avviabile tramite le varie Release Candidate per sviluppatori. Peccato solo per l’errore nefasto restituito da BlackBerry Desktop Manager per Windows:

BlackBerry® Desktop Manager non è in grado di comunicare con il dispositivo BlackBerry connesso. Se il dispositivo si sta riavviando oppure la batteria è completamente scarica, fare clic su Riprova per tentare di ristabilire la connessione una volta completato il riavvio. In caso contrario, per risolvere il problema potrebbe essere necessario aggiornare BlackBerry® Device Software.

Come spesso accade, mi sono reso poi conto che Linux poteva venire in aiuto e salvare la situazione. Per evitare di installare troppo software sul mio portatile, ho creato una chiavetta USB avviabile con Xubuntu 14.10, assicurandomi di attivare la persistenza per poter salvare i dati recuperati. Ad ogni modo, qualsiasi distribuzione dovrebbe andare bene.

Per evitare problemi, ho effettuato nuovamente il reset del BlackBerry. Nel frattempo ho fatto partire Xubuntu. Una volta avviato il sistema, ho installato Barry, un software open source per gestire i dispositivi BlackBerry:

sudo apt-get install barrydesktop

Ho collegato il BlackBerry col cavo USB e ho avviato il programma con i permessi di amministratore, per evitare errori di accesso negato:

sudo barrydesktop

Barry ha individuato il dispositivo senza batter ciglio e mi ha chiesto di dargli un nome. Ho cliccato su Config… e poi sul primo tasto Configure… (quello relativo al backup) per selezionare tutti i campi disponibili. In realtà era di fondamentale importanza recuperare soltanto la rubrica, ma ero curioso di vedere quanto si potesse effettivamente estrarre.

Selezione degli elementi da estrarre
Selezione degli elementi da estrarre

Dopo aver salvato le mie scelte, ho dovuto solo premere il tasto Backup nella finestra principale:

Barry durante l'operazione di backup
Barry durante l’operazione di backup

Il processo si è interrotto “brutalmente” al 42%, probabilmente a causa degli errori software. Barry ha mostrato un messaggio di errore indicando quali campi non erano stati estratti. Ha quindi provveduto a salvare quello che era stato recuperato, incluso il contenuto integrale della rubrica. Il BlackBerry è poi crashato nuovamente.

Dato che il processo era stato avviato come amministratore, è stato necessario copiare i file dalla cartella dei backup alla home dell’utente che stavo utilizzando:

sudo cp /root/.barry/backup ~
sudo chmod a+r ~/backup

L’obiettivo finale era esportare i contatti in un formato “universale” che si potesse agevolmente aprire e magari importare su Gmail. Dato che Barry effettua il backup in un formato proprietario, ho utilizzato un comodo script chiamato BlackBerry-Address-Book-to-CSV.

È sufficiente scaricare il file ZIP, estrarlo ed eseguirlo sul file di backup. Si tratta solo di dare pochi comandi:

wget https://github.com/mintern/BlackBerry-Address-Book-to-CSV/archive/master.zip
unzip master.zip
cd BlackBerry-Address-Book-to-CSV-master
./bbab2csv ~/backup/[PIN]/[NOME].tar.gz

Al posto di [PIN] e [NOME] vanno inseriti il PIN del dispositivo e il nome dell’archivio creato da Barry, che varia di volta in volta. L’output in formato CSV viene mostrato nel terminale, se volete salvarlo su un file potete ripetere l’ultimo comando ridirezionando l’output:

./bbab2csv ~/backup/[PIN]/[NOME].tar.gz > ~/contatti_BB.csv

Il file risultante si trova nella home e si può aprire tranquillamente con LibreOffice oppure importare in un account Gmail, per sincronizzarlo con un dispositivo Android. Ovviamente va salvato in un posto sicuro, specialmente se si sta usando Linux su una live USB.

Il procedimento di recupero con Linux, alla fine, è stato molto veloce. La maggior parte del tempo è stata persa nei vari riavvii del dispositivo e tentando di far funzionare il software ufficiale di BlackBerry, che non è stato di alcun aiuto per estrarre i dati.

Tuttavia, BlackBerry Desktop Manager si è rivelato utile perlomeno per far tornare funzionante il telefono. Una volta collegato il cavo USB e ricevuto il messaggio di errore, ho cliccato su Aggiorna. Alla proposta di fare un backup ho risposto di no (altrimenti si sarebbe bloccato di nuovo) e ho confermato di voler formattare il dispositivo.

Alla fine del processo, il BlackBerry era perfettamente funzionante e tristemente vuoto. Avviando di nuovo Linux, con Barry ho potuto ripristinare la rubrica di cui era stato fatto il backup in precedenza.

La morale che si può trarre da questa esperienza è che da un BlackBerry con software danneggiato a volte si possono recuperare dei dati. Inoltre, non sempre l’applicazione ufficiale è la scelta migliore. Anzi, Barry consente di accedere almeno a una parte delle informazioni in casi in cui BlackBerry Desktop Manager non è in grado di collegarsi al dispositivo, con l’ulteriore vantaggio di non essere costretti a usare Windows.

Ridurre l’alto consumo di CPU di Spotify

A molti utenti è capitato di riscontrare un massiccio consumo di CPU da parte di Spotify, la migliore applicazione per ascoltare musica in modo legale, anche in situazioni apparentemente “tranquille”. Per esempio, ecco come si comportava sul mio portatile con una canzone in pausa:

Massiccio consumo di risorse di due processi di Spotify
Massiccio consumo di risorse di due processi di Spotify

Il problema, almeno nel mio caso, deriva da alcuni elementi dell’interfaccia grafica che richiedono una considerevole potenza di calcolo per essere disegnati. L’interfaccia di Spotify è basata su Webkit, un componente che troviamo anche all’interno di alcuni browser (come Chromium), tuttavia non è molto performante.

Ho trovato la soluzione al problema ispirandomi a un messaggio trovato sul forum ufficiale. Si tratta solo di disattivare due opzioni. 🙂 Andate su Visualizza e togliete le spunte da Feed attività e Illustrazione grande brano in riproduzione. Ecco fatto!

Il risultato dopo la cura è il seguente:

Una situazione molto più tranquilla
Una situazione molto più tranquilla

Aggiornamento: poco dopo aver scritto questo post, ho notato che anche la pagina principale (intitolata Naviga) contribuisce ad appesantire la CPU. Pertanto vi consiglio di tenere aperta un’altra pagina, per esempio Album mentre ascoltate la musica. 😉

Ordinare script ed eseguibili su Linux con una comoda directory

I sistemi operativi Linux sono eccellenti e versatili. Hanno una lista talmente lunga di pregi e vantaggi che qualcuno ci ha addirittura fatto un sito web. Elencarli tutti risulterebbe impossibile, tuttavia uno dei miei preferiti è la capacità di personalizzazione.

Che si tratti di aggiungere temi, indicatori sulla barra di stato, software o anche piccoli comandi (script) per effettuare compiti ripetitivi, c’è solo l’imbarazzo della scelta. Il terminale fornisce una interfaccia a riga di comando che può tornare utile a principianti ed esperti. Ve ne avevo parlato in passato: alcuni comandi sono molto semplici e si imparano in fretta.

I programmi e gli script

La maggioranza dei programmi su Linux è disponibile in comodi pacchetti, scaricabili direttamente dal gestore pacchetti (o “centro software”, oppure altri nomi simili). Tuttavia esistono degli strumenti che vengono distribuiti come eseguibili da estrarre in una cartella e lanciare subito.

Alcuni sono software un po’ di nicchia, come ad esempio K2pdfopt. Si tratta di un eccellente programma open source in grado di reimpaginare completamente un PDF anche scannerizzato e ottimizzarlo per un lettore ebook o uno smartphone. Altri sono programmi molto più conosciuti e “grossi” come l’IDE Eclipse.

Esistono poi innumerevoli script sparsi in giro per il web. Queste vere e proprio gemme si trovano solitamente su siti e blog specializzati e possono essere sotto forma di script già pronti oppure di un elenco di comandi Linux. Nel secondo caso basta metterli in un file con estensione sh e renderli eseguibili per poterli richiamare ogni volta.

Per esempio, potreste essere interessati a un metodo per pulire le tracce di Wine. Cercando sul web trovate questo mio articolo e lanciate i 5 comandi. Per evitare di cercarli di nuovo e copiarli ogni volta, potete creare un semplice file chiamato cleanwine.sh con il seguente contenuto:

#!/bin/bash
rm -rf ~/.config/menus/applications-merged/wine-*
rm -rf ~/.local/share/applications/wine*
find ~/.local/share/icons/ -name "*wine*" | xargs rm -rf
rm -rf ~/.local/share/desktop-directories/wine-*
rm -rf ~/.wine*

In sintesi, dovete includere i comandi desiderati preceduti da una riga chiamata shebang, che specifica quale shell deve essere eseguita. Il file non ha ancora il permesso di essere eseguito. Ciò si può risolvere da terminale, dando:

chmod +x cleanwine.sh

Oppure cliccando col destro e accedendo alle proprietà del file, alla scheda permessi.

Questo lo potete fare con molti altri comandi che trovate in rete, per evitare di ricordare a memoria sequenze lunghissime e impossibili da ripetere senza errori. Esistono naturalmente anche esempi più complicati, come i comandi che richiedono parametri (se agiscono su file o altro). Il mio era solo un esempio, ci vorrebbe un altro articolo per trattare approfonditamente tutto ciò.

Lo stesso discorso vale per molti script in Python formati da un singolo file, come ad esempio il mio script per usare il servizio gratuito di VPNGate.

Lanciare i propri script o programmi

Quello che abbiamo visto finora è bello e interessante, sorge però un problema. Voi potete avere scaricato k2pdfopt o altri eseguibili, oppure potete aver scritto (o salvato dal web) qualche script come cleanwine.sh. Però il vostro sistema non sa che esistono. Intendo dire che, provando a lanciare un comando da terminale, otterrete un errore:

$ k2pdfopt
k2pdfopt: comando non trovato

Finché è uno solo, va bene anche richiamare il percorso completo, supponendo di aver dato i permessi di esecuzione:

/home/andrea/Scaricati/k2pdfopt # oppure ~/Scaricati/k2pdfopt

Questo però non è pulito. Immaginate di avere anche 4-5 script o eseguibili: intasereste qualche cartella adibita ad altro (per esempio Scaricati) e poi dovreste ricordare l’intero percorso ogni volta. Impraticabile.

La soluzione è creare una o più directory in cui mettere gli script e poi “informare” il vostro sistema della sua esistenza.

Organizzare tutto con una directory

Con questa guida intendo spiegarvi l’organizzazione che utilizzo io. Ovviamente potete variarla e adattarla alle vostre esigenze. Sul mio portatile, ho creato nella home una cartella chiamata bin, che contiene anche altre sottocartelle:

$ ls -1d ~/bin/*/
/home/andrea/bin/eclipse/
/home/andrea/bin/sage/
/home/andrea/bin/script/

In sintesi, ho una directory dove ho estratto l’ultima versione di Eclipse, una dove tengo installato Sage e una cartella dove tengo due dozzine di script di vario genere. Ho anche qualche altro software che non ho incluso nell’output, per evitare confusione.

L’idea di base è semplice: includere la maggior parte degli script (in Bash e in Python) dentro a script, alcuni eseguibili come k2pdfopt direttamente in bin e i programmi grossi nelle proprie directory. Qualunque eseguibile o script messo dentro a una di queste cartelle deve poter essere richiamato dal terminale scrivendone il nome.

Una volta organizzata la struttura di cartelle e inseriti i vari script o programmi, è il momento di rendere tutto ciò “visibile” dal terminale.

Aggiustare il PATH

La shell della vostra distribuzione Linux è in grado di riconoscere i comandi che digitate perché sa dove andarli a cercare. Per esempio, se digitate who e premete Invio, il sistema cercherà tutte le cartelle nel PATH fino a trovare un programma che si chiami esattamente così. Il programma (probabilmente /usr/bin/who) viene quindi eseguito.

Qui entra il gioco la personalizzazione: possiamo aggiungere le nostre directory e richiamare gli script e gli eseguibili scaricati. Per farlo, vi basta aprire il file .bashrc nella vostra cartella home.

Due cose a cui fare attenzione:

  • Sto supponendo che la vostra versione di Linux usi Bash come shell predefinita, se non siete sicuri al 99% è così. Gli utenti esperti possono modificare la propria shell e usarne una alternativa.
  • Il file da modificare è nascosto (inizia con un punto), perciò dovrete attivare la visualizzazione dei file nascosti per poterlo individuare. Su alcuni gestori di file, come quello di Ubuntu, si può fare anche premendo Ctrl+H mentre siete nella cartella home.
  • Queste modifiche valgono solo per il vostro utente. Gli altri utenti del sistema non noteranno differenze.

È necessario aggiungere alcune righe in fondo. Magari mettete anche un paio di righe bianche per separare il contenuto precedente da quello aggiunto da voi. In particolare sono una per directory:

# Percorsi aggiunti al PATH
export PATH=$PATH:~/bin
export PATH=$PATH:~/bin/script
export PATH=$PATH:~/bin/sage

Non ho aggiunto Eclipse perché non mi interessa richiamarlo da terminale, ma solo tenerlo in una cartella “in ordine”. Come potete vedere, stiamo ridefinendo il PATH aggiungendovi un separatore (due punti) e la directory desiderata. Ne mettiamo una alla volta per comodità.

Ricordate di modificare il mio esempio, non copiatelo così com’è. Un paio di osservazioni:

  • Se non usate Sage o se avete predisposto altre cartelle, adattate le righe di conseguenza.
  • La tilde serve a rappresentare il percorso della vostra cartella home.

Ora dovreste chiudere il terminale e riaprirlo. Qualsiasi script o eseguibile messo nella cartella bin o in un’altra di quelle che avete elencato potrà essere richiamato con il relativo nome.

Alcuni consigli

Aggiungendo altri programmi potrebbe capitarvi di creare altre sottodirectory, e queste non sono incluse nel PATH. Potete modificarlo ogni volta, oppure mettere un collegamento simbolico all’esegubile principale nella cartella bin: questo in genere funziona bene con i programmi in Java.

Un esempio è jPdf Tweak, un altro software per modificare i PDF. L’ho scaricato in questo percorso:

~/bin/jpdftweak-linux-x64-1.1

Poi però l’ho collegato nella directory principale, per evitare di dover modificare la mia configurazione:

cd ~/bin/
ln -s jpdftweak-linux-x64-1.1/jpdftweak.jar .

Ciò potrebbe non funzionare per alcuni software, provate caso per caso. Ecco come appare attualmente la mia directory per gli script e gli eseguibili:

Esempio di contenuto della directory predisposta
Esempio di contenuto della directory predisposta

Per quanto riguarda i programmi che hanno interfaccia grafica, può essere utile creare un’icona per il menu. Il lanciatore va inserito in:

~/.local/share/applications

Deve inoltre avere una estensione .desktop. Eccovi un esempio del contenuto del mio file jpdftweak.desktop:

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Name=jPdf Tweak
Icon=/home/andrea/bin/jpdftweak-linux-x64-1.1/icons/icon256.png
Path=/home/andrea/bin/jpdftweak-linux-x64-1.1/
Exec=jpdftweak.jar

Ovviamente i campi vanno adattati al caso specifico.

Spero di aver fornito una spiegazione esauriente per creare una propria directory dove immagazzinare gli script e i file binari. Chiaramente queste istruzioni rispecchiano le mie personali preferenze, altri potrebbero usare metodi differenti.

Se avete dei suggerimenti a questo proposito o volete condividere la vostra organizzazione in questo ambito, lasciate un commento. 🙂

ShareLaTeX è diventato open source

LaTeX è una tecnologia libera e open source che consente di creare pubblicazioni di qualità professionale a qualsiasi livello, dai CV ai libri, passando per le tesi di laurea e le pubblicazioni scientifiche. In particolare, la stragrande maggioranza — probabilmente più del 90% — dei libri universitari di matematica e informatica vengono scritti usando questa tecnologia, che non ha eguali nel software commerciale, e permette di inserire formule matematiche in modo facile.

Trattandosi di un vero e proprio linguaggio di markup, che viene poi “compilato” per generare un documento finito (ad esempio un PDF), può risultare difficile ai principianti. Per questo esistono ottimi progetti come LyX, che permettono di usare un editor WYSIWYM (What you see is what you mean — quello che vedi è quello che intendi). Io personalmente ho usato quest’ultimo per la mia tesi di laurea, e il risultato è stato molto soddisfacente.

Per chi lavora in gruppo, è fondamentale riuscire a collaborare sullo stesso documento, anche contemporaneamente. Questo è il motivo per cui sono nati progetti come ShareLaTeX, che permettono di lavorare con lo stile a cui ci hanno abituato suite quali Google Documenti e simili: più persone scrivono insieme e l’anteprima del documento viene mostrata istantaneamente, tutto quanto dentro al browser.

Interfaccia di ShareLaTeX
Interfaccia di ShareLaTeX

Nella figura potete vedere un esempio di relazione di gruppo a cui ho lavorato quando studiavo al DTU. È notizia di circa un mese fa che tutta la parte principale dell’applicazione web è diventata open source, con un annuncio inviato via email a tutti gli iscritti:

We’re starting by open-sourcing the core parts of ShareLaTeX, including the editor, the project and document storage systems, and the backend LaTeX compiler that we use. This is only the beginning of our open-source journey though, and we will be open sourcing much more soon.

Ciò implica la possibilità per tutti quanti di poter leggere e scaricare il codice per conoscere, imparare, e perché no anche installarlo sul proprio server personale. 🙂 Molto interessanti sono anche le motivazioni:

As a small team, we’re constantly receiving feature requests that we’d love to implement but don’t have the time. We’ve also had a lot of offers from willing volunteers who we’ve had to turn away because we didn’t have a framework for people to contribute. We hope that by open-sourcing ShareLaTeX we can empower our brilliant community to help improve ShareLaTeX in the ways that you want, without having to wait for the two of us to work down our todo list.

A lot of people have asked to host ShareLaTeX internally due to company guidelines or data privacy concerns. We don’t have the resources to support licensed installs at the moment, but we also hate having to say no. With an open-source version of ShareLaTeX, now anyone who wants to run it locally can.

Il codice è disponibile su GitHub.

Come sempre, abbiamo un ulteriore esempio di come l’apertura del codice permetta possibilità impensabili con software proprietario. Complimenti pertanto al team di ShareLaTeX!

Vi segnalo inoltre un’interessante prodotto simile, sempre disponibile come applicazione web, ovvero writeLaTeX, ho utilizzato con soddisfazione anche questo. Voi come utilizzate gli editor collaborativi online? Che ne pensate della possibilità di lavorare in gruppo con LaTeX? 😉

Spotify rimuove il limite di 10 ore mensili e introduce la riproduzione casuale gratuita per cellulari

Spotify è uno dei maggiori servizi di streaming musicale legale e gratuito in circolazione, con in più la possibilità di pagare per alcune funzioni premium. Io personalmente ne sono diventato un avido utilizzatore fin da quando mi ero trasferito in Danimarca (dove è attivo da anni) per l’Erasmus, mentre in Italia è stato introdotto solamente a febbraio.

Spotify è utilizzabile gratuitamente — con saltuarie pubblicità — dal computer, inclusa la piattaforma Linux, ma fino a pochissimo tempo fa in tutti i paesi europei c’erano delle pesanti limitazioni per questo tipo di account: solo 10 ore al mese dopo i primi 6 mesi di utilizzo, e nessuna possibilità di usare l’app per cellulari.

Più fortunati gli utenti statunitensi: nessun tetto di ore e la possibilità di usare gratuitamente la modalità “radio” da mobile, meglio di nulla. Da mercoledì scorso, invece, è cambiato tutto! Spotify ha rimosso la barriera delle 10 ore mensili e ha attivato una nuova modalità di riproduzione casuale gratis per cellulari, in tutti i 55 paesi coperti dal servizio.

La nuova funzionalità gratuita è in evidenza sulla home page del servizio
La nuova funzionalità gratuita è in evidenza sulla home page del servizio

Anche se non ho trovato nessun annuncio ufficiale che confermasse la rimozione del limite delle 10 ore mensili, lo potete facilmente verificare e vi accorgerete che è così. Riguardo alla funzione di ascolto casuale per cellulari, il blog del servizio riporta:

Ecco quello che puoi fare con Spotify free sul tuo cellulare:

  • Puoi portare le tue playlist con te, ovunque.
  • Creare nuove playlist. Ascoltarle in modalità shuffle. Condividerle.
  • Cercare qualsiasi artista e ascoltare la sua raccolta in modalità shuffle
  • Scegliere una playlist già pronta che sia adatta al tuo stato d’animo.
  • Seguire artisti e amici.
  • Sintonizzarti sulla Spotify Radio.

Cosa vuol dire questo, in concreto? Vuol dire innanzitutto che non serve più usare una VPN per fare credere a Spotify che viviamo negli USA, con conseguente mancanza di certi brani di artisti italiani.

Significa anche non essere più costretti ad usare solo la radio sul cellulare in modo gratuito con un account americano. Vuol dire inoltre che possiamo scegliere una playlist dal telefono e farla partire, senza problemi.

Infine, la cosa che apprezzo di più del pulsante “riproduzione casuale”: se scegli l’album di un artista, lo riproduce tutto. L’unico “scotto” da pagare è l’inserimento di alcuni brani consigliati scelti da Spotify. Ma qui viene il bello!

I brani proposti infatti sono coerenti: quindi non ci toccherà più trovarci in situazioni imbarazzanti quali la riproduzione di canzoni di Miley Cyrus quando avevamo deciso di ascoltare Avril Lavigne. Ho idea che questa cosa metterà costantemente a rischio il GB mensile di navigazione Internet fornito dal mio operatore. 😀

Via Musica per tutti. Gratuita sul tuo cellulare. | Spotify Blog.