Sei sulla pagina 1di 95

ARDUINO OIL RUSH JOOMLA!

GENTOO ZORIN OS OPENCV


11.03

F161.cover.illo.pdf 01/08/12 N. 120 - RIVISTA + DVD1 5,90

Diventa protagonista nel mondo Linux

Aggiorna il PC
Scopri i componenti migliori per il tuo computer e saluta per sempre i problemi di compatibilit
POSTE ITALIANE SPA - TARIFFA R.O.C. - ABB. POST. - D.L. 353/2003 (CONV. IN L. 27/02/2004 N. 46) ART. 1, COMMA 1, DCB MILANO

PRO

GINE di progrA ammazio ne ACCADE DEL CODMIA ICE


Concetti b ase ~ PHP Assembly ~ OpenCV

15 P

SICUREZZA Verifica con WebGoat se ci sono falle nel tuo server Web RETROGAMING I simulatori di videogiochi per i nostalgici di Amiga, C64 e ZX Spectrum

SEGNALARE GLI ERRORI

Dai il tuo contributo allOpen Source svelando i bug del software


TURBO FIREFOX

Tutte le estensioni per potenziare il re dei browser Open Source


L I N U X P R O N 12 0 - M E N S I L E - A N N O X -12 5 , 9 0

CONTROLLARE LA NUVOLA
Con Cloudmin hai la gestione centralizzata di cloud diverse

Distributore: Press-Di, Segrate (MI)

I primi manuali interattivi per fotografare come un VERO PROFESSIONISTA

http://itun.es/isb2Xx

Scaricalo subito

http://itun.es/i6jk9vq

Scaricalo subito

Solo su iPad Solo su iTunes

Editoriale

Free, solo Free


Alla notizia dellimminente approdo della piattaforma Steam di Valve in GNU/Linux, il nostro amato Richard Stallman ha tuonato nuovamente, e giustamente per molti, contro luso del software proprietario, non importa se si tratta di giochi in questo caso. Nella lettera inviata alla comunit (https://www.gnu.org/philosophy/ nonfree-games.en.html) Stallman ricorda che i programmi non free negano la libert agli utenti anche se, stranamente, lascia una porticina aperta dicendo che se proprio si vuole giocare con questo tipo di programmi, meglio farlo sotto GNU/Linux. In tutti i casi, aggiunge Richard, comunque meglio usare giochi liberi e spingere i progetti che li realizzano. Insomma, letica pi importante dellaspetto pi pratico: poter giocare con i giochi che di solito si trovano solo in Windows anche sotto GNU/Linux potrebbe far guadagnare utenti al Pinguino, ma questo genererebbe utenti poco consci dellimportanza delle libert offerte dal Free Software. Insomma, il discorso non certo nuovo: se in passato, in alcuni casi, avevamo trovato la posizione di Stallman un po troppo rigida (anche se questa la sua forza, ne siamo consapevoli) in questo caso possiamo dirci completamente daccordo. Un forte impulso allo sviluppo di giochi, e non solo giochini, nativi per GNU/Linux e con licenza libera avrebbe lo stesso effetto ma sta alla comunit fare in modo che questo accada. Noi ci metteremo alla ricerca in Rete per vedere cosa si sta muovendo in proposito. Una nota a margine: curioso registrare che la decisione di Valve di passare a GNU/Linux dovuta alle sue lamentele nei confronti del prossimo Windows 8, in particolare contro il Windows Store che in alcune versioni del nuovo sistema operativo di Microsoft sar lunico modo per acquistare app. Passiamo ora ai contenuti di questo numero, o meglio a un documento presente nel DVD allegato. Si tratta di una guida creata dal Professor Cantaro dellIstituto Majorana di Gela (www.istitutomajorana.it), pensata per spiegare alle aziende, ma anche ai privati, come passare in modo indolore al Software Libero. Tutto viene illustrato con un linguaggio semplice, adatto anche agli utenti alle prime armi, e non vuole spingere solo Linux, ma luso del Free Software anche negli altri sistemi operativi. Abbiamo trovato la lettura interessante e accettato volentieri lofferta del professore di mettere la guida a disposizione di tutti i nostri lettori. Per questo mese tutto, vi lasciamo alla piacevole, speriamo, lettura di questo numero e ci rivediamo il mese prossimo.

LINUX
PRO PRO

Massimiliano Zagaglia Responsabile di redazione

CONTATTI
Domande alla redazione: redazione@linuxpro.it Abbonamenti: abbonamenti@linuxpro.it Arretrati: arretrati@linuxpro.it

ORA TROVI LINUX PRO ANCHE SU ANDROID

Problemi con il DVD: aiutocd@sprea.it Sito Web: www.linuxpro.it Oppure inviate le vostre lettere a: Linux Pro, Sprea Editori S.p.A., Via Torino 51, 20063 Cernusco S/N Telefono: 02.92432.1
LINUX PRO 120

Sommario

Sommario
LINUX PRO 120

LINUX

PRO

Benvenuti nel centoventesimo numero di Linux Pro, la vostra guida definitiva a Linux e al mondo Open Source

In primo piano

Aggiorna ora!
Prima di aggiornare i componenti del vostro computer, leggete la nostra guida cos da essere sicuri di non incappare in problemi di compatibilit spendendo soldi inutilmente

10

08 OpenStack
2
LINUX PRO 120

18 Segnalare i bug

24 Emulatori

Sommario
04 Newsdesk
Le novit del mondo Open Source

Tutorial 58 Presentazioni
Impara larte di realizzare presentazioni che non facciano addormentare il pubblico dei tuoi ascoltatori

SSIMO IL PRO O ESCE IL


NUMER
IL DVD IN BREVE
LATO A DISTRIBUZIONI CentOS 6.3 DOCUMENTAZIONE Debian Handbook Passare al Software Libero RIVISTA Avoision 1. 1 din 3.5 Mundus 1. 1.3 MyJgui 0.7.4.4 UrbanLightScape 1. 1 UFFICIO LibreOffice 3.5.5 LATO B DESKTOP JSkat 0. 10.1 Kenoozoid 0.9.0 Mutiara 0.9.2 SysUsage 5.2 DISTRIBUZIONI Chakra Linux 2012.07 CloneZilla 1.2. 12-67 Haiku R1alpha3 Icaros Desktop Live PartedMagic 12-07-13 ReactOS 0.3. 14 VectorLinux 7.0 64 bit PROGRAMMAZIONE Bluefish 2.2.3
Quando trovi questo bollo negli articoli, cerca il software nel DVD

06 Mailserver
Filo diretto con la redazione

08 FAQ: OpenStack
La cloud totalmente Open Source

Approfondimenti 10 Aggiorna il PC
Lhardware compatibile con Linux

62 Gentoo
La guida completa allinstallazione di una distribuzione complessa ma non impossibile

18 Segnalare i bug
Dai il tuo contributo allOpen Source

66 Permessi dei file


Alla scoperta delle Access Control List, il modo migliore per avere il massimo controllo sullaccesso ai file da parte degli utenti del tuo sistema

24 Retrogaming
Gli emulatori per i computer del passato

28 Turbo Firefox
Potenzia il re dei browser

34 Trucchi per sysadmin


Gestisci cloud diverse con Cloudmin

68 Arduino
Crea un bot in grado di chiacchierare con te usando questa incredibile scheda

Android 38 News
Tutte le novit sul sistema di Google

72 Joomla!
Ultimi ritocchi ai template

39 I test
Tre dispositivi Android in prova

76 Sicurezza
Con WebGoat verifichi il livello di sicurezza del tuo server Web

Recensioni 41 I test del mese


Oil Rush Zorin OS In libreria

Accademia 80 Concetti di base


Gli algoritmi di ordinamento

48 Confronto
Servizi di Project Hosting

PRO
dentro il

54 Da non perdere
Cinque programmi da provare subito!

82 PHP
Crea un contatore di visite avanzato

86 Assembly
Operazioni matematiche e di input/output

90 OpenCV
Riconoscimento facciale

28 Turbo Firefox

96 Guida software
Guida al software presente nel DVD
LINUX PRO 12 120

Newsdesk
Manifestazioni

Ogni mese tutte le novit dal mondo delle aziende e della comunit Open Source

Tempo di raduni

estate sembra proprio essere il momento giusto per ritrovarsi e parlare di Open Source. Dopo lHackmeeting di cui abbiamo parlato il mese scorso, sono in previsione altre manifestazioni. Per esempio dal 24 al 26 agosto a Pescara si svolger il Metro Olograx Camp (MOCA, http://moca. olograx.org/moca2012). Si tratta di un evento che si ripete con una cadenza quadriennale dal 2004 e che questanno si appresta quindi alla sua terza edizione. Il MOCA un camp nello stile di quelli organizzati dal Chaos Computer Club tedesco nel quale ci si ritrova tutti quanti in una sorta di campeggio dedicato al mondo dellhacking. Levento si terr presso lex caserma Di Cocco sar ad accesso completamente gratuito. I talk in programma spaziano dalla

programmazione su piattaforma Android, al reverse engineering del rmware, alla gestione e conservazione in modo sicuro delle password. Ci sar anche una panoramica sugli attacchi informatici che si sono vericati nel corso degli anni passati. Il programma completo lo trovate al seguente indirizzo: http://moca.olograx.org/ moca2012/pages/schedule. Oltre ai talk ci sar la possibilit di incontrare i pi disparati rappresentanti della scena informatica italiana. Tra i partner dellevento si annoverano infatti Slackware Linux Project italia (slackware. it), SIKUREZZA.ORG, Gir Geek Dinners Roma, dyne.org, Azzurra.org e la comunit italiana della distribuzione GNU/Linux Backtrack, la pi utilizzata in ambito penetration testing. Backtrack Italia, in particolare, realizzer

un hacking contest nel quale ognuno potr dimostrare le proprio capacit di hacker (etico) con tanto di premi per coloro che riusciranno a pwnare per primi le box. Gli organizzatori, per una questione meramente organizzativa, vi invitano a registrarvi al link http:// moca.olograx. org/moca2012/ pages/ subscribe.

E non solo

Limpegnativo logo del MOCA: no alla ne del mondo non sar un po troppo?

La pagina Web del sito dellassociazione Govonis (www.govonis. org) che vi tiene informati sulla manifestazione Software Freedom Day di Quiliano, in Liguria

Il 15 settembre, poi, si terr la giornata mondiale del Software Libero e Open Source, il Software Freedom Day (www. softwarefreedomday.org). Lobiettivo di questa giornata informare il pubblico di tutto il mondo sui vantaggi delluso del Software Libero nella scuola, nella pubblica amministrazione, a casa e nel lavoro. Lorganizzazione no prot Software Freedom International coordina il SFD a livello globale, fornendo supporto, materiali e collaborazione e gruppi di volontari in tutto il mondo organizzano gli eventi SFD locali nellambito della propria

comunit. Qui da noi, almeno al momento di andare in stampa e stando alla mappa presente nel sito della manifestazione, saranno tre le sedi: gli amici dellassociazione Govonis stanno preparando la sede di Quiliano (http://bit.ly/RbJWZ6), i ragazzi dellAVi LUG quella di Schio (www.avilug.it/ doku.php) e inne a Catanzaro, grazie agli sforzi dellHackLab CatanZaro (http://hacklab.cz/). Sperando di non aver saltato qualche sede (in tal caso ce ne scusiamo e vi consigliamo di tenere sottocchio il sito ufciale della manifestazione) invitiamo tutti i lettori vicini alle sedi di farci un salto.

LINUX PRO 120

Newsdesk
Letture di fine estate
Integrazione Sistemistica con LDAP
Il Linux Certication Institute (LiCI), ente di formazione dedicato al mondo del Free Software, pubblica alcuni manuali sulle tecnologie Open. Uno lo recensiamo in questo stesso numero nella pagina In libreria. Qui parliamo di un altro volume, un po pi specico, dedicato alla congurazione del servizio LDAP per lautenticazione centralizzata. Le circa 100 pagine del volume iniziano con la trattazione teorica del protocollo LDAP per poi passare allinstallazione e alla congurazione dellimplementazione OpenLDAP (versione 2.4). Inne viene trattata lintegrazione con altri servizi (Apache, Postx, Samba, ecc.). Il linguaggio usato chiaro e riporta un buon numero di esempi. Visto per largomento molto specico, necessaria una buona conoscenza di base per poter seguire no in fondo le spiegazioni. Autore: Simone Piccardi Editore: Lici.it Prezzo: 19,50 (libro), 3,90 (PDF)

Rivoluzione Google
Steven Levy uno dei giornalisti americani che pi apprezziamo tra quelli che scrivono di nuove tecnologie. Lultima sua fatica il libro Rivoluzione Google che cerca di svelare i segreti del successo di questa grande azienda portando il lettore direttamente negli ufci dei suoi fondatori. Google una delle aziende che negli ultimi 15 anni hanno rivoluzionato la Rete: Levy ripercorre tutte le tappe fondamentali del suo sviluppo, senza dimenticarsi di spiegare anche gli insuccessi e i passi falsi. Secondo noi i capitoli pi interessanti sono il terzo e il quarto, in cui si spiega com nata la famosa cultura di Google e come si arrivati alla costruzione dei datacenter contenenti lo scibile umano. Una lettura piacevole e istruttiva, con alcuni aneddoti davvero interessanti. Insomma, un libro da leggere e da cui imparare la lezione... Autore: Steven Levy Editore: Hoepli Prezzo: 19,90

Hacking Web
Lautore di questo libro, Michal Zalewski, un noto esperto di sicurezza informatica. Di lui avevamo letto in passato il volume Il rumore dellhacking rimanendo affascinati dalle cose che ci rivelava (se non lavete mai letto, cercatelo). Ora in libreria un suo nuovo libro, Hacking Web, in cui lautore si concentra sul browser e sui vari protocolli/linguaggi del Web andando a studiarne il funzionamento con il microscopio. Lautore fa unanalisi molto lucida e attenta di HTTP, HTML, URL, CSS, MIME, dei plug-in e del comportamento di tutti gli elementi legati al browser e alle applicazioni Web. Il tutto per spiegare le debolezze e gli errori che portano alle tante vulnerabilit di cui si ha notizia quotidianamente e fornire suggerimenti per superare tali limiti. Autore: Michal Zalewski Editore: Apogeo Prezzo: 35,00

Sotto Firefox OS il radar


Il progetto Boot to Gecko non una nuova idea. Difatti stato in fase di sviluppo per oltre un anno. Il suo scopo era quello di portare un po di Open Source nelle piattaforme mobili, ma la competizione da parte di Chrome e Chrome OS stata feroce. Ora i ragazzi di Mozilla hanno deciso eciso di spingere sullacceleratore e di usare un nome un po pi orecchiabile,, Firefox OS. Ma questo non lunico cambiamento mbiamento in essere. Seguendo la moda del momento, anche Mozilla intende seguire londa onda del mobile e della tecnologia cloud. Difatti chi tiene sotto controllo lindustria IT T prevede che questi due campi rappresentano tano il futuro e le aziende faranno di tutto af nch ci succeda. Le persone hanno n troppa libert sui loro vecchi PC. Essere in grado di tenere traccia delle abitudini bitudini degli utenti per la pubblicit, vendere dere loro app e servizi non necessari e che non useranno, metterli in condizione ione di dipendere da un servizio: questa sta la direzione che si sta prendendo. E Firefox OS sta forse cercando di percorrere la stessa strada. Gli utenti dei vecchi e classici PC sperano che Mozilla non li abbandoni, ma la situazione potrebbe cambiare: le aziende devono andare dove si spostano i soldi oppure morire. Questa la realt pp del ciclo di business: ti adatti o sparisci.

Hit list
Le 10 pagine pi visitate su DistroWatch.com dal 26 giugno 2012 al 25 luglio 2012 (media al giorno)

Distro
1 2 3 4 5 6 7 8 9
10 0

Numero di hit 3.160 2.645 1.643 1.232 1.165 1.152 1.144 1.085 845 784

Mint Mageia Ubuntu Fedora Debian openSUSE Arch CentOS Puppy PC Linux OS

D DistroWatch.com monitorizza la popolarit delle distr distribuzioni in base al numero di visite ricevute dalle pagine ded dedicate alle singole distro. Anche se questo numero non rapp rappresenta la base installata, un indicatore di quali distr distribuzioni hanno pi successo in un determinato periodo.

LINUX PRO 120

Scriveteci!
Se avete dei dubbi di natura tecnica o dei commenti inviate una e-mail... a redazione@linuxpro.it oppure spedite una lettera al seguente indirizzo: Linux Pro Sprea Editori S.p.A. Via Torino, 51 20063 Cernusco S/N (MI) Invitiamo inoltre tutti i lettori a partecipare al nostro forum che si trova allindirizzo Web www.linuxpro.it, oppure a collegarsi al nostro canale IRC #lxp ospitato dalla rete irc.freenode.net.

Mailserver
I nostri esperti offrono ogni mese i loro consigli di programmazione e di amministrazione del sistema
Buongiorno, vi scrivo in merito allarticolo di copertina del numero 119 in cui si parla di Red Hat. Sono un abbonato di LXP da due anni anche se vi seguo da molto pi tempo, premetto quindi che mi trovo molto in sintonia con voi, con i vostri articoli e il modo di trattarli. Sono un perito informatico e studente di informatica alluniversit di Milano-Bicocca, parlo quindi con un velo di conoscenze nel settore. Mi piaciuto come avete trattato largomento di Red Hat, analizzandone le potenzialit e le piccole ombre che ci sono e ci sono state. Devo per fare una critica non tanto allarticolo in s ma in generale al modo in cui ultimamente mi sembra che la rivista stia guardando a Linux, una visione e un approccio che forse si allontana un po da quella che la losoa del Free Software. Red Hat come Ubuntu e le maggiori distribuzioni danno decisamente un ottimo contributo alla nostra comunit dal punto di vista del miglioramento del kernel e degli applicativi, sono distribuzioni che stanno portando molti nuovi utenti che hanno voglia di abbandonare sistemi proprietari perch vedono in GNU/Linux un sistema pi semplice, stabile, sicuro ed efciente. Tuttavia questi nuovi e preziosi utenti ne riconoscono le potenzialit ma spesso non il valore etico che c dietro ed su questo punto che io vorrei fare alcune osservazioni a voi di Linux Pro, afnch si continui a trattare GNU/Linux ma senza uscire dalla strada etica del Free Software che come sappiamo un concetto diverso da quello

L'invio alla redazione di qualsiasi materiale editoriale (testi, fotografie, disegni, etc.), su qualsiasi supporto e tramite qualunque canale (es. posta ordinaria, e-mail, facebook, sito web, etc.) deve intendersi - sia quale presa visione, nel colophon della rivista, dell'Informativa ex art. 13 d.lgs. 196/03, nonch quale consenso espresso al trattamento dei dati personali ai sensi dell'art. 23 d.lgs. 196/03 da parte della Sprea Editori S.p.A.; - sia quale espressa autorizzazione in qualit di titolare dei diritti d'autore e di utilizzazione economica, nonch eventualmente di immagine (se del caso anche in qualit di esercente la patria potest sul minore raffigurato e/o ripreso nelle immagini) -, a titolo gratuito e in via definitiva, alla libera utilizzazione del predetto materiale da parte di Sprea Editori S.p.A., per qualsiasi fine e con qualsiasi mezzo, e comunque, a titolo di mero esempio, alla pubblicazione gratuita su qualsiasi supporto (cartaceo e non) di titolarit della stessa Sprea Editori S.p.A. e/o delle altre societ in qualunque modo ad essa collegate, nonch per qualsivoglia altro fine, con autorizzazione altres all'elaborazione, all'adattamento, alla trasformazione e a ogni altra modificazione considerati opportuni a discrezione della redazione. Resta inteso che il materiale inviato alla redazione non potr essere restituito ed entrer a far parte dell'archivio della redazione a titolo definitivo.

Articolo su Red Hat

di Open Source. Quello che voglio dire che mi piacerebbe leggere meno articoli che confrontano Ubuntu con Windows o che elogiano Red Hat e mi piacerebbe vedere qualche articolo su sistemi come gNewSense, forse poco noto sistema operativo che usa solo Software Libero. Non dimentichiamo che Ubuntu, Fedora, OpenSUSE, Red Hat e derivate non hanno purtroppo politiche chiare su che tipo di pacchetti intendono includere nella distribuzione o magari ce lhanno ma permettono che parti di software proprietario venga incluso nel sistema o addirittura ne incoraggino luso. Vi chiedo di prendere in considerazione lidea di trattare quindi anche sistemi GNU/Linux che usano solamente Software Libero, con articoli e magari una distribuzioni inclusa nel DVD. Visto che questi sistemi a volte non sono semplicissimi da usare o non si integrano con tutti gli hardware, potreste aiutare i nuovi utenti a usare anche questi sistemi spiegando perch oltre allOpen Source importante che un software sia anche Free, in modo da poter portare a galla anche questo sensibile aspetto che c dietro a Linux. Marco

Ciao Marco, apprezziamo il tuo punto di vista e ci consideriamo richiamati allordine. Non abbiamo mai dimenticato laspetto etico, ma forse ci siamo concentrati pi sulla pratica che su questo aspetto, ultimamente. Vediamo cosa possiamo combinare nei prossimi mesi per venire incontro alla tua richiesta. LXP

GIOCATI UN SUDOKU, TE LO OFFRE:


A S O LO

1,00

LA A OL IC CO ED DI IN NE D I ER ED NV GIO T TI I VE TU TUTT
LA REGOLA E UNA SOLA
Per giocare a SUDOKU si deve riempire la griglia in modo che ogni riga, ogni colonna e ogni riquadro contengano le cifre da 1 a 9 una sola volta. Per esempio, una riga formata da 9 quadretti. In ciascuno dei quali va scritta una cifra scelta tra 1,2,3,4,5,6,7,8,9. Nella riga ciascuna cifra deve comparire una sola volta. Ci sono 9 righe e in ciascuna vale sempre la stessa regola: Sempre la stessa regola vale anche per le colonne. Ci sono 9 colonne, da riempire con le stesse cifre da 1 a 9, senza che si ripetano. Inne ci sono i riquadri 3x3, per un totale di 9 quadretti. In ciascun riquadro ogni cifra a 1 a 9 deve comparire una sola volta. Il gioco consiste nel riempire di cifre tutte le 81 caselle, rispettando contemporaneamente le regole per le righe, le colonne e i riquadri.

Difcolt semplice

QUANDO TI SENTI PICCOLO CHE SAI DI ESSERE DIVENTATO GRANDE.


A volte gli uomini riescono a creare qualcosa pi grande di loro. Qualcosa che prima non cera. questo che noi intendiamo per innovazione ed in questo che noi crediamo. Una visione che ci ha fatto investire nel cambiamento tecnologico sempre e solo con lobiettivo di migliorare il valore di ogni nostra singola produzione. questo pensiero che ci ha fatto acquistare per primi in Italia impianti come la rotativa Heidelberg M600 B24. O che oggi, per primi in Europa, ci ha fatto introdurre 2 rotative da 32 pagine Roto-Offset Komori, 64 pagine-versione duplex, cos da poter soddisfare ancora pi puntualmente ogni necessit di stampa di bassa, media e alta tiratura. Se crediamo nellimportanza dellinnovazione, infatti, perch pensiamo che non ci siano piccole cose di poca importanza. Letichetta di una lattina di pomodori pelati, quella di un cibo per gatti o quella di unacqua minerale, un catalogo o un quotidiano, un magazine o un volantone con le offerte della settimana del supermercato, tutto va pensato in grande. come conseguenza di questa visione che i nostri prodotti sono arrivati in 10 paesi nel mondo, che il livello di fidelizzazione dei nostri clienti al 90% o che il nostro fatturato si triplicato. Perch la grandezza qualcosa che si crea guardando verso lalto. Mai dallalto in basso.

FAQ OpenStack

Alcune domande su...

OpenStack
Linux Pro evita tutte le metafore sulla cloud nel tentativo di tenere i piedi ben piantati in terra e spiegarvi questa tecnologia legata alla nuvola
un po indietro a questo giro S, hai ragione. OpenStack esiste da diverso tempo. Correva lanno 2010 quando Rackspace, una famosa azienda di hosting Web, e la NASA, la nota agenzia spaziale che dice di aver mandato degli astronauti sulla Luna, intrapresero un nuovo progetto. Il tutto nacque dopo la pubblicazione di un post su un blog da parte di appaltatore della NASA. Il post recitava: stato lanciato NOVA il cloud computing con licenza Apache, fatto in Python. live, buggato, in beta. Provatelo. Assieme, NASA e Rackspace andarono avanti e crearono un mondo di fantasia online, nel quale lo storage, le risorse e le prestazioni non sono un problema, e le piccole startup possono costruire le loro torri davorio nelle nuvole, ottenendo sistemi che scalano alla perfezione, velocemente e in modo efciente, prima di arrivare al punto di vendere le proprie azioni a Facebook. OpenStack rende tutto ci possibile perch Open Source, e quindi funziona come Linux stesso. Difatti, alcune persone si riferiscono a OpenStack come il Linux del cloud computing. Potete pagare qualcuno perch utilizzi OpenStack per voi, o potete sperimentare voi stessi con questa soluzione sapendo di avere tra le mani un qualcosa espandibile con facilit. Proprio come Linux. per favore, non la cloud. No, Non la capisco. Forse la migliore analogia che posso fare tra le nuvole reali e la loro variet computerizzata che non c una sola denizione di cosa sia la nuvola. una denizione in perenne mutamento, come il tempo. Potrebbe essere Gmail e il tuo Google Documenti, ma anche laccount Facebook oppure il tuo calendario Exchange. Se sei unazienda di tecnologia, c una buona probabilit che il tuo OpenStack non in circolazione Ma da un po di tempo? Sei rimasto dipartimento IT stia gi rimpiazzando i suoi rack di server con dello spazio noleggiato nella cloud di qualcun altro, oppure potresti voler sfruttare a fondo le CPU di Amazon EC2 per ottenere i risultati di calcoli complessi in pochi minuti invece delle settimane richieste facendo i calcoli su un desktop. vuol dire che non puoi Questo essere pi specico nel dirmi Lesempio pi semplice pagare per laccesso corporate a Gmail, al calendario e alla suite per lufcio di Google, piuttosto che far girare tu stesso questi servizi o pagare qualcuno per fagli ospitare i tuoi server. SaaS vuol dire che non ti devi curare dellinstallazione, del deployment o della manutenzione (a meno che questi servizi non girino su una cloud che gestisci tu, ovviamente). SaaS diventa rilevante per OpenStack solo quando lo conguri per offrire un servizio che poi rivendi ai clienti, come un tuo servizio e-mail basato sulla cloud, o un servizio di modica di documenti. ma perch OpenStack Ok, differente? Sono diverse le ragioni per cui OpenStack differente e per cui vale la pena darle attenzione. La prima che veramente Open Source. Ogni componente stato rilasciato sotto i termini della licenza Apache, che leggermente pi permissiva della GPL. Questo vuol dire che puoi rilasciare qualunque modica che fai sotto una licenza diversa, ad esempio, e la gabbia creata dalla licenza, in genere, stata trasformata in unopportunit dal team di OpenStack. Noi crediamo fortemente che un modello di sviluppo aperto sia lunica via per sostenere degli standard per la cloud, rimuovere la paura dei lock-in proprietari e creare un vasto ecosistema che si estende su pi fornitori cloud, cos recita la panoramica del progetto. Con delle API aperte, formati aperti e un codice sorgente completamente modicabile, puoi vedere perch, quando si spendono cos tanti soldi per spostarsi sulla cloud, OpenStack acquisisce senso. anche abbastanza facile per le aziende giocare con la cloud privata sulla propria rete, e poi mandare il tutto su fornitori che adottano OpenStack, come Rackspace, quando il tutto funziona. Unaltra ragione che OpenStack divenuto un fenomeno. Ti basta guardare solo allelenco ufciale delle 180

cos OpenStack? Essere pi specici vuol dire usare qualche pericoloso acronimo. Si pu iniziare con IaaS, per esempio, che invece di essere un insulto, sta per Infrastructure as a Service. Questo uso della cloud quello fatto dal dipartimento IT nellesempio precedente, dove unazienda rimpiazza la proprio infrastruttura con una afttata da una cloud. Questo il business che Rackspace vuole dominare, e con buone ragioni. Si hanno enormi economie di scala quando

OpenStack sviluppata in modo aperto e non possiede componenti proprietarie


unazienda decide di far gestire la propria infrastruttura di rete da unaltra compagnia sulla nuvola, con grandi risparmi. Questo rende IaaS un modello di business molto attraente. Questo anche il livello in cui opera OpenStack. una soluzione per la IaaS perch puoi fare tutto quello che vuoi con essa cos come puoi farlo con una macchina virtuale, ad esempio. Dallaltra parte della scala troviamo SaaS, che sta per Software as a Service. Questo pi facile da capire perch, piuttosto che gestire unintera infrastruttura, ti devi preoccupare di una sola applicazione. Potrebbe essere il CMS aziendale, o un qualunque altro sistema aziendale che richiede lalta disponibilit. La differenza importante tra SaaS e il vecchio modello basato su server che queste applicazioni sono di solito fornite dal vendor della cloud.

LINUX PRO 120

OpenStack FAQ
compagnie che hanno confessato di averlo adottato. Tra queste puoi trovare Dell, AMD, Cisco, HP, AT&T, Broadcom e Yahoo, assieme a Rackspace. Stranamente, la NASA sta abbandonando OpenStack per passare ad Amazon. Puoi notare anche diversi pezzi da novanta del mondo Linux che si avvicinato a OpenStack, come Red Hat, SUSE e Canonical. Red Hat in passato aveva le sue soluzioni cloud, inclusa Aeolus, che una graziosa suite software per il deployment di macchine virtuali allinterno della tua rete o su diverse cloud incompatibili. Red Hat alla ne stata tentata da OpenStack, dopo che questa soluzione cloud ha cambiato il suo modello di governance. pensavo che Canonical Eppure avesse fatto un grande affare rilascio e laltro, per esempio. OpenStack, daltro canto, sviluppata in modo aperto e non possiede componenti proprietarie. c pi di una componente Quindi in OpenStack? S, al momento sono tre. La prima chiamata OpenStack Compute. Questa la Nova a cui si alludeva nel post citato prima, ed la parte infrastrutturale. dove vivono le macchine virtuali. Computer fornisce delle API per la congurazione e la gestione di queste macchine. dove gli sviluppatori possono avere a che fare, oltre che con lhardware virtuale, anche con le capacit di scalare dellinfrastruttura e con quelle di elaborazione parallela. Nonostante il basso livello di queste operazioni, Computer scritto un Python, e molti sviluppatori scelgono di usare i loro binding Python. C il supporto per un vasto range di backend per le macchine virtuali la parte nota come hypervisor. Questo in contrasto rispetto a quanto fa Eucalyptus, che supporta solo KVM e Xen, e questo stato possibile anche grazie a un forte aiuto da parte di Canonical. OpenStack funziona con KVM e Xen, ma anche con VMWare, LXC (Linux Containers ne parleremo tra uno o due mesi), User Mode Linux e anche Qemu, anche se la documentazione ammette che gli ultimi due sono da usare solo a scopo di sviluppo piuttosto che di produzione. quali sono le altre componenti? E Con linfrastruttura gestita da Nova, laltro grande requisito per la cloud lo storage. Diversamente dal computer che stai usando ora, lo storage nella cloud ha bisogno di far fronte a sistemi distribuiti, processi e capacit dinamiche. Questa componente in OpenStack chiamata Object Storage, o Swift, e inizialmente stata sviluppata da Rackspace. scritta in Python proprio come Nova. Ci sono diverse funzionalit avanzate, come labilit di aggiungere con facilit capacit extra, o riparare le rotture automaticamente e pu scalare su dimensioni ancora poco familiari per la maggior parte degli utenti petabyte multipli e miliardi di oggetti (le). Inne, Swift collegato a Nova usando lOpenStack Image Service, che gestisce la scoperta, la registrazione e linvio delle immagini dei dischi virtuali. LXP

usando Eucalyptus per la sua cloud. Laveva fatto, in origine. Ma circa un anno fa, lazienda dietro a Ubuntu ha annunciato di aver iniziato a rimpiazzare Eucalyptus con OpenStack. La decisione sembra essere stata presa perch Eucalyptus non era aperta come OpenStack. Open Source, ma passano sempre sei mesi tra un

LINUX PRO 120

Hardware

Il team di LXP ha passato del tempo provando schede madri, CPU, dischi SSD e schede grafiche al posto vostro
pesso noi utenti Linux ci concentriamo principalmente sul software, senza pensare molto allhardware sottostante. Il motivo di ci potrebbe essere che ormai Linux decisamente stabile e funziona bene sul vecchio hardware che abbiamo, quindi raramente ci capita di pensare al ferro a meno di incappare in problemi di driver o simili. anche vero, per, che se invece si considera lhardware pi recente, facile che ci vengano in mente dubbi sulla compatibilit con Linux e sulle prestazioni. Anche se i problemi di compatibilit sono molti meno di 10 anni fa, a nessuno piace acquistare un dispositivo per poi dover passare ore e ore per capire come farlo andare con il sistema del Pinguino. Per questo motivo abbiamo provato diversi componenti hardware, di varie marche, per vericarne proprio compatibilit e prestazioni sotto Linux. Per rendere la nostra scelta la pi pratica possibile, non ci siamo spinti nel test delle CPU o delle schede grache pi estreme. Questo non d solo una chance alle distro Linux di non aver problemi con driver e supporto, ma ci permette di rimanere anche in una fascia di prezzo accessibile a tutti. Abbiamo anche provato prodotti concorrenti, come le schede video AMD e Nvidia, o i processori Intel e AMD, con lobiettivo e la speranza di fornirvi una panoramica il pi vasta possibile di cosa funziona bene e cosa no. Abbiamo vericato le differenze di prestazioni tra le piattaforme a 32 bit

Aggiorna ora!
e 64 bit, i miglioramenti che vi offre un disco SSD e quanto validi siano i driver open per le schede video. E anche se non trarremo delle conclusioni assolute su quale hardware dovete acquistare, abbiamo cercato di rendere il pi semplice possibile la vostra scelta.

8 6

3 4
10
LINUX PRO 120

Hardware

La guida completa allhardware


Iniziamo con i dispositivi a cui tutti gli altri componenti si collegano
0
Le schede madri hanno forme e dimensioni differenti, ma i formati pi comuni sono quelli della famiglia ATX. Questo standard denisce dove devono stare i connettori dalimentazione e come ci si deve collegare a essa. La maggior parte delle schede usa la dimensione ATX standard, e queste sono le schede preferite dalla maggior parte degli utenti desktop e dai power user perch offrono il numero pi ampio di espansioni. Ma anche il formato Micro-ATX popolare, specialmente nei set-top box o nei PC che devono occupare poco spazio. Il formato Mini-ATX si trova nei sistemi embedded, ma tutto ci che cos piccolo dominio degli specialisti. Allutente normale serve di solito una scheda ATX o Micro-ATX.

Scheda madre

Ci sono solo due costruttori di CPU se si considera la piattaforma x86, AMD e Intel, ed entrambe usano una molteplicit di socket (alloggiamenti) per la CPU con i rispettivi connettori per i sistemi di raffreddamento. Quale socket scegliere dipende dalla CPU che vi interessa, in modo da far corrispondere in modo corretto lalloggiamento e il processore. Quindi da questo dipende anche la scelta di quale scheda madre acquistare. Il socket pi recente di Intel chiamato LGA1155 e supporta sia le CPU dello scorso anno, Sandy Bridge, sia i pi nuovi Ivy Bridge. Lultimo socket di AMD, invece, detto AM3+, che abbiamo usato per provare il processore AMD Phenom II. Entrambi i socket richiedono luso di sistemi di raffreddamento (ventole o altro) compatibili, anche se alcune schede madri moderne possono essere adattate con qualche colpo di cacciavite.

Socket della CPU

La memoria collegata strettamente alla CPU, quindi deve essere scelta in modo specico per la piattaforma che volete acquistare. Ora la scelta pi semplice visto che le motherboard moderne per Intel e AMD usano le stesse memorie DDR3 (no a quando non saranno disponibili le DDR4 pi in l nellanno), quindi non dovete far altro che comperare una memoria che sia abbastanza veloce per le vostre esigenze. Se la memoria troppo lenta per la CPU, potrebbe rallentare il tutto o addirittura non funzionare. Se troppo veloce, avrete speso pi soldi per nulla. Noi abbiamo usato 4 GB di G.Skill Ripjaw Gaming Series Memory (F3-12800CL7D), che hanno una velocit di clock di 1.600 MHz. La maggior parte delle schede madri moderne possono montare no a 32 GB di RAM.

Slot di memoria

Le schede despansione attuali usano degli slot chiamati PCI-Express 1x o 16x. Questi ultimi di solito includono uno slot potenziato per la scheda graca, detto PCIEX16, posto vicino alla CPU, e alcuni slot pi lenti chiamati PCIE4.

Slot PCI

Sono molto poche le motherboard dotate dei vecchi connettori IDE per dischi e unit ottiche. Tutto oggigiorno utilizza i pi semplici connettori SATA. Anche se tutti usano lo stesso cavo, la maggior parte dei dispositivi compatibile con SATA-2, che offre una velocit teorica di trasferimento pari a 3 Gb/s, anche se tutte le schede madri che abbiamo guardato supportano SATA-3, che raddoppia questa velocit usando dello storage compatibile.

Porte SATA (2 e 3)

Ora che le piattaforme Intel e AMD contengono una GPU, facile trovare un connettore Video out. Di solito si tratta di DVI o HDMI per il facile collegamento con televisori o monitor moderni, con HDMI che trasporta anche laudio digitale.

Uscita video

Le macchine moderne necessitano di unalimentazione moderna. Assieme al normale connettore da 24 pin, che a volte diviso in due blocchi da 20+4 pin, avete bisogno di un connettore 8 pin/12v per la CPU. Il design dovrebbe essere a prova di imbranato, quindi di solito impossibile inserire un cavo nel connettore sbagliato. Le schede grache meno potenti raramente richiedono unalimentazione extra, ma quelle di livello medio potrebbero aver bisogno di un cavo dalimentazione a 6 pin, mentre quelle top addirittura di due. Tutto questo deve arrivare da un alimentatore (PSU) e per un desktop potente ne consigliamo uno da almeno 600 watt, con piste da 12v separate per la scheda graca.

2 Connettori dalimentazione

In modo simile, ora che tutti si sono assestati nelluso delle USB 2 per i dispositivi, sta avvenendo un lento passaggio a USB 3. Il nuovo standard porta i 480 Mb/s del vecchio USB 2 a 5 Gb/s, rendendolo veloce quanto SATA-3 e superando i collegamento FireWire 800. Comunque la velocit di trasferimento teorica non mai, in realt, raggiunta praticamente. Tutto dipende dal vostro sistema operativo, dai dispositivi coinvolti, dai driver per il vostro chipset e dalluso che fate. Molte persone che fanno editing video sono convinte che FireWire 800 funzioni ancora meglio dellUSB 3, ad esempio.

Porte USB

Di solito trovate uscite audio sia analogiche che digitali, in questo caso ottiche o coassiali per il collegamento con un amplicatore. Molte schede madre usano i chipset Realtek per il suono, e possono riprodurre audio multi-canale. La soluzione migliore tenere laudio nel dominio digitale, cos si evitano delle conversioni e interferenze.

Uscita audio

Probabilmente avete familiarit con le connessioni di rete cablata Ethernet. Le velocit di trasferimento sono rimaste le stesse da un po di tempo, il che vuol dire che la velocit della vostra rete dipende da ci che vi collegate. Tutte le schede moderne supportano le connessioni 10/100 e 1000 Mb/s (Gigabit).

LAN

LINUX PRO 120

11

Hardware

Processori

La potenza di una CPU non dipende solo dalla sua velocit

era un tempo in cui le prestazioni delle CPU si misuravano guardando un solo valore: la velocit di clock. Un processore pi veloce poteva eseguire pi operazioni in un certo lasso di tempo, e quindi poteva portare a termine un compito prima rispetto a una CPU pi lenta. La velocit di clock si misura in Hertz, cio il numero di istruzioni che possono essere eseguite in un secondo (ok, stiamo semplificando, alcune istruzioni richiedono pi di un ciclo di clock). Le CPU moderne viaggiano alla velocit di alcuni GHz (1 GHz = 1.000.000.000 Hz). Cosa costituisce unistruzione dipende dal tipo di processore. Noi guarderemo alla famiglia

La famiglia di processori ARM usa un diverso set di istruzioni


di CPU x86, usate nella maggior parte dei desktop e dei portatili. Questo set di istruzioni nato nel 1978 con i chip 8086 a 16 bit di Intel. Le istruzioni principali sono rimaste le stesse ma nel tempo ne sono state aggiunte di nuove man mano che si rendevano necessarie nuove funzionalit. La famiglia di processori ARM (usata in molti dispositivi mobile) usa un set di istruzioni differente, e quindi, a parit di velocit di clock, offre prestazioni diverse. Cos come con il numero di operazioni, processori differenti eseguono operazioni su diverse quantit di dati. Le CPU

pi recenti sono sia a 32 bit che a 64 bit questo il numero di bit usati in ogni istruzione. Quindi i 64 bit dovrebbero essere il doppio pi veloci dei 32 bit? No. Dipende da che dati vi servono: se state facendo unoperazione su numeri a 20 bit, la velocit di calcolo sar la stessa sulle macchine a 32 e 64 bit. Questa lunghezza della parola pu condizionare anche il modo in cui la CPU indirizza la memoria. Leggete il box 64 vs 32 bit per capire come le differenti lunghezze possono condizionare le prestazioni. Uno dei principali fattori da cui dipendono le prestazioni delle CPU il numero di core. In effetti, ogni core un processore che da solo pu far funzionare del software con poche o nulle interferenze da parte degli altri core. Cos come la lunghezza della parola, il numero di core non pu essere semplicemente moltiplicato per la velocit di clock per determinare la potenza di una CPU. Un compito pu trarre vantaggio da core multipli solo se stato progettato per supportare il multi-thread. Questo vuol dire che gli sviluppatori dividono i programmi in diversi sottoprogrammi, ognuno dei quali pu girare su un core diverso. Non tutti i lavori possono essere divisi in questo modo. Eseguire un programma a singolo thread su una CPU multicore equivalente a far girare lo stesso programma su una CPU a singolo core per sarete in grado di far andare due programmi a singolo thread su una CPU a pi core pi velocemente che non se questi funzionassero su

un processore a singolo core. Noi tendiamo a pensare alla memoria come a un pezzo singolo che il processore suddivide tra i singoli programmi in esecuzione. Ma il discorso ha pi sfumature. Piuttosto che essere un singolo elemento, la memoria composta da una gerarchia di livelli differenti. Normalmente, pi veloce la memoria, pi costa, quindi la maggior parte dei computer ha una piccola quantit di memoria molto veloce, detta cache, una maggiore quantit di RAM e un po di spazio su disco fisso, detto spazio di swap, che entra in azione quando il resto della memoria pieno (semplificando un po il discorso). Quando si parla di CPU, la cache la memoria pi importante, visto che integrata nel chip. Mentre potete installare della nuova RAM o aumentare la dimensione dello swap, la cache fissa. Anche la cache si suddivide su pi livelli, con quello pi basso che pi piccolo e veloce degli altri. Quindi, alla luce di tutto ci, pu essere difficile capire le prestazioni di differenti configurazioni. Per cercare di fare ordine, abbiamo sottoposto a test diverse CPU per scoprire le loro potenzialit. Le CPU che abbiamo preso in esame

Risultati dei test principali


A8 4 Core i5 4 Core A8 4 Core i5 4 Core A8 4 Core i5 4 Core X6 6 Core
0 20 40 60 80 100 120 0

X6 6 Core
1000 2000 3000 4000 5000 6000 7000 8000 0

X6 6 Core
10000 20000 30000 40000

Graphics (Vdrift) FPS

RAM Speed MB/s

Apache static Richieste al secondo

A8 4 Core i5 4 Core X6 6 Core A8 4 Core i5 4 Core X6 6 Core


' )' +' -' /' ('' '

A8 4 Core i5 4 Core X6 6 Core


+ / () ()' '

A8 4 Core i5 4 Core X6 6 Core A8 4 Core i5 4 Core X6 6 Core


(,'' *''' +,'' -''' .,'' 0'''

Iterazioni al secondo

Graphics Magic Sharpen Graphics Magic Blur

John The Ripper Check al secondo (in millioni)

MB/s

IoZone disk read 2 GB Iozone disk read 4 GB

12

LINUX PRO 120

Hardware
Le prestazioni e il numero di core
Possiamo capire come il cambiare il numero di core attivi abbia una ricaduta sulle prestazioni usando VirtualBox per simulare CPU diverse. Si pu allocare un certo numero di core dellhost a una macchina guest, e vedere come il sistema funziona con un numero arbitrario di core. Nei graci qui sotto potete vedere come si comportato il sistema nei benchmark con uno, due e tre core. Le differenze nelle prestazioni con un numero diverso di core sono dipese molto dal tipo di task richiesto. In alcuni casi, aumentare il numero di core ha rallentato lesecuzione a causa delloverhead legato alla schedulazione dei diversi processi sui vari core. In altri casi, come con il crack delle password,
1 Core 2 Core 3 Core 1 Core 2 Core 3 Core
' ('' )'' *'' +'' ,'' '

si osserva un miglioramento lineare man mano che si aumentano i core disponibili. Vale la pena notare che abbiamo eseguito questi test in modo sequenziale. Se avessimo eseguito pi task in parallelo, ci saremmo aspettati dei risultati migliori per le CPU con pi core. Quando si sceglie un processore, conviene considerare quanti task intensivi farete girare assieme. Per luso server, controllate se i servizi che dovete eseguire traggono vantaggio dalle architetture multi-core. Compiti che funzionano molto bene su CPU multi-core spesso vanno ancora meglio se prendete in considerazione schede grache che possono usare CUDA o OpenCL.
1 Core 2 Core 3 Core

1 Core 2 Core 3 Core 1 Core 2 Core 3 Core


-'' ()'' (/'' )+'' *''' '

MIPS
SciMark v2 Monte Carlo SciMark v2 Sparse Matrix Multiply

MB/s
Disk Write Disk Read

John The Ripper Check al secondo (in millioni)

sono (in ordine crescente di prezzo): AMD Phenom II X4 3400 MHz Quad Core (Cache: 4x64 KB livello 1, 4x512 KB livello 2, 6 MB livello 3). AMD Phenom II X6 3300 MHz Sei Core (Cache: 6x512 MB livello 2, 6 MB livello 3). Intel i5-2500K 3,6 GHz (Cache: 2x32 KB livello 1, 256 KB livello 2, 6 MB livello 3). Tutte le CPU sono state fatte funzionare alla velocit di clock di targa. Loverclock unarte e vi permette di spremere un po di potenza ulteriore da ognuna di queste CPU, ma questo discorso va oltre gli scopi di questo articolo. In un mondo ideale avremmo testato queste CPU con la stessa scheda madre cos da eliminare le differenze di fondo. Per processori diversi hanno differenti congurazioni dei pin, quindi non stanno sicamente sulla stessa scheda madre (e non funzionerebbero lo stesso se potessero starci). Dai graci di queste pagine potete vedere che la CPU Intel, a fronte di un costo maggiore, supera quelle di AMD in quasi ogni settore. Questa cosa non ci sorprende, visto

che costa il doppio della CPU AMD meno costosa. In poche aree, il test con le pagine statiche in Apache per esempio, le prestazioni sono proprio il doppio. Quello che sorprende di pi , forse, che la CPU Intel batte il Phenom II X6 pur avendo due core in meno e una velocit di clock di poco superiore. Lunica eccezione signicativa a questo comportamento stata registrata con il test di cracking delle password con John The Ripper e con alcuni test GraphicsMagic. Questi sono test altamente parallelizzati, che dovrebbero trarre vantaggio dai processori extra presenti nellX6. Non tutte le differenze di velocit sono dovute alla CPU. Come detto prima, abbiamo provato i processori su schede madri differenti. La scheda madre Intel aveva a bordo un SSD usato come cache per i dati inviati allSSD principale. Questo ha portato a velocit di lettura incredibilmente maggiori per i le sotto i 2 GB, mentre non si sono notate particolari differenze con i le pi grandi. Le velocit di scrittura sono state molto simili tra le varie congurazioni. La scelta dellunit

di elaborazione probabilmente pi complessa oggi di quanto non fosse in passato. Abbiamo una scelta che va dalle CPU a bassi consumi, ai processori complessi, ai chip graci altamente parallelizzati e ai cluster di CPU. Ora pi che mai, la domanda non qual il processore migliore? ma qual la soluzione pi giusta per il mio compito?. Rispondere a questa domanda richiede la conoscenza di quali chip sono presenti sul mercato, quanto essi costano e come si comportano nei differenti compiti possibili. Le migliori CPU Intel sono i pi potenti in circolazione per i normali compiti quotidiani, ma tanta velocit ha un prezzo rilevante. E i core extra dellX6 riescono a eguagliare, e qualche volta a superare, il processore i5 nei benchmark GraphicsMagic, che simulano la manipolazione delle immagini, lasciando al contempo un po di euro nelle vostre tasche. Comunque, a meno che non abbiate attivato tutti i widget e gli effetti di KDE, lX4 pi che capace di portare avanti i compiti normali che vengono afdati a un PC casalingo.

64 vs 32 bit
Anche se avete una CPU a 64 bit, possibile che non stiate traendo vantaggio dalle sue capacit di elaborare 64 bit alla volta. Per mantenere la compatibilit allindietro, i processori a 64 bit sono progettati per eseguire codice a 32 bit. Abbiamo eseguito un set di benchmark usando un processore a 64 bit ed eseguendo entrambe 32-bit 64-bit 32-bit 64-bit
' ()' )+' *-' +/' -'' '

le versioni a 32 e 64 bit di Linux per vedere quanto ci condizionasse le prestazioni. I 64 bit in genere funzionano pi velocemente, ma non cos tanto per molti task. Con un uso normale del computer, non si notano le differenze, ma se dovete elaborare numeri, allora la lunghezza di parola maggiore velocizza le cose. 32-bit 64-bit

32-bit 64-bit 32-bit 64-bit


,'' (''' (,'' )''' ),'' *''' *,'' '

SciMark v2 Monte Carlo SciMark v2 Sparse Matrix Multiply

Disk write Disk read

John The Ripper Check al secondo (in millioni)

LINUX PRO 120

13

Hardware

Schede grafiche
Con Steam in procinto di approdare su Linux e un rinnovato vigore nella produzione di videogiochi indipendenti, lora di fare un upgrade della scheda grafica presente nel proprio sistema

orse il componente di un PC pi aperto a pareri soggettivi in una discussione quello preposto alla generazione della grafica. Questo perch la scelta migliore per ognuno dipende da quanto importante la grafica per il proprio sistema. Se usate spesso la riga di comando o un semplice Window Manager, per esempio, una scheda video molto potente sarebbe solo uno spreco di denaro. Questo perch nel reame della grafica 3D che la maggior parte delle unit di elaborazione grafica (GPU) differiscono, e spesso lo fanno grandemente. Anche se le capacit di rendering 3D sono importanti principalmente per far girare i videogiochi 3D, la potenza di calcolo contenuta nelle GPU viene spesso usata per diversi compiti, come lencoding e il decoding dei filmati in alta definizione, i calcoli matematici, la riproduzione di contenuti protetti da DRM e la visualizzazione di tutte quelle finestre mollicciose e ombreggiature che chiunque sembra amare nel proprio desktop. Delle specifiche hardware migliori non vogliono dire solo poter giocare a una risoluzione pi alta, con una migliore qualit video e con un framerate superiore tutte cose che rendono pi piacevoli i giochi ma ora significano anche poter godere di unesperienza desktop migliore.

La velocit non lunico fattore da considerare. Anche la qualit del rendering importante. La Radeon HD 6850 (a destra) ha avuto dei problemi con le texture di Bioshock. La Nvidia GTX570 (a sinistra) non li ha avuti

Elaborare
Come per le CPU, lo sviluppo delle GPU non sembra arrestarsi. La loro potenza sembra raddoppiare ogni 18 mesi e questa sia una buona che una cattiva cosa. Laspetto positivo che i modelli pi potenti dello scorso anno ora costano la met rispetto a quando erano uscite. Quello negativo che la vostra scheda video invecchia in fretta, anche se avete preso il modello pi recente. Per queste ragioni, e perch la maggior parte dei videogiocatori che usano Linux non pretendono la tecnologia video allultimo grido visto che non ci sono giochi in grado di sfruttarla (a meno di non fare il dual boot con Windows) focalizzeremo la scelta delle schede su valore, prestazioni, supporto hardware e compatibilit. Per il valore, daremo unocchiata alle schede poco sotto i modelli pi estremi, incluse un paio di opzioni economiche e un paio pi costose. Per le prestazioni, abbiamo testato tutti i modelli usando la versione 3.0 del benchmark Unigene. Si tratta di un arduo test per le capacit 3D di una GPU, sfornando

milioni di poligoni completi con ambient occlusion, illuminazione globale dinamica, cumulonembi volumetrici e dispersione della luce. Ha un aspetto migliore di qualunque gioco per Linux, e verica sia le capacit hardware che la qualit dei driver. Visto che lengine Unigene viene usato in diversi giochi di alto prolo, incluso Oil Rush provato proprio in questo stesso numero, il risultato dovrebbe fornire una buona indicazione su quanto bene una GPU in grado di funzionare con i giochi pi moderni che appariranno. Comunque abbiamo voluto testate il nostro hardware anche con i giochi attuali. Abbiamo provato la versione pi recente di Alien Arena, ad esempio, cos come alcuni titoli indipendenti come World of Goo. Cosa pi importante, abbiamo provato il tutto anche con alcuni giochi presi da Steam, tramite WINE. Steam un portale di videogiochi per Windows e nel tempo divenuto il modo migliore per acquistare e installare nuovi giochi per quel sistema operativo. Ci sono dei forti indizi, o forse anche pi, che Steam si prepari a sbarcare anche su Linux prima della ne di questanno. Se succeder, le prestazioni misurate usando WINE vi forniranno delle indicazioni su come certi titoli Steam gireranno su Linux.

Hardware
Abbiamo messo alla prova cinque differenti schede. Le prime due sono integrate, il che vuol dire che fanno parte della CPU invece di essere delle schede esterne inserite in uno slot della scheda madre. In genere ci si riferisce al pacchetto CPU+scheda graca con la sigla APU, Accelerated Processing Unit. Abbiamo iniziato con lAPU Sandy Bridge di un processore Intel i5-2500K a 3,3 GHz. Visto che Intel sviluppa seriamente i driver per Linux, ci si aspetta ottimi risultati. Laltra APU testata

14

LINUX PRO 120

Hardware
migliore sulla carta; quella presente nei chip A8-3850 di AMD (chiamati anche AMD Fusion). Si tratta del chiacchierato core graco delle future Playstation 4, e anche se la GPU del nostro modello molto probabilmente meno potente di quella che user Sony, lo stesso possibile combinare il suo potere computazionale con unaltra scheda Radeon esterno usando lopzione CrossFire presente nel BIOS. Nel nostro caso abbiamo usato una AMD Radeon HD 6550D con 512 MB di RAM. Le altre schede provate sono tutte esterne, connesse a uno slot PCIe sulla motherboard. In questo caso, dovete assicurarvi di avere due slot liberi perch una scheda graca spesso occupa lo spazio dello slot adiacente a quello in cui inserita a causa del sistema di raffreddamento. Inoltre dovete vericare che il vostro alimentatore sia in grado di fornire abbastanza potenza. Noi ne abbiamo usato uno da 600 W con due linee separate da 12v per alimentare le schede grache. Le schede in prova necessitano di alimentazione: un singolo connettore a 6 pin, oppure due per le schede pi affamate di energia le schede Nvidia. I modelli che abbiamo guardato sono leconomica AMD Radeon HD 6670 (una delle schede progettate per funzionare con lAPU A8-3850), la pi potente AMD Radeon HD 6850 e la Nvidia GTX570: tutte sono state testate sia con i driver open che con quelli proprietari.

Le GPU in prova
Per tutte le schede, tranne quella integrata di Intel, il sistema usato aveva una CPU AMD A8-3850 a 3,6 GHz con 4 GB di RAM e una normale installazione di Ubuntu 12.04 a 64 bit. Abbiamo usato Unity 2D per evitare conitti con laccelerazione graca. Intel Sandy Bridge i5-2500K AMD Radeon HD 6550D (con CPU A8-3850) AMD Radeon HD 6670 1 GB AMD Radeon HD 6850 1 GB Nvidia GTX570 1,25 GB

Le schede economiche
I risultati con Sandy Bridge sono stati vari. Eseguendo Mesa 8.0.2, il benchmark Unigene ha funzionato a stento, il che vuol dire che molti giochi moderni sono impossibile da usare (bisogna dire che i pi nuovi e costosi Ivy Bridge sono molto pi potenti). Abbiamo avuto pi fortuna con Alien Arena, che ha raggiunto un confortante 60fps, ma ci siamo formati lopinione che se si vuole giocare bisogna ricorrere ai driver proprietari. La prima GPU Radeon provata stata la HD 6550D integrata, con la versione 0.4 dei driver Open Source Gallium. Le prestazioni desktop sono state buone, e Unity 3D di Ubuntu ha funzionato a dovere senza problemi (cos come ha fatto

con Intel). Da notare che il benchmark Heaven ha offerto risultati migliori rispetto a quelli di Sandy Bridge, cosa che non si pu dire per la stessa demo usata con lantica Nvidia 7600GTS, ma il rendering ha presentato grossi problemi. Abbiamo visto delle silhouette muoversi sullo schermo a 7 frame al secondo al posto di texture colorate. Ecco perch il test successivo stato fatto usando i driver proprietari Catalyst, installati manualmente. Il test successivo stato fatto con Alien Arena che ha offerto un framerate inaspettatamente basso, 25fps pi che adeguati per il lavoro dufcio ma lontano dai risultati di Sandy Bridge. Con il benchmark Heaven, invece, i driver proprietari hanno fatto il rendering della graca in modo corretto fornendo un risultato di 10.3. Questo valore potrebbe sembrare basso, ma dovete considerare che si tratta di una scheda integrata e il benchmark stesso non ottimizzato per la giocabilit, per cui si tratta di un buon risultato. Abbiamo provato lo stesso test sia con Unity 3D che Unity 2D per vedere se cerano differenze quando il desktop usa OpenGL, ma non ne abbiamo trovate cosa che dimostra che lultima versione di Unity ha risolto i problemi di prestazioni con le OpenGL. Le prestazioni hanno visto un piccolo salto in avanti con il test della Radeon HD 6670 1024 MB. Alien Arena ha funzionato a 55fps e il benchmark Heaven ha raggiunto il punteggio di 25,3 fps, con un minimo di 11 fps e un massimo di 46. Questo un ottimo risultato per una scheda economica e se optate per la versione con il sistema di raffreddamento passivo potrebbe essere una buona opzione per un PC con cui giocare o vedere lm.

Le schede pi potenti
Ci rimangono da testare le due schede pi potenti a nostra disposizione: la Radeon HD 6850 1024 MB e la Nvidia GTX570. Abbiamo iniziato con la Radeon perch avevamo i driver gi installati, e subito ci siamo trovati di fronte dei risultati drammaticamente migliori con il benchmark Heaven che ha restituito un valore di 46,2 fps minimo 15 e massimo 78.8. Rassicurati da questi risultati abbiamo provato un altro paio di test, per primo con la versione nativa (e antica) di Darwinia. Questo gioco ha funzionato a ben 160-250 fps, il che vuol dire che questa scheda non ha problemi con i giochi vecchi. Invece abbiamo riscontrato delle difcolt provando Steam. Per far funzionare Bioshock, per esempio, siamo dovuti uscire da Unity 3D. Ma questo non bastato, la graca non veniva renderizzata correttamente. andata meglio con i giochi Source, visto che gli stress test sia di Half Life 2 sia di Lost Coast hanno dato buoni risultati lultimo ha raggiunto i 47,91 fps nonostante la spettacolare qualit di rendering. Poi venuto il momento della scheda pi costosa del gruppo, la Nvidia GTX570 con 1,25 GB di RAM. Prima labbiamo provata con i driver Open Source nouveau, ma non siamo riusciti a far funzionare i nostri benchmark, Darwinia o i giochi di Steam, quindi abbiamo immaginato che se si spendono cos tanti soldi si vogliono anche i driver migliori. Ci sono poi altri vantaggi nellusare i driver proprietari Nvidia. Lutility di congurazione, per esempio, che pu essere installata assieme ai driver e che si dimostra un tool potente e versatile. Potete abilitare il TwinView, che abbiamo sempre trovato pi stabile rispetto a Xinerama per gli schermi multipli, e passare da una risoluzione allaltra per ogni schermo senza riavviare. Anche i driver Catalyst possono fare ci, ma con i driver Nvidia potete anche overclockare la scheda graca e monitorare le temperature della GPU. Il tool Nvidia molto utile anche per la risoluzione dei problemi, abbiamo usato il tool Settings per scaricare i dati EDID dal nostro schermo e forzare altri schermi a usare gli stessi dati EDID. Ricordiamo che questi dati identicano le caratteristiche del monitor. Con i driver proprietari, la GTX570 stata la vincitrice. Ha ottenuto un grande risultato con il benchmark Heaven, con 66,6 fps, e Bioshock ha funzionato alla perfezione da Steam usando WINE. Quindi, quando Steam sar nativo per Linux, le cose andranno ancor meglio con le schede Nvidia. Se questo sia sufciente per spendere un po di pi dipende da quanto importate siano i videogiochi per voi.
LINUX PRO 120

Demo Heaven: confronto tra fps


.' -' ,' +' *' )' (' '
Sandy Bridge Radeon HD 6550D Radeon HD 6670 Radeon HD 6850 Nvidia GTX570

15

Hardware

Aggiornate i vostri dischi con unit che dipendono solo dallelettronica

Dischi a stato solido

entre i processori, le schede video, la RAM e le connessioni di rete sono diventati pi veloci nel corso degli anni, la tecnologia dei dischi fissi sembra aver fatto dei piccoli passi in avanti. Ci sono ancora parti meccaniche e di solito i dischi fissi si dimostrano il componente pi lento, meno affidabile e pi desideroso di energia in un PC tipico. I dischi SSD (Solid State Drive) stanno cambiando la situazione, e rappresentano levoluzione dei PC pi entusiasmante degli ultimi cinque anni. In questa parte finale dellarticolo daremo unocchiata a questi miracolosi dispositivi. Oltre a confrontare due modelli, cercheremo di dare risposta alle domande che molti si pongono a proposito degli SSD: vale la pena prenderli?, quanto a lungo vivranno? e come posso sfruttarlo al meglio?.

e sul tempo davvio di sistemi operativi e programmi (e su qualunque operazione che fa molte letture sul disco), e pu far apparire incredibilmente pi veloce il vostro computer. Tutti questi beneci sembrano fantastici, ma gli SSD hanno anche dei contro che dovreste considerare prima di acquistarne uno. Laspetto negativo che, al momento, non potete prendere dischi SSD con una

Non potete acquistare SSD pi grandi degli hard disk tradizionali


capacit simile a quella dei dischi ssi pi grandi, e inoltre sono molto pi costosi. Ad esempio, il Crucial M4 128 GB che abbiamo provato lo potete trovare online a circa 105 euro; per una cifra simile potete acquistare un disco sso tradizionale di buona qualit da 2 TB. Se vi serve molto spazio e avete un budget limitato, un SSD non ci che fa per voi. La risposta alla domande vale la pena prenderli? dipende da come si usa il computer.

il TRIM. E come si fa a far funzionare questo TRIM? La prima cosa da fare assicurarsi che il vostro disco SSD lo supporti. Se lo avete preso recentemente, molto probabile che sia cos, altrimenti vi conviene vericarlo. Potete farlo con hdparm: hdparm -I /dev/<ssd> | grep TRIM supported sostituendo <ssd> con il nome di dispositivo dellSSD. Se il comando vi mostra qualcosa, allora siete pronti ad abilitare il TRIM nel sistema operativo. Per farlo, dovete formattare le partizioni con i lesystem ext4 o btrfs. Questi sono gli unici lesystem Linux che supportano TRIM. Noi al momento preferiamo ext4, perch btrfs manca ancora di tool di riparazione stabili, rendendo pi difcile recuperare i dati dopo un problema.

Valgono la pena?
I dischi tradizionali contengono dei piatti che girano, rivestiti di un materiale magnetico. Questo materiale magnetico viene manipolato da testine di lettura/ scrittura che si spostano sopra i piatti e in questo modo vengono memorizzati i dati. Invece gli SSD non hanno parti mobili. Gli SSD sono composti da milioni di piccoli transistor (del tipo oating gate), ognuno dei quali capace di memorizzare un bit dinformazione. Visto che non hanno parti in movimento, essi sono pi silenziosi, pi piccoli, pi efcienti dal punto di vista energetico, pi veloci e pi longevi. Questa soluzione lideale se pensate di applicarla a un portatile, dove spazio, consumi e rumorosit sono fattori importanti. La maggior velocit dei dischi avr anche un forte impatto sui PC

Opzioni di mount
Fatta la formattazione, dovete modicare le opzioni di mount del lesystem, visto che TRIM non viene abilitato di default. Dovete quindi agire sul le /etc/fstab. Prima di fare modiche a questo le, per, vi suggeriamo di farne una copia di backup in modo da ripristinarlo rapidamente in caso di problemi. Quindi, con i privilegi di root, digitate cp /etc/fstab /etc/fstab.bk Se qualcosa va storto, potrete sempre avviare il PC da un DVD Live, ripristinare il le fstab originale e riavviare ritrovando tutto al suo posto. Con il backup pronto, in ogni riga che descrive una partizione nel vostro SSD, dovete

Vita
Due timori comuni riguardo gli SSD riguardano la loro durata e se le prestazioni rimangono costanti lungo tutta la loro vita. Questi dubbi non sono infondati. I transistor in un SSD dureranno circa 10 anni, o 10.000 scritture, in base a cosa capita prima quindi hanno un tempo di vita limitato. Inoltre, in alcuni tra i primi modelli venduti, un rmware mal progettato causava un degrado nel tempo delle prestazioni. Nei dischi moderni, con un sistema operativo e un lesystem attuali, limportanza di questi problemi stata fortemente ridotta grazie a una cosa chiamata TRIM. Questa cosa aiuta il rmware del disco a gestire lallocazione dei blocchi, assicurando che ogni transistor sia scritto il numero minimo di volte senza un degrado delle prestazioni. Quanto grande limpatto di TRIM? In uno degli articoli pi autorevoli sullargomento, Anand Lal Shimpi ha trovato che su un disco vecchio, le prestazioni in scrittura erano solo il 52% rispetto a quelle di un disco nuovo, senza TRIM; con TRIM, il disco vecchio funzionava al 98% rispetto a quello nuovo. Quindi vale la pena abilitare

Massime prestazioni
Chi ossessionato dalla velocit, ha a disposizione uno o due trucchi da applicare per incrementare la velocit dei dischi. Uno riguarda il corretto allineamento delle partizioni, ma ne parleremo in maniera pi estesa in futuro. Laltra opzione cambiare lo scheduler del disco. Questo detta lordine daccesso dei blocchi e, nei dischi tradizionali, lo scheduler elevator veniva usato per dare maggiore priorit ad alcuni blocchi rispetto ad altri (a seconda di quanto vicino al centro fosse il blocco, il tempo daccesso cambiava). Visto che laccesso ai blocchi praticamente costante negli SSD, potreste pensare di ricorrere allo scheduler noop: echo noop > /sys/block/<ssd>/queue/scheduler

16

LINUX PRO 120

Hardware
modicare la parte che riporta la parola default. A questa, dovete aggiungere ,discard cos che lintera riga appaia cos: /dev/sda1 / ext4 default,discard 0 1 Ecco tutto. Salvate il le, riavviate e il vostro disco avr il supporto al TRIM attivo. Questo il trucco pi importante da applicare al vostro SSD.

Estendere la vita
Ci sono altri modi per dare una marcia in pi al vostro disco e prolungarne la vita. La pi semplice di queste tecniche laggiunta dellopzione noatime alle opzioni di mount, in modo simile a quanto avete fatto con discard poco fa. Di norma i lesystem Linux salvano la data dellultimo accesso in lettura di un le e quella dellultima modica. Con lopzione noatime verr memorizzata solo la data dellultima modica, riducendo il numero di scritture necessarie per aggiornare questo metadato e allungando la vita dellunit. Fate attenzione, per: vecchie applicazioni, come Mutt, non funzioneranno in modo corretto se abilitate noatime, quindi prima vericate la compatibilit di questa opzione con il software che usate. Potete allungare la vita del disco SSD anche studiando bene quali partizioni mettere su di esso. Per esempio, se avete a disposizione anche un disco tradizionale nel vostro sistema, potreste considerare di usare

il disco SSD per i lesystem che non cambiano molto spesso, come / e /home, lasciando cose come /var, /tmp e swap sul disco tradizionale. Se questo non possibile, potete fare altri cambiamenti per ridurre la frequenza delle scritture in queste directory. Ad esempio, potete incrementare la severity dei messaggi di log che verranno salvati modicando il le /etc/rsyslog.conf (usate man rsyslog.conf per ulteriori dettagli), oppure potete ridurre la tendenza a usare lo swap (swappiness). Questo lo ottenete eseguendo echo 1 > /proc/sys/vm/swappiness

I drive sotto esame


La tecnologia di storage sottostante i dischi SSD varia di poco. Quello che fa la maggior differenza per quel che riguarda le prestazioni sono il controller e il rmware lhardware che decide come e dove scrivere i dati sul disco. Un cattivo controller pu rallentare il disco, particolarmente quando questo invecchia, e pu portare a velocit differenti tra scritture di grandezze diverse. Le due unit che vi presentiamo offrono due controller diversi. Il Crucial M4 usa un controller Marvel, mentre lIntel 330 usa un Sandforce. Gli stessi controller vengono impiegati su molti altri dischi, quindi i nostri risultati vi possono essere daiuto nella scelta su quale unit acquistare, anche se non opterete per uno dei due modelli provati. Abbiamo messo alla prova i dischi usando i test PostMark, Compile Bench e Kernel Unpacking della suite Phoronix, cos da dare uno sguardo a come i dischi si comportano in situazioni reali. Tutti i test sono stati condotti sotto Ubuntu 12.04, con ext4 e lopzione discard impostata in /etc/fstab. Il test Compile Bench forse il pi interessante, visto che la sua attivit cerca di simulare azioni in grado di invecchiare il lesystem. In questi test il disco Intel con controller Sandforce si comportato molto meglio. Detto ci, il disco di Crucial stato pi veloce quando si trattato di avere a che fare con le di piccole dimensioni nel test PostMark e si comportato marginalmente meglio nel test legato al kernel. LXP

Intel 330
TPS MB/s MB/s MB/s S

Risultati

Crucial M4

'

(''

)''

*''

+''

,''

'
Postmark

)''

+''

-''

/''

Postmark Compile Bench Initial Create Compile Bench Compile Compile Bench Read Compiled Tree Unpacking the Linux Kernel

Compile Bench Initial Create Compile Bench Compile Compile Bench Read Compiled Tree Unpacking the Linux Kernel

LINUX PRO 120

17

Bug

Scoprire i problemi che affliggono i programmi un ottimo modo per contribuire alla comunit Open Source

Segnalare i bug
parte del naturale processo di sviluppo del software. Fortunatamente, vivere nel fantastico mondo della comunit Open Source (di cui facciamo parte) significa che ognuno di noi pu contribuire a trovare e riportare questi bug agli sviluppatori. Nel mondo Open Source, segnalare i bug un modo estremamente importante con cui si pu dare un contributo alla comunit. Esiste un pregiudizio per cui riportare i bug viene considerato come poco rispettoso, perch sottolinea i difetti, o semplicemente perch richiede che gli sviluppatori facciano del lavoro aggiuntivo. Niente di pi sbagliato. Come sviluppatori in alcuni progetti, possiamo assicurarvi che i nostri utenti sono i nostri occhi e le nostre orecchie per trovare i bug e i problemi in un programma. Se non avessimo la lista dei bug riportati, non potremmo avere percezione della qualit del software. Come tale, contribuire nel segnalare questi problemi un esercizio tremendamente prezioso, e chiunque pu fare la sua parte: non servono grandi conoscenze tecniche, e sicuramente

utti i programmi contengono errori. Potete aver trovato quello che considerate il programma pi affidabile di sempre, ma siamo pronti a scommettere che allinterno si celano dei problemi. Lo vediamo anche negli apparecchi di tutti i giorni, dalle automobili richiamate in fabbrica per un aggiornamento software, a tutti gli aggiornamenti che periodicamente dobbiamo effettuare su PC, tablet e telefoni cellulari. Perch tutti i programmi hanno degli errori allinterno? Perch sono, per quanto sofisticati, scritti da esseri umani. Ogni programma una complessa collezione di diverse parti, ognuna delle quali funziona con modi e tempi diversi, e con diverse caratteristiche. Anche i migliori programmatori scrivono programmi che contengono errori, ma fortunatamente le ammaccature nellarmatura della perfezione possono essere riparate da unaltra grande caratteristica dei programmi: i problemi possono essere risolti. Nel gergo del computer, questi problemi (o errori) sono chiamati bug, e i bug fanno
LINUX PRO 120

nessuna abilit di programmazione. In questo articolo non parleremo nello specifico di una delle tante comunit Open Source, quindi tutto quello che andremo a dire potr essere tranquillamente applicato a qualsiasi gruppo nel quale siate interessati a prendere parte. Prima di continuare, si pu capire come segnalare un bug, se prima si capisce come viene rilasciato il software nella comunit Linux. Esistono due tipi di comunit differenti: Upstream sono progetti software indipendenti che hanno creato molti dei programmi che usiamo e amiamo. Ad esempio LibreOfce, OpenShot, GIMP, ecc. Downstream sono le distribuzioni Linux che raccolgono tutti i programmi Upstream e li rilasciano come un unico sistema integrato. Sono famosi esempi Ubuntu, Fedora e Debian. Il percorso con cui i programmi nascono dal computer dei programmatori e arrivano nelle distribuzioni Linux allincirca questo: il programmatore di un progetto Upstream crea le funzionalit del programma nel codice sorgente locale su cui lavora (prendiamo come

18

Bug
esempio il creare una funzionalit nel programma OpenShot www.openshotvideo.com); procede, quindi, a incorporare il suo codice nel repository principale del codice sorgente del progetto; gli utenti interessati alla versione Upstream, dopo aver compilato il programma, provvederanno a testarne le nuove funzionalit e, in base a diversi test, riporteranno dei bug. Ogni programmatore coinvolto in quella funzionalit provveder a correggere il bug; quando una versione Upstream abbastanza matura, si procede al rilascio con un numero progressivo di riferimento (es. OpenShot 1.0); con il rilascio di una nuova versione di un programma Upstream, gli sviluppatori di una distribuzione provvedono a creare i pacchetti e rilasciare quindi il programma nella versione di sviluppo della distribuzione (es. Ubuntu e Fedora); anche in questo caso, gli utenti che seguono la versione di sviluppo della distribuzione, provvedono a scaricare una versione aggiornata e testarla, e quindi riportano eventuali bug in aree adibite sui siti Web delle distribuzioni (si utilizzano software comunemente chiamati bug tracker che tengono traccia dei bug e permettono di aggiornarli aggiungendo informazioni e/o fornendo la soluzione al problema e la versione in cui il bug stato risolto); gli sviluppatori delle distribuzioni risolvono i problemi (molti dei quali sono spesso di integrazione e creazione dei pacchetti) e, se necessario, riportano le correzioni nella versione Upstream; quando la distribuzione pronta, anchessa viene rilasciata con un numero di versione (ad esempio, Ubuntu 12.04 che identica anno 2012 nel mese di Aprile). A questo punto si possono avere due tipi di segnalazione bug: bug che afiggono il programma Upstream originale; bug che sono stati introdotti durante la creazione e lintegrazione dei diversi pacchetti nella distribuzione Downstream. In un mondo perfetto, i bug scoperti in una distribuzione sono riportati dagli utenti che la utilizzano e se si scopre che questi bug non sono stati introdotti dagli sviluppatori della distribuzione, questi vengono riportati al programma Upstream. Date unocchiata al box con gli approfondimenti, per avere maggiori informazioni su come differenti bug possano essere connessi. Il nostro intento qui quello di fare in modo che il progetto Upstream venga a conoscenza dei bug che afiggono il codice sorgente di quel programma, e che la distro, invece, venga a conoscenza solamente di quei bug che sono introdotti durante la creazione dei pacchetti e lintegrazione del software.

Lesempio di un bug aperto su Launchpad, il bug tracker comunemente usato dalla distribuzione sudafricana Ubuntu e da altri progetti

Lanatomia di un bug
Prima che si possa riportare un bug, bisogna sapere come fatto. In poche parole, un bug un comportamento inatteso o inaccurato in un software. Ecco alcuni esempi:

si clicca su un pulsante in un programma e il programma si blocca (questo non dovrebbe mai accadere); si sommano due numeri durante un calcolo e il risultato errato (il risultato deve essere sempre quello corretto); una traduzione errata o mostra un termine nella lingua sbagliata (i termini devono essere corretti in ogni lingua supportata). Per ognuno di questi esempi si presume che sappiate a priori quale sia il comportamento corretto atteso e che siate, inoltre, in grado di stabilire quando si vericano comportamenti errati. A volte molto facile, altre volte no. Dovete sempre ricordare che un bug rappresenta soltanto un comportamento inatteso o inaccurato, e non necessariamente un modo di funzionamento o unarchitettura del programma che non vi piace. Per esempio, se gli sviluppatori decidono di cambiare licona dellapplicazione con una dellorribile colore rosa shocking, potrete anche odiare come appare, ma non si tratta di un bug. Non intasate il sito di segnalazione bug del progetto con la lista di tutte le cose che non vi piacciono, per questo ci sono altri canali di comunicazione. Tutti i bug hanno due importanti caratteristiche: i sintomi per esempio, se cliccate su un pulsante in unapplicazione e questa si blocca oppure si chiude da sola, il sintomo parecchio evidente, cliccate quel pulsante e lapplicazione smette di funzionare. Altri bug possono avere sintomi pi subdoli, come un degrado graduale delle prestazioni o, per esempio, lerrato salvataggio di alcuni dati; la causa se cliccate sul pulsante nellapplicazione e questa si blocca, qual era il pulsante su cui avete cliccato? Cosa avete fatto prima di premerlo? E quali parti del codice ha provato a chiamare lapplicazione in quel momento? Molte persone che segnalano bug, prima scoprono i sintomi e poi vanno a fondo nel problema per trovarne la causa.

Raccolta di prove
Quando si scopre un bug in una parte del software, si vuole essere in grado di fornire agli sviluppatori quante pi informazioni possibili, cos che possano risolverlo pi facilmente. La miglior prova che possiamo fornire quella che viene chiamata riprodurre un bug. Si forniscono, in poche parole, tutti i passi necessari che lo sviluppatore di turno deve effettuare sul proprio sistema per riprodurre il problema in questione e, in questo modo, essere in grado di analizzarlo e inne risolverlo. Per alcuni bug, essere in grado di riprodurli abbastanza semplice. Tutto quello che si deve fare ricordare i passi precedenti alloperazione che si stava effettuando quando occorso il bug. Pi accurata la descrizione dei passi precedenti, pi semplice sar il lavoro dello sviluppatore. Inoltre, se ricordate tutti i passi, prima di segnalare il bug, provate a ripercorrerli voi per primi per assicurarvi che la procedura sia corretta. Sfortunatamente, ci sono situazioni in cui difcile essere in grado di riprodurre le azioni che hanno causato il bug. In alcuni errori non cos semplice come nel nostro esempio, in cui si effettuano alcune operazioni, poi si clicca su un pulsante e il programma smette di funzionare: per lo stesso programma ci possono essere differenti condizioni iniziali (ad esempio dipendenti, magari, dal tipo di le che abbiamo aperto), condizioni di connettivit o di dati inseriti, e magari solo in una certa

Privacy
Quando riportate un bug, ricordate che le informazioni che state fornendo saranno disponibili pubblicamente su Internet. Per esempio, se intendete condividere schermate, screencast, le di log o altro materiale, assicuratevi che nessuno di questi contenga materiale che volete mantenere privato. Dovete sempre dare unocchiata al materiale che state fornendo e vericare di poterlo condividere pubblicamente senza timori.

LINUX PRO 120

19

Bug
combinazione questi danno luogo al bug in questione. Se un computer sembra bloccarsi in maniera casuale, alquanto difcile capire quale sia la motivazione di un tale comportamento. In questi casi, in cui non si sia in grado o non si sappia come riprodurre il bug, comunque importante cercare di collezionare pi informazioni possibili nel momento in cui il problema si presenta, questo per dare agli sviluppatori almeno un indizio su come riprodurre (e quindi identicare e poi risolvere) il bug. Per esempio, se vedete linterfaccia rotta per qualche motivo, o state guardando un video e il player lo riproduce in modo errato o non uido, potete fornire alcune informazioni visive che sono di grande aiuto: Schermate (screenshot) se un problema si presenta con un errore visivo, potete semplicemente fare una schermata del vostro ambiente di lavoro per mostrare, visivamente, lo stesso errore che avete incontrato. molto facile effettuare una schermata sia con Windows e Linux (tasto Stamp), sia con Mac OS X (premere contemporaneamente Cmd + Shift + 3). Nel caso peggiore potete utilizzare il programma Open Source GIMP; Screencast se il bug che si presenta alquanto difcile da descrivere o semplicemente volete mostrare in modo accurato come riprodurlo, potete registrare un video di tutto quello che state facendo sullo schermo. Questi tipo di video si chiamano Screencast e potete registrarne uno con programmi come RecordMyDesktop; File di Log molte applicazioni salvano alcune informazioni su quello che stanno facendo in alcuni le testuali, chiamati le di log. Queste informazioni sono spesso utili solo agli sviluppatori, ma sapere dove si trovano e come reperirli richiede una buona conoscenza dei sistemi Open Source e dellapplicazione in particolare. Su alcuni sistemi (ad esempio Ubuntu) i le di log sono inviati automaticamente quando si riporta un bug allinterno del sistema

Bugzilla un altro famoso bug tracker. In questa immagine, per esempio, viene usato per segnalare un bug riscontrato in LibreOfce

Niente di personale
Quando qualcuno riporta un bug, non solo inizia di fatto la discussione/conversazione riguardo ad esso, ma crede di stipulare una specie di contratto ufcioso: Io ho riportato il bug, quindi adesso voi (sviluppatori) lo risolverete quanto prima, giusto?. Tenete sempre a mente che molti sviluppatori che contribuiscono alla comunit Open Source sono volontari, mentre quelli che sono pagati dalle compagnie sono sempre delegati a correggere i bug che servono a loro. Questo pu signicare che il bug riportato potrebbe richiedere settimane prima di essere risolto o addirittura considerato. Provate a non prendere la situazione troppo sul personale.

(e comunque, come molti dei nostri lettori sanno, su Linux i le di log si trovano in /var/log/); File di esempio se si scopre che caricare un certo le in un programma (ad esempio un video che vogliamo guardare con un video player) la causa del bug, allora pu essere molto utile fornire questo le quando si riporta un bug. Poich un le pu essere piuttosto grande, consigliabile caricarlo su servizi come Dropbox o Ubuntu One e poi copiare il link di condivisione nella segnalazione. Ovviamente assicuratevi di avere i diritti necessari a condividere tale le. Unaltra tecnica molto utile quella di passare alla modalit di debug del programma. Molte applicazioni forniscono la possibilit di passare a questa modalit e ottenere cos maggiori informazioni di sistema quando si presenta il bug. Recentemente abbiamo trovato un bug nel lettore multimediale Rhythmbox che, semplicemente, si bloccava inaspettatamente. Per cercare di capire il problema, abbiamo lanciato il lettore da riga di comando, usando lopzione -d per abilitare la modalit di debug, in questo modo: $ rhythmbox -d Il programma si avviato e abbiamo iniziato a usarlo normalmente. Un sacco di informazioni di debug hanno iniziato ad apparire nel terminale, e alcuni minuti pi tardi, quando il programma si bloccato, abbiamo notato che alcune di queste informazioni facevano riferimento alla funzione di dissolvenza in Rhythmbox. Abbiamo, quindi, copiato e incollato le informazioni in un le di testo. Successivamente abbiamo disabilitato la funzionalit di dissolvenza e ricominciato a utilizzare Rhythmbox normalmente. Dopo circa tre giorni di utilizzo non si era pi bloccato e abbiamo arguito che il problema fosse strettamente legato a quella funzionalit. Abbiamo, inne, riportato il bug sul sito del progetto, sottolineando il problema, cosa successo quando abbiamo disabilitato la funzione e allegando il le di testo con le informazioni di debug che avevamo

raccolto. Il processo di raccolta delle prove uno dei pi importanti e utili contributi che si possano fare per permettere di scovare non solo i sintomi di un problema, ma anche le potenziali cause.

Iniziare una conversazione


Fino a questo momento avete raccolto una serie di informazioni che possono includere la lista dei sintomi, schermate, screencast e le di log. Il passo immediatamente successivo quello di fornire tutte queste informazioni agli sviluppatori, in modo che possano revisionarle e quindi risolvere il problema. Sebbene si sentano spesso delle persone dire che hanno riportato dei bug nella comunit Open Source, tutto ci suona come se questo si trattasse di un processo una-tantum, ovvero che una volta fatta la segnalazione sia possibile dimenticarsi del problema, tanto gli sviluppatori saranno in grado di risolverlo quanto prima. In realt non del tutto vero. Innanzitutto non si tratta tanto di riportare un problema, quanto di iniziare una conversazione con gli sviluppatori. Quando si sottopone un bug, solo il primo passo di questa conversazione, che generalmente funziona in questo modo: 1 si riporta il bug; 2 uno sviluppatore risponde chiedendo maggiori dettagli; 3 voi riportate queste informazioni aggiuntive; 4 i passi 2 e 3 molto probabile che si ripetano, ntanto che le informazioni permettano di risalire alle cause del problema; 5 lo sviluppatore corregge il problema. Anche se importante il primo passo (senza il quale il problema non sarebbe di fatto mai sottoposto agli sviluppatori), di altrettanto pari importanza continuare a rispondere alla discussione, al ne di aiutare lo sviluppatore a trovare la causa del problema. Poich queste discussioni non possono essere salvate su un forum o su altri strumenti poco adatti, viene utilizzato generalmente un programma chiamato

20

LINUX PRO 120

Bug
bug tracker. Un bug tracker un programma (molto simile come funzionamento proprio a un forum) che permette di aprire un bug e di raccogliere la conversazione riguardante quel singolo problema. Come abbiamo detto, un programma molto simile a un forum, ma ha una serie di funzionalit aggiuntive che consentono di fornire maggiori dettagli sul bug, ad esempio assegnare priorit e persone che ci stanno lavorando, oppure di allegare le (di log o le schermate). Questi programmi permettono inoltre di associare il bug a una specica versione del software (ad esempio la versione 1.1, piuttosto che la pi recente 1.2). La maggior parte dei bug tracker ovviamente disponibile con interfaccia Web e contiene le informazioni principali allinizio della descrizione del bug stesso, per poi mostrare, a seguire, leventuale evolversi della discussione. In pressoch tutti i progetti Open Source, il bug tracker disponibile sul sito Web di riferimento ed aperto a tutta la comunit perch possa contribuire, aggiungendo nuovi bug o semplicemente come raccolta di informazioni per chi un bug lo deve risolvere. Esempi dei pi utilizzati bug tracker sono Bugzilla, Launchpad, Trac e altri. Ognuno di questi differenti sistemi fornisce alcune caratteristiche di base su quello che un bug tracker deve immagazzinare su un bug, ma ovviamente hanno caratteristiche diverse che li rendono differenti luno dallaltro. Differenti comunit Open Source hanno differenti approcci su come essi considerano giusto tracciare i singoli bug. Alcuni progetti hanno il loro bug tracker personalizzato e installato sui propri server Web (e utilizzano spesso proprio Bugzilla), altri, invece, preferiscono utilizzare un servizio di hosting dedicato (come Launchpad). Non esiste la formula magica per cui si possa conoscere come funzionano tutti i singoli bug tracker, ma fortunatamente una volta avuta esperienza con uno di essi, non poi tanto difcile utilizzare gli altri. Per un progetto su cui sta lavorando un nostro collaboratore, egli ha scelto di utilizzare Launchpad per riportare i bug, potete dare unocchiata alla lista dei bug proprio qui: https://bugs.launchpad.net/ubuntuaccomplishments-system . Non andremo a parlare dei singoli sistemi di bug tracking, ma piuttosto forniremo le indicazioni generali per contribuire a riportare un bug. Tutte le informazioni si applicano indipendentemente dal sistema di bug tracking utilizzato dal progetto. Come abbiamo detto prima, un bug segnalato su un sistema di bug tracking contiene alcune informazioni sullo stato del bug stesso (cos come uneventuale conversazione presente). Diamo ora unocchiata ai campi pi comuni che vi verr richiesto di compilare sottomettendo un bug: Componente (component) tipicamente lapplicazione per la quale si sta effettuando la segnalazione del bug;

Sommario questa la descrizione, in una riga, del problema. Potete pensare a questo campo come alloggetto di una e-mail: deve descrivere il problema in modo conciso. Cercate di essere chiari e in nessun modo cercate di dare maggiore importanza al vostro problema (ad esempio non scrivete Bug terribile in Rhythmbox, da correggere immediatamente!, ma piuttosto Abilitare la dissolvenza genera dei blocchi casuali nel programma); Descrizione ovviamente qui deve essere inserita una denizione pi lunga e accurata del problema, molto simile al corpo di una e-mail. Ora, dovrete riportare i dettagli del bug e dei sintomi, e possibilmente quello che pensate su come riprodurre il problema. La chiave essere precisi, dettagliati e andare dritti al punto. Alcuni sistemi di bug tracking vi domanderanno solo queste informazioni, ma ci sono altri campi di stato, che abbiamo menzionato prima, che gli sviluppatori e i membri della comunit useranno per aggiungere ulteriori informazioni riguardo al bug. Questi sono: Priorit questo campo descrive quanto importante il fatto che il bug venga risolto. Ci sono generalmente una serie di opzioni disponibili (Critical, High, Medium, Low, ecc.) e lo sviluppatore di turno decider limportanza del bug e quindi la sua priorit. Un bug che genera perdita di dati o blocchi improvvisi, verr probabilmente contrassegnato come Critical (critico), un altro che, invece, genera un piccolo inconveniente avr una priorit pi bassa; Stato (status) questo rappresenta lo stato corrente del bug nel suo ciclo di vita. Le valorizzazioni pi comuni sono, Nuovo (un bug appena inserito che non ancora stato preso in carico da uno sviluppatore), Confermato (uno sviluppatore ha confermato che il bug esiste), Incompleto (uno sviluppatore ha domandato per ulteriori dettagli che non sono ancora stati forniti), In corso, Fix committed (la soluzione al problema stata portata nel codice sorgente), Fix released (e rilasciata nellultima versione) e Invalido (il problema riportato non considerato un bug dagli sviluppatori); Assegnato a (assigned to) se uno sviluppatore vuole risolvere il problema, pu assegnare il bug a se stesso, in modo da far sapere agli altri sviluppatori che sta lavorando su quel bug. Alcune persone che riportano bug tendono a essere un po troppo sensibili riguardo alle impostazioni di priorit e stato. Alcune persone si possono offendere se riportano un bug e poi lo stato viene impostato su Invalido (poich gli sviluppatori non considerano tale problema un bug). Un altro esempio quando una persona che riporta il bug pensa che sia di elevata importanza, e invece viene impostata un priorit molto bassa. In casi come questi ricordate che gli sviluppatori probabilmente conoscono il programma molto meglio di voi. La priorit assolutamente relativa. Se ci sono un centinaio di bug riportati, non possono essere

tutti considerati Critici o con unaltra priorit, per questo gli sviluppatori devono assicurarsi di avere una lista ordinata per importanza. I pi importanti e urgenti da risolvere avranno, quindi, la massima priorit.

Pi informazioni
Una volta che avete riportato correttamente un bug, probabilmente uno degli sviluppatori risponder chiedendo di discuterlo. Lo sviluppatore vi potr chiedere maggiori informazioni, oppure di eseguire dei semplici comandi e poi fornirgli i risultati (se il bug non fosse facilmente riproducibile, ad esempio, su altri sistemi). Dovete sempre cercare di rispondere a queste richieste di informazioni, poich aumentano esponenzialmente la possibilit che il bug venga risolto. Lo sviluppatore vi potrebbe anche chiedere di utilizzare una nuova versione del programma, per vericare che il bug sia stato effettivamente risolto. Questo cambia, ovviamente, da sistema a sistema, e ha diversi livelli di complessit. Uno sviluppatore Upstream potrebbe chiedervi di scaricare i sorgenti dellultima versione del programma, compilarli e quindi provare a vedere se il bug si ripresenta. In alternativa potrebbe esservi richiesto di installare un nuovo pacchetto e vericare che tutto funzioni. Dovrete valutare quanto vi sentiate a vostro agio a installare questi programmi. Se non vi sentite sicuri nellinstallare nuovi programmi sul vostro computer (o non avete le conoscenze necessarie per compilarli come si deve), basta che lo diciate allo sviluppatore. Potreste, tuttavia, chiedere a qualcun altro di testare la nuova versione. Al procedere della conversazione allinterno del bug, potreste vedere, a un certo punto, che questo stato risolto. Congratulazioni! Avete appena contribuito in modo splendido al Free Software. Se non vi foste presi la briga di segnalare il problema, probabilmente non sarebbe mai stato identicato e risolto. Riportare i bug, ottenere delle risposte da questi bug e imparare da queste risposte vi aiuter a contribuire in modo pi efcace allOpen Source e, ovviamente, a riportare sempre pi bug. LXP

Collegare i bug
Una funzionalit molto utile nel bug tracker Launchpad che i bug che afiggono le versioni Upstream dei programmi possono essere collegate ai bug che, invece, colpiscono la distribuzione. Ad esempio, se c un bug nel programma Banshee che si blocca quando si preme il tasto Play, se il bug esiste per il programma, esiste anche per una certa distribuzione (diciamo Ubuntu). Quando il bug in Launchpad collegato al bug Upstream, i cambiamenti in una delle due segnalazioni vengono automaticamente sincronizzati tra i due sistemi di bug tracking. Questo assicura che lo stato delle due differenti segnalazioni che riguardano lo stesso problema siano aggiornate contemporaneamente. In questo modo la comunit degli sviluppatori pu tenere sotto controllo le segnalazioni e condividere le soluzioni al problema.

LINUX PRO 120

21

Retrogaming R etrogaming

Vi mancano i gloriosi giorni dellAmiga? Vi va di giocare di nuovo a quei vecchi giochi del SNES? Linux Pro vi mostra i migliori emulatori in circolazione...
computer sono fantastici a fingere di essere altri computer. A patto che il vostro processore abbia grinta a sufficienza e i vostri banchi di RAM abbiano abbastanza spazio, potete trasformare il vostro PC in quasi ogni altro computer o console di videogiochi uscita negli ultimi decenni. Naturalmente, non esattamente la stessa cosa: dovrete essere creativi se volete ricreare laspetto, le sensazioni e lodore della macchina originale. Ma un PC decente pu eseguire programmi scritti per unampia gamma di piattaforme, tutto grazie allabbondante offerta di emulatori Open Source. Essenzialmente, un emulatore un programma che crea hardware virtuale, nel quale potete caricare il software originale. Se pensate allAmiga, per esempio, nella sua forma reale un processore Motorola 68000 e un pugno di chip di supporto. Un emulatore fornisce una versione virtuale di questi chip, permettendovi di caricare il sistema operativo

TEMPO
originale e i programmi in esso, e per quanto ne sanno i programmi, essi sono eseguiti su di una macchina originale. Scrivere gli emulatori un lavoro duro, poich la maggior parte dellhardware classico ha peculiarit non documentate, ma grazie agli industriosi sforzi di alcune squadre di smanettoni, ne abbiamo un sacco con cui giocare. Ci sono buone ragioni per lemulazione: potete eseguire vecchi programmi dei quali non c nessuna versione Linux;

RIPORTATE INDIETRO IL

Potete trasformare il vostro PC in quasi ogni altro computer o console di videogiochi


potete usare il vostro vecchio software se la macchina originale ha reso lanima; potete giocare ai giochi classici (senza dubbio con pi intensit dei blandi FPS di oggi); potete provare computer classici senza doverli comprare;

potete vedere comerano le cose ai vecchi tempi. In questo articolo vedremo alcuni dei computer e delle console classiche pi popolari e vi mostreremo come farli funzionare in forma emulata. Qui useremo Ubuntu, ma tutti gli emulatori sono Open Source e potrebbero essere disponibili negli archivi di pacchetti della vostra distribuzione. Notate, comunque, che per far funzionare molti di questi emulatori, avrete bisogno delle immagini ROM originali del software incluso nelle macchine (es. il sistema operativo di Amiga). Questa, legalmente, unarea un po grigia; molti obietterebbero che se possedete la macchina originale, non dovrebbe esservi precluso fare una copia dei dati della ROM (o cercarli su Internet). Per, mentre le immagini di ROM abbondano su Internet, di solito contengono codice soggetto a diritti dautore, perci non vi diremo come ottenerli. Speriamo nella vostra comprensione!

24

LINUX PRO 120

Retrogaming
Commodore Amiga
Enormemente popolare negli ultimi anni 80 e nei primi 90, lAmiga era una macchina notevole per il suo tempo, offrendo capacit grache e audio molto superiori ai PC. Il suo sistema operativo a interfaccia graca forniva la multitasking con prelazione mentre la maggior parte degli utenti di PC armeggiavano con il prompt del DOS ed era unottima macchina per i giocatori. Purtroppo, Commodore era completamente inefcace quando si trattava di commercializzazione e strategia ed entro la ne degli anni 90 la linea Amiga era di fatto terminata. Tuttavia, la maggior parte della redazione di Linux Pro ha cari ricordi della macchina. A causa delluso esteso di Amiga di chip speciali, scrivere un emulatore accurato un compito difcile. Il meglio conosciuto UAE, che nato come Emulatore di Amiga Inutilizzabile (Unusable Amiga Emulator) perch non si avviava nemmeno. Oggi la U sta per UNIX, ma UAE si esegue su una gamma di altre piattaforme. Ci sono molti fork in circolazione su Internet, tra i quali i pi popolari sono E-UAE e PUAE. Potete ottenere il primo dallarchivio di pacchetti di Ubuntu (o di Debian) con: sudo apt-get install e-uae Una volta installato, eseguite e-uae per far saltar fuori linterfaccia. La maggior parte degli emulatori vi fanno armeggiare con modiche a riga di comando, perci siamo lieti che E-UAE fornisca una piacevole alternativa punta-e-clicca GTK. La prima cosa che dovrete trovare unimmagine
E-UAE con Workbench in esecuzione. Abbiamo anche avviato Frontier per una schermata, ma siamo scoppiati in lacrime dalla nostalgia dopo aver sentito la colonna sonora del titolo

della ROM per Kickstart, il rmware dellAmiga che responsabile dellavvio e delle funzioni principali del SO. Nella scheda Memory della GUI di E-UAE, selezionate la sua posizione sul vostro sistema; poi procuratevi unimmagine del oppy disk di Workbench in formato ADF, e selezionatela nella scheda Floppy disks. Una volta fatto, premete Start. Dopo alcuni momenti, apparir la scrivania di Workbench. Bentornati ai giorni gloriosi! Potete ora tornare allinterfaccia di E-UAE e inserite altre immagini di oppy disk. Se spegnete la macchina, potete cambiare varie impostazioni dellhardware, furono portati tra le due piattaforme, con la versione dellAmiga che di solito aveva una graca migliore. Purtroppo, Atari si persa in un bicchiere dacqua e impieg tutte le sue risorse a lavorare sulla mal predestinata console Jaguar, perci la linea ST termin a met degli anni 90. Alcuni pazzi sostenitori tedeschi

come la quantit di memoria e il tipo di processore che ha lAmiga virtuale. Durante luso, potreste scoprire che il mouse si comporta stranamente, per sistemarlo passate alla modalit a schermo intero con F12+S (e premeteli di nuovo per disattivarla). E-UAE ha buone prestazioni con i giochi, come anche con il software serio e in modo predenito potete usare il tastierino numerico come joystick virtuale. Usate 8 e 2 per su e gi, 4 e 6 per sinistra e destra, e 5 per sparare. Per avviare un gioco, selezionate il suo le immagine ADF come prima unit e riavviate lAmiga virtuale. hanno fatto alcuni cloni, ma oggi la restante scena di ST si concentra sullemulazione. Hatari un eccellente emulatore di ST disponibile negli archivi di pacchetti di Ubuntu. Quando lo avviate per la prima volta vedrete un messaggio di errore che dice che /usr/share/hatari/tos.img non pu essere trovata. TOS il sistema operativo incorporato nella ST, perci prendete una sua versione in le e copiatela nella posizione (dovrete essere root per laccesso in scrittura alla cartella). Eseguite Hatari di nuovo e vedrete la classica scrivania verde di GEM. Premete F11 per passare tra le modalit normale e a schermo intero e F12 per richiamare il pannello graco delle congurazioni. Potete inserire immagini di oppy disk, cambiare il tipo di ST da emulare e impostare un joystick virtuale. Una fantastica caratteristica di Hatari la capacit di registrare video AVI dallazione sullo schermo. Andate alle opzioni Hatari Screen nelle impostazioni e premete Record AVI. Questo rallenter lemulatore considerevolmente, ma quando avete nito, cliccate su Stop Record e troverete hatari.avi nella vostra cartella home. Unaltra opzione Aranym (http://aranym.sf.net). Invece di essere un clone di una ST, questo fornisce hardware emulato tipo-ST con un misto di componenti sostituti di TOS e GEM su tutti. utile per eseguire alcuni successivi, pi esigenti programmi di ST e Falcon.
LINUX PRO 120

Atari ST

Sebbene non fosse tanto potente quanto lAmiga, lopera di Atari era una popolare alternativa e aveva guadagnato sostenitori nellindustria musicale grazie al fatto che includeva porte MIDI. Era basata sullo stesso processore della linea Amiga (il Motorola 68000), perci molti giochi

Questo autore ha lasciato il suo splendido Atari ST davanti a una stufa, cosa che ha fatto diventare i tasti tutti traballanti

25

Retrogaming
Sinclair ZX Spectrum
Booooo-bip, booooo-bidibipibibippy... tutti quelli che erano gi nati negli anni 80 ricordano il suono di caricamento del nastro dello Spectrum. E il contrasto di colori, gli effetti sonori granulosi e ronzanti e i tasti di gomma sul modello 48k. Lo Spectrum stato enormemente popolare in Gran Bretagna, ma in qualche modo sopraffatto dal Commodore 64 nel resto del mondo (nel nostro paese i ame tra le due fazioni erano notevoli). Non importa per, possiamo ancora giocare a classici come Elite, Manic Miner e Mercenary con la limitata potenza della macchina. Potete ancora trovare vecchi Spectrum su eBay e siti simili a un prezzo ragionevole, ma le vecchie macchine stanno iniziando a rompersi. Fortunatamente, ci sono un sacco di emulatori che fanno un lavoro accurato. Uno di questi Spectemu, che emula il modello 48k. Gli utenti di Ubuntu e di Debian possono installarlo tramite il pacchetto spectemu-x11. Questo richiama il pacchetto spectrum-roms, che contiene il mini sistema operativo incorporato nella macchina a 8 bit. Questo codice ancora coperto dai diritti di Amstrad, ma come bel gesto la societ ha dato agli sviluppatori dellemulatore il permesso di distribuire le ROM. Perci non necessaria nessuna caccia sulla rete: hurrah! Eseguite lemulatore da riga di comando con xspect e tenete docchio la nestra del terminale, poich fornisce molti riscontri e aiuti. Dentro
Mercenary forniva un vasto mondo tridimensionale in soli 48k. Alla faccia di quasi tutti gli altri giochi

lemulatore, per esempio, premendo Ctrl+H vedrete un elenco dei comandi principali. Per caricare i programmi premete i tasti F3 o F4 nella nestra dellemulatore, poi passate alla nestra del terminale e inserite il nome del le. Ma perch due diversi comandi? Beh, i programmi dello Spectrum sono normalmente distribuiti in due diversi formati: immagini della memoria e immagini del nastro. Il primo solo un blocco di dati per riempire i banchi RAM della macchina e ha lestensione Z80 o SNA. Per caricarli usate F3. Per le immagini del nastro, che rappresentano le originali cassette audio,

e tipicamente niscono con .tap, dovete prima inserire LOAD nella nestra dello Spectrum (premete J, poi premete Maiusc+P due volte). Premete Invio per avviare lo Spectrum virtuale, poi premete F4 e inserite il nome del le del nastro nella nestra del terminale. Un suggerimento se non avete il suono nellemulatore: installate alsa-oss ed eseguite aoss xspect. Se volete un emulatore pi avanzato, specialmente per software che richiede macchine pi recenti, provate Fuse (http://fuse-emulator.sf.net). Questo emula persino i cloni russi dello Spectrum.

Commodore 64

Negli Stati Uniti stato il Commodore 64 che ha dominato lera degli 8 bit. Come computer singolo pi venduto di tutti i tempi (in confronto a una linea di computer come lAmiga), il C64 si fatto

strada in milioni di case e ha ancora un esercito di fedeli sostenitori oggi. Questo dovuto specialmente al chip SID, il generatore di suono del C64, e alcuni musicisti stanno ancora scrivendo musica per i pochi chip SID ancora

Ecco una schermata di Elite, o, come conosciuto nella redazione di Linux Pro, il gioco che ha consumato molte infanzie

funzionanti oggi. Il C64 stato usato anche ampiamente come computer domestico serio, con persino un sistema operativo a interfaccia graca chiamato GEOS. VICE, lemulatore versatile di Commodore (Versatile Commodore Emulator) nato nel 1993. Emula anche alcune delle altre macchine di Commodore, come il VIC-20 e il PET. Potete ottenerlo su Ubuntu tramite sudo apt-get install vice e usare x64 per avviarlo. Al primo avvio, comunque, vedrete un messaggio di errore che segnala che VICE non pu trovare il le kernal. Questo il sistema operativo incorporato nel C64, perci dovrete trovarne una copia e metterla nella cartella /usr/lib/vice/C64. Dovrete anche trovare i le ROM basic e chargen e metterli nella stessa cartella. VICE ha uninterfaccia a menu di GTK, perci guardate nei menu Options e Settings per vedere quali parti del C64 emulato potete ottimizzare. La maggior parte dei giochi sono forniti nel formato TAP (nastro) o D64 (disco), questultimo richiede meno lavoro per essere impostato, perci, una volta che avete trovato il le .tap per il gioco che volete giocare, andate in File D Smart-Attach Disk/Tape e nel menu selezionate il le e premete Autostart. Il gioco si caricher alla stessa velocit della macchina reale, che ottimo per i nostalgici, ma meno eccitante quando vi manca il tempo. Andate in Options D Enable Warp Mode per velocizzare un po le cose. Quando il gioco caricato, disabilitate il Warp Mode per impostare la velocit normale.

26

LINUX PRO 120

Retrogaming
Sega Mega Drive (Genesis)
Sonic the Hedgehog, Road Rash, Columns, Golden Axe, Streets of Rage... la lista di giochi classici per la console a 16 bit di Sega potrebbe andare avanti. Sega posizion il Mega Drive come alternativa alla moda, da posa, al Super NES indirizzato alle famiglie e riusc a piazzare 40 milioni di macchine. Tuttavia, Sega prov a spremere la console un po troppo, crediamo, con gli accessori Mega CD e 32X che frammentarono
il mercato e confusero i clienti sulle strategie dellazienda. Il Mega Drive continua a vivere, per, in forma di gioco per televisore economico che potete comprare negli Argos e negozi simili, dove la console e i chip ROM dei giochi sono sigillati in una scatola. Gens un fantastico emulatore, sebbene non sia cos facile da trovare nel mondo Linux, anche nelle distribuzioni pi grandi. Allindirizzo http://sf.net/projects/gens potete trovare gli RPM e i pacchetti Debian dal 2008 (guardate la sezione Gens for Linux). Se non
Crediamo che Sonic 1 fosse un gioco molto pi equilibrato e intelligente del suo seguito. Inviate tutte le e-mail di protesta al solito indirizzo, per favore

riuscite, potete provare a compilare il codice sorgente o cercare sul Web i diversi pacchetti binari. Una volta installato, potete avviare lemulatore da riga di comando con gens, seguito opzionalmente da un nome di le per unimmagine ROM (i giochi del Mega Drive sono di solito le SMD). In modo predenito, Gens non fa un lavoro particolarmente buono con le impostazioni video, comprimendo la TV emulata in un minuscolo spazio. Andate nel menu Graphic e abilitate la casella di controllo OpenGL per sistemarlo. Potete usare la tastiera come joypad virtuale, con i tasti cursore che funzionano da crocetta direzionale e i tasti A, S e D che svolgono il compito dei tre pulsanti di sparo. Premete Invio per iniziare. Una caratteristica particolarmente utile di Gens la capacit di registrare unimmagine dello stato con la pressione di un singolo tasto: premete F5 e vedrete State saved nellangolo in basso a sinistra. Ora continuate e fate qualcosaltro nel gioco, premete F8 e sarete riportati al punto in cui avete premuto F5. Questo utile quando volete giocare velocemente no alla ne un gioco difcile, poich potete registrare la vostra posizione prima di un livello particolarmente duro, di un salto o di un mostro. Se volete invece usare un vero joypad USB, andate in Option D Joypads e ridenite i tasti.

Super Nintendo

E cos arriviamo indiscutibilmente alla pi grande console dellera pre-3D. Che la chiamiate Super Nintendo, Super NES o SNES, non c dubbio che fosse la casa di alcuni dei pi bei titoli bidimensionali di tutti i tempi: Mario World, Zelda III e Secret of Mana. Grazie ad alcuni trucchi dei chip extra nelle cartucce con la DSP e la Super FX, i patiti di SNES hanno anche avuto un assaggio della ulteriore dimensione sotto forma di Mario Kart, Pilotwings e Star Fox (alias Starwing). Molti hanno visto questa console in qualche modo destinata ai bambini in confronto allofferta di Sega, ma si pu dire che il livello di creativit e di divertimento nei giochi da tripla A di Nintendo ineguagliabile. Perci una fortuna, quindi, che una console cos fantastica abbia anche un brillante emulatore in ZSNES. Questo programma in circolazione da 15 anni e grazie al fatto di essere stato scritto in linguaggio Assembly per x86, poteva emulare una SNES perfettamente su di un PC a 200 MHz. Potreste aver sentito parlare anche di Snes9x, che pi popolare su alcune piattaforme perch non legato a una specica architettura, ma per ragioni di prestazioni vi consigliamo ZSNES. Inoltre, disponibile in quasi ogni distribuzione popolare. Avviate lemulatore e vedrete che ha uninterfaccia unica, dallaspetto retro (o se avete caricato lemulatore con un gioco, premete Esc per far apparire il menu). Andate

in Game D Load per selezionare una ROM del tipo di le SMC e in Cong D Input per ridenire i controlli della tastiera o impostare un joypad USB se ne avete uno. Premere Alt+Invio vi porta in modalit a schermo intero, ma vi consigliamo di esplorare anche alcune delle altre modalit video in Cong D Video per ottenere prestazioni migliori. Una delle nostre funzioni preferite di ZSNES la capacit di creare

i vostri propri trucchi del gioco con una specie di autocomposizione. Andate in Cheat D Search nel menu e scegliete lopzione Comparative Search. Con questo potete fare unimmagine della RAM, giocare per un momento e tornare a vedere quali byte sono cambiati nella RAM. Con un po di tempo e di creativit potete individuare quali byte controllano i bonus, le vite, eccetera e smanettare con i meccanismi del gioco. Divertimento fantastico. LXP

Ah, quanta nostalgia ci viene guardando queste immagini LINUX PRO 120

27

Firefox

Firefox
Turbo
Il pi popolare navigatore Web Open Source continua incessantemente ad acquisire punti di forza. Linux Pro registra i suoi progressi e vi mostra come potenziarlo con nuove caratteristiche

irefox senza ombra di dubbio il pi importante progetto di software libero della storia. Certo, Linux fantastico e fa girare buona parte di quello che Internet, ma non ancora molto conosciuto al di fuori del giro dei suoi appassionati, mentre Firefox usato dappertutto, un marchio di fabbrica estremamente conosciuto, stato sostenuto da eccellenti campagne pubblicitarie e ha ridato speranza al World Wide Web, liberandoci dalla dominazione di Internet Explorer. Forse non tutti ricordano che c stato un momento nel 2002 dove Microsoft aveva un terrificante 95% di quota del mercato dei navigatori e la situazione sembrava orrenda e disperata. Mozilla sopravviveva alloblio grazie al supporto dei vecchi utenti di Netscape, ma cera proprio bisogno di un browser nuovo, veloce, moderno, attraente e ben reclamizzato per riconquistare il Web. E Firefox (noto agli albori come Phoenix e Firebird) fu tutto questo e, cosa ancora pi importante, riusc ad attrarre nuovi utenti nel mondo Linux. Non comunque riuscito a dominare il mercato dei browser, ma questa in fondo una cosa positiva pi siamo e meglio . Comunque, questi ultimi anni non sono stati facili per
LINUX PRO 120

Firefox. Internet Explorer migliorato, e Chrome di Google ha dato un sonoro calcio nel sedere ai classici browser con la sua incredibile velocit e linterfaccia utente agile e leggera, diventando poco tempo fa il numero uno. Nel tentativo di rimontare posizioni, il team di programmatori di Firefox ha affossato il vecchio ciclo di sviluppo, che prevedeva il rilascio di versioni principali ogni anno o due e laggiornamento di caratteristiche secondarie nel periodo tra i rilasci pi importanti. Hanno optato per un ciclo di sviluppo molto pi rapido, con nuovi rilasci principali a pochi mesi di distanza gli uni dagli altri: questa scelta stata molto controversa, con gli utenti che si sono divisi tra pro e contro. Pro: le nuove caratteristiche si fanno strada tra gli utenti pi rapidamente se i rilasci sono fatti seguendo una programmazione con tempi pi stretti, non seguendo i capricci del gruppo di progetto. Questo aiuta Firefox a reggere la competizione con Chrome che si aggiorna continuamente dietro le quinte e sorprende allo stesso modo gli utenti con nuove caratteristiche; Contro: la compatibilit delle estensioni messa in discussione troppo di frequente,

e tutto questo un incubo per lhelpdesk delle grandi compagnie. Per approvare ogni nuovo rilascio devono testarlo per mesi sulle loro applicazioni interne, ma al momento in cui sono pronti scoprono che nel frattempo sono state rilasciate altre cinque versioni principali, con altrettanti cambi di interfaccia utente, e che la versione testata non pi supportata. Questo problema si attenuato un po con luscita di Firefox 10, che una versione ESR, vale a dire Extended Support Release (Rilascio a Supporto Esteso): in altre parole, per essa saranno disponibili correzioni di bug e aggiornamenti di sicurezza importanti per un periodo di almeno un anno dal suo rilascio, in modo che le aziende possano utilizzarla a lungo, sapendo che i loro siti e le loro estensioni non smetteranno di funzionare improvvisamente. Ad ogni modo, grazie al fortissimo ritmo di evoluzione della comunit di Firefox, tutto questo corrisponde a tempi di eoni rispetto allultima versione da noi recensita Firefox 5 in LXP108, per essere precisi. La versione corrente la 13.0.1, e sono successe una valanga di cose nel frattempo. In questa sede esploreremo quello che cambiato e vi mostreremo come installare lultima versione e potenziarla con le migliori estensioni.

28

Firefox

Cosa c di nuovo?

Dopo una raffica di nuovi rilasci negli scorsi 12 mesi e pi, sono cambiate moltissime cose dalla versione 5.0 e in questa sezione sono riassunte le tappe del viaggio verso la versione 13.0.1
splendido per risolvere il noto problema di uso eccessivo della memoria da parte della sua creatura, con la versione in esame che dichiarata richiedere il 50% di risorse in meno rispetto alla 4. Inne, anche il supporto per MathML stato migliorato.

ella corsa per mantenersi al passo di Google Chrome e, in misura minore di Internet Explorer, il team di Firefox ha rilasciato un certo numero di versioni principali in rapida successione. Comunque, se chiedete alluomo della strada quali sono le novit in Firefox 9, probabilmente vi risponder scrollando le spalle. Forse laumentata frequenza dei rilasci ha reso il pubblico meno interessato alle sue caratteristiche: invece di una nuova versione annuale di Firefox con relative fanfare di riviste e siti Web che recensiscono minuziosamente ogni nuova caratteristica, ci aspettiamo tutti un salto di versione ogni pochi mesi e non chiediamo nemmeno cosa sia cambiato. Ma questo navigatore ha fatto enormi progressi dalla versione 5.0:

8 versione ha iniziato ad affrontare


il problema delle estensioni subdole: ha disabilitato le estensioni installate da programmi di terze parti (di solito fuffa pubblicitaria) e, a coloro che hanno eseguito laggiornamento a partire dalla versione 7, Procede un po a scatti, ma la demo FPS di Keith ha chiesto di scegliere quali estensioni Clark disponibile allURL http://tinyurl. volevano continuare a usare. S, sappiamo com/6wpkeot dimostra bene cosa possibile tutti che le estensioni possono essere fare con le trasformazioni 3D CSS eccezionalmente utili, ma a causa di esse molti utenti non tecnici appesantiscono le proprie Gli utenti di questa versione possono incollare 12 gli URL dei le da scaricare direttamente nel installazioni con carichi che non comportano nessun reale vantaggio per loro quindi, a nostro modo di gestore di download, e lopzione Sorgente pagina vedere, anche questa stata una mossa intelligente. presenta il codice numerando le varie linee. Gli strumenti di sviluppo sono stati molto riniti (si noti Maggiori prestazioni con il codice JavaScript in particolare la Console Web e lAnalisi pagina). 9 e migliore compatibilit con HTML5 sono stati i cambiamenti principali introdotti da questa versione In questa versione lapertura di una nuova 13 linguetta offre allutente la vista delle nove niente di immediatamente visibile. pagine da lui pi visitate, in stile Chrome, e la pagina Questa versione ha introdotto una gestione di default standard permette un accesso pi rapido 10 delle estensioni molto pi essibile che in ai Segnalibri, alla vostra storia di navigazione, passato, potendo essa accettare tutto quando scritto alle Preferenze e altro. Sono state inoltre introdotte per le versioni dalla 4 in avanti. Sagge soluzioni per molte novit (oltre settanta) per gli sviluppatori, linterfaccia, con il pulsante freccia per avanzare nella che riguardano gli strumenti Console Web, navigazione che non viene pi visualizzato se non Analisi pagina (in particolare la barra laterale Stile c un indirizzo effettivo a cui avanzare, e il supporto e il pannello HTML), Blocco per gli appunti, Editor per le trasformazioni 3D CSS introdotto in modo stili e il supporto CSS. da permettere agli sviluppatori di inserire effetti 3D. In denitiva, mentre linterfaccia utente stata rinita La controffensiva nei confronti di Google e rinfrescata cogliendo alcuni suggerimenti 11 Chrome inizia da questa versione, con da Chrome, c stato un mucchio di lavoro la possibilit di importare i vostri dati memorizzati sulla parte interna del software, per rendere in quel browser in Firefox. Da questa versione il browser performante con le nuove tecnologie Web possibile sincronizzare le estensioni di Firefox e facilitare il suo uso da parte degli sviluppatori. installate su diversi computer, e per gli sviluppatori E voltando pagina saprete come rendere stato aggiunto un editor di fogli di stile CSS. il vostro Firefox 13 veramente speciale...

Con ottimo tempismo, questa

5 molto pi attraente, grazie allinclusione del

Lesperienza di navigazione Web divenuta

supporto per le animazioni CSS. Non solo questa caratteristica rende il sito Web visitato pi interattivo, ma addirittura in alcuni casi non richiede il supporto Flash. Inoltre a partire da Firefox 5 si iniziato a promuovere lopzione anti-tracciamento dei dati personali, introdotta nella precedente versione, che segnala ai siti Web che non volete pubblicit mirata. Inne, sia la velocit di esecuzione di JavaScript che il supporto di HTML 5 sono state migliorate.

6 da questa versione stata nascosta

La maggior parte dei cambiamenti introdotti

allutente medio, a parte il restyling dellinterfaccia, resa pi simile a Chrome e con aggiunte e riniture alla barra degli URL. Dora in poi, gli indirizzi vengono mostrati con testo di colore grigio, nero per quanto riguarda la parte che identica il dominio. Nel frattempo, il team ha implementato il Blocco per gli appunti JavaScript un ambiente console per testare rapidamente il codice JavaScript ed stata riorganizzata linterfaccia alla Console Web (anche questa usata principalmente dagli sviluppatori di siti).

7 leliminazione del presso http:// dalla barra


degli indirizzi. Ma il team di Firefox ha fatto un lavoro

La modica pi visibile dallutente stata

Come ottenere lultima versione?


La tta programmazione di rilasci di Firefox ha certamente causato pi di un mal di testa a chi organizza i pacchetti per le distribuzioni Linux. Pensate a Debian: la loro politica conservativa permette che solo risoluzioni di bug critici e correzioni di sicurezza arrivino sui rilasci stabili. Il team di Debian si assume la responsabilit del supporto del software che fornisce, e questo diventa un compito difcile con Firefox che salta di qua e di l, proponendo cambiamenti sostanziali nel giro di pochi mesi. Fortunatamente i pacchetti di Firefox disponibili sul sito del browser funzionano normalmente su pi distribuzioni. Per scaricare il pacchetto ufciale dovete andare per prima cosa alla pagina Web www.getrefox.com e premere il pulsante Download gratuito che fa bella mostra di s: dopo qualche istante troverete un pacchetto di tipo .tar. bz2 nella vostra cartella dedicata ai download. Precisamente, nel caso in esame questo pacchetto si chiamer refox13.0.1.tar.bz2: estraete il contenuto di questo archivio aprendo un terminale e digitando il seguente comando tar xfv refox-13.0.1.tar.bz2 Verr creata una nuova cartella dal semplice nome refox. Lanciate ora il seguente comando refox/refox A questo punto potete anche cancellare il tarball e, se tutto andato bene, il navigatore partir e voi potrete aggiungere un launcher al vostro ambiente desktop o al vostro Window Manager. Ricordatevi che questa uninstallazione manuale locale di Firefox, quindi il gestore di pacchetti della vostra distribuzione non la aggiorner: comunque potrete sempre visitare il sito di Firefox per scaricare e installare nuove versioni nello stesso modo.

LINUX PRO 120

29

Firefox

La strada per il paradiso della navigazione

In questa sezione troverete la nostra scelta di trucchi, rifiniture e estensioni che potete mettere in opera per trasformare Firefox nel browser perfetto
bbiamo sempre approvato vivamente la politica del team di Firefox di non cercare di fare troppo. Il troppo stroppia e anche se si tentati di rovesciare sullutente palate di caratteristiche supplementari e abbellimenti, la priorit base di questo tipo di software permettere una riproduzione corretta delle pagine Web. Quindi siamo sempre stati molto soddisfatti del sistema per la gestione delle estensioni usato da questo browser (a parte qualche occasionale problema di compatibilit), che permette di aggiungere qualche opzione extra al nucleo delle caratteristiche di base: le potete scaricare dal sito http://addons.mozilla.org , e qui di seguito vi descriviamo le nostre favorite.

DownThemAll
Il gestore di download standard di Firefox piuttosto rudimentale, quindi questa estensione stata progettata per essere molto pi versatile. Potete scaricare contemporaneamente il contenuto di tutti i link presenti in una data pagina Web, oppure tutte le immagini o i video, oppure ancora digitare una vostra espressione regolare e scaricare i contenuti che la vericano praticamente potete fare quasi tutto quello che desiderate. Questo strumento enormemente utile quando avete una galleria di immagini in una pagina Web, per esempio un album fotograco, e volete scaricarla in un colpo solo. DownThemAll anche altamente congurabile ed capace di eseguire download in maniera concorrente per velocizzare un po le cose. Dopo linstallazione, lo troverete immediatamente disponibile nel menu Strumenti.

Web Of Trust raccoglie recensioni di siti Web, aiutandovi a evitare quelli dal contenuto ingannevole

NoScript
Installatelo e vi bloccher immediatamente tutte le applicazioni Java e Flash sulla maggior parte dei siti Web. E perch mai al mondo dovreste voler fare una cosa simile? Beh, avere queste applicazioni abilitate vi espone completamente agli attacchi

di tipo cross-site scripting, dove codice malevolo pu essere stato iniettato sul sito che state visitando. NoScript non rende solo pi sicuro il vostro navigatore, ma ne migliora anche la velocit, ntanto che il codice JavaScript usato per fare semplici presentazioni e non per offrire contenuti. Potete comunque abilitare i siti Internet dati alluso degli script inserendoli in unopportuna whitelist, che vi viene fornita da NoScript con preinseriti alcuni dei pi popolari siti Web. Consigliatissimo a chi fa un mucchio di operazioni bancarie online.

Web of Trust
Questa estensione lideale per i genitori che vogliono proteggere la navigazione dei gli

da contenuti ingannevoli o per chiunque non voglia inavvertitamente incappare in pornograa o malware. Web Of Trust (WOT) raccoglie le esperienze di migliaia di altri utenti, mostrandovi le valutazioni di siti Web in termini di afdabilit, privacy, e sicurezza per i bambini. Potete personalizzarlo in modo da bloccare certi siti, oppure in modo che vi mostri le valutazioni in ciascun sito che vi viene offerto come risultato dal vostro motore di ricerca. Ci sono molti altri strumenti di questo tipo, ma WOT si integra cos bene con il navigatore che riteniamo sia il migliore in questa classe di estensioni.

FireFTP
Se accedete a un server FTP con Firefox,

Migliorate la vostra sicurezza


Firefox un browser ragionevolmente sicuro e rispettoso della vostra privacy se usato con la sua congurazione di default. Per esempio, se avete usato Google Chrome, saprete che questo navigatore invia e riceve scampoli di informazione dai server di Google per fornire caratteristiche extra, come le previsioni nella barra degli indirizzi su quello che state ivi digitando e avvertimenti riguardo a siti Web potenzialmente infestati da malware (tutte cose che comunque potete disabilitare). Firefox non cos chiacchierino, ma ci sono comunque alcune cose che potete fare per migliorarlo ulteriormente. In primo luogo, potete entrare nel pannello delle preferenze dalla barra degli strumenti (Modica D Preferenze) e scegliere Attiva lopzione antitracciamento dei dati personali dal pannello Privacy: in questo modo avvisate i siti visitati che non desiderate ricevere da loro cookie che osservino la vostra attivit sul Web ad esempio che registrino quali altri siti Web visitate e quali sono i termini di ricerca da voi usati pi spesso. Sfortunatamente, questa opzione solo un suggerimento non legalmente vincolante, e siccome gli interessi economici in gioco sono molto forti, solo pochi siti la rispettano. Ma comunque un inizio. Una seconda cosa che potete fare , nella sezione Cronologia dello stesso pannello Privacy, scegliere lopzione Utilizza impostazioni personalizzate dal menu a tendina Impostazioni cronologia, poi deselezionare la casella dellopzione Accetta i cookie da terze parti. Questa scelta far s che il navigatore accetti ancora i cookie dal sito che state visitando, ma non da altri ad esso relati (come quelli delle locandine pubblicitarie che pu ospitare). Si noti per che anche se questa congurazione funziona bene per la maggior parte dei siti, ne esistono comunque altri che necessitano questa opzione abilitata. Se volete eseguire una operazione sul Web e assicurarvi che il vostro browser non memorizzi nulla, dovete invece scegliere dal menu a tendina Strumenti della barra principale lopzione Avvia Navigazione anonima. Fatto questo, da ora no al momento in cui ne terminerete lesecuzione o disabiliterete questa opzione, niente di quello che farete (a parte laggiunta di bookmark) verr registrato dal navigatore. Questo vi pu essere utile, per esempio, se volete fare qualche operazione bancaria online e non volete lasciar memorizzato nessun tipo di cookie o altra forma di informazione che un sito Web malevolo possa recuperare.

30

LINUX PRO 120

Firefox

quello che vedrete sar una lista semplice lista di le e cartelle, con poche altre informazioni. FireFTP trasforma invece il navigatore in un vero e proprio client FTP, con la capacit di caricare le locali, eseguire test di integrit e sincronizzare cartelle. Questa estensione supporta anche il protocollo SFTP, la crittograa SSL e il le editing in remoto. vero che esistono client FTP eccezionali, ma utile averne uno a portata di click. Dallo stesso sviluppatore inoltre disponibile FireSSH, un client SSH che risiede nella nestra del browser, scritto interamente in JavaScript.

Greasemonkey
Questo software solo nominalmente unestensione: in realt si tratta di una piattaforma per permettervi di usare migliaia di script creati da forse altrettanti utenti sparsi per il Web. Questi script eseguono al volo cambiamenti alle pagine Web, alterandone laspetto o il comportamento. Per esempio, odiate il pannello Video Raccomandati su YouTube? Esiste uno script in Greasemonkey per liberarvene. Vi interessa aver la possibilit di barrare messaggi in Gmail? S, qualcuno ha creato uno script Greasemonkey che vi permette di abilitare questa funzione. Esiste unampia gamma di esempi simili nel sito www.userscripts.org, una volta trovato quelli che vi interessano non sarete pi in grado di vivere senza questa estensione.

Desiderate un Firefox pi simile a Vim? Installate Pentadactyl e concedete una pausa al mouse

unestensione estremamente popolare tra gli sviluppatori di applicazioni Web, e mostra effettivamente quello di cui capace una estensione API.

Pentadactyl
E inne, vi proponiamo unestensione adatta agli amanti di Vim o a chiunque altro non ami molto il suo mouse e desideri che Firefox sia pi orientato alluso con tastiera. Pentadactyl rende il navigatore controllabile da tastiera con una sintassi simile a quella dei comandi di Vim, in modo che possiate scrivere :open seguito da un URL e subito visitare un certo sito o anche :q per chiudere il programma. Potete anche muovervi in una pagina Web con i tasti H, J, K e L, e chiudere una linguetta con il tasto D. In questa piccola panoramica non possiamo rendere giustizia alla vasta gamma di combinazioni di tasti e comandi associati offerta da Pentadactyl, ma forse sufciente dire che si tratta molto di pi di semplici trucchetti praticamente ogni aspetto della navigazione Web trattato con molta cura. LXP

RightToClick
Conoscete tutti quei siti noiosi che usano codice JavaScript per sostituire il menu che appare cliccando con il tasto destro del mouse, proibendovi di selezionare e copiare testi e imponendo restrizioni insensate? Sembra che abbiano preso il controllo del Web, ma RightToClick si oppone al loro strapotere. Con questa estensione potete scegliere quali caratteristiche JavaScript una pagina Web sia in grado di attivare, no a un livello incredibilmente ne. Ad esempio potete disabilitare ogni timer JavaScript in una data pagina, il che vi libera da quei noiosi pop-up che compaiono ogni minuto per ricordarvi di creare un account. Oppure possono bloccare ogni sito Web che cerchi di prendere il controllo della vostra tastiera: veramente un antidolorico per chi naviga in Internet.

Firebug aggiunge una pila di strumenti di sviluppo a Firefox, permettendovi di editare e fare debug di codici HTML, CSS, JavaScript e altro dallinterno del vostro navigatore. E potete farlo in tempo reale, ad esempio visualizzando un sito Web nel pannello superiore e modicando i suoi contenuti nel pannello sotto. incluso un potente debugger JavaScript, e potete osservare lattivit di Rete tra il vostro navigatore e il server per individuare eventuali colli di bottiglia. E se scrivete in Ajax, potete anche controllare lAPI XMLHttpRequests al volo.

Firebug

Cosa ci riserva il futuro?


Firefox 13 ha comportato alcuni signicativi cambi estetici, in particolare viene mostrata una griglia 3x3 con le anteprime delle ultime nove pagine visitate a mo di menu di scelta rapida allapertura di ogni nuova linguetta. chiaramente una caratteristica ispirata da quello che gi avviene in altri navigatori, come Chrome e Opera. Non siamo realmente conviti che sia un cambiamento cos utile s, leffetto estetico buono, ma le anteprime sono troppo piccole per rendere intelligibili i loro dettagli, e comunque ognuno sa quali sono i suoi siti preferiti. Comunque, lungi da noi criticare un abbellimento che possa attirare qualche utente di altri navigatori e, come abbiamo pi volte detto, se una qualche idea funziona bene per la concorrenza, perch non adottarla? Tutte queste caratteristiche, e altre ancora, hanno reso Firefox pi usabile sui dispositivi touchscreen: anche per le versioni 14 e 15 questa linea di sviluppo sembra essere confermata. Firefox 14, uscito nei giorni scorsi nella versione per Android, ha gi introdotto qualche novit interessante: ad esempio luso del protocollo HTTPS per le ricerche con Google, che rende i risultati disponibili a voi tramite una connessione criptata sicura. Unaltra caratteristica introdotta riguarda le estensioni: potranno essere caricate solo su vostro assenso. Sono poi state aggiunte una manciata di opzioni dedicate agli sviluppatori, ed stato implementato lautocompletamento degli URL della Barra irresistibile (la nota e versatile barra degli indirizzi di Firefox, cos come lhanno battezzata gli sviluppatori), risolvendo un biennale bug (si veda https://bugzilla.mozilla.org/show_bug.cgi?id=566489 per i dettagli). Questultima funzione merita una descrizione un po pi approfondita, perch crediamo che molti di voi la troveranno utile: supponiamo che nella vostra storia di navigazione abbiate visitato lURL seguente http://www.ams.org/publications/journals/journalsframework/ spmj Digitando ams nella Barra irresistibile, la funzione vi proporr lindirizzo completato no al primo frammento di URL, vale a dire ams.org/ offrendovi per anche lindirizzo completo nel pannello a discesa della barra, in modo che voi possiate selezionarlo con il mouse o con la freccia in gi. Se per volete anche il frammento successivo, vi baster iniziare a digitare publications per ottenerlo come mostrato qui di seguito: ams.org/publications/ La pressione del tasto invio aggiunger alla stringa il presso gi presente in memoria (se presente) e vi porter alla pagina desiderata (se accessibile). Firefox 15 non ha caratteristiche denite in maniera cos precisa, ma probabilmente vedr implementato un supporto nativo per i le PDF, gi peraltro disponibile nella forma di lettore di le PDF integrato nella versione 14 Nighty, e vedr supportato il protocollo SPDY, alternativa di Google allHTTP, per la navigazione Internet veloce, gi peraltro annunciato per la versione 13 corrente. Si parla inne anche di un nuovo download manager, molto pi versatile rispetto a quello attuale, che trover la sua collocazione nella nestra principale e non pi in un pannello separato.

LINUX PRO 120

31

Sysadmin

Premiata Amministreria

Dottor Brown
Tecniche esoteriche per i sysadmin direttamente dai recessi pi impenetrabili della sala server
Stavo parlando a mia moglie di un paio di studenti dei miei corsi Linux che si sforzavano di tenere a mente i nomi dei comandi. Lei sosteneva che sarebbe pi facile se fossero tutte parole inglesi che descrivono il comando. Non ha tutti i torti. Dopo tutto un sistema in cui shopt dotglob un comando legale ha qualche spiegazione da dare. Nella versione migliorata di Linux immaginata da mia moglie i comandi classici a due lettere come ls , cp e mv verrebbero espansi in list , copy e move . Francamente penso che sarebbe una cattiva idea. Se convertissimo i nomi dei comandi in parole inglesi, i francesi insisterebbero immediatamente per tradurli. Avremmo cose come dnombrer , copier e dplacer e tutti gli script smetterebbero di funzionare. Ma alcuni dei nomi che incontriamo in Linux sono davvero piuttosto misteriosi. Eccone spiegati alcuni: cat : abbreviazione di catenate , inteso come unire tra di loro (in italiano concatenare ); grep : il nome proviene da un vecchio editor di linea, ed , in cui il comando equivalente era g/re/p , dove re lespressione regolare cercata; crontab : il demone cron (che esegue azioni a orari speci cati) deve il suo nome a Chronos , il dio del tempo dei greci. Crontab semplicemente Cron Table ; bash : sta per Bourne Again Shell , un gioco di parole dal sapore vagamente religioso che si riferisce alla prima shell scritta da Steve Bourne; dd : si dice che questo strano

Dr Chris Brown
Il Dottore si occupa di formazione, scrittura di articoli e consulenze su Linux. Trova che il suo PhD in sica delle particelle non sia di alcun aiuto in questo tipo di lavoro.

Scritte in piccolo
Ci siamo passati tutti. Magari acquistando un biglietto dal servizio online di prenotazione dellazienda ferroviaria. Magari scaricando i driver a sorgente chiuso per la nostra scheda graca, oppure installando il plug-in Flash per il browser. Inevitabilmente siamo arrivati a quella cosa chiamata Accordo di licenza. A volte viene presentato direttamente, cio il testo dellaccordo compare in una serie di schermate che occorre scorrere no alla ne per completare loperazione in corso. Ma, spesso, occorre fare click su di un link ed essere trasportati da qualche altra parte per vederlo.

Nomina sunt consequentia rerum?


Vi siete mai chiesti perch cat si chiami cat? Gettiamo un po di luce su alcuni dei pi oscuri nomi dei comandi
programma debba il suo nome al linguaggio di Job Control di IBM, unarcana notazione usata per inviare suppliche a un mainframe af nch prendesse in considerazione lesecuzione in batch del vostro job. dd sta per data description ; less : un riferimento a un precedente programma chiamato more ( pi in inglese; less invece signi ca meno ) che consentiva di esaminare riga per riga un le di testo. more era in grado di procedere solo in avanti, less invece permette di muoversi in entrambe le direzioni; vi : abbreviazione di visual , in origine era uno dei modi di funzionamento delleditor di riga ex . Viene pronunciato vi-ai , non vi e assolutamente non sei . Pu essere vecchio, ma non si tratta di un numero romano; dig : questo programma serve per eseguire ricerche nel DNS a scopo di test. A volte si dice che il suo nome stia per domain information groper , ma non ne sono convinto (in inglese to dig signi ca scavare ).

Controllate prima di accettare


La mia domanda : avete mai, Mai, MAI letto quello che c scritto in caratteri piccoli in questi cosiddetti accordi? Oppure avete semplicemente cercato di liberarvene il pi in fretta possibile, facendo scorrere senza leggerle pagina dopo pagina di puro legalese per poi spuntare la casella Accetto? Cosa succederebbe se non aveste notato che, a pagina 27, tra il paragrafo riservato al divieto di fare reverse engineering e quello che si occupa del divieto di fare copie, ce ne fosse uno che vi impone di rinunciare al vostro primo glio? Fare click su una casella ha davvero implicazioni legali? Nel Mercante di Venezia Porzia affronta Shylock per difendere Antonio a proposito della ridicola questione della libbra di carne, ma chi verr in mia difesa contro, ad esempio, la potenza dei legali di Microsoft? Concludo con una confessione: ho appena installato Ubuntu 12.04. Dato che installo soltanto long term edition del sistema di Canonical, questo il mio primo incontro con il desktop Unity. E, sapete una cosa? Penso che davvero non sia male. Lo so che ha avuto cattiva stampa, quindi dico addio n da ora a quel 30% dei miei lettori che a questo punto ho senzaltro perso...

Mistero totale
Ci sono alcuni nomi di cui si completamente persa letimologia. Perch laccount del superuser chiamato root (radice in inglese)? Perch lespansione dei caratteri jolly viene detta globbing? Perch la directory che contiene i le di congurazione del sistema chiamata /etc? Perch il gruppo privilegiato era chiamato wheel (ruota)? Se avete la risposta a qualcuna di queste domande mandatemi due righe allindirizzo redazione@linuxpro.it.

34

LINUX PRO 120

Sysadmin

Quattro passi tra le nuvole


Cloudmin consente una gestione centralizzata di sistemi virtuali basati su una vasta gamma di differenti tecnologie. Scopriamo come funziona
Lampia adozione della virtualizzazione e del cloud computing ha creato un enorme aumento del numero di macchine logicamente distinte da amministrare. I fornitori di servizi di hosting e altri grossi utenti si trovano di solito con un portafoglio di sistemi differenti: alcuni sono macchine virtuali ospitate su hardware locale, altri risiedono nelle nuvole EC2 o Rackspace, altri ancora possono addirittura essere dei server sici vecchio stile. Non sarebbe bello essere in grado di gestire tutti questi sistemi in maniera uniforme da una singola interfaccia? Certo che lo sarebbe, ovviamente. Cloudmin una soluzione di questo genere. Per citare il sito Web (www.virtualmin.com/aboutcloudmin), Cloudmin fornisce uninterfaccia Web per la gestione di sistemi diversi, tipicamente sistemi virtuali che utilizzano una tecnologia come Xen o OpenVZ. Un singolo nodo master Cloudmin in grado di gestire numerosi sistemi host, ognuno dei quali pu a sua volta ospitare numerosi sistemi virtuali. Cloudmin disponibile in due versioni. Ce n una gratuita (Cloudmin GPL) che limitata alla gestione di macchine virtuali Xen o KVM su di un singolo sistema. Non comprende la gestione di istanze di macchine EC2 e la gestione di sistemi non virtuali (sici). C poi la versione Pro, in grado di gestire pi di un sistema sico e numerose tecnologie di virtualizzazione, tra cui Xen, OpenVZ (un sistema di virtualizzazione basato su contenitori che ho descritto il mese scorso), KVM, Linux VServer, Solaris Zones e Amazon EC2. Pur non essendo gratuito, Cloudmin Pro non troppo costoso. Attualmente in corso unofferta a met prezzo ed possibile avere una licenza annuale per 50 istanze a 299 dollari, cio 50 centesimi per istanza al mese. Jamie Cameron, uno degli ideatori di Cloudmin, mi ha gentilmente fornito una licenza di prova della versione Pro, quindi sono in grado di fornirvi unesperienza di prima mano del prodotto. e il processo non ha dato il minimo problema. Una volta installato il server, Cloudmin resta in ascolto sulla porta 10000, quindi ho dovuto aprire questa porta sul rewall, dopodich sono stato in grado di visitare con il browser lURL https:// centos62.example. com:10000, eseguire il login come root e vedere la pagina principale di Cloudmin. Se avete a disposizione un supporto sico per linstallazione di CentOS , lintera operazione non richiede pi di 30 o 60 minuti. La curva di apprendimento a questo punto risulta per piuttosto ripida: ci sono davvero un sacco di funzionalit da esplorare e parecchia documentazione da leggere. Mi sono posto come obiettivo, che pensavo realistico, la creazione e la gestione di un paio di macchine virtuali basate su KVM sul sistema master e un paio di istanze EC2 sul mio account Amazon Web Services. Una volta installato e lanciato Cloudmin sono passato alla registrazione sul sistema master dellhost che intendevo amministrare. Si trattato di unoperazione semplicissima, perch stavo usando un singolo server sico, quindi il sistema master (su cui gira il software di gestione Cloudmin) e il sistema ospitante (su cui avrei creato le mie istanze di macchina virtuale) erano la stessa macchina sica. possibile per registrare anche altri sistemi ospitanti no al limite consentito dalla licenza. Esiste addirittura la possibilit di cercare in rete i potenziali candidati. Seguendo il mio piano ho registrato la macchina come sistema ospitante KVM ( possibile registrare sistemi Xen, Citrix, VServer, Solaris Zones, OpenVZ e LXC). Occorre specicare un nome di dominio per le macchine ospitate ed possibile indicare un intervallo di indirizzi IP

Le pagine di Cloudmin non sono belle da vedere, ma funzionali. In questo caso stiamo creando unistanza di una macchina KVM

Installazione
La maniera pi semplice per partire con Cloudmin consiste nelleseguire uno script di installazione automatica che usa i comandi del sistema di gestione dei pacchetti per scaricare il software direttamente dai suoi repository. Ovviamente quello che ho fatto, cercando come al solito la via che richiede il minimo sforzo. Il sito di Cloudmin raccomanda di usare Red Hat o CentOS, quindi ho cominciato installando CentOS 6.2 su di un server di medie dimensioni (4-core, 8 GB). Lho congurato in maniera pi o meno standard, senza desktop, ma ho installato gli strumenti di virtualizzazione, e poi ho lanciato yum update per aggiornare il sistema alle pi recenti versioni dei pacchetti. Il passo successivo consistito nello scaricare e lanciare lo script di installazione di Cloudmin. Lo script legato alla licenza Cloudmin dellutente e il link per il download disponibile solo dopo che stata emessa la licenza stessa (per la versione GPL la pagina www.virtualmin.com/documentation/cloudmin/gpl contiene tutti i dettagli e il link allo script dinstallazione). Lo script installa automaticamente Cloudmin e tutte le sue dipendenze e, se tutto funziona a dovere, non c nullaltro da fare. Ci sono voluti solo cinque minuti per eseguirlo

Tip
Ci sono delle buone guide per Cloudmin, ma non ho trovato nessun link diretto dalla homepage. Per farvi risparmiare tempo in ricerche ecco lURL da usare: www. virtualmin.com/ documentation/ cloudmin.

Il resto della famiglia


Cloudmin parente stretto di due altri strumenti di amministrazione di sistema basati sul Web: Webmin e Virtualmin. Webmin (che ho recensito in LXP 118) consiste di un server Web e di un insieme di plug-in che consentono di eseguire da browser unampia gamma di attivit di congurazione del sistema, senza avere a che fare direttamente con i le in /etc, usare la riga di comando un editor di testo. Virtualmin un pannello di controllo per lhosting Web che permette di gestire domini virtuali, caselle di posta, siti Web, database e applicazioni. Tutti e tre gli strumenti hanno un aspetto molto simile, probabilmente dovuto alla grande quantit di codice Perl a basso livello che hanno in comune.

LINUX PRO 120

35

Sysadmin
che la macchina ospitante pu assegnare alle istanze quando vengono create. Se vengono usati molti sistemi sici occorre un minimo di pianicazione per ripartire tra di essi lo spazio degli indirizzi.

Backup e restore
Cloudmin permette allamministratore master e ai proprietari di creare backup dei sistemi virtuali che girano sotto Xen, OpenVZ, VServer e Solaris Zones (da notare che le due tecnologie che ho scelto per la mia prova, KVM e EC2, non fanno parte della lista). I backup possono essere eseguiti manualmente o pianicati a intervalli regolari, di solito una volta al giorno. Un backup comprende il contenuto del lesystem del sistema virtuale o delle sue immagini di disco e viene salvato sotto forma di copia compressa dei dischi virtuali (per i sistemi Xen) oppure semplicemente come archivio tar compresso per le altre tecnologie. Cloudmin in grado di scrivere i le di backup in varie locazioni, per mezzo di scp, ftp o di qualsiasi altro sistema che Cloudmin gestisce.

Immagini di sistema
A questo punto era tutto pronto per scaricare unimmagine di sistema. Si tratta di un le contenente tutti i dati necessari per creare un nuovo sistema virtuale. Di solito si tratta di un archivio tar o un dump del lesystem dellintero sistema operativo virtuale. Quando viene creato un sistema virtuale, limmagine viene utilizzata per popolare il lesystem iniziale del sistema operativo virtuale. Ho scaricato un paio di istanze per KVM: una per CentOS 5.4 e una per Ubuntu 10.10. Le dimensioni delle immagini sono variabili, da circa 200 MB no a 1 GB. Sul sito di Cloudmin ne sono elencate 68, anche se questo numero va diviso per tre perch la maggior parte delle immagini disponibile in tre varianti: una con il solo sistema operativo di base, una con installato Virtualmin GPL e una terza con Virtualmin Pro. Ogni immagine specica per un sistema di virtualizzazione. Ho contato circa 36 immagini per Xen (o Citrix/Xen), sei per OpenVZ, 11 per KVM e sei per Solaris Zones. Se non c unimmagine adatta alle vostre esigenze possibile crearsene una con gli strumenti forniti da Cloudmin, a partire dal dump di un disco (o di una partizione primaria) di un sistema esistente. Inne ho dovuto creare unistanza di macchina. Come potete vedere dalla schermata di creazione di un nuovo sistema nella pagina precedente, occorre fornire parecchie informazioni di congurazione, tra cui il nome dellhost, un gruppo (ne parler in seguito), il percorso del le con limmagine di sistema, la password per il login SSH (o una coppia di chiavi), la quantit di memoria e di spazio su disco da allocare allistanza, lindirizzo IP e cos via. Una volta riempito il modulo ci sono voluti circa 70 secondi per creare listanza e installare su di essa limmagine di sistema. A quanto mi dato di sapere non possibile dire creami dieci istanza come questa come, per esempio, si pu fare con linterfaccia utente di Amazon Web Services. per possibile clonare unistanza

esistente con solo un paio di click del mouse. Al clone viene assegnato un nuovo nome e un nuovo indirizzo IP, ma per il resto una copia delloriginale, con lo stesso lesystem, la stessa password, gli stessi limiti sulle risorse e lo stesso proprietario. Quindi, tanto per provare, ho creato un clone. La mia prima macchina virtuale usava un semplice login basato su password, ma per la seconda ho deciso di fare le cose per bene e ho creato una coppia di chiavi da usare con SSH. Dal prompt di comandi sul sistema master ho lanciato il comando ssh-keygen per generare la coppia di chiavi che poi ho importato in Cloudmin. Copiando la chiave pubblica allinterno dellistanza sono poi stato in grado di collegarmi senza usare nessuna password dalla macchina su cui avevo copiato la chiave privata.

Sistema vuoto

anche possibile creare unistanza che solo un sistema vuoto, cio che non ha nessun sistema operativo installato sul suo disco virtuale. Quando si sceglie questa opzione occorre specicare unimmagine di CD o un lettore sico di CD-ROM collegato al sistema che verr usato per installare il sistema operativo. Una volta completata linstallazione il sistema pu essere trattato come qualsiasi altra macchina virtuale di Cloudmin. In linea di principio possibile installare Istanze gestite nella nuvola sistemi operativi diversi da Linux, ma Cloudmin ha una limitata capacita di gestire sistemi del Istanza EC2 genere. Diamo unocchiata ad alcune delle funzionalit disponibili per la gestione dei sistemi appena creati. possibile cambiare la password di login; possibile Server clonarli oppure creare unimmagine Cloudmin di sistema che pu in seguito essere usata per creare nuove istanze; possibile installarci sopra Virtualmin o Webmin; possibile spostarli su un diverso sistema Istanza Il browser EC2 gira qui ospitante (o almeno possibile se Istanza avete pi di un sistema ospitante!); di VM possibile riportarli al loro stato iniziale; possibile aprire un terminale di root (con il browser); Master Cloudmin Altri sistemi ospitanti gestiti possibile lanciare comandi arbitrari e trasferire le in entrambe le direzioni, anche se linterfaccia Il server Cloudmin, in esecuzione sul nodo master, presenta uninterfaccia basata sul Web per gestire istanze virtuali locali e remote per queste operazioni piuttosto

36

LINUX PRO 120

Sysadmin
elementare. Inne ovviamente possibile metterli in pausa, arrestarli, riavviarli o cancellarli completamente. Finora ho portato a termine met della mia missione: ho creato tre istanze KVM (una CentOS, una Ubuntu e un clone) e posso eseguire il login su di esse come root. Per completare il resto della missione, cio creare e gestire istanze di macchine EC2, ci vuole un po di copia e incolla per importare le credenziali del mio account AWS in Cloudmin, in modo che sia in grado di accedere allAPI di AWS a mio nome. Devo ammetterlo, non me la cavo bene con le chiavi. Sono famoso per essermene andato via per una settimana con le chiavi dellauto di mia moglie in tasca. Per ho diligentemente importato lID del mio account AWS, lID della chiave di accesso, la chiave segreta di accesso, il certicato X509 e la chiave privata X509. Non complicato come potrebbe sembrare, dato che la maggior parte delle informazioni riportata nel menu Security Credentials della console AWS. Come probabilmente saprete se avete gi creato unistanza di macchina Linux su EC2, lunica forma di autenticazione SSH disponibile per mezzo di una coppia di chiavi: lautenticazione con password non supportata. Occorre quindi creare una coppia di chiavi in EC2, scaricarle sul nodo master di Cloudmin e poi da qui importarle in Cloudmin. Ho avuto qualche difcolt con il modulo Create EC2 Instance di Cloudmin. Come per molte cose nella vita, ci sono pi maniere per sbagliare che per fare giusto. Quello che ha reso loperazione particolarmente difcoltosa il fatto che, ogni volta che tornavo al modulo per riprovare, dovevo ricominciare da zero a riempire i campi. Questo sembra essere vero in generale per Cloudmin: se la cava bene a vericare la correttezza dei dati inseriti, ma assolutamente male quando si tratta di ripopolare un modulo per consentire allutente un secondo tentativo. In un modo o nellaltro alla ne ce lho fatta. La creazione dellistanza EC2 e la verica del suo stato via SSH hanno richiesto circa due minuti. Ovviamente creare la seconda stato molto pi facile. anche possibile importare in Cloudmin istanze EC2 esistenti, ma non ci ho provato. Cosi alla ne mi sono ritrovato con sei macchine sotto il controllo di Cloudmin: il nodo master, due istanza ospitate in locale e un clone di una di esse e un paio di istanze EC2. Le potete vedere nella schermata Cloudmin Managed Systems. Missione compiuta!

Riassumendo
Cloudmin un sistema notevole. Riesaminando quanto fatto mi sono reso conto di non aver toccato quasi per niente la riga di comando: solo una volta per modicare le impostazioni del rewall e una volta per generare una coppia di chiavi SSH. Linterfaccia utente ha un aspetto un po tetro: basterebbero un po di graca e qualche icona in pi per ravvivarla. In un mondo ideale mi piacerebbe che ci fossero

Dalla riga di comando


Se volete accedere alla potenza di Cloudmin dalla riga di comando (ad esempio per automatizzare qualche attivit per mezzo di script) potete usare il comando cloudmin, che vi d accesso a quasi tutte le funzionalit accessibili attraverso il browser. Ci sono pi di 100 sottocomandi, con nomi come clone-system, create-system e delete-system. Se avete installato Cloudmin, il comando cloudmin --help mostra una lista completa sul terminale.

anche uno o due percorsi guidati per aiutare lutente nelle operazioni pi frequenti. Le capacit di gestire operazioni di massa piuttosto limitata: possibile dare comandi da eseguire su pi sistemi, ed tutto. Data la potenziale eterogeneit dei sistemi sotto il controllo di Cloudmin forse ci si pu aspettare solo questo. Ci sono parecchie funzionalit di Cloudmin che non ho esplorato. Tra queste: Location group: quando viene creata una nuova istanza probabilmente allutente interessa conoscere la sua collocazione sica, anche se magari non gli interessa sapere su quale sistema ospitante sta girando. Un location group un insieme di sistemi ospitanti che di solito si trovano nella stessa locazione sica. Al momento della creazione di un sistema virtuale possibile sceglierne tra i location group disponibili quello su cui farlo girare. Il nodo che ospiter il sistema virtuale viene scelto tra i membri del gruppo in base alla disponibilit di memoria libera, di spazio su disco oppure a caso. Host failover group: un failover group una collezione di sistemi ospitanti che condividono la memoria di massa usata per i sistemi virtuali e quindi possono agire come backup uno dellaltro se uno di essi smette di funzionare. Questo permette di riavviare automaticamente un sistema virtuale su un altro sistema ospitante con lo stesso disco virtuale o lesystem nel caso di guasto hardware a uno dei nodi sici che compongono il gruppo. System alert: Cloudmin in grado di monitorare i sistemi gestiti e di inviare allarmi se lutilizzo delle risorse va al di sopra o al di sotto di soglie specicate. possibile impostare allarmi per singoli sistemi, per tutti i sistemi oppure per sistemi di un dato tipo, come OpenVZ o KVM. Le risorse monitorate comprendono lutilizzo della CPU, della memoria e lo spazio su disco. Quando si verica un allarme Cloudmin pu spedire un messaggio di posta elettronica allamministratore del nodo master, ai proprietari dei sistemi che hanno causato lallarme oppure a un qualsiasi altro indirizzo specicato. System owner: un system owner (proprietario del sistema) un account limitato di Cloudmin. Quando viene creata unistanza possibile assegnarle un system owner: si tratta di un utente che pu eseguire il login su Cloudmin, ma che vedr solo le macchine che gli sono state assegnate. Un system owner ha accesso root a tutte le sue istanze e pu riavviarle e persino cancellarle, ma non pu eseguire operazioni sui sistemi ospitanti o cambiare le impostazioni globali di congurazione. anche possibile denire degli account plan che limitano lutilizzo di spazio su disco, CPU, memoria e banda. Si pu tenere traccia dellutilizzo delle risorse per periodi di tempo predeniti e calcolare quanto addebitare al cliente nale. Queste funzionalit sono di grande utilit per i fornitori di servizi di hosting che addebitano lutilizzo dei loro sistemi ai clienti e hanno bisogno di tenere sotto controllo i loro sistemi. LXP

Ho raggiunto il mio obiettivo: sei sistemi gestiti! Un forma limitata di gestione di massa possibile da questa pagina

LINUX PRO 120

37

Langolo di

Android

News, recensioni e guide sul sistema operativo libero per smartphone

Il trionfo degli androidi


Nei primi tre mesi dellanno in Europa i download di app Android sono aumentati del 50%, quelli di iPhone sono scesi del 20%
App downloads Italia

La top 10 Android
Fruit Ninja Free Angry Birds Space Facebook Messenger Facebook for Android Viber: Free Calls Tv lm all in one UNO FREE Temple Run FPlayer Tiki Kart 3D

econdo una ricerca appena presentata da Madvertise, societ di marketing specializzata nella pubblicit sui dispositivi mobili, il 2012 verr ricordato come lanno in cui i terminali Android hanno raggiunto e nettamente superato i dispositivi iOS per i download dagli store online, almeno in Europa. Da gennaio a marzo, infatti, le app Android scaricate

dal Play Store sono salite da 262 a 381 milioni, mentre quelle iOS sono scese da 290 a 222 milioni. Naturalmente molto dipende dal fatto che le app Android sono pi spesso gratuite rispetto a quelle dellApp Store, ma rimane il fatto che la piattaforma principe in questo momento di gran lunga quella del Play Store di Google. Il titolo pi scaricato in assoluto per Android Fruit Ninja Free con 807.000 download, seguito

da Angry Birds Space con 672.000 e Facebook Messenger con 508.000, tutti gratuiti. Interessante notare che lapp pi scaricata in campo iOS Air Wings con 544.000 download ed anchessa gratuita. Insomma il merito va in gran parte ad Android, ma anche la crisi economica che spinge a risparmiare il pi possibile ci sta mettendo del suo.

Meglio gratis
Si compra lhardware, ma non il software

Il pi sottile di tutti
Arriva finalmente il nuovo smartphone Android targato Huawei

ome risulta chiaramente dai dati pubblicati dalla ricerca Madvertise, che abbiamo riportato qui sopra, chi ha uno smartphone Android meno propenso a spendere per comprare app e quando vuole a tutti i costi unapp a pagamento, si rivolge sempre pi spesso alla pirateria, con tutti i rischi di beccarsi i malware che ne derivano. Questo talmente vero che Madnger Games, una delle pi importanti aziende di sviluppo software per dispositivi mobili, la stessa per intenderci che ha realizzato Shadowgun, ha deciso di rendere gratuito uno dei suoi ultimi titoli, Dead Trigger. Il motivo proprio la pirateria, gli stessi sviluppatori, infatti, hanno dichiarato che la

percentuale di copie contraffatte in circolazione era imbarazzante, pur senza fare cifre percentuali. Tutto questo nonostante il gioco costasse solo 0,99 dollari e fosse perci alla portata di chiunque abbia i soldi per acquistare uno smartphone. Per recuperare almeno in parte i soldi spesi per lo sviluppo, Madnger Games ha aumentato gli acquisti in-app, cio quelli di armi e accessori allinterno della stessa app. Si tratta di una tendenza ormai comune a molte software house che sviluppano per Android, non per niente gli acquisti in-app stanno diventando la loro fonte di guadagno pi importante. Interessante notare invece come la versione iOS di Dead Trigger continui a costare 0,99 dollari.

distanza di sette mesi dalla sua presentazione al CES di Las Vegas, finalmente disponibile Ascend P1 di Huawei. Il principale produttore di impianti di telecomunicazione in Cina ha realizzato un terminale veramente interessante, con display Super Amoled HD da 4,3, spessore di soli 0,76 centimetri e processore dual Core TI OMAP 4460 Cortex-A9 da 1,5 GHz con 1 GB di RAM. Il sistema operativo Android 4.0 Ice Cream Sandwich ed entro qualche mese dovrebbe essere disponibile anche il nuovo aggiornamento al sistema operativo Jelly Bean. La fotocamera da 8 megapixel super accessoriata dal punto di vista software, con vere chicche come lottimizzazione HDR e la risoluzione video a 1080p. Lunico vero punto debole del terminale la memoria Flash disponibile, che di soli 4 GB. Questo significa che dovrete acquistare subito una scheda microSD se non vorrete restare senza spazio dopo poco tempo. Il prezzo al pubblico di 449,00 euro leggermente superiore alla tradizione Huawei di prezzi stracciati, ma in questo caso almeno parzialmente giustificato dalla dotazione del terminale. LXP

38

LINUX PRO 120

Galaxy S3 Langolo di Android

Samsung Galaxy S3
Lo smartphone pi atteso dellanno finalmente arrivato in redazione, sar allaltezza delle attese?

amsung ha avuto oltre 10 milioni di pre-ordini per Samsung Galaxy S3 e solo questo numero sufciente per capire quanta attesa ci fosse per il successore del Galaxy S2, che a sua volta stato il pi grande successo del 2011 in campo Android. Naturalmente anche noi lo aspettavamo con curiosit per capire se c veramente un salto tecnologico rispetto al predecessore e al Galaxy Nexus.

Poco pi grande dellS2


Il modello arrivato in redazione quello color Pebble Blue con 16 GB di memoria Flash ampliabile a 80 GB via scheda microSD, ma disponibile anche in bianco e dallautunno dovrebbe arrivare anche in colore rosso. Per contenere il peso sotto i 130 grammi, Samsung ha utilizzato uno speciale policarbonato che dovrebbe essere tanto leggero quanto resistente, anche se i primi video apparsi sul Web mostrano che cadute da un metro di altezza possono risultare fatali. La struttura, pi che al Galaxy S2, assomiglia al pi recente Galaxy Nexus, soprattutto per le forme arrotondate della scocca e per la lunghezza di quasi 14 centimetri che impedisce di sistemarlo nel taschino della camicia e richiede tasche di pantalone piuttosto ampie. Questa lunghezza si spiega con il display Super Amoled HD da ben 4,8 che, pur essendo leggermente pi grande, utilizza la stessa tecnologia e ha la stessa risoluzione di 1.280x800 pixel del Galaxy Nexus. Le differenze rispetto a questultimo arrivano dal processore che in questo caso il primo quad core Exynos da 1,4 GHz realizzato dalla stessa Samsung e che surclassa nettamente come prestazioni il precedente modello dual core. Fortunatamente la struttura non a monoblocco, come vorrebbe la moda del momento, ma con

la classica cover posteriore che una volta tolta permette di sostituire la pur capiente batteria da 2.100 mAH (sul Web si trova gi il modello da 3.000 mAH) e inserire una scheda di memoria microSD. Ma pi che sullhardware, che senza essere rivoluzionario rappresenta comunque lo stato dellarte per gli smartphone, Samsung per il suo Galaxy S3 ha scommesso sul software. Il sistema operativo con cui viene distribuito Galaxy S3 Android 4.0 Ice Cream Sandwich, ma nel frattempo Google ha gi reso disponibile per i suoi modelli Nexus la versione successiva 4.1 JellyBean, sulla quale i tecnici Samsung stanno gi lavorando e che dovrebbe essere pronta entro lautunno. Il problema con Galaxy S3, e con tutti gli smartphone customizzati dai produttori, infatti la presenza di uninterfaccia personalizzata pesantemente, che in molti casi diventa una specie di secondo sistema operativo che deve essere modicato completamente ogni volta che Google presenta un aggiornamento ad Android.

Il sistema di riconoscimento vocale S-Voice funziona bene anche in ambienti rumorosi, pur se non evoluto come Siri

Il software
Ci premesso, la nuova interfaccia TouchWiz di Samsung veramente ben realizzata, a partire dalla lockscreen iniziale completamente congurabile e che permette di inserire le scorciatoie per le vostre applicazioni preferite. Ma le vere novit sono le funzioni Smart Stay e Smart Alert. La prima una volta attivata in grado di capire quando state guardando lo schermo, evitando cos di spegnerlo automaticamente e permettendovi per esempio di leggere un e-book senza

interruzioni. La seconda invece, nel caso di eventuali chiamate o SMS persi, vi avverte con una vibrazione quando prendete in mano lo smartphone. E poi naturalmente c il sistema di riconoscimento vocale S-Voice, la risposta di Samsung al maggiordomo digitale Siri di iPhone. Lo abbiamo provato a fondo e, anche se non siamo ancora ai livelli di comprensione semantica del sistema di Apple, ci sembra sulla buona strada. Il sistema usa la tecnologia sviluppata da Vlingo e funziona molto bene per muoversi allinterno delle tante applicazioni dello smartphone, meno se volete fare delle ricerche mirate sul Web. E soprattutto non ha il proverbiale umorismo di Siri. Il resto della personalizzazione Samsung di ottimo livello, a partire dai Contatti che possono conuire con quelli di Facebook e Google+, ma non con quelli di Twitter. Anche la sezione telefonica di ottima qualit e abbiamo notato un netto miglioramento per quanto riguarda la ricezione del segnale rispetto

al Galaxy S2. da notare che per lS3 richiesto luso della microSIM, quindi le SIM tradizionali non vanno bene. La fotocamera stata poi una gradita sorpresa, visto che permette di realizzare foto di qualit decisamente buona pur conservando lo stesso sensore da 8 megapixel del modello precedente. Abbiamo apprezzato soprattutto la funzione HDR e la velocit di scatto con la possibilit di catturare no a 10 foto al secondo in modalit rafca. Anche la fotocamera anteriore da 1,9 megapixel funziona molto bene e soprattutto permette di realizzare video in formato 720p e di effettuare videochat in alta denizione. Lautonomia ci ha sorpreso piacevolmente, anche se occorre considerare che la batteria da 2.100 mAH la pi capiente mai vista no ad oggi su uno smartphone. Anche con un utilizzo intensivo del telefono che comprende Wi-Fi e 3G sempre attivi, la sincronizzazione con i social, unora di navigazione Web, GPS e un paio di telefonate, alla ne della giornata avevamo ancora il 25% di autonomia. Questo signica che con un utilizzo pi accorto a un paio di giorni ci potete tranquillamente arrivare. Inne un commento sul prezzo, 699,00 euro ci sembrano tantissime, ma su Internet gi possibile trovarlo a poco pi di 500 euro, una cifra tutto sommato ragionevole per quello che offre. LXP

Giudizio
Galaxy S3
Produttore: Samsung Web: www.samsung.it Prezzo: 699,00

Caratteristiche Prestazioni Autonomia Qualit/prezzo

8.5 9 9 7.5

Un concentrato di tecnologia dalle ottime prestazioni e con unautonomia davvero buona. Costa un po troppo.

Il voto di

Linux Pro

8.5
39

LINUX PRO 120

Langolo di Android Philips/Mediacom

Philips Fidelio AS351


Una pratica docking station per ascoltare le radio online o i file musicali

Giudizio
Philips Fidelio AS351
Produttore: Philips Web: www.philips.com Prezzo: 129,99

A
7 7.5 8 7

Caratteristiche Audio Facilit duso Qualit/prezzo

Un buon sistema di casse per il vostro smartphone, versatile e di buona qualit audio. Il costo forse un pelo alto.

Il voto di

Linux Pro

7.5

vete acquistato un prezioso smartphone Android e amate usarlo per ascoltare la musica non solo quando siete in giro ma anche in casa? Allora vi serve una dock di qualit che dia potenza alle note e, al contempo, sia magari in grado di ricarica il dispositivo. Un esempio di tale soluzione il Philips Fidelio AS351 che abbiamo provato per questo numero. Guardando loggetto si nota subito sul davanti laggancio microUSB a cui collegare lo smartphone: possibile spostarlo per la lunghezza e modicarne linclinazione o ruotarlo (anche se le rotelline per questa operazione sono piccoline).

Questo collegamento serve per solo per ricaricare il telefono, perch la connessione su cui passa la musica quella Bluetooth. Una volta fatto laccoppiamento, e dopo aver scaricato lapp Fidelio, gratuita e compatibile con Android 2.1+, si gestisce tutto dal touchscreen del telefono: riproduzione musicale da le o dalle radio online e sincronizzazione con il PC si fanno facilmente

con TuneIn e Songbird che offrono tutto ci di cui si pu aver bisogno. La potenza in uscita totale RMS delle casse di 10 W e la dock provvista di Dynamic Bass Boost per preservare i toni bassi a qualsiasi livello di volume: il volume non raggiunge livelli tali da rompere i timpani, ma a qualunque volume risulta di buona qualit. La doppia alimentazione da rete e a batterie ne aumenta la versatilit.

Mediacom SmartPad 820C 3G


Un tablet economico con Gingerbread, ma ne vale la pena? a?

l mercato dei tablet letteralmente esploso e basta fare un giro in un negozio di informatica per trovare modelli di tutte le fogge e di tutti i prezzi. Certo, i dispositivi pi costosi sono anche quelli pi attraenti, ma se ci si accontenta ci sono soluzioni economiche comunque utilizzabili per far di tutto o quasi. Un esempio lo SmartPad 820C 3G di Mediacom. Osservandone le caratteristiche tecniche se ne intuiscono subito le potenzialit: lo schermo da 8 a 800x600 pixel consente un utilizzo del tablet come strumento di lettura e di navigazione Web (anche se il browser ogni tanto ha qualche intoppo). Il processore Cortex A8 1 GHz con 512 MB di memoria riesce a mostrarci anche video in HD (1080p) ma con i giochi pi moderni pu avere qualche difcolt. Lo spazio darchiviazione di soli 4 GB, si rende quindi quasi indispensabile

lacquisto di una microSD da almeno 4 GB (max 32 GB), altrimenti si rischia di esaurire in fretta lo spazio a disposizione. C solo una webcam frontale da 2 Megapixel, che va bene per le videochiamate, e lassenza di una fotocamera pi potente sul posteriore non grave. Anche la presenza di Android 2.3 (con interfaccia che richiama Android 3.2) non un problema, per fastidiosa lassenza dellapp del market ufciale (installabile facendo un po di giri) sostituita da quella del market alternativo SlideMe, buono ma non offre la stessa scelta di software di quello ufciale. Apprezzabile la possibilit di sfruttare un collegamento 3G, oltre al Wi-Fi, ovviamente: in questo modo si pu accedere a posta e news, per esempio, da ovunque. La batteria da 4.000 mAh, se non si esagera con video, giochi e 3G, vi fa arrivare quasi a ne giornata. Usando la porta Mini HDMI

(acquistando un cavo vo compatibile, non presente nella confezione) si pu usare il tablet come media ia center e sparare i lmati sul televisore; anche e questo un aspetto positivo, visto sto che il tablet, come gi detto, riproduce roduce anche i lmati in alta risoluzione. Insomma, apparentemente, con qualche limite, c tutto. Ma le nostre perplessit nascono dalla qualit costruttiva: prendendo in mano il tablet si sentono degli scricchiolii che ci fanno dubitare della durata nel tempo del dispositivo (considerando che pensato per essere portato spesso in giro); non siamo sicuri che il solo acquisto di una custodia risolva il problema. Se poi si pensa che il suo prezzo di 209,99 euro e che a breve dovrebbe arrivare il Nexus 7 di Google a 40 euro in pi, non sappiamo quanto convenga prendere ora l820C. LXP

Giudizio
SmartPad 820C 3G
Produttore: Mediacom Web: www.mediacomeurope.it Prezzo: 209,99

Caratteristiche Prestazioni Facilit duso Qualit/prezzo Ha tutte le cose di base, ma la qualit costruttiva ci lascia perplessi. Manca il cavo Mini HDMI.

6.5 6 7.5 4

Il voto di

Linux Pro

40

LINUX PRO 120

Recensioni
Una breve legenda
Ogni test di questa sezione accompagnato da un giudizio che riassume con quattro indici numerici le principali qualit dellapplicazione o del prodotto hardware messo alla prova. I laboratori di Linux Pro assegnano un voto da 1 a 10 alle seguenti categorie: Caratteristiche: fornisce tutte le funzioni di cui abbiamo bisogno? innovativo? Prestazioni: esegue in maniera efficiente le sue funzioni? veloce e affidabile? Facilit duso: dispone di uninterfaccia grafica chiara e facilmente fruibile? La documentazione che lo accompagna sufficientemente completa ed esaustiva? Qualit/prezzo: ha un prezzo competitivo? Vale i soldi richiesti per il suo acquisto? Il nostro giudizio viene poi riassunto da un voto finale, espresso anche graficamente. Ecco la legenda dei voti: Nulla da eccepire. Un prodotto praticamente perfetto. Un buon prodotto. I pochi difetti presenti non sono gravi. Compie il suo lavoro ma necessita di ulteriori sviluppi. Deve migliorare prima di raggiungere un voto sufficiente. Un completo disastro. Gli sviluppatori devono tornare alla fase di progettazione. Ricordiamo infine che i software citati nelle sezioni Confronto e Da non perdere sono spesso presenti nel DVD sotto la voce Rivista sotto forma di codice sorgente o binario.

Tutte le novit in campo software e hardware testate e valutate ogni mese dai nostri laboratori

QUESTO MESE...
Test >> Oil Rush
Cosa fareste ritrovandovi in un mondo totalmente allagato, al comando di una flotta navale e alla costante ricerca di nuove piattaforme petrolifere da sfruttare? Lo potete scoprire acquistando questo bel gioco pag. 42

Zorin OS
Un sistema operativo commerciale pensato per avvicinare gli utenti Windows al mondo Linux pag. 44

Oil Rush

In libreria
Amministrare GNU/Linux Metasploit Pen Testing Cookbook pag. 46

Confronto >>
Nellarena di Linux Pro si sono affrontati i migliori servizi di project hosting per progetti Open Source. Dove aprirete il vostro prossimo progetto? pag. 48 BerliOS GitHub Google Code Savannah SourceForge

10 8-9 6-7 5-4 1-3

BerliOS

Da non perdere >>


Cinque programmi liberi da provare subito! MyJgui pag. Urban Lightscape pag. din pag. Mundus pag. Avoision pag.

54 55 55 56 56

Avoision
LINUX PRO 120

41

Test Oil Rush

Oil Rush
Linux Pro pondera sul futuro del nostro pianeta sprecando elettricit mentre gioca a questo titolo di strategia che fa pensare allambiente

l mondo ha preso la strada sbagliata. I mari si sono alzati, inondando le terre. La lotta per accaparrarsi le risorse iniziata. Fortunatamente qualcuno a costruito delle piattaforme petrolifere lasciandole in giro per i mari pronte a essere rivendicate dalla potenza navale pi grande. Questo il mondo acquatico di Oil Rush. Vi ritrovate nei panni di Kevin, un marine australiano, il cui nome un riferimento al Waterworld di Kevin Costner oppure il meno intimidatorio dei nomi per un eroe, a voi la scelta. Un tizio sinistro dal nome di Commander vi ordina di disperdere varie fazioni nemiche e di assicurarvi la fornitura di petrolio usando qualunque mezzo abbiate a disposizione. Voi forse non vorreste farlo. Il comandante non un uomo carino e la sua voce, come altre voci del gioco, abbastanza atroce. Ma la campagna di Oil Rush, il cui andazzo appare ovvio n dal primo incarico, non vi lascia il tempo di pensare. Ci sono delle cose da far esplodere.

Salti di genere
Lo stile di gioco di base di Oil Rush un misto tra strategia in tempo reale

e difesa delle torri. Siete a caccia di risorse. Ottenere il controllo delle varie stazioni vi consente di produrre unit no a un limite pressato, e potete spedire queste unit a distruggere i mezzi nemici. Fin qui siamo in ambito RTS. Le basi militari vi consentono anche di costruire delle torrette difensive di vario Le battaglie campali sono piuttosto complicate da seguire, quindi meglio tipo, a patto essere consci della forza della propria armata prima di andare allo sbaraglio di avere abbastanza risorse. niente scelta del percorso. effetto sulla loro efcacia. Ogni torretta specializzata In apparenza, i piloti dei La libert dimprovvisazione nellattacco di un particolare motosca sono cos concentrati piuttosto ristretta: se il posto tipo di nemico. Qui siete in sullo spingere sullacceleratore libero e avete abbastanza ambito difendi la torre. In che si dimenticano di girare il risorse, perch non tirar entrambi i casi Oil Rush non volante. Voi potete, ovviamente, su una torre? Le unit mobili offre soluzioni particolarmente dividere le vostre truppe in sono ancor pi limitate: innovative, piuttosto classico. gruppi diversi, sia per tipologia il massimo controllo che avete Avete dei posti pressati in cui sia per percentuale. Potreste, su di loro quello di dirgli costruire le torrette, ma la per esempio, selezionare da qui va li e torna indietro. direzione sembra aver poco le vostre unit aeree se a terra Niente manovre complicate,

Passo passo Le chiavi del successo P

Guardare la mappa

Difendetevi

Il numero fa la forza

I punti rossi sono le vostre unit. Se i punti avversari si avvicinano ai vostri spazi, respingeteli.

Non dimenticate di circondare le vostre basi con tutte le torrette che potete, costose ma efcaci.

Assaltate le postazioni nemiche con quante pi unit possibili muovendole tutte in una volta sola.

42

LINUX PRO 120

Oil Rush Test


i livelli seguono lo stesso percorso. A volte vi ritrovare a correre contro il tempo sviluppando torri difensive per respingere un attacco incombente. Altre volte vi ritrovate a controllare un grande esercito e a dover prendere al volo decisioni tattiche, oppure a cercare il percorso migliore tra le torrette nemiche. Oil Rush la progenie Unigine ama veramente le grandi esplosioni e le enormi nubi di fumo nero. del gruppo Non sappiamo come lo abbiamo capito, chiamatelo un presentimento di sviluppatori dellEuropa dellest Unigine ai principianti del genere, Mini meraviglia Corp, i creatori dellengine e a meno che non vi piacciano Eppure la parte graca graco che sta dietro solo gli sparatutto iperfrenetici, potrebbe non essere laspetto al benchmark Heaven lattesa della prossima ondata migliore del gioco. Sapete cosa per Windows, quindi non ci nemica non vi dar fastidio. amiamo? Guardare alla mini sorprende il fatto che uno degli anche vero che ben presto mappa posta nellangolo in aspetti migliori del gioco sia vi verr voglia di fare una partita basso a destra dello schermo. limpatto visivo. La trasparenza in multiplayer, via LAN o via Anche se lo schermo grande, del mare resa splendidamente, Internet. Il gioco interamente il componente pi importate gli oggetti deniti n nei minimi in inglese (testo e parlato), occupa uno spazio limitato dettagli anche quando la loro multipiattaforma e per mentre si gioca, rendendoci vita breve, sono davvero belli pi sicuri e senza farci impazzire giocarci con Linux dovete avere da vedere, anche se forse manca una scheda video 3D con alla ricerca dei comandi. un po di variet. Nei vari livelli i corretti driver proprietari attivi, Non unesagerazione dire vi ritrovate spesso con le stesse una CPU da almeno 2 GHz che potreste giocare quasi ogni unit e le stesse piattaforme, e almeno 1 GB di RAM. livello guardando, quasi, solo e i dintorni appaiono sempre Il prezzo di Oil Rush di 19,95 la mini mappa e usando un po gli stessi. dollari ed possibile acquistare il mouse. Dovete osservare anche delle espansioni (che il resto dello schermo giusto per non abbiamo provato). LXP per fare qualche upgrade o per costruire le torri, ma nisce qui. Nel tutorial, da seguire con attenzione, si pone molta enfasi sulle telecamere che seguono Oil Rush lazione delle truppe e cose simili (per ogni cosa il tutorial vi Sviluppatore: Unigine Corp Web: www.oilrush-game.com illustra le scorciatoie da tastiera, Prezzo: $ 19,95 molto pratiche durante i momenti di gioco pi frenetici), Gameplay 8 Grafica 8 ma giocando ci siamo ritrovati Facilit duso 7.5 a usarle molto di rado. QUalit/prezzo 7.5 In denitiva Oil Rush un gioco davvero piacevole, certamente Ingannevolmente profondo uno dei migliori RTS e giochi e un po eccentrico, Oil Rush di difesa della torre in vi offre alcune ore di buon divertimento. circolazione per GNU/Linux. Non richiedere di essere Il gioco pone molta enfasi sulluso delle telecamere, in grado dei super esperti di tattica di farvi seguire da vicino lazione delle vostre unit, Linux Pro per vincere, quindi piacer ma noi non le abbiamo trovate poi cos tanto utili la situazione difcile, oppure inviare le vostre unit pi veloci quando quelle con la maggior potenza di fuoco risultato troppo lente. Qualche volta una buona idea lasciare indietro alcune unit: vero che la forza sta nel numero, ma le piattaforme petrolifere non possono essere difese con le torrette, quindi anche poche unit possono far la differenza tra lavere un buon rifornimento di risorse e il perdere la guerra. Potete solo scegliere se mandare il 25% o il 50% delle truppe a difendere le piattaforme, ma in questo caso la semplicit un pregio. Dopo avervi fatto ambientare attraversando alcune missioni ed esplorando i vari tipi di unit a vostra disposizione, il gioco tira una palla curva: Oil Rush a un certo punto inizia a diventare pi un gioco di gestione delle risorse che altro. Ci sono sde assolutamente insormontabili senza un arsenale al completo. Ci sono dei vantaggi strategici nel permettere alle vostre risorse di petrolio di riempirsi: unit extra, torri pi potenti o powerup sviluppati dallalbero delle tecnologie. Tutte cose che vi possono far catturare una piattaforma nemica se ci sono, o far perdere un battaglione se mancano. Nei livelli standard si tratta pi di un gioco dattesa che di una corsa, quindi il tempo a volte appare allungato articialmente. Per non tutti

Giudizio

Il voto di

7.5

LINUX PRO 120

43

Test Zorin OS

Zorin OS
Sar questo il sistema in grado di gettare un ponte stabile tra gli utenti Windows pi intrepidi e il mondo di Linux? Linux Pro ha provato a scoprirlo...

inux per utenti Windows: un modello di business che gi stato provato in passato, giusto per fare qualche nome vi ricordiamo Lindows/Linspire, ma tutti questi tentativi sono niti nel dimenticatoio. Per lidea non scomparsa. Zorin OS e i suoi sviluppatori da qualche tempo ci stanno riprovando. Il sistema si appoggia sulla modalit fallback di GNOME 3 personalizzata con un particolare dock, AWN (http://wiki.awn-project.org/). Questo dock molto pi essibile di quello di GNOME e gli sviluppatori lo hanno usato per far sentire gli utenti Windows a casa propria. Di default il desktop ha un aspetto simile a quello di Windows 7, ma pu mimare anche Windows XP o GNOME 2 usando il tool Zorin Look Changer. Questo strumento dovrebbe consentire allutente il passaggio tra stili differenti senza chiudere le nestre aperte. Eppure nelle nostre prove ci siamo ritrovati il tool bloccato su un tema e lunico modo per cambiarlo stato di fare il logout e poi rientrare.

Confronto tra mercati


Qualunque stile scegliate, tutti sembrano puliti e facili da usare,

In evidenza

Zorin Look Changer


Con questo tool gli utenti Windows possono ottenere un desktop familiare, simile a quello di XP, 7 o GNOME 2.

ma possono risultare pesanti su macchine con scarsi requisiti hardware. Negli ultimi mesi nel mondo Linux c stato un rapido aumento del numero di ambienti che seguono lo stile dei desktop tradizionali. Quindi questo ci porta a un confronto diretto con altre nuove interfacce; le pi popolari sono Cinnamon e Mate. Rispetto La maggior parte delle distro Linux competono una con laltra per acquisire utenti gi appartenenti alla comunit Open. Zorin OS, invece, mira ad acquisire sangue fresco ad esse, il desktop di Zorin appare un po pi squadrato forse ma un prodotto commerciale. e Play on Linux che compiono perch pensato per Assieme alla versione Standard, un buon lavoro nel tentativo un pubblico poco tecnico gratuita, trovate ledizione di far girare il software Windows ma anche un po rozzo. Siamo Premium a 10 (download) sotto Linux, a patto di sapere incappati in occasionali errori o 18 (disco). Zorin come usarli. A questo punto di visualizzazione che non hanno ha assemblato un ambiente si registra il difetto maggiore inciato lusabilit ma hanno desktop amichevole che strizza di Zorin OS: la scarsissima dato un senso di grossolanit. locchio a chi vuole fuoriuscire documentazione. La voce Help Speriamo che questo aspetto dal sistema di Redmond. Tuttavia nel menu principale apre lhelp venga rafnato nelle versioni potrebbe servire qualcosa di GNOME 3, cosa che pu future. Ma il collegamento con in pi per corteggiare questo confondere lutente visto che le Windows non si limita allaspetto: schermate presentate sono tipo di utente. Un migliore gli sviluppatori hanno cercato sistema di help e la diverse da quelle del sistema. di facilitare il passaggio a Linux preinstallazione si qualche ragionevole aspettarsi che anche del software. Sono difatti utenti Debian o Fedora sappiano PC/notebook, ad esempio. LXP stati inclusi Wine, Wine Tricks che Wine in grado di eseguire programmi Windows, o che Ubuntu One serva per lo storage nella cloud, ma questo livello Zorin OS di conoscenza non deve essere Sviluppatore: Zorin Group dato per scontato per un utenza Web: http://zorin-os.com che arriva da Windows. Certo, Prezzo: Vers. standard gratis, vers. sono poche le persone che si Premium 10 download, 18 disco leggono dei pesanti manuali, ma Caratteristiche 7.5 una fonte dinformazione che Prestazioni 7 sia accessibile di inestimabile Facilit duso 8 valore quando si muovono Documentazione 5 i primi passi in un nuovo sistema. Fornisce unesperienza Questo ancor pi vero per simil-Windows senza bisogno AWN Dock Wine e i suoi add-on, perch di licenza, ma manca Un dock pulito e semplice da usare, a volte far funzionare il software la documentazione. ma nelle nostre prove a volte al suo interno pu non essere a prodotto dei glitch graci facile. Zorin OS non un po fastidiosi. Linux Pro un progetto comunitario

Giudizio

Il voto di

44

LINUX PRO 120

Quando la PASSIONE si chiama COMPUTER!

CORRI SUBITO IN EDICOLA!

Test In libreria

Amministrare GNU/Linux
Il principe dei testi per la preparazione alla certificazione Linux LPI

NU/Linux sembra continuare ad avere un futuro a due facce: dal lato desktop il numero di utenti a volte cresce e a volte diminuisce, dal lato server, invece, vediamo orire sempre pi richieste di lavoro in cui si cerca del personale qualicato, con o anche senza esperienza a volte. Quale modo migliore per dimostrare di essere qualicati se non quello di prendere una certicazione LPI? Bene, se volete intraprendere questa strada, necessario avere del buon materiale su cui studiare. Per questo motivo abbiamo richiesto a Lici.it (Linux Certication Institute) una copia del libro Amministrare GNU/Linux di Simone Piccardi, usato proprio come testo ufciale, approvato da LPI, per la preparazione agli esami LPI 101 e 102 e in parte anche per il 201 e il 202. Il volume

importate sia per i contenuti sia per le dimensioni ( piuttosto voluminoso). La lettura delle oltre 500 pagine che lo compongono impegnativa: si parte dallarchitettura del lesystem, dai processi e dalla shell per poi passare allattivazione dei servizi. I capitoli 4, 5 e 6 trattano lamministrazione di sistema (backup, gestione pacchetti e utenti, partizionamento, kernel, boot, gestione interfacce e RAID) e inne c la parte relativa al networking (TCP/IP, congurazione della scheda di rete, comandi e servizi base di rete, DNS), forse quella che pi ci piaciuta. Tutti gli argomenti vengono spiegati da zero in modo chiaro e con un gran numero di esempi, graci e tabelle riassuntive. Alcuni dettagli del libro andrebbero aggiornati (ad esempio, ora la certicazione LPI dovrebbe includere GRUB2, di cui

non si parla nel testo), ma per il resto questa una delle letture pi istruttive in campo Linux che si possano fare. Una nota: dal 10 agosto al 20 ottobre Lici.it ha deciso di fare il 20% di sconto su tutti i suoi libri (cartacei e PDF) inserendo in fase dacquisto nel carrello il codice LXP120.

Giudizio
Amministrare GNU/Linux
Autori: Simone Piccardi Editore: Lici.it ISBN: 978-1-4457-5468-0 Pagine 518 Prezzo: 39,50 (stampato),

3,90 (PDF)

Copre una buona fetta delle cose da sapere per amministrare un sistema Linux. Alcuni dettagli sarebbero da aggiornare.

Il voto di

Linux Pro

8.5

Metasploit Pen Testing Cookbook


Linux Pro scopre un libro di ricette privo di consigli culinari

l penetration testing larte di attaccare un computer per scoprirne le vulnerabilit che potrebbero essere sfruttate da maliziosi attaccanti. Un sistema trovato debole pu essere poi aggiornato per rimuovere le falle, aumentandone quindi il livello di sicurezza. Metasploit lapplicazione pi popolare per gestire questo tipo di attacchi, ed usato sia dai white hat che dai black hat per coordinare le loro attivit. Esso unisce in un unico pacchetto tutti i tool necessari per fare un penetration testing, dalla scansione delle reti alla gestione di un database di vulnerabilit. Questo libro segue un usso logico, dal recupero delle informazioni

al vulnerability assessment, passando poi alle metodologie dattacco e allexploiting delle macchine compromesse. La seconda met del libro votata ad argomenti pi avanzati, come luso di Meterpreter e il social engineering. In denitiva abbiamo trovato il testo facile da seguire (nonostante linglese) e soprattutto dotato di un taglio piuttosto pratico, ricco di esempi. Questo piacer pi al lettore che vuole imparare facendo le cose, piuttosto che a quello che preferisce leggere in poltrona. Lautore non assume che il lettore abbia particolari conoscenze, per per applicare le tecniche illustrate necessario avere solide basi di networking e di conoscenza dei sistemi operativi. Il penetration testing una parte importante

del processo di creazione di un sistema di sicurezza. Comunque vi ricordiamo che se volete mettere in pratica questa tecnica necessario avere il permesso di chi viene attaccato, altrimenti si rischiano sanzioni anche pesanti. LXP

Giudizio
Metasploit Penetration Testing Cookbook
Autore: Abhinav Singh Editore: Packt Publishing ISBN: 978-1-84951-742-4 Pagine 241 Prezzo: 38,99
I segreti di Metasploit spiegati in modo esteso e molto pratico.

Il voto di

Linux Pro

46

LINUX PRO 120

Test Confronto
COME ABBIAMO CONDOTTO I TEST
Abbiamo creato dei progetti in ognuno dei cinque servizi di hosting, valutando quanto fosse semplice congurare il tutto e quanto linterfaccia fosse facile da utilizzare. Prima di tutto abbiamo passato in rassegna le funzionalit essenziali dellamministrazione, personalizzando le pagine Web, caricando i le sul server, congurando i diversi canali di comunicazione e abilitando la funzionalit di bug tracking (ove presente). Durante questo processo, ci siamo messi nei panni di un amministratore di un nuovo progetto, impaziente di pubblicare il proprio lavoro su Internet e attirare pi partecipanti. Linterfaccia di utilizzo dellamministrazione e la facilit di fare cambiamenti sono stati i principali fattori nei nostri test. Altri fattori che hanno inuenzato la nostra valutazione sono stati le performance del servizio (test effettuato nellarco di diversi giorni), se le pubblicit fossero pi o meno intrusive, e quanto fosse facile trovare il nostro progetto rispetto agli altri ospitati sul sito.

Project Hosting
Quali sono i migliori servizi di hosting che possono ospitare nuovi e fantastici progetti Open Source? Diamo unocchiata a quello che la Rete ci mette a disposizione

upponiamo che abbiate avuto unidea brillante per un nuovo software Open Source. Avete scritto il codice, corretto tutti i bug, creato un logo accattivante e siete pronti a mostrare il software al resto del mondo. Lunico problema : dove

se pensano che il software possa essere migliorato. Si aspettano un Wiki che contenga la documentazione e un sistema di controllo del codice sorgente, che permetta loro di provare lultima versione. Se volete che altre persone prendano parte al vostro progetto, dovete

Gli utenti si aspettano un sistema di controllo del codice che permetta loro di provare lultima versione
pubblicare il tutto? Ognuno di noi capace, al giorno doggi, di creare una pagina Web e pubblicarla online, ma gli utenti si aspettano di pi. Vogliono siti interattivi, dove possano utilizzare un forum per lasciare dei commenti o aprire un bug inoltre fornire una moltitudine di strumenti che li possano coinvolgere. Fortunatamente ci sono molte soluzioni di hosting per i pi disparati progetti su Internet. Ma, analogamente alla scelta di una distribuzione Linux, a una prima occhiata la variet

di scelta pu intimorire. Quindi questo mese abbiamo preso in considerazione cinque dei pi famosi servizi di project hosting e abbiamo esaminato quali funzioni forniscono, quanto sono facili da usare e ogni sorta di progetti per i quali vengono utilizzati. Per esempio, un piccolo client IRC amatoriale ha bisogno di funzionalit differenti rispetto al kernel di un sistema operativo. Per questo abbiamo testato anche la essibilit dei servizi.

LA NOSTRA SELEZIONE

BerliOS GitHub Google Code Savannah SourceForge

48

LINUX PRO 120

Confronto Test

Configurazione e hosting Web


Quanto facile congurare un nuovo progetto?

oogle Code permette di congurare un sito con il minimo sforzo, si devono inserire solo il nome, una breve descrizione e la licenza di riferimento. Quando il processo completato, ci si trova con un sito Web dalla graca minimalista con collegamenti ad aggiornamenti, download dellapplicazione e wiki. Non c molto da fare per la personalizzazione, per questo i progetti su Google Code tendono ad apparire tutti uguali, ma leffetto positivo che questi siti sono facili da navigare, e nella pagina principale un utente pu vedere subito lo stato di attivit. Lindirizzo Web del tipo http://code.google. com/p/mioprogetto. Lavorare con BerliOS invece un po pi complicato, con un sacco di informazioni e licenze da leggere e approvare. Lostacolo maggiore , tuttavia, lattesa per lapprovazione del progetto da parte del team (generalmente entro le 24 ore). Daltro canto, in questo modo vengono ridotti i progetti fantasma. Una volta che il progetto stato approvato, si possono caricare pagine HTML e immagini via SCP, ma la pagina principale deve contenere il logo di BerliOS e un link al sito principale. LURL assegnato del tipo http://mioprogetto.berlios.de.

SourceForge ha un processo di sottoscrizione molto curato e accattivante, che presenta subito le opzioni disponibili: wiki, blog, forum, SVN e altro, il tutto accompagnato da immagini di esempio. Potete scegliere dei box per le opzioni di cui avete bisogno, e anche se sembra troppo presto pensare a queste cose durante liscrizione, ci piace il fatto che vengano presentate n dallinizio. Potete poi procedere con il caricamento di pagine HTML e di immagini a vostra scelta. tutto estremamente facile da usare. GitHub fornisce spazio gratuito per i progetti Open Source (ci sono diversi tipi di abbonamento, a seconda del numero di repository che volete creare), e tutto quello che dovete fare fornire il nome per il vostro progetto, dopodich viene creato automaticamente un repository Git. Non ci sono particolari operazioni da compiere, ma solo una lista di comandi Git da inserire. Loperazione principale che si pu effettuare dal Web quella di navigare allinterno del repository, e si possono pure caricare delle pagine HTML. Savannah stato, invece, una frustrazione continua, rigettando la password scelta (sembra che una combinazione di undici caratteri, di lettere e numeri, maiuscole e minuscole, non sia

In SourceForge molto facile aggiungere funzionalit al progetto che si creato

abbastanza sicura) e forzandoci a decifrare il captcha per poterlo inserire. I requisiti per caricare i le sono n troppo rigorosi, con il processo di registrazione che chiede di confermare che possediamo i diritti su tutti i le caricati e pretende una copia della licenza allinterno del le compresso che si intende pubblicare. Si deve anche fornire un link a un altro le compresso, cos che gli amministratori sito possano controllare che sia tutto in ordine; la documentazione suggerisce di utilizzare il termine GNU/ Linux invece di Linux nelle descrizioni, al ne di velocizzare lapprovazione in tempi rapidi. Dopodich si possono uploadare i le HTML, visibili a un indirizzo del tipo www.nongnu.org/mioprogetto.

Verdetto
BerliOS GitHub Google Code
Savannah

SourceForge SourceForge vince facilmente in questa categoria.

La segnalazione dei problemi efciente?

Segnalazione bug
erliOS fornisce un sistema Web di segnalazione dei bug, con categorie, priorit e gruppi; un amministratore pu impostare i bug come aperti, chiusi la segnalazione, chiedendo allutente i passi esatti per riprodurre il problema. Apprezzeremmo molto che anche gli altri servizi facessero cos, perch in questo modo si ridurrebbero il numero di segnalazioni inutili, del tipo il vostro programma non funziona. Sorprendentemente, il sistema messo a disposizione da GitHub estremamente basilare, con la sola possibilit di assegnare i bug a certi sviluppatori e impostare delle milestone, che rappresentano dei check-point in cui si devono chiudere alcuni bug (generalmente una milestone fa riferimento a una o pi funzionalit del programma che si vogliono migliorare). Anche Savannah ha un gestore alquanto scarno, che non richiede allutente troppe informazioni.

(risolti), duplicati o invalidi. Si possono anche creare delle query SQL per mostrare la lista solo di certi tipi di bug. Il sistema di gestione delle segnalazioni (o, in inglese, Ticket) di SourceForge, tuttavia, ha uninterfaccia utente pi accattivante, ma pecca nella facilit con cui si pu assegnare la priorit a un gruppo di bug, e pu essere un problema se si vogliono modicare decine di bug in un colpo solo. Il sistema messo a disposizione da Google Code molto semplice, ma mostra prontamente un template per Google Code richiede agli utenti di inserire personalizzare un gran numero di informazioni

Verdetto
BerliOS GitHub Google Code
Savannah

SourceForge BerliOS di gran lunga quello pi completo.

LINUX PRO 120

49

Test Confronto

Amministrazione
C
ome sviluppatori principali del progetto, passerete molto tempo usando lamministrazione Web del sito. Questo comprende operazioni come il caricamento di nuove versioni del software, laggiunta di schermate di esempio, il rispondere ai bug o moderare le discussioni sul forum. Detto questo, la bellezza dellinterfaccia non una funzionalit; non vi deve importare di quanti effetti Ajax essa offra. Vi dovete focalizzare sulla possibilit di fare il tutto con meno click possibili del mouse (o, ancora meglio, con le combinazioni da tastiera).

Quanto facile e usabile linterfaccia amministrativa?


Nel resto dellarticolo parliamo delle funzionalit individuali, qui, invece, ci focalizziamo sul funzionamento generale dellinterfaccia, giudicando quanto sia facile da navigare, la velocit di risposta e, nel caso, se sono presenti noiosi impedimenti o procedure complicate. Non importa che esistano degli strumenti che possono automatizzare il rilascio di una nuova versione del software su diverse piattaforme, ne un esempio Shipper (www.catb. org/~esr/shipper/), che permette di fare rilasci su SourceForge direttamente dalla linea di comando.

Sebbene linterfaccia di BerliOS sia molto scarna e testuale, e a volte risulti faticosa da guardare, non difcile entrare nella sua logica di funzionamento. Laccesso alle funzionalit principali fornito direttamente in cima alla pagina, e per molte delle funzionalit presente un pulsante di amministrazione che consente di modicare facilmente le impostazioni. Il pi grande difetto di BerliOS , tuttavia, che non salva la stato dellutente attraverso sessioni multiple. Questo signica che ogni volta che chiudete il vostro browser e lo riaprite, dovete effettuare il login per accedere nuovamente allamministrazione. Non la ne del mondo, perch i browser pi moderni sono capaci di salvare le informazioni di accesso, ma aggiunge un piccolo fastidioso passo in pi quando volete accedere velocemente per rispondere allultima segnalazione di un bug. Nel complesso, tuttavia, una buona interfaccia.

BerliOS

GitHub

Per GitHub, il repository il fulcro centrale, e tutta linterfaccia di gestione si basa essenzialmente sullinterazione con esso. Un utente pu navigare nel codice sorgente, vedere chi ha effettuato lultimo commit e sottoscrivere (watch) i progetti dai quali vuole ricevere aggiornamenti quando qualcosa viene pubblicato. anche possibile vedere i fork del codice e vericare in anticipo se alcune patch possono essere applicate in modo pulito al repository principale. Fortunatamente ci sono un bel po di guide, corredate da schermate e comandi esemplicativi, che spiegano come amministrare il repository e correggere i problemi; e queste sono divise in categorie a seconda dellesperienza dellutente. C anche un basilare progetto Hello World per testare le funzionalit. Tutto sommato linterfaccia curata e professionale, e mette il codice sorgente al centro. Un ottimo design per progetti altamente collaborativi.

Statistiche di utilizzo
Chi visita il tuo sito e quali le scarica?
ssere capaci di tracciare chi visita il sito Web del nostro progetto e monitorare lattivit dei file scaricati, permette di avere dei preziosi feedback sul progetto stesso. Come impostazione predefinita, Google Code non aiuta pi di tanto, a parte fornire le statistiche di download dei singoli file; per avere maggiori informazioni si deve collegare il progetto con un account Google Analytics, operazione leggermente seccante. GitHub fa un lavoro migliore, con grafici dettagliati che esprimono informazioni come impact (che rappresenta la quantit di commit) e punchard (che mostra

i commit effettuati nelle diverse ore del giorno sullarco dei giorni della settimana); recentemente sono stati aggiunti ulteriori grafici, come quello sui contributor che mostra le statistiche (commit e linee modificate) per ogni singolo partecipante al progetto. Anche SourceForge ha dei piacevoli grafici che rappresentano lattivit in termini di visite al sito, il forum, lo stato delle segnalazioni e informazioni sul sistema di versioning: si pu definire un arco temporale di riferimento per essi. Fornisce, inoltre, alcune informazioni aggiuntive, come la provenienza dei visitatori, il sistema operativo utilizzato,

ecc. Per BerliOS la situazione un pochino pi complicata, in quanto c una vista separata per monitorare le statistiche del sito e anche una pagina separata nellamministrazione per controllarle. Queste sono accompagnate da graci dettagliati (a volte n troppo matematici), ma non si ha, ad esempio con le date, lo stesso tipo di controllo capillare che si ha con SourceForge. Savannah, invece, fornisce dei semplici graci a barre per i bug segnalati (chiusi, aperti, ecc.) e per i download, e un tool separato (lormai famoso AWStats) per le statistiche del solo sito Web.

Verdetto
BerliOS GitHub Google Code
Savannah

SourceForge
Pieni voti per tutti, per determinazione e perseveranza.

50

LINUX PRO 120

Confronto Test
Google Code
Nel tipico stile Google, tutte le opzioni sono raggruppate insieme sotto un singolo tab di amministrazione, che contiene sotto-categorie per la descrizione del progetto, download, sharing, wiki, segnalazioni e altro. Pressoch tutte le opzioni si presentano come campi testuali, quindi non accattivante come linterfaccia di SourceForge, ma uno sviluppatore navigato non dovrebbe avere grossi problemi a utilizzarla. Una quantit limitata di funzioni sono disponibili attraverso gli altri pannelli, che permettono di impostare pagine alternative per sezioni differenti, ad esempio Download e codice sorgente (utile se pianicate di caricarle su un servizio esterno). uninterfaccia mediocre, che va bene per gli sviluppatori esperti, ma che appare un po trascurata e scarna.

Linterfaccia di Savannah chiara e pulita, allegramente semplice e in puro stile GNU. presente un promemoria che incentiva alle donazioni per mantenere il sito online, ma latmosfera pi orientata alla comunit Open Source rispetto alle altre offerte, con icone colorate e la mascot di GNU in bella vista. Potete gestire la mailing list, le segnalazioni dei bug e le attivit attraverso linterfaccia di amministrazione, la quale permette anche di aggiungere e rimuovere utenti. Abilitare o disabilitare funzioni molto semplice e lo si pu fare con pochi click del mouse, fornendo anche degli URL alternativi se si vogliono utilizzare funzionalit da altri servizi online. Se volete essere coinvolti in altri progetti, potete personalizzare il vostro prolo per mostrare le vostre esperienze e capacit, cos che gli altri sviluppatori possano cercarvi e mettersi in contatto con voi.

Savannah

SourceForge

Ultimo, ma non ultimo, SourceForge ha il sistema di amministrazione migliore, in termini di funzionalit, ed anche quello pi gradevole visivamente, con grandi icone e descrizioni eleganti. Tutto ben organizzato in categorie, con la possibilit di impostare capillarmente i permessi del progetto (chi un amministratore, chi pu caricare i le, ecc.). Analogamente alla fase di iscrizione, lamministrazione consente di aggiungere funzionalit con un singolo click, come abilitare un wiki o un database MySQL. Occasionalmente ci sono delle stranezze, per esempio limpossibilit di creare o caricare unicona per il sito. Sebbene non sia perfetta, di sicuro linterfaccia pi completa e facile da usare, ed perfetta per gli utenti poco esperti.

Controllo versione
Utilizzare un sistema di controllo delle versioni del codice
er alcuni progetti, specialmente per quelli con una manciata di collaboratori, utilizzare un sistema di versioning pu apparire una scelta sproporzionata. Eppure un buon modo per tenere traccia anche delle pi piccole modifiche del codice, e ritornare velocemente, in caso di emergenza, a una versione funzionante. Come impostazione predefinita, SourceForge abilita il sistema Git per i progetti, ma si possono impostare dallamministrazione anche il classico Subversion - SVN o Mercurial, se li preferite. Linterfaccia Web

vi permette di generare i comandi shell per accedere al repository Git con protocolli differenti (es. SSH e HTTPS), e potete esplorare le modifiche dei diversi commit anche dal sito. BerliOS fa un passo avanti fornendo il supporto anche al famoso CVS, in aggiunta ai tre gi citati per SourceForge, semplicemente attraverso dei comuni checkbox nel pannello di amministrazione. Ci ha molto colpito il fatto che BerliOS mette a disposizione differenti modi per navigare nel repository software, per esempio ViewCV e WebSVN per i repository Subversion, e GitWeb e CGit

per quelli Git. Se avete dei problemi con una delle interfacce, potete tranquillamente utilizzarne unaltra. GitHub supporta solamente Git, ma con unavanzatissima interfaccia Web per navigare nei repository (incluso visualizzatore del codice sorgente con syntax-highlight integrato). Google Code ha Git, con Mercurial e Subversion come opzioni accessorie, e un sistema di navigazione/revisione Web piuttosto minimalista, mentre Savannah offre, anchesso, i tre servizi citati a fianco di GNU Arch (ma si deve cercare nella documentazione per capire come configurarlo).

Verdetto
BerliOS GitHub Google Code
Savannah

SourceForge
Savannah offre unampia variet di scelta, ma BerliOS vince su tutti.

LINUX PRO 120

51

Test Confronto

Comunicazione
cegliere un metodo di comunicazione per il vostro progetto pu essere complicato. Molti amministratori decidono di iniziare congurando innanzitutto un forum, che accessibile da uninterfaccia Web. Ma i forum sono soggetti a problemi come lo spam e gli utenti che spendono pi tempo a personalizzare la propria rma, che a comunicare soluzioni. Lutilizzo di una mailing list di solito migliore, perch ogni collaboratore pu scegliere lo strumento pi congeniale per leggere e organizzare le conversazioni. SourceForge include un modulo per il forum, ma un tiepido tentativo, con sotto-forum, formattazione base per creare tabelle e link, e notiche via e-mail per monitorare certe discussioni. Quando si naviga un forum e si pubblicano

La possibilit di interagire con i propri utenti

dei messaggi, per, tutto sembra limitato, con larmamentario della struttura di SourceForge che relega i messaggi in uno spazio ristretto. Non inusabile, ma avremmo preferito un approccio come quello di phpBB, con il forum che occupa la parte centrale e dove tutti i menu inutili spariscono temporaneamente. Oltre al forum si pu attivare la mailing list utilizzando Mailman. BerliOS non fa certo di meglio, dicendoti in fase di iscrizione che Una volta congurato un forum non sar possibile modicarlo o cancellarlo. Perch? Ma fa di peggio, in quanto la sezione Forum nella pagina del progetto vuota, anche se, controllando dallamministrazione, sono stati creati tre forum principali: Discussioni, Aiuto e Sviluppatori. Esplorando un po abbiamo scoperto che questi sono

impostati come cancellati, anche se esistono e funzionano. Un passo falso per BerliOS, che tuttavia ha lottimo sistema di mailing list, Mailman. Come ci si pu aspettare da Google, gli strumenti di comunicazione sono demandati a servizi esterni, come lutilizzo di Google Gruppi. Nessun problema con il software, se non fosse che dobbiamo procedere a unulteriore congurazione. Google Gruppi, comunque, funziona egregiamente e ha una buona interfaccia per navigare tra i messaggi. Savannah non ha i forum, ma, come gli altri, fornisce il servizio di mailing list tramite Mailman. GitHub non fornisce forum o mailing list, per questo non gli possiamo dare un voto in questa sezione. Ai sostenitori di Git potr sembrare un giudizio troppo severo, e noi comprendiamo che aggiungere un forum avrebbe potuto aumentare la confusione. Ma almeno un semplice sistema di mailing list sarebbe molto utile per gli amministratori che non vogliono utilizzare servizi esterni.

Verdetto
BerliOS GitHub Google Code
Savannah

SourceForge
Molti hanno la mailing list, e generalmente i forum sono poco funzionali.

Funzionalit aggiuntive
Gestore di attivit, wiki, revisioni e sotto-progetti
avannah fornisce un gestore di attivit (task manager) che piuttosto simile al sistema di segnalazione dei bug, ma dove gli sviluppatori possono pubblicare obiettivi e milestone per il progetto, mostrando la priorit e la percentuale completata. C anche un sistema di news per gli aggiornamenti, accompagnato da un feed RSS. GitHub, nel frattempo, fornisce un eccellente sistema wiki, funzionale e minimalista in puro stile

GitHub, con una variet di formati e di pulsanti per applicare gli stili, nel caso non si fosse familiari con il linguaggio di formattazione wiki. Anche Google Code fornisce un wiki, ma, cos come succede per molti aspetti del servizio, sembra si stia usando una vecchia CGI anni 90, invece di una moderna applicazione Web. Fa quello che deve, ma sarebbe bastato davvero poco lavoro in pi per rendere lutilizzo pi facile (e amichevole)

Linterfaccia del wiki di GitHub rende le modiche una passeggiata

da parte dei novelli amministratori. Diversamente, Google Code non offre niente altro degno di nota, come gi detto ci si aspetta di utilizzare altri servizi Google per aggiungere funzionalit. SourceForge ha alcune comode funzionalit, come quella delle revisioni che permettono a un utente nale di redigere una piccola recensione del progetto. C anche un basilare sistema wiki, limitato alla sintassi Markdown (http://en.wikipedia.org/wiki/ Markdown) che, pur essendo abbastanza semplice da utilizzare, manca della essibilit di quello provato per GitHub. Unaltra interessante funzionalit di SourceForge quella per limpostazione dei sotto-progetti. BerliOS impiega il sistema MediaWiki (lo stesso di Wikipedia) per il wiki interno, che si rivela incredibilmente potente, anche se forse un po fuori posto quando ce lo ritroviamo nellinterfaccia di utilizzo di BerliOS. presente anche un sistema per abilitare le donazioni.

Verdetto
BerliOS GitHub Google Code
Savannah

SourceForge BerliOS e SourceForge hanno molte opzioni in pi.

52

LINUX PRO 120

Confronto Test

Il verdetto
C
i sono due chiari vincitori in questa competizione: SourceForge e BerliOS. Il primo ha la pessima reputazione di contenere progetti mai niti - oltre il 98% dei progetti al suo interno non ha mai superato la fase di pianicazione. Alcuni anni fa, tra laltro, SourceForge era molto lento e poco funzionale, con centinaia di progetti inutili che rallentavano tutto il sito, motivo per cui in quel periodo molti utenti hanno spostato i progetti su altri servizi. Tuttavia, oggi SourceForge incredibilmente veloce, facile da congurare e ricco di funzionalit, rendendolo la scelta che noi raccomandiamo. BerliOS si piazza secondo, ma di una spanna, poich offre una serie di funzionalit per utenti avanzati che richiedono poco sforzo per essere congurati. Se SourceForge come una grossa

Project Hosting

capitale, n troppo vivace e a volte difcile da girare, BerliOS invece come una piacevole cittadina medio-piccola, attrezzata con le migliori tecnologie, ma senza il rumore e la frenesia della grande metropoli. Per il fatto che i progetti debbano essere approvati prima da un team dedicato, ci sentiamo di dire che la qualit generale del software che si trova su BerliOS pi alta di quello su SourceForge. Inoltre tutte le idee stravaganti vengono di solito riutate (e questo rende pi facile anche scegliere un nome, mentre su SourceForge molti nomi sono stati gi usati negli anni passati, magari per progetti oggi abbandonati). BerliOS, tuttavia, ha un problema: non sappiamo quanto a lungo sopravviver. Fu creato dal Fraunhofer Institute, in Germania, per

assicurare uno spazio di condivisione dei progetti Open Source, e questo e stato per dodici lunghi anni, no alla ne del 2011, quando ha nito i soldi. Il team di BerliOS a quel punto ha mandato una mail a tutti gli amministratori, informandoli dellimminente chiusura. Fortunatamente stato salvato allultimo momento da un gruppo di volontari, ma non ci sono garanzie che non possa chiudere nel giro di pochi anni. Questo non un grosso problema per progetti piccoli, ma se volete avere una base Web solida, probabilmente non il caso di utilizzare BerliOS al momento. Per concludere, per arginare le e-mail di protesta da parte degli utilizzatori di GitHub, il servizio funziona egregiamente per tutto ci che concerne luso di Git. E se vi interessa solo di questo, allora GitHub il vincitore con una votazione di cinque stelle su cinque. Ma come servizio generale purtroppo carente in alcune funzionalit principali.

Se SourceForge come una grossa capitale, BerliOS invece come una piacevole cittadina medio-piccola
4

SourceForge

GitHub
Google Code

Web: www.sourceforge.net
Accessibile e ricco di funzionalit. Il padre di tutti i servizi di project hosting.

Web: www.github.com
Brillante per chi utilizza Git, ma molto carente in alcuni aspetti.

BerliOS Savannah

Web: www.berlios.de
Secondo per un sofo, anche se ci si domanda quanto possa sopravvivere.

Web: http://code.google.com/projecthosting
Sorprendentemente brutto per un servizio Google. Strumenti piuttosto basilari.

A voi la parola
Avete provato uno di questi strumenti? Fateci sapere cosa ne pensate allindirizzo redazione@linuxpro.it, oppure su Facebook www.facebook.com/LinuxPro.it.

Web: http://savannah.gnu.org
Carente di smalto, ma buono se si vuole utilizzare un servizio totalmente gratuito.

In alternativa

Ci sono tanti altri servizi di hosting di progetti su Internet, molti dei quali sono specializzati su una tecnologia. interessante che molti dei servizi siano basati sul codice sorgente di altri - il codice su cui si basa SourceForge, per esempio, stato preso come spunto dal progetto GNU per diventare Savane, che adesso alla base di Savannah. Gna (www.gna.org) offre dei servizi esclusivamente per il Free Software. Utilizzare alcuni dei seguenti servizi, invece,

indica che si condivide e si supporta lOpen Source. Se siete dei fan di Debian, provate Alioth (http://alioth.debian.org); gli irriducibili di Git che cercano unalternativa a GitHub dovrebbero prendere in considerazione Gitorious (www.gitorious.org). Anche lUnione Europea ha creato lOpen Source Observatory and Repository (www.osor.eu), un tentativo per incentivare lutilizzo del software Open Source nel settore pubblico. LXP
LINUX PRO 120

53

Test Da non perdere


FREE SOFTWARE
In questa rubrica recensiamo i programmi pi interessanti che si possono trovare in Rete. Ogni mese navighiamo tra le migliaia di progetti Open Source che nascono o si aggiornano e selezioniamo i pi nuovi, i pi innovativi e quelli che possono tornare pi utili per luso quotidiano di una Linux box. La maggior parte delle applicazioni provate si trovano nel nostro DVD, ma ne forniamo anche gli indirizzi Internet cos che ogni lettore possa scaricare le versioni future. Se volete segnalare un vostro progetto o un programma Open Source che avete trovato in Rete e ritenete interessante per la maggior parte dei lettori, inviate una mail allindirizzo redazione@linuxpro.it QUESTO MESE... MyJgui Urban Lightscape din Mundus Avoision 54 55 55 56 56

MyJgui

Database manager
phpMyAdmin, uno strumento basato su interfaccia Web che permette di svolgere facilmente tutti i compiti standard. MyJgui adotta un approccio differente. Scritto in Java, unapplicazione desktop che pi o meno fa lo stesso lavoro di phpMyAdmin, ma siamo sicuri che possa fare meglio? Bene, sarete voi a giudicarlo, ma di certo essere liberati dalla tirannia di una nestra sul Web un modo comodo di cominciare. Va sicuramente meglio se scorrendo il database non pi necessario linnito aggiornamento della nestra per ogni singola azione, c una comoda visualizzazione a tre in basso a sinistra sul vostro desktop, inoltre potete gestire pi connessioni a diversi host, cos non sarete pi legati a un solo server. Larea sulla destra divisa in tre parti, vi mostra una nestra per le query, una per navigare fra le tabelle e una dedicata alloutput. Le ultime

VERSIONE 0.74.3 WEB http//myjgui.com

I database possono essere divertenti!!! Umh, ok... ma almeno possono essere un po meno noiosi

database sono elementi indispensabili della vita moderna come le nuvole per la pioggia e le scuse per gli scherzi. Perci ci scusiamo con gli amministratori di database, i database sono cose adorabili e noi tutti li amiamo, ma per la maggior parte delle persone, sono interessanti per necessit. Di sicuro alcune persone non amano spendere

il loro tempo smanettando nella shell compiendo azioni potenzialmente pericolose per le loro tabelle. Lo strumento scelto stato per molto tempo

I database sono elementi indispensabili della vita moderna


due sezioni sono segnalate da linguette, cos da permettere di passare velocemente da una allaltra, per esempio, da quella per le query a quella della lista delle tabelle. Allo stesso modo, la nestra di output pu mostrare messaggi, i log di MySQL o qualsiasi altro testo del campo selezionato. Questo eccezionale strumento non fa il lavoro per voi, dovete comunque essere in grado di scrivere query in SQL, ma abbastanza semplice da comprendere anche per un novellino che lo voglia utilizzare per azioni semplici, come creare tavole o inserire dati. Essendo unapplicazione Java, naturalmente potete utilizzare direttamente il le jar con java -jar MyJgui.jar e non avrete problemi di dipendenze. anche pi carino di quel che sembra.

Linterfaccia di MyJgui
Connessioni
Gestisce connessioni a diversi server.

Fa le magie
I wizard vi aiutano a creare database e tabelle.

Comandi SQL
Inserite qui i vostri comandi SQL.

Vista a linguette
I tab visualizzano risultati o dati nelle tabelle.

Clicca e modifica Feedback


Basta un doppio click Il pannello per loutput per effettuare mostra i log del motore modiche. del database.

54

LINUX PRO 120

Da non perdere Test


Utility graca

Urban Lightscape
VERSIONE 1.0.4 WEB http://bit.ly/zAhRh1

are foto facile, basta puntare la vostra Hasselblad/Fuji/Canon/ o la fotocamera del vostro telefono su qualche cosa, premere il pulsante ed fatta. Fare buone foto un po pi difcile e anche se si sistemato per bene tutto nellobiettivo, si fatto attenzione alla composizione e alla messa a fuoco, c sempre la luce. Le foto si basano tutte sulla luce, ma usare la macchina fotograca per riprodurre la luce cos come la vedono i nostri occhi pu essere una cosa complicata. Per questo motivo tutti gli studi fotograci dedicano cos tanto tempo alla luce e alle misurazioni. Ci sono diversi modi per ssare le immagini catturando i dettagli

Rendere i punti bui pi luminosi e i punti in piena luce pi soffusi. Pi facile a farsi che a dirsi con Urban Lightscape

nellombra senza oscurare gli oggetti principali e uno dei pi semplici usare Urban Lightscape. Caricate unimmagine al suo interno

e si aprir una nestra che mostrer una serie di cursori con i quali aggiustare le varie propriet. Qui arriva la magia, un doppio click su una zona

dellimmagine causer linserimento di un punto di controllo: fate scorrere il mouse su e gi per regolare la giusta luminosit di quel punto! Naturalmente il tutto funziona meglio se si inseriscono pi punti di controllo intorno allimmagine in zone che necessitano di essere regolate. Il regolatore di limpidezza sulla destra controlla che la luminosit sia equilibrata fra due punti, rivelando ogni dettaglio praticamente in ogni immagine. In questo modo anche la peggiore foto pu essere migliorata in poco tempo. Ovviamente la scommessa sar quella di regolare innanzitutto la luminosit nel migliore dei modi, ma anche salvare gli scatti su cui non si avrebbe altra possibilit di recupero, in tutti questi casi Urban Lightscape rimane lopzione migliore. Il sorgente presente nel DVD allegato. A parte Wxwidgets, che sono usati per linterfaccia, non esistono altre dipendenze fuori dallordinario, perci si installa in un instante.

Software audio

din
VERSIONE 2.0 WEB www.dinisnoise.org

l nuovo din uscito in una sportiva e brillante versione 2.0. Fare musica non signica solo imparare a suonare una chitarra o una tastiera. Per molte persone, la possibilit di scolpire suoni al di l dellelettronica un ovvio e pi immediato sistema per assalire i timpani. Din lo strumento per fare questo lavoro. Mentre molti programmi vi permettono di scegliere tra una selezione di suoni, o almeno manipolare forme donda abbastanza basilari, non ce ne sono molti (noi crediamo neanche uno) che vi permettano di tracciare le forme donda stesse e non intendiamo producendo uno scarabocchio maldestro ma costruendo il suono con delle ben denite e modicabili curve di Bezier. Din ha il meraviglioso

effetto di farvi appassionare al giocare con i suoni il piacere sta nel creare, non solo nellascoltare il risultato (il che sarebbe una benedizione, se poteste sentire qualcosa di ci che abbiamo prodotto...). Naturalmente, se volete, potete anche creare musica per il benecio e il godimento di altri. Il segreto per usare din leggere le istruzioni o almeno usare il sistema interno di help. Tutto ci accessibile dalla tastiera, attraverso luso di comandi testuali o di scelta rapida, e, per essere onesti, molti schermi

Controllate il vostro paesaggio di suoni con sinuose curve donda

si assomigliano tra loro per cui la cosa migliore familiarizzare con ci che pu fare ogni parte prima di tentare di fare qualsiasi altra cosa. Non c nessuna terribile e inaspettata dipendenza per din, necessario solamente avere

Fare musica non vuol dire solo imparare a suonare una chitarra o una tastiera

il server sonoro JACK accessibile e funzionante, cosa che su alcune distribuzioni piuttosto che su altre pi di una sda (facile da usare, ma non semplice da regolare da parte dellutente), quindi vale la pena di sforzarsi di leggere sia le istruzioni di din che quelle del server audio. Se riuscite a creare della bella musica, lautore vorr sentirla e anche noi, per cui perch non postare un link alle vostre meravigliose creazioni sul forum di Linux Pro?
LINUX PRO 120

55

Test Da non perdere


Utility

Mundus
VERSIONE 1.1.3 WEB http://mundus.sebikul.com

sando Linux quotidianamente come desktop si incorre in perenni inconvenienti, non intendiamo il costante cambiamento di paradigma dellinterfaccia, quanto piuttosto il disordine nella cartella home. Mentre altri sistemi operativi tendono a liberarsi di queste cose, in Linux sono sempre presenti e visibili e se cercando un particolare le in ~/, vi ritrovate a navigare fra molti le e cartelle create da applicazioni che non avete mai usato. Mundus (da non confondere con la distribuzione omonima) un piccolo software che cerca di alleggerire questo peso. Quando in funzione viene visualizzata sul lato sinistro in basso del monitor una serie

di software riconosciuti e installati e un pannello informativo sul lato destro. I numeri accanto ai nomi dei programmi indicano il numero dei le. Mundus non riconosce tutto, c una lista di software con cui funziona. A seconda dei programmi riconosciuti, si avranno un certo numero di opzioni, come la possibilit di ripulire la cache dei dati o di cancellare la congurazione. In ogni caso si pu fare un backup. Non un backup super-sicuro, perch salvato nella directory di Mundus nella cartella home, ma pu essere copiato in un posto sicuro. Il software, essendo ancora sperimentale, dimostra qualche difetto. Per esempio, usando il ltro che serve per visualizzare solo i le dei software non pi installati, si possono trovare a sorpresa nella

Mettere in ordine non mai il pi felice dei compiti, ma ci sono modi per renderlo pi facile

lista Chrome, KDE e GNOME. Questo programma pu essere utile, ma non scommetteteci la vita sulla correttezza delle informazioni che fornisce. Mundus scritto in Gambas, perci richiede una manciata di moduli per funzionare, magari non tutti quelli utilizzati allinizio per avviarlo, cos, se dovesse sembrare che non funzioni correttamente, basta installare alcuni degli altri moduli (o tutti gli altri, dato che a essere onesti non ce ne sono ancora moltissimi).

Gioco minimalista

Avoision

VERSIONE 1.1 WEB http://avsn.sourceforge.net

ella storia dei giochi per computer ci sono stati dei terribili esempi, molti di questi sono stati creati da grandi team di sviluppo, dotati di graca elaborata, colonne sonore registrate professionalmente e una spiacevole mancanza di lungimiranza. Questo non uno di questi casi. Non c graca elaborata, n una colonna sonora di John Williams n nomi di famosi sviluppatori. Non c una trama o qualsiasi altra cosa di cui parlare. Non altro che pura arte un gioco ridotto talmente allosso che uno incomincia a chiedersi ancora un gioco?. Noi crediamo di s. Certo, un gioco semplice e basilare, ma con gli elementi

essenziali del giocare. Lobiettivo semplice: si ha il controllo del blocco rosso e bisogna muoverlo verso il blocco verde usando i tasti cursore, tutto qui. Oltre al blocco

Schivate gli orrendi zombie in 3D mentre cercano di... oh, ok, fatelo con i blocchi rossi cercando di non essere colpiti

bianco naturalmente, ce ne sono molti e potrebbero capitare cose spiacevoli se ci si sbatte contro. Si muovono molto velocemente e si dovr essere un po pi veloci e, a volte, persino abili e intelligenti per uscire dalla loro traiettoria. Se aiuta, si pu immaginare di essere nel gioco I morti viventi, i blocchi bianchi sono gli zombi e quello verde la roulotte. Solo che non ci sono fucili o rumori simili a grugniti, se avete bisogno di un po di adrenalina, c la versione estrema del gioco, n dove siete capaci di spingervi? Fortunatamente la mancanza dei soliti frizzi e lazzi signica che questo gioco estremamente leggero, privo di dipendenze e pu essere compilato praticamente su ogni computer che supporti SDL. LXP

56

LINUX PRO 120

Tutorial
LA VOSTRA GUIDA DI RIFERIMENTO
Esiste sempre qualcosa di nuovo da imparare in campo informatico, soprattutto in un mondo dinamico come quello di Linux e dellOpen Source. Ogni numero di Linux Pro presenta una corposa sezione dedicata a tutorial realizzati da esperti in moltissimi settori: programmazione, sicurezza, amministrazione di sistema, networking. Troverete informazioni utili sia che siate dei veterani di Linux sia degli utenti alle prime armi. Studieremo con cura anche le applicazioni pi diffuse sia in ambito lavorativo che desktop. Il nostro scopo quello di fornire in ogni numero il giusto mix di argomenti, ma se avete suggerimenti su temi particolari che vorreste vedere trattati, scriveteci via e-mail allindirizzo redazione@linuxpro.it

I nostri esperti offrono ogni mese i loro consigli di programmazione e di amministrazione del sistema

TUTORIAL
Presentazioni
Volete qualche consiglio su come realizzare presentazioni che non facciano addormentare il vostro pubblico? Abbiamo chiesto consiglio al mitico Damian Conway, un vero guru in fatto di intrattenimento del pubblico pag. 58

Gentoo
Se pensate che la distribuzione Gentoo sia riservata ai super esperti di Linux vi ricrederete dopo aver letto il nostro tutorial alla sua installazione, che vi guida passo per passo pag. 62

Permessi dei file


Se il normale sistema di gestione dei permessi daccesso ai file non vi basta, il momento di usare le ACL pag. 66

Joomla! 2.5
Gli ultimi ritocchi ai template

Arduino
Avreste mai pensato che Arduino si potesse trasformare in un chiacchierone? Vi mostriamo che possibile pag. 68

pag. 72

Sicurezza
Aggiornare il server Web non basta a renderlo sicuro, verificatelo con WebGoat pag. 76

COME RAPPRESENTIAMO LE LINEE DI CODICE


Si presenta spesso la necessit di riportare le linee di codice di un programma. Per favorirne la lettura evidenzieremo le singole linee in questo modo: begin mniWordWrap.Checked := not end Quando una riga di codice supera la lunghezza della colonna la riporteremo su pi righe utilizzando la notazione seguente: printf(Vi preghiamo di inserire una password.);

ACCADEMIA DEL CODICE


Concetti di base
Gli algoritmi di ordinamento sono fondamentali in molte occasioni, ma non sono tutti uguali. Ve ne spieghiamo le caratteristiche prendendo come esempio il Bubble Sort pag. 80

PHP
Largomento database non si esaurito il mese scorso. Questo mese sfrutterete MySQL per memorizzare e visualizzare tutte le informazioni che vi servono sui visitatori del vostro sito Web pag. 82

Assembly
Librerie condivise, matematica e input/output in primo piano

OpenCV
Ci avviciniamo al cuore del nostro corso dedicato a OpenCV: ecco come individuare un volto allinterno di una foto pag. 90
LINUX PRO 120

pag. 86

57

Presentazioni
Suggerimenti per rendete convincenti le vostre argomentazioni

Presentazioni: imparate larte


Linux Pro distilla un po della saggezza raccolta in una giornata al corso di presentazioni di Damian Conway, uno dei pi importanti protagonisti della comunit Perl

Se avessimo ascoltato il consiglio di Damian quando ha fatto la sua presentazione allAkademy, potremmo essere dei collaboratori di KDE

INTERMEDIO

Nel mondo del Software Libero creare ed eseguire una presentazione uno dei metodi pi efcaci di trasmettere le vostre idee, sia che stiate parlando della vostra ultima scoperta di un programma libero a un LUG, contribuendo a una conferenza come Guadec o Akademy, o facendo una presentazione pi formale a un pi grande evento di evangelizzazione di FOSS. Ma c unincongruenza in tutto questo. Nonostante quella Open Source sia una comunit che fa molte presentazioni che parlano dei progetti che ci appassionano e di quello che stato realizzato, con le migliori intenzioni del mondo, veramente pochi di noi sono dei presentatori naturali. La cosa peggiore che dopo aver subito per molti anni i temi, le transizioni, i punti elenco animati predeniti di Microsoft e i presentatori che dicevano ogni parola sulla diapositiva, una presentazione, anche una su di un argomento che amiamo, pu ancora essere terrorizzante. Questo avviene perch, a meno che non siate nati per essere un politico o un venditore di auto, una capacit che non si materializza senza pratica, preparazione e disciplina. E se la vostra presentazione va male, probabilmente non vorrete provare di nuovo. Questo un peccato. Le presentazioni possono essere fantastiche. Possono essere sia il miglior modo di insegnare agli altri la struttura di una tecnologia, sia un modo di capire di cosa ha bisogno la vostra comunit. Chiunque pu essere un gran presentatore e non c niente come il contatto diretto che il pubblico sente quando qualcuno sta parlando di qualcosa che lo appassiona. Una buona presentazione non sembra ripetuta, preparata e organizzata. Sembra un lo diretto con la mente del presentatore. Questo forse

il motivo per cui i buoni presentatori possono intimidire gli altri e fargli pensare che non c modo di eguagliare il loro controllo mentale e la loro perfezione, il che, a sua volta, pu rendere lintero procedimento angosciante, estenuante, difcile, imprevedibile e, in denitiva, da evitare. Per una ragione qualunque, molte presentazioni di appassionati di informatica falliranno o nellinteressare il pubblico o nel passare le informazioni per cui erano progettate. quel miscuglio di inesperienza, vita sociale espressa quasi interamente su Internet e materiale di argomento tecnico che pu cos spesso portare a un memorabile asco. Ma non deve per forza essere cos. Ci sono alcune presentazioni e presentatori incredibili nel mondo del Software Libero. Perci, quando abbiamo avuto lopportunit di frequentare un corso di un giorno sulle presentazioni tenuto da Damian Conway, non abbiamo esitato. Non solo Damian uno dei massimi smanettoni di Perl e un esperto di informatica a tutto tondo, anche uno dei migliori presentatori che abbiamo mai visto. I suoi discorsi introduttivi alla OSCON sono intelligenti, informativi e divertenti. Le sue sessioni guida spiegano idee complesse senza sforzo. Ma la cosa pi importante che mantiene il coinvolgimento del pubblico.

Pianicare
Per quanto possa essere liberatorio fare una presentazione senza alcuna preparazione, a meno che non siate incredibilmente dotati e sicuri, destinata a fallire. Il modo migliore per i semplici mortali di fare ottime presentazioni e il singolo fattore pi determinante che decide tra il successo e il fallimento la quantit di impegno che mettete nei suoi contenuti. Damian dice di impiegare 100 ore di lavoro su di una singola presentazione di unora e anche se non suggerisce che voi facciate lo stesso per le riunioni mensili, tuttavia

58

LINUX PRO 120

Presentazioni Tutorial
tra quello che volete dire e quanto facile dirlo. Damian la spiega come uidit cognitiva, cio il concetto che idee semplici, pi uide sono facili da capire e ricordare. Non che non possiate spiegare concetti complicati, ma come scegliete di spiegarli.

Diapositive
Questo ci porta a come costruire le vostre diapositive. Damian consiglia fortemente di non iniziare con le diapositive stesse, ma con il promemoria che dovrebbe sempre accompagnare le vostre presentazioni. Poich questo promemoria non dovrebbe mai essere un duplicato della vostra presentazione, ma unespansione delle sue idee e temi, ha senso che questo sia la parte migliore da dove iniziare. Esso funziona anche come modo per arricchire il vostro brainstorming originale, dividendo la presentazione nei temi principali e tentando di affrontare la narrazione che deve unirli insieme. Anche se iniziate con una sola pagina A4, quasi sempre nirete con pi informazioni sul promemoria di quante sarete in grado di dire durante la presentazione. Che quello che volete. Quando siete soddisfatti della uidit e del contenuto del promemoria, tempo di sottoporsi a un altro livello di potatura non appena iniziate con le diapositive vere e proprie. Una delle domande pi comuni quando si crea una presentazione : quante diapositive dovrei usare?. La risposta dipende dal vostro stile di presentazione, ma le diapositive dovrebbero essere usate come temporizzatore per voi. Dovreste usare dei punti tappa a questo scopo, magari pianicando di raggiungerli a intervalli di 15 minuti. Le diapositive che usate tra questi punti dipendono da quello di cui state parlando, da come ne parlate e da quante informazioni volete trasportare sullo schermo. Potrebbero essere una ogni cinque minuti oppure ogni dieci. Scegliete quello che pi comodo per voi, ma non basatevi soltanto su di un passaggio a intervalli ssi tra una diapositiva e laltra. Provate a variare il ritmo per rendere il discorso il pi naturale possibile. Ci sono poche cose peggiori in una presentazione di essere costretti a sopportare pesanti paragra di informazioni, dove la densit del testo cos alta che ci vogliono cinque minuti per leggere una diapositiva mentre si ignora qualunque cosa venga detta. Le vostre diapositive devono essere il contrario. Dovreste provare a trattare solo cinque punti su di una singola diapositiva e cercare di farlo con un singolo rigo per ciascuno. Damian preferisce una graca sobria, senza decorazioni, solo un titolo/intestazione di sezione come segno di continuit. Noi siamo daccordo. Nessuno vuole

Il mantra di Damian per la quantit di informazioni nelle vostre presentazioni di meno di pi. Steve Jobs sarebbe daccordo

raccomanda una proporzione di 10:1, dieci ore di lavoro per unora di presentazione. Damian suggerisce di iniziare con un brainstorming di idee, impiegando giusto unora per scrivere tutte le cose che volete trattare. Questa panoramica iniziale pu essere di parecchie pagine o di una sola, ma se trovate difcile tirare fuori le idee, forse dovreste ripensare se siete la persona pi adatta per fare la presentazione. importante che i partecipanti vi vedano come esperto. Come Damian ha sottolineato nel suo corso, potreste essere un esperto persino nel non essere un esperto, come nel sottolineare i problemi di usabilit con linterfaccia Unity di Canonical o che troppa scelta sta danneggiando lecosistema di Linux, ma dovrete sempre essere in grado di parlare dellargomento scelto con autorevolezza. Se un argomento di cui non potete parlare per esperienza personale, non ne varr la pena. O cambiate argomento o trovate qualcuno pi adatto. Dalla panoramica iniziale dovete scegliere alcuni punti che volete che i partecipanti capiscano e ricordino. Damian ne raccomanda una manciata, con cinque come numero magico, sebbene ammetta che la sua presentazione ne ha sette. Il pubblico andr via solo con poche delle vostre idee in testa, non importa quanto sia coinvolgente o ben pianicata la vostra presentazione, perci saggio provare a gestire voi stessi quelle idee e dare priorit a quelle che pensate che il vostro pubblico debba prendere. Dovrete anche assicurarvi che quelle idee possano combinarsi per formare un lo narrativo. Questo lo sar la struttura della vostra presentazione, che si spera tocchi le idee principali a determinati intervalli e le intrecci in una storia, perch una storia molto pi facile da ricordare di un elenco di idee scollegate. Si tratta di riconoscere e ricordare. Damian raccomanda di usare altre idee nate dal brainstorming se non potete far funzionare questi cinque punti in una narrazione. Questo perch usare una storia per rendere le vostre idee facili da ricordare pi importante di trattare un punto isolato. Se un singolo punto veramente tanto importante, allora progettate la vostra presentazione intorno a quel punto, ma non lo lasciate orfano dal resto del vostro discorso, perch non sar mai ricordato. Poich potete aspettarvi che solo poche delle vostre idee siano trasmesse al vostro pubblico, vostro compito assicurarvi che quelle idee siano le pi importanti per il vostro messaggio; questo signica trovare un compromesso

meglio utilizzare immagini solo quando assolutamente necessario LINUX PRO 120

59

Tutorial Presentazioni
passare attraverso un caleidoscopio di colori, bordi, animazioni e graca per leggere appena poche parole che riassumono il discorso. Le diapositive di Damian possono essere descritte come sobrie. Erano monocromatiche e usavano solo un paio di caratteri. Diceva che cos sono pi facili da produrre e pi piacevoli da guardare (sebbene usasse bianco sporco e grigio scuro, perci il contrasto non era cos ottimale). Ha anche menzionato il fatto che i colori possono essere problematici quando si ha a che fare con proiettori poco afdabili, perci non basatevi mai su testi evidenziati in rosso, per esempio, perch spesso la prima lampadina ad andarsene di un proiettore.

Scegliete i caratteri accuratamente


Damian un vero appassionato di caratteri e raccomanda di usarli solo volutamente. Con questo vuol dire che dovete avere una buona ragione per usare un carattere invece di un altro. Non lasciate che i caratteri corsivi e decorativi abbiano la meglio su di voi. Un semplice carattere senza grazie per le intestazioni e con le grazie per il contenuto sufciente e usate una dimensione tra 36 e 48 punti. Mantenete lo stesso carattere per tutte le vostre diapositive e provate a mantenere la posizione dei vostri dati nella stessa area da una diapositiva allaltra. Damian usa anche due caratteri a larghezza ssa per il codice, uno per limmissione e il risultato della riga di comando e un altro, presumibilmente, per il Perl. Tutto qui. La prima impressione che avete quando vedete le sue diapositive che siano state fatte in fretta, ma perch la loro graca non si frappone al messaggio e il messaggio stato nemente cesellato e rinito in molte ore di business class sopra lOceano Pacico e Atlantico. Anche se alcune delle migliori presentazioni che abbiamo visto hanno usato solo immagini e nessun testo, come quelle del fondatore di Creative Commons, Larry Lessig, dovete avere un talento particolare per riuscirvi. Per la maggior parte di noi, le immagini dovrebbero essere usate per spezzare il ritmo di una presentazione e non per diventarne il ritmo. Ovviamente, sono utili per illustrare le cose e possono essere ugualmente utili a inserire un po di umorismo o di personalit se sono usate inaspettatamente, ma dovete seguire le stesse regole che usate per il testo. Le immagini non dovrebbero essere troppo complicate, per esempio, e se includete un graco o un diagramma, non copiatelo

Damian Conway si guadagna da vivere creando e insegnando a creare fantastiche presentazioni

semplicemente dal vostro foglio di calcolo. Assicuratevi che sia tagliato per illustrare solo lidea di cui state parlando, piuttosto che diventare un buco nero di dati.

Non afdatevi alle animazioni


Un altro aspetto della creazione di diapositive che pu causare la perdita della voglia di vivere al vostro pubblico luso di animazioni. Principalmente, queste sono usate come transizioni da una diapositiva alla successiva e sono normalmente scelte per il loro stile appariscente piuttosto che per la loro funzione. Damian pensa che per tenere il vostro pubblico il pi immerso possibile nel vostro discorso, le transizioni dovrebbero essere totalmente non appariscenti. Nella sua presentazione di una giornata, aveva pi di 650 diapositive e per le transizioni tra loro ha usato o una dissolvenza veloce o un semplice stacco. Questo includeva anche i punti elenco, che di solito apparivano tutti insieme con la diapositiva, piuttosto che attraverso qualche transizione a ogni passaggio. Ci sono state occasioni nelle quali ha avuto bisogno di usare unanimazione per aiutarsi a illustrare unidea e anche allora lo ha fatto con moderazione. Pi spesso, ha usato le diapositive per costruire una semplice animazione a passo uno con le parole o il codice che cambiavano da una diapositiva allaltra. Questo permette alla maggior parte della diapositiva di rimanere esattamente la stessa e i vostri occhi colgono solo la parte che cambiata. Siete ora arrivati al punto in cui avete sviluppato il lo narrativo per la vostra presentazione, fatto il brainstorming dei suoi contenuti per il promemoria e distillato le informazioni

Aiuta veramente che il vostro programma di presentazioni abbia una schermata per la presentazione e unaltra per le note, come fa Impress!

60

LINUX PRO 120

Presentazioni Tutorial
Passo passo Installare la Presenter Console di Impress

Scaricate la versione 1.1.0 dellestensione da http://extensions.services.openofce.org. Fate doppio clic su di essa e quando Impress si carica, fate click su OK e accettate i termini di licenza.

Presenter Console

Aprite la nestra Impostazioni presentazione dal menu Presentazione e assicuratevi che il Monitor di presentazione sia il monitor principale

Congurare Impress

Abbiamo dovuto riavviare Impress a questo punto, ma quando riappare premete F5 per avviare la Presenter Console sullaltro monitor.

Uscite e riavviate

in una serie di diapositive ben progettate. quasi ora per la presentazione. Anche se siete nervosi, c unemozione che dovete trasmettere al vostro pubblico sopra ogni altra, ed la passione. una parola che, scritta, appare bruttissima e molte persone la usano per descrivere quello che amano, ma una presentazione la vostra occasione di mostrare che siete appassionati di qualcosa senza dover ricorrere alla parola stessa. E se siete appassionati di qualcosa, molto pi probabile che il vostro pubblico si faccia un giro con voi, anche se non particolarmente interessato a quello di cui state parlando. difcile ignorare qualcuno che evidentemente appassionato della materia e tutti noi siamo pi propensi a provare le sue opinioni. Dovete rendere la vostra passione contagiosa e il pubblico rimarr attento e ascolter quello che avete da dire.

La pratica rende perfetti


Unaltra inevitabile verit che dovrete fare pratica. Senza prima far scorrere tutta la presentazione, non avrete idea di come questi temi suoneranno quando li direte ad alta voce o di quanto impiegher ogni sezione della presentazione. Damian consiglia di pianicare la lunghezza delle vostre prove almeno il 10% pi breve del tempo che avete a disposizione. Questo permette le interruzioni, le domande e i problemi tecnici e dovreste annotare il tempo che impiegate quando arrivate ai punti principali. Dovreste anche fare pratica di fronte a qualcuno. Non devono essere interessati al vostro argomento, ma qualche forma di pubblico vi aiuter a essere consapevoli del vostro stile e a restare in zona. Damian ammette che ha anche usato foto di un pubblico su di un portatile, poich anche questo vi aiuta a proiettarvi in avanti e mantenere lidea di un pubblico in mente. Tuttavia non c scappatoia dalla pratica. Dovete veramente farne abbastanza da diventare cos familiari con la vostra narrazione da conoscere ogni rigo e il modo di affrontare la sua spiegazione. solo dopo che siete arrivati a questa fase che potete dimenticarvi dei dettagli e rilassarvi nel ruolo del presentatore. E potete dimenticarvi dei dettagli solo quando li conoscete a memoria. Questo vi aiuter anche a evitare uno dei trabocchetti pi fastidiosi, quando il presentatore fa riferimento alle sue note per quello che deve dire dopo. Pi pratica fate, meno dovrete fare riferimento alle vostre note. Per rendere questo ancora pi facile, vale la pena

congurare Impress, o qualunque programma di presentazioni stiate utilizzando, per usare il proiettore e lo schermo del vostro portatile separatamente. Questo pu essere difcile da impostare prima dellinizio di una presentazione, ma normalmente a qualsiasi evento di Linux o di Software Libero ci si aspetta portatili Linux. Piuttosto che rispecchiare lo schermo principale, due uscite di visualizzazione vi permettono di avere una panoramica sul vostro schermo e le diapositive sullo schermo proiettato. La vostra panoramica pu includere note per ciascuna diapositiva, come anche anteprime della diapositiva precedente e successiva, utili per tenere traccia della vostra posizione nella presentazione. Impress supporta due schermi in modo predenito e potete scegliere quale volete usare dalla nestra Impostazione presentazione, che pu essere aperta dal menu Presentazione. Quando riproducete la sequenza di diapositive, sarete in grado di utilizzare Impress normalmente nch evitate di fare click sullaltro schermo o di usare la rotellina del mouse. Ognuna di queste azioni far passare alla diapositiva successiva. Purtroppo, Impress non segue le diapositive, ma c unestensione di Oracle che pu essere installata che vi dar una console del presentatore, che include le note e le anteprime della diapositiva precedente, corrente e successiva. Il box qui in alto vi spiega come installarla. Concedetevi molto tempo per impostare il vostro hardware e portate sempre una o due copie di sicurezza delle vostre diapositive. Vale anche la pena mettere una copia su un server da qualche parte. Damian consiglia anche di fare dimostrazioni dal vivo, dovunque potete. E considerando il numero di dimostrazioni fallite a cui abbiamo assistito nel corso degli anni, siamo completamente daccordo. Simulare pu essere tanto semplice quanto eseguire una copia locale di pagine Web sul vostro portatile, cos che il vostro browser sembri connesso a Internet. Oppure fare uno script per limmissione e la compilazione della vostra applicazione, Damian ha persino costruito un IDE Vim che accetta speciche istruzioni per realizzarlo. Assicuratevi di non dover fare afdamento sulle dotazioni di un centro conferenze con un centinaio di smanettoni che provano ad accedere alla rete wireless, o che ci siano abbastanza connettori a uno schermo poco afdabile. Provate a prevenire tutti i potenziali problemi cos da potervi rilassare e godervi lo spettacolo. LXP
LINUX PRO 120

61

Gentoo
Uno sguardo a una distro complessa ma potente

Gentoo: potenza e libert di scelta


Siete tra quelli che pensano che Gentoo sia uno strumento dedicato a pochi eletti? Nelle prossime righe potrete leggere gli enormi vantaggi offerti a fronte dellimpegno profuso
Astenersi deboli di cuore, le righe che seguiranno sono dense di materiale che scotta. Nonostante i novizi e i non addetti ai lavori si tengano alla larga, ci non signica che altrettanto devono fare i pi preparati. State pur certi che sarete immensamente ripagati avendo la pazienza (e il tempo) per imparare qualche trucchetto, eseguire le istruzioni segnate nelle diverse guide e attendere un po prima di avere un sistema completamente funzionante con una tra le migliori distribuzioni disponibili. In effetti, per essere un distribuzione denite come difcile da installare, il processo abbastanza lineare, ma richiede una guida totalmente manuale da parte dellutente. Mentre altre distribuzioni vi consentiranno di avere un sistema installato in 30-40 minuti, magari anche compresi gli aggiornamenti, una tipica installazione Gentoo pu richiedere da un paio dore a diversi giorni, a seconda delle scelte fatte e dellhardware disponibile. State ancora leggendo? Bene! Questo tutorial vi guider nei passi necessari a portare a termine linstallazione Gentoo, le tecnologie coinvolte e il modo in cui essere cos diversa dalle altre renda Gentoo incredibilmente pi veloce ed efcace. create le partizioni dovrete specicare quali lesystem utilizzare; ipotizzando che abbiate scelto /dev/sda2 per lo swap, /dev/sda1 per /boot con lesystem ext2 e /dev/ sda3 per / con ext3, dovrete eseguire i seguenti comandi mkswap /dev/sda2 swapon /dev/sda2 mkfs.ext2 /dev/sda1 mkfs.ext3 /dev/sda3 Se non vengono restituiti errori durante la formattazione dei lesystem tempo di montarli e procedere spediti lanciando i comandi mount /dev/sda3 /mnt/gentoo mkdir /mnt/gentoo/boot mount /dev/sda1 /mnt/gentoo/boot cd /mnt/gentoo Lo striminzito ambiente di installazione Live a questo punto deve appoggiarsi alle risorse offerte online, scaricando un le archivio chiamato (per ragioni storiche) stage3 direttamente dai mirror. Fortunatamente lambiente Live offre un browser testuale che potr esservi daiuto nel reperire il le desiderato. Se non siete gi nella directory /mnt/gentoo spostatevi usando il comando cd e poi lanciate links http://www.gentoo.org/main/en/mirrors.xml Questo comando vi mostrer una lista di mirror tra cui dovreste scegliere quello a voi pi vicino usando i tasti cursore per spostarvi. Entrate nella directory Release e scegliete larchitettura del vostro sistema (x86 se 32 bit o amd64 se 64 bit). Ora spostandovi nella directory current-stage3 cercate il le corrispondente alla famiglia del vostro sistema, ad esempio la directory x86 contiene i le per le famiglie i486 e i686. Evidenziate il le che ha un nome simile a stage3-i686-*.tar.bz2 dove -* la data dellultima release scritta usando la notazione YYYYMMDD. Prima di continuare, per, importante impostare correttamente la data; sebbene saltare questo passo non comprometta inevitabilmente linstallazione saggio occuparsene ora per evitare spiacevoli inconvenienti pi avanti. Usate il comando date per vericare lesattezza della data e, in caso non sia impostata correttamente, rilanciatelo

Partenza
Limmagine ISO di avvio di Gentoo connata in 125 MB e serve sostanzialmente ad avviare il sistema base Live e la riga di comando. Da qui, tramite la vostra connessione di rete, potrete scaricare tutti i pacchetti necessari e procedere. Come gi accennato, il processo intero sar abbastanza time-consuming dato che scaricare e compilare tutti i sorgenti di GNOME/Xfce/KDE afancati a tutto il software necessario richieder molto tempo. Una volta avviato lambiente Live, il primo passo consister nel congurare la rete. Usate il comando ip addr per vericare che linterfaccia di rete sia stata rilevata e congurata correttamente. Se cos non fosse non disperate, inclusi nella Live troverete tutti i driver necessari a congurare manualmente linterfaccia. Il comando net-setup offerto, lanciato come net-setup eth0, vi aiuter a congurare la connessione cablata. Potete anche congurare le schede wireless, dovendo per specicare anche ESSID, password e altro. Per maggiori dettagli consultate il sito http://bit.ly/7lNum7. Il prossimo passo consiste nel partizionamento del disco. Il manuale ufciale raccomanda di tenere la partizione /boot separata, ma nonostante ci possibile scegliere se usare ununica partizione gigante oppure crearne una diversa per ogni parte fondamentale del lesystem quali /home, /boot. In questo caso non ci sono requisiti particolari, valutate i pro e i contro di ogni situazione e proseguite oltre. Per partizionare il disco avrete a disposizione FDisk, CFDisk o Parted a seconda delle preferenze; in caso non abbiate mai usato nessuno di questi software usate CFDisk o FDisk che risultano decisamente pi semplici e intuitivi. Create quindi almeno tre partizioni dedicate rispettivamente a swap, /boot e /. Fate riferimento a http://bit.ly/s6yqEC per ulteriori linee guida in merito alluso di FDisk. Una volte

INTERMEDIO

Installare Gentoo senza avere una connessione a Internet decente come festeggiare Halloween senza travestimento e dolcetti

62

LINUX PRO 120

Gentoo Tutorial
specicando lorario corrente come nel seguente comando: date MMDDhhmmYY A questo punto potete procedere senza indugio allestrazione del tarball appena scaricato con il comando tar -xjpvf stage3-i686-*.tar.bz2 Il passo successivo consiste nello scaricare lultimo snapshot del gestore di pacchetti portage come fatto per il le stage3. Questa volta scaricate il le portage-latest.tar.bz2 dalla directory snapshots ed estraetelo usando il comando tar -xjvf portage-latest.tar.bz2 -C /mnt/gentoo/usr A questo punto si pu sostanzialmente cominciare a usare lambiente appena estratto tramite chroot. Prima di procedere in tal senso per necessario assicurarsi che la connessione a Internet funzioni anche nel nuovo ambiente copiando il le /etc/resolv.conf nella directory appropriata: cp -L /etc/resolv.conf /mnt/gentoo/etc/ Dovranno anche essere montate alcune directory di sistema accessorie, utili al funzionamento del meccanismo di chroot: cd / mount -t proc none /mnt/gentoo/proc mount -R /dev /mnt/gentoo/dev In sostanza il processo di chroot consiste nel passare da un ambiente Linux a quello montato in un percorso specicato. Lanciate il comando seguente e vi troverete catapultati nel vostro futuro sistema, al momento ancora semi-installato e racchiuso nel chroot: chroot /mnt/gentoo /bin/bash env-update source /etc/prole

Gentoo contro tutti


A differenza della maggior parte delle altre distribuzioni, Gentoo non offre pacchetti precompilati (ad esempio i pacchetti RPM o i Deb) da installare con il gestore. Quello che invece presente un ottimo gestore di software chiamato Portage che render semplicissima la gestione del software installato partendo dalla compilazione sul vostro sistema. Inoltre altre distribuzioni come Ubuntu o Fedora offrono delle release con cadenza regolare, mentre Gentoo viene denita coma una distribuzione rolling release (anche Arch Linux lo ), sostanzialmente appoggiandosi a tanti piccoli aggiornamenti continui del sistema invece che aspettare una eventuale major release in un preciso momento dellanno. Altro aspetto particolarmente interessante il grado di controllo che lutente ha su quel che viene installato (e con quali funzionalit) nel proprio sistema, infatti, mentre con Ubuntu il set di software installati predenito, con Gentoo questa scelta viene demandata allutente. Linsieme di queste caratteristiche rende Gentoo praticamente unica e ad oggi incontrastata nel campo delle distribuzioni source based, ovvero basate sui sorgenti.

Pronti, partenza, congurazione!


ora tempo di scegliere un prolo generico da usare per linstallazione desiderata. Le opzioni sono desktop, server, developer e altre in costante evoluzione. Eseguite il comando eselect prole list per visualizzare la lista delle scelte disponibili. Nellesempio verr usata lopzione desktop, quindi si dovr lanciare il comando eselect prole set 2 Per impostare il fuso orario corretto scegliete il le appropriato dalle directory contenute in /usr/share/ zoneinfo e copiatelo in /etc/localtime come segue: cp /usr/share/zoneinfo/Europe/Rome /etc/localtime Il prossimo passo consiste nellimpostare la variabile USE allinterno del le /etc/make.conf, a seconda di quali funzionalit vorrete attivare in fase di installazione e compilazione. Ad esempio per uninstallazione Xfce potreste usare USE=-gnome -kde -minimal -qt4 dbus jpeg lock

session startup-notication thunar udev X alsa Pi o meno allo stesso modo potete scegliere di usare GNOME o KDE. Se non avete mai usato un editor di testo dalla riga di comando vivamente consigliato usare Nano, tra quelli disponibili sicuramente il pi intuitivo e meno complesso d gestire (basta seguire le indicazioni del menu nella parte bassa dello schermo). Per aprire il le /etc/make.conf digitate nano -w /etc/make.conf Una volta nita la modica baster premere Ctrl+O per salvare le modiche, confermando o digitando il nome del le su cui salvare. Per uscire dalleditor di testo basta premere Ctrl+X.

Tip
Aggiungete lopzione FEATURES=parallelfetch al le /etc/make. conf per indicare a emerge di scaricare i sorgenti del pacchetto successivo mentre impegnato nella compilazione.

Compilazione del kernel


Uno degli spauracchi che tiene lontani la maggior parte degli utenti da Gentoo proprio la compilazione del kernel. Forse agli inizi della lunga strada percorsa da questa distribuzione tale compito poteva ancora risultare molto complicato ma, fortunatamente, con il tempo la comunit stessa ha creato modalit e strumenti atti a rendere il compito decisamente pi semplice. Prima di tutto bisogna scaricare i sorgenti del kernel da Internet. Scaricare gli 80 MB di sorgenti potrebbe richiedere qualche minuto, soprattutto se la vostra connessione non propriamente una scheggia. Eseguite il comando emerge gentoosources per cominciare il download che successivamente estrarr i le risultanti in /usr/src. A questo punto si pronti per iniziare la congurazione del kernel. Spostatevi nella directory /usr/src/linux ed eseguite il comando make menucong. Si avvier cos un sistema di menu testuali (basati su Ncurses) adatti alluso nel terminale che faciliteranno la scelta delle opzioni interessate. In alternativa si pu usare un metodo ancora pi minimale (make cong) basato esclusivamente su una serie di domande testuali, senza possibilit di tornare indietro per correggere eventuali errori, oppure la controparte graca (make xcong) che, come suggerisce il nome, ha per bisogno di un server graco funzionante. Procedendo quindi con il tool menucong dovrete scegliere le opzioni corrispondenti al processore della famiglia corretta, eventuali driver per lhardware presente sul vostro sistema e diverse altre opzioni tra cui i lesystem supportati. Ad esempio, di default il kernel non supporter ext2, ma se avete fatto una partizione di /boot separata molto probabile che labbiate formattata usando proprio questo lesystem. Troverete tuttavia che alcune scelte sono gi state fatte in maniera abbastanza generica in modo da soddisfare la maggior

Diverse opzioni saranno gi abilitate nel menu di selezione del kernel, eliminate tutto ci che non vi serve

LINUX PRO 120

63

Tutorial Gentoo
Tip
Se non vi piace Nano e siete abituati a usare Vim potete sempre lanciare USE=-X emerge vim.

Tip
Se incappate nellerrore che indica lassenza del servizio net.eth0 al momento di impartire il comando rc-update add net net.eth0 default, impartite prima di esso i due comandi seguenti: cd /etc/ init.d e ln -s net.lo net.eth0.

parte degli utenti. Daltronde pi siete interessati a funzioni recenti o esoteriche e meno possibilit avrete che queste siano gi abilitate. Man mano che procedete assicuratevi di selezionare come builtin (*) i driver necessari allavvio del computer e come modulo (M) quelli che invece preferite caricare solo quando necessario. Questa scelta alleggerir il kernel e avr leffetto immediato di abbreviare i tempi di compilazione e avvio oltre a diversi altri effetti beneci secondari. Quando avrete selezionato tutte le opzioni necessarie uscite da menucong salvando le modiche e digitate make && make modules_install Partir cos la compilazione vera e propria del kernel e, a seconda delle opzioni scelte e delle risorse del vostro sistema, potrebbe richiedere da qualche minuto a unora o pi. Se vi sentite particolarmente frettolosi aggiungete lopzione -j seguita dal doppio del numero dei core del vostro processore pi uno (esempio 4 core diventa -j9) cos da lanciare in parallelo quel determinato numero di compilazioni parallele sfruttando al massimo le risorse disponibili. Attenzione che talvolta questo processo pu portare a problemi di compilazione, che comunque risultano evidenti in quanto il processo eventualmente verr terminato restituendo un errore. In tal caso riducete il numero no a eliminare del tutto lopzione -j, il processo di compilazione ricomincer da dove si interrotto, sistemando anche il punto in cui si era bloccato. Esiste un altro metodo di compilazione che dovrebbe facilitare la vita ai novizi chiamato genkernel (vedere il box apposito) sostanzialmente occupandosi auto-magicamente della congurazione e compilazione del kernel; il problema che questo sistema non afdabile al 100%, quindi se vi sentite avventurosi provate pure ma siate pronti a tornare ai metodi classici in caso le cose non andassero come previsto. Finita la compilazione potete proseguire copiando il risultato nella directory di /boot cp arch/x86_64/boot/bzImage /boot/kernel-3.4.4-gentoo Potete specicare il nome che volete al le del kernel nella partizione destinazione. La maggior parte delle persone lo chiama direttamente vmlinuz,linux, gentoo-sourceskernel o altre soluzioni simili; molti accompagnano il nome alla versione attuale del kernel per ricordarsi a colpo docchio quanto sia aggiornato il kernel in uso. Tenete a mente il nome scelto dato che vi servir in fase di congurazione del menu di avvio.

Gentoo offre diverse versioni per ogni pacchetto, da quelle pi datate alle ultimissime versione ancora non testate

Ancora un po di congurazione
Per concludere la prima fase necessario imbarcarsi in un po di modiche addizionali semplici ma cruciali. Per cominciare si dovr creare il le /etc/fstab, che contiene informazioni su come montare ogni partizione con le rispettive impostazioni, se gli utenti regolari possono accedervi e altro. Si comincia avviando leditor di testo con il comando nano -w /etc/fstab. A seconda della vostra congurazione il contenuto del le dovrebbe assomigliare a quanto segue: /dev/sda1 /boot ext2 defaults,noatime 12 /dev/sda2 none swap sw 00 /dev/sda3 / ext3 noatime 01 proc /proc proc defaults 00 Per una spiegazione pi esaustiva riguarda luso di fstab meglio riferirsi direttamente alla pagina su Wikipedia (http://bit.ly/7tMduy). I prossimi due le da modicare sono /etc/conf.d/hostname e /etc/conf.d/net per specicare rispettivamente lhostname del sistema e il nome del dominio DNS in fase di installazione. Avrete parecchio a che fare con il le net dato che contiene molti aspetti della congurazione di rete, oltre il gi citato nome del dominio DNS, quali luso del servizio DHCP o lindirizzo IP statico associato alle varie interfacce di rete. Se usate DHCP dovrete aggiungere o modicare una riga contenente cong_eth0=DHCP. Ovviamente unoperazione simile va effettuata per ogni scheda di rete presente sul vostro sistema. Se le indicazioni allinterno del le non sono sufcienti potete riferirvi al le /usr/share/doc/openrc-*/ net.example.bz2 per avere pi dettagli al riguardo. Ultimo passo prima di procedere oltre di assicurarsi che il servizio di rete sia lanciato allavvio: rc-update add net.eth0 default ora il momento di installare due strumenti necessari a offrire due funzionalit base del sistema, rispettivamente un sistema di log e uno di cron: syslog-ng e vixie-cron. Per installare entrambi baster digitare emerge syslog-ng vixie-cron e, come gi fatto in precedenza per i servizi di rete rc-update add syslog-ng default rc-update add crond default Adesso il momento di occuparsi del bootloader. Gentoo una delle poche distribuzioni a offrire ancora la scelta tra GRUB e Lilo. Daltra parte sarebbe un peccato perdersi tutte le opzioni che le ultime versioni di GRUB offrono, quindi useremo questo. Lanciando il comando emerge grub installerete il software necessario. Questo le dovrebbe contenere una sezione simile alle righe seguenti:

Kernel: modulo o built-in?


La compilazione del kernel consente di abilitare le feature scelte in due modalit diverse: potete includerle direttamente nel kernel oppure compilarle come modulo da caricare al momento del bisogno. Usando menucong per includere la feature come built-in basta premere Y. Questa scelta verr segnalata nel menu come un asterisco (*) nella casella relativa allopzione scelta. Altrimenti premendo M verr selezionata come modulo. Pi feature vengono incluse nel kernel come built-in, pi questo sar pesante, pi memoria occuper e pi tempo ci metter a essere caricato. Questi non sono gli unici criteri con cui scegliere tra built-in e modulo dato che, come gi segnalato, solo le feature non modularizzate saranno automaticamente disponibili allavvio, il resto andr caricato esplicitamente quando necessario. Ad esempio, se avete una periferica che usate raramente, ad esempio il Bluetooth, identicate il driver e selezionatelo come modulo cos da risparmiare tempo e preziosa memoria e successivamente caricate il necessario a runtime solo quando veramente vi serve.

64

LINUX PRO 120

Gentoo Tutorial
Compilazione a runtime
La prima compilazione del kernel fortunatamente non vincolante nel senso che potrete sempre aggiungere (o rimuovere) nuove funzionalit successivamente. Se, ad esempio, acquistate una nuova periferica, oppure scoprite di avere la necessit di supportare un lesystem aggiuntivo, basta compilare il modulo corrispondente per avere la nuova funzionalit pronta in pochi secondi. Spostatevi nella directory con i sorgenti /usr/src/linux e come utente root digitate make menucong Se decidete di aggiungere nuove funzionalit integrandole come built-in dovrete ricordarvi di copiare il nuovo kernel nella partizione di boot e di riavviare il computer prima di poterle usare. Se invece vi basta avere la nuova funzionalit disponibile come modulo dovrete solo lanciare make modules && make modules_install depmod -a A questo punto non resta che caricare il nuovo modulo usano il comando modprobe e voit la, la feature servita.

semplice compilare il kernel, quel che difcile non invecchiare troppo mentre si cerca di capire tutte le interessanti opzioni disponibili

default 0 timeout 7 title Gentoo Linux root(hd0,0) kernel /boot/kernel-3.4.4-gentoo root=/dev/sda1 Le varie sezioni congurate cambieranno a seconda della vostra congurazione, ad esempio se avete creato o meno una partizione di /boot separata o no. Inoltre, se il vostro sistema offre un sistema di dualboot con altri sistemi dovrete aggiungere una voce per ognuno di essi. In particolare nelle linee citate sopra potete notare come venga specicata il sistema di default, il punto in cui trovare il kernel e un timeout di selezione del menu di sette secondi. Per copiare tutte le partizioni rilevate dal sistema si dovr fare una selezione del le /proc/mounts, creato dal sistema Live, e copiarlo in /etc/mtab: grep -v rootfs /proc/mounts > /etc/mtab per poi procedere a installare GRUB nellMBR del dispositivo scelto (/dev/sda nellesempio): grub-install /dev/sda In questo modo anche il gestore di avvio sar in posizione consentendovi cos di avviare il nuovo sistema. A questo punto dovete impostare una password allutente root per poi poter uscire dal chroot, smontare le partizioni usate e procedere al riavvio. passwd # vi verra chiesto di inserire la nuova password exit sync umount /mnt/gentoo/boot /mnt/gentoo/proc /mnt/gentoo/dev /mnt/gentoo reboot In caso il boot fallisca dovrete avviare nuovamente il sistema Live, rientrare nel chroot dopo aver montato le partizioni opportune e sistemare il problema. Ripetete questo

processo iterativo n quando non riuscite ad accedere al sistema appena installato. Una volta avviato il nuovo sistema potrete loggarvi con lutente root e da qui creare il vostro utente personale, assegnandogli i gruppi scelti: useradd -m -g users -G wheel,audio,net,portage,games, video -s /bin/bash myuser passwd myuser Da qui potrete scegliere se continuare a usare lutente root per le ultime operazioni di installazione oppure se preferite passare allutente non privilegiato lanciando emerge tramite sudo o su -c.

Tip
Dovreste anche installare logrotate dato che syslog-ng non vi permette di effettuare la rotazione dei log.

X e Xfce
I passi mancanti per arrivare ad avere un ambiente graco funzionante sono principalmente tre: denire i driver graci, installare Xorg e poi un ambiente desktop, ad esempio Xfce, GNOME o KDE. Prima di procedere allinstallazione vera e propria bene specicare alcuni ag da usare durante la compilazione: echo x11-base/xorg-server udev >> /etc/portage/package.use per poi proseguire installando i pacchetti necessari: emerge xorg-drivers xorg-server Adesso manca solo la scelta dellambiente desktop da usare. Nellesempio n dallinizio si scelto di usare Xfce, anche perch questo sistema risulta ben bilanciato tra le funzionalit offerte e il tempo necessario ad ultimare la compilazione. emerge xfce4-meta Una volta nito il processo opportuno installare anche un gestore di login graco; una buona scelta in tal senso slim. emerge slim rc-update add slim default echo XSESSION=\Xfce4\ > /etc/env.d/90xsession /etc/init.d/slim start Effettuato il login dovreste trovarvi nella vostra sessione Xfce e da qui si tratta solo di continuare a installare il software che vi serve e congurarlo in maniera opportuna. I software che si cerca di acquisire in questo stadio sono un browser, leditor di testo preferito, un client e-mail e altri strumenti simili. Una volta in possesso degli strumenti minimi si pu procedere a installare giochi, pacchetto ofce, software multimediale e qualsiasi altro software vi possa venire in mente. Come avrete avuto modo di notare, se avete bisogno di un sistema pronto alluso in unora Gentoo non fa decisamente al caso vostro. Se per avete la pazienza di seguire i passi necessari, ci che otterrete in cambio una conoscenza approfondita di come e cosa fa funzionare la vostra Linux box, oltre ad avere un sistema ultraperformante, con il software pi aggiornato e la scelta pi ampia che si possa trovare in tutte le distribuzioni Linux. LXP
LINUX PRO 120

Genkernel
Se non siete dei puristi della compilazione del kernel e preferite che uno strumento faccia il lavoro sporco al posto vostro, Genkernel quel che fa per voi. Le funzionalit offerte da questo strumento sono molte e molto potenti. Per indagare a fondo potete trovare la documentazione ufciale allindirizzo www.gentoo.org/doc/en/genkernel.xml ma nella maggior parte dei casi vi baster lanciare il comando genkernel --splash --mountboot --menucong --install --save-cong --clean Ricontrollate nel menu di congurazione che ci sia tutto quello che vi serve e il resto verr gestito automaticamente da Genkernel.

65

Permessi dei le
Decidi chi pu accedere ai tuoi le usando le ACL

Access Control List


Il possesso nove decimi della legge, ma cosa fare se si vuole rendere un le scrivibile da pi di un utente del sistema? Linux Pro vi spiega le meraviglie delle ACL
Gli utenti Linux passano attraverso i tre stati seguenti quando si tratta di propriet dei le e permessi. Il primo perplessit: perch cos e perch non posso scrivere un le qui?. Il secondo la comprensione di quanto utile sia lintero sistema con la sua capacit di proteggere i le da modiche o cancellazioni involontarie o deliberate. Il terzo stato, che non colpisce tutti, la frustrazione dei limiti di tale sistema. La principale limitazione che ogni oggetto le o directory pu avere un solo proprietario, che va bene ntanto che c un solo utente nel sistema (notate che non stiamo contanto root tra gli utenti il superutente in genere non usa il sistema, ma lo amministra solamente). Non appena vi ritrovate con pi di un utente che si aggira nel vostro Linux, e volete che ognuno possa modicare i le dellaltro, le cose diventano un po complicate. Sono diverse le situazioni in cui ci pu capitare: potreste volere una directory comune per tutta la famiglia nella quale memorizzare e organizzare foto, oppure potreste aver bisogno di condividere le tra vari utenti o dipartimenti in un ufcio. Potreste inserire tutti gli utenti in un unico gruppo e usare una directory di propriet di questo gruppo, e anche scrivibile da esso, ma ogni volta che qualcuno crea un nuovo le o una nuova directory, questi appartengono e sono scrivibili, di default, solo da questo utente.

Semplici ACL
Iniziamo con un esempio: touch unle ls -l unle Vedrete -rw-rw-r-- 1 ninjak ninjak 0 lug 27 14:00 unle cio un le standard con i diritti usuali per un utente singolo. Ora provate a vedere cosa vi dice getfacl: getfacl unle # le: unle # owner: ninjak # group: ninjak user::rwgroup::rwother::r-Questo comando dice la stessa cosa di ls, anche se in modo pi esteso. Ora provate a impostare qualche permesso extra, grazie a setfacl. setfacl --modify group:project:rw unle getfacl unle # le: unle # owner: ninjak # group: ninjak user::rwgroup::rwgroup:project:rwmask::rwother::r-Lopzione --modify (o -m) dice a setfacl di modicare lAccess Control List per il le, e group:project:rw descrive il controllo da aggiungere. Ci sono tre elementi, separati da due punti: il primo indica il tipo di permesso da aggiungere User, Group o Other, proprio come con i permessi normali. Il secondo elemento il nome dellutente o del gruppo se lasciato vuoto viene usato di default lutente o il gruppo a cui appartiene il le, ed sempre vuoto per Other. La terza parte il permesso da applicare. Quindi il nostro esempio aggiunge i permessi di lettura e scrittura per tutti i membri del gruppo project. Non dovete essere

Access Control List


Quello che vogliamo un controllo pi ne su chi pu fare cosa e dove, cos da migliorare il normale sistema tutto-o-nulla. La risposta sta nelle Access Control List (ACL), unestensione per la maggior parte dei lesystem Linux che vi consente di ottenere il livello di controllo desiderato. Ci sono alcuni prerequisiti per poter usare le ACL. Il kernel deve inglobare il supporto alle ACL; ogni kernel fornito dalle distribuzioni dovrebbe avere questo supporto, ma se volete compilarlo per i fatti vostri dovete tenere a mente questo fatto, assicurandovi in questo caso che la voce CONFIG_EXT4_FS_POSIX_ ACL sia impostata oppure lopzione corrispondente se state usando un lesystem differente. Il secondo requisito che le ACL siano abilitate quando il lesystem viene montato, cosa che di solito, con i lesystem ext, non avviene di default. Alcuni lesystem, come XFS e Btrfs, hanno le ACL abilitate di default, quindi non ci sono modiche da fare. Per abilitare le ACL durante il boot modicate il le /etc/fstab aggiungendo acl allelenco delle opzioni di mount, separate da virgole, in questo modo: /dev/sda5 /home ext4 noatime,acl 0 0 Il tutto diventer attivo al prossimo riavvio. Per abilitare subito le ACL, rimontate il lesystem con lopzione aggiuntiva, per esempio sudo mount /home -o remount,acl Inne, vi servono gli strumenti in userspace per la ACL, che sono installati assieme al pacchetto ACL. Sono due gli strumenti principali, setfacl e getfacl. Il primo imposta i permessi ACL per un le o una directory, mentre il secondo mostra questi permessi.

INTERMEDIO

Usate getfacl per vedere i risultati dei vostri cambiamenti, con un output molto pi leggibile di quello di ls

66

LINUX PRO 120

Permessi dei le Tutorial


root, o usare sudo, per fare questo. LACL per un le impostata dal proprietario di quel le, quindi ntantoch lavorate in unarea nella quale avete i diritti di scrittura potete creare cartelle e le e usare setfacl su di essi. Finora non avete visto nulla che si possa fare anche con il normale sistema di permessi, ma potete impostare le ACL anche per le directory. Cosa pi importante, potete impostare i permessi di default di una cartella. Assegnare project come gruppo dappartenenza di un folder e rendendo il folder stesso scrivibile per il gruppo consentir a tutti gli appartenenti al gruppo project di creare le allinterno della cartella, ma ogni le rimarr dappartenenza di chi lo ha creato (stessa cosa per i permessi di scrittura). Visto che non si vuole impostare i diritti le per le, si pu procedere cos: mkdir unadirectory setfacl -m group:project:rwx unadirectory setfacl -m default:group:project:rwx unadirectory Il primo comando setfacl come quello gi visto, e da al gruppo project i permessi rwx per la nuova directory. Il secondo contiene un elemento extra nelle speciche ACL: Default. Questo elemento imposta i permessi da applicare ai nuovi le e cartelle create. Questo elemento funziona usando sudo per cambiare utente temporaneamente. Ipotizzando che rob e pier siano utenti del gruppo project, provate: sudo -u rob touch unadirectory/le ls -l unadirectory/le getfacl unadirectory/le sudo -u pier nano unadirectory/le Quando rob crea un le, esso gli appartiene, come mostra il comando ls. Getfacl mostra che i membri del gruppo project possono scrivere quel le, infatti provando a usare Nano sul le come utente pier vedrete che questo utente sar in grado di modicarlo premete Ctrl+X in Nano per salvare i cambiamenti fatti. Anche se avete modicato il le usando un altro utente, questo le ha mantenuto il proprietario originale questo le appartiene ancora a rob, come ls -l unadirectory mostra chiaramente.
Eiciel pu essere usato come editor per le ACL da chi non usa GNOME/Nautilus

Usando gli esempi


Notate che setfacl fallir se specicate un utente o un gruppo non valido (non esistente), quindi se avete intenzione di fare esperimenti vi potrebbe tornare utile creare un gruppo desempio e qualche utente. Usate lutility di gestione degli utenti della vostra distro oppure procedete da terminale con sudo groupadd project sudo useradd rob sudo useradd pier sudo gpasswd -a rob project sudo gpasswd -a pier project Potete rimuoverli quando avete nito con sudo userdel rob sudo userdel pier sudo groupdel project

del gruppo project, come prima, ma fa la stessa cosa anche per lutente alice anche se essa non fa parte del gruppo project. Se avete un set standard di ACL che volete usare in pi posti, ad esempio ogni volta che create un progetto, potete memorizzarle in un le, per esempio progetti.acl, cos: group:project:rwx default:group:project:rwx user:alice:rwx Per impostare le ACL sui nuovi progetti non dovrete fare altro che digitare setfacl --modify-le progetti.acl altranuovadirectory Alle opzioni --modify e --modify-le (o -M) corrispondono --remove e --remove-le (o -x e -X) per rimuovere le ACL da un le; ci sono anche --set e --set-le (non c la versione abbreviata) per impostare le ACL di un le, rimuovendo quelle esistenti. Potete anche usare loutput di getfacl come input per setfacl, il che vuol dire copiare le ACL da un le a un altro: getfacl vecchiole | setfacl --set-le=- nuovole Il simbolo - dopo set-le dice al comando di usare il le come standard input, cio loutput di getfacl. Sulle ACL c molto di pi da dire, ma per ora avete abbastanza informazioni da iniziare. Se avete bisogno di pi informazioni le pagine man di getfacl e setfacl vi offrono spiegazioni su tutte le altre opzioni, oltre ad alcuni esempi. LXP

Il supporto alle ACL di KDE c di default, basta guardare tra i permessi avanzati per creare, modicare o rimuovere le ACL

Altre opzioni

Finora avete usate lopzione -m per aggiungere una ACL a un le o a una directory. anche possibile specicare pi di una ACL separandole con una virgola. Come con lopzione --modify potete anche abbreviare le speciche Default, User, Group e Other usando solo le loro iniziali: setfacl -m g:project:rwx,u:alice:rwx unadirectory Questo comando assegna pieno accesso a tutti i membri
LINUX PRO 120

67

Arduino
La piattaforma hardware aperta per il physical computing

Creiamo un chatbot
Perch perdere tempo con le persone quando possibile chiacchierare con il vostro sempre fedele Arduino? Linux Pro intavola la conversazione

Cosa vi serve
Il software Arduino versione 1.0 o superiore. Un Arduino Duemilanove o Uno. Per unautentica connessione Ethernet uno shield Ethernet con chip Wiznet 5100 oppure ENC28J60.

Se qualcuno non connesso a Internet esiste per davvero? Quasi tutti i progetti con Arduino possono essere migliorati aggiungendo una connessione persistente alla Rete, in modo da poter interagire con la scheda da qualsiasi parte del mondo. In questo tutorial esamineremo due modi per collegare il vostro Arduino e scambiare dati con esso attraverso uno smartphone, un PC portatile o qualsiasi altro dispositivo con accesso al Web.

global ser print Ricevuto messaggio txt= message.getBody() if (txt != None): # print txt ser.write(message.getBody()) print Connessione a Jabber.org... jid = xmpp.protocol.JID(jidname) client = xmpp.Client(jid.getDomain(), debug=[]) client.connect() client.auth(jid.getNode(), pwd) client.sendInitPresence() presence = xmpp.Presence(status = In esecuzione!, show =chat, priority = 1) client.send(presence) client.send(xmpp.protocol.Message(controller, Sono in attesa dei tuoi ordini)) client.RegisterHandler(message, on_message) while True: client.Process() if ser.inWaiting(): print Ricevuto dalla seriale # Legge dalla porta seriale txt = ser.readline() # print txt # Invia il testo ricevuto client.send(xmpp.protocol.Message(controller, txt)) Il software piuttosto semplice. Imposta la connessione seriale con Arduino e poi, usando il nome dellutente che abbiamo inserito nella variabile jidname, con il server Jabber. Una volta connesso esegue lautenticazione, inviando la password pwd, ed in grado di spedire e ricevere messaggi. Prosegue poi restandosene in un ciclo, in attesa che succeda qualcosa. Se riceve un messaggio da Arduino sulla porta seriale lo manda a Jabber. Allo stesso modo,

Prima opzione: un collegamento nto


La soluzione pi semplice per rendere accessibile dalla Rete il vostro Arduino consiste in un nto collegamento. Quasi sempre la scheda si trova collegata a unestremit di un cavo USB a succhiare energia da qualche computer, che molto probabilmente sar dotato di un collegamento alla Rete. piuttosto semplice usare linterfaccia seriale per comunicare con lArduino da unapplicazione che gira sul PC e poi dallapplicazione stessa spedire le informazioni ricevute ovunque possano servire. Ci sono numerosissimi progetti che usano questa tecnica per permettere a un Arduino di aggiornare una pagina Web, cosa che certamente pu risultare utile, ma non sembra molto interessante. Che ne dite invece di trasformare il vostro Arduino in un chatbot in grado di trasmettere informazioni per mezzo di un protocollo di messaggistica istantanea come Jabber (XMPP), usato tra gli altri da Google Talk? Tutto quello di cui abbiamo bisogno in questo caso creare del software in grado di girare sul computer collegato alla scheda che si comporti come una sorta di relay, cio di ripetitore di messaggi. Esistono molti modi per ottenere questo scopo, ma forse la cosa pi semplice consiste nellusare Python (se non lo avete mai usato prima non preoccupatevi, con un minimo di modiche sarete in grado di far funzionare il programma che abbiamo inserito nel DVD). Dovrete inserire nel programma i dettagli del vostro account Jabber (potete crearne uno in pochi secondi, molto pi semplice che creare un nuovo account su Gmail) e avrete bisogno di conoscere i dettagli (cio lindirizzo) dellaccount XMPP con cui vorrete connettervi allaccount associato ad Arduino. Occorrer poi che questi due account permettano le connessioni tra di loro: il modo pi semplice per ottenere questo risultato consiste nellusare un qualsiasi programma di messaggistica istantanea, ad esempio Pidgin, per aggiungere un account ai contatti dellaltro e viceversa. Fatto questo sarete in grado di collegarvi al vostro Arduino da posti come Google Talk o Facebook (usa anchesso XMPP). import serial import xmpp # Variabili da modicare ser = serial.Serial(/dev/ttyUSB0, 9600) jidname = lxp_chatbot@jabber.org controller = lxp_user@jabber.org pwd =

dentro il Codice d esempio

PRO

DIFFICILE

def on_message(connection, message):

Dato che il codice del primo esempio sfrutta la seriale potete usare il Serial Monitor dellIDE per provare lo sketch prima di andare online

68

LINUX PRO 120

Arduino Tutorial
se riceve un messaggio in chat proveniente da qualcuno (non c nessuna ragione per limitarsi a un singolo account) lo inoltra ad Arduino attraverso il collegamento seriale. La metodologia usata per leggermente differente. Il modulo XMPP di Python usa delle callback per manipolare i messaggi (una callback una funzione che viene chiamata automaticamente quando si verica un particolare evento), cosa che ci rende la vita un po pi semplice. Bisogna per ricordarsi di chiamare il metodo Process() delloggetto client, altrimenti i messaggi si accumulano senza essere elaborati. Il posto migliore per farlo allinterno del ciclo in cui controlliamo anche la connessione seriale. Se viene ricevuto un messaggio, quando client.Process() viene eseguito, il nuovo messaggio viene scoperto e inviato alla callback che abbiamo registrato per questo evento (on_message). Questultima estrae il testo dal pacchetto del messaggio e lo manda ad Arduino attraverso la porta seriale. Sarebbe possibile sviluppare ulteriormente questo programma, aggiungendo dei ltri, in modo da accettare solo i comandi compresi dallArduino, oppure sostituire i comandi con dei semplici codici di un byte che sarebbero pi semplici da trattare su Arduino. Lasciamo a voi questo compito, se lo desiderate: tenete conto per che anche utile mantenere il pi semplice possibile il programma che fa da tramite tra la Rete e lArduino. Lato Arduino abbiamo bisogno di uno sketch che apra la connessione seriale e mandi un segnale per dire al programma Python che tutto funziona. Supponiamo, al solo scopo del nostro test, che ci sia un sensore di temperatura collegato allingresso analogico 1 e che vogliamo leggere il valore della temperatura dalla Rete. Per prima cosa deniamo un po di variabili e conguriamo la porta seriale: oat temperatura; char buffer[32]; void setup() { Serial.begin(9600); Serial.println(Pronto!); } Niente di speciale. Nel ciclo principale metteremo in piedi un meccanismo che spedisca dei dati a intervalli regolari, ma che resti anche in ascolto sulla porta seriale per ricevere i comandi che eventualmente arrivano. void loop() { unsigned long inizio = millis(); while ((millis() - inizio) < 10000) { if (Serial.available()) { leggiBuffer(); analizzaBuffer(); } } inviaTemperatura(); delay(200); } Finch non stato eseguito per 10 secondi dallinizio della funzione loop, il ciclo while tiene sotto controllo la porta seriale con la chiamata al metodo Serial.available(), che assume il valore true quando ci sono uno o pi byte in attesa nel buffer (cio se qualcuno sta spedendo dei dati). In questo caso chiama alcune misteriose funzioni per leggere questi dati e analizzarli alla ricerca di comandi. Se invece viene raggiunta la ne del ciclo while (cio sono passati 10 secondi), viene chiamata unaltra misteriosa funzione prima che la funzione loop termini e ricominci immediatamente da capo. Non ci resta che riempire le funzioni misteriose. La pi complicata quella che legge il buffer, ma anche questa non troppo

Concetti base sulle reti


Le reti sono complicate. Linvio di pacchetti di dati lungo un lo (la modalit di funzionamento tradizionale di una rete) si basa su parecchi strati di hardware e software, ognuno dei quali dedicato a una diversa funzione. I due livelli inferiori, PHY (lo strato sico, cio i li e i componenti elettronici che trasmettono segnali su di essi) e il MAC (Media Access Control, qualcosa di simile a un guardiano dello strato sico, che determina cosa entra e cosa esce), sono manipolati nel nostro caso dallhardware. I chip che abbiamo citato sono inoltre dotati di rmware e librerie apposite che si prendono cura degli strati immediatamente successivi (il protocollo di rete e il tipo di pacchetti di dati ammessi su di esso), quindi non ci resta molto da implementare per far funzionare la nostra applicazione. Ci sono alcuni termini che per vanno spiegati: Indirizzo MAC - un numero unico che identica lhardware sico, nel nostro caso linterfaccia Ethernet. Di solito sullo shield scritto il suo indirizzo, solo i pi vecchi non ne sono dotati e occorre assegnargliene uno in modo che non entri in conitto con qualche altra interfaccia presente sulla rete locale. Indirizzo IP - composto da quattro numeri decimali separati da un punto e identica un nodo della rete. Esempio: 192.168.1.28. DNS Domain name server, server per i nomi a dominio. una specie di grossa rubrica: associa i nomi usati per i server (ad esempio linuxpro.it) al loro indirizzo IP su Internet. Le librerie distribuite con lIDE o con gli shield Ethernet mettono a disposizione numerose funzionalit di rete, ma occorre tenere presente che Arduino un microcontrollore con una limitata quantit di RAM.

difcile. Leggiamo solo una riga nel nostro buffer interno, quindi dobbiamo prendere dalla seriale un carattere per volta, vedere se si tratta del carattere di ne riga e, se non lo , copiarlo nellarray buffer che abbiamo creato nella prima parte del codice (32 byte dovrebbero essere sufcienti!). Se invece leggiamo il carattere di ne riga oppure abbiamo riempito il buffer interrompiamo il ciclo di lettura dalla seriale e terminiamo la stringa. void leggiBuffer() { int posizione; int byte_letto; const int EOL = 13; // La riga termina con CR. posizione = 0; do { byte_letto = Serial.read(); if (byte_letto == EOL) { break; } buffer[posizione] = byte_letto; posizione++; if (posizione > (sizeof(buffer)/sizeof(char))) { break; } delay(10); } while (Serial.available() > 0); buffer[posizione] = 0; } Sembra complicata, ma non lo . La variabile posizione contiene il numero di caratteri dei dati ricevuti nora. Viene incrementata ogni volta che viene ricevuto un byte valido. Quindi il ciclo do...while semplicemente legge i byte nch non trova il carattere di ne riga (codice ASCII 13). Lunica altra cosa da fare terminare la lettura se il contatore della posizione allinterno del buffer supera le dimensioni del buffer stesso. Su Arduino la memoria non ha una protezione, quindi se continuate a scrivere oltre lo spazio che avete riservato con la dichiarazione di una variabile potete facilmente sovrascrivere qualcosa di importante. Una volta letto il comando dobbiamo elaborarlo. Dato che abbiamo aggiunto

Tip
Jabber non afdabile al 100%, a volte i messaggi si perdono. Assicuratevi quindi che la vostra applicazione non dipenda dalla corretta ricezione di tutti i messaggi spediti.

LINUX PRO 120

69

Tutorial Arduino
un byte 0 alla ne del buffer, il suo contenuto si presenta come una normale stringa C. In questo modo possiamo usare la funzione standard strcmp per vericare se i dati ricevuti sono un comando valido: void analizzaBuffer() { Serial.print(hai detto: ); Serial.println(buffer); if (strcmp(buffer, temp) == 0) inviaTemperatura(); if (strcmp(buffer, milli) == 0) inviaMilli(); } Abbiamo implementato due comandi, uno per leggere la temperatura, laltro per leggere il numero di millisecondi passati dallaccensione di Arduino. Potete naturalmente aggiungere comandi pi complicati se lo desiderate; potreste persino analizzare i parametri dei comandi o usare dei comandi per controllare le uscite anzich leggere dei sensori. Date pure libero sfogo alla vostra immaginazione. La parte nale del puzzle costituita dalla funzione che legge il sensore analogico e dalle funzioni che spediscono il valore della temperatura e dei millisecondi sulla seriale: void leggiTemperatura() { temperatura = analogRead(1) * 0.004882812 * 100; temperatura = temperatura -273; } void inviaTemperatura() { leggiTemperatura(); Serial.print(temperatura =); Serial.println(temperatura); } void inviaMilli() { unsigned long milli = millis(); Serial.print(milli = ); Serial.println(milli); } Niente di speciale nemmeno qui. Ricordatevi di usare print e println per spedire i dati sulla seriale, dato che usiamo il carattere di ne riga per indicare la ne dei messaggi. Una volta caricato il codice su Arduino potete usare il monitor seriale presente nellIDE o un altro programma di emulazione di terminale seriale per vericare che tutto funzioni correttamente prima di far partire il programma Python e ritrasmettere i dati sul Web.

Seconda opzione: fare le cose davvero


XMPP un eccellente protocollo per i messaggi. Oltre che per le chat in sistemi come Google Talk, viene anche usato per spedire pacchetti tra server sparsi su Internet. Purtroppo per noi, per, un po troppo complicato per creare da zero uno sketch per Arduino in grado di comunicare attraverso lo shield Ethernet usando XMPP. Molto probabilmente possibile implementare un client XMPP anche in uno spazio di memoria limitato come quello disponibile sulle schede Arduino, ma alcuni aspetti del protocollo (come il fatto di usare XML per ogni cosa) implicano che lhardware Arduino sarebbe impegnato per la maggior parte del tempo a far girare il sistema di messaggistica anzich a eseguire qualcosa di utile. Lo sforzo richiesto da XMPP semplicemente troppo grande. Non riponete le vostre speranze, per: ci sono altre possibilit! Collegare il vostro Arduino a una rete non difcile come potreste pensare: ci sono un certo numero di chip pensati apposta per rendere facile connettere un microcontrollore a una rete Ethernet, in grado di risolvere tutti i problemi legati allhardware. La comunit Arduino tende a usare il chip Wiznet 5100, pi che altro perch quello che viene usato nelle varianti con Ethernet degli Arduino e nello shield ufciale. anche ben supportato dal rmware, visto che lIDE contiene una libreria che permette di usarlo. Un chip alternativo lENC28J60 di Microchip. Sono disponibili parecchie schede breakout con questo chip prodotte da terze parti e sono di solito molto meno care (circa 7 euro contro 25) di quelle con il chip Wiznet. Potreste addirittura acquistare il chip e tutti i componenti necessari e costruirvi da soli il circuito (nellimmagine qui sopra riportiamo lo schema), ma molto pi semplice comprarne una gi montata.

Facendo girare il nostro relay in Python potete spedire messaggi al vostro Arduino da una qualsiasi applicazione per chat, come Pidgin o Google Talk

IRC: messaggistica per veri robot


IRC in circolazione pi meno dalla nascita di Internet. una maniera semplice ed efcace per insultare online la gente, oppure per chiacchierare, a seconda delle vostre preferenze. anche estremamente semplice da implementare, dato che si sviluppato ai tempi in cui per la maggior parte delle persone una connessione seriale e un cursore verde lampeggiante era la norma. Non c nemmeno bisogno di ragionarci sopra troppo, cos semplice e se ne trovano moltissime implementazioni gi pronte. Una delle migliori e pi semplici quella di Keiran Afx Smith, che noi abbiamo usato come base per il nostro sketch. La prima cosa da fare includere gli header delle librerie che ci servono per il chip Ethernet. Se usate un ENC28J60 dovrete sostituirli con quelli adatti al vostro chip: #include <SPI.h> #include <Ethernet.h> Un certo numero di variabili globali si prender poi cura delle impostazioni di cui abbiamo bisogno. Lindirizzo MAC un numero che individua univocamente linterfaccia Ethernet ed di solito riportato sulla scheda che contiene il chip. Lindirizzo IP deve essere scelto in relazione alla congurazione della vostra rete locale. Lindirizzo del server quello del server IRC presente in Italia. Ci sono poi alcune stringhe che contengono i comandi che dovremo inviare al server, il nickname che intendiamo usare su IRC e il canale su cui scambieremo i messaggi. Per gli esperimenti conviene creare un canale apposito, in modo da non disturbare le conversazioni in un canale gi esistente (come #arduino).

70

LINUX PRO 120

Arduino Tutorial
o il comando che richiede il numero di millisecondi dallaccensione della scheda, e risponde di conseguenza: void loop() { if (client.available()) { client.println(join + chan); boolean ricevutoCR = false; String dati; while(true) { dati = ; while (client.available()) { char c = client.read(); if (ricevutoCR && (c == LF)) { break; } if (c == CR) { ricevutoCR = true; } else { ricevutoCR = false; dati += c; } } if (dati.length() > 0) { Serial.println(dati); if (dati.startsWith(PING)) { client.println(pong + nick); } if(dati.endsWith(milli)) { client.println(makeIRCMessage(String(millis(), DEC))); } } } } void setup() { Ethernet.begin(mac, ip); Serial.begin(9600); delay(1000); Serial.print(Connessione al server IRC...); if (client.connect(server, port)) { Serial.println(connesso!); client.println(nickcmd + nick); client.println(user + nick + userParams); } else { Serial.println(connessione fallita!); } } Le cose pi importanti sono linizializzazione del dispositivo Ethernet (non c bisogno di specicare il numero dei piedini usati, dato che la libreria si aspetta di trovarlo sempre allo stesso posto, sui piedini digitali 10, 11, 12 e 13) e poi la connessione al server sulla porta specicata nella variabile port. Il nostro codice usa la classe EthernetClient, una novit della versione 1.0 dellIDE (prima si usava semplicemente la classe Client). Tenetelo presente se vi capita di adattare del vecchio codice. Il ciclo principale legge semplicemente i dati ricevuti no a quando trova i due caratteri che indicano la ne di un messaggio IRC e poi controlla se il messaggio un comando PING del server, inviato per mantenere attiva la connessione, if (!client.connected()) { Serial.println(); Serial.println(Disconnessione in corso!); client.stop(); for(;;) ; } } Partendo da questa base potrete facilmente implementare qualcosa di pi signicativo. Ad esempio la lettura della temperatura da un sensore, come nellesempio di collegamento attraverso la seriale.

Sicuramente potreste costruirvi uno shield Ethernet, ma dato il costo e la natura dei componenti (saldare chip SOIC complicato) risparmierete tempo e soldi acquistandone uno gi montato

byte mac[] = { 0xA0, 0xA2, 0x1A, 0x2D, 0x1E, 0xB9 }; byte ip[] = { 192,168,1,28 }; IPAddress server(213,92,8,4); int port = 6667; String chan = #canalediprovaperilmiobot; String nick = lxpIRCbot; String join = JOIN ; String nickcmd = NICK ; String user = USER ; String userParams = x y z; String pong = PONG ; Il client una classe contenuta nella libreria Ethernet che semplica le operazioni di connessione a un particolare server su una determinata porta e lo scambio dei dati. Ha dei metodi analoghi a quelli della classe Serial, quindi possibile usare print() e println() per spedire informazioni. Anche la creazione della connessione semplice: EthernetClient client;

Andare oltre
In un futuro tutorial vedremo come implementare altre utili funzionalit di rete. Il mese prossimo invece ritorneremo a parlare di ingressi ed esamineremo diversi sistemi per realizzare una tastiera. LXP

IDE in italiano
Da qualche settimana uscita la versione 1.0.1 dellIDE. Tra i vari miglioramenti apportati allinterfaccia utente spicca la sua internazionalizzazione. Tutte le stringhe e i messaggi sono stati cio tradotti in numerose lingue, tra cui litaliano. Un bellaiuto per quanti di noi non masticano troppo bene linglese e preferiscono usare GUI che parlino la loro lingua madre.

LINUX PRO 120

71

Joomla!
Usare al meglio il CMS Joomla!

ora di lavorare meglio


Nei tutorial precedenti avete visto come modicare i template predeniti. Ora concluderemo il discorso sulla modica dei template e vedremo come intervenire meglio sui contenuti

Lautore
Claudio Romeo Tiene corsi sulluso del software, soprattutto di quello libero. Ha scritto pi di trenta libri di argomento informatico. Il suo sito personale allURL www.claudioromeo.it.

Ci vuole proprio poco per creare un sito con Joomla. Serve un po di pi per congurarlo secondo i propri desideri. Basta pochissimo per perdere il lavoro fatto: basta un aggiornamento. Nei tutorial dei numeri precedenti avete imparato come creare nuovi template a partire da quelli predeniti, in modo che non risentano delle modiche apportate durante gli aggiornamenti. Purtroppo questa soluzione non la panacea contro tutti i mali.

Stabilit e aggiornamenti
Il fatto che i template predeniti vengono modicati spesso in occasione di un aggiornamento di Joomla. Da un lato, ci positivo, perch permette di mantenere il template aderente agli standard del Web e di correggere le eventuali imperfezioni. Dallaltro si rischiano possibili malfunzionamenti dovuti al fatto che le nuove versioni dei le che compongono il template sostituiscono quelle che voi avete modicato;

1 Nellimmagine in alto, il confronto di Meld tra due cartelle. In basso, potete invece vedere quello tra due le

il caso pi frequente che venga sovrascritto il le index.php del template, che, nel caso di Beez5, contiene il riferimento allimmagine di testata: dopo un aggiornamento vi ritrovate cos con limmagine di testata predenita anzich quella che avete indicato per il vostro sito. Se, invece, avete creato un vostro template a partire da uno di quelli predeniti, non correte questo rischio, ma il template non viene mai aggiornato. Per possibile trovare un compromesso. Ci che vi consigliamo di vericare, ogni volta che viene rilasciato un aggiornamento, le differenze tra la vecchia e la nuova versione del template predenito. Se ve ne sono, apportate le novit al vostro template. Per non impazzire nellattivit di confronto necessario usare uno strumento che segnali automaticamente le differenze. Il mondo Open Source offre Meld, che disponibile nei repository di quasi tutte le distribuzioni e che comunque pu essere scaricato da http://meldmerge.org/. Meld permette di confrontare non solo due le ma addirittura due directory; anzi, permette perno di effettuare il confronto fra tre elementi contemporaneamente. Impostando Meld perch confronti due (o tre) cartelle, nella nestra principale (Fig.1) vengono automaticamente evidenziati i le che riportano differenze, compresi quelli contenuti in sottocartelle, che vengono automaticamente espanse se necessario. Facendo doppio click su uno dei le che presentano differenze, viene aperta una nuova scheda con il confronto tra le e potete perci sia esaminare i le sia apportare modiche. Se non conoscete Meld, vi consigliamo di prenderci un po di condenza prima di mettere effettivamente mano ai le del template e di delineare una strategia di intervento che faccia al caso vostro. Per esempio, potreste confrontare dapprima il template predenito della vecchia versione con quello della nuova e solo in seguito confrontare questultimo con il vostro template personalizzato; ci vi permette di avere unidea delle modiche apportate esclusivamente al template predenito, quelle cio che dovrete riportare nel vostro. Oppure potreste effettuare un confronto a tre, velocizzando le operazioni e correndo qualche rischio in pi. Ancora, potreste creare le intermedi, che riportino evidenziate le modiche da apportare al template personalizzato e fare poi il confronto con questo. Ognuno deve trovare il proprio compromesso tra velocit, sicurezza e competenza. Meld disponibile per Linux, ma (in qualche misura) pu essere costretto a funzionare anche sotto OS X e Windows. Se tuttavia preferite usare strumenti davvero multipiattaforma, leggete il box Strumenti di confronto per tutti gli ambienti. Per terminare il discorso sulla modica del template, vale la pena segnalare che il vecchio Gedit pu trasformarsi in uno strumento molto elaborato, in grado di facilitare sensibilmente il lavoro di analisi e di modica dei le

72

LINUX PRO 120

Joomla! Tutorial
di congurazione. Le funzioni di Gedit possono infatti essere espanse mediante 2 I comandi per la regolazione della dimensione del testo compaiono (pur con piccole differenze) sia in Beez20 sia in Beez5 plug-in. Installando il pacchetto gedit-plugins trasformate Gedit in un elaboratore fortemente orientato alla programmazione. Basta impartire il comando Modica D Preferenze e passare alla scheda Plugin per attivare i plug-in desiderati. Tra questi, quello che permette di inserire velocemente i tag molto comodo, cos come quello che consente di visualizzare i numeri di riga. A proposito dei numeri di riga: questi possono anche essere stampati, se selezionate 3 Le impostazioni per la prima modica delle stringhe di testo lapposita casella nella al template usato (pu essere o TPL_BEEZ5_ nestra di stampa. Anche senza plug-in, Gedit FONTSIZE o TPL_BEEZ2_FONTSIZE), che viene cos in grado di riconoscere le parole chiave copiato nella casella Costante Lingua. Nella casella selezionando lambiente appropriato (HTML, CSS, Testo viene invece riportato il testo corrispondente C eccetera) mediante il comando Visualizza al valore attuale della variabile: modicatelo D Modalit di evidenziazione, facilitando direttamente. La Fig.3 mostra le modiche cos linterpretazione e lanalisi dei le. che noi abbiamo apportato per questo tutorial. Cliccate sul pulsante Salva e nuovo e operate analogamente Lingua: override per le altre tre stringhe. Al termine, date unocchiata e controllo ortograco al sito: i comandi per la dimensione del testo Intervenendo sui le di congurazione dei template, dovrebbero essere quelli riportati nella Fig.4. dei componenti o dei moduli, potete modicare Ora che abbiamo sperimentato la potenza e la facilit le stringhe di testo che appaiono nel sito. Per evitare duso degli override della lingua, facciamo chiarezza di dover rifare il lavoro in caso di sovrascrittura dei le, su un paio di punti. Innanzitutto, vero che in genere opportuno che salviate i le di congurazione le ricerche vengono condotte sui valori delle variabili, modicati e li inseriate nel le zip personalizzato ma non poi infrequente condurle sui nomi di queste, (se ne avete creato uno). Tuttavia, la versione 2.5 soprattutto se conoscete a menadito il template di Joomla ha portato una novit che permette o i componenti. Poi, una nota per i pi smanettoni: di modicare rapidamente le stringhe di testo, senza la voce File della nestra Crea un nuovo override dover intervenire direttamente nei le. Gli override riporta il le (e il percorso) in cui risiede la modica della lingua li abbiamo fugacemente presentati apportata: se volete, potete utilizzarlo in altri siti. nel primo tutorial della serie: ora il caso di conoscerli pi da vicino. Per spiegarne il funzionamento, A proposito di immagini esaminiamo subito un caso concreto. I template Beez Per inserire rapidamente unimmagine in un articolo, riportano nellarea della testata i comandi per regolare, il sistema pi spiccio cliccare sul pulsante Immagine direttamente dal lato sito, le dimensioni del testo posto lungo il bordo inferiore delleditor predenito. (Fig.2). Per puristi della lingua come siamo noi, quel Questo pulsante richiama la nestra che consente Resetta unoffesa mortale, perci non vediamo lora sia di scegliere unimmagine tra quelle sul server, sia di modicarlo. E, gi che ci siamo, cambiamo tutto, di caricarne una dal computer locale; permette inoltre in modo che le scritte diventino: Modica le dimensioni del testo: Rendile pi grandi Riportale al corpo originario Rendile pi piccole. Sono interventi volutamente sopra le righe, ma servono bene a mostrare le potenzialit degli override della lingua. Nel pannello amministrativo, impartite il comando Estensioni D Gestione lingua, Pochi lo sanno, ma OpenOfce.org Writer ed disponibile anche per il Commodore 64 quindi passate alla scheda Override. Premete e LibreOfce Writer dispongono di una funzione (no: forse questo ramo stato tagliato...). di confronto di le: dopo aver caricato C poi <oXygen/> XML Diff, che contempla il pulsante Nuovo. Nella casella del riquadro Cerca il documento di base, selezionate il comando una funzione di confronto di le e directory il testo che desideri cambiare scrivete Dimensioni Modica D Confronta documento e aprite molto simile a Meld. Questo software carattere e, assicurandovi che sia selezionato il le con il quale effettuare il confronto. Writer disponibile per le tre maggiori piattaforme il pulsante dopzione Valore, cliccate sul pulsante non confronta le cartelle e le funzioni per la ed ben pi rinito rispetto a Meld, ma Cerca. Joomla riporta i risultati della ricerca tra gestione delle differenze non sono elaborate a pagamento. E non libero. Per maggiori le variabili di sistema i cui valori contengono il testo come quelle di Meld. Per funziona informazioni: www.oxygenxml.com. immesso. Selezionate il testo corrispondente

Strumenti di confronto per tutti gli ambienti

LINUX PRO 120

73

Tutorial Joomla!
4 Le stringhe modicate

5 A sinistra, limmagine usata per il pulsante in stato normale; a destra, quella per il pulsante sormontato dal puntatore

di impostare parametri fondamentali come lallineamento, la descrizione alternativa, lattributo Title e luso di questultimo per la generazione della didascalia automatica. Dopo aver inserito limmagine tuttavia possibile intervenire in modo pi approfondito sui parametri dellimmagine: basta selezionarla e premere il pulsante Inserisci/Modica immagine, nella barra degli strumenti delleditor. Per esempio, supponete di voler inserire un pulsante che simuli due stati: quello normale e quello assunto quando il puntatore si trova sopra di esso. Per far ci, occorre costruire due immagini, una per ogni stato, come quelle riportate nella Fig.5. Dopo aver inserito limmagine del pulsante normale, richiamate la nestra Inserisci/ Modica immagine e passate alla scheda Avanzate. Selezionate la casella Immagine alternativa e inserite nelle caselle quando mouse sopra e quando mouse

fuori le gure corrispondenti allaspetto del pulsante quando il puntatore si trova sopra di esso e quando il puntatore abbandona il pulsante. Nel caso dellesempio, questultima nuovamente il pulsante allo stato normale, ma potrebbe anche trattarsi di unaltra immagine: cos come ve labbiamo proposta, la congurazione serve pi che altro a invitare il navigatore a cliccare, pi che a indicare che il pulsante effettivamente premuto. Tuttavia sono possibili personalizzazioni ancora pi profonde. Selezionate limmagine e fate click sul pulsante Inserisci/Modica attributi della barra degli strumenti delleditor. La nestra che si apre (Fig.6) espressamente dedicata allimpostazione degli attributi dellelemento selezionato. Nella scheda Eventi sono elencati tutti gli eventi ai quali Joomla permette di agganciare unimmagine o uno script JavaScript. Notate che, nel nostro esempio, agli eventi onmouseover e onmouseout sono agganciate le immagini denite in precedenza per quando mouse sopra e per quando mouse fuori. Mediante la scheda Eventi potete perci far s che limmagine cambi aspetto secondo ci che il visitatore fa, regolandolo molto in dettaglio. Il signicato degli eventi pi comunemente utilizzati riportato nella Tabella 1. Concludiamo il paragrafo dedicato alle immagini chiarendo un piccolo particolare che pu apparire un mistero a chi non ha molta condenza con le classi dei CSS. Nella nestra richiamata dal pulsante Immagine possibile denire se il titolo dellimmagine (cio lattributo Title, che comporta la visualizzazione di un suggerimento quando si porta il puntatore sullimmagine stessa) debba essere usato come didascalia. Se impostate il valore No, pare non ci sia altra via per visualizzare la didascalia che eliminare limmagine e poi reinserirla. In realt, la visualizzazione della didascalia denita da una classe del template, perci sufciente assegnare allimmagine la classe giusta per far comparire la didascalia. La classe in questione caption e pu essere assegnata nella casella classe sia della nestra Inserisci/Modica immagine sia della nestra Inserisci/Modica attributi.

Modelli di articoli
Se inserite frequentemente articoli nel vostro sito, prima o poi sentirete lesigenza di usare modelli che vi evitino di dover riportare ogni volta gli stessi elementi (come tabelle, disclaimer, immagini, pulsanti, sezioni ricorrenti o altro). Tra laltro, luso di modelli previene errori accidentali. Bench TinyMCE, leditor predenito di Joomla, disponga del pulsante Inserisci contenuto da modello predenito, questo strumento non certo lideale: pu andare bene solo per singoli elementi

6 La scheda Eventi della nestra Inserisci/Modica attributi

74

LINUX PRO 120

Joomla! Tutorial
Tabella 1 Gli eventi secondo Joomla
Ecco gli eventi usati pi frequentemente ai quali viene agganciata unimmagine o uno script. A quelli elencati di seguito vanno ovviamente aggiunti onmouseover e onmouseout, descritti nellarticolo. EVENTO Onclick Ondblclick Onmousedown Onmouseup DESCRIZIONE Viene fatto click sullelemento Viene fatto doppio click sullelemento Il pulsante sinistro del mouse viene premuto (ma non rilasciato) sullelemento Il pulsante sinistro del mouse viene rilasciato (ovviamente, era prima stato premuto)

7 Un esempio di template realizzati con Content Templater

Oncontextmenu Viene premuto il tasto destro del mouse sullelemento (aprendo il menu contestuale)

e, oltretutto, la costruzione dei modelli macchinosa. Ci sono due soluzioni: usare in modo un po fantasioso la funzione Salva come copia e ricorrere a unestensione; in entrambi i casi, il primo passo lo stesso: redigere un articolo da usare come modello. Se non volete usare estensioni, realizzate il modello di articolo che dovr servire da base per i modelli successivi e rinitelo in tutti i particolari: categoria, autore, campi meta eccetera. Come titolo, sceglietene uno che vi indichi inequivocabilmente che si tratta di un modello e che eventualmente contenga altre informazioni utili. Per esempio, Modello articolo partite in casa. Per evitare pubblicazioni accidentali, impostatelo come non pubblicato. Il modello pronto. Per scrivere un articolo basato sul modello, aprite il modello stesso e, prima di ogni altra cosa, compite tre operazioni: 1 assegnate un titolo nuovo allarticolo; 2 cancellate il contenuto del campo Alias. Attenzione! Questoperazione fondamentale, perch la semplice modica del titolo non sufciente a distinguere due articoli di Joomla: la distinzione avviene mediante il campo Alias, il cui contenuto pu essere specicato dallutente o inserito automaticamente da Joomla sulla base del titolo, se lutente lascia vuoto il campo; 3 cliccate sul pulsante Salva come Copia. In questo modo viene creata una copia dellarticolo, con un numero di ID diverso. Vi unaltra operazione importante da compiere: dovete modicare la data di creazione e quella di pubblicazione. Sono state infatti mantenute le date dellarticolo originale e ci pu ovviamente creare problemi nei casi di ricerca o di visualizzazione per data. Se invece volete usare uno strumento molto semplice e essibile, vi consigliamo Content Templater, unestensione di Joomla tra le pi apprezzate per questo scopo. Content Templater permette di costruire un numero innito di elementi da inserire nellarticolo e di impostarne anche gli attributi fondamentali (gli altri possono essere impostati nella versione Pro, a pagamento). Potete scaricare Content Templater dal sito dello sviluppatore (www.nonumber.nl). Per una migliore gestione dellestensione vi consigliamo tuttavia di scaricare e installare dapprima lestensione NoNumber Extension Manager, che vi permette

8 Creazione di un modello in Content Templater

di installare, disinstallare e aggiornare comodamente le estensioni prodotte da NoNumber. Dovete tenere conto che Content Templater non sfrutta la funzione di verica dello stato daggiornamento delle estensioni disponibile in Joomla, perci NoNumber Extension Manager davvero molto utile. Una volta installato Content Templater, esso compare nel menu Componenti del pannello amministrativo e pu perci essere richiamato comodamente. Nella Fig.7 potete osservare il pannello di Content Templater, contenente gi alcuni template. Come potete osservare nella Fig.7, i pulsanti di Content Templater sono molto simili a quelli di Joomla e anche il loro uso il medesimo. In pi vi sono i pulsanti Esporta e Importa, con i quali potete esportare e importare i modelli selezionati. Se gestite pi siti, questa possibilit fantastica. Per creare un modello di articolo, dovete cliccare sul pulsante Nuovo e richiamare cos la nestra mostrata nella Fig.8. Potete ora realizzare loggetto da usare come modello e impostarne le caratteristiche. Non dimenticate di salvarlo. Quando lestensione Content Templater attiva, lungo il lato inferiore delleditor compare il pulsante Content Templater. Portando il puntatore su di esso, appare un menu che elenca i modelli disponibili (nonch il comando per crearne uno nuovo): basta selezionarlo per inserirlo immediatamente nella posizione del cursore. Gli elementi cos inseriti non eliminano quelli gi presenti. LXP
LINUX PRO 120

75

Sicurezza
Come vericare la sicurezza delle applicazioni Web

WebGoat e le falle del Web


Pensate che il vostro server Web sia al sicuro perch avete aggiornato ogni singolo software? Bene, vi sbagliate, leggete le prossime righe e scoprite come e perch
Dai social network allo shopping, dallhome banking ai giochi via Internet, la grande Rete ormai una parte insostituibile della vita di sempre pi persone. Ma quanto sicura? Fortunatamente le vulnerabilit dei vari software vengono identicate e corrette (tecnicamente si dice patchate) velocemente, ma si pu dire lo stesso delle applicazioni Web coinvolte? Cosa succederebbe se un criminale informatico riuscisse a piegare al proprio volere i meccanismi pi interni delle applicazioni stesse? Beh, a tutti gli effetti quel che capita ogni giorno nella grande e variegata Internet. In questo tutorial verr usato WebGoat, unapplicazione dimostrativa, per mostrare alcune tecniche comunemente utilizzate per sfruttare alcune vulnerabilit note perch conoscere il pericolo il primo passo per proteggersi dalle minacce stesse. possibile installare WebGoat sulle distribuzioni pi diffuse ma la parte pi complessa la congurazione; fortunatamente sul sito di Owasp (www.owasp.org) sono disponibili per il download alcune immagini di macchine virtuali gi pronte alluso. Dopo aver scaricato limmagine OWASP WTE (Open Web Application Security Project - Web Testing Environment) potrete utilizzarla come DVD Live oppure, essendo un sistema riempito appositamente di vulnerabilit, sarebbe molto pi sicuro avviarlo come macchina virtuale allinterno di VirtualBox o di un altro software di virtualizzazione. Se non avete installato alcun sistema di virtualizzazione vivamente consigliato luso di VirtualBox, reperibile in tutti i package manager delle distribuzioni pi famose. Alternativamente sul sito di Owasp troverete indicazione anche per gli altri sistemi quali Qemu o VMware. Per procedere al download dellimmagine visitate lindirizzo http://appseclive.org/node/45 e una volta nito il processo di scaricamento estraete il le con il comando unrar e owasp-wte-Feb-2011.vdi.rar Prima di proseguire seguite le istruzioni presentate alla pagina successiva per impostare WebScarab. Non tutti gli attacchi hanno come obiettivo laccesso ad alcune informazioni. Alcune tipologie di attacco, a volte parte di un piano pi ampio, richiederanno larchiviazione di alcuni dati. Per esempio, se state tentando di indovinare una password di accesso attraverso la tecnica del brute-forcing, ovvero una serie di tentativi in sequenza, avrete una pletora di tentativi falliti salvati nei le di log. In questo caso una buona norma inserire qualche tentativo effettuato con successo giusto per evitare che gli amministratori si insospettiscano. Per farlo aprite lopzione Injection Flaws D Log Spoong. Nel test che segue si tenter di inviare una serie di messaggi di login effettuato con successo e uno solo negativo. Per far questo si deve prima inserire un carattere di ne linea nel le di log. I caratteri necessari sono %0d%0a, quindi inserite nel campo Username il testo seguente: Smith%0d%0aLogin Succeeded for username: Admin%0d%0aLogin Succeeded for username: John Inserite una password qualsiasi prima di premere Login. Questa operazione aggiunger tre righe al le di log, un nto login fallito e due login corretti. Se volete potete anche aggiungere altro testo a quanto specicato (come in Fig.1). Non essendoci alcun tipo di validazione su questi campi si potrebbe anche scrivere uno script nel le di log. In caso lamministratore di sistema visualizzi i le di log usando un browser si potrebbe cercare di sfruttare questa situazione per attaccarne la sessione usando una delle tecniche spiegate in seguito. Un form di login senza le dovute regole di validazione una manna per i criminali informatici e le possibilit offerte grazie a questa grave dimenticanza sono molte pi pericolose della scrittura di qualche riga nel le di log. In effetti dei campi validati in maniera impropria potrebbero rivelare informazioni utili.

Attacca e sovverti

DIFFICILE

1 Login spoof: se riuscite nellintento vedrete tante righe comparire nella sezione di testo in grigio

Nel menu di sinistra scegliete la voce XPATH Injection. In questo esempio verr attaccato il campo password abusandone per mostrare alcune informazioni sensibili. La password viene controllata usando unistruzione XPATH che restituir una riga per ogni risultato che corrisponde al nome utente e alla password digitate. possibile sfruttare questa caratteristica aggiungendo la clausola OR in modo che il risultato del check sia sempre vero, sostanzialmente ritornando tutte le linee del database. Inserite quindi la riga seguente test123 or a=a La frase sar messa tra virgolette da XPATH stesso, quindi gli apici pi esterni non servono. Sfortunatamente non tutti i form permettono di scrivere direttamente i dati, obbligando invece lutente a scegliere tra un set di valori predeniti. Questo non signica che il pericolo scampato, semplicemente segno che un eventuale attaccante dovr essere lievemente pi furbo. Tornando a WebScarab, dovreste vedere ora una lista di richieste HTTP GET. Ognuna di queste rappresenta uno dei tentativi fatti dal browser nei passi precedenti. La colonna Path mostra il dettaglio delloggetto richiesto. Prima di continuare bene avere chiaro un paio di aspetti del funzionamento di Internet. La funzionalit necessaria per visualizzare e navigare i siti si basa su un protocollo chiamato HTTP (HyperText Transfer Protocol). HyperText (o IperTesto) sta ad indicare il fatto che, oltre al testo, possono essere inclusi dei link ad altre pagine, solitamente altri documenti o elementi multimediali. Il protocollo era stato ideato per essere semplice e facilmente

76

LINUX PRO 120

Sicurezza Tutorial
Passo passo Configurare lambiente

Aprite VirtualBox e create una nuova macchina virtuale. Digitate il nome OWASP e scegliete Linux come sistema operativo e Linux 2.6 come tipologia. Nella schermata successiva dedicate quanta pi memoria vi possibile, idealmente almeno 700 MB. Cliccate nuovamente su Avanti e scegliete di usare un disco gi esistente e cercate il le VDI scaricato pocanzi.

Prepararsi

Avviate la VM. Una volta arrivati alla schermata di login usate owasp come nome utente e password. Di tanto in tanto Ubuntu vi chieder di effettuare un update ma essendo questo solo un sistema di test potete ignorare tali richieste.

Login

3 Installare le Guest additions

Aprite il menu Devices della schermata di VirtualBox e selezionate Install Guest Additions. Se questa scelta vi restituisce un errore dovrete installare il pacchetto virtualbox-guest-additions direttamente allinterno del sistema virtualizzato. Una volta nita linstallazione potrebbe rendersi necessario il riavvio della VM stessa.

A questo punto potete aprire il menu Applications e andare alla voce OWASP D Proxies D OWASP WebScarab. Essendo scritta in Java saranno necessari minimo 64 MB di RAM dedicata ma consigliabile essere pronti a scucirne il doppio o il triplo. Nella nestra di WebScarab andate su Tools e selezionate la voce Use Lite Interface. Poi avviate OWASP D WebGoat START.

Avviate il proxy

Chiudete il Firefox che viene aperto di default e avviate il browser usando la voce reperibile in Applications D OWASP D Firefox WTE Style che permette un controllo pi semplice sul proxy utilizzato. Cliccate quindi su FoxyProxy nella parte in basso a destra e cambiate il modo duso in WebScarab per tutti gli URL.

FoxyProxy

Puntate il browser allindirizzo http://localhost:8080/ WebGoat/attack e loggatevi usando sia come nome utente sia come password la parola guest.

Partenza, Via!

leggibile, quindi le sue varie parti vengono inviate in chiaro sotto forma di testo. Ogni volta che navigate digitando un indirizzo, o cliccando su un link, il vostro browser invia una richiesta GET. Questo messaggio indica al server Web destinatario il documento che volete leggere. Il server a questo punto dovrebbe rispondere inviando il documento richiesto al vostro browser. In effetti la maggior parte delle sessioni di navigazione pu essere ricondotta a numerose richieste HTTP GET, dato che in una pagina possibile ci siano pi elementi da richiedere al server Web. Lambiente di testing OWASP si congura usando WebScarab come proxy. I Proxy HTTP sono programmi che intercettano le richieste HTTP e consentono di vederle e modicarle al volo. Questo meccanismo consente di vedere e intervenire su quanto accade a fronte della navigazione nel browser. Essendo HTTP il metodo scelto per comunicare con il Web server, proprio modicando il messaggio inviato che avverr lattacco. Ormai la maggior parte dei piccoli siti dinamici vengono creati al volo partendo da informazioni memorizzate in un database. Proprio per questo uno degli obiettivi principali dei malintenzionati la base dati da cui estrarre pi informazioni possibili. Per farlo si usa un tipo di attacco

chiamato SQL injection. In questa metodologia di azione lattaccante forza il sito a eseguire un comando SQL non previsto. Tornando nel browser scegliete la voce Injection Flaws e il sottomenu Numeric SQL Injection. Si aprir cos un sito esemplicativo che mostra delle informazioni meteorologiche. Nella modalit di funzionamento normale potrete selezionare una stazione meteo dal menu a tendina e cliccare Vai per caricarne le informazioni nella parte centrale. Ovviamente in quanto attaccanti questo non sar abbastanza. Per cominciare, il sito in questione ci dice qual il comando SQL eseguito: SELECT * FROM weather_data WHERE station = ? Nella riga il ? il valore preso dal menu a tendina. Per riuscire a carpire pi informazioni insieme si deve rendere la clausola WHERE pi ampia. Per farlo baster intercettare la richiesta HTTP generata dal browser e aggiungere un pezzettino al campo station. In WebScarab abilitate la casella Intercept Request, poi tornando nel browser avviate la richiesta. Il proxy intercetter una richiesta contenente due informazioni, il campo station e quello submit. Cambiate a questo punto il valore di station in 101 OR station LIKE %

LINUX PRO 120

77

Tutorial Sicurezza
e poi cliccate su Accept Changes (come negli screenshot sotto). Il sistema a questo punto processer il comando SQL SELECT * FROM weather_data WHERE station = 101 OR station LIKE % ; Essendo il simbolo % il carattere wildcard in SQL, questo comando restituir sostanzialmente tutto il contenuto della tabella weather_data. Il risultato conterr le quattro voci presenti nel menu a tendina pi altre due che lo staff aveva tenuto nascoste. Una volta completato questo esercizio il sito passer a una versione pi complessa che verica che linput sia esclusivamente numerico, infatti se tentate nuovamente lo stesso attacco fallir. Ora passate alla sezione LAB: SQL Injection e potrete provare altre situazioni in cui usare questo tipo di attacco. Questo set di esercizi presenta un sito di una compagnia ttizia chiamata Goat Hills. Al primo passo si dovr aggirare il sistema di autenticazione riuscendo a effettuare il login anche senza sapere la password. Il sito fa il check della password con unistruzione simile a SELECT * FROM employee WHERE userid = + userid + AND password = + password Se viene restituita almeno una riga, allora lutente avr digitato dei dati corretti e il sistema effettua il login. Inserite lutente Neville Bartholomew e la password Test. Vericate che WebScarab abbia ancora limpostazione Intercept Requests abilitata e poi cliccate su Login. Si pu aggirare questo sistema aggiungendo una clausola OR come nellesempio precedente. Una volta intercettata la richiesta HTTP cambiate la password aggiungendo Test OR password LIKE % Test non la password giusta ma sempre vero che 1=1 ritornando quindi VERO come risultato della query. A questo punto si possono effettuare tutte le operazioni consentite allamministratore Neville. In effetti vi starete chiedendo perch non inserire il testo direttamente nella casella Password: il motivo che, sebbene non ci sia un controllo sul contenuto, la lunghezza del campo limitata, costringendo sostanzialmente alluso del proxy. Il secondo passo consiste nel modicare il codice lato server in modo da proteggersi da questo tipo di attacco. Questo passo verr lasciato ai lettori pi volenterosi e interessati andando direttamente al terzo passo. Questo attacco diviso in due fasi. La prima consiste nellassicurarsi che vengano analizzati tutti gli utenti nel database e non quelli proposti dal menu. Come gi visto, questa operazione verr effettuata aggiungendo la clausola OR 1=1. Ad ogni modo, essendo la pagina risultante creata per mostrare solo un risultato, auspicabile analizzare il record pi interessante. In particolare sarebbe interessante, ad esempio, leggere i dati della persona con lo stipendio pi alto. Per procedere in tal senso si dovr personalizzare la query aggiungendo ORDER BY salary DESC. Per poter compiere lattacco si deve essere loggati come Larry (password larry). Una volta autenticati cliccate su View Prole. Quando WebScarab intercetter questa richiesta modicate il campo employee_id con 101 OR 1=1 ORDER BY salary DESC e cliccate su Accept Request. In questo modo verranno sostanzialmente ritornati i dettagli dellimpiegato con lo stipendio pi alto, che siano nella lista a tendina proposta o meno. difcile identicare quale sia la difesa pi efcace contro gli attacchi SQL Injection (e molti altri tipi di attacco) senza entrare nello specico del codice scritto. Quel che sicuro che un minimo di validazione non pu che aiutare e nella maggior parte eliminare campi che accettano caratteri quali =, , e % non dannegger il funzionamento dellapplicativo ma porter di sicuro qualche benecio alla sicurezza. Ad ogni modo, se avete unottima ragione per essere obbligati ad accettare tali caratteri dovreste assicurarvi almeno che vengano normalizzati (o escapati in gergo) prima di essere utilizzati in un database. Questo passaggio andrebbe comunque effettuato lato server dato che, usando un semplice proxy come WebScarab o afni, possibile aggirare praticamente qualsiasi tipo di accorgimento di sicurezza adottato lato client.

Cross Site Scripting (XSS)


Cross Site Scripting un metodo utilizzato per attaccare una parte di sito e utilizzarla per mostrare contenuti appositamente specicati. Questo meccanismo risulta possibile quando un sito interattivo mostra alcuni contenuti inseriti direttamente dagli utenti. Per proseguire con lesercizio andate alla sezione Cross-Site Scripting (XSS) D Phishing With XSS. Come primo passo inserite solo Test nella casella di ricerca e premete Cerca. A questo punto vedrete la pagina mostrer un testo simile a Results for: Test Grazie a questa semplice verica si pu desumere che si riuscir a iniettare quel che si vuole dopo la dicitura Results for: e un po di conoscenza HTML e JavaScript consentir di inserire ben pi di una semplice frase. Ad esempio provate a cercare il termine <br><br><h1>Injected Text</h1>

WebScarab pu essere utilizzato per modicare i valori inviati dal browser

Hacking and cracking


Tanto tempo fa (negli anni 60) il termine hacker era utilizzato per denotare una persona con grandi capacit tecniche, solitamente di programmazione, e molta curiosit. Allo stesso tempo nato il termine cracker che veniva invece usato per indicare quelli che attaccavano i computer. Questo utilizzo rimasto connato allinterno delle mura del MIT qualche anno, per poi diffondersi in tutto il mondo principalmente grazie alluso erroneo da parte dei mass media. Questo nuovo signicato attribuisce al cracker un comportamento pi concentrato a rompere un singolo pezzo di software (esempio crackare una password) mentre lhacker diventava sempre meno frequentemente lesperto in materia in grado di migliorare un sistema (kernel hacking) e sempre pi frequentemente il criminale informatico in grado di accedere a dati sensibili grazie alle sue conoscenze tecniche. Una nota distintiva per sempre rimasta, anche se pi o meno velata, lattivit di cracking ha sempre una connotazione illegale o comunque maligna mentre quella di hacker ha subito una ramicazione verso le attivit pi nobili (white hat hacking) e quelle volte ad azioni potenzialmente illegali (black hat hacking). Questo tutorial parla esclusivamente delluso di nozioni di white hat hacking.

78

LINUX PRO 120

Sicurezza Tutorial
Per chi non fosse avvezzo alle tecnologie Web, il tag <br> serve a introdurre uninterruzione di linea e gli <h1> a indicare che il testo un titolo. Come gi anticipato, non sar troppo difcile aggiungere costrutti pi complessi di un semplice testo, per esempio un form. Nel corso del prossimo attacco sar necessario introdurre sia un piccolo pezzo di testo che un form. Questultimo prender le informazioni digitate dallutente e le invier allindirizzo http://localhost/ WebGoat/catcher?PROPERTY=yes. Essendo lintero concetto di phishing imperniato sullinvogliare un utente poco avveduto a digitare i propri dati, si dovr fornire un motivo plausibile per farlo. Il risultato nale potrebbe essere qualcosa di simile a <br><br><h1>Attenzione: i sistemi di sicurezza hanno rilevato unattivit anomala da parte del Vs account. Prego confermare i dati del proprio account per prevenire ulteriori login non autorizzati</h1><form><input type=text name=user><br><input type=password name=password><br><input type=submit name=login onClick=var image1=new Image; image1.src=http:// localhost:8080/webgoat/catcher?PROPERTY=yes&user= +this.form.user.value+&password=+this.form.password. value;></form> Questo script, per quanto ancora allo stato grezzo, gi in grado di catturare i dati digitati in input dallutente e passarli al server in ascolto. Come mostrato nuovamente in questo esempio, importante avvalersi di un minimo di autenticazione quando si ha a che fare con dati in input digitati dagli utenti. In questo caso pulire le stringhe da > e < sarebbe bastato a evitare la creazione dei tag HTML. anche possibile convincere il browser dellutente a eseguire azioni non intenzionali. Essendo la navigazione guidata attraverso luso del protocollo HTTP, se si riuscisse a forzare il browser dellutente a effettuare una chiamata HTTP GET si potrebbe imbrogliare il server facendogli credere che sia lutente ad aver generato la richiesta. Il modo pi facile per far generare una richiesta GET a un browser di fargli credere di caricare unimmagine. Per non rendere il trucco troppo esplicito il caso di rendere limmagine grande un pixel. Andate alla sezione Cross Site Request Forgery e digitate il titolo Attenzione - Misure di sicurezza richieste e poi nel testo aggiungete Questo un messaggio molto lungo e convincente da leggere con calma <img src=http://localhost:8080/ webgoat/attack?Screen=89&menu= 900&transferFunds=4000 width=1 height=1/> In questo caso la richiesta truccata viene utilizzata per trasferire (ipoteticamente) dei fondi da un conto a un altro, ma potrebbe essere usata ugualmente per postare contenuti

Note legali
Questo tutorial inteso unicamente a scopo didattico. Le tecniche mostrate devono essere utilizzate solo sui propri siti oppure se in possesso di autorizzazione scritta da parte del proprietario. Utilizzare queste tecniche viene considerato reato in diversi stati e potrebbe portare a pesanti accuse sul piano civile e penale. Fate un favore a tutti e non effettuate azioni azzardate. Inoltre in questo articolo non si volutamente parlato di come coprire le tracce delle proprie nefandezze quindi uneventuale indagine di polizia riuscirebbe velocissimamente a scovare il colpevole.

su un sito, fare degli acquisti o praticamente qualsiasi altra azione possa essere intrapresa con un click in un sito. Essendo la richiesta in arrivo dal computer della vittima, non dellattaccante, il server Web la processer come legittimamente intestata allutente (a patto che questi ne abbia i diritti e sia loggato). chiaro che molti siti non eseguiranno lazione al primo colpo ma chiederanno una conferma allutente. Continuando con lesempio precedente quantomeno improbabile che una banca vi permetta di trasferire fondi al volo semplicemente con un click, senza un briciolo di conferma. Fortunatamente per lattaccante c modo di aggirare anche questo problema. Essendo anche la seconda richiesta semplicemente unaltra richiesta HTTP GET, bisogna solo trovare il modo di generarla automaticamente. Lunico problema che deve essere inviata al momento giusto, ovvero dopo che la prima stata gi eseguita, ma si potr sfruttare il fatto che la prima immagine fallir il caricamento. La richiesta HTTP falsa dellesempio precedente restituir un documento HTML e quando il browser tenter di caricarlo come immagine fallir. Il tag img consente di specicare cosa fare in caso di errore e in questo caso lazione da intraprendere sar di caricare un secondo URL. Andate alla sezione CSRF Prompt By-Pass e digitate un titolo come Attenzione - Misure nali di sicurezza a prova di bomba e aggiungete un messaggio simile a Per concludere la messa in sicurezza del tuo account devi leggere anche questo lungo interessantissimo testo <img src=http://localhost:8080/webgoat/attack?Screen= 82&menu=900&transferFunds=4000 onerror=document.getElementById(image2).src=http:// localhost:8080/webgoat/attack?Screen=82&menu=900 &transferFunds=CONFIRM width=1 height=1 /> <img id=image2 width=1 height=1 />

Tip
Molti degli URL dati automaticamente dallapplicazione presentano dei piccoli errori: assicuratevi che webgoat sia sempre scritto minuscolo e che punti al menu e ai valori corretti.

Ridurre il rischio
Esistono un po di modi per minimizzare il rischio di attacchi CSRF. Per esempio, essendo tutti attacchi basati sullo stato di login gi effettuato da parte dellutente, buona norma disconnettere gli utenti dopo un periodo di inattivit. Per avere altri consigli pratici e teorici visitate il sito www.owasp.org/index.php/PHP_CSRF_Guard. SQL Injection e XSS sono solo due dei tipi di attacchi che si possono condurre contro un sito. WebGoat propone altri esempi di una moltitudine di tipi diversi. In caso vi troviate spiazzate usate i link Hints e Solutions nella parte alta della pagina. Proteggere il proprio sito da questo tipo di minacce alla ne si riduce spesso a effettuare il giusto tipo di validazione ed escaping dei caratteri potenzialmente pericolosi. Potete trovare alcuni attacchi esemplicativi in Applications D Internet D Web App Testing Tools e questi potranno essere anche usati per testare le vostre applicazioni. Per ulteriori trucchi e consigli spicci potete visitare il link www.owasp.org/index. php/Cheat_Sheets. LXP
LINUX PRO 120

CAL9000 un software un po datato ma ancora un ottimo inizio per testare le proprie applicazioni Web

79

Concetti

Ordinamento
Lasciate che lo staff di Linux Pro vi introduca nel rutilante mondo degli algoritmi, dellefcienza e dei dati organizzati
Python un ottimo linguaggio. State felicemente scrivendo un piccolo programma e avete una grande lista di dati che dovete ordinare. Cosa fare? Facile, basta applicare il metodo sort() alla lista e avete risolto. Funziona velocemente e non dovete preoccuparvi di quanto grande la lista che gli passate: potrebbero essere milioni di elementi e comunque vi ritroverete la lista ordinata in men che non si dica. molto comodo, ma vi siete mai soffermati a chiedervi come funziona? una domanda affascinante, e nelle prossime due puntate andremo a illustrarvi alcune tecniche che vengono comunemente utilizzate per risolvere questo tipo di problemi. Durante questi tutorial riceverete anche uninfarinatura sugli algoritmi e su come pensare alle loro performance. Quindi, da dove partiamo? Ordinare una lista con il computer, come molti problemi di programmazione, sembra incredibilmente astratto e difcile a una prima occhiata. Se iniziate a pensare a come ordinare una lista Python con milioni di elementi, non andrete da nessuna parte in tempi brevi. se la carta di destra vale di pi di quella di sinistra le lascereste come sono. Come sembrerebbe tutto ci in Python? cards = [8,2] if card[0] > card[1]: card[0] = card[1] card[1] = card[0] print cards Sembra molto semplice. C una lista di carte, con valori 8 e 2. Abbiamo quindi controllato se la prima carta maggiore della seconda, e se cos abbiamo scambiato le carte nella lista. Eseguite questo codice e controllate cosa succede. Dovreste notare che non riceverete come risposta [2,8] bens [2,2]. Che ovviamente non quello che volevamo, quindi, cos successo? Dato che non c alcun operatore in Python che permetta di scambiare la posizione di due elementi, abbiamo fatto quello che sembra pi naturale: utilizzare loperatore di assegnazione per copiare i valori delle due carte. Il problema che dopo aver copiato il primo valore, entrambe le carte si sono ritrovate con lo stesso valore! E quando abbiamo provato a fare il secondo assegnamento, abbiamo semplicemente copiato due carte identiche. Il modo per aggirare questo problema di salvare una copia del valore della prima carta in una variabile a parte, e soprattutto, prima di fare alcuna operazione. Date unocchiata a questo codice: cards = [8,2] card0 = cards[0] if card[0] > card[1]:

Ordinare due carte


Ma cosa succede se facciamo un passo indietro, allontanandoci dal computer e dai milioni di oggetti? Immaginate, ad esempio, che abbiate due carte di cuori nel mazzo. Come mettereste queste due carte in ordine? Beh, abbastanza semplice, dareste unocchiata alle carte, e se la carta di sinistra superiore a quella di destra, le scambiereste di posto;

8 5
Il Bubble Sort funziona confrontando elementi adiacenti nella lista. Mentre lo fa, lelemento pi grande viene spinto verso la ne della lista

9 9

8 2

80

LINUX PRO 120

Concetti
card[0] = card[1] card[1] = card0 print cards Se eseguite questo codice dovreste ottenere il risultato corretto. Questo perch abbiamo salvato il valore della prima carta prima di sovrascriverla con il primo assegnamento, utilizzando la copia salvata per eseguire il secondo assegnamento. Alla ne non proprio come avremmo fatto nella vita reale, ma ci si avvicina molto.

Bubble Sort
Ok, quindi ordinare una lista di due elementi non molto impressionante. Ma possiamo estendere la stessa tecnologia per ordinare una lista con inniti elementi: questo metodo conosciuto con il nome di Bubble Sort. Lidea di scorrere su tutta la lista, confrontando (e scambiando, se necessario) ogni coppia di elementi vicini. Lelemento con il valore maggiore deve nire sempre nella parte destra del confronto, in modo che venga sempre confrontato con i prossimi elementi. Alla ne dovr trovarsi allestrema destra della lista, la posizione che gli appartiene. Da notare che, se dovessimo scorrere la lista soltanto una volta, avremmo soltanto lelemento pi alto in assoluto nella corretta posizione. Il modo per risolvere il problema di continuare a scorrere la lista: a ogni ciclo incontreremo un nuovo elemento pi grande che andr a posizionarsi sul fondo della lista nch non incontra lelemento pi grande del ciclo precedente. A questo punto, non si muover pi dato che si trova nella posizione corretta. Sapremo che la lista ordinata quando eseguiremo un ciclo completo senza che alcun elemento venga scambiato. Questo codice mostra come il Bubble Sort possa essere implementato in Python: cards = [8,3,7,4,2,1] scambiati = True while scambiati: #ordina nch scambiati non diventa False scambiati = False #assumiamo che nulla sia scambiato for i in range(len(cards) - 1): #scorriamo lintera lista cur = cards[i] j=i+1 if cards[i] > cards[j]: cards[i] = cards[j] cards[j] = cur scambiati = True #settiamo scambiati a True se qualcosa viene scambiato print cards

da ordinare. In totale, deve eseguire due operazioni. Quando aggiungiamo una terza carta, assumendo che siano in ordine inverso in modo che lalgoritmo faccia pi lavoro possibile, dovr fare due confronti a ogni ciclo e tre cicli. In totale, sei operazioni. Cosa succede se aggiungiamo la quarta? Dovr fare tre confronti a ogni ciclo e quattro cicli. Che sono 12 operazioni! Cinque carte? Quattro confronti e cinque cicli: 20 operazioni! C uno schema ben denito. Il lavoro svolto dal nostro algoritmo sembra utilizzare questa formula: num.operazioni = num.cicli * num.confronti Possiamo notare che il numero di cicli sempre uguale al numero degli elementi nella lista, e il numero dei confronti uguale al numero degli elementi meno uno. Questo signica che, se abbiamo n elementi, lammontare del lavoro svolto dallalgoritmo num.operazioni = n * (n -1) = n(n-1) = n^2 -n

Lalgoritmo Bubble Sort un algoritmo con performance O(n^2), questo signica che si incrementa in maniera quadratica a ogni elemento aggiunto

Big O
Questo signica che il numero di lavoro svolto si incrementa in modo quadratico a ogni elemento aggiuntivo. Quindi il carico di lavoro diventa sempre pi oneroso a ogni elemento della lista. Ecco perch lento a ordinare liste grandi: una lista di 10 elementi impiegher soltanto 90 operazioni, ma una lista di 1.000 elementi ne eseguir 999.000, e sar sempre peggio per ogni carta aggiunta. Nel caso generale scritto sopra, il valore di n^2 sar sempre pi grande rispetto al valore di n, e quindi avr uninuenza sempre maggiore sulle performance dellalgoritmo. A causa di ci, quando si parla delle performance di un algoritmo si considera sempre il valore pi grande. La terminologia utilizzata per questo notazione big O, e diremo che il Bubble Sort un algoritmo O(n^2). Il Bubble Sort attualmente considerato uno degli algoritmi di ordinamento meno performanti, e possiamo dire senza dubbio che non quello utilizzato da Python. Questo non signica che vada scartato a priori. di facile implementazione e funziona bene per liste di piccole dimensioni. Possono esserci delle volte in cui si vuole soltanto che il lavoro venga portato a termine, e il Bubble Sort lo fa egregiamente. Nel prossimo articolo, daremo unocchiata ad algoritmi di ordinamento molto pi veloci, anche se un pochino pi difcili da implementare, ma ci avvicineremo molto a ci che fa Python. LXP
LINUX PRO 120

La velocit conta
abbastanza intelligente, vero? Potete ora utilizzare questo programma per ordinare una lista di qualsiasi dimensione e porter a termine il suo compito. Ma, se provate a utilizzarlo su una lista molto grande, noterete che impiega molto tempo a risolvere il problema, anche su un computer veloce. Per capire il perch, provate a pensare un po a quanto lavoro esegue il nostro algoritmo Bubble Sort. Quando abbiamo soltanto due carte, il Bubble Sort deve fare due confronti: uno per mettere le carte in ordine e il secondo per controllare che non ci sia altro

81

PHP

Il mondo dei database


Nel tutorial precedente avete visto per la prima volta come usare MySQL e i database. Avete creato un contatore di visite in tempo reale che vi mostra semplicemente il numero di visitatori in un sito in un dato momento. Ora vedrete come lavorare pi strettamente con MySQL e mostrare non solo il numero di visitatori, ma anche il loro indirizzo IP e il tempo di visita.

In questa puntata vi mostriamo come aggiungere al contatore di visite del vostro sito non solo i meri numeri, ma anche alcuni importanti dati sui visitatori
locale. Per ricapitolare, MySQL un sistema di gestione per database relazionali (RDBMS) che gira come server dando accesso ai database (collezioni di dati) attraverso SQL (Structured Query Language). I dati sono contenuti nel database divisi in tabelle. Una tabella semplicemente una collezione di dati relazionati de niti e costituiti da colonne e righe. MySQL disponibile in un ampio ventaglio di sistemi ed estremamente veloce.

Installare MySQL
Ora avete aggiunto MySQL al vostro arsenale. Se avete seguito lo scorso tutorial, potete evitare questa sezione, altrimenti dovrete scaricare e installare MySQL Server per poterlo usare via PHP. Potete scaricare MySQL per Linux da http://dev.mysql.com/downloads/mysql , seguendo i link per la vostra versione di Linux. Se avete dubbi, le linee guida per linstallazione sono su http://dev.mysql.com/doc . Si d per scontato che abbiate gi con gurato la vostra macchina Linux per servire pagine PHP tramite un browser Web, come spiegato nella prima puntata. Se cos non fosse, date unocchiata al box Installare PHP in Linux . Dovrete anche assicurarvi di aver compilato PHP con la direttiva --with-mysql[=DIR] : controllate la documentazione uf ciale alla pagina http://php.net/manual/en/mysql.installation.php . Per la gestione dei vostri database non c nulla di meglio di phpMyAdmin : vi offre uninterfaccia Web-based al vostro server MySQL e vi permette di gestire completamente tutti gli aspetti del database. Rende anche pi facile il debug e il test delle applicazioni. Potete scaricarlo da www.phpmyadmin.net . Proseguendo con lo scorso tutorial, riutilizzerete il codice gi scritto, per risparmiare tempo e ottenere gi una base da espandere. Utilizzerete la stessa struttura di tabelle del database, cos da cominciare immediatamente: allURL http://bit.ly/Pcvpq8 trovate il le di schema originale e il le whosonline.php . Se necessario, importate il le schema nel vostro server MySQL

Tornare sul pezzo


Quindi il vostro compito ora quello di mostrare i dati del visitatore assieme al contatore. Cominciate con le modi che gi fatte e controllate cosa c bisogno di rivedere. Aprite whosonline.php nel vostro editor di testo preferito e spendete un paio di minuti per riportare alla mente lo script. Controllate le variabili che avete impostato in cima, come i dettagli per la connessione al database e la nestra di timeout per i visitatori. Se avete bisogno di modi care tali dati sentitevi liberi di farlo. Il valore di $dbHost dovrebbe essere il vostro server MySQL: nella maggior parte dei casi sar 127.0.0.1 oppure localhost . $dbUsername e $dbPassword saranno diversi a seconda del vostro setup, e dovreste sostituirne i valori per rispecchiare quelli di autenticazione per il vostro server (controllate il box Utenti MySQL in breve ). $dbDatabase dovrebbe rimanere lo stesso a meno che non abbiate chiamato il database in modo diverso. Dovete continuare a usare la funzione mysqli_connect() cos come la mysqli_query() , richieste perch sono le fondamenta necessarie delle query SQL. Passando le credenziali di autenticazione a mysqli_connect() ottenete un handle che viene memorizzato in $mysqli: $mysqli = mysqli_connect($dbHost, $dbUsername, $dbPassword, $dbDatabase); if ($mysqli_connect_errno($mysqli) echo Connessione non riuscita a MySQL: . mysqli_connect_error(); Sotto la funzione iniziale di connessione rimane la stessa query di inserimento per lIP del visitatore per tracciare la visita: mysqli_query($mysqli, REPLACE INTO visitors (ip_address) VALUES ( . mysqli_real_escape_ string($mysqli,$_SERVER[remote_addr]) . )); Allo stesso modo rimane la query per recuperare tutti i dati dei visitatori che vi interessano, con una piccola modi ca: $visitors = mysqli_query($mysqli, SELECT ip_address FROM visitors WHERE UNIX_TIMESTAMP(NOW())UNIX_TIMESTAMP(visited) <= . mysqli_real_escape_ string($mysqli, $time_limit) . ); La query di cui sopra recupera un solo dato dal database: lindirizzo IP. Dal momento che volete

Creare un database in phpMyAdmin un gioco da ragazzi. Tutto quello che vi serve dargli un nome e premere Crea!

82

LINUX PRO 120

PHP
Installare PHP in Linux
La maggior parte delle distribuzioni Linux contengono gi PHP. Anche se potete lanciare gli script PHP da riga di comando, qui userete un browser Web (e quindi un Web server). Potete seguire questo tutorial caricando i vostri le PHP in un Web server in Rete, se ne avete uno, oppure sfruttare uninstallazione standard di Apache2 sulla vostra macchina locale; questultima soluzione si pu rivelare pi pratica e veloce del caricare ogni volta i le via FTP. Se avete bisogno di istruzioni per linstallazione e la congurazione, vi raccomandiamo di leggere la sezione Installation on Unix Systems nel manuale ufciale di PHP su http://php.net/manual/en/install.unix. php. In alternativa, esistono centinaia di guide per linstallazione scritte per praticamente qualsiasi distribuzione Linux. Google vi aiuter nella vostra ricerca se il sito di PHP non basta.

Tip
Commentate sempre il vostro codice man mano che lo scrivete. Anche se al momento non vi sembra avere molto senso, lo acquister quando tornerete su quello stesso codice qualche mese pi tardi. I commenti daranno un senso a tutte quelle complicate funzioni che avete scritto.

visualizzare tutti i dati, ora vi serve recuperare, per lappunto, tutta la riga. MySQL dispone di una comoda scorciatoia per ottenere tutti i dati nel database: senza dover inserire a mano tutti i nomi dei campi, potete speci care semplicemente * . Lasterisco funziona infatti come una wildcard, e MySQL lo interpreta come Voglio ogni colonna della tabella. In pratica state chiedendo tutto quello che pu fornirvi il database; se volete limitare i dati, comunque, potete sempre speci care a mano il nome delle colonne (e.g. ip_address, visited ). Modi cate quindi la query di conseguenza: $visitors = mysqli_query($mysqli, SELECT * FROM visitors WHERE UNIX_TIMESTAMP(NOW())UNIX_TIMESTAMP(visited) <= . mysqli_real_escape_ string($mysqli, $time_limit) . ); Le due funzioni UNIX_TIMESTAMP() e NOW() sono peculiari di MySQL. NOW() de nisce la data e lorario attuale (nel formato YYYY-MM-DD HH:MM:SS) e UNIX_TIMESTAMP() converte un timestamp a EPOCH; per un ripasso su EPOCH fate riferimento al box sullargomento. Ora siete al punto dello script in cui volete modi care il comportamento del tutorial precedente dallo stampare semplicemente un intero (con il numero di visitatori) a una lista di IP con lorario di visita.

Modi care loutput


In precedenza avete usato la funzione mysqli_count_rows() per ottenere il numero delle righe ritornate dalla query SQL. Ora necessario mantenere la funzione cos da non dover scrivere codice PHP aggiuntivo per contare gli elementi dellarray di dati, ma dovrete anche memorizzare localmente questi ultimi per visualizzarli facilmente sulla pagina. Creerete quindi un array ( $visitors_data ) per archiviare le informazioni. Larray consister di due elementi, Totale e Visitatori . Il campo Totale registrer il conteggio risultante da mysqli_num_rows(), mentre Visitatori conterr un altro array con i dati dei visitatori. Visualizzando questo array, la struttura sar simile a: $visitors_data = array( total => [integer], visitors => [array] ); Come potete vedere, lineare. Buttatevi quindi sul codice e aggiungete le funzioni per recuperare e memorizzare i dati sui visitatori. Potrebbe risultarvi complicato a prima vista, ma tutto vi verr spiegato tra poco. Immediatamente sotto la query SQL (dove avete fatto la modi ca con * ) aggiungete il codice seguente:

if(is_numeric(mysqli_num_rows($visitors)) && mysqli_num_ rows($visitors) > 0) { $visitors_data[total] = mysqli_num_rows($visitors); while($online_visitors = mysqli_fetch_array($visitors)) { $visitors_data[visitors] = array( ip_address => $online_visitors[ip_address], visited => $online_visitors[visited], ); } } La prima riga con la direttiva if() relativamente semplice. Qui controllate se la query ha ritornato un set di righe con la funzione is_numeric() e argomento mysqli_num_rows() . La prima ritorna semplicemente true o false in base allargomento. Se il valore allinterno numerico, la funzione ritorna true e viene eseguito il codice allinterno delle parentesi graffe. La riga iniziale assegna il valore totale del conteggio a $visitors_ data[total] . Quella successiva inizia invece un ciclo while() , ed la parte in qualche modo pi complessa: contiene il nucleo della memorizzazione in locale dei dati del database, e sfrutta una funzione PHP molto utile: mysqli_ fetch_array() . Questultima funzione prende un dataset ritornato dalla query SQL, riga per riga, e vi permette di recuperare le colonne/dati relative via array: la chiave sar il nome della rispettiva colonna. Nellesempio, il database ha due campi, ip_address e visited . PHP creer un array temporaneo con i nomi di questi campi come chiave, e vi assocer le righe di dati. A questo punto vi basta prendere loutput della funzione e assegnarlo a $online_visitors , convertendolo implicitamente in un array. Dal momento

Con phpMyAdmin potete controllare velocemente i dati sui vostri visitatori senza dover usare per forza le pagine del sito Web LINUX PRO 120

83

PHP
Tip
Usate un editor di testo che disponga dellevidenziazione della sintassi per PHP: vi aiuter a identicare velocemente nel vostro codice blocchi specici o funzioni. Esistono molti programmi liberi, quindi date unocchiata in giro e scegliete ci che pi vi aggrada.

Utenti MySQL in breve


Gli utenti in MySQL funzionano similarmente alla vostra piattaforma Linux. Quando installate MySQL per la prima volta, vi viene chiesta una password per lutente root. Una volta completata linstallazione, potete quindi connettervi come root. Per lo sviluppo locale molti utenti lanciano le applicazioni come root, ma non serve dire che non dovreste mai usare questo utente per connettervi sul Web. buona norma creare sempre un utente locale con lo stesso nome del database. In questo modo ogni database ha il suo utente ed limitato a questo, riducendo i danni in caso di compromissione dellaccount. Impostare correttamente un utente pu proteggervi anche da alti livelli di SQL injection. I permessi che date allutente dovrebbero essere quelli minimi per completare i propri compiti. Potete creare facilmente gli utenti in phpMyAdmin nella scheda Privilegi. Potete assegnare permessi globali o restringerli a determinati database. Pensate bene alle necessit e partite da questo.

che il metodo di assegnamento a variabile viene valutato come true, in PHP, il codice allinterno delle graffe del while() verr eseguito. Una volta terminato il codice, la condizione while sar rivalutata e il processo sar iterato nch la condizione non diventer false (ovvero non ci saranno pi righe). Grazie al cielo PHP
La documentazione ufciale PHP ha in dettaglio ogni singola funzione MySQLi: una risorsa fondamentale!

fa tutto il lavoro sporco per voi quando gestite il dataset, spostandovi di riga in riga in modo automatico a ogni iterazione. Il contenuto assegnato a $online_visitors solamente temporaneo e disponibile per quella singola iterazione del ciclo: la ragione per cui memorizzate una copia di questi dati allinterno di un altro array, rendendo pi semplice laccesso ai dati in un secondo momento senza la necessit di unaltra connessione a MySQL. Lassegnamento effettivo ad array che vedete tra le graffe del while dovrebbe esservi familiare. Come spiegato prima, state memorizzando i dati dei visitatori come array allinterno dellarray $visitors_data[visitors] . Utilizzate qui il metodo di aggiunta automatica con le doppie quadre: [] . Una volta terminato il ciclo while() PHP avr iterato su tutte le righe ritornate dalla query, e il vostro $visitors_data sar disponibile e pronto per essere utilizzato nella pagina. In questa serie avete lavorato duro con gli array, ma se ancora non siete sicuri di quello che sta succedendo, fate riferimento ai tutorial precedenti per capire come funziona.

Visualizzare i dati dei visitatori


La fatica di recuperare e memorizzare i dati dei visitatori sarebbe vana se non li mostraste poi nella vostra pagina. Farlo molto semplice, vi basta un echo delle informazioni che volete mostrare! Per visualizzare il numero di visitatori, baster stampare con echo il valore intero ritornato dalla funzione mysqli_num_ rows() . Dal momento che memorizzato in un punto diverso, ora dovrete chiamare: <?php echo $visitors_data[total]; ?> Potete racchiudere questa istruzione con tag HTML per creare unenfasi al valore, la scelta interamente vostra. Ma come fare per mostrare i dati dei visitatori? Ancora una volta PHP accorre in aiuto con la funzione foreach() . Considerandoli semanticamente, i dati dei visitatori sono dati tabellari. Dal momento che buona norma mantenere il markup corretto per i vari tipi di dati, li mostrerete quindi con una tabella HTML. Nulla di variopinto, ma potete far di meglio voi. In precedenza avete usato la funzione foreach() per scorrere un set di dati (le gare della stagione 2012 di F1), quindi non

84

LINUX PRO 120

PHP
dovrebbe esservi troppo alieno: <table border=1 cellpadding=5 cellspacing=0> <tr> <th>IP Address</th> <th>Visited</th> </tr> <?php foreach($visitors_data[visitors] as $visitor): ?> <tr> <td><?php echo $visitor[ip_address]; ?></td> <td><?php echo $visitor[visited]; ?></td> </tr> <?php endforeach; ?> </table> Noterete qui che il codice PHP integrato in alcuni tag HTML che de niscono la tabella. Si spera che abbiate gi uninfarinatura di HTML, non dovrebbe esservi troppo sconosciuto. LHTML al di l dellargomento di questo tutorial, ma se volete approfondire esistono molti siti fantastici in Rete sullargomento. La parte fondamentale in questo codice il ciclo foreach(). Iterando su ogni elemento dellarray $visitors_data[visitors] (che ora sapete contenere tutto il registro dei visitatori) assegnate ogni riga alla variabile $visitor. Questo array conterr due campi, ip_address e visited , replicando la struttura della tabella MySQL. Mano a mano che iterate, il codice allinterno delle graffe viene eseguito, creando una nuova riga della tabella. La prima colonna della tabella mostra un indirizzo IP seguito da unaltra cella con lorario di visita. importante notare che il timestamp che vedete a video il formato prede nito di MySQL. Se volete qualcosa di pi carino, potete formattarlo con la funzione PHP date() . Questultima funzione ha un ampio ventaglio di opzioni a disposizione, che potete leggere sul manuale allindirizzo http://php.net/manual/en/ function.date.php . Il metodo di formattazione visto qui assume che stiate mostrando i dati nello stesso le PHP o pagina che contiene anche le funzioni di recupero da MySQL. In caso contrario, potete semplicemente includere (con include() , appunto) il le whosonline.php in qualsiasi pagina vogliate mostrare la tabella; fate attenzione allestensione del le, che devessere .php perch le cose funzionino correttamente. A questo punto potete semplicemente inserire la tabella HTML dove volete. Quando eseguite il codice e visualizzate loutput della pagina, noterete che il design piuttosto scarno e piatto. Perch non scrivere un po di sano CSS e disegnare la tabella in modo pi piacevole? Siete liberi di sperimentare e dare sfogo alla vostra vena artistica!

MySQL.com unottima risorsa per le ultime news nel mondo di MySQL, e ci trovate anche la documentazione ufciale

sulla creazione di tabelle in MySQL dovrebbe essere un compito semplice. Potete sfruttare anche phpMyAdmin per inserire manualmente i dati con la scheda Insert disponibile in ogni visualizzazione tabella. Laspetto pi importante dellapprendimento non solo di PHP, ma di qualsiasi linguaggio, la creativit e il mettersi alla prova sempre su nuove s de. Spingete oltre le vostre capacit su PHP, e imparate a essere curiosi e creativi. Af datevi alle risorse online, dai siti di tutorial ai forum. Esistono letteralmente migliaia, se non milioni, di persone l fuori che aspettano solo di potervi dare una mano. LXP

A cosa serve EPOCH?


EPOCH, o anche POSIX Time, semplicemente il numero di secondi trascorsi dalla mezzanotte (UTC) del 1 gennaio 1970. Ad esempio, il valore EPOCH per la mezzanotte del 1 gennaio 2012 1325419200: un miliardo, 325 milioni, 419 mila e 200 secondi dalla mezzanotte del 1970. Potreste pensare quale sia limportanza, o la rilevanza, di questo dato nel lavoro in PHP. Beh, vi permette di lavorare facilmente (e matematicamente) su vari calcoli di date. Potete facilmente determinare il numero di secondi da un utente o azione a unaltro. Potete anche pensare di usarlo in alcune forme di lock sensibili al tempo. EPOCH torna sempre utile, specialmente quando non pensate possa servire!

E ora?
Ora che avete imparato le basi per il recupero dei dati da una query MySQL e literazione sul risultato, perch non applicarle ad altri tipi di dati? Potete recuperare le prime puntate del tutorial, e magari memorizzare il calendario della stagione 2012 di F1 su database. Utilizzando la funzione DATE() (in MySQL, non PHP) in una condizione WHERE potete ltrare solo le gare rimaste nella stagione. Potete anche spingervi un po oltre e introdurre i team e i dati sui piloti, creando altre tabelle nel database e scrivendo query per recuperare informazioni speci che. Seguendo la guida del tutorial precedente

Nella prossima puntata


Per la penultima puntata di questa serie, vedrete come visualizzare i contenuti del popolare social network Twitter sul vostro sito personale. Imparerete come lavorare con lXML dellAPI di Twitter attraverso la libreria SimpleXML per PHP, e implementerete un basilare sistema di caching basato su le per migliorare la velocit e le performance delle pagine.

LINUX PRO 120

85

Assembly

Assembly: conosci il tuo codice!


Nel viaggio alla scoperta della programmazione a basso livello, Linux Pro vi svela come utilizzare librerie condivise ed effettuare operazioni matematiche e di input/output
Generalmente i non addetti ai lavori considerano la programmazione Assembly unattivit dispendiosa, che costringe a scrivere le cose da zero e a impiegare 50 volte pi tempo rispetto alle stesse operazioni nei linguaggi ad alto livello. Non si tratta di unaffermazione veritiera, come avete visto scrivendo una routine per la stampa delle stringhe nella puntata precedente. Certamente un linguaggio complesso, tuttavia una volta scritta una funzione possibile riutilizzarla quando necessario. Non sarebbe una grande cosa poter usare molte routine per velocizzare lo sviluppo? Nel DVD, troverete library.asm, una collezione di routine in linguaggio Assembly (per NASM) che potete includere nel vostro programma e utilizzarla a piacimento. Includerla nel codice sorgente del vostro programma semplice: copiate library.asm nella directory del codice e aggiungete la riga seguente in coda al le: %include library.asm section .data mystring db Ciao mondo asm, 0 lib_input_string attende linput dellutente e la pressione del tasto Invio per memorizzare una stringa terminata da zero nel buffer puntato dal registro EDI (massimo 256 caratteri). Esempio: section .text mov edi, mybuf call lib_input_string section .bss mybuf resb 256 Fate attenzione alla sezione .bss. Viene utilizzata per memorizzare informazioni modicabili in futuro, diversamente da .data, che memorizza stringhe non modicabili. In .bss viene utilizzato resb 256 per riservare 256 byte di memoria per letichetta mybuf, nei quali memorizzare i dati. lib_print_number stampa il numero passato nel registro EAX, no a un massimo di 4.294.967.295. Esempio: mov eax, 357547 call lib_print_number Si noti come sia necessaria la presenza di una libreria diversa da quella usata per le stringhe. Se chiamaste lib_print_string, questa utilizzerebbe il numero 357.547 come una locazione di memoria e il risultato sarebbe completamente bizzarro.
dentro il Codice d esempio

PRO

Effettuare la chiamata
Queste routine gestiscono input e output di stringhe e numeri, la pulizia dello schermo e luscita dal programma: tutto quello che dovrete fare inserire nei registri i valori necessari e chiamarle... lib_print_string stampa sullo schermo una stringa terminata da zero, puntata dal registro ESI. Esempio: section .text mov esi, mystring call lib_print_string

Trucchi del mestiere


Il comportamento interno delle routine varia molto da una allaltra. Guardando il codice di lib_print_number in library.asm, vedrete come vengano sfruttati diversi trucchetti per generare un numero intelleggibile in base 10 partendo dal contenuto di EAX. Per farlo si sfrutta la matematica, come vedrete in seguito. lib_input_number attende linput dellutente per un numero decimale e la pressione del tasto Invio, per memorizzare il risultato nel registro EAX. Esempio: call lib_input_number; ora EAX contiene il numero call lib_print_number lib_clear_screen pulisce la nestra del terminale utilizzando i codici VT100, e spostando il cursore nellangolo in alto a sinistra. lib_exit termina il programma con il codice di ritorno (opzionale) fornito nel registro EBX. Queste routine vi consentono di alimentare linput dei vostri programmi. Con leccezione di lib_exit, tutte le routine utilizzano pusha e popa per preservare i registri non menzionati, per assicurarsi che la loro chiamata non abbia conseguenze sui programmi. Pensatele come a piccole scatole nere afdabili. Naturalmente potreste leggervi il codice di library.asm e vedere quanto ne capite dopo quanto imparato nelle scorse due settimane potreste sorprendervi.

library.asm utilizza varie chiamate al kernel per ottenere e visualizzare linput utilizzatela per aggiungere funzionalit ai vostri programmi

86

LINUX PRO 120

Assembly
Debuggare lAssembly
Se avete speso qualche ora lottando con GDB per risolvere qualche problema, la parola debugging probabilmente vi spaventer. Potete generare le informazioni di debug nelleseguibile passando lopzione -g a NASM (si veda la pagina di manuale per ulteriori informazioni), tuttavia, essendo programmatori hardcore, vorrete fare le cose a mano. Quando qualcosa non funziona nel programma, spesso colpa del contenuto dei registri o dello stato dello stack. Per il primo, potete utilizzare la routine lib_print_number da library.asm che stampa EAX, ma potete spostare unaltro registro in EAX se necessario. Se il programma nisce sputando un grande ammontare di informazioni potreste volerne vedere il progresso passo passo inserendo una chiamata a lib_input_number, in modo da bloccare lesecuzione no alla pressione del tasto Invio. Ecco un esempio: un ciclo effettua simpatiche operazioni e volete controllare il valore del registro EBX in ogni esecuzione del ciclo. Inserite quanto segue: pusha mov eax, ebx call lib_print_number call lib_input_number popa pusha e popa preservano i registri e la chiamata a lib_input_number rallenta un po le cose. Se volete vedere lultimo numero sullo stack, provate: pop eax call lib_print_number push eax Il push fondamentale dato che quando viene eseguito il pop dallo stack, viene spostato lo stack pointer ESP. Perci per tornare allo stato precedente necessario pushare nuovamente il numero in modo da far tornare in posizione ESP.

Operazioni matematiche
Tornate ora alle istruzioni CPU. Avete visto come inserire numeri nei registri, come spostarli e come saltare in diversi punti del codice dopo comparazioni. Larchitettura x86 include, inoltre, molte istruzioni per la matematica addizione, sottrazione, moltiplicazione e divisione. Sono molto semplici da utilizzare e funzionano con i registri general-purpose. Per esempio, due istruzioni valide per laddizione sono: add eax, ebx add ecx, 50 Nella prima riga, il contenuto di EBX viene aggiunto al contenuto di EAX, memorizzando il risultato nel registro EAX. Nella seconda riga, viene aggiunto 50 al contenuto del registro ECX. Lo stesso vale per la sottrazione: section .data mynum db 5 EAX viene moltiplicato per il valore byte memorizzato nella sezione .data puntato dalletichetta mynum. La divisione funziona in modo analogo: mov eax, 50 mov ebx, 10 div ebx Dopo lesecuzione, EAX conterr 5. Analogamente a mul possibile utilizzare le locazioni di memoria. Che fare con le divisioni con resto? Ad esempio con: mov eax, 50 mov ebx, 30 div ebx EAX contiene 1, dato che 30 sta in 50 una sola volta. Il resto viene memorizzato nel registro EDX; fatto fondamentale da sapere anche se non utilizzerete il resto il registro. EDX dovr infatti essere oggetto di push e di pop prima e dopo la chiamata. Oltre alle operazioni aritmetiche, in x86 sono presenti istruzioni come and, or, xor e not per le operazioni bit a bit. Queste tuttavia esulano dallo scopo del tutorial e non vi serviranno nei programmi che realizzerete.

Tip
NASM offre alcune opzioni di avviso per allertare lutente nel caso di etichette mal denite e operazioni in memoria dove non sono stati denite dimensioni (byte o word). Potete abilitarle con le opzioni -w+all. Naturalmente, data la natura del codice Assembly, NASM non pu intercettare errori negli algoritmi o buffer overow; questi assume che sappiate esattamente cosa state facendo con ogni istruzione e byte di memoria!

Incrementate e decrementate velocemente i registri con le istruzioni inc e dec


sub eax, ebx sub ecx, 50 possibile incrementare e decrementare i registri di ununit utilizzando le istruzioni inc e dec, come visto nello scorso numero. La moltiplicazione funziona in modo leggermente diverso, dato che necessario utilizzare EAX come registro di memorizzazione ed possibile moltiplicarlo solo per un registro o una locazione di memoria e non per un valore numerico. Cominciano ad apparire le prime stranezze dellarchitettura x86. Ecco unoperazione di moltiplicazione valida: mov eax, 10 mov ebx, 5 mul ebx Dopo lesecuzione EAX contiene 50. Potete eseguire anche operazioni come questa: mov eax, 10 mul byte [mynum]

Se volete informazioni su NASM il sito in cui guardare www. nasm.us LINUX PRO 120

87

Assembly
Dalla teoria alla pratica
Nei prossimi paragra vedrete come assemblare gli elementi utilizzati nora. Scriverete un programma per calcolare il fattoriale di un numero il prodotto di tutti i valori no al numero. Il fattoriale di 5, per esempio, 1 x 2 x 3 x 4 x 5, che equivale a 120. Non si tratta di unoperazione complessa da scrivere in Assembly, tuttavia ogni qualvolta che si approccia un nuovo problema bene abbozzare pseudocodice per capire come operare. Ad esempio: prendi il numero in A metti 1 in B nch A maggiore di 0: moltiplica A per B e memorizzalo in B sottrai 1 da A Con questo approccio, se lutente inserisce 5 come valore di A, la prima operazione sar 5 x 1, con il risultato che viene memorizzato in B. Successivamente viene sottratto 1 ad A e moltiplicato per B per cui loperazione sar 4 x 5. Questo produce 20, che viene moltiplicato per 3, dando 60. Poi 2 x 60 da 120 e loperazione nale sar 1 x 120 che il risultato voluto. Facile no? Se non avete mai sviluppato una funzione fattoriale prima dora, studiate attentamente lo pseudocodice. Ci sono molti modi per farlo ma questo pi semplice.

Assemblaggio in corso
Ecco il codice del programma, che trovate nel DVD come maths.asm. Assemblatelo e linkatelo con il comando nasm -f elf maths.asm && ld -s -o maths maths.o Notate come library.asm sia stata inserita nella stessa directory, fornendo input e output al programma come descritto in precedenza. section .data prompt_string db Inserisci un numero: , 0 result_string db Fattoriale = , 0 section .text global _start

Ecco qua, un calcolatore di fattoriale in 752 byte (e la maggior parte occupata dalla libreria di IO)

_start: mov esi, prompt_string call lib_print_string call lib_input_number mov ebx, eax mov eax, 1

.loop: mul ebx dec ebx cmp ebx, 0 jne .loop mov esi, result_string call lib_print_string call lib_print_number

Assembly oggigiorno
facile pensare che il linguaggio Assembly sia poco pratico al giorno doggi, dato che ogni cosa viene scritta in linguaggi ad alto livello. Non proprio cos. Solo un pazzo riscriverebbe LibreOfce in Assembly, tuttavia sono ancora molti gli scenari dove eliminare il compilatore e lavorare a livello di istruzioni CPU una buona cosa. Prendete i device driver ad esempio. Molti linguaggi ad alto livello offrono poche chance di interagire direttamente con porte hardware, interrupt e altre risorse a basso livello. Il C consente di lavorare con Assembly inline ma i risultati sono spesso pessimi, come noterete dando unocchiata al codice dei driver nel kernel Linux. Segue poi lottimizzazione. I compilatori moderni sfruttano abili trucchi, tuttavia, scrivendo programmi dove una singola funzione viene chiamata milioni di volte al secondo, come un gioco o unapplicazione matematica, a volte utile gestire manualmente queste routine. O almeno prendere quanto prodotto dal compilatore e rimuovere le parti non necessarie. Inne, i programmatori di sistemi embedded tendono a basarsi esclusivamente su codice Assembly. Prendete per esempio la famiglia di microcontrollori PIC: ne sono stati prodotti 10 miliardi e sono presenti in praticamente ogni cosa che bippa o si accende. Si tratta di architetture semplici rispetto a x86 e, nonostante esistano linguaggi ad alto livello per i PIC, la maggior parte degli sviluppatori lavorano direttamente con il linguaggio Assembly.

Sono stati fabbricati pi chip PIC del numero di persone sulla Terra, e lAssembly il linguaggio ideale per programmare questi piccoli gioielli

88

LINUX PRO 120

Assembly
Espandere la libreria!
La vostra library.asm appena nata, con sole sei routine al suo interno, tuttavia potrebbe diventare molto pi grande e utile. Potreste cercare codice su Internet ed espanderla, ma dove starebbe il divertimento in ci? Sarebbe pi divertente se i lettori di LXP lavorassero insieme per creare una splendida libreria comune. Avete probabilmente milioni di idee per piccole routine Assembly da utilizzare nei vostri programmi, perci se ne avete scritte fatecelo sapere. Che tipo di routine creare? Secondo noi, tutti i software di qualit vengono dai grattacapi, perci pensate a cosa vorreste in un programma e implementatelo. Potreste voler creare una routine per generare la radice quadrata di un numero, per esempio, o scrivere qualcosa di simile a lib_clear_screen, che prenda le coordinate da EAX e EBX e che sposti il cursore conseguentemente. spesso utile prendere routine dei linguaggi ad alto livello e portarle in Assembly, in modo da sostituire esattamente il ruolo del compilatore (e capire come fa). Nella maggior parte delle routine, una buona idea utilizzare pusha allavvio e popa alla ne, per preservare lo stato dei registri ed evitare di far crashare i programmi che le usano. Se volete restituire un valore, comunque, esistono dei trucchi per farlo. Guardate come funziona lib_input_number per ispirarvi: mov long [.tmp], eax popa mov long eax, [.tmp] ret section .bss .tmp resb 4 Il registro EAX viene temporaneamente memorizzato nei quattro byte puntati da .tmp nella sezione di dati non inizializzati. Chiamate ora popa per ripristinare i registri salvati allinizio e copiate .tmp in EAX per ritornare alla routine chiamante. Inviate il vostro codice alla redazione e happy coding! Fateci sapere quando avete creato qualcosa di interessante. Nei prossimi mesi vogliamo vedere crescere la libreria con tante funzioni utili.

call lib_exit %include library.asm Date unocchiata al codice passo per passo. Cominciate con la sezione .data, contenente una coppia di stringhe sse, seguita dalla sezione .text contenente il codice stesso. Successivamente trovate _start (il punto di avvio dellesecuzione da indicare al linker) e le prime tre righe che si occupano della stampa di un messaggio e di ottenere un valore numerico dallutente, inserendolo nel registro EAX. Di seguito il processo di calcolo del fattoriale. Per prima cosa EAX viene copiato in EBX, dato che EAX necessario per il calcolo del risultato (dato che si tratta dellunico registro di destinazione per listruzione mul).

Viene poi istituita unetichetta locale per lavvio di un ciclo ed effettuata la prima operazione di moltiplicazione. Successivamente viene sottratto uno da EBX utilizzando listruzione dec e controllando che il risultato sia maggiore di zero. Se lo , il ciclo continua. Ricordate che i risultati vengono memorizzati in EAX che aumenta mentre EBX decresce. Perci se lutente inserisce 5 la prima operazione 5 x 1 e lultima sar 1 x 120. Una volta completato il ciclo, viene stampato un messaggio seguito dal numero, per poi terminare il programma. I beneci di una libreria esterna sono evidenti, come avete potuto notare, dato che possibile concentrarsi sul codice per il calcolo fattoriale e non sulle chiamate al kernel e simili.

I trucchi di NASM
In questo tutorial avete utilizzato %include, che non una istruzione CPU ma un modo di dire a NASM di includere un altro le sorgente dentro quello corrente. Sono molte le pseudo-istruzioni utilizzabili con NASM, che non lavorano con la CPU ma indicano a NASM cosa fare. Ad esempio, potete utilizzare incbin seguito dal nome del le (tra apici) per includere un le binario nel le corrente. Perch volerlo fare? Potreste voler includere un le audio o unimmagine nel programma, perci collegate unetichetta al comando incbin e utilizzate i dati relativamente a questa. Infatti, potreste scrivere un gioco dove tutti gli effetti sonori e gli sprite sono inclusi nelleseguibile nale, perci non dovrete individuarli e caricarli dal lesystem a runtime. Unaltra utile parola chiave di NASM equ, che consente la denizione delle costanti. Lavete gi vista nella prima puntata, dove lavete utilizzata per denire la lunghezza di una stringa. Nel momento in cui cominciate a scrivere programmi complessi, potreste voler inserire valori importanti in testa in modo da modicarli in una singola posizione, invece di ricercarli nel codice. Ad esempio... SPEED equ 9000 mov eax, SPEED cmp ebx, SPEED Qui, NASM sostituisce semplicemente ogni istanza di SPEED con il numero 9000 prima di generare leseguibile. Prima di terminare, una piccola nota riguardante il presso times. Potete utilizzarlo per ripetere loperazione specicata un certo numero di volte, senza doverla riscrivere manualmente. Per esempio, se dovete effettuare 10 operazioni movsb (move string byte) consecutive, potete utilizzare il codice: times 10 movsb Se disassemblate il binario risultante con ndisasm, vedrete 10 istruzioni movsb nel punto precedente. Carino vero? LXP

Nella prossima puntata


La sda nale: scrivere il proprio sistema operativo!

LINUX PRO 120

89

OpenCV

Face recognition
Linux Pro vi mostra come individuare un volto allinterno di unimmagine... naturalmente, con OpenCV! Lautore
Maurizio Russo Laureato in Informatica presso lUniversit 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, networking, progettazione e sviluppo di software.

dentro il Codice d esempio

PRO

Nella scorsa puntata, abbandonata limage processing, siamo nalmente approdati alla Computer Vision vera e propria, introducendo il problema del template maching. Abbiamo esaminato la questione nella sua complessit, implementando dapprima una soluzione banale e immediata (basata sulla ricerca pedissequa dei pixel del template allinterno dellimmagine base), per poi ragionare su un algoritmo pi generale, in grado di vericare anche la presenza di un match parziale tra le due immagini. Come ciliegina sulla torta, abbiamo introdotto la funzione cvMatchTemplate() (offerta da OpenCV per limplementazione del template matching), adoperandola allinterno di un terzo programma di prova. In altri termini, siamo partiti da un problema (date due immagini, vericare se la prima presente nella seconda) per poi realizzare diverse soluzioni, dalla pi particolare (e costosa) a quella pi generale (e rapida): si tratta di un processo mentale che si ripetuto innumerevoli volte nel corso di questa serie,

e ci ha consentito di introdurre le funzioni offerte da OpenCV forti di un buon background teorico, apprezzando al contempo il lavoro dei programmatori della libreria (proprio perch, prima di utilizzare in maniera meccanica la funzione della puntata, ci siamo impegnati a realizzare una versione artigianale!). Lalgoritmo trattato in questa puntata, tuttavia, appartiene a quellinsieme di temi per i quali lapproccio sinora eseguito risulta inapplicabile: il campo della face recognition (riconoscimento facciale) , infatti, eccessivamente complesso, ed esclude pertanto la possibilit di descrivere in poche pagine la realizzazione ex novo di un algoritmo completo.

Machine Learning
Il riconoscimento facciale rientra nel campo della machine learning: lambizione massima di questa branca dellinformatica insita nel suo nome, e consiste nella realizzazione di algoritmi in grado di simulare quanto pi possibile la mente umana, riproducendo in particolare le caratteristiche in termini di apprendimento, astrazione e generalizzazione. Se infatti alcuni task sono banali per una mente umana, la loro trasposizione su elaboratore risulta decisamente complessa. il caso, ad esempio, del problema del riconoscimento del volto di una qualsiasi persona data una fotograa, o pi semplicemente, del riconoscimento del signicato di una conversazione: task banali e immediati per qualsiasi essere umano, che tuttavia risultano di difcile implementazione sugli elaboratori. Ma come funzionano i moderni algoritmi di machine learning e, in particolare, gli algoritmi di riconoscimento oggetto di questa puntata? Fornita una collezione di dati di input, gli algoritmi di riconoscimento (detti anche classicatori) si preoccupano di (Fig.1): analizzare i dati; estrarne le caratteristiche salienti (o feature); aggregare e compendiare le feature estratte allinterno di un modello, che costituisce il motore del sistema di riconoscimento. Un buon algoritmo di riconoscimento basato sulle tecniche di machine learning, quindi, in grado di inferire un modello generale a partire dallesame di un insieme di dati iniziali: in altri termini, in grado di imparare! Al ne di agevolare il processo di apprendimento, la collezione di dati iniziali va suddivisa in tre sottoinsiemi (Fig.2): 1 training set - il primo insieme di dati che viene somministrato allalgoritmo, determinando la generazione del modello. Afnch questultimo sia coerente e consistente, il training set deve essere costituito da un campione rappresentativo di tutti i possibili input che saranno sottoposti, a regime, allalgoritmo: ci comporta, di conseguenza, la presenza sia di dati contenenti le caratteristiche desiderate

1 Il processo che, in un algoritmo di machine learning, porta alla realizzazione del modello a partire dai dati, detto di apprendimento

90

LINUX PRO 120

OpenCV
(per i quali, cio, il processo di riconoscimento dovrebbe concludersi positivamente), sia di dati privi di tali feature, distinti tra loro dalla presenza di opportune etichette (o label, Fig.3). Lalgoritmo cui viene dato in input il training set, infatti, privo del motore di riconoscimento (il modello) e, pertanto, deve essere opportunamente istruito, attraverso le label, sulla natura dei dati: in altri termini, le etichette spiegano il signicato del dato, dando modo allalgoritmo di imparare; 2 validation set - il modello inferito dal training set potrebbe garantire unafdabilit minore di quella desiderata; scopo del validation set proprio quello di vericare leffettiva capacit di riconoscimento dellalgoritmo. Il validation set costituito da dati non etichettati, che vengono sottoposti allalgoritmo per saggiarne le capacit in termini di: riconoscimenti corretti; falsi positivi (dati scambiati erroneamente per dati contenenti le feature desiderate); falsi negativi (dati erroneamente ritenuti non dinteresse). I risultati del processo di riconoscimento sono poi confrontati con quelli ottimali fornendo una misura dellefcacia del modello. In caso di performance insoddisfacenti, possibile modicare il training set (reiterando il processo di apprendimento) oppure agire sullalgoritmo, integrando il codice sorgente (Fig.4); 3 test set - prima di essere rilasciato, lalgoritmo deve essere opportunamente testato. Tale processo si svolge con modalit analoghe a quelle della validazione, tramite il ricorso a un terzo insieme di dati, detto test set.

risoluzione, risulta infatti particolarmente onerosa dal punto di vista computazionale, rendendo auspicabile qualsiasi snellimento della procedura. La riduzione delle feature pu essere ottenuta mediante un procedimento incrementale che, ciclicamente: esamini linsieme F delle feature dinteresse; calcoli linsieme F, ottenuto da F mediante la rimozione di una singola feature f; istruisca lalgoritmo mediante il training set, estraendo il modello sulla base dellanalisi delle feature in F; verichi le performance dellalgoritmo, in termini di capacit di riconoscimento, sottoponendo al nuovo modello linsieme delle immagini del validation test; confronti le performance con quelle ottenibili considerando lintero insieme F (che include la feature f rimossa in F): se il confronto rileva risultati analoghi, allora la feature pu essere considerata ininuente; viceversa, decrementi signicativi delle performance rivelano limportanza della feature esclusa.

2 La collezione di dati iniziali da sottoporre allalgoritmo di machine learning viene suddivisa in tre insiemi: training set, validation set e test set

OpenCV e face detection


La libreria OpenCV offre numerose funzionalit anche nel campo della machine learning, ivi compresi algoritmi per il riconoscimento dei volti (face detection) che costituiscono largomento principale di questa puntata. In particolare, analizzeremo lalgoritmo Haar classier,

Computer Vision e Machine Learning


Per poter applicare gli algoritmi di machine learning alla computer vision, necessario contestualizzare alcuni degli aspetti sin qui analizzati: in che modo si effettua il labelling? Loperazione di etichettatura richiede, a un operatore umano, lesame di un numero considerevole (anche decine di migliaia) di immagini: un lavoro proibitivo per un singolo! Una possibile soluzione potrebbe essere rappresentata dal ricorso a tool collaborativi, magari sotto forma di applicazione Web, in grado di distribuire i carichi di lavoro su un certo numero di operatori; quali sono le feature da considerare ai ni dellalgoritmo? A seconda delle scelte, potrebbe essere necessario/opportuno un pretrattamento dellimmagine con algoritmi di image processing (conversione in bianco e nero, equalizzazione, trasformazioni di scala, negativo, ecc.), in grado di rendere pi evidenti le caratteristiche dinteresse, velocizzando lalgoritmo; come gestire la presenza di disturbi (rumore additivo, rumore impulsivo, variazioni di luminosit) nelle immagini? In che misura le feature scelte sono suscettibili alla presenza di tali disturbi? Nel caso si giudichi probabile il decremento delle performance dellalgoritmo su immagini affette da disturbi, occorre prevedere un pretrattamento con ltri (es. ltro di smoothing) in grado di attenuarli senza inciare le feature dinteresse. In aggiunta a queste problematiche, fondamentale ridurre allosso linsieme delle feature necessarie: lanalisi di immagini, specie ad alta

3 Ogni dato del learning set associato a unetichetta che specica la presenza (o lassenza) delle caratteristiche ricercate dallalgoritmo

4 Nel caso in cui, dopo la fase di validazione, le performance dellalgoritmo siano giudicate insufcienti, possibile modicare il codice sorgente e sottoporre il programma nuovamente alla fase di test LINUX PRO 120

91

OpenCV
utilizzare il modello, sufciente invocare il seguente codice: #dene MODEL haarcascade_frontalface_alt.xml /* caricamento del modello */ model=(CvHaarClassierCascade*) cvLoad(MODEL, 0, 0, 0); if(model==NULL) { printf(Errore: impossibile accedere al le %s!\n,MODEL); return ERRORE; } che procede al caricamento del le in memoria. A questo punto, non ci resta che richiamare lalgoritmo di riconoscimento, attraverso la funzione cvHaarDetectObject(). La funzione si basa sullaggregazione dei risultati di pi algoritmi deboli (ovvero le cui performance, in termini di attendibilit, sono di poco superiore al 50%, percentuale raggiungibile, per le regole del calcolo delle probabilit, attraverso una scelta randomica), eseguiti in successione sulla medesima immagine al ne di identicare, con ragionevole certezza, la presenza di un volto (o la sua assenza). Attraverso numerose iterazioni (durante le quali viene ampliata di volta in volta la nestra di rilevamento, che determina le dimensioni del pi piccolo volto individuabile), vengono delimitate le regioni potenzialmente interessanti, sulle quali viene tracciato un rettangolo. Al termine, il numero di rettangoli sovrapposti consente di discernere i falsi positivi dai match reali (come mostra la Fig.6, un rettangolo isolato, verosimilmente, coincide con un falso positivo, mentre la sovrapposizione di pi rettangoli indica, con elevata possibilit, la presenza di un oggetto dinteresse allinterno dellarea che costituisce lintersezione tra le gure). Il prototipo della funzione (Fig.7) il seguente: CVSeq *cvHaarDetectObjects(const CvArr *image, CvHaarClassierCascade *model, , CvMemStorage *storage, double scale_factor, int min_neighbors, int ags, CvSize min_size); dove: image limmagine target, ovvero quella su cui eseguire lalgoritmo di riconoscimento facciale; model il modello dellalgoritmo, precedentemente caricato con cvLoad(); storage una variabile di tipo CvMemStorage (da allocare prima dellinvocazione della funzione), utilizzata da cvHaarDetectObject() per la memorizzazione dei risultati intermedi; scale_factor denisce il fattore di scala applicato tra una iterazione e laltra; min_neighbors costituisce il numero minimo di rettangoli che, se sovrapposti, identicano unarea contenente un volto (un valore eccessivamente ridotto assegnato a questo parametro pu determinare un certo numero di falsi positivi; viceversa, valori troppo elevati possono ridurre sensibilmente il numero dei volti rilevati, comportando la presenza di falsi negativi); ags utilizzato per pretrattare, se necessario, limmagine con lalgoritmo di Canny per ledge detection, al ne di identicare le regioni che, contenendo troppi o troppo pochi edge, possono essere scartate a priori in quanto non dinteresse; min-size denisce le dimensioni minime di un volto

5 La directory /usr/local/share/OpenCV/haardcascades contiene i modelli offerti da OpenCV

completo di un modello gi perfettamente funzionante per il riconoscimento frontale: tale modello, fornito dalla libreria sotto forma di le XML, ci esonera dallimplementazione delle tre fasi (training, validation e test) che, come visto nei paragra precedenti, risultano particolarmente onerose dal punto di vista realizzativo, dunque difcilmente si prestano (tenuto conto anche del numero di immagini etichettate necessarie per ogni fase) a un contesto domestico o amatoriale. Gli autori delle librerie danno comunque la possibilit, a chi volesse cimentarsi, di effettuare un training mirato dellalgoritmo, che gli consenta di apprendere le modalit di riconoscimento di oggetti diversi dal volto umano (in particolare, si ottengono buone performance con corpi rigidi come automobili, motociclette e biciclette). In questa sede, tuttavia, ci accontenteremo del gi citato modello incluso in OpenCV per il riconoscimento dei volti disposti frontalmente: il le XML in questione (di cui, a ogni buon conto, alleghiamo una copia sul DVD) si trova allinterno delle directory dinstallazione di OpenCV, generalmente al path /usr/local/share/OpenCV/haarcascades (Fig.5). Per semplicit, copiamo il le allinterno della directory che conterr il nostro programma: questa operazione, sebbene non necessaria, ci mette al riparo da eventuali problemi allatto dellesecuzione. Per

6 In cvHaarDetectObjects(), la presenza di molteplici rettangoli sulla medesima area indica un match positivo

92

LINUX PRO 120

OpenCV
identicabile dallalgoritmo; questo parametro deve essere coerente con le caratteristiche dellimmagine, al ne di evitare un numero eccessivo di falsi positivi (nel caso in cui le dimensioni scelte siano troppo ridotte) o viceversa di falsi negativi. Introdotta la funzione, non ci resta che utilizzarla in un programma di prova che, per semplicit, si limiter allindividuazione di un singolo volto in unimmagine a toni di grigio. L implementazione del programma si snoda attraverso varie fasi: 1 caricamento del modello per il riconoscimento frontale dei volti: #dene MODEL haarcascade_frontalface_alt.xml /* caricamento del modello */ model=(CvHaarClassierCascade*) cvLoad(MODEL, 0, 0, 0); if(model==NULL) { printf(Errore: impossibile accedere al le %s!\n,MODEL); return ERRORE; } 2 allocazione di uno storage, da passare come buffer di memoria alla funzione di riconoscimento: /* creazione dello storage */ storage = cvCreateMemStorage(0); if(storage==NULL) { printf(Errore: impossibile procedere alla creazione dello storage!\n); return ERRORE; } 3 conversione dellimmagine in grayscale per velocizzare il processo di rilevamento: /* conversione in grayscale dellimmagine */ gray = cvCreateImage(cvGetSize(img), img->depth, 1); cvCvtColor(img, gray, CV_RGB2GRAY); 4 invocazione della funzione cvHaarDetectObject(): /* invocazione di cvHaarDetectObjects() */ face = cvHaarDetectObjects(gray,model, storage,1.1,3,CV_HAAR_DO_CANNY_ PRUNING,cvSize(20, 20)); if(face==NULL) { printf(Nessuna faccia rilevata!\n); return ERRORE; } 5 se stato individuato un volto, realizzazione di un rettangolo che lo metta in evidenza: /* disegnamo un rettangolo intorno al volto */ face_rect = (CvRect*)cvGetSeqElem(face, 0); vertice1 = cvPoint(face_rect->x, face_rect->y); vertice2 = cvPoint(face_rect->x + face_rect->width, face_rect->y + face_rect->height); cvRectangle(gray,vertice1,vertice2, CV_RGB(0, 0, 255),1, 8, 0); 6 visualizzazione dellimmagine ottenuta: /* creazione di una nestra per la visualizzazione dellimmagine */ cvNamedWindow(lxp_tutorial29, CV_WINDOW_AUTOSIZE); /* visualizzazione dellimmagine allinterno

della nestra */ cvShowImage(lxp_tutorial29, gray); /* attesa di un input da tastiera prima di terminare il programma */ cvWaitKey(0); Nel caso desiderassimo rilevare molteplici volti allinterno di una singola immagine, basterebbe sostituire il codice al punto 5 con un ciclo che, scandendo tutti i risultati ottenuti dallalgoritmo (il cui numero totale rappresentato da face->total), mostri un rettangolo per ognuno di essi (estraendone i relativi risultati attraverso la funzione cvGetSeqElem(face,i), con la variabile i che va da 0 a face->total 1). Siamo pronti per la verica del nostro programma, mostrato nelle sua interezza nel listato 1. Una volta compilato: g++ `pkg-cong opencv --cags --libs` -Wall listato1.c

7 La pagina di manuale di cvHaarDetectObjects()

8 Il nostro responsabile di redazione, sul quale proveremo ad effettuare il riconoscimento facciale

LINUX PRO 120

93

OpenCV
9 Il riconoscimento facciale stato completato con successo

10 Anche gli occhi sono rilevati correttamente

-o listato1 e mandato in esecuzione: ./listato1 lxp.png passandogli unimmagine contenente un volto ripreso frontalmente (noi abbiamo scelto limmagine in Fig.8, rafgurante il nostro responsabile di redazione), otteniamo il risultato desiderato (Fig.9).

Riconoscimento degli occhi


Come gi illustrato, lalgoritmo di riconoscimento offerto da OpenCV in grado di individuare, se opportunamente ammaestrato, oggetti diversi dai volti umani. Ci implica, di conseguenza, la possibilit di impiegare la funzione cvHaarDetectObject() anche per altri compiti, ivi incluso il riconoscimento degli occhi: unottima occasione per estendere le funzionalit del programma appena realizzato! Lunico ostacolo che potrebbe frapporsi tra noi e questo obiettivo costituito dallassenza di un modello per il riconoscimento degli occhi: per fortuna, la libreria OpenCV ci viene nuovamente incontro, offrendoci un le XML contenente, come nel caso precedente, un modello ad hoc. Si tratta del le haarcascade-eye.xml, che troveremo nella medesima directory gi vista in precedenza. Se si esclude il modello, la procedura per il riconoscimento degli occhi risulta analoga a quella gi implementata. In particolare, dopo il riconoscimento del volto, necessario procedere al: 1 caricamento del le XML: #dene MODEL2 haarcascade_eye.xml /* carichiamo il modello per il rilevamento degli occhi */ model = (CvHaarClassierCascade*) cvLoad(MODEL2, 0, 0, 0); if(model==NULL) { printf(Errore: impossibile accedere al le %s!\n,MODEL2);

return ERRORE; } 2 allocazione dello storage: /* creazione dello storage */ storage = cvCreateMemStorage(0); if(storage==NULL) { printf(Errore: impossibile procedere alla creazione dello storage!\n); return ERRORE; } 3 invocazione della funzione CVHaarDetectObject(): /* invocazione di cvHaarDetectObjects() */ eyes = cvHaarDetectObjects(gray,model,storage,1.1, 3,CV_HAAR_DO_CANNY_PRUNING,cvSize(40, 20)); 4 disegno dei rettangoli di delimitazione degli occhi: if(eyes!=NULL) { /* disegnamo un rettangolo intorno agli occhi */ for( i = 0; i < eyes->total; i++ ) { face_rect = (CvRect*)cvGetSeqElem(eyes, i); vertice1 = cvPoint(face_rect->x, face_rect->y); vertice2 = cvPoint(face_rect->x + face_rect->width, face_rect->y + face_rect->height); cvRectangle(gray,vertice1,vertice2, CV_RGB(0, 0, 255),1, 8, 0); } } Il codice completo illustrato dal listato 2; va compilato: g++ `pkg-cong opencv --cags --libs` -Wall listato2.c -o listato2 ed eseguito: ./listato2 lxp.png ottenendo, come previsto, i risultati rafgurati in (Fig.10). LXP

94

LINUX PRO 120

La PRIMA RIVISTA per il mondo

LINUX davvero FACILE

INTERNATIONAL

CORRI SUBITO IN EDICOLA!

Guida

Software
Sistema operativo
PRO
dentro il

Ogni mese Linux Pro vi offre i programmi e le distribuzioni pi recenti su DVD

Ogni volta che troverete questo simbolo in un articolo, vorr dire che i file citati si trovano nel DVD allegato alla rivista.

Icaros Desktop 1.4.4


Icaros Desktop la pi diffusa distribuzione del sistema operativo AROS, una riscrittura Open Source di AmigaOS disponibile per varie piattaforme, tra cui i comuni PC. Installandola, o anche solo provandola in modalit Live, potrete riscoprire un modo di fare linformatica completamente diverso da quello a cui siete ormai abituati, in cui la reattivit dellinterfaccia e il risparmio delle risorse erano le vere priorit. Una volta caricato Wanderer, il sostituto del Workbench, avrete la sensazione di trovarvi di fronte a una versione super accessoriata di AmigaOS 3.1, con le sue nestre piene di cassetti e di progetti, con le applicazioni che possono aprire custom screen da posizionare e fare scorrere verso lalto o verso il basso, e con tutta una serie di comodit che ventanni fa non erano previste: uno stack USB moderno, la connettivit TCP/IP wired e wireless, un sistema di decorazioni e il supporto allaccelerazione 3D per mezzo di Gallium 3D. La 1.4.4 , inoltre, la prima versione di Icaros Desktop capace di eseguire le applicazioni classiche per AmigaOS 3.x senza dover ricorrere a pacchetti esterni o alle ROM originali del compianto computer Commodore: ci penser una versione di AROS debitamente compilata per il processore Motorola 68000, comodamente stipata in una macchina virtuale, a occuparsi degli stessi programmi, integrandoli nel desktop. La cosa vale ovviamente anche per i videogiochi e per le demo dei coder, ancora oggi motivo di gloria e di nostalgia per la piattaforma.

Lautore
Paolo Besser

Lintroduzione di Cinnamon Writer, del gioco Hurrican e del supporto diretto alle applicazioni Amiga classiche sono le grandi novit di questa versione di Icaros Desktop

distribuzione (presente anche nel DVD) si dilunga piuttosto chiaramente sui passaggi da effettuare.

Primi passi
Una volta avviato il sistema, sar possibile accedere ai programmi contenuti principalmente nella directory Extras, suddivisi in categorie. Non tutti i programmi funzionano correttamente in modalit Live. Per esempio, lintegrazione del software classico per processori 68000 e il client di posta elettronica SimpleMail si riuteranno di partire. Dopo linstallazione su disco o chiave USB, tuttavia, diventeranno disponibili. Come da tradizione amighista, il tasto destro del mouse dar accesso al menu principale dellapplicazione selezionata, e i tasti Windows saranno rimappati come tasti Amiga sinistro e destro. Laddove essi mancassero, le stesse funzionalit verranno assunte da F11 e F12, oltre che dal tasto Menu, solitamente posizionato fra Ctrl e Alt destro. bene ricordare che lorganizzazione del lesystem e le meccaniche dellinterfaccia utente sono diverse da quelle di Linux e di Windows, per tanto chi non fosse mai stato avvezzo ad AmigaOS potrebbe trovarsi piuttosto spaesato. Anche in questo caso, il manuale di Icaros Desktop giunge in aiuto. Per quanto riguarda la compatibilit hardware, assicurata senza accelerazione 3D su VMware e VirtualBox, ma il modo migliore per apprezzare il sistema procurarsi lhardware supportato. Per usare Gallium3D, per esempio, necessaria una GPU Intel GMA 900 (o similare), o una scheda Nvidia basata su GPU GeForce FX, 6, 7 o superiore, no alle penultime release di Fermi. Le Radeon potranno essere usate, senza accelerazione, in modalit VESA. Qualora vi fossero delle ulteriori perplessit, la distribuzione dispone di un forum di supporto allindirizzo www.aros-exec.org. LXP

Il foglio elettronico per AmigaOS Ignition, recentemente rilasciato con una licenza open, gira su Icaros Desktop come una normale applicazione per x86. Lambiente M68K va congurato a priori

Installazione

Una volta estratta lISO presente nel pacchetto icaros-liveISO_144.7z possibile usarla direttamente da DVD oppure installarla sul disco sso, in una partizione libera. Purtroppo ci potr comportare qualche difcolt per gli utenti di Linux in quanto la condivisione di un disco sso richiede un intervento manuale sui le di congurazione di GRUB. Ma nulla vi vieta di installare Icaros Desktop su una chiave USB da almeno 4 GB, dopo averla ripulita di qualsiasi partizione gi presente. Il manuale in PDF incluso con la

96

LINUX PRO 120

In edicola il 19 settembre

NEL PROSSIMO NUMERO

Abbiamo scavato nei meandri delle recenti tecnologie Open Source per svelarvi un nuovo tool per la registrazione dei log di sistema

THE JOURNAL

E inoltre:
Arduino
La scheda Arduino ha una versatilit incredibile. Il mese prossimo vedrete come creare un sistema di input, insomma una tastiera, con cui digitare proprio come con una tastiera normale

XChat
I canali IRC sono tuttora frequentati da centinaia di persone. Se cercate aiuto, una fonte dinformazione o semplicemente qualcuno con cui chiacchierare, lanciate subito XChat seguendo i nostri consigli

Intervista
Ubuntu continua a essere la distribuzione pi chiacchierata del mondo Open Source. Abbiamo incontrato il CEO di Canonical per scoprire cosa c nel futuro della distro

LINUX
Mensile - 5,90 euro

PRO

Direttore Responsabile: Luca Sprea - direttore@linuxpro.it Direttore Editoriale: Stefano Spagnolo Redazione: redazione@linuxpro.it Mario Bosisio (coordinatore di redazione) Massimiliano Zagaglia (responsabile di redazione) Davide Pistritto (realizzazione DVD) Brunetta Pieraccini (segreteria) Digital media coordinator: Massimo Allievi Impaginazione: Sara Benecino Hanno collaborato: Aurelio Bignoli, Ben Everard, Chris Brown, Ciro Mattia Gonano, Claudio Romeo, Daniele Belletti, Daniele Tampieri, David Hayward, Eduard Roccatello, Emanuele Cal, Fabrizio Ciacchi, Francesca Beatrice Cice, Graham Morrison, Jonathan Roberts, Maria Vitiello, Matteo Chiarion, Maurizio Russo, Mayank Sharma, Mike Saunders, Nick Veitch, Paolo Besser, Pietro Leone, Shashank Sharma, Tiziana Remondini Iconografia e fotografie: Marco Coppola Contenuti su licenza: Linux Format - Future P.ce - London (UK)

Pubblicit: Luigi De Re - pubblicit@linuxpro.it Tel. 339 4546500 Abbonamenti (disponibili solo in versione con DVD) Si sottoscrivono in 2 minuti con 2 click via Web. Trova lofferta speciale di questo mese allindirizzo www.myabb.it/linuxpro oppure abbonamenti@ sprea.it; puoi anche abbonarti via fax 030 3198412, per telefono 199 111 999 dal luned al venerd dalle ore 8,30 alle ore 18,30. Costo massimo della chiamata da tutta Italia per telefoni fissi 0,12 + iva al minuto senza scatto alla risposta. Per cellulari costo in funzione delloperatore. Per chi volesse abbonarsi dallestero +39 041 5099049. Arretrati Si sottoscrivono online allindirizzo: www.linuxpro.it/arretrati Per informazioni: arretrati@linuxpro.it oppure fax al numero 02.70.05.37.67.2 Stampa: Arti Grafiche Boccia S.p.A. - Salerno Carta: Valpaco Paper Supply Chain Optimizer

Consiglio di amministrazione: Luca Sprea (Presidente), Stefano Spagnolo (Vice Presidente - amministratore delegato), Mario Sprea (consigliere) Collegio sindacale: Roberto Bosa (Presidente), Maria Luisa Capuzzoni, Ugo Besso Amministrazione: Anna Nese - amministrazione@sprea.it Foreign rights: Gabriella Re - international@sprea.it Marketing & pubblicit: Walter Longo marketing@sprea.it Distributore per lItalia e per lEstero: Press-Di Distribuzione Stampa e Multimedia S.r.l. - 20090 Segrate (MI) LINUX PRO Pubblicazione mensile registrata al Tribunale di Milano il 08.02.2003 con il n. 74 - Tariffa R.O.C. - Poste Italiane Spa - Sped. In Abb. Post. - D.L. 353/2003 (conv. In L. 27/02/2004 n. 46) art. 1, comma 1, DCB Milano Copyright Sprea Editori S.p.a La Sprea Editori titolare esclusiva della testata Linux Pro e di tutti i diritti di pubblicazione e diffusione in Italia. I contenuti sono adattati e tradotti su licenza della pubblicazione: Linux Format Future P.ce London (UK). Lutilizzo da parte di terzi di testi, fotografie e disegni, anche parziale, vietato. LEditore si dichiara pienamente disponibile a valutare - e se del caso regolare - le eventuali spettanze di terzi per la

Sprea Editori S.p.A. Socio unico Medi & Son S.r.L.


Via Torino, 51 20063 Cernusco Sul Naviglio (MI) Tel (+39) 02.92432.1 Fax (+39) 02.92.43.22.36 info@sprea.it - www.sprea.it

pubblicazione di immagini di cui non sia stato eventualmente possibile reperire la fonte. Informativa e Consenso in materia di trattamento dei dati personali (Codice Privacy d.lgs. 196/03). Nel vigore del D.Lgs 196/03 il Titolare del trattamento dei dati personali, ex art. 28 D.Lgs. 196/03, Sprea Editori S.p.A. (di seguito anche Sprea), con sede in Cernusco sul Naviglio (MI), via Torino, 51. La stessa La informa che i Suoi dati, eventualmente da Lei trasmessi alla Sprea, verranno raccolti, trattati e conservati nel rispetto del decreto legislativo ora enunciato anche per attivit connesse allazienda. La avvisiamo, inoltre, che i Suoi dati potranno essere comunicati e/o trattati (sempre nel rispetto della legge), anche allestero, da societ e/o persone che prestano servizi in favore della Sprea. In ogni momento Lei potr chiedere la modifica, la correzione e/o la cancellazione dei Suoi dati ovvero esercitare tutti i diritti previsti dagli artt. 7 e ss. del D. Lgs. 196/03 mediante comunicazione scritta alla Sprea e/o direttamente al personale Incaricato preposto al trattamento dei dati. La lettura della presente informativa deve intendersi quale presa visione dellInformativa ex art. 13 D.Lgs. 196/03 e linvio dei Suoi dati personali alla Sprea varr quale consenso espresso al trattamento dei dati personali secondo quanto sopra specificato. Linvio di materiale (testi, fotografie, disegni, etc.) alla Sprea Editori S.p.A. deve intendersi quale espressa autorizzazione alla loro libera utilizzazione da parte di Sprea Editori S.p.A. per qualsiasi fine e a titolo gratuito, e comunque, a titolo di esempio, alla pubblicazione gratuita su qualsiasi supporto cartaceo e non, su qualsiasi pubblicazione (anche non della Sprea Editori S.p.A.), in qualsiasi canale di vendita e Paese del mondo. Il materiale inviato alla redazione non potr essere restituito.

SCIENCE
BBC SCIENCE, la versione italiana della prestigiosa e autorevole rivista inglese BBC FOCUS, finalmente in tutte le edicole italiane. BBC SCIENCE offre ogni mese uno sguardo ampio e completo su scienza, tecnologia e futuro. Lo stile chiaro e diretto rende la lettura immediata e appassionante. Con BBC SCIENCE la conoscenza alla portata di tutti.

ANCHE SU IPAD

CORRI IN EDICOLA