Sommario LXP 112 Natale 2011
04 Newsdesk
Tutorial 52 Primi passi
Approfondimenti
Difendersi da virus e furto di dati
Guida semplice semplice all’elemento più complesso di Linux, la shell
16 Reportage LinuxDay Ecco cosa è successo nella recente giornata dedicata a Linux
26 Trucchi per sysadmin Gestire le finestre del terminale e controllare le prestazioni dei server
Il media center perfetto
64 BackTrack A caccia di vulnerabilità software
68 Hardcore Linux Controllare più PC con una sola tastiera
78 KDevelop
Tutte le novità sul sistema di Google
Un IDE per gli amanti di Qt e KDE
31 Sony S1
82 Perl
Imparate a creare menu
Le basi di questo potente linguaggio La prima parte di un nuovo corso
Questa volta vi troverete alle prese con i file MP3 e un player musicale
90 OpenCV
42 Confronto Client e-mail
48 Da non perdere Sei applicazioni libere da provare!
LATO B Δ DISTRIBUZIONI Δ OpenSUSE 12.1
86 PHP
34 Programmazione
Le recensioni di questo mese: Δ Devolo dLAN 500 AVmini Δ Iomega StorCenter ix2-200 CE
LATO A Δ DESKTOP Δ KeePass 2.16 Δ PdfMaster 0.6.3 Δ Transie 0.11.8 Δ Veusz 1.13 Δ DISTRIBUZIONI Δ Fedora 16 Δ GIOCHI Δ BurgeSpace 1.9.0 Δ Teeworlds 0.6.1 Δ INTERNET Δ Bitflu 1.39 Δ Dada Mail 4.8.3 Δ Firefox 8.0 Δ RIVISTA Δ Archipel GUI beta4 Δ ClamAV 0.97.3 Δ Codice d’esempio Android Δ Evolution 3.2.2 Δ Thunderbird 8.0 Δ Synergy 1.3.8/1.4.5
60 XBMC
30 News Android
39 I test del mese
IL DVD IN BREVE
Usare LED e display per visualizzare dati
Android
Recensioni
Linux Pro è disponibile in un’unica edizione cartacea, (rivista + DVD doppia faccia da 8 GB), è su iPad.
54 Arduino
Accademia 74 Python
Un tablet diverso dagli altri, non troppo costoso e potente il giusto
PRO
Attenzione!
Le novità del mondo Open Source
08 La riga di comando
LINUX
Anche il PC è in grado di vedere
96 Guida software Guida al software presente nel DVD
Quando trovi questo bollo negli articoli, cerca il software nel DVD
PRO dentro il
ABBONATI ALLA
VERSIONE DIGITALE E A SOLI
14,90€!
DURATA ABBONAMENTO 1 ANNO
www.sprea.it/digital LXP112 NATALE 2011 3
Conquista la riga di comando
Linux vi mette un potere enorme a portata di mano, dovete solo imparare a sfruttarlo
$ conquista la\
> linea di comando L
a linea di comando è un mezzo incredibilmente potente per interagire con il vostro computer. Oltre a darvi accesso a moltissimi strumenti d’amministrazione di basso livello, è anche una via efficiente e flessibile per portare avanti i compiti quotidiani. Sfortunatamente la riga di comando è piuttosto intimidatoria per i non iniziati. Quel cursore lampeggiante e tutto quel testo criptico che lo precede aprono un mondo di possibilità senza però darvi indicazioni su come
procedere. Per quel che ne sapete, premere il tasto sbagliato potrebbe far entrare il PC in una modalità super segreta, fondere il processore e distruggere tutti i dati. Eppure non deve essere così, non c’è nulla da temere dalla riga di comando. Certo, è potente, e con grandi poteri giungono grandi responsabilità, ma con qualche briciola
di conoscenza potete tranquillamente gestire tale potenza così da lavorare più efficientemente e sfruttare al massimo la vostra macchina. In questo articolo vi insegneremo tutto quello che dovete sapere (o quasi!). Inizieremo spiegando cos’è la linea di comando, come digitare i comandi e come interpretarne i risultati. Poi ci sposteremo su due piccoli progetti. Il primo vi introdurrà i comandi che vi servono per le operazioni quotidiane, mostrandovi anche alcuni trucchi per essere più produttivi; il secondo
“Quel cursore lampeggiante e tutto quel testo criptico aprono un mondo di possibilità...”
8 LXP112 NATALE 2011
LinuxDay 2011
La festa di Linux Ecco la prima parte del nostro reportage sulla manifestazione più importante dell’anno su Linux e il Software Libero L’autore Claudio Romeo
I
l LinuxDay, che si tiene annualmente da undici anni, è un’occasione di celebrazione, di divulgazione e di coesione: chi non lo conoscesse può farsi un’idea partendo da Wikipedia (https://it.wikipedia.org/wiki/Linux_day). In questo servizio cerchiamo di riportare alcuni esempi delle manifestazioni locali dell’edizione del 2011. Siccome però noi di Linux Pro non ci accontentiamo, oltre a celebrare l’evento del 2011 e a dare a Cesare
ciò che è di Cesare cerchiamo di capire che cosa funziona nel LinuxDay e che cosa potrebbe essere invece migliorato. Un’avvertenza d’obbligo: poiché i tempi di lavorazione erano strettissimi (per far sì che non parlassimo del LinuxDay di ottobre nel numero di Linux Pro del luglio successivo), e anche per lo spazio ampio ma non infinito che potevamo assegnare all’articolo, lo abbiamo diviso in due parti; la seconda verrà pubblicata nel prossimo numero.
Un LinuxDay collaborativo: Milano
P
er ciò che riguarda la manifestazione di Milano, cediamo la parola ad Alberto Campiglio, vicepresidente di Openlabs di Milano (www.openlabs.it). Il lavoro di coordinamento di varie organizzazioni (come si può leggere nell’intervista ad Alexjan Carraturo) è stato un’occasione per stabilire legami più saldi che ci auguriamo siano precursori di un’attività futura più coordinata. Per i settori della divulgazione e dell’approfondimento tecnico, le numerose relazioni sono servite a dare un quadro ampio e preciso della situazione del Software Libero. Nel settore sociale e imprese, le relazioni e le relative discussioni sono state
stimolanti e hanno visto una presenza continua di pubblico partecipante e coinvolto: l’afflusso è stato corposo e costante, portando più di un centinaio di persone ad essere presenti con continuità nei vari spazi. L’occasione di discussione ha funzionato non solo nei confronti del pubblico, ma ha avuto un effetto non voluto ma benefico: ha infatti portato alla nascita di diverse interazioni tra gli enti intervenuti, che hanno cominciato a discutere di collaborazioni a vari livelli. Gli argomenti trattati e l’organizzazione della giornata sono disponibili sul sito. Ovviamente si tratta dell’impostazione che abbiamo utilizzato quest’anno, ma ogni LUG è libero di lavorare secondo i suoi interessi, le sue competenze e le sue possibilità. Per l’Install fest/workshop, bisogna registrare il successo del “Videowall” presentato da Openlabs: realizzato con i nove computer del loro laboratorio (macchine decisamente datate), su cui gira Debian e un Software Libero, montate su uno scaffale IKEA modificato. Il tutto è stato realizzato da Riccardo Scartozzi (parte software) e da Riccardo Faini (parte di carpenteria). L’installazione ha spopolato durante tutta la giornata, raccogliendo i commenti più lusinghieri. In questo spazio è stato anche possibile avere un confronto operativo tra le varie associazioni e tra le due distro presenti: Ubuntu e Fedora. È stata anche molto interessante la dimostrazione organizzata dal CISAR di utilizzo del Software Libero nell’ambito radioamatoriale. Direi quindi che, come bilancio generale, si può parlare di successo su tutta la linea.
Il giorno dopo Raul Chiesa durante il suo intervento sul cybercrime
16 LXP112 NATALE 2011
Il giorno successivo, domenica 23 ottobre, si è poi
Test Confronto MODALITÀ DEL TEST Abbiamo eseguito tutti i client e-mail su di un portatile dual-core 2.1 GHz con 2 GB di RAM. Anche se funzionano su diverse distribuzioni, per ottenere i risultati migliori abbiamo eseguito ogni client sulla piattaforma raccomandata. Quindi, KMail su KDE ed Evolution su GNOME. Per un miglior confronto abbiamo utilizzato l’ultima versione disponibile di ogni client. KMail 4.7, rilasciato come parte di KDE SC 4.7 installato su OpenSUSE 11.4. L’ultima versione di Evolution 3.0.2 richiede le librerie di GNOME 3, quindi lo abbiamo installato su Fedora 15, che ha ospitato anche Thunderbird e Claws Mail. Zimbra Desktop crea un’icona sul desktop, cosa non possibile su GNOME 3, quindi lo abbiamo installato su Ubuntu 11.04. Un client e-mail dovrebbe essere in grado di gestire migliaia di mail senza avere perdite di prestazioni, permettere di scrivere i messaggi mentre si è offline ed essere sicuro, queste sono soltanto alcune delle funzionalità che siamo andati a testare.
Client e-mail Linux Pro mette alla prova cinque applicazioni per la gestione della posta elettronica e vi offre il suo verdetto
l client di posta, così come il word processor, è probabilmente una delle cose più riconoscibili sul desktop. Ce ne sono di tutte le forme e dimensioni, dai leggerissimi client da riga di comando fi no a quelli che vengono chiamati Personal
I LA NOSTRA SELEZIONE Δ
Claws Mail
Δ
Evolution
Δ
KMail
Δ
Thunderbird
Δ
Zimbra Desktop
42 LXP112 NATALE 2011
particolarmente importanti per chi usa la posta per lavoro, ma sono utili anche a chi non è dipendente da una casella di posta aziendale. Virtualmente tutti i client di posta possono connettersi alle Webmail online come Gmail e Yahoo Mail. Anche
“Ce ne sono di tutte le forme e dimensioni, dai leggerissimi client da riga di comando fino ai PIM” Information Manager (PIM) (gestori delle informazioni personali) che fanno molto di più che gestire semplicemente la posta. I client e-mail sono
se non controllate la vostra posta quotidianamente, sono utili per permettervi di mantenere un backup offl ine di tutte le vostre lettere.
Esistono diversi fattori che dovete prendere in considerazione quando scegliete il client. Che tipo di utente siete e come volete utilizzarlo sono i fattori più critici. Se siete utenti enterprise e scaricate le e-mail dal vostro server aziendale, probabilmente avrete il client sempre in esecuzione, quindi necessitate di un programma ben integrato con il desktop che state utilizzando. Se siete un utente domestico, che desidera soltanto fare una copia di sicurezza delle e-mail da un servizio online, le vostre necessità sono molto diverse.
Arduino La piattaforma hardware aperta per il physical computing
E siano i LED! Per Linux Pro è il momento di dare i numeri: due cifre, per l’esattezza, e vi spiega come mostrare informazioni utili con il potente Arduino
PRO dentro il ’esempio
Codice d
Cosa vi serve Per seguire questo tutorial vi servirà un Arduino (un qualsiasi modello è più che sufficiente) e un certo numero (almeno due) display LED a sette segmenti ad anodo comune, otto resistori da 220 Ohm per ciascun display e un numero di 74HC595 o altri registri a scorrimento a otto bit pari al numero dei display.
Finora abbiamo esaminato alcuni metodi per acquisire dati dal mondo esterno e usarli all’interno del nostro Arduino, ma c’è un problema. Non ha molto senso che l’hardware faccia cose fantastiche se non si riesce a mostrarlo in qualche modo all’esterno della scheda. Ed ecco che interviene l’umile LED. Nelle più recenti versioni di Arduino ce n’è già uno installato sulla scheda e senza di esso sarebbe molto più difficile sapere se i nostri sketch funzionano. Il suo rassicurante lampeggiare è molto comodo. I LED non si limitano però a creare una macchia di luce. Sostituiscono lampadine e tubi al neon, che sono stati i mezzi di illuminazione standard a partire dagli anni ‘70 e fin dall’inizio si sono evoluti in molte forme diverse: barre grafiche, display multisegmento e matrici di punti. In questo articolo esamineremo come è possibile collegare queste varie forme di display ad Arduino per mostrare informazioni utili.
Carattere
Binario
Esadecimale
0
00000011
0x03
1
10011111
0x9f
2
00100101
0x25
3
00001101
0x0d
4
10011001
0x99
Una partenza semplice Probabilmente vi siete già abituati all’idea di accendere e spegnere un LED usando una delle uscite digitali di Arduino, quindi ci spingeremo un po’ più avanti, usando un display a sette segmenti. Il modo più semplice per cominciare con una singola cifra consiste nel collegare il terminale di ciascun segmento del display, attraverso un resistore, a un piedino digitale dell’Arduino. Esistono due tipi di display a sette segmenti: quelli ad anodo comune e quelli a catodo comune. Tutti gli anodi dei LED dei segmenti sono cioè collegati in un unico punto a cui dovrete fornire la tensione positiva oppure lo sono tutti catodi e i vari segmenti si accendono applicando la tensione positiva ai loro piedini. Non fa molta differenza usare l’uno o l’altro tipo, ma occorre sapere quale si è scelto in modo da rispettare le polarità dei piedini. Ogni uscita digitale di Arduino può fornire una discreta quantità di corrente ed è sicuramente in grado di accendere un LED. Quindi si finisce per realizzare un circuito come quello mostrato in Fig.1. Anche se sono definiti “a sette segmenti”, quasi sempre questo tipo di display contiene anche un “punto”, quindi le cose da tenere sotto controllo sono otto. I segmenti veri e propri sono quasi universalmente etichettati con una lettera che va dalla a alla g, partendo dall’alto, procedendo in senso orario e assegnando la g al segmento centrale. Per mostrare delle cifre possiamo usare un byte e indicare quali segmenti tenere a un livello basso
5
01001001
0x49
6
01000001
0x41
7
00011111
0x1f
8
00000001
0x01
9
00001001
0x09
a
00010001
0x11
b
11000001
0xc1
c
01100011
0x63
d
10000101
0x85
e
01100001
0x61
f
01110001
0x71
meno
11111101
0xfd
trattino basso
11101111
0xef
e quindi (usando un display ad anodo comune) quali segmenti accendere (come mostrato nella tabella in questa pagina). Per dare un senso a tutto questo possiamo impacchettare la rappresentazione a byte delle cifre in un array come il seguente: const byte numeri[] = { 0x03, 0x9f, 0x25, 0x0d, 0x99, 0x49, 0x41, 0x1f, 0x01, 0x09, 0x11, 0xc1, 0x63, 0x85, 0x61, 0x71, 0xfd, 0xef }; Gli indici degli array partono da zero, quindi astutamente la rappresentazione in byte corrisponde al valore dell’indice per le cifre da 0 a 9. Per i caratteri da a a f l’indice corrisponde al loro valore esadecimale. Per i rimanenti due simboli dovrete invece ricordare l’indice corrispondente. Cominciamo con un programma dimostrativo, creando un ciclo che visualizza tutti i caratteri e alla fine usa un piccolo trucco per rendere interessante la cosa. Provate a scoprirlo nel listato che segue: // Macro per calcolare il numero di elementi di un array. #define elementsof(x) (sizeof(x)/sizeof(x[0]))
“Probabilmente vi siete già abituati all’idea di accendere e spegnere un LED usando una delle uscite digitali”
INTERMEDIA
54 LXP112 NATALE 2011
const int piedinoLED[] = { 2, 3, 4, 5, 6, 7, 8, 9 }; const int bit[] = { B10000000, B01000000, B00100000, B00010000, B00001000, B00000100, B00000010, B00000001 };
Python
Immagini stereoscopiche Preparatevi a rimanere stupiti, perché Linux Pro vi dimostrerà come usare i menu e le immagini con PyGTK per costruire un visualizzatore di immagini stereo
Cosa vi serve Avete bisogno dei pacchetti Python e PyGTK, che di solito sono installati di default in molte distro, comunque. Inoltre vi servono il software Exiftool e il modulo PIL (Python Imaging Library).
Il mese scorso abbiamo iniziato a studiare la libreria PyGTK, ma visto che l’argomento è vasto proseguiamo anche in questo numero. Sapete già creare una fi nestra e aggiungere widget. Questa volta vi spiegheremo come si creano i menu, i segnali e qualche altro particolare sul layout. E nel mentre vi faremo creare il primo visualizzatore di immagini stereoscopiche per Linux, capace di leggere i fi le MPO generati dalle fotocamere 3D moderne. Non preoccupatevi se non avete una di queste fotocamere, abbiamo incluso alcune immagini d’esempio nel DVD.
Il menu del giorno PRO dentro il ’esempio
Codice d
Applicazioni semplici potrebbero non aver bisogno di un menu. Questi programmi vanno in esecuzione, fanno qualcosa e poi si chiudono con la classica crocetta che viene disegnata quando si crea una fi nestra. Però, qualunque cosa un minimo più complessa ha bisogno di un modo per caricare e salvare i dati, e questo di solito si fa tramite un menu. Le linee guida per gli sviluppatori sono molto precise quando si tratta di fare questo: si usano dei menu. Questa usanza è così diffusa che i programmi a non avere il menu File come prima voce sono davvero rari. Questa è la regola per i software GNOME e KDE, e certamente voi non vorrete sembrare degli eretici comportandovi in modo diverso. Quindi bisogna imparare a creare dei menu. Potete creare un menu direttamente dalla shell interattiva di Python per vedere come funzionano le cose. Scoprire i segreti di Python
Nel DVD, nella sezione Rivista del lato A, trovate tutto il codice ben documentato che vi illustrerà i passi da usare con PIL per generare le immagini affiancate
74 LXP112 NATALE 2011
in questo modo semplifi ca la vita, perché si vede subito se si è fatto qualche errore e la maggior parte delle volte i risultati dei comandi impartiti è subito, o quasi, visibile. Quindi aprite un terminale e digitate python per avviare l’interprete e iniziare una sessione interattiva. Per prima cosa provate a creare una fi nestra GTK standard: >>> import gtk >>> window=gtk.Window() >>> window.set_title(“menu d’esempio”) >>> window.set_size_request(400,200) >>> window.show() Bene, così facendo avete aperto una fi nestra sullo schermo, ora dovete aggiungervi un menu. La gerarchia da adottare può sembrare confusa all’inizio. Il genitore di tutto è la barra dei menu, con i menu che si attaccano a essa. Certo, è possibile avere più di una barra dei menu, ma non è usuale. Poi bisogna creare il menu vero e proprio. Questo è un container per le voci del menu, quindi è più semplice pensarlo come un elenco di oggetti.
Voci del menu Le cose si fanno un po’ più complicate con le voci di menu. Queste sono elementi individuali che vanno nel menu, in modo che gli utenti li possano selezionare, ma bisogna anche usare una voce di menu come label per l’oggetto menu stesso appena creato. Provate questo: >>> menubar = gtk.MenuBar() >>> fi lemenu = gtk.Menu() >>> menulabel= gtk.MenuItem(“_File”) >>> menulabel.set_submenu(fi lemenu) >>> menubar.append(menulabel) In questo codice abbiamo chiamato menulabel l’oggetto MenuItem per rendere più semplici le cose. Questo elemento (item) esiste solo per servire come label per il menu, insomma la parte che appare come testo nella barra dei menu. Per indicare ciò, si è usato il metodo set_submenu() dell’item per collegarlo all’oggetto menu stesso. Questa stessa label viene poi attaccata (append) al menu. Confusi? Bisogna fare un po’ di prove per assimilare il concetto. Pensate a questo speciale elemento del menu come a un post-it – ci avete scritto sopra una label e poi lo usate per attaccare una collezione di altre cose (il menu) alla barra dei menu. Pensateci un momento e poi andate avanti: la prossima stranezza vi sembrerà più semplice. GTK è un toolkit inusuale quando si parla di menu, perché li tratta come qualunque altro widget. In altri toolkit spesso trovate che i menu vengono gestiti in modo differente e appuntati in cima alla fi nestra, dove di solito
OpenCv
Alla scoperta della Computer Vision L’autore Maurizio Russo Laureato in Informatica presso l’Università “La Sapienza” di Roma, con una tesi sperimentale sullo stack TCP/IP del kernel Linux, è un utente del Pinguino dal 2001. Nella sua carriera si è occupato di formazione, sicurezza, progettazione e sviluppo di software.
L’apparato visivo umano è un sistema complesso, in grado di acquisire e gestire, in ogni istante, una mole considerevole di informazioni (nell’ordine dei Gb/sec, in base a recenti studi). Nel corso della giornata, la nostra vista si posa su migliaia di oggetti, ripetendo inconsapevolmente tre operazioni principali: Δ acquisizione di un’immagine; Δ comprensione dell’immagine; Δ memorizzazione dell’immagine e del suo significato. Negli ultimi anni, con l’evoluzione tecnologica e lo sviluppo di architetture hardware sempre più potenti, in grado di minimizzare i tempi d’esecuzione di algoritmi complessi, l’uomo si è confrontato con l’ardua sfida di riprodurre artificialmente un sistema analogo all’apparato visivo, senza tuttavia riuscirci completamente. Se da un lato, infatti, i dispositivi di acquisizione delle immagini hanno superato le capacità naturali dell’uomo, sia in termini di sensibilità che di risoluzione (si pensi, ad esempio, a strumenti come microscopi e telescopi, in grado di svelare i segreti dell’immensamente piccolo e immensamente lontano, celati alla nostra vista), la comprensione dei contenuti delle immagini rappresenta ancora una sfida insoluta. In altri termini, la computer vision, la scienza che studia le modalità di analisi delle immagini, finalizzate all’estrazione delle informazioni ivi contenute, è tuttora oggetto di un’intensa attività
’esempio
Codice d
di ricerca, resa particolarmente appetibile dalle potenziali ricadute di questa disciplina. Molteplici, infatti, sono gli ambiti di applicazione delle ricerche condotte sulla computer vision: si va dalla robotica (per l’interpretazione degli input visivi dei sistemi come droni, in grado di muoversi senza richiedere l’intervento umano), alla videosorveglianza (per l’identificazione di azioni potenzialmente dannose a carico degli ambienti oggetto di vigilanza), fino ai sistemi di sicurezza (per l’implementazione di meccanismi di autenticazione basati sul riconoscimento visivo delle persone). Proprio dagli sforzi di un team di ricercatori è nata la libreria Open Source OpenCV (Open Source Computer Vision), oggetto della serie di articoli che inauguriamo in questo numero.
“Nel corso della giornata la nostra vista si posa su migliaia di oggetti”
1 L’ultima versione di OpenCV può essere scaricata da http://opencv.willowgarage.com, dove sono disponibili anche degli utili manuali per iniziare a lavorare con la libreria
90 LXP112 NATALE 2011
PRO dentro il
Un po’ di storia OpenCV è nata nel 1999, come risultato del lavoro di un gruppo di ricercatori Intel impegnati nel campo delle applicazioni CPU-bound. Gli algoritmi di elaborazione digitale delle immagini, infatti, rappresentano uno dei processi più dispendiosi dal punto di vista computazionale, e pertanto vengono spesso impiegati come strumento per l’analisi delle prestazioni dei processori. La prima alpha della libreria, presentata durante la conferenza “Computer vision and pattern recognition” organizzata dalla IEEE (Institute of Electrical and Electronics Engineers), risale al 2000; la prima beta, con l’introduzione del supporto ai sistemi GNU/Linux, è stata rilasciata l’anno successivo. Alla prima beta sono seguite numerose release, ognuna delle quali ha contribuito a rendere la libreria più matura, affidabile e corposa, elevandone progressivamente la qualità, e contribuendo alla sua affermazione sia in ambito accademico che in quello
2 L’output di cmake mostra la directory d’installazione della libreria (mostrata in rosso)