Sei sulla pagina 1di 100

Con Terminology hai musica, video e foto nella shell Tomcat in breve

Pro

Raspberry Pi

Gestisci tutto
con la riga di comando

LA NUOVA
GENERAZIONE DI

Tutte le tecniche di amministrazione


per diventare un perfetto sysadmin!

hacker zone
Le distro per navigare anonimi in Rete
Craccare le password con la GPU
14 pagine di pura programmazione

Accademia
del codice

Ruby on Rails Tecniche per scrivere codice senza bug


Lisp Un linguaggio che ti fa pensare in modo diverso
PHP Trasforma in PDF i report in formato HTML
Concetti Tieni in ordine i listati con i moduli

filmati lampo

Impara a usare Flowblade, un editor video


veloce, efficiente e alla portata di tutti

Inoltre
Nexus 7 2013

Google migliora il suo tablet da


7 pollici e si avvicina alla perfezione

Snella e potente

Scopri perch Arch Linux la


distro usata dai geek pi bravi

MediaWiki

Il tool ideale per creare la


documentazione dei progetti

Siti deffetto
Costruire un sito Web facile, ma
con Drupal lo rendi memorabile

Linux Pro 134- Mensile - 5,90 - CHF 13,60

Tariffa R.O.C. - Poste Italiane Spa - Abb. Post. - D.L. 353/2003 (conv. In L. 27/02/2004 n. 46) art. 1, comma 1, DCB Milano - Distributore: Press-Di, milano

Diventa protagonista nel mondo Linux

La tua rete ovunque


Facile, con FRITZ!

FRITZ!Box 7390
NUOVO!
FRITZ!WLAN Repeater 310
Con FRITZ!WLAN Repeater 310 estendi
la portata della rete wifi premendo un
semplice pulsante. Grazie al design estremamente compatto e alla
sua efficienza energetica, si usa con qualsiasi
presa, cifra il traffico
ed compatibile con
tutti i pi comuni
router WLAN.

Massime prestazioni e comfort per la tua rete e Internet!


Noto per la sua versatilit, FRITZ!Box realizza ogni tuo
desiderio in fatto di comunicazione trasformando la mera
connettivit in una porta su infinite possibilit.
Navigazione ultraveloce grazie al modem xDSL integrato
Dual-WLAN N: 2 frequenze simultanee fino a 300 MBit/s

Centralino, DECT, segreteria e fax per la massima comodit
Condivisione in rete di stampanti USB e memorie (NAS)
Perfetta integrazione di iPhone e Android con le App gratuite
FRITZ!OS con media server, MyFRITZ! e molto altro ancora
Maggiori informazioni sul sito fritzbox.eu
Seguici anche su www.facebook.com/FRITZBox.it

13/022

Il pluripremiato FRITZ!Box:

fritzbox.eu
AVM International info@avm.de

Editoriale

Un futuro consistente
Leggendo le news di questo numero
si scopre che, secondo le statistiche del
sito Net Applications, il numero di utenti Linux
nel complesso del mercato piuttosto ridotto,
anche se in crescita. Eppure i numeri forniti
non ci convincono: sempre pi spesso vediamo
richieste di lavoro che coinvolgono luso
di piattaforme aperte. La recente conferenza
di LibreOffice svoltasi a Milano ha dimostrato
come la suite libera, e pi in generale lOpen
Source, funzioni e faccia risparmiare soldi
senza rinunciare ai risultati. Durante la
conferenza sono intervenuti rappresentanti
di quattro province Perugia, Bolzano,
Cremona e Macerata che hanno compiuto
la migrazione a LibreOffice ottenendo ottimi
risultati e finendo per rappresentare degli
esempi da seguire anche in Europa.
Questo spostamento verso le soluzioni aperte
continuer di sicuro, garantendo una richiesta
via via crescente di persone formate
e competenti in grado di configurare sistemi,
tenere corsi e realizzare programmi. Quindi
noi proseguiremo sulla nostra strada,
intrapresa da tempo, di cercare di fornirvi
informazioni e guide che possano aiutarvi
a intraprendere una carriera IT con
soddisfazione. Non pretendiamo di sostituirci
ai corsi veri e propri o al lavoro sul campo,
ma facciamo di tutto per darvi un valido
supporto e utili consigli. Per esempio, nel
prossimo numero pubblicheremo unintervista
a Marianna Serreli, EMEA Training Operations
di Red Hat, che ci chiarir il ruolo delle
certificazioni nel mondo del lavoro. In questo

numero, invece, larticolo di copertina vi offre


diversi spunti interessanti da approfondire per
acquisire competenze che presto potrebbero
diventare indispensabili per portare avanti
il lavoro di amministratore di sistema.
La lettura comunque sfiziosa e interessante
anche per chi non fa questo tipo di lavoro,
ve lo garantiamo. Larticolo che segue quello
di copertina, invece, vi fa scoprire il terminale
chiamato Terminology, introdotto dal Window
Manager Enlightenment, che di sicuro vi far
rimanere a bocca aperta come capitato
a noi. Anticipiamo solo una cosa: usandolo
potrete vedere unanteprima delle immagini
direttamente nel terminale Insomma, una
bella spolveratina alla classica shell cos
da farla entrare nel ventunesimo secolo.
Tra le recensioni, invece, brilla il nuovo Google
Nexus 7 realizzato da Asus. Incredibilmente
riuscito a superare tutte le nostre
aspettative, migliorando la versione uscita
lo scorso anno e mirando a essere il punto
di riferimento per i tablet con schermo da
sette pollici. Infine tutto da leggere il tutorial
dedicato a CUDA e alluso delle GPU per
incrementare la potenza di calcolo del proprio
computer. In particolare ci siamo divertiti
a mostrarvi come craccare le password.
Ovviamente dovete provare quanto spiegato
sui vostri sistemi per verificarne la robustezza
e non andare in giro in Rete cercando
di bucare i sistemi altrui, chiaro?

contatti
Domande alla redazione: redazione@linuxpro.it
Abbonamenti: abbonamenti@myabb.it

Ora trovi
Linux Pro
anche
su Android

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

Sommario

Sommario
LINUX PRO 134

LINUX

PRO

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

In primo piano

I sysadmin di nuova generazione devono


essere al passo con i tempi: aggiornatevi
per migliorare il vostro curriculum vitae!
Ecco gli strumenti essenziali per ampliare
le vostre conoscenze e gestire ogni necessit...

08

ABBONATI ALLA

VERSIONE DIGITALE
SOLO PER PC E MAC

A SOLI

14,90

DURATA ABBONAMENTO 1 ANNO

16 Il super terminale
2

LINUX PRO 134

www.sprea.it/digital

Sommario
04 Newsdesk
06 FAQ: Mir

Approfondimenti
08 I sysadmin del futuro

56 CUDA

Tanti strumenti utili allamministratore


di sistema che vuole sempre di pi

60 Drupal

64 Raspberry Pi

Come usare lInterfaccia a riga


di comando al meglio

20 Dentro Arch Linux

68 NAS

Una distribuzione allavanguardia

24 Trucchi per sysadmin


Tomcat e stack LAMP

72 Crittografia
74 MediaWiki

Aiutate la comunit del Software Libero


lavorando sulla documentazione

Tutte le novit sul sistema di Google

30 HTC One Mini

Piccolo ma decisamente potente

31 Asus Nexus 7 (2013)

Il miglior mini tablet Android offre


prestazioni video fantastiche

Partire con il piede giusto: date una


struttura definita ai vostri programmi
Con il Test Driven Development catturate
i bug e migliorate il codice

82 Lisp

Sitecom X8 AC1750, Raspberry Pi


Camera, Left 4 Dead 2, In libreria

Si fa tutto con le parentesi!

40 Confronto

Le cinque migliori distro per tenere i vostri


dati davvero al sicuro

Create un buon report PDF


per la stampa e il Web
La mappa dei LUG italiani

Nove programmi da provare subito!

Gramps

Streaming audio
e video in casa

Trisquel

Scroprite come usare Gramps per creare un albero


genealogico e ricostruire la storia della vostra famiglia

Ruby on Rails Il framework Web senza difetti


Firefox OS Scopri lemulatore e le sue API
Android Gestire texture e touchscreen con OpenGL
Concetti Le basi della programmazione a oggetti

Ubuntu libero?

Cambia desktop!

Le applicazioni Web sono pi veloci,


scalabili e sicure se usi MariaDB

lightworks

Effetti speciali e strumenti per lediting


professionale a tua disposizione
LXP_133_cover 3.indd 1

6 antenne per la massima velocit wireless


a 2,4 e 5 GHz in contemporanea

Tizen
Il futuro dei dispositivi
mobili sempre
pi Open Source

Linux Pro 133- Mensile - 5,90 - CHF 13,60

Il database perfetto

Inoltre
AVM Fritz!Box 3390

gnome 3

Accedi alle opzioni avanzate


con Frippery e Gnome Tweak Tool
17/09/13 14:41

Gramps

Genealogia fai da te

Trisquel

L'Accademia del Codice


ti svela tutti i misteri
dell'arte del coding

Scopri Trisquel, la distro pi fedele


ai dettami del Free Software

PRO
dentro il

Prova la tua rivista anche in dioitale


digitale

Raspberry Pi

programmare!

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

86 PHP

90 Leco dei LUG

46 Da non perdere

Italo Vignoli di Document Foundation ci parla del LinuxDay 2013 Usare iSCSI

Accademia
76 Concetti di base

78 Ruby on Rails

Recensioni
35 I test del mese

Tariffa r.O.C. - POsTe iTaliane sPa - abb. POsT. - D.l. 353/2003 (COnv. in l. 27/02/2004 n. 46) arT. 1, COmma 1, DCb milanO - DisTribuTOre: Press-Di, milanO

Il meglio per gestire i dati in rete locale


Tutto sugli algoritmi asimmetrici usati
nella crittografia a chiave pubblica

Android
28 News

Scegli lambiente grafico giusto


per look e funzionalit!

LATO A
DISTRIBUZIONI
DESKTOP
ANONIME
IprediaOS
Fedora 19 (32
Mednafen
0.9.28
bit)
Libert
Parcellite 1.1.3

Tails
DISTRIBUZIONI
0.20.1
Whonix
Mageia 3 (32 bit)
Sophos UTM

Untangle
LATO
B 9.4 (32 e 64 bit)
GIOCHI
DISTRIBUZIONI
PokerTH
Deft 8 Linux
Bodhi
1.0.1
CorePlus

INTERNET
IPFire
2.135.0
Firefox
Salix Xfce
TinyCore
215.0
14.0.1

ProFTPD
GIOCHI1.3.4d
Untangle
10
Zentyal

PROGRAMMAZIONE
Ayon
3.2

CPPCheck
RIVISTA 1.60.1
DESKTOP
DocFetcher
Codice desempio
GTKDialog
0.8.3
1.1.9 Android
LiteIDE
Codice

RIVISTA
GRAMPS
desempio
4.0.1
Raspberry
Codice
Ardour3
PATool
1.4
desempio
3.2 Avogadro
Ruby 1.1.0
Codice
Q4Winedesempio
tutorial
1.0 r3 Android
Sysadmin
BurgerSpace
Codice tutorial
ZXTune
r2239
1.9.2
Ruby

FatRat
NetHogs
DISTRIBUZIONI
ANONIME
Erebus
0.8.0 1.2.0
beta2
OCRFeeder
Xowa
Safe-rm11.04
Privatix
0.100.7.
1
0.6.2

PushOver
INTERNET
Plan
9 Raspbian
0.0.5
QMMP
Arch Linux
HTTPie
0.7.1RP

Android
RIVISTA
RP Risc OS
AntiVirus Live CD 7.0.0

Data B
Crow 3.12.3
LATO
SISTEMA
DISTRIBUZIONI
Fish
Linux2.0.0
Mint 15 Cinnamon
Linux From
Mint 15
Scratch
Mate 7.3
RainBarf
Parted Magic

Create un portale Web davvero dinamico

Con Terminology tutto pi semplice

Libert pura

IL DVD IN BREVE

Mettete alla prova la vostra GPU


nei calcoli e nel crack delle password

16 Il super terminale

Pro

E
20 NOVEMBR

Con questo programma tagliate


e montate velocemente i vostri video

Lalternativa a Wayland

Diventa protagonista nel mondo Linux

NUMER

Tutorial
52 Flowblade

Le novit del mondo Open Source

AccAdemiA
del codice

O
IL PROOSESSICM
E IL

La libera Trisquel
La distro campionessa nella battaglia per il Free Software

a linea che divide il pragmatismo


dallideologia sempre sottilissima
e il progetto Trisquel GNU/Linux
forse lunico che riesce a percorrerla senza
mai ondeggiare. Trisquel sicuramente
la distribuzione pi usabile tra quelle che
aderiscono in toto alle severe linee guida
della Free Software Foundation (FSF) e non
altera la versatilit di cui lutente finale gode. Il
progetto Trisquel stato avviato da un gruppo
di studenti dellUniversit spagnola
di Vigo, con lobiettivo di creare un sistema
didattico con supporto per la lingua galiziana.
Ben presto lopera diventata talmente vasta

da superare lo scopo iniziale e portare


a un vero e proprio sistema operativo
multilingue. Trisquel GNU/Linux ha visto la luce
ufficialmente nellaprile del 2005, quando
Richard Stallman lha presentata al mondo
intero. Il cuore della distro la vastissima
comunit internazionale di appassionati, guidata
da un personaggio carismatico qual Rubn

Rodrguez. Proprio Rodrguez, parlando


alla platea presente a LibrePlanet 2013
in Massachusetts, ha affermato che la
distribuzione di Software Libero una grande
responsabilit: I vostri utenti, oltre a credere
in voi, si fidano delle vostre capacit
e si aspettano che rispettiate la loro libert.
Noi, continua Rodrguez, non usiamo
il termine distro come unarida
definizione tecnica per descrivere una
versione di un software. La parola
distribuzione qualcosa che implica
la massima responsabilit verso chi
ci segue e usa Trisquel.

Lo sviluppo di software
libero porta con s una
grande responsabilit

Per un occhio inesperto, Trisquel potrebbe sembrare una


copia di Ubuntu, eccetto che per lesclusione dei pacchetti
non free che non rispettano le rigorose politiche sul Software
Libero rilasciato sotto licenza GNU. Rodrguez, per, pronto
a ribattere che le apparenze ingannano. Se si vuole
semplificare il concetto di distro free, pensando che sia
sufficiente estrarre il materiale non libero da una piattaforma
come Ubuntu, si commette un grosso errore di fondo. Andare
alla ricerca di tutto ci che non rispecchi le regole del
Software Libero in una distribuzione di per s gi funzionante,
non un gioco da ragazzi. Nellestrazione di ci che non
si vuole mantenere, il rischio di fare dei danni altissimo.
Rodrguez porta come esempio il caso del kernel Linux-libre,
Linux-libre
sul cui progetto basato Trisquel. Per chi non lo conoscesse,
Linux-libre un kernel portato avanti dalla Free Software
Foundation Latin America (FSFLA) e consiste nel fornire una
versione di Linux completamente libera da qualsiasi codice
non free. Il concetto dietro cui si muove Trisquel, quindi,
proprio questo: prendere una distro, analizzarla fin nei
minimi dettagli ed estrapolare tutto ci che ha una licenza
proprietaria, sostituendolo con una controparte totalmente
libera. A parole un proposito che potrebbe sembrare tanto
semplice, quanto ideologico, ma allatto pratico il progetto
non indenne da difficolt. Uno degli aspetti pi critici,
sta proprio nel garantire agli utenti che la sostituzione

di un contenuto non free con il suo omologo libero, non


danneggi il corretto funzionamento della distro. Lesempio pi
lampante riguarda i driver. Quando ce ne sono due versioni,
una proprietaria e laltra free, la maggior parte delle
distribuzioni, come Ubuntu e Fedora/Red Hat, scelgono
la prima. Nel momento in cui si decide di sostituirla con
il driver free, bisogna assicurarsi che il componente cui
legata e da cui dipende la sua corretta gestione continui a
operare senza problemi. Il team di Trisquel, per, non si limita
a sostituire porzioni di codice o software con le controparti
free, ma cerca soprattutto di apportare delle migliorie alle
aree in cui opera. Jonathan Nadeau dalla FSF, per esempio,
ha collaborato con gli sviluppatori di Trisquel per rendere
la distro pi accessibile agli utenti con problemi di vista.
In effetti basta dare unocchiata a Trisquel 6.0 per rendersi
subito conto di come le caratteristiche di accessibilit siano
davvero ottime. Di default, infatti, il desktop pu sfruttare
le peculiarit di Orca, lapplicazione che mediante un sapiente
mix di ingrandimenti, sintesi vocale e sistema di scrittura
braille, consente agli ipovedenti di usare facilmente le funzioni
della distro. Sul fronte dellusabilit, unaltra miglioria nel
desktop di Trisquel sta nellapproccio intuitivo con cui accoglie
i nuovi utenti. A onor del vero, ricorda molto da vicino
Windows ed proprio Rodrguez a confermare questa
impressione, affermando che non c niente di male
a prendere spunto dalle idee che funzionano.

Lambiente grafico
di Trisquel ricorda
da vicino quello
di Windows. La barra
degli strumenti,
infatti, ne lesempio

I primi passi
Alla fine di questo articolo, creerete un albero genealogico
di esempio della famiglia Rossi, ma ovviamente lintento darvi
sufficienti informazioni per usare il programma ricostruendo
la vostra genealogia. Dopo aver lanciato Gramps, fate click
su Alberi genealogici e poi sul pulsante Nuovo, quindi
aggiungete il nome Famiglia Rossi. Adesso selezionate Carica
albero genealogico, in modo che venga mostrata la finestra
principale. Sulla sinistra sono presenti un elenco di categorie,
ad esempio Persone, Relazioni, Famiglie e molte altre. Quando
cliccate su una di esse, la visuale e la barra degli strumenti cambiano
per riproporre le opzioni dedicate al menu che avete scelto. Per
creare un albero genealogico si pu partire da qualsiasi parente,
ma nel vostro caso inizierete da Giovanni Rossi, lultimo della famiglia.

Create una fonte


Il primo elemento da cui partire anche il pi semplice. Baster
infatti intervistare lultimo esponente della famiglia, da cui poi
documenterete le parentele pi prossime. Se siete voi stessi,
baster che facciate affidamento sulla memoria e vi auto
intervistiate. Selezionate la voce Fonti presente nel menu
di sinistra, quindi selezionate licona a forma di +, denominata
Aggiungi. Si apre cos leditor della nuova fonte, in cui inserire
tutte le informazioni che otteniamo nel colloquio con Giovanni.
Nel campo Titolo scrivete Intervista a Giovanni Rossi e in autore
inserite Giovanni Rossi. In pratica vi state auto intervistando.
Nel campo Note scrivete tutte le informazioni rilevanti che

Usare Trisquel 6.0


Trisquel 6.0 lultima versione della distro basata
su Ubuntu 12.04. Come per questultima, la 6.0
rappresenta la versione Long Term Support (LTS)
e offrir la correzione dei bug e gli aggiornamenti
per la sicurezza fino al lontano 2017. Laspetto
migliore sicuramente la sua interfaccia desktop.
Anche se la distribuzione viene eseguita
su GNOME 3.4, gli sviluppatori - per i motivi che
potete leggere nellarticolo - hanno deciso di
ripiegare su un ambiente destkop pi tradizionale.
Nelledizione principale, trovate LibreOffice 3.5
e il formidabile Abrowser 19, un programma
derivante da Mozilla Firefox che stato ritoccato

per rimuovere il logo e i richiami a qualsiasi


software di natura non libera. Al posto del plug-in
Flash che lavora sotto licenza proprietaria, stato
usato il player multimediale gratuito Gnash,
Gnash che
pu riprodurre senza inconvenienti video HTML5
e visualizzare i file PDF senza alcun add-on.
Per installare software aggiuntivo potete utilizzare
Synaptic,, oppure sfruttare il gestore di pacchetti
della distro. Non mancano poi altri esempi
di software free come VLC Media Player,
Player per
riprodurre video e musica. Se volete installare
software proprietari come per esempio Skype,
potete farlo tramite Synaptic. Bisogna per

ricordare che Trisquel non integra alcun tipo


di supporto per i driver non liberi e quindi il loro
utilizzo potrebbe minare la stabilit del sistema
e dare luogo a malfunzionamenti. Detto questo,
ellaavuto
maggior
parte
casi,
noi non abbiamo
problemi
a fardei
lavorare
Trisquel sulle le
nostre
macchine, riscontrando
conoscenze
familiari non vanno oltre
un notevole miglioramento nel panorama
qualche grado di parentela. Quando
dei driver free. Linstaller, infine, una versione
per si
inizia che
a scavare
ricerca degli avi
modificata
di quello
trovate sualla
Ubuntu.
La sua
uno che
dei sistemi
piparticolarit
lontani odidiessere
parenti
hanno trovato
dinstallazione pi semplici da usare per chi
fortuna in altri paesi in epoche passate,
proviene dal mondo desktop ne ha fatto
le coseprincipale
si complicano
non
poco. Quali
il candidato
per luso in
Trisquel.

sono le origini della famiglia? Dove


vivevano? Da dove
deriva
vostro
LINUX
PROil133
17
cognome? La genealogia lunica scienza
che pu dare risposta a queste domande,
catalogando, ricercando e studiando tutti
i legami famigliari che si sono evoluti nel

24

LINUX PRO 133

considerare alcune buone pratiche di ricerca e dedicare un paio


di minuti a tracciare le linee base del vostro albero genealogico,
seguendo tre semplici e veloci passaggi:
1 Ricerca: trovare tutte le informazioni inerenti alla vostra
famiglia, partendo magari dal luogo in cui i vostri avi vivevano
o si sono sposati.
2 Registrazione: prendere scrupolosamente nota di qualsiasi
informazione che trovate.
3 Pubblicazione: realizzare documenti e relazioni che potete
condividere facilmente con altre persone.
Quasi sicuramente, la ricerca e la registrazione saranno fonte
di numerose informazioni e quindi dovrete dedicargli pi tempo.
La regola doro della genealogia rimane comunque una: fare
in modo che tutti i documenti raccolti siano verificabili e oggettivi.
Chiunque pu creare un albero genealogico basato su
supposizioni e prove soggettive. Ben diverso, invece, fare
affidamento su riscontri scientifici. Per fortuna Gramps vi render
la vita molto pi semplice, perch il suo compito proprio
ottimizzare lorganizzazione dei lavori di ricerca, registrazione
e pubblicazione, diventando cos un insostituibile assistente.

tempo. In definitiva unattivit di ricerca


intensiva, accurata e che richiede non solo
molta pazienza, ma anche capacit di sintesi
e analisi non comuni. Quando le informazioni
iniziano a essere molte e le fonti a sovrapporsi
tra loro, blocco note e penna non bastano pi.

Ecco quindi che entra in campo Gramps,


un programma Open Source che vi aiuta nella
ricostruzione del vostro albero genealogico.
Compatibile con Linux, Mac e Windows, oltre
a essere disponibile per diverse distribuzioni,
lo troviamo alla pagina ufficiale http://grampsproject.org/download/. Gramps
stato creato da genealogisti
di professione che, grazie alla loro
lunga esperienza nel settore
della ricerca, hanno dato vita a un
programma altamente affidabile.
Prima di iniziare, per, opportuno

Gramps stato creato da


genealogisti di professione ed
quindi affidabile e preciso

Cartella dedicata
Quante pi persone aggiungete allalbero genealogico,
maggiori informazioni dovete inserire. Tra queste, le foto
di ogni parente sono molto importanti per accomunare
un nome a un volto e quindi ricordare ancora meglio i dati
importanti. Gramps non memorizza le immagini, ma solo
il percorso scelto nel momento in cui le avete aggiunte.
Per evitare di perdere tempo nel cercarle tra gli anfratti
dellhard disk, vi consigliamo di dedicare una cartella
alle sole foto da utilizzare. Ricordate: essere precisi
il miglior approccio alla ricerca genealogica!

Intervista

emergono, quindi premete il pulsante OK per confermare.


In qualsiasi momento se ne presentasse la necessit, potrete
sempre modificare lintervista facendo doppio click sulla scheda
Intervista a Giovanni Rossi che trovate sotto la voce Fonti.

Aggiungete una persona


Al centro di ogni albero genealogico ci sono sempre le persone,
quindi aggiungete il vostro personaggio principale. S, avete
indovinato, sempre lui: Giovanni Rossi. Visto che tutte
le informazioni che avete in mano derivano dallintervista fatta
a Giovanni, dovete spostare la vostra fonte in una sezione
di Gramps dove poter condividere i dati anche da altri punti
di vista. Nella barra degli strumenti premete Appunti per aprire
lomonima finestra, quindi spostate al suo interno la scheda
Intervista a Giovanni Rossi che avete nel menu Fonti. Visto
che la sorgente ora memorizzata negli appunti, potete anche
chiudere la finestra. Adesso selezionate il menu Persone
e premete il pulsante Aggiungi presente nella barra degli
strumenti. Immettete quindi i seguenti dati:
Nome: Giovanni
Cognome: Rossi
Sesso: Maschio
A questo punto necessario citare le fonti da cui sono state
ottenute le informazioni. Cliccate sulla scheda Citazione fonti
quindi, dalla barra degli strumenti di Gramps, selezionate
la funzione Appunti, aprendo cos la finestra dove avete
precedentemente importato le informazioni ottenute
dallintervista di Giovanni. Trascinate Intervista a Giovanni Rossi
nel campo Citazione Fonti, in modo da aprire unulteriore scheda
dedicata. Nella parte inferiore, titolata Fonti informazioni
condivise, notate come siano gi presenti i dati dellintervista.
Nella zona superiore, invece, avete a disposizione nuovi campi
da riempire. Potete aggiungere la data in cui stata fatta
lintervista e il livello di confidenza che si attribuisce alle
informazioni ottenute. Mettete quindi Molto alta. Adesso,
per dare vita allalbero genealogico, opportuno aggiungere
una foto di Giovanni. Sempre nel menu Persone di Gramps,
fate doppio click sulla scheda Rossi, Giovanni, quindi entrate
in Galleria. Premete licona a forma di + sinonimo di Aggiungi
e cercate nel vostro disco fisso una foto da associare alla cartella
di Giovanni. Ricordate poi di aggiungere le note sulla provenienza
dellimmagine nella scheda Citazioni fonti, presente nellEditor
riferimento oggetto multimediale.

Intervista

il giorno
del pinguino

Mediante lopzione
Vista ascendenza,
avete una visuale
chiara del diagramma
genealogico

l'innovazione il tema centrale del Linux Day 2013


Ce ne parla Italo Vignoli, fondatore e consigliere
di The Document Foundation

ome ogni anno, il Linux Day


Day, che si
terr a ottobre, propone un argomento
cardine su cui ruota tutta l'intera fiera
di eventi. Ed nel 2013 che
l'innovazione sar al centro dei dibattiti
come elemento distintivo del Software Libero,
accendendo i riflettori sul motore dello
sviluppo di una comunit in continua crescita.
S, perch nonostante GNU/Linux sia parte
integrante del Web e di moltissime
infrastrutture enterprise, tanto da essere punto
innovazione tecnologica,
di riferimento per linnovazione
ancora molta
nella vita quotidiana c
difficolt ad avvicinarsi a una realt spesso
erroneamente percepita per soli addetti ai
lavori. Ecco quindi che il Linux Day 2013 vuole
essere uniniziativa rivolta a far conoscere
a tutti le potenzialit del Free Software,
opportunit quasi
che in Italia sono ancora unopportunit
del tutto inesplorata. A parlarne con Linux Pro
c' Italo Vignoli,, profondo conoscitore
del tema e fondatore e consigliere della
Document Foundation. Infine un messaggio
rivolto ai numerosi LUG che parteciperanno al
edazione@linuxpro.it
Linux Day: scriveteci a redazione@linuxpro.it
e raccontateci cosa avete fatto! Per conoscere
la mappa degli eventi, potete collegarvi alla
pagina www.linux.it/eventi o visitare il sito
www.linuxday.it,, dove troverete tutte
le informazioni sulla manifestazione.
LXP: Raccontaci del tuo percorso dai primi
passi nel mondo del Free Software fino
ad arrivare alla Document Foundation.
IV: tutta colpa, o merito, di Outlook. Io sono

20

e non sar certo lultimo). Intorno al 2000,


ho cominciato a cercare unalternativa
a MS Office, perch ero veramente stufo della
pervasivit di Outlook - che faceva sentire
la sua presenza anche se non era installato
- e della scarsa qualit degli altri programmi,
e in particolare di Word e PowerPoint (non
sono mai stato un grande utente di fogli
elettronici). Nel 2001, ho visto lannuncio
di OpenOffice.org e ho iniziato a utilizzarlo,
nonostante la versione 1.0 fosse veramente
acerba. La situazione, per, migliorata
sensibilmente con la versione 1.1, al punto
da poter cominciare a sostituire MS Office
in un numero sempre maggiore di occasioni.
Peraltro, la frequentazione - seppure
a distanza - della comunit mi ha fatto
comprendere come mancasse una strategia
di marketing e comunicazione in grado di far
conoscere il prodotto a un numero pi ampio
di utenti potenziali. Nel 2003, mi sono iscritto
alle mailing list e ho cominciato a intervenire,
e nel 2004 sono entrato nel progetto come
responsabile marketing per lItalia. Ho iniziato
immediatamente a scontrarmi con Sun, pi
che unazienda un caso umano, e con alcuni
membri lungimiranti della comunit che

chiamato cos), che - a pi di tre anni di distanza


- pu essere considerato un successo.
Nellestate del 2010 ho lavorato a tempo pieno
allannuncio, poi - come se niente fosse - sono
andato a Budapest per la conferenza
di OpenOffice, durante la quale c stato
lincontro definitivo che ha sancito la nascita
di The Document Foundation. Il 28 settembre
dello stesso anno sono stato colui che ha
fisicamente premuto il pulsante di lancio
del comunicato stampa che annunciava
la nascita del progetto, e da quel momento
sono sempre stato il responsabile del marketing
e della comunicazione e il principale portavoce
del progetto.

LXP: Il Linux Day di questanno sar basato


sullinnovazione, un argomento vastissimo
e che include la volont di rimanere
al passo con i tempi, fornendo sempre
nuovi sviluppi. Quali sono, secondo
te, i passi che il mondo Linux deve
ancora compiere per continuare
a puntare al futuro?
IV: In realt, il mondo Open Source gi
fortemente impiantato nel futuro, tanto che
la quasi totalit dei telefoni cellulari di ultima
generazione utilizza
un sistema operativo
SEmPRE AL PASSO COn I TEmPI
che deriva da Linux
(Android, ma anche
iOS, che ha radici
FreeBSD), la totalit
degli elettrodomestici
intelligenti e dei
sistemi di domotica
utilizza Linux Embedded (o qualcosa di molto
consideravano il marketing del tutto inutile,
ma questo non mi ha fermato: la combinazione simile), la maggior parte delle auto dotate di
computer di bordo usa sempre Linux Embedded
tra la qualit del prodotto e unazione
(ve lo immaginate Windows su un sistema
di marketing aggressiva ha portato OOo
frenante?), e infine quasi tutti i supercomputer
a raggiungere una quota di mercato
e un numero sempre pi ampio di server
superiore al 10% in Italia (i dati sono stimati)
utilizzano Linux. Inoltre, non bisogna dimenticare
e un ruolo sempre pi visibile sul mercato.
la spinta che ha dato allinnovazione il modello
A partire dal 2006, dalla conferenza di Lione,
dello sviluppo collaborativo tipico della comunit
ho iniziato a contribuire al marketing
del Software Libero. Oggi, non esiste una sola
internazionale, tanto che nel 2008 sono
azienda in grado di sostenere che il modello
diventato uno dei leader del team con la
di sviluppo chiuso superiore, dopo che anche
supervisione del budget. In questo modo, ho
IBM e Microsoft - la prima ha inventato
iniziato a conoscere un numero sempre pi
il concetto, e la seconda lo ha perfezionato ampio di persone, e sono stato coinvolto nelle
hanno smesso di dirlo. Linux, e in accezione
discussioni sullopportunit di creare una
pi ampia tutto il mondo del Software Libero, ha
fondazione indipendente (che sono diventate
bisogno di maggiore coesione e di una strategia
sempre pi fitte a partire dalla conferenza
di marketing e comunicazione in grado di
di Pechino nel 2008). Nel 2009, quando
contrastare gli investimenti delle grandi aziende.
Oracle ha acquisito Sun Microsystems,
Purtroppo, il frazionamento dei progetti - che in
ho commentato dicendo che era la cosa
alcuni casi completamente inutile - un fatto
peggiore che sarebbe potuta succedere
difficile da comprendere per tutti coloro che
a OOo (in realt mi sbagliavo, perch quello
sono estranei alla comunit, e rappresenta un
che successo dopo stato anche peggio).
fattore di debolezza. Infine, necessario che
Ovviamente, i colloqui sulla fondazione sono
il mondo del Software Libero cominci a pensare
diventati sempre pi fitti, e si sono trasformati
seriamente a un modello di business sostenibile,
in un piano di lavoro nel gennaio del 2010.
perch altrimenti rimarr sempre ostaggio delle
A quellepoca, ho scritto il marketing plan
aziende e delle loro strategie di sopravvivenza
di LibreOffice (senza sapere che si sarebbe

L'innovazione un fattore
che da sempre contraddistingue
il Software Libero

sempre stato un utente abbastanza esigente


nel caso della posta elettronica e per questo
motivo non sono mai riuscito a usare Outlook,
che considero il peggior software mai sviluppato
da un quadrumane perch non solo pessimo
sotto il profilo architettonico (il salvataggio di
tutte le informazioni in un unico blob va contro
ogni sano principio, e contro il buon senso)
ma riesce - in un campo dove tutto standard
l
come lemail
- a non adottare nemmeno uno
standard (oppure a reinventarlo, peggiorandolo).
Quindi, non sono mai stato tra i sostenitori
di Microsoft Office, proprio per la presenza
di Outlook. Inoltre, quando la quota di mercato

di Microsoft Office ha cominciato a superare


percentuali che avrebbero ampiamente
giustificato lintervento dellantitrust, ho
cominciato a chiedermi perch non ci fosse
nessun intervento a protezione degli utenti,
visto che era evidente che la situazione
avrebbe portato Microsoft ad avere un
atteggiamento vessatorio nei loro confronti
(a differenza di molti, io ho letto la EULA di MS
Office). Oggi, evidente che Microsoft ha
goduto di ampie coperture per il suo ruolo
di principale fornitore di informazioni del
governo statunitense, attraverso programmi
come PRISM (che non certo stato il primo,

2013

nei confronti dell'ecosistema finanziario


(perch una strategia basata sul fatturato
del trimestre priva di buon senso e non
permette di guardare oltre la punta del proprio
naso, per cui privilegia le azioni tattiche rispetto
a quelle strategiche). Quindi, bisogna pensare
a generare profitti che derivano dal valore
aggiunto, e a reinvestirli nello sviluppo, perch
le aziende che sponsorizzano il Software Libero
a fondo perso - come Sun e IBM nel caso
di OOo - possono scomparire da un momento
all'altro, se un analista si inventa aspettative
superiori all'andamento del mercato.
LXP: Innovazione, spesso, significa
rompere con il passato, ma anche
adottare strategie nuove. A questo
proposito puntare alla conquista
di un numero di sistemi sempre maggiori,
sensibilizzando cos lopinione pubblica
alla migrazione verso il Free Software,
senza dubbio un tema innovativo.
E non solo in ambito privato
ma soprattutto in quello aziendale.
Sappiamo che su questo fronte sei molto
attivo, quindi ti chiediamo qual la tua
ricetta per innovare?
IV: Onestamente, non credo ci sia nessuna
ricetta specifica, ma solo luso di un po di buon
senso nella comunicazione. Combattiamo
contro nemici potenti, che hanno budget
importanti e strumenti per influenzare
lopinione pubblica che vanno ben oltre
le nostre possibilit, per cui dobbiamo usare
tutte le nostre capacit. Solo aggregando tutti
i progetti allinterno di una rete, possiamo
riuscire a creare quella massa critica che non
abbiamo mai avuto. Dobbiamo mostrare
i nostri muscoli, perch solo in questo modo

LINUx PRO 133

LINUX PRO 133

25

LINUx PRO 133

LINUX PRO 134

21

Newsdesk

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

Sistema operativo

Gli utenti di Linux continuano


a crescere in tutto il mondo
a questo metodo, il sito
Net Applications ha potuto rilevare,
nei mesi che vanno da luglio
a settembre 2013, un aumento
delluso di Linux dello 0,40%,
pi precisamente dall1,25%
al 1,65%. Le ragioni di questa
crescita sono tante, ma sicuramente
larrivo della piattaforma Steam,
per chi ama i videogiochi,
e una migliore compatibilit con
lhardware dei nostri computer
hanno contribuito in modo decisivo.

Linux nel mondo


Il sito Net Applications mostra chiaramente laumento
degli utenti di Linux tra luglio e settembre 2013

acciamo una premessa


doverosa. Stabilire con
esattezza il numero degli
utenti di questo o di quel
sistema operativo unimpresa
tuttaltro che facile. Infatti c
una differenza fondamentale tra
le distribuzioni di Linux e i sistemi
operativi proprietari: le prime
possono essere scaricate
gratuitamente dai siti ufficiali
mentre le seconde possono essere
acquisite illegalmente tramite
i vari servizi di peer-to-peer.
Quindi non ci possiamo basare
sulle vendite o sugli scaricamenti,
che non implicano un uso vero
e proprio del sistema operativo.
Esiste per un altro metodo, usato
da Net Applications, che analizza
i nostri dati di collegamento
a Internet e ne ricava il sistema
operativo che stiamo usando
in quel momento. Proprio grazie

LINUX PRO 134

C per un altro metodo per capire


come si sta muovendo Linux
sul mercato ed quello di guardarsi
intorno. Sar meno scientifico,
ma di sicuro ci d il polso
della situazione. Infatti, le varie
distribuzioni esistenti non stanno
solo conquistando i favori degli
utenti classici (fra tanti privati
ma anche fra tantissime aziende)
ma anche delle Istituzioni, che
di solito non sono allavanguardia
in questo genere di evoluzione.
Per esempio, il Governo di Taiwan
ha deciso di installare una
distribuzione di Kubuntu, chiamata
EZGO 11, in ben 10.000
computer, principalmente nelle
scuole, dove gi i sistemi operativi

basati su Linux riscuotono


le simpatie degli insegnanti. Anche
i nostri cugini francesi vedono
di buon occhio Linux e le sue
derivate, tant che, entro il 2014,
la Gendarmerie Nationale,
che si occupa della pubblica
sicurezza in Francia, avr in
dotazione pi di 72.000 computer
con Ubuntu preinstallato:
un risultato davvero straordinario.
Ma gi nel 2004, sempre questo
organo aveva sostituito 20.000
licenze di Microsoft Office
con altrettante di OpenOffice.
Anche a casa nostra le cose
si stanno muovendo in questa
direzione e i casi di Amministrazioni
Pubbliche che passano al Software
Libero stanno aumentando in modo
sensibile. Per esempio, le province
di Bolzano, Cremona, Macerata
e Perugia, oltre che al sindacato
CISL, stanno migrando
a LibreOffice, con un risparmio
per le nostre tasche pari
a 100.000 euro. Daltra parte,
larma vincente delle distribuzioni
GNU/Linux e delle applicazioni
a esse correlate proprio lunione
tra il netto risparmio rispetto
al software proprietario
e laffidabilit che ormai
diventata indiscutible.

Nel 2014 la gendarmerie


nationale francese avr
pi di 72.000 computer
con Ubuntu preinstallato

Newsdesk
Hardware

Cloud

Intel e Arduino

Cos, anche i meno esperti tra gli


artisti e i designer potranno usare
questo strumento per realizzare
le loro opere, singoli oggetti
o ambienti interattivi che siano.
Naturalmente il sistema operativo
su cui si basa Intel Galileo Linux,
arricchito dalle librerie software
Arduino, che permettono la
scalabilit e lo sfruttamento dei
software esistenti. In occasione
della presentazione di Intel Galileo,
Krzanich e Banzi hanno annunciato
che, entro i prossimi 18 mesi, ben
50.000 schede verranno fornite
gratuitamente a 10.000
universit sparse per il mondo, tra
cui La Sapienza di Roma, che ha
di recente sottoscritto un accordo
di collaborazione proprio con Intel.

urante lultima edizione


a Roma del Maker Faire,
il convegno in cui gli
inventori mettono
in mostra le proprie creazioni,
il nuovo CEO di Intel, Brian
Krzanich, e il fondatore della
community Arduino, Massimo
Banzi, hanno presentato la nuova
scheda Intel Galileo, nata appunto
dalla collaborazione fra queste
due importantissime realt.
Si tratta della prima di una serie
di schede targate dal colosso
Intel, pensate principalmente
per il settore didattico, compatibili
con Arduino, di cui avremo
a disposizione linterfaccia
di programmazione e i kit
di sviluppo Open Source.

FUTURo

Mensile N15 Dicembre 2012

i criteri vincenti
 Versatilit d'uso
 Livello di sicurezza
 Scalabilit

18 pagine di pura programmazione

Ruby Ottimizza il codice per lavorare meglio


Python Testo e stringhe al tuo comando
Android Crea il tuo servizio in stile Instagram
Concetti Realizza uno script Python da zero

Inoltre
Asus Fonepad
Straordinaria autonomia e
ottimo rapporto qualit/prezzo!

Secure Boot
Avvia Linux nonostante i limiti
imposti dallUEFI di Microsoft

Tutta unaltra musica


Come catturare, etichettare
e gestire i tuoi file musicali preferiti

AUDiO DA PrO

Con Ardour 3 lavori con file multitraccia


e sequencer MIDI come un professionista

Cloud enterprise
Scopri Amazon Web Services

teSt PerFetti
Pianifica controlli di qualit per
creare codice a prova di bomba!

Linux Pro 131- Mensile - 5,90 - CHF 13,60

AccAdemiA
del codice

ARTISTI
DIGITALI

RNA

Come fare
Crea la tua rivista
personale e unica con
il nuovo Flipboard p66

ACCENDE LA TUA PASSIONE!

NUMERO

301

P e r c h i l m o n d o P ot r e b b e
da v v e r o f i n i r e a d i c e m b r e 2 0 1 2
(e non centra la Profezia maya)
Allucinazioni

Alla scoperta dei meccanismi


che ingannano i nostri sensi

I segreti della bellezza


Ecco quali sono i tratti del viso
che rendono pi attraenti

B B C S C I E N C E N 15 - M E N S . - A N N O I I - 2 0 12 - 3 , 9 0

Cancella le cattive abitudini e fai di...

SOULS

XCOM: EnEMy
UnknOwn
Il miglior gioco
per iOS! p48
Anno 3 3,90

chf 9,20

ScoreCleaner Notes
Crea uno
spartito
musicale
cantando p15

Dov' il mio Topolino?


In prova
il divertente
gioco Disney
p50

Gangstar Vegas
Sei pronto
a conquistare
la citt del
peccato? p51

IA CONTROLLATA

ASSISTEREMO MAI ALLA RIVOLTA


DELLE INTELLIGENZE ARTIFICIALI?

PaSSwORd
Governi e malintenzionati
ti spiano! difenditi con
la parola chiave giusta

LE APP DEL FutuRo


utuRo

In anteprima le nuovissime app


per le mappe, le foto e la musica

sfida
al top
Panasonic G6 contro Olympus E-P5
Mensile N134 5,90

Mensile N301 4,99

Con Jolicloud controlli file, social


network e app remote dal desktop!

FAi uN sito DA PRo

Press-Di Distribuzione stamPa e multimeDia s.r.l. milano

INTERNATIONAL

LG

OPTIMUS
G PRO

Potenza
da urlo
e maxi
schermo

a prova dI hackeR

Mai pi foto mosse Esposizioni impeccabili


Inquadrature da professionisti e tanto altro...

Voyager Air:
Air
1 Terabyte
di memoria
per il tuo iPad
p75

Task
LApp per gestire
i promemoria
in modo semplice
e veloce p14

tutto NEL CLouD

ogNi scatto

uN successo
ALL'ULTIMO CLICK!

in prova

App Journal N30 Mensile

FACILE

BioWare all'assalto
delle fortezze!

L'atteso ritorno
di Diablo
Diablo!!

APOCALYPSE
NOW

UBUNTU

oLympus
oL
ympus EE-m1
m1

FINALMENTE!

DRAGON AGE

INQUISITION

REAPER OF

Da sapere
Ami la natura? Ecco 10 App
selezionate per te! p38

arriva lauto controllata da linux!

La nuova ammiragLia om-d

UBUNTU FACILE

spEAkEr
AirplAy

iPod

20 App PER DIpINGERE E DISEGNARE

TARIFFA R.o.C. - poSTE ITAlIANE SpA - SpEd. IN Abb. poST. d.l. 353/2003 (CoNv. IN l. 27/02/2004 N.46) ART. 1, CommA 1, dCb mIlANo

Distro

iPad

Crea un sito professionale


senza scrivere codice

i bambi
bambiNi

Cattura immagini divertenti


ed espressive senza annoiarli

8 fotocamere per i paesaggi


Le pi piccoLe, Leggere e convenienti

Novembre 2013

Ubuntu Facile N9 Mensile 2,50

TECNologIA

la Rivista pRAtICA, UtILE E INDISpENSAbILE

potenza wireless

iPhone

tariffa r.o.C. - Poste italiane sPa sPeD. in abb. Post. - D.l. 353/2003 (Conv. in l. 27.02.2004, n 46), art.1, Comma 1, DCb milano - CHF 13,60

SCIENZA

JOURNAL

A!

Quanto si pu parlare velocemente?


Sar possibile ibernare un uomo?
Come funzionano i vetri autopulenti?

THE GAMES MACHINE

LAB TEST
Tariffa r.O.C. - POsTe iTaliane sPa - abb. POsT. - D.l. 353/2003 (COnv. in l. 27/02/2004 n. 46) arT. 1, COmma 1, DCb milanO - DisTribuTOre: Press-Di, milanO

&

SCIENCE
Le risposte sono negli abissi

Gestire
al meglio i torrent!

JOU

mondi perduti

Raspberry Pi

UN
IC

Pro

ok te
lo an
o ss
ov re
nu inte

pi

Diventa protagonista nel mondo Linux

o scorso 18 settembre, al Festival della Tecnologia


tenutosi a Milano, Enter, Internet e Cloud Service
Provider italiano, ha presentato Cloud Suite
(www.entercloudsuite.it), il suo nuovo servizio
IaaS di cloud computing e cloud storage dedicato
a imprese e professionisti del settore ICT, basato
sulla piattaforma Openstack. Distribuito senza
intermediari, e quindi con un rapporto diretto
che abbassa anche i costi, Cloud Suite ci mette
a disposizione una serie di strumenti per creare
e gestire con pochi click tutto ci di cui abbiamo bisogno.
Per i pi esperti possibile integrare le risorse di calcolo
con siti e applicazioni, tramite API. Ma il servizio si rivolge
anche ai meno esperti, mettendo a loro disposizione tutta
una serie di strumenti utili e di alto livello. LXP

Prova la tua rivista anche in dioitale


digitale
L

A confronto 5 sistemi operativi per la Raspberry Pi Le nuove CPU Intel Core

Servizi online
su misura

ARtisti CoN ubuNtu stuDio


Tutti gli strumenti per audio e video

BLACKLIST

SAM FISHER TORNA ALLE


SUE ORIGINI STEALTH!

TARIFFA R.O.C. - POSTE ITALIANE SPA SPED. IN ABB. POST. D.L. 353/2003 (CONV. IN L. 27.02.2004, N 46), ART.1, COMMA 1, DCB MILANO

COP_001_Cover_TGM_301.indd 1

06/09/2013 10.09.27

Se leggi Linux Pro ti potrebbero anche piacere...


LINUX PRO 134

FAQ Mir

Alcune
domande su...

Mir?

Linux Pro vi presenta il controverso server grafico ideato da Canonical


per aiutare ubuntu a conquistare il mondo open Source
Mi ricorda il nome dellex-stazione
D Mir?
spaziale russa, centra qualcosa?
nel campo del Software Libero Mir
R no.
(http://unity.ubuntu.com/mir) un display
server che Canonical, la casa madre di ubuntu,
sta sviluppando come alternativa a Wayland.

per quanto riguarda Mir, vi sono il compositore


e il sottosistema per la gestione degli input.
cosa per volta, per favore. Che cos
D Una
un compositore?
un Window Manager che fa s che ogni
R applicazione
utilizzi un buffer separato

hai gi spiegato che cos Wayland


D Ciin passato
ma puoi riassumerlo comunque?
Certamente! i sistemi operativi di tipo unix
R utilizzano un server separato, indipendente

per la propria finestra e quindi combina tutte


le finestre, spesso aggiundendovi elementi 3D
e altri effetti visivi. il compositore di riferimento
di Wayland si chiama Weston.

dal kernel, per la visualizzazione grafica. Wayland,


attualmente in via di sviluppo, dovrebbe sostituire
il display server pi usato per Linux, che si chiama
X.Org o pi semplicemente x. Molti componenti
di Wayland sono decisamente nuovi; tra essi,

Potresti spiegarmi anche che cos


D Grazie.
la gestione degli input?
utenti possono inserire del testo in un
R Glicomputer
in modi molto diversi: toccando

Linux pro 134

un touchscreen, premendo simultaneamente pi tasti


(in particolare nel caso delle scritture non alfabetiche),
mediante la voce, tramite sistemi di riconoscimento
della scrittura manuale o con dispositivi speciali per
utenti con disabilit. il software di gestione degli input
quello che converte tutti questi diversi eventi
hardware in byte di testo. La sua posizione nello stack
grafico cruciale per le moderne interfacce utente.
la sua posizione nello stack grafico
D Perch
cos importante?
un cambiamento del sistema di input,
R perch
come nel caso di Wayland, pu comportare
cambiamenti nei software che devono essere
compatibili con il sistema stesso affinch tutto funzioni
sempre nello stesso modo. Dialogare direttamente

Mir FAQ
con i toolkit per le interfacce utente, come Qt o GTK,
pu implicare una maggiore flessibilit ma richiede
molta cooperazione. Spostare la gestione degli input
in una posizione pi bassa nello stack significa
(pi o meno) far s che essa debba essere
compatibile solo con il display server.
ma che cosa c che non va
D Daccordo;
nel sistema di visualizzazione grafica
di Wayland, al punto di spingere Ubuntu
(e solo Ubuntu) a rivolgersi altrove?
Trattandosi di un rimpiazzo per X, Wayland
si concentra soprattutto o prima di tutto sul
desktop. Canonical, invece, mira ad arrivare il prima
possibile a una convergenza totale, con una priorit
sui dispositivi mobili.

totale? Cosa significa in pratica


D Convergenza
questo concetto?
applicazioni e interfacce utente non
R Significa
solo quanto pi reattive possibile ma anche
molto semplici da imparare e da usare, in quanto
sostanzialmente identiche su qualunque dispositivo.
Lidea quella di un display server che fa
esattamente ci che serve allutente e nientaltro
e si integra con tutto il resto, dalla gestione degli input
alla shell e al Window Manager.

D
R

Questo non sarebbe quindi effettivamente


possibile con Wayland?
Beh, cos la pensa Canonical. Certo, essendo
materiale Open Source sempre possibile
applicare patch e modificare a piacere gli elementi
bloccati dai protocolli prodotti da terzi; ma questo
richiede un lavoro extra. Canonical, inoltre,
intende automatizzare il pi possibile il collaudo
dei software; questo risulta molto pi difficile da fare
quando gli aggiornamenti, che potrebbero creare
problemi, provengono dallesterno dellazienda.
Infine, allinizio del 2013 Canonical ha concluso
che Wayland era ancora troppo in ritardo rispetto
ai suoi piani e che contribuire a Wayland sarebbe
stato un modo meno efficiente per ottenere
rapidamente ci che voleva.
lunica entit a mirare
D Canonical
a questa convergenza totale?
la vogliono anche altri. Plasma Workspace
R No,
di KDE, per esempio, ha un obiettivo analogo:
sviluppare una shell desktop/Window Manager
generica che si adatti automaticamente a qualunque
dispositivo su cui viene utilizzata. La differenza
che Canonical vuole di pi, lo vuole subito
e ritiene di poterci arrivare pi facilmente
muovendosi per conto proprio.

D
R

Immagino che la comunit del Software Libero


non sia particolarmente entusiasta di Mir
Dire che non particolarmente entusiasta
dire poco. Tra i primi commenti figurano
frasi come soluzione per un problema inesistente,
maniaci del controllo e Canonical ha la smania

di fare tutto da s. Alcuni sviluppatori rifiutano


semplicemente la tesi secondo cui Canonical non
potrebbe soddisfare le proprie esigenze modificando
Wayland. Altri hanno fatto notare che alcune delle
giustificazioni tecniche portate da Canonical, come
lo status della gestione degli input, reggono gi molto
meno di quanto reggessero qualche mese fa.
mi dici a proposito dellaccusa di mania
D Che
del controllo rivolta a Canonical??
che Mark Shuttleworth, il boss
R Lidea
di Canonical, voglia esercitare un tale livello
di controllo su Ubuntu da non essere in grado
di aspettare o di convincere gli altri; soprattutto
se intende realmente diventare un pezzo grosso
nel mercato dei dispositivi mobili.
questo non gi avvenuto varie volte nel
D Tutto
campo del Software Libero, senza che ci fossero
conseguenze particolarmente drammatiche?
La preoccupazione in questo caso che
Canonical abbastanza grande da poter
svolgere internamente la maggior parte del lavoro,
senza coinvolgere la comunit. Questo potrebbe
accentuare la frammentazione del Software Libero.

D
R

Aumentare la frammentazione? In che senso,


esattamente?
Per cominciare, un display server deve essere
in grado di convincere le aziende che producono
dispositivi grafici, come AMD, Intel e Nvidia, a creare
driver Open Source ottimizzati o a fornire ad altri
informazioni sufficienti per crearli. Problemi analoghi
esistono anche per gli ambienti desktop e per i toolkit
per le interfacce utente. Mir costituirebbe una terza
piattaforma da supportare, in aggiunta a X.Org
(talmente diffuso da non poter scomparire dalloggi
al domani, che qualcuno lo voglia o no) e a Wayland.

Ho capito: il rischio che Canonical si trovi


nella posizione di imporre Mir, facendone
lunico server in grado di funzionare
immediatamente?
S, questo lo scenario peggiore a lungo
termine: con un Mir strettamente integrato
con una distribuzione molto diffusa, nessuno si
prenderebbe il disturbo di lavorare su Wayland.

scenario tipo Android e Google?


D Uno
Un prodotto Open Source ma meno
Open di altri, o quantomeno non per tutti
e contemporaneamente?
Questa unottima sintesi della situazione
che potrebbe crearsi.

sarebbero le conseguenze
D Quali
se ci avvenisse?
un lato, il successo di Mir potrebbe
R Darendere
la conversione per altre distribuzioni
di qualsiasi software nato nellambito Ubuntu
(e quindi nato per utilizzare Mir) molto
pi difficile rispetto a ora.

Quali sarebbero le conseguenze


D Edidallaltro?
un insuccesso di Mir?
problema opposto. A quanto pare, Canonical
R Iladatter
a Mir solo Qt 5 e GTK 3, non le
rispettive versioni precedenti. Inoltre, molti sviluppatori
upstream potrebbero non essere in grado o non
essere disposti ad applicare una quantit di patch
valide solo per ununica distribuzione. Garantire
la disponibilit di software liberi generici sia per
Ubuntu sia per tutti i suoi derivati potrebbe divenire
molto pi complicato di oggi. Se e quando Mir
funzioner sui desktop abbastanza bene da
permettere a Ubuntu di abbandonare X.org,
distribuzioni come Kubuntu potrebbe trovare pi
pratico ritornare a Debian nel caso in cui si desideri
utilizzare applicazioni non-Ubuntu. Anche in questo
caso si tratta dello scenario peggiore, uno scenario
che potrebbe verificarsi solo nel momento in cui
uno stack grafico basato su Mir fosse sufficiente
per la creazione di un desktop moderno libero.
presumere che questo momento
D Dobbiamo
sia ancora lontano? Quando sar pronto Mir?
parliamo, Mir ancora in fase alfa.
R Mentre
Secondo alcune dichiarazioni, potrebbe essere
incluso in Ubuntu 14.04 ma si tratta di una scadenza
estremamente ottimistica.
Perch ritieni che sia poco
D Ottimistica?
realistica?
parliamo di un software complesso che
R Perch
sar utilizzabile solo in presenza di una shell
Unity compatibile con Mir e di driver grafici adeguati.
i driver grafici! Un bel problema,
D Gi,
non vero?
per un server concepito
R S,perspecie
funzionare su tutti i dispositivi possibili.
Per quanto riguarda i desktop, Canonical
sta sondando AMD e Nvidia per convincerle
a supportare Mir; ma la cosa richieder tempo.
Una nota positiva che qualsiasi soluzione
escogiteranno per Mir dovrebbe funzionare
anche per Wayland.
la situazione per quanto riguarda
D Qual
i chip grafici dei dispositivi mobili?
dovrebbe essere pienamente compatibile
R Mir
con i driver esistenti per Android e garantire
livelli di stabilit, prestazioni e capacit di gestione
dellenergia identici a quelli offerti da Android.
domanda: personalmente, che ne pensi
D Ultima
del progetto Mir di Canonical?
se Canonical stesse tentando realmente
R Anche
di creare un proprio Android per i sistemi mobili,
avremo comunque bisogno dei sistemi tradizionali
per numerose operazioni. Di conseguenza,
mi preoccuperei di pi se questa corsa finisse
per rallentare la migrazione da X da parte
dei desktop liberi. Solo il tempo dir se questa
preoccupazione fondata. LXP
Linux pro 134

Sysadmin

Ecco come aggiungere competenze al vostro CV,


scoprendo nuovi strumenti da sysadmin

computer stanno cambiando indipendentemente dalla loro dimensione


e dal tipo di sistema operativo che utilizzano. Un decennio fa, per scrivere
un foglio di testo, si potevano usare solo un PC desktop o in alternativa
un portatile. Adesso si pu fare la stessa cosa con un tablet, ma perfino
con uno smartphone. In pratica, continuiamo a produrre dati sempre
e comunque, anche quando siamo fuori casa. Dati che passano o vengono
poi immagazzinati in enormi centri
di calcolo. La maggior parte delle
persone utilizza il PC cos: creando
e condividendo informazioni.
Paradossalmente, se si archiviassero
tutti i nuovi documenti creati in unora
nel mondo intero, si otterrebbe una pila
di dischi alta 165 chilometri. Per fortuna non sono i DVD i supporti
di memorizzazione pi utilizzati. Ci sono invece i Data Warehouse, magazzini
ricchi di archivi che un tempo erano appannaggio di poche e selezionate
aziende della Silicon Valley. Con il trascorrere del tempo, e labbassamento
dei costi di accesso alla tecnologia, i cosiddetti Big Data sono diventati

strutture alla portata di molte realt enterprise pi o meno grandi. qui,


in questi centri nevralgici dove quotidianamente vengono archiviate quantit
formidabili di informazioni, che gli amministratori di sistema fanno
la differenza. S, perch grazie a queste figure professionali altamente
specializzate se i datacenter funzionano a dovere. I sysadmin di nuova
generazione devono conoscere perfettamente i tanti sistemi operativi con
cui hanno a che fare, ed essere in grado
di aggirare qualsiasi ostacolo per mantenere
saldamente il controllo dellinfrastruttura
software. Ecco perch un amministratore
di sistema deve stare al passo con i tempi,
aggiornandosi in continuazione per
conoscere lultima novit nel proprio campo
professionale. In questo articolo vi proponiamo una serie di argomenti che
potrete aggiungere al vostro bagaglio di competenze, utili per completare
il Curriculum Vitae da mettere in mostra ai colloqui di lavoro. Se invece siete
tra i fortunati gi impiegati nel ramo, le pagine che seguono potrebbero darvi
uno spunto per ampliare ancora di pi le vostre conoscenze.

I sysadmin di nuova
generazione devono essere
al passo con i tempi

LINUX PRO 134

Sysadmin

Vagrant
Create macchine virtuali in pochi e semplici passaggi

a maggior parte di voi sicuramente avr familiarit con


le macchine virtuali. Questi strumenti permettono di provare
pi distribuzioni o mantenere in vita vecchi sistemi operativi,
il tutto senza intaccare il vostro computer principale. Utilissime
anche in ambito professionale, permettono di sfruttare una sola
macchina per diversi scopi. Se avete bisogno di un PC
costantemente connesso a Internet con funzioni di server, e non
avete necessit di un sistema particolarmente potente, molto
meglio sfruttare una macchina virtuale, anzich un computer vero
e proprio. I risparmi in termini di denaro e gestione sono formidabili
e la velocit con cui si installa e gestisce una VM sicuramente
inferiore rispetto a una macchina reale. Per un normale utente
desktop, VirtualBox o KVM sono perfetti per sfruttare al meglio
sistemi virtualizzati. Facili da usare, possono contare su
uneccezionale quantit di materiale sparso per la Rete, utile
anche a chi alle prime armi per cimentarsi nella creazione di pi
macchine virtuali. In un datacenter, per, rischiano di essere carenti
dal punto di vista gestionale, rendendo difficile e dispersivo
controllare un numero rilevante di istanze. Certo, potreste sempre
configurare manualmente ogni macchina, ma sarebbe comunque
una perdita di tempo. Ecco perch molto meglio ricorrere a uno
script che lo faccia per voi in modo del tutto automatico.

una nuova directory e da l aprite il terminale. Bisogna poi ricordare


che Vagrant usa i file box come template per le macchine virtuali. Nel
nostro caso abbiamo usato una particolare macchina virtuale che si
basa sulla release LTS di Ubuntu Server. Scaricatela e installatela con:
vagrant box add precise32 http://files.vagrantup.com/precise32.box
In alternativa potete scaricara a parte, copiarla nella directory
in cui volete lavorare e lanciarla con:
vagrant box add precise32.box
Adesso avviate la macchina virtuale con queste istruzioni:
vagrant init precise32
vagrant up
Ora avete bisogno di accedere alla VM e questa una funzione
in cui Vagrant vi render sicuramente la vita pi facile. Invece di
ricordare i nomi utente delle varie macchine virtuali, basta eseguire
vagrant ssh
Ecco che Vagrant si appena connesso alla VM. Se controllate
con whoami e sudo -I, scoprirete senza alcuna difficolt di essere
collegati con lutente Vagrant che dispone di permessi sudo.
C per una cosa insolita, che potete notare tornando alla directory
/vagrant. Questa vi consente di rientrare in modo veloce nella
macchina host, rivelandosi oltremodo utile per spostare i dati
da e per le macchina virtuale. Ecco fatto, adesso sapete come fare.

Configurare pi macchine virtuali

Se volete
conoscere
lo stato di
operativit
delle vostre
macchine
virtuali,
non ci sono
problemi. Basta
interrogare
Vagrant

Ci sono numerosi stratagemmi per creare uno script come quello


che vi proponiamo. In questo caso userete Vagrant, un comodo
strumento per aiutarvi nella configurazione di pi VM identiche.
Dovreste poterlo trovare nei repository della vostra distro,
ma potrebbe trattarsi di una versione non aggiornata, pertanto
vi consigliamo di scaricarlo direttamente da http://downloads.
vagrantup.com. Non dimenticate poi di installare VirtualBox.
Vagrant lavora basandosi sulle directory e pu operare senza
problemi su percorsi separati per progetti diversi. Create quindi

Usiamo Openstack
Vagrant uno strumento perfetto per
gestire un gran numero di macchine virtuali
in poco tempo. Tuttavia, se state lavorando
su qualcosa di molto pi simile a uno spazio
cloud privato, non la soluzione pi
comoda. OpenStack di gran lunga
migliore. Infatti vi permette di compiere
rapidamente il backup di macchine virtuali
o spazi cloud in esecuzione sul vostro
server. Si dimostra poi utile se avete
bisogno di riallocare le risorse di calcolo
per progetti diversi. DevStack un ottimo
modo per iniziare, perch grazie a questo
script potete impostare OpenStack in
esecuzione locale: con soli tre comandi
avete a disposizione funzioni Cloud con
cui divertivi. Per prima cosa assicuratevi

di avere installato Git dal vostro gestore


di pacchetti, quindi eseguite:
git clone git://github.com/openstack-dev/
devstack.gitcd devstack
./stack.sh
Troverete diversi strumenti a linea
di comando, ma il modo migliore per iniziare
linterfaccia Web di Horizon. Basta puntare
il browser su localhost e iniziare.

OpenStack un prodotto Rackspace


e NASA. La potente interfaccia
grafica vi permette di gestire tutte
le impostazioni di molteplici server:
cloud, storage e molto altro ancora

LINUX PRO 134

Sysadmin

Provisioning

Gestite al meglio e velocemente la configurazione di sistema

ome avete visto nella pagina precedente, potete usare


Vagrant per lanciare una macchina virtuale al volo e senza
ricordare le credenziali di accesso. Bene! Ora vediamo
come fare per configurarla con tutte le applicazioni ad hoc.
Dal momento che la VM usata per i test su Ubuntu, potete
usare apt-get e ottenere tutto quello che vi serve. Se poi
vi sentite intraprendenti, niente vieta di realizzare uno script
di shell e condividere il tutto attraverso la directory /vagrant.
Se per dovete creare e gestire un centinaio di macchine,
vi troverete subito in difficolt a causa della mole di lavoro
da compiere. Ecco perch, per fare tutto in modo pratico
e indolore, impostando le VM con le vostre preferenze, Vagrant
usa Puppet. Per prima cosa dovete aprire il file Vagrantfile
e decommentare (cio rimuovere gli hash) le righe:
config.vm.provision :puppet do |puppet|
puppet.manifests_path = manifests

puppet.manifest_file = init.pp
end
e la riga
config.vm.network :public_network
In questo modo avete ordinato a Vagrant di mettere
a disposizione della macchina virtuale Puppet e utilizzare
il file init.pp per controllare questultimo, che a sua volta
si trova nella directory manifests, allinterno della cartella
del progetto su cui state agendo. Adesso avete bisogno
di aggiungere unulteriore riga
puppet.module_path = modules
tra la linea manifests e init.pp. In questo modo dite a Puppet
di usare i moduli allinterno della directory modules. Allindirizzo
http://forge.puppetlabs.com trovate una vasta schiera
di Puppet da usare, ma ce ne sono un paio anche allURL
http://bit.ly/19vmdH7 (nello zip trovate anche altri file relativi
a questo articolo). Dovrete solo scompattare il file modules.tar.
gz nella directory che usate per questo progetto.

Padroneggiare Puppet

I messaggi relativi al modulo Puppet hanno un colore celeste chiaro, mentre quelli
in bianco sono relativi a Vagrant. Avete cos una chiara percezione di cosa sta succedendo

Adesso proseguite creando una directory manifests, per poi


inserire al suo interno il file init.pp. Apritelo quindi con il vostro
editor di testo preferito e aggiungete una sola riga:
class {apache: }
Una volta creata la vostra macchina virtuale, questo tutto quello
che dovete fare per installare Apache. Adesso non vi resta
che riavviare la VM con il comando:
vagrant destroy
vagrant up
Dopo aver completato questi passaggi, potete eseguire il login
con vagrant ssh e lanciare ifconfig per estrapolare lindirizzo
IP. Puntate il browser sulla macchina host e dovreste poter
vedere Apache attivo. Nel caso in cui riscontriate un errore
404 page not found, significa che non c alcun file index.html
da far leggere al server Web. Dovete infatti ricordare che
i moduli Puppet sono utilissimi per avere subito a disposizione

La moda degli acronimi in aaS


Gli acronimi sono sempre stati largamente usati
nel mondo dellinformatica. Forse il desiderio
innato di comprimere tutto nel minor numero
di caratteri ASCII possibili, forse fa solo sembrare
pi intelligenti, fatto sta che le sigle pi trendy
degli ultimi tempi hanno tutte la finale in aaS.
Tutto iniziato con Software as a Service (SaaS),
per esempio Google Docs. Lidea di base
quella di rendere un programma non pi
un prodotto, ma un servizio a noleggio, di cui
il produttore mantiene un controllo costante,
supervisionando gli aggiornamenti e molti altri
aspetti. Poi venuto il turno di Platform

10

LINUX PRO 134

as a Service (PaaS). Molto simile a SaaS, anzich


un programma, prende in considerazione una
piattaforma. Per esempio potreste acquistare
un ambiente di sviluppo impostato secondo
le vostre preferenze. Alla fine della carrellata
c Infrastructure as a Service (IaaS). In questo
caso si guadagna laccesso ad alcune risorse
di calcolo, che potete controllare come preferite.
Di solito si parla di risorse virtuali (dischi, macchine
e via dicendo) di cui se ne paga lutilizzo.
Lesempio pi famoso in questo ambito
sicuramente Amazon. Grazie al cloud, permette
di scegliere il tipo di risorsa desiderato e il relativo

livello di controllo, cos da consentire


a diversi reparti di una stessa azienda di avere
a disposizione uninfrastruttura molto pi flessibile.
Questa flessibilit, per, ha un prezzo molto pi
alto rispetto a quello economico. la supervisione
che il fornitore del servizio opera sulle
infrastrutture, a far perdere una parte del
controllo che prima spettava agli amministratori
di sistema. Ecco perch i nuovi sysadmin
che troveranno posto in aziende sempre pi
improntate alloutsourcing dovranno considerare
bene le risorse che andranno a gestire e quelle
che, invece, sono affidate in conto terzi.

Sysadmin
Da sysadmin a DevOps
Se siete dei programmatori o dei tester di software,
probabilmente potrete pensare che quanto scritto
in queste pagine non sia di vostra competenza. Eppure,
negli ultimi anni, c sempre pi richiesta di sysadmin
con capacit nello sviluppo e nella gestione del
software. Si tratta di una nuova figura professionale

che prende il nome di DevOps (sviluppo e operazioni).


Nel mondo dei DevOps, lamministrazione
di uninfrastruttura informatica fortemente legata
allo sviluppo di programmi specifici per lambiente in cui
si opera. Se in passato un sysadmin aveva bisogno
di eseguire dei test, poteva richiedere lausilio di uno

istanze gi configurate, ma il loro vero punto di forza un


particolare linguaggio che possiamo usare per indicare
al sistema ci che vogliamo avere subito a disposizione nella
macchina virtuale. I moduli Puppet, infatti, usano un linguaggio
dichiarativo e non procedurale (come uno script shell regolare).
Ci significa che siete voi a dirgli cosa volete, ma non cosa
devono fare. I Puppet basano il loro funzionamento su moltissime
risorse, ma prima di perdersi, opportuno dare unocchiata al file
init.pp e aggiungere le seguenti righe:
file {/etc/apache2/htdocs:
ensure => directory,
owner => www-data,
}
Ecco che queste stringhe mostrano chiaramente la forma
dichiarativa di cui parlavamo poco fa. Non usiamo mkdir
per creare, n chown per modificarne le propriet.
Semplicemente non ci interessa farlo. Quello che realmente
importa che alla fine della configurazione la directory venga
creata. Unaltra cosa di cui per avete bisogno, aggiungere

specialista nel settore, ma adesso sembra che questa


tendenza stia finendo. La specializzazione di cui
le aziende odierne hanno bisogno richiede sempre
pi la capacit di allargare i propri confini professionali
a compiti che, fino a qualche tempo addietro, facevano
parte del bagaglio di altre figure.

un file index.html nella directory di Apache, in modo che venga


letto dal server una volta avviato. Scrivete quindi queste righe:
file { /etc/apache2/htdocs/index.html:
ensure => present,
content => <html><head><title>Ciao Mondo</title></
head><body><h1>Ciao Mondo</h1></body></html>,
owner => www-data,
require => File[/etc/apache2/htdocs],
}
Come potete vedere, questo blocco di codice simile
al precedente. La differenza pi significativa sta nella riga
require. Visto che state dicendo al sistema cosa volete,
ma non come farlo, la macchina non crea le risorse esattamente
come gli avete detto. Semplicemente, ancora una volta, non
ci interessa. per importante ricordare che non potete
creare alcun file, senza prima aver generato la directory
in cui deve essere memorizzato. In questo caso abbiamo
usato lattributo content per creare il file, ma niente vieta
di generarlo esternamente al server. Una volta apportate
queste aggiunte, lanciate i comandi:
vagrant destroy
vagrant up
per avviare la VM. Come prima, recuperate lindirizzo IP
e poi puntate il browser su di esso. Stavolta
vedrete Apache avviarsi senza problemi
e leggere il file index.html. In questo
tour no stop tra Puppet e Apache,
dovreste aver imparato le basi per
applicazioni anche pi complesse.

Questo un semplice esempio di come si possa usare un Puppet per creare


un file index.html su un server Apache. Non deve per stupire come realt
ben pi articolate usino i Puppet per compiti ben pi complessi

Sysadmin

NoSQL

Bandite le tabelle dal database

database per Linux non mancano di certo: MySQL, MariaDB,


Postgres, SQLite. Sono solo alcuni dei pi noti, ma tutti hanno
in comune luso di SQL. Structure Query Language il metodo
pi comune per ottenere informazioni da e verso banche dati.
semplice, quasi universale e ogni amministratore di sistema
deve essere in grado di improvvisare una query per richiedere
tutto quanto gli necessario. SQL, inoltre, scalare e funziona
perfettamente sia nelle applicazioni per smartphone, sia in ambiti ben
pi complessi e dalle dimensioni maggiori. Tuttavia, quando si inizia
ad avere a che fare con set di dati davvero enormi come quelli
che transitano in un Data Warehouse, allora le cose si complicano.
Essendo quasi impossibile contenere un insieme cos vasto
di informazioni in SQL, la necessit ha dato ragion dessere a uno dei
suoi principali rivali: NoSQL. Ci sono gi un gran numero di database
disponibili che sfruttano questo linguaggio, uno tra tutti il popolare
MongDB. Quando lo utilizzate, la cosa pi importante fare piazza
pulita di tutte le vostre conoscenze in merito ai database: tabelle,
chiavi, selezioni da x a y. Niente del genere, dovete semplicemente
dimenticare tutto.
Anzich memorizzare
i dati con righe
e tabelle, MongoDB
archivia le informazioni
in un documento
JavaScript Object
Notation (JSON). Piuttosto che addentrarci in spiegazioni troppo
tecniche e noiose per capire come funziona, conviene passare
subito a un esempio pratico. Prima di tutto, per, dovete installare
MongoDB. Disponibile come repository per la maggior parte delle
distro, potete trovarlo allindirizzo http://www.mongodb.org/
downloads. Scegliete la versione a 32 o 64 bit e poi estraetelo con:
tar zxvf <nomefile>
Avrete bisogno di creare anche la directory per il database:
mkdir -p /data/db
Fatto questo, usate il comando cd per entrare nella directory bin
che trovate allinterno dellarchivio appena estratto:
cd ~/mongodb-linux-i686_64-2.4.6/bin
e lanciate ./mongod per attivare il database. Ora avviate ./mongo
per connetterlo con un client (omettete ./ se avete installato dal

State cercando lavoro?


Imparare NoSQL servir
ad ampliare il vostro CV

Per conoscere
i comandi di base
di MongoDB,
basta utilizzare
il comando help

12

LINUX PRO 134

gestore pacchetti). MongoDB usa JavaScript per manipolare i dati


ed quindi possibile far tutto usando la sintassi tipica di questo
linguaggio. Ecco un esempio pratico:
print(Ciao Mondo);
Come abbiamo detto in precedenza, il cuore di MongoDB in un
documento JSON. I file di questo genere contengono uno o pi
coppie basate su name/value, ovvero nome/valore, nella forma:
{ name1:value1, name2:value2 }
In questo formato, peraltro molto flessibile, questi nomi si possono
riferire a qualsiasi cosa. Ed probabilmente questa la pi grande
differenza tra MongoDB e un tradizionale database SQL.
Non c alcuno schema. Gli amanti di SQL si sentiranno subito
malissimo al solo pensiero di una prospettiva del genere: un database
che non ha schema, ma com possibile? Eppure proprio cos.
compito dellapplicazione che usa il database, assicurarsi
che i dati siano coerenti.

MongoDB
Cominciate con laggiunta di alcuni dati al database. Chiedete
a MongoDB di entrare:
db.test.save({Ciao:Mondo});
db.test.find();
Questo comando permette di fare un paio di cose. In primo luogo,
crea il test di raccolta e aggiunge un documento con una sola coppia
name/value con il nome Ciao e Mondo. Poi richiede tutti
i documenti collegati. In realt, la coppia appena inserita non ha
alcun senso, pertanto ne realizzerete una con un proprio filo logico:
for(i=0; i<10; i++) {db.test.save({ Number : i });}
db.test.find();
Questa stringa vi mostra chiaramente come JavaScript renda la vita
davvero molto pi semplice. Potete poi notare come recuperi
il record appena aggiunto in precedenza, nonostante il formato
sia completamente diverso dagli altri. Ecco, questo quello che
intendevamo quando abbiamo detto che NoSQL non ha bisogno
di schermi. I database come MongoDB sono molto pi versatili
e funzionali nellaccogliere qualsiasi tipo di dato. Il comando db.test.
find() permette poi di ottenere solo risultati specifici. Per esempio:
db.test.find({number:2})
riporta lelemento o gli elementi che hanno un numero 2.
db.test.find({number: {$lt: 8}})
restituisce tutti gli elementi con numero inferiore a 8. Fin qui abbiamo
esaminato le caratteristiche basilari del database: inserire e recuperare
i dati. A un occhio inesperto o poco attento, stando a quanto fatto fino
a ora, non ci sarebbe niente di particolare in NoSQL, non fosse per
il fatto che la chiave di questo standard la scalabilit. In altre parole,
in grado di ospitare un unico database su pi macchine. Certo,
si pu fare altrettanto con molti database SQL, ma non un compito
semplice e diventa ancora pi complesso mano a mano che
i computer aumentano. NoSQL stato progettato fin dallinizio
per essere scalabile e sono le funzioni di aggregazione a renderlo
evidente. Non ci sono query che restituiscono solo dati, ma
si combinano in forme, come la somma, la media o qualcosa
di pi complesso e particolare.

Sysadmin

Robomongo (http://robomongo.org) un front-end grafico


per MongoDB. Attualmente alla versione 0.8.2

Map Reduce
Se per esempio volete calcolare la somma dei numeri
che abbiamo appena utilizzato, potete usare la funzione
mapReduce(). Essa composta da due parti: map e reduce.
La prima viene eseguita su ciascun record appartenente
allinsieme ed emette i valori che vanno nella funzione reduce,
che a sua volta produce una chiave e un valore. La chiave la
categoria entro la quale si riducono i valori. Il valore essenziale
e deve esserci per forza, ma pu essere anche un documento
JSON come per esempio una voce del database. La funzione
reduce riprende quindi tutti questi valori e li comprime in forma
singola. La funzione mapReduce, per calcolare la media
dei numeri pari e dispari del vostro insieme, ha solo bisogno
di sviluppare il numero:
var mapFunction = function() {
var out = dispari;
if (this.number % 2 == 0) { out = pari;}
emit (out, this.number);
}
Questa stringa fa in modo di creare un record per ogni
documento nellelenco. La chiave sar pari o dispari e il valore
sar il numero memorizzato in tale documento. Proseguite con:
var reduceFunction = function(ids,number){
return Array.avg(number);};
///
Cos calcolate la media dei valori per ogni chiave. Ora lanciate
il mapReduce con:
db.test.mapReduce(
mapFunction,
reduceFunction,
{ out: mr_out }
)

Le funzioni chiamate mapFunction e reduceFunction possono


essere qualsiasi cosa vogliate, a patto che corrispondano ai valori
che avete inserito in mapReduce. Questo comando, invece,
eseguir mapReduce e inserir nelloutput un nuovo insieme
chiamato mr_out, che siete in grado di vedere con:
db.mr_out.find()
A questo punto sono dobbligo un paio di considerazioni. Prima
di tutto, mapReduce sembra troppo complicato per cose come
questa e in un certo senso lo . Infatti si trova molto pi a proprio
agio con aggregati complessi, dove la potenza superiore dello
scripting viene in aiuto. In secondo luogo potreste chiedervi dove
siano i benefici prestazionali. Visto che ogni esecuzione della
funzione map (una per ogni documento) indipendente
da tutte le altre, possono essere distribuite su pi database.
Per fare un semplice esempio, se avete a disposizione una
potente funzione map e una grande quantit di dati, il risparmio
pu essere davvero significativo. Tanto per rendervene conto,
mapReduce funziona cos bene nellaggregazione parallela
di grandi insiemi di dati, che viene implementata in moltissime
applicazioni come Apache Hadoop. Naturalmente tutto questo
non significa che dora in poi dovrete ignorare o cestinare
i database relazionali. Tuttavia non il caso di precludersi
la possibilit di usare NoSQL quando avete a che fare con
grandissime quantit di dati. Inoltre, se state cercando un nuovo
lavoro o vi state perfezionando, conoscere in modo approfondito
NoSQL potrebbe aprirvi un numero interessante di porte.
Stando al portale indeed.com, sempre pi aziende ricercano
specialisti capaci di usare MongoDB, il quale sta vivendo
un periodo di intensa crescita nel panorama IT mondiale.
Queste due pagine sono solo un assaggio e se preferite
approfondire largomento, vi consigliamo di dedicarvi
alla lettura del manuale di MongoDB, che trovate
allURL http://docs.mongodb.org/manual.

Se non volete installare MongoDB, sul sito www.mongodb.org trovate una


comodissima shell online in cui provare le funzionalit del database

GridFS
I database sono enormi ed efficienti motori di ricerca
per i dati, quindi perch non usarli come filesystem?
Con MongoDB effettivamente possibile utilizzare
un sistema chiamato GridFS, che consente al database
di essere utilizzato per archiviare e recuperare i file

come un normale filesystem. Al momento i driver


disponibili per montarlo su un sistema Linux non sono
ancora stati rilasciati, quindi dovete utilizzare
lapplicazione mongofiles che trovate con MongoDB.
Certo, per un normale sistema desktop una soluzione

del genere ha davvero poco senso, anche se siamo


sicuri che qualcuno si cimenter sicuramente in questo
espediente. Il vero vantaggio di usare GridFS la
possibilit di suddividere il database su vari server,
rendendo cos il sistema pi veloce.

LINUX PRO 134

13

Sysadmin

Nginx

Il server Web pi leggero che ci sia

Potreste
rimanere stupiti
scoprendo quanti
grandi nomi della
Rete usano Nginx.
Date uno sguardo
a www.nginx.com

pache uno dei migliori software Web al mondo. Mettendo


a disposizione gratuitamente un potente server, ha permesso
a moltissime persone di fare innumerevoli cose, che
altrimenti sarebbero state impossibili se non pagando fior di licenze.
Insieme a Linux, MySQL e PHP, fa parte della famosa piattaforma
LAMP, una delle migliori attualmente in circolazione per lavorare sul
Web. Tuttavia avete appena visto come lo stesso MySQL dimostri non
poche difficolt nel gestire un volume di dati particolarmente intenso.
Anche Apache, nonostante la sua blasonata carriera, non tra
i server pi leggeri e nemmeno tra i pi moderni. Ecco che, come
NoSQL per i database, anche in ambito server si affaccia un nuovo
nome: Nginx, che si pronuncia engine-X. Nella sua forma base
funziona pi o meno come Apache e dovreste trovarlo nel gestore
pacchetti della vostra distro (se avete Red Hat, dovrete abilitare
i pacchetti extra per il repository di Enterprise Linux EPEL).
Per installarlo in una distro basata su Debian, usate il comando:
sudo apt-get install nginx
Se non avete ancora un server Web in esecuzione sulla porta 80,
puntando il browser su localhost dovreste essere in grado di vedere
la pagina di benvenuto di Nginx. Se avete gi un server operativo,
non ci sono problemi. Potete modificare velocemente le porte dal file
di configurazione che trovate in /etc/nginx/sites-enabled. Apritelo
con qualsiasi editor di testo da questa directory (per evitare problemi,
lanciate leditor direttamente con sudo) e modificate queste righe:
listen 80;
listen [::]:80 default_server ipv6only=on;
con
listen 8080;
listen [::]:8080 default_server ipv6only=on;
Adesso riavviate la macchina con questi comandi:
sudo nginx -s quit
sudo nginx
Adesso dovreste essere in grado di accedere a Nginx da
localhost:8080. La radice Web cui far riferimento corrisponde a /usr/
share/ningx/html, ma potrebbe variare secondo la distro. Se non la
trovate, controllate il file di default. Adesso potete caricare in questa
directory il vostro insieme di documenti HTML, immagini, script e via

Nginx, quando si trova sotto pressione, utilizza una quantit


di memoria parecchio inferiore rispetto ad Apache

dicendo, quindi visualizzare il tutto tramite localhost:8080.


Prima di andare oltre, importante fare una precisazione.
Al giorno doggi, la maggior parte dei siti Web contiene una
quantit impressionante di script e applicazioni tali da richiedere
uninfrastruttura potente e spesso anche pesante. Nginx
sicuramente pi leggero di Apache, ma non bisogna dimenticare
che la potenza di questultimo sta proprio nella capacit
di supportare attivit intensive come quelle richieste dai siti
moderni. Ci detto, Nginx riesce a far funzionare la sua dieta
dimagrante grazie a un interessante stratagemma: agisce come
proxy inverso e in pratica si pone come server tra la macchina
principale e Internet. Memorizzando nella propria cache le richieste
pi frequenti, si interfaccia con il server principale solo quando
si trova a dover gestire funzioni che non ha ancora archiviato nella
propria memoria. Tutti i contenuti statici, come immagini, JavaScript
e via dicendo, vengono memorizzati nella cache del proxy inverso.
Ecco spiegato il motivo per cui Nginx un peso piuma rispetto ad
Apache: praticamente lascia il grosso del lavoro al server principale,
tenendosi per s la routine. E non per nulla Nginx viene utilizzato
anche da molti siti particolarmente popolari, in modo da diminuire
il peso che grava sui server primari. Se state gi utilizzando Apache,
lo potete sfruttare come server principale, ma trattandosi
di un semplice test forse risulter eccessivo. Se non avete ancora
un server Web attivo, potete rimediare:
python -m SimpleHTTPServer 8000
Questa stringa lancer un server Web sulla porta 8000 della
directory corrente. Potete quindi impostare il vostro proxy inverso,
aggiungendo quanto segue al file predefinito:
location /myapp/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_
forwarded_for;
proxy_pass http://localhost:8000/;
}
Ora, quando puntate il browser a http://localhost:8080/myapp/,
Nginx invier la richiesta a localhost:8000 dove il browser
in esecuzione. Non serve che il server proxy sia in attivo
sulla macchina principale, ma potete installarlo anche su altri
server, magari usandolo con pi unit per distribuire il carico
di lavoro in modo equo.

14

LINUX PRO 134

Sysadmin

Il nemico

Trasformate la vostra rete in una fortezza digitale

e tecnologie che avete visto fino a ora, se paragonate agli


standard del passato, consentono di gestire una quantit
di dati nettamente superiore. Questo significa che le
persone in grado di scambiarsi informazioni nel mondo sono
sempre di pi. Internet, come sapete, stata uninvenzione
eccezionale, che ha radicalmente cambiato il modo di vivere
di milioni di persone. Pensate solo alla visibilit di un sito.
Spesso si finisce per dimenticarsene, ma non c niente che
abbia una visibilit pi ampia di una pagina Web. Potete
raggiungerla da qualsiasi luogo, tutto quello di cui avete bisogno
una connessione da sfruttare per collegarvi a Internet.
Purtroppo, per, necessario fare i conti anche con laltra faccia
della medaglia: il fatto che la Rete, per molti aspetti, sia ancora
una giungla priva di regole, dove una quantit importante di
persone tende a fare il bello e il cattivo tempo, senza tenere
conto, non solo delle leggi, ma anche del rispetto verso il
prossimo. Tanto per citare un esempio, basta dare unocchiata
alle statistiche di un sito di media importanza. Troverete senza
dubbio traccia di una serie di attacchi che cercano in qualche
modo di sfondare le difese del server in cui ospitato. Nella
maggior parte dei casi bisogna ritenersi fortunati se non si
oggetto di un DoS. Senza poi considerare la piaga dello spam
e i bot che asfissiano laria di forum e piattaforme di discussione
con continui e assillanti messaggi pubblicitari. Questi,
in definitiva, sono i motivi per cui ogni sistema deve avere
a disposizione il pi alto livello di sicurezza possibile. E ancora
una volta spetta ai sysadmin assicurarsi che il lavoro sia fatto
a regola darte. Gli amministratori di sistema di nuova
generazione, infatti, devono essere quanto pi possibile esperti
di sicurezza, ma soprattutto capaci di risolvere i problemi anche
quando linfrastruttura viene attaccata. Pensiamo quindi di darvi
un valido aiuto nellillustrarvi una serie di consigli per aumentare
rapidamente il livello di affidabilit dei vostri sistemi. Lo spam,
come abbiamo detto, uno dei problemi pi frequenti contro
cui un sysadmin deve scontrarsi. Pu far breccia tramite
messaggi di posta elettronica, post sui forum, commenti
su qualsiasi piattaforma e cos via. I CAPTCHA sono abbastanza
efficaci, ma hanno il difetto di far indispettire gli utenti.
ReCAPTCHA di Google gratuito ed uno tra i pi efficaci
(www.google.com/recaptcha). Certo, un captcha non
sufficiente ad arrestare gli spambot pi evoluti, ma almeno
pu arginare il problema. Anche se non crediamo possa stupirvi
il fatto che in alcuni paesi esistano veri e propri bacini
di manodopera a basso costo, impegnati nel far superare
manualmente i CAPTCHA ai bot. Un altro metodo tra i pi
efficaci la condivisione degli indirizzi IP degli spammer
su appositi siti, che si propongono
di combattere questa piaga
condividendo con chiunque
gli identificativi di bot
e spammer professionisti.
Uno dei pi famosi, impegnato
in questa lotta da anni, sicuramente

Stop Forum Spam un baluardo contro lo spam oramai da molti anni. Dopo essersi
registrati, possibile segnalare gli IP di bot e spammer professionisti

Stop Forum Spam, www.stopforumspam.com.


Un approccio alternativo affidare i commenti dei vostri spazi
Web a uno specialista come Disqus (http://disqus.com),
permettendovi cos di pensare ad altro e non preoccuparvi
di eventuale spam nel vostro spazio di discussione. Come per
abbiamo avuto modo di vedere, lo spam non certo lunico
problema con cui avrete a che fate. Ecco perch dovete trovare
soluzioni a tutto tondo e che prendano in considerazione
il problema nella sua complessit. Per fortuna sotto questo
punto di vista non
siete soli, perch
esistono servizi
appositi che
vi consentono
di dormire sonni
tranquilli, mentre
uno specialista pensa alla sicurezza della vostra infrastruttura.
il caso di Cloudflare (http://it.cloudflare.com) che, oltre
a fornire una serie di servizi per potenziare i sistemi Web, offre
un ottimo servizio di protezione contro molti tipi di attacco.
Fin qui vi abbiamo dato solo una panoramica del problema
sicurezza, che invece avrebbe bisogno di uno spazio pi ampio
per essere trattato integralmente. Dovete per ricordare che
le aziende vanno spesso alla ricerca di professionisti proprio
in questo ambito. Un sysadmin davvero completo, quindi,
deve conoscere la sicurezza come le sue tasche, e avere
effettivamente speciali competenze nel ramo e non pu far altro
che dare lustro al vostro curriculum. Se poi volete
iniziare fin da ora ad approfondire lampio
argomento, due ottimi punti di partenza
sono le pagine di www.owasp.org,
dedicato alla sicurezza Web, e www.
offensive-security.com/metasploitunleashed/Metasploitable. LXP

Un sysadmin di nuova
generazione deve essere
un esperto di sicurezza

LINUX PRO 134

15

Il super terminale

Il super
terminale
Dite addio alla vecchia e incrostata riga
di comando e scoprite la cosa pi originale che abbiamo
visto di recente. Linux Pro vi spiega tutto...

lla prossima riunione del vostro Linux


user Group o semplicemente al bar
con un po di amici che usano
Gnu/Linux, chiedete cosa pensano
della riga di comando. i novellini probabilmente
la descriveranno come magia nera che fa
sembrare tutti come se stessero facendo
incursione nel pentagono. i veterani, al
contrario, vi diranno che lunico vero modo
di gestire una macchina Linux e che ottima
per automatizzare le operazioni. Ma fino a poco
tempo fa, se qualcuno vi avesse detto che
la riga di comando emozionante, avreste
chiamato gli uomini in camice bianco per
portarlo via. Siete per sicuri che uninterfaccia
vecchia di decenni non possa entusiasmare
la gente? Bene, Terminology sta per cambiare
tutto. un emulatore di terminale, un

16

Linux pro 134

programma che contiene la riga di comando,


proprio come Gnome Terminal, Konsole
o i classici XTerm e Rxvt. Ma mentre quei
terminali vecchia scuola vi limitano praticamente
al solo testo, Terminology fa un gigantesco balzo
in avanti, integrando elementi multimediali
in nuovi impressionanti modi. Colma il divario
tra una riga di comando e un ambiente grafico
completo, creando una sorta di ambiente
ibrido che offre il meglio di entrambi i mondi
e potrebbe dimostrare di essere il futuro
delluso del computer da riga di comando.
Terminology un componente di
Enlightenment, un gestore di finestre
dallaspetto davvero speciale, che era dotato di
effetti come le finestre semitrasparenti quando
molti degli sviluppatori degli GnoME e KDE di
oggi portavano ancora i pannolini. Alcuni utenti

potenziali di Enlightenment sono scoraggiati


dal basso numero di versione del software.
Dopo tutto, come pu un programma essere
solo alla versione 0.17 (nota anche come E17)
nel 2013, se stato distribuito per la prima
volta nel 1997? in realt il basso numero
di versione nasconde un eccellente insieme
di funzioni e la stabilit di Enlightenment.
Conosciamo molti lettori di Linux pro che usano
solo Enlightenment e ci sono persino alcune
distribuzioni basate su di esso. nelle prossime
pagine vi mostreremo come installare e far
funzionare Terminology e lultima versione
di Enlightenment e poi esploreremo in dettaglio
le caratteristiche del primo. Faremo anche una
bella chiacchierata con Carsten Haitzler, luomo
dietro il software, per scoprire quali ulteriori
chicche possiamo aspettarci di vedere in futuro.

Il super terminale

Come si installa
S

ebbene Enlightenment sia principalmente un gestore


di finestre, ha anche alcune qualit da ambiente grafico, come
un gestore di file e varie librerie e tecnologie di supporto.
Di conseguenza, installarlo dal codice sorgente pu esser piuttosto
laborioso, vi diremo di pi tra un momento. il percorso pi semplice
per la comprensione di Enlightenment attraverso una distribuzione
Live che ce lha preinstallato, e la nostra preferita per questo compito
Bodhi Linux. Su www.bodhilinux.com, prendete lultima
versione (almeno la 2.3.0) nel formato a 32 o 64 bit e vi troverete
con unimmagine iSo di circa 600 MB che potete masterizzare
su di un CD-r da cui avviare il vostro pC. usando UNetbootin,
disponibile anche in molti repository, potete scrivere, invece,
limmagine iSo su di una chiavetta uSB e usarla per avviare il pC,
ma sappiate che perderete tutto quello che c sulla chiavetta.
per gli utenti esperti: usate dmesg dopo aver inserito la chiave per
trovare il suo nome di unit e poi usate un comando come questo:
dd if=bodhi.iso of=/dev/sdx oflag=direct bs=1048576
Sostituite sdx con il nome vero dellunit.

Pacchetti e codice sorgente


anche possibile, se preferite, integrare Enlightenment e Terminology
nella vostra distribuzione esistente, almeno per le distribuzioni
principali. Gli utenti di ubuntu 12.04, 12.10 e 13.04 e distribuzioni
collegate come xubuntu, Kubuntu e Mint, possono prelevare lultima
versione del software usando un ppA (personal package Archive,
archivio personale di pacchetti). Aprite una finestra di terminale
e inserite i seguenti comandi:
sudo apt-add-repository ppa:hannes-janetzek/enlightenment-svn
sudo apt-get update
sudo apt-get install e17 terminology
Su Fedora un po pi complicato. inserite http://tinyurl.com/
pdm7yvt nel vostro browser per scaricare enlightenmentrepo-0.0.4-1.fc18.noarch.rpm e poi installatelo. in una finestra
di terminale, passate a root e inserite yum update, seguito da questa

lunghissima riga di comando:


yum install encore eina eeze evas evas-module_engine_gl_x11
embryo evas-module_loader_* ethumb edje eio evas-module_
saver_* eet e_dbus e_modules-engage efreet elementary
elementary-bin emotion enlightenment evas-module_engine*
Se eseguite openSuSE, inserite questo urL nel vostro browser
e seguite le istruzioni di YaST:
http://downolad.opensuse.org/repositories/x11:/Enlightenment:/
Factory/openSuSE_12.3/enlightenment-17.ymp
Sostituite 12.3 con 12.2 o 12.1 se eseguite una versione precedente
della distribuzione. per le altre distro dovreste provare a guardare
nei vostri archivi di pacchetti e come ultima risorsa potete provare
a compilare dai sorgenti. Questo pu essere piuttosto laborioso
a causa dei vari componenti coinvolti, ma per risparmiare tempo
potete usare uno script che fa la maggior parte del lavoro
per voi. Su http://omicron.homeip.net/projects/#easy_efl_sh
troverete uno script che preleva lultima versione di E17
dal suo archivio Git, la compila e la installa per voi.

Compilare
Enlightenment
dai sorgenti non
un progetto
per i deboli di cuore,
ma il processo pu
essere semplificato
con uno script

Una rapida panoramica di Enlightenment


Se avete installato E17 sulla distribuzione che usate quotidianamente,
semplicemente disconnettetevi e dovreste essere in grado di sceglierlo
nel vostro gestore di sessione. Altrimenti, se avete avviato Bodhi Linux,
entrerete direttamente in questo ambiente. in entrambi i modi, al
primo avvio di Enlightenment vi verranno poste un paio di domande
sullo stile dellinterfaccia, dopodich sarete pronti a partire. noterete
dallinizio che E appare incredibilmente tirato a lucido; a tutto,
dalle maniglie della barra di scorrimento al rendering dellorologio,
sono stati applicati frizzi e lazzi. naturalmente ci sono temi belli
e brutti, ma la maggior parte di essi sono veramente meravigliosi.
per far apparire il menu principale di Enlightenment fate click con il tasto
sinistro sullo spazio di lavoro. Sotto Applicazioni troverete i programmi
installati come ci si aspetta, ma c anche un menu Impostazioni
per ottimizzare linterfaccia. una cosa che potrebbe sorprendervi:
Enlightenment usa lobiettivo segue il mouse in modo predefinito,
perci ci che digitate sulla vostra tastiera va nella finestra sotto
il puntatore del mouse, indipendentemente dal fatto che vi abbiate fatto
click o no. notate che premendo Alt+F4 non si chiude una finestra,
ma si passa al quarto spazio di lavoro virtuale, cosa che non
immediatamente chiara grazie agli effetti (effettivamente sbalorditivi).

Enlightenment appare incredibilmente tirato a lucido e ben rifinito. Molti dei suoi
temi sono piuttosto scuri e tetri, ma ce ne sono anche di pi luminosi

Linux pro 134

17

Il super terminale

Le funzioni di Terminology
Messa da parte la preparazione, immergetevi nel terminale per vedere cosa pu
fare. Dovete osservare Terminology in azione per apprezzarlo pienamente
Aprite il menu principale, andate in Applicazioni Strumenti di sistema e poi scegliete Terminology

Miniature
Andate in una cartella dove avete salvato
vari file multimediali, come immagini e video,
e poi digitate tyls -m. Questa una versione
speciale di Terminology del comando
standard ls e fa qualcosa di davvero molto
carino visivamente: aggiunge immagini in
miniatura allelenco della cartella. Qui potete
gi cominciare a vedere come Terminology
sia progettato per colmare il divario tra
un terminale standard e un gestore di file

grafico, ma diventa ancora meglio. Cliccate


su una delle miniature e apparir una
finestra a comparsa che mostrer
unanteprima. I formati multimediali
supportati dipenderanno dalla configurazione
del vostro particolare sistema, per esempio
i file video saranno riprodotti solo se avete
i vari pacchetti core di Gstreamer
e le estensioni installate (le buone, brutte
e orribili raccolte di codec).

Vista in linea
Volete visualizzare un file senza doverlo aprire
in unapplicazione esterna? Basta inserire typop
seguito dal nome del file e vedrete lo stesso tipo
di finestra a comparsa della visualizzazione delle
miniature. Potete osservare immagini e file video

Sfondi
Cambiare limmagine di sfondo del vostro
terminale non richiede di frugare nelle
impostazioni, basta inserire tybg seguito
dal nome di un file. Come con i comandi
precedenti, potete farlo anche per i video,
cos potrete avere animazioni in esecuzione
dietro le vostre sessioni Emacs. , molto
semplicemente, fantastico.

in linea usando il comando tycat: in questo caso


loggetto multimediale diventer parte del buffer
del terminale, cos se scorrete su e gi (con
Shift+PagSu/PagGi, per esempio), vedrete
le immagini e i video tra le normali righe di testo.

Anteprime dei collegamenti


Unaltra bella caratteristica il modo in cui Terminology interpreta
i percorsi dei file e i collegamenti del Web. Digitate http:// seguito da
un indirizzo Web e potrete cliccare su di esso per aprire il link in un
browser. Terminology lo fa anche con i file. Per esempio, digitate
find / | grep .jpg
Questo elenca tutti i file JPG sulla vostra macchina e potete fare
click sui nomi dei file per vederli nella finestra a comparsa.

Opzioni
Fate click destro e scegliete Settings per personalizzare vari aspetti
di Terminology, tra cui i caratteri, il tema, la dimensione del buffer
di scorrimento e quale motore utilizzato per la riproduzione
dei video. Nella sezione Helpers potete definire quali programmi
saranno usati quando premete i collegamenti generati
automaticamente (vedete sopra Anteprime dei collegamenti).

18

Linux pro 134

Terminali multipli
Fate click con il destro in una finestra
di Terminology e una serie di pulsanti
far il suo ingresso dal lato destro.
Qui potete selezionare New per creare
una nuova istanza di terminale allinterno
della finestra in cui vi trovate, o usare
i pulsanti Split per dividere la finestra
in verticale o in orizzontale. Per passare
da unistanza allaltra del terminale,
usate Ctrl insieme ai tasti PagSu/
PagGi, c un effetto di transizione
proprio carino, come potete vedere
approssimativamente nella schermata.
persino possibile assegnare sfondi
diversi alle diverse istanze di terminale,
cosa che rende facile riconoscere
in quale siete a colpo docchio.

Il super terminale

Appena nato...
C

ome avete gi visto, anche se Terminology solo


alla versione 0.3, ha gi molto di cui vantarsi.
Ma molto deve ancora venire, come il capo sviluppo
di Enlightenment, Carsten Haitzler, ci ha rivelato...

LXP: Che cosa vi ha spinto a scrivere Terminology? Era solo


sperimentazione o eravate frustrati dalle limitazioni dei soliti
emulatori di terminale?
CH: Vari motivi:
1 Eterm [il programma di terminale originale di Enlightenment]
stava diventando vecchio. Non usava alcuna delle tecnologie attuali
della Enlightenment Foundation Library (EFL) (immaginate che
Konsole fosse scritto in semplice Xlib e non in Qt o che Gnome
Terminal usasse Motif e non GTK), perci avevamo bisogno
di modernizzare. Eterm sembrava completamente fuori posto
in E17. Ho speso un po di tempo con il codice di Eterm, cercando
di aggiornarlo mantenendo il nucleo del terminale... e francamente
era pi facile iniziare da capo con un nuovo terminale che provare
a sistemare Eterm. Credetemi, ho passato molti giorni a cercare
un nucleo indipendente dal sistema di visualizzazione da riusare
con una licenza accettabile e non sono riuscito a trovarne uno,
perci non era solo un caso della sindrome non inventato da me.
Cos nato Terminology.
2 Volevo un terminale che potesse dimostrare cosa pu fare
EFL e avesse un aspetto adattabile a Enlightenment. Era davvero
imbarazzante che avessimo una libreria e un toolkit cos estesi
e non disponessimo nemmeno delle basi di un terminale.
3 Ho sempre voluto poter digitare cat puss.jpg e vedere
limmagine. Perch il mio terminale non pu mostrare le immagini
in linea mentre tutto il resto sullo schermo pu? O fare ls e vedere
le miniature delle immagini o dei file? Finalmente con Terminology
posso farlo. Funziona anche come un normale terminale, perci
non ho rinunciato a nulla e ho semplicemente allargato la mia
esperienza. Terminology fa funzionare tutto questo e altro ancora.
Nessun altro comune terminale per Linux/X11 che conoscevo
lo faceva, o se lo faceva era oscuro e ancora
non centrava lobiettivo di adattarsi a EFL
ed Enlightenment. Sapevo anche che questo
avrebbe messo le fondamenta per molte
pi cose divertenti in futuro, come essere
capaci di includere componenti in linea
e intere interfacce grafiche nel terminale.
4 Volevo assicurarmi che la sicurezza fosse
mantenuta. Nello specifico lo scorrimento
non mappato in memoria nei file sul disco,
ma tenuto nella RAM ed persino
compresso nella RAM al volo. Poich c un
percorso di compressione, anche possibile
aggiungere un percorso di cifratura,
se qualcuno si preoccupa tanto (sono
accettati gli aggiornamenti).
5 Volevo creare qualcosa di bellaspetto.
6 Avevo bisogno di una scusa per
aggiungere finalmente un oggetto griglia
di testo allEvas canvas API di Enlightenment.
7 Mi stavo annoiando di XTerm e del suo
aspetto semplice.

8 Ero in vacanza in Thailandia quando ho scritto Terminology.


Cosaltro vi aspettate che io faccia quando sono in vacanza al mare?
Abbronzarmi? Rilassarmi? Diavolo, no. il momento migliore
per maneggiare il codice!
LXP: Quali nuove funzioni possiamo aspettarci dopo la 0.3?
CH: Ci sono un sacco di nuove belle funzioni attualmente
in cantiere, tra cui le Schede. Le divisioni ci sono gi. Possono
essere rifinite con un passo a grandezza di carattere per
il dimensionamento, poich ora permettono un controllo a livello
di pixel, che non proprio appropriato per Terminology. Le schede
sono ottenute non tramite barre delle schede in cima alla finestra,
ma funzionano pi come quelle di Mac OS X Expos, con una vista
delle schede in alto a destra sovrapposta al terminale (cos da non
occupare spazio sullo schermo) che vi dice in quale scheda siete,
quante ne avete e quanti campanelli in attesa ci sono. Il supporto
per vt100/200 ecc. pu essere migliorato. Mi piacerebbe vederlo
diventare robusto al 100% prima della 1.0. stato migliorato, ma
ha ancora bisogno di altro lavoro. Inoltre, Terminology pu fare ora
oggetti Edje (libreria di disegno e disposizione di Enlightenment)
in linea. Potete di fatto impostare unintera sequenza di messaggi
per loro come canale collaterale basato su escape nel terminale.
Ho un esempio di un monitor di sistema come top che ha un
quadrante circolare delluso della CPU per ogni core e si aggiorna
man mano che la CPU utilizzata per singolo core (come fa htop
con barre e testo). Non ho fatto del mio prompt un oggetto Edje
ancora... ma ne ho lintenzione. Queste sono le basi per essere
in grado di fare poi componenti completi senza ricorrere al testo.
Sono stati apportati molti miglioramenti alla funzione copia e incolla
e per la prima volta stato aggiunto il supporto al drag & drop.
Potete trascinare e rilasciare collegamenti fuori dal terminale,
cos come trascinarli allinterno come un gestore di file, cosa che
incoller il nome del file o mostrer persino il file o limmagine con
lanteprima a comparsa propria di Terminology. Queste cose sono
gi pronte (dopo la versione 0.3.0, sono tutte in attesa nellarchivio
principale di Git proprio ora), ma c molto ancora da fare. LXP

Gli sviluppatori e gli utenti di Enlightenment hanno


avuto un incontro bello e proficuo
al Fosdem 2012 a Bruxelles

Linux pro 134

19

Dentro Arch Linux


Una distribuzione davanguardia, in rapido
cambiamento, pu davvero rappresentare
un concorrente agguerrito?

vete mai sentito parlare dei ricer?


Nel mondo dellautomobilismo, sono
quelli che applicano alle loro macchine
modifiche superflue, come alettoni
giganti, tubi di scappamento maggiorati e cerchioni
costosi. I ricer dedicano molto tempo alla
personalizzazione delle loro auto, bench in termini
di prestazioni gli effetti di tutti questi
fronzoli siano normalmente prossimi allo
zero. Con lavvento di Gentoo Linux
allinizio degli anni 2000, comparsa
una nuova specie di ricer: il ricer di Linux.
Questi utenti padroneggiavano luso del
codice sorgente (tipicamente, lutente
compilava programmi sul proprio computer
per poi installarli), rifinendo ossessivamente per ore
i flag del compilatore soltanto per accrescere dello
0,05% la velocit di avvio di Gedit. Gentoo

era ed unottima distribuzione; ma latteggiamento


di alcuni dei suoi fautori, inclini a prendere in giro tutti
gli altri per i pacchetti binari lenti da loro utilizzati,
gli ha creato una cattiva nomea. Gentoo, inoltre,
era una distribuzione a rilascio continuo (rolling
release), una novit per lepoca. Mentre quasi
tutte le altre distribuzioni importanti pubblicavano

per approfittare di tutte le ultime novit del mondo


del Software Libero, senza un aggiornamento
completo del sistema. Oggi, nel 2013, Gentoo
ancora viva e vegeta ma molti amanti del modello
rolling release sono passati ad Arch Linux
(www.archlinux.org). una distribuzione simile,
bench basata su un sistema a pacchetti binari.
Gli amanti di Arch Linux
ne lodano la caratteristica
semplicit, la velocit nella
ricezione dei pacchetti aggiornati
e il fatto che non esageri
con le semplificazioni, limitandosi
a mettervi al timone fin dallinizio.
Arch conta numerosi e loquaci sostenitori,
cos come un numero equivalente di detrattori;
in questo articolo cerchiamo di capire che cosa
si muove allinterno del progetto.

Non esagera con le


semplificazioni: si limita a
mettervi al timone fin dallinizio

20

LINUX PRO 134

nuove release piene di modifiche sostanziali una o due


volte lanno, Gentoo veniva aggiornato costantemente,
a spizzichi e bocconi. In qualunque momento si poteva
aggiornare la propria installazione di Gentoo

Arch

Alla maniera di Arch


K

ISS: Keep It Simple, Stupid (Mantienilo facile, stupido):


questa la filosofia alla base dellapproccio di Arch Linux
alla creazione di una distribuzione. Essenziale il sistema base
minimale e leggero, che offre agli utenti un punto di partenza
per la personalizzazione e laggiunta di pacchetti. Arch non tenta
di leggervi nel pensiero: si limita a dirvi questa la base, ora create
da soli linstallazione di Linux che volete. Analogamente, il team
di Arch si sforza di evitare ovunque possibile luso di patch per
il software upstream. Alcune distribuzioni prendono il codice originale
di un programma e vi aggiungono un livello di patch dietro laltro, fino
a dare vita a un risultato finale decisamente diverso dalla versione
upstream dello sviluppatore. Questo non solo fa aumentare
la complessit ma spesso rende pi difficile la notifica di un bug
rispetto alla versione di base. Bench Arch ponga grande enfasi
sulla semplicit, questo non si traduce automaticamente in facilit
duso. In Arch non troverete mille wizard specifici per il setup
del sistema e dei programmi o strumenti di configurazione; questi
ultimi vengono considerati livelli di astrazione superflui e ridondanti.
Al contrario, siete incoraggiati ad assumere il controllo, esplorando
Linux in una forma in gran parte pura per mezzo di strumenti comuni
a tutte le distribuzioni. Per chiosare una vecchia massima spesso
utilizzata a proposito di Slackware: Usate Ubuntu e imparerete
Ubuntu; usate Red Hat e imparerete Red Hat; usate Arch
e imparerete Linux.

Chi il capo?
Stiamo dunque parlando di una distribuzione minimale, in gran parte
priva di patch, che incoraggia lesplorazione e non nasconde la sua
curva di apprendimento piuttosto ripida. Dato che Arch non ha
un obiettivo generale (per esempio, annientare Microsoft sul desktop
o diventare la piattaforma numero uno per i server), lattivit di
sviluppo piuttosto decentrata. Cos afferma Allan McRae, membro
del team centrale di Arch: Non esiste una vera e propria gerarchia
tra gli sviluppatori di Arch, anche se quelli che sono in circolazione
da pi tempo e hanno dato maggiori contributi hanno
tendenzialmente maggiore voce in capitolo. E quando si tratta
di prendere grosse decisioni, di quelle che modificano drasticamente
la struttura della distribuzione? Un processo decisionale proposto

in Arch viene attivato in mancanza di obiezioni. In generale, diamo


per scontato che la persona che si occupa di una parte specifica della
distribuzione sia quella che conosce meglio largomento, quindi
seguiamo i suoi consigli. Per le decisioni pi importanti, ci implica una
quantit di domande che servono a dare risposta alle preoccupazioni
degli altri sviluppatori. Un esempio offerto dal passaggio a systemd.
McRae ci ha spiegato che il processo avvenuto in modo graduale:
uno sviluppatore ha creato alcuni pacchetti sperimentali subito dopo
la pubblicazione di questo nuovo sistema di avvio. Lo sviluppatore
in questione dubitava che Arch avrebbe mai adottato systemd; ma
con il trascorrere del tempo, gli script di avvio di Arch hanno iniziato
a utilizzare gli stessi file di configurazione per questioni di praticit.
Dopo qualche tempo abbiamo notato che i file di servizio di systemd
venivano inclusi in vari programmi upstream e che molti sviluppatori
di Arch erano passati alluso di systemd. Questo ha dato origine alla
proposta, presentata sulla mailing list, a favore di un passaggio formale
a systemd e dellabbandono di initscripts. La maggior parte degli altri
sviluppatori di Arch passata a systemd e lopinione comune nelle
discussioni sulla mailing list lo ha riconosciuto come soluzione
tecnicamente migliore. Questo cambiamento stato deciso in
seguito alla mancanza di obiezioni, spiega McRae; ed proprio
questo approccio tecnico-meritocratico a essere apprezzato da molti
sostenitori di Arch. Le grandi decisioni vengono prese con cautela
e solo dopo che tutti hanno valutato i pro e i contro.

Installare Arch
un compito prolisso
e complicato rispetto
a quanto capita
con molte altre
distribuzioni;
la documentazione
sulla procedura,
per, eccellente

I figli di Arch
Arch Linux in circolazione dal 2002
e nel corso degli anni sono apparse
varie distribuzioni che si basano su di essa.
Nella maggior parte dei casi mirano a offrire
un livello di eleganza e facilit duso
non presente nellinstallazione base.
Ecco le pi significative:
Manjaro (www.manjaro.org) Disponibile
in pi versioni che coprono i principali
ambienti desktop, Manjaro comprende
un proprio gestore dei pacchetti e un proprio
strumento di configurazione. Utilizza linstaller
di Linux Mint (vedi recensione su LXP132;
potete provarla dal DVD dello stesso numero).

Chakra (www.chakra-project.org)
Un vero e proprio sfoggio dellultima release
di KDE quello fatto da Chakra, una
distribuzione a rilascio semi-continuo
con un ritmo di aggiornamento del sistema
base pi simile a quello delle distribuzioni
tradizionali. Le applicazioni per desktop
vengono invece aggiornate molto
pi di frequente.
ArchBang (www.archbang.org) Questa
semplice distribuzione vi offre un sistema
Arch pi leggero, con X e il Window Manager
Openbox preinstallati. Viene aggiornata
a intervalli di pochi mesi.

Linstaller di Chakra, come lintera distribuzione, zeppo


di piacevoli chicche per gli occhi

LINUX PRO 134

21

Arch

Come funziona
A

rch Linux non dispone di release vere e proprie, anche


se i nuovi utenti devono in qualche modo installarla sui loro
computer. Per facilitare questo compito e assicurarsi che
lutente si ritrovi con un sistema sufficientemente aggiornato dopo
linstallazione, il team di Arch pubblica una nuova ISO dinstallazione
il primo di ogni mese. Il file misura di norma circa 520 MB e non
contiene molti software: c solo lessenziale necessario per creare
un sistema avviabile. Il resto potrete procurarvelo in seguito con
pacman. Ed qui che entra in scena il sistema di rilascio continuo.
Il team di Arch consiglia di avviare pacman -Syu ogni sette/quindici
giorni, per aggiornare lintera installazione in funzione dellultimo
gruppo di pacchetti resi disponibili nei repository di Arch Linux.
Naturalmente
potete evitare
di farlo
se ritenete
gi perfetta
linstallazione
da voi creata;
in tal caso, per, vi perderete alcuni importanti fix per i bug e le
patch di sicurezza. Stando alla nostra esperienza, la maggior parte
degli aggiornamenti fila liscia senza problemi; a volte, per, le cose
vanno storte. E lo fanno alla grande. Questo uno degli aspetti pi
controversi di Arch: si d per scontato che leggiate le ultimissime
news sul sito di Arch prima di effettuare un aggiornamento, il che
pi che comprensibile, dato che tutti dovremmo tenerci sempre

Il team di Arch pubblica


una nuova ISO dinstallazione
il primo di ogni mese

Il progetto
ArchServer
si preannunciava
promettente
ma nellultimo anno
non ha fatto molti
progressi

al corrente dei cambiamenti apportati alle nostre distribuzioni.


A volte, per, i guai sono talmente pervasivi da far dubitare che
Arch possa veramente essere usato in ambito di produzione.

Il pasticcio
Per esempio, allinizio di giugno il team di Arch ha annunciato
il proprio passaggio a una directory /usr/bin unificata (con
leliminazione di /bin e /sbin). Una decisione lodevole che
ha ulteriormente semplificato la distribuzione ma che ha reso
necessaria da parte degli utenti di Arch una fatica non indifferente.
Questi ultimi hanno dovuto trasferire manualmente i file, effettuare
vari controlli sui pacchetti e avviare comandi come il seguente:
paclist <repo> | awk { print $1 } | pacman -Ql - | grep
/s\?bin/\| /usr/sbin/
Niente di irrealizzabile per gli utenti di Linux avanzati; il tutto richiede
per tempo e tanta concentrazione. Un solo comando sbagliato
rischia di azzoppare il sistema. Per un appassionato di Linux che
si diverte con Arch su un computer dedicato, nessun problema:
anzi, unoccasione per imparare di pi sul funzionamento di Linux.
S... ma per quanto riguarda chi utilizza Linux al lavoro o su
un server? Questi utenti non possono permettersi di perdere tempo
per cose come queste, n correre il rischio di apportare modifiche
che potrebbero mandare allaria le loro applicazioni. Vogliono
un sistema stabile, immutabile, che si limiti a offrire aggiornamenti
essenziali in termini di eliminazione dei bug e sicurezza. Un sistema
come Debian, RHEL o CentOS. Ovviamente, luso di queste
distribuzioni implica la rinuncia ai vantaggi
del modello rolling release; entrambi
gli approcci, quindi, hanno dei pro e dei
contro. Il team di Arch consapevole
del problema e ha fatto qualche passo
verso la sua risoluzione. La distribuzione
comprende un pacchetto linux-lts che
contiene un kernel con supporto a lungo
termine, che si evolve meno rapidamente
rispetto a quello principale. Su Arch Wiki,
allindirizzo http://tinyurl.com/44alfmh,
trovate una pagina ricca di dettagli
che spiega come accrescere la stabilit
di uninstallazione di Arch, mentre
www.archserver.org ospita
un progetto (attualmente dormiente)
inteso a rendere Arch pi stabile
per limpiego in ambito server.

Che cosa e dove


Come succede nella maggior parte delle distribuzioni,
il software di Arch viene fornito tramite vari repository.
Le differenze tra essi sono molto chiare:
Core I pacchetti pi essenziali, necessari per
avviare un sistema, connettersi a Internet e riparare
i filesystem danneggiati. Il repository include anche
alcuni strumenti non critici ma di uso frequente
come OpenSSH. Tra tutti i repository, Core quello
soggetto al controllo di qualit pi severo.

22

LINUX PRO 134

Extra Il nome pu far pensare a un repository


opzionale; in realt contiene la maggior parte
delle applicazioni che utilizzerete, come X.Org,
KDE, Firefox, Apache e via dicendo.
Community Contiene i pacchetti dellArch User
Repository (vedi sotto) che hanno ricevuto
commenti positivi da parte degli utenti.
Testing Sconsigliato per luso quotidiano, dato
che ospita i pacchetti sperimentali prima

delleliminazione dei bug e della promozione


nei repository Core o Extra.
Arch User Repository (AUR) una miniera
di software rari, programmi a met del ciclo
di sviluppo e non ancora inseriti nei pacchetti
o che non possono essere inclusi nei repository
ufficiali di Arch per problemi di licenza.
Chiunque pu contribuire ad AUR; la qualit
del materiale varia fortemente.

Arch

Parola ai sysadmin
A

rch si vanta di essere abbastanza versatile da prestarsi


a qualunque impiego, nonch una distribuzione ideale per
i server. Considerate alcune delle caratteristiche essenziali
che abbiamo gi evidenziato, tuttavia, come il vertiginoso ritmo
di evoluzione della distribuzione e loccasionale aggiornamento che
manda tutto allaria, lecito chiedersi se queste affermazioni siano
vere. Abbiamo girato la domanda ad Allan McRae, membro del team
di Arch, che ci ha detto la sua...

Semplicemente, faccio in modo di effettuare gli aggiornamenti


durante i venerd e i sabati. Quando qualcosa va storto, spesso pu
essere necessario pi tempo che con una distribuzione tradizionale
per rimettere a posto le cose. Come professionista della sicurezza, mi
piace essere sempre aggiornato e avere un controllo pi dettagliato
su ogni codice presente sul mio sistema. Ho ridotto notevolmente
la mia vulnerabilit nei confronti dei difetti presenti in pacchetti inclusi
nella distribuzione che non mi servivano o che nemmeno volevo.

Allan McRae: Il fattore essenziale da considerare : quanta familiarit


ha lamministratore di sistema con Arch? Dato che Arch una rolling
release, occasionalmente si verificano problemi di aggiornamento.
Se non siete esperti nellaffrontare questo tipo di problemi, vi conviene
optare per una distribuzione che fornisca solo aggiornamenti
di sicurezza. Per questo, quando qualcuno chiede se Arch va bene
per un server, gli rispondiamo: Se senti il bisogno di chiederlo, no.
Il secondo fattore riguarda lambito in cui lutente intende investire
il suo tempo. Arch impone di investire costantemente piccole quantit
di tempo allo scopo di mantenere aggiornato il sistema e di effettuare
i necessari collaudi preliminari. Una distribuzione a rilascio periodico
fornisce aggiornamenti di sicurezza che richiedono meno collaudi
ma impone un carico di lavoro maggiore quando si tratta di effettuare
un aggiornamento complessivo. Dato che Arch aggiorna pochi
componenti per volta, pu risultare pi facile individuare i problemi
legati a specifici pacchetti, rispetto a quanto avviene in un
aggiornamento complessivo di una distribuzione. Inoltre, per chi
avesse bisogno di una versione pi recente di un software in virt
di qualche nuova funzione importante, Arch rappresenta un vantaggio
notevole. Per quanto riguarda gli aggiornamenti di sicurezza, Arch
li fornisce in due modi: tramite i normali aggiornamenti dei software
upstream e, quando occorre, mediante patch. Non so dire se questo
approccio esponga lutente a maggiori problemi di sicurezza rispetto
a quello di una distribuzione che utilizzi versioni stabilizzate dei
software e soluzioni di sicurezza a posteriori. Anzi, sono in attesa che
qualcuno indaghi pi a fondo sulla questione, in modo da consentire
ad Arch di migliorare se necessario la sua politica di sicurezza.

Gene: Ho utilizzato Red Hat, Fedora e Arch per i server; e Arch vince
a mani basse. I cambiamenti avvengono; e avvengono sempre.
Con Arch, i cambiamenti avvengono in piccole dosi e posso
occuparmi di un cambiamento per volta (per esempio, il passaggio
a systemd). I singoli update possono essere grandi o piccoli
ma con Arch posso concentrarmi sul singolo aggiornamento. Nel caso

Commenti dal mondo reale

In generale, con Arch non


accade che le cose smettano
di funzionare improvvisamente
delle distribuzioni non a rilascio continuo, ogni paio danni (oppure
ogni sei/nove mesi, nel caso di Fedora) sono costretto a installare
tutti gli aggiornamenti in blocco. Per i server, collaudo sempre gli
aggiornamenti su un dispositivo-ombra prima di applicarli al server
vero e proprio: a volte prudente fare cos, a prescindere dalla
distribuzione utilizzata.
Chris Down: Uso Arch solo per gestire piccoli ambienti di produzione
(non in contesto aziendale). Non ho mai avuto problemi dovuti
ai pacchetti: i rischi sono (perlopi) limitati allupstream. In generale,
con Arch non accade che le cose smettano di funzionare;
dopotutto c il repository di collaudo. Quando capita un blocco,
di solito la ragione che lutente non fa attenzione ai cambiamenti
di configurazione o a particolari importanti prima di effettuare
laggiornamento. Chi non ha voglia di tenere docchio lupstream
e le mailing list di Arch rischia grosso LXP

Questo, dunque, il punto di vista di uno sviluppatore di Arch;


ci che pi conta, tuttavia, lesperienza degli utenti finali. Abbiamo
chiesto ad alcuni amministratori di sistema che utilizzano Arch Linux
che cosa ne pensano:
Paul Gideon Dann: Utilizzo Arch su due server al lavoro.
Uno un server multifunzione utilizzato per alcune Web App interne,
per il monitoraggio e come repository per il codice sorgente. Laltro
un server cluster Beowulf collegato a 36 nodi senza dischi
e utilizzato per i carichi di elaborazione elevati. Il recente passaggio
a /usr ha dato qualche grattacapo ma alla fine andato tutto liscio,
pur avendomi obbligato a passare da Legacy Grub a Syslinux.
Tendo a riavviare entrambi i server ogni mese o due, per mantenere
aggiornato il kernel; perlopi, per, sono sempre in funzione.
Chester Wisniewski: Utilizzo due server Arch di produzione.
Li aggiorno entrambi circa due volte al mese, a meno che venga
a conoscenza di una vulnerabilit in un componente critico
per Internet nellambito del sistema (WordPress, eccetera).
LINUX PRO 134

23

Sysadmin

Premiata Amministreria
Dr Chris Brown

Dottor Brown

Il Dottore si occupa di formazione, scrittura


di articoli e consulenze su Linux.
Trova che il suo PhD in fisica delle particelle
non sia di alcun aiuto in questo tipo di lavoro.

Dove vai, Tux?

utti conosciamo Tux. Il corpulento pinguino


ha fatto la sua prima apparizione a met
degli anni 90 e da allora diventato
il simbolo di Linux. Pochi sono stati per cos
fortunati da incontrarlo, come effettivamente
capitato a me. in pensione e vive al Penguin
Beach, un parco marino. Nonostante qualche
problema di salute, ha zampettato un po a fatica
verso di me e mi ha concesso unintervista.
Gli ho quindi chiesto come iniziata la sua fama.
Linus voleva un pinguino come mascotte, perci
mi ha spedito Larry Ewing e ho dovuto farmi fare
un ritratto. Era il 1996. Non mi mai piaciuto:
mi faceva sembrare grasso. E, in un certo qual
modo, un po troppo raffinato. Si fermato
un po a pensare. Avevo solo tre anni. Se avessi
saputo.... Il che significa che ora ne ha 20, unet
niente male per un pinguino. Poi la cosa ha
cominciato a diventare virale, ero dappertutto.
Stai scrivendo del materiale su Linux e vuoi
aggiungere della grafica? Ecco il buon vecchio
e grasso Tux. Allepoca iniziavo a interessarmi
alle ragazze [pinguino] e la cosa non mi aiutava.

Tutina di strass
Ma non sei una star? - ho chiesto - Cosa ne dici
di Super Tux Kart? E di Pingus?. Ah, stai
parlando di quel gioco in cui saltiamo da una
scogliera e ci ammazziamo in una maniera
assurda? Lasciamo perdere!. Gli ho poi chiesto
cosa ha fatto nel frattempo. Beh, pi che altro
ho mangiato aringhe. E poi cerano le sedute
fotografiche. Formazione su Linux? Mettiti questo
tocco accademico. E questo va bene. Sicurezza
Linux? Una bella cinghia con lucchetto attorno
alla pancia. Ottimizzazione delle prestazioni?
Legati un missile dietro la schiena. Dimmi un po
tu... Poi hanno voluto una vista di spalle con un
connettore USB nel posteriore. Grato per
lintervista gli ho chiesto cosa potevo fare per
contraccambiare il favore. Lui ha bisbigliato
hai per caso qualche aringa?.

24

LINUX PRO 134

Tecniche esoteriche per i sysadmin direttamente


dai recessi pi impenetrabili della sala server

Tomcat in breve

Stiamo per scatenare Tomcat. Impareremo anche


quel po di Java che serve per scrivere una servlet

er cominciare proprio dallinizio, preciseremo


che Tomcat un server Web. in grado,
come Apache, di parlare il protocollo HTTP
e di rispondere alle richieste di contenuto statico
proveniente dai browser con semplice HTML
o immagini. Ma Tomcat pi specializzato di Apache:
il suo vero scopo nella vita quello di fare
da contenitore di servlet Java. Questo significa
che in grado di ospitare pagine Web generate
dinamicamente usando Java come linguaggio lato
server. Esiste uno standard che definisce lambiente
in cui girano queste applicazioni e Tomcat stato
inizialmente progettato come implementazione
di riferimento di questo standard. Nella prima delle
due parti di questo tutorial cominceremo con
linstallare i pacchetti necessari per far girare Tomcat
e poi vedremo come creare e fare il deploy di una

Java Server Pages


Tomcat anche in grado di distribuire
contenuti strutturati in forma di Java Server
Pages (JSP), che consiste di codice
di formattazione HTML mescolato a codice
Java allinterno dei tag <% e %>. Il concetto
si estende alla Standard Tag Library (JSTL),
i cui tag incapsulano operazioni comuni
a molte applicazioni Web, come la
manipolazione di documenti XML e laccesso
a database relazionali. In breve, la differenza
tra una servlet e una JSP che una servlet
inserisce lHTML allinterno del codice di una
classe Java, mentre una JSP lo inserisce
allinterno di un file HTML. La soluzione
proposta dalle JSP vi sar pi familiare
se avete gi lavorato con, ad esempio,
ASP, .NET o LAMP.

semplice applicazione Web composta da due pagine.


Come per gli altri tutorial pubblicati di recente, partir
da uninstallazione di base di CentOS 6.2: se volete
sperimentare quanto illustrer potete installare
CentOS in una macchina virtuale.

Installazione
Cominciamo installando i vari pezzi necessari.
Tutto quello di cui abbiamo bisogno si trova nei
repository di CentOS, sar quindi sufficiente scaricare
e installare i pacchetti usando yum. La tabella nella
prossima pagina mostra i cinque pacchetti di cui
avete bisogno, quindi date il comando yum install
per ciascuno di essi. Io nel frattempo aspetto... Ora
che Tomcat installato, dobbiamo avviare il server
e assicurarci che venga riavviato a ogni ripartenza
della macchina. I due comandi seguenti dovrebbero
raggiungere lo scopo (dovete lanciarli da root):
# service tomcat6 start
# chkconfig tomcat6 on
Dato che avete installato il pacchetto tomcat6webapps, che presenta la homepage di default del
progetto, dovreste essere ora in grado di lanciare
il browser, puntare su http://localhost:8080
e vedere la pagina che riprodotta nellimmagine
nella terza pagina dellarticolo. Notate come Tomcat
per default resti in ascolto sulla porta 8080
(non sulla 80), quindi occorre specificare la porta
nellURL. Su questa pagina ci sono dei link alla
documentazione di Tomcat (che abbiamo installato
con il pacchetto tomcat6-docs-webapp): a questo
punto potreste tranquillamente smettere di leggere
larticolo e passare la giornata navigando allinterno
della documentazione. Ci sono anche i link a un certo
numero di esempi di codice.

La nostra prima servlet


Scendiamo ora nei dettagli e vediamo cosa ci vuole
per realizzare una semplice servlet. Per rendere

Sysadmin
le cose interessanti e andare un po
oltre unimplementazione minima
tipo Ciao mondo, creeremo
unapplicazione divisa in due pagine.
La prima pagina puro HTML:
presenta un modulo con un campo
di testo in cui lutente deve inserire
il suo nome. La seconda pagina
la servlet., che semplicemente
saluta lutente usando il campo
di testo prelevato dal modulo.

Il modulo

Pacchetto

Contenuto

tomcat6

Pacchetto principale del server, installa tutti i componenti


di base

tomcat6-admin-webappps

Le applicazioni Web host-manager e manager

tomcat6-docs-webapp

Lapplicazione Web che fornisce la documentazione

tomcat6-webapps

Le applicazioni Web ROOT e gli altri esempi (homepage


e programmi di esempio)

java6-1.6.0.-openjdk-devel Strumenti di sviluppo Java, tra cui javac, il compilatore Java


Cominciamo con il modulo:
qui di seguito trovate il codice.
Usate yum per
Inseritelo in un file chiamato esempiomodulo.html, per ora salvato
installare questi
nella vostra directory home. In seguito lo copieremo nel posto giusto.
16. out.println(<h1> Ciao + richiesta.getParameter(nome) +
pacchetti e avere
<html>
</h1>);
uninstallazione
<head>
17. out.println(</body> </html>);
funzionante
<title> Semplice esempio di modulo </title>
18. }
di Tomcat.
</head>
19. }
Il pacchetto javasdk
Esaminiamo qualche riga di codice. La riga 6 definisce la nostra classe
necessario solo
<body>
(EsempioModulo), mentre le righe 7-18 contengono il metodo
se volete compilare
<h1> Semplice esempio di modulo </h1>
doGet(). Il metodo riceve due parametri, richiesta (riga 7) e risposta le vostre servlet.
<form action=saluta method=GET>
(riga 8). Usiamo loggetto richiesta per accedere al campo del
Ma voi volete
compilarle, vero?
Inserisci il tuo nome:
modulo (riga 16) e loggetto risposta per ottenere uno stream
<input type=text name=nome />
di tipo PrintWriter (riga 12), che possiamo usare per inviare
<input type=submit name=Submit value=Invia il nome>
il contenuto generato al browser. Se state mettendo in pratica
</form>
mentre leggete, dovrete creare questo file, chiamarlo
</body>
EsempioModulo.java e compilarlo con:
</html>
$ export CLASSPATH=.:/usr/share/java/servlet.jar
$ javac EsempioModulo.java
Se tutto va bene sarete ricompensati con un file chiamato
EsempioModulo.class. Contiene il bytecode compilato della classe.
Rivolgiamo ora la nostra attenzione al codice della servlet. C solo
Fate attenzione, perch Java molto pignolo per quanto riguarda
una riga di codice attivo che accede ai dati inseriti nel modulo. Per,
i nomi dei file. Il codice di una classe chiamata EsempioModulo deve
per essere una servlet, una classe Java deve estendere la classe base
trovarsi nel file chiamato EsempioModulo.java. Rimane solo un altro
HttpServlet. C quindi un bel po di bagaglio intorno a quella riga
file che dobbiamo assolutamente avere per far funzionare la nostra
di codice. Per cominciare dobbiamo definire una classe che usa
applicazione: si tratta del descrittore di deployment (pi avanti spiego
HttpServlet come classe base. Allinterno della classe dobbiamo
cosa si intende con questo termine), chiamato web.xml. Al suo
scrivere un metodo chiamato doGet() che Tomcat chiamer quando
interno possibile specificare pressoch qualsiasi cosa, ma nel nostro
il browser dellutente far una richiesta HTTP GET della nostra pagina.
caso lo useremo semplicemente per far corrispondere un URL
Potremmo anche scrivere il metodo doPost() per trattare le richieste
pattern, uno schema di URL, al nome di una servlet e per far
HTTP POST. C poi uno strato pi interno di bagaglio, perch
corrispondere il nome della servlet alla classe che la implementa
vogliamo rispondere al browser con un documento HTML
(trattandosi di XML, ci vorr un sacco di tempo per dire tutto questo).
correttamente formattato, quindi dobbiamo inserire i tag strutturali
Nel nostro esempio il descrittore di deployment si presenta cos:
come <head> e <body>. Ecco quindi il codice della servlet (i numeri
<web-app>
di riga servono come riferimento, non fanno parte del file):
<description> Servlet Esempio Modulo </description>
1. import java.io.*;
<display-name> Esempio Modulo </display-name>
2. import javax.servlet.*;
3. import javax.servlet.http.*;
4.
5. /* Servlet molto semplice per accedere ai campi di un modulo. */
6. public class EsempioModulo extends HttpServlet {
7. public void doGet(HttpServletRequest richiesta,
il problema nellapplicazione e rilanciare
Se le cose non vanno come dovrebbero,
8.
HttpServletResponse risposta)
il test, ma continuare a vedere la pagina
provate a dare unocchiata ai messaggi
9. throws IOException, ServletException
di errore (che in realt proviene dalla
di errore in /var/log/tomcat/catalina.out.
10. {
cache). Se avete anche il minimo sospetto
Tenete anche presente che il browser ha
11. risposta.setContentType(text/html);
che si tratti di questo, vi suggerisco di ripulire
una cache delle pagine che pu interferire
12. PrintWriter out = risposta.getWriter();
la cache del browser. In Firefox, ad
con i vostri test se non fate attenzione.
13. out.println(<html> <head>);
esempio, basta andare in Strumenti
Lo scenario tipico consiste nelleseguire un
14. out.println(<title> Esempio di modulo </title>);
test, vedere un errore nel browser, risolvere D Cancella la cronologia recente.
15. out.println(</head> <body>);

La servlet

Che fare se non funziona?

LINUX PRO 134

25

Sysadmin

La homepage
di Tomcat vi d
quella piacevole
sensazione che tutto
sta funzionando,
pi qualche utile link

<servlet>
<servlet-name>EsempioModuloServlet</servlet-name>
<servlet-class>EsempioModulo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>EsempioModuloServlet</servlet-name>
<url-pattern>/saluta</url-pattern>
</servlet-mapping>
</web-app>

La gerarchia di deployment
Ora che abbiamo i nostri tre file (il modulo, la servlet e il descrittore
di deploy) siamo pronti per eseguire il deployment (in inglese
dispiegamento) della nostra applicazione. unoperazione
che consiste nel passare a Tomcat i file che la compongono
e di informarlo dellURL da usare per accedere alla servlet.
Le specifiche JEE definiscono una struttura molto specifica
per le directory usate, come mostrato nella figura qui a destra.
Per semplificarci la vita useremo come directory radice della nostra
applicazione /var/lib/tomcat6/webapps, dato che, quando parte,
Tomcat esegue automaticamente il deploy di tutte le applicazioni
presenti in questa directory. Possiamo creare la struttura di base
della directory con un paio di comandi:
# cd /var/lib/tomcat6/webapps
# mkdir -p EsempioModulo/WEB-INF/classes
A questo punto potreste pensare di giocare un po con utente
e gruppo proprietario in modo da essere in grado di copiare dei file
in questa directory senza bisogno di essere root. Ecco una possibile
soluzione. Per prima cosa fate diventare il vostro account membro
del gruppo tomcat (dovete farlo da root):
# usermod -a -G tomcat chris
sostituendo il nome utente con il vostro (a meno che siate cos
fortunati da chiamarvi Chris). Ora modificate in tomcat il gruppo
dei file allinterno della directory di deploy e aggiungete i permessi
di scrittura per il gruppo, cos:
# cd /var/lib/tomcat6/webapps
# chown -R root:tomcat EsempioModulo
# chmod -R g+w EsempioModulo
Tornate ora alla directory in cui avete compilato il vostro file Java
e copiatelo al suo posto:
$ cp EsempioModulo.class /var/lib/tomcat6/webapps/
EsempioModulo/WEB-INF/classesWEB-INF/classes
A proposito, sapete usare il completamento dei nomi dei file, vero?
Non oso pensare che qualcuno inserisca manualmente lintero
comando... Ora copiate il modulo. Si tratta di solo contenuto statico

26

LINUX PRO 134

e vive sotto la directory EsempioModulo, ma fuori da WEB-INF.


Semplicemente punteremo il browser direttamente a questo file
per accedere alla nostra applicazione.
$ cp esempiomodulo.html
/var/lib/tomcat6/webapps/EsempioModulo
Infine, copiate il descrittore di deploy. Questo file deve andare nella
directory WEB-INF:
$ cp web.xml /var/lib/tomcat6/webapps/EsempioModulo/WEB-INF
Ora che tutti i pezzi si trovano al loro posto, la cosa pi
semplice per eseguire il deploy dellapplicazione consiste
nel riavviare il server:
# service tomcat6 restart
Ora ( il momento della verit!) visitate lURL http://
localhost:8080/EsempioModulo/esempiomodulo.html,
inserite il vostro nome nel campo di testo e premete il pulsante
per spedirlo alla servlet. Potreste anche creare un link al modulo
chiamato index.html cos:
$ cd /var/lib/tomcat6/webapps/EsempioModulo
$ ln esempiomodulo.html index.html
Questo vi permetter di accedere allapplicazione usando lURL
pi breve http://localhost:8080/EsempioModulo. Se volete
generare una pagina leggermente pi dinamica tornate al codice
sorgente e aggiungete la riga
out.println(La data + new java.util.Date());
che mostrer data e ora in cui stata eseguita la servlet.
Ricompilate poi il file e copiatelo al suo posto allinterno della
gerarchia di deployment. Riavviate il server per eseguire di nuovo
il deploy dellapplicazione.

Lapplicazione manager
Riavviare il server ogni volta che volete eseguire il deploy
di unapplicazione una cosa piuttosto brutale. Vi mostro un
sistema migliore. Tomcat ha unapplicazione di gestione, chiamata
manager (labbiamo installata come parte del pacchetto
tomcat6-admin-webapps) a cui possibile accedere allURL
http://localhost:8080/manager/html oppure attraverso il link
Tomcat Manager della homepage. Per poterla usare occorre
per un po di lavoro, perch Tomcat consente laccesso solo a chi
si autentica come utente con il ruolo manager e nellinstallazione
di default non esiste un utente con queste caratteristiche. Per
risolvere il problema aprite con un editor di testo il file /etc/
tomcat6/tomcat-users.xml e aggiungete le seguenti righe:
<role rolename=manager/>
<user username=tomcat password=tomcatpw
roles=manager/>
Assicuratevi di aggiungerle allinterno del tag <tomcat-users>.
Non importa quale sia il nome, basta che lutente abbia il ruolo
di manager. Riavviate ancora una volta il server e poi seguite il link
Tomcat Manager della homepage. Dopo lautenticazione
dovreste vedere la pagina Application Manager, che mostra tutte
le applicazioni in esecuzione. Da qui potete far partire e fermare
unapplicazione, ricaricarla o eseguirne lundeploy (cio loperazione
che fa s che il server se ne dimentichi). Potete anche eseguire
queste operazioni dalla riga di comando, visitando lURL
appropriato allinterno dellapplicazione manager. Ad esempio,
per avere una lista di tutte le applicazioni in esecuzione potremmo
usare il comando wget a questo modo (ho un po ridotto loutput
del comando):
$ wget --user tomcat --password tomcatpw -O http://localhost:8080/manager/list
OK - Listed applications for virtual host localhost
/:running:0:ROOT

Sysadmin
/var/lib/tomcat6/webapps

file WAR

Mia_applicazione_web

immagini

Tua_applicazione_web

WEB_INF

file JPEG,
file GIF

file HTML,
file JSP,
file CSS

Directory radice
per lapplicazione

Classes

lib

web.xml

File visibili
al browser

/manager:running:2:manager
/EsempioModulo:running:0:EsempioModulo
/sample:running:0:sample
/docs:running:0:docs
/examples:running:0:examples
/host-manager:running:0:host-manager
Un altro esempio: ecco come ricaricare la nostra applicazione
EsempioModulo:
$ wget --user tomcat --password tomcatpw -O http://localhost:8080/manager/reload?path=/EsempioModulo
OK - Reloaded application at context path /EsempioModulo

File WAR
Unalternativa al deploy di unapplicazione in una gerarchia
spacchettata, come abbiamo fatto finora, costituita
dallinserimento di tutti i file che la compongono in un singolo file
WAR, di cui poi verr eseguito il deploy. Un WAR (Web Application
Archive) semplicemente un file JAR (Java Archive) contenente
la gerarchia di deployment. A sua volta un file JAR una specie
di tarball, e la sintassi del comando usato per crearlo quasi
identica a quella di tar. Il vantaggio di usare file WAR anzich

La concorrenza
Tomcat non lunico contenitore di servlet disponibile
sul mercato. Le alternative Open Source comprendono Jetty
(un progetto attualmente sostenuto dalla Eclipse Foundation)
e GlassFish (in origine di Sun, ora prodotto commerciale
di Oracle, ma ancora disponibile come edizione Open Source
supportata dalla comunit). Ci sono poi JBoss (ora
di propriet di RedHat). Oracle Web Server (che era
noto come BEA WebLogic prima che Oracle lo comperasse),
il server Resin di Caucho e WebSphere di IBM.

Descrittore
di deployment
dellapplicazione

file jar

Gerarchia di file
di classe

Per esempio librerie


di classi di terze parti
o driver JDBC

un certo numero di file sparsi consiste nel fatto che possibile


distribuire e fare il deploy di unintera applicazione Web con un
singolo file. Lo svantaggio invece che pi difficile fare piccole
modifiche (ad esempio cambiare una sola riga di codice in una
servlet), perch occorre generare di nuovo ed eseguire il deploy
del file WAR. Eseguiamo di nuovo il deploy dellapplicazione
EsempioModulo usando un file WAR. Per prima cosa creiamo
il file. Dato che lapplicazione gi stata copiata nella corretta
struttura di directory, facile:
$ cd /var/lib/tomcat6/webapps/EsempioModulo
$ jar cf ~/EsempioModulo.war .
Ho creato larchivio nella mia directory home. Verificatene
il contenuto con il comando:
$ jar tf ~/EsempioModulo.war
Ora procedete cancellando la struttura di directory originale e poi
riavviate Tomcat (questultima operazione va fatta come root):
# rm -r /var/lib/tomcat6/webapps/EsempioModulo
# service tomcat6 restart
A questo punto la nostra applicazione EsempioModulo non pi
presente sul server. Andate sulla homepage di Tomcat e seguite
il link per eseguire il login allapplicazione di gestione del server.
Scendete nella pagina fino alla parte indicata con Deploy, vicino
al fondo. Inserite /EsempioModulo nel campo ContextPath
e /home/chris/EsempioModulo.war come URL del WAR, poi fate
click su Deploy. Tornate allinizio della pagina e verificate che ci sia
un messaggio di conferma dellavvenuto deploy dellapplicazione
(se non funziona verificate i permessi della vostra directory home
e del file WAR per controllare che lutente tomcat sia in grado
di accedervi). Ora la vostra applicazione dovrebbe funzionare
di nuovo. Questo era tutto quello di cui avevo intenzione di parlare
in questa prima puntata. Il mese prossimo modificheremo
il file di configurazione del server, installeremo alcune valve
per il log e il controllo degli accessi e vedremo come far
funzionare Tomcat dietro a un server pi tradizionale come
Apache. Ci vediamo il mese prossimo! LXP

uno standard!
Le applicazioni Web
Java devono essere
organizzate nella
specifica struttura
di directory
mostrata qui

LINUX PRO 134

27

Langolo di

Android

News, recensioni e guide sul sistema operativo libero per smartphone

Il chip senza rivali

Snapdragon 800, il System-on-a-Chip pi veloce di sempre, sbarca finalmente


su smartphone e tablet. Ecco cosa abbiamo scoperto...

martphone e tablet
sono gli unici dispositivi
tecnologici le cui vendite
continuano a crescere
mese dopo mese. insieme a loro
crescono i processori che ormai
potrebbero tranquillamente gestire
un notebook di fascia medio-alta
e riprodurre video in formato 4K,
con una definizione cio quadrupla
rispetto a quella del Full HD.
in questo momento la palma
di System-on-a-Chip pi veloce
va allo Snapdragon 800 del
produttore americano Qualcomm
che troviamo sul nuovo smartphone
G2 di LG e sui phablet note 3
di Samsung e xperia Z ultra di
Sony. Galaxy S4 e HTC one, invece,
bench siano stati presentati
solo pochi mesi fa, risultano
ormai superati in quanto montano
la precedente versione del SoC,
la Snapdragon 600. il System-ona-Chip Snapdragon 800 sfrutta
un processore quad-core Krait 400
da 2,3 GHz per core ad architettura
asincrona. Questo significa che
i 4 core non sono sempre attivi
contemporaneamente, ma vengono

28

Linux pro 134

attivati o disattivati di volta in volta


a seconda delle app che state
usando riuscendo cos a ottimizzare
i consumi. La sezione grafica
gestita dalla nuova Gpu Adreno
330 che in grado di garantire
prestazioni due volte migliori
rispetto alla precedente Adreno
320. per quanto riguarda
la memoria rAM, presente il
supporto per due chip da 800 MHz
con larghezza di banda fino a 12,8
GBps. Si tratta di caratteristiche
di assoluta eccellenza che abbiamo
avuto modo di provare grazie
allarrivo in redazione di un LG G2,
il nuovo top di gamma LG che in
questo momento, come dimostrano
i benchmark che abbiamo eseguito,
non solo il pi veloce smartphone
in circolazione ma anche quello
che gestisce meglio i consumi.

Potenza e autonomia
il riferimento obbligato per valutare
il nuovo SoC rappresentato dal
Galaxy S4 di Samsung e dallo one
di HTC che utilizzano lo Snapdragon
600 ottenendo risultati simili tra
loro e comunque superiori di oltre

il 50% rispetto ai modelli


immediatamente precedenti.
La vera novit di questo autunno
che a pochi mesi di distanza dalla
presentazione di Snapdragon 600
gi disponibile la Snapdragon
800 che migliora di oltre il 50%
le prestazioni assolute del
predecessore e allo stesso tempo
ottimizza i consumi. Abbiamo potuto
constatarlo direttamente mettendo
alla prova il nostro LG G2 con
diverse batterie di benchmark
e, per quanto riguarda i consumi
energetici, durante lutilizzo
quotidiano. ricordiamo inoltre
che LG G2, di cui pubblicheremo
la prova completa sul prossimo
numero, monta un display ipS
da 5,2 pollici Full HD con
risoluzione da 1920x1080 pixel
e densit di 423 pixel per pollice,
tutti elementi che influiscono certo
non poco sia sulle prestazioni che
sui consumi. non volendoci limitare
al classico benchmark Quadrant
Standard, ormai abbastanza
obsoleto, abbiamo scaricato da play
Store il pi completo AnTuTu con il
quale abbiamo superato la barriera
dei 32.000 punti. il paragone con
HTC one e Galaxy S4 impietoso,
visto che entrambi rimangono sotto
i 22.000 punti, mentre il Galaxy S3,
modello di punta del 2012, ha
ottenuto 12.000 punti. in pratica
grazie a Snapdragon 800 si hanno
prestazioni quasi triplicate in poco
pi di un anno. Questi dati sono
poi confermati da un benchmark
multipiattaforma come BaseMark x
che ha dimostrato come LG G2 sia
nettamente superiore non solo agli
altri terminali Android ma anche
alliphone 5 e ottenga risultati

Grazie alla presenza del nuovo


System-on-a-Chip Snapdragon
800, il G2 di LG in questo
momento lo smartphone
pi veloce in circolazione

paragonabili a quelli del nuovo


iphone 5s che monta il nuovo
SoC A7 di Apple con processore
a 64 bit. Ma, se possibile, i risultati
pi interessanti nellutilizzo di tutti
i giorni vengono dal settore
energetico. vero che LG G2
monta una maxi batteria da 3.000
mAh, che pu essere paragonata
come capienza solo a quella
presente su alcuni phablet come
il Galaxy note 3, ma anche vero
che le caratteristiche del chipset
migliorano ulteriormente lefficienza
energetica complessiva. Tutto
questo si traduce in uno
smartphone in grado di superare
la barriera delle 24 ore di
conversazione telefonica (HTC one
arriva a 14 ore) oppure quella delle
12 ore di riproduzione video
continuata. Con un utilizzo medio
questo significa quasi due giornate
di autonomia con LTE, Wi-Fi, GpS
e gli altri sensori sempre attivi, un
miglioramento superiore al 30%
rispetto ai migliori smartphone
fino a oggi in commercio.

News Langolo di Android

Obiettivo fotografia
Due speciali obiettivi esterni sono in grado di trasformare uno smartphone Android
in una fotocamera compatta: ne vale davvero la pena?

onostante siano in
circolazione smartphone
con sensori fotografici
da 40 Megapixel e oltre,
i vantaggi di avere a disposizione
una fotocamera con lente standard
e zoom ottico rimangono enormi
per chi ama la fotografia.
Unalternativa potrebbe essere
quella di acquistare una fotocamera
con funzioni da smartphone come
la Samsung Galaxy Zoom, che ha
per dimensioni e peso eccessive
per poter essere usata tutti i giorni
come telefono. Sony propone
invece una soluzione differente,
cio un obiettivo esterno che integri
al suo interno tutte le componenti
di una fotocamera tranne il display,
e che vada fissato al corpo dello
smartphone. In questo caso verr
utilizzato come schermo quello
dello smartphone, con cui lobiettivo
dialoga attraverso una connessione
wireless NFC. A oggi Sony ha reso
disponibili due differenti modelli
di obiettivi esterni accoppiabili:
il QX10 che per 199 euro offre un
sensore CMOS da 18,2 Megapixel
abbinato a una lente con zoom
a 10 ingrandimenti da 25 a 250
millimetri, e il QX100 che costa
ben 499 euro ma in compenso
offre anche stabilizzatore hardware
e un sensore CMOS da un pollice
e 20,2 Megapixel. Leffetto, almeno
con gli smartphone della serie Sony
Xperia, ottimo, al punto che una

volta montato lobiettivo si potrebbe


tranquillamente confondere
il telefono con una delle fotocamere
del produttore giapponese.
La compatibilit garantita con
tutti i dispositivi Android di ultima
generazione, che integrino cio
o il collegamento wireless NFC
o quello Wi-Fi Direct, entrambi
molto veloci. Abbiamo provato per
breve tempo il modello base QX10
e i risultati sono stati soddisfacenti
soprattutto per la qualit delle
immagini catturate con lo zoom
ottico, e questo nonostante non sia
presente il sistema di stabilizzazione
hardware. Manca invece il flash
e questo in diverse situazioni pu
rappresentare un problema, insieme
a quello dei tempi complessivi
per essere operativi: tra il fissaggio
dellobiettivo allo smartphone
e lavvio dellapp di connessione
Play Memories Mobile di Sony
non basta un minuto, decisamente
troppo per chi ama scattare
immagini al volo.

Lalternativa
Al vero appassionato di fotografia
che non ha posto in tasca per un
secondo dispositivo, non disturbano
certo i 210 grammi di peso
o lobiettivo che spunta dal retro
del Galaxy S4 Zoom, la versione
ibrida fotocamera/smartphone
dellammiraglia di Samsung. Anche
perch, a differenza della soluzione

Galaxy S4 per fotografi

Il modello di punta degli smartphone


di Samsung ha ora una versione

fotografica con buon obiettivo da 10


ingrandimenti e stabilizzatore ottico.

esterna di Sony, qui il flash c


e i tempi di risposta sono simili
a quelli di una compatta di fascia
alta. Purtroppo, come capita spesso
agli ibridi, Galaxy S4 Zoom offre
molto ma non eccelle in nulla.
La parte telefonica non ha il
collegamento LTE e anche il display
deve accontentarsi di uno schermo
da 4,3 pollici con risoluzione di
960x540 pixel al posto del 5 pollici
Full HD del Galaxy S4 originale.
Anche il processore un dual core
con 1,5 GB di RAM e solo 8 GB
di memoria integrata, che diventano
meno di 4 GB una volta tolto
lo spazio occupato dal sistema
operativo, veramente pochi
per una fotocamera con sensore
da 16 Megapixel. Anche se poi
comunque possibile espandere
la memoria via scheda di memoria
microSD. Veniamo per alla sezione
fotografica, che la responsabile
dei limiti di quella telefonica: oltre
al sensore da 16 Megapixel, Galaxy
S4 Zoom pu vantare uno zoom
ottico a dieci ingrandimenti
e uno stabilizzatore in grado di
minimizzare gli spostamenti mentre
si fotografa con le ottiche pi spinte.
Infatti gli scatti realizzati sono
di qualit nettamente superiore
a quelli di tutti gli altri smartphone,
Nokia e Apple compresi.
Ma questo basta fino a un certo
punto, in quanto il confronto con
la maggior parte delle fotocamere
compatte di fascia alta diventa

perdente sia come lunghezza


dellottica che come qualit delle
lenti. Il software di sistema poi,
che nel Galaxy S4 era quello
che faceva la differenza, nella Zoom
abbastanza essenziale, anche
se alcune chicche come il controllo
con lo sguardo rimangono.
Ottimo invece il software della
fotocamera che permette di agire
su tutte le funzioni anche in maniera
manuale. Dare un giudizio
sullautonomia difficile: se si lascia
sempre attiva la connessione
telefonica 3G e si scatta qualche
decina di fotografie potrebbe essere
problematico arrivare a fine
giornata, soprattutto se si navigato
su Internet e utilizzato qualcuna
delle tante app in dotazione.
Ma senza attivare la parte telefonica
il discorso cambia e grazie alla
batteria capiente, lautonomia risulta
maggiore a quella di qualsiasi
compatta. Tutto questo ha
un prezzo di 499 euro, che
sicuramente inferiore a quello
del Galaxy S4 puro, che per pu
offrire di pi in ogni settore (tranne
quello fotografico). LXP
Linux pro 134

29

Langolo di Android HTC One Mini

HTC One Mini


Struttura solida ed elegante in alluminio e ottimo display
da 4,3 pollici per uno smartphone che mini solo nel nome

a tradizione di realizzare
una versione Mini
del proprio smartphone
top di gamma stata
inaugurata da Samsung con
il Galaxy S3, per essere poi
ripresa dagli altri produttori
e quindi anche da HTC con
il suo One. Solo che in molti
casi Mini corrisponde a Serie
B, mentre con One Mini
le cose non stanno esattamente
cos. Prima di tutto perch
la struttura completamente
in alluminio la stessa del
modello superiore e lunica
differenza riguarda le
dimensioni e il peso che,
con uno schermo da 4,3
al posto di uno da 4,7 sono
chiaramente inferiori (120
grammi e larghezza di 6 cm
rispetto ai 145 grammi
e 7 centimetri dellHTC One
originale). Ma soprattutto
perch dal punto di vista
dellutilizzo quotidiano
le differenze si avvertono
veramente poco. Prendiamo
per esempio lo schermo
che non un Full HD ma un
semplice HD da 1280x720
pixel: nonostante la risoluzione
sia inferiore, la densit dei pixel
comunque di 340 pixel per
pollice, cio superiore a quella
percepibile dallocchio umano.
Quello che conta in questo caso
la qualit del display che
rimane ottima sia in termini di
contrasto che di resa cromatica,

Maxi pixel
Inserire dei pixel pi grandi
per catturare pi luce sembrava
sulla carta unottima idea.
In pratica per le foto non
risultano sempre cos nitide.

30

e che ha veramente poco


da invidiare ai migliori modelli
Amoled della concorrenza.
Stesso discorso per il
processore che anche se un
semplice Dual Core Qualcomm
S400 da 1400 MHz ha
comunque fornito risultati pi
che soddisfacenti sia a livello di
benchmark che di utilizzo reale.
Anche il dimezzamento della
memoria RAM, nello One Mini
quella integrata da 1 GB,
si avverte complessivamente
poco anche con un multitasking
intenso. Caso mai pu lasciare
perplessi la decisione di inserire
solo 16 GB di memoria Flash
che nella realt diventano poco
pi di 10 considerando
le dimensioni dei due sistemi
operativi presenti nello
smartphone: Android 4.2 Jelly
Bean e Sense 5, la nuova
interfaccia di HTC che
sicuramente completa e ben
realizzata, ma che in molti casi
non fa altro che duplicare
le app gi presenti in Android.
Altre caratteristiche hardware
presenti solo sul modello top
sono la connessione NFC,
il trasmettitore a raggi infrarossi
e il sistema di stabilizzazione
hardware della fotocamera.
Non ci sembra niente
di particolarmente importante:
le connessioni NFC vengono
utilizzate molto raramente,
cos come la possibilit
di trasformare il telefono
in un telecomando per la TV,
mentre il vero problema della
fotocamera non certo quello
della stabilizzazione hardware.
Pi importante il fatto che HTC
abbia mantenuto anche nel Mini
alcune funzioni strategiche
come la connessione telefonica
LTE e i due altoparlanti
BoomSound che restano
al momento i migliori che ci sia
capitato di provare su uno
smartphone, sia come volume
che come qualit del suono.
La sezione telefonica, poi,
perfetta sia in ricezione

I due altoparlanti BoomSound sono i migliori che ci sia capitato


di provare finora su uno smartphone Android

che trasmissione, come da


tradizione HTC, e la presenza
del protocollo LTE non altro
che la ciliegina sulla torta.
Riuscire, come successo
a noi, a navigare su Web a 20
megabit al secondo pu essere
infatti estremamente utile e
soprattutto creare assuefazione.
Per quanto riguarda la
fotocamera, lidea di integrare
un sensore da soli 4 Megapixel
ma con i singoli pixel pi grandi,
quindi in grado di catturare
la luce pi velocemente, era
sicuramente intrigante. Peccato
che in pratica poi i risultati
non siano stati allaltezza delle
attese, soprattutto per quanto
riguarda la nitidezza una volta
che limmagine viene trasferita
su un PC. Su questo dettaglio
la mancanza dello stabilizzatore
dimmagine conta veramente
poco. Infine la batteria, che gi
non brillava per durata sul
modello originale, stata
ulteriormente ridotta e presenta
ora una capacit di 1.800 mAH,
veramente troppo pochi anche
per una sola giornata di utilizzo
intenso. Il fatto che non sia

sostituibile certo non aiuta.


In conclusione ci troviamo di
fronte sicuramente a un ottimo
smartphone soprattutto per
quanto riguarda la qualit
costruttiva e la maneggevolezza,
che grazie alle dimensioni
ridotte superiore a quella
dellHTC One. La maggior parte
delle limitazioni invece
trascurabile, tranne la capacit
della batteria che risulta
decisamente scarsa. LXP

Giudizio
One Mini
Produttore: HTC
Web: www.htc.com/it
Prezzo: 449

Caratteristiche
Prestazioni
Autonomia
Qualit/prezzo

8
7.5
6
7.5

Il fratello minore dellHTC One


conferma buona parte dei pregi
del modello superiore, pur
avendo caratteristiche hardware
e dimensioni inferiori.

Il voto di
Linux Pro

7.5

LINUX PRO 134

LXP_134_30_One mini 30

07/10/13 17:32

Asus Nexus 7 Langolo di Android

Asus Nexus 7 (2013)


La seconda generazione del mini tablet progettato
da Google ancora il punto di riferimento per Android

l Nexus 7 presentato a luglio


del 2012 stato il primo
vero tablet Android in grado
di confrontarsi con iPad come
prestazioni, prezzo e design. Solo
che nel settore dellInformation
Technology un anno corrisponde
a unera geologica e nel frattempo
Apple ha potuto lanciare liPad
Mini, Amazon i suoi nuovi Fire
e Samsung tablet di ogni
dimensione accomunati da prezzo
e prestazioni concorrenziali. Ma
Google non rimasta a guardare
e, alleandosi ancora una volta
con Asus, ha messo a punto la
versione 2013 del suo Nexus 7
che non migliorato solo a livello
hardware, ma presenta una
struttura decisamente pi sottile
e maneggevole.

Quasi perfetto

Dal punto di vista del design, pur


mantenendo le dimensioni da
sette pollici del display, la
larghezza della cornice ridotta
di quasi un centimetro e allo
stesso tempo aumentata
laltezza, con il risultato di rendere
il tablet pi maneggevole e adatto
a essere usato con una sola
mano. In pi Google ha ridotto
di 2 millimetri lo spessore e di 50
grammi il peso. Il risultato una
tavoletta spessa 8 millimetri che
stupisce anche per la qualit delle
plastiche che forniscono una
sensazione di decisa robustezza.
Come capita spesso, Google
ha approfittato della seconda

Due altoparlanti
Rispetto al primo Nexus 7 la resa
audio decisamente migliorata
grazie alla presenza di due
altoparlanti di buona qualit.

versione del Nexus 7 per colmare


alcune lacune presenti sul
modello originale: prima di tutto
finalmente presente una
fotocamera posteriore con un
sensore da 5 megapixel, anche
se senza flash. Inoltre troviamo
un doppio altoparlante che, oltre
a fornire un suono stereofonico,
aumenta notevolmente il livello
acustico rendendolo adatto anche
per godersi un film in compagnia
senza dover usare per forza gli
auricolari. La porta micro USB
pu poi venire collegata a uno
speciale adattatore e via HDMI
alla TV. Continua a mancare
invece lalloggiamento per una
scheda di memoria, ma questa
una scelta strategica per tutti
i dispositivi Nexus. Noi abbiamo
provato il modello base da 16
GB, ma quando ci leggerete sar
gi disponibile il modello con
connessione LTE e 32 GB di
memoria a un prezzo di 349
euro. Insieme al design, il
display ad avere compiuto
i maggiori progressi: dimensioni
e formato (16:10) sono gli stessi
ma la risoluzione passata al Full
HD di 1920x1200 pixel con una
densit di 323 punti per pixel,
che pochissimi concorrenti
possono vantare. Abbiamo messo
a confronto i due Nexus 7 e i
risultati sono chiaramente evidenti
sia con i film in Full HD che con gli
ebook, che non affaticano pi la
vista grazie alla massima nitidezza
raggiunta dal display. Il fatto che
la tecnologia non sia quella
Amoled significa che i neri sono
meno vibranti di quelli naturali,
ma in compenso gli altri colori
sono perfettamente naturali e per
nulla saturi come accade sui
corrispondenti modelli con display
Amoled. Per compensare la
maggiore richiesta di prestazioni
dello schermo Full HD, Google ha
inserito il doppio di memoria RAM
(2 GB ) e soprattutto lottimo
processore S4 a 1,5 GHz di
Qualcomm, lo stesso impiegato
sul Nexus 4. Anche se i risultati
dei benchmark arrivano a meno

La densit di 323 punti per pixel dello schermo superiore a quella


percepibile dallocchio umano: ogni immagine viene visualizzata al meglio

della met rispetto a quelli del


nuovo S800, la risposta a livello
di uso anche intenso sempre
ottima. Abbiamo caricato un film
in formato MKV e Full HD da 3
GB e non abbiamo notato alcun
rallentamento. La gestione della
grafica 3D pi che buona,
anche se non pi possibile
accedere alla Tegra Zone
di Nvidia e questo per alcuni
giocatori incalliti potrebbe essere
un limite. I 16 GB di memoria
sono come al solito teorici, quelli
reali sono poco pi di 12 GB
e la mancanza della scheda di
memoria potrebbe farsi sentire
nonostante la possibilit
di archiviare dati sul cloud
e di collegare chiavi USB esterne
con un adattatore OTG.
Le connessioni wireless
comprendono NFC e Miracast,
tecnologia questultima in grado
di duplicare il contenuto del tablet
sul televisore grazie a un
adattatore Mirasol/HDMI. Per
quanto riguarda la batteria,
lautonomia media varia dalle otto
alle dieci ore a seconda di come

viene usato il tablet, un valore


comunque in linea con il modello
precedente. La dotazione
software quella base di ogni
Nexus ma con il grande vantaggio
di poter ricevere subito gli
aggiornamenti di Google. Non per
niente il nuovo Nexus 7 nasce gi
con Android 4.3 e sar il primo
ad avere la versione 4.4, che
a sorpresa stata chiamata
Kit-Kat e che sar disponibile
probabilmente da novembre. LXP

Giudizio
Nexus 7 (2013)
Produttore: Asus
Web: www.asus.it
Prezzo: 229

Caratteristiche
9
Prestazioni
8
Autonomia
8
Qualit/prezzo
9
Fantastico schermo Full HD
e dimensioni ridotte al minimo per
il migliore tra i mini-tablet Android.

Il voto di
Linux Pro

8.5

LINUX PRO 134

31

Diventa protagonista
del mondo Linux

ABBONATI
SUBITO

SCEGLI IL METODO PI COMODO PER ABBONARTI:


POSTA Compila, ritaglia e spedisci il coupon in busta chiusa a: Sprea Editori S.p.A. - Servizio Abbonamenti - Via Torino 51 - 20063 Cernusco Sul Naviglio (MI)

FAX invia il coupon al N. 02


TELEFONA al N. 02

700537672

ONLINE sul sito

www.myabb.it/linuxpro

87168074

Dal luned al venerd dalle ore 9,00 alle ore 18,00. Il costo massimo della telefonata da linea fissa pari a una
normale chiamata su rete nazionale in Italia. Da telefono cellulare il costo dipende dal piano tariffario in uso. Via mail: abbonamenti@myabb.it

anno - numeri

39,90
invece
di
70,80
39,90 invece di 70,80
SCONTO
43% 43%
SCONTO
COUPON DI ABBONAMENTO

SI! Mi abbono a Linux Pro

Ricever 12 numeri di Linux Pro a soli 39,90


anzich 70,80 con lo sconto del 43%.

ABBONANDOTI

Inviate Linux Pro al mio indirizzo:


Cognome e Nome

AVRAI DIRITTO AI
SEGUENTI VANTAGGI

Informativa ex Art.13 LGS 196/2003. I suoi dati saranno trattati da Sprea Editori S.p.A., nonch dalle societ con essa in rapporto di controllo e collegamento
ai sensi dellart. 2359 c.c. titolari del trattamento, per dare corso alla sua richiesta di abbonamento. A tale scopo, indispensabile il conferimento dei dati
anagrafici. Inoltre previo suo consenso i suoi dati potranno essere trattati dalle Titolari per le seguenti finalit: 1) Finalit di indagini di mercato e analisi di tipo
statistico anche al fine di migliorare la qualit dei servizi erogati, marketing, attivit promozionali, offerte commerciali anche nellinteresse di terzi. 2) Finalit
connesse alla comunicazione dei suoi dati personali a soggetti operanti nei settori editoriale, largo consumo e distribuzione, vendita a distanza, arredamento,
telecomunicazioni, farmaceutico, finanziario, assicurativo, automobilistico e ad enti pubblici ed Onlus, per propri utilizzi aventi le medesime finalit di cui al
suddetto punto 1) e 2). Per tutte le finalit menzionate necessario il suo esplicito consenso. Responsabile del trattamento Sprea Editori S.p.A. via Torino 51
20063 Cernusco SN (MI). I suoi dati saranno resi disponibili alle seguenti categorie di incaricati che li tratteranno per i suddetti fini: addetti al customer service,
addetti alle attivit di marketing, addetti al confezionamento. Lelenco aggiornato delle societ del gruppo Sprea Editori S.p.A., delle altre aziende a cui saranno
comunicati i suoi dati e dei responsabili potr in qualsiasi momento essere richiesto al numero +39 0287168074 Customer Service. Lei pu in ogni momento
e gratuitamente esercitare i diritti previsti dallarticolo 7 del D.Lgs.196/03 e cio conoscere quali dei suoi dati vengono trattati, farli integrare, modificare o
cancellare per violazione di legge, o opporsi al loro trattamento scrivendo a Sprea Editori S.p.A. via Torino 51 20063 Cernusco SN (MI).

N.
CAP

Prov.

email

Tel.

Scelgo di pagare, in un unico versamento:


Con il bollettino postale che mi invierete
Con carta di credito:

Visa

American Express

Diners

Mastercard

Numero
Firma

Scad. (mm/aa)

Regalo Linux Pro a:


Cognome e Nome
Via

N.

Localit
Tagliare lungo la linea tratteggiata

PREZZO BLOCCATO: per tutta la durata


dellabbonamento non pagherai un euro in pi, anche
se il prezzo di copertina dovesse subire aumenti.
TUTTI I NUMERI ASSICURATI:
se per cause di forza maggiore qualche numero della rivista non venisse stampato, labbonamento verr prolungato
fino al raggiungimento dei numeri previsti.
RIMBORSO GARANTITO:
potrai disdire il tuo abbonamento quando vorrai,
con la sicurezza di avere il rimborso dei numeri
che non hai ancora ricevuto.

Via
Localit

CAP

Prov.

Tel.
Compila, ritaglia e invia questo coupon in busta chiusa a:
Sprea Editori S.p.A. - Servizio abbonamenti - Via Torino , Cernusco Sul Naviglio (MI)

ABBONATI ANCHE IN INTERNET!

Collegati subito a: www.myabb.it/linuxpro


Accetto di ricevere offerte promozionali e di contribuire
con i miei dati a migliorare i servizi offerti (come specificato
al punto 1 dellinformativa privacy): SI NO

Accetto che i miei dati vengano comunicati


a soggetti terzi (come indicato al punto 2
dellinformativa privacy): SI NO

Se T T

iM a

014
calendari 22014

In anteprima
SOLO
per
te!
O
AI
a

io

Febbra

N
GEN

Scegli i tuoi calendari preferiti

CALENDARIO-AGENDA

Indica il quantitativo delle pubblicazioni che vuoi ricevere

DELLA

FAMIGLIA 2014

1
2 Gioved
3 Venerd
4 Sabato
5 Domenica
6 Luned
7 Marted
e
8 Mercoled
9 Gioved
10 Venerd
11 Sabato
12 Domenica
13 Luned
e
a r T ir
14 Marted
15 Mercoled
a
iT
M
16 Gioved
17 Venerd
o pa
18 Sabato
pa
19 Domenica
enaica 20 Luned
an
21 Marted

d
o Mercoled
nerio veScov22

di GeS
a
BaTT.
23 Gioved
ire Venerd
arlticeedM arT24
fe
25 Sabato
Domenica
d
le
aT e
MeMracUroo aB26
S.
27 Luned
i Marted
a pa
GioMavrecdel28
lo p
.
S
29 Mercoled
d Gioved
BaT e
enneTor30
VOTTOBRE
nio aVenerd
a
Giuseppe
Olga
S.
31
1

Mercoled

Maria Madre di dio

capodanno

S. faUSTa

S. aMelia MarTire

!!
ODO ! I
COM E SCOPR
IT
L IA
SFOG A PRATIC
LA SU

epifania del SiGnore

S. raiMondo Sac.

S. MaSSiMo

S. GiUliano MarTire

Ritaglia o fotocopia il coupon, invialo in busta chiusa a:


Sprea Editori S.p.A. socio unico Sprea Holding S.p.A. Via Torino, 51 20063 Cernusco s/n (MI),
insieme a una copia della ricevuta di versamento o a un assegno. Oppure via fax al numero 02.700537672
Per ulteriori informazioni puoi scrivere a info@calendarioagenda.it o telefonare al 02.87158224.

MARCO

BaTT. di GeS

SE VUOI ORDINARE VIA POSTA O VIA FAX, COMPILA QUESTO COUPON

COGNOME

S. iGino papa

S. ilario veScovo

Totale Ordine

Totale quantit

NOME

S. aldo ereMiTa

S. TaTiana

5,90

Ricevilo comodamente a casa


senza spese aggiuntive

S. BaSilio veSc.

S. Genoveffa verGine

5,90

calendario-agenda per lei f.to cm15x50

SeTTiMane

La nostra famiglia

2014

6,00

calendario-agenda dei nonni f.to cm15x50

GENNAIO

Acquario 21 Gennaio - 19 Febbraio

calendario-agenda della famiglia f.to cm30x42,5

via
N

C.A.P.

3PROV.

CITT

TEL.

S. felice MarTire

e-mail

S. MaUro aBaTe

S. Marcello i papa

S. aGneSe verGine

S. vincenzo MarTire

S. eMerenziana verG.

LAURA

S. franceSco di SaleS

conv. di S. paolo

01_ICOVER_famiglia.indd 1

LEI

per

DEI

S. ToMMaSo daqUino

S. coSTanzo

7
Sabato
18 enica
Dom
19 ed
Lun
0
2

Mar ted
21 coled
Mer
22 ed
Giov
23 erd
Ven
24 ato
Sab
5
2
enica
Gli impegni di...

2014

COMPLEANNI
ANNIVERSARI

2014

GENNAIO

S. TERESA VERG.

Gli impegni di...

GENNAIO

FESTE
COMPLEANNI
ANNIVERSARI

Gli impegni di...

MARIA MADRE

S. AMELIA MARTIRE

EPIFANIA DEL SIGNORE

S. BRUNO ABATE

S. RAIMONDO SAC.

S. AMELIA MARTIRE

PESCI il sognatore
Pianeta: Nettuno
Elemento: Acqua
Segno: Femminile
Colore: Verde mare
Transito del Sole: tra il 20 Febbraio
e il 19 Marzo
Pietra portafortuna: Turchese
Metallo: Stagno
Giorno favorevole: Gioved, giorno di Giove

S. DIONIGI

GIORNO DELLA VISTA

S. IGINO PAPA

S. DANIELE

S. TATIANA

S. BRUNO

S. ILARIO VESCOVO

S. MAURO ABATE

S. MARCELLO I PAPA

S. ANTONIO ABATE

S. EDVIGE

S. BEATRICE

Gli impegni di...

MARTIN LUTHER KINGS DAY

S. BIAGIO
FESTA DELLA CANDELORA

S. AGNESE VERGINE

S. LAURA

S. EMERENZIANA VERG.

S. PAOLO MIKI

S. FRANCESCO DI SALES

S. TEODORO MARTIRE

S. DONATO VESCOVO

CONV. DI S. PAOLO

S. GIROLAMO EMILIANI

S. GIOVANNI SACERDOTE

G.DELLA PSORIASI

S. CRISPINO MARTIRE

SS. TITO E TIMOTEO VESC.

S. APOLLONIA VERGINE

S. ANGELA MERICI

S. GUGLIELMO

MEM. DELLA SHOAH

RICORDO DELLE FOIBE

S. TOMMASO DAQUINO

S. EVARISTO PAPA

S. COSTANZO

S. DELIA

S. MARTINA MARTIRE

SS. SIMONE E GIUDA TADDEO AP.

B. V. MARIA DI LOURDES

S. EULALIA VERGINE

S. GIOVANNI BOSCO
SACERDOTE

LISA GOODMAN CALENDAR N. X/2013 - ANN - 5 ,9 0

NUMERI
SALVAVITA

S. ERMELINDA VERGINE

DISTRIBUTORE PER LITALIA E PER LESTERO: PRESS-DI DISTRIBUZIONE


S TA M PA E M U LT I M E D I A S . R . L . - 2 0 13 4 M I L A N O

S. GERMANO VESCOVO

S. LUCILLA VERGINE

HALLOWEEN

soccorso pubblico
di emergenza

113

vigili del fuoco

115

nonni150X500.indd 10

carabinieri

con v.
112

emergenza sanitaria 118

di

lo
S. pa o

12/06/13 13:04

soccorso pubblico
di emergenza
vigili del fuoco

Dom

07/06/13 18:17

113

e T iMo

carabinieri

112

118
115 emergenza sanitaria

S. VALENTINO
FESTA DEGLI INNAMORATI

19 GENNAIO
22 FEBBRAIO

ACQUARIO

S. FAUSTINO

FESTA DEI SINGLE

S. GIULIANA MARTIRE

31/05/13 11:52

nonni150X500.indd 1

S. PATRIZIA

01_cover_SINGLELEI150X500.indd
2 DEL GATTO
FESTA

S. CINZIA

23 OTTOBRE
22 NOVEMBRE

SCORPIONE

T eo v

palestra

e S c.

S. MANSUETO VESCOVO

S. SILVANO

S. PIER DAMIANI DOTT.

ceno con Giovanni


fine set
timan
a in mo
con Fed
erico ntagna

S. AGNESE VERGINE

S. VINCENZO MARTIRE

Compleanno
Giorgio

S. EMERENZIANA VERGINE

S. FRANCESCO DI SALES

palestra
parrucchiere

Firma del titolare

S. ANTONIO ABATE

SS. SEBASTIANO
E FABIANO MARTIRI

Giornata alle Terme


con Pia

SS. FOSCA E MAURA


SACRE CENERI

Data

S. MAURO ABATE

S. MARIO M.
MARTIN LUTHER KINGS DAY

h.18 shopping
con Carla
inizio corso
di danza caraibica

S. FELICE MARTIRE

S. BEATRICE

S. AGATA VERGINE

S. ORSOLA E COMPAGNE

S. ANTONIO MARIA VESC.

h. 18 estetista

(Codice di tre cifre che appare

S. MARCELLO I PAPA

anniversario
pap e mamma

S. GILBERTO VESC.

S. VINCENZO MARTIRE

S. IRENE

G. DELLOSTEOPOROSI

Elisabetta

S. MAURIZIO
GIORNO DELLA MARMOTTA

SS. SEBASTIANO
E FABIANO MARTIRI

S. LUCA EVANGELISTA

1 Sabato
2 Domenica
3 Luned
4 Marted
5 Mercoled
6 Gioved
7 Venerd
8 Sabato
9 Domenica
10 Luned
11 Marted
12 Mercoled
13 Gioved
14 Venerd
15 Sabato
16 Domenica
17 Luned
18 Marted
19 Mercoled
20 Gioved
21 Venerd

FESTE
COMPLEANNI
ANNIVERSARI

S. VERDIANA VERGINE

S. MARIO M.

G. RIFIUTO DELLA MISERIA

S. IGINO PAPA

S. TATIANA

N.

S. ILARIO VESCOVO
BATT. DI GES

George Eliot, Adam Bede, 1859

G. DELLALIMENTAZIONE

S.MARISA

S. ALDO EREMITA

CONV. DI S. PAOLO

SS. TITO E TIMOTEO VESC.

DISTRIBUTORE PER LITALIA E PER LESTERO: PRESS-DI DISTRIBUZIONE


S TA M PA E M U LT I M E D I A S . R . L . - 2 0 13 4 M I L A N O

S. RUGGERO

S. GIULIANO MARTIRE

Non nego che le donne siano stupide;


Dio Onnipotente le ha fatte
per vivere insieme agli uomini.

L I S A G O O D M A N C A L E N D A R N . X / 2 0 13 - A N N - 5 , 9 0

S. FORTUNATO

o bonifico bancario sul conto IBAN IT 05 F 07601 01600 000099075871


intestato a Sprea Editori S.P.A. Via Torino 51 - 20063 Cernusco Sul Naviglio MI
Assegno bancario intestato a: Sprea Editori S.P.A.
Carta di Credito

CVV
sul retro della carta di credito)
Nome e Cognome del Titolare

S. MASSIMO

2014

S. FELICE MARTIRE

Ricevuta di versamento su CCP 99075871

Scad.

S. RAIMONDO SAC.

FEBBRAIO

BATT. DI GES

S. SERAFINO DA M.

S. EDOARDO RE

EPIFANIA DEL SIGNORE

S. ALDO EREMITA

(Per favore riportare il numero della Carta indicandone tutte le cifre)

S. FAUSTA

S. GIULIANO MARTIRE

COLUMBUS DAY

02/07/13 10:05

S. GENOVEFFA VERGINE

S. PELAGIA VERGINE

G. DELLA SALUTE MENTALE

CAPODANNO

S. BASILIO VESC.

S. MASSIMO

B. V. MARIA DEL ROSARIO

1
2 Gioved
3 Venerd
4 Sabato
5 Domenica
6 Luned
7 Marted
8 Mercoled
9 Gioved
10 Venerd
11 Sabato
12 Domenica
13 Luned
14 Marted
15 Mercoled
16 Gioved
17 Venerd
18 Sabato
19 Domenica
20 Luned
21 Marted
22 Mercoled
23 Gioved
24 Venerd
25 Sabato
26 Domenica
27 Luned
28 Marted
29 Mercoled
30 Gioved
31 Venerd
MercoledDI DIO

G. DEGLI ANIMALI

S. PLACIDO MONACO

lei, 1978

FESTE
COMPLEANNI
ANNIVERSARI

Gli impegni di...

S. FAUSTA

Indica con una la forma di pagamento desiderata

Natalia Aspesi, Lui visto da

S. GENOVEFFA VERGINE

S. FRANCESCO DASSISI

NUMERI
SALVAVITA

PROV.

SCELGO IL SEGUENTE METODO DI PAGAMENTO E ALLEGO:

Ladulterio la medicina indispensabile


di ogni buon matrimonio,
come sa ogni moglie accorta
da uno
essendo lei stessa in cura
o pi guaritori del coito furtivo.

CAPODANNO

S. BASILIO VESC.

FESTA DEI NONNI

S. GERARDO DI BROGNE AB.

1_ICOVERnonni150X500.indd 1

C.A.P.

CITT

2014

S F O G L I A L O E S C O P R I L A P R AT I C I T
DI ORGANIZZARE IL TUO TEMPO

MARIA MADRE DI DIO

SS. ANGELI CUSTODI

29 Mercoled
30 Gioved
31 Venerd

ACQUARIO il comunicatore
Pianeta: Urano
Elemento: Aria
Segno: Maschile
Colore: Blu e Viola
Transito del Sole: tra il 21 Gennaio
e il 19 Febbraio
Pietra portafortuna: Zaffiro.
Metallo: Zinco, Argento.
giorno di Saturno
Giorno favorevole: Sabato,

SINGLE per Scelta e per Amore

COMPLEANNI
ANNIVERSARI

1 Mercoled
Mercoled
2 Gioved
2 Gioved
cena a casa dei nipotini
3 Venerd
3 Venerd
4 Sabato
e
NTO
e aT ric
UME
4SSabato
. B03_INTfamiglia.indd
5 Domenica
STR CO
UN P1RATIACE
EFFICTILE ILE
5 Domenica
6 Luned
U SAB
N
ISPE
7 Marted
6 Luned
IND
8 Mercoled
y
7 Marted
a
.
M
S d
G
io
in
r
K
9 Gioved
er
8 Mercoled
H.16
S. M arecitaTinscuola
lUThmaterna
Venerd
r
10
a
Gioved
M
bocce
di
e
9
final
11 Sabato
h.10 gatto
10 Venerd
dal veterinario
12 Domenica
o
Sabato
n
11
ia
13 Luned
eBaST a r T iri
12 Domenica S S. S
oM
14 Marted
a Bia n sarta
13 Luned e fVinaio
15 Mercoled
14 Marted
16 Gioved
e
in
h.16
te rG
v
15 Mercoled
17 Venerd
e
S
e con Elsa
n
G
a
Gioved
.
S
16
18 Sabato
19 Domenica
17 Venerd
giornata con i nipoti
preparativi partenza
18 Sabato
e20 Luned
a r T ir 21 Marted
M
o
z
H.10 partenza
19 Domenica
cen
22 Mercoled
S. v in
20 Luned
23 Gioved
21 Marted
24 Venerd
.
22 Mercoled
v er25GSabato
a
n
ia
Gioved
23
enz
r
e
26 Domenica
M
e
SCOPRI
COM
.
Venerd
S
24
Luned
COMODO:
27
IMPEGNI,
Sabato
25
COMPLEANNI
28 Marted
VISITE MEDICHE
Domenica
leS
26
TUTTO
S29a Mercoled
i
d
o
QUELLO CHE VUOI
Luned
eSc
27
c
30 Gioved
RICORDARE
n
a
fr
SEMPRE SOTTO
.
S
Marted
31 Venerd
AI TUOI OCCHI
28
S. Giovanni BoSco
SacerdoTe

via

5a

MeM. della Shoah

S. MarTina MarTire

COGNOME

05/07/13 12:31

S. anGela Merici

NONNI

NOME

SS. TiTo e TiMoTeo veSc.

Voglio regalare questo calendario a:

4a
DISTRIBUZIONE STAMPA E MULTIMEDIA S.R.L. - 20134 MILANO

O
FID

DISTRIBUTORE PER LITALIA E PER LESTERO: PRESS-DI

MARIA

MarTin lUTher KinGS day

SS. SeBaSTiano
e faBiano MarTiri

LISA GOODMAN CALENDAR N. 4/2013 - ANN - 6,00

S. Mario M.

UGO

EDO

S. BeaTrice

Linux Pro 134

S. anTonio aBaTe

S. ANGELA MERICI
MEM. DELLA SHOAH

PRENOTALI SUBITO SU

S. TOMMASO DAQUINO

S. COSTANZO

S. MARTINA MARTIRE

S. GIOVANNI BOSCO
SACERDOTE

8
31/05/13 15:21

12/06/13 14:33

dd 1

SINGLELEI150X500.in

Informativa e Consenso in materia di trattamento dei dati personali - (Codice Privacy d.lgs. 196/03) Sprea Editori S.p.A. Socio Unico Sprea Holding S.p.A. con sede legale in Cremona (CR), via Beltrami 21, il Titolare del trattamento dei dati personali che vengono raccolti, trattati e conservati ex d.lgs. 196/03. Gli stessi potranno essere comunicati e/o trattati da Societ esterne Incaricate.
Ai sensi degli artt. 7 e ss. si potr richiedere la modifica, la correzione e/o la cancellazione dei dati, ovvero lesercizio di tutti i diritti
previsti per Legge. La sottoscrizione del presente modulo deve intendersi quale presa visione, nel colophon della rivista, dellInformativa completa ex art. 13 d.lgs. 196/03, nonch consenso espresso al trattamento ex art. 23 d.lgs. 196/03 in favore dellAzienda.

www.spreastore.it
(tiratura limitata)

Recensioni

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

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

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

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.

QUESTO MESE...
Test >>
Sitecom X8 AC1750

Un router velocissimo in wireless


grazie al nuovo standard
Wi-Fi ac
pag. 36

Raspberry Pi
Camera

La fotocamera micro dalle


prestazioni straordinarie pag. 37

Left 4 Dead 2

Il gioco perfetto per gli amanti


dellhorror e dellazione pag. 38

Raspberry Pi Camera

In libreria

The Healthy Programmer


GIMP 2.8
for photographers
pag. 39

Confronto >>

Cinque distro per la sicurezza


dei vostri dati personali pag. 40
IprediaOS
Libert
Privatix
Tails
Whonix

Left 4 Dead 2

Da non
perdere >>

Multimedia, antivirus, finanze, testi,


web server e giochi
Data Crow
pag. 46
Antivirus Live CD
pag. 47
BillReminder
pag. 47
Darkhttpd
pag. 48
Notepas
pag. 48
Tomb
pag. 49
Fish
pag. 49
OpenBVE
pag. 50
SpaceZero
pag. 50

Data Crow
LINUX PRO 134

35

Test Sitecom X8 AC1750

Sitecom X8 AC1750
Un router puro capace di notevoli velocit in wireless grazie al nuovo standard Wi-Fi ac

ul catalogo Sitecom
si chiama WLR-8100,
ma la sigla sulla confezione
molto pi significativa:
X8 indica che il modello di punta
della gamma, ma soprattutto
AC1750 rivela che impiega
la nuova tecnologia Wi-Fi ac
e che la velocit combinata delle
sue antenne di 1.750 Mbps.
Almeno in teoria. Gi, perch lo
standard ancora relativamente
giovane, e non tutti i tasselli sono
ancora al loro posto. Il WLR-8100
ha dimensioni importanti per un
router, ma si mimetizza facilmente
grazie alla sua livrea bianca.
Pu essere installato sia
orizzontalmente su un ripiano,
sia in verticale grazie a un supporto
a incastro, sia appeso al muro,
in alto. In questo caso si dovrebbe
guadagnare qualcosa in fatto
di raggio di copertura, e Sitecom

fornisce pure i tasselli a espansione


per completare lopera. Il profilo
circondato di prese dareazione,
ma non abbiamo notato problemi
di surriscaldamento durante
il funzionamento.

LED e porte
Sul bordo frontale sono visibili ben
nove spie LED di funzionamento,
comprese quelle delle singole prese
Ethernet. Sul retro troviamo tutti i
connettori: Un RJ-45 per lingresso
rete da collegare al modem ADSL
o comunque alla sorgente di
connettivit Internet, quattro porte
Gigabit, due USB, una delle quali
3.0, per la connessione di dischi
e stampanti. Infine, troviamo
lingresso per lalimentazione,
fornita da un robusto alimentatore
da 2 A, e, caso raro, un vero
interruttore di accensione. Tutte le
antenne sono interne e quindi non

Questo router di Sitecom fornisce ottime prestazioni wireless.


Occhio per: non integra il modem ADSL, che da acquistare a parte

36

Linux pro 134

orientabili, ma non abbiamo avuto


grossi problemi di copertura
nellappartamento usato per
le prove. Le sei antenne integrate
permettono allAC1750 di creare
simultaneamente due reti Wi-Fi,
una sui 2,4 e una sui 5 GHz.
Ovviamente lapparecchio
retrocompatibile con gli
standard precedenti, a, b, g e n;
in particolare, i collegamenti b, g e
n sono prevalentemente svolti sui
2,4 GHz, banda piuttosto affollata
anche da applicazioni non digitali,
mentre la molto meno critica
banda dei 5 GHz lavora in
retrocompatibilit con lo standard
Wi-Fi a e con la nuova modalit ac.
Le velocit teoriche sono di 450
Mbps per i 2,4 GHz, e 1.300 Mbps
per le connessioni ac. Massimi
teorici che, nel caso dellac, sono
ancora parecchio difficili da
ottenere. Stranamente, la maggiore
limitazione spesso nel client:
le chiavette Wi-Fi ac in commercio
sono quasi tutte di tipo USB 2,
con una banda teorica che meno
della met di quella permessa dallo
standard, e una capacit reale
ancora pi bassa. Fortunatamente,
Sitecom ci ha fornito una chiavetta
Wi-Fi USB 3.0 adapter AC 1200,
dotata di due antenne di cui una
orientabile. Una chiavetta di
cospicue dimensioni, difficile
da infilare fianco a fianco con altri
dispositivi USB, ma che ha fatto
egregiamente il suo lavoro,
mostrando velocit di connessione
non lontane dalle massime
dichiarate: poco al di sotto dei 900
Mbps. Purtroppo non avevamo
a disposizione client da 1.300
Mbps per poter testare il router
al massimo della capacit, ma
nei prossimi mesi sicuramente
arriveranno client, anche integrati,
capaci di farlo. Una cosa
interessante che abbiamo notato
che con laumentare della distanza
e degli ostacoli fra router e client
le prestazioni del Wi-Fi ac decadono
pi lentamente rispetto alluso dello
standard n. La cosa forse dovuta
alla migliore gestione dei vari flussi

radio realizzata nel nuovo standard,


che quindi conferma la sua
candidatura a sistema preferenziale
per collegare in tutta la casa
dispositivi multimediali e in generale
client che abbisognano di un
segnale pulito e continuo. Dal punto
di vista dellinstallazione e uso,
tutto molto guidato e il router
arriva preconfigurato con tanto
di password WPA2 gi attive.
La gestione avviene via interfaccia
Web e, sinceramente, perde
il confronto con la maggior parte
dei concorrenti, che hanno ormai
adottato interfacce pi grafiche
e pi guidate. Concludiamo
segnalando una caratteristica
interessante: il Sitecom prevede
la creazione di due reti guest
sulle due frequenze, per ospiti che
debbano accedere a Internet ma
non alle risorse della rete di casa.
Infine, un dettaglio: appena preso
in mano, lAC1750 ci sembrato
leggerino, e temevamo fosse fragile.
Beh, abbiamo scoperto che ha 10
anni di garanzia. Possiamo stare
tranquilli. Infine una nota: questo
router di Sitecom, grazie al
supporto al protocollo 803.11 ac e
alla chiave USB Wi-Fi che supporta
lo stesso protocollo (da comprare
a parte al prezzo di 69,99 euro)
offre ottime prestazioni, ma
ricordate che non integra
un modem ADSL, che quindi
da considerare nella spesa. LXP

Giudizio
Sitecom WLR-8100 X8
AC1750
Produttore: Sitecom
Web: www.sitecom.com
Prezzo: 169,99

Caratteristiche
Prestazioni
Facilit duso
Qualit/prezzo

8
9
7.5
7,5

Veloce e versatile, ma per


andare oltre le funzionalit base
bisogna sapersi muovere nella GUI
fra firewall, DMZ, reti guest, ecc.

Il voto di
Linux Pro

Raspberry Pi Camera Test

Raspberry Pi Camera
Siamo andati alla scoperta della nuova periferica per la Raspberry Pi, e i risultati sono
stati decisamente entusiasmanti...

ella sua ancor breve


esistenza, la Raspberry
Pi ha suscitato grande
interesse: appena
entrata in scena, si fatta subito
onore. Grazie alla recente
pubblicazione della periferica
fotografi ca, inoltre, sono nati
in tutto il mondo nuovi progetti.
La fotocamera ha un sensore
da 5 Megapixel e scatta foto
con una risoluzione massima di
2592x1944 pixel. Le prestazioni
video sono notevoli: formato
H.264, risoluzione 1080p a 30
fotogrammi al secondo, il tutto
in un aggeggino che misura solo
20x25x10mm. la stessa
macchina fotografi ca presente in
molti smartphone, il che appare
naturale, se si pensa che la RP
stessa si ispira fortemente alla
tecnologia mobile. Installarla
facile: c un connettore dedicato
che collega le porte Ethernet
e HDMI ed suffi ciente inserire
il cavo a nastro con i connettori
argentati rivolti verso la porta
HDMI. Utilizzando lultima
versione di Raspbian, avviate la
Raspberry Pi, aprite un terminale
e digitate sudo apt-get update
per aggiornare il vostro elenco
di pacchetti, seguito da sudo
apt-get upgrade per portare
allultima versione tutti i software
installati. Usate quindi sudo

raspi-confi g per aprire il menu


di confi gurazione e da l
selezionate Camera; dopo averla
attivata, chiudete il menu
e riavviate la vostra RP. Anche
se potreste non notarlo subito,
attivando la fotocamera tramite
il menu raspi-confi g avrete ora
accesso a due nuovi comandi:
raspistill per scattare foto
e raspivideo per girare video.
Per scattare una foto dovrete
digitare in un terminale raspistill
-o image.jpg: in questo modo
verr creato un fi le con il nome
image.jpg. Per registrare un
video, digitate in un terminale
raspivid -o video.h264
t10000. Otterrete cos un
video della durata di 10 secondi,
con il nome video.h264.
Al momento non esistono
applicazioni ufficiali con interfaccia
grafica e raspistill e raspivid sono
gli unici metodi ufficiali per
utilizzare la fotocamera.

Progetti vari
Gli utenti pi intraprendenti
hanno gi creato numerosi
progetti basati sulla fotocamera:
al momento la fotografia
time-lapse rappresenta il test
di collaudo principale. Tuttavia,
anche possibile integrare
i comandi della fotocamera
in uno script Python e creare

Specifiche

Sensore da 5 Megapixel
Registrazione video HD 1080p
JPEG da 2592x1944 pixel

Connessione dedicata
Supportato da Raspbian
Dimensioni: 20x25x10mm

La fotocamera Pi utilizza meno energia di una webcam USB e non


occupa una preziosa porta USB. Perfetta per i progetti integrati
un trigger mediante il GPIO.
Le possibilit sono illimitate
ed questo a rendere cos
divertente luso della Raspberry
Pi. La videocamera pu essere
utilizzata con OpenCV (Open
Source Computer Vision), perci
nei mesi successivi vedremo
probabilmente nascere molti
progetti basati su questa
tecnologia. Siamo davvero molto
entusiasti di veder apparire
progetti basati espressamente
sulluso della fotocamera, dai
robot alle cabine fotografiche.
La qualit delle immagini e dei
video notevole: il disturbo
presente nelle foto, in condizioni
di illuminazione normali,
minimo. La fotocamera utilizza
una messa a fuoco fissa infinita,
per cui ogni parte dellimmagine
risulta a fuoco a meno che
il soggetto sia vicinissimo
allobiettivo. I video sono
in formato Full HD H.264
e possono essere riprodotti
mediante Omxplayer.
La videocamera non registra
laudio; per questo dovrete
utilizzare una scheda audio
USB o un microfono USB.
Al momento la fotocamera
supportata ufficialmente solo
da Raspbian ma la situazione

certamente destinata
a cambiare quando il dispositivo
sar pi diffuso. Nel complesso
si tratta di uno strumento
decisamente notevole,
con un prezzo ragionevole.
Pur non essendo adatto
a un sistema di videoconferenza,
offre uneccellente base
di partenza per ulteriori
sviluppi. La pubblicazione
di questa nuova periferica
contribuisce a consolidare
lobiettivo della Raspberry Pi
Foundation: insegnare alle
nuove generazioni luso
del computer. LXP

Giudizio
Raspberry Pi Camera
Sviluppatore: Raspberry Pi
Foundation
Web: www.raspberrypi.org
Prezzo: 19,99

Caratteristiche
Prestazioni
Facilit duso
Documentazione

8
8
7
8

Unottima aggiunta per la


Raspberry Pi: non mancher di
produrre tanti progetti interessanti.

Il voto di
Linux Pro

LINUX PRO 134

37

Test Left 4 Dead 2

Left 4 Dead 2
Siete sopravvissuti allapocalisse solo per ritrovarvi braccati dai morti viventi. Ce la farete?

n virus ha devastato
il pianeta e bla, bla,
bla. A chi interessa
lantefatto? Questo
un gioco in cui si ammazza
e di roba da ammazzare ce n
in abbondanza. Perlopi si tratta
di zombie (o esclusivamente
zombie se non aprirete il fuoco
su un altro giocatore); ma c
anche una selezione di morti
viventi speciali con cui vedersela.
In ogni livello, insieme a tre
compagni, dovrete raggiungere
un punto di uscita e, si spera,
la salvezza. Sul percorso
vi imbatterete in orde
di zombie decisi a fermarvi,
presumibilmente allo scopo
di divorarvi il cervello.
I personaggi del gioco sembrano
piuttosto sfortunati nella ricerca
di un luogo in cui rifugiarsi.
Invece di trovare la salvezza,
infatti, sembrano imbattersi
in masse sempre pi numerose
di zombie; prima che
i protagonisti possano finalmente
riposare, la saga prosegue per
un totale di tredici campagne,
ciascuna composta da un
numero di capitoli compreso
tra due e cinque. Gli ambienti
di gioco sono inesplicabilmente
ma fortunatamente zeppi di armi
che rientrano a grandi linee in
due categorie: quelle per sparare

agli zombie e quelle per pestarli.


Le armi da fuoco risentono
perlopi del fastidioso problema
dei proiettili che si esauriscono.
Lunica eccezione
rappresentata dalla pistola,
per la quale il vostro personaggio
sembra disporre di una scorta
inesauribile di munizioni
(evidentemente ha delle tasche
molto capienti). Ci significa
che potete continuare a sparare
agli zombie quanto volete, il che
perfetto per chi, come il vostro
recensore, preferisce la quantit
alla qualit quando si tratta
di fare fuoco. Le armi non da
fuoco (mazze da baseball, asce
e simili) infliggono danni maggiori
e vi evitano di restare vulnerabili
mentre ricaricate; per poterle
usare, per, dovete lasciar
avvicinare molto gli zombie
i quali, diciamolo, non sono
proprio per niente carini.

Schiattare
dal divertimento
Nella maggior parte dei casi,
i morti viventi non sono in grado
di attaccare a distanza (ma lo
zombie cacciatore lo ; ed pure
veloce) e non vi infliggono grossi
danni se vi attaccano isolati
o in coppia. Se venite feriti, poi,
potete essere curati o rivitalizzati
dai vostri compagni di squadra.

Non a caso parlavamo di orde di zombie

38

Linux pro 134

Gli zombie possono essere avversari tenaci. Questo ha gi perso


met delladdome, eppure ha ancora voglia di mangiarci il cervello

Tutto ci d vita a un gioco


decisamente divertente e
frenetico. I giocatori pi smaliziati
potranno escogitare strategie
e tecniche per eliminare
in modo efficiente le varie
categorie di morti viventi; ma
divertentissimo anche limitarsi
a scorrazzare facendo a pezzi
gli zombie con una mazza
da baseball. Se ammazzare gli
zombie relativamente semplice
(a meno di non elevare il livello
di difficolt), orientarsi lo meno.
Ci siamo ritrovati spesso
a perlustrare il territorio alla
ricerca della strada giusta per
avanzare e perfino, a volte,
a ricorrere alle guide online per
velocizzare la cosa. Oltre alla
campagna principale, che si pu
affrontare online o a giocatore
singolo, con gli altri personaggi
controllati dal computer, ci sono
varie opzioni alternative online
che garantiscono un divertimento
sempre nuovo. Potrete
gareggiare a chi resiste
pi a lungo contro unorda
interminabile di nemici, oppure
sfidarvi a creare lo zombie
migliore o ancora utilizzare
la modalit Scavenge.
Il divertimento, come si dice,
assicurato. Pur essendo appena

uscito per Linux, il gioco stato


pubblicato per PC nel 2009.
Di conseguenza, pur richiedendo
una scheda grafica decente, non
ha certo bisogno dellultimissimo
modello (anzi, fra le schede
consigliate figurano modelli
risalenti al 2006). un peccato
che ci abbia messo tanto
a sbarcare su Linux; daltronde
positivo che Valve stia
mantenendo la sua promessa
di portare i titoli per Source
Engine nel mondo dei sistemi
operativi liberi. Anche noi utenti
di Linux, come chiunque altro,
adoriamo far fuori gli zombie! LXP

Giudizio
Left 4 dead 2
Produttore: Valve
Web: http://store.steampowered.
com/app/550/
Prezzo: 13,99

Giocabilit
Grafica
Longevit
Qualit/prezzo

9
8
9
8

Senza dubbio il miglior gioco


di caccia allo zombie attualmente
disponibile per Linux.

Il voto di
Linux Pro

In libreria Test

The Healthy Programmer


Linux Pro pensa che i programmatori non devono essere fuori forma per forza

e chiedete a qualcuno
di dirvi un lavoro
pericoloso, molto
probabile che vi risponda
qualcosa del tipo il pompiere,
il domatore di leoni oppure

lastronauta. La triste verit, per,


che anche i lavori alla scrivania
sono incredibilmente pericolosi.
Non in modi spettacolari le
chance di venire attaccati da
un animale carnivoro mentre fate
il debug di un po di codice PHP
sono ridotte ma
nellattuale mondo sempre
pi sedentario obesit,
diabete, RSI (Repetitive
Strain Injury) e altri pericoli
meno glamour ci minacciano
mentre programmiamo.
Sfortunatamente, diversamente
dal domatore di leoni citato
in precedenza, una sedia e una
frusta non sono sufficienti per
proteggerci da questi rischi.
In The Healthy Programmer,
Joe Kutner ci accompagna
in un viaggio che ci mostra quello
che serve per fare in modo che
corpo e mente funzionino al loro
pieno potenziale mentre

programmiamo. Non si tratta


di veloci fix, ma di piccoli
cambiamenti che si possono fare
alle abitudini lavorative ottenendo
grandi benefici, quindi nulla
di quanto detto nel libro difficile
da raggiungere. Lautore non
consiglia di percorrere 10
chilometri alla settimana fino
a quando non avete eliminato
i chili in eccesso. Piuttosto
si focalizza sulla consapevolezza
di ci che state facendo,
aiutandovi a fare dei passi verso
il miglioramento del vostro stato
e spingendovi fino a raggiungere
uno stile di vita che vi consenta
di continuare la vostra brillante
carriera. Questo libro tratta anche
tutti i possibili malanni fisici che
possono nascere passando
troppo tempo seduti in ufficio:
problemi di postura,
affaticamento degli occhi e dieta
sono sviscerati con una gran

quantit di dettagli cos come


i problemi legati alla mancanza
di attivit fisica. il momento
di abbandonare gli stereotipi
del passato sui geek
e di reinventare la nostra
comunit come perfetti esempi
di salute. La vostra aspettativa
di vita e la qualit del codice
ne trarranno beneficio. LXP

Giudizio
The Healthy Programmer
Autore: Joe Kutner
Editore: The Pragmatic Bookshelf
ISBN: 978-1-93778-531-4
Pagine 199
Prezzo: $36 (stampato), $24 (ebook)
Una guida completa per rimanere
in salute in un mondo ufficio-centrico.

Il voto di
Linux Pro

8.5

GIMP 2.8 for photographers


La redazione di LXP ha scoperto unottima guida per i principianti del fotoritocco

IMP, il programma per


la manipolazione delle
immagini (GNU Image
Manipulation
Program) una delle punte

di diamante dello sviluppo


Open Source. Eppure non
si tratta del pi semplice dei
software da usare (per essere
sinceri, nessun tool per
la modifica delle immagini
facile). Il volume recensito
non un manuale per
GIMP, quanto una guida
allelaborazione delle
immagini per i principianti
che vogliono usare
il nostro amato tool Open
Source. Lautore non guida
passo passo il lettore alla
scoperta delle funzioni
di GIMP. Klaus Goelker,
piuttosto, esamina uno alla
volta i vari compiti che un
fotografo potrebbe voler
portare a termine (ad esempio
la rimozione degli occhi rossi,
la correzione dei colori e
dellesposizione e la creazione
di immagini HDR) e mostra

al lettore come raggiungere gli


effetti desiderati tramite GIMP.
Per questo motivo, il volume
in esame adattissimo
ai principianti. GIMP 2.8 for
photographers piacevole
da leggere anche perch
stampato a colori su carta
di qualit, il che semplifica
la visione delle schermate che
aiutano a capire i vari passi.
Inoltre ad accompagnare
il libro c un DVD che
contiene i file dinstallazione
per GNU/Linux, Mac OS X
e Windows assieme a un set
dimmagini desempio che
si possono usare per iniziare
a lavorare. I pi fedeli allOpen
Source potrebbero storcere
il naso vedendo che le
schermate sono catturate sotto
Windows, ma il software
funziona allo stesso modo
con tutte le piattaforme.

Le uniche persone che


potrebbero non apprezzare
questo testo sono quelle che
non apprezzano la fotografia:
come si evince dal titolo
lautore si focalizzato sulla
manipolazione delle foto
e non su tutte le funzionalit
di GIMP. LXP

Giudizio
GIMP 2.8 for
photographers
Autore: Klaus Goelker
Editore: Rocky Nook
ISBN: 978-1-937538-26-2
Pagine 380
Prezzo: $39,95
Unottima introduzione al mondo
della manipolazione delle immagini
usando software Open Source.

Il voto di
Linux Pro

Linux pro 134

39

Roundup Office suites

Test Confronto

Ogni mese mettiamo a confronto prodotti


e programmi per farvi scegliere al meglio!

Distro anonime
Temete per la vostra privacy ogni volta che vi connettete? La redazione di
Linux Pro presenta cinque distro specializzate nel tenere al sicuro i vostri dati
personali e nellaffrontare una serie di problemi legati alla riservatezza

Modalit del test


Lanonimato e il rispetto della
privacy sono tematiche molto
importanti. In queste pagine
abbiamo quindi deciso di provare
cinque distribuzioni progettate per
proteggere la vostra riservatezza.
Il primo criterio che ci ha portato
a sceglierle, la semplicit di utilizzo
rivolta soprattutto ai principianti.
In giro per la Rete ci sono
distro simili a quelle provate,
ma molte rimangono ancorate
a versioni obsolete e non pi
aggiornate da diverso tempo.
Abbiamo poi scelto sistemi diversi,
in modo da darvi unidea generale
dellapproccio che ciascuna distro
utilizza per garantire la privacy.
Le prove sono state fatte sia
su macchine virtuali sia in modalit
Live, con un occhio attento al
comportamento dei sistemi durante
le connessioni via cavo e Wi-Fi.
In tutti i casi, gli obiettivi rimangono
la valutazione completa delle distro
e la capacit di offrire strumenti
preinstallati per la cura della privacy.

La nostra
selezione
IprediaOS
Libert
Privatix
Tails
Whonix

40

a privacy uno degli argomenti


da sempre pi discussi fin dagli
albori di Internet. Eppure, negli
ultimi tempi, largomento ha
registrato una vera e propria impennata
di interesse, molto probabilmente dovuta
ai recenti scandali che hanno coinvolto
il governo USA. Ora, nonostante
la maggior parte di voi non avr certo
segreti di stato da nascondere, il diritto
alla riservatezza fondamentale per

Linux pro 134

chiunque. Abbiamo quindi deciso


di dedicare il confronto di questo mese
a 5 distro specializzate nel mantenere
e garantire lanonimato in Rete.
Le virgolette sono dobbligo per un paio
di motivi: prima di tutto per nascondere
la propria identit online non bastano
certo un paio di software configurati
ad hoc, anche se la cosa non da
sottovalutare e aiuta moltissimo.
In secondo luogo, lanonimato dipende

in gran parte dallo stato della macchina


su cui operate. Se il vostro computer
pieno zeppo di trojan e keylogger,
avere una distro incentrata sul
rafforzamento della privacy online pu
far ben poca differenza. Ci auguriamo
quindi che la carrellata di distribuzioni
che vi presentiamo possa aiutarvi,
se non a garantire in assoluto
lanonimato, almeno a facilitarvi la vita
e farvi dormire sonni pi tranquilli.

Confronto Test

Limportanza
dellarchitettura

Whonix
allinterno
di VirtualBox
in Fedora: non
una, ma due
applicazioni virtuali
per occultarvi
al meglio sul Web

Cosa vi aspetta in ogni distro?

l primo aspetto su cui uno sviluppatore


Linux che si concentra sullanonimato
deve considerare, non la
configurazione delle applicazioni, bens
limitare al minimo indispensabile linterazione
tra il sistema e lhardware che lavora su
Internet. Anche se non sufficiente, lideale
sarebbe contare su una distro che si genera
e si distrugge ogni volta che si ha accesso
al Web. Questo garantirebbe che nessun
cookie o malware sopravviva e si propaghi
al prossimo utilizzo del sistema. Tutte le distro
provate, tranne una, utilizzano questo
approccio di default, infatti sono disponibili
come immagini binarie che si possono,
o dovrebbero, installare direttamente
su CD-ROM (meglio) o su chiavi USB.
Libert utilizza una catena di avvio basata
su Secure Boot e un kernel Gentoo
Hardened con tutte le patch di sicurezza
gi installate (http://grsecurity.net). La loro
funzione dare a ogni utente i privilegi
pi bassi in assoluto, tali comunque da

permetterne una corretta operativit.


Libert disponibile anche sotto forma
di applicazione virtualizzata (il file OVA sul
sito), pronta a essere caricata su VirtualBox.
IprediaOS, invece, progettato sulla base
di Fedora, in modo da utilizzare nativamente
le funzionalit I2P (www.i2p2.de),
una rete anonima P2P che fornisce
comunicazioni crittografate in modo simile
a Tor. Privatix e Tails, infine, sono due
spin-off di Debian. Entrambe hanno, come
anche Libert, unutility per la pulizia della
RAM a ogni spegnimento e una serie
di strumenti che rendono immediata
linstallazione su unit USB crittografate
di directory persistenti.

Doppia virtualizzazione
Whonix molto diversa. Si tratta di una
coppia di appliance virtuali basate su Debian,
che necessario scaricare ed eseguire
contemporaneamente su due macchine
virtuali. La prima ha funzioni di Gateway

e il suo unico compito filtrare


e reinstradare tutto il flusso di dati che
proviene dallaltra appliance mediante
le rete anonima Tor. La seconda, chiamata
Workstation, la piattaforma che avete
sottocchio e utilizzate. Configurata in modo
da massimizzare la privacy, progettata per
raggiungere Internet solo ed esclusivamente
attraverso il Gateway. Il risultato nelle
parole del suo sviluppatore: i leaks di IP
e DNS sono semplicemente impossibili.
Un malware in esecuzione sulla workstation
non potr mai tracciare la posizione
dellutente, perch non conosce lindirizzo IP
con cui si collega. Potete usare entrambi
i componenti di Whonix su macchine diverse,
oppure sfruttare il solo Gateway per isolare
altri sistemi operativi. Il rovescio della
medaglia che Whonix non una distro
che ha nella portabilit il suo maggior pregio.

Verdetto
IprediaOS
Libert
Privatix
Tails
Whonix

Sotto questo
profilo, difficile
stabilire quale sia
la migliore distro.
Sono tutte ottime.

Modalit duso
Identit multiple differenti e persistenza. Ecco cosa promettono

nellanonimato per qualsiasi attivit?


Sono tutte domande che bene porsi
quando si decide di usare una distro
che punta alla privacy, ma se a ognuno
di questi quesiti si pu rispondere
con varie casistiche e soluzioni, allultima
domanda il no categorico. Per
esempio, se volete iscrivervi a un
hotspot Wi-Fi
pubblico o a servizi
come Paypal
servendovi di Tor,
vi accorgerete
che il sistema vi
respinge e quindi
non riuscirete
a creare alcun
account. Whonix
non pu essere
utilizzato su un
Tails mette a disposizione le opzioni per creare e gestire
computer senza
le cartelle criptate persistenti nel menu Strumenti di sistema
VirtualBox, mentre

vete bisogno di diverse identit


digitali contemporaneamente?
Per esempio una per Twitter
e una per i pagamenti online? Avete
anche la necessit di mantenere
operativi molti file da una sessione
allaltra, magari su diversi computer?
Potete davvero avvolgervi

le altre distribuzioni sono progettate per


essere avviate da CD-ROM o unit USB
e ognuna consente di disabilitare Tor
senza alcuno sforzo. Tutte le distro,
eccetto Whonix, permettono di sfruttare
la persistenza, che trovate sottoforma
di cartelle criptate (~/persist in Libert)
solamente nel caso di installazione su
disco fisso o chiave USB. In alternativa,
ci sono utility per crittografare dischi
esterni. Whonix rende invece molto
pi semplice avere identit multiple
simultaneamente, piuttosto che
utilizzare la persistenza. Creando pi
workstation indipendenti allinterno di
VirtualBox che si servono del Gateway
di Whonix, dovreste riuscire nel vostro
intento senza alcun problema. Potete
ottenere lo stesso risultato con le ISO
delle altre distribuzioni, ma Whonix
vi permette di configurare i dettagli del
processo in modo molto pi semplice.

Verdetto
IprediaOS
Libert
Privatix
Tails
Whonix

Whonix il pi
difficile da usare
su unit esterne.
Ecco il perch di
questo punteggio.

Linux pro 134

41

Test Confronto

Interfaccia desktop
Potete rimanere anonimi e usare un desktop familiare basato su Linux?

e per voi lanonimato una questione


della massima importanza, ma non
avete la possibilit di perdere tempo
armeggiando con i codici sorgente, necessario
optare per un sistema GNU/Linux specializzato,
anzich le pi tradizionali distro a uso generale
come Ubuntu, Fedora, Mint o SUSE. Lattenzione

per la privacy, e pi in generale per la sicurezza,


significa che tutti questi sistemi devono
includere la minor quantit possibile di codice,
ma al contempo essere particolarmente stabili.
E, nel caso non laveste ancora capito, qui sta
il problema. Infatti, quasi certo che in questo
ambito il vostro ambiente Linux preferito non

sar disponibile. Almeno non nella sua ultima


e pi evoluta versione. Dovrete quindi
accontentarvi di interfacce grafiche pi spartane,
che richiederanno un minimo sforzo
di adattamento. Premesso questo, vediamo
quale, tra le distribuzioni prese in esame, offre
il miglior approccio grafico e funzionale.

IprediaOS
Progettato sulla base di Fedora, il desktop predefinito di IprediaOS basato
su GNOME/Unity (come potete vedere dallo screen a destra). Oltre allinglese,
il sistema disponibile in francese, tedesco, spagnolo, svedese e russo.
Se non riuscite a digerire lambiente predefinito, ma volete tornare
al tradizionale look dei primi computer, non ci sono problemi. Potete scaricare
la versione basata su LXDE. Il menu di avvio ha una serie di voci che
si riferiscono al Safe Mode e ai test della memoria. Gli strumenti ORCA
e la tastiera virtuale sono poi abbastanza funzionali e supportano laccesso
facilitato. IprediaOS, prima di collegarsi a Internet, pu impiegare qualche
minuto. A noi non successo, ma non escluso che si sviluppino ritardi
anche pi lunghi. La causa dovuta al router I2P interno che, nel caso non
trovi altri peer I2P pronti a inoltrare i pacchetti, non si connette alla Rete.

Libert Linux
Sulla homepage di Libert Linux campeggia la dicitura secondo cui si assume
la volont e la capacit di studiare il funzionamento dei sistemi operativi non
mainstream e software. Non lasciatevi spaventare da questa definizione, perch
in realt un concetto che vale per tutte le distro di questo confronto e non c
bisogno di essere hacker per utilizzarle. Oltretutto non abbiamo trovato alcuna
difficolt a utilizzare Libert, che si rivela pure la distro pi semplice. Il gestore
di finestre OpenObox, che nonostante a prima vista incuta timore, davvero facile
e veloce da usare. Se avete bisogno di eseguire Libert su hardware datato, potete
avviare linterfaccia grafica in modalit VESA. Il browser Web predefinito, con Figaro
Password Manager e Claws Email, Epiphany con HTML5. La tastiera virtuale
Florence, infine, protegge le password da qualsiasi keylogger.

Multimedia e hardware
Guardate i video online in totale anonimato. No, aspettate...

iamo sicuri che quanto stiamo


per scrivere non far piacere
a nessuno. Onestamente non
neppure colpa delle distro provate, ma si
tratta di conseguenze dovute ai rigidi vincoli
cui debbono sottostare per mantenere alto
il livello di riservatezza. In tutti i nostri test,
le schede audio e video sono state
riconosciute senza problemi. La
riproduzione dei file in locale ha funzionato
benissimo ogni volta che i codec necessari
erano gi installati. Purtroppo, per,

42

Linux pro 134

abbiamo scoperto che le possibilit


di riprodurre file audio e video si riducono
sensibilmente rispetto alle distro tradizionali.
I browser supportano tutti HTML5, ma non
Flash. E a meno di non usare Epiphany
in Libert che non compatibile con il plugin di Adobe, in tutte le altre distro dovrete
installarlo manualmente. Ricordate per che
Flash non il massimo in fatto di tutela della
privacy, quindi mettete comunque a rischio
buona parte del vostro anonimato. Ma ecco
la notizia peggiore: dimenticatevi di collegare

al volo una chiavetta USB pronta per


la connessione a Internet o di utilizzare
la maggior parte dei chipset Wi-Fi. In pratica,
cos come per i codec, o il supporto nativo
allinterno della distro, oppure se non stato
aggiornato e non lo trovate, nel caso pi
fortunato potreste riuscire nellintento di farlo
funzionare dopo una lunghissima e laboriosa
configurazione. Lunica eccezione Whonix
che, operando allinterno di VirtualBox,
non ha nessun interesse a sapere come
la macchina host accede a Internet..

Verdetto
IprediaOS
Libert
Privatix
Tails
Whonix

Per ogni distro,


aspettate
di trovarvi faccia
a faccia con
problemi nel
riprodurre file
audio e video.

Confronto Test
Privatix
Essendo basata su Debian 6, Privatix sfoggia un tradizionale desktop GNOME
con IceWeasel come browser predefinito. Alcuni potrebbero trovare il layout
semplice e pulito del desktop un po datato, ma ci piace il fatto che per
i principianti possa essere un ottimo ambiente in cui trovare dei validi punti
di riferimento. Lo stesso vale per il menu Application che contiene solo sei
voci: Accessories, Graphics, Internet, Office, Sound & Video e System
Tools. Un altro aspetto apprezzabile di Privatix la possibilit di fare
affidamento su alcuni richiami alle pratiche di buon uso pi comuni. Un esempio
il motore di ricerca. Lanciando IceWeasel, anzich trovare il tradizionale
Google come predefinito, si apre la pagina di Ixquick (https://ixquick.com)
che non per nulla viene definito il motore di ricerca pi privato del mondo.

Tails
Tails lacronimo di The Amnesic Incognito Live System. Dopo aver
parlato di Privatix, davvero difficile dire qualcosa di nuovo rispetto
a Tails. Intendiamoci, non perch sia una cattiva distribuzione, anzi. Tutto
il contrario. solo che, essendo totalmente basata su Debian 6, ha un
ambiente desktop quasi identico a quello di Privatix, ed quindi difficile
trovare elementi particolarmente diversi su cui puntare i riflettori.
Andando un po pi in profondit, per, qualche differenza la si trova.
Per cominciare, Tails lunico sistema provato in cui possibile impostare
senza problemi una tastiera che non sia inglese. Sul fronte delle
prestazioni, inoltre, riuscito a registrare i minori tempi di avvio
(le opzioni di boot sono solo Tails e Tailsafe). Come per Libert, potete
contare su una tastiera virtuale subito pronta e grazie al supporto a ORCA,
Tails si dimostra perfetto anche per chi ha problemi alla vista.

Whonix
Whonix, come abbiamo visto, lunica distro a potersi fregiare di
unarchitettura a doppia macchina virtuale. Ma non solo questo a renderla
unica. Anzich servirsi di qualche variante GNOME o di interfacce pi semplici,
come LXDE o OpenBox, Whonix sfrutta un look scialbo, ma ricco, di KDE.
La parte sinistra dellinterfaccia piena di icone, talmente tante da risultare
anche troppe. In ogni caso, anche se visivamente pi pesante, lapproccio
grafico di Whonix pu aiutare gli utenti alle prime armi a trovarsi a proprio
agio. Naturalmente e prima di tutto, ricordatevi di avviare il Gateway
di Whonix, altrimenti non sarete in grado di andare molto oltre la finestra
di avvio. Ogni tanto rammentate di selezionare il la voce Applications D
System D Whonix Check, che trovate nel menu di sistema. Cos facendo,
avrete un report completo sullo stato di Whonix.

Ufficio e grafica

Verdetto
IprediaOS

Cosa? Nessuno slideshow?

erto, lo scopo principale di una


distro anonima garantirvi
il massimo riservo quando navigate
in Rete. Tuttavia non potrete sempre
limitarvi a questo, in qualche modo dovrete
pur interfacciarvi con tutta unaltra serie
di attivit. Il caso pi simbolico, e anche
quello pi frequente, riguarda la ricezione
di documenti grafici o testuali. Da questo
punto di vista le migliori distro sono Tails
e Privatix, in quanto entrambe mettono
a disposizione OpenOffice 3, GIMP

e Inkscape. Tails, inoltre, include anche


Scribus, un software di publishing. Libert
(almeno di default) e Whonix hanno
unofferta pi carente. Il menu Office
di Libert riporta solo AbiWord, Gnumeric,
Evince per i file PDF e FBReader per
gli ebook. Slideshow? No, dovete farne
a meno. Whonix riesce a fare anche peggio,
visto che nel proprio menu elenca solo
il lettore PDF Okular. IprediaOS? Beh, con
Evince potete leggere i PDF, ma tutto
quello che troverete nella distro. Dallaltra

Libert
parte, IprediaOS e Whonix permettono
di implementare software aggiuntivo
sfruttando la stessa interfaccia di Ubuntu,
Fedora e molte altre distribuzioni Linux.
Questo almeno in teoria, perch in pratica,
quando abbiamo provato a usare Synapitc
di Whonix, siamo riusciti a trovare solo una
vecchia versione di LibreOffice (1.3.5.4).
Mentre con Gnome Package Manager
di IprediaOPS, non siamo riusciti a scovare
neppure una suite da ufficio nei vari
repository preconfigurati.

Privatix
Tails
Whonix

Tails e Privatix
sono le migliori
e hanno tutto ci
che vi serve per
cimentarvi con
i lavori da ufficio
e la grafica.

Linux pro 134

43

Test Confronto

Privacy e anonimato
Internet molto pi dei semplici siti Web

avigazione e Web non sono


tutto e infatti ogni distro
provata ben fornita sia nella
gestione delle email, sia sul fronte
della messaggistica istantanea.
Una sola precisazione: alcune delle
soluzioni pi sicure permettono
di comunicare allesterno
dellambiente protetto solo con
utenti che usano la stessa distro.
Ma iniziamo ad analizzare il comparto
email. Tutti i sistemi includono client
di posta elettronica standard per Linux
con i relativi plug-in. Whonix,
ad esempio, mette a disposizione
Thunderbird con linterfaccia TorBirdy
per Tor. Privatix include sia Evolution
sia IceDove, con abilitazione
predefinita per luso della firma
digitale e dei messaggi crittografati.
Tails segue a ruota con la stessa
dotazione fornita per da Claws.
Chi invece usa Libert, ha
unalternativa interessante: Claws con
il sistema Cables Communications
(https://github.com/mkdesu/cables/
wiki), un protocollo serverless che
instrada i messaggi direttamente
a Tor o ai nodi I2P. Unidentit Cables
costituita da un hostname
particolarmente criptico e, dopo

averne creato uno, potrete scambiare


email anonime con chiunque usi Cables
mediante un indirizzo anonimo in stile
nomeutente@hostname. La trasmissione
molto pi lenta rispetto a un
tradizionale servizio di posta elettronica
(ci vogliono circa 2 giorni per
consegnare il messaggio), ma in
compenso si ottiene una ricevuta
di consegna, lirripudiabilit del
contenuto e un inoltro perfettamente
segreto. Oltre a Evolution, IprediaOS ha
uninterfaccia per Susimail, un servizio
di posta elettronica che instrada
i messaggi attraverso la rete I2P.
Tutte le distribuzioni includono poi un
supporto per il filesharing anonimo,
normalmente via BitTorrent. Sul fronte
della messaggistica istantanea, Libert
e Tails hanno Pidgin con OTR (Off The
Record, www.cypherpunks.ca / OTR),
un plug-in che fornisce le funzioni di
autenticazione, crittografia e deniability.
Libert dispone anche di XChat, che
ritrovate anche in IpredaOS e Whonix
come client di messaggistica istantanea
predefinito. Privatix, infine, ha Pidgin
ed Empathy. Un altro servizio utilissimo,
presente in tutte le distro provate, la
gestione unificata delle password o delle
chiavi di crittografia, che avviene con

Se avete bisogno di un servizio di posta sicuro basato su FOSS,


con la possibilit di inviare messaggi pseudo anonimi, usate Calbes
in Libert o Susimail in IprediaOS

strumenti come Figaro o GNU Privacy


Assistant. Curiosamente, mentre tutte
le distro permettono di creare
facilmente filesystem cifrati, non c
nessun richiamo esplicito al supporto
integrato per la steganografia.
Le applicazioni e le funzioni che
vi consentono di migliorare lanonimato
in Rete non finiscono qui. In IprediaOS,
per esempio, tutti i servizi della rete I2P
sono accessibili attraverso una semplice
console Web. Tails, invece, sfrutta
Metadata Anonymisation Toolkit (https://
mat.boum.org), che consente di
eliminare i metadati sensibili nascosti nei
file, come le coordinate geografiche o la
cronologia delle modifiche nei documenti.

Verdetto
IprediaOS
Libert
Privatix
Tails
Whonix

IprediaOS
e Libert hanno
il punteggio pi
alto per merito
delle tante
risorse disponibili.

Documentazione
Potete contare su manuali e tutorial?

na buona documentazione, magari


condita con una serie di tutorial,
sempre un valore aggiunto
quando si decide di usare un certo tipo
di software. Le distro anonime non fanno
eccezione, visto che, senza unopportuna
manualistica, chi non ha familiarit con
il mondo Linux potrebbe andare incontro
a cocenti frustrazioni. Da questo punto
di vista IprediaOS non il massimo:
abbiamo trovato un solo tutorial video
che spieghi come avviare il sistema
in VirtualBox. Bisogna comunque dire
che questa penuria di materiale viene in
gran parte colmata da una serie di ottime
risorse, ognuna delle quali fa riferimento
a forum di discussione e a istruzioni inerenti

44

Linux pro 134

luso della console Web I2P. Anche la


documentazione di Privatix assai scarsa
e solo in inglese. Oltretutto le FAQ complete
e il manuale sono solo in tedesco. Libert,
Tails e Whonix, invece, mettono
a disposizione unottima documentazione
sulle proprie pagine Web, in cui potete
trovare parecchie istruzioni utili. Accettate
per un consiglio: dopo aver letto questo
articolo, se volete usare una delle distro
messe a confronto, ritagliatevi un po
di tempo per studiare attentamente
il funzionamento del sistema scelto,
approfondendone le potenzialit tramite
tutorial, FAQ e documentazione varia.
Cos facendo, riuscirete a capire con
precisione le potenzialit e i limiti generali

Verdetto
Su www.ipredia.org, c il tutorial
per installare la distro su VirtualBox

dellanonimato online. Whonix, per esempio,


allindirizzo http://sourceforge.net/p/
whonix/wiki/DoNot, mette a disposizione
una lista di cose da non fare se non
si vogliono vanificare tutti gli sforzi compiuti
per mantenere lanonimato in Rete.
Sul sito ufficiale di Tails, infine, vi consigliamo
di leggere almeno larticolo su come
eliminare in modo sicuro i file e ripulire
a fondo il disco fisso.

IprediaOS
Libert
Privatix
Tails
Whonix

Libert, cos
come Whonix,
ha la migliore
e pi vasta serie
di istruzioni.

Confronto Test
Distro anonime

Il verdetto
P

rima di capire davvero qual


la migliore distribuzione anonima
che fa per voi, dovrete provarla
a fondo. Solo cos sarete in grado
di capire se si adatta davvero alle vostre
esigenze. Ecco perch il nostro giudizio,
in fin dei conti, pu essere anche
soggettivo. In questo confronto, infatti,
vale molto la sensazione a pelle che
provate quando vi mettete davanti
al computer e iniziate a usare una delle
distro che abbiamo confrontato.
Il sistema migliore per voi, ad esempio,
potrebbe essere quello che permette
di utilizzare il chipset Wi-Fi del vostro
portatile, senza per questo passare ore
a ricompilare il codice. Detto questo,
abbiamo cercato di puntare soprattutto
sul miglior compromesso tra semplicit
duso e capacit di garantire
lanonimato. Ecco quindi che IprediaOS
perfetto se preferite I2P a TOR
o se avete bisogno di Susimail. Whonix,
invece, formidabile per creare identit

multiple simultaneamente ed anche


lunico modo per fornire garanzie
di anonimato a parenti e amici che,
per qualche motivo, continuano a usare
Windows per navigare in Rete.
Nonostante questo, per, Whonix non
fatto per funzionare su unit portatili.
Se poi avessimo la possibilit di lanciarlo
con un solo click anche su macchine
Windows o su altre distro Linux, sarebbe
ancora meglio. Tornando al nostro
verdetto, abbiamo infine deciso
di mettere al primo posto Tails, che si
dimostra unottima distro anche per chi
alle prime armi. Il verdetto sarebbe
stato maggiormente discusso se
Privatix avesse fornito una
documentazione pi vasta in inglese,
anzich in altre lingue meno note.
In definitiva, i principali vantaggi di Tails
stanno nella possibilit di installarla
su una chiave USB e nella completezza
del proprio desktop. Il menu di sistema,
inoltre, contiene un numero sufficiente

Tails

Web: https://tails.boum.org Licenza: GPL Versione: 0.20.1

Il miglior compromesso tra semplicit di utilizzo e sicurezza.

Web: www.mandalka.name/privatix Licenza: GPL Versione: 11.04.11_en

Altrettanto valido come Tails, ma con meno applicazioni e documentazione.

Ci sono un
sacco di opzioni
disponibili per
installare Tails
su una chiave
USB da avviare
in modalit Live

IprediaOS

Web: http://dee.su/liberte Licenza: GPL Versione: 1-i686

Se Tor non basta, la migliore da usare. Per ha meno applicazioni di Tails.

Privatix

di applicazioni per far fronte a qualsiasi


necessit. Un aspetto che non va mai
sottovalutato quando avete a che fare
con una distribuzione di qualsiasi tipo.
La documentazione, pur non completa
e interessante come quella di Whonix,
pi che sufficiente anche per
i principianti. Basta solo aver voglia
di perdere un po di tempo nel leggerla
ed eventualmente cercare ulteriori
spunti sparsi per la Rete.

Whonix

Web: http://sourceforge.net/p/whonix/ Licenza: GPL Versione: 0.5.6

Ha unarchitettura interessante, ma la portabilit non il suo forte..

A voi la parola...

Libert Linux

Web: http://dee.su/liberte Licenza: GPL Versione: 2012.3

Progettato molto bene, ma non la soluzione ideale per i principianti.

Non siete daccordo con le nostre scelte? Forse avreste usato distro diverse?
Inviate le vostre opinioni su questo Confronto a: redazione@linuxpro.it

Considerate anche...
La struttura di una recensione cambia molto
in base al tipo di applicativo che si prova.
Pu sembrare unaffermazione banale e scontata,
ma non lo , soprattutto quando si ha a che fare
con distro come queste. Nel nostro caso, infatti,
abbiamo sentito la necessit di trasmettervi

quanto largomento privacy sia importante nella


vita quotidiana e ancor pi se passate la maggior
parte del tempo su Internet per lavoro
o divertimento. Vogliamo quindi darvi un ultimo
consiglio: prendete spunto dalle configurazioni
che questi sistemi adottano per i propri browser

e ritagliatevi un po di tempo per studiarle.


Applicatele poi alle vostre distribuzioni Linux,
in modo da abituarvi a usarle giorno dopo giorno.
Sicuramente non passer molto tempo prima
che possiate apprezzare i benefici di una
maggiore privacy e riservatezza. LXP
Linux pro 134

45

i migliori nuovi programmi


open Source del pianeta

Da non perdere
Data Crow Antivirus Live CD BillReminder
Tomb Fish OpenBVE SpaceZero

Darkhttpd

Notepas

Gestore cataloghi multimediali

Data Crow
Versione: 3.10.1 Web: www.datacrow.net

ilm, musica, giochi, immagini, libri


e chi pi ne ha pi ne metta. Avrete
sicuramente una quantit sempre
crescente di file multimediali, il pi delle volte
sparsi nei meandri dei vostri dischi fissi.
Mettere ordine e organizzare il tutto pu
essere unoperazione noiosa, soprattutto
perch richiede una certa dose di tempo.
Certo, per creare un catalogo sufficiente
mettere mano a un semplice foglio di calcolo,
ma non sarebbe meglio poter usare
unapplicazione appositamente studiata?
Ecco, Data Crow proprio questo:
un utilissimo software per lorganizzazione
dei file multimediali. Scritto in Java, non ha
bisogno di alcuna dipendenza e si installa

in un batter docchio. Basta scaricare il file


Zip dal sito ufficiale e avere Java nel pC,
quindi premere con il tasto destro su
installer.jar e accedere al pannello
Propriet. Da qui recatevi in Permessi
e mettete il segno di spunta sulla voce
Consentire lesecuzione del file come
programma. infine selezionate di nuovo
installer.jar con il tasto destro del mouse
e scegliete la voce Esegui con Java 7

Data Crow integra anche un server Web sulla porta 8080


per accedere allarchivio direttamente da Internet

Data Crow in grado


di fare ricerche online
per aggiungere info ai file

Linterfaccia di Data Crow


Moduli
Da qui potete scegliere i tipi
di file da organizzare o a cui
aggiungere informazioni

Controlli
utilizzando questi pulsanti,
agite sui singoli file salvandoli,
eliminandoli e cos via

Copertine
in questa parte dellinterfaccia,
trovate le copertine dei brani
o degli album

46

Linux pro 134

Dettagli

Etichetta

per ogni elemento multimediale


selezionato vengono riepilogate
tantissime informazioni

Selezionando questa scheda, potete


vedere la copertina dellalbum
a dimensioni naturali

Runtime. Dopo linstallazione di pochi


secondi, il programma si avvia chiedendovi
quale modalit volete usare: principiante
o esperto. Visto che la seconda sembra
particolarmente complessa e a tratti
dispersiva, meglio optare per la prima.
Grazie alla procedura guidata siete in grado
di iniziare fin da subito a organizzare i vostri
file multimediali. Data Crow in grado di
ordinare album musicali, CD audio, contenitori,
film, immagini, libri, media e software. un vero
e proprio tuttofare. La caratteristica che
pi impressiona la capacit di compiere
ricerche online per aggiungere informazioni
e immagini ai vostri file. per fare un esempio,
nel modulo CD Audio selezionate la
bacchetta magica e scrivete Stevie ray
Vaughan nella funzione Cerca per, lasciando
invariata la voce Keyword. Dopo aver
premuto Trova, avrete a disposizione una
impressionante quantit di informazioni sui
molteplici album del famoso chitarrista. Basta
poi selezionare quella di vostro interesse,
per approfondire ancora di pi largomento.
ovviamente potete fare lo stesso con i CD
musicali, i film e tutti gli altri file multimediali.
il programma, come detto, ha caratteristiche
anche troppo avanzate e talvolta facile
perdersi tra le tante funzioni. un aspetto
che comunque non mancher di fare felici
i maniaci dellordine.

Da non perdere Test


Micro distro antivirus

Antivirus Live CD
Versione: 6.1 Web: http://antiviruslivecd.4mlinux.com

utti voi sapete che Linux non


soffre certo per le infezioni virali
diversamente da altri sistemi
operativi. Tuttavia pu essere una
soluzione quanto mai pratica per ripulire
Windows dai malware che lo affliggono.
Questa ISO basata su 4MLinux una
mini distro che si ripropone proprio
questo obiettivo. Grazie al motore
di scansione di ClamAV, uno dei pi
potenti e affidabili antivirus Open
Source, capace di fare piazza pulita
di virus e affini al primo rilevamento.
Antivirus Live CD pu essere usata su
qualsiasi filesystem, quindi va benissimo
su Windows, Mac e ovviamente Linux.
Infatti supporta i soliti FAT e NTFS,
ma anche brfs, HFS+, ext2, ext3, ext4
e molti altri. Limmagine pesa solo 16 MB
e potete masterizzarla senza problemi
su qualsiasi supporto. Si avvia in un
istante e basta inserire la password

di root per eseguire laccesso. AVLCD


non ha una propria GUI, pertanto
dovrete accontentarvi di uninterfaccia
grafica spartana. A parte questo, in
grado di collegarsi alla rete sfruttando
una connessione Ethernet, Wi-Fi
o dial-up. Ed proprio grazie a questa
semplicit nel collegamento al Web
che la procedura di aggiornamento
dellantivirus risulta pratica e immediata.
Una volta lanciata la scansione, ClamAV
fa immediatamente il proprio dovere.
Se rileva file infetti, vi chiede cosa volete
farne: potete metterli in quarantena
o eliminarli direttamente. Insieme
allantivirus, in questa mini distro sono

Avete bisogno di un file manager mentre cercate un virus?


Lanciate Midnight Commander digitando mc

Questa ISO sfrutta


il potente motore
antivirus di ClamAV

inclusi una serie di programmi extra,


come il file manager Midnight
Commander, pi una serie di
collegamenti a diversi browser Web.
Tuttavia si tratta di applicazioni
accessorie, perch la ISO quasi
totalmente basata sullattivit antivirus.
In definitiva si tratta di una soluzione
semplice, veloce e senza tanti fronzoli,
da usare in tutte le circostanze dove
si ha il sospetto che la macchina in cui
operate sia stata colpita da un virus.

Gestione delle finanze

BillReminder
Versione: 0.4.0 Web: http://bit.ly/13Ui5je

inux non ha certo carenza


di applicazioni dedicate
alla gestione delle finanze. Nomi
del calibro di GnuCash o HomeBank
sono esempi pi che significativi,
ma troppo complessi se cercate
un software semplice e veloce da usare
quotidianamente. La maggior parte
delle persone, infatti, non ha alcuna
necessit di tracciare meticolosamente
ogni singolo movimento in entrata
o uscita nel proprio budget personale.
invece molto pi comune il bisogno
di unapplicazione che tenga traccia
delle bollette e vi ricordi quando pagarle.
Se state cercando qualcosa di simile,
BillReminder proprio quello che fa
al caso vostro, dato che si concentra
esclusivamente su questo aspetto
delleconomia domestica. scritto
in Python, sfrutta GTK per linterfaccia
grafica e lambiente di lavoro suddiviso

in tre sezioni principali. La parte


superiore occupata da un calendario
che riporta le bollette da pagare
e in cui potete spostarvi a destra
o sinistra tramite le frecce. Sotto
il calendario trovate lelenco delle
forniture, mentre in basso c un
richiamo al totale dei pagamenti per
le diverse categorie. Per impostazione
predefinita, BillReminder non mostra
alcuna barra degli strumenti, quindi
dovete andare nel menu Visualizza
e selezionare la voce Mostra barra
degli strumenti. Per creare un nuova
voce, selezionate Nuovo e inserite
il beneficiario a cui pagare la bolletta.
In alternativa potete navigare nella
rubrica che si riempir non appena
inizierete a usare il programma
e a riportare le vostre utenze
domestiche. Se nessuna delle categorie
che identificano gli estremi delle bollette

Se volete trasferire altrove i dati inseriti in BillReminder,


li trovate nel database presente in ~/.local/share/billreminder/

si adatta alle vostre necessit, niente


vi impedisce di crearne una
personalizzata. I pagamenti si regolano
mensilmente o settimanalmente
e, se dovesse servirvi, potete inserire
una nota per ciascuna voce. In fin dei
conti BillReminder unapplicazione
leggera e ben scritta, che si concentra
su una sola attivit, ma in compenso
la svolge davvero egregiamente.
Linux pro 134

47

Test Da non perdere


Server Web

Darkhttpd
Versione: 1.9 Web: http://unix4lyfe.org/darkhttpd

i sono moltissimi modi per


trasferire file via Internet: la posta
elettronica, applicazioni IM, IRC
(via DCC), Dropbox, i vari Social Network
e molto altro ancora. Eppure, a volte,
lapproccio pi semplice proprio
quello che non viene quasi mai preso
in considerazione: lanciare un server
Web e rendere noto il link del
documento da scaricare. Oltre a non
dover affidare i vostri file a qualsivoglia
servizio esterno, tale soluzione permette
di non usare alcun software e funziona
anche se avete un firewall (deve per
essere ben configurato). Il server Web
per eccellenza sicuramente Apache,
ma troppo complesso per essere
utilizzato con soddisfazione per le attivit
pi semplici. Dopo varie ricerche
e prove, abbiamo scoperto che il modo
pi veloce per usare un server Web
sfruttare Darkhttpd. talmente
piccolo da essere scritto in appena

2.500 righe di C, che danno origine


a un file binario di soli 34 KB. Eppure,
nonostante le dimensioni davvero
ridotte, Darkhttp riesce a contenere
uneccezionale set di funzioni basilari.
Innanzitutto si pu accedere al server
dalla tradizionale porta 8080, ma niente
vieta di modificarla a vostro piacere
con il comando -port. poi in grado
di generare una lista di directory
e supporta una serie di contenuti come
lo streaming musicale e la ripresa
del download nel caso il collegamento
venga perso. Da non dimenticare
la possibilit di disabilitare le connessioni
Keep-Alive e saltare in una directory
chroot per incrementare la sicurezza.

Anche se i file di registro non sono in formato comune,


rimangono pur sempre abbastanza facili da analizzare

Darkhttpd perfetto
quando avete bisogno
di un server Web al volo

Darkhttpd comunque progettato per


gestire contenuti statici e non supporta
alcuna istruzione dinamica. Per questo
ci sono altri tipi di server Web, che
comunque non possono fregiarsi della
stessa versatilit di questo minuscolo
gioiellino. Proprio grazie alle sue
ridottissime dimensioni e alla scarsissima
necessit di dipendenze (basta la libreria
C standard), Darkhttpd pu essere utile
ovunque ed perfetto quando si ha
bisogno di un server Web al volo.

Editor testuale per programmatori

Notepas
Versione: 20130521 Web: http://bit.ly/11fxBEF

el panorama sconfinato
di Internet, esiste una quantit
impressionante di editor
di testo, tanto che raro trovare
un programma capace di apportare
qualche vera novit. Eppure,
imbattendoci in Notepas, abbiamo
trovato unapplicazione particolarmente
interessante. Questo editor testuale,
utilissimo per chiunque voglia
cimentarsi nella programmazione,
scritto in Lazarus, un ambiente di
programmazione in Pascal che ricorda
molto da vicino Delphi di Borland.
C da dire che Notepas, a differenza
di molti software simili, richiede
uninstallazione un po laboriosa. Per
prima cosa dovete rendere eseguibile
il file binario con chmod+x Notepas
e quando lo eseguite con il comando
./ Notepas, potreste imbattervi in un
errore relativo alla mancanza del file

48

Linux pro 134

libQt4Pas.so.5. Se usate Ubuntu,


potete recuperarlo tramite il pacchetto
libqt4pas5, ma non scontato
che riusciate a trovarlo anche per altre
distribuzioni. In tal caso dovrete
installare Lazarus. Notepas include
tutte le caratteristiche di un editor
standard: evidenziazione della sintassi,
ricerca e sostituzione del codice,
la capacit di eseguire operazioni
sulle parti selezionate trasformandole
in commenti o rimuovendo i tag
di markup. Insomma, tutto quello
che ci si aspetta da un programma
di questo genere. Tuttavia per

Il pannello di configurazione di Notepas, pur essendo piuttosto


inusuale, comprensibile. Ricorda about:config di Firefox

Notepas scritto
in Lazarus, e funziona
su pi piattaforme

le sue caratteristiche esclusive che


lo abbiamo scelto, tra cui la modalit
per la formattazione avanzata
(interruzioni di linea, allineamento
e cos via) secondo le vostre preferenze
e unopzione che permette di filtrare
il codice inserendo la stringa
da ricercare, in modo da restringere
la visualizzazione della finestra
a quella sola parte di testo. Pur
avendo gi visto cose simili, anche
se non uguali, Notepas si dimostra
un buon editor, capace di soddisfare
anche i programmatori pi esigenti.

Da non perdere Test


Utility per la crittografia

Tomb
Versione: 1.3 Web: www.dyne.org/software/tomb

olte distribuzioni integrano gi


svariati strumenti per la crittografia.
Una soluzione utilissima quando
state usando un dispositivo mobile e siete
preoccupati che i vostri dati possano finire
nella mani sbagliate. Tuttavia ci sono alcune
limitazioni, come limpossibilit di spostare
facilmente le directory criptate. Con un
programma come Tomb, invece, lapproccio
cambia. Questa applicazione, grazie alla
creazione di appositi contenitori cifrati
in cui inserire i vostri file, permette di spostare
dovunque intere cartelle. Il programma in s
consiste in un piccolo script di shell, scritto
per per Zsh (Z Shell), in modo da
funzionare dovunque lo eseguite. Insieme a
Zsh, dovete per installare anche
Cryptsetup e Pinentry come dipendenze.
A questo punto potete lanciare Tomb
da dove si trova, oppure copiare lo script
allinterno di /usr/bin. Seguendo la filosofia
funerea del nome, il programma permette

appunto di eseguire alcune funzioni che


prendono il nome di dig, bury ed exhume,
ovvero scavare, seppellire e rieseumare, che
ben descrivono le operazioni di cifratura.
Per iniziare creando un contenitore
per i vostri dati, scrivete il comando:
tomb dig MyTomb -s 100
In questo modo generate un contenitore
da 100 MB nominato MyTomb (se
compaiono dei warning circa il file di swap
attivato, aggiungete -f a tutti i comandi
successivi). Ora create il vostro file chiave,
che vi consentir di cifrare e decifrare
il contenitore:
tomb forge MyTomb.tomb.key
qui che dovrete scegliere una password

Mentre Tomb un programma a riga di comando, trovate


un front-end basato su PyQt nella directory extras/

Con Tomb potete


portare in giro i vostri file
in tutta sicurezza

per bloccare laccesso a MyTomb:


tomb lock MyTomb.tomb MyTomb.tomb.key
Per accedere al contenitore, invece, usate:
tomb open MyTomb.tomb
Vi verr chiesto di inserire la password e il
testo vi mostrer dove trovare il contenitore
(di solito nella directory /media/). A questo
punto potete copiare i vostri file allinterno
e chiudere il tutto con tomb close. A parte
la configurazione iniziale, Tomb rappresenta
un modo semplice e veloce per portare file
in giro mantenendoli in sicurezza.

Shell per principianti

Fish
Versione: 2.0 Web: www.fishshell.com

ettere le mani su una shell


allultimo grido senza dubbio
unesperienza che lascia il segno,
ma se preferite evitare emozioni forti e
usarne una pi amichevole, Fish senza
dubbio la scelta migliore. Linstallazione
un gioco da ragazzi, visto che il
programma viene fornito in un solo
pacchetto con dipendenze minime.
Gli sviluppatori, inoltre, hanno messo
a disposizione Fish per un sacco di distro:
Ubuntu, Fedora, OpenSUSE e molte altre
ancora. Una volta lanciata, non aspettatevi
di rimanere a bocca aperta. Come
preannunciato, si tratta di una shell molto
semplice, adatta soprattutto ai principianti
che vogliono fare un po di pratica. Tuttavia
basta cominciare a utilizzarla, per rimanere
piacevolmente soddisfatti. Luso dei colori
rappresenta un modo semplice e intuitivo
per capire se i comandi che state inserendo
sono corretti o meno. Se si illuminano

di verde, va tutto bene, se invece si colorano


di rosso, significa che avete commesso
un errore e non esistono. Molto spesso
vi verranno proposti suggerimenti utili alla
compilazione, e se premete il tasto Tab
troverete una vasta schiera di scelte
disponibili, ordinate in una comoda e pratica
lista colorata. Fish sottolinea poi i nomi
dei file e i percorsi validi, inoltre vi aiuter
con le opzioni per i programmi. Se per
esempio scrivete ls e premete Tab, ecco
che compaiono le possibili opzioni duso
di questo comando. Tutte queste
caratteristiche messe insieme contribuiscono
a rendere linterfaccia a riga di comando

Come vedete, se provate a scrivere sud (starebbe per sudo),


Fish lo evidenzia di rosso per farvi capire che sbagliato

Fish usa i colori per


definire la correttezza
dei comandi immessi

molto pi usabile. I pi esperti potrebbero


considerare luso dei colori poco pi di un
orpello estetico, ma vedrete che una volta
abituati sar difficile tornare indietro. Al di
fuori delle caratteristiche per principianti,
Fish offre tutto quello che ci si aspetta
da una Shell Unix: variabili dambiente, pipe,
ridirezionamento, sostituzione dei comandi,
loop e funzioni definite dallutente. Mette poi
a disposizione una documentazione
formidabile, che potete leggere inserendo
il comando help nella shell. Su www.
fishshell.com/tutorial.html trovate anche
un sacco di guide di riferimento.
Linux pro 134

49

Test Da non perdere


Giochi Applicazioni per il tempo libero
Simulazione ferroviaria

OpenBVE
Versione: 1.4.0.9 Web: http://bit.ly/10bKZhOly./4U6iLh

hi ha la passione per i treni,


si sar imbattuto quasi
sicuramente in questo
simulatore ferroviario. Nato per
Windows con il nome di BVE,
OpenBVE la versione per Linux,
basata su Mono. Chi adotta Ubuntu
lo trova nel Software Center, mentre
chi usa altre distro probabilmente
dovr estrarre il suo tarball compresso
con 7-zip ed eseguirlo con mono
OpenVbe.exe. Una volta avviato,
il gioco presenta uninterfaccia
di scelta rapida, in cui potete
selezionare il percorso e la difficolt
del vostro tragitto. Aprendo la scheda
Sfoglia, sotto il menu Route, avete
a disposizione diverse linee, tutte
da portare a termine con luso di una
motrice Class 323, che nel menu

Treno potete vedere con tanto


di fotografia. Secondo il percorso scelto,
cambiano anche le condizioni
atmosferiche. Se fate attenzione, il nome
dei file che vi permette di accedere alla
tratta contiene informazioni sul tempo
che troverete. 323_Sping_2005_1128_
Dry_Cloudy.csv indica un percorso
primaverile con cielo prevalentemente
nuvoloso. Lanciato il tragitto scelto, venite
catapultati allinterno della cabina che
mostra con particolare realismo i vari
comandi del locomotore. Spostandovi con
le frecce a destra e sinistra, potete vedere

Se avete
il pallino dei treni,
non potete farvi
mancare questo
simulatore. La grafica
dettagliata non
niente male

OpenBVE vi catapulta
nella cabina di guida di un
locomotore serie 323

linterno. Il gioco si traduce


nel rispettare gli orari di arrivo
e partenza alle varie stazioni che
trovate lungo il percorso, avendo
cura di condurre il treno nel modo
pi preciso e corretto possibile.
Ogni volta che arrivate a un
terminal, potete controllare
il tempo di fermata da un apposito
cronometro, che indica anche
quando deve passare prima che
i passeggeri siano saliti del tutto.

Gioco di combattimento spaziale

SpaceZero
Versione: 0.84 Web: http://spacezero.sourceforge.net

giochi spaziali hanno fatto la storia


dei videogame, a cominciare dai
famosissimi arcade che affollavano
le sale agli albori degli anni 80.
SpaceZero ci porta indietro nel tempo
con unatmosfera particolarmente retr
e ripresa da titoli come Elite, seppure
con tutte le differenze del caso. Per
compilarlo partendo dai sorgenti avete
bisogno delle librerie GTK2, OpenAL
e Vorbis; dopo averlo compilato con il
comando make, potete avviare il gioco
con bin/spacezero. Vi suggeriamo
di usare lo switch -n 200 per popolare
la galassia con un maggior numero
di pianeti. La simulazione parte
immediatamente accogliendovi
con uninterfaccia grafica davvero
minimalista, in cui la grafica 2D
campeggia su tutto. Vi potete cimentare

50

Linux pro 134

fin da subito sulle fasi di decollo della


navicella spaziale, per loccasione realizzata
con un paio di triangoli. Il motore fisico che
permette di muoversi nello spazio di gioco
piuttosto buono e riesce a simulare
fedelmente la deriva tra unaccelerazione
e laltra. Da notare la colonna sonora
caratterizzata da un brano di musica
classica, che fa da sfondo anche alle
battaglie con i nemici. Per il resto, sempre
parlando della parte audio, lo standard
sempre quello anni 80, armi e propulsori
inclusi. Dopo essere decollati dalla prima
base, dovrete lasciare il pianeta.

Nella parte sinistra dello schermo, trovate una serie di info


utili sulla vostra nave, tra cui quanta energia rimane

SpaceZero si rif
ai giochi spaziali anni 80
in stile Space Invaders

Operazione semplicissima, visto che


basta uscire dai bordi della schermata.
Qui comincia lesplorazione del sistema,
che vi porter a raggiungere altri mondi
in cui atterrare e fare rifornimento.
Nel mentre non saranno rari gli incontri
con varie tipologie di caccia nemici,
che ovviamente dovrete cercare
di distruggere senza farvi disintegrare
a vostra volta. In definitiva SpaceZero
diverte, ma solo per i primi 10 minuti. LXP

Tutorial

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

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

TUTORIAL
Flowblade

Un editor video che vi consente di tagliare


e montare velocemente i video pag. 52

CUDA

Mettete allopera la vostra GPU per scoprire


velocemente le password
pag. 56

Drupal

Create un portale Web dinamico pag. 60

Raspberry Pi

Dominate la riga di comando

NAS

Gestire dati in rete, terza parte

pag. 64
pag. 68

Crittografia

Sfruttate la crittografia per proteggere


al meglio le comunicazioni
pag. 72

MediaWiki

Create la documentazione per il vostro


Software Libero preferito
pag. 74

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

ACCADEMIA DEL CODICE


Concetti di base

Lisp

Ruby on Rails

PHP

Lavorate con i moduli per semplificarvi


la vita e date una struttura ben definita
ai vostri programmi
pag. 76
Il Test Driven Development pu migliorare
il vostro codice: sviluppate la vostra
applicazione e intercettate i bug pag. 78

Il linguaggio di programmazione che


con le sue parentesi cambier il vostro
modo di pensare
pag. 82
Realizzate report in PDF perfetti per ogni
vostra esigenza con le indicazioni del team
di Linux Pro
pag. 86

LINUX PRO 134

51

Tutorial Xxxx
Editing Video Imparate a tagliare e montare

velocemente i vostri filmati con Flowblade

Montaggio video rapido


appena nato un nuovo editor video veloce, efficiente e libero. Linux Pro
vi svela i suoi segreti e spiega come tagliare rapidamente le vostre clip video
non siete capitati in queste pagine. Non preoccupatevi,
Flowblade un semplice e flessibile editor video scritto
in Python e basato sul motore MLT/FFmpeg, utilizzato
anche da Kdenlive e Openshot. Con la sua interfaccia utente
spartana e il suo workflow diretto, eccelle per velocit
ed efficienza, senza forzare lutente al compromesso nella
propria visione creativa o nel desiderio di sperimentare
con i video. Nonostante questa caratteristica di semplicit,
Flowblade consente comunque di gestire editing video
strutturato, in grado di mantenere i girati organizzati
e lediting gestibile nel tempo. Flowblade potrebbe non essere
ancora stato incluso nei repository della vostra distribuzione,
tuttavia nel sito ufficiale del progetto (http://code.google.
com/p/Flowblade) presente sia il codice sorgente sia
un file Deb. Per gli utenti Slackware, http://slackbuilds.org
fornisce uno script per fare la build di Flowblade, e per
le distribuzioni basate su RPM, il podcaster Klaatu offre
una build allindirizzo http://fedorapeople.org/~klaatu/.

facile

Importare il girato

volte si vorrebbe semplicemente elaborare un video


senza dover lavorare con otto tool diversi, 45 pulsanti
e 101 differenti dissolvenze incrociate. In quei
momenti, Flowblade semplicemente leditor video perfetto
e probabilmente ne avete ignorato lesistenza fino a quando

Linterfaccia
di Flowblade
intuitiva
e minimale,
ma anche molto
potente

52

Linux pro 134

Avviando Flowblade per la prima volta vi ritroverete


probabilmente di fronte a uninterfaccia familiare, nel caso
abbiate gi usato un software di editing video in passato.
Il pannello pi a sinistra gestisce i vostri bin, che
corrispondono, secondo il superlativo gergo degli editor video,
alle directory. Di default, il progetto assume il nome bin_1,
che tuttavia possibile rinominare semplicemente facendo
doppio click sul titolo e inserendo il proprio testo. La sezione
di mezzo visualizza il contenuto del bin selezionato e vi
consente di importare il girato grezzo. Per aggiungere un
filmato, sufficiente selezionarlo e premere il pulsante Add.

Flowblade Tutorial
Lavorare sulla traccia attiva
Dato che la gran parte dei compiti
in Flowblade si svolge con uno o due click,
importante sapere quale traccia
attualmente attiva. Come in GiMp
e in molte altre applicazioni grafiche,
Flowblade in grado di dividere il contenuto
in livelli, e la traccia segnata come attiva
viene coinvolta in tutte le operazioni.
Di default, la traccia attiva la Track 1;
la traccia video pi in basso. Questo
significa che nel momento in cui viene
effettuata una modifica, come un Append,
Flowblade calcoler il punto dove inserire

la clip guardando alla traccia attiva. Questo


concetto rimane valido per tutte
le operazioni in Flowblade; ogni azione viene
effettuata sulle clip della traccia attiva.
per cambiare la traccia attiva, cliccate
sopra la freccia nel pannello della Timeline
per spostarla verso lalto o cliccate sulla
freccia per spostare la traccia attiva verso
il basso. Se non state facendo editing multi
traccia, probabilmente questo consiglio
non vi servir a molto. nel caso cominciate
a editare il video a pi livelli, bene tenere
questa cosa a mente.

Flowblade non include un meccanismo per importare


da nastro, tuttavia ogni sistema a stato solido o con hard disk
dovrebbe essere riconosciuto senza problemi. nel caso
uno dei vostri filmati non venga riconosciuto, assicuratevi
di aver installato le ultime versioni di FFmpeg e di MLT.
prima di importare le clip, impostate il profilo del progetto
in modo che Flowblade conosca il tipo di formato da utilizzare
come base per lediting. Cercate sempre la minor conversione
possibile; se girate i vostri video a 720p e 25fps, impostate
il profilo a 720p e 25fps in modo che tutto rimanga nativo.
nel caso vogliate ottenere e consegnare un formato diverso
alla fine, non ci sono problemi; avrete la possibilit
di modificare le impostazioni in ogni momento. per impostare
il profilo del progetto, andate nel menu Edit, scegliete
Preferences e selezionate una voce dalla lista dei preset
dei profili di progetto. potete anche creare il vostro preset
personalizzato utilizzando il Profile Manager dal menu Edit.

Editing veloce
La priorit di Flowblade di consentirvi di editare
e assemblare i girati. La teoria sulla quale basato
simile alla programmazione open Source: crea prototipi
velocemente. il modo pi veloce e indolore per mettere
insieme lediting iniziale di segnare le parti buone di ogni
clip dei girati grezzi, tramite un doppio click su ogni clip
contenuto nel bin. il clip verr visualizzato nel viewer in alto
a destra nellinterfaccia di Flowblade. potete revisionare il
girato con i controlli di riproduzione. utilizzate i pulsanti
In Point e Out Point, o i tasti I e O, rispettivamente, per
segnare dove la clip modificata debba iniziare e terminare.
premete il tasto U per inserire la clip nella Timeline in basso
nella finestra di Flowblade. Si noti come il tasto U inserisca
la porzione di video segnata nel viewer alla fine di ogni video
inserito nella Timeline. non c quindi bisogno di segnare dove
nella Timeline desideriate posizionare il girato. Questa
si chiama efficienza! Flowblade assume che nel momento
in cui vogliate essere precisi, dobbiate rallentare il processo
e intraprendere qualche passo extra al fine di ottenere
la precisione desiderata. in caso contrario, stato progettato
per fare gran parte del lavoro al vostro posto invece di
richiedere costantemente comandi impliciti. per questo, non
troverete strumenti speciali per task comuni come tagliare o
inserire clip, e non dovrete cliccare in giro per la Timeline per
trovare lediting perfetto. Esistono, per esempio, ben quattro
metodi per inserire un girato dal viewer alla Timeline.

La freccia indica la traccia attiva

i pulsanti sulla destra della finestra di Flowblade


corrispondono (da sinistra a destra) ai tasti R, T, Y, U
della tastiera. rispettivamente sono: Sovrascrivi range,
Sovrascrivi, Inserisci, e Accoda. per effettuare una modifica
di inserimento, segnate una porzione della clip nel viewer
e posizionate il cursore di riproduzione della Timeline
ragionevolmente vicino al punto di congiunzione di due clip,
dove volete inserite il nuovo spezzone. Cliccate il pulsante
Insert o semplicemente premete il tasto Y sulla tastiera.
potete inoltre sostituire il contenuto di un qualsiasi video sulla
Timeline con il pulsante Overwrite (sovrascrivi) o con il tasto
T. una modifica di sovrascrittura posiziona il range selezionato
nel viewer al posto di una clip esistente nella Timeline per
coprirla quanto pi possibile. risulta utile quando si hanno
due prese della stessa azione e si decida che la versione
utilizzata in precedenza non quella migliore. una volta
inserita una clip nella Timeline, potete rimuoverla in due modi.
Durante le prime fasi dellediting, prima dellinserimento
degli effetti sonori delle spade laser, dei vaporizzatori
e della colonna sonora orchestrale del vostro capolavoro
di fantascienza, potete semplicemente cancellare le clip con
il pulsante Slice Out clip. Vedrete le clip successive spostarsi
a sinistra in modo che non resti spazio al posto del video che
avete appena eliminato. Durante le fasi avanzate dellediting,
tuttavia, tagliare parti dei video pu mandare a gambe allaria
tutto il vostro lavoro. potrebbe tagliare le tracce audio
dei dialoghi o i vostri effetti sonori (spade laser e simili)

Tutti gli effetti di FreiOr sono disponibili in Flowblade, perci ora dovete solamente
fare come George Lucas e creare capolavori!

Linux pro 134

53

Tutorial Flowblade
o impattare su altre clip in altre tracce video. In questo caso
meglio effettuare unoperazione di sollevamento della clip,
che la rimuove dalla Timeline senza impattare sullediting
complessivo. Naturalmente sar presente un gap nel video
da riempire nuovamente, tuttavia lediting rimarr immutato.

Spostare e rimuovere clip


Nel caso non vogliate rimuovere la clip ma desideriate
piuttosto spostarla lungo la Timeline, dovrete utilizzare
i pulsanti Insert Move o Overwrite Move. Questi due
pulsanti abilitano la modalit Move, nella quale potete
cliccare e trascinare una clip video lungo la Timeline e traslare
la relativa posizione. Posizionando una clip tra due splice
(i punti di transizione tra clip) apparir una freccia gialla,
come indicatore di posizione della nuova clip. Posizionando
invece un video in una nuova traccia, il comportamento
di default di posizionare la clip pi a sinistra possibile.
possibile, inoltre, posizionare i girati in posizioni
completamente arbitrarie utilizzando lo strumento Overwrite
Move. Ci sono due modi di utilizzare lOverwrite Move;
potete spostare una clip allinterno della traccia video
corrente, o potete spostarla in una traccia diversa. Nel primo
scenario, la clip viene staccata dalla Timeline, lasciando uno
spazio vuoto al suo posto, e viene posizionata nella nuova
posizione, creando nuove splice nella clip da sovrascrivere.
La clip viene mantenuta nel flusso dellediting, perci, nel caso
cancelliate lo spazio vuoto, tutte le clip successive saranno
spostate allunisono. Se invece spostate una clip in una nuova
traccia video, la clip viene rimossa dal flusso di editing
e cancellando lo spazio vuoto le clip nella traccia principale
scorreranno verso sinistra mentre verranno lasciate immutate
le clip posizionate nella traccia superiore. Questo potrebbe
non essere il risultato desiderato; a meno che non vogliate
riempire il gap con un Overwrite, probabilmente vorrete
vedere azzerato lo spazio vuoto. meglio gestire operazioni
come lo spostamento di clip in due azioni separate. Per prima
cosa, spostate la clip sulla traccia superiore, cancellate poi lo
spazio vuoto lasciato in modo che la traccia principale scorra
verso sinistra, e spostate poi lo spezzone nella posizione
desiderata nella traccia superiore.

Le funzioni
di roll edit
vi permettono
di allungare
o accorciare una
clip nella Timeline

54

Linux pro 134

Roll editing e tagli


Come per tutto il resto, anche il lediting video necessita
di editing. Il primo assemblaggio del vostro girato
indubbiamente pieno di pause imbarazzanti prima dei tagli
corretti e di imperfezioni dovute a quei pochi frame di ritardo
durante la selezione delle clip. Non abbattetevi; normale
e potete sistemare questi piccoli imprevisti con roll edit
e nuovi splice. Per roll edit si intende un cambio dei punti
di in o out di un video clip nella Timeline, in funzione di quale
posizione pi vicina al cursore. Il modo pi semplice per
prendere confidenza con lo strumento effettuare il roll edit
di un out point, perci posizionate il cursore della Timeline
verso la fine (il bordo a destra) della clip nella traccia attiva
e cliccate il pulsante One Roll Trim. La clip diverr blu
e due frecce indicatrici appariranno per consentire il cambio
della lunghezza della clip. Cliccate a sinistra del bordo
dello spezzone per accorciarlo o a destra per allungarlo.
Potete ripetere la stessa operazione per linizio di una clip,
nonostante sia molto pi difficoltoso apprezzare i risultati
nellimmediato, dato che la clip effettuer uno snapping
a sinistra subito dopo essere stata accorciata o allungata.
Inoltre la logica qui sar rovesciata; cliccate a sinistra del punto
di partenza per allungarlo (dato che taglierete prima del punto
attuale nellediting originale) e a destra per accorciarlo (dato
che taglierete dopo nel tempo). Un two-roll edit funziona
esattamente come il roll edit semplice, a eccezione del fatto
che alla modifica di una clip viene effettuata loperazione
opposta nella clip adiacente. Tutto qui; se allungate
la clip foo, la clip bar viene accorciata di conseguenza.
Se accorciate la clip foo, la clip bar verr, di conseguenza,
allungata. Non viene modificata la lunghezza complessiva
del progetto; si semplicemente spostato il punto nel tempo
dove una clip taglia la successiva. Utilizzare il roll editing non
lunico modo per lasciare frame sul pavimento del taglio
video. Il cursore funziona esattamente come la lama di un
rasoio virtuale, posizionandolo sopra una clip e premendo
il tasto X nella tastiera viene creato un nuovo punto splice.
Ottenere un nuovo splice significa poter selezionare la porzione
del video da scartare e cancellarla, con il tasto Canc, o spostarla
con uno dei vari modi disponibili, menzionati in precedenza.

Flowblade Tutorial
Rendering video
C ancora molto altro da scoprire in Flowblade, come
le composizioni e i filtri, tuttavia se avete utilizzato un editor
video su Linux negli ultimi tempi allora queste caratteristiche
vi saranno familiari dato che derivano dal fantastico set
di filtri FreiOr utilizzati in Kdenlive e Openshot. Per generare
la versione finale in Flowblade e produrre un file video da
distribuire a tutti i vostri amici, in modo che possano guardarlo
nel loro computer o nei vari device mobili, si deve passare
attraverso la tab Render. Le prime due opzioni sono intuitive:
impostate la cartella di destinazione e il nome del file da
creare. Il prossimo passo nella lista scegliere le impostazioni
per lesportazione del video. Di default, Flowblade utilizzer
le impostazioni di progetto, tuttavia possibile alterare

Passo passo Sincronizzare il multitraccia

Nel caso stiate lavorando su pi di una traccia,


come fanno i veri professionisti, vi accorgerete
come la vostra scelta vi abbia legato alla
confusione dovuta al fatto che ogni modifica
su di una traccia ai livelli inferiori potrebbe portare

le opzioni utilizzando un qualsiasi preset di FFmpeg con


i soliti formati di encoding, in funzione delle necessit.
Non esiste una scelta ideale in termini di formati di encoding
o dimensione e qualit; dipende tutto dai device dove
riprodurrete il video. Fate le vostre ricerche e impostare
le opzioni in modo adeguato. Flowblade un editor video libero,
veloce ed efficiente. Potreste chiedervi se possa diventare
ancora migliore in futuro. La risposta, sorprendentemente,
s. Lo sviluppo del progetto decisamente vivo e sono state
pianificate nuove funzionalit per il rilascio durante lanno
in corso. Inoltre questo software distribuito sotto GPLv3,
quindi potete scaricare il codice sorgente e vedere come
aggiungere nuove funzionalit da soli. Divertitevi con lediting video
e mettete mano al codice per aggiungere nuove funzioni! LXP

le altre tracce fuori sincrono, facendovi impazzire.


Niente timore; fortunatamente, c una soluzione.
Per mantenere le clip delle tracce superiori
in sincronia con quelle dei livelli inferiori, tutto
quello che dovrete fare segnarle come figlie

Designare la clip padre

Prima di marcare una clip come figlio, dovete prima di tutto avere almeno un
padre. Fate click destro su una clip e scegliete Select Sync Parent Clip.

Utilizzate la modalit Overwrite Move

Ora siete liberi di spostare la clip parent sulla Timeline semplicemente


utilizzando la modalit Overwrite Move. Non spaventatevi al suono dellallarme,
solo un avvertimento del potenziale disastro che state per creare.

della clip sottostante. Questo vi permetter


di muovere le clip dei livelli inferiori ovunque
sulla Timeline e di risincronizzare le clip in modo
che le clip figlio seguano il genitore nella nuova
posizione che avete deciso.

Collegare i figli

Premete sulla clip alla quale volete collegare un figlio. Apparir una barra verde
indicante la sincronia tra le clip.

Ripristinate lordine con un Resync

I figli non vengono spostati automaticamente ma Flowblade li far diventare rossi


per indicarvi la mancanza di sincronia. Cliccate sulla clip figlia e cliccate la voce
Resync Selected Clips per spostare le clip figlio nuovamente verso la sincronia.
Linux pro 134

55

Tutorial
CUDA
Usare la3 scheda grafica per scoprire
Tutorial
Ardour

le password e aumentare la potenza di calcolo

La GPGPU fa i compiti
Lo staff di Linux Pro vi mostra come sfruttare i tempi morti della vostra GPU,
mettendola allopera nei calcoli e nel crack delle password

L
difficile

a velocit dei computer sempre maggiore e i moderni


processori multicore sono in grado di elaborare una
quantit impressionante di dati. Tuttavia, se c una cosa
che sta andando di pari passo con levoluzione dei vostri PC,
il desiderio di usarli per il calcolo dei dati. Con le CPU che
lottano per tenere il passo con la montagna di informazioni
che si accumulano alle loro spalle, le persone hanno iniziato
a trovare nuovi modi per elaborare le informazioni che
rimangono in coda. Ed ecco che nasce la moda di sfruttare
la GPU, vale a dire la scheda grafica. Alcuni di voi avranno
installato nel loro bolide una CPU allultimo grido, che per
viene usata solo per giocare, finendo cos per rimanere inattiva
per gran parte del tempo. Prima di andare oltre e scoprire
come spremere fino allultima goccia la vostra GPU, per
opportuno fare una precisazione. Servirsi di una scheda grafica
per lelaborazione dei dati non come usare un processore
multicore. Non possiamo semplicemente avviare dei thread
o dei programmi come faremmo nei casi pi tradizionali.
Il motivo semplice: le GPU sono progettate in modo
radicalmente diverso rispetto alle CPU. Queste ultime, essendo
costruite per elaborare diverse tipologie di dati, hanno nuclei
pi grandi e complessi. I processori grafici, invece, pur
trattando ugualmente una quantit formidabile di informazioni,
si concentrano sempre sulla solita tipologia ed per questo
che hanno un numero di core sensibilmente maggiori seppure
pi piccoli. Per fare un esempio pratico, la scheda NVIDA GTX
680 che abbiamo usato in questo tutorial, ha la bellezza
di 1.536 core di elaborazione, mentre la CPU Intel Core i5
3570K della stessa macchina che stiamo utilizzando, ne ha
solo 4. Vi sorprender quindi sapere che il lavoro della GPU
si adatta molto meglio alle operazioni aritmetiche pi semplici
su ampia scala. Lutilizzo pi comune di questa potenza
di elaborazione largamente utilizzata nel cracking delle
password. E ancora una volta, prima di proseguire,
necessario fare unaltra precisazione sulle differenze che
ci sono tra CUDA e OpenCL. Entrambi eseguono calcoli grafici

Secondo
Indeed.com, nel
mondo IT c una
buona richiesta
di esperti in CUDA

56

Linux pro 134

e svolgono ruoli pi o meno equivalenti, ma lapproccio


che li rende diversi. La prima diseguaglianza sotto gli occhi
di tutti: CUDA funziona su hardware NVIDIA, mentre OpenCL,
pur essendo pi versatile, viene utilizzato soprattutto
su piattaforme AMD/ATI. CUDA, tuttavia, riuscito a
conquistare una forte spinta soprattutto in ambito enterprise,
ed per questo motivo che abbiamo deciso di usarla per
questo tutorial. Nonostante questo, le tecniche di base sono
sempre le stesse, e dovreste poterle applicare senza grossi
problemi anche con OpenCL. Tornando quindi al cracking
delle password, bene ricordare come le credenziali
di accesso siano memorizzate in hash, vale a dire funzioni
matematiche unidirezionali che vengono poi applicate alle
chiavi di accesso. Si chiamano infatti a senso unico, proprio
per la loro peculiarit di non poter essere invertite.
Questo per farvi capire come sia semplicissimo calcolare
un hash se avete la password, ma sia (quasi) impossibile
scoprire la password se avete il solo hash. Lapproccio di cui
stiamo parlando molto diverso rispetto alla tradizionale
crittografia, perch in questo caso non abbiamo alcuna chiave
segreta per invertire la funzione. Anche se siete legittimati ad
avere la password originale, se siete in possesso del solo lhash
non sarete comunque in grado di ottenerla. Ed proprio
questo il motivo per cui non dovrebbe essere possibile
recuperare le password che avete creato, ma solo reimpostarle.
Se qualche servizio online in grado di riproporvi la stessa
chiave di accesso generata in fase di registrazione, significa
che non la sta conservando in modo sicuro.

Le GPU amano lhashing


A cose normali, quando si immette una parola daccesso,
il sistema calcola lhash e lo confronta con quello memorizzato.
Se coincidono, allora potete entrare. Craccare una password
significa pertanto indovinarla, e dato che per ogni chiave esiste
un numero eccezionale di varianti, la velocit nellelaborazione
degli hash tutto. Ed proprio qui che entrano in campo
le GPU, visto che il cracking delle password unoperazione
che richiede lelaborazione di un ingente numero di dati.
A questo proposito, sfruttiamo strumenti del calibro di hashcat
e in particolare OCLHashcat plus, scaricabile da qui:
http://hashcat.net/oclhashcat-plus/. Essendo compresso
con 7-zip, dovrete estrarlo e spostarlo nella directory con:
7z x oclhashcat-plus-0.15.7z
cd oclhashcat-plus-0.15
Se non lo avete gi, dovete scaricare 7-zip dal repository della
vostra distro. OCLHashcat plus gi precompilato sia per
sistemi a 32 bit sia a 64 e pu essere usato con OpenCL
(oclhashcat) o CUDA (cudahashcat). La nostra macchina
sfrutta una NVIDIA, ma se la vostra ha una ATI, basta
cambiare la dicitura cuda con OCL nelle istruzioni che
seguono. Per prima cosa avvierete un benchmark per
assicurarvi che tutto funzioni correttamente, valutando cos
leffettiva velocit della vostra scheda grafica. Modificate

CUDA Tutorial
lo script benchmark.sh usando il vostro editor di testo preferito,
cos che export BiN punti alleseguibile corretto. nel nostro caso
abbiamo apportato queste modifiche:
export Bin=./cudaHashcat-plus64.bin
Quindi eseguite:
./benchmark.sh
Con questo test il sistema genera una serie di hash tanto
velocemente da non poterli certo seguire a vista. Ci che per
deve premervi di verificare lassenza di errori. Se cos non
fosse, dovete scoprirne la causa. i problemi pi probabili sono
tre: state eseguendo leseguibile sbagliato, non avete i driver
corretti, oppure la scheda grafica non riesce a supportare
questa operazione. Dopo esservi assicurati che il sistema
funzioni, dovete verificare quanto velocemente la Gpu riesce
a fare i calcoli. per farlo, necessario controllare le prestazioni
di cudaHascat-plus e quelle di hashcat (lo trovate sul sito
del programma). Come prima, scaricatelo e decomprimetelo.
Adesso avrete quindi due cartelle: una per oclHashcat-plus
e una per hashcat. nel nostro caso le abbiamo in ~/Scaricati
e sono rinominate oclHashcat-plus-0.15 e hashcat-0.46.
Se le vostre hanno nomi diversi, perch probabilmente state
usando una versione aggiornata, o se li avete archiviati in un
altro percorso, dovrete modificare di conseguenza i comandi
che riportiamo.

Test di velocit
nella cartella examples, trovate un certo numero di hash
da usare come esempi. Adesso stiamo per eseguire lo stesso
hash sia con hashcat sia con oclHashcat-plus, in modo da
vedere come se la cavano entrambi. i comandi sono un po
lunghi, quindi fate attenzione al nome delle directory, avendo
cura di modificarle quando necessario. iniziate con hashcat:
cd ~/Scaricati
./hashcat-0.46/hashcat-cli64.bin -m 500 ./hashcat-0.46/
examples/A0.M500.hash ./oclHashcat-plus-0.15/example.dict
Sul nostro sistema equipaggiato con un intel Core i5, ci sono
voluti circa 15 secondi prima di scoprire i due hash.
Sul vostro computer il tempo potrebbe variare. Adesso
scopriamo come eseguire loperazione sfruttando la scheda
grafica. per farlo, lanciate
./oclHashcat-plus-0.15/cudaHashcat-plus64.bin -m 500
./hashcat-0.46/examples/A0.M500.hash oclHashcatplus-0.15/example.dict
in questo caso abbiamo impiegato circa 3 secondi e una
buona parte dei dati elaborati stato trasferito alla Gpu.
Se considerate i 15 secondi iniziali con il risultato ottenuto
adesso, vi rendere conto di come siano formidabili
le potenzialit di una scheda grafica. Certo, i tempi possono
cambiare in base al modello, ma adesso avete imparato come
coinvolgere la Gpu nel calcolo di una password. La cattiva
notizia che in questo momento ci sono pochissime

Amazon Web
Services (AWS)
permette
di aggiungere
schede NVidiA
alle istanze
della cloud per
sfruttare cUdA

applicazioni che supportano la scheda grafica come


elaboratore di dati esterno. La buona notizia, invece, che
ci sono molti linguaggi di programmazione che consentono
di sfruttare proprio la Gpu. un esempio Python, a cui
andiamo a dare unocchiata in virt della sua relativa
semplicit. infatti sufficientemente facile da utilizzare anche
da parte di chi non ha particolari conoscenze. utilizzeremo
Pycuda (per chi usa openCL c PyOpencl). A differenza
di hashcat, la probabilit che lo troviate nei repository della
vostra distro molto alta. in ubuntu e derivati, per esempio,
ci sono python-pycuda e python-PyOpencl. Se non
riuscite a trovarli nel vostro gestore di pacchetti, dovete
scaricarli e installarli. Loperazione non delle pi semplici,
ma potete usare le istruzioni dettagliate che trovate qui:
http://wiki.tiker.net/Pycuda/installation/linux. negli
esempi fatti in precedenza, abbiamo riportato la procedura
sia con CuDA sia con openCL, ma ora proveremo a lavorare
solo con CuDA. ricordate tuttavia che, come abbiamo gi
accennato, openCL sfrutta gli stessi principi di base, quindi
dovreste essere in grado di ripercorrere le operazioni anche
con questultimo senza alcun problema. Come gi fatto,
anche stavolta abbiamo intenzione di eseguire il crunch
di alcuni numeri sulla Cpu e la Gpu, per capire cos come
se la cavano. provando con un po di trigonometria,
metteremo i due processori alla prova con qualche triangolo
rettangolo, e queste operazioni in virgola mobile
vi mostreranno come la Gpu riesca a comportarsi davvero
bene. inizieremo a generare due numeri casuali: uno
rappresenter un angolo del triangolo, laltro la lunghezza
di un lato. Da questi due dati calcoleremo poi le lunghezze
degli altri due lati dei rispettivi triangoli. Questo calcolo,
se eseguito per un solo triangolo, sarebbe troppo semplice
per la Gpu, che quindi non verrebbe nemmeno coinvolta.
Ecco perch dovrete spingervi fino a 100.000 triangoli.

ASic
Le Gpu, essendo progettate per calcoli specifici,
sono significativamente pi veloci delle Cpu.
infatti non vengono subbissate da tutte le richieste
che un tradizionale processore deve soddisfare
in continuazione. Eppure anchesse compiono
operazioni che potrebbero non interessare.
per questo si sta sviluppando un nuovo tipo

di hardware per il calcolo chiamato ASic,


acronimo di Application Specific integrated
Circuits. La sua particolarit risiede nellessere
progettato per compiere una sola funzione, ma
in modo estremamente preciso. una delle aree
in cui si sta passando dalle Gpu agli ASiC
il calcolo dei Bitcoin, la rivoluzionaria moneta

virtuale che si sta sempre pi evolvendo nel


mondo digitale. Visto che perfino le schede
grafiche pi potenti si rivelano insufficienti allo
scopo, molti minatori virtuali usano degli ASiC
per portare avanti questa attivit. per questi
ASiC possono fare solo questo, sono pi
specializzati rispetto alle Gpu.

Linux pro 134

57

CUDA Tutorial

Uno dei
benefici
di Python
la possibilit
di usare CUDA
con i normali
strumenti

58

PyCuda mette a disposizione gpuarray, che consente


di portare a termine loperazione in modo estremamente
semplice. Tramite questo vettore, potete lavorare cos
tranquillamente con numeri straordinariamente grandi
da far elaborare alla GPU. Funziona in modo simile allarray
NumPy e potete confrontare facilmente le rispettive
prestazioni. Per prima cosa necessario creare un nuovo
file di testo nel vostro editor preferito, che chiamerete
triangoli.py, quindi aggiungere le seguenti righe:
import pycuda.autoinit
import pycuda.cumath
import pycuda.gpuarray as gpuarray
import numpy
import time
Adesso dovete generare gli array casuali di NumPy,
per poi sfruttarli per compilare i gpuarrays:
o_cpu = numpy.random.randn(100000).astype(numpy.
float32)
t_cpu = numpy.random.randn(100000).astype(numpy.
float32)
o_gpu = gpuarray.to_gpu(o_cpu)
t_gpu = gpuarray.to_gpu(t_cpu)
Bene. Ora potrete sfruttare la potenza della vostraGPU
per effettuare i calcoli:
ts = time.clock()
h_gpu = ((o_gpu/pycuda.cumath.sin(t_gpu)))
a_gpu = pycuda.cumath.sqrt((h_gpu*h_gpu)-(o_gpu*o_gpu))
print tempo impiegato dalla GPU, time.clock() - ts
Come potete vedere, gpuarray rende davvero banale eseguire
un gran numero di calcoli sulla GPU. La seconda serie di
operazioni, che eseguiamo sulla CPU tramite NumPy, funziona
allo stesso modo. Il codice completo comunque disponibile
allURL http://bit.ly/1a370xO (assieme ad alcuni dei tool citati
nellarticolo). Adesso non resta che lanciare loperazione con:
python triangoli.py
Una volta completata, scopriamo per quanto tempo ha tenuto
occupate CPU e GPU. Dopo la prima manche, abbiamo quindi
trovato che:
tempo impiegato dalla GPU 0.16
tempo impiegato dalla CPU 0.004

Linux pro 134

Aumentare il controllo con C


Ma come!!! Sembra che la GPU abbia impiegato pi tempo
rispetto alla CPU. Il problema che 100.000 triangoli
sono ancora troppo pochi per notare dei vantaggi nel
coinvolgimento della GPU. I calcoli in cui si perde, infatti, sono
innumerevoli e, tra radici quadrate e operazioni sinusoidali,
finisce per impiegare molto pi tempo rispetto alla CPU.
Provate per a modificare il numero di dati che gli date
in pasto, portandolo per esempio a 10.000.000. Abbiamo
provato cambiando questi due parametri:
o_cpu = numpy.random.randn(10000000).astype(numpy.
float32)
t_cpu = numpy.random.randn(10000000).astype(numpy.
float32)
Con due zeri in pi e 10.000.000 triangoli da elaborare,
dovreste aver messo in difficolt la CPU, ed ecco il responso:
tempo impiegato dalla GPU 0.16
tempo impiegato dalla CPU 0.24
Come potete vedere, la GPU ha impiegato lo stesso tempo
di prima, mentre la CPU stata impegnata molto di pi
(per approfondire i dettagli di come sono state eseguite queste
operazioni, potete controllare il grafico riportato nella pagina
a fianco). Nonostante queste velocit siano gi impressionanti,
si pu fare ancora meglio. Per ottenere pi potenza, abbiamo
necessit di maggiore controllo sulle operazioni eseguite
dalla GPU. Ecco perch abbiamo bisogno di un linguaggio
di programmazione che agisca a un livello ancora pi basso.
S, stiamo parlando proprio del C. Non dovete preoccuparvi,
perch non vi proponiamo di riscrivere lintero codice, ma solo
di sostituire le parti che verranno eseguite dalla GPU.
Noi abbiamo usato la nostra funzione C, che verr eseguita
sulla scheda grafica con SourceModule (importato
da PyCuda), in questo modo:
mod = SourceModule(
__global__ void calculate_them(float *h, float *a, float *o, float
*t)
{
const int i = threadIdx.x + blockDim.x * blockIdx.x;
h[i] = o[i]/sin(t[i]);
a[i] = sqrt((h[i]*h[i])-(o[i]*o[i]));
}
)
Se avete gi esperienza di programmazione in C, troverete
abbastanza familiare il codice appena usato. Abbiamo detto
abbastanza, perch non si tratta di C puro, ma della variante
CUDA C. __global__, infatti, una parola chiave di CUDA C,
la cui funzione informare il sistema che ci che sta
eseguendo una funzione da far elaborare alla GPU,
ma richiamabile dalla CPU. In altre parole, se vogliamo
richiamare una funzione da Python, deve essere preceduta
da __global__. Per loccasione siamo stati in grado di usare
anche sqrt () senza includere math.h. Questo perch
in CUDA C, la maggior parte delle funzioni matematiche
standard. Un elenco completo delle istruzioni disponibili,
si trova comunque nella guida di programmazione CUDA C
presente sul sito NVIDIA (http://bit.ly/14sLQ9C). Tuttavia,
la riga pi strana di tutto il codice :
const int i = threadIdx.x + blockDim.x * blockIdx.x;
Per comprenderla fino in fondo, dovete capire il modo in cui
il codice viene eseguito. Se aveste scritto questa istruzione per
lanciare un singolo thread su una CPU, avreste potuto usare
un ciclo for per incrementare il contatore di ununit alla volta.

CUDA Tutorial
Prestazioni
250

Questi sono i calcoli che ci hanno tenuti impegnati

200
Tempo impiegato in ms

Le migliori schede grafiche nViDiA dal


punto di vista prestazionale sono le Tesla
K20x. utilizzate spesso anche nei super
computer, sprigionano una potenza
di calcolo esorbitante. per fare un esempio,
una Tesla K20x da sola molto pi veloce
di ASCi rED, il computer pi veloce del
mondo fino alla fine del 2000. ora, tutti
voi sicuramente conoscerete la legge
di Moore secondo cui le prestazioni
dei processori e il numero dei transistor
a esso relativo raddoppiano ogni 18 mesi,
ma valutando il passaggio dalle dimensioni
di un computer grande quanto una stanza
a una singola scheda grafica, capirete
i passi fatti. Qui a fianco sono riportati
i risultati dei nostri test.
legenda

150

100

50

tempo array GPU

tempo cPU
GPU modificata

10

20

30

40
50
60
70
80
90 100
Numero dei triangoli (su base 100.000)

500

1000

il design parallelo della GPU fa s che il processore grafico si comporti bene con grandi quantit di dati

ogni ciclo, quindi, consisterebbe nel calcolare i valori


per lelemento i-esimo dellarray. Beh, in questo caso state
facendo qualcosa di molto simile, ma invece di eseguire
un ciclo, avete distribuito lelaborazione tra i core della Gpu.
Vedremo pi avanti la dimensione dei blocchi e della griglia,
ma la cosa importante che questa riga si comporta
esattamente come un contatore in un ciclo for,
ma per pi thread in esecuzione su pi nodi.

lesecuzione sulla GPU


La sezione che segue permette di inserire il codice appropriato
per la Gpu, ma non di eseguirlo. per farlo avete bisogno
di aggiungere qualche comando in pi:
calculate_them = mod.get_function(calculate_them)
h_gpu2 = numpy.zeros_like(h_cpu)
a_gpu2 = numpy.zeros_like(a_cpu)
ts = time.clock()
calculate_them(
drv.out(h_gpu2), drv.out(a_gpu2), drv.in(o_cpu), drv.in(t_cpu),
block=(1000,1,1), grid=(10000,1,1))
La prima riga crea una funzione python chiamata calculate_
them e la assegna a quella che abbiamo appena scritto
per la Gpu. Le seguenti tre righe creano un array per loutput
e lavvio del timer, cos da poter lanciare il codice. i primi
quattro parametri dello script sono semplicemente gli array
che avete (potete riutilizzare gli array della Cpu del passaggio
precedente, piuttosto che copiarli di nuovo), ma gli ultimi due
rappresentano il blocco e la griglia. Questi richiedono qualche
spiegazione. i thread sono infatti raccolti in blocchi, che a loro
volta trovano posto allinterno di una griglia. in questo esempio
avete utilizzato tutte le funzioni di CuDA, come il fatto che ogni
thread sfrutti solo i propri dati senza interagire con gli altri. non
dovete per dimenticare che la memoria condivisa allinterno
dei blocchi pu comunque sempre essere utilizzata dai thread.
oltre allaccesso alla memoria, anche la dimensione dei blocchi

e delle griglie ha un grande impatto sulle prestazioni. per


calcolare tutti i dati, la dimensione del blocco moltiplicata
per quella della griglia deve essere la stessa dellarray.
inoltre, bene tenere presente che la dimensione del blocco
limitata dallhardware. Con un array di dieci milioni,
si potrebbe sfruttare una dimensione del blocco che va
da 1 a 1.024 (questo con il nostro hardware, con il vostro
potrebbe essere 512). Attraverso prove ed errori abbiamo
scoperto che un blocco dalle dimensioni maggiori pi veloce,
constatando che il pi piccolo, invece, circa due volte pi
rapido della Cpu, mentre quello pi grande almeno 10 volte
in pi. potreste quindi aver notato che i parametri, sia del blocco
sia della griglia, supportano tre dimensioni e non solo una.
Tenete comunque presente che il limite di 1.024 thread per
blocco totale e non per dimensione. in questo modo potrete
avere blocchi da 10,10,10, ma non di 100,100, 100. Ecco
quindi che aumentando i dati si favorisce la Gpu, anche se vale
la pena ricordare che non sempre cos. Loperativit, infatti,
si basa su dati a 32 bit, ma se volete passare a 64 bit scoprirete
ben presto che la Gpu rallenta di circa un fattore due,
mentre le prestazioni della Cpu risentono di una diminuzione
decisamente inferiore. La Gpu non semplicemente
un processore, ma ha caratteristiche molto precise
e pu funzionare in modo incredibilmente veloce solo
per alcune operazioni. per esempio utilissima quando si trova
a lavorare nel campo del rendering grafico, quindi con dati
paralleli e con precisione singola. in altri casi, per, si dimostra
peggiore della Cpu. il calcolo scientifico pu essere un ottimo
campo dazione per le Gpu, tanto da rappresentare
un potenziale eccezionalmente ampio da sfruttare. Se avete
un computer con una scheda madre in grado di supportare
pi schede grafiche collegate a una singola Cpu, niente
vieta di costruirvi il vostro super computer. A patto per
di fare attenzione al calore e dotarlo di un ottimo impianto
di raffreddamento. lXP
Linux pro 134

59

TutorialContent
Xxxx
Management Installare Drupal

con i propri moduli per creare un portale Web

Attira i visitatori con un


portale Web dinamico
Costruire un portale relativamente facile, ma non lo altrettanto creare una
struttura per monetizzare. Servendosi di Drupal non cos. Scoprite perch!
piattaforma, la lotta allo spam e potenziali altre modifiche
che hanno lo scopo di migliorare il sistema. Inoltre Drupal, alla
pari di molti altri CMS, ha una nutrita documentazione fatta
di tutorial e manuali che potete trovare comodamente online
e in forma del tutto gratuita. Se comunque volete spaziare
in questo ambito, provando un altro Content Management
System completo, vi segnaliamo WordPress. Tornando
a Drupal, non si pu fare a meno di notare come la sua
installazione sia unoperazione davvero facile, anche se
richiede diversi componenti di base, tra cui server Web,
database e supporto PHP. Per approfondire i vari passaggi,
potete consultare la guida passo-passo su http://bit.ly/
gBcjnm. In alternativa, possibile semplificare ancora
di pi le cose con Drupal BitNami Stack, che fornisce
tutto quello di cui avete bisogno per utilizzare il CMS
in locale, tra cui Apache, MySQL e PHP.

facile

Installazione e moduli

na delle lezioni di marketing pi in voga di questi ultimi


tempi ricordare come la realizzazione di un sito Web
sia un gioco da ragazzi. Molto diverso, invece, costruire
una struttura capace di attirare visitatori e quindi generare
denaro. difficile controbattere a questa visione delle cose,
considerando poi che la stesura di una pagina Internet
diventata, se non alla portata di tutti, sicuramente non dei
soli professionisti. Ed in questo ambito che arriva Drupal,
un CMS progettato per realizzare un portale dinamico
completo di tutto. Non importa se avete unazienda e volete
pubblicizzare la vostra attivit o mettere online un semplice
spazio personale, Drupal praticamente perfetto per qualsiasi
idea abbiate in mente. Sebbene linstallazione non lasci spazio
a grandi personalizzazioni, grazie ai tantissimi moduli
se potete ridisegnarlo come preferite e in base alle vostre
esigenze. In questo tutorial parleremo di varie estensioni, tutte
incentrate sulla comunicativit verso i visitatori del vostro
spazio Web: newsletter, chat, sondaggi e molto altro ancora.
Tuttavia, prima di proseguire, vale la pena spendere qualche
parola per introdurre Drupal. importante premettere che
la Rete piena di CMS capaci di dare forma ai vostri progetti,
ma prima di fare una scelta ci sono molteplici aspetti da
considerare. A noi Drupal piace perch mette a disposizione,
oltre a tantissime estensioni diverse, una serie di strumenti
volti a facilitare la manutenzione e laggiornamento della

60

Linux pro 134

BitNami Stack agisce come uno script in grado di installare


Drupal, curando automaticamente per voi i vari aspetti tecnici
come la creazione e la configurazione del database. Una volta
installato, possibile passare direttamente alla piattaforma
di sviluppo. Dopo aver eseguito il login, trovate quasi tutti
gli strumenti di amministrazione nella barra che compare
sulla parte superiore della pagina. Le funzioni sono suddivise
in schede opportunamente rinominate: Dashboard, Content,
Structure, Appearance, People, Modules e cos via.
Selezionando ciascuna voce, si apre un menu contenente
le funzioni avanzate che caratterizzano la sezione scelta.
Se poi volete aggiungere nuovi articoli o pagine, sufficiente
scegliere la voce Add content, presente sempre nella barra
superiore degli strumenti. Quando invece si parla di moduli

Installare un nuovo tema grafico semplicissimo, basta


selezionare la voce Install new theme nel menu Appearance

Drupal Tutorial
o estensioni, Drupal li tratta come dei plug-in. Quelli necessari
a migliorare la comunicativit con i vostri visitatori, come
Forum, Blog e Open ID, di solito sono disabilitati. Per attivarli,
tuttavia, il procedimento davvero semplice: basta entrare
nel menu Modules e mettere il segno di spunta sotto la voce
Enable, posta di fianco a ciascuna estensione. La struttura
della pagina suddivisa in tre schede diverse: List, Update
e Uninstall, che trovate nella parte destra superiore
dellinterfaccia. La prima riporta la lista completa dei moduli
gi presenti in Drupal, la seconda, invece, consente
di aggiornare i singoli plug-in a piacimento e lultima
di rimuoverli. Non appena vengono rilevate nuove versioni
dei moduli gi installati, Drupal vi informa della presenza
di aggiornamenti. Per ogni estensione trovate le voci:
Enabled, Name, Version, Description e Operations.
Le prime quattro non hanno bisogno di descrizioni, la quarta,
invece, permette di accedere alla pagina di configurazione,
alla gestione dei permessi per il singolo plug-in e alleventuale
pagina di aiuto. La funzione Permissions consente di gestire
nel dettaglio chi e cosa pu fare con quello specifico modulo.
Infine importante ricordare come alcune estensioni non
possano essere attivate se prima non passate dal menu
Configure per impostarle a dovere. Ora che avete le basi
per utilizzare le funzioni principali di Drupal, andiamo alla
scoperta dei moduli che vi consentiranno di prendere contatto
diretto con i visitatori del vostro sito.

Create una newsletter


La newsletter probabilmente il miglior strumento di
marketing per un sito Web proprietario. Il suo maggior pregio
sta nel contattare ogni iscritto al portale, anche quelli
che magari non lo visitano da parecchio tempo. Una
newsletter ben fatta ha il compito di informare tutti
gli utenti sulle ultime novit presenti nel sito: le modifiche,
le news, i prodotti e cos via. Per loccasione abbiamo scelto
Simplenews, che fornisce una serie impressionante
di funzioni, tra cui il supporto multilingue e la possibilit
di inviare la newsletter sia ai visitatori autenticati, sia a quelli
anonimi, con lopzione di aggiungere un messaggio
di conferma per questultimi. Collegatevi a https://drupal.
org/project/simplenews e scaricate il tarball dellultima
versione disponibile (nel momento in cui scriviamo la 7.x1.0). Raccomandiamo di usare proprio i tarball, perch potete
installare i moduli senza estrarre i file, cos come abbiamo
descritto nella procedura dettagliata nella pagina successiva.
Una volta installato Simplenews, vi accorgerete che la
scheda Content, nella barra dei menu sulla parte superiore
della pagina, permette di creare una newsletter direttamente
dal sottomenu dei contenuti aggiuntivi. Prima di tutto
necessario generare una o pi categorie, nel caso vogliate
inviare pi messaggi che prendano in considerazione
argomenti diversi. Andate quindi in Configuration D Web
Services D Newsletters D Add Newsletter Category.
Dopo aver creato una nuova categoria, dovete realizzare
un blocco accessibile agli utenti da cui possano iscriversi
alla newsletter. Per farlo, sufficiente andare in Structure
D Blocks. Ogni blocco inserito casualmente allinterno
dellinterfaccia grafica, per esempio nella barra laterale
destra o sinistra, in alto, nellarea ricerca e cos via. Potete
modificarne la posizione, agendo sul selettore Region posto
di fianco al nome di ciascun blocco. Tale considerazione,
ovviamente, vale per il menu relativo alla newsletter

Tip

che potete disporre dove volete. Una volta fatto, basta fare
click sul pulsante Save Blocks per confermare le scelte.
Ecco fatto! Avete appena creato il vostro primo blocco
che consente ai visitatori del sito di iscriversi alla newsletter.
C solo un piccolo problema: non avete ancora realizzato
il contenuto del messaggio. Niente paura, basta selezionare
Add Content D Simplenews newsletter.

Opzioni per il sondaggio


Una delle strategie pi utilizzate dai gestori di siti Web
promuovere sondaggi sempre aggiornati sulle tendenze del
momento. Drupal integra gi un modulo adatto alla creazione
dei sondaggi, ma noi preferiamo utilizzare un plug-in con
maggior potenzialit di personalizzazione. Questo perch
lestensione preinstallata non offre altro che domande con
risposte a scelta multipla. Il modulo Advance Pool, che
scaricate da https://drupal.org/project/advpoll, permette
agli utenti di specificare le proprie scelte personalmente,
senza dover sottostare a una serie di risposte predefinite.
Supporta poi diversi tipi di voto, simili a quelli che potete
vedere su Wikipedia. In pi, potete configurare linizio e la fine
di un sondaggio automaticamente, in modo da programmarne
la pubblicazione attraverso un calendario ben scandito,
che permette anche di decidere quando rendere noti
i risultati. Dopo linstallazione e lattivazione del modulo
Advance Poll dalla pagina Modules, dovete per prendervi
qualche minuto per configurarlo a dovere. Non ci vuole molto,
ma comunque necessario stabilire quali utenti sono in grado
di partecipare ai sondaggi e se possono visualizzarne
i risultati, oppure se a loro volta hanno i permessi per crearne
altri. Dalla stessa pagina Modules, basta fare click sulla voce
Permissions sotto la colonna Operations. Per impostazione
predefinita, solo lamministratore ha il potere di creare
e partecipare ai sondaggi, quindi dovrete definire con cura
i permessi degli altri utenti. Utilizzate le caselle di controllo
e create la configurazione che preferite.

Per la nostra
prova abbiamo
usato la
versione inglese
di Drupal.
Bench sia
presente anche
la traduzione
in italiano, alcuni
moduli non
sono ancora
stati tradotti.
Per fornirvi un
testo organico
e chiaro,
abbiamo
quindi deciso
di riportare
tutti i nomi dei
menu in lingua
originale.

Votate i contenuti con Fivestar


Uno dei modi per rendere ancora pi partecipi i visitatori
permettergli di lasciare dei commenti ai vari contenuti che
pubblicate. Se per volete andare oltre e dare la possibilit
a tutti di esprimere una valutazione su ci che proponete,
vi consigliamo di usare il modulo Fivestar (https://drupal.
org/project/fivestar). Questo plug-in richiede alcune
estensioni accessorie come il modulo Voting API, che dovrete
installare prima di Fivestar. Purtroppo Drupal, sotto questo
Potete creare
profili personali
per ciascun
utente, usando la
funzione People
che trovate
nel pannello di
amministrazione

Linux pro 134

61

Tutorial Drupal
Tip
Ci sono migliaia
di moduli che
consentono
di aggiungere
nuove funzioni
a Drupal. Per
sceglierli ci vuole
tempo e molta
pazienza.

punto di vista, non ha alcuna funzione automatica per


scaricare direttamente le dipendenze necessarie a far
funzionare determinati tipi di moduli. Dopo linstallazione
e lattivazione dei due plug-in, necessario specificare quali
tipi di contenuti gli utenti possono votare. Per impostazione
predefinita, Fivestar abilita questa funzione solo per il blog
e i sondaggi. Per attivare il voto dei visitatori anche sulle altre
pagine, recatevi nella scheda Structure D Content Types
D Basic Page D Menage Fields. A questo punto aggiungete
una nuova etichetta, quindi, alla voce Field Type, impostate
Fivestar Rating e, alla voce Widget, scegliete licona
raffigurante delle stelle. Dopo aver salvato le modifiche,
i vostri visitatori potranno valutare tutte le pagine del sito.
Allo stesso modo, se volete perfezionare ancora di pi
i permessi di valutazione dati agli utenti, dovrete ricreare
un nuovo tipo di contenuto e specificare nel dettaglio a quale
oggetto fa riferimento. Per esempio, se i visitatori vogliono
votare la newsletter, necessario tornare nel menu Structure
D Content Types D Simplenews newsletter D Manage
Fields e aggiungere unetichetta e un nuovo tipo di campo
riferito al voto. Se poi il vostro sito fornisce servizi o prodotti
a una serie di clienti, potrebbe essere utile permettere
ai visitatori di parlare direttamente con lo staff di vendita.
Sotto questo profilo, un modulo molto utile DrupalChat,
che supporta sia chat singole, sia chatroom pubbliche.
Linterfaccia non diversa dalle piattaforme di discussione
online gi utilizzate da molti altri portali, per esempio
Facebook. In questo modo, i partecipanti alle discussioni
non dovrebbero avere problemi ad ambientarsi. DrupalChat,
inoltre, fornisce tutte le caratteristiche pi utili per un modulo
di questo genere: cronologia, registrazione delle conversazioni,
notifiche pop-up, emoticons e molto altro ancora. Se volete
vederlo in azione prima di installarlo, puntate il browser
alla pagina www.phpchatsoftware.com/drupal.

Chattare con i visitatori


Insieme al modulo DrupalChat (https://drupal.org/project/
drupalchat), se volete permettere anche agli utenti anonimi

di usare la chat, dovrete installare anche Session API


(https://drupal.org/progetto/session_api). DrupalChat
offre una scelta di quattro diversi backend. Per impostazione
predefinita, Normal Ajax e Polling non richiedono pacchetti
aggiuntivi. Infatti, se usate uno di questi backend, DrupalChat
si integrer perfettamente con Drupal, utilizzando le risorse
dello stesso server. Lunico svantaggio che in questo caso
il modulo non scalabile. Se per voi un problema, dovrete
accontentarvi di backend del tipo iFlyChat o Node.Js.
Questultimo ancora in fase di sviluppo, quindi, almeno
per ora, non raccomandabile. Per le istruzioni passo passo
di iFlyChat, invece, potete consultare https://iflychat.com/8step-installation. In questo modo ottenete le API da fornire
a Drupal, cos da abilitare il server iFlyChat come backend
per il modulo DrupalChat. La scelta dei backend, in definitiva,
dipende dal numero di utenti e dalla quantit di chat attive
che vi aspettate di utilizzare. Per impostare il backend
spostatevi in Configuration D DrupalChat D Configure.
Da qui avete pieno controllo sulle impostazioni del modulo,
tra cui la possibilit di attivare la registrazione dei messaggi
in chat, labilitazione dei suoni e molto altro ancora. Una volta
fatto, cos come per gli altri moduli, dovete andare in People
D Permissions e definire come gli utenti anonimi e quelli
identificati possono usare il modulo. Troverete la chat e la
relativa finestra di notifica nella parte inferiore destra della
pagina. Per dialogare con uno degli utenti registrati, basta
cliccare sul suo nome nella finestra chat, in modo da far
comparire una nuova scheda dove potrete parlare
privatamente con lui. Il modulo tiene traccia di qualsiasi
sessione passata, cos che i vostri messaggi vengano
visualizzati automaticamente alla successiva apertura di
una chiacchierata con un utente con cui avete gi parlato in
precedenza. In alternativa, potete selezionare il collegamento
Chat, che trovate nella barra laterale sinistra. Cos facendo,
avete un elenco di tutte le chat in cui sono attivi i vari utenti
collegati, ordinati in base ai singoli nomi. Quindi, se per
esempio avete parlato con tre diversi visitatori, troverete
tutti i rispettivi messaggi che vi siete scambiati.

Estendere Drupal con i moduli

Scaricate il modulo

Dalle pagine ufficiali del CMS, scaricate


il modulo in formato tar.gz relativo alla
versione di Drupal che state utilizzando.
Se usate la 7.x, per esempio, assicuratevi
di procurarvi la 7.x del modulo. Tutte
le estensioni si installano allo stesso modo,
sia che si tratti di plug-in sia di temi grafici.

62

Linux pro 134

Installatelo

Entrate nella scheda Modules, quindi, nella


parte superiore della schermata, cliccate su
Install new module. Con questa funzione non
pi necessario copiare e incollare la cartella
dellestensione allinterno della directory
di Drupal. Basta semplicemente indicare
il percorso in cui il CMS trover il plug-in.

Ora abilitatelo

Tornate nel menu Modules, selezionando la voce


dalla barra delle opzioni in alto. Come potete
notare, avete a disposizione la lista di tutte le
estensioni attualmente installate in Drupal, anche
quelle non attive. Scorrete la schermata fino
a quando non trovate il modulo appena installato,
quindi mettete il segno di spunta su Enabled.

Drupal Tutorial
Stack BitNami
Gli stack Bitnami contengono tutto il
necessario per utilizzare una determinata
applicazione. Dal momento che ogni stack
autosufficiente, non dovete preoccuparvi
di alcun conflitto con altri software installati
sulla vostra macchina. Questa versatilit
rende Bitnami una piattaforma perfetta
per provare qualsiasi cosa, senza
per questo perdere tempo a cercare
dipendenze o istanze di vario genere.
per iniziare, scaricate BitNami Drupal

Stack 7.23 per Linux dal sito http://


bitnami.com/stack/drupal. Al suo interno
trovate Apache HTTp Server, MySQL
e pHp. per rendere eseguibile il file,
aprite il terminale e portatevi nella
directory dove lo avete scaricato,
quindi modificate i permessi:
chmod 755 bitnami-drupal-7.23-1-linuxinstaller.run
Adesso potete lanciare Drupal con:
./bitnami-drupal-7.22-0-linux-installer.run

Moduli combinati
per alcune estensioni, come Fivestar e DrupalChat, possibile
implementare nuove funzionalit installando altri moduli
aggiuntivi. Molto spesso, se fate attenzione, la maggior parte
di queste estensioni accessorie reperibile direttamente
nella pagina ufficiale del modulo primario. Se invece non
riuscite a trovarle subito, un conoscenza pi approfondita
del plug-in principale e il semplice filo logico delle
funzionalit, vi aiuteranno a cercarle spontaneamente.
Se sul vostro sito utilizzate un sistema per chattare,
ad esempio, abbastanza naturale che possano formarsi
nuove amicizie tra gli utenti che si ritrovano spesso a parlare
insieme. Da qui la necessit di un modulo che permetta
ai visitatori di identificare le persone in base al rapporto che
si instaurato. Ecco quindi che un plug-in come friendlist
trova un suo campo dazione. Se poi volete creare un vero
e proprio ambiente Social, forse meglio prendere
in considerazione Heartbeat. Questo modulo, infatti,
consente di tenere sotto controllo la partecipazione degli
utenti, ma anche le attivit che compiono nei vari ambienti,
cos come una supervisione sui profili e i commenti che
vengono scritti. Cercate sempre di non lasciare niente al caso,
evitando cos di trovare delle esternazioni pubblicate

A questo punto si avvia linstallazione


guidata tramite una procedura grafica.
una volta installata lo stack Bitnami,
potete utilizzare il file ctlscript.sh
che trovate nella directory drupal-7.23-1
con il comando:
./ctlscript.sh start
in questo modo Apache e MySQL vengono
avviati e potete accedere al vostro sito,
puntando il browser allindirizzo
http://localhost:8080/drupal.

sul vostro sito di cui potreste pentirvi amaramente.


In definitiva, il nostro intento farvi capire come la scelta
di utilizzare uno o pi moduli dipenda moltissimo dallattivit
che avete intenzione di sviluppare sulle vostre pagine.
navigare e selezionare le tante estensioni di Drupal pu
essere un lavoro lungo e per certi versi impegnativo,
ma unattivit di cruciale importanza. un consiglio
importante controllare sempre che dietro al modulo scelto
ci sia un team di sviluppatori attivo e capace di portare avanti
un programma organico di aggiornamenti continui. Se invece
il modulo in fase di sviluppo, meglio controllare
la presenza di estensioni simili, evitando di installare
un plug-in non ancora stabile e completo. un altro fattore
fondamentale da tenere in considerazione quando si sceglie
un modulo, la quantit di documentazione disponibile.
non tutte le estensioni sono semplici e immediate da usare
e se non volete passare ore e ore a capire come funziona
una determinata opzione, meglio avere a disposizione
una buona scelta di manuali e tutorial da cui attingere
al bisogno. Come detto, sono tutte considerazioni che
porteranno via tempo e probabilmente in alcuni casi
vi annoieranno, ma in compenso avrete un portale stabile,
efficiente e a prova di lamer. lXP

Tip
ogni menu
del pannello di
configurazione,
contiene una
serie di voci
accessorie che
consentono
di gestire fin nei
minimi dettagli
il CMS.

Configurare il modulo Advanced Poll

Impostazioni di default

Quando attivate il modulo Advanced Poll,


e create un sondaggio dopo aver definito
i permessi per gli utenti registrati e quelli
anonimi, troverete che il modulo non fornisce
quasi nessuna opzione avanzata di pubblicazione.
Queste ultime, infatti, sono disattivate
per impostazione predefinita.

Opzioni display

Andate in Structure D Content Types


D Advanced Poll D Menage Display.
Come vedete, tutte le opzioni avanzate
di visualizzazione del sondaggio sono nascoste.
per renderle visibili, dovrete selezionare le voci
una a una e trascinarle nella parte superiore della
tabella, esattamente sopra la dicitura Hidden.

Create un sondaggio

Dopo aver salvato le impostazioni, andate


in Content D Add content D Advanced
Poll. Ecco che adesso troverete disponibili tutte
le opzioni precedentemente attivate. Se avete
gi creato qualche sondaggio con il modulo
integrato di Drupal, potete convertirlo
in modalit avanzata con Advanced poll.
LInuX pro 134

63

Tutorial Xxxx
Raspberry
Pi
Raspberry

Pi Aprite il terminale
e prendete il controllo della vostra pi!

Come dominare
la riga di comando
Dimenticatevi il mouse e scatenate la vera potenza di Linux!

C
INTERMEDIO

ome avrete scoperto voi stessi, raspbian ha uninterfaccia


grafica similmente a quanto dispongono Windows e oS x,
tramite la quale svolgere le azioni di tutti i giorni,
informaticamente parlando. Gestione file, navigazione internet,
elaborazione di testi e cos via: ciononostante, a volte desiderabile
disporre di uninterfaccia pi potente, ed qui che entra in gioco
la CLI (Command Line interface) cio Interfaccia a Riga
di Comando: al posto di chiamarla irC, adotteremo langlofono

Programmi interattivi
La maggior parte dei programmi presentati
in questo articolo non sono interattivi, cio
non collaborano con lutente: una volta dato
il comando, bisogna aspettare che esso
si completi autonomamente. Ma questo
non il solo comportamento possibile:
per esempio, la prima volta che si attiva
raspbian sulla raspberry, parte il tool
di configurazione che prevede un menu
di scelta e quindi una interazione
con lutente. Altri programmi tipicamente
interattivi sono gli editori di testo, dove
lutente deve poter interagire scrivendo,

64

Linux pro 134

cancellando, aprendo e salvando i file.


Sono fondamentali per elaborare file di
configurazione, per esempio per sistemare
i guai quando la grafica non parte o per
controllare da remoto un sistema tramite
ssh. Editori di testo come nano, mcedit
o vim sono pi complicati da usare rispetto
alla facile interfaccia di Libreoffice, ma essi
funzionano l dove nessun elaboratore
di testi grafico pu funzionare: la riga di
comando. imparate a usarli e vi salveranno
in situazioni di emergenza: noi vi consigliamo
nano, ma dipende dalle vostre abitudini.

CLI unicamente per comodit anche se si possono usare termini


equivalenti come Shell (conchiglia) o Terminale. Questo tipo
di interfaccia puramente testuale, cio si digita un comando
e il computer stampa la risposta adeguata. Ammettiamo fin da subito
che pu essere considerato un metodo dispersivo e confusionario,
ma non temete: una volta acquisita un po di pratica e imparato
dove, cosa e come , tutto avr un chiaro senso e impiegare tempo
adesso per imparare sar un vero e proprio investimento per il
futuro. La prima cosa da sapere come arrivare alla riga di comando,
cosa fattibile dando in rapida sequenza due colpi di click sullicona
LXTerminal sul desktop della vostra raspbian: ecco cosa vedrete:
pi@raspberrypi ~ $
Questo chiamato Command Prompt e ogni volta che lo vedrete,
significa che il sistema pronto per ricevere un comando. Digitate
pwd, premete Invio e otterrete come risposta:
/home/pi
Se invece avete cambiato il nome utente (username), allora vedrete
qualcosa di diverso al posto del pi. il criptico comando pwd sta
per Print Working Directory che in italiano suona pi o meno come
stampa il nome della directory in cui mi trovo, insomma risponde
alla domanda: Dove sono?. Alla partenza di un Terminale, il sistema
lo apre in corrispondenza della home directory cio la casa
dove risiede lutente, o meglio, dove sono localizzati i suoi dati.
ora digitate ls e premete Invio: vedrete la lista dei file contenuti
nella vostra casa. una delle cose pi belle di un comando testuale
che gli potrete far fare esattamente ci che volete voi. Questa
flessibilit si ottiene grazie alle opzioni che si possono impostare
e di solito sono una lettera preceduta dal segno meno. per esempio,
se desideriamo elencare i file comprendendo nel risultato anche
quelli nascosti, (che per chi non lo sapesse, sono quelli che
cominciano con il punto .) ecco che bisogna aggiungere
il parametro relativo -a, parametrizzando il comando come segue:
ls -a. Questa volta, appariranno pi voci nel risultato. un altro
parametro utile per ls -l, che consente di visualizzare molte
pi informazioni sul singolo file: digitate ls -l e osservate le differenze
rispetto a prima. Le opzioni si possono combinare, ls -l -a ma sono
altres condensabili come segue: ls -la. inoltre i parametri sono
intercambiabili, cio -la fa lo stesso di -al.

Il comando giusto quando serve


A questo punto vi starete probabilmente chiedendo perch
si suppone che voi dobbiate sapere quale comando usare associato
a quale lista di parametri e soprattutto, per fare cosa. Beh, per voi
buone e cattive notizie, gente! La buona notizia che la lista dei
parametri viene fornita da... un altro parametro, di solito standard
e comune a tutti i comandi: -h, oppure, per esteso --help che
mostrer la lista dei parametri disponibili per quel particolare
comando e la spiegazione di cosa fanno. per esempio, digitando
ls --help, vedrete comparire una lunga lista di parametri
e relativa spiegazione, per esempio:

Raspberry Pi Tutorial
-a, --all
non nasconde le voci che iniziano con

-l
usa un formato di elenco lungo
La seconda e pi completa strada per sapere cosa fa un
comando usare man che la versione abbreviata (gli informatici
non amano scrivere molto) di manuale, inteso come libretto di
istruzioni. per vedere la pagina di man di ls, basta digitare man ls.
Vi potete spostare lungo la pagina del manuale tramite le classiche
frecce cursore su e gi, ma usando i tasti pagina su e pagina gi
andrete ovviamente pi veloci. per cercare una parola allinterno
della pagina, premete / e poi la parola di vostro interesse:
per esempio / -l evidenzier tutte le occorrenze di -l. A questo punto
premere n (o Shift+n) permetter di andare avanti (o indietro)
saltando da unoccorrenza allaltra finch si arriver a quella che
interessa. Man mano che introdurremo nuovi comandi, sar bene
che leggiate la relativa pagina man per prendere confidenza con
i vari parametri di lavoro per capire esattamente il potenziale del
comando. naturalmente, potrete cercare su un motore di ricerca
(https://startpage.com) ulteriori spiegazioni nel caso vi trovaste
scomodi con il manuale stampato a terminale... ma ragioniamo:
se cercate in internet una spiegazione su come usare la riga
di comando senza usare il comando man, allora forse meglio
se continuate a farvi spiare su Gmail o Facebook: qui si separano
gli uomini dai bimbi, per cui decidete da che parte stare.

Come faccio a saperlo?


Avevamo detto buone e cattive notizie: le buone le abbiamo dette
ora tocca alle cattive, e cio che non cos immediato trovare quale
comando usare per svolgere il particolare compito che vi serve,
soprattutto se non sapete cosa cercare. Bene, qui torna ancora
utile il comando man, associato al parametro -k. per esempio, per
cercare tutti i programmi che hanno attinenza con il browser, digitate
man -k browser e il sistema vi risponder con una lista di
programmi senza badare al fatto che alcuni sono a riga di comando
mentre altri funzionano in modalit grafica. Sappiate che potete
lanciare programmi grafici da riga di comando e a volte, perfino
influenzare quelli gi attivi. Se sulla raspberry installate Iceweasel
(una rinominazione del classico Firefox) e lo lanciate, allora potete
aprire una nuova scheda da riga di comando! Come? Ecco qui:
iceweasel --new-Tab il-sito-che-volete. non male, eh?
ora cominciamo a fare sul serio, parlando di alcuni programmi

Nel Terminale addirittura possibile visionare film! Un classico


come Guerre Stellari pu essere visto digitando telnet
towel.blinkenlights.nl. Preparate bibite e patatine!

Il completamento con il Tab


Avere a che fare con nomi di file lunghi
comodo ma noioso: una directory che
si chiama appunti_di_Analisi_1_corso_
professor_Rossi_anno_accademico_
2013-2014 ha il suo perch, ma
entrarci 20 volte al giorno comporta
scrivere cd appunti-blabla 20 volte
al giorno. per fortuna basta scrivere
cd a e poi premere il tasto Tab che

completer il nome. Certo, non magia:


se c anche una directory acqua,
lalgoritmo di completamento non sapr
se entrare in acqua o in appunti..., per
cui bisogna scrivere un numero di lettere
sufficienti perch non ci siano ambiguit:
aggiungere la seconda lettera del nome
risolve quindi il problema, cd ap e poi
Tab e il gioco fatto!

basilari: rm cancella (reMuve) un file mentre mkdir crea una nuova


directory, infatti il nome la contrazione di m(a)k(e)dir(ectory),
cio crea una directory. poi abbiamo cp che c(o)p(ia) un file
da un posto a un altro: ecco quindi un comando che necessita
di due argomenti, cio il nome del file di partenza e il nome
del file di destinazione. cat stampa il contenuto dei file passati come
argomento direttamente sul terminale. Abbiamo poi less che un
modo pi amichevole per leggere i file di testo in quanto permette
di muoversi su e gi tramite i soliti tasti freccia, mentre per uscire
dal programma sufficiente premere il tasto q. useremo i comandi
citati pi avanti nellarticolo, acciocch possiate sperimentarne
le funzioni. Da ultimo introduciamo find (trova) che con la sintassi
find <dove> <cosa> <parametri> permette di fare cose
interessanti: per esempio per trovare tutti i file che sono cambiati
nellultimo giorno si digiti:
find / -mtime 1
Ci sono molti dettagli di cui prendere visione e molti parametri
che illustreremo alla fine dellarticolo.

Diamo potenza!
A questo punto potreste dire che inutile imparare acronimi a volte
poco chiari per fare cose realizzabili anche via interfaccia grafica
e avreste ragione, ma solo perch non vi abbiamo illustrato tutto
quello che i comandi testuali possono fare. prima di tutto le wildcard:
si tratta di caratteri jolly che rappresentano una serie di altri
caratteri... confusi? Calma, facciamo degli esempi. prima di tutto,
creiamo una directory di lavoro, entriamoci e generiamo dei file vuoti
(usiamo il comando touch per creare dei file, uno per ogni
parametro aggiunto). Suggerimento: potete usare il tasto Tab per
evitare di digitare lunghe serie di caratteri, come nella seconda linea.
mkdir wildcards
cd wildcards
al posto di riscrivere wildcards digitate solo w e poi premete Tab:
il risultato sar risparmiare battute perch il sistema completer
la scritta aggiungendo ildcards.
touch one two three four
touch one.txt two.txt three.txt four.txt
ora con ls potrete vedere la lista dei file contenuti nella directory,
cio gli otto creati con il comando touch. il primo carattere jolly
che useremo *, cio lasterisco: esso corrisponde a ogni stringa
contenente qualunque numero di caratteri. nel suo utilizzo
base esso corrisponder a qualunque contenuto della
directory. proviamo con:
ls *
Ci non particolarmente utile, visto che equivale a dare ls
senza alcun parametro: per, aggiungendogli altri caratteri,
le cose cambiano.
ls *.txt
Fa vedere tutti i file che terminano con .txt mentre ls one*
Linux pro 134

65

Tutorial Raspberry Pi
mostrer tutti i file che cominciano con one. Si noti che i caratteri
jolly possono essere usati con qualunque comando nel Terminale:
per esempio, sono particolarmente utili per riordinare i file. Vediamo
come copiare tutti i file di testo in una directory dedicata:
mkdir file-di-testo
cp *.txt file-di-testo
poi possiamo accertarci della avvenuta copia con:
ls file-di-testo/

Il carattere ?
il secondo carattere jolly di cui parlare ?. Esso equivale a
qualunque carattere ma a differenza di *, il numero dei caratteri
pu essere uno solo. Secondo voi, a cosa corrisponde questo?
ls ???
provate a pensarci, lanciate il comando e vedete se ci avete
azzeccato. possiamo anche creare il nostro proprio filtro di caratteri
jolly, per poter filtrare in base alle nostre necessit. per esempio
[abc] accetter le lettere minuscole a, b e c. Secondo voi [ot]*
a cosa equivale? provate a digitare:
ls [!ot]*
notate il punto esclamativo: esso sta a indicare la negazione,
il risultato quindi sar tutto ci che non comincia con le lettere
o o t minuscole. i comandi visti fino a ora hanno mandato
giustamente il risultato sul Terminale per mostrarlo allutente.
il pi delle volte questo basta e avanza, ma a volte necessario
ridirigere il risultato dellelaborazione a un altro programma o verso
un file: per questultimo compito, si usa il carattere > seguito dal
nome del file contenitore del risultato. Digitate:
ls > prova
cat prova
il primo comando crea il file prova popolandolo con il risultato

Lutilizzo del comando sudo permette di lanciare comandi


con diritti di amministrazione pur non essendo amministratore

del comando ls, mentre il cat stampa il contenuto del file.


Abbiamo prima accennato al fatto di ridirigere il risultato
di un comando verso un altro comando, che lo considera
il proprio input. Questa possibilit consente di avere pi comandi
in una catena di input-elaborazione-output ripetuta: la maggior parte
dei comandi testuali sono realizzati per lavorare in questo modo:
oltre lo scopo di questo articolo approfondire questo argomento,
ma se proseguirete nelluso della CLi, sarete voi stessi a desiderare
di imparare come padroneggiarne la flessibilit duso. Facciamo
comunque un esempio: se eseguite il comando find / (aspettate
a digitarlo!) esso elencher tutti i file presenti nel sistema,
producendo una tempesta di scritte sul monitor. Ma piuttosto
che mandare a monitor il risultato, esso pu essere rediretto
verso un altro comando che ne faciliti la lettura, per esempio less.
provate a digitare:
find / | less
Abbiamo quindi introdotto loperatore | (il cui nome inglese pipe):
il suo lavoro prendere loutput del comando che lo precede
ridirigendolo verso linput del comando che lo segue. nellesempio
precedente mandare in pipe luscita di find verso less consentir
di leggere una schermata alla volta il risultato di find.

Un altro passo avanti

man forse il comando pi importante sui sistemi UNIX-like, perch spiega


il funzionamento di tutti gli altri comandi: prendete confidenza nel suo utilizzo e sar un
potente alleato. Anche man ha la sua pagina di man: digitate man man per vederla

Se la CLi fosse la maratona, noi adesso avremmo fatto solo i primi


tre metri: poco, vero, ma almeno sapete in che direzione andare
e ora che avete fatto i primi passi, la speranza che ci prendiate
gusto e proseguiate da soli. non una gara a chi arriva primo,
ma a chi arriva in fondo: di corsa o passeggiando tranquillamente,
limportante non fermarsi. Se vorrete (e dovreste!) saperne
di pi, presso www.linuxcommand.org troverete di tutto: il loro
libro The linux Command Line disponibile sia stampato che
gratuitamente in forma digitale allurL www.linuxcommand.org/
lc3_learning_the_shell.php. per chi non mastica linglese,
centinaia di siti italiani sono disponibili tramite i soliti motori di ricerca,
senza ovviamente dimenticare il capitolo dedicato al Terminale nella
titanica opera Appunti di informatica Libera dellitalianissimo
Daniele Giacomini.

Il comando Sudo
S(uper) U(ser) DO: cio fallo con diritti da
amministratore. Lavorando con la raspeberry,
le principali attivit si svolgono nella casa
dellutente, tipicamente /home/pi. inoltre
si in grado di vedere la maggior parte dei file
presenti sul sistema, anche se non si possono

66

Linux pro 134

modificare: inoltre non potete installare programmi.


Questo giusto, perch Linux concede il permesso
a svolgere attivit potenzialmente problematiche
solo a colui che si suppone sappia dove mettere
le mani cio lamministratore, noto anche come
super utente o root. Certo, a volte necessario

svolgere attivit di sistema, e raspbian lo sa: infatti


ha configurato lutente pi per usare il comando
sudo. provate con:
sudo apt-get install synaptic
tempo un minuto ed esso sar installato grazie
ai poteri temporanei concessi da sudo.

Raspberry Pi Tutorial
Da staccare e conservare Il Bigino della CLI
Muoversi nella CLI
cd cambia directory. Per esempio cd film sposta la posizione
corrente allinterno della directory film. cd ~ ci trasferisce nella
nostra home directory, cd / ci trasferisce nella directory radice
del sistema, cd .. ci sposta in alto di un livello nellalberatura
delle directory.
ls elenca i file (e directory) contenute nella directory corrente.
ls film mostra il contenuto della directory film, ls -a mostra tutti
i file, compresi quelli nascosti e ls -l mostra un maggior numero
di informazioni.
cp copia i file. cp sorgente destinazione copia sorgente
in destinazione, sovrascrivendone leventuale contenuto:
se la destinazione non esiste, viene automaticamente creata.
wget scarica un file da Internet. Se per esempio vogliamo
scaricare la pagina principale del sito dellAnsa sul nostro PC,
digitiamo wget www.ansa.it.
df -h mostra la quantit di spazio libero della periferica in uso.
pwd mostra la directory nella quale si sta operando.

Trovare i file
find <dove> <cosa> alcuni parametri molto utili sono -mtime
<numero> per permette di filtrare i file che hanno subto modifiche
negli ultimi <numero> giorni. <numero> pu essere un numero
come 2 (esattamente due giorni fa) -2 (da meno di due giorni)
oppure +2 (da pi di due giorni). -name <nome-file> cerca il file
chiamato, appunto, <nome-file>, mentre -iname <nome-file>
cercher sempre <nome-file> ma senza considerare differenze
tra lettere maiuscolo o minuscole, mentre il parametro -writable
cerca i file che sono modificabili, cio per i quali lutente ha diritto
di scriverci dentro ed eseguire quindi cambiamenti sugli stessi.
Ci sono molte pi opzioni delle poche qui illustrate, occorre leggere
la pagina di man per avere la lista completa. Combinando le opzioni
si pu raffinare la ricerca: per esempio, find / -mtime -2 -writable
cerca tutti i file che sono stati modificati da meno di due giorni
e che sono modificabili.

Lavorare da remoto
ssh consente laccesso via rete usando una connessione criptata
(Secure Shell). Il comando ssh pi@192.168.1.2 ci collegher
coi diritti dellutente pi sulla macchina di indirizzo 192.168.1.2:
ovviamente il comando funziona se sulla macchina remota
attivo il server ssh.
scp Secure CoPy, Il fratello criptato di cp. scp prova
pi@192.168.1.2:/home/pi copia il file prova nella home
directory dellutente pi sulla macchina 192.168.1.2. Viceversa,
scp pi@192.168.1.2:/home/pi/prova . prende il file prova dalla
home directory dellutente pi sulla macchina 192.168.1.2
e lo copia nella directory (indicata dal puntino . finale) locale
nella quale stato lanciato il comando. Anche qui, serve che sulla
macchina remota sia attivo il server ssh.

Caratteri jolly
* seleziona una stringa contente da 0 a N caratteri.
? seleziona un unico carattere.
[abc] seleziona i caratteri a, b, e c.
[!abc] seleziona qualunque carattere purch non siano
a, b, e c.
[A-Z] seleziona qualunque carattere nellintervallo
tra A e Z (maiuscole).

[A-z] seleziona qualunque carattere nellintervallo tra A


maiuscola e z minuscola.
[pippo, pluto] seleziona le stringhe pippo e pluto.

Informazioni sul computer


top mostra la lista dei programmi in attivit e relative informazioni
come luso di CPU e memoria.
uname mostra informazioni relative al kernel: per esempio,
uname -m mostra larchitettura della CPU in uso.
lscpu mostra informazioni relative alla CPU.
dmesg mostra i messaggi generati dal kernel, molto utile
per la diagnosi di problemi.

Gestire i file di testo


head mostra la prima decina di righe dellargomento passatogli:
il parametro -n <numero> modifica la quantit delloutput.
Quindi head -n 15 pippo mostra le prime 15 righe di pippo
mentre dmesg | head -n 20 le prime 20 delloutput di dmesg.
tail identico nelle funzionalit a head, ma per quanto riguarda
la parte finale: quindi dmesg | tail -n 20 mostra le ultime 20
delloutput di dmesg. Una particolarit utile il parametro -f, che
forza la ripetizione del comando senza ridigitarlo nel caso il file
oggetto cambi. tail -n 15 -f /var/log/syslog continuer a mostrare
i cambiamenti (cio le aggiunte) man mano che avverranno nel file
/var/log/syslog.
less permette di muoversi su e gi allinterno di un testo.
cat estrae un certo numero di caratteri da un testo, man cat
per i dettagli.
nano leggero e veloce editore di testi. Ctrl+X per uscire e salvare
le modifiche.

Tasti speciali
Ctrl+C uccide il programma che gira nel terminale.
Ctrl+D invia un carattere speciale EOF (Fine Del File)
al programma che gira nel terminale.
Ctrl+Shift+C copia il testo selezionato nella memoria
temporanea.
Ctrl+Shift+V copia il contenuto della memoria temporanea.

Installare software
tar zxvf file.tar.gz estrae i file da un archivio in formato .gz.
tar jxvf file.tar.gz estrae i file da un archivio in formato .bz.
./configure dopo una delle estrazioni precedenti, si sar creata
una directory: con cd <directory> si entra e con ./configure
si verifica che il sistema sia in grado di compilare i sorgenti.
make se la configurazione a posto, make far il lavoro pesante,
cio la compilazione. Attenzione, a volte servono ore se il software
molto grosso, quindi abbiate pazienza.
make install (va lanciato con diritti di amministrazione). Finita
la compilazione, questo comando provvede a installare il compilato
(e i vari file di appoggio) nelle posizioni corrette allinterno del filesystem.
apt-get gestisce linstallazione e la rimozione di pacchetti software:
apt-get install nano installa leditore di testi nano, apt-get purge
nano lo rimuove totalmente. apt-get update aggiorna la lista
dei pacchetti disponibili, (da lanciarsi prima del seguente) apt-get
upgrade, che provvede ad aggiornare i programmi presenti
sul sistema nel caso fossero pi vecchi di quelli disponibili in Rete.
apt-cache search <testo> cerca nellelenco dei programmi
disponibili tutti quelli che hanno attinenza con la parola <testo>. LXP
Linux pro 134

67

Tutorial Raspberry Pi
Tutorial Xxxx
Raspberry
Pi
NAS Ecco

come gestire al meglio un NAS


per tutte le nostre esigenze di rete

Come si usano i NAS

PARTE 3

Le reti locali Windows hanno stimolato i produttori di software e di hardware


a supportare il suo protocollo e Linux non fa eccezione alla regola

DIFFICILE

Lautore
Silvio Umberto
Zanzi
szanzi@
informazione.biz

el primo numero di questa serie di tutorial si esaminato


il NAS TS5200D realizzato da Buffalo. Si tratta di un
prodotto di alta qualit, con capacit RAID e unampia
dotazione di protocolli di rete. Uno di questi iSCSI, trattato
nel secondo articolo della serie, impiegato per esportare volumi
presenti su ununit di storage verso una rete locale o una rete
geografica. Il protocollo permette cio di creare astrazioni di dischi
rigidi per renderli disponibili ai sistemi affacciati sulla rete, siano
essi macchine Linux, Mac OS X oppure Windows. Una volta
collegati al sistema di destinazione possono essere utilizzati con
le normali logiche applicate dal sistema operativo locale per gestire
i dischi. In questo tutorial sar esposta la procedura per accedere
a risorse presenti in un sistema NAS e condivise con un protocollo
di alto livello, in grado di esportare non un volume, come in iSCSI,

ma oggetti del filesystem quali directory e file. Si intende cio


utilizzare protocolli di livello pi alto sulla gerarchia ISO OSI rispetto
a iSCSI. Vi sono diversi protocolli in grado di esportare le entit del
filesystem. Uno di questi NFS, celebre in ambito UNIX. Un altro,
largamente diffuso, il protocollo CIFS impiegato da Microsoft
per i sistemi Windows. Il protocollo ha origini molto lontane
nel tempo, quando MS-DOS era ancora il prodotto di riferimento
per gli utilizzatori di computer IBM PC e compatibili. Questo sistema
operativo a caratteri non disponeva di un supporto di rete locale
nativo ma era possibile modificarlo in modo che le chiamate
di accesso al disco locale potessero essere in qualche modo
tradotte per operare in un contesto di rete locale. Molti produttori
di terze parti implementarono soluzioni di questo genere.
Alcune di queste incontrano ampi favori di pubblico, diffondendosi
in modo molto esteso nel parco globale di sistemi PC compatibili.
Limpiego delle reti locali nel segmento dei personal computer ebbe
un forte impulso a partire dai primi anni novanta tramite Windows
for Workgroups di Microsoft, prodotto che implementava
nativamente il protocollo CIFS. Da allora la casa di Redmond
ha continuato a sviluppare il protocollo e a incrementarne
le funzionalit, rendendolo adatto sia a piccoli gruppi di lavoro
che a imprese di grandi dimensioni con centinaia o migliaia
di server. Il gradimento da parte del pubblico stato talmente
ampio da far soccombere quasi tutti i produttori di ambienti
alternativi di condivisione di rete di quel periodo. Il protocollo
di condivisione di Microsoft oggi uno standard di fatto
a cui lindustria deve essere in grado di conformarsi
in nome dellinteroperabilit.

Condividere con CIFS


Il metodo pi diffuso per esportare risorse CIFS consiste nelluso
di un computer dotato di Windows, client o server che sia.
Naturalmente questa non la strada che si intende seguire
sulle pagine di questa rivista. Verr piuttosto suggerito luso
di un sistema NAS per creare unarea file sui dischi a bordo
dellunit ed esportarla con CIFS. Si impiegheranno quindi
le funzionalit implementate nellunit, accessibili di solito
dal pannello Web di configurazione. Nessuna operazione
sistemistica perci sul versante server, condizione molto comoda
in ambito domestico, in studi professionali e piccole organizzazioni.
Si evita la complessit di gestione di un server e tutta la
manutenzione necessaria grazie alluso di una scatola dedicata.
Baster configurare il sistema Linux con i pacchetti necessari
al funzionamento di CIFS e fare in modo che vi sia una
configurazione capace di collegarsi alle risorse del NAS.

Qualche dettaglio di base


Attraverso il comando smbclient si pu eseguire una scansione delle condivisioni
CIFS presenti sul NAS (lunit TeraStation nellesempio)

68

LINUX PRO 134

Il protocollo CIFS si pone nei livelli pi alti della gerarchia di rete


ISO OSI, impilandosi negli strati di rete pi bassi che si occupano
di gestire trasporto, rete e sessione. Questo significa che CIFS
funziona a prescindere dai protocolli sottostanti, anche se oggi
si impiega in modo pressoch universale la pila TCP/IP. In passato

NAS Tutorial
era invece comune utilizzare CIFS sopra altri protocolli di rete,
magari proposti da produttori commerciali. Non vi erano problemi
di interoperabilit tra sistemi basati su TCP/IP e le controparti
basate su altri protocolli di basso livello. I dettagli del TCP/IP esulano
dagli obiettivi di questo tutorial e viene data per scontata una
corretta configurazione di rete con sistemi perfettamente in grado
di comunicare tra loro e accedere allambiente Internet esterno.
Sopra allo strato TCP/IP fornito dal sistema operativo necessario
installare i pacchetti per comunicare in CIFS. In ambito UNIX
viene impiegato un progetto longevo ed estremamente noto
chiamato Samba. Si tratta di un gioco di parole che sfrutta
le consonanti SMB che rappresentano il precedente nome
del protocollo, acronimo di server message blocks. A questa sigla
si sono aggiunte due lettere a ed ecco il senso di questo richiamo
brasiliano. Tutte le distribuzioni generaliste offrono il pacchetto
Samba allinterno dei propri repository e molte di queste installano
il sistema per default. Tutti i test per questo tutorial sono stati
eseguiti su una distribuzione CentOS. Per verificare la presenza
di Samba nel proprio sistema si pu digitare il comando illustrato
di seguito sulla shell del sistema:
smbstatus
Se il pacchetto presente, anche se magari non configurato,
si ottiene un output simile al seguente:
srvbo01 ~ # smbstatus
Samba version 3.6.9
PID Username
Group
Machine
------------------------------------------------------Service
pid machine
Connected at
------------------------------------------------------No locked files
Nel caso il comando generi un messaggio di errore da parte della
shell significa che il pacchetto Samba non presente nel sistema.
sufficiente utilizzare la seguente sequenza per linstallazione:
yum install samba
Il pacchetto verr installato in pochi istanti.

Configurazione di Samba
I file di configurazione di Samba sono presenti dentro la directory
/etc/samba. Il file di riferimento smb.conf. Per default viene
fornito un file ampio con molti parametri di configurazione corredati
da spiegazioni in lingua inglese. Si consiglia di mantenere
le impostazioni di default almeno inizialmente, fare pratica con
lambiente e in seguito consultare documentazione esaustiva, come
il manuale ufficiale di Samba. Il link per la documentazione
www.samba.org/samba/docs/man/Samba-HOWTO-Collection.
necessario modificare il parametro workgroup presente nella
parte iniziale della configurazione e modificarlo in base al gruppo
di lavoro CIFS che si intende usare. Il protocollo impone che ogni

Pannello per la creazione di una condivisione allinterno del NAS. Sono supportati
anche gli attributi speciali quali i file nascosti SMB e le cartelle di backup

macchina faccia parte di un workgroup o di un dominio ben preciso.


Si deve quindi indicare il nome del workgroup utilizzato in LAN
oppure scegliere il nome per un nuovo workgroup. In una
rete locale ci possono essere diversi workgroup operanti
in contemporanea sullo stesso mezzo, ma i client potranno far parte
di uno solo di questi gruppi di lavoro e per default vedranno
i computer membri di questo workgroup nelle liste della rete.
Un altro parametro da configurare server string. Questa la
descrizione a testo libero che compare di fianco al nome dei sistemi
quando si esegue uninterrogazione in rete (per esempio cliccando
su Risorse di Rete su Windows). Si consiglia di inserire unetichetta
che descriva la macchina in modo chiaro. Vi sono poi alcune opzioni
relative allautenticazione degli utenti al sistema locale ma queste
devono essere utilizzate se si desidera esportare risorse
del computer locale sulla rete. Nella parte finale del file
di configurazione sono presenti invece una serie di blocchi
che descrivono le condivisioni create con Samba nel sistema
locale, come nellesempio seguente:
[szanzi]
path = /home/szanzi
comment = Directory personale di Silvio Umberto Zanzi
available = yes
browsable = yes
public = yes
writable = yes
Allinterno del workgroup o del dominio specificato nella

ISO OSI
La denominazione ISO OSI ricorre spesso nella
documentazione tecnica che tratta di reti locali.
Si tratta di un modello teorico che suddivide
le funzioni di comunicazione in rete in sette strati
differenziati, ognuno con funzioni e scopi precisi. Uno
strato per esempio si occupa di trasmettere il segnale
fisico sul mezzo di comunicazione, uno provvede alla

comunicazione tra i nodi distinti attraverso blocchi


dati chiamati trame impiegando uno schema di
indirizzamento. Poi vi sono blocchi che si occupano
di definire il concetto di rete e gli indirizzi, a specificare
le modalit in cui i nodi della rete comunicano e cos
a seguire fino ad arrivare allapplicazione. I produttori
possono cos creare solo gli elementi di propria

competenza, schede di rete e relativi driver, stack


di comunicazione, protocolli di condivisione, ecc.
senza dover preoccuparsi di realizzare gli altri elementi
dato che ogni strato comunica con gli strati restanti
con modalit note. La suite TCP/IP conforme
al modello ISO OSI come pure lo sono i moduli
di rete presenti nei sistemi operativi.

LINUX PRO 134

69

Tutorial NAS
pub
Disk
Cartella pubblica
IPC$
IPC
IPC Service (TeraStation
TS5200D128)
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.3-31.
osstech]
Server
--------NAS1

Comment
------TeraStation TS5200D128

Workgroup
Master
--------------WORKGROUP
NAS1

Presso il sito ufficiale di Samba disponibile molto materiale tecnico per


lapprendimento di Samba (http://www.samba.org/samba/docs)

configurazione comparir una share denominata szanzi che punta


a /home/szanzi sul filesystem locale. Questa condivisione risulter
visibile e accessibile in lettura e in scrittura agli utenti abilitati.
Lobiettivo per utilizzare il sistema NAS come mezzo per
fornire condivisioni di directory in modalit CIFS. Si devono quindi
commentare tutte le righe precedenti con il simbolo di cancelletto
(#) e riavviare il servizio con il comando /etc/init.d/smb restart.
Si ricordi di eseguire il comando come root, utenza necessaria
anche per le operazioni che sono elencate nelle righe seguenti.

Condivisioni sul NAS


Si intende utilizzare il sistema Linux locale per accedere alle
condivisioni CIFS presenti allinterno del NAS create secondo le
modalit indicate nel box passo a passo a corredo di questo tutorial.
La condivisione che si desidera utilizzare si chiama pub presente
nellunit mappata allindirizzo di rete 192.168.0.50 nel workgroup
chiamato gruppo di lavoro. Per ottenere lelenco delle share
presenti sullunit Buffalo TeraStation usata in questo tutorial
tramite la shell si deve utilizzare questo comando:
smbclient -L 192.168.0.50
Loutput, dopo linserimento della password, il seguente:
smbclient -L 192.168.0.50
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.3-31.
osstech]
Sharename
Type
Comment
-----------------info
Disk
TeraStation Utilities

Si potr notare in alto la presenza della condivisione pub creata


appositamente per lo scopo. Questa considerata di tipo Disco
e ha la descrizione a testo libero Cartella pubblica. Ora si pu
eseguire il mount della condivisione sul proprio filesystem e avere
cos accesso alla condivisione in modo estremamente comodo.
Per farlo si deve creare una directory per laggancio dentro
/mnt. Questa verr chiamata con lo stesso nome della
condivisione, perci pub.
mkdir /mnt/pub
Per eseguire il mounting si deve impartire la seguente sequenza:
mount -t cifs //192.168.0.50/pub /mnt/pub -o user=<utente>,
password=<password>
Viene indicato il protocollo con il parametro -t, seguito dallindirizzo
completo della risorsa, il punto di aggancio sul filesystem e luser-id
e password per laccesso alla risorsa. importante per motivi
di sicurezza utilizzare credenziali che non siano identiche a quelle
usate dagli utenti della rete. Queste informazioni, come si pu
notare, sono indicate in chiaro sulla riga di comando e potrebbero
diventare parte di script di sistema. Potrebbero quindi essere
visionate da utenti non autorizzati. Prima di usare il comando
di mount si deve verificare la presenza del pacchetto cifs-utils
allinterno del sistema. Se non risulta presente necessario
installarlo tramite i meccanismi di gestione dei pacchetti.
Per rendere la configurazione permanente si consiglia di inserire
una riga allinterno del file /etc/fstab per fare in modo che
la condivisione sia agganciata in fase di boot del sistema. Qui di
seguito viene riportata la configurazione da applicare a /etc/fstab.
//192.168.0.50/pub
/mnt/pub
cifs username=<utente>,
password=<password> 0 0
Viene indicato il percorso UNC usando lindirizzo IP
(192.168.0.50) ed evitando risoluzioni DNS, seguito dal punto
di aggancio (/mnt/pub), il protocollo (cifs), le credenziali e i due
zeri finali per evitare le funzioni di dump e di verifica del filesystem
al boot del sistema. Indicare le credenziali in chiaro sui file di
configurazione comunque una situazione da evitare. possibile
migliorare la sicurezza trasportando le credenziali su un file
presente dentro una cartella utente protetta con gli appositi

Workgroup e dominio
Una rete basata su CIFS pu essere basata
su workgroup o su dominio. Nel primo caso
ogni computer ha un elenco locale di utenti
e autorizzazioni. Ogni client dispone di una
configurazione specifica che non condivisa con
gli altri nodi della rete. un metodo vantaggioso

70

LINUX PRO 134

in piccoli ambienti perch non richiede lacquisto


di un server ma implica che ogni volta che c
un nuovo utente si devono configurare i diritti su
tutti i client. Nel dominio esiste un server centrale
con lelenco di tutti gli utenti e lo scherma
di autorizzazioni. Queste informazioni sono inviate

ai computer membri in fase di log-on. Nessuna


configurazione richiesta a livello locale.
Quando c un nuovo utente in rete sufficiente
configurare le credenziali sul server a prescindere
per distribuire linformazioni a tutti i client presenti
in modo del tutto automatico.

NAS Tutorial
permessi. Il file di credenziali che si decide di usare viene
denominato .credenziali, creato dentro /home/szanzi.
Il contenuto del file avr questo semplice formato:
user=<utente>
password=<password>
sufficiente indicare user-id e relativa password. Una volta
salvato il file si applicano diritti 660. Ora si deve aprire
nuovamente il file /etc/fstab e modificare la riga relativa
alla condivisione in questo modo:
//192.168.0.50/pub /mnt/pub
cifs credentials=/home/szanzi/.credenziali,uid=szanzi 0 0
Viene cio indicato di utilizzare il file di credenziali /home/
szanzi/.credenziali e fare riferimento allutenza szanzi.
I dati saranno estratti automaticamente in fase di mount.
Utilizzando il medesimo principio possibile montare un numero
arbitrario di condivisioni CIFS create dentro il sistema NAS.
Ogni volta che si eseguir il riavvio del sistema si avr il mount
automatico della condivisione CIFS presente allinterno del NAS
e sar possibile leggere e scrivere file e directory al suo interno
semplicemente accedendo a /mmt/pub. Samba un progetto
centrale nel panorama aperto in quanto ponte verso i protocolli
di rete di alto livello impiegati sui sistemi Microsoft cos ampiamente
diffusi. Qualunque sistema Linux pu far parte di un workgroup
o di un dominio Microsoft grazie a questo progetto. Laspetto
interessante che la maggior parte dei produttori di NAS impiega
proprio Samba per fornire il supporto a CIFS allinterno dei prodotti.
Tutti i prodotti che impiegano varianti di UNIX sfruttano in qualche
modo Samba. Questa condizione la norma su quasi tutti
i prodotti di fascia domestica e di tipo professionale medio. Vi sono
comunque anche prodotti NAS che impiegano al loro interno una
versione specifica di Windows proprio per i sistemi di storage. LXP

Se si utilizza la modalit di dominio necessario specificare qual il controller


di dominio sulla rete e indicare le credenziali di amministrazione sul dominio

Samba e lo standard CIFS


Samba un progetto notevole che
ha avvicinato UNIX allambiente di rete
di Microsoft, permettendo anche lesistenza
di un parco ampio di prodotti NAS
dal costo accessibile. Il progetto utilizza
le informazioni pubbliche disponibili
sul protocollo CIFS oltre che una serie
di informazioni ricavate attraverso lo studio
dei protocolli. Alcuni aspetti dellambiente

di rete di Microsoft non sono infatti


accessibili pubblicamente, in particolare tutti
i dettagli avanzati sui domini implementati
nelle ultime versioni di Windows Server.
Il progetto fornisce quindi un buon grado
di compatibilit ma non un supporto totale
di tutte le funzioni di Windows Server.
Questo in genere sufficiente per
la maggior parte delle applicazioni.

Passo passo Condividere le cartelle


I sistemi NAS erogano il protocollo CIFS per la condivisione di cartelle
allinterno di una rete locale. Le modalit di creazione e configurazione
sono semplici, veloci e non richiedono conoscenze approfondite.

Attivare SMB/CIFS

I NAS di qualit dispongono


di molti protocolli di rete ma questi
sono generalmente disattivi per
default. Non una pratica sicura
esportare protocolli di condivisione
che non sono stati configurati
in maniera attiva. Bisogna perci
accedere alla sezione delle
condivisioni e attivare il protocollo
CIFS/SMB, come evidenziato
dal box rosso.

2 Condividere
la cartella

Si procede con la creazione


della cartella allinterno dellarea
di memorizzazione del sistema
NAS. La condivisione identificata
da un nome univoco con cui sar
annunciata in rete, senza spazi.
Per ogni cartella si possono
specificare i protocolli con cui
sar esportata. importante
selezionare il protocollo CIFS/SMB.
Si consiglia di disattivare i protocolli
che non si intendono usare sulla
propria rete locale.

Si tratta cio di una attivit alla portata di utenti con una cultura informatica
media. Niente file testuali da editare e nessuna necessit di conoscere
decine di oscure keyword.

3 Permessi
di accesso

Le cartelle condivise sul NAS


possono essere accessibili a tutti
oppure possono essere esportate
con restrizioni basate sugli utenti.
Per farlo si devono abilitare
le restrizioni e poi specificare
quali operazioni possono compiere
gli utenti configurati sul NAS.
Lelenco degli utenti dovr
essere stato precedentemente
creato sullapposita sezione
di configurazione.

Nome workgroup

Per completare le operazioni


di configurazione si deve verificare
di avere inserito il corretto nome
di workgroup. bene anche
controllare che lunit sia
configurata con un indirizzo IP
statico noto. Indirizzi variabili basati
sul DHCP non sono una buona idea
per unit di importanza centrale
come i NAS. In caso di cambio
di indirizzo, la configurazione
sui client Linux non cambierebbe
di conseguenza ma richiederebbe
un intervento manuale.
LINUX PRO 134

71

Tutorial
Crittogra
Tutorial
Ardoura3Creare

una serie di chiavi


criptate per blindare la posta elettronica

Crittografia asimmetrica
Entrate nel mondo degli algoritmi asimmetrici usati nella crittografia a chiave pubblica
e scoprite come creare una coppia di chiavi per sfruttare pGp nelle email al meglio

I
FACILE

l tema della privacy sulla cresta dellonda oramai da parecchio


tempo. Mentre tutti si preoccupano di grandi nomi come
Facebook e Google, la maggior parte delle persone si dimentica
di uno dei sistemi pi utilizzati per scambiare messaggi: la posta
elettronica. Se siete in ansia per i dati che scorrono sulle pagine
dei Social network, o di quelli che potrebbero essere carpiti da Big G,
forse dovreste dare unocchiata alle email. intercettare un messaggio
di posta elettronica in chiaro nel suo percorso tra un mittente
e un destinatario piuttosto semplice. Ci significa che chiunque
abbia un minimo interesse a leggere le vostre conversazioni
e conosca un po i protocolli Web, pu mettersi comodamente
seduto e spiarvi senza grandi difficolt. Questo a meno di non usare
la crittografia a chiave pubblica che, se applicata ai messaggi di posta
elettronica, pu nasconderne il contenuto a occhi indiscreti.

Un po di storia

Lultimo passo
per la creazione
delle chiavi
PGP richiede
linserimento di
una passphrase

per molti anni la crittografia standard ha sofferto di un problema


di fondo che si trasformato in una vera e propria debolezza.
in sostanza, per mantenere sicura una trasmissione, era necessario
usare la stessa chiave tanto per crittografare, quanto per decifrare
il messaggio. Dovevate quindi inviare le istruzioni di codifica
al destinatario, cos da consentirgli di decifrare il contenuto della
trasmissione. Chiaramente, se esistesse un modo per inoltrare una
chiave senza che nessuno ne entri in possesso, non sussisterebbe
il problema di crittografare le email. Ed qui che, con luso della
crittografia a chiave pubblica, si trova definitivamente una soluzione
per evitare il passaggio della chiave di codifica tra mittente
e destinatario. La crittografia a chiave pubblica, infatti, utilizza una
coppia di chiavi, anche se in realt sarebbe pi corretto affermare
che si tratta di due parti della stessa. Queste chiavi prendono il nome
di pubblica e privata, e mentre la prima necessaria per crittografare
il messaggio, la seconda indispensabile per decodificarlo. Allatto
pratico, potete tranquillamente inviare tramite canali non sicuri

Opzioni grafiche
per interfacciarci con gpg abbiamo usato il terminale. Se per
preferite un approccio pi semplice, esistono numerose interfacce
grafiche disponibili. Chi usa GnoME pu sfruttare Seahorse,
mentre gli affezionati di KDE possono servirsi di kgpg. Entrambi
hanno le stesse funzioni di gpg, ma vi permettono di utilizzarle
in modo pi semplice. Seahorse si occupa anche di chiavi SSH.

la vostra chiave pubblica, perch non serve ad altro se non a criptare


i messaggi, e pertanto del tutto inutile a chi cerca di leggere
le vostre email di soppiatto. per chiarire meglio il concetto, facciamo
un esempio. Supponete di avere un messaggio da spedire a Mario
che volete mettere al sicuro in un pacco con un lucchetto chiuso
a chiave. A questo punto chiedete al vostro amico di spedirvi il suo
lucchetto aperto (chiave pubblica), la cui chiave viene custodita
solo da lui (chiave privata). una volta ricevuto il lucchetto, con esso
chiudete il pacco con allinterno il messaggio. Lo spedite e quando
arriva, essendo Mario il solo ad avere la chiave, riesce ad aprirlo
e leggere ci che gli avete scritto. in nessuna delle due fasi
di trasmissione, invio del lucchetto aperto e del pacco chiuso
a chiave, sar possibile conoscere il contenuto del pacco. La prima
pubblicazione in cui si parla di crittografia asimmetrica risale al 1977
ad opera di rivers, Shamir e Adleman (da qui il nome rSA). Questo
nonostante Clifford Cocks, un illustre matematico britannico, avesse
sviluppato un sistema simile nel 1973. il lavoro di Cocks, essendo
stato svolto sotto il GCHQ, stato classificato top secret e quindi
rimasto secretato fino al 1997. Pretty Good Privacy, che tutti
conosciamo meglio con lacronimo di PGP, stato il primo e pi
popolare programma a utilizzare la crittografia asimmetrica.
nonostante sia poi diventato un prodotto commerciale, il principio
stato utilizzato per impostare numerose varianti open Source,
tra cui Gnu Privacy Guard (GpG). Da qui in poi, quindi, parleremo
di pGp per fare riferimento al protocollo, mentre GpG per parlare
del programma.

Creare le chiavi
per creare le chiavi, cos come per la maggior parte delle operazioni
con GPG, viene utilizzato il programma omonimo. Aprite quindi
il terminale e come semplici utenti scrivete:
gpg --gen-key
Vi verranno poste una serie di domande, a cui potete rispondere con
le impostazioni di default. Lunico consiglio che vi diamo di
impostare una scadenza per la chiave. Essendo la prima che create,
potete concedergli almeno un anno di vita, dopodich cesser
automaticamente di essere valida. Vi viene poi chiesto di scegliere
una passphrase, che consigliamo di impostare con cura. Chiunque
se ne impossessi, pu prendere il controllo delle vostre chiavi. Adesso,
in ~/.gnupg, dovreste avere due nuovi file secring.gpg e pubring.
gpg. il primo contiene la vostra chiave privata, il secondo quella
pubblica, ma questultimo verr utilizzato per contenere anche tutte
le chiavi pubbliche delle persone con cui siete soliti scambiare

72

Linux pro 134

Crittografia Tutorial
messaggi. Per visualizzare lelenco completo di entrambe le chiavi,
pubbliche e private, memorizzate nel sistema, scrivete:
gpg --list-public-keys
gpg --list-secret-keys
Ora avete una chiave pubblica, ma questo non significa che i vostri
contatti ne siano a conoscenza. Tecnicamente dovreste inviarla
ai destinatari, ma c un modo pi veloce e funzionale per
raggiungere la maggior parte delle persone: caricarla su appositi
server. Al loro interno sono contenuti i riferimenti pubblici di tutti
gli utenti che sfruttano lo stesso tipo di sistema crittografico.
Per conoscere la chiave pubblica di un altro utente, basta pertanto
cercare il corrispondente indirizzo email. Non contenendo alcun dato
sensibile, n informazione privata, memorizzare la chiave pubblica
su un key server la soluzione migliore per dare la possibilit
a chiunque di scambiare messaggi crittografati con voi. Per caricare
una chiave necessario reperire lID di questultima e lindirizzo del
server. Il comando list-public-keys mostra lID della vostra chiave
(esattamente come fa list-secret-key per quella privata):
% gpg --list-public-keys
/home/pocker/.gnupg/pubring.gpg
----------------------------pub 2048R/3AFE4A64 2013-09-30 [scadenza: 2014-09-30]
uid
Redazione Linux Pro (Test) <red.lxpro@test.it>
sub 2048R/236C1D53 2013-09-30 [scadenza: 2014-09-30]
In questo caso lID della chiave 3AFE4A64. La parte precedente,
vale a dire 2048R, indica invece il tipo di chiave, che a 2.048
bit RSA. Ecco quindi un esempio per caricare la chiave pubblica
su un key server:
gpg --keyserver hkp://keys.gnupg.net --send-keys 3AFE4A64

Usare PGP nelle email


Gli utilizzi di PGP nellambito della posta elettronica sono
essenzialmente due: la crittografia e la firma. Entrambi vengono gestiti
dalla maggior parte dei client, anche se alcuni, come Thunderbird,
richiedono linstallazione del plug-in Enigmail. Quando inviate
unemail crittografata con PGP, la chiave pubblica del destinatario
vi servir per cifrare una chiave convenzionale necessaria a usare
un algoritmo di crittografia simmetrica. Questultimo, a sua volta,
necessario per criptare il testo del messaggio e renderlo quindi
illeggibile. Chi riceve la vostra email, deve cos usare la chiave
convenzionale inclusa nellemail per leggerne il contenuto. Ed qui
che entra in campo la chiave privata del destinatario, senza la quale
non pu decodificare la chiave convenzionale per lalgoritmo
simmetrico. Solo una volta che la chiave privata ha decifrato quella
simmetrica, sar possibile leggere in chiaro il contenuto dellemail.
Questa particolare modalit di funzionamento, oltre allaltissimo
standard di sicurezza, ha anche altri vantaggi. Per esempio potete
inviare uno stesso messaggio a pi destinatari senza generare copie
multiple cifrate. Tutti coloro che possiedono le proprie chiavi private,
possono decifrare quella simmetrica contenuta nellemail. Laltro
utilizzo di PGP cui abbiamo accennato allinizio del paragrafo riguarda
laggiunta della firma elettronica. In questo caso, pur non
crittografando il messaggio, viene allegata una firma che non
facciamo fatica a definire una sorta di checksum creato con la chiave
privata, la quale pu essere verificata a sua volta con la chiave
pubblica. In pratica, una volta spedita lemail, non pi possibile
apportare modifiche al contenuto. per questo che allegare
una firma elettronica PGP a un messaggio di posta elettronica un
ottimo modo per garantire lintegrit del testo. Potete quindi utilizzare
PGP per firmare automaticamente le email, ma prima ricordatevi di
pubblicare la vostra chiave pubblica su uno dei tanti key server, cos
che il destinatario possa scaricarla in modo automatico e verificare

la firma. A questo punto potreste domandarvi come sia possibile


sapere se la chiave pubblica che stata caricata su un server
corrisponde proprio alla persona a cui volete inviare un messaggio,
quando potrebbe essere stata caricata facilmente da chiunque altro.
Una conferma del genere si basa sulla creazione di una rete
di fiducia, che prevede la verifica di una chiave solo dopo averne
conosciuto fisicamente il possessore. Per fare un esempio, possiamo
ricapitolare il funzionamento di questa rete cos:
Simone incontra Mario e gli chiede di firmare un paio di chiavi.
Mario incontra Marco e ancora gli chiede la firma di altre chiavi.
Simone invia a Marco unemail firmata e questultimo sa che
proviene davvero da Simone, perch Mario, di cui Marco si fida,
fa da garante.

Con gpg-key2ps
potete creare
un foglio pronto
per la stampa,
contenente tutti
i riferimenti per
i bigliettini da
scambiare ai Key
Signing Party

Key signing
Se partecipate alle conferenze sul mondo Open Source, scoprirete
come sia perfettamente normale utilizzare le firme PGP. Esistono per
esempio i cos detti Key Signing Party, vale a dire vere e proprie
convention in cui chi usa la crittografia PGP e GPG ha la possibilit
di firmare la chiave degli altri, estendendo cos la propria rete
di fiducia. Basta stampare una serie di bigliettini con i propri dati e lID,
farsi avanti e infine caricare la versione firmata delle chiavi sui key
server. Unapplicazione che pu gestire tutti i dettagli signingparty. Installatelo e lanciate il comando:
gpg-key2ps TuoID | lpr
per stampare una pagina di bigliettini con i vostri dati. Per creare
un file PS, invece, usate il comando:
gpg-key2ps -p a4 TuoID -s > nome_file.ps
Se invece avete una serie di chiavi che volete firmare, potete usare
il comando caff del pacchetto signing-party. Basta farlo seguire
dallelenco di ID e pensa lui al resto:
caff ID1 ID2 ID3...
Caff ha bisogno di un file di configurazione, che viene creato
in automatico in ~/.caffrc la prima volta che lo si lancia. Al suo
interno sono riepilogati il vostro nome e la relativa email, quindi
vi consigliamo di dargli unocchiata per verificare che siano corretti.
Caff prelever quindi le chiavi dal server, le firmer e poi
provveder a inviare unemail cifrata ai rispettivi proprietari.
La codifica assicura che la persona a cui viene inviato il messaggio
sia il proprietario delle chiavi, in quanto solo lui potr decifrare la
chiave firmata. Quando invece siete voi a ricevere la chiave firmata
da qualcuno, baster caricarla sul server allo stesso modo. LXP
Linux pro 134

73

Tutorial
MediaWiki
Tutorial
Ardour Create
3

la documentazione
per il vostro Software Libero preferito

Documentazione al volo
Le comunit che divulgano il Software Libero hanno costante bisogno di aiuto
per creare documentazione allaltezza dei loro progetti. Aiutateli con MediaWiki
a chi vuole avvicinarsi a un determinato software. E il mondo
Open Source, in quanto a disponibilit di documentazione
online, senza dubbio il pi prolifico. Usando MediaWiki,
la stessa applicazione alla base di siti come Wikipedia
(http://it.wikipedia.org) e Wikitravel (http://wikitravel.
org/it), potrete cimentarvi nella creazione di un portale
pensato per accogliere qualsiasi tipo di documentazione,
realizzando cos una vostra comunit di appassionati.

facile

Le dipendenze

uante volte, usando un software, vi siete bloccati


davanti a un problema senza sapere come
procedere? La prima reazione quella di provare
a risolvere con le sole proprie forze, ma se non si riesce
nellintento ecco che ricorrere al Web diventa lunica
alternativa. una situazione comune a tutti, cos come andare
alla ricerca della causa usando i motori di ricerca, magari
sperando che qualcuno abbia incontrato lo stesso errore
e sia riuscito a risolverlo, condividendo la soluzione in un
forum o in un vero e proprio Wiki. Il Web pieno di progetti
di questo genere, in cui appassionati ed esperti mettono
a disposizione le loro esperienze per rendere la vita pi facile

Per questo tutorial abbiamo usato Mint 15 e quindi, se state


utilizzando una distro basata su Debian, sarete in grado
di seguire il tutorial passo passo senza problemi. Se vi servite
del gestore pacchetti Synaptic, troverete MediaWiki piuttosto
velocemente, anche se probabilmente sar necessario
cercarlo nei risultati pi nascosti alla fine della coda di ricerca.
Ricordatevi che per installare MediaWiki avete bisogno di una
pletora di software aggiuntivi: server Web Apache, database
MySQL lultima versione di PHP, pi il carico di librerie per
far lavorare tutto insieme. Scaricando il pacchetto MediaWiki
dal gestore applicazioni, non ci sar bisogno di perdere tempo
alla ricerca di tutte le dipendenze, perch verranno installate
automaticamente e senza bisogno del vostro intervento.
Nella maggior parte dei casi, il software installato tramite
il gestore pacchetti verr visualizzato nel menu Applicazioni.
Per funzionare a dovere, MediaWiki ha bisogno di essere
configurato, ma se seguite il tutorial vi basteranno solo pochi
minuti per completare tutte le operazioni.

Installare MediaWiki

Create una password per il database

Mentre il vostro gestore di pacchetti si sta dilettando nellinstallazione


di MediaWiki, vi verr chiesto di fornire una password di root per MySQL.
Non confondetela con la solita password di root che, per motivi di sicurezza,
dovrebbe essere una parola diversa.

74

Linux pro 134

Spostate la directory Web

Troverete la cartella di MediaWiki in /var/lib. Premete Alt+F2 per aprire


il prompt dei comandi, quindi scrivete gksudo caja (se state usando Mate)
o gksudo nautilus (se utilizzate GNOME o Cinnamon). Adesso trascinate
MediaWiki da /var/lib in una nuova cartella /var/www che dovete creare.

MediaWiki Tutorial

Rendete eseguibili i file

Nel file manager con privilegi di root (ecco spiegato sudo prima del comando
Caja/Nautilus), fate click destro sulla cartella MediaWiki e scegliere
Propriet D Permessi. Modificate i valori di Accesso alla cartella con
Creare ed eliminare i file e selezionate Applica permessi ai file contenuti.

Impostate il database

Vi verranno fatte alcune domande circa il database. Rispondete secondo


le esigenze, ricordandovi poi di inserire la password di MySQL che avete
impostato al primo passaggio. Tutti gli altri campi potete lasciarli come sono,
a meno di non installare MediaWiki su un server gi online. In questo caso
avrete bisogno di chiedere altri dettagli al vostro provider.

Errore!

Digitate http://localhost/mediawiki in Firefox e vedrete la schermata sopra


riportata. LocalSettings.php not found si presenta come un messaggio
di errore. perfettamente normale e infatti, nei prossimi passaggi, creerete
il file LocalSettings.php. Procedete selezionando Set up the wiki.

Configurate i dettagli per laccesso

Nella schermata successiva, potete tranquillamente lasciare le impostazioni


predefinite, dopodich vi verr richiesto di fornire un nome con cui identificare
il Wiki e creare un account amministratore. Alla fine premete Im bored
already, just install the wiki, per saltare i successivi passaggi, che talvolta
possono dare origine a un fastidioso bug.

Download LocalSettings.php

In un paio di click sarete invitati a scaricare LocalSettings.php, il file in


cui MediaWiki ha appena salvato tutte le impostazioni appena configurate.
Trascinate il file allinterno della cartella mediawiki che avete
precedentemente messo in /var/www, quindi selezionate Enter Your
Wiki. Come per magia, compare un portale in perfetto stile Wiki, pronto
per essere utilizzato da voi e dai vostri visitatori per aggiungere contenuti
e informazioni su qualsiasi argomento. A questo punto ci sono un paio
di considerazioni da fare. Nel primo caso, se avete gi un dominio
e un server Web, potete tranquillamente pubblicare online il vostro Wiki.
Se invece non vi siete ancora premuniti, e non avete ancora scelto
un provider che ospiti il progetto, vi consigliamo di approfondire
le caratteristiche dello spazio che andate ad acquistare, ricordando
che sono necessari Apache, MySQL e PHP. Se avete gi fatto le dovute
verifiche, non vi resta che iniziare la vostra avventura! LXP
Linux pro 134

75

Concetti

Ritorno alle basi:


lavorare con i moduli
Lo staff di Linux Pro vi rivela una metodologia fondamentale per la gestione
della complessit dei vostri programmi e per dare loro una struttura ben definita

egli ultimi articoli sulla programmazione abbiamo visto


come essa sia fondata sulla gestione della complessit,
vi abbiamo inoltre introdotti ad alcuni strumenti
e tecniche che aiutano i programmatori a gestire questo
problema. Le variabili, la definizione di funzioni e la
programmazione a oggetti sono tutti strumenti utili a questo
scopo. Una cosa che non abbiamo ancora trattato, in parte
perch non ci si avvicina a questo strumento finch non
si iniziano a scrivere programmi molto estesi, il concetto
di modulo e di namespace.
Comunque, se avete mai
scritto un programma
di qualsiasi dimensione,
anche solo qualche centinaio
di righe, questo uno
strumento di cui siete
sicuramente alla disperata
ricerca. Vi sarete sicuramente resi conto di quanto diventi
sempre pi difficile leggere il codice mano a mano che questo
cresce. Le funzioni sembrano sovrapporsi luna alle altre,
e quando avete cercato di trovare la causa dellultimo
problema riscontrato, vi sarete trovati in difficolt nel ricordare
esattamente dove avete definito quella specifica variabile.
Questi problemi sono causati da una carenza di struttura.
Con tutto il codice in un unico file, molto difficile riuscire
a determinare le dipendenze tra i vari elementi del vostro
programma, in sostanza, quali parti dipendono da quali altre
affinch il lavoro sia fatto, ed complesso visualizzare il flusso
di dati che attraversa il programma. Mano a mano che il vostro
codice cresce in lunghezza, iniziano a comparire altri problemi,
per esempio, potreste scontrarvi con il grattacapo dei nomi
doppi, se per esempio parti differenti del vostro programma
richiedono delle funzioni chiamate somma (quando dovete
sommare interi o frazioni in programmi matematici), oppure
potreste aver scritto una funzione utile anche per altri
programmi su cui state lavorando, in questo caso lunico modo

per poterla riutilizzare utilizzare il rischioso metodo


del copia e incolla, soggetto a errori e che presenta
soprattutto grossi problemi di modifica.

Districare la matassa
I moduli sono un ottimo modo per risolvere tutti questi
problemi, vi permettono di dare una struttura al vostro codice,
vi evitano il problema dei conflitti di nome, e rendono molto
semplice la condivisione di codice utile tra diversi programmi.
non ci sono dubbi
sul fatto che
abbiate gi usato
praticamente
in ogni vostro
programma Python
i moduli built-in
o di terze parti
per aggiungere funzionalit extra. Per esempio, optparse
che abbiamo utilizzato in un articolo recente. Lo abbiamo
incluso nel nostro programma utilizzando lo statement
import, in questo modo:
import optparse
Dopo aver inserito questa riga in testa al nostro programma
Python, abbiamo avuto magicamente accesso a moltissime
funzioni che ci hanno permesso di gestire le opzioni ricevute
dalla linea di comando. Per accedere a queste funzioni
abbiamo dovuto scrivere il nome del modulo, seguito
dal nome della funzione che volevamo eseguire:
optparse.OptionParser()
Questa sintassi ottima dal punto di vista della leggibilit.
nel nostro clone di cat, non abbiamo dovuto districarci
in un mare di codice per leggere gli argomenti, abbiamo
potuto invece concentrarci sulla parte di codice adibita
alla visualizzazione a schermo del contenuto dei file. Inoltre,
non abbiamo dovuto preoccuparci di utilizzare dei nomi che
potessero collidere con quelli presenti nel modulo optparse,

Mano a mano che i programmi


crescono in lunghezza, iniziano
a comparire vari problemi

Lo stile di Python
Anche se molta gente pensa che Python sia
un linguaggio moderno, in circolazione sin
dai primi anni 90. Come per ogni linguaggio
in attivit da molto tempo, la gente che lo utilizza
si specializzata molto, imparando qual
il modo migliore per impiegarlo, per risolvere
i problemi pi comuni che si possono incontrare,

76

LInUx PRO 134

e per rendere il proprio codice leggibile


per i collaboratori o chiunque altro debba
lavorarci (incluso il programmatore stesso).
Se siete interessati a scoprire di pi su queste
pratiche comuni in Python, esistono due risorse
molto utili da cui partire:
http://python.net/~goodger/projects/

pycon/2007/idiomatic/handout.html
(in inglese)
http://www.python.org/dev/peps/pep0008/ (in inglese)
Leggendo queste informazioni avrete
la possibilit di dare uno sguardo molto in
profondit allinterno del linguaggio Python.

Concetti
perch erano tutti nascosti allinterno del namespace
di optparse, e riutilizzare il codice presente nel modulo
tanto semplice quanto scrivere import optparse senza
la necessit di noiosi copia e incolla.

Come funzionano i moduli


Il termine moduli pu sembrare stravagante e potreste
pensare che siano complicati da utilizzare, ma, almeno per
quanto riguarda Python, sono semplicemente dei normalissimi
file. Potete provarlo voi stessi. Create una nuova directory
e allinterno di essa create il file fatto.py. Al suo interno,
definite una funzione che restituisce il fattoriale di un numero:
def fattoriale(n):

risultato = 1

while n > 0:

if n == 1:

risultato *= 1
else:

risultato *= n

n -= 1

return risultato
Ora, create un secondo file Python chiamato eseguiMat.py.
Al suo interno, per prima cosa importate il modulo che
avete appena creato e quindi eseguite la funzione fattoriale,
e stampate il risultato a video:
import fatto
print fatto.fattoriale(5)
A questo punto eseguite il file eseguiMat.py: dovreste
vedere 120 stampato a video. Dovreste aver notato
che il nome del modulo semplicemente il nome del file,
nella stessa directory, decurtato dellestensione. Possiamo
chiamare ogni funzione definita allinterno del file scrivendo
semplicemente il nome del modulo, seguito da punto
e dal nome della funzione.

I percorsi in Python
Rimane una domanda: come fa Python a sapere dove guardare
per trovare questi moduli? La risposta che Python ha un set
predefinito di posti dove guardare se esiste un file con il nome
richiesto. Per prima cosa controlla tra i moduli built-in, la cui
posizione definita quando si installa Python; poi cerca tra una
lista di directory conosciuta come path. Questo path molto
simile alla variabile di ambiente $PATH della shell Bash: utilizza
la stessa sintassi, e serve le stesse funzioni. Si differenzia, comunque,
per quanto riguarda la generazione del suo contenuto in Python.
Inizialmente, i percorsi presenti nel path sono i seguenti due:
la directory contenente lo script che sta eseguendo limport
PYTHONPATH, che consiste in un set di directory
predefinito nellinstallazione.
Potete controllare il contenuto del path nel vostro ambiente
Python importando il modulo sys e ispezionando lattributo
path (sys.path). Una volta che un programma in
esecuzione, esso pu modificare il contenuto del path
e aggiungere altri percorsi.

Lo scope delle variabili nei moduli


Prima di lanciarvi nella scrittura dei vostri moduli, c unaltra
cosa che dovete sapere: lo scope delle variabili. Abbiamo
gi parlato del concetto di scope, ma per dare una rinfrescata
veloce, esso la parte del programma da cui sono accessibili
determinate variabili. Per esempio, un modulo di Python pu
contenere il seguente codice:

Spezzando il vostro codice in pezzi pi piccoli, ognuno nel proprio file


e nella propria directory, potete portare ordine nel vostro progetto e rendere
gli interventi futuri molto pi semplici

cibo = [mele, arance, pere]


print cibo
def mostra_dati():

cibo = [uova, cioccolato, latte]

print cibo
mostra_dati()
print cibo
Se eseguite questo codice, vedrete che, fuori dalla funzione,
la variabile cibo si riferisce a una lista di frutti, mentre
allinterno della funzione, si riferisce ad altri cibi. Questo
piccolo programma mostra due scope differenti: lo scope
globale del modulo, nel quale la variabile cibo si riferisce alla
frutta, e lo scope locale della funzione, nella quale la variabile
cibo si riferisce ad altri cibi. Quando cerca una variabile,
Python inizia con la pi vicina, quindi quella nella funzione,
per poi passare a quelle delle funzioni che la contengono,
quelle globali del modulo, e conclude cercando tra quelle
built-in. In sostanza, in un programma fatto da un file unico,
una cattiva idea mettere una variabile nello scope globale.
Pu generare confusione ed errori in altri posti del vostro
programma. I moduli aiutano a risolvere questo problema,
perch ogni modulo ha il suo scope globale. Come abbiamo
appena visto, quando si importa un modulo, il suo contenuto
tutto racchiuso come attributo del modulo, ed accessibile
esclusivamente mettendo il nome del modulo seguito
da punto. Questo fa s che le variabili globali siano meno
problematiche, anche se comunque sempre necessario
fare attenzione a come si utilizzano. LXP
Linux pro 134

77

Ruby on Rails

Test del codice


Ecco come il Test Driven Development pu migliorare il nostro codice

ellarticolo del mese scorso abbiamo visto come Rails cerchi


di ottimizzare la produttivit e la soddisfazione dello
sviluppatore. Abbiamo visto una panoramica del framework
e creato una semplice applicazione to-do list, cio una lista delle cose
da fare con le relative date di scadenza. il codice dellapplicazione
completa, insieme con le istruzioni per farla funzionare, si trovano
sul DVD allegato a questo numero della rivista. Questo mese
esamineremo come il Test Driven Development (TDD, in italiano
sviluppo guidato dai test) possa essere usato per sviluppare la nostra
applicazione, catturare i bug e migliorare il codice, tutte cose
che, converrete con noi, contribuiscono alla felicit del
programmatore. La metodologia TDD uningannevolmente semplice
rivisitazione del modo in cui si trova a lavorare la maggior parte degli
sviluppatori. per vedere i cambiamenti portati dal TDD esaminiamo
per prima cosa la parte Test. Se osservate come lavorano molti
sviluppatori Web, noterete che saltano avanti e indietro
costantemente tra editor e browser. Dopo aver modificato il codice
passano al browser, ricaricano la pagina, cercano gli eventuali errori
e poi tornano di nuovo alleditor. non un comportamento molto
produttivo. innanzitutto enormemente inefficiente saltare
continuamente tra due programmi. non solo vi costringe a relegare
il codice in un angolo della vostra mente mentre cercate di ricordare
i passi da compiere allinterno del browser, ma anche fisicamente
lento. provate a immaginare il test manuale di un sistema
di autenticazione in cui ogni modifica richiede allo sviluppatore
di scollegarsi dal sito, ripulire il browser dai cookie e ricominciare.
in secondo luogo considerate tutte le parti in movimento comprese
tra il codice modificato e il risultato finale allinterno del browser. Se
la pagina non si carica cosa significa? Come possiamo isolare la parte
dellapplicazione che non funziona? peggio ancora, cosa succede se
c qualche errore silente che non immediatamente rilevabile dal
front-end a cui accediamo con il browser? nel TDD si usa una test
suite, un insieme di test automatici che risolvono questi problemi.
nel corso del tempo viene sviluppata una serie di test autonomi che
possono essere eseguiti automaticamente senza bisogno di intervento
manuale e che fanno una serie di asserzioni per verificare il codice.

Eseguire i test con guard


Ci si stanca presto di lanciare a mano
la suite dei test, quindi perch non
farlo automaticamente? potete usare
la gemma guard (https://github.com/
guard/guard), che controller il vostro
progetto e lancer automaticamente
il sottoinsieme corretto di test dopo
ogni modifica. Aggiungete le
dipendenze di guard al gemfile:
gem guard
gem guard-rSpec
gem libnotify

78

Linux pro 134

poi installatele e avviate guard:


$ bundle install && rbenv rehash
$ bundle exec guard init
$ bundle exec guard
ora, ogni volta che salvate un file
allinterno del progetto, guard
eseguir intelligentemente la parte
corrispondente della suite di test.
anche in grado di agganciarsi
a numerosi sistemi di notifica desktop
per dare un resoconto pi visuale
dei vostri progressi.

i test sono riproducibili, quindi non c da preoccuparsi del fatto che


qualcuno possa dimenticarsi di verificare una determinata funzionalit
dopo aver modificato il codice. in termini di accelerazione del
processo, una suite ben scritta pu tipicamente eseguire parecchie
centinaia di test in una decina di secondi. inoltre, i test che scriviamo
sono isolati, cio sono eseguiti senza alcun riferimento al resto
dellapplicazione. Questo significa che, se qualcosa smette
di funzionare a causa delle modifiche, risulta immediatamente
evidente dove si trova lerrore e non dovremo pi sprecare tempo
cercando allinterno del codice cosa andato storto. A un livello
pi alto, con strumenti come Capybara persino possibile scrivere
test che prendano il controllo del browser per sottoporre a test
lintera applicazione.

Il codice come documentazione


Stranamente, una parte molto piccola della giornata di un
programmatore dedicata alla scrittura di materiale nuovo. passiamo
la maggior parte del nostro tempo leggendo e riscrivendo codice
fornito da altri o scritto in passato da noi stessi. perci importante
ottimizzarlo in funzione della leggibilit e della comprensibilit,
o, per citare Damian Conway: Scrivete sempre il vostro codice come
se dovesse essere gestito da un assassino di professione che sa dove
abitate. una suite di test pu aiutare gli sviluppatori a orientarsi
allinterno di codice nuovo, dando loro un insieme di specifiche
sempre aggiornate da eseguire. spesso pi facile da comprendere
rispetto a una serie di criptici commenti sparsi qua e l, scritti
settimane addietro e mai pi rivisti. Dato che vogliamo essere in grado
di eseguire i test autonomamente, scoprirete inoltre che i nostri
metodi risultano pi piccoli, pi descrittivi e con meno dipendenze
da altre parti dellapplicazione, tutte cose che aumentano la leggibilit.

Rosso, verde, rifattorizza


Quanto scritto finora riguarda quello che si ottiene scrivendo i test,
ma per quanto riguarda la parte Driven del TDD? Beh, si chiama Test
Driven (guidato dai test) perch il primo passo dello sviluppo consiste
nello scrivere un test che non passer. un momento: cominciamo
scrivendo un test? Come possiamo scrivere un test prima di avere
il codice? Questa la caratteristica chiave del TDD. prima di scrivere
anche una sola riga di codice di produzione definiamo, per mezzo
di un test, cosa dovrebbe fare il programma. in questo contesto il test
serve a due scopi: costituisce lobiettivo da raggiungere e rappresenta
la linea oltre la quale non procedere. Scriviamo solo il codice
sufficiente a passare il nostro attuale test e poi valutiamo di nuovo
dove ci troviamo prima di continuare con un nuovo test o di
modificare il codice esistente. Man mano che costruiamo il codice
attraverso cicli successivi dovrebbero emergere naturalmente due
tendenze. il codice diventer sempre pi semplice, come risultato
del concentrarsi sulla scrittura dello stretto indispensabile per passare
allo stadio successivo. Troppi sviluppatori fanno voli di fantasia
scrivendo metodi e classi troppo grossi, strettamente accoppiati tra
loro, oltremodo complessi, di cui diventa impossibile eseguire il debug.
un sistema Test Driven molto pi facilmente composto da molte
minuscole parti interconnesse tra di loro, che possono essere utilizzate

Ruby on Rails
indipendentemente e facilmente comprese senza esaminare il resto
dellapplicazione. In pi si perde meno tempo cercando di uscire dai
vicoli ciechi dello sviluppo. Dato poi che si comincia scrivendo dei test
che mettono alla prova il codice nella maniera in cui andr alla fine
utilizzato, emergono molto presto le dipendenze e gli errori nella
progettazione delle interfacce. Il ciclo di sviluppo TDD pu essere
riassunto con Rosso, verde, rifattorizza. Si comincia con un test
che fallisce: Rosso. Si scrive poi abbastanza codice per fare in modo
che il test passi: Verde. Infine si rifattorizza il nuovo codice per
aumentarne la manutenibilit e le prestazioni, sicuri del fatto che,
se per errore qualcosa smettesse di funzionare, la nostra suite di test
lo scoprirebbe. Una discussione completa di pregi e difetti del Test
Driven Development potrebbe riempire una libreria, ma se siete
interessati alla teoria e alle prove che stanno dietro a questa tecnica
vi raccomandiamo di dare unocchiata a questo articolo (in inglese)
di Microsoft, che fornisce una panoramica completa: http://research.
microsoft.com/en-us/groups/ese/nagappan_tdd.pdf. Ora basta
con la teoria, vediamo come funziona il TDD in pratica.

Un semplice esempio RSpec


Con Rails viene installata la libreria Test::Unit, un ottimo strumento
per i test, ma noi useremo RSpec perch troviamo la sua sintassi
e il suo uso molto pi facile da comprendere. Tecnicamente RSpec
uno strumento per il Behaviour Driven Development (BDD,
in italiano sviluppo guidato dal comportamento), ma per i nostri scopi
possiamo ignorare la sottile differenza tra questo e il classico TDD.
Aprite un nuovo file allinterno del progetto del mese scorso,
lib/hello_bot.rb, e inserite le seguenti righe:
describe HelloBot do
describe #greet do
it says hi to friends do
HelloBot.greet(Bob).should == Hi, Bob
end
end
end
(questo primo esempio viene lasciato in inglese per dare lidea di
come appaia naturale la sintassi di RSpec per chi usa questa lingua).
Lesempio ci mostra il formato di un test RSpec. Usiamo la sintassi
a blocchi di Ruby e il metodo describe per definire una serie
di test per mezzo del metodo it. Allinterno di ciascuno di questi test
facciamo unasserzione. In questo caso asseriamo che il valore
restituito dal metodo greet deve essere la stringa Hi, Bob.
Ora eseguiamo la nostra spec con il comando:
$ bundle exec rspec ./lib/hello_bot.rb
Notate come abbiamo eseguito il nostro test pur non avendo ancora
definito il modulo HelloBot. cos che guidiamo lo sviluppo:
iniziando con lo scrivere un test che mette alla prova il codice che non
abbiamo ancora implementato, diventa pi facile immaginare come
intendiamo usare quel codice pi tardi. RSpec si lamenter perch
il modulo non esiste, quindi portiamoci un po avanti con il lavoro
aggiungendone la definizione in cima al file e rieseguendo la spec:
module HelloBot
def self.greet(name)
Hi, #{name}
end
end
Quando eseguite i test compare un singolo punto sul terminale
per indicare il completamento di un test. Provate a modificare
il risultato restituito dal metodo greet e a rieseguire la spec per
vedere come cambia loutput sul terminale. RSpec ha molte opzioni
per la configurazione che possono essere usate per stampare pi
o meno informazioni o addirittura formattare il risultato come HTML.

Pu sembrare poca cosa, ma se arrivate a vedere questo, congratulazioni!


Avete sviluppato la vostra prima funzionalit con il metodo TDD

Lutilit di queste opzioni appare quando la suite aumenta di dimensioni:


$ bundle exec rspec ./lib/hello_bot.rb -f d --color
$ bundle exec rspec ./lib/hello_bot.rb -f h > ~/Scrivania/RSpec.html
$ bundle exec rspec --help
Se trovate una combinazione di opzioni che vi piace, aggiungetela
al file .rspec nella directory radice del progetto per fare in modo che
vengano applicate automaticamente. Aggiungeremo ora un altro test
alla nostra test suite e voi dovrete completare il codice del modulo
in modo che passi il test. Il nostro modulo deve essere in grado
di gestire anche situazioni formali. Aggiungete il test alla vostra spec
e poi provate a far tornare tutto verde. Se non riuscite a risolvere
il problema date unocchiata al codice nel DVD:
it is more formal with people whose first name isnt know do
HelloBot.greet(Miss Smith).should == How do you do,
Miss Smith?
end

Rails & RSpec


Nella directory delle spec del nostro progetto troverete una struttura
che approssimativamente riflette quella della directory app.
Suddivideremo i nostri test in maniera corrispondente ai vari strati
dellapplicazione, in modo da renderne pi semplice la gestione.
Lesecuzione dei test in Rails richiede qualche sforzo di coordinamento
in pi rispetto al nostro semplice esempio, ma quasi tutte
le complicazioni sono risolte automaticamente. Per conformarsi
alla nostra idea di isolamento, RSpec fa del suo meglio per assicurarsi
che nulla interferisca tra un test e laltro. Tutte le variabili di istanza,
le definizioni di classe e cos via sono cancellate prima di iniziare
un nuovo test, ma dato che quasi tutte le applicazioni Rails fanno uso
di un database, dobbiamo risolvere il problema causato dal fatto che
ognuno dei nostri test potrebbe modificarlo. Per fortuna Rails risolve
quasi tutti i problemi grazie ai suoi diversi ambienti, che potete vedere
nei file config/environments e config/database.yml. Eseguendo
i test con rake siamo certi che il database di test viene creato
e cancellato a ogni test. La nostra suite di test pu essere lanciata
con rake, sia per intero che solo in parte, passando come argomento
uno dei sottoinsiemi di test, come ad esempio models:
$ bundle exec rake spec
$ bundle exec rake spec:models

Correggere un errore
Se provate a eseguire la suite completa di test, generata
automaticamente da Rails al momento di creare lo scaffolding, sul
progetto del mese scorso scoprirete che d parecchi errori. Loutput
Linux pro 134

79

Ruby on Rails
generato troppo lungo per riprodurlo qui, ma se lo esaminate
scoprirete che molti errori sono legati al fatto che si chiede che un
nuovo task non abbia scadenza nel passato. Se cerchiamo di salvare
un task il cui campo scadenza risulta non assegnato viene sollevata
uneccezione. risolviamo il problema aprendo spec/models/task_
spec.rb e aggiungendo un test (che fallir):
describe #scadenza_nel_passato do
it non solleva uneccezione se scadenza null do
lambda {
Task.new(:scadenza=>nil).scadenza_nel_passato
}.should_not raise_error
end
end
Come vedete, usare litaliano allinterno di una spec sortisce
effetti leggermente surreali ed elimina quasi del tutto la leggibilit
dellinsieme. Questa volta abbiamo usato una expectation
leggermente diversa per intrappolare le eventuali eccezioni sollevate
e segnalarle come un fallimento del test. in questo test stiamo
facendo qualcosa di pi che semplicemente catturare un bug
del codice: stiamo suggerendo il risultato corretto. Se a un task,
al momento della creazione, non viene fornita una scadenza,
dovrebbe semplicemente salvare nil nel database. Eseguite questo
test con il comando rake spec:modules e state a guardare mentre
fallisce. i nostri test falliscono perch il nostro record cerca
di confrontare un oggetto di tipo Time con nil: il nulla in ruby.
Sistemiamo allora la classe Task:
def scadenza_nel_passato
errors.add(:scadenza, nel passato!) if (scadenza && (scadenza
< Time.zone.now))
end
ora il test passa! non c molto da rifattorizzare, quindi saltiamo
questo passo ed eseguiamo la suite completa. buona pratica farlo
dopo ogni ciclo concluso con successo, in modo da essere sicuri
di non aver compromesso altre parti dellapplicazione con le nostre
modifiche. Ci saranno ancora parecchi errori, dato che il mese scorso
abbiamo modificato il nostro modello task, aggiungendo test
di validazione, senza aggiornare le relative spec. Vi consigliamo
di copiare spec/controllers/tasks_controller_spec.rb dal DVD
e riprovare. per organizzare meglio il nostro tempo in base alla priorit
delle cose da fare, gli elementi la cui data di scadenza imminente
dovrebbero comparire in rosso nellelenco. per implementare questa
funzionalit aggiungiamo il concetto di scadenza_imminente? al
nostro modello. Come prima, iniziamo scrivendo un test in task_spec.
rb che usi la funzione che dovremmo essere in grado di chiamare:
describe #scadenza_immediata? do
it vero se la scadenza cade entro 24 ore do
task = Task.new(:scadenza => Time.zone.now + 23.hour)
task.should be_scadenza_immediata

Le tre regole dello zio Bob


Bob Martin, noto alla comunit come
Uncle Bob (zio Bob), una delle voci pi
autorevoli per quanto riguarda limpiego
corretto del TDD. il suo sito (http://www.
cleancoders.com/) contiene parecchie
perle di saggezza, ma noi preferiamo
le sue Tre Regole per il TDD:
1 non ti consentito scrivere del codice
di produzione se non per passare
uno unit test che fallisce.

2 non ti consentito scrivere nulla pi


di uno unit test di quello che sufficiente
perch fallisca; e gli errori di compilazione
sono errori.
3 non ti consentito scrivere nulla pi
del codice di produzione sufficiente
a passare lo unit test che fallisce.
Se riuscite a mantenervi entro questi
limiti quando praticate il TDD
non potete sbagliare.

end
end
it falso se la scadenza cade dopo 24 ore do
task = Task.new(:scadenza => Time.zone.now + 25.hour)
task.should_not be_scadenza_immediata
end
C un po della magia di rSpec in questo frammento di codice:
per rendere i test pi leggibili (in inglese), rSpec in grado di capire
che be_scadenza_immediata significa che il metodo scadenza_
immediata? deve restituire vero o falso. ora dobbiamo aggiornare
la classe Task in app/models/task.rb:
def scadenza_immediata?
(scadenza < Time.zone.now + 24.hours)
end
Questo codice passa i test, ma dobbiamo ricordarci che lattributo
scadenza pu essere nil. Dobbiamo aggiungere un test per
descrivere cosa dovrebbe accadere in quel caso:
it falso se scadenza nil do
task = Task.new(:scadenza => nil)
task.should_not be_scadenza_immediata
end
Come nei casi precedenti, il test fallisce perch non possibile
confrontare nil con un oggetto di tipo Time. Meglio correggere
il nostro metodo:
def scadenza_immediata?
return false if !scadenza
(scadenza < Time.zone.now + 24.hours)
end
Questa modifica consente di passare la suite dei test sui modelli:
possiamo quindi riprovare con la suite completa. Cercate di estendere
i test in modo da includere il requisito un task completato non pu
avere scadenza immediata. una possibile soluzione la trovate
nel codice allegato alla rivista.

Test degli helper


una cattiva abitudine quella di mettere qualcosa di pi del minimo
indispensabile di istruzioni di controllo in un template, quindi
inseriremo la nostra logica di formattazione in un helper.
Aggiungiamo un test (che fallir) in spec/helpers/task_helper.rb:
describe TasksHelper do
describe formattatore_titolo_task(task) do
before do
@task = Task.new(:titolo=>task)
end
it aggiunge lopportuna classe ai task con scadenza immediata
do
@task.scadenza = Time.zone.now
formattatore_titolo_task(@task).should == <span
class=immediata>task</span>
end
it non aggiunge alcuna classe extra ai task che non hanno
scadenza immediata do
@task.scadenza = nil
formattatore_titolo_task(@task).should == <span>task</span>
end
end
end

80

Linux pro 134

Ruby on Rails
Vi raccomandiamo di nuovo di aggiungere i test uno per volta
e di cercare di sviluppare una soluzione in maniera incrementale.
Dovrebbe presentarsi pi o meno cos:
module TasksHelper
def formattatore_titolo_task(task)
if task.scadenza_immediata?
<span class=immediata>#{task.titolo}</span>.html_safe
else
<span>#{task.titolo}</span>.html_safe
end
end
end
Infine occorre aggiornare la view index.html.erb in modo che chiami
formattatore_titolo_task(task) e aggiungere .immediata
nel file tasks.css.scss (il mese prossimo vedrete perch non
si tratta di un semplice file CSS). A questo punto facendo partire
il server Rails dovreste vedere qualcosa di simile allimmagine
riprodotta qui in basso.

Test dei controller


Notate che la nostra nuova funzionalit non ha bisogno di test del
controller o della view. Rails tende verso uno stile di progettazione
noto come Fat Model, Skinny Controller (modello grasso, controller
magro). Le funzionalit sono spesso spostate nel modello oppure,
quando si tratta della presentazione dei dati, in un helper.
Un controller ben progettato di solito contiene molto poco codice
perch tutto quanto riguarda il Web, come la gestione della sessione,
lanalisi degli URL e la generazione delle intestazioni controllato
automaticamente da Rails. Detto questo, responsabilit del
controller gestire lautenticazione dellutente, i permessi e cos via
e questi aspetti dellapplicazione vanno testati in dettaglio. Una volta
che un task stato completato non dovrebbe essere pi possibile
modificarlo attraverso linterfaccia Web. Dividiamo questa nuova
funzionalit in due parti: rimuovere il link dalla pagina show del task
e impedire al controller di accettare aggiornamenti. Cominciamo
dalla spec del controller. Andate alla descrizione del metodo update
del controller, alla riga 102 di tasks_controller_spec.rb
e aggiungete un blocco describe annidato:
describe PUT update do
describe nel caso in cui il task sia gi stato completato do
before do
@task = Task.create! valid_attributes
@task.update_attribute :fatto, true
end
it non aggiorna il task do
put :update, {:id => @task.to_param, :task => { titolo => t }},

RSpec in grado di scrivere il risultato dei test in vari


formati, compreso il classico e diffuso HTML

valid_session
Task.any_instance.should_not_receive(:update_attributes)
end
it ridirige lutente allindice do
put :update, {:id => @task.to_param, :task => { titolo => t }},
valid_session
response.should redirect_to(:action=>:index)
end
end
end
Nel nostro primo test associamo una expectation direttamente
alla classe Task usando una libreria di mocking. Un oggetto
mock pu essere usato al posto di uno reale, ma pu avere dei
comportamenti addizionali. Se steste eseguendo il test di una
libreria per il trasferimento di denaro tra conti bancari potrebbe
diventare piuttosto costoso eseguire i test con API reali. Potreste
invece usare degli oggetti che riproducono i vari tipi di risposta
che possono provenire dalla banca (ok.xml, fail.xml ecc.) ed
eseguire i test con quelli: usereste quindi degli oggetti mock.
Nel nostro caso usiamo qualcosa di simile per essere sicuri che
nessuna chiamata a update_attributes venga fatta per un task
esistente. A questo punto occorre modificare il metodo update
in tasks_controller.rb in modo da passare i test:
if @task.fatto?
format.html { redirect_to tasks_url, notice: I task completati
non possono essere modificati. }
elsif @task.update_attributes(params[:task])
format.html { redirect_to @task, notice: Task aggiornato
con successo. }
format.json { head :no_content }
else
format.html { render action: edit }
format.json { render json: @task.errors, status: :unprocessable_
entity }
end
end

Test delle view


Infine passiamo al test della nostra view. Aprite show.html.erb_
spec.rb e aggiungete un test sui task completati:
it non aggiunge il link edit se il task completato do
@task.fatto = true
render
rendered.should_not match(/Edit/)
end
Il test ovviamente fallisce, per fare in modo che passi dobbiamo
modificare show.html.erb:
<%= link_to Edit, edit_task_path(@task) unless @task.fatto? %> |
Congratulazioni, avete finito di sviluppare la vostra seconda
funzionalit con il metodo TDD. Provate a modificare ulteriormente
il codice in modo che non mostri il link di modifica anche nella pagina
indice. Ricordatevi di cominciare dai test. Abbiamo solo scalfito la
superficie del TDD, ma speriamo di essere riusciti a darvi almeno
unidea di quanto possa risultare utile nel migliorare il processo
di sviluppo. La chiave per ottenere il massimo risultato consiste
nellapplicarlo fin dallinizio e nel non cedere mai alla tentazione
di saltare qualcuno dei passi del ciclo Rosso-Verde-Rifattorizza.
Col passare del tempo diventerete pi veloci nello scrivere i test e pi
veloci nel decidere quali test vanno scritti. Nellarticolo finale della serie
vedremo come Rails semplifica laspetto lato client dello sviluppo Web
con la asset pipeline e con CoffeeScript, il compilatore JavaScript. LXP
Linux pro 134

81

Lisp

Primi passi con il Lisp


Dopo aver letto questo articolo, imparerete ad amare le parentesi con il Lisp,
il linguaggio che cambia il vostro modo di pensare

l Lisp fu inventato nel 1958, cosa che lo rende il secondo


pi vecchio linguaggio di programmazione di alto livello ancora
in uso (dopo il Fortran, di un anno pi vecchio). il nome deriva da
LISt Processing, e in effetti Lisp fa ampio uso di liste, come vedremo,
sia per il codice che per i dati. A dire il vero, per, in Lisp codice e dati
sono ampiamente intercambiabili... il linguaggio stato soggetto
a una notevole evoluzione nel corso della sua vita e oggi esiste
un gran numero di dialetti del Lisp. i tre pi importanti sono:
Common Lisp, che dispone di un corposo standard ed dotato
di un sistema a oggetti, e ha visto una rinascita nellultimo decennio.

Scheme, che pi minimalista e molto elegante, ma differisce


in parecchi punti significativi dal Common Lisp.
Clojure, che compila direttamente bytecode per la Java Virtual
Machine e perci diffuso tra i programmatori Java.
Esiste poi un certo numero di altri dialetti del Lisp usati come linguaggi
di scripting: avrete probabilmente gi incontrato Emacs Lisp,
ma tra gli altri troviamo anche Script-fu di GIMP.
Ci sono buone ragioni per cominciare con ognuno dei tre dialetti
principali: qualunque scegliate potrete imparare le basi del Lisp.
in questo tutorial useremo il Common Lisp.

Primi passi
Lanciate SBCL/Slime (leggete il box qui sotto per i dettagli) e vi verr
presentato il prompt dellinterprete (* o CL-USER). Facciamo qualche
addizione per mostrare le basi della sintassi del linguaggio.
* (+ 2 2)
4
* (+ 2 2 2)
6
* (+ 1 2 3 4)
10
il codice qui sopra mostra due dei punti base del Lisp. primo,
le parentesi. Sono onnipresenti e servono per circondare le liste.
Secondo, le funzioni (come +) vanno allinizio della lista. Con il simbolo

Definizioni
di liste e variabili
in Slime

+ allinizio, la lista pu essere lunga quanto si vuole: linterprete


semplicemente somma tutto. Che dire poi del vecchio standard,
Ciao mondo? Ecco come realizzarlo in Lisp:
* (print Ciao mondo)
Ciao mondo
Ciao mondo
Linterprete stampa la stringa due volte. Questo perch, come molti
altri interpreti, esegue la funzione (che stampa la stringa) e poi stampa
il valore restituito dalla funzione (in questo caso di nuovo la stringa).
Quando abbiamo usato + invece ha stampato solo il valore di ritorno
della funzione.

Rendere persistenti i programmi


Finora ci siamo limitati a eseguire codice allinterno dellinterprete,
quindi il nostro lavoro andava perso quando terminavamo
lapplicazione. per scrivere un vero programma apriamo un editor
di testo e creiamo il file ciao.lisp:
(print Ciao mondo)
potete eseguirlo con il comando sbcl --script ciao.lisp: stamper sul
terminale la stringa, con le virgolette attorno e senza andare a capo
alla fine. usate PRINC al posto di PRINT per avere la stringa senza
virgolette; usate WRITE-LINE per andare a capo dopo la stringa.

Installazione e configurazione dellambiente di sviluppo


Linstallazione minima comprende SBCL (Steel
Bank Common Lisp). Le cose risulteranno
comunque pi semplici se installerete anche
Emacs e Slime e li userete come ambiente di
sviluppo. Slime mette a disposizione la storia dei
comandi precedenti, il completamento per mezzo
di TAB e informazioni sulle funzioni e i relativi
parametri in basso nella finestra delleditor.
Aggiungete queste righe al vostro ~/.emacs:
;; Configura SBCL e Slime.
(add-to-list load-path /usr/share/common-lisp/

82

Linux pro 134

source/slime/)
(setq inferior-lisp-program /usr/bin/sbcl)
(require slime)
(slime-setup)
;; usa i colori per evidenziare la sintassi.
(global-font-lock-mode t)
Lanciate Emacs, date il comando M-x slime
e vedrete comparire il prompt CL-USER: siete
pronti per iniziare a lavorare. anche possibile
lavorare direttamente con SBCL, ma molto
meno comodo.

Ecco come si presenta il tool Slime quando


viene lanciato dallutente

Lisp

Tip

Atomi, (liste), car e cdr


Esaminiamo velocemente i fondamenti della sintassi del
linguaggio. In Lisp tutto (codice, dati, proprio tutto) una forma
(nota anche come espressione); ciascuna forma pu essere
un atomo (numeri, stringhe, simboli) o una lista. Quando
vengono valutati dallinterprete, gli atomi ritornano se stessi,
come si vede in SBCL:
*2
2
* ciao
ciao
Un simbolo quello in cui il lettore Lisp (cio la parte
dellinterprete che legge i dati inseriti dallutente e li trasforma
in oggetti Lisp su cui lavorare) traduce il nome di una variabile.
I nomi non possono contenere spazi bianchi, ma possono
contenere cifre, purch non appaiano come costanti numeriche.

Ecco come Lisp rappresenta una lista di quattro oggetti. Ogni


oggetto della lista nel car di una coppia di cons

Quindi n 3 n 3e4 sono nomi validi (entrambi sono interpretati


come numeri, il secondo con esponente), ma cifra7 va benissimo.
In Lisp si usano di solito le seguenti convenzioni sui nomi:
si usa la-mia-variabile, non la_mia_variabile;
le variabili globali si presentano cos: *globale*;
le costanti invece si presentano cos: +costante+.

Liste
Le liste sono la parte pi importante del Lisp. Una lista consiste
di due parti: il primo elemento della lista, che chiamato il car
(che sta per Contents of the Address part of Register e risale
a parecchi anni fa) e il resto della lista, chiamato il cdr (anche
questo termine aveva un significato quando nacque il linguaggio:
Contents of the Decrement part of Register). Il car deve essere
un simbolo, che designa una funzione, o unespressione lambda
(ne parleremo in seguito). Se un simbolo, linterprete lo applica
al resto della lista. Ecco qualche esempio:
* (* 2 3 6)
36
* (list 3 4 5)
(3 4 5)
* (cons 5 6)
(5 . 6)
La funzione * moltiplica tra di loro gli elementi del resto della lista.
La funzione list trasforma il resto della lista in, beh, una lista.
La funzione cons trasforma due cose in una coppia, che non
una lista, come si vede dal punto che separa i due elementi.
In effetti anche le liste sono composte di cons. Cio, in segreto, le
liste sono collezioni di coppie collegate tra loro. In ciascuna coppia
il car il primo elemento e il cdr un collegamento al cons
successivo... e cos via, fino allultimo elemento, in cui il cdr NIL.
Per concludere questo corso accelerato sui fondamenti del Lisp,
esiste solo un valore falso: NIL. Tutto il resto viene valutato come
vero. Occorre anche notare che NIL sia un atomo (che
rappresenta la falsit) che una lista (che rappresenta la lista
vuota). Quindi () interpretato come NIL. Se volete un valore che
sia garantito vero potete usare T, che risulta molto comodo nelle
macro (ne parliamo in un box).

Il Lisp un
linguaggio
funzionale:
alcuni puristi
sostengono
che le funzioni
non dovrebbero
avere effetti
collaterali
(come fa PRINT
stampando
una stringa),
ma dovrebbero
semplicemente
limitarsi a
restituire uno
o pi valori.
Si tratta di una
posizione
di minoranza:
le funzioni con
effetti collaterali
sono usate
comunemente.
Tenete
comunque
presente che
le funzioni
in Lisp non
sono in grado di
modificare i loro
argomenti.

Il nostro primo programma


Il nostro primo programma per fare pratica con Lisp sar un piccolo
database per fotografie. Assoceremo un po di dati a ciascuna foto
e poi creeremo una lista di tutte le foto. La prima cosa da fare
definire un singolo elemento del database. Per fare questo useremo
una tabella di hash, un tipo di dato che consiste in un certo numero
di chiavi e di valori, in cui ogni chiave identifica uno dei valori. anche
possibile fare qualcosa di simile con le liste di propriet o le liste
associative, ma le tabelle di hash sono pi efficienti per grandi volumi
di dati, quindi tanto vale partire con il piede giusto. Ecco
un frammento di codice che crea una tabella di hash foto
con tre coppie chiave/valore: categoria, tag e ubicazione:
* (setf foto (make-hash-table :test equal))
* (setf (gethash categoria foto) animali)
* (setf (gethash tag foto) (list cane tramonto spiaggia))
* (setf (gethash ubicazione foto) Camber Sands)
Dobbiamo passare :test equal alla funzione MAKE-HASH-TABLE
per definire il test di uguaglianza tra le chiavi della tabella. Senza

di esso nessuna delle ricerche funzionerebbe, dato che il valore


di default non d risultati corretti con le stringhe. Per assegnare
un valore si usa invece la funzione GETHASH, che normalmente
restituisce il valore associato alla chiave, ma che quando viene
chiamata allinterno di una SETF (la funzione che associa un valore
a una variabile) permette di assegnare o modificare quel valore.
Nel nostro caso nessuna delle chiavi esiste allinterno della tabella
di hash, quindi vengono create e ad esse viene associato il valore
passato come secondo argomento della SETF. Se esistessero gi,
il valore associato verrebbe modificato. Notate come sia possibile
passare una lista come valore. Per ottenere il valore associato
a una chiave si usa semplicemente GETHASH:
* (gethash categoria foto)
animali
T
La funzione restituisce due valori (in Common Lisp possibile!):
il valore associato alla chiave e T, per indicare che la chiave
Linux pro 134

83

Lisp

Tip
Per eseguire
direttamente
un programma
aggiungete una
riga shebang
allinizio del file:
#!/usr/bin/sbcl
--script
e rendete
eseguibile il file.

presente nella tabella. Ora che sappiamo come creare una tabella
di hash, semplifichiamoci un po le cose definendo una funzione che
esegue queste operazioni dati categoria, lista dei tag e ubicazione:
(defun crea-info-foto (ubicazione lista-tag categoria)
(setf foto (make-hash-table :test equal))
(setf (gethash ubicazione foto) ubicazione)
(setf (gethash tag foto) lista-tag)
(setf (gethash categoria foto) categoria)
foto)
DEFUN una macro che ci permette di creare una nuova
funzione. Il simbolo che segue (crea-info-foto) il nome della
funzione, che a sua volta seguito dalla lista dei parametri. Infine,
tutto quello che c dopo il corpo della funzione, in questo caso
quasi solo il codice visto sopra per creare un elemento del
database. C per unaggiunta: quel foto in fondo. Il valore
di ritorno di una funzione Lisp lultima espressione che viene
valutata allinterno della funzione. Se omettessimo la riga finale
il valore di ritorno della funzione sarebbe la stringa contenente
la categoria. Per utilizzare crea-info-foto nel resto del codice
vogliamo che restituisca il valore della tabella di hash appena
creata. In generale la definizione di una funzione :
(DEFUN nome (lista parametri)
corpo della funzione)
Anche in questo caso si tratta di una lista. Ora che siamo in grado di

Tip
Il Lisp tratta
i caratteri tra
virgolette come
stringhe. Un
apostrofo dice
invece al Lisp
di non valutare
il simbolo
che segue
lapostrofo, ma
di trattarlo come
un dato. questo
restituisce
questo. Ci
particolarmente
utile nelle
funzioni
e nelle macro.

84

creare un singolo elemento del database, dobbiamo decidere come


conservarne un numero arbitrario. Definiamo una variabile globale
da usare come lista delle foto:
(defvar *lista-foto* nil)
DEFVAR unaltra macro che definisce una variabile. *globale*
la convenzione usata in Lisp per indicare le variabili globali. Occorre
notare che DEFVAR semplicemente ridefinisce il valore di una
variabile se non ancora stata definita. Se volete sovrascrivere
un valore esistente (cosa che pu tornare utile durante i test) usate
DEFPARAMETER. Potreste usare la macro PUSH per aggiungere
qualcosa alla lista, ma pi semplice e il codice pi facile da
estendere, se definite unaltra funzione, aggiungi-foto-info:
(defun aggiungi-foto-info (foto)
(push foto *lista-foto*))
La sintassi semplice: aggiungi-foto-info riceve un singolo
parametro e lo inserisce in *lista-foto*. Ora siamo in grado
di inserire con facilit nuovi elementi nel database:
* (aggiungi-foto-info (crea-info-foto Milano (bambini parco)
famiglia))
* (aggiungi-foto-info (crea-info-foto Milano (cane parco) animali))
* (aggiungi-foto-info (crea-info-foto Venezia (canale palazzi)
vacanze))
Per vedere il contenuto della lista scrivete semplicemente *lista-foto*
in risposta al prompt dellinterprete.

Cicli
Come abbiamo visto, scrivendo *lista-foto* linterprete mostra
il nostro database come lista di tabelle di hash. Non una
rappresentazione particolarmente utile se vogliamo sapere quali
informazioni sono contenute allinterno delle tabelle di hash.
Per ottenere un risultato pi utile possiamo scrivere una funzione
che esegua un ciclo sulla lista e stampi il contenuto di ciascuna delle
tabelle di hash contenute nella lista. In Lisp i diversi modi utilizzati per
eseguire dei cicli che capita di vedere pi spesso utilizzano le macro
DO (per eseguire dei cicli), DOLIST e DOTIMES. Queste ultime due
sono pi specializzate di DO e pi semplici da usare. DOLIST esegue
un ciclo su una lista e applica il corpo del ciclo a ciascun elemento:
pi o meno come foreach in altri linguaggi. DOTIMES un ciclo
con contatore, che ripete il suo corpo per un numero di volte: un po
come for in altri linguaggi. Un esempio matematico di DOTIMES :
(dotimes (i 5)
(print (* i i)))
0 1 4 9 16
NIL
Notate come il ciclo si ripete finch la variabile i assume un valore
inferiore di 1 al limite 5. DOLIST invece esegue un ciclo su una lista
esistente. Nella nostra funzione la lista sar *lista-foto* e ciascun
elemento di essa verr a turno assegnato alla variabile foto:
(defun mostra-dettagli-foto ()
(dolist (foto *lista-foto*)
(setf info-foto nil)
(push (gethash categoria foto) info-foto)
(push categoria info-foto)
(push (gethash tag foto) info-foto)
(push tag info-foto)
(push (gethash ubicazione foto) info-foto)
(push ubicazione info-foto)
(format t ~{~a - ~a~%~} info-foto)))
Nel corpo di DOLIST creiamo una lista temporanea info-foto e poi
usiamo GETHASH per recuperare i valori dalla tabella di hash

Linux pro 134

e inserirli nella lista, facendo precedere ciascun valore dalla relativa


etichetta. La riga che contiene FORMAT sembra quasi un errore
di trasmissione, ma si tratta di una utile funzione che compare spesso
in Lisp per formattare loutput. Tutte le direttive di FORMAT iniziano
con ~. ~{...} itera su una lista (nel nostro caso info-foto). ~a
stampa il successivo elemento della lista, seguito da un trattino
e dallelemento seguente. Nel nostro caso otterremo quindi coppie
etichetta - valore. ~% il ritorno a capo. Eseguite la funzione
per vedere cosa compare sullo schermo. Il codice risulta per
molto poco elegante. In effetti esiste una funzione, MAPHASH,
che permette di iterare su una tabella di hash: la useremo quindi
per riscrivere la nostra funzione, spezzando il codice in pi funzioni
per facilitarne luso:
(defun stampa-hash (chiave valore)
(format t ~5t~S - ~S~% chiave valore))
(defun mostra-singola-foto (foto)
(maphash #stampa-hash foto))
(defun mostra-dettagli-foto-2 (lista)
(setf numero-pagina 1)
(dolist (foto lista)
(write-line (concatenate string Foto (write-to-string numeropagina)))
(mostra-singola-foto foto)
(incf numero-pagina)))
stampa-hash definisce come verr mostrata una coppia
chiave/valore presente nella tabella di hash usando FORMAT
(~S consuma gli argomenti che seguono la stringa di formato, nel
nostro caso chiave e valore). mostra-singola-foto passa questa
funzione a MAPHASH, che la applica a ciascuna coppia della tabella
di hash. Infine il tutto racchiuso allinterno di una DOLIST nella
funzione mostra-dettagli-foto-2, che aggiunge un contatore delle
foto e unetichetta per ciascuna foto. Notate come CONCATENATE
richieda di specificare che tipo di risultato ci si aspetta: nel nostro
esempio string.

Lisp
Macro: codice che scrive se stesso
Le macro sono una parte molto interessante
del Common Lisp, ma per trattarle adeguatamente
occorrerebbe molto pi spazio di quello che abbiamo
a disposizione per questo breve tutorial. Lidea che sta
alla base di una macro quella di ricevere codice Lisp
in ingresso e restituire in uscita altro codice Lisp. prima
che un programma venga eseguito, il compilatore
Lisp esamina il codice cercando (tra le altre cose)
le macro. Le traduce (espande) poi in codice Lisp
puro. Fatto questo, il programma pu essere
compilato ed eseguito. potete pensare alle macro
come una sorta di modello di codice; esse
permettono anche di nascondere i dettagli
dellimplementazione. Ecco un piccolo esempio: WHEN
una macro messa a disposizione dal linguaggio,

ma, se non lo fosse, potreste scrivere una NEWWHEN come questa (grazie a peter Seibel):
(defmacro new-when (condition &rest body)
`(if ,condition (progn ,@body)))
notate lapostrofo rovesciato (backquote in inglese),
che dice al compilatore che tutto quello che segue
deve essere copiato tale e quale anzich valutato,
a meno che non sia preceduto da una virgola.
Quindi condition e @body devono essere valutati,
mentre if e progn vanno copiati quando lespressione
viene costruita. Se ora scrivete:
(new-when (= x 3)
(setq x 4))
il compilatore tradurr questo in
(if (= x 3)

(progn (setq x 4)))


nel nostro tutorial abbiamo usato macro fornite dal
linguaggio: DoLiST e compagnia sono macro, per non
parlare di DEFun. Scrivere le proprie macro consente
di raggiungere risultati spesso impossibili in altri
linguaggi, ma questo non rientra nei limiti del nostro
tutorial. potreste ad esempio usare DEFMACRO
per definire una nuova versione di WHILE o WHEn.
anche possibile definire una macro per semplificare
qualsiasi costrutto di codice particolarmente
complesso o difficile da ricordare. Le macro sono
una maniera intelligente per risparmiare cicli
del cervello grazie al codice, oltre che un modo
enormemente potente per estendere
il Lisp in qualsiasi direzione vogliate.

Funzioni lambda
per concludere diamo unocchiata a un altro interessante
Lisp-ismo: le funzioni lambda (funzioni anonime). Ecco
un semplice esempio matematico:
* (remove-if-not #oddp (1 2 3 4 5))
(1 3 5)
* (remove-if-not #(lambda (x) (= 3 x)) (1 2 3 4 5))
(3)
La prima versione mostra semplicemente quello che fa
la funzione REMOVE-IF-NOT. restituisce la lista degli elementi
della lista originale che non soddisfano la funzione passata
come secondo parametro, nel nostro caso ODDP, che d T
se largomento dispari, quindi come risultato abbiamo una lista
composta dai soli numeri dispari presenti nella lista originale
(la notazione # dice al Lisp di interpretare il simbolo che segue
come nome di funzione). nella seconda versione creiamo invece
una funzione anonima che confronta il suo argomento con 3,
in modo che il risultato sia una lista che contiene solo
i 3 presenti nella lista originale. Quindi una funzione lambda
semplicemente una maniera per creare una funzione anonima
temporanea che pu essere passata a unaltra funzione.
Come possiamo impiegarla nel nostro database di foto?
(remove-if-not
#(lambda (x) (equal (gethash categoria x) animali))
*lista-foto*)
La funzione itera su *lista-foto*, assegnando a turno a x un
elemento della lista e restituendo una lista composta dai soli
elementi che fanno parte della categoria animali. possiamo
usare la funzione mostra-dettagli-foto-2 vista nella sezione
precedente per verificare quello che succede, passandogli
la riga di codice qui sopra come argomento:
(mostra-dettagli-foto-2 (remove-if-not
#(lambda (x) (equal (gethash categoria x) animali))
*lista-foto*))
Foto 1
ubicazione - Milano
tag - (CAnE pArCo)
categoria - animali
non molto leggibile come codice, per. possiamo definire
unaltra funzione per facilitarne luso e, gi che ci siamo,
possiamo introdurre un ulteriore livello di astrazione facendo

Tip
in modo che lavori con qualsiasi chiave e qualsiasi valore:
(defun mostra-foto (chiave valore)
(mostra-dettagli-foto-2
(remove-if-not
#(lambda (x) (equal (gethash chiave x) valore)) *lista-foto*)))
(mostra-foto categoria famiglia)
Foto 1
ubicazione - Milano
tag - (BAMBini pArCo)
categoria - famiglia
La maniera pi semplice per comprendere questo frammento
di codice (come capita spesso in Lisp) consiste nel leggerlo
al contrario. La funzione REMOVE-IF-NOT confronta gli
elementi della lista con la coppia chiave/valore data e restituisce
una lista di tabelle di hash che hanno quel valore associato
a quella chiave; questa lista viene a sua volta passata alla nostra
funzione mostra-dettagli-foto-2. Questa maniera di passare
il risultato di una funzione a un altra funzione, usando la
chiamata alla prima funzione come argomento della seconda,
tipica del Lisp: ne vedrete parecchi esempi in tutto il codice
che vi capiter di esaminare. Avrete probabilmente notato che
la nostra funzione non si comporta correttamente con la chiave
tag: nella versione attuale non in grado di cercare un tag
singolo allinterno della lista, perch GETHASH restituisce
lintera lista dei tag e il confronto verr invece fatto con il
singolo valore passato. Cercate di capire come si pu risolvere
il problema: probabilmente dovrete dare unocchiata alle
funzioni IF e PROGN. Ci auguriamo che questa veloce
introduzione ad alcune delle caratteristiche del Lisp sia stata
sufficiente a risvegliare il vostro interesse per il linguaggio
al punto da spingervi a proseguire negli esperimenti.
potreste, ad esempio, cominciare facendo diventare il database
una tabella di hash i cui elementi sono a loro volta le tabelle
di hash che descrivono le foto, usando magari il nome del file
che contiene la foto come chiave. Ci sono un sacco di
informazioni online se volete approfondire: una introduzione
molto leggibile (in inglese) il libro Practical Common Lisp,
disponibile gratuitamente in rete. una guida di riferimento
pressoch indispensabile invece la Common Lisp Hyperspec,
anchessa disponibile gratuitamente in rete. LXP

ricordatevi
che in Lisp
gli argomenti
passati a una
funzione non
vanno racchiusi
tra parentesi.
(get-input
Ping) e non
(get-input
(Ping)).
Se linterprete
d il warning
Illegal function
call verificate
di non aver fatto
questo errore.

Linux pro 134

85

PHP

PHP: report in PDF


Produrre i vostri report sia su carta sia a schermo? Con PHP si pu!
Ecco come realizzare documenti perfetti per ogni esigenza...

Le quattro
tabelle utilizzate
nei report
desempio

86

e avete dei dati in un database ci sono buone


probabilit che una delle vostre missioni sia di creare
dei report. Produrre dellHTML professionale e ben
formattato piuttosto semplice, ma non sempre si traduce
in una pagina stampata altrettanto bella. Come potete fare,
dunque, per creare un buon report per la stampa? Il primo
passo , naturalmente, cominciare a cercare degli strumenti
adatti. Non serve molto tempo per scoprire che questi tool
non sono poi molti. Nel mondo Open Source esistono alcune
opzioni ben conosciute, come JasperServer, iReport
e Pentaho, ma linfrastruttura necessaria per questi sistemi
pu essere pesante per uninstallazione SOHO (Small Office/
Home Office) dove lobiettivo produrre solo qualche report.
In questo tutorial affronterete un caso di utilizzo specifico
che prevede la produzione di un report dallaspetto
professionale tramite unapplicazione PHP di genealogia.
Lapplicazione in s un eccellente sistema di genealogia
che pu facilmente rimpiazzare unapplicazione desktop,
la sua debolezza maggiore appunto il reporting.
Lapplicazione produce diversi report visualizzati molto
bene su schermo ma non altrettanto su carta. Ogni
genealogista con esperienza su applicazioni desktop,
abituato a estrarre report ben formattati che possano
essere facilmente incorporati in una pubblicazione senza
grandi modifiche apprezzer un miglioramento in questo
senso. Dal momento che lapplicazione registra i dati
in un database MySQL, potete scrivere i vostri report
personali da inserire in qualsiasi libro storico di famiglia,
adattandoli alle specifiche necessit. Per costruire delle
solide opzioni che possano poi essere applicate alla
personalizzazione dei report, vi focalizzerete sulla creazione
di un report che possa essere aggiunto come appendice
a un libro di famiglia. Lobiettivo del report : (1) mostrare
ogni record in un formato simile a una notecard con
ID, titolo, editore, nome dellarchivio e note, uno sopra
laltro; (2) tenere insieme i singoli record, ovvero evitare
che possano andare spezzati tra diverse pagine; (3) ottenere
un aspetto professionale per intestazione e pi di pagina;

Linux pro 134

(4) infine, il report dovr essere in formato PDF cos


da vedersi e stamparsi allo stesso modo nelle diverse
piattaforme che si useranno.

Un giro in biblioteca
Potreste usare qualsiasi linguaggio ma per la sua presenza
diffusa e il forte supporto a PDF conviene scegliere il PHP.
quindi necessario decidere la libreria che fa al caso vostro
per la produzione dei PDF stessi. Unopzione potrebbe essere
PDFlib ma crea problemi di licenza. Unaltra libreria piuttosto
famosa per la produzione di PDF in PHP FPDF. Si tratta
di una classe PHP che genera file PDF in PHP puro, senza
il supporto di librerie esterne (come PDFlib). La F sta per
Free, libero, il che significa che potete usarla o modificarla
in qualsiasi modo rispecchi le vostre esigenze. Sperimenterete
con due classi PHP che estendono FPDF: la prima mPDF,
la seconda TCPDF. Prima di cominciare a lavorare sul vostro
report, scaricate mPDF da www.mpdf1.com/mpdf e TCPDF
da www.tcpdf.org. Una volta ottenuti i rispettivi tarball,
decomprimeteli e copiate le directory ottenute nella vostra
root di Apache. In questo tutorial le directory sono state
battezzate con il nome delle librerie stesse, ma potete
chiamarle come preferite. Per testare linstallazione aprite
la pagina http://localhost/mpdf/examples per mPDF
e http://localhost/tcpdf/examples per TCPDF, cliccando
su un link PDF in ogni pagina cos da assicurarvi la corretta
generazione dei PDF. Una volta installate entrambe
le librerie potete cominciare a lavorare sui dati. Come potete
immaginare, la chiave di tutti i buoni report , naturalmente,
avere buoni dati. Ci significa che dovete recuperare i dati
dal vostro database e trasformarli in qualcosa di usabile dallo
script PHP. In questa istanza dovete referenziare quattro
diverse tabelle per recuperare i dati necessari. La tabella
principale quella delle sorgenti, che contiene il grosso delle
informazioni volute, ma non tutte. La seconda tabella quella
degli archivi, ovvero i contenitori delle singole sorgenti.
La terza per le note, incluse quelle legate alle sorgenti.
In questo caso, per ogni sorgente viene usata una nota
che ne fornisce la descrizione dettagliata in modo da aiutare
chi non ha familiarit con esse. Alcuni utenti replicano
il comportamento nel campo Actual Text, ma ci fa apparire
delle note per la sorgente nelle visualizzazioni Family e Person,
e non ci che si vuole. Per recuperare le note, tuttavia, lo
schema del database offre una tabella di collegamento tra le note
e i record sorgente. Dovrete effettuare correttamente i join
in modo da recuperare i dati necessari. Ora che sapete quali dati
vi servono per il report e in che tabelle sono memorizzati, vi serve
una query SQL per recuperarli. Non affronterete in questa sede
i dettagli per costruire una query SQL, affidandovi invece alla
seguente query preconfezionata. Notate lutilizzo della funzione
di aggregazione group_concat per inserire tutte le note
in un campo unico.

PHP
SELECT t ng_sources.sourceiD, tng_sources.title,tng_sources.
author,tng_sources.publisher,tng_repositories.reponame,tng_
sources.actualtext,group_concat(tng_xnotes.note orDEr BY
tng_xnotes.iD ASC SEpArATor \n\n) AS xxnote
FroM tng_sourcesLEFT ouTEr Join tng_repositories on
tng_sources.repoiD = tng_repositories.repoiD
LEFT ouTEr Join tng_notelinks on tng_sources.sourceiD =
tng_notelinks.persfamiD
LEFT ouTEr Join tng_xnotes on tng_notelinks.xnoteiD =
tng_xnotes.iDGroup BY tng_sources.sourceiD
orDEr BY length(tng_sources.sourceiD), tng_sources.
sourceiD
ottenuta la query funzionante potete cominciare a scrivere
lo script pHp che visualizzi tali dati in un report pDF usabile.
La ragione principale nellutilizzo di classi pHp che estendono
FpDF perch tali classi hanno delle particolari transcodifiche per
HTML, quindi potete utilizzare il pi familiare HTML per disporre
oggetti nella pagina invece dei metodi a basso livello offerti da
FpDF. Come vedrete pi avanti, tale convenienza ha il suo costo.

TCPDF e HTML
Cominciare da TCpDF la strada pi semplice, vista la facilit
nello scrivere HTML da convertire in pDF. il primo passo sar
gettare le basi per i componenti fondamentali dello script,
creare un oggetto TCpDF e impostare alcuni parametri.
<?php
require_once(tcpdf/tcpdf.php);$pdf = new TCpDF(pDF_
pAGE_oriEnTATion, pDF_uniT, pDF_pAGE_ForMAT, true,
uTF-8, false);
$pdf->SetHeaderData(, , report Sorgenti, );
$pdf->setHeaderFont(Array(pDF_FonT_nAME_MAin, ,
pDF_FonT_SiZE_MAin));
$pdf->setFooterFont(Array(pDF_FonT_nAME_DATA, ,
pDF_FonT_SiZE_DATA)); $pdf->SetMargins(pDF_MArGin_
LEFT, pDF_MArGin_ Top, pDF_MArGin_riGHT); $pdf>SetHeaderMargin(pDF_MArGin_HEADEr);
$pdf->SetFooterMargin(pDF_MArGin_FooTEr);
$pdf->SetAutopageBreak(TruE, pDF_MArGin_BoTToM);
$pdf->SetFont(helvetica, , 10);$pdf->Addpage();
in questo esempio sono state utilizzate quante pi
impostazioni di default possibile, come definite in config/
tcpdf_config.php. necessario in seguito effettuare
la connessione al server MySQL, selezionare il database
ed eseguire la query.
mysql_connect(localhost, userid, password) or
die(mysql_error());
mysql_select_db(tng) or die(mysql_error());
$result = mysql_query(SELECT tng_sources.sourceiD, tng_
sources.title, tng_sources.publisher, tng_repositories.
reponame, tng_sources.actualtext, group_concat(tng_xnotes.
note orDEr BY tng_xnotes.iD ASC SEpArATor \n\n) AS
xxnote FroM tng_sources innEr Join tng_repositories on
tng_sources.repoiD = tng_repositories.repoiD LEFT ouTEr
Join tng_notelinks on tng_sources.sourceiD = tng_notelinks.
persfamiD LEFT ouTEr Join tng_xnotes on tng_notelinks.
xnoteiD = tng_xnotes.iD Group BY tng_ sources.sourceiD
orDEr BY length(tng_sources.sourceiD), tng_sources.
sourceiD);
ora potete cominciare a piazzare gli elementi nella pagina.
Anche se state utilizzato HTML importante pensare
CArTA!. in questo report in particolare non sarete troppo
preoccupati del posizionamento degli elementi, ma ci sono

Nel DVD
nel DVD trovate i file sorgente delle
pagine pHp di cui parliamo nellarticolo
(lato B, nella cartella Rivista
Accademia_PHP). non abbiamo
incluso il database, ma potete ricrearlo
partendo dallimmagine che trovate
nella prima pagina dellarticolo.
Vi consigliamo di usare il tool open
Source phpMyAdmin e creare

un database chiamato tng. Dopodich


dovete ricostruire le varie tabelle
e i vari campi. Come aiuto potete
anche esaminare i file pHp presenti
nel DVD e cercare i vari riferimenti
a tabelle e campi. Fatto questo potete
salvare i file nella cartella del vostro
server Web, controllare la posizione
del database e iniziare a sperimentare.

buone possibilit che diverr un fattore chiave per report pi


avanzati mano a mano che migliorerete le vostre abilit. uno
dei requisiti era evitare che il singolo record fosse spezzato
su pi pagine, quindi dovete raggruppare i dati in modo
da taggarli con TCPDF nobr, applicabile a tag HTML di livello
blocco. i dati sono ideali per una rappresentazione tabulare,
perci sar la strada da perseguire. prendete ora il numero
di righe restituite dalla query SQL in modo da sapere quante
volte iterare sullarray, quindi effettuate il posizionamento:
/------begin_tag
$num=mysql_numrows($result); $html=; $i=0;
$wh1=<tr><td>;$wh2=</td><td>;$wh3=</td></tr>;
$wh4=<tr><td style=\width:20%;\>id sorgente:</td>
<td style=\width:80%;\>;
while ($i < $num) {
$row = mysql_fetch_array( $result );
$html .= <table nobr=\true\> . $wh4 .
$row[sourceiD] . $wh3;
$html .= $wh1 . titolo:. $wh2 . $row[title] .
</td></ tr>;
$html .= $wh1 . editore: . $wh2 .
$row[publisher] . $wh3;
$html .= $wh1 . archivio: . $wh2 .
$row[reponame] . $wh3;
$html .= $wh1 . descrizione: . $wh2 .
$row[xxnote] . $wh3;
$html .= <tr><td><br /><hr /></td><td><br
/><hr /></td></tr>; $html .= </table><br /><br />;$i++; }

Su www.tcpdf.org trovate la documentazione estesa per tutte le funzioni


disponibili, assieme a una pagina dedicata al miglioramento delle performance!

Linux pro 134

87

PHP
A questo punto avete una variabile contenente tutto lHTML
e dovete permettere alla classe TCpDF di convertire tale
HTML in qualcosa che possa essere usato per produrre
un pDF. per fare questo convertite lHTML in standard uTF8,
quindi passatelo alla funzione WriteHTML():
$pdf->writeHTML(utf8_encode($html), true, false, true,
false,);
infine, dovete inviare loutput a un file pDF
$pdf->output(tcpdf-html.pdf,i);
//------end_tag
Ecco, un semplice e corto script pHp che produce un pDF
ben formattato con pochissimo sforzo. Qual il prezzo?
per iniziare la velocit: elaborare i dati costato 20,82
secondi ottenendo un report di 19 pagine. possibile
migliorare le performance?

La funzione Cell
Come potreste aver indovinato, dal momento che TCpDF
estende la classe FpDF, sono disponibili tutte le funzioni
a pi basso livello. un contrasto interessante luso delle
funzioni Cell e MultiCell a confronto con lopzione di parsing
HTML. per questo esempio sostituirete solo il codice tra i tag
begin/end nello script precedente. Come prima, cominciate
recuperando il numero di righe restituite dalla query SQL
cos da sapere il numero di iterazioni sullarray ed eseguire
la logica di posizionamento. La differenza principale, tuttavia,
che stavolta userete le funzioni Cell e MultiCell, che
dovrebbero essere significativamente pi rapide di writeHTML.
//------begin_tag
$num=mysql_numrows($result);
$html=;
$fill=0;
$i=0;
$chight=4;while ($i < $num) {
$row = mysql_fetch_array( $result );
$pdf->startTransaction();
$page = $pdf->getpage();
$pdf->Cell(30,$chight, id sorgente:,0,0,L);
$pdf->Cell(0,$chight, $row[sourceiD],0,1,L);
$pdf->Cell(30,$chight, titolo:,0 ,0,L);
$pdf->Cell(0,$chight, $row[title],0,1,L);
$pdf->Cell(30,$chight, editore:,0,0,L);
$pdf->Cell(0,$chight, $row[publisher],0,1,L);
$pdf->Cell(30,$chight, archivio:,0,0,L);
$pdf->Cell(0,$chight, $row[reponame],0,1,L);
$pdf->Cell(30,$chight, descrizione:,0,0,
L,0,,0,0, T,T);
$pdf->MultiCell(0,$chight, $row[xxnote],0,L);
$pdf->Cell(30,$chight, ,B,0,L);
$pdf->Cell(0,$chight, ,B,1,L);
$pdf->Cell(30,$chight, ,0,0,L);
$pdf->Cell(0,$chight, ,0,1,L);
$page2 = $pdf->getpage();

TNG: cos?
Lapplicazione per la genealogia
utilizzata in questo tutorial The Next
Generation of Genealogy Sitebuilding
(TNG). un sistema estremamente
robusto, affidabile ed estensibile.

88

Linux pro 134

Se state cercando unalternativa


a unapplicazione desktop per la
genealogia o se volete semplicemente
presentare i vostri dati online, vi
consigliamo di darci unocchiata!

Il report sorgenti riassume le informazioni in formato PDF


e verr stampato correttamente

if ($page == $page2) {
$pdf->commitTransaction();
} else {
$pdf = $pdf->rollbackTransaction();
$pdf->Addpage();
$pdf->Cell(30,$chight, id
sorgente:,0,0,L);
$pdf->Cell(0,$chight,
$row[sourceiD],0,1,L);
$pdf->Cell(30,$chight, title:,0 ,0,L);
$pdf->Cell(0,$chight,
$row[title],0,1,L);
$pdf->Cell(30,$chight,
publisher:,0,0,L);
$pdf->Cell(0,$chight,
$row[publisher],0,1,L);
$pdf->Cell(30,$chight,
repository:,0,0,L);
$pdf->Cell(0,$chight,
$row[reponame],0,1,L);
$pdf->Cell(30,$chight, description:,0,
0,L,0,,0,0,T,T);
$pdf->MultiCell(0,$chight,
$row[xxnote],0,L);
$pdf->Cell(30,$chight, ,B,0,L);
$pdf->Cell(0,$chight, ,B,1,L);
$pdf->Cell(30,$chight, ,0,0,L);
$pdf->Cell(0,$chight, ,0,1,L);
$pdf->commitTransaction();
}
$i++;
}
Come potete vedere avete dovuto impiegare un meccanismo
diverso per mantenere i dati uniti, dacch non esistono
opzioni nobr nelluso di queste funzioni. per ottenere
il risultato voluto avete impostato un marcatore di transizione
allinizio di ogni record, annotato il numero di pagina attuale
e cominciato a posizionare il contenuto. una volta completato
il record, il numero di pagina attuale viene ricontrollato:
se risulta uguale si procede; nel caso sia diverso, invece,
viene annullato il posizionamento fatto dallultimo marcatore,
inserita uninterruzione di pagina manuale, quindi riscritto
il contenuto. un po laborioso, ma funziona. ora potete
produrre il vostro file pDF:

PHP
$pdf->output(tcpdf-cell.pdf, i);
//------end_tag
Stavolta i test per produrre lo stesso report terminano
in appena 3,75 secondi, a confronto dei 20,82 necessari
con HTML. Anche se la differenza sensibile, lo anche
lo sforzo di utilizzo di tutte le funzioni a basso livello:
diventa ben pi evidente con report pi complessi.
non necessariamente pi difficile, solo diverso.

mPDF HTML
Creare i report con le funzioni a basso livello e la loro sintassi
proprietaria non certo cos facile e familiare quanto lHTML.
Cosa potete fare, dunque per la differenza in termini
di performance? Con qualche modifica la classe TCpDF
pu essere ottimizzata, ma provate a considerare mPDF come
alternativa. Esattamente come appena fatto con TCpDF, dovete
includere tutti i componenti necessari nello script, quindi
istanziare un oggetto mpDF e impostare alcuni parametri:
<?php
include(../mpdf/mpdf.php);
$mpdf=new mpDF(c);
$mpdf->SetHeader(report Sorgenti);
$mpdf->setFooter({DATE M j, Y}||{pAGEno} di {nb} pagine);
$mpdf->shrink_tables_to_fit=1;$mpdf->use_kwt = true;
Andate avanti e definite la connessione al server MySQL,
selezionate il database ed eseguite la query
mysql_connect(localhost, userid, password) or
die(mysql_error());
mysql_select_db(tng) or die(mysql_error());
$result=mysql_query(SELECT tng_sources.sourceiD,
tng_ sources.title, tng_sources.publisher, tng_repositories.
reponame, tng_sources.actualtext, group_concat(tng_xnotes.
note orDEr BY tng_xnotes.iD ASC SEpArATor \n\n)
ASxxnote FroM tng_sources LEFT ouTEr Join
tng_ repositories on tng_sources.repoiD = tng_repositories.
repoiD LEFT ouTEr Join tng_notelinks on tng_sources.
sourceiD = tng_notelinks.persfamiD LEFT ouTEr Join
tng_xnotes on tng_notelinks.xnoteiD = tng_xnotes.iD
Group BY tng_sources.sourceiD orDEr BY
length(tng_ sources.sourceiD), tng_sources.sourceiD)
ora prendete il numero di righe, ritornate dalla query
SQL per sapere quante volte iterare sullarray, e scrivete
la logica di posizionamento.
$num=mysql_numrows($result); $i=0;
$wh1=<tr><td valign=\top\>;$wh2=</td>
<td>;$wh3=</ td></tr>;
while ($i < $num) {
$row = mysql_fetch_array($result);
$mpdf->WriteHTML(<table style=\page-breakinside: avoid;\>);
$mpdf->WriteHTML($wh1.id sorgente:.$wh2 .
utf8_encode($row[sourceiD]).$wh3);
$mpdf->WriteHTML($wh1.autore:.$wh2 .
utf8_ encode($row[author]).$wh3);
$mpdf->WriteHTML($wh1.editore:.$wh2 .

PhpMyAdmin ha molte pi funzionalit di quante siamo riusciti a mostrarne


in questo articolo. Con un po di studio troverete quello che vi serve

utf8_encode($row[publisher]).$wh3);
$mpdf->WriteHTML($wh1.archivio:.$wh2 .
utf8_encode($row[reponame]).$wh3);
$mpdf->WriteHTML($wh1.descrizione:.$wh2 .
utf8_encode($row[xxnote]).$wh3);
$mpdf->WriteHTML(<tr><td><br /><hr /></
td><td><br /><hr /></td></tr>);
$mpdf->WriteHTML(</table>);
$i++;
}
infine, loutput su file
$mpdf->output();
?>
i risultati riportano mpDF come accettabile compromesso,
dal momento che pu produrre lo stesso report in 10,78 secondi
utilizzando HTML, a confronto dei soliti 20,82 di TCpDF: un
187% pi lento dellopzione pi veloce, ma il 93% pi veloce
della pi lenta. Con le soluzioni presentate qui avete ora
le capacit di base per inserire dei report nei vostri progetti senza
la necessit di complicate infrastrutture dedicate. Dovete alla fine
decidere se la velocit per voi pi importante della facilit duso.
A meno che non stiate scrivendo report per una soluzione
commerciale, troverete che lapproccio HTML pi desiderabile,
perch vi permette il minor sforzo possibile nel disegnare
i modelli. Detto questo, siete incoraggiati a sperimentare quanto
pi potete per trovare la miglior opzione che fa per voi. LXP

Un look migliore
un vecchio adagio recita la bellezza nellocchio di chi
guarda. Vale anche per i designer di report. in questo tutorial
gli esempi hanno una formattazione minima, ma lunico limite

il cielo quando si tratta di migliorarla con colori, linee,


spaziature e via dicendo. Assicuratevi di sperimentare fino
a trovare quello che fa per voi.

Linux pro 134

89

Leco dei LUG

Leco dei LUG


i Lug
I LUG
rappresentano
da sempre il punto
di riferimento per
chiunque voglia
conoscere GNU/
Linux. Ogni mese
dedicheremo loro
questo spazio per
la comunicazione
di nuovi progetti
e appuntamenti

aBrUZZO
anxaLUG - Lanciano
www.anxalug.org
il Pinguino - Teramo
Non disponibile
MarsicaLUG - Marsica
www.marsicalug.it
OpenLUG - Laquila
Non disponibile
Pescara LUG
www.pescaralug.org
Pineto LUG
www.pinetolug.org
Pollinux LUG - Pollutri
Non disponibile
SSVLUG - San Salvo, Vasto, Termoli
www.ssvlug.org
SulmonaLUG
http://sulmonalug.it
TeateLUG - Chieti
Non disponibile
TeLUG - Teramo
www.telug.it
User Group Valle roveto
http://linuxvalley-os4.blogspot.com/
BaSiLiCaTa
Basilicata LUG - Potenza e Matera
www.baslug.org
CaLaBria
3BYLug - Trebisacce
www.3bylug.tk
Bogomips - Bisignano
www.blug.it
CastroLUG
http://castrolug.altervista.org
Cosenza hack Laboratory
http://hacklab.cosenzainrete.it/
CSLUG - Cosenza
http://cslug.linux.it
CzLug
Non disponibile
hackLab Catanzaro
http://hacklab.cz
Piana LUG - Piana di Gioia Tauro
Non disponibile
reggio Calabria LUG
http://rclug.linux.it
revolutionary Mind
www.revolutionarymind.org
SpixLug - Spezzano albanese
Non disponibile
CaMPania
aFr@Linux LUG
www.afralinux.netsons.org
afralug - afragola
www.afralug.com
CasertaLUG
www.casertaglug.org
hackaserta 81100
www.81100.eu.org
hackMeetnaples napoli hackLab
www1.autistici.org/hmn
iGLUG - napoli e provincia

90 Linux pro 134

www.iglug.org
irLUG - irpinia
www.irlug.it
LUG-ischia
www.lug-ischia.org
naLUG - napoli
www.nalug.net
neapolis hacklab
www.officina99.org/hacklab.html
Padulug - Paduli (Bn)
http://linux.paduli.com
SCaLUG - Scafati (Sa)
http://xoomer.alice.it/scalug/
Tuxway.org - Provincia di napoli
www.tuxway.org
VaLug - Vallo Linux User Group
www.valug.it
XaLUG - Salerno
http://xalug.tuxlab.org
eMiLia rOMaGna
aLFLUG - alfonsine
www.alflug.it
Borgotaro LUG - Val Taro
http://btlug.it/
ConoscereLinux - Modena
www.conoscerelinux.it
erLUG
http://erlug.linux.it
Ferrara LUG
www.ferrara.linux.it
FoLUG - Forl
http://folug.linux.it
imoLUG - imola
www.imolug.org
LUGPiacenza
www.lugpiacenza.org
PanLUG - Vignola
Non disponibile
PLUG - Parma
http://parma.linux.it
ravennaLUG
www.ravennalug.org
reLug - reggio emilia e provincia
http://relug.linux.it
riminiLug
www.riminilug.it
S.P.r.i.Te
http://sprite.csr.unibo.it
UieLinux - Valle del rubicone
www.uielinux.org
FriULi VeneZia GiULia
GOLUG - Gorizia
www.golug.it
iGLU - Udine
http://iglu.cc.uniud.it
LUG Pordenone
www.pordenone.linux.it
LugTrieste
http://trieste.linux.it
LUG [a] [L] [P] - aquileia
www.alproject.org
LaZiO
CiLUG - Frosinone
www.cilug.org

CLUG - Cassino
http://cassino.linux.it/
GioveLUG - Terracina
www.giovelug.org
La Sapienza LUG
www.lslug.org
Latina LUG
www.llg.it
LUG Privernum Volsca - Priverno (LT)
www.pvlug.org
LUG rieti
www.lugrieti.net
LUGroma
www.lugroma.org
LUGroma 3
www.lugroma3.org
TorLUG - Universit Tor Vergata - roma
www.torlug.org
V.i.S.C.O.S.a. - Ciampino
www.viscosa.org
LiGUria
Genuense Lug - Genova e dintorni
http://genova.linux.it
LugGe - Genova e provincia
www.lugge.net
GinLug - Genova Sampierdarena
www.sennaweb.org
Govonis GnU/LUG - Provincia di Savona
www.govonis.org
SavonaLug - Savona
http://savona.linux.it/
TLug-TSL - Tigullio Ligure
http://tlug.linux.it/
LOMBarDia
BGLug - Bergamo e provincia
www.bglug.it
BGLug Valle Seriana - Valle Seriana
http://bglugvs.web3king.com/
GL-Como - Como
www.gl-como.it
GLUX - Lecco e provincia
www.lecco.linux.it
GULLP - Gruppo Utenti Linux Lonate Pozzolo
www.gullp.it
ispraLUG - ispra
http://ispralug.eu/
LiFO - Varese
www.lifolab.org
LiFOS - Cinisello Balsamo
www.lifos.org
Linux Var - Varese
www.linuxvar.it
LoLug - Lodi e provincia
www.lolug.org
Lug Bocconi - Milano
www.lug-bocconi.org
LugBS - Brescia e provincia
http://lugbs.linux.it/
Lug Castegnato - Castegnato
www.kenparker.eu/LugCastegnato
LugCr - Cremona e provincia
www.lugcr.it
Lug Crema - Crema
http://filibusta.crema.unimi.it/

Leco dei LUG


LUGDucale - Vigevano
www.lugducale.it
LugMan - Mantova e provincia
www.lugman.org
LugOB - Cologne e ovest bresciano
www.lugob.org
MoBLUG - Monza e Brianza
www.bubblesfactory.it
OpenLabs - Milano
www.openlabs.it
POuL - Milano
www.poul.org
TiLug - Pavia
http://pavia.linux.it
ViGLug - Vignate
www.viglug.org
marche
Ascolinux LUG/FSUG Ascoli
http://marche.linux.it/ascoli/
CameLUG - Camerino
www.camelug.it
CMlug
www.cmlug.org
Egloo
www.egloo.org
FanoLUG
www.fanolug.org
Fermo LUG
www.linuxfm.org/fermolug/
GLM - Macerata
www.gruppolinuxmc.it/start/index.php
LUG Ancona
www.egloo.org
LUG Jesi
www.lugjesi.net
LUG Marche
http://marche.linux.it
PDP Free Software User Group
http://pdp.linux.it
Picenix - Piceno
http://picenix.altervista.org
SenaLug - Senigallia
www.lug.senigallia.biz
molise
Campobasso LUG
http://cb.linux.it/
FrenterLUG - Larino
non disponibile
SmaLUG - San Martino
www.smalug.org
piemonte
ABC Lug - Alba/Bra/Carmagnola
http://abc.linux.it/
AlLug - Alessandria e provincia
www.allug.it
BiLUG - Provincia di Biella
www.bilug.linux.it
FASoLi - Alessandria e provincia
http://softwarelibero.al.it/
Gallug - Galliate
www.gallug.it
GlugTO - Torino e provincia
www.torino.linux.it
IvLug - Ivrea Linux User Group
www.ivlug.it
SLIP - Pinerolo
http://pinerolo.linux.it/
ValSusinux - Val Susa e Val Sangone
www.valsusinux.it
puglia
BriLUG - Brindisi
www.brilug.it
CapitanLUG - Capitanata
www.capitanlug.it

LATLUG - Latiano Linux User Group


www.latlug.org
LUGargano
www.lugargano.it
LUGBari - Bari e provincia
www.lugbari.org
MurgiaLug - Santeramo in Colle
www.open-pc.eu/index.php/murgialug/
SaLUG! - Salento
http://salug.it
Talug - Taranto
www.talug.it

www.gulp.linux.it
GuruAtWork - Grosseto e provincia
www.guruatwork.com
Lucca LUG
http://luccalug.it
L.U.G.A.R - Arezzo
non disponibile
PLUG - Prato e provincia
www.prato.linux.it
PtLug - Pistoia e provincia
www.ptlug.org
SLUG - Siena e provincia
www.siena.linux.it

sardegna
CeSar LUG
non disponibile
GNUraghe
www.gnuraghe.org
GULCh - Cagliari
www.gulch.crs4.it
Isolalug
non disponibile
PLUGS - Sassari
www.plugs.it

trentino alto adige


AltinumLUG - Rovereto
nondisponibile
LinuxTrent - Trento
http://linuxtrent.it
LugBz - Bolzano
www.lugbz.org

sicilia
CefaLug - Cefal
http://cefalug.linux.it
cLUG - Caltanissetta
www.clug.it
EnnaLUG
www.ennalug.org
FreakNet MediaLab - Catania
www.freaknet.org
Leonforte LUG
http://leonforte.linux.it
LUG Catania
www.catania.linux.it
LUGSR - Siracusa
www.siracusa.linux.it
MELUG - Messina
non disponibile
Norp LUG - Noto, Pachino, Rosolini
non disponibile
PALUG - Palermo
http://palermo.linux.it
RgLUG - Ragusa e provincia
http://ragusa.linux.it
VPLUG Linux Planet - Provincia Caltanisetta
www.vplug.it
SputniX - Palermo
www.sputnix.it
toscana
ACROS - Versilia, Lucca, Massa Carrara
www.lug-acros.org
Cancelliaperti
non disponibile
Elbalinux
non disponibile
ElsaGLUG - Val dElsa
www.elsaglug.org
FLUG - Firenze
www.firenze.linux.it
GOLEM - Empoli, Valdelsa
http://golem.linux.it
GroLUG - Grosseto
www.grolug.org
G.U.L.LI - Livorno
www.livorno.linux.it
GulP! Piombino
http://gulp.perlmonk.org
GULP Pisa

umbria
OrvietoLUG
www.orvietolug.it
LUG Perugia
www.perugiagnulug.org
TerniLUG
www.ternignulug.org
Valle daosta
SLAG - Aosta
www.slag.it
veneto
0421ug - Provincia di Venezia
www.0421ug.org
BLUG - Belluno
http://belluno.linux.it
Faber Libertatis - Padova
http://faberlibertatis.org
GrappaLUG - Bassano del Grappa
http://grappalug.homelinux.net/
ILC - Informatica Libera Cittadellese - FSUG
http://ilc.pd.it
LegnagoLUG
non disponibile
Linux Ludus - Villafranca (VR)
www.linuxludus.it
LugAnegA
www.luganega.org
lugSF - San Fidenzio
non disponibile
LUG Vicenza
www.vicenza.linux.it
LugVR - Verona
www.verona.linux.it
MontelLUG - Montebelluna
www.montellug.it
FSUG Padova
www.fsugpadova.org
RoLUG - Rovigo
http://rovigo.linux.it
TVLUG - Treviso
www.tvlug.it
VELug - Venezia
www.velug.it
AViLUG Schio
http://www.avilug.it/doku.php
NAZIONALI
FSUGitalia
www.fsugitalia.org
Gentoo Channel Italia
www.gechi.it
MajaGLUG
www.majaglug.net
SkyLUG
http://tech.groups.yahoo.com/group/skylug/

Linux pro 134

91

Leco dei LUG

Spazio ai LUG

a questo numero
vogliamo dedicare
una pagina (o anche
pi se necessario)
alle attivit dei tanti LUG italiani.
Vorremmo mettere questo spazio
a disposizione di qualunque
gruppo di utenti Linux che abbia
voglia di comunicare qualcosa ai
nostri lettori, per cui vi invitiamo
a scrivere allindirizzo email
redazione@linuxpro.it
proponendoci testi circa i vostri
progetti, le vostre impressioni sul
mondo Open Source e quantaltro
coinvolga luso di GNU/Linux.
Questo primo articolo scritto dai
membri del LUG di Orvieto a cui
lasciamo la parola, anzi la tastiera.

OrvietoLUG
LAssociazione Orvieto Linux
User Group, costituitasi nel 2005

e che negli anni ha sempre


organizzato iniziative per la
promozione del Software Libero
a livello locale (corsi Linux,
installation Party), nazionale
(CAT Cracca al Tesoro,
LinuxDay, Software Freedom Day)
e internazionali (OpenOffice.org
Conference 2009), lancia il nono
appuntamento orvietano del
LinuxDay, fissato il prossimo 26
Ottobre. Come noto, il Linux Day
la giornata nazionale dedicata
al sistema operativo GNU/Linux
e alla cultura del FLOSS (Free
Libre Open Source Software), che
si svolge contemporaneamente in
pi di 100 citt italiane. Liniziativa
si terr a Orvieto presso la sede
dellIstituto di Istruzione
Superiore Scientifica e Tecnica,
nei locali del Liceo Majorana
in via dei Tigli. Con ledizione
2013, OrvietoLUG aderisce al
tema di Italian Linux Society,
Innovazione. Di tutti. Per tutti,
focalizzandosi soprattutto sulla
scuola e sul mondo dei makers.
La mattina sar incentrata su talk
specializzati tenuti da esperti,
alcuni dei quali di fama perlomeno
nazionale, mentre nel pomeriggio
si svolgeranno le attivit divulgative

OGNI MARTED IN EDICOLA

a cura dei soci dellassociazione.


La partecipazione alle attivit
della giornata libera
e totalmente gratuita per tutti

i cittadini e appassionati.
Nella tabella il programma della
giornata. OrvietoLUG vi aspetta
al LinuxDay orvietano! LXP

I corsi
Mattina dalle ore 8.30 alle 12.30

Talk tematici sul FLOSS


8.30/9.00

Benvenuto alla manifestazione

9.00/9.45

BackBox Linux: attacchi informatici a Smartphone e Tablet


via Wi-Fi - Andrea Draghetti, IT Security Special
e responsabile di Over Security

9.45/10.30

Sviluppare applicazioni mobile per Android con Linux Emanuele Palazzetti, Google Developer Group PG

10.30/11.15

Migrazione a LibreOffice: il Progetto Libreumbria - Stefano


Paggetti, Direttore Consorzio SIR Umbria

11.15/12.45

Elettronica Open Source con Arduino e Python


Associazione Tinker Garage/Python User Group PG
Pomeriggio dalle ore 15.30 alle 18.30

Laboratori su Linux
15.30/18.30

Linux Installation Party & presentazione ultima versione


UBUNTU 13.10 e Linux Server Lab

15.30/16.30

Talk: INSTALLARE LINUX SU UN COMPUTER

Tutto il pomeriggio

Info point & angolo libri, pre-iscrizioni ai corsi Linux


2013/2014

Demo Area

Proogrammi per ufficio, grafica, audio/video editing,


videogame open

Multimedia Area

Proiezione di filmati 3D open fatti con Blender e simili

STATO SIRO
IL NOME DEL
COLPEVOLE
COMINCIA PER
CONSONANTE

LA TUA PALESTRA

PER LA MENTE

VERO FALSO

Chi ha preso la penna? Il nonno lo domanda


ai suoi cinque nipoti. Sapendo che in due hanno
mentito, chi stato a prendere la penna?

SIRO DICE IL VERO


STATO IVAN
STATO UNO
TRA IVAN E LUCA

Ivan

COD. LP122

COD. LP123

5,90
NUMERO 122 - OTTOBRE 2012

COD. LP126

SERVER DI POSTA CON KERIO CONNECT

GUIDA AI BREVETTI

MOODLE

N. 126 - RIVISTA + DVD 5,90 - CHF 13,60

TARIFFA R.O.C. - POSTE ITALIANE SPA - ABB. POST. - D.L. 353/2003 (CONV. IN L. 27/02/2004 N. 46) ART. 1, COMMA 1, DCB MILANO

La nuova NUMERO 1 delle distro!

5,90
NUMERO 123 - NOVEMBRE 2012

COD. LP127

5,90
NUMERO 124 - DICEMBRE 2012

COD. LP128

Se leggi Linux Pro,


ti possono piacere anche...

COD. LP125

5,90
NUMERO 125 - GENNAIO 2013

COD. LP129

OFFERTA
SPECIALE

I segreti dello
smartphone Android
pi acclamato
dellanno

COD. SAJ4
4,90

Raspberry Pi

PRO

Diventa protagonista nel mondo Linux

COD. LP124

I primi rudimenti
di programmazione
con Guido il Robot

Migliore
di Ubuntu
!

Mint
ExtraForte
Le caratteristiche La filosofia
I nuovi desktop I punti chiave
10 pagine di pura programmazione

ACCADEMIA
DEL CODICE

Concetti Le tipologie dei dati in Python


Django Costruire una Web App in pochi minuti
Python Come distribuire i propri programmi

Inoltre

Linux embedded

Aria, la scheda italiana per creare server, sistemi


di allarme, controllare processi e altro ancora

Bitcoin, la valuta digitale

Samsung Camera
16 Megapixel con Android
e schermo touch da 4,8

Unison

Fai produrre al tuo computer la nuova moneta


che funziona sul Web senza il controllo di una banca

Realizza un clone di Dropbox


senza problemi di privacy

5,90

SFIDA PER PROGRAMMATORI

Linux Pro Mensile N126 5,90 CHF 13,60

Il concorso Liberated Pixel Cup dimostra che lo sviluppo Open Source non prevede
solo la realizzazione di noiosi programmi, ma anche divertenti videogiochi

Distributore: Press-Di, Segrate (MI)

LXP126_cover.indd 1

5,90

5,90

5,90

COD. SLP7
9,90

COD. SLP8
9,90

23/01/13 17:26

NUMERO 126 - FEBBRAIO 2013

COD. LP130

5,90
NUMERO 130 - GIUGNO 2013

NUMERO 127 - MARZO 2013

NUMERO 128 - APRILE 2013

COD. LP131

COD. LP132

5,90
NUMERO 131 - LUGLIO 2013

NUMERO 129 - MAGGIO 2013

COD. LP133

5,90
NUMERO 132 - AGOSTO 2013

5,90
NUMERO 133 - SETTEMBRE 2013

Completa la tua collezione ordinando gli arretrati


su www.spreastore.it/linuxpro

oppure utilizzando il modulo qui sotto

SCEGLI LARRETRATO CHE VUOI ORDINARE

NOME

SE VUOI ORDINARE VIA POSTA O VIA FAX, COMPILA QUESTO COUPON

COGNOME

Ritaglia o fotocopia il coupon, invialo in busta chiusa a: Sprea Editori S.p.A. Via Torino, 51 20063 Cernusco s/n
(MI), insieme a una copia della ricevuta di versamento o a un assegno. Oppure via fax al numero 02.700537672.
Per ordinare in tempo reale i manuali collegati al nostro sito www.spreastore.it. Per ulteriori informazioni puoi scrivere a store@sprea.it oppure telefonare allo 02/87158224 tutti i giorni dalle 14.00 alle 18.00

VIA

INSERISCI I CODICI delle pubblicazioni che desideri ricevere:

CITT
TEL.

E-MAIL

PROV.

SCELGO IL SEGUENTE METODO DI PAGAMENTO (Indica con una quello prescelto)

Versamento su CCP 99075871 intestato a Sprea Editori S.P.A. ABBONAMENTI Via Torino 51
20063 Cernusco Sul Naviglio MI (Allegare ricevuta nella busta o al fax)

SCELGO IL SEGUENTE METODO DI SPEDIZIONE:

Bonifico intestato a Sprea Editori S.P.A. Abbonamenti sul conto

Indica con una la forma di spedizione desiderata


Spedizione tramite posta tradizionale al costo aggiuntivo di

2,90

Spedizione tramite Corriere Espresso al costo aggiuntivo di

7,00

TOTALE COMPLESSIVO
Data

C.A.P.

Totale Ordine

Firma del titolare

Informativa e Consenso in materia di trattamento dei dati personali - (Codice Privacy d.lgs. 196/03) Sprea Editori S.p.A. Socio unico Sprea Holding S.p.A. con sede legale in via Beltrami 21,
26100 Cremona, il Titolare del trattamento dei dati personali che vengono raccolti, trattati e conservati ex d.lgs. 196/03. Gli stessi potranno essere comunicati e/o trattati da Societ esterne
Incaricate. Ai sensi degli artt. 7 e ss. si potr richiedere la modifica, la correzione e/o la cancellazione dei dati, ovvero lesercizio di tutti i diritti previsti per Legge. La sottoscrizione del presente modulo deve
intendersi quale presa visione, nel colophon della rivista, dellInformativa completa ex art. 13 d.lgs. 196/03, nonch consenso espresso al trattamento ex art. 23 d.lgs. 196/03 in favore dellAzienda.

IBAN IT05 F076 0101 6000 0009 9075 871

Carta di Credito N. (Per favore riportare il numero della Carta indicandone tutte le cifre)
Scad.

CVV

Nome e Cognome del Titolare della carta (pu essere diverso dallabbonato)

Guida

Software

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

Utility per la shell

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

Prwd

criviamo spesso articoli che evidenziano la potenza


della riga di comando e molti di noi sono ancora
legati alla shell di default fornita della distro
quasi sempre si tratta di Bash. Se provate qualche
altra shell, per, possibile che vi ritroviate con le vostre
impostazioni stravolte. prendete per esempio la variabile
dambiente che definisce il prompt: $PS1 viene interpretata
in modo diverso da shell differenti, quindi se cambiate
interprete dei comandi, il risultato potrebbe essere diverso
da quanto ci si aspetta. Prwd sta per Print Reduced Working
Directory ed unalternativa molto essibile al classico
comando pwd. per installarlo seguite le istruzioni presenti
nel file INSTALL incluso nel tarball del programma, che altro
non sono che i classici
.configure
make
sudo make install
una volta compilato, prendete il file prwdrc.example,
sempre incluso nel tarball, e copiatelo nella vostra home
con il nome .prwdrc - questo il file di configurazione.
per ordinare alla vostra shell di usare prwd, digitate:
export pS1=\h:`prwd`\$

Questo crea un prompt piuttosto standard che mostra


lhostname seguito dalla directory corrente. Andate
in /usr/local/bin e il vostro prompt sar qualcosa del
tipo cyberninjak1:/usr/local/bin$. ora modificate
il file .prwdrc con il vostro editor di testo preferito
e togliete il simbolo di commento # davanti alla voce
set newsgroup on. Salvate il file e quando tornerete
al prompt vedrete che questo percorso molto
pi corto: cyberninjak1:/u/l/bin$. ora riaprite il file
di configurazione nelleditor e, in fondo al testo inserite
il vostro username al posto di tamentis e cambiate
gli alias in modo che puntino alle cartelle che usate
pi spesso e abbiano il nome che preferite. per esempio,
se vi spostate spesso nella cartella Scaricati potreste
definire un alias simile a questo:
alias *sc /home/ninjak/Scaricati
ora, se vi spostate in Scaricati vedrete che il prompt
ha un aspetto particolare:
cyberninjak1:~$ cd ~/Scaricati/
cyberninjak1:*sc$
Questi sono un paio di esempi di come prwd pu accorciare
il vostro prompt. info: http://tamentis.com/projects/prwd/.

Conguratore per WINE

Q4Wine

ine, il layer di compatibilit che vi consente


di eseguire applicazioni Windows sotto Linux
senza dover avere sottomano uninstallazione
del sistema operativo di Microsoft, pu essere
utile, ma purtroppo non il tool pi semplice del mondo
da configurare. per questo motivo sono nati diversi front-end
grafici che forniscono una mano per il setup. uno di questi
Q4Wine, basato su Qt e giunto alla versione 1.0. Al primo
avvio Q4Wine mostra un wizard che vi consente di indicare
la corretta posizione di WinE nel vostro sistema e di definire
alcune impostazioni di rete. per avviare un programma
Windows sufficiente un doppio click sulla sua icona
nel tab Programmi. per aggiungere un nuovo programma
fate click destro in un punto vuoto della schermata e scegliete
la voce Nuovo. Q4Wine si dimostra veramente utile, per,
quando si tratta di definire i pressi. Questi sono le directory
di configurazione di WinE e visto che spesso programmi

94 Linux pro 134

Q4Wine vi aiuta a installare il vostro programma


Windows preferito nella vostra Linux box
Windows diversi richiedono setup differenti in WinE, Q4Wine
vi aiuta a impostare in modo preciso questi prefissi.
Con questo programma potete creare un nuovo prefisso
e dirgli di montare limmagine di un CD/DVD come se fosse
un drive reale quando vi accedete. presente anche
un accesso integrato al database delle applicazioni di WinE
(WinE AppDB), unestesa raccolta di report degli utenti
che segnalano il successo o linsuccesso nellinstallazione
di un dato software Windows sotto WinE. insomma,
se avete problemi con WinE, dategli unocchiata.

Guida Software
Tool Web

HTTPie

orse non lo sapete, ma possibile navigare sul Web dalla riga


di comando. Non stiamo parlando dei browser Web
a caratteri, come Links o W3M, ma di strumenti per
i veri duri che vi consentono di inviare byte a un server Web
e osservare il risultato di questa interrogazione. Di base potete usare
Telnet sulla porta 80 per fare una navigazione rudimentale (il termine
navigazione un po esagerato), oppure potete ricorrere a cURL
che vi offre qualche possibilit in pi. Il principale problema di cURL,
per, di non essere molto amichevole. Non lo giudichiamo male
per questo, visto che pensato per gli utenti pi esperti, ma molte
delle sue funzionalit sono note per avere una curva dapprendimento
ripidissima. HPPPie (http://github.com/jkbr/httpie) mira a fornire
le stesse feature di cURL aggiungendo per uno strato di semplicit duso.
scritto in Python e non ha dipendenze strane, quindi dovreste riuscire a
installarlo senza intoppi; probabilmente lo troverete anche nei repository
della vostra distro. Per vederlo in azione nella sua forma di base digitate
http get httpie.org
HTTPie contatta il sito Web indicato e mostra linput grezzo, con gli
header evidenziati con colori vivaci. Una nota: in alcune implementazioni
il get non necessario. Questo comando mostra ci che fa un browser
Web e apre una finestra sul dietro le quinte, cosa utile per fare un debug
di base di un server Web. Ma questa solo la pi semplice delle
funzionalit di questo tool: con HTTPie potete compiere operazioni
pi complesse interagendo con un server Web, come inviare form

Notate lheader X-Awesome nella quarta riga delloutput:


in un normale browser Web non lo vedreste di certo
tramite una richiesta POST, fare lupload di file e impostare header
personalizzati. Potete inviare dati serializzati come oggetto JSON,
usare lautenticazione base e tramite digest, e passare da un server
proxy. Si possono anche creare sessioni durante le quali gli header
e i cookie personalizzati rimangono attivi tra una richiesta e laltra a un
server Web questo utile quando inserite in uno script una serie di
richieste consecutive. Infine, ci che pi interessa sviluppatori Web e
amministratori la possibilit di usare HTTPie negli script. Certo, ci sono
altri tool liberamente disponibili (compresi alcuni plug-in per Firefox), ma
HTTPie vi consente di usare il linguaggio di programmazione/scripting
preferito per costruire dei test e poi passare loutput alle tante utility
UNIX per lelaborazione dei testi.

Tool di ricerca per il desktop

DocFetcher

mmaginate di avere una versione di Google dentro il vostro


computer questa lidea di base dietro a DocFetcher
(http://docfetcher.sourceforge.net). La maggior parte degli
ambienti desktop e dei file manager includono una qualche
funzione di ricerca, ma in genere le opzioni disponibili sono piuttosto
limitate. DocFetcher fa qualcosa di molto interessante, invece.
Prima di svelarvi le sue capacit, per, vi diciamo che si tratta
di un tool scritto in Java: la prima volta che lo avvierete rimarrete
stupiti per la sua concisione. Provate a cercare un file e verrete
rudemente informati che non avete ancora creato gli indici di ricerca.
A questo punto dovreste mettervi alla ricerca del pulsante che
crea questi indici ma non lo troverete senza leggere il manuale.
Per cui vi suggeriamo noi come fare: fate click destro nel pannello
Search Scope e scegliete di creare un indice partendo da una
directory (la vostra home, per esempio). Gli indici memorizzano
il contenuto testuale dei file, consentendovi di fare ricerche veloci
tra i documenti senza che il programma debba scorrere le directory
manualmente. Ci pu volere un po di tempo per creare questi
indici perch il tool indicizza anche i PDF, oltre che i file creati
con le maggiori suite per lufficio. Il risultato per qualcosa
di fenomenale. Potete definire ricerche mirate in base alla dimensione
dei file e ai tipi di documento usando il pannello in alto a sinistra,
mentre quello in basso a destra mostra unanteprima testuale
(con tanto di evidenziazione dei termini cercati) dei risultati della
ricerca. Potete far accomodare DocFetcher nella systray e configurare
una scorciatoia da tastiera per farlo riapparire. Potete usare

il visualizzatore HTML integrato anche per vedere le pagine Web


memorizzate in locale. Ma la funzione chiave di DocFetcher
la sua portabilit. Essendo unapplicazione Java potete metterla
su una chiave USB ed eseguirla sotto GNU/Linux, Windows
e Mac OS X. Inserite nella stessa chiave USB una vasta raccolta
di documentazione e il gioco fatto: avrete un repository
di informazioni da portare in tasca e con uneccellente funzione
di ricerca. Potrete passare da una macchina allaltra preservando
gli indici creati, senza costringere il sistema operativo in uso
a creare degli indici propri. LXP

DocFetcher vi restituir quei file che ritenete ormai dispersi


tra le migliaia di documenti memorizzati nel vostro disco fisso
Linux pro 134

95

In edicola il 20 novembre

NEL PROSSIMO NUMERO

LINUX
FAI DA TE
Stanco delle solite distro
preconfezionate? Ecco come
creare lOS perfetto per le tue
esigenze prendendo
il meglio da
ogni versione!

E inoltre:
Pronto, parla Ubuntu

Musica in streaming

Configurazioni facili

Scopriamo tutti i segreti del sistema


operativo che promette di far
funzionare gli smartphone meglio
di qualsiasi OS proprietario: funzioni,
caratteristiche, novit e altro ancora...

Appassionati di musica? Le vostre


playlist non vi bastano pi?
Ecco i migliori servizi di streaming
online per ascoltare canzoni su qualsiasi
tipo di dispositivo

Con Puppet facilissimo preparare,


gestire e aggiornare configurazioni
analoghe su tanti sistemi diversi.
Tenere sotto controllo tanti server
Web diventa semplicissimo!

LINUX

PRO

Mensile - 5,90 euro - 13,60 CHF


Direttore Responsabile:
Luca Sprea - direttore@linuxpro.it
Direttore Editoriale:
Stefano Spagnolo
Publisher: Mario Bosisio
Coordinatore redazionale: Massimiliano Zagaglia
Redazione: redazione@linuxpro.it
Brunetta Pieraccini (segreteria)

Abbonamenti (disponibili solo in versione con DVD)


Si sottoscrivono in 2 minuti con 2 click via Web.
Trovi lofferta speciale di questo mese allindirizzo
www.myabb.it/linuxpro oppure scrivi ad abbonamenti@
myabb.it; puoi anche abbonarti via fax allo 02 700537672,
per telefono allo 02 87168074 dal luned al venerd dalle
ore 9 alle ore 18. Il costo della chiamata da linea fissa
pari a una normale chiamata su rete nazionale in Italia. Da
telefono cellulare il costo dipende dal piano tariffario in uso.
Arretrati
Si sottoscrivono online allindirizzo:
www.spreastore.it/linuxpro
Per informazioni o richieste: arretrati@linuxpro.it
oppure al fax 02.70.05.37.67.2
Stampa: Arti Grafiche Boccia S.p.A. - Salerno

Digital media coordinator: Massimo Allievi


Realizzazione editoriale: Oku Studio

Sprea Editori S.p.A.


Socio unico Sprea Holding S.p.A.

Contenuti su licenza: Linux Format - Future P.ce


- London (UK)

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

Pubblicit: Luigi De Re - luigidere@linuxpro.it


Tel. 339 4546500

Consiglio di amministrazione:
Luca Sprea (Presidente),
Stefano Spagnolo (Vice Presidente - Amministratore

Iconografia e fotografie: Marco Coppola

Delegato), Mario Sprea (Consigliere)


Collegio sindacale: Roberto Bosa (Presidente),
Maria Luisa Capuzzoni, Ugo Besso
Amministrazione: Anna Nese - amministrazione@sprea.it
Foreign rights: Gabriella Re - international@sprea.it
Marketing: Walter Longo
marketing@sprea.it
Distributore per lItalia e per lEstero:
Press-Di Distribuzione Stampa e Multimedia S.r.l.
20134 Milano
LINUX PRO
Pubblicazione mensile registrata al Tribunale di Milano
il 08.02.2003 con il n. 74 - Tariffa R.O.C. - Poste Italiane
Spa - Sped. In Abb. Post. - D.L. 353/2003 (conv. In L.
27/02/2004 n. 46) art. 1, comma 1, DCB Milano
Copyright Sprea Editori S.p.A.
La Sprea Editori titolare esclusiva della testata Linux Pro
e di tutti i diritti di pubblicazione e diffusione in Italia. I contenuti
sono adattati e tradotti su licenza della pubblicazione: Linux
Format Future P.ce London (UK). Lutilizzo da parte di
terzi di testi, fotografie e disegni, anche parziale, vietato.
LEditore si dichiara pienamente disponibile a valutare - e se
del caso regolare - le eventuali spettanze di terzi per la
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
legale in via Beltrami 21, 26100 Cremona. La stessa La
informa che i Suoi dati, eventualmente da Lei trasmessi alla
Sprea, verranno raccolti, trattati e conservati nel rispetto del
decreto legislativo ora enunciato anche per attivit connesse
allazienda. La avvisiamo, inoltre, che i Suoi dati potranno
essere comunicati e/o trattati (sempre nel rispetto della legge),
anche allestero, da societ e/o persone che prestano servizi
in favore della Sprea. In ogni momento Lei potr chiedere
la modifica, la correzione e/o la cancellazione dei Suoi dati
ovvero esercitare tutti i diritti previsti dagli artt. 7 e ss. del D.
Lgs. 196/03 mediante comunicazione scritta alla Sprea e/o
direttamente al personale Incaricato preposto al trattamento
dei dati. La lettura della presente informativa deve intendersi
quale presa visione dellInformativa ex art. 13 D.Lgs. 196/03
e linvio dei Suoi dati personali alla Sprea varr quale consenso
espresso al trattamento dei dati personali secondo quanto
sopra specificato. Linvio di materiale (testi, fotografie, disegni,
etc.) alla Sprea Editori S.p.A. deve intendersi quale espressa
autorizzazione alla loro libera utilizzazione da parte di Sprea
Editori S.p.A. per qualsiasi fine e a titolo gratuito, e comunque,
a titolo di esempio, alla pubblicazione gratuita su qualsiasi
supporto cartaceo e non, su qualsiasi pubblicazione (anche
non della Sprea Editori S.p.A.), in qualsiasi canale di vendita
e Paese del mondo. Il materiale inviato alla redazione
non potr essere restituito.

e
n
o
i
z
o
m
Une
isce MAI!
che non fin

ANCHE
SU iPad

TUTTI I MESI IN EDICOLA

NUOVI ORIZZONTI CON I NUOVI

DOMINI
Scegli subito tra oltre 700 nuovi domini di primo livello il tuo indirizzo web
facile da memorizzare e ideale per la tua attivit, come ad esempio bianchi.shop,
evento.roma o rimini.hotel. Oppure assicurati ulteriori estensioni per i domini
gi a tua disposizione per essere trovato ancora pi facilmente su internet.
Con oltre 20 milioni di domini ospitati, 1&1 il leader di mercato in Europa per
la registrazione di domini. Grazie ad una integrata funzione di trasferimento,
gli indirizzi web registrati presso 1&1 possono essere velocemente e facilmente
collegati a qualsiasi sito, indipendentemente dal provider che lo ospita.
Per maggiori informazioni visita il sito 1and1.it

NOVIT!
PRENOTA
SENZA COSTI E

SENZA IMPEGNO!*

DOMINIO | MAIL | HOSTING | SERVER

1and1.it

* La prenotazione del nome di dominio senza costi e non vincolante e precede la fase di effettiva registrazione, il cui esito non rientra nelle responsabilit di 1&1 bens in quelle del Registro
competente. In caso di effettiva registrazione si applicano i termini e condizioni del Registro e di 1&1.