TorinoZTL


Da qualche giorno è disponibile sull’App Store italiano la mia nuova applicazione per i device Apple.

Si tratta di TorinoZTL, un’applicazione che permette di conoscere, in tempo reale, i confini della ZTL centrale del comune di Torino.

L’applicazione ha una struttura molto semplice. All’avvio viene visualizzata una mappa con la posizione corrente dell’utente e con l’area della ZTL centrale.

Ogni pallino rosso (vedi figura accanto) indica uno dei punti di ingresso alla ZTL. Facendo tap sul pallino si apre una vista informativa, che indica il nome dell’ingresso e il suo indirizzo.

L’applicazione richiede iOS 4.3 o superiore ed è ottimizzata per iPhone 3GS, iPhone 4, iPhone 4S, iPhone 5, iPad 2 WiFi+3g e iPad WiFi+4G.

Potete scaricare l’applicazione direttamente dall’App Store, cliccando su questo link. Come sempre, ogni commento e suggerimento per migliorarla è sempre bene accetto!

Annunci

TurinPark


Da qualche settimana è possibile scaricare dall’App Store italiano la mia prima applicazione per iPhone e iPad.

L’applicazione si chiama TurinPark e ha come obiettivo quello di mostrare, in tempo reale, la disponibilità di posti nei parcheggi torinesi gestiti da GTT (Gruppo Torinese Trasporti).

TurinPark è pensata per essere semplice ed essenziale ed è organizzata in due sezioni principali, che si chiamano rispettivamente “Intorno a me” e “Parcheggi”.

La sezione “Intorno a me”, riportata nell’immagine a lato, mostra su una mappa la posizione corrente dell’utente (rappresentata come un pallino blu “pulsante”) e le posizioni dei parcheggi (i segnaposto rossi). Al tocco di ciascun segnaposto rosso compare il nome del parcheggio e il numero di posti liberi. L’utente inoltre può accedere a una schermata di dettaglio, dove vengono riportati l’indirizzo del parcheggio, il numero di posti totali, il numero di posti liberi e l’ora dell’ultimo aggiornamento.

Nella sezione “Intorno a me” è anche possibile abilitare la modalità “Follow”, che permette di centrare la mappa sulla posizione dell’utente, in modo da seguirne gli spostamenti. La modalità “Follow” si abilita toccando l’icona in alto a destra presente nella barra superiore dell’applicazione. Per disattivare questa modalità, basta spostare la mappa in qualsiasi punto.

La sezione “Parcheggi” invece contiene la lista di tutti i parcheggi, ordinata in senso crescente in base alla distanza tra l’utente e il parcheggio stesso; questa lista viene aggiornata continuamente man mano che l’utente si sposta.

Potete scaricare l’applicazione direttamente dall’App Store, cliccando su questo. Ogni commento e suggerimento per migliorarla è sempre bene accetto!

GrammyClient 0.1


Alla fine è nato! Dopo un bel poco di settimane di sviluppo (a causa dei miei impiegni universitari) vede finalmente la luce GrammyClient 0.1, un semplicissimo client che permette di scaricare comodamente sul proprio desktop le canzoni presenti nell’enorme archivio di grammy.ru. L’applicazione è stata totalmente scritta usando la libreria PyQt4 e il parser HTML/XML BeautifulSoup, senza il quale sarebbe stato impossibile proseguire nello sviluppo.

Potete scaricare il file binario per Windows XP/Vista/7 da questa pagina. Per usare l’applicazione è necessario scaricare e installare Python versione 2.6 o 2.7 (scaricabili qui).

GrammyClient è dotato di una semplicissima interfaccia grafica, spero abbastanza intuitiva da essere capita e usata al primo (o secondo) colpo. Di seguito riporto uno screenshot:

Come potete vedere, l’interfaccia è essenziale, divisa in 3 colonne. Nella colonna più a sinistra abbiamo un campo di ricerca, in cui inserire l’artista da cercare. Non occorre che inseriate il nome completo, basta anche una porzione; il motore di ricerca del sito ricercherà tutte quelle voci che contengono la stringa da voi inserita.

Al di sotto del campo di ricerca compariranno i risultati della ricerca: una tabella con i nomi degli artisti e il numero di tracce audio che potete scaricare. Facendo doppio click su una riga (o usando il menu contestuale) potrete visualizzare nella colonna centrale gli album associati all’artista. Facendo nuovamente doppio click sul titolo di un album potrete vedere sulla colonna più a destra l’elenco delle canzoni contenute nell’album.

Per scaricare una canzone basta fare doppio click sul suo titolo. Comparirà una finestra di dialogo che vi permetterà di scegliere dove salvare il file.

In ogni istante solo 4 download possono avvenire contemporaneamente. Se aggiungete più di 4 download, quelli in eccesso verranno messi in coda in attesa del completamento di uno dei primi 4. Questo limite è imposto dai server di grammy.ru per limitare i download simultanei.

L’applicazione è naturalmente in uno stato embrionale, ma funziona dignitosamente. Non esitate a contattarmi per qualsiasi malfunzionamento. Coerentemente con i miei impegni accademici cercherò di correggere eventuali bachi.

Chromium updater


Per passatempo ho scritto in questi giorni un piccolissimo script python che controlla se esiste una nuova versione per il browser Chromium per Mac OS X; in tal caso scarica il file .zip da http://build.chromium.org/buildbot/snapshots/chromium-rel-mac, lo scompatta e salva l’applicazione Chromium.app sul Desktop, in modo che successivamente l’utente possa copiarla dove meglio crede.

Potete scaricare lo script cliccando qui.

Ecco il codice
Continua a leggere “Chromium updater”

Programmazione di classi singleton in Java


“Il Singleton è un design pattern che ha lo scopo di garantire che di una determinata classe venga creata una e una sola istanza, e di fornire un punto di accesso globale a tale istanza.” (fonte Wikipedia).

Qui riporto la soluzione al problema proposta da Bill Pugh.

La struttura della classe Singleton è molto semplice e sfrutta alcune peculiarità del linguaggio Java. Ecco il codice:

class Prova {
	protected Prova() {

	}

	private static class ProvaHolder {
		private final static Prova INSTANCE = new Prova();
	}

	public static Prova getInstance() {
		return ProvaHolder.INSTANCE;
	}
}

Il costruttore della classe è definito protected e questo impedisce che questo venga chiamato dall’esterno di tale classe. All’interno della classe Prova abbiamo definito una classe statica e privata, chiamata ProvaHolder, che al suo interno contiene il campo INSTANCE di tipo Prova; notiamo come INSTANCE sia dichiarato final static.

Quando il programmatore chiama il metodo statico getInstance la classe privata ProvaHolder viene “caricata” dalla JVM e viene allocato il suo campo statico INSTANCE attraverso la chiamata al costruttore protetto della classe Prova.

In questo modo siamo sicuri che della classe prova possa esserci una sola instanza, che è per giunta inizializzata in maniera lazy, ovvero solo al momento in cui viene effettivamente richiesta l’allocazione dell’oggetto.

Se ancora non è chiaro il funzionamento del pattern, ecco un esempio di cosa accade se creiamo due oggetti instanza della classe singleton appena dichiarata:


        Prova p1 = Prova.getInstance();

        Prova p2 = Prova.getInstance();

        if(p1 == p2)
            System.out.println("uguali");

Se provate ad eseguire questo codice, vedrete che la stringa “uguali” sarà stampata a schermo; il metodo getInstance ritorna sempre e solo un’unica instanza della classe Prova, quella creata al momento del caricamento da parte della JVM della classe privata ProvaHolder.