Sei sulla pagina 1di 100

VMware Workstation 10 A confronto 5 gestori di collezioni FAQ: pump.

io

Diventa protagonista nel mondo Linux

Pro

Il futuro Mobile
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, S/NA - Distributore: Press-Di, milano

6 piattaforme per battere iOS


Plasma Active Ubuntu Touch Tizen
CyanogenMod Firefox OS Sailfish

15 pagine di pura programmazione

Accademia
del codice

C++ Usa i puntatori smart


Go Per creare codice concorrente

Lancia i componenti
Tre moduli extra per
potenziare Raspberry Pi
e creare progetti avanzati

Nuvola lampo
Trasforma velocemente
il tuo codice in un servizio
cloud con la magia di JuJu
Linux Pro 136 - Mensile - 2013 - 5,90 - CHF 13,60

Pacchetti ad hoc

In prova

Dell XPS 13
Developer Edition

A ll a
l
scoperta de

progetitko
sputn

Con FPM crei file RPM


e Deb anche se non sei esperto

Finalmente nato
lultrabook con Ubuntu
per chi programma
24 ore al giorno

Il mistero dello swap

Ti sveliamo come funziona e


come impostarlo correttamente

365 giorni di puro rock.


Acquistala subito,
unedizione limitata
A SOLO

90

euro

anzich 9,90

La prima Agenda
in realt aumentata
l

Buono Sconto di 1

,00

PARTECIPA AL NOSTRO SONDAGGIO

QUAL il tuo cantante o gruppo preferito?

Linux pro 136 - CODICE CAMPAGNA 264

RISPOSTA ......................................................................................................................................................

acquistala
in edicola
e pagala meno

COMPILA CON I TUOI DATI


COGNOME ....................................................................................................................................................
NOME .............................................................................................................................................................
VIA ..................................................................................................................................................................

Consegna questo coupon alledicolante per avere lAgenda Rock


al prezzo speciale di euro 8,90 anzich euro 9,90.
Buono valido dal 28/12/2013 al 28/02/2014
Riservato ai signori rivenditori che ringraziamo per la collaborazione.
Consegnate il presente buono al vostro ispettore Press-Di oppure inviatelo
in busta chiusa a: PEW S.r.l. Via Torino, 51 - 20063 Cernusco sul Naviglio (MI)
Per ogni buono PEW rimborser 1,00

.................................................................................

N ............................... cap .....................................

LOCALIT .................................................................................. prov ......................................................


e-maiL .............................................................................................................................................................

Editoriale

Tirando le somme
Eccoci giunti allultimo numero del 2013.
Come si fa spesso in questi casi,
proviamo a intavolare un consuntivo di quanto
accaduto durante lanno. Abbiamo scritto
intavolare perch vorremmo che queste
nostre parole facessero nascere una
discussione con tutti voi. Beh, non vi possiamo
ospitare tutti in redazione, ma via mail c
spazio per chiunque. Dopo che per molto
tempo si cercato di spingere GNU/Linux
sul desktop, questo sembra lanno in cui anche
gli ultimi sostenitori di questa idea abbiano
seppellito lascia di guerra: il sistema nato
dal progetto GNU e da Torvalds ha s
conquistato dei mercati, ma non quello delle
scrivanie dei PC. Forse ci aveva visto bene Red
Hat qualche anno fa, dismettendo per prima,
se non ricordiamo male, la sua distribuzione
dedicata ai desktop enterprise... Ed anche
questo il motivo, o uno dei motivi, per cui
la parte di criminalit che si occupa di far
soldi tramite mezzi informatici snobba
fondamentalmente GNU/Linux e si dedica
alla creazione di botnet bucando Windows,
Mac, Android, router e chiss cosaltro. Difatti
la sicurezza, assieme alla privacy, nel 2013
sono state al centro dellattenzione. Tra siti
defacciati, database di password rubate, app
con malware e la NSA che si divertiva a spiare
un po tutti, oramai il discorso sicurezza non
pi una cosa per professionisti ma tocca
pesantemente noi tutti. Anche i televisori
e le automobili possono essere veicolo di
minacce e spiate, per cui nel corso del 2014
cercheremo di tenerci e tenervi aggiornati,

cercando di capire se in questo campo lOpen


Source pu essere daiuto. Tornando a parlare
dei mercati conquistati dal Pinguino, se il
desktop causa persa, smartphone e tablet
Android (sistema basato sul kernel Linux)
dominano il mercato del Mobile per quantit
e, in alcuni casi, anche per qualit. Visto
che il settore in forte crescita, in questa
arena si sono buttate anche altre realt
che nel 2014 dovranno consolidarsi o sparire:
ve ne presentiamo una panoramica
nellarticolo di copertina di questo numero.
Linux leader incontrastato del mercato
embedded (set-top box, NAS, router, firewall
e cos via) da molto tempo, ma da una parte
di questo ambiente nel 2013 esplosa una
vera rivoluzione: i processori ARM e le schede
di prototipazione/i piccoli computer tascabili
funzionanti con Linux. Alcuni esempi?
Raspberry Pi, Cubieboard, nuove versioni
di Arduino (una anche in collaborazione con
Intel), Gizmo, Olinuxino... potremmo andare
avanti quasi allinfinito. Se pensate che nel
corso del 2013 siano successe altre cose
degne di nota, scriveteci senza timori.
Prima di concludere e di lasciarvi alla lettura
del numero sono per dobbligo gli auguri
di Buone Feste a tutti voi che ci leggete.

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 136

Sommario

Sommario
LINUX PRO 136

LINUX

PRO

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

In primo piano

LINUX
MOBILE

Lo staff di Linux Pro vi aiuta a capire qual il sistema operativo


mobile Open Source pi adatto a voi: tablet o smartphone,
c sicuramente un sistema operativo perfetto per le vostre esigenze...

10

ABBONATI ALLA

VERSIONE DIGITALE
SOLO PER PC E MAC

A SOLI

14,90

DURATA ABBONAMENTO 1 ANNO

08 pump.io
2

LINUX PRO 136

www.sprea.it/digital

Sommario
04 Newsdesk
07 Posta

Realizzate e distribuite i vostri pacchetti

08 FAQ: pump.io

60 Juju

Approfondimenti
10 Linux Mobile

66 ZFS
Il filesystem flessibile per eccellenza

70 Raspbian

18 Ultrabook Dell

Niente di meglio di un sistema operativo


dedicato per gestire la Raspberry Pi!

I segreti del progetto Sputnik

Imparate a ricevere via mail solo gli avvisi


di sistema che vi interessano davvero

Gli extra migliori per la vostra RP

26 Intervista
Eben Upton di Raspberry Pi Foundation

30 ReactOS
Usare i programmi Win32 senza Windows

34 Trucchi per sysadmin


Riconoscimento della rete, ID unico,
guida rapida allo spazio di swap

Accademia
76 Concetti di base
Con SQL e un database relazionale
strutturate la vostra collezione di musica
rock e imparate a organizzare i dati

78 C++11
82 Go
Il linguaggio perfetto per scrivere processi
da eseguire in contemporanea

Il ritorno di Motorola e Google


Vulnerability Reward Program

86 Haskell

39 LG Nexus 5

Imparate a scrivere un programma


con questo linguaggio funzionale

Le caratteristiche dellultimo dei Nexus

Recensioni
40 I test del mese

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

La mappa dei LUG italiani

94 Guida software
Guida al software presente nel DVD

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

Tizen
Il futuro dei dispositivi
mobili sempre
pi Open Source

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

Il database perfetto

Inoltre
6 antenne per la massima velocit wireless
a 2,4 e 5 GHz in contemporanea

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

AVM Fritz!Box 3390

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

92 Leco dei LUG

PC-BSD 9.2, VMware Workstation 10,


VMware Player 6, Da non perdere

Scopri Trisquel, la distro pi fedele


ai dettami del Free Software

RIVISTA
GIOCHI
PokerTH
Ayon 0.8.2
Catfish
1.0.1
Choria

INTERNET
RIVISTA
Firefox
Codice 21
Colorful
desempio
1.1
Android
ProFTPD
Codice
Data Crow
desempio
1.3.4d
3.12.5 Raspberry
Codice

PROGRAMMAZIONE
GCStar
1.7
desempio Ruby
Codice
CPPCheck
LiVES
2.0.6
desempio
1.60.1 Sysadmin
BurgerSpace
GTKDialog 0.8.3
Sixv
1.9.2 LiteIDE
NetHogs

RIVISTA
Tellico
2.3.8
0.8.0

Consigli da esperti sulluso dei puntatori

Android
38 News

Scegli lambiente grafico giusto


per look e funzionalit!

LATO B 1.1.3
Parcellite
DISTRIBUZIONI
BackBox
Deft 8 33.09
Mageia
(32 bit)
pfSense
IPFire 2.1
Sophos
UTM
LiveCD
3
2.1
Slackware
Salix Xfce9.4
Untangle
14.0.
14.1(32
1(32e bit)
64 bit)

74 Log di sistema

22 Moduli hardware

Libert pura

LATO A
DISTRIBUZIONI
DESKTOP
OpenSUSE
Fedora 19 (32
Mednafen
0.9.28
13.1bit)
(32 bit)

LOpen Source per il mondo mobile

Pro

IL DVD IN BREVE

Lo strumento gestionale perfetto


per gestire i servizi cloud

Social network Open Source

Diventa protagonista nel mondo Linux

24 GENNAIO

56 FPM

Filo diretto con la redazione

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

NUMER

Tutorial

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 136

21

Newsdesk

Ogni mese tutte le novit dal mondo delle aziende e della comunit Open Source
Se hai news da segnalarci o dei commenti scrivi a newsdesk@linuxpro.it

Codec

Il codec video H.264 gratis!

isco, lazienda nota


per i propri dispositivi
di rete, ha compiuto
di recente una mossa
a sorpresa. Infatti ha deciso
di permettere il download
gratuito dei binari del codec
video H.264. Ma non finisce
qui, perch si perfino offerta
di pagarne le spese di brevetto
e le royalty a MPEG LA.
Questa operazione di
filantropia digitale ha delle
conseguenze dirette sul mondo
dellOpen Source, poich
da oggi sar possibile
implementare quel codec video
in qualsiasi progetto, senza
dover pagare alcun diritto.
Lo scopo primario della mossa
di Cisco quello di spingere
alladozione dello standard
WebRTC, sostituito con i codec

VP8 da Google. Come


sappiamo, il codec video H.264
associato alla tecnologia
ad alta definizione, come quella
del Blu-ray. Quindi, con questa
operazione, evidente
che lo standard WebRTC
diventa molto pi appetibile,
cos come evidente che avr
una ricaduta positiva su tutto
quanto riguarda lalta
definizione nel Web, dallo
streaming video alle
videoconferenze, campi
in cui peraltro Cisco
ha interessi diretti e a cui
comprensibilmente attenta.
quindi lecito supporre
che moltissime aziende,
soprattutto quelle minori,
preferiranno affidarsi a questo
standard piuttosto
che sviluppare tecnologie

Cisco ha tutto linteresse a far diffondere lo standard


WebRTC, perch controlla il mercato delle videoconferenze

LINUX PRO 136

in proprio, con una


notevole riduzione
dei costi. Uno dei primi
esempi viene da Mozilla
Foundation che ha deciso
di implementare
OpenH264 in Firefox.
WebRTC fa funzionare
applicazioni VoIP
e per la condivisione P2P
senza bisogno di plug-in

Lanima FreeBSD di PlayStation 4


Era una voce di corridoio
che correva gi da tempo, tanto
che, alcuni mesi fa, il team VGLeaks
aveva addirittura mostrato le prime
immagini del kit di sviluppo della
nuova console di Sony,
sottolineando il fatto che fosse
animata da un software free
con un bootloader Grub2.
Ora che la nuova PlayStation 4
ha fatto la sua comparsa
nel mercato americano, non ci sono
pi dubbi. Infatti sappiamo per
certo che il suo sistema operativo,
che si chiama Orbis, basato
su FreeBSD 9, che ci garantisce
prestazioni di altissimo livello

e una notevole stabilit. Questo


risultato stato ottenuto anche
grazie ai driver che Sony e AMD
hanno sviluppato insieme.
Scendendo ancora pi nel dettaglio,
scopriamo che nella PlayStation 4
alberga un processore AMD APU
a 8 core, affiancato da una scheda
grafica AMD, serie 7800, con 8 GB
di RAM GDDR5, unottima
accoppiata per gestire anche
i videogiochi pi estremi. La console
corredata anche da un lettore
Blu-ray, un disco fisso da mezzo
TB, una porta Ethernet, il Bluetooth
2.1 con EDR, 2 porte USB 3.0 e un
dispositivo Wi-Fi IEEE 802.11 b/g/n.

Newsdesk
Privacy

Niente backdoor per Linux!

embra ormai che


lo scandalo che va sotto
il nome di Datagate
e che vede come imputata
la National Security Agency
americana non abbia davvero
pi confini. Infatti, gi lo scorso
settembre, Linus Torvalds aveva
rivelato al portale The Register
che la famigerata NSA gli aveva
chiesto di inserire una backdoor
nascosta nel kernel Linux per poter
accedere liberamente a tutti quei
dispositivi che ne fanno uso
e spiarne le operazioni, ora questa
notizia giunta al Parlamento
Europeo per bocca di Nils Torvalds.
Naturalmente, a quanto sembra,
Linus Torvalds avrebbe rifiutato
di cooperare con lente americano.
A questo proposito, Rick Falkvinge,
del Partito Pirata Svedese,

ha voluto puntualizzare
che linserimento di una backdoor
nel kernel Linux sarebbe
unoperazione quasi impossibile
poich, essendo Open Source, i suoi
sviluppatori se ne accorgerebbero
e la eliminerebbero. Tuttavia,
proprio alcuni sviluppatori hanno
fatto notare che, visto il gran
numero di righe di codice che
compongono un kernel come quello
di Linux, non si pu escludere a
priori la presenza di una backdoor,
come non si pu escludere
che la NSA abbia preso contatti
anche con i creatori delle
pi importanti distribuzioni
in circolazione, come Ubuntu,
Fedora o Debian. Comunque
la situazione sul versante Linux
di sicuro meno preoccupante
rispetto a quella di sistemi operativi

Il server di posta pi usato


Open Source!

versione a pagamento, posizionino Zimbra Open Source al


primo posto assoluto della classifica.
Confrontando le differenze sostanziali tra la versione licenziata
(Network Edition) e la versione Open Source (Community
Edition) di Zimbra, importante sapere che il prodotto il
medesimo a livello di codice, di versioni e di rilasci. Lunica
differenza che, la versione Network viene distribuita solo
in formato binario ed aggiunge
funzionalit enterprise al prodotto
come: Backup Full/Incrementale,
Integrazione
Activesync
con
device mobili, Multistorage e
Amministrazione distribuita.
In realt, anche chi adotta la
versione Open Source pu arricchire
il sistema di queste funzionalit
seguendo due strade: attraverso
una ricca disponibilit di scripts di
comunit largamente disponibili,
oppure utilizzare ZeXtras Suite,
lAdd-on professionale che consente
di portare su Zimbra Open Source
funzionalit di livello anche superiore
a quelle della versione network. Il
backup, proposto in modalit realtime, senza perdita di dati, anzich in
modalit classica full/incrementale,
o la Chat integrata non disponibile
nella versione network, ne sono alcuni esempi ed possibile
avere questo e molto altro pagando solo i moduli necessari
ad un prezzo estremamente pi competitivo.

Informazione a cura di Studio Storti Srl

Nellagguerrito mercato della Posta Elettronica e


Collaborazione Aziendale si sta facendo strada un importante
concorrente dal mondo Open Source.
Se i dati ci mostrano ancora in vetta al
mercato lEnterprise Messaging and
Collaboration Microsoft Exchange e
Lotus Domino, importante sapere
che il terzo prodotto come licenze/
utente vendute Zimbra.
Il dato ancora pi importante
se valutiamo alcuni aspetti di
contesto. Innazitutto interessante
analizzare che i primi tre attori
abbiano quote di mercato molto
simili con scostamenti inferiori al
50% mentre, lo scostamento dal
terzo ai successivi prodotti, sono di
un ordine di grandezza.
Altro dato fondamentale per la
corretta
interpretazione
dello
scenario riferita al fatto che,
nel conteggio della posizione, si
sono considerate solo le licenze
commerciali di Zimbra Network fino
ad ora vendute. Se valutiamo invece gli utenti stimati della
versione Open Source di Zimbra, vediamo immediatamente
come questi, in numero stimato almeno 4 volte superiore alla

come Windows e Mac OS X


che, avendo un codice sorgente
non Open, potrebbero nascondere
molto pi facilmente una porta
nascosta. LXP

NEW

HOSTING
Connettivit di oltre 300 Gbit/s

Backup giornalieri

SiteAnalytics

Georidondanza
NetObjects Fusion 2013

PHP 5.4

CDN

Free Mode o Safe Mode


MySQL

SEO

Newsletter Tool

Mobile Site Builder

PACCHETTI COMPLETI PER

Pi di 140 applicazioni

PROFESSIONISTI

Performance garantite
Adobe Dreamweaver CS5.5 incluso

800 977313
(numero verde)

OFFERTA
SPECIALE

40

12 mesi da

Drupal, WordPress, Joomla!, Typo3, Magento

6 10

per il primo
anno IVA escl.*

IVA escl.*

1and1.it

* Pacchetti di 1&1 Hosting con 30 giorni soddisfatti o rimborsati e senza costi di attivazione. Tariffa ridotta per contratti con pagamento anticipato di 12 mesi, come ad esempio 1&1 Basic in
offerta per il primo anno a 40 IVA escl. (47,60 IVA incl.) invece di 84 IVA escl. (99,96 IVA incl.). Dominio .com in offerta per il primo anno a 6 IVA escl. (7,14 IVA incl.), invece di
10 IVA escl. (11,90 IVA incl.). I costi per i contratti di dominio non sono rimborsabili. Per maggiori informazioni visita il sito 1and1.it.

MASSIMA FLESSIBILIT

Posta

PER I TUOI PROGETTI WEB

I nostri esperti offrono ogni mese i loro consigli di


programmazione e di amministrazione del sistema

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

Proteggere i video

Buongiorno redazione, da qualche tempo sto cercando


di trasformare dei vecchi filmati su nastro cos da
metterli su DVD (facendone due copie di ognuno)
ma ho il terrore che, con il passare degli anni, questi
si possano rovinare. C un modo per proteggere
i file con un checksum cos che io mi possa accorgere
quando iniziano a diventare illeggibili e correre
ai ripari copiandoli di nuovo?
Enrico

Ciao Enrico, creare un checksum relativo a un file,


di qualunque natura esso sia, davvero molto facile.
Esistono peraltro diversi tipi di checksum, per esempio
MD5, e lo puoi generare e salvare in un file di testo
da terminale con il comando
md5sum nomedelfile > CHECKSUM_nomedelfile
Se per ti ritrovi con pi file in una stessa cartella puoi
usare un comando un po pi complesso per fare tutti
i checksum in una volta sola:
md5sum >MD5SUMS $(find dirname -type f)
Questo comando crea un file con dentro tutti i valori
di controllo, che potrai verificare in seguito digitando
md5sum --check MD5SUMS
In alternativa ti suggeriamo luso di DVDisaster
(http://dvdisaster.net) che potrebbe fare proprio al tuo
caso, automatizzando il processo e fornendoti anche
un mezzo per recuperare i file danneggiati.
L'invio alla redazione di qualsiasi materiale editoriale (testi, fotografie, disegni, etc.),
su qualsiasi supporto e tramite qualunque canale (es. posta ordinaria, e-mail, facebook, sito
Web, etc.) deve intendersi
- sia quale presa visione, nel colophon della rivista, dell'Informativa ex art. 13 d.lgs.
196/03, nonch quale consenso espre sso al trattamento dei dati personali ai sensi
dell'art. 23 d.lgs. 196/03 da parte della Sprea Editori S.p.A.;
- sia quale espressa autorizzazione in qualit di titolare dei diritti d'autore e di utilizzazione economica, nonch eventualmente
di immagine (se del caso anche in qualit di esercente la patria potest sul minore
raffigurato e/o ripreso nelle immagini) -, a titologratuito e in via definitiva, alla libera
utilizzazione del predetto materiale da parte di Sprea Editori S.p.A., per qualsiasi fine
e con qualsiasi mezzo, e comunque, a titolo di mero esempio, alla pubblicazione gratuita
su qualsiasi supporto (cartaceo e non) di titolarit della stessa Sprea Editori S.p.A. e/o delle
altre societ in qualunque modo ad essa collegate, nonch per qualsivoglia altro fine,
con autorizzazione altres all'elaborazione, all'adattamento, alla trasformazione e a ogni
altra modificazione considerati opportuni a discrezione della redazione. Resta inteso
che il materiale inviato alla redazione non potr essere restituito ed entrer a far parte
dell'archivio della redazione a titolo definitivo.

TUTTO INCLUSO

Dominio gratuito (.it, .com, .net, .org, .info, .eu)


Potenza illimitata: spazio web, traffico, account e-mail,
database MySQL
Sistema operativo Linux o Windows

APP AD ALTE PRESTAZIONI

Pi di 140 popolari applicazioni (Drupal, WordPress,


Joomla!, Typo3, Magento)
Supporto di esperti per ogni domanda

POTENTI TOOL

Software Premium inclusi: Adobe Dreamweaver CS5.5

e NetObjects Fusion 2013


1&1 Mobile Site Builder
PHP 5.4, Perl, Python, Ruby

MARKETING DI SUCCESSO

1&1 Strumento SEO


1&1 Newsletter Tool
1&1 SiteAnalytics

TECNOLOGIA ALLAVANGUARDIA

Massima disponibilit (georidondanza)


Connettivit di oltre 300 Gbit/s
Fino a 2 GB di RAM garantiti
1&1 CDN powered by CloudFlare

1and1.it
LINUX PRO 125

FAQ pump.io

Cosa ne pensi di questo progetto? Scrivilo a faq@linuxpro.it

Alcune
domande su...

pump.io?
Linux pro presenta un software open Source e il relativo protocollo in grado
di rendere superflui Facebook e gli altri social network
Cominciamo con una domanda facile.
D Puoi
darmi una definizione di pump.io?
pump.io (http://pump.io) un software
R open Source progettato per ospitare
e supportare buona parte delle attivit che
al momento si svolgono sui social network
classici basati sul Web o sui dispositivi mobili.
Evan prodromou lo ha lanciato alla fine
del 2012 come sostituto di un altro dei suoi
progetti, Statusnet, utilizzato per identi.ca,
la popolare alternativa a Twitter.
Come? Perch? Che cosa cera che
D non
andava in StatusNet e Identi.ca?
nulla, in realt tranne una cosa. il grande
R successo del servizio di microblogging

Linux pro 136

identi.ca ha fatto s che mancasse il tempo (o la


domanda) per creare gli altri servizi indipendenti
che costituivano la motivazione essenziale per
lo sviluppo di Statusnet. per questo prodromou
ha annunciato che nel 2013 Statusnet avrebbe
chiuso i battenti a vantaggio di pump.io. in pratica,
il codice di Statusnet rimarr disponibile
e c gi chi ha annunciato che continuer
a supportarlo. identi.ca, invece, dovrebbe finire
per diventare uno dei vari servizi di pump.io.

D
R

Meno male; ma quali sono i principali


vantaggi di pump.io?
Lidea alla base del progetto mettere
al centro gli individui, pi che i singoli
siti sociali o applicazioni da essi usati

per comunicare. per farlo, pump.io utilizza


una licenza Apache, che ne faciliter ladozione
da parte di quanti pi prodotti possibile,
una semplice interfaccia rEST e, soprattutto,
il concetto di federazione.
So che cos una licenza software;
D ma
che cosa significa REST?
il representation State Transfer un
R protocollo aperto progettato per lo scambio
di richieste tra client e server indipendenti
e responsabile dello stato delle risorse
generiche. Alcuni degli urL di Twitter o di Flickr
sui quali clicchi per visualizzare la timeline di un
utente sono esempi concreti di comunicazioni
rEST. Tecnicamente, i vantaggi principali del

pump.io FAQ
protocollo REST sono la sua semplicit e il fatto
che i suoi messaggi sono in formati aperti,
come XML o JSON, facilmente leggibili da parte
di numerosi software.
Hai detto che pump.io utilizza REST solo
D per
una semplice API?
cos. Pump.io si limita deliberatamente
R a costituire poco pi di una semplice
interfaccia per la programmazione di server
e applicazioni. La creazione delle applicazioni
per il social networking viene espressamente
delegata ai terzi.
E per quanto riguarda la federazione?
D Non
centra nulla con Star Trek, immagino
No, infatti; ed anche molto semplice
R da spiegare. Per twittare occorre avere
un account sui server di Twitter e collegarsi
in qualche modo a essi. Tutti i vostri amici che
desiderano leggere i vostri tweet devono disporre
di un proprio account Twitter o almeno, nel caso
dei tweet pubblici, visitare il sito di Twitter.

La federazione, invece, lesatto opposto


di quanto avviene su Twitter, Facebook
e Google Plus?
Pi o meno. La federazione, cio
linterconnessione volontaria di pacchetti
software diversi tramite standard aperti,
pur avendo luogo su numerosi server
completamente indipendenti, fa s che
le interazioni tra gli utenti appaiano come se
avvenissero tramite un unico servizio e ununica
interfaccia. Uno degli obiettivi essenziali della
federazione di pump.io sostituire, almeno
in parte, luso di infrastrutture centralizzate
che sono a un tempo molto costose
da mantenere per le imprese e molto facili
da monitorare con sistemi tipo PRISM.

cosa si fa interessante; ma che cosa


D siLapotrebbe
fare concretamente
con un account su un server pump.io?
Unoccorrenza generica di pump.io
permette a tutti gli utenti di postare
materiale e a tutti i loro follower di visualizzare
i flussi di attivit risultanti. Il materiale
in questione pu essere qualsiasi informazione
digitale, purch formattata correttamente:
posizioni geografiche, eventi, testi di qualunque
lunghezza, materiali multimediali o perfino
azioni di gioco. Le attuali versioni di pump.io
supportano gi tutte le azioni di social
networking pi comuni, come quella di seguire
gli amici o di assegnare il mi piace ai loro post.

Come si pu provare leffetto del social


D networking
in stile pump.io?
Ci sono due modi per farlo. Uno installare
R una copia del server. Laltro, molto pi
semplice, consiste nel caricare sul browser

la pagina http://pump.io/tryit.html, che


selezioner a caso un server pump.io gi aperto
a nuovi utenti, reindirizzandovi il browser.
Si tratta di una scelta deliberata, che ha
il duplice obiettivo di distribuire il carico sul
maggior numero di server possibile e di imporre
la federazione, diversamente da quanto avveniva
con StatusNet e Identi.ca.
In che modo potr accedere al mio
D account
pump.io dopo averlo creato?
Solo tramite un browser?
No, non necessariamente. Al momento
esiste gi almeno un client pump.io
per desktop, Dianara (http://jancoding.
wordpress.com/dianara), che permette di
utilizzare il proprio account senza un browser.
Speriamo che seguiranno molti altri client,
sia per desktop sia per i sistemi mobili.

Un attimo, per. Lidea centrale del social


D networking
connettersi con altre
persone ma come faccio a trovarle,
se non esiste un server centrale?
Ottima domanda. In effetti, la natura
decentrata di pump.io rende questa
operazione un po pi complicata di quanto
lo sia su Facebook o altri servizi analoghi. Al
momento, per seguire altri utenti, dovete prima
di tutto scoprire qual il loro server pump.io
e collegarvici. Poi occorre cliccare prima su Log
in (non chiedermi perch) e quindi sul pulsante
Follow che apparir. Le cose miglioreranno
senza dubbio con il tempo ma difficilmente
la scoperta degli amici diventer immediata
come su Facebook. Forse questo un
inconveniente inevitabile della federazione;
ma se vuoi la mia opinione, ne vale la pena.

E per quanto riguarda i contenuti?


D Facebook
e Twitter usano ununica
casella di ricerca per tutti i contenuti
postati dai loro utenti. Pump.io pu offrire
qualcosa del genere?
No anzi s, pi o meno. Ogni utente
di pump.io ha una casella in uscita (outbox)
che contiene le sue attivit e una casella
in entrata (inbox) che riceve notifiche relative
a tutte le attivit seguite tramite lo stesso
account. Ogni utente pu ovviamente effettuare
ricerche allinterno di questi dati; non esiste per
uno spazio unico che raccolga i contenuti di tutti.

Ok, evitare la centralizzazione il principio


D base
di pump.io ma se non sbaglio
hai detto anche S, pi o meno
Spiego che cosa intendevo dire.
Per impostazione predefinita, tutti i server
pump.io inviano tutti i contenuti dichiarati
pubblici dai loro utenti a un sito in modalit
firehose. Qualunque applicazione o motore
di ricerca che si colleghi a questo sito pu

ricevere tutti i messaggi pubblici. Il sito


predefinito http://ofirehose.com ma gli
amministratori di pump.io possono scegliere
una destinazione diversa o anche disattivare
del tutto la modalit firehose.
e i flussi di attivit.
D DiHaichecitatocosale siattivit
tratta esattamente?
Le attivit di pump.io sono semplici
R descrizioni
di ci che avviene a o tra
gli utenti. Purch formattata correttamente,
qualsiasi cosa che abbia una struttura soggettoverbo-oggetto pu essere unattivit di pump.io:
per esempio, John-ha caricato-immagini
o Connie-ha seguito-Mark. Le attivit
pi importanti creano nuovi oggetti, cio
i post. Le attivit minori, invece, si limitano
perlopi a modificare oggetti gi esistenti,
compreso lelenco delle relazioni tra gli utenti,
il cosiddetto social graph.
Sembra abbastanza semplice. Perci,
D immagino,
i flussi sono semplicemente
sequenze di attivit effettivamente
caratterizzate da un tema comune
Esattamente. Unaltra caratteristica generale
dei flussi che ognuno di essi visibile
solo al pubblico prescritto, che pu essere
costituito da un solo utente, dal mondo intero
o da una via di mezzo qualsiasi, per esempio
da tutti i membri di un elenco o di un progetto
predefinito. Si pu dire che lunico compito
di pump.io distribuire i flussi di attivit
agli utenti definiti come loro destinatari.

pump.io personalmente,
D suE perun usare
proprio server, che cosa si deve fare?
cominciare, occorre scaricare
R ilPersoftware;
senza entrare troppo nei dettagli
tecnici, questo va utilizzato come un server
Web in ascolto sulla porta TCP 80 o 443.
Ovviamente, a meno di non disporre di un proxy
di qualche genere, questo oscurer qualunque
server Web effettivo gi in funzione sullo stesso
indirizzo IP. Importante anche stabilire quale
driver utilizzare per il databank. Il termine
databank indica un livello di astrazione generale
che supporta sia NoSQL sia i database
relazionali. Per ora i database pi indicati per
pump.io sono Couchbase, MongoDB e Redis.
Il social networking con pump.io sembra
D interessante.
Dove si possono trovare
altre informazioni?
Oltre alla homepage di pump.io, ti consiglio
di visitare i siti http://activitystrea.ms
e https://e14n.com/evan. Se volete gestire
una vostra occorrenza di pump.io, invece, date
unocchiata allarticolo Setting up pump.io on
Debian Wheezy (http://saz.im/blog/pumpio.
html) e adattate le sue indicazioni alla vostra
distribuzione GNU/Linux. LXP

Linux pro 136

Linux Mobile

LINUX

MOBILE
Scoprite la prossima generazione
di sistemi operativi mobili
Open Source insieme a noi

ndicare una data precisa difficile; ma in un


momento imprecisato degli ultimi due anni,
Linux divenuto il sistema operativo dominante
per gli smartphone e, stando ai rapporti,
negli ultimi due mesi ha iniziato a dare la
scalata anche ai tablet. Tutto questo grazie
ad Android. Android e Linux, daltra parte,
non sono proprio la stessa cosa. Il kernel
nato originariamente da un fork di Linux
(bench i due siano ora sottoposti a una
nuova fusione) e il fatto che vi siano
incorporati elementi proprietari lascia lamaro in
bocca a pi di un fautore dellOpen Source. Il mondo
di Linux, comunque, non rimasto a guardare
mentre i giganti si affrontavano. Varie aziende

e organizzazioni si sono date da fare per progettare


nuovi sistemi operativi mobili basati su Linux. Alcuni
sono ispirati a idee nuove, mentre altri costituiscono
versioni aperte e modificabili di sistemi operativi

progettazione e acume commerciale, potrebbe riuscire


a conquistare il mondo inaugurando la nuova era di
Linux mobile. Lo svantaggio del mercato mobile che
installare nuovi sistemi operativi sui dispositivi molto
pi arduo che nel caso dei computer fissi.
Gli standard sono meno numerosi e i nuovi
sistemi supportano tipicamente solo un
numero limitato di dispositivi. Il vecchio Nexus
7 tra i modelli pi popolari e abbiamo deciso
di utilizzarlo come sistema di prova per questo
articolo. Mentre scriviamo, solo uno dei sistemi
in esame effettivamente in vendita (Firefox OS);
daltronde, data la velocit con cui si evolve il mondo
dei telefoni cellulari, quando leggerete queste pagine
potrebbero essercene altri gi disponibili.

Il mondo di Linux non


rimasto a guardare mentre
si scontravano i giganti

10

LINUX PRO 136

esistenti. Quasi certamente, alcuni dei sistemi qui


in esame scompariranno silenziosamente senza aver
lasciato particolari tracce; qualcuno, per, con la
giusta combinazione di capacit tecniche, gusto per la

Linux Mobile

CYANOGENMOD
Android cos come lo conosciamo

yanogenMod, si basa su Android Open Source Project


ed un sistema operativo gratuito molto simile (dal punto
di vista dellutente) alla versione di Google. Abbiamo provato
a trasformare il nostro fedele Nexus 7 in un dispositivo completamente
Open Source per valutarne le prestazioni rispetto a quelle del normale
cocktail di materiale libero e proprietario. Linstallazione risultata
semplicissima; bastato verificare che fossero installati gli strumenti
necessari (il pacchetto android-tools-fastboot dei sistemi basati
su Debian e Ubuntu), quindi abbiamo semplicemente seguito
le istruzioni di www.cyanogenmod.org per il nostro dispositivo.
Il risultato era molto simile a quello offerto dal nostro dispositivo
appena estratto dalla confezione. Perfino lo sfondo presentava
il classico tema di Android 4. Abbiamo trovato qualche opzione in pi
che permetteva di adattare maggiormente il dispositivo ai nostri gusti;
ma dopo sei mesi di uso del Nexus, chi scrive confessa di aver finito
per apprezzare le impostazioni predefinite di Android. Se il sistema
operativo simile, va detto che CyanogenMod non comprende alcuna
delle applicazioni Google. Anzi, non c nemmeno Google Play, perci
non abbiamo potuto installarle. In realt si trattato di una scelta
deliberata. Installare Google Play su CyanogenMod possibilissimo;
ma farlo significava venire meno alla nostra idea, quella di creare un
ambiente Open Source sul nostro Nexus 7. Per prima cosa, volevamo
un browser decente, senza il quale un tablet sostanzialmente inutile.

Il browser predefinito di CyanogenMod brutto


come il peccato e piuttosto spiacevole da usare.
Su Android avremmo usato Chrome; ma per
mantenerci fedeli al principio dellOpen Source,
abbiamo optato per Firefox. Il file di installazione
disponibile su https://ftp.mozilla.org/pub/
mozilla.org/mobile/releases/latest/android/
multi. In questo modo, abbiamo provvisto il nostro
tablet di un browser di prima scelta; alla peggio,
avremmo avuto a disposizione un dispositivo pi
che accettabile. Per fortuna, per, non era finita
qui. La mancanza di Google Play non ci ha affatto
costretti a rinunciare agli app store. F-Droid
(https://f-droid.org) offre infatti una quantit di software gratuiti per
Android e CyanogenMod. Basta scaricare il file di installazione dal sito
per poter installare sul proprio dispositivo innumerevoli software aperti.
Certo, non immenso come il negozio di Google, perci se avete
assoluto bisogno di un sistema che vi permetta di visualizzare in mille
modi diversi le foto dei vostri gattini potreste andare incontro a una
delusione. Sono comunque disponibili applicazioni per la maggior
parte delle esigenze (avviso per gli utenti di Android: F-Droid il luogo
ideale in cui anche chi non pronto a optare senza mezzi termini
per lOpen Source trover applicazioni non sovraccariche di pubblicit
indesiderate). Ognuno usa il tablet in modo diverso ma per noi
laccesso ai file sulla cloud e al calendario sono fondamentali.
A questo proposito eravamo gi passati da Google a OwnCloud
e avremmo potuto accedervi
tramite un browser. Abbiamo
per scoperto su F-Droid aCal
e OwnCloud, che permettono di
fare la stessa cosa. Come software
per le mappe abbiamo optato per
OSMAnd, che offre la funzione
di navigazione sulle mappe non
in linea che Google ha rimosso dal proprio prodotto. Le applicazioni
musicali e di posta elettronica predefinite funzionavano a dovere,
perci per gli impieghi quotidiani potevamo dirci pienamente
soddisfatti. Era sul piano meno strettamente produttivo, invece, che il
nostro tablet lasciava un po a desiderare. F-Droid offre qualche gioco
ma la disponibilit tuttaltro che soddisfacente. Installando Firefox,
per, abbiamo avuto accesso anche a Firefox Marketplace (https://
marketplace.firefox.com/search), che permette di installare varie
applicazioni, giochi compresi. Questo offre ulteriori possibilit e si pu
sperare che la progressiva diffusione di Firefox OS renda disponibile
un numero sempre maggiore di applicazioni. Diversamente dal caso
di F-Droid, tuttavia, qui non tutte le applicazioni sono libere. A questo
punto ci siamo concessi uno strappo alla regola. A seconda del punto
di vista, potete interpretare questa decisione come frutto
di pragmatismo o di debolezza. Nel corso degli anni abbiamo
acquistato molti dei nostri giochi preferiti per Android tramite Humble
Bundle, che possibile installare su CyanogenMod esattamente
come su Android. Non si tratta di prodotti Open Source ma se non
altro sono privi di DRM e acquistandoli abbiamo dato sostegno a EFF,
il che per noi sufficiente. A questo punto, il nostro tablet rispettoso
della libert era perfettamente attrezzato e altrettanto utile di quanto
lo era sempre stato con lAndroid di Google.

Salvo per lassenza


dei servizi Google,
la maggior parte degli
utenti non noter
la differenza tra
CyanogenMod
e Android

Per le operazioni
quotidiane possiamo
dirci soddisfatti

OSMAnd conserva tutte le mappe sul vostro dispositivo,


che tuttavia possono occupare diverse centinaia di MB

LINUX PRO 136

11

Linux Mobile

UBUNTU TOUCH
Un desktop controverso sbarca sul cellulare

in dalla sua nascita si dice che Unity progettato per


i touchscreen, perci lannuncio da parte di Canonical del lancio
di una versione specificamente rivolta ai dispositivi Android
touchscreen non ha sorpreso nessuno. Naturalmente, per, non tutti
si aspettavano una versione specifica per i cellulari. La campagna
Ubuntu Edge avr forse fatto un buco nellacqua ma Canonical
confida ancora di poter lanciare un cellulare nel primo trimestre
del prossimo anno e ha arruolato un numero notevole di partner.
Al primo avvio farete immediatamente una scoperta che potr
rassicurarvi o deludervi: sul tablet non presente il desktop Unity
per cui Ubuntu famoso (o famigerato). Linterfaccia utente Touch,
tuttavia, si ispira chiaramente allambiente desktop. Fin dal primo avvio
appare chiaro, inoltre, che si tratta di una release provvisoria,
a dispetto del numero di versione 1.0. Difetti, funzioni non
implementate e altri inconvenienti si sprecano. Il consumo di energia,
per esempio, talmente elevato che il Nexus 7 si scarica perfino con
un utilizzo moderato e mentre collegato alla presa di corrente.
Questo pu rappresentare un serio problema per chi utilizza il tablet
lontano dalle prese. Di sicuro, comunque, non vi verr freddo alle dita
mentre lo usate. Per farvi un esempio dello stato attuale dello sviluppo,
ecco che cosa successo quando abbiamo provato a riprodurre
musica. Il primo
problema portare la
musica stessa sul tablet.
Al momento, Ubuntu
Touch non supporta
alcun protocollo dati
USB, perci non
potevamo trasferire alcunch da un computer. Allora abbiamo
provato a scaricare la musica dal nostro server di backup OwnCloud
ma il JavaScript di OwnCloud ha mandato in tilt il browser. Alla fine
ce labbiamo fatta utilizzando gli strumenti di sviluppo di Android
per aprire una shell sul tablet (adb shell) e installare il pacchetto
openssh-server, per poi trasferire i dati tramite SFTP (il nome
utente/password phablet/phablet). Solo a questo punto abbiamo
scoperto che il lettore non era in grado di leggere i file MP3.
Insomma, pare ovvio
che ci sia ancora
molto lavoro da fare
da parte degli
sviluppatori.
Cerchiamo invece
di capire quali
informazioni questa
release fornisca sul
sistema operativo.
Ubuntu Touch
incentrato
sugli Scopes, che
funzionano pi
o meno come
sul desktop Unity.
Il loro fine offrire
allutente uno
La sezione Featured degli scope Video e Music presenta una
sguardo non solo
carrellata di copertine. Se solo lo facesse per i nostri contenuti
sul suo tablet ma
e non per quelli che Canonical tenta di venderci

Appare davvero chiaro


che si tratta di una
release non finale

12

LINUX PRO 136

Con il Launcher di Ubuntu Touch, tutte le vostre app preferite


sono accessibili con un gesto

sullintero universo digitale. Gli Scopes standard vi permettono di


cercare raccolte musicali e video in commercio, nonch di visualizzare
le vostre app e una schermata introduttiva. Riescono effettivamente
a darvi unidea del sistema (e sono esteticamente splendidi) ma non
sono nemmeno lontanamente adeguati per un prodotto finale.
Su un cellulare, questi elementi contano molto pi che su un PC. Per il
momento, si direbbe che gli Scopes siano l solo per vendere contenuti
(musica e film) agli utenti, pi che per aiutarli a fare qualcosa. Speriamo
che il problema venga risolto presto. la sensazione prodotta
dallinterfaccia utente a rendere veramente diverso Ubuntu Touch.
La maggior parte delle operazioni si svolge facendo scivolare sulla
schermata i comandi dal margine dello schermo. Gli utenti di Android
4 utilizzano gi questo sistema per lanciare Google Now. Facendo
scorrere la schermata dallalto si accede al menu Settings; da destra
si pu accedere al Launcher e dal basso al menu Current Apps,
con lo scorrimento da destra per il passaggio da una allaltra delle app
in funzione. Questultimo movimento offre un metodo decisamente
soddisfacente per la gestione delle finestre: la sensazione quasi
quella di sfogliare le pagine di un libro. Questi gesti, tuttavia, sono
risultati poco agevoli fino a quando non abbiamo estratto il nostro
tablet dal suo involucro. Per quanto riguarda Ubuntu Touch pi
o meno tutto. Forse vi aspettavate che parlassimo dellapp store
ma per il momento non ne esiste alcuno. Potete comunque installare
software aggiuntivi collegandovi tramite il vostro computer con adb
shell e utilizzando quindi il classico apt-get.

Linux Mobile

FIREFOX OS
Un sistema operativo per cellulari nato dalle tecnologie Web

ozilla non il tipo di azienda da cui ci si aspetterebbe


un ingresso nel settore dei cellulari (almeno non come
produttrice di sistemi operativi), eppure quella della casa
produttrice di browser potrebbe essere una mossa azzeccata.

Negli ultimi anni vi stato un crescente


passaggio ai browser basati su WebKit
(come Chrome e Safari) e malgrado il suo
arretramento sul mercato dei computer,
Firefox rimane tuttora un nome
importante. Nel campo mobile, per,
a malapena presente. disponibile
per Android ma la sua quota di mercato
talmente ridotta da risultare
insignificante. Se la profezia tanto spesso
ripetuta secondo cui il computer fisso
morto corrisponde a verit, allora
anche Mozilla rischia grosso, a meno
che non riesca a migliorare la sua
posizione sul mercato mobile.
E se anche, come appare probabile,
il computer fisso continuer a esistere,
chiaro che il contesto mobile sta crescendo
e coprir ben presto buona parte del traffico Web.
Molti considerano Firefox OS un interessante progetto collaterale
di Mozilla; secondo noi si tratta pi che altro di una mossa
indispensabile per conservare una posizione dominante nella
guerra dei browser. Da un punto di vista tecnico, Firefox OS
interessante perch tutti gli elementi dellinterfaccia utente,
dal Marketplace al dialer telefonico, sono programmati con
tecnologie Web, come HTML5 con CSS e JavaScript. Il risultato
unesperienza Web completamente omogenea. Il fatto che
il sistema utilizzi tecnologie Web, tra laltro, non vi obbliga a essere
online per sfruttarlo al meglio. Il sistema offre vari metodi per
scaricare applicazioni da utilizzare non in linea. E grazie a varie
magie come WebGL, gli sviluppatori potranno approfittare
anche dellaccelerazione grafica e di altre funzioni hardware.
Linterfaccia del sistema operativo non particolarmente
rivoluzionaria ma di certo semplice da usare. Il motivo potrebbe
essere la decisione di Mozilla di indirizzare inizialmente la sua
offerta ai dispositivi di bassa potenza e ai paesi in via di sviluppo.

La struttura
semplice di Firefox
OS ideale
per i dispositivi
di fascia bassa

Le app e la guerra dei formati


Un nuovo sistema operativo per smartphone, Open
Source o proprietario che sia, si trova ad affrontare
il classico problema delluovo e della gallina.
Per conquistare gli utenti occorre offrire un sistema ricco
di app; ma perch gli sviluppatori creino le app, occorre
avere gi degli utenti. I sistemi operativi liberi esordienti
stanno affrontando il problema in modo nuovo (almeno
per il contesto mobile). Stanno cio facilitando
la creazione di app che funzionino su diversi sistemi
operativi. Il primo metodo, nonch il pi indicato
per tale obiettivo, HTML5. Bench progettato per
la creazione di Web App, questo ecosistema ormai
abbastanza potente da consentire la creazione
di numerose app per cellulari; anzi, Firefox OS sta
scommettendo sulla sua capacit di rimpiazzare tutte
le app native dei cellulari. Siamo solo agli inizi; ma stando
alle voci che circolano tra gli sviluppatori di sistemi

operativi, sembra che il formato sar il medesimo anche


per tutti o quasi tutti i sistemi operativi Open Source.
Agli sviluppatori baster quindi programmare una sola
volta per creare prodotti compatibili con qualsiasi tipo
di cellulare, da Android ai modelli ZTE con Firefox OS.
Le app Android utilizzano la virtual machine Dalvik
e funzionano anche in Alien Dalvik, creato da Myriad.
Per ora solo Jolla ha confermato la sua intenzione
di utilizzarlo, per cui gli utenti di Sailfish potranno
installare gli APK come su un dispositivo Android.
Difficilmente sar disponibile il mercato Google Play ma
altre fonti come F-Droid e Humble Bundles dovrebbero
funzionare. Anche Amazon ha reso disponibile per
lo scaricamento il suo store Kindle (anchesso basato
su Dalvik e sul formato APK). Perci, in teoria, gli utenti
di Sailfish avranno accesso a questo ecosistema fin
da subito (anche se va detto che non abbiamo ancora

in mano uno dei dispositivi in questione). Jolla, Ubuntu


Touch e Plasma Active sono tutti basati su Qt e anche
Tizen dispone di una versione di questo strumento,
bench esso non sia supportato a livello ufficiale.
Ci significa che qualsiasi software sviluppato
con Qt dovrebbe essere convertibile per i tre modelli
in questione. Dovrebbe essere sufficiente riconfezionarlo
utilizzando il formato appropriato. Un ecosistema va
ben oltre la possibilit di far funzionare un determinato
software su un determinato dispositivo. Lessenziale la
creazione di unesperienza utente che risulti omogenea.
Le app Android su Sailfish risulteranno un po come le
app GTK su KDE: funzioneranno ma sembreranno fuori
posto. La possibilit di utilizzare app indipendentemente
dal sistema operativo un buon inizio ma la capacit
di persuadere gli sviluppatori a creare app native sar
decisiva per un successo a lungo termine.

LINUX PRO 136

13

Linux Mobile

PLASMA ACTIVE
PLAMSA
KDE per dispositivi mobili

dispositivi mobili, dagli iPhone agli Android, sono per la maggior


parte progettati anzitutto per il consumo di contenuti. Sono perfetti
per visualizzare video, navigare sul Web o ascoltare musica;
lo sono meno per quanto riguarda la creazione di contenuti. Questo
non rappresenta un problema in s, dato che alla maggior parte
di noi non interessa usare questi strumenti per scrivere saggi
o programmare: per questo esistono i computer. Lideale sarebbe
un dispositivo in grado di fare da ponte tra i due ambiti; un device,
cio, abbastanza semplice da poter essere utilizzato con uninterfaccia
touchscreen e abbastanza potente da permettere di svolgere
operazioni serie. proprio questo lobiettivo che la comunit di KDE,
insieme a BasysKom e open-six, si prefigge con Plasma Active.
Si tratta di una versione del popolare desktop KDE creata
per i dispositivi mobili. Dato che trae origine da KDE, offre tutte
le applicazioni di questultimo, compreso Calligra Suite. Gi al primo
sguardo il retaggio di
KDE appare evidente,
in particolare dal tema
usato dallinterfaccia
utente e dal set delle
icone. Non c un
menu K per il lancio
della applicazioni, n una lista delle finestre. Le azioni principali si
effettuano invece trascinando verso il basso la barra superiore (con
una modalit simile allaccesso alle notifiche in Android). Qui trovate
un elenco delle app aperte e una griglia delle applicazioni installate
completa di sistema di ricerca. Strano a dirsi per un prodotto della
comunit di KDE, il risultato ricorda un po la Dash di GNOME 3.
Il menu a tendina, che comprende le funzioni pi complesse, funziona
ottimamente e a nostro parere offre il miglior sistema di gestione delle
finestre tra tutti quelli dei sistemi operativi mobili a noi noti. Il meglio
di Plasma Active, per, sono le Attivit (Activities). Come quelle di
KDE, equivalgono a desktop virtuali potenziati in cui potete combinare
widget e applicazioni per creare ambienti desktop separati passando

Plasma Active assomiglia


pi di tutti gli altri a un
sistema operativo desktop

Tra tutti i sistemi


da noi provati,
Plasma Active
quello che ricorda
pi lambiente
desktop, in virt delle
sue numerose funzioni

14

LINUX PRO 136

Ecco Kubuntu Active: chiaro che Canonical non ha puntato


tutto su Ubuntu Touch nella corsa dei cellulari

agevolmente dalluno allaltro. Per attivare le Attivit sufficiente


trascinare un pulsante dal lato destro dello schermo e quindi
selezionare quella prescelta allinterno di un elenco. un gesto che
risulta naturale su un dispositivo touchscreen. Le Activities hanno i loro
sostenitori in ambito desktop ma a quanto pare non sono molti
gli utenti di KDE che le trovano particolarmente utili. Molti finiscono
per fare confusione e non abbiamo ancora visto una distribuzione
che comprenda un set di Attivit predefinite veramente utili. Che sia
larena mobile quella in cui le Attivit daranno il meglio di s? Unico
tra i sistemi operativi mobili da noi esaminati, Plasma Active utilizza
distribuzioni simili a quelle delle versioni server e desktop. Rimane
da vedere se una o laltra di queste distribuzioni tenteranno
seriamente di proporsi come prodotti di qualit per i dispositivi mobili.
Come nel caso degli Scopes di Ubuntu Touch, la capacit di rendere
disponibili le attivit giuste per impostazione predefinita sar decisiva
per il successo di Plasma Active. Difficilmente gli utenti avranno voglia
di configurarle, se non percepiranno immediatamente la loro utilit.
E come Ubuntu, in questo campo finora KDE non ha combinato
granch di buono nel contesto desktop. Plasma Active assomiglia
a un sistema operativo desktop pi di qualsiasi altra soluzione qui
in esame. Dobbiamo forse considerarlo
un concorrente pi pericoloso per Surface
Pro di Microsoft di quanto lo siano i tablet
Android e iOS? Di certo, a nostro parere
quello che ha le maggiori potenzialit
di colmare il divario tra i dispositivi finalizzati
al consumo di contenuti e quelli finalizzati
alla loro creazione. La possibilit di cambiare
attivit a seconda di ci che si sta facendo
potrebbe essere un vero vantaggio. Per
esempio, si potrebbe impostare unattivit
per il controllo della posta elettronica
e per la navigazione sul Web e unaltra
per gli impieghi pi tipici di un computer fisso,
da svolgere con una tastiera collegata. Forse
a causa del maggior numero di funzioni,
Plasma Active lunico tra i sistemi da noi
provati per il quale il nostro Nexus 7
sembrato veramente troppo piccolo.
Lo spazio extra offerto da un tablet da nove
o dieci pollici aiuterebbe a sfruttare al meglio
questo ambiente, cos come una buona
custodia e una tastiera.

Linux Mobile

SAILFISH
Il sistema nato dalle ceneri di Nokia

olla, unazienda finlandese fondata da ex-dipendenti di Nokia,


sta producendo un nuovo sistema operativo per cellulari
utilizzando tecnologie Qt sulla base della piattaforma Mer.
Le analogie con Plasma Active, tuttavia, finiscono qui. Sailfish
(la soluzione di Jolla) un sistema operativo squisitamente mobile,
privo di tutte le funzioni complesse di Plasma Active. Come per
Ubuntu Touch, la principale attrattiva sta nellinterfaccia utente:

i progettisti e i tecnici di Jolla, come quelli di Canonical, hanno


letteralmente ripensato al modo di interagire con i dispositivi. Jolla
ha predisposto un set di comandi molto pi ricco di quelli usati
da Android e iOS. Forse, tuttavia, gli aspetti pi interessanti sono
la schermata che presenta le app in funzione e la possibilit di creare
temi sulla base di immagini. La prima sostituisce a grandi linee
la schermata Home della maggior parte dei sistemi operativi mobili
ma funziona come un window switcher potenziato. La seconda
vi permette di
modificare linterfaccia
sulla base dei colori
dellimmagine di sfondo.
Il tema caratterizza sia
le app in funzione, sia
la schermata Home
e gli app picker. Jolla scommette sulla voglia degli utenti di
personalizzare gli schemi cromatici dei loro dispositivi e i primi modelli
saranno provvisti di custodie intercambiabili di colori diversi. Non
abbiamo avuto modo di mettere le mani su uno di questi dispositivi
ma i video online e il manuale video di Sailfish, che fa parte del
pacchetto di sviluppo per le applicazioni, mostrano unelegante
interfaccia Qt che dovrebbe risultare deliziosa da usare.

Il manuale video
di Sailfish mostra
unelegante interfaccia Qt

Ciascun rettangolo corrisponde a unapplicazione in funzione,


che potete controllare direttamente dalla schermata Home

Le opzioni alla prova


Come ricordato allinizio, abbiamo provato tutti i sistemi
su un vecchio Nexus 7. Questo modello stato scelto
per una ragione: non solo supportato da pi sistemi
operativi di qualsiasi altro dispositivo portatile ma offre
anche le migliori opzioni per avviarli. Ci riferiamo
in particolare a MultiROM. Questo boot manager
ci ha permesso di installare al volo vari sistemi operativi
sul tablet e di avviarli separatamente, in modo analogo
a quanto reso possibile da GRUB su un PC. MultiROM
non ha un sito Web in quanto tale. Tutte le informazioni

importanti (nonch i link ai sistemi operativi da


installare) si trovano invece sul thread del forum XDA
Developers (http://bit.ly/16EQdAf). Mentre scriviamo,
questo sistema funziona solo sul vecchio Nexus 7
ma lo sviluppatore sta lavorando a una versione
destinata al nuovo tablet, che potrebbe gi essere
disponibile quando leggerete queste pagine. Troverete
tutte le informazioni pi aggiornate allindirizzo http://
tasssadar.github.io/mrom_status. disponibile
un simulatore di Firefox OS sotto forma di add-on

per Firefox. Non consente di farsi unidea precisa


del sistema, in quanto non possibile utilizzarlo come
telefono e il mouse non un sostituto ideale per
il touchscreen; se non altro, vi permetter di intuire
di che si tratta. poi disponibile unimmagine virtuale
di Tizen; si trova nel suo pacchetto di sviluppo,
a disposizione sul sito ufficiale (http://bit.ly/16o6mQj).
Troverete infine versioni CD di Plasma Active sul sito
di SUSE Studio (http://bit.ly/14DcmkN) e sul sito con
le immagini ISO di Ubuntu (http://bit.ly/16o6Iq5).

LINUX PRO 136

15

Linux Mobile

TIZEN
Direttamente dai forzieri di Samsung & C

a maggior parte dei sistemi operativi qui in esame sono


prodotti da piccole aziende (come Sailfish di Jolla)
o da organizzazioni che muovono i primi passi nel campo
mobile (come Firefox OS di Mozilla o Ubuntu Touch di Canonical).
Tizen quindi vistosamente anomalo, in quanto sviluppato
da colossi come Samsung e Intel, che insieme hanno dato vita
alla Tizen Association sotto la supervisione di Linux Foundation.
Se i soldi e il dominio sul mercato fossero sufficienti per fare
il botto nel campo dei sistemi operativi mobili, il successo di Tizen
sarebbe assicurato. Le cose per non stanno affatto cos e per
averne la prova sufficiente guardare alle difficolt che Microsoft
e Nokia stanno incontrando nel promuovere Windows Phone
in un mercato che mostra scarsi segni di interesse. Linterfaccia
di Tizen nitida e facile da usare; ma francamente difficile
trovarvi qualcosa che la renda preferibile ai prodotti esistenti,
se non forse il fatto che ha buone prestazioni sui dispositivi
di fascia bassa. Il nostro lato cinico ci indurrebbe a sospettare che
il fine essenziale di Tizen sia collocare Samsung in una posizione
migliore di quella di Google per la trattativa su Android. Il nostro
lato meno cinico, invece, entusiasta delle possibilit che Tizen
offre come potente soluzione embedded. La presentazione del
sistema operativo dichiara: Lobiettivo di Tizen introdurre una
solida esperienza omogenea su pi dispositivi quali smartphone,
tablet, Smart TV, PC e strumenti di infotainment per veicoli,
con unenfasi sui sistemi mobili. Non possiamo fare a meno
di sospettare che il successo del sistema dipender proprio
da dispositivi come Smart TV e strumenti di infotainment per

DESKTOP LINUX
Lalternativa pratica

inora ci siamo occupati di sistemi operativi creati specificamente


per i dispositivi mobili; ma nulla vi vieta di utilizzare una versione
normale di Linux su un tablet (lo schermo di un cellulare un po
troppo piccolo per un desktop normale). Enlightenment una delle

La nitida interfaccia di Tizen funziona ottimamente; ma il suo


fascino baster ad attirare gli utenti verso il nuovo sistema?

veicoli. Si tratta di un settore sottosfruttato, diversamente


dai cellulari; e un sistema Open Source potrebbe offrire benefici
reali sia alle case produttrici, sia ai consumatori.

alternative pi popolari che abbiamo provato. Fatta eccezione per


qualche inconveniente, tutto funziona a dovere. Le consuete
applicazioni funzionano e le cose si svolgono nel solito modo. Tuttavia,
appare ben presto chiaro che c una ragione se tutti i principali
operatori hanno deciso di sviluppare sistemi touchscreen specifici.
I menu gerarchici, praticissimi per le interfacce basate sul mouse,
risultano innaturali e scomodi nel contesto touchscreen. Il fatto che
non possiate vedere la posizione effettiva del puntatore attraverso
il vostro dito un problema. E quanto alle funzioni che si prestano
al touchscreen e non al mouse (come il gesto pinch per la zoomata),
di norma non sono presenti in queste interfacce. Le barre di
scorrimento sono un altro elemento che risente negativamente della
transizione dal mouse al touchscreen. Luso di un ambiente desktop
su un tablet una buona idea che funziona anche sul piano pratico;
solo che funziona meno bene rispetto alle alternative. Ubuntu
dimostra che interfacce utente simili funzionano in vari formati;
ma continuiamo a non essere convinti che un unico ambiente possa
funzionare a dovere in entrambi i formati desktop e mobile. Gli
schermi ad alta definizione dei tablet odierni, tuttavia, offrono un livello
di dettaglio sufficiente per gli impieghi in questo formato. Difficilmente
sceglieremmo un sistema desktop come interfaccia principale per il
nostro tablet; potrebbe per servire come utile interfaccia secondaria,
da utilizzare qualora siano disponibili una tastiera e un mouse.
Enlightenment funziona a dovere su un tablet ma linterfaccia pu
risultare scomoda da usare senza mouse

16

LINUX PRO 136

Linux Mobile

LA SFIDA
In che modo potranno trionfare i sistemi operativi Linux

er preparare questo articolo abbiamo installato quattro


dei sei principali sistemi operativi mobili Linux
su un tablet da 7 pollici. Un quinto (Firefox OS) gi
disponibile sui dispositivi in commercio. Lunico che non
abbiamo avuto modo di provare su un tablet fisico Sailfish,
che peraltro dovrebbe essere ben presto disponibile (forse
gi quando leggerete queste pagine). Nel complesso, questi
sistemi rappresentano il frutto del lavoro di una mezza
dozzina di aziende e di innumerevoli volontari. Ci che
ci ha pi colpiti stata la variet dellofferta. Con leccezione
di CyanogenMod, questi sistemi non sono semplici cloni
di soluzioni gi esistenti ma autentiche innovazioni. Offrono
agli utenti una scelta reale relativa a come far funzionare
i loro dispositivi mobili e consentono di personalizzare
lesperienza utente in funzione di impieghi specifici.

Naturalmente, oltre un decennio di lenta diffusione di Linux


nel campo dei desktop ci ha insegnato che questo non basta
a garantire il successo. Gli attuali pezzi grossi del mercato,
Google e Apple, sono due delle pi grandi aziende del mondo,
che difficilmente daranno il benvenuto a nuovi concorrenti,
specie se questi ultimi inizieranno a ottenere buoni risultati.
Sotto alcuni aspetti, il mercato mobile di oggi molto simile
al mercato desktop dei primi anni 2000, almeno dal punto di
vista dei sistemi operativi Open Source. Per trionfare, i sistemi
mobili Linux devono imparare dagli errori commessi da Linux
nellarena del desktop. Devono essere disponibili nei negozi,
promossi da investimenti pubblicitari e risultare attraenti per
lutente comune, non solo per lo smanettone. In breve, non
devono solo essere migliori dei prodotti rivali: devono essere
anche percepiti come tali da unampia fetta del mercato. LXP

LINUX PRO 136

17

Progetto Sputnik

ALLA SCOPERTA DEL PROGETTO SPUTNIK

LULTRABOOK DI DELL

CHE MONTA UBUNTU


Linux Pro ha provato il Dell XPS 13 Developer Edition
e ha parlato alla mente dietro al progetto

met dello scorso anno hanno iniziato a girare


delle voci in Rete riguardo una collaborazione tra
Dell e Canonical per la creazione di un ultrabook
con Linux. Si chiamava Progetto Sputnik. Allinterno
di Dell, listigatore del progetto era Barton George, Director
of Cloud Developer Programs dellazienda americana.
Per saperne di pi abbiamo scambiato quattro chiacchiere
con lui cos da scoprire cosa si aspetta dal progetto e come
viene visto lhardware associato a Linux in Dell. Inoltre
abbiamo avuto la fortuna di poter provare per un po di
tempo il frutto di questa collaborazione, usando lultrabook
per prendere appunti nelle conferenze e per i nostri tutorial:
dalla programmazione al cloud, passando da giochi e tool

18

LINUX PRO 136

audio. Abbiamo portato al limite la durata della batteria


e agito sul sistema operativo installato per ottenerne
il massimo. Un ultrabook la versione pi leggera e piccola
di un portatile, ha la stessa portabilit di un netbook
ma dotato della potenza dei computer pi grandi.
Sono perfetti per i programmatori che vogliono portare avanti
il proprio lavoro durante i viaggi, oltre che per controllare
semplicemente le email. Dotato di una buona CPU
e di parecchia memoria, un ultrabook vi consente di fare cose
come la compilazione di grandi rami di codice, eseguire
macchine virtuali e giocare con videogiochi avidi di risorse;
tutto questo va oltre le capacit di un netbook, di un portatile
di fascia bassa o di un tablet. Lultrabook generato

Progetto Sputnik
dal progetto Sputnik, il Dell XPS13 Developer Edition,
esattamente una macchina di questo tipo; pensata
espressamente per gli sviluppatori, ma le sue caratteristiche
sono in grado di affascinare qualunque fan di GNU/Linux che
brami una macchina potente e facilmente portabile. Certo,
potete installare Linux su quasi qualunque computer portatile
o meno, ma molti di noi lo fanno pi per necessit che per
scelta. Preferiremmo poter acquistare dellhardware in cui Linux
sia ufficialmente supportato, costruito dai maggiori vendor
e non essere costretti a spiegare al venditore perch non
ci serve un antivirus. Specialmente quando il nostro lavoro
dipende dallhardware. Questo il motivo per cui il progetto
Sputnik di Dell molto importante. un ultrabook molto ben
progettato dal terzo produttore di PC al mondo e monta
di default Ubuntu Linux. Barton ci ha spiegato i motivi che
lo hanno spinto a far nascere il progetto: Lidea iniziale arriva
da Stephen OGrady di RedMonk (nota azienda di analisti del
settore con un approccio anticonformista alla tecnologia),
ci ha detto. Eravamo focalizzati sul Web, e volevamo capire
come vendere a Google, Facebook fino ad arrivare alle start-up
e alle camere dei dormitori. Abbiamo coinvolto Stephen e
parlavamo di questo, e lidea era Si tratta di sviluppatori.
cos. Riguarda gli sviluppatori perch solo loro quelli che
fanno per davvero. Quindi una mossa tattica che sugger
Stephen fu Ehi! Perch non prendiamo un portatile Dell
e ci mettiamo dentro Ubuntu?. Io pensai idea grandiosa,
ma non si potr mai attuare in Dell, spiega Barton. Se andassi
a parlarne con i responsabili, essi mi direbbero Quanti milioni
di pezzi venderai nella prima settimana? e la mia risposta
sarebbe Beh, non mi avvicino neanche al milione. Quindi
accantonai lidea. Poi, 3 o 4 mesi pi tardi successe nacque
in Dell un fondo di incubazione per scovare nuove idee
nascoste nelle teste delle persone dellazienda. Quindi fui
il primo ad alzare la mano, e ottenni un pollice alzato.

Dimmi come ti piace


Lidea iniziale riguardava solo un portatile e il fato ha voluto
che la settimana prima che presentassi la mia proposta,
arrivasse Mark Shuttleworth, continua Barton. Egli venne
da noi e parl; poich vendiamo Ubuntu su alcuni dei nostri
sistemi, e avendo gi lavorato in passato con Mark, avevamo
un certo rapporto. Sono cos riuscito a rubargli un po di tempo
e a dirgli Ehi, cosa ne pensi di questo?. Egli rispose Mi piace.
Ma la cosa veramente bella che possiamo prenderlo
e collegarlo alla cloud. Difatti, se usi JuJu puoi connetterlo alla
cloud e ottenere lintera toolchain DevOps, perch non
lo facciamo?. Lavevo detto che mi piaceva. Siamo andati live
con questa idea il 7 maggio (2012) allUbuntu Developers
Summit svolto a Oakland. Mark [Shuttleworth] era sul palco
e lo sollev, ci dice Barton. Non mi aspettavo una risposta
cos positiva. A quel punto il traffico sul blog di Barton esplose
letteralmente, Cera un desiderio represso di qualcosa
che semplicemente funzionasse su un pezzo di hardware
dallaspetto carino, dice. Il punto di non ritorno ci fu quando
annunciammo il lancio di un programma in fase di beta in tutto
il mondo, avemmo circa 6.000 persone che si registrarono.
A quel punto pensavamo fosse fatta andiamo avanti
e facciamolo accadere. Come con la maggior parte
dellhardware, gli utenti Linux si sono abituati a essere costretti
a comperare un dispositivo Windows di cui si conosce il livello
di compatibilit con il sistema del Pinguino, oppure a pagare
una cifra superiore per un portatile Apple noto per prestarsi

alluso con Linux. Il problema con la prima opzione che


le specifiche dei portatili cambiamo molto spesso; gli adattatori
Wi-Fi e Bluetooth, per esempio, cambiano allultimo minuto
e non lo sai mai finch non ti arriva lhardware in casa
e cerchi di installarci Linux. Un utente Linux che ha scelto
lopzione Apple Linus Torvalds, che nei suoi viaggi
porta con s un Apple Macbook Air con Fedora
installata. Ma diversamente da noi tutti, Linus si pu
creare da solo le patch per assicurarsi che tutto
funzioni a dovere ed egli stesso ammette che Linux
ha qualche problema nellusare nel modo migliore i display
ad alta risoluzione di Apple. Ci che pi sorprende del progetto
Sputnik che lhardware scelto da Dell non era compatibile
al 100% con il kernel Linux del momento.

Specifiche hardware
Lhardware quello del Dell XPS 13, con la versione 2013
che ha visto laggiornamento dello schermo con un incredibile
pannello IPS da 13,3 pollici con risoluzione 1920x1080 pixel.
Allinterno trovate un chipset Intel Ivy Bridge con una CPU
Core i7 i7-3537U, impostata alla frequenza di 2 GHz
ma capace di arrivare ai 3,2 GHz, e 8 GB di RAM di tipo DDR3
funzionante a 1.600 MHz. La scheda grafica la Intel HD

Ci sar anche
il pulsante
Windows
nella tastiera,
ma nella parte
inferiore trovate
il logo di Ubuntu

Si tratta di sviluppatori:
sono loro quelli che fanno
per davvero
Graphics 4000. Il nostro modello includeva un disco SSD
da 250 GB in grado di far partire il desktop di Ubuntu in 8
secondi. Essendo questo un prodotto ufficiale Dell, ottenete
anche il loro supporto, il che uninteressante novit. Il design
ovviamente un fattore soggettivo, ma noi amiamo lo stile
dellXPS 13. Lo chassis largo 316mm, profondo 205mm
e alto tra i 6 e i 18mm, con il dispositivo che si assottiglia dal
dietro allavanti. Leffetto complessivo quello di un prodotto
di fascia alta, e il case abbastanza resistente da sopportare

La versione 2013
ha un fantastico
pannello IPS
a 1920x1080 pixel

LINUX PRO 136

19

Progetto Sputnik

Laspetto
e il peso
dellultrabook
di Dell sono
perfetti per chi
sempre
in movimento

i viaggi. Lo chassis non


si flette lateralmente, il che indice
di buona qualit costruttiva. La parte superiore
e laterale dello schermo sono in alluminio, mentre la parte
bassa in fibra di carbonio. abbastanza leggero da essere
tenuto con una mano anche quando aperto. Un vetro Gorilla
Glass protegge lo schermo e arriva fino al metallo. Il bordo
attorno allo schermo e di circa 10mm, e sembra pi bello
di quello pi grande del Macbook Air, secondo noi. La tastiera
ha tasti grandi, ben spaziati e dallottima risposta, e anche
se non ci entusiasma il font usato per indicare le lettere, la
retroilluminazione dei tasti perfetta per quando si programma

Lo schermo incredibile.
luminoso, con colori ben definiti
e un alto contrasto

Stile e design
minimalista fanno
s che ci sia spazio
per un numero
ridotto di porte

20

LINUX PRO 136

a notte fonda (ma la regolazione della luminosit Fn+F6 poco granulare). E s, il tasto Windows ancora al suo posto,
ma non ci d certo fastidio specialmente perch sul fondo della
macchina c una targa con il logo di Ubuntu ben visibile.
Ci sono solo due porte USB nella macchina; una a sinistra
e una a destra, ed entrambe sono USB 3.0, il che pu essere
limitante. USB 3.0 funziona bene solo con i kernel
relativamente recenti, e avere solo due porte vuol dire essere
costretti a un compromesso quando si tratta di collegare
dispositivi esterni, specialmente se una delle porte occupata
dal cavo di uno smartphone in carica. Uno svantaggio
dellaspetto cos sottile della macchina che non c una porta
Ethernet. Non sempre il Wi-Fi disponibile (anche se ormai la
sua diffusione molto capillare, anche qui da noi in Italia)
e a volte lunica soluzione usare una rete cablata, cosa

impossibile con lXPS 13 a meno di non portarsi dietro un


adattatore USB. Lunica altra connessione fisica una mini
DisplayPort. Normalmente non menzioneremmo lalimentatore,
ma il piccolo modello di cui dotato lultrabook non occupa
molto spazio nel bagaglio, e c anche un LED che ne indica
il funzionamento. Un piccolo pulsante, posto nel fianco
opposto a quello in cui si collega lalimentatore, attiva
una serie di cinque LED bianchi che vi indicano
il livello di carica della batteria quando lo schermo
chiuso e, infine, potete usare una delle porte USB
per caricare il vostro smartphone o tablet senza
dover rianimare lultrabook. Lunica deficienza hardware
che ci aspettavamo di trovare riguardava lunit wireless, basata
sul chipset Intel Centrino Advanced-N 6235 e sul driver
iwlwifi, che non funziona molto bene. Prima di ricevere
in redazione lultrabook ci eravamo informati a riguardo,
scoprendo che in passato il collegamento Wi-Fi degradava
dopo qualche tempo (anche pochi minuti in alcuni casi) fino
addirittura a cadere. Sempre leggendo in rete alcuni lamentano
problemi anche con i kernel pi aggiornati presenti in Ubuntu
13.04 (la versione di default la 12.04), eppure nelle nostre
prove non abbiamo riscontrato gravi problemi in questo senso.
In tutti i casi possibile trovare una soluzione allURL http://
bit.ly/1fT1cim. Inoltre sembra che Dell abbia intenzione
di sostituire questo componente problematico con ununit
Killer Wireless-N 1202 di Qualcomm, che dovrebbe risolvere
eventuali problemi con i driver.

Il software
Lunico sistema ufficialmente supportato da Dell Ubuntu
12.04 LTS ed quello che trovate preinstallato. Laver
adottato la release con supporto a lungo termine stata
la mossa giusta. Si ottengono gli aggiornamenti di sicurezza
e le patch fino ad aprile 2017, un tempo sufficientemente
lungo per molte situazioni, ma non sar possibile installare
le nuove funzionalit delle applicazioni a meno di non ricorrere
a repository di terze parti, download di file binari
e aggiornamenti manuali. Come ci si pu aspettare, la versione
Dell di Ubuntu 12.04 stata arricchita da un repository
di pacchetti specifico per lXPS 13, e anche il kernel
compilato ad hoc. Questo soprattutto a causa del trackpad, che
fino alla versione Ubuntu dellXPS 13 non disponeva di driver
Linux. Barton ci ha spiegato come stato sviluppato questo
driver. Abbiamo lavorato con Cypress per scrivere il driver del
touchpad. Essi lo hanno scritto per noi ma non solo, lo hanno
anche inserito nel codice del kernel, a partire dal kernel 3.9.
Quindi se volete usare il loro trackpad con Debian o CentOS,
ora potete farlo. Il driver stato inserito nel kernel perch
lo abbiamo testato alcune distro con lXPS 13, e qualunque
kernel recente funziona senza ulteriori modifiche. Ubuntu
13.04 non richiede il repository extra e quasi tutte le patch
sono state include nella distribuzione principale, per esempio,
e vi raccomandiamo di installarla al fianco della LTS se volete
accedere ai nuovi pacchetti. In base a come configurate il
touchpad, click e doppio click si possono eseguire attraverso
il tocco oppure con il tocco e la pressione dellintero pannello,
e dopo aver installato alcuni pacchetti extra siamo riusciti a
ottenere un supporto decente al multitouch, anche se Linux
ben lontano da OS X per quel che riguarda la gestione
e limplementazione delle gesture. Unaltra area in cui Linux
probabilmente non riesce a ottenere il massimo dallhardware
lo schermo. Con una densit di pixel pari a 165ppi (era

Progetto Sputnik
di 118ppi nella vecchia versione) racchiusa in una diagonale
di 34cm, il desktop Unity ha bisogno di qualche intervento per
chiunque non abbia 10 decimi di vista; in questo caso Linux
sembra in parte inadeguato. I font sono a volte troppo piccoli
e gli angoli delle finestre possono essere difficili da trovare con
il cursore del mouse, specialmente quando bisogna
ridimensionare una finestra. Gran parte di questi dettagli si
possono aggiustare dal pannello di controllo, ovviamente,
ma il desktop Linux, con Unity, GNOME o KDE, ha difficolt a
gestire in modo corretto la densit dei pixel. Lhardware video,
comunque, perfettamente capace di eseguire il compositing
fullscreen alla risoluzione nativa, ma non essendo potentissimo
fa fatica con i giochi 3D a tutto schermo usando delle
impostazioni grafiche di livello medio.

La vera star
Dopo aver sistemato a dovere il desktop, lo schermo vi apparir
incredibilmente bello. luminoso, con contrasto e saturazione
dei colori perfetti, e combinata con la sua risoluzione il testo
definito benissimo durante lediting. Affiancando le finestre, per
esempio browser ed editor di testo, lideale grazie allalta
risoluzione, e se di solito aprite decine di finestre assieme,
amerete la dimensione del desktop che il portatile in grado
di mostrare. Per noi il 1080p perfetto per portatili di questa
dimensione. Lo schermo dellXPS 13 anche lucido, senza
possibilit di una opzione opaca, e anche se a noi piacciono
molto gli schermi lucidi, alcuni trovano intollerabili i riflessi.
Una nota legata allo schermo: quando lo schermo si spegne a
causa dellinattivit, Ubuntu impiega qualche istante per far
ricomparire la scrivania. Molto efficiente invece la partizione
di ripristino di Dell. Tenete premuta una combinazione di tasti o
sceglietela dal menu di GRUB e potete riportare lultrabook alla
sua configurazione iniziale. Abbiamo dovuto ricorrere a questa
funzione un paio di volte facendo esperimenti con altre
distribuzioni anche quelle che hanno aggiunto una propria
voce al menu di GRUB e ha funzionato alla perfezione ogni
volta. Potr non sembrare una gran cosa, ma se la combinate
con il supporto di Dell, limpressione complessiva che il
produttore americano abbia capito cosa importante nel
mercato Linux. La Developer Edition del Dell XPS 13 costa
1.039,00 euro, IVA esclusa. Non si tratta del pi economico

degli ultrabook ma pi economico delle alternative Apple,


come il Macbook Air usato da Linus. Se questa fosse una
recensione nuda e cruda, saremmo costretti a dire che ci sono
molti portatili pi economici, ma tutti sono pi grandi e pesanti.
Per un professionista e per chi viaggia molto, il prezzo richiesto
non eccessivo, considerando la qualit del supporto e
dellhardware. Cosa pi importante per noi, comunque, la

La partizione
di recovery
del Dell molto
utile in caso
di problemi
con il sistema
operativo

Sembra che Dell abbia


capito cosa importante
nel mercato Linux
speranza che la versione per sviluppatori del Dell XPS 13 sia
solo il primo di una serie di computer con supporto a Linux.
Canonical e Dell hanno fatto un lavoro eccellente con questo
ultrabook, e come ha promesso Barton George quando gli
abbiamo parlato, si tratta solo dellinizio. LXF

Il Profile Tool di Dell


Unapp personalizzata per ricreare il vostro ambiente di sviluppo
Dell ha fatto pi che scrivere Ubuntu sul disco
del suo ultrabook tramite dd. Per facilitare il suo
target di utenti, sono stati precaricati diversi
pacchetti che possono davvero tornare utile ai
programmatori. Ma questo
non bastava, e Dell ha
creato qualcosa che chiama
Profile Tool. Lidea dietro
questo strumento quella
di rimuovere la noia di
installare i pacchetti per il
Dell spera vivamente di riuscire a offrire
i profili creati da sviluppatori importanti,
come per esempio lambiente Python
di Mark Shuttleworth o quello Android

vostro ambiente di sviluppo quando cambiate


computer, posizione o addirittura azienda.
sufficiente usare il Profile Tool e consentirgli di
ripopolare il disco fisso con il vostro setup
memorizzato nella cloud. I profili correnti
includono Emacs, Ruby e JavaScript, e Barton
vorrebbe vedere dei profili condivisi dalle star
della programmazione. Lunico problema che
il Profile Tool ancora in fase di sviluppo, per
questo motivo non ancora intuitivo o al massimo
della sua utilit. Questo non una di quelle
occasioni in cui spariamo per qualche mese per
poi riapparire con una grande rivelazione, ci ha
detto. Faremo tutto pubblicamente. Non
ancora tutto come dovrebbe, ammette Barton.
Riguardo il Profile Tool, ci sono persone che

dicono Ehi, lho provato e mi serve molto di pi.


C un po di frustrazione in chi porta avanti il
progetto vorremmo essere pi avanti. Avevamo
una risorsa esterna a Dell che ci dava una mano,
ma ci non ha funzionato bene come speravamo
e ora ci prepariamo ad andare avanti con una
roadmap assieme ad alcune risorse interne a Dell.
Dobbiamo farlo. Dobbiamo preparare la
documentazione, e arrivare al punto in cui le
persone possono prenderla e lavorare su di essa.
Vogliamo che la comunit prenda il sopravvento.
Per ora non c molta documentazione; ci sono
tre profili cos che le persone possano iniziare
a usarlo, ma vogliamo di pi. Potete controllare
i progressi del progetto su GitHub allURL
https://github.com/sputnik.

LINUX PRO 136

21

Raspberry Pi

Moduli hardware
per tutti i gusti!
Analizziamo gli extra per potenziare il nostro piccolo gigante!

aspberry Pi probabilmente il dispositivo


elettronico britannico di maggior
successo degli ultimi dieci anni,
ma anche uno di quelli maggiormente male
interpretati. Troppa gente pensa che sia
un desktop ultra economico, ma dopo aver
comprato monitor, mouse, tastiera e scheda SD,
si ritrovano ad aver pagato un conto simile
al prezzo finale di un dignitoso portatile
ma con molta meno potenza elaborativa.
La maggior innovazione della RP non
il prezzo, ma le dimensioni: piccolo,
pu funzionare a batteria (o con un pannello
fotovoltaico) e dispone del bus di espansione
(GPIO). Queste tre caratteristiche nello stesso
oggetto informatico erano sostanzialmente

22

LINUX PRO 136

sconosciute prima di Raspberry Pi, che ha


saputo offrirle a un prezzo aggressivo. Non
si tratta di un nuovo prodotto, ma di un nuovo
concetto di prodotto e molta gente fatica
a capire come usarlo al meglio. Questo
problema era particolarmente sentito nei primi
mesi dalla sua uscita, con pochissimi documenti
che spiegassero come usare RP al meglio
e se si desiderava usare il GPIO, era necessario
realizzare in proprio lhardware da connetterci.
Ma il tempo passa, le situazioni migliorano
e ora un discreto numero di periferiche
a disposizione di coloro che desiderano
semplicemente connettere e usare
immediatamente. Apparentemente, ogni
settimana sembra nascere una nuova schedina

di espansione, direttamente collegabile al bus per


attivare alcune funzioni prima di allora inutilizzate
o per aggiungere capacit mai viste prima.
Ma la cosa che ci fa pi piacere che la maggior
parte di queste nuove schede non reca
il blasonato marchio di qualche multinazionale
ma per lo pi frutto delle fatiche di piccole
realt commerciali o addirittura di singoli individui
che prima realizzano per s e poi condividono
con il mondo, in un clima di cooperazione
e condivisione che non si vedeva pi da molto
tempo. Lo spazio a disposizione poco, per cui
presteremo attenzione solo a tre delle numerose
schede di espansione: quindi recuperate
la vostra Raspberry Pi, un bel soffio a pieni
polmoni per togliere la polvere e via che si parte!

Raspberry
Raspberry
Pi

Pi-Lite
Matrice di LED multifunzione

na delle cose spesso riportate nei forum era che la RP


sembrasse sottoutilizzata: bastato questo per far venire
in mente a qualcuno che si poteva benissimo creare
una matrice di LED e permettere cos di creare con facilit
gradevoli effetti visivi oltre che seriosi annunci effettuati tramite
scritte scorrevoli. Detto fatto: la Pi-Lite offre una matrice
di 126 LED rossi (la versione a LED bianchi in lavorazione).
La cosa intelligente che la scheda si incastra perfettamente
con la Raspberry Pi sottostante, in modo che il tutto non occupi
alcuno spazio extra. Non si tratta di un mero lavoro di incastro,
serve anche a configurare la scheda affinch abiliti la porta seriale,
che il canale di comunicazione con lespansione. Se avete
dimestichezza con Raspbian, non dovrebbero esserci problemi visto
che la procedura ben documentata sul sito del produttore Ciseco;
ecco il rimando diretto alla pagina con le istruzioni: http://bit.
ly/1c0GOY1. Il software non richiede pi di una decina di minuti
per linstallazione e la configurazione, contando anche qualche
trucchetto necessario per la Raspberry Pi modello A. Dopo
aver sistemato la parte software, possiamo controllare la scheda
di espansione via seriale:
minicom -b 9600 -o -D /dev/ttyAMA0
ed eccoci dentro il controllo del LED: ora tutto quello che
scriveremo scorrer in un tripudio di LED rossi che si accendono
e spengono per disegnare il testo inserito. Tutto ci bello
di per s e di solito quello che desiderano i neofiti della Pi-Lite.
Al pari del testo altres possibile inviare dei comandi allespansione,
a patto di anteporre tre simboli del dollaro, per esempio:
$$$ALL,ON
Ed ecco che tutti i LED si accendono! Ci sono modalit
che permettono di mostrare grafici e gestire i singoli pixel,
mentre il meccanismo finale inviare una stringa di zeri
e uno che indicano se il rispettivo LED deve essere acceso
o spento, come segue:
$$$F0000000000000000000001110000111111100111
1111011111111111110111111110111101100011001
1000110000000000000000000000000000000000000
Lultimo metodo permette di disegnare qualsiasi immagine, anche
se probabilmente pi utile quando usato via script invece che con
comandi manuali. Dal momento che tutte le comunicazioni verso
la Pi-Lite viaggiano su porta seriale, ci si pu accedere tramite
qualsiasi linguaggio che supporti la comunicazione su porta seriale.
Python tramite il relativo modulo seriale probabilmente uno

dei modi pi semplici e veloci per cominciare e ci sono decine


di esempi disponibili, sempre sul sito di Ciseco: http://bit.
ly/19C3Sve. Avrete gi capito che, essendo Pi-Lite pilotata
da un protocollo standard, essa non strettamente vincolata
alla Raspberry Pi ma pu essere connessa anche ad altre schede
che dispongano di linea seriale; ma anche se non lavessero come
gli attuali PC, un economico convertitore USB<-->rs232 funger
da ponte con sistemi pi moderni.

Lemulatore di Pi-Lite
Se vi interessa sapere come funziona la Pi-Lite ma non siete
ancora convinti dellacquisto, potete farvi unidea di cosa si avr
in mano tramite un emulatore prelevabile sempre dal sito
openmicros.org allindirizzo http://bit.ly/14Li3d4. Per pilotare
i LED, la Pi-Lite usa un microcontrollore ATMEGA, un integrato
simile a quello usato nella nota scheda Arduino e, parimenti
a quello, il nostro dotato di un bootloader preinstallato. In altre
parole, possiamo programmarlo per fargli fare quello che pi ci
aggrada, facendolo agire come unit autonoma indipendente dalla
Raspberry. Di pi, la scheda permette luso dei 5 input analogici
dellATMEGA, quindi con un piccolo sforzo di programmazione
potremo usufruire di questa preziosa risorsa per i nostri progetti.
Certo, La Pi-Lite nasce per gestire effetti luminosi, ma come vedete,
basta poco per sfruttare al massimo lhardware, cosa che diventa
unottima scusa per migliorare le proprie competenze tecniche.

Testo che scorre,


interfaccia stile
anni 80, oppure
un giochino tipo
Tetris: cosa farete
con la vostra
Pi-Lite?

LINUX PRO 136

23

Raspberry Pi

Il modulo Camera

Scattate foto con la Raspberry Pi

La lunghezza
della piattina
di connessione
permette il
posizionamento
della webcam nel
modo migliore per
i vostri progetti

24

rima di dire cosa , chiariamo la situazione dicendo cosa non


! Se cercate una webcam economica per le vostre sessioni
Skype, siete capitati male perch non ci troviamo di fronte
a uno strumento connetti e vai: questo modulo semplicemente non
pensato per tali attivit, nonostante sia stato progettato con la facilit
duso in mente. La piattina di connessione del modulo webcam
si connette al pettine verticale piazzato vicino al connettore HDMI,
a poca distanza dallarea dedicata alla porta Ethernet: solleviamo
delicatamente la stanghetta che funge da fermo, infiliamo la piattina
avendo cura che i piedini argentati siano rivolti nella direzione
del connettore HDMI e poi abbassiamo il fermo di prima, tutto qui.
Ora dedichiamoci alla parte software con:
sudo apt-get update
sudo apt-get upgrade
sudo rpi-update
Poi lanciamo il comando raspi-config, navighiamo nel menu
e attiviamo la parte relativa alla webcam: infine necessario riavviare
la Raspberry Pi. Alla ripartenza, i due comandi raspistill e raspivid
permettono di ottenere rispettivamente scatti fotografici
o videoriprese. Naturalmente possibile parametrizzare
i comandi: per scattare una foto, si digiti
raspistill -o immagine.jpg
Per il divertimento altrove, dato che essendo a livello di terminale,
questi comandi possono essere richiamati da altri programmi o inseriti
in script Bash. Per esempio, se non abbiamo mai capito come usare
il bilanciamento del bianco ecco uno programmino Python
che potrebbe tornare utile:
from subprocess import call
for awb in [off,auto,sun,cloud,shade,tungsten,fluorescent,
incandescent,flash,horizon]:
call([raspistill -n -awb + awb + -o image + awb +
.jpg], shell=True)
Come vedete, possibile controllare il sensore con Python, anche
se esso funge unicamente da lanciatore per un programma esterno
tramite una chiamata di sistema (il comando call). La funzione call
presente praticamente in ogni linguaggio di programmazione, per cui
se preferiamo Bash, Perl o C, possibile portare lesempio Python su
altri linguaggi con poco sforzo. Poich possibile usare tutte le opzioni
dei due comandi anche tramite chiamata di sistema, possiamo unire
la flessibilit di parametrizzazione con la potenza del linguaggio ad alto
livello in modo da poter applicare effetti grafici tramite successivi
comandi esterni come il potentissimo ImageMagik: insomma, ora non
ci sono pi scuse per non creare il cortometraggio in stop motion

LINUX PRO 136

che abbiamo sempre desiderato fare, ecco un esempio pratico!


raspistill -ifx cartoon -ISO 800 -tl 100 -t 10000 -w 300 -h 300
-o test_%04d.jpg
Abbiamo usato varie opzioni, vediamo cosa fanno nel dettaglio.
-ifx un parametro che permette interessanti effetti grafici: in questo
caso, il parametro che segue trasforma lo scatto in un cartone
animato. -ISO imposta la sensibilit ISO: abbiamo imposto un valore
elevato in quanto la qualit dellimmagine in modalit cartoon non
fondamentale. -t1 impone il tempo di esposizione durante lo scatto,
il numero indica i millisecondi. -t impone la pausa tra uno scatto
e laltro, anche qui il numero esprime la durata in millisecondi. -w
e -h indicano larghezza e altezza, i numeri indicano le misure in pixel.
-o il nome da dare allo scatto, e _%04d un numero che si autoincrementa tra uno scatto e laltro. facile intuire che questo solo
un esempio limitato, giusto per cominciare, ma sicuramente sapremo
spremere i numerosi parametri per ottenere molto di pi: digitando
il comando raspistill senza parametri otterremo lelenco di questi
ultimi e relativa spiegazione ma se non si ha una pregressa
competenza da fotografo, probabile che molti di essi non ci diranno
nulla. Si impone quindi di informarsi in qualche sito dedicato
alla nobile arte dello scatto fotografico. Al pari di raspistill anche
raspivid ha la sua bella lista di parametri, ma partiamo dalle basi:
raspivid -t 5000 -o video.h264
Ci registrer un video di 5 secondi di nome video.h264, dove
lestensione rappresenta il formato nel quale il risultato stato salvato.
Dopo che avremo padroneggiato le basi, potremmo impegnarci
in qualcosa di pi complicato: che ne dite di un programma di
riconoscimento facciale usando OpenCV? Guarda caso, c un tutorial
su questo argomento presente qui, http://bit.ly/13WDdoy per cui
chiudiamo con due parole: buon lavoro!

Altre videocamere
Connettere una DSLR o webcam
Al momento, la Camera Raspberry Pi la sola collegabile al bus
a pettine presente sulla RP: ciononostante, un vasto numero
di webcam sono collegabili tramite porta USB. Certo, non tutte
sono supportate, ma seppur incompleta, una lista di modelli
reperibile presso http://elinux.org/RPI_USB_Webcams, che
consigliamo di visitare prima di comprare un modello alla cieca.
Le classiche webcam USB sono gestibili tramite Gphoto2, che
pi o meno supporta tutte le marche e modelli, anche se magari
non al pieno delle loro caratteristiche pi avanzate. Per esempio,
certo che sia possibile scattare foto con qualunque webcam,
ma non necessariamente sar possibile controllare quelle
motorizzate o con particolari caratteristiche necessitanti estensioni
software, si controlli su www.gphoto.org mentre alla pagina
www.gphoto.org/doc/remote si possono trovare informazioni
sulle caratteristiche avanzate.

Raspberry Pi

I bei colori
della piattina
di connessione
non garantiscono
il suo uso con tutti
i case esistenti,
controllate bene
prima di iniziare!

Quick2Wire
Potenziamo in modo efficace il GPIO con poca spesa

na delle pi gradite caratteristiche della Raspberry Pi


la presenza del bus GPIO, facile da capire e facile
da usare. Con un solo comando in Bash o in Python ecco
che si pu leggere un ingresso o forzare unuscita. Un sistema
buono ma non perfetto. Prima di tutto non tutti i piedini
sono utilizzabili, inoltre non sono disponibili ingressi e/o uscite
analogiche. Inoltre i piedini sono delicati: applicando una tensione
eccessiva (cio superiore ai 3,3V) oppure cortocircuitando
due piedini sbagliati, ecco che ci ritroveremo la RP pronta
per il cassonetto dei rifiuti elettronici. Molti progettisti hanno fornito
soluzioni per semplificare e migliorare la situazione. Per esempio,
la scheda Slide di Ciseco fornisce 16 linee GPIO che accettano
anche input a 5V, la scheda Pi Face monta LED, pulsanti e rel
(per controllare motori o altro), mentre la Gertboard fornisce
una vasta gamma di linee di I/O utilissime per applicazioni che
vanno oltre il livello hobbistico. Una bella alternativa interfacciarsi
a un Arduino assegnandogli il compito di interfaccia col campo
anche se ci necessita di qualche competenza in C, non sempre
presente nel bagaglio di conoscenze di ognuno di noi. A ogni
modo, daremo unocchiata al Quick2Wire con interfaccia I2C
e SPI, in quanto c da configurare qualche parametro
per rendere la scheda operativa.

Espandere il bus GPIO


SPI e I2C stanno per Serial Peripheral Interface e Inter-Integrated
Circuits (spesso scritto I2C e letto come I-QUADRO-C). Nella sua
configurazione di partenza, la Quick2Wire fornisce linee in I/O
gestite tramite I2C o SPI, in modo da proteggere da sovratensioni
il GPIO della RP; inoltre permette di usare ingressi e uscite
analogiche. Queste schede di espansione possono essere
accodate sullo stesso bus in modalit daisy-chain, avendo come
risultato finale quello di avere molte linee di I/O al costo di pochi
PIN occupati sulla RP. Certo, dovremo darci da fare per
assemblare per conto nostro la scheda, ma una volta terminato
il lavoro, la fatica di connetterle si riduce a incastrare una piattina
di fili. La guida in linea reperibile presso la pagina Web

facile programmare
la scheda con Python

http://quick2wire.com/articles/beta-kit. Purtroppo passando


alla revisione 2, quei simpaticoni di Raspberry Pi hanno invertito
un paio di piedini, per cui potremmo trovarci nella necessit
di accedere a librerie diverse reperibili presenti allURL
http://github.com/quick2wire/quick2wire-python-api che
richiedono linstallazione del pacchetto python3-setuptools.
Dopo che avrete fatto tutto, la programmazione della scheda
tramite Python diventa unautentica passeggiata. Ricordiamo che
non argomento di discussione quale sia la scheda GPIO migliore,
in quanto a problema diverso, scheda diversa, quindi sceglieremo
in base alle necessit. La Ciseco Slice buona, economica
e irrobustisce la gestione dellI/O, la Pi Face perfetta per
sperimentare e interfacciarsi al mondo reale, soprattutto se non
abbiamo ancora individuato il campo finale nel quale applicarci.
Infine la Quick2Wire utile nel caso si voglia sfruttare la potenza
dei protocolli SPI o I2C per interfacciare un discreto numero
di schede figlie senza impegnare troppi piedini della Raspberry,
che funge in questo caso da scheda madre. LXP

Altri extra
Accessori e kit per ogni necessit
Al momento, c una imbarazzante quantit di persone che
tentano di espandere le caratteristiche della propria RP, e Adafruit
(www.adafruit.com) fornisce una vasta gamma di periferiche
per i patiti del saldatore negli Stati Uniti dAmerica. Per gli inglesi
e gli europei in generale, Pimoroni (http://shop.pimoroni.com)
sembra il posto pi adatto sia come distributore Adafruit sia come
venditore di soluzioni alternative, perch oltre a vedere periferiche
generaliste, qui si trova anche quella particolare scheda introvabile
altrove ma che indispensabile. La scheda BrewPi (http://brewpi.
com) nasce per permettere agli smanettoni seguaci del Dio Bacco
di creare la propria birra casalinga, monitorandone temperatura,
tempi di fermentazione e cos via. Chi armeggia con RP non
sconosciuto a Kickstarter, la nota piattaforma di finanziamento
popolare che ha ospitato un progetto per la creazione di una
piattaforma di videogiochi (i famosi cassoni da bar anni 80!)
basata proprio sulla Raspberry, per cui donate qualche soldino se
rivolete Mario Bross o Space Invader di quando eravate ragazzi!

LINUX PRO 136

25

Intervista

26

LINUx PRO 136

Intervista

E come Eben
Abbiamo visitato la Raspberry Pi Foundation per
parlare di propriet intellettuale, aggiornamenti
hardware e altro ancora con il suo fondatore

on sono molte le persone impegnate


quanto Eben Upton. soprattutto
a lui che si deve lesistenza della
Raspberry Pi, alla cui realizzazione ha contribuito
in modo decisivo, sovrintendendo ai dettagli
della sua progettazione, alla sua produzione
e alla sua straordinaria ascesa alla fama
mondiale. In aggiunta, la fondazione ha trasferito
la produzione nel Galles, ha lanciato
il Model A e il modulo fotografico e conduce
incessantemente la RP verso nuovi territori.
Tra un colloquio e laltro con potenziali partner
e media internazionali, Upton ha trovato un paio
dore per la nostra intervista. Con Upton abbiamo
parlato di tutto, dallideazione del progetto alle
difficolt della sua realizzazione.
Linux Pro: stato difficile adattarsi al successo
della Raspberry Pi?
Eben Upton: Direi che buona parte della fatica
in termini di logistica e di proporzioni ricaduta
sulle spalle di RS ed Element 14 (le due case
produttrici della Raspberry Pi).
LXP: Avevate deciso fin dallinizio di utilizzare
queste due case?
EU: Lidea era quella fin dalle origini, perch
prima ancora di esordire prevedevamo che
avremmo probabilmente riscosso un successo
superiore alla nostra portata. Avevamo fondi
sufficienti a produrre 10.000 unit, un quarto
di milione di dollari Poi venuto il momento
in cui abbiamo pubblicato la prima immagine
per la SD per il dispositivo (registrando 50.000
scaricamenti) e il sistema operativo in versione
alfa, pieno di bug, realizzato da un team di
persone che non sapevano ancora se il progetto
sarebbe stato portato a termine. stato allora
che ci siamo resi conto di essere nei guai [ride]
e di avere bisogno di ripensare il nostro modello.
LXP: stato alla fine del 2011, giusto?
EU: S; se avessimo mantenuto il modello
originale, credo che avremmo trascorso tutto
lultimo anno nel tentativo di far fronte alla

domanda del primo giorno. Ci siamo andati vicini


ma ce labbiamo fatta in 3-4 mesi. Di sicuro,
non saremmo arrivati da nessuna parte: forse,
con molta fortuna, saremmo riusciti a realizzare
100.000 unit nel primo anno, non certo
il milione che abbiamo raggiunto. Perci, dal
punto di vista della RP, direi che abbiamo
realizzato un piccolo miracolo affidandoci
a queste due aziende. Voglio dire, questi
sono soggetti che in termini logistici operano
su una scala paragonabile a quella di Amazon.
RS distribuisce 44.000 pacchetti al giorno.
Il carico di lavoro significativo anche per loro
ma non si avvicina nemmeno a raddoppiare
il loro volume abituale.
LXP: Il lancio stato un vero e proprio evento!
EU: S, decisamente. Per noi il progetto
era iniziato da circa 9 mesi e per loro [RS
ed Element] solo da un mese o due.
LXP: Liz (responsabile comunicazioni per
Raspberry Pi Foundation e moglie di Eben)
ha fatto un ottimo lavoro nel creare lattesa.
EU: Assolutamente. Credo che per i nostri due
partner sia stata una vera sorpresa. Ed stata
unottima sorpresa: il progetto si trasformato
in un notevole affare per entrambe le aziende,
che hanno registrato entrambe una crescita.
Anche la nostra attivit sta crescendo.
Tutto questo ha cambiato il nostro modo
di vedere ci che facciamo; stata una sfida.
LXP: E a livello personale?
EU: Beh, anche a livello personale, in un certo
senso Non che sia diventato meno divertente
ma di sicuro ora una cosa pi seria, perch
ci sono persone il cui posto di lavoro dipende
da questo progetto. Non avevamo mai pensato
a una cosa del genere: e non si tratta di persone
che lavorano da noi ma dei lavoratori
che producono e distribuiscono le unit.
C un numero significativo di persone,
probabilmente un centinaio, che si guadagnano
da vivere con la Raspberry Pi. Questo stimola

a riflettere meglio prima di prendere iniziative


tipo: Dai, cambiamo questo componente!.
Se ne producessimo 100 e per un errore
mandassimo a monte la produzione di una
settimana, questo si tradurrebbe in 100 unit
da buttare. Con i volumi a cui operiamo oggi,
la produzione di una settimana si aggira sulle 30,
40, 50.000 unit: un errore del genere potrebbe
danneggiare lazienda e quindi far perdere posti
di lavoro. Insomma, il progetto tuttora un
divertimento ma dobbiamo ragionarci di pi.
LXP: interessante che abbiate concepito
Raspberry Pi come una fondazione
e unimpresa al tempo stesso. un modello
peculiare e non molto diffuso.
EU: Penso sia importante se si vuole che lattivit
sia sostenibile. C questa idea secondo cui
unattivit non a scopo di lucro non potrebbe
crescere: beh, noi volevamo essere e siamo
proprio questo, unorganizzazione senza
fini di lucro. Tutto il denaro che entra viene
reinvestito nellattivit. Io non percepisco
un salario; ho la fortuna di poter evitare di farlo.
LXP: Tutto questo destinato a cambiare?
EU: Potrebbe, immagino. Io lavoro ben oltre
quello che la maggior parte della gente
considererebbe un orario completo, per sono
tuttora un dipendente di Broadcom. Questultima
stata veramente generosa. Lo so che c
qualcuno che pensa che faccio pubblicit
a Broadcom Direi che abbiamo semplicemente
avuto fortuna con questo progetto e ci abbiamo
impiegato un po per persuadere Broadcom
che ne valeva la pena.
LXP: un po come quando Linus Torvalds
lavorava per Transmeta...
EU: Sta diventando una relazione di quel tipo,
anche se il coinvolgimento minore perch
a quanto ho capito Torvalds dava un contributo
notevole a Transmeta. Oggi io dedico circa
il 90% del mio tempo alla Raspberry Pi.
Se percepir mai uno stipendio? S, prima
Linux pro 136

27

Intervista
ideologica, dato che il denaro generato dalla
titolarit di questi diritti ci che ci permette
di mantenere la RP sostenibile Un aspetto
veramente importante della RP che con ogni
probabilit sar ancora in circolazione tra cinque
anni. Questa una risorsa importante per
le vendite. possibile creare un prodotto
industriale basato sulla RP o utilizzarlo
come base per un curriculum.
LXP: E non volete che tutto questo venga
diluito dalla presenza di versioni realizzate
da soggetti terzi...
EU: Esattamente. Se pubblicassimo il progetto,
permettendo la realizzazione di cloni del nostro
prodotto, mineremmo le basi finanziarie di ci
che stiamo facendo; ma questo non sarebbe
un male in s. Daltra parte, non che
incassiamo 10 dollari per ogni RP venduta.
Il nostro margine molto ridotto, abbiamo ridotto
al massimo il costo della RP, perci i profitti
finirebbero semplicemente nelle tasche
di qualcun altro sotto forma di dividendi:
diventerebbero profitti aziendali. Tutto questo
finirebbe per destabilizzare la fondazione,
la sua capacit di investire nellistruzione, nel
finanziamento di progetti Open Source, senza
alcun beneficio tangibile per i consumatori.
Certo, dal punto di vista ideologico potremmo
continuare a definire il progetto come Open
Source; ma finirebbe tutto l. E lonta di cui
parlavo finirebbe per gravare su Broadcom,
se a quel punto non rendesse disponibili i chip.

o poi potremmo arrivare al punto in cui


la situazione non sar pi sostenibile
per Broadcom; quello, probabilmente,
sar il momento giusto per passare oltre.
In ogni caso, potrei percepire un salario
ma non dei dividendi: tutti i profitti realizzati
dallorganizzazione, al netto degli stipendi,
vengono reinvestiti nellattivit stessa. E questo
eccellente, perch significa che la nostra parte
di attivit sostenibile e ci permette di ragionare
strategicamente, di lavorare a cose nuove
e interessanti... come il finanziamento dello
sviluppo della macchina fotografica. Pete
Lomas di Norcott (Technologies Limited)
ha sviluppato la Raspberry Pi sostanzialmente
a titolo di donazione: uno dei garanti
della fondazione. La scheda della macchina
fotografica stata sviluppata come prodotto
commerciale, perci abbiamo pagato
chi lha progettata per noi.
LXP: Questo avr delle conseguenze
sulla pubblicazione degli schemi tecnici?

28

Linux pro 136

EU: Gli schemi sono stati pubblicati, il PCB no.


La questione interessante. Pubblicheremo
mai la struttura del circuito stampato? La nostra
intenzione sempre stata questa e lo tuttora.
Il problema che non possibile acquistare
i chip. C un problema che dobbiamo risolvere.

LXP: Ci sar un aggiornamento della RP?


Avete preso in considerazione lipotesi
di una Pi modulare?
EU: Per il momento non abbiamo spazio per
aggiungere RAM... Non possiamo espandere
la RAM perch quella attuale il massimo
compatibile con un sistema su SoC.
Non possiamo aumentare la capacit
di elaborazione a causa dei limiti di questo
tipo di sistema. Non abbiamo in cantiere
progetti sul piano dellhardware.

LXP: per questo che non avete pubblicato


la sua struttura?
EU: Se la pubblicassimo, lutente non potrebbe
comunque costruire una Raspberry Pi, perch
non potrebbe acquistare i chip. un problema...
alcuni, credo, sono rimasti decisamente delusi
dal fatto che non abbiamo ceduto tutti i nostri
diritti di propriet intellettuale. Attualmente,
su di noi grava questa onta. E se li cedessimo,
so esattamente su chi finirebbe per gravare
lonta. Credo che Broadcom ci abbia dato un
sostegno enorme e non meriti di apparire
come colpevole. Per il momento, quindi, sono
disposto ad assumermi questa responsabilit
personalmente. Non sono incline a cedere i miei
diritti di propriet intellettuale per una questione

LXP: Nemmeno nei tuoi sogni pi remoti


c una Raspberry Pi 2?
EU: Penso che sarebbe triste e probabilmente
fatale per noi se nel 2016 distribuissimo ancora
la Raspberry Pi attuale. Dovremo fare qualcosa
a riguardo ma al momento non saprei dire cosa
Il vero problema che posso immaginare schede
che sarebbe possibile produrre a prezzi compresi
tra i 25 e gli 85 dollari... Posso immaginare una
scheda diversa per ogni incremento di 10 dollari.
Attualmente non viene prodotto niente del
genere. Se per ne ideassimo una che avesse
le stesse attrattive della RP... Il fascino della RP
sta nel suo eccellente rapporto tra prezzo
e prestazioni. veramente difficile conseguire
un rapporto del genere. Di certo, non penso che

Intervista
importante sviluppatore di Wayland,
si occupato del back-end per Weston,
il compositore di riferimento per Wayland
che controlla il nostro motore di composizione
hardware; in questo modo abbiamo ottenuto
un sistema hardware molto potente per
la scalatura dei video, che definiamo HVS.
In sostanza si tratta di un potente sistema
per la gestione degli sprite hardware. Fornisce
un gran numero di grossi sprite hardware; a quel
punto basta inserire una finestra in ogni sprite
e [batte le mani] montarli sul display. Prima
di esaurire la larghezza della banda di memoria,

Sulla Raspberry Pi 2

Sarebbe triste (e fatale


per noi) se nel 2016
distribuissimo ancora
la Raspberry Pi attuale

potrei produrre qualcosa di meglio rimanendo


nella fascia di prezzo compresa tra i 25 e i 35
dollari. Con i chip esistenti e a questo prezzo,
non potrei produrre una scheda paragonabile
alla RP e men che meno una migliore. Sarebbe
unimpresa anche aumentando il prezzo a 45
dollari. A 55 dollari immagino che si potrebbe
ottenere qualcosa di meglio; ma significativo
che attualmente non ci sia nulla del genere
in circolazione.
LXP: Come intendete mantenere stabile
il vostro successo, allora?
EU: Facendo un sacco di lavoro sul software.
LXP: Quindi al momento vi state concentrando
su questo?
EU: Con i suoi 700 MHz, la RP uno
straordinario acceleratore multimediale.
Il 97% del chip svolge questa funzione.
LXP: Uninstallazione standard di Raspbian,
che cosa utilizzerebbe?
EU: Attualmente utilizza il percorso delloutput
video, il controller USB; cose che esistevano
prima dellarchitettura ARM. Questultima ha
fatto aumentare del 3% le dimensioni del chip.
Il carico di lavoro grava soprattutto sullARM
e in parte sullinfrastruttura del sistema, sul
controller SDRAM e su qualche minuscola
periferica. Buona parte del sistema inattivo
per la maggior parte del tempo. In ogni caso, con
700 MHz il processore decisamente potente.

Dato che sul piano dellhardware siamo


in qualche modo bloccati, stiamo dedicando
maggiore impegno al software, in modo
da sfruttarlo al massimo. Per questo abbiamo
dedicato molto tempo allottimizzazione dei
componenti a livello di sistema, con lobiettivo di
realizzarne versioni ottimizzate per Linux. Pixmap,
per esempio; o versioni ottimizzate di elementi
come memcopy e memset. Sullaccelerazione X
c stato un dibattito interessante. Non
disponiamo di un acceleratore X o di un driver
di accelerazione. Abbiamo per molti componenti
del chip e sottosistemi che possono essere
utilizzati per influire sullacceleratore X del server;
e questo va benissimo. Il software perfetto
per questo; funziona in modo sorprendente.
LARM muove un pixel per volta ma grazie
a pixmap ora le prestazioni sono molto migliori,
nella misura in cui unARM con prestazioni
relativamente basse pu muovere i pixel pi
velocemente. Abbiamo discusso sullopportunit
di utilizzare unaccelerazione X hardware
e abbiamo concluso che non era il caso.
Ci che dobbiamo fare esplorare nuovi territori.
LXP: una soluzione pi facile?
EU: Credo di s. Possiamo permetterci
di scegliere una sola alternativa e preferisco
spendere i miei soldi in questo modo. questa
la direzione in cui la gente vuole procedere,
perci credo che ci proveremo. Abbiamo lavorato
con unazienda di Cambridge chiamata Collabora.
Pek [Pekka Paalanen], che ci lavora ed un

se ne possono sovrapporre moltissimi. Quando


si raggiunge il limite, subentra un sistema
di composizione non a schermo. fantastico.
In un mondo in cui ogni finestra uno sprite
hardware, il trascinamento di una finestra
non determina il movimento di alcun pixel.
Questo HVS leggermente pi grande dellARM,
dato che comprende unampia memoria buffer
per il controllo degli sprite. Dato che disponiamo
di un sistema dedicato per la creazione delle
gerarchie composte di renderizzazione
e di un sistema per la composizione delle
finestre, dobbiamo creare un software in grado
di collegarli. un ottimo esempio di ambito
in cui si pu usare il software per offrire allutente
unesperienza decisamente migliore, senza dover
impiegare un nuovo chip. In pi, questo ci
permette di utilizzare il fantastico Wayland.
LXP: il primo utilizzo di alto profilo
di Wayland di cui abbiamo sentito parlare
EU: Credo che la nostra sia la prima soluzione
di back-end per Wayland non GL. Di solito viene
utilizzato questultimo ma la composizione con
GL complicata, dati i suoi filtri di scalatura
veramente primitivi. Anche per ridimensionare
necessario generare un gran numero di
mipmap. Immaginate di dover ridimensionare un
elemento in scala 3:1: il problema che il fattore
una via di mezzo tra 2:1 e 4:1. Utilizzando GL
si otterrebbe un mipmap 2:1, che potrebbe
presentare un certo disturbo; un mipmap 4:1,
per contro, presenterebbe sfocature. Anche
utilizzando un ridimensionamento lineare,
si otterrebbe un risultato leggermente migliore
ma non ottimale. Il nostro sistema, invece,
ridimensiona in scala 3:1 creando ogni pixel sulla
base di una media ottenuta da una griglia di 3
pixel per 3 dellimmagine originale. LXP
Linux pro 136

29

ReactOS

REACTOS
LANTI-WINDOWS

Vi presentiamo un sistema nato per essere un clone


di Windows e un po alla volta, ci sta riuscendo!
Vediamo i progressi di questa nuova versione

erch ReactOS? pima di tutto una contro-domanda: perch no?


in altre parole, se una cosa possibile, nessuno pu impedire
che ci si impegni per realizzarla: reactoS parte da zero, cio non
contiene codice proprietario Microsoft. Questo sistema operativo si basa sul
concetto della riproduzione e non sulla copia delle funzionalit del sistema
finestrato. in altre parole, reactoS sta a Windows come Linux sta a unix,
anzi: meglio. Eh s, perch nel mondo *nix
occorre ricompilare per portare il codice
da (per esempio) Solaris a FreeBSD,
ma reactoS va oltre, in quanto lo scopo finale
permettere di usare gli stessi applicativi
che si abituati a usare su Windows senza
ricompilazioni, trucchi, emulazioni o quantaltro:
cos come il programma xYZ installabile su Windows, (inserisci CD, setup.
exe, avanti, avanti, avanti, installato), ecco che lo stesso procedimento
deve essere permesso su reactoS. Ma quanto manca per raggiungere questo
ambizioso obiettivo? Scopriamolo insieme.

ci dispiaceva in quanto, come molti informatici di vecchia data, siamo un po


conservativi e la frase SE FunZionA, non ToCCArLo scritta a vernice rossa
e in caratteri cubitali sulla parete di fronte al nostro tavolo di lavoro. il fatto
che il sito sia diventato pi carino a vedersi non ci fa n caldo n freddo,
ma riconosciamo che pi interessante per gli utenti 2.0. Va comunque detto
che una generale ristrutturazione ha reso pi logico laccesso ai contenuti
e il passaggio al nuovo sistema di gestione
dei bug (jira.reactos.org) indubbiamente
un grosso miglioramento che rende facile la vita
alle persone che vanno a caccia di errori per poi
segnalarli agli sviluppatori. inoltre un grosso sforzo
stato fatto per linternazionalizzazione
del progetto, infatti molte informazioni erano
obsolete e sono state aggiornate nelle varie lingue nazionali. insomma,
il sito sta facendo ogni sforzo per aprirsi a un pubblico pi vasto, in modo
da aumentare il numero di possibili sostenitori di reactoS.

Il sistema operativo
come Windows
ma non Windows

Sito rinnovato, utente catturato


il progetto non un mero Sistema operativo, ma un insieme di persone, unite
da uno scopo comune che si appoggiano a mailing list e a delle pagine Web:
per il sito www.reactos.org era da almeno un decennio sempre lo stesso,
nel senso che aveva conservato quellaria da Web 1.0. personalmente non

30

Linux pro 136

Supporto hardware migliorato


Se per il pieno supporto hardware la strada appare ancora lunga, leggendo
http://www.reactos.org/wiki/Supported_Hardware si notano progressi
confortanti. intanto diciamo che i dischi SATA sono ormai pienamente gestiti:
anche se con grosso ritardo rispetto ad altri sistemi operativi, anche roS
va avanti. Stesso discorso per il protocollo uSB: era gi funzionante nella release

ReactOS
precedente, ma ora stato ulteriormente ripulito e stabilizzato,
per cui mouse, tastiere e dischi esterni sono tranquillamente gestiti
anche se manca il supporto a stampanti e periferiche audio come
cuffie e microfoni.

Installiamo!
Dalla pagina principale del sito si passa alla sezione Download:
scaricata la iSo (scompattata pesa solo 80 MB!) la si masterizza
su CD, e poi si procede con il solito meccanismo: inserisci disco,
boot da cd e cos via. La procedura tipicamente Windows,
ma senza i fronzoli moderni: infatti ricorda molto la procedura
del vecchio nT. riconosciamo che i guai ce li siamo andati a cercare:
s, perch al posto di usare un emulatore come KVM o VirtualBox,
abbiamo scelto di installare su un pC fisico, ma non un tranquillo
desktop! Abbiamo proprio deciso di stressare reactoS, installandolo
su un portatile (iBM T42) che ha un hardware pi difficile di un
normale desktop assemblato. per linstallazione fila via liscia e in
meno di otto minuti (di orologio!) ci ritroviamo con reactoS 0.3.15
che fa bella mostra di s, nel pieno dei 1024x768 pixel a 16 bit.
per ecco la prima grana: il baco CorE-6901 ancora aperto,
quindi n il mouse integrato n il touchpad funzionano. poco male,
colleghiamo un mouse uSB e siamo operativi. Durante la fase di
inizializzazione sono comparsi i vari messaggi di driver non presente
(per la scheda di rete, laudio, ecc.). Dobbiamo quindi espletare la
triste manfrina tipica di Windows, cio la ricerca dei driver e la relativa
installazione. Ma come fare se non va la scheda di rete? Facile:
riavviare con LiVE-CD Gnu/Linux, connettersi al sito lenovo.com,
cercare in base al modello e scaricare sei file .exe contenenti i driver
(pi di 100 MB in totale!) sulla partizione che contiene reactoS, che
al prossimo avvio si trover tutto a bordo. Leggendo sul sito, si scopre
che alcune periferiche funzionano con driver per Windows 2000
oppure attraverso alcuni rimaneggiamenti, per esempio prendi il
driver, scompattalo manualmente, cambia il nome da ABC.dll in
ABC2.dll e poi spostalo nella directory xYZ. noi ci siamo calati nei
panni dellutente della strada che vuole tutto e subito, per cui
abbiamo fatto ricorso unicamente ai driver per Windows xp: vediamo
come andata...

Supporto hardware? Male!


Chipset, touchpad, schede audio/video/rete/wireless... nulla ha
funzionato, i driver per xp non sono stati accettati da reactoS:
linstallazione dei driver video e wireless ha addirittura mandato
in blocco il sistema. ok, lo sapevamo che i chipset di rete fissa
e wireless del portatile sono nella lista dei non supportati,
ma speravamo nel fatto che il database della lista di compatibilit
non fosse aggiornato e ci abbiamo provato lo stesso. Ci ritroviamo
quindi col portatile che lavora in framebuffer, muto e senza accesso
alla rete. Quanto meno abbiamo fatto la prova le chiavette uSB
funzionano, per cui possiamo usarle come veicolatrici di dati
da e per il disco fisso. Sul desktop troviamo Rapps, che il tool
ufficiale (una specie di Synaptic) per installare applicativi scaricabili da
internet. non avendo la connessione, ricorreremo a un altro sistema.

scaricato la iSo, montata in lettura e scaricato il suo contenuto sul


disco fisso, in modo da poter lanciare tutto in locale. Abbiamo
scelto questa collezione di software in quanto contiene anche
cose che non sono presenti nel tool rapps, quindi ci arrischieremo
a fare qualche prova di installazione extra.

Il software? Malino!
Sono molti i software disponibili ma ci siamo limitati
a testarne una dozzina, stilando una piccola classifica
che riporta buoni, cattivi, pessimi e cos-cos. Si noti che
abbiamo girato la frittata: non sono i programmi a essere
cattivi ma reactoS che non ancora in grado di gestirli
a dovere. notepad++, 7-zip, Sumatra pDF, puTTY:
funzionano tutti. Certo, sono programmi noti per essere
da anni compatibili con reactoS, ma abbiamo voluto
verificare che non ci fossero delle regressioni, cio
la comparsa di nuovi bachi. Stellarium, Celestia,
Lbreakout2, Freeciv: si installano, ma poi non funzionano
per problemi di grafica, come la mancanza dei menu,
o lestrema lentezza del framebuffer che li rendono di fatto
inutilizzabili. Abbiamo poi la lista dei pessimi: nasa World
Wind, Dia, Maxima, tutti programmi che portano a una
immancabile schermata blu. invece Album Shaper segnala
la mancanza di msvc60.dll che installiamo, ma poi viene
segnalato un errore in msvcrt.dll, per cui lasciamo perdere.
Alla fine ci buttiamo sul pezzo forte: openoffice 3.4,
che con nostro piacere, si installa! il processo molto lento
e il programma di installazione sembra che si blocchi:
dopo una buona mezzora la pazienza finisce e forziamo
un riavvio tramite il pulsante di accensione/spegnimento.
Sorpresa, alla ripartenza tutti gli applicativi della suite sono
presenti nel menu! Lanciando Write e Calc notiamo
che alcune icone sono assenti (compaiono solo se si passa
il mouse sulla loro posizione) mentre altre hanno lo sfondo
nero. La brutta notizia che Draw risulta inusabile,
in quanto presenta la maggior parte della finestra di lavoro
completamente nera. Considerando che comunque
quasi tutte le persone usano di fatto solo foglio elettronico
ed elaboratore di testi, di Draw ne possiamo fare a meno.
A ogni modo, si tenga conto che le nostre sperimentazioni
non sono state approfondite: ci siamo limitati a creare
dei documenti di prova molto semplici, li abbiamo salvati

Arriva in aiuto TODVD


ricorrendo ancora al trucco del boot con un LiveCD Linux per
aggirare il problema dellassenza di connessione, abbiamo scaricato
ToDVD, che sta per The open DVD, cio una iSo da 2.1 GB
liberamente scaricabile: contiene software per Windows ma rilasciato
in GpL o comunque sotto specifiche licenze che ne permettono il
libero uso. il sito di riferimento www.theopendvd.it, ma c
anche la versione piccola su CD da 697 MB, ovviamente su www.
theopencd.it. Abbiamo scelto la versione da 2.1 GB e abbiamo

La lista delle periferiche mancanti di driver

Linux pro 136

31

ReactOS
evidente vittoria schiacciante a favore di TODVD. In ogni caso,
terremo da parte questa immagine ISO alla quale chiederemo
la rivincita con ROS 0.4.0.

Gestione grafica da migliorare

Da www.
reactos.org/
download si pu
scaricare il CD
di installazione

e riaperti per verificarne leffettivo salvataggio corretto. Insomma


non abbiamo approfondito la sperimentazione con cose pi
complicate, per cui problemi subdoli che escono alla distanza
potrebbero tuttora essere presenti e noi non li abbiamo rilevati
a causa della semplicit dei nostri test. In generale, siamo contenti
di vedere qualche risultato positivo (OpenOffice non era
installabile su ROS 0.3.14) ma, nonostante levidente
miglioramento, ReactOS se ne esce chiaramente sconfitto
sul fronte della compatibilit e non ci resta che segnare una

Purtroppo persiste il difetto della finestra sporca: svolgendo


azioni parallele (per esempio scrivere con Abiword mentre
si sta installando un programma) ecco che spessissimo una delle
finestre cattura il contenuto dellaltra, impedendo di fatto una
corretta prosecuzione delle attivit in corso. Inoltre lo abbiamo
visto molti programmi risultano inutilizzabili non di per se stessi
ma per carenze dellinterfaccia grafica. In poche parole, manca
unadeguata gestione della pagina video, cosa che a nostro
giudizio penalizza fortemente il sistema, confermando nellutente
quella sensazione di non finito. Si consiglia quindi agli utenti,
di fare una cosa alla volta senza mischiare troppe azioni
concorrenti, e, agli sviluppatori, di intervenire appena possibile per
risolvere definitivamente questo annoso problema. Writer, console
e menu utente... ROS non regge e il monitor congela: il cursore
si muove, ma il sistema non accetta gli input tramite click.
stato necessario uno spegnimento forzato.

ReactOS era, , ma... sar?


Prendete il primo che passa in strada, fategli bere una bottiglia
di grappa, poi mettetelo su un monociclo: bendatelo, legategli
le mani dietro la schiena e ditegli pedala. Quanto regger prima
di cadere faccia avanti e arricchire ancora di pi il suo dentista?

Passo passo Installare ReactOS

Lavvio dellinstallazione

La prima schermata durante linstallazione: lispirazione al vecchio


Windows NT evidentissima.

Il primo avvio

Dopo un reboot, si attiva la grafica. Si noti il disallineamento nella


schermata della data: un baco estetico segnalato presso http://jira.
reactos.org/browse/CORE-4141.

32

Linux pro 136

Configurazione e formattazione

Dopo limpostazione dei dati classici (lingua, ecc.) si formatta e si installa.

Il tipico desktop ReactOS

Pochi minuti e ci si ritrova con il desktop attivo, pronti a lavorare


(schermata blu permettendo).

ReactOS
Informaticamente parlando, ReactOS per anni stato nelle stesse
condizioni (del pedalatore, non del dentista). Infatti, ogni volta
che provavamo un nuovo rilascio, dopo un po che si facevano
delle cose minimamente utili (per esempio qualcosa di pi
complicato di Solitario o Notepad) ecco che il sistema rallentava
allinverosimile o andava in schermata blu. Con gli anni le cose
sono migliorate costantemente fino alla 0.3.15: intendiamoci,
non si sono risolte ma almeno, nellesempio di prima, il tizio
vittima dellesperimento non pi bendato e si bevuto solo
un paio di birre. La gestione della memoria, fino a ora largamente
deficitaria, stata migliorata nel rilascio 0.3.15: per esempio,
il Memory Manager stato riscritto e sistemato per almeno
un buon 50% del codice che lo componeva. Manca ancora
molto, ma linstabilit parecchio diminuita, facendo rientrare
il numero dei BSOD entro una soglia che, quandanche tuttora
inaccettabile per lutenza finale, quanto meno comprensibile
per un sistema ancora in alfa. Il ramo 0.3.x durato fino a ora
ben 85 mesi, pi o meno dallagosto 2006 al settembre 2013,
con una media di un rilascio ogni circa cinque mesi. Comparare
la 0.3.0 con la 0.3.15 come raffrontare uno di quei carrelli
della spesa dalle ruote che tirano tutte in una sola direzione
con una utilitaria dalle gomme lisce e con il motore che batte
in testa. Anche se pessimi entrambi, ci troviamo di fronte a due
oggetti assolutamente diversi, tanto stato il miglioramento
generale del sistema. Certo, ReactOS ancora largamente
mancante di molte caratteristiche considerate normali e scontate
in Windows, come il supporto completo alle periferiche USB,
chipset video/audio, RAID, ecc. ecc.. Ma una base di lavoro
c e tra qualche anno sar abbastanza solida per reggere il peso
di quello che gli verr costruito sopra. La comunit di sviluppatori/
utenti piccola ma internazionale: se date una sbirciata agli
indirizzi IP delle persone in chat (server freenode, canale
#reactos), vedete che alcuni abitano in posti che nemmeno
si pensava potessero esistere. Per esempio, ne abbiamo
individuato uno che, stando alla geo-localizzazione del suo
indirizzo di rete, abita ben al di l dei monti Urali, in piena Russia
Asiatica, in un paesino a qualche chilometro dal confine con
la Mongolia. Quindi state attenti, perch anche se pochi, pure
in Italia ci sono utenti e contributori al progetto: il vostro vicino
di casa potrebbe essere un coder di ReactOS senza darlo
a vedere. Ci teniamo a sottolineare che un progetto povero
come questo sta proseguendo dal 1996 grazie al coordinamento
tramite Internet e alla grandissima volont di cooperazione
di coloro che danno una mano. La 0.3.15 secondo noi sar
lultimo o il penultimo rilascio di una serie durata sette anni o gi
di l: tuttavia, siamo speranzosi che la serie 0.4 non richieder
lo stesso tempo. nostra opinione che, come nel componimento
di un puzzle, la serie attuale abbia definito i contorni del
rompicapo, quindi ora si tratter di lavorare sulla parte interna,
incastrando al posto giusto i mini-blocchi composti nel frattempo.
Moltissimo lavoro stato fatto, ancora di pi ne manca per finire
lopera: certo non possiamo prevedere il futuro, ma nessuno
ci pu impedire di immaginare un ReactOS usabile entro breve
dallutente finale e non solo da appassionati e tecnici.

I 4 moschettieri di ReactOS
Nonostante le evidenti carenze, ReactOS ha un grosso potenziale:
abbiamo riassunto in 4 punti i vantaggi che secondo noi lo rendono
attraente. ReactOS molto leggero. Il PC arranca sotto il peso
di Windows? ReactOS un peso piuma che si accontenta
attualmente di 64 MB di RAM e meno di 400 MB di spazio su
disco, quindi lideale per donare una seconda giovinezza a PC

ormai inadeguati per il grasso e lento sistema operativo Made in


Redmond. Tenere gli applicativi Windows ma rimpiazzare il sistema
sul quale girano una ottima mossa per salvare un sacco di soldi:
niente licenza software da pagare e niente PC nuovo da comprare.
Applicativi gi pronti. Come era GNU/Linux 10-12 anni fa?
Sicuramente carente di programmi! Sono occorsi anni e anni
per aver software decenti (ricordiamo le epopee di Mozilla,
Star/Open/Libreoffice, GNOME, ecc.). Ebbene, questo problema
non sussiste in ReactOS, proprio perch, una volta completato,
sar compatibile con tutto il software esistente per Windows:
i pezzi grossi (Microsoft Office, Autocad, Photoshop, ecc.)
gireranno su ReactOS tali e quali come su Windows. Programmi
a go-go: migliaia di programmi sono solo per Windows
e difficilmente, se non mai, avranno una versione per Linux.
Pensiamo a sistemi di controllo industriale SCADA, programmi
di contabilit, migliaia di giochi... ROS intende spezzare le catene
anche agli utenti di questi programmi che sono obbligati a usare
il sistema operativo a finestre. Anche se lo considerano meno
simpatico di una cartella pazza di Equitalia, molti utenti sono
comunque restii alla eliminazione totale di Windows e si limitano
a sopportare borbottando. Sia come sia, loro vogliono Windows
senza per volere Microsoft. Ebbene, anche qui, ROS pu dire
la sua offrendo un sistema simil-Windows: compatibile, ma libero.

Writer, console
e menu utente...
ROS non regge
e il monitor
congela:
il cursore
si muove,
ma il sistema
non accetta
gli input tramite
click. stato
necessario uno
spegnimento
forzato

ReactOS 0.3.15? gi vecchio!


ReactOS 0.3.15 uscito da poco ma gi vecchio. Infatti
gli sviluppatori apportano modifiche giornaliere ai sorgenti,
ne consegue che una daily build (http://www.reactos.org/
getbuilds) sia molto pi aggiornata delle ISO ufficiali, che escono
a parecchi mesi una dallaltra. Lo diciamo solo a voi: sul canale IRC
sono passati alcuni pettegolezzi telematici che parlano di un
qualcosa di grosso che gli sviluppatori non hanno fatto in tempo
a mettere nella 0.3.15 ma che dar un evidente incremento
prestazionale al sistema. Pare quindi ci si debba aspettare a breve
una 0.3.16 di consolidamento che integri queste grosse
modifiche, anche se alcuni stanno dando battaglia in seno
al Team affinch si inauguri il ramo 0.4, proprio a sottolineare
il miglioramento che comporta questa misteriosa modifica.
Noi ovviamente staremo col binocolo puntato, pronti a riportarvi
tutte le notizie del caso! LXP
Roberto Premoli
Linux pro 136

33

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.

Riciclare i bit

na recente visita allEden Project mi ha


spinto a riciclare di pi e a ridurre la mia
carbon footprint, cio le mie emissioni
di anidride carbonica nellatmosfera. Per ora mi
limito ad alcune attivit sporadiche. vero che
riciclo le barzellette che uso durante i miei corsi
di formazione, ma questo dipende dal fatto che
ne conosco solo quattro. Ho ridotto la velocit
del mio tapis roulant. Ho iniziato a radermi
a giorni alterni e a utilizzare i peli rasati per
produrre compost. Ma potrei fare molto di pi.
Sono particolarmente preoccupato dallesaurirsi
dei bit che formano la base fondamentale del
nostro mondo digitale. Pensateci un po: quando
abbiamo finito di usarli semplicemente li buttiamo
via tutti. Nessuno li ricicla. A un certo punto,
quando avremo usato lultimo uno (potrebbe
anche trattarsi dellultimo zero, difficile dirlo),
tutti i computer si bloccheranno. Perci ho deciso
di creare un servizio di riciclaggio dei bit. Potrete
mandare tutti i vostri dati usati ai miei server
che li divideranno in zero e uno e li archivieranno
in due dischi molto, molto grossi. Se siete
preoccupati per la sicurezza vi posso fornire una
piccola app che dispone i bit in ordine casuale
prima della spedizione. Quando poi avrete
bisogno di qualche dato semplicemente potrete
chiedere un numero qualsiasi di zero e di uno e
ve li spedir. Inizialmente si tratter di un servizio
gratuito, ma il mio scopo quello di creare una
forma di dipendenza. Quando poi avr stabilito
un monopolio e i bit inizieranno a scarseggiare
per davvero addebiter una piccola somma
per ogni bit. Alla faccia di Mark Zuckerberg.

Tecniche esoteriche per i sysadmin direttamente


dai recessi pi impenetrabili della sala server

Ricognizione della rete

Scopriamo cosa c l fuori con lo strumento


Open Source meglio documentato al mondo

uardandomi indietro mi sembra davvero


difficile da credere che, in tutte queste
puntate dellAmministreria Nmap sia stato
menzionato solo di passaggio. Beh, almeno finora.
In breve Nmap uno strumento per la ricognizione
della rete. Permette di scoprire tutte le macchine
allinterno di un blocco specificato di indirizzi IP,
di esaminarle per scoprire quali porte sono aperte
e addirittura di prenderne le impronte digitali per
determinare la versione dei servizi che stanno girando
e indovinare il sistema operativo. Informazioni di
questo genere sono molto comode per un attaccante
in cerca di qualche vulnerabilit da sfruttare per
penetrare allinterno del sistema: non c dubbio che
Nmap sia utilizzato dai cosiddetti black hat. per
possibile utilizzarlo anche per moltissime operazioni
da white hat, come ad esempio la verifica del
funzionamento di un firewall e il penetration testing,
cio la simulazione di un attacco dallesterno per
verificare la solidit del sistema. Nmap stato scritto
da Gordon Lyon (noto come Fyodor). Rilasciato
inizialmente nel 1997 tuttora attivamente
sviluppato. Una semplice operazione di scansione
si presenta cos:
$ nmap scanme.nmap.org
Starting Nmap 5.21 ( http://nmap.org ) at 201305-02 16:24 BST
Nmap scan report for scanme.nmap.org
(74.207.244.221)
Host is up (0.17s latency).
Not shown: 998 closed ports

PORT STATE SERVICE


22/tcp open ssh
80/tcp open http
1720/tcp filtered H.323/Q.931
9929/tcp open nping-echo
Nmap done: 1 IP address (1 host up) scanned in
4.83 seconds
Lopzione -A abilita il rilevamento del sistema
operativo e della relativa versione; ad esempio
il comando
# nmap -A -T4 www.linuxformat.com
mi dice, tra le altre cose, che sul sito gira ProFTPD
1.3.1 sulla porta 21, Apache 2.2.8 sulla porta 80,
OpenSSH sulla porta (non standard) 2020
e che probabilmente il sistema operativo Ubuntu.
Da notare che, in generale, si ottengono risultati
migliori se si lancia Nmap da root. Alcune delle
scansioni vengono eseguite creando a mano
le intestazioni TCP e per trafficare a questo livello
occorrono i privilegi di root. Non eseguite scansioni
sulla rete aziendale senza permesso. Potreste
andare incontro a guai seri!

Un tripudio di documentazione
Una delle cose migliori di Nmap la documentazione:
persino leggere la pagina di manuale un piacere
(di quante altre pagine di manuale potete dire
lo stesso?). C poi unapprofondita guida utente

34

LINUX PRO 136

in inglese (http://nmap.org/book/toc.html) piena


di esempi e casi di studio. La versione stampata stata
per un breve periodo il libro pi venduto su Amazon.
Un gran bel risultato!

La riga di comando di *Nmap pu diventare


alquanto complicata: per una soluzione visuale
potete provare Zenmap

Sysadmin

Quanto unico il vostro ID unico?


UUID Il Dottore mostra come sia possibile generare qualcosa che possiamo
garantire essere unico, davvero!

i sono molte situazioni nelle quali dobbiamo garantire


lunicit. Ad esempio nel Regno Unito abbiamo tutti
un diverso numero come membri del National Insurance;
i nostri amici statunitensi invece hanno numeri unici di Social Security.
Anche i numeri dei passaporti sono unici. I libri hanno ciascuno un
ISBN unico. Gli indirizzi IP devono essere unici (ignorando gli spazi
di indirizzi privati) e cos via. Tradizionalmente il meccanismo
per garantire lunicit comporta una qualche forma di autorit
centrale (o di una gerarchia di autorit) che assegna o approva gli
identificativi (pensate a come sono assegnati gli indirizzi IP e i nomi
a dominio). Si tratta di un sistema piuttosto costoso, che implica
tra laltro che la richiesta di un nuovo ID unico richieda minuti, ore,
giorni o addirittura settimane per essere soddisfatta. Per quel che
ne so lidea di generare un identificativo unico senza bisogno di un
registro centrale si manifestata per la prima volta in un sistema
operativo chiamato Domain/OS alla fine degli anni 80 ed stata
definita in maniera pi formale, trasformandosi negli UUID che tutti
conosciamo e amiamo, allinterno del Distributed Computing
Environment della Open Software Foundation allinizio dei 90.
Nel caso non ne abbiate mai visto uno, un UUID un numero
di 128 bit rappresentato come 32 cifre esadecimali, divise in cinque
gruppi di 8-4-4-12 bit separati da trattini. Ecco un esempio:
4ecf3183-096d-4ded-80b0-53c2f96f564f
Trovo laffermazione di unicit universale difficile da giustificare.
Immaginatevi la scena, in un qualche istante nel futuro:
un entusiasta di Linux sta conversando con un piccolo uomo verde
che vive su un pianeta in orbita attorno a Capella B. Guarda, dice
lentusiasta di Linux, indicando lo schermo del suo portatile, noi
usiamo questi UUID per identificare in maniera univoca le partizioni
dei dischi. Sono universalmente unici. Divertente, dice il piccolo
uomo verde li usiamo anche noi!. Poi si china per guardare meglio
e aggrotta le sopracciglia Hmmm, questo mi sembra vagamente
familiare. Consulta il suo database: S, labbiamo gi usato... era su
una vaschetta di salsa di avocado. Guarda con aria di rimprovero
lentusiasta di Linux. Insomma, avresti dovuto controllare....

S, ma come?
Anche se ci limitiamo al pianeta Terra ha ancora senso domandarsi
come possiamo essere sicuri che un UUID sia davvero unico.
Beh, la versione 1 degli UUID veniva generata concatenando
lindirizzo MAC della macchina che lo stava generando con
un timestamp con risoluzione di 100 nanosecondi. Si d il caso
che i 24 bit superiori assegnati dal produttore della scheda di rete
al MAC siano ottenuti dallIEEE: si tratta di quello che viene chiamato
un OUI (Organisationally Unique Identifier) ed un identificativo
univoco dellazienda. Il produttore poi assegna (presumibilmente)
i rimanenti 24 bit inferiori in maniera unica per ciascuna scheda
prodotta. Ignorando leventualit di aver bisogno di generare
pi di un UUID in un intervallo di 100ns, questo sistema garantisce
lunicit. Su Linux possibile generare un UUID versione 1
con il comando:
uuidgen -t
13a1c098-b23d-11e2-8eab-001d095409e5
Date di nuovo il comando e vedrete che i 12 bit pi bassi sono

No!

Haiusato
usato
Hai
160eca3c-082c-45c2-ac95-a3fd3af48949
160eca3c-082c-45c2-ac95-a3fd3af48949
? ?

sempre gli stessi. Questo il mio indirizzo MAC e potete scoprire


a quale organizzazione appartiene lOUI andando sul sito
http://standards.ieee.org/develop/regauth/oui/public.html
(vi risparmio la fatica: 001d09 Dell). Gli UUID versione 4
semplicemente usano valori casuali per 122 dei 128 bit (gli altri
sei bit sono definiti dalla struttura standard di un UUID: leggete
la RFC4122 per i dettagli). possibile ottenere un UUID versione 4
con il seguente comando:
uuidgen -r
aca7197d-1e01-4e2f-b0f0-b3a232409ea9
ed anche possibile ottenerli dal kernel cos:
cat /proc/sys/kernel/random/uuid
d54f567e-f2b4-4d46-94e9-bbcedbe6c199
Lunicit degli UUID versione 4 non pu essere garantita in assoluto,
anche se la pura forza bruta dellaritmetica combinatoria costituisce
un argomento convincente. Per citare Wikipedia, dopo aver
generato due trilioni di UUID (si tratta di circa 300 per ogni persona
sul pianeta) la probabilit di una collisione 0.0000000000004,
che piuttosto bassa. Affinch la probabilit di una singola collisione
salga al 50% ognuno dovrebbe generare 600 milioni di UUID.
Cosa dire invece delluso degli UUID per garantire un nome unico
per le partizioni di un sistema Linux? La parola esagerazione viene
subito alla mente. E rendono del tutto illeggibile /etc/fstab!

Ricordatevi
che anche voi
siete unici. Come
chiunque altro

La sfida letteraria degli UUID


Ho una competizione per voi. Inventate
un UUID valido che possa essere letto
come frase italiana. Ai fini della gara
va bene qualsiasi sequenza di 32 cifre
esadecimali ed possibile applicare
sostituzioni come la cifra 0 per o

e la cifra 1 per l, 5 per s e 7 per t.


Ecco un esempio:
eade55oc-o5af-ade11a5e7aede11a7e1a
Se avete qualcosa di meglio
mi piacerebbe saperlo!

LINUX PRO 136

35

Sysadmin

Guida rapida allo spazio di swap


Spazio di swap Volete una discussione tra amministratori di sistema? Chiedete loro
della memoria virtuale su disco. Quando deve essere grande? Ce n bisogno?

na delle cose che ci si aspetta che facciate quando installate


Linux creare una partizione del disco da usare come spazio
per lo swap. Infatti la maggior parte dei programmi di
installazione vi redarguisce severamente se non lo fate. Esistono per
opinioni diverse sulla sua dimensione e addirittura sul fatto che sia
davvero necessaria. Cominciamo cercando di comprendere a cosa
serve lo spazio di swap. Linux esegue molti processi, ognuno dei quali
reclama della memoria. Aiutato dallhardware dedicato alla gestione
della memoria, il kernel cerca di fornire a ciascun processo uno spazio
di indirizzi della dimensione che gli serve. In realt lo spazio di indirizzi
logici visto dal processo suddiviso in pagine (di solito di 4k su Linux), a
ognuna delle quali viene fatta corrispondere una pagina fisica allinterno
della RAM. Quando il numero totale delle pagine richieste da tutti
i processi in esecuzione supera il numero delle pagine fisiche disponibili,
il kernel ne recupera alcune salvando il loro contenuto sul disco.
La partizione di swap viene usata a questo scopo e lattivit di scrittura
e lettura delle pagine dalla RAM allo spazio di swap e viceversa detto
swapping. Quindi lo spazio di indirizzamento disponibile dato dalla
somma della RAM fisica pi la dimensione dello spazio di swap. Anche
il kernel usa un certo quantitativo di memoria, ma questa non viene
mai salvata su disco. Quanto grande deve essere la partizione di swap?
Non c una risposta semplice a questa domanda. Ai tempi delle prime
macchine che usavano la memoria virtuale paginata (alzi la mano chi
si ricorda dei VAX) la regola empirica era di usare uno spazio di swap
pari a tre volte le dimensioni della RAM (ovviamente allepoca
ci si poteva permettere al massimo 1 MB di RAM). Per oggigiorno
la RAM incredibilmente conveniente (io sono riuscito ad aggiungere
8 GB di memoria al mio server per meno di 50 euro), esiste quindi
la possibilit di avere nella macchina una quantit di RAM tale
da non avere affatto bisogno di una partizione di swap.

Working set
Detto questo occorre notare che una partizione di swap vi consente
di sostenere un carico di lavoro altrimenti impossibile. Supponiamo
per esempio di voler far girare contemporaneamente sei macchine
virtuali, ciascuna con 1 GB di memoria, ma di avere a disposizione solo
4 GB di RAM fisica. Lo swapping funziona bene quando il sistema
riesce a stabilire un working set di pagine (le pagine cui i processi
in esecuzione accedono con una certa regolarit) che pu essere
contenuto nella RAM. In questa situazione il sistema pu anche usare
una buona parte dello spazio di swap, ma c relativamente poco
movimento di pagine tra disco e RAM. Nel mio esempio con le
macchine virtuali lecito aspettarsi un certo ritardo quando si passa
da una macchina allaltra, ma una volta che il working set delle pagine

della nuova VM stato riportato in RAM, le prestazioni dovrebbero


essere buone. Lo swapping non funziona bene quando il working set
troppo grande per la RAM disponibile, perch il sistema si ritrova
a scrivere su disco la pagina A per far posto alla pagina B solo
per scoprire che quasi immediatamente deve spostare nello spazio
di swap la pagina B per far posto alla pagina C (o magari di nuovo
alla pagina A). Questa situazione, quando il sistema passa sempre pi
tempo a spostare pagine dentro e fuori e sempre meno tempo a fare
qualcosa di utile, detto trashing e ha effetti devastanti sulle prestazioni.

Come funziona
Basta con la teoria, passiamo alla pratica. La configurazione
pi comune consiste nel creare una singola partizione di swap
al momento dellinstallazione. Il programma di installazione aggiunger
una riga in /etc/fstab, qualcosa di questo genere:
/dev/sda6 none swap defaults 0 0
Al momento dellavvio della macchina viene lanciato il comando
swapon -a (su Red Hat, per esempio, viene fatto allinterno dello script
etc/rc.sysinit) che va a recuperare tutte le partizioni di swap definite
in /etc/fstab. La maggior parte degli utenti si accontenta di questa
configurazione di default e non ci pensa pi. possibile estendere
lo spazio di swap in modo da usare partizioni addizionali. Supponiamo
ad esempio di avere un secondo disco (sdb) e di aver creato su
di esso la partizione di swap /dev/sdb2. Per prima cosa occorre
inizializzare la partizione con il seguente comando:
# mkswap /dev/sdb2
Bisogna poi dire al kernel di usare la nuova partizione:
# swapon /dev/sdb2
Per rendere permanenti le modifiche (cio per fare in modo che
la nuova partizione di swap sia attivata al momento dellavvio della
macchina) bisogna per aggiungere una riga a fstab:
/dev/sdb2 none swap defaults 0 0
Linux in grado di assegnare una priorit alle partizioni di swap.
Se avete due dischi con velocit simile potete bilanciare tra di essi
il carico di lavoro causato dallo swapping assegnando loro
la medesima priorit. Se per uno dei due pi veloce dellaltro
potete assegnargli una priorit maggiore. Se per esempio preferireste
usare /dev/sdb2 piuttosto che /dev/sda6 per lo swapping potreste
modificare le relative righe di fstab cos:
/dev/sda6 none swap pri=2 0 0
/dev/sdb2 none swap pri=3 0 0

Swapping e paging
La nomenclatura tradizionale fa
distinzione tra il paging (quando singole
pagine sono parcheggiate sul disco)
e swapping (quando un intero processo
viene parcheggiato sul disco). Per quanto

36

LINUX PRO 136

ne so Linux non fa questo genere


di distinzione: in effetti non esegue uno
swap nel senso tradizionale del termine.
Nonostante ci si parla di solito di spazio
di swap e non di spazio di paging.

I programmi di installazione di Linux vi redarguiscono


severamente se non create una partizione di swap. Ignorateli!

Sysadmin

Quanto ne sto usando?


Esistono numerosi programmi che mostrano quanto spazio di swap
state usando. In primo luogo c Vmstat, uno dei pochi a mostrare
lattivit di swap in entrata e quella in uscita verso il disco. C poi top:
$ top -n 1 -b | grep total
Tasks: 212 total, 1 running, 209 sleeping, 0 stopped, 2 zombie
Mem: 4048324k total, 3810436k used, 237888k free, 143032k
buffers
Swap: 8859640k total, 6860k used, 8852780k free, 705668k
cached
ll comando free mostra pi o meno le stesse informazioni:
$ free -m -t
total used free shared buffers cached
Mem:
3953 3744 209
0
141
699
-/+ buffers/cache: 2902 1050
Swap:
8651
6 8645
Total:
12605 3750 8854
Nellesempio qui sopra si vede che solo il 5% della memoria libero.
C da preoccuparsi? No, non necessariamente. Se il kernel nota che
c della memoria libera la requisisce per usarla come spazio di buffer
per la cache del traffico con i filesystem, cosa che accelera laccesso ai
file usati di frequente. Se guardate meglio i numeri noterete qualcosa
di strano. Il sistema ha scritto nello spazio di swap 6 MB di dati anche
se ci sono 209 MB di RAM libera. Perch ha fatto questa scelta?
Tale comportamento pu essere modificato correggendo il parametro
caratterizzato dal delizioso nome di swappiness (un valore compreso
tra 0 e 100), che stabilisce la propensione del kernel a utilizzare lo
spazio di swap anzich reclamare pagine dalla cache. Una swappiness
di 0 dice al kernel di utilizzare lo swap come extrema ratio. Un valore
di 100 incoraggia lutilizzo aggressivo dello spazio di swap. Il valore
di default 60, come potete verificare con il comando

Processo 1

RAM
Una pagina

Spazio
logico
degli
indirizzi
Spazio
fisico
degli
indirizzi

Memory Management Unit


(MMU)

anche possibile usare un file anzich una partizione per lo swap.


Ai corsi ero solito dire alla gente che lo swapping su file era pi lento di
quello diretto su una partizione, ma con i kernel Linux moderni credo
che non sia pi vero. Aggiungere un file per lo swap sicuramente pi
semplice che estendere o ripartizionare il disco fisico e pu essere una
soluzione di breve termine per risolvere un problema di mancanza
di memoria. Ecco come fare: per prima cosa occorre creare il file
e assicurarsi che tutto lo spazio sia allocato. Linux permette a un file
di avere dei buchi al suo interno, ma con i file di swap non funziona
quindi occorre essere sicuri che lintero file sia stato scritto con
un comando di questo genere:
# dd if=/dev/zero of=/ilmiofilediswap bs=1M count=1024
che produce un file di 1 GB pieno di zeri. Poi bisogna preparare il file
per essere usato come area di swap:
# mkswap /ilmiofilediswap
Ora possiamo aggiungere una nuova riga a /etc/fstab:
ilmiofilediswap none swap sw,pri=1 0 0
e possiamo attivare la nuova area di swap:
$ sudo swapon -a
Infine verifichiamo lo spazio di swap a disposizione e quello usato:
$ swapon -s
Filename
Type Size Used Priority
/dev/sda6
partition 7811068 0 2
/ilmiofilediswap file 1048572 0 1
Notate che abbiamo assegnato una priorit ai due spazi di swap
in modo che venga preferibilmente usata la partizione (/dev/sda6)
rispetto al file (/ilmiofilediswap). A proposito, se date unocchiata
al file fstab sul vostro sistema probabile che scopriate
che la partizione di swap definita usando un UUID piuttosto
che un semplice nome di dispositivo.

Spazio
logico
degli
indirizzi

Processo 2

Le pagine
ombreggiate
sono scritte
sul disco

Spazio di swap

$ sysctl vm.swappiness
vm.swappiness = 60
Per modificarne il valore:
$ sudo sysctl -w vm.swappiness=100
vm.swappiness = 100
Per fare in modo che la modifica venga applicata al momento del
riavvio del PC aggiungete la seguente riga al file /etc/sysctl.conf:
vm.swappiness = 100
Lasciatemi per ripetere un consiglio che ho gi dato in passato:
le persone che hanno scelto il valore di default probabilmente
comprendono molto meglio di voi e di me come funzionano le cose.
Modificatelo solo se sapete cosa state facendo e se avete una qualche
maniera oggettiva per misurare i cambiamenti nelle prestazioni causati
dalle vostre modifiche. Infine, per i sistemi desktop, c unaltra ragione
per creare dello spazio per lo swap che non ha niente a che fare
con lo swapping. Se chiedete al sistema di ibernarsi il contenuto della
memoria verr scritto sul disco e poi verr tolta lalimentazione alla
memoria (e a tutto il resto). Per fare questo viene usato lo spazio
di swap. Se volete essere in grado di ibernare il vostro portatile dovrete
allocare una partizione di swap che sia almeno delle stesse dimensioni
della RAM. Quindi, la prossima volta che vi ritroverete in un gruppo
di amministratori di sistema, non sollevate la questione dello spazio
di swap. Non ci sono risposte giuste. E ci sono domande molto
pi importanti da porsi come A chi tocca pagare questo giro?. LXP

A ogni processo
viene data
lillusione
di disporre di uno
spazio di indirizzi
logici contigui,
ma la realt
pi complicata

Un po di storia
UNIX inizi su macchine che non avevano
la memoria virtuale. Cera un trucco per
migliorare le prestazioni chiamato sticky bit,
che faceva parte dei modi di un file. Uno
sticky bit a 1 su di un file eseguibile diceva
a UNIX che si trattava di un file usato spesso,
che doveva, per quanto possibile, essere
mantenuto in memoria dopo aver terminato

lesecuzione. Lavvento della memoria


virtuale ha reso obsoleto lo sticky bit. In Linux
si guadagna ancora da vivere sulle directory,
dove modifica le regole relative a chi pu
cancellare i file contenuti nella directory.
Linux permette di impostare lo sticky bit
anche su file regolari, ma per quel che
ne so loperazione non ha alcun effetto.

LINUX PRO 136

37

Langolo di

Android

News, recensioni e guide sul sistema operativo libero per smartphone


Se hai news da segnalarci o dei commenti scrivici ad angolo_android@linuxpro.it

Il ritorno di Motorola
Il nuovo Moto G combina dotazione al top e prezzo di fascia bassa.
Baster per far risorgere il marchio americano?

distanza di due anni


da quando ha deciso
di lasciare lItalia,
Motorola torna
nel nostro Paese con un nuovo
smartphone, il Moto G.
In questo periodo molte cose
sono cambiate in Motorola,
e quello che stato per anni
il primo produttore di telefonia
cellulare americano stato
acquisito da Google nel 2011
per 12,5 miliardi di dollari.
Ma per vedere i primi effetti
dellacquisizione si dovuto
aspettare il 2013 e la
presentazione del Moto X
che presenta alcuni elementi
decisamente originali come
la possibilit di personalizzare
struttura e componenti interne
e la funzione Ok Google
che permette di risvegliare
lo smartphone dallo standby
e utilizzare i comandi vocali
anche senza premere il pulsante
di accensione. Purtroppo a oggi
non previsto larrivo in Europa
di Moto X; disponibile per
da qualche giorno la versione
economica Moto G, anche
se poi di economico c
solamente il prezzo di 199
euro. La dotazione infatti
di fascia alta visto lottimo
schermo IPS da 4,5 pollici
con risoluzione HD da 1280 x
720 pixel e il processore quad
core Qualcomm Snapdragon
400. Per contenere il prezzo
Motorola ha invece risparmiato
sui materiali che sono di plastica
non proprio leggerissima
(145 grammi) e ha sacrificato
la memoria disponibile che

38

LINUX PRO 136

di soli 8 GB (in gennaio


arriver per Moto G nella
versione da 16 GB a 249 euro).
Inoltre mancano 4G e NFC,
non c lalloggiamento
per schede di memoria e anche
la fotocamera da 5 Megapixel
non brilla particolarmente come
resa delle immagini. Si tratta
per di caratteristiche
non proprio indispensabili
per lutilizzo quotidiano, mentre
non si discute la qualit dello
schermo e le prestazioni,
paragonabili a quelle
di un modello di fascia alta.
Come software troviamo ancora
Android 4.3 Jelly Bean nella
sua versione base, anche
se Motorola garantisce
laggiornamento a KitKat entro
gennaio, e due applicazioni
originali Motorola come Assist
e Migrazione. La prima
semplifica lutilizzo con funzioni
utili come la possibilit
di rendere silenzioso
lo smartphone durante la notte
o le riunioni grazie a una
comprensione intelligente
del calendario. Non ci sono
i comandi vocali presenti
su Moto X, ma comunque
possibile utilizzare quelli
di Google Now, come su tutti
i dispositivi Android. Grazie
a Migrazione potrete invece
trasferire automaticamente
a Moto G contatti, rubrica
e impostazioni da qualsiasi altro
telefono Android. Purtroppo
Migrazione non funziona
con iPhone e i Windows Phone
o BlackBerry. La batteria
da 2.050 mAh paragonabile

a quella del Nexus 4


e dovrebbe consentire
unautonomia pi che
sufficiente per unintera
giornata, ma aspettiamo
di provarlo direttamente
prima di fornire un giudizio
definitivo. La versione
da 8 GB gi disponibile
da qualche giorno nei negozi,
noi per vi consigliamo
di aspettare gennaio quando
per 50 euro in pi sar
possibile acquistare
la versione da 16 GB.
Occorre infatti considerare
che il sistema operativo
occupa pi di 3 GB
di spazio e per questo
la capacit reale
del modello da 8 GB
inferiore ai 5 GB,
un po poco anche
volendo usare al massimo
la cloud di Google.

A caccia di bug

he Android sia
attualmente il sistema
operativo mobile pi
a rischio sicurezza
non certo un mistero
e Google le sta provando
veramente tutte per risolvere
il problema. E cos, dopo
il doppio controllo sul contenuto
del Play Store e lintroduzione
di verifiche anche sulle app
provenienti da siti esterni, ora
Google offre una ricompensa
in denaro a chi segnaler bug
pi o meno gravi. Il programma

si chiama Google
Vulnerability Reward
Program e offre ricompense
variabili dai 100 ai 20.000 $
(73,60-14.720 euro circa)
a seconda della gravit del bug
scoperto. Segnalate bug e buchi
che mettono a rischio
la sicurezza allindirizzo
security-patches@google.
com mentre per avere maggiori
informazioni lindirizzo
http://www.google.com/
about/appsecurity/patchrewards/. LXP

Nexus 5 Langolo di Android

LG Nexus 5
Componenti al top, Android 4.4 KitKat in esclusiva
e prezzo senza paragoni per lultimo Google Phone

ome capita a volte


con i prodotti che
si aspettano per lungo
tempo, anche il Nexus 5
ci ha un po deluso. E non certo
per il prezzo, che rimane di gran
lunga il pi accessibile tra gli
smartphone di fascia alta,
o per la dotazione hardware
che comprende lo schermo
pi definito e il processore
pi veloce attualmente
disponibile. Il fatto che
ci eravamo abituati a trovare
dei particolari che rendevano
gli smartphone Nexus non solo
i pi evoluti tra gli Android,
ma anche i pi particolari.
Cos, per esempio, Nexus 4 poteva
vantare un fantastico (anche
se fragile) retro in vetro, Galaxy
Nexus stato il primo ad avere
il rivoluzionario Android 4.0 Ice
Cream Sandwich e Nexus One,
oltre ad essere il primo Nexus,
si distingueva per il look
assolutamente originale. Nexus 5
invece non offre nessuna vera
innovazione, oltre al fatto
di essere il primo a montare
Android 4.4 KitKat, che rimane
per solo un aggiornamento poco
significativo. Lunica vera novit
per noi italiani stata la possibilit
di acquistarlo direttamente online
dal Play Store fin dal primo
giorno e infatti sono bastate
un paio dore per fare il tutto
esaurito, almeno del modello
nero da 16 GB.

Solido e potente

La prima impressione
che abbiamo ricavato dal nuovo
Nexus stata quella di una buona
maneggevolezza e di un peso
tutto sommato contenuto,
(130 grammi), nonostante
le dimensioni da 5 pollici dello
schermo. Il Nexus 4, pur avendo
un display pi piccolo, pesava 10
grammi in pi, e questo si spiega
con la presenza del vetro anche
sul retro. Le plastiche con cui
costruito Nexus 5 non ci sono
per sembrate particolarmente
curate e pi che al HTC One

ci hanno fatto pensare al Galaxy


S4, che ha per il grande
vantaggio di avere il retro
staccabile. Nexus 5 invece, come
da tradizione Nexus, un pezzo
unico e questo significa che non
ha lalloggiamento per le schede
di memoria e la batteria
non rimovibile, entrambi fattori
che purtroppo non sono
da sottovalutare. Nexus 5 stato
costruito da LG su indicazioni
di Google utilizzando lo stesso
processore quad core Qualcomm
Snapdragon 800 da 2,3 GHz
con 2 GB di RAM presente
sul G2, che attualmente di gran
lunga il pi potente smartphone
disponibile, e non solo in campo
Android. Solo che i benchmark
da noi effettuati, pur risultando
nettamente migliori
del precedente Nexus 4, sono
inferiori a quelli del modello top
di LG. In mancanza di una
spiegazione differente (come
potrebbe essere la scelta
di under-cloccare la CPU
da parte di Google) riteniamo
che la causa possa essere KitKat
ancora non pienamente
compatibile con i benchmark
Antutu o Quadrant Standard.
Quello che certo che a livello
di fluidit Nexus 5 non ha
veramente niente da invidiare
a G2 e anche con molte App
attive contemporaneamente
non abbiamo mai notato alcun
rallentamento. Il modello
che abbiamo provato ha 16 GB
di memoria reale, che per
si riducono a poco pi di 12 GB
effettivamente disponibili.
Per questo motivo se pensate
di archiviare musica e film
vi consigliamo di prendere
in considerazione la possibilit
di investire 50 euro in pi
e acquistare la versione
da 32 GB.

Sempre pi Google

A differenza degli altri


smartphone Android che
utilizzano in misura sempre
maggiore App e interfacce

personalizzate dai produttori,


Nexus 5 offre lesperienza
originale Google arricchita
da tutte le nuove funzioni
presenti in Android 4.4 KitKat,
che gli altri modelli non vedranno
per molti mesi. Le novit rispetto
alla precedente versione
non sono molte ma risultano
comunque interessanti anche
dal punto di vista grafico grazie
allimpiego di trasparenze
nella barra superiore, alla nuova
sistemazione dei widget
e a nuove font pi eleganti.
Peccato che la novit pi
interessante, la possibilit cio
di attivare i comandi vocali
in qualsiasi momento
semplicemente pronunciando
la frase Ok Google Now funzioni
solamente se il sistema
impostato per la lingua inglese.
Le altre novit, come
lintegrazione degli SMS nellApp
di messaggistica Hangouts,
oppure il nuovo tastierino
telefonico che integra le funzioni
T9, sono state rese disponibili
da Google anche per le versioni
precedenti del sistema. Un punto
storicamente debole dei telefoni
Nexus la fotocamera, che nel
Nexus 5 risulta decisamente
migliorata grazie al sensore
da 8 megapixel e al sistema
di stabilizzazione hardware OIS.
I risultati non sono comunque
ancora allaltezza di HTC One,
Xperia Z1 e tantomeno degli
ultimi modelli di Apple e Nokia.
Anche la batteria ha una
capienza inferiore ai device
concorrenti e questo molto

Pur avendo un display pi grande del


predecessore, il nuovo Googlefonino
pesa dieci grammi in meno

grave in quanto non sostituibile


e, con lo schermo e i sensori
sempre attivi, c il rischio
concreto di non arrivare alla fine
di una giornata di lavoro.

Tutto esaurito

Finalmente possibile acquistare


online i Nexus anche dallItalia.
Basta avere un account Google
e collegarsi allindirizzo https://
play.google.com/store. Peccato
che il modello pi economico
da 16 GB sia esaurito
praticamente da quando stato
presentato, mentre per avere
quello da 32 GB serva
un po di tempo. Sempre meglio
comunque dei tempi biblici
necessari fino allanno scorso
per acquistare allestero
un Nexus. LXP

Giudizio
Nexus 5
Produttore: LG
Web: https://play.google.com/store
Prezzo: 349,00

Caratteristiche
Prestazioni
Autonomia
Qualit/prezzo

8.5
8
7
9.5

Lultima generazione
di smartphone curati da Google
si distingue per il prezzo.

Il voto di
Linux Pro

Linux pro 136

39

Recensioni

Tutte le novit in campo software e hardware testate e valutate ogni mese dai nostri laboratori
Se vuoi segnalarci qualche novit scrivi a recensioni@linuxpro.it

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.

40

LINUX PRO 136

QUESTO MESE...
Test >>
PC-BSD 9.2

Un sistema ostico oggi diventato


pag. 41
accessibile. Possibile?

VMware
Workstation 10

Strumenti ancora pi professionali


per il principe indiscusso
pag. 42
della virtualizzazione

VMware Player 6

VMware Workstation 10

Un software gratuito per uso


personale con cui creare nuove
macchine virtuali o usare quelle
di altri prodotti VMware pag. 44

In libreria >>

I volumi del momento pag. 45


Learning Python (5th edition)
Costruire robot con Arduino

Confronto >>

Cinque servizi per sistemare


pag. 46
le vostre collezioni
Data Crow
GCstar
Kexi
LibreOffice Base
Tellico

Data Crow

Da non
perdere >>

Video editing, motori di ricerca


interni, visualizzatori di immagini
e retro game
pag. 52
LiVES
Catfish
pag. 53
Sxiv
pag. 53
Colorful
pag. 54
Choria
pag. 54

LiVES

PC-BSD 9.2 Test

PC-BSD 9.2
BSD, il sistema operativo che suscita terrore nel cuore di molti utenti di Linux
facile da usare. possibile che sia cos?

SD viene spesso
considerato come
il cugino cattivo di Linux.
Il suo nome viene
sussurrato sottovoce e i suoi
utenti sono considerati
programmatori dlite
e super-amministratori
di sistema. Tuttavia, quando ci
siamo collegati al sito di PC-BSD
per scaricare lISO pi recente,
abbiamo scoperto che
sulla schermata principale
comparivano Facebook
e un video di YouTube a base
di gatti tutti da ridere. Niente
di particolarmente astruso,
insomma. Forse BSD, dopotutto,
destinato anche ai comuni
mortali? PC-BSD si propone
come sistema accessibile, una

di avvertimento che ci
comunicava che avevamo meno
di 50 GB di spazio sullhard disk.
Lammonimento sembrava un po
esagerato, dato che linstallazione
occupa solo 7,2 GB;
un messaggio del genere
pu far temere allutente che
linstallazione non andr a buon
fine. Noi labbiamo ignorato e
tutto filato liscio sul nostro hard
disk da 20 GB. Se non fosse per
il logo sul desktop, molti utenti
di Linux non si renderebbero
nemmeno conto che non stanno
usando un sistema operativo della
scuderia del pinguino. La gamma
di applicazioni installate per
impostazione predefinita, per,
un po scarna, considerato
lo scaricamento da 3,4 GB.

PC-BSD si propone
come sistema accessibile,
una sorta di equivalente
BSD di Linux Mint
sorta di equivalente BSD di Linux
Mint. Naturalmente, i vari sistemi
BSD non si possono paragonare
alle distribuzioni Linux perch
non condividono un kernel
comune; bench le funzioni siano
a grandi linee simili, ciascuno dei
progetti principali ha un kernel
proprio. Daltronde, PC-BSD si
pu considerare una distribuzione
di FreeBSD. Linstallazione non
potrebbe essere pi facile: basta
selezionare Desktop o Server
e dare lavvio. Terminata
la procedura, il sistema vi guida
nella creazione di un utente
ed ecco fatto. Forse alcune
popolari distribuzioni Linux
potrebbero imparare un paio
di cose da PC-BSD in materia
di installazioni accessibili. Il setup
crea un desktop KDE ma sono
disponibili anche altri ambienti.
Lunico neo stato un messaggio

Manca una suite Office, lunico


browser Web Konqueror
e per il resto c ben poco
di interessante: dovrete quindi
installare da voi ci che vi
occorre. PC-BSD provvisto
del celebre sistema di gestione
dei pacchetti basato sui ports;
ma non il caso che gli amanti
delle interfacce grafiche
si preoccupino. Infatti c anche
AppCafe, uninterfaccia grafica
per linstallazione di programmi,
tra le migliori che abbiamo mai
visto. Le applicazioni sono solo
1.100 (solo, cio, rispetto alle
quasi 70.000 di Ubuntu Software
Center) ma dovreste trovare
tutti i software necessari per
i principali impieghi. Non manca
qualche sorpresa, come Apache
OpenOffice in luogo del pi
popolare LibreOffice (o al limite
di Calligra Suite, considerata

Laspetto esterno pu ricordare leleganza di KDE (s, una battuta)


ma sotto di esso batte un cuore BSD

la predilezione di questo sistema


operativo per KDE). Come
abbiamo detto, sono disponibili
software per la maggior parte
degli impieghi; la scelta, per,
meno ampia rispetto a quanto
forse siete abituati. comunque
possibile installare i software
Open Source alla vecchia
maniera e la maggior parte dei
software per Linux dovrebbe
risultare compatibile con BSD.

Gestione dei file


Ormai da anni, la principale
differenza tra BSD e Linux
riguarda il modo in cui gestiscono
i filesystem. ZFS di BSD suscita
da tempo linvidia degli
amministratori di sistema
che utilizzano Linux. Questa
versione di PC-BSD provvista
di Ipresnap, che facilita
la procedura di creazione
di istantanee di ZFS, bench
per il momento sia disponibile
solo tramite la riga di comando.
Nella prossima versione dovrebbe
essere disponibile lalternativa
grafica. ZFS ora compatibile
con Linux e anche BTRFS inizia
a essere usato; in altre parole,
il divario tecnico tra i due sistemi
operativi si sta colmando.
Al tempo stesso, per, alcune

versioni di BSD (in particolare


PC-BSD) sono divenute pi
semplici da usare, sfidando Linux
su questo terreno. A meno di
avere una predilezione ideologica
per BSD rispetto a GPL, difficile
trovare un motivo specifico
per provare BSD; noi, per, vi
consigliamo comunque di dargli
unocchiata. E non perch ci sia
chiss quale differenza tecnica
ma solo perch vi offre un punto di
vista diverso su ci che pu essere
un sistema operativo gratuito
di tipo UNIX; oltretutto, piuttosto
facile da installare su un dispositivo
virtuale o su un PC in pi. LXP

Giudizio
PC-BSD 9.2
Sviluppatore: PC-BSD Software
Web: www.pcbsd.org
Licenze: Varie; il nucleo BSD

Caratteristiche
Prestazioni
Facilit duso
Documentazione

9
9
10
8

Senza alcun dubbio


lintroduzione pi agevole
al mondo non sempre
comprensibile di BSD.

Il voto di
Linux Pro

linux pro 136

41

Test VMware Workstation

VMware Workstation 10
Torna il pi potente (ma purtroppo costoso) programma di virtualizzazione per Linux e
Windows, con poche, ma sostanziali, novit: vale la pena comprarlo?

Mware stata senza


dubbio la prima azienda
a intuire le grandi
potenzialit della virtualizzazione,
facendone un business di grandi
dimensioni. Dai vagiti delle prime
release, ai ruggiti dellultima,
ha compiuto molta strada,
sapendo imporre uno standard
de facto nel mondo enterprise
(leggi: server e cloud)
e mantenendo un primato anche
nel mondo consumer, grazie
a prodotti come Workstation
e Player. Il primo destinato
a un pubblico di professionisti,
il secondo a chi si serve della
virtualizzazione per scopi
relativamente pi semplici, come
realizzare un ambiente di test
o di sviluppo separato o, perch
no, di un secondo computer
con Microsoft Windows che non
occupi altro spazio sulla scrivania.

complessa. Trattandosi di un
prodotto finalizzato ai PC,
piuttosto difficile che riusciremo
a sfruttarne tutte le potenzialit,
ma in teoria possiamo configurare
le nostre VM per ospitare fino
a 16 processori e 64 GB di RAM,
in grado di usare dischi di 8 tera
di dimensioni e di collegarsi
a un massimo di 20 reti virtuali,
senza contare la possibilit di usare
controller USB 3.0 e di attivare
una modalit pass-through
per i drive SSD, per sfruttarne
appieno la velocit. Con una
macchina fisica (dora in poi, host)
di elevata potenza, insomma,
si possono eseguire con agilit
diverse macchine virtuali anche
se, ovviamente, chi ha bisogno
di virtualizzare uninfrastruttura
di 4 o pi server sempre accesi
dovrebbe guardare altrove, come
minimo a VMware ESXi e vSphere.

Lhardware virtuale

Macchine virtuali
a tempo determinato

A ogni rilascio di VMware


Workstation, possiamo realizzare
macchine virtuali dalla
configurazione sempre pi

Unaltra novit di rilievo


di VMware Workstation 10
la possibilit di dare una scadenza

VMware Tools

VMware Tools un pacchetto


di driver che va installato sui
sistemi operativi ospitati dalle VM.
Non tutti i SO sono ovviamente

42

LINUX PRO 136

supportati, ma varie versioni


di Windows, Linux e BSD s.
Questi tool attivano le opzioni
di integrazione pi avanzate.

VMware Workstation 10 il software di virtualizzazione


pi completo, ma solo i professionisti apprezzeranno le sue
funzionalit pi avanzate
alle macchine virtuali crittografate,
introdotte per la prima volta nella
scorsa release. Si possono quindi
distruibuire delle VM a tempo,
destinate a diventare inaccessibili
una volta superata una certa data.
Pu tornare particolarmente utile
a chi per esempio deve spesso
rilasciare versioni beta dei propri
prodotti e vuole essere sicuro che,
dopo qualche tempo, nessuno
possa pi usare una versione

obsoleta del suo software.


Una funzione decisata apprezzata
e molto ben implementata.

Pronto per Win 8.1


Se la novit dellanno scorso
fu la possibilit di realizzare
macchine virtuali pronte a ospitare
Windows 8 e 2012, quella
di questanno ovviamente
la compatibilit con Windows 8.1,
che pu essere utilizzato

La schermata iniziale di VMware Workstation 10


estremamente essenziale: presenta solo le funzioni principali

VMware Workstation Test


tranquillamente come guest OS
sfruttando se presenti anche
gli eventuali sensori di cui
provvisto lhost. Questa possibilit,
tuttavia, sembrerebbe indirizzata
soprattutto a chi user la versione
per Windows su un tablet Surface
Pro o similare, mentre il supporto
di Linux pu variare in base
ai modelli e alla distribuzione scelta.
Purtroppo non abbiamo avuto
modo di testare questa
caratteristica di persona,
ma giusto menzionarla.

Qualche intoppo
Linstallazione su Ubuntu 12.X
e Fedora 19 potrebbe dare
qualche grattacapo iniziale.
In particolare, sulla seconda
VMware Workstation si lamentato
per lassenza di GCC (che pu
sempre essere installato
alloccorrenza), mentre un analogo
tentativo su Linux Mint 15 ha dato
esito positivo al primo colpo.
Lunica cosa che occorre ricordarsi
di fare un passaggio a root
con il comando su, e poi un lancio
del pacchetto .bundle tramite il tool
sh. VMware Workstation 10
disponibile in due versioni distinte
per host a 32 e a 64 bit.
Vista la natura del programma,
sarebbe opportuno lutilizzo
di un host a 64 bit al fine
di garantirsi la compatibilit
con qualunque tipo di sistema
operativo guest Windows 2008
R2 e 2012, per esempio, sono
disponibili solo a 64 bit ma per
chi dovesse virtualizzare solo
una macchina con Windows 2000
o XP, o con una vecchia versione
di Linux, 32 bit potrebbero essere
sufficienti. In quei casi, per,
il prodotto VMware Player 6
potrebbe essere maggiormente
adatto, visto che offre bene
o male le stesse caratteristiche
emulatorie a costo zero.

Perch spendere?
Ci che segna un solco invalicabile
fra VMware Player e Workstation
la parte server del prodotto.
VMware Workstation 10 pu
essere considerato una versione
in miniatura di uninfrastruttura
composta da un virtual center
vSphere e da un singolo host ESXi,

in grado per di girare su un


sistema operativo mainstream
e su hardware generico. Usato
a mo di server, VMware
Workstation 10 consente agli altri
PC di una rete locale di controllare
le virtual machine con un browser,
mentre usandolo come client pu
collegarsi a uno o pi server ESXi
e svolgere parte dei compiti
di amministrazione solitamente
gestiti da un client vSphere.
Rimanendo invece nellambito delle
poche VM gestite su un singolo
computer, infine, VMware
Workstation 10 ne consente
una gestione centralizzata per
mezzo di uninterfaccia a schede,
simile a quella di qualsiasi browser
per i siti Web, laddove utilizzando
VMware Player si renderebbe
necessario aprire una finestra
diversa per ciascuna macchina
virtuale, senza alcun genere
di gestione centrale e senza
la possibilit di effettuare
operazioni avanzate come
la clonazione, la crittografia,
la creazione di snapshot
o il trasferimento di virtual machine
da e verso uninfrastruttura
vSphere. Se queste attivit
rientrano nella rosa di quelle
indispensabili, non resta che
mettere mano al portafogli.
In cambio, avremo la certezza
che il prodotto sar solido
e in grado di soddisfare appieno
tutte le aspettative.

Facile da usare
Bench la virtualizzazione non sia
un argomento alla portata di tutti,
VMware Workstation fa il possibile
per metterla a disposizione
del pubblico pi vasto possibile,
cercando di abbattere le difficolt
per mezzo dei wizard
di configurazione e dellottima
documentazione fornita in PDF.
VMware, inoltre, gode di una
community molto ampia
di utilizzatori e di una vastissima
knowledge base, per cui
praticamente impossibile perdersi
qualche informazione. I suoi
prodotti, inoltre, sono aggiornati
piuttosto spesso e Workstation 10
non fa eccezione, tant che
durante i nostri test uscita
la versione 10.0.1 e abbiamo

Unity
La modalit di lavoro Unity
permette di visualizzare
sul desktop dellhost le finestre
del guest. Occorre per installare
i VMware tools e configurare
lo schermo opportunamente
(il guest deve poter seguire
le impostazioni dellhost).

Una vecchia macchina Ubuntu alle prese


con una compilazione software relativamente semplice
potuto basare la nostra recensione
su di essa. La tecnologia solida,
probabilmente la migliore
in circolazione, e ha i suoi buoni
motivi per farsi pagare.
Da segnalare agli amanti dellaudio
la possibilit di attivare una scheda
High Definition Audio da 8 canali
intervenendo con un editor di testi
sul file .vmx di una macchina
virtuale, quando normalmente
viene installata una SB128
stereofonica. Sarebbe stato bello
poterlo fare direttamente dalle
impostazioni delle VM,
ma evidentemente VMware
preferisce riservarsi questa
possibilit per il futuro, mentre
invece tutti gli altri aspetti cari
al desktop sono al loro posto,
compresa laccelerazione 3D
per il software che usa le librerie
grafiche Direct3D (solo shader 3.0
per, quindi librerie DirectX 9.0c).
Possiamo usare il prodotto anche
per il gioco, sebbene le prestazioni

non saranno comunque


paragonabili a quelle di una
macchina da gioco nativa.
Un impiego di questo genere,
tuttavia, sarebbe a dir poco
bizzarro per un prodotto serioso
come questo. LXP
Paolo Besser

Giudizio
Workstation 10
Sviluppatore: VMware
Web: www.vmware.com
Prezzo: 225,00

Caratteristiche
Prestazioni
Facilit duso
Qualit/Prezzo

9
9
8
7.5

Il pi completo programma
di virtualizzazione sulla piazza,
ma solo le sue caratteristiche
pro ne giustificano lacquisto.

Il voto di
Linux Pro

8.5

LINUX PRO 136

43

Test VMware Player

VMware Player 6
Un programma gratuito, per uso personale, con cui creare nuove macchine virtuali
o usare quelle di tutti gli altri prodotti VMware

a qualche tempo,
VMware ha rilasciato
due prodotti per
la virtualizzazione
domestica: Workstation 10
e Player 6. Mentre il primo
riservato ai professionisti,
il secondo una soluzione
ideale per tutti: permette, senza
alcuno sforzo e senza pagare
un centesimo, di eseguire macchine
virtuali create con altri prodotti
VMware, oppure di crearne
di nuove noi stessi, installandovi
sopra il sistema operativo
che preferiamo come se fossero
computer in plastica e silicio.

Meglio risparmiare
Linterfaccia utente di Player 6
basilare: appena avviato, sulla
sinistra, appare lelenco delle
macchine virtuali a disposizione;
sulla destra, invece, troviamo
le opzioni che consentono
di crearne una nuova, aprirne
una gi esistente, collegarsi al sito
di VMware per acquistare
Workstation 10 (ci provano
sempre...) o visualizzare il manuale
in formato elettronico (in Inglese).
Passato un mese dallinstallazione,
nellangolo inferiore destro
comparir anche un avviso che
il periodo di valutazione scaduto
e, di conseguenza, per luso

commerciale sar necessario


registrare la propria copia al costo
di circa 90 euro. Se il nostro utilizzo
del prodotto del tutto privato
ed esula da fini commerciali,
tuttavia, possiamo andare
avanti a usarlo liberamente.
Linserimento di un codice
di licenza attiver alcune funzioni
supplementari e sancir il passaggio
alla versione Plus, in grado di usare
anche le macchine crittografate
con le ultime versioni di VMware
Wokstation o Fusion. Nulla
di veramente indispensabile,
quindi, per chi altrimenti avrebbe
scelto VirtualBox o, addirittura,
si sarebbe accontentato di QEMU.
Rispetto al primo, VMware Player
ha meno opzioni ma offre
una tecnologia di virtualizzazione
pi solida, aggiungendo, rispetto
a QEMU, anche uninterfaccia
pi gradevole e una semplicit
duso infinitamente superiore.

Sessioni uniche
La maggiore differenza rispetto
a VMware Workstation, per chi
non uso addentrarsi negli aspetti
pi professionistici della
virtualizzazione, lorganizzazione
delle virtual machine che,
in VMware Player, di fatto
assente. In ogni finestra
del programma possiamo ospitare

VMware Player 6 consente di realizzare macchine virtuali con qualsiasi


sistema Linux o Windows contemporaneo, anche versione 8.1 o 2012

una singola VM ma, se vogliamo


fare interagire pi computer virtuali
fra di loro, possiamo avviare pi
sessioni del Player. Non avremo
quindi la possibilit di passare
da una VM allaltra per mezzo
del tab-browsing, come invece
avviene con VMware Workstation,
ma in compenso non subiremo
loverhead necessario per garantire
tutte le sue opzioni che
normalmente non usiamo.
Le caratteristiche tecniche delle VM
saranno comunque le stesse,
per cui potremo usare fino a 16
processori, 64 GB di RAM, dischi
virtuali da diversi terabyte, USB 3.0
e cos via. Possiamo gestire
il desktop anche in modalit Unity,
vale a dire mescolando sul nostro
desktop le finestre del sistema
operativo emulato.

Essenziale

Quando creiamo una nuova VM, dobbiamo considerare quanta RAM


sia necessaria al sistema ospitato, e quanta ne abbia a disposizione
quello ospitante

44

Linux pro 136

VMware Player 6 costituisce


la scelta pi naturale per chi non
ha bisogno di un vero ambiente
di virtualizzazione, ma ha la sola
necessit di avviare due o pi
sistemi operativi diversi sul proprio
computer, per gli scopi pi disparati,
contando su una tecnologia solida
e ben collaudata negli anni.
Purtroppo questo comporta anche
limpossibilit di clonare
o di scattare delle istantanee

(snapshot) delle VM prima


di effettuare unoperazione
importante come, per esempio,
linstallazione di un aggiornamento
del sistema operativo o la modifica
di qualche programma essenziale
per il nostro lavoro. Una lacuna
piuttosto antipatica, a cui per
si pu sopperire copiando altrove
le loro cartelle prima di agire.
Chi desidera una maggiore
complessit pu vedere anche
VirtualBox o provare VMware
Workstation liberamente
per un mese, e poi prendere
una decisione. Chi normalmente
usa VMware anche al lavoro, per,
difficilmente far altre scelte. LXP

Giudizio
Player 6.0.1
Sviluppatore: VMware
Web: www.vmware.com
Licenza: gratis per uso personale

Caratteristiche
Prestazioni
Facilit duso
Qualit/Prezzo

7
8.5
10
9.5

La miglior tecnologia di
virtualizzazione a costo zero, ma
senza le funzionalit aggiuntive di
VMware Workstation o VirtualBox.

Il voto di
Linux Pro

8.5

In libreria Test

Learning Python (5th edition)


LXP ha scoperto che lamato C++ ha trovato un degno concorrente

on pi di 1.500 pagine,
questo libro pi grande
del 50% rispetto al noto
The C++ Programming
Language di Bjarne Stroustrup.
Questo gi un bel risultato

e non un confronto campato


per aria. Guido van Rossum,
il pap di Python, ammette
che il C ha influenzato molto
il suo linguaggio. Ma non avrebbe
mai pensato che la sua creatura
potesse trovare una diffusione
cos vasta e quanto grande
sarebbe dovuto essere
un libro su di essa. In tutti
i casi il volume Learning
Python (5th edition)
non solo un libro.
Non si tratta di un testo scritto
per invogliare i non
programmatori a diventarlo,
n per dimostrare alla grande
massa quanto sia facile scrivere
unapplicazione. Bens si tratta
di una guida a tutto ci che
un programmatore deve sapere
per conoscere a fondo e mettere
a frutto Python. Non dovete
essere necessariamente degli
esperti per capire e assimilare

al massimo quanto spiegato,


ma di certo un po di pratica
nellarte della programmazione
obbligatoria. Una parola
che potrebbe descrivere il libro
omnicomprensivo,
ma potrebbe far pensare
a un libro da consultare quando
serve, ma non lo . un volume
dedicato a chi vuole imparare
Python sul serio ed in grado
di trasformare il programmatore
occasionale in un vero
sviluppatore che pu inserire
il Python tra le sue competenze
nel curriculum. Essendo la quinta
edizione, ed essendo basato
su un corso, il testo stato
raffinato a dovere e molte
storture sono state eliminate.
Un aspetto che ci piaciuto
che, parlando di Python 3.x
non si presume pi che
soppianter la versione 2.x,
ma si preferisce descriverli come

un linguaggio di prototipazione
o come una piattaforma stabile
e usabile. Tutti gli esempi forniti
sono mostrati in entrambi
i dialetti del linguaggio, il che
rende il libro ancora pi utile
se volete capire anche i vantaggi
delluna o dellaltra versione.
ben scritto, impegnativo e
omnicomprensivo. LXP

Giudizio
Learning Python
(5th edition)
Autore: Mark Lutz
Editore: OReilly
ISBN: 978-1-4493-5573-9
Pagine 1.540
Prezzo: $ 64,99
Se volete imparare il Python,
il libro da mettere tra i regali delle feste.

Il voto di
Linux Pro

9.5

Costruire un robot con Arduino


Leditor di Linux Pro vuole realizzare un automa che lavori al suo posto

a robotica una scienza


affascinante ma
complessa. Eppure si
possono muovere i primi
passi in questo mondo senza per

forza dover prima prendere due


o tre lauree. Gi in passato
abbiamo recensito libri che
spiegavano come creare
un robot e quando giunto
in redazione questo Costruire
un robot con Arduino di
Tecniche Nuove si subito
riaccesa in noi questa antica
passione. Come si pu
intuire dal titolo del libro,
lautore parte da una scheda
Arduino per dare vita a
un robot a due o quattro
ruote. Ovviamente nel testo,
oltre alle istruzioni per
montare il robot con tutti i suoi
componenti e sensori, trovate
anche il codice degli sketch
da caricare su Arduino per
controllare la macchina, per
bisogna precisare che lautore
bada pi alla parte fisica/
elettronica che non a quella
di programmazione, dando per

scontato che il lettore conosca


gi Arduino e sappia
programmarlo. Questo non vuol
dire che il codice mostrato non
sia in parte commentato, ma
lo spazio dedicato a questo
aspetto limitato. Dal punto
di vista del montaggio, invece,
Margolis fa un lavoro eccellente:
in quasi ogni pagina trovate foto
o schemi che accompagnano
le spiegazioni testuali, cos da far
capire anche ai principianti
le operazioni da fare con sensori,
resistenze, condensatori, motori
e limmancabile saldatore.
Si spiega teoria e pratica in modo
molto chiaro, dalla costruzione
del corpo del robot allaggiunta
dei sensori per il rilevamento
di bordi e linee, e si arriva anche
al controllo remoto tramite
telecomando. Anche se non
si molto pratici con il saldatore,
dopo aver letto questo libro

siamo pronti a scommettere che


quantomeno proverete a crearvi
un robot da soli. Per risolvere
eventuali problemi riscontrati
durante il montaggio, oltre ai tanti
suggerimenti sparsi nel testo,
vi consigliamo di visitare il forum
di supporto di OReilly (leditore
delledizione inglese del libro). LXP

Giudizio
Costruire un robot
con Arduino
Autore: Michael Margolis
Editore: Tecniche Nuove
ISBN: 978-88-481-7874-7
Pagine 258
Prezzo: 25,90, 22,00 (ebook)
Un buon testo se volete apprendere
i principi della robotica in salsa Open
Source. Impegnativo ma soddisfacente.

Il voto di
Linux Pro

Linux pro 136

45

Roundup Office suites

Test Confronto

Ogni mese mettiamo a confronto prodotti


e programmi per farvi scegliere al meglio!

Gestori di collezioni
Avete cos tanti DVD da non sapere pi cosa contengono? Siete sommersi
da un mare di raccolte e avete bisogno di un archivio? Seguiteci in questo
confronto e scoprite cinque programmi che vi aiuteranno a mettere ordine

Modalit del test


Abbiamo deciso di optare per tre
gestori di collezioni e due front-end
generici per database, tutti
con licenza FOSS. Questo per
permettervi di scegliere il tipo
di applicazione che pi si avvicina
alle vostre esigenze, prendendo
in considerazione anche i database,
che sono strumenti organizzativi
per eccellenza. Tutte le soluzioni
proposte, eccetto una, sono
disponibili in formato binario per
Fedora 17 e Mint 15, la distro usata
per il nostro Confronto. Tuttavia non
dovreste avere difficolt a trovarle
anche per la maggior parte delle
altre distribuzioni. Ci siamo divertiti
creando alcune collezioni con ogni
applicazione sia tramite le
impostazioni predefinite, sia
facendo uso delle tante funzioni
personalizzate. Abbiamo controllato
limmissione dei dati da fonti online
e in locale e non ci siamo fatti
mancare lanalisi della versatilit
e la semplicit duso, la compatibilit
con altri programmi e la qualit
della documentazione disponibile.

La nostra
selezione
Data Crow

GCstar
Kexi
LibreOffice
Base
Tellico

46

accogliere qualsiasi cosa possa


essere collezionabile il pallino
di molti. E non deve stupire se alla
fine si finisce per essere davvero
sommersi dalle nostre passioni: libri, DVD,
dischi LP, fumetti, modellini e via dicendo.
Quando si comincia a ragionare per centinaia
e talvolta perfino migliaia, assolutamente
necessario dotarsi di programmi appositi
per mettere ordine. Nel cercare applicazioni
che facessero al caso nostro, abbiamo
scoperto che non ci sono software FOSS

Linux pro 136

Un front-end per db pu essere


una valida soluzione alternativa
ai pi comuni gestori di collezioni
sufficienti a riempire i cinque posti disponibili
nel nostro confronto. O meglio, alcuni come
Griffith, Moll e Stuffkeeper sono ancora
online, ma fermi a versioni cos vecchie
che, per funzionare a dovere sulle moderne
distro, richiederebbero profonde modifiche

al codice sorgente. Alla fine abbiamo


pensato di valutare soluzioni alternative,
come i classici front-end per i database,
che forniscono versatilit e potenza
sufficiente per essere utilizzati con
soddisfazione come gestori di collezioni.

Confronto Test

Flessibilit e personalizzazione
Sono adatti alle vostre esigenze?

on importa quanto un programma


sia completo, c sempre qualche
cosa da personalizzare per renderlo
del tutto adatto alle vostre esigenze. Da
questo punto di vista, Base e Kexi sono i
migliori proprio per la loro natura di database
generici. Dal momento che star poi a voi
gestirli in base alle vostre collezioni, il risultato
finale sar proprio quello di cui avete bisogno.
A differenza di Data Crow, GCstar e Tellico
(dora in pochi chiamati Media Organizer),
Base e Kexi possono sfruttare diversi backend da file e database come HSQL e SQLite
o, a livello di impresa, PostgreSQL e MySQL.
Questo li rende perfetti per essere utilizzati
quando dovete gestire le collezioni insieme
ad altre persone. Andando ancora pi in
profondit, troverete utilissima linterazione
con Calligra e LibreOffice. Infatti, se si rende
necessario aggiornare spesso la raccolta con
altri dati o utilizzarli come fonti per i fogli di
calcolo, perch tenerli al di fuori di software
pensati apposta per questo scopo? Da
sottolineare come Base e Kexi supportino
perfino alcuni linguaggi di scripting. I Media
Organizer, invece, vi mettono a disposizione

una scelta di ambienti gi confezionati per


gestire vari tipi di collezioni: film, libri, video
e musica. Data Crow aggiunge anche le
categorie immagini e software (questultima
presente anche in GCstar). GCstar e Tellico
gestiscono fumetti, monete, francobolli, vini e
videogame. Tellico, infine, predispone perfino
le raccolte di figurine e la gestione delle
bibliografie. GCstar, invece, aggiunge
i giochi da tavolo, serie e programmi TV,
periodici, modellini e carte da collezione.

A modo vostro
I gestori di collezioni consentono di creare
vari schemi di raccolta. Data Crow, ad
esempio, pu essere definito un gestore
di collezioni capace di generare una singola
meta-collezione per software e file
multimediali, ordinabili poi per categoria
e data di rilascio. GCstar, senza un nome
esplicitamente definito per le collezioni
personalizzate, immagazzina tutte le loro
definizioni e impostazioni in un solo file.
Lassegnazione di un nome che definisca
il genere della raccolta, invece, creer
immediatamente un modello personale

Creare una
collezione con
Tellico semplice.
Gli strumenti
a disposizione,
inoltre, sono
potenti e rendono
loperazione
molto divertente

riutilizzabile grazie al template memorizzato in


${XDG_DATA_HOME}/gcstar/GCModels/.
In entrambi i casi possiamo inserire nuovi
campi di diverso genere, come pulsanti,
stringhe di testo (con o senza riepilogo dei
valori immessi in precedenza) e liste. Ogni
campo numerico pu sfruttare i propri range
predefiniti e i valori di incremento. Tellico ha
poi diversi modelli di raccolta disponibili per il
download. Se per volete fare in modo che la
vostra collezione preferita venga supportata
in modo nativo, potete modificare un modello
vuoto con uno predefinito. In effetti, questo
sistema lunico espediente utilizzabile per
far capire a Tellico la natura di una raccolta
personalizzata, e di conseguenza permettervi
di usare le icone standard del programma.

Verdetto
Data Crow
GCstar
Kexi
LibreOffice Base
Tellico
Kexi e Base
hanno il miglior
punteggio, ma
usandoli avrete
da lavorare.

Inserimento dati e ricerche


Laccessibilit fondamentale per tenere aggiornate le raccolte

interfacciandosi allesterno, in questo


specifico contesto rappresentano
la peggiore scelta per la gestione delle
raccolte. Se provate a usare gli strumenti
che scaricano automaticamente i dati
da fonti di terze parti, vi renderete
conto come sia molto meglio utilizzare
limmissione manuale
o tramite script
personalizzati. Tutti e tre
i nostri Media Organizer,
invece, si interfacciano
alla perfezione con siti
Web affidabili come
Amazon, IMDB,
Sourceforge,
MusicBrainz e molti altri.
CGstar consente sia di
interrogare tutti i servizi
Internet contenuti in
un unico file predefinito
La ricerca Web di GCstar minimalista, ma funzionale
(modificabile) sia di

i un programma capace
di recuperare autonomamente
i dati in locale e da Internet,
meglio . Questo aspetto gi di per s
sufficiente a far pendere lago della
bilancia verso i Media Organizer rispetto
ai database. Base e Kexi, infatti, pur

richiedere i dati che servono da un unico


sito (potete cambiare le risorse ogni volta
che volete o, tramite richieste diverse,
alternarvi tra le diverse fonti). Tellico, per la
ricerca online e il recupero di informazioni,
riesce a scaricare dati perfino da PubMed
e da server bibliografici compatibili con lo
standard Z39.50 (www.loc.gov/z3950/
agency). Ovviamente non tutte
le collezioni offrono le stesse scelte.
Per esempio, sempre Tellico non ha
alcuna fonte per recuperare i dati
su uneventuale raccolta di francobolli.
Con Data Crow, invece, per inserire le varie
informazioni sui pezzi che compongono
la vostra collezione, non dovete neppure
mettere le mani sulla tastiera. Questa
applicazione, infatti, in grado di leggere
direttamente i metadati contenuti nei
formati multimediali. Infine, tutti e tre
i Media Organizer sono compatibili con gli
scanner per codici a barre e le webcam.

Verdetto
Data Crow
GCstar
Kexi
LibreOffice Base
Tellico
Kexi e Base
sono piuttosto
scadenti in questo
frangente ed
meglio inserire i
dati manualmente.
Data Crow, invece,
ha buone funzioni.

Linux pro 136

47

Test Confronto

Interfaccia utente
Quale programma offre di pi e nel modo pi semplice?

interfaccia grafica di qualsiasi software


riveste sempre un aspetto importante.
Ancor pi se, come nel nostro caso, parliamo
di gestori per lorganizzazione delle raccolte
collezionabili. Lambiente di lavoro deve essere
semplice, intuitivo, versatile e capace di mettere
subito in primo piano gli strumenti per la ricerca

di informazioni online e in locale. Inoltre dovrebbe


essere possibile controllare la quantit di dati
che si stanno scaricando e far fronte agli eventuali
problemi dovuti alla lentezza del collegamento.
Altri aspetti essenziali, soprattutto se utilizzerete
lo stesso gestore di collezioni su pi computer,
sono le funzioni per linserimento delle raccolte

e la gestione delle impostazioni del programma.


Alcuni, o almeno quelli migliori, permettono poi
di definire i permessi di sola lettura per determinati
archivi. In questo modo, anche se prevedete
laccesso ai dati della vostra collezione da parte
di altre persone o collaboratori, potrete evitare che
vengano modificati senza uno specifico consenso.

Data Crow
Data Crow funziona su qualsiasi sistema in cui sia installato Java 1.6 o versione
superiore (anche come server Web). In realt, questo lunico programma del
confronto che ha bisogno di una seppure breve spiegazione per la procedura
di installazione. Dal sito ufficiale, scaricate il file accessibile dalla voce Data
Crow Other OS Installer. Decomprimete lo ZIP e rendete eseguibile
installer.sh. Questo punter a installer.jar e dar il via al processo.
Linterfaccia grafica pu essere personalizzata ed disponibile in sette lingue.
Potete sfruttare sia lambiente per principianti sia quello per esperti.
Vi consigliamo di prendere confidenza con linterfaccia avanzata in modalit
esperti, in cui potete lasciare attivo il suggerimento del giorno che compare
in una finestra pop-up. Detto questo, anche lambiente per principianti ottimo.
Infine, le funzioni di backup e i servizi Web per il tagging sono perfette.

LibreOffice Base
Lunica interfaccia di Base cui possiamo riferirci quella che creerete voi stessi nel
momento in cui inizierete a usare il programma. Base possiede procedure guidate
per la realizzazione di tabelle, query, maschere e report. Sia il wizard per generare
la struttura sia quello per il design delle tabelle offrono tutto il necessario per
realizzare i moduli di inserimento in uninterfaccia stile drag-and-drop. Anche
se complesso, il modulo di progettazione molto flessibile. Qualunque strumento
utilizziate, prima di iniziare, pianificate nel dettaglio ci che volete fare. Infatti dovrete
considerare cosa conterranno il database e i form, sfruttando le funzioni di Base
che supportano il raggruppamento degli elementi. grazie ad esse se i campi
dellarchivio saranno pi funzionali e veloci. Per evitare problemi, rammentate di
associare i campi dei form alla colonna di riferimento del database corrispondente.

Documentazione

Verdetto
Data Crow

disponibile un valido supporto per lapplicazione?

nche se non sono software


specifici per la gestione delle
collezioni, Base e Kexi mettono
a disposizione documentazione
in gran quantit, ma anche una vasta
comunit di supporto. Se avete unidea
chiara di cosa volete realizzare, basta
porre una domanda online e la
risposta non tarder ad arrivare.
Per quanto riguarda i tre Media
Organizer, hanno tutti manuali
piuttosto completi e in pi qualche

48

Linux pro 136

altra risorsa di supporto. Molto


probabilmente, comunque, non ci sar
bisogno di consultarli, visto che, almeno
per le operazioni pi comuni sono
abbastanza intuitivi. Gli unici casi
particolari, in cui potreste aver bisogno
di un aiuto dalla documentazione
di supporto, riguardano leventuale
ottimizzazione delle ricerche online
o luso di alcune funzioni pi complesse.
Dal punto di vista della manualistica,
tuttavia, GCstar rimane un po indietro

rispetto a Data Crow e Tellico. I testi


di supporto di entrambi sono infatti
pi dettagliati, anche se bisogna chiarire
che il motivo principale di questo divario
risiede nel fatto che i loro manuali
vengono installati in locale. Il pulsante
Guida di GCstar, invece, apre il proprio
wiki online attraverso il browser
predefinito. Una soluzione controversa,
perch se non avete a disposizione una
connessione a Internet, dovrete provare
a risolvere i vostri dubbi da soli.

GCstar
Kexi
LibreOffice Base
Tellico
Base e Kexy
hanno la migliore
documentazione,
ma purtroppo
non specifica
per lambito che
vi interessa, vale
a dire le collezioni.

Confronto Test
GCstar
Linterfaccia di GCstar semplice e intuitiva e non tralascia niente
di importante. Se usate la funzione predefinita per una collezione
di modellini, trovate ben 12 campi per le fotografie scattate a ogni
angolazione, pi unaltra area per le note. Noi abbiamo provato quella
per i libri e siamo rimasti piacevolmente stupiti da come tutte le funzioni
siano raggruppate in modo ordinato e preciso. Anche in CGstar potete
bloccare le raccolte per evitare che qualcuno possa mettervi mano e se
archiviate informazioni su pubblicazioni e film, potete ottenere perfino
suggerimenti su quali leggere o vedere. Ci sono poi un sacco di funzioni
di ricerca configurabili e combinabili tra loro. Se poi un filtro non funziona,
basta controllare le dipendenze nel menu Aiuto.

Kexi
Molto di quanto abbiamo gi detto riguardo a Base, pu essere accomunato
a Kexi. Questa multipiattaforma di progettazione grafica per database (su Mac OS
X necessita di Fink) consente di creare tabelle, query, maschere, report e script
senza mai uscire dal programma. Kexi stato anche definito come lunico
strumento grafico multipiattaforma per limportazione di dati provenienti dai
database Microsoft Access. Essendo parte integrante di Calligra, Kexi pu usarne
gli stessi temi grafici, il supporto di stampa e molte altre caratteristiche tipiche
di tutte le applicazioni KDE. Gli strumenti Property Editor e Project Navigator
(questultimo pu essere sganciato dalla finestra principale e ancorato in qualsiasi
altra parte del desktop) rendono le tante funzioni del database facili da gestire
in contemporanea (nel nostro caso parliamo sempre di collezioni). Come anche
in GCstar, esiste una modalit di blocco, che disabilita tutti i comandi di editing, cos
da evitare la modifica dei dati involontaria o da parte di chi non autorizzato.

Tellico
Tellico il gestore di collezioni ufficiale di KDE. La struttura grafica si basa su una
vista di gruppo e a colonna. Nel primo caso, la raccolta viene mostrata tramite
una struttura ad albero, mentre nel secondo compare solo un elenco degli articoli
presenti nella collezione. Potete raggruppare pi campi indipendenti in uno solo,
cos da sfruttare un punto di vista pi compatto, oppure ordinare le voci in modo
personalizzato. In questultimo caso, per, la procedura non delle pi intuitive.
I filtri di ricerca supportano i comandi tradizionali per raffinare loperazione
cercando solo determinate informazioni, ma possibile utilizzare anche diverse
funzioni avanzate. Basta premere il pulsante Filtro e gestire i criteri tramite
lapposita finestra. Ricordate poi che, se il vostro archivio corredato da parecchie
immagini, queste ultime non devono essere memorizzate nel database principale,
ma in una cartella separata. Tellico, altrimenti, sar molto pi lento.

Un aiuto alla memoria

Verdetto
Data Crow

E se prestate qualcosa agli amici e non lo ricordate?

olto spesso, soprattutto quando


si tratta di libri e DVD, si ha la
necessit di avere unidea chiara
dei prestiti che si fanno ad amici e parenti.
Finite cos per spolpare la vostra
collezione, perch o non ricordate
a chi avete ceduto qualcosa o nessuno
si pi fatto vivo per restituirlo. Base
e Kexi, sotto questo aspetto, possono
esservi daiuto. Basta aggiungere
le colonne a destra e i relativi campi
dei moduli nel database di riferimento.

I tre Media Organizer, invece, hanno un


pannello dedicato alla gestione dei prestiti,
utilissimo per rinfrescarvi la memoria.
Uno dei pi intuitivi quello di GCstar.
Da qui potete importare le liste dei
contatti in formato LDIF o vCard, oppure
lintera rubrica da Claws Mail. Non solo,
ma si possono configurare le email
da inviare in automatico a tutte le persone
cui avete prestato qualcosa, per ricordargli
cos di restituirlo in tempi brevi. Attraverso
KOrganizer, Tellico va anche oltre. Infatti

GCstar

aggiunge in automatico un promemoria


in stile post-it al vostro calendario
predefinito di KDE. Il Loan Administration
di Data Crow, invece, il pi completo,
ma anche quello pi difficile da usare.
Ci sono cataloghi in cui inserire le persone
che devono restituirvi qualcosa con tanto
di tag, categorie, foto, prestiti in sospeso
con relative date di scadenza in formato
iCalendar. In pratica un vero e proprio
archivio in cui potete memorizzare ogni
dato relativo al prestito di qualsiasi cosa.

Kexi
LibreOffice Base
Tellico
Tutti i software,
in qualche modo,
vi aiutano a tenere
in considerazione
i vostri prestiti,
ma GCstar rende
loperazione
davvero semplice.

Linux pro 136

49

Test Confronto

Funzioni per i report


Per stampare resoconti e liste dettagliati come si comportano?

ei buoni report sono essenziali


per dare un senso a un archivio
ben strutturato, ma soprattutto
rendono la vita facile quando volete
stampare le liste degli elementi che
compongono la vostra collezione.
Da questo punto di vista, i Media Organizer
sono pi limitati rispetto a Base e Kexi,
anche se sono senza dubbio pi facili da
usare. In Base i report sono preconfigurati
in documenti di testo, dinamicamente
riempiti con i dati provenienti dal database.
Pertanto necessario perdere pi tempo
per le opzioni di formattazione. Se poi siete

esperti di LibreOffice, niente vieta


di decorare le vostre stampe con grafici
generati da Calc. Potete creare i report
attraverso la procedura guidata per la
creazione dei rapporti o trascinando i vari
campi nel Report Builder. Per visualizzarne
uno o aggiornare il suo contenuto, fate click
sullicona Execute Report nella barra degli
strumenti. Writer aprir il file, mostrando tutti
i dati dalle query che avete inserito. A questo
punto potete anche riordinare i risultati
come preferite con lopzione Sorting and
Grouping. Il Report Design di Kexi ha
la stessa flessibilit di Base quando si tratta

In Data Crow, per aprire il pannello dedicato alla creazione di un report, basta
premere Ctrl+E. La procedura facilissima e basta poco per creare un utile file PDF

di creare le query e raggruppare i risultati,


anche se c meno attenzione per la
formattazione. Il programma, tuttavia,
supporta molti widget, tra cui uno per i grafici
e un altro per linserimento dei codici a barre
corrispondenti al contenuto di qualsiasi
campo desideriate visualizzare in quel
formato. Data Crow consente di creare
report basilari in HTML e PDF, che possono
andar bene per la maggior parte degli usi,
anche se per stamparli dovete aprirli
in un altro programma. Se volete modificare
il layout o la formattazione, non necessario
conoscere XSLT (Extensible Stylesheet
Language Transformations , www.w3.org/
Style/XSLt). Problema che invece si pone
in una certa misura con GCstar e Tellico,
anche se il manager di KDE pu scaricare
modelli aggiuntivi. La procedura di Tellico
per la creazione di un report viene
supervisionata dai template XSLT che
si trovano nel percorso di installazione
e in $KDEHOME/share/apps/tellico/
report-templates. Oltre ai report HTML,
GCstar crea una cartella con le copie delle
immagini corrispondenti, e quindi il codice
HTML che vi punta deve essere distribuito
insieme al report stesso, altrimenti il risultato
non sar certo bello a vedersi. poi possibile
usare JavaScript nel codice HTML
per aggiungere un po di interattivit.

Verdetto
Data Crow
GCstar
Kexi
LibreOffice Base
Tellico
Tutti e tre
i Media Organizer
permettono
di creare report
di base, ma Data
Crow li supera,
includendo grafici
e codici a barre.

Interoperabilit

Riescono a lavorare con altri programmi?

ncora una volta, grazie alle tante


utility disponibili e al supporto
per pi database, Base e Kexi
sono i migliori in questo campo,
ma solo per gli esperti. Limportazione
guidata di Data Crow pu includere
elementi da file CSV o XML, che
vengono recuperati selezionando
il modulo prima di iniziare la procedura.
Loperazione inversa, ovvero
lesportazione guidata, funziona
esattamente allo stesso modo.
Con questi sistemi potete condividere
dati e intere collezioni tra diverse
installazioni di Data Crow. Da notare,
poi, come il formato preferenziale per
queste attivit sia XML. Con GCstar

50

Linux pro 136

riuscite a importare, esportare


e scaricare i dati direttamente da riga
di comando senza avviare linterfaccia
grafica e, volendo, anche da altre
postazioni usando Cron o altri script
di shell. Accanto ai file nativi di GCstar,
utilizzati per impostazione predefinita,
il plug-in di esportazione supporta anche
CSV, HTML, SQL, tar.gz, XML (non
necessariamente per tutti i tipi di raccolte
o in entrambe le direzioni) e i formati
nativi di Tellico, in cui sono inclusi XML
normali o compressi. GCstar fornisce
anche alcuni modelli di importazione ed
esportazione. In generale, qualsiasi cosa
abbia unestensione XML, per Tellico va
bene (i file possono comunque essere

Verdetto
Data Crow
GCstar
La quantit e il tipo di file importabili
in Tellico semplicemente formidabile

Kexi
LibreOffice Base

convertiti in XML tramite fogli di stile XSL)


e quindi pu essere importato nel
programma. Anche se probabilmente non
sar quasi mai necessario, utile sapere
che Tellico supporta un gran numero di
formati, tra cui: CSV, BibTeX, BibTeXML,
RIS, MODS, CDDB e i metadati dei file
audio. Esporta poi in CSV, HTML, BibTeX,
BibTeXML, ONIX e PilotDB.

Tellico
Tellico e GCstar,
almeno per alcuni
tipi di raccolte,
riescono perfino
a leggere
e scrivere
i rispettivi dati.

Confronto Test
Gestori di collezioni

Il verdetto
P

rima ancora di parlare del verdetto,


opportuno fare una premessa onde
evitare possibili diatribe. LibreOffice
Base e OpenOffice Base, anche se
tecnicamente sono due applicazioni diverse,
hanno ancora molti punti in comune e quindi,
nel contesto trattato, possono essere utilizzati
entrambi. Detto questo, Base e Kexi offrono
senza dubbio i migliori report. Usando
uno dei due per creare il vostro gestore
di collezioni multiuso, avrete tutto quello
che serve e in pi la flessibilit di modificarlo
ogni volta che volete per adattarlo alle
vostre esigenze. Se per tutto questo
non richiedesse troppo tempo, e la gestione
delle informazioni scaricate da Internet fosse
pi funzionale, non avremmo difficolt
a decretarli come vincitori. Prima
di proseguire nellanalisi dei Media Organizer,
dobbiamo per specificare che ognuno
dei tre ha funzioni extra non interamente
provate durante il confronto. Nel complesso,
quindi, Tellico e GCstar sono ottimi
programmi, capaci di integrarsi con altre

applicazioni in ambiente Linux (soprattutto


Tellico) e perfino con il programma in Java
Data Crow. Entrambi importano
ed esportano le vostre collezioni
in molti formati, tra cui quelli utilizzati
nativamente dalluno e dallaltro. Data Crow
non facile da usare e necessita di un po
di pratica prima di essere apprezzato. Inoltre
ha perfino troppe funzioni, tante delle quali
finiscono per non essere neppure utilizzate.
Nonostante questo, supporta il tagging, ha
unottima documentazione e non ci ha mai
creato problemi, qualsiasi cosa tentassimo
di fargli fare. Anche se potrebbe essere
sottoposto a una radicale cura dimagrante
per eliminare almeno la met delle sue
caratteristiche, vale davvero ogni minuto
passato a provarlo. Infine, lunico capace

Le funzioni di Data Crow sono


tante, addirittura troppe, ma non
si pu fare a meno di apprezzarle
4

Data Crow

Web: www.datacrow.net Licenza: GPL Versione: 3.12.5

Davvero completo. Un grande programma da usare anche dal browser.

Molto flessibile e ben integrato con KDE e i desktop Linux.

In poche
e semplici mosse
potete lanciare
il Web Server
di Data Crow
e avere cos
a disposizione
la vostra intera
raccolta online

LibreOffice Base

Web: www.libreoffice.org Licenza: LGPL Versione: 4.1

Uneccellente base per un programma, se avete la pazienza di svilupparlo.

Tellico

Web: http://tellico-project.org Licenza: GPL Versione: 2.3.8

di supportare un proprio Web Server che,


se configurato a dovere, vi permette
di accedere ai vostri archivi da remoto
sfruttando un browser (come potete vedere
nellimmagine riportata qui sopra).

Kexi

Web: www.kexi-project.org Licenza: GPL Versione: 2.7.4

Stessi risultati di Base, stesso giudizio.

A voi la parola...

GCstar

Web: www.gcstar.org Licenza: GPL Versione: 1.7.0

Un po meno flessibile di Tellico, ma con un sacco di collezioni predefinite.

Non siete daccordo con le nostre scelte? Avreste usato altri programmi?
Inviate le vostre opinioni su questo Confronto a: recensioni@linuxpro.it

Considerate anche...
Il gestore di collezioni pi funzionale, spesso,
non quello che ha il miglior aspetto, bens
il programma che si interfaccia meglio con Internet
per scaricare i dati relativi alle vostre collezioni.
Un altro aspetto da considerare, la capacit dei
gestori di archivi di lavorare con altri software,

per esempio i player multimediali. Nessuna delle


applicazioni del nostro Confronto punta ad avere
queste funzioni e quindi, sotto questo aspetto,
dovete prepararvi a fornirgli un valido appoggio per
consentirgli di leggere e riprodurre musica e video
(se ci che collezionate). Se poi siete appassionati

di un solo genere collezionabile, probabile che


ci siano gestori FOSS specificatamente dedicati
al vostro campo. Un esempio il progetto Palatina,
rivolto ai collezionisti di libri e pubblicazioni
(http://palatin.as), che stato riscritto da zero
per sostituire il pi vetusto Alexandria. LXP
Linux pro 136

51

i migliori nuovi programmi


open Source del pianeta

Da non perdere
LiVES

Catfish

Sxiv

Colorful

Choria

Programma di video editing

LiVES

Versione: 2.0.6 Web: http://lives.sourceforge.net

iVES un ospite frequente della


nostra rassegna sui programmi da
non perdere. il motivo del nostro
interesse essenzialmente dovuto alla
produttivit dei suoi sviluppatori. in poco
tempo, infatti, sono riusciti a passare dalle
versioni 1.x alla 2.0.x. proprio a ottobre
di questanno stata rilasciata la release
pi recente: la 2.0.6. Tecnicamente
LiVES 2.0.6 stabile, anche se potreste
comunque incappare in qualche piccolo bug.
A livello di dipendenze, questa applicazione
ha bisogno di almeno GTK 3 per far
funzionare a dovere la propria interfaccia,
di ImageMagick per processare le immagini
e di MPlayer per la gestione dei diversi

formati video. Se poi installate altri strumenti


e librerie, come libtheora, allora godrete
perfino di unulteriore flessibilit nei processi
di importazione ed esportazione delle clip.
LiVES permette di scegliere tra una serie
di interfacce: la modalit Clip Edit
che, come spiegato nel box qui sotto,
progettata per operazioni di montaggio
base, come per esempio le attivit
su un unico file, con laggiunta di qualche

Nelle preferenze, potete dire a LiVES quali strumenti


esterni usare per riprodurre e convertire file audio e video.

Con LiVES potete usare


FireWire per importare
le clip dalle videocamere

Linterfaccia del programma


Menu
potete importare ed esportare
le vostre clip e applicare
una larga scelta di effetti.

Anteprima
A sinistra e a destra, vedete
le immagini che appartengono
al primo e allultimo
fotogramma della selezione.

Da provare

Barra degli
strumenti
i pulsanti riportati qui,
vi permettono di riprodurre
la vostra clip o solo
la porzione inclusa
nella selezione.

52

Linux pro 136

taglio, un paio di effetti e la ricodifica


in un altro formato. La modalit Multitrack,
invece, piuttosto complicata, ma si rivela
perfetta quando operate su pi file video
e audio contemporaneamente. Entrambi
gli ambienti sono un po rozzi e avrebbero
bisogno di una maggiore cura. Tuttavia
un aspetto che non infastidisce pi
di tanto, visto che gli strumenti rimangono
tutti a portata di click. potete poi usare
lo standard FireWire per importare clip
da DVD o videocamere e perfino registrare
ci che avviene sul desktop (funzione
utilissima per i video tutorial). inclusa trovate
poi una vasta selezione di filtri, che vanno
dal contrasto standard ai modificatori
di luminosit per laggiunta di pi luce
o per la riduzione del rumore digitale.

Output

Selezioni

Date unocchiata a questa barra.


Troverete una serie di informazioni
utili sui plug-in e gli strumenti esterni.

Fate click e trascinate il cursore


sulla barra per cambiare la parte
selezionata del video.

Dalla versione 1.4.2 in poi i miglioramenti


sono stati moltissimi. oltre ai nuovi effetti,
la maggior parte dei bug che si verificavano
stata risolta. Molti formati che impiegavano
una vita a essere lanciati (come WebM),
adesso si avviano allistante. stato poi
aggiunto il supporto per il plug-in LADSpA
e quindi gran parte del codice ha visto una
seconda giovinezza. Ecco perch, anche
se avete gi provato questo programma
in passato, vi consigliamo di aggiornarlo.

Da non perdere Test


Motore di ricerca interno

Catfish
Versione: 0.8.2 Web: https://launchpad.net/catfish-search

e cercate qualcosa nel vostro disco


fisso usando il terminale, ci sono
due modi di procedere: usare find
o locate. Nel primo caso, si tratta di una
ricerca al volo che, scandagliando le varie
directory, controlla i nomi dei file al loro
interno e segnala quelli che corrispondono
al termine di ricerca. Nel caso di locate,
invece, vengono usati dei database di nomi
preconfezionati, che rendono loperazione
molto pi veloce. Lo svantaggio di questo
sistema, risiede nella necessit da parte
del sistema di aggiornare periodicamente
i database usati da locate, onde evitare
che diventino obsoleti. Catfish un wrapper
grafico che opera utilizzando questi comandi,
ma con alcune funzioni extra. Lo trovate
incluso in Xubuntu, ma dovrebbe funzionare
su qualsiasi distro basata su Python.
Noi lo abbiamo provato su Mint 15 ed
filato tutto liscio. Quando lo si avvia la prima
volta, si presenta con una finestra minimale,

contenente solo il campo ricerca nella parte


superiore e il riquadro dedicato ai risultati
al centro. Basta immettere il nome di
qualsiasi file e aspettare qualche secondo.
Se nel disco fisso esiste una corrispondenza,
Catfish la trova. Fin qui veloce e facile
da usare, ma non certo niente di speciale.
Per, se fate click sullicona in alto a destra
e scegliete Mostra impostazioni avanzate,
ecco che si apre un menu a sinistra
contenente le funzioni avanzate. Ora potete
restringere le ricerche a tipi di file specifici o
trovare solo i documenti modificati di recente
o nellarco di date predeterminate. Laltra
opzione, che trovate sotto il menu Tipo di
file consente di perfezionare la ricerca per

Linterfaccia di Catfish molto funzionale. Basta fare click con


il tasto destro del mouse su un file e scegliere Open per aprirlo

Con Catfish restringete


le ricerche a file specifici
in un batter docchio

una vasta gamma di MIME. Sempre dallicona


che permette di accedere alle impostazioni,
potete impostare delle ricerche complete che,
come ovvio, sono molto pi lente, nonch
raffinare il processo per trovare i file nascosti.
Tramite lo switch da terminale --thumbnails
possiamo ingrandire le icone che compaiono
nei risultati di ricerca. Peccato non ne venga
mostrato il contenuto. In definitiva, Catfish
un ottimo strumento e se volete fuggire dalla
lentezza del motore di ricerca di GNOME e
KDE pu essere davvero la soluzione perfetta.

Visualizzatore di immagini

Sxiv
Versione: 1.1.1 Web: https://github.com/muennich/sxiv

un momento in cui chiunque


rimane affascinato dalla tastiera.
Per chi come noi usa Linux dalla
mattina alla sera, questo innamoramento
comincia con la scoperta del terminale
e con la consapevolezza di riuscire
a lanciare applicazioni e istruzioni
attraverso i comandi testuali, anzich
andando in giro a fare click sulle icone.
Poi ci sono i gestori di finestre keyboarddriven e, naturalmente, Vi(m) ed Emacs,
i famosi editor di testo che richiedono
allutente di imparare una serie di
comandi e combinazioni di tasti. Alla fine,
una volta che vi abituate alla tastiera,
difficile tornare indietro. E se siete alla
ricerca di altre applicazioni che funzionino
a riga di comando, ecco che Sxiv
fa per voi. Non certo uno strumento
rivoluzionario, ma vi permetter di non
togliere le mani dalla tastiera neppure
quando volete richiamare unimmagine.

Iniziate aprendo il terminale e scrivendo:


sxiv percorso/*.jpg
Ecco che a questo punto si apriranno
tutti i file JPEG nella cartella percorso.
anche possibile visualizzare una barra
di stato nella parte inferiore, contenente
il nome del file, la percentuale di zoom
e il numero dellimmagine corrente
allinterno della lista (per esempio 1/6).
Utilizzate i tasti N e P per muovervi
tra le immagini precedenti e successive,
quindi, per rimuoverne una, premete D.
Mediante i tasti < e > ruotate la visuale,
mentre con + e - aumentate o diminuite
lo zoom. Quando visualizzate una serie
di immagini, premendo Invio passate alla

Con Sxiv le immagini memorizzate in un dato percorso si


aprono con un semplice comando. Facile, veloce e senza fronzoli

Dopo essersi affezionati


alla tastiera, difficile
tornare indietro

modalit miniature. Ci sono comunque


un sacco di altre operazioni che potete
compiere, tutte descritte nelle pagine
del manuale, che richiamate con
il comando man sxiv. In fin dei conti,
Sxiv un programma che non nasconde
alcuna difficolt, e che dimostra quanto
sia molto pi fluido e veloce lavorare
senza coinvolgere il mouse. Quindi,
se siete costantemente impegnati
a scrivere comandi nel terminale
e ogni tanto volete richiamare qualche
immagine senza usare lonnipresente
roditore, Sxiv lapplicazione giusta.
Linux pro 136

53

Test Da non perdere


Giochi Applicazioni per il tempo libero
Retro game

Colorful
Versione: 1.1 Web: http://svgames.pl/en/down

a versione originale di questo gioco


stata scritta in appena 48 ore
in una competizione online rivolta
ai programmatori. Il tema era tu sei
il cattivo e ha richiesto ai partecipanti
di inventare trame particolarmente insolite.
Lo sviluppatore di Colorful si superato,
inventandosi unambientazione davvero
strana: il personaggio principale un
ragazzo innamorato di una ragazza a cui
morta la madre, e visto che lei caduta
in depressione, il fidanzato va in cerca
di oggetti colorati per rallegrarla. Il tutto
si riduce in un eterno su e gi, avanti
e indietro in un continuo esplorare le varie
stanze, sparando contro i nemici che
di volta in volta si avvicinano. I comandi
sono molto semplici e prevedono luso
delle frecce per muoversi, del tasto Z
per sparare a sinistra e X a destra. Il gioco

scritto in Pascal, ma se estraete il file


binario, basta copiare libbass.so allinterno
di /usr/local/lib ed eseguire ./Colorful.
Il codice sorgente, come detto, in Pascal,
ma compreso in un altro file compresso.
Stranamente, nonostante la licenza sia Open
Source, lo sviluppatore chiede di trattare
con lui qualsiasi modifica prima di rilasciare
versioni derivate. Il gioco comunque
semplice e divertente. Durante lesplorazione
verrete ostacolati da piccoli mostri e porte
elettriche. Disponete di un indicatore
di salute capace di assorbire un paio di colpi,
ma se il personaggio muore, sarete costretti

Dovete andare
su e gi, a destra
e a sinistra
e uccidere i nemici.
Semplicissimo, no?

In Colorful impersonate
un ragazzo che deve
trovare oggetti colorati

a ricominciare da capo. E quando


trovate qualche cosa di colorato,
dovrete portarlo alla vostra ragazza
che vi aspetta nella stanza principale.
In definitiva, Colorful non certo
un gioco allultimo grido, ma pur
sempre fluido e veloce. La grafica,
seppure molto spartana, rende bene
lazione e permette di mirare con
precisione contro i nemici, evitando
di proporci sfondi troppo colorati che
potrebbero nascondere le traiettorie.

Retro game

Choria
Versione: 0.4.1Web: http://code.google.com/p/choria/

e siamo dei tipi un po particolari,


potremmo pensare che un gioco
di ruolo, per essere divertente,
dovrebbe lasciarci ore e ore a girovagare,
macinando punti esperienza facendo
pi o meno sempre le stesse cose.
Potr sembrare strano, ma parecchi
amanti degli RPG in realt non amano
concentrarsi molto su aspetti strategicotattici, preferendo invece accumulare
risorse e uccidere qualche mostro.
Ecco, Choria proprio questo:
una sequenza di compiti che ci faranno
macinare risorse. Il primo e forse anche
quello pi complicato esula per dal
gioco. Dovrete infatti iniziare compilando
il codice. Vi consigliamo pertanto di dare
unocchiata approfondita al file README,
dov spiegata nel dettaglio la procedura.
Lunica cosa che non ci spieghiamo

54

Linux pro 136

come Choria, che ha una grafica 2D


del tutto insignificante, necessiti del motore
3D Irrlicht 1.8. Detto questo, una volta
installate le dipendenze, inizierete a giocare.
Iniziate in una classica citt dove ci sono
alcuni negozi in cui potete scambiare
oggetti. Vagando in giro, troverete vari
nemici a cui dovrete fare la pelle per
ricevere in cambio oro e punti esperienza.
Quando ottenete abbastanza punti, passate
al livello successivo e potrete aggiungere
una nuova abilit al vostro personaggio.
Ora, vi starete sicuramente chiedendo
perch stiamo parlando di un gioco

La qualit audio pessima e anche la grafica


non un granch, ma il gioco comunque divertente

Per progredire nel


gioco in poco tempo,
basta esplorare

del genere se lo giudichiamo cos


mediocre. E infatti non cos, perch
Choria pu essere divertente per
passare qualche ora. Acquisire i primi
livelli facilissimo e perfino veloce. Basta
esplorare. Se si muore, anche se tornate
al punto di partenza, i punti esperienza
vengono mantenuti. E se vi annoiate,
avete a disposizione un editor di mappe
per creare nuove ambientazioni
e perfino una modalit multiplayer. 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 tutorial@linuxpro.it

TUTORIAL
FPM

Un programma semplice e pratico


per impacchettare le vostre creazioni
in formato Deb e RPM
pag. 56

Juju

Lo strumento di gestione dei servizi cloud


che funziona a charm
pag. 60

ZFS

Create array RAID, salvate snapshot


e ripristinateli con questo filesystem
straordinariamente flessibile
pag. 66

Raspberry Pi

Un tutorial passo passo su come installare


il sistema operativo Raspian con Linux,
avviarlo e come risolvere problemi
in modo rapido ed efficiente
pag. 70

persino troppe informazioni. Ecco come ricevere


via mail solamente i messaggi critici
che vi interessano davvero
pag. 74

Hacking

Gli strumenti di monitoraggio e logging sono


estremamente utili ma tendono a fornire

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

Go

C++11

Haskell

Lo staff di Linux Pro vi insegner a utilizzare


SQL e un database relazionale per capire
come strutturare i dati
pag. 76
Consigli su questo interessante linguaggio
di programmazione: puntatori, puntatori smart
e funzioni membro
pag. 78

Una guida rapida su questo linguaggio


perfetto per script che richiedono un
rapido accesso alla memoria pag. 82
Alla scoperta di questo linguaggio compilato
funzionale e divertente che vi aprir una nuova
prospettiva di programmazione pag. 86

LINUX PRO 136

55

TutorialGeneratore
Xxxx
di package Scoprite il metodo

pi semplice per produrre Deb e RPM

Creare pacchetti con FPM


Insieme allo staff di Linux Pro che vi guider alla scoperta di FPM, imparerete la via
pi semplice e indolore per realizzare i vostri pacchetti in formato Deb e RPM

N
intermedio

elle situazioni in cui funziona, la gestione dei pacchetti


di Linux davvero meravigliosa. Le dipendenze
si risolvono automaticamente, potete installare
e rimuovere qualsiasi applicazione con pochi e semplici comandi
e capire senza difficolt quali file appartengono a determinate
fonti. Purtroppo, per, il mondo non sempre rose e fiori
e talvolta anche la gestione dei pacchetti pu dare grattacapi.
Quante volte vi sarete trovati faccia a faccia con programmi

spezzettati in una miriade di parti, dove il solo venirne a capo


pu essere causa di sonori mal di testa. E ancora, vi sarete
sicuramente cimentati in qualche installazione allultimo grido
per tentare di far funzionare un vecchio pacchetto su una nuova
distro. Certo, rispetto a Windows, dove ci sono mille programmi
dinstallazione che il pi delle volte finiscono per imbrattare
il registro con ogni sorta di chiavi, la gestione dei pacchetti
di Linux, pur con tutti i suoi limiti, rimane sempre unoasi felice.
Ora, tutti noi apprezziamo il lavoro svolto dagli sviluppatori
per pacchettizzare i propri software, e se almeno una volta
avete provato lebrezza di creare un file Deb o RPM da soli,
non sarebbe inusuale se foste scappati urlando dopo i primi
tentativi. Infatti non certo un processo semplice e anche
quando avete organizzato tutto per bene, di solito ci vuole
ugualmente parecchio tempo. FPM (http://github.com/
jordansissel/fpm) mira a risolvere proprio questi problemi.
Il suo principale fondamento non lascia adito a dubbi e se FPM
non vi aiuta a creare facilmente i vostri pacchetti, significa
che FPM ha un bug. Perfetto! A questo punto, per, potreste
anche domandarvi per quale motivo dovreste cimentarvi
nellarte della creazione di un package.
Siete dei programmatori e volete distribuire online qualcosa
di molto pi semplice da installare rispetto al tradizionale
codice sorgente.
Siete Admin, avete realizzato diverse versioni personalizzate
di alcuni software e volete esportarle facilmente anche
su altre piattaforme.
Siete semplicemente curiosi di sapere come lavorano
i pacchetti, volete aumentare le vostre credenziali da geek
o semplicemente trovare un argomento con cui mettervi
in mostra al prossimo LUG.
Qualunque sia il motivo che vi spinge ad approfondire questo
argomento, continuate a leggere. Scoprirete come la creazione
e la modifica dei pacchetti molto pi facile di quanto credete.

I primi passi con FPM

In questa schermata potete vedere come Dateutils non sia stato installato a livello
di sistema, bens in una directory temporanea ( /tmp/directorypacchetto)

56

Linux pro 136

FPM scritto in Ruby e quindi, prima di tutto, avrete bisogno


di recuperare lultima versione di questo linguaggio, pi i vari file
di sviluppo. In X/K/Ubuntu 13.04 semplice come scrivere
il comando che segue:
sudo apt-get install ruby1.9.1 ruby1.9.1-dev
Quasi tutte le principali distro hanno Ruby nei propri repository,
quindi non avrete problemi a trovarlo nel vostro gestore
pacchetti. FPM disponibile come Gem - ovvero un pacchetto
Ruby - e per installarlo sufficiente scrivere
sudo gem install fpm
Vedrete quindi sfrecciare una serie di comandi con cui
RubyBem recupera e ricostruisce le varie dipendenze. Una volta
terminato il processo, siete pronti per usare FPM. Ora, per
compiere il proprio dovere, FPM ha bisogno di un gruppo di file
da racchiudere in un pacchetto. Non ci sono preferenze sulla
natura stessa dei file, anche perch, dopotutto, i pacchetti
possono contenere qualsiasi cosa, dagli eseguibili alle immagini.

FPM Tutorial
FPM, quindi, non chiede alcuna specifica. Quello di cui invece
ha bisogno, la posizione in cui sono collocati i file
con unappropriata struttura della directory. Supponete adesso
di trovarvi nel secondo scenario che abbiamo indicato nel
paragrafo precedente: avete creato una versione personalizzata
di un programma e volete inserirlo in un pacchetto. In questo
caso ci doteremo di un programma facile da utilizzare,
come Dateutils (www.fresse.org/dateutils).
Scaricate dateutils-0.2.6.tar.xz ed estraetelo con
tar xfv dateutils-0.2.6.tar.xz
A questo punto potete iniziare a personalizzare quello
che volete, ma per adesso evitate questo passaggio, andate
direttamente nella directory del programma e iniziate
la compilazione. Ricordate che i pacchetti binari, di solito,
si installano in /usr anzich in /usr/local/. Questa precisazione
fa comunque riferimento a una procedura convenzionale
e non necessariamente importante. Bene, iniziate usando
lopzione --prefix= per configurare lo script:
cd dateutils-0.2.6/
./configure --prefix=/usr
make
Nella fase successiva, di solito si userebbe un comando
di installazione come sudo make install. Tuttavia, in questo
momento, non abbiamo intenzione di spargere tutti
i file allinterno del filesystem, quanto piuttosto disporli
in una directory separata in cui FPM pu facilmente recuperarli
per inserirli in un pacchetto. Ecco come dovete procedere:
mkdir /tmp/directorypacchetto
make install DESTDIR=/tmp/directorypacchetto
Se date unocchiata in /tmp/directorypacchetto, noterete
come al suo interno siano stati spostati tutti i file necessari
allinstallazione di Dateutils. DESTDIR deve sempre essere
applicato con i programmi che seguono le tradizionali procedure
di ./configure, make e make install. Con altri sistemi
di compilazione infatti necessario controllare
la documentazione e capire come installare i vari file in una
directory temporanea.

Creare un pacchetto Deb


Adesso entriamo nel vivo del tutorial, usando FPM per inserire
questa directory allinterno di un pacchetto. Il comando di cui
avete bisogno :
fpm -s dir -t deb -n dateutils -v 0.2.6 -C /tmp/directorypacchetto/ .
Bene, analizziamo quindi questa istruzione punto per punto.
Il primo comando, -s, istruisce FPM su ci che volete utilizzare
come risorsa per il pacchetto. In questo caso si tratta di una
directory. FPM, infatti e come vedremo in seguito, pu usare
anche altre fonti. Di seguito, il comando -t descrive il tipo
di pacchetto che volete creare (nel nostro caso si tratta di un
Deb, ma si pu usare anche -t rpm per creare un RPM,
fornendo quindi il relativo software installato. Per approfondire,
date unocchiata al box a pagina 52 Generare RPM).
Il comando -n evidenzia il nome del pacchetto, mentre -v
specifica la versione. Infine, il comando -C indica a FPM
di cambiare directory prima di cominciare la ricerca e il .
lo informa di dover partire dalla base della directory stessa
su cui lo avete indirizzato. Una volta completata la procedura,
vedrete comparire questa istruzione:
Created deb package {:path=>dateutils_0.2.6_i386.deb}
Date uno sguardo ai dettagli del pacchetto:
dpkg --info dateutils_0.2.6_i386.deb
Vedrete che FPM ha riempito molti dei campi di descrizione

Ecco il nostro
pacchetto
da poco generato
in tutto il suo
splendore. Alcuni
campi informativi
hanno bisogno
di maggiori
dettagli

del pacchetto automaticamente, usando per esempio il nome


con cui avete eseguito il login e lhostname del sistema per
riempire i campi Vendor e Maintainer. Altri, invece, hanno
un testo generico, come per esempio Homepage e Description.
Fra un attimo vedrete come personalizzare anche queste voci
con le opzioni accessorie di FPM, ma per ora ci limiteremo
a installare il pacchetto per controllare che tutto funzioni
a regola darte:
sudo dpkg -i dateutils_0.2.6_i386.deb
Usate poi uno dei comandi contenuti nel pacchetto,
per esempio ddiff, cos da controllare che tutto sia in ordine.
Ecco fatto, stato un gran successo! Se avete provato almeno
una volta a creare un pacchetto Deb in modo tradizionale,
probabilmente starete facendo i salti di gioia per la semplicit
con cui loperazione andata a buon fine. E siamo solo
allinizio... Come abbiamo gi anticipato, durante la fase
di creazione possibile aggiungere informazioni supplementari
con cui perfezionare il risultato finale. Questo passaggio non
influisce sulle funzionalit del pacchetto, ma se lo state creando
per altre persone, pu essere utile dargli un aspetto pi
professionale. Per prima cosa aggiungete una descrizione
testuale con il flag --description: utilizzate le virgolette singole
per specificare il testo, che consente anche di inserire i caratteri
su una nuova linea. Una buona descrizione non mai troppo
lunga o dispersiva, bens semplice e concisa. In definitiva, deve
spiegare bene lo scopo principale del programma, senza
perdersi in inutili voli pindarici.

Personalizzare i risultati
Adesso potete usare --url per aggiungere lindirizzo alla pagina
Web del programma. poi una buona idea usare --license
(se necessario, inserite pi parole nelle virgolette singole), cos
che gli utenti sappiano in quale modo possono ridistribuire
il pacchetto, aggiungendo poi --vendor e --maintainer
per fornire un contatto cui rivolgersi in caso di bisogno.
Le opzioni --before-install, --after-install, --before-remove
e --after-remove sono estremamente utili. Con esse siete
in grado di fornire script che possono avviarsi prima o dopo
i processi di (dis)installazione. Molti pacchetti, prima
di posizionare i file, fanno infatti uso di funzioni automatizzate
per eseguire le operazioni di configurazione iniziale. E, allo
stesso modo, usano altri script dopo la rimozione del pacchetto,
magari per ripulire il sistema dai file temporanei creati durante
loperazione. Per vedere come lavorano, create un file di testo
chiamato postinstallazione in /tmp con i seguenti campi:
Linux pro 136

57

Tutorial FPM
trucchi per lindipendenza delle distro
Costruire un pacchetto che funzioni su pi distro non unimpresa
da poco. Alcuni hanno provato a realizzare un formato neutrale, come
per esempio loramai defunta Autopackage, ma nessuno mai riuscito
fino in fondo nellintento. Eppure ci sono alcune cose che potete fare.
in primo luogo, cercare di realizzare il pacchetto usando una versione
leggermente pi vecchia della vostra distro. Se possibile o meno
dipende dalle dipendenze del programma, ma molto meglio usare
librerie un po pi vetuste. Se la vostra distro ha libfoo 3.4, potete
creare un pacchetto per una distribuzione precedente che sfrutta
libfoo 3.1. in questo modo potr lavorare su un pi ampio spettro
di distribuzioni con diverse varianti sulla versione di libfoo
(per esempio una spin-off di una distro che ha libfoo 3.0).
in generale, le librerie open source prendono la questione della
compatibilit molto sul serio, quindi non dovreste avere grossi

#!/bin/sh
ls --color
Rendetelo eseguibile (chmod +x /tmp/postinstallazione)
e ricreate di nuovo il pacchetto, usando lopzione --after-install
utilizzando i seguenti comandi:
fpm -s dir -t deb -n dateutils -v 0.2.6 --after-install /tmp/
postinstallazione -C /tmp/directorypacchetto/ .
Quando installerete di nuovo il pacchetto, vedrete loutput
di ls --color dopo la riga Configurazione di dateutils (0.2.6).
Questo sistema si rivela estremamente versatile, in quanto
potrete stampare i messaggi durante le operazioni
di installazione o fare allutente alcune domande. Basta
solo realizzare qualche script di shell.

Conflitti e dipendenze
Alcuni pacchetti non possono essere installati se un altro file dello
stesso tipo gi presente nel sistema. Di solito non una cosa
molto comune, tuttavia non impossibile. Questo comportamento,
di norma, evita che pi pacchetti con le stesse funzioni
si scontrino tra loro allinterno della stessa posizione nel
filesystem. Per simulare una cosa del genere, provate a creare
il pacchetto con listanza --conflicts xterm e installatelo di nuovo
(comparir quindi un errore che informa dellimpossibilit
di installare il pacchetto perch Xterm gi presente
nel sistema, ovviamente a patto che abbiate precedentemente
installato Xterm). ora, mentre il nostro Dateutils necessita solo
della libreria C standard, la maggior parte dei programmi, per
funzionare a dovere, avr bisogno di librerie e pacchetti diversi.
E s, qui stiamo giusto parlando di dipendenze e non c
assolutamente bisogno di buttare la rivista per terra e scappare

problemi. nei vostri script post installazione, cercate di usare i tool


che sono disponibili in ogni distro, anzich programmi specifici
per singole distribuzioni. Se create un pacchetto in openSuSE e avete
bisogno di lanciare alcune procedure di configurazione con vari script
dopo la fase dinstallazione, potreste essere tentati di richiamare
il modulo Yast, salvo poi accorgervi che con Fedora il pacchetto sar
inutilizzabile. Date inoltre unocchiata al Linux Standards Base
e al Filesystem Hierarchy Standard (www.linuxfoundation.org/
collaborate/workgroups/lsb). Questi progetti, infatti, si ripropongono
di uniformare i set di strumenti comuni, le librerie e la struttura delle
directory tra le varie distro. Molte distribuzioni includono poi uno script
lsb_release, utile per ottenere informazioni sulla versione. E quindi
si potrebbe usare proprio lsb-release-a allinterno di uno script,
per scoprire quale distro e quale relativa versione sono state usate.

urlando, perch FPM riesce a gestirle senza alcun problema.


Prima di tutto avrete bisogno di scoprire quali librerie (e versioni)
sono richieste dallapplicazione per cui volete creare il pacchetto.
Se la documentazione del software ben fatta, non avrete
difficolt a reperire tutte le informazioni consultando i file
Readme e Install. Se cos non fosse, ci sono comunque
dei trucchi piuttosto funzionali che vi aiutano. Lanciando ldd
con il file binario principale del programma dopo la compilazione,
vedrete comparire lelenco dettagliato di tutti i file utilizzati dalla
libreria. A questo punto, con i tradizionali strumenti di packaging,
potete scoprire lappartenenza di un file alla rispettiva libreria.
Diciamo quindi che Dateutils necessita perlomeno della libreria C
versione 2.17. Ecco quindi come potete specificare questa
dipendenza durante la fase di realizzazione del pacchetto.
Scriviamo i seguenti comandi:
fpm -s dir -t deb -n dateutils -v 0.2.6 -d libc6 (>= 2.17)
-C /tmp/directorypacchetto/ .
La cosa pi importante da sottolineare qui, la parte relativa
allistruzione >=, che significa maggiore o uguale di. in questo
modo, il pacchetto di Dateutils non verr installato a meno
che nel sistema non sia presente la libreria C versione 2.17
o successive. nel caso in cui voleste modificare questo parametro,
magari aggiungendo un numero di versione particolarmente alto,
come per esempio 9.99, ricostruendo il pacchetto e provando
a installarlo di nuovo, vedrete comparire il seguente messaggio:
dpkg: problemi con le dipendenze impediscono la configurazione
di dateutils:
dateutils dipende da libc6 (>= 9.99); comunque:
La versione di libc6:i386 nel sistema 2.17-0ubuntu5.
possibile specificare dipendenze multiple con una serie di flag

Generare RPM
Come gi accennato, per creare un RPM basta aggiungere il comando
-t rpm a FPM. Dovrebbe quindi funzionare senza alcun intoppo sui
sistemi basati su RPM, ma se state operando da unaltra distribuzione
avete bisogno di qualche strumento aggiuntivo. nelle distro basate
su ubuntu, potete servirvi di sudo apt-get install rpm, che vi fornisce
il programma rpmbuild di cui FPM ha bisogno. Poi, lanciando -t rpm
insieme ai comandi cui abbiamo accennato in precedenza, realizzerete
un pacchetto chiamato dateutils-0.2.6-1.i686.rpm. importante

58

LinuX PRo 136

ricordare che ci sono alcune opzioni di FPM che si applicano solo agli
RPM. Per conoscerle, basta eseguire fpm --help e dare unocchiata
alle righe che contengono rpm only. Particolare attenzione, invece,
bene porla quando realizzate RPM in sistemi basati su Deb.
nella maggior parte dei casi non dovreste andare incontro a problemi,
ma se state realizzando unapplicazione che prevede una larga
distribuzione online, prima di aprire le porte a tutti, vale la pena
di provare il pacchetto su una distro basata su RPM.

FPM Tutorial
-d seguiti dal nome dei pacchetti e dalle rispettive versioni, cos
come illustrato precedentemente nel codice. Se il programma
di cui volete creare il pacchetto ha un ampio raggio
di dipendenze, controllate il gestore pacchetti della vostra distro,
per vedere cos se fosse presente un meta-pacchetto capace
di coprire tutte le richieste. Se per esempio siete impegnati nella
creazione di un pacchetto per unapplicazione GnoME, invece
di specificare sfilze interminabili di dipendenze per i vari
componenti, potete semplicemente configurare il vostro
pacchetto come dipendente da gnome, in modo da fargli
racimolare da solo tutte le principali dipendenze di Gnu network
object Model Environment.

opzioni avanzate
Fino a ora, in questo tutorial abbiamo utilizzato le directory come
sorgenti principali per FPM (-s dir). Tuttavia FPM pu generare
pacchetti altrettanto bene anche da altri file, come per esempio
i tarball. Se disponete di foo-1.0.tar.gz in cui sono contenuti
diversi file e una directory strutturata che pu essere copiata
direttamente nel filesystem (es. /usr/bin/foo, /usr/share/doc/
foo/ e cos via), potete convertire il tutto in un .deb o un RPM
tramite -s tar. Ecco come:
fpm -s tar -t deb -n foo -v 1.0 foo-1.0.tar.gz
unaltra sorgente che FPM pu utilizzare sono i moduli Python.
Grazie alla cosiddetta installazione semplice, FPM pu scaricare
i moduli e impacchettarli automaticamente, senza perdere tempo
nel cercarli in giro per il Web. Per esempio, per creare
il pacchetto di PyX, un modulo per la realizzazione di PostScript
e file PDF, scrivete il comando che segue:
fpm -s python -t deb pyx

Collegatevi a http://goo.gl/sWs3Z per vedere una divertente presentazione rilasciata


dallautore di FPM, in cui spiega le motivazioni che lhanno spinto a scrivere il software

infine, con -s empty potete creare pacchetti completamente


vuoti. Di certo qualcuno si star domandando per quale
motivo dovrebbe fare una cosa del genere.
Beh, semplicemente perch questa funzione utile
per creare meta pacchetti. Per esempio potreste configurare
una serie di macchine desktop con una combinazione
specifica di programmi (un particolare windows manager,
un browser, un editor di testo e cos via). in questo modo,
anzich installare i vari programmi su ogni singolo computer,
o ancor peggio mettersi a trafficare con gli script, siete
in grado di creare un meta-pacchetto con tutte
le applicazioni come dipendenze. non dovrete far altro
che installare il pacchetto su ogni postazione e lasciar fare
il resto al gestore pacchetti. LXP

Creare pacchetti statici

ermine semplifica enormemente le operazioni di creazione


dei pacchetti statici, ma purtroppo non open Source

un trucco per rendere i vostri pacchetti


funzionanti su molteplici distro quello
di collegare staticamente i file eseguibili.
normalmente i programmi usano librerie
di codice esterno tramite un sistema chiamato
collegamento dinamico. i software, in pratica,
accedono alle librerie solo quando ne hanno
bisogno. Queste ultime, di solito, stazionano
in /lib e /usr/lib, vengono fornite nei rispettivi
pacchetti e possono essere aggiornate
in modo del tutto indipendente rispetto
al programma che le utilizza. Questo sistema
poi estremamente sensibile, ma viene
da domandarsi: perch ogni programma
basato su GTK include la propria versione
dellomonima libreria, quando tutti possono
condividerla? La risposta semplice e si tratta
di un aspetto positivo soprattutto dal punto
di vista della sicurezza, poich quando viene
scoperta una vulnerabilit in GTK, possibile
aggiornare la versione condivisa, cos che tutti
i programmi che ne fanno uso godano
dei vantaggi immediati dei fix. ora, se siete
disposti a perdere tutti questi benefici, potete
collegare staticamente i file eseguibili
allinterno del pacchetto. Ed ecco quindi che
questo stratagemma attira tutto il codice della
libreria condivisa allinterno delleseguibile,
creando s un file molto pi grande,

ma capace di funzionare praticamente


ovunque. non importa quali siano le versioni
delle librerie usate da una distro; tutto
LXP
il codice necessario alle esigenze del
programma incluso nel file eseguibile.
Tenete presente che compilare dei binari
statici piuttosto complicato, tuttavia esiste
un programma proprietario chiamato ermine
che rende la procedura molto pi semplice
(www.magicermine.com). Scaricate il file
ermineLighttrial.i386 (o x86_64)
e rendetelo eseguibile. Adesso, per esempio,
date unocchiata al binario gedit: se lanciate
ldd /usr/bin/gedit vedrete che usa oltre 60
librerie condivise nel sistema. Ma dopo aver
fatto questo:
./ErmineLightTrial.i386 /usr/bin/gedit --output
static-gedit
abbiamo ora un pacchetto completo
chiamato static-gedit che non dipende
da nessuna libreria, sebbene sia ingrassato
fino a 42 MB, rispetto ai 671 KB di partenza.
in generale sempre meglio collegare
le librerie dinamiche, ma se state utilizzando
FPM per distribuire in Rete un software
scritto da voi, potreste creare un pacchetto
opzionale collegato staticamente, e destinarlo
agli utenti che per varie ragioni non possono
prelevare quello normale.

LinuX PRo 136

59

Tutorial Xxxx
Juju

Mettete nel cloud i vostri servizi


preferiti senza fare sforzi

Il cloud secondo Ubuntu

Per rendere compatibili con il cloud i tuoi servizi Web bastano un po di magia
sudafricana e un tocco di charm

difficile

uju grandioso. Se non ne avete mai sentito parlare,


allora non conoscete il cloud come dovreste (leggete
il box Juju GUI nella prossima pagina per scoprire
dettagli sulla demo online). Alla base di Juju c il concetto
di charm. Uno charm si pu paragonare a un distillato
di esperienza sulla messa in opera di un particolare servizio:
pensate a qualcosa tipo MySQL o WordPress. Ma si tratta
di pi di un semplice script dinstallazione: si pu anche
rendere conto della presenza di altri servizi e collegarli tutti tra
loro (per esempio, pu far collaborare un database MySQL con
WordPress in modo da usarlo come back-end per il CMS).

La struttura
della vostra
directory dello
charm deve
avere questo
aspetto

60

Linux pro 136

Uno charm , per dirla in breve, una cosa magica e in questo


tutorial la vedrete in azione. Ci sono alcune cose di cui avete
bisogno per creare uno charm. Anche se possibile farlo
usando unaltra distro, il processo molto pi semplice se
adottate una versione recente di Ubuntu. Precise Penguin
(Ubuntu 12.04 LTS) va bene, cos come la 13.04. Dovete poi
installare il pacchetto juju-core o il vecchio pacchetto Juju
(per i dettagli sullinstallazione relativi alla vostra distro/
piattaforma andate allURL https://juju.ubuntu.com/docs/
getting-started.html). una buona idea installare anche
il pacchetto charms-tools che contiene alcune funzionalit
che vi possono aiutare pi avanti. In tutti i casi dovrete avere
anche un ambiente in cui creare le istante di Juju, come
un account AWS, HP Cloud o OpenStack. Se trovate delle
difficolt nellimpostare Juju con il vostro provider cloud,
controllate lURL che vi abbiamo suggerito poco fa. Ipotizzando
che sia tutto a posto, potete iniziare. La prima cosa da fare
creare la struttura di directory per il vostro charm,
riempiendola con i file che vi serviranno. Visto che avete
installato i charm-tools (lavete fatto, vero?) molto semplice:
mkdir -p ~/localcharms/precise
cd ~/localcharms/precise
charm create vacilla
Vedrete apparire un messaggio derrore che vi comunica
limpossibilit di trovare vanilla in apt-cache.
Non preoccupatevene. Se steste creando un charm da
un pacchetto gi installato localmente, i tool charm farebbero
un lavoro maggiore inserendo anche qualche metadato,
ma va bene lo stesso.

Creare charm
Il primo file da guardare metadata.yaml. Esso contiene tutte
le informazioni importanti che servono a Juju per sapere
qualcosa sullo charm, ma comunque molto semplice.
La prima parte banale:
name: vanilla
summary: Vanilla is an open-source forum.
maintainer: my name <your@email.tld>
description: |
Vanilla un sistema di forum multilingua estendibile.
Questo charm installa Vanilla seguendo le istruzioni ufficiali.
Come potete vedere, il formato YAML facilmente leggibile
e contiene delle semplici coppie chiave:valore, che per
quanto visto finora hanno delle descrizioni molto facili. La parte
seguente pi importante:
categories:
applications
provides:
website:
interface: http
requires:
database:

Juju Tutorial
interface: mysql
Categories una lista, visto che il vostro charm pu stare
in pi di una categoria (inserite ognuna in una nuova riga).
Le opzioni valide per questa voce sono: databases; file-servers;
applications; cache-proxy; app-servers; miscellaneous.
non preoccupatevi di questo elenco, serve solo per rendere
le categorie ricercabili online. Ci sono due importanti sezioni
subito sotto: provides e requires. La sezione provides
contiene i servizi offerti dal vostro charm. nellesempio si tratta
di un sito Web quindi si indica website e sotto, indentato, si
deve indicare linterfaccia che verr usata per fornire il servizio.
i nomi in questo caso non sono fondamentali, avreste potuto
chiamare web o forum il servizio, ma importante ricordare
il nome assegnato perch lo dovrete usare per scegliere
il nome del vostro script pi avanti. requires un po pi
specifico, perch in questo caso si fornisce un altro servizio
(MySQL). Se controllate il metadato del charm MySQL, vedrete
che essi forniscono una sezione che indica un database con
interfaccia MySQL. Questo proprio ci che vi serve. Questa
informazione consente a Juju di capire i modi in cui i servizi
si possono collegare e di conseguenza sa quali script cercare.

La GUI di Juju
Stanchi di digitare? Allora dovreste
guardare Juju GUI, uninterfaccia drag
& drop per fare il deploy dei charm
nel cloud. La Gui esegue unistanza
e semplifica la gestione di tutto il lavoro
noioso. un browser sulla sinistra mostra

tutti gli charm disponibili nello store


delle demo, e potete trascinarli nel
pannello principale per renderli attivi.
potete provare il sito per una demo live
cos da scoprire cosa vi state perdendo:
https://jujucharms.com/sidebar.

Agganciamento
ora passate al prossimo step. La directory hooks contiene
script eseguibili con nomi specifici che vengono richiamati
quando succede qualche evento. Questi eventi si possono
dividere in due tipi: relativi al ciclo di vita (lifecycle)
o allambiente (environmental). i primi trattano con eventi che
accadono solo al vostro servizio, e hanno sempre lo stesso
nome: start, stop e install. Scrivetene uno. iniziate con start,
il pi semplice:
#!/bin/bash
set -e
service apache2 restart
Visto che si tratta di un file eseguibile, deve iniziare con il
classico shebang. una nota importante: stiamo usando Bash
perch facile da comprendere dalla maggior parte degli
utenti, ma potete usare il linguaggio che preferite per scrivere
gli script, basta che siano eseguibili su un server ubuntu
standard. Vi sconsigliamo il Fortran 77, ma fate come volete.
La linea set -e importante, visto che dice allo script di uscire
e restituire un codice derrore se uno qualunque dei comandi
seguenti fallisce se qualcosa va storta, vogliamo che Juju
lo sappia. il forum Vanilla gira sotto il server Web Apache

Se avete bisogno di aiuto con Juju, controllate la


documentazione online allURL https://juju.ubuntu.com/docs

La GUI di Juju semplifica un po il deploy dei servizi cloud

(nel nostro caso, voi potete usare altro se volete). per far
partire il servizio, quindi, tutto quello che bisogna fare avviare
Apache. Ma che succede se il server gi in esecuzione?
Dovreste semplicemente riavviarlo lopzione restart avvier
Apache se fermo, e lo riavvier se gi in esecuzione.
Questo vuol dire che il vostro script sar idempotente
(guardate il box Idempotenza!), il che vuol dire che potete
eseguirlo pi volte senza cambiare il risultato desiderato.
Lo script stop simile e usa un comando differente di poco
per fermare Apache. il vero trucco in questa situazione si
nasconde dentro lo script install, deve scaricare e installare
tutto ci che serve per far funzionare Vanilla e copiare i file
nella cartella corretta. Ve lo spieghiamo un pezzetto alla volta.
#!/bin/bash
set -e
apt-get install -y apache2 php5-cgi php5-mysql curl php5gd wget libapache2-mod-php5
S! potete usare apt-get per installare tutte le dipendenze
(ricordatevi di usare lo switch -y per disabilitare ogni
interattivit). in questo caso si vuole recuperare Apache, wget
(per scaricare i sorgenti di Vanilla) e varie componenti pHp
che servono al forum per funzionare. i vostri requisiti
potrebbero essere diversi dai nostri basate lelenco delle
dipendenze richieste dal vostro software su una installazione
base di ubuntu Server.
dl=https://github.com/vanillaforums/Garden/archive/
Vanilla_2.0.18.8.tar.gz
# Grab Vanilla from upstream.
juju-log Fetching $dl
wget $dl -o /tmp/vanilla.tar.gz
Questa parte recupera il tarball dal sito Web del forum una
buona idea scaricare un file specifico, uno che siete sicuri che
funzioni.
# check if installed
if [ -f /var/www/vanilla/conf/config.php ]; then
Linux pro 136

61

Tutorial Juju
Idempotenza!
idempotenza una parola che sentirete
molto spesso in relazione con gli hook degli
charm (e forse anche in altri posti, dipende
da dove lavorate). Significa che rieseguire
unoperazione non dovrebbe cambiare
il risultato atteso. Quindi se unoperazione
deve avviare un servizio, dovrebbe fermare

quelli gi avviati, non importa in quale stato si


trovino. pu essere complesso pensare a tutti
gli scenari ai quali si applicano gli hook delle
relazioni, ma basta tenere a mente che non
dovete fare voi delle assunzioni sullo stato dei
servizi quando fate partire uno script. Questo
aiuta gli charm a essere pi robusti.

cp /var/www/vanilla/conf/config.php /tmp/
rm -rf /var/www/vanilla

Online potete
esaminare
il codice di altri
charm; leggere
i file Readme
per capire come
collegarvi

fi
Cosa succede se Vanilla gi installato? in questo caso
dovreste preservare la sua configurazione ed esattamente
ci che fanno le righe precedenti. ora si procede estraendo
i file:
# Extract to a known location
juju-log Estraiamo Vanilla
tar -xvzf /tmp/vanilla.tar.gz -C /var/www/
mv /var/www/Garden-Vanilla* /var/www/vanilla
if [ -f /tmp/config.php ]; then
mv /tmp/config.php /var/www/vanilla/conf/
fi
Dovrete anche cambiare i permessi di alcuni file e cartelle:
chmod -r 777 /var/www/vanilla/conf /var/www/vanilla/
uploads /var/www/vanilla/cache
Lo step successivo prevede la configurazione di Apache
in modo che sappia della presenza di Vanilla e modificare
la sua configurazione in modo da includere una voce per
il forum. Questo pu essere fatto facilmente mandando
loutput del comando cat nel file corretto:
juju-log Creiamo la configurazione di apache2
cat <<EoF $gt; /etc/apache2/sites-available/vanilla
<VirtualHost *:80>
ServerAdmin webmaster@localhost
Documentroot /var/www/vanilla
<Directory /var/www/vanilla>
options indexes FollowSymLinks MultiViews

Allowoverride All
order allow,deny
allow from all
</Directory>
ErrorLog \${ApACHE_LoG_Dir}/vanilla.log
LogLevel warn
CustomLog \${ApACHE_LoG_Dir}/access.log combined
</VirtualHost>
EoF
a2dissite 000-default
a2ensite vanilla
service apache2 reload
juju-log File estratti, aspetto altri eventi prima di fare altro!
Lultima parte fa sapere ad Apache che c il sito Web e lo
ricarica in modo da leggere i cambiamenti alla configurazione.
Forse avete notato alcuni comandi ju-ju. Questi comandi
si usano per inviare messaggi di log al file /var/juju, molto utile
per fare il debug dei vostri script.

Relazioni
Le relazioni possono essere difficili, ma i collegamenti (hook)
tra di esse sono immediati. La prima cosa da sapere su questo
tipo di hook che prendono il nome dalla relazione
menzionata nei metadati. Quindi, per esempio, avrete bisogno
di qualche hook per gli eventi:
<relation name>-relation-joined
<relation name>-relation-changed
<relation name>-relation-departed
<relation name>-relation-broken
Alcuni di questi eventi si spiegano da soli. relation-joined
viene richiamato quando viene stabilita una relazione. Questo
vuol dire anche che la relazione cambiata, per cui lhook
relation-changed viene avviato subito dopo. Lo stato
departed accade quando un servizio si disconnette, e lo stato
broken quando una relazione che era stata stabilita non pi
disponibile, per avviare una pulizia. Quindi vi serve un set
di script per il vostro servizio di database che trattino questi
eventi. Comunque, ogni volta che accade un evento, se Juju
non trova lo script con lo stesso nome da eseguire, assume
che vada tutto bene. Questo vi evita di scrivere degli script
vuoti. per esempio, non c bisogno di scrivere uno script
database-relation-joined se si va a creare uno script
relation-changed che pu gestire anche la connessione
iniziale.
#!/bin/bash
set -e # Se un comando fallisce, ferma lesecuzione dellhook
con un errore
db_user=`relation-get user`
db_db=`relation-get database`
db_pass=`relation-get password`
db_host=`relation-get private-address`
if [ -z $db_db ]; then
juju-log non ci sono ancora info sul database. Esco
silenziosamente
exit 0
fi
vanilla_config=/var/www/vanilla/conf/config.php
cat < $vanilla_config
<?php if (!defined(AppLiCATion)) exit();
\$Configuration[Database][Host] = $db_host;
\$Configuration[Database][name] = $db_db;

62

Linux pro 136

Juju Tutorial
In locale con LXC
non dovete avere per forza un account cloud con Hp
o Amazon per fare esperimenti con i charm. Al momento c
il supporto sperimentale per LxC (Linux Containers), il che vuol
dire che potete eseguire un cloud virtualmente su unistanza
locale: in questo modo si risparmiano tempo e soldi.
potete trovare le istruzioni per procedere in questo modo
allurL http://juju.ubuntu.com/docs/config-LXC.html.

\$Configuration[Database][user] = $db_user;
\$Configuration[Database][password] = $db_pass;
EoF
open-port 80
il comando relation-get una funzione helper per Juju,
che pu essere usata per comunicare con gli script di Juju che
girano su altre istanze. in questo caso invocando il comando
juju add-relation vanilla mysql
verr eseguito lo script database-relation-joined nel vostro
charm, ma si avvier anche lo script corrispondente nello
charm MySQL. Esaminando lo script potete vedere che quando
qualcosa crea una connessione con il servizio MySQL, lo script
genera un database e un utente con i permessi corretti.
La funzione helper pu recuperare questi valori generati (sono
casuali per ovvie ragioni di sicurezza) per voi, poi il vostro script
pu scriverli nel file di configurazione di Vanilla. ogni volta che
la connessione viene cambiata, i valori vengono recuperati
nuovamente (per esempio quando il database originale viene
sostituito da ununit differente) cos che la comunicazione
possa essere mantenuta. Visto che vi serve un database, non
ha molto senso creare altri script: il servizio semplicemente
non funzioner senza questa connessione.

far funzionare il tutto


A questo punto dovete creare uno script che gestisca
le connessioni al servizio che fornite. Quindi, per il file
website-relation-joined avrete
#!/bin/sh
relation-set hostname=`unit-get private-address` port=80
relation-set il corollario di relation-get, espone valori
chiave=valore, in questo caso hostname e port. i comandi
con un backtick davanti usano unaltra funzione helper,
unit-get, per recuperare un valore locale (lindirizzo del
server). potreste pensare che il servizio, che solo un sito Web
dopotutto, pu operare e creare connessioni allesterno di Juju:
questo fondamentale per un forum. Ci vero, ma non
trascurate mai il fatto che altri charm potrebbero voler usare
il vostro servizio, in questo caso dovrebbe esserci un proxy
cache da qualche parte nel cloud, per esempio. Queste sono
le basi che vi servono conoscere per far funzionare il vostro
servizio. ipotizzando che abbiate installato e configurato Juju,
tutto ci che vi serve ora avviare un ambiente e caricarci
il vostro charm. Ah, e anche MySQL!
juju bootstrap
juju deploy mysql
juju deploy --repository=~/localcharms local:precise/vanilla
juju add-relation mysql vanilla
juju expose vanilla
La seconda linea deploy del vostro charm indica a Juju
di guardare in una directory locale, in questo caso abbiamo

specificato anche la serie, cio precise. il comando expose


fa sapere a Juju che si tratta di un servizio pubblico e quindi
deve fare gli opportuni aggiustamenti al firewall affinch
le persone riescano a collegarsi. Ma dove si trova?
Se aspettate qualche minuto (ci vuole un po per installare
tutto il software) potete eseguire:
juju status
Questo comando elencher tutte le macchine e i servizi
in esecuzione e, cosa fondamentale, elencher anche le loro
porte, cos:
units:
vanilla/0:
agent-state: started
agent-version: 1
machine: 2
public-address: ec2-54-224-220-210.compute-1.
amazonaws.com
A questo punto potete semplicemente copiare e incollare
il public-address nel vostro server Web per vedere il servizio
in funzione.

Se la pagina
davvio
di Vanilla
appare,
complimenti,
avete mandato
in esecuzione
il vostro primo
charm

I tocchi finali
Se volete distribuire il vostro charm ci sono alcune altre cose
da fornire assieme a esso; un file readme fondamentale,
e anche alcune note sul copyright. Dovreste fornire anche
unicona! Questa viene usata nello Juju Charm Store
(un repository online che contiene charm utilizzabili) e anche
nella Gui (vedi il box in seconda pagina). i charm non sono
pensati solo per fare il deploy di servizi, ma anche per gestirli.
per fare un ulteriore passo in avanti dovreste pensare in che
modo rendere disponibili i vostri servizi in un ambiente ad alta
disponibilit. noi vi abbiamo mostrato solo le basi, ma potete
trovare molto di pi leggendo la documentazione che trovate
allindirizzo Web http://juju.ubuntu.com. LXP

Quando le cose vanno male


inevitabilmente i vostri charm difficilmente
funzioneranno al primo colpo. per capire
cosa andato storto potete collegarvi via
SSH alla vostra macchina che contiene
lo charm, usando il nome della macchina
fornito dal comando juju status.

Juju aggiunger automaticamente


la vostra chiave SSH a ogni macchina
attiva, quindi basta scrivere
juju ssh <nomemacchina>
Dopodich potete esaminare i file di log
o qualunque altra cosa vi serva.

Linux pro 136

63

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

90

,80

,
39
invece
di
70
39,90 invece 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

Prov.

email

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

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

OFFERTA VALIDA SOLO PER LITALIA

LXP136

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

Tel.

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

Tutorial Xxxx
Filesystem

Rendetevi la vita pi
semplice con ZFS

Gestione dischi flessibile


Andiamo alla scoperta delle gioie di ZFS. Come creare array RAID, salvare
snapshot e ripristinarli, comprimere i dati e condividere i filesystem in rete

un sistema pi semplice. Ora questo sistema esiste e si chiama


ZFS. Sviluppato in origine da Sun per Solaris, ZFS mette insieme
in un unico pacchetto RAID e gestione di dischi, volumi e filesystem.
Ditegli che dischi avete e come li volete configurati e lui si prender
in carico tutto il lavoro pi faticoso. Dovete semplicemente dirgli di
creare i filesystem. ZFS un classico, anche se non molto comune,
esempio di procedure semplificate dal computer. Due programmi
gestiscono tutti i componenti separati che riguardano la gestione
di dischi e filesystem. Tra questi troviamo la creazione e la gestione
di array RAID, la creazione di filesystem e il loro montaggio
e smontaggio, limpostazione di quote, la creazione e il ripristino
di snapshot, la compressione dei dati e addirittura la condivisione
dei filesystem in rete. Non tutto perfetto per, perch ZFS
non fa parte di nessuna distro Linux, non a causa di una qualche
limitazione tecnica, ma per via della licenza scelta da Sun
per rilasciare il codice.

facile

ZFS su Linux

Un singolo
comando
per creare
una versione
migliorata
di un array RAID
5 completo
del suo primo
filesystem

66

n po di anni fa publicammo un paio di tutorial sullutilizzo


del RAID. Durante la loro realizzazione ci eravamo resi
conto del fatto che stavamo facendo apparire complicati
i due argomenti e cercammo di semplificare le cose. Per prima
cosa bisognava creare i dispositivi RAID, creare i volumi fisici e un
gruppo di volumi per essere infine in grado di creare alcuni volumi
logici. Ma la cosa non finiva l, dato che occorreva creare dei
filesystem sui volumi. Il ridimensionamento, seppure pi semplice
di quello delle partizioni fisiche, richiedeva operazioni distinte sul
filesystem e sul volume logico: ero sicuro che ci doveva essere

Linux pro 136

Due sono le implementazioni di ZFS disponibili su Linux.


Una un modulo FUSE, ma quella che esamineremo in questo
tutorial un vero e proprio modulo del kernel, proveniente dal
progetto ZFS on Linux (http://zfsonlinux.org/). disponibile
per unampia gamma di distro, anche se il supporto migliore per
Ubuntu e Gentoo (quanto spesso vi capita di sentir menzionare
insieme queste due distro?). Ci sono alcuni requisiti per il sistema
su cui va installato, in particolare ZFS, a causa della sua forte
dipendenza dalla memoria virtuale, funziona in maniera affidabile
solo con kernel a 64 bit. Ha anche bisogno di parecchio spazio
e non funziona molto bene con un quantitativo ridotto di memoria:
il sistema pi piccolo su cui lho usato aveva 2 GB di RAM.
Linstallazione su Ubuntu o su uno dei suoi derivati richiede
semplicemente di aggiungere il PPA zfs-native (ppa:zfs-native/
stable) alla lista dei sorgenti, seguita dallinstallazione del pacchetto
ubuntu-zfs. Gentoo usa invece il comando emerge zfs.
Dato che ZFS usa moduli che non fanno parte del kernel, se lo
ricompilate o lo aggiornate dovete anche ricompilare i moduli ZFS,
altrimenti non funzioner. lo stesso problema che affligge cose
come i driver grafici proprietari di Nvidia. Se la vostra distro
usa DKMS, come Ubuntu, questo avverr automaticamente.
Quando un nuovo kernel viene installato nel corso di un normale
aggiornamento del sistema, i moduli verranno ricompilati
e il filesystem RAM di inizializzazione (initramfs) aggiornato.
Se avete installato ZFS dai sorgenti ricordatevi di ricompilarlo
prima di avviare un nuovo kernel. Il pacchetto ZFS installa
una decina di comandi, ma solo due di essi sono usati di solito,
i rimanenti sono strumenti per il test e il debug: confrontateli
con la cinquantina di comandi installati da LVM e avrete unidea
della maggiore semplicit di ZFS. I due comandi da usare sono
zpool e zfs. Il primo permette di gestire i pool ZFS, cio dei gruppi
di filesystem su un singolo dispositivo, qualcosa di analogo a una
combinazione di volumi fisici e gruppi di volumi di LVM. Laltro
comando serve invece per la gestione dei filesystem stessi.

ZFS Tutorial
Entrambi richiedono i privilegi di root, quindi precedete tutti
i comandi con sudo se non siete collegati come root. Cominciamo
quindi con la creazione di un pool su /dev/sdb1:
zpool create primopool sdb1
La sintassi semplice, il primo argomento il nome del pool,
il secondo il dispositivo da usare. Lo /dev iniziale non necessario
per i dischi, ma se volete usare dei file per le vostre prove dovrete
dare il percorso completo. ZFS usa il termine vdev per riferirsi
ai vari tipi di dispositivi che possono essere usati per creare
un pool. oltre ai nodi di dispositivi e percorsi di file che usiamo
in questo tutorial possibile usare iD di dischi, come compaiono
in /dev/disk/by-id. per verificare lavvenuta creazione del pool
bisogna dare il seguente comando:
% zpool list
nAME
SiZE ALLoC FrEE CAp DEDup HEALTH
ALTrooT
primopool 1,95G 124K 1,95G 0% 1.00x onLinE non solo abbiamo creato il nostro primo pool ZFS, ma su di esso
anche stato montato un filesystem, senza bisogno di usare mkfs.*
o il comando di montaggio: stato fatto tutto automaticamente.
% df -Th /primopool
File system Tipo Dim. usati Dispon. uso% Montato su
primopool
zfs 2,0G 0 2,0G 0% /primopool
ora potete copiare dei file in /primopool proprio come in qualsiasi
altro filesystem. Avere un unico filesystem molto grande non per
particolarmente utile, tanto varrebbe tenere tutto nella directory
radice. ZFS ci permette di creare dei volumi allinterno del pool:
zfs create primopool/testdir
Questo singolo comando crea il volume, gli mette sopra
un filesystem e lo monta. ora copiate qualche file
in /primopool/testdir e poi digitate
% zfs list
nAME
uSED AVAiL rEFEr MounTpoinT
primopool
24,4M 1,90G 31K /primopool
primopool/testdir 24,4M 1,90G 24,4M /primopool/testdir
notate come lutilizzo sia lo stesso per il pool e il filesystem di test,
dato che c un solo filesystem.

Propriet dei filesystem


Finora tutto bene, ma montare automaticamente i volumi in base
al loro nome non sempre utile. Se voleste avere /home
su un volume ZFS andrebbe a finire nel posto sbagliato. oltre
a contenere dati, i filesystem ZFS hanno delle propriet,
che possibile esaminare con il comando zfs get:
zfs get all primopool/testdir
Vedrete una lista molto lunga di propriet che controllano tutti
gli aspetti del comportamento del filesystem, ma quello che ci
interessa ora il punto di montaggio. potete modificarlo, cos come
la maggior parte delle altre propriet, con il comando zfs set:
zfs set mountpoint=/home/test primopool/testdir
ora quando ZFS monter questo volume lo far sul nuovo punto
di montaggio. Tutti i volumi ZFS sono montati per default quando
viene lanciato zfs mount -a, cosa che di solito avviene allinterno
degli script di avvio del sistema. possibile avere un volume
che non viene montato automaticamente impostando la propriet
canmount a noauto: in questo caso il volume va montato
esplicitamente con il comando
zfs mount primopool/testdir
A differenza dei comandi standard di montaggio, ZFS non richiede
che il punto di montaggio esista, ma se esiste deve essere vuoto.
in alternativa possibile impostare la propriet mountpoint
a legacy e stabilire tutto in /etc/fstab alla solita maniera.

ambiente di test
per provare ZFS, come qualsiasi altro
filesystem, occorre formattare qualche
partizione di disco, quindi conviene stare
alla larga dai dati e dal sistema operativo
fino a quando non si soddisfatti dei
risultati. Si possono usare dischi rigidi
esterni, probabilmente una chiavetta
uSB non una buona idea, oppure
si possono creare dischi rigidi virtuali:
dd if=/dev/zero of=/percorso/di/file1
bs=1G count=2

dd if=/dev/zero of=/percorso/di/file2
bs=1G count=2
dd if=/dev/zero of=/percorso/di/file3
bs=1G count=2
Questi comandi creano tre file da 2 GB
ciascuno: ce ne vogliono tre per iniziare
a fare esperimenti con le opzioni rAiD.
Si tratta di una funzionalit di ZFS
pensata unicamente per i test, nessuno
userebbe dei file come questi per
un filesystem di produzione.

Ci sono altre propriet che vale la pena esaminare. Ad esempio,


per impostare una quota su un filesystem basta il comando
zfs set quota=10G primopool/testdir
Le propriet possono essere impostate anche al momento
della creazione del filesystem. inoltre le propriet che non sono
specificate esplicitamente sono ereditate dal genitore. Se create
un filesystem per /home con il comando
zfs create primopool/home -o mountpoint=/home -o quota=10G
tutti i filesystem che creerete per gli utenti con un comando
di questo genere
zfs create /primopool/home/utente
avranno la loro quota da 10 GB. Ecco qua, la semplice creazione
di un filesystem con quota per un singolo utente senza bisogno
di creare partizioni o volumi logici e senza lanciare mkfs
e modificare /etc/fstab. E quando un filesystem non serve
pi lo si pu eliminare e recuperare tutto lo spazio che usava
con il comando zfs destroy. ZFS suppone che sappiate quello
che state facendo e canceller silenziosamente i dati senza fare
alcuna domanda. Se non siete sicuri lanciatelo allinizio
con le opzioni -v e -n (verbose e dry run).
zfs destroy -vn primopool/home/utente
Quando impostate una quota per un filesystem assegnate
solamente lammontare massimo dello spazio che pu essere
usato, ma non avete garanzie sulla sua disponibilit. un processo
fuori controllo potrebbe ugualmente utilizzare tutto lo spazio
in un filesystem senza lasciarne per gli altri utenti. ZFS risolve
questo problema per mezzo della propriet reservation,
che consente di mettere da parte lo spazio per quel filesystem.
un filesystem pu avere una quota, dello spazio riservato
o entrambe le cose. Sia la quota che lo spazio riservato possono

in questo esempio creiamo un filesystem home con alcune propriet. Poi creiamo
dei nuovi filesystem sotto di esso che ereditano quelle propriet

Linux pro 136

67

Tutorial ZFS
licenza
estremamente improbabile che ZFS
entri mai a fare parte del kernel Linux.
il codice rilasciato sotto la Common
Development and Distribution Licence
(CDDL) che, pur essendo una licenza
open Source, contiene alcune clausole
che sono in conflitto con quelle della

GpL. risulta quindi impossibile avere


nello stesso file binario codice rilasciato
sotto le due diverse licenze. Questo
impedisce a ZFS di essere distribuito
allinterno del kernel, ma non ne vieta,
invece, la sua distribuzione come
modulo separato.

essere modificati a volont, compatibilmente con lo spazio


disponibile. non c da preoccuparsi del ridimensionamento
di volumi o filesystem, basta cambiare la propriet a qualsivoglia
valore si desideri. Se serve pi spazio per una directory
o un filesystem basta aumentarlo. Quando non serve
pi sufficiente ridurre la quota.

RaiD

Una pletora
di propriet,
troppe per stare
tutte in una
schermata. alcune
sono informative,
altre controllano
il comportamento
del filesystem;
tutte sono
descritte
nella pagina
di manuale di ZFS

68

Abbiamo finora usato un singolo dispositivo per creare il nostro


primo pool, ma uno zpool pu essere realizzato su un numero
qualsiasi di dispositivi in diverse configurazioni. i dispositivi
possono essere sia partizioni che interi dischi: ZFS elimina
persino la necessit di partizionare i dischi. ovviamente dovrete
dividere il disco che contiene /boot o il filesystem radice,
ma un disco di soli dati non ha bisogno di partizioni:
zpool create nomepool sda sdb
Questo comando crea un pool che si estende su due dischi.
qualcosa di analogo allavere pi dispositivi in un gruppo
di volumi LVM o al rAiD 0 (che non un vero e proprio rAiD).
La dimensione del pool pari alla somma delle dimensioni
dei dispositivi che ne fanno parte. Ci sono poi le vere e proprie
opzioni rAiD:
zpool create nomepool mirror sda sdb
zpool create nomepool raidz sda sdb sdc
il primo comando crea lequivalente di un array rAiD 1
mentre il secondo crea la variante ZFS di un rAiD 5, senza
la penalizzazione nelle prestazioni dovuta al write hole che affligge
il rAiD 5 tradizionale. uno snapshot (istantanea in inglese) una
copia in sola lettura di un filesystem al momento della creazione
dello snapshot. permette di creare una versione ripristinabile prima
di fare modifiche pericolose o addirittura essere usato come
strategia di backup a buon mercato per proteggersi dagli errori
umani se non dai guasti ai dischi. Consente anche di salvare quei
dati che possono cambiare durante il processo di backup, come
il contenuto di /var. possibile creare uno snapshot del filesystem

Linux pro 136

che esegue il backup dello snapshot stesso sapendo che non


cambier. per creare uno snapshot si usa il seguente comando:
zfs snapshot miopool/miovolume@nomesnapshot
il nome dello snapshot, specificato dopo @, pu essere qualsiasi
cosa. Gli snapshot non occupano spazio su disco quando vengono
creati. Man mano che vengono aggiunti nuovi file o ne vengono
modificati di vecchi lo spazio usato aumenta, dato che il filesystem
deve tenere traccia di vecchie e nuove versioni. Laccesso
agli snapshot avviene attraverso la directory nascosta .zfs.
Lo snapshot creato qui sopra, ad esempio, supponendo che
il punto di montaggio non sia cambiato, si trover in /miopool/
miovolume/.zfs/snapshot/nomesnapshot. La directory zfs
veramente nascosta, non solo perch il nome comincia con un
punto. Anche mostrando i file nascosti o con ls -a o impostando
la corrispondente opzione del gestore di file non la si pu vedere.
Bisogna modificare la propriet snapdir del filesystem o del pool
da hidden a visible. una volta usato uno snapshot pu essere
rimosso, liberando lo spazio che occupa, con il comando
zfs destroy miopool/miovolume@nomesnapshot
per rimuovere una serie di snapshot si usa il carattere %:
zfs destroy miopool/miovolume@snapshot1%snapshot5
zfs destroy miopool/miovolume@%snapshot5
il primo comando distrugge tutti gli snapshot tra 1 e 5 compresi,
il secondo distrugge snapshot5 e tutti i pi vecchi. La selezione
degli snapshot da cancellare non si basa sui numeri, ma sulle date,
quindi dando il comando
zfs destroy mypool/myvolume@%giovedi
verr cancellato anche lo snapshot di mercoled. per vedere
lelenco di tutti gli snapshot si usa il comando zfs list:
zfs list
zfs list -t snapshot
zfs list -t all
zfs list -t all -r primopool/testdir
il primo comando elenca solo i filesystem, il secondo solo gli
snapshot, il terzo entrambi e lultimo solo quelli che appartengono
al filesystem specificato. Esiste un programma che crea
automaticamente snapshot a intervalli regolari e cancella quelli
vecchi, chiamato zfs-autosnapshot. uno script di shell e un
certo numero di script di Cron che possono essere scaricati
da https://github.com/zfsonlinux/zfs-autosnapshot o dal ppA
ubuntu. La creazione automatica di snapshot di filesystem
che cambiano frequentemente pu richiedere parecchio spazio
su disco, quindi conviene configurare alcuni filesystem in modo
che non sia possibile creare snapshot automatici, impostando
la propriet com.sun:autosnapshot a false. per ripristinare
uno snapshot si usa lopzione rollback:
zfs rollback miopool/miovolume@nomesnapshot
possibile eseguire il rollback solo dello snapshot pi recente:
il comando d un messaggio di errore se si prova con snapshot
pi vecchi. Bisogna prima rimuovere manualmente le copie pi
recenti di quella che si intende ripristinare oppure usare lopzione
-r. Gli snapshot sono in sola lettura, ma esiste un modo per farne
una copia in un filesystem scrivibile, che viene definito un clone.
i cloni si basano sugli snapshot, quindi bisogna per prima cosa
crearne uno:
zfs snapshot primopool/mieidati@oggi
zfs clone primopool/miedati@oggi primopool/oggi
Come gli snapshot, i cloni non occupano spazio allinizio, ma lo
occupano solo se il filesystem originale o il clone viene modificato.
Lo snapshot necessario, non possibile distruggerlo se prima
non si distrugge il clone. ora possibile scrivere in primopool/
oggi e primopool/mieidati indipendentemente uno dallaltro.

ZFS Tutorial
compressione
i dischi stanno diventando sempre pi grandi, ma anche il numero
e le dimensioni dei file che vogliamo tenerci sopra, cosa che rende
pi necessaria che mai la compressione dei dati. ZFS supporta
la compressione trasparente a livello di filesystem. per abilitarla
bisogna impostare a yes la propriet compression del filesystem:
il valore di default no. anche possibile specificare il metodo
di compressione usato impostando la propriet a lzjb, gzip, zle
o lz4. Se si usa gzip possibile aggiungere un numero che indica
il livello di compressione, come spiegato nella pagina di manuale
di gzip. LZJB il metodo di default e permette di ottenere una
buona compressione dei dati senza penalizzare in maniera
apprezzabile le prestazioni, ma LZ4 pi moderno, pi veloce
e permette una maggiore compressione. La compressione
trasparente allutente, ls visualizza la dimensione originale
del file e file d il tipo originale del file, ma df e du mostrano
luso reale dello spazio. i seguenti comandi mostrano i risultati
dopo aver copiato un file di log di 19 MB su un filesystem
compresso e su uno non compresso:
% df -Th /primopool/normale /primopool/compresso
File system
Tipo Dim. usati Dispon. uso% Montato su
primopool/normale zfs 100M 19M
81M 19%
/primopool/normale
primopool/compresso zfs 100M 5.0M
95M 5%
/primopool/compresso
% ls -lh /primopool/compresso
totale 4.9M
rw-rw---- 1 nelz portage 19M lug 11 15:09 emerge.log
Come potete notare, abilitando la compressione si ottiene
un sensibile risparmio di spazio su file comprimibili. ovviamente
non vedreste nessun miglioramento sulla vostra collezione di foto,
ma, tenuto conto del carico aggiuntivo per la Cpu conseguente
allabilitazione della compressione, vale in generale la pena
di abilitarla sulla directory home e sicuramente per cose come
/var. Se volete vedere quando sia efficace la compressione
su un filesystem, esaminate la sua propriet compressratio:
% zfs get compressratio primopool/compresso
nAME
propErTY
VALuE SourCE
primopool/compresso compressratio 3.87x Labilitazione della compressione su un filesystem gi in uso
non ha effetto sui file esistenti, non si noter alcun cambiamento,
ma i file nuovi e quelli modificati verranno compressi. ZFS stato
creato da Sun, lazienda il cui mantra era the network is the
computer (la rete il computer), quindi non c da sorprendersi
quando si scopre che i filesystem ZFS possono essere condivisi
in rete. A questo punto vi aspetterete che questo vada impostato
come propriet del filesystem e avete ragione. ancora necessario
avere in esecuzione i demoni di nFS o Samba, ma gli export
e gli share sono definiti come propriet del filesystem. Gli export
nFS sono configurati nella propriet sharenfs, che per default
off. per rendere disponibile sulla rete locale uno share
la propriet va configurata cos:

zfs set sharenfs=rw=@192.168.1.0/24 primopool/public


Va poi condiviso con uno dei seguenti comandi:
zfs share primopool/public
zfs share -a
ora possibile usare exportfs o showmount -e localhost per
vedere se lo share disponibile. Lo script di avvio del sistema
che monta i filesystem ZFS esporta anche per default tutte
le share, quindi il comando zfs share va dato solo al momento
della creazione di un nuovo export. La condivisione via SMB/CiFS
analoga: si usa lopzione sharesmb, che pu assumere solo
i valori on e off. La condivisione SMB leggermente pi instabile,
quindi per ora probabilmente meglio limitarsi a usare il solito
smb.conf. i dati sono importanti, addirittura senza prezzo, quindi
bisogna assicurarsi che il filesystem ne prenda cura. ZFS conserva
un checksum per ogni blocco del filesystem e ne verifica
il contenuto confrontandolo con esso. Questo permette
un controllo continuo dei dati, ma anche possibile verificare
un intero pool e riparare gli errori che vengono scoperti. Questa
operazione viene detta scrubbing nel gergo ZFS e viene fatta cos:
zfs scrub primopool
Se vi aspettate di vedere sul video una sfilza di informazioni stile
fsck resterete sorpresi: il prompt dei comandi ricompare
immediatamente. Questo perch ZFS esegue lo scrub del
filesystem in background, mentre lutente continua a usarlo.
Lanciando il comando
zpool status
o
zpool status primopool
vedrete una riga che indica il procedere dello scrub in corso
oppure il risultato dellultimo. Si raccomanda di eseguire
regolarmente lo scrub dei pool, magari una volta alla settimana
con un job di Cron. un altro termine che potreste incontrare
resilver, che suona abbastanza strano. non ha nulla a che fare
con lelettrosmaltatura dei dischi, ma si riferisce alla copia dei dati
tra elementi di un array rAiD, come quando un disco viene
sostituito. un processo descritto nella documentazione rAiD
con il pi banale termine di syncing. lXP

la distruzione
dei filesystem
o degli snapshot
veloce
e silenziosa.
Per questo
conviene prima
usare le opzioni
-ve e -n

cifratura
Che dire della cifratura? Speravamo che non ce
lo chiedeste. Anche se le versioni pi recenti di ZFS
supportano la cifratura, lultima versione rilasciata come
open Source non ha questa funzionalit. Abbiamo
per a disposizione un paio di opzioni per usare una

tecnologia di cifratura esistente con ZFS. possiamo


usare dm-crypt, che fa parte del kernel, per cifrare
il dispositivo a blocchi prima di aggiungerlo a un pool:
lopzione migliore nel caso si desideri cifrare lintero
disco. Significa che lintero pool risulter crittografato:

non possibile scegliere i filesystem da cifrare.


Se invece desiderate avere questa possibilit
lalternativa usare encryptfs per crittografare
le singole directory: il metodo usato da ubuntu
e da altri per cifrare la directory home degli utenti.

Linux pro 136

69

Tutorial Xxxx
Raspberry
Pi
Raspberry

Pi Raspbian lOS ideale


per gestire la Pi: ecco come installarlo

Installare Raspbian

Volete metttere le mani su una Raspberry Pi nel modo pi affidabile?


Installate un sistema operativo ottimizzato direttamente da Ubuntu!

Passo passo Setup dal pinguino


Anche da LiveCD

Se non avete mai usato Linux prima dora, non


preoccupatevi. Le versioni recenti di questo sistema
hanno la stessa facilit duso degli altri sistemi
operativi pi noti. facile. Non dovete combattere
quasi mai con driver che fanno i capricci e le nuove
applicazioni si installano con un programma simile
ai vari App Store che sono nati ultimamente.
Visto che volete scrivere una versione di Linux
(Raspbian) su una scheda SD da usare con
la Raspberry Pi, ha senso compiere loperazione
usando un altro sistema Linux. Non una cosa
indispensabile, ma vi permette di dare unocchiata
al nuovo sistema ancor prima di accendere la RP.

Vi raccomandiamo Ubuntu Linux, che lideale


per i principianti, ma queste istruzioni valgono
per qualunque altra distribuzione rimpiazzate
lUbuntu Software Center che useremo a breve
con il gestore di pacchetti della distro scelta. Il bello
che potete fare tutto direttamente da un LiveCD
di Linux, quindi senza installare nulla nel PC e quindi
senza correre il rischio di danneggiare i dati presenti
sul disco fisso. Vi basta inserire il CD/DVD nel PC
e avviare la macchina. Dopo qualche momento
scegliete la voce Prova Ubuntu (dopo aver
selezionato litaliano) invece di quella per
linstallazione. Presto apparir il desktop di Ubuntu.

Anche senza avere Linux installato, potete


usare un LiveCD per usare questo sistema

Preparazione

Un problema legato alluso di una distro Live


per installare Raspbian che non riuscirete
a scaricare limmagine del sistema per la RP.
In molti casi non c abbastanza RAM per scaricare
e decomprimere limmagine, quindi dovrete scaricarla
su un supporto esterno (ma non nella SD che vi serve
per la RP). Gli utenti con Linux installato non hanno
questo problema, visto che possono recuperare
limmagine sul disco e poi decomprimerla senza
preoccuparsi della mancanza di spazio.
Noi procederemo da una Ubuntu installata,
in particolare Ubuntu 12.10 perch useremo un tool

Quando inserite un dispositivo USB


in Ubuntu, il sistema mostrer
il contenuto di tutte le partizioni presenti

ImageWriter

State per usare un tool chiamato ImageWriter


come front-end grafico per scrivere limmagine
di Raspbian sulla SD. Se come vi abbiamo
suggerito prima state usando una versione non
recente di Ubuntu, lo potete installare senza
sforzi dallUbuntu Software Center: lo trovate
nella barra sulla sinistra dello schermo, licona
con una busta. Inserite imagewriter nella
casella di ricerca e dovrebbe apparirvi un solo
risultato. Fate doppio click su questa voce
e nella schermata successiva scoprirete che
il tool disponibile e installabile con un click.
Inoltre potete leggere che il tool non

70

non pi disponibile dalla 13.04 in poi. Recuperata


Ubuntu 12.10 e Raspbian, verificate la scheda SD:
inseritela nel lettore di card e dovreste vedere
apparire la sua icona nel desktop (o pi di una
se ci sono pi partizioni). Vi ricordiamo ancora che
gli eventuali dati presenti nella SD verranno cancellati
installando Raspbian, quindi questo il momento
per mettere al sicuro ci che vi pu servire.

Linux pro 136

direttamente supportato da Ubuntu, ma viene


sviluppato e aggiornato dalla comunit.
Se non lo trovate, dovete attivare il repository
Universe in Sorgenti software: trovate questo
tool facendo una ricerca nella Dash di Unity.
Inserite la vostra password e il programma
verr scaricato e installato.
Tutto funziona anche se state usando Ubuntu
in modalit Live, perch il pacchetto
di ImageWriter piccolo, diversamente
dallimmagine di Raspbian per la RP.
Ora, con ImageWriter installato e la scheda SD
montata, siete pronti a procedere.

ImageWriter disponibile nelle vecchie versioni


di Ubuntu. DallURL www.ubuntu.com/download/
desktop potete scaricare la release 12.04 LTS

Raspberry Pi Tutorial

Scrivete limmagine

Dovete avviare ImageWriter dopo aver collegato


il lettore di schede e aver inserito la SD, altrimenti
ne lamenter lassenza. Quando appare la finestra
principale (dopo aver inserito la vostra password
di amministratore) dovrete indicare la posizione
dellimmagine da scrivere e poi su quale device
effettuare la scrittura. Questo secondo dettaglio
molto importante perch se avete pi di un
dispositivo collegato (come un disco USB
o una chiavetta), dovete fare attenzione
a scegliere quello corretto. La stessa attenzione
la dovete avere con Windows o Mac OS X,
ma con Linux almeno avete la certezza che

ImageWriter ha bisogno solo di unimmagine


da scrivere e di una scheda SD su cui fare
loperazione. Facile, no?

simile a quello della partizione root del vostro


disco fisso o del LiveCD di Ubuntu, questo perch
entrambi i sistemi derivano dalla stessa
distribuzione genitrice, Debian. La cartella home,
per esempio, contiene la cartella base
per lutente, dove si possono memorizzare
i file personali. Raspbian preconfigurata
con un unico utente, chiamato pi, ma potete
aggiungerne altri con facilit (vedrete apparire
le home dei nuovi utenti dentro la cartella home).
Quando avete finito, smontate la SD e inseritela
nellalloggiamento della Raspberry Pi.

Linux pu leggere le partizioni Windows,


OS X e Linux, ovviamente

la scheda SD. Quello che vedete uno dei log


di sistema e dovete cercare la linea simile a sdb:
sdb1. Questo vuol dire che il sistema ha individuato
il nuovo dispositivo e gli ha assegnato un nodo
nel filesystem (sdb - sdb1 la prima partizione
su sdb). Dovrebbero esserci altre righe, poich
Linux cerca di leggere il filesystem e montarlo.
Se viene montato, smontatelo dalla GUI e poi
digitate sudo dd bs=1M if=raspbian.img of=/
dev/sdX sostituendo il nome del file immagine
con quello del vostro file e sdX con il nodo della
vostra scheda SD. Premendo Invio limmagine
verr scritta sulla scheda.

Potete bloccare lesecuzione di dd premendo


Ctrl+C in qualunque momento

Provate la SD

Diversamente da Windows e OS X, Linux


lunico sistema operativo che pu leggere
entrambe le partizioni create sulla SD. La prima
formattata in FAT ed di circa 60 MB.
Questa partizione serve per il boot prima
di lasciare il controllo alla seconda partizione.
Questa seconda partizione occupa una buona
fetta dello spazio rimanente sulla SD (circa 2,7
GB) con il filesystem Linux. Visto che in Ubuntu
potete vedere entrambe le partizioni, avete
loccasione di osservare per bene cosa
contengono. Quella Linux ha un aspetto

ImageWriter non selezioner per sbaglio il vostro


disco fisso. ImageWriter vi mostra anche il nome
del dispositivo selezionato, cosa che vi aiuta
a scegliere in modo esatto. Quando tutto
pronto, premete il pulsante scrivi a strumento
(eh s, la traduzione un po zoppicante)
e aspettate la conclusione delloperazione.
Se non vedete lampeggiare il LED del lettore
di schede, ricontrollate che tutto sia stato
selezionato nel modo giusto.
Nel nostro caso ci sono voluti circa 15 minuti,
con la barra di progresso che ci ha tenuto
aggiornati sulla situazione.

Installazione alternativa

C un altro metodo per installare Raspbian


su una SD e ve lo diciamo nel caso la prima via
non sia praticabile. Ma fate attenzione: usando
questo metodo potreste cancellare accidentalmente
il contenuto del vostro disco fisso, quindi state
attenti. Il metodo implica luso del comando dd
dalla shell. Questo comando accetta in input un file
immagine e lo scrive byte per byte su un altro
device. Indicate la destinazione sbagliata
e sovrascriverete lhard disk e tutti i vostri file.
Per capire qual il device corretto, per prima cosa
staccate la scheda SD e lanciate il Terminale.
Ora digitate tail -f /var/log/syslog e inserite

Linux pro 136

71

Tutorial Raspberry Pi

In caso di problemi
nove volte su dieci non vi servir quanto scritto in queste due pagine,
la vostra rp far semplicemente il boot. Ma se qualcosa va storto
Questo indica che il dispositivo sta ricevendo il giusto quantitativo
di corrente; questo LED dovrebbe rimanere acceso fintanto
che la scheda rimane alimentata. Anche senza connessione
di rete, o se la SD non inserita nel suo slot, questo LED deve
rimanere acceso. Se lampeggia, o si spegne, state alimentando
la scheda in modo sbagliato, quindi la prima cosa da fare
controllare il cavo di alimentazione e lalimentatore.
Con la scheda SD inserita, deve lampeggiare il primo LED
che segnala la lettura dei dati dalla scheda.

Sequenza di boot

a grande differenza tra la raspberry pi e un pC


che la rp non ha un BioS. il BioS il primo software
che vedete quando accendete il computer quella
schermata dal sapore antico piena di testo che vi mostra
i dettagli su Cpu, memoria e dischi in un decimo di secondo per
poi far sparire tutto. Se c un problema con il vostro pC, il BioS
spesso pu essere usato per risolvere lintoppo al boot.
inoltre questo software integrato nella scheda madre pu
emettere fastidiosi beep e accendere LED per segnalarvi che
qualcosa non va. Ma senza queste facilitazioni offerte dal BioS,
la raspberry pi non ha le stesse possibilit; anche se si spera
che la scheda faccia il boot senza problemi, prima o poi
qualcosa potrebbe accadere. Ed ecco perch dovete leggere
queste due pagine, come si dice di solito: prevenire meglio
che curare.

Il signicato dei LED


Lunico elemento che pu fornirvi qualche indizio sul
funzionamento del computer linsieme di LED presenti
a fianco del jack audio e delle porte uSB. il modello B della rp
ha cinque LED, mentre il modello A solo due, anche se le label
stampate rimangono.
LED1 Verde, denominato oK (o ACT): accesso alla SD
LED2 rosso, denominato pWr: i 3,3V sono presenti
LED3 Verde, denominato FDx: LAn Full Duplex connessa
LED4 Verde, denominato LnK: Link/Attivit LAn
LED5 Giallo, denominato 10M: 100Mbit (LAn) connessa
Visto che il modello A non ha la porta di rete, gli ultimi tre LED
sono assenti sul pCB; inoltre se avete le prime revisioni della rp
(quelle con solo 256 MB di rAM, per esempio)
la denominazione dei LED potrebbe essere leggermente diversa,
anche se le funzioni sono identiche. Quando collegate la rp
alla corrente, il LED rosso LED2 dovrebbe illuminarsi.

72

Linux pro 136

inizialmente il LED1 lampegger, poi far una pausa e infine


torner ad accendersi e spegnersi man mano che la rp legge
i dati dalla SD. Se ci non avviene la causa potrebbe essere
che il codice di boot non stato scritto correttamente oppure
che per qualche motivo la scheda non compatibile con la rp.
Assicuratevi che la scheda sia inserita correttamente e anche
che i connettori della rp siano ben saldi, alcuni hanno lamentato
alcuni problemi di questo tipo. anche possibile capire a quale
stadio del processo di boot la rp si fermata.
Di seguito trovate un elenco delle varie sequenze di lampeggi
che il LED oK pu fare, assieme al loro significato.
Abbiamo trovato questo elenco nel forum della rp, controllate
voi stessi se avete bisogno perch il significato potrebbe
cambiare con il variare della versione del firmware. Vi facciamo
notare che avventurarvi nella comprensione del processo di boot
non facile e nonostante possa dimostrarsi divertente, anche
un po frustrante.
3 lampeggi: loader.bin non trovato
4 lampeggi: loader.bin non avviato
5 lampeggi: start.elf non trovato
6 lampeggi: start.elf non avviato
un aggiornamento del firmware di fine 2012 ha cambiato
il significato di alcuni casi:
3 lampeggi: start.elf non trovato
4 lampeggi: start.elf non avviato
7 lampeggi: kernel.img non trovato
possibile risolvere gli intoppi cercando i file coinvolti
e assicurandosi che siano corretti. Date unocchiata a una cosa
chiamata checksum e assicuratevi che questo valore per i file
sulla scheda sia uguale a quello dichiarato per i file originali.
Comunque pi spesso questi errori sono dovuti a una mancata
lettura della scheda SD oppure al fatto che il sistema non stato
scritto bene. provate a rifare la procedura di scrittura su una
nuova SD con un modo diverso: la nostra guida precedente
vi ha mostrato quattro possibili vie per scrivere raspbian su una
SD, quindi potete scegliere senza problemi una via alternativa.
inoltre, nelle nostre prove, a volte le cose non sono andate
per il verso giusto quando abbiamo usato il lettore SD integrato
nel pC, pertanto vi consigliamo di usarne uno uSB per scrivere
il sistema sulla SD.

Raspberry Pi Tutorial

Networking
Se la vostra Raspberry supera in modo indolore la prima fase
del boot, il sistema operativo partir regolarmente. In questa fase
dovreste vedere il primo LED verde rimanere acceso
per la maggior parte del tempo, visto che ci sono molti dati
da leggere e poco tempo per farlo. La velocit del lampeggio
dipende dalle caratteristiche velocistiche della SD che state
usando. Subito dopo linizio dellavvio di Linux dovreste vedere
lampeggiare anche il quarto LED (LNK) seguito dal LED della
rete che si illumina un istante dopo. Questo accade non appena
lo stack di rete viene inizializzato e forma un link con la rete
Ethernet. Lo stato di questi LED ricalca quello dei LED presenti
nelle porte delle schede di rete dei PC e se segnalano problemi
molto facile che ci sia dovuto alla LAN e non alla RP.
Il LED arancione indica una connessione full duplex.
Se una connessione era full duplex o solo half duplex
importante quando si parla di networking, perch vuol dire
che pu essere usata solo una direzione di trasmissione.
Questo ovviamente ha un impatto sulla velocit e lefficienza,
ma raro incappare in un collegamento half duplex oggigiorno.
Dovreste sempre vedere questo LED accendersi indicando full
duplex, cio con i dati che possono essere inviati e ricevuti
in contemporanea. Tutte le reti moderne funzionano in questo
modo. Il LED LNK lequivalente di rete del LED ACT
per laccesso alla SD perch lampeggia mentre i dati transitano
sul cavo di rete. Se il LED si accende, potete desumere
che, almeno a basso livello, il vostro hardware riuscito
a negoziare una connessione con lo switch che gestisce la LAN.
Questo per non vuol dire necessariamente che la rete funzioni

e che possiate navigare sul Web o controllare le email.


perfettamente possibile notare attivit in questo LED
man mano che i dati transitano e avere al contempo una RP
che non attiva in LAN. In questi casi dovete ricontrollare bene
la configurazione della rete locale, per prima cosa assicurandovi
che alla scheda sia stato assegnato un indirizzo IP corretto
dal router. Poi controllate il setup di Raspbian: questa distro
capace di configurarsi in molte situazioni, ma potrebbe
non essere cos se la vostra LAN un po strana ad esempio
se state usando due domini o un paio di router diversi. Lunico
modo di risolvere questi problemi provare la RP nel ramo
pi semplice della vostra rete e poi lavorare sulla configurazione.
Lultimo LED usato per indicare la velocit della rete.
Se acceso, allora la RP ha negoziato una velocit di 100Mbps,
cio 1.000.000 di bit di dati al secondo o 100 Megabit, nota
anche come connessione Fast Ethernet. Questa situazione
decisamente migliore del caso in cui il LED non si accende.
In quel caso la RP sta andando a soli 10Mbps. Purtroppo
la Raspberry non supporta le connessioni Gigabit; il motivo
che la porta Ethernet implementata attraverso il bus USB 2
(che ha una velocit di punta teorica di 480Mbps), quindi
c un limite nella banda disponibile che impedisce di andare
oltre la Fast Ethernet. Comunque la velocit offerta dai 100Mbps
pi che sufficiente per il normale uso, considerando che fino
a pochi anni fa era la velocit offerta da tutti i device. Potreste
incappare in un collo di bottiglia solo nel caso vogliate usare
la RP come NAS oppure per fare streaming di filmati in alta
risoluzione. In tutti gli altri casi luso della connessione di rete
non costituir un limite per voi. LXP

I LED
lampeggianti
sulla RP sono
ipnotizzanti,
ma sono anche
la chiave
per risolvere
eventuali problemi
durante luso

Linux pro 136

73

Hacker Zone Log di sistema

Ricevere avvisi via mail


I tool che registrano i log di sistema sono potentissimi programmi di monitoraggio.
Vi spieghiamo come filtrare i tanti dati generati e ricevere le cose utili via mail

el vostro computer in esecuzione continua, zitto


zitto, in background, un programma chiamato system
logger, o syslog. Questo software raccoglie
informazioni da tutti gli altri programmi che stanno girando
nella vostra Linux box esso conosce il vostro sistema meglio
di Google o Facebook. Le applicazioni devono comunicare
con le persone. Un programma interattivo dotato
di interfaccia grafica pu far apparire una finestra per dire

Qualcosa andato storto o Lavoro finito, ma


unapplicazione che gira in background non pu farlo.
Ogni software pu includere una parte di codice che
si occupa di creare un log da qualche parte, ma questo
vorrebbe dire ritrovarsi file di log sparsi un po ovunque
oppure dare a tutti i tool i privilegi di root affinch possano
scrivere in una stessa cartella. Il demone syslog vi viene
in soccorso in questo caso: unapplicazione invia i suoi
messaggi a syslog, quindi il programmatore non deve scrivere
del codice ad hoc per scrivere i log, ed syslog che si occupa
di scriverli nel file corretto, quindi solo esso deve avere
privilegi pi elevati. Questo vuol dire anche che potete
raccogliere i messaggi di tutti i programmi in un unico file
senza che si generino conflitti dovuti allaccesso simultaneo
al file da parte di software diversi. Fa tutto syslog.
Come capita molto spesso in GNU/Linux, non c un solo
logger di sistema, bens ne esistono diversi, ognuno
con dei pro e dei contro. Tutti, per, offrono la stessa
interfaccia verso il sistema, risultando in qualche modo
intercambiabili. La differenza principale che noterete nella
posizione del file di log creato, che vive sempre in /var/log
ma pu essere chiamato in modi diversi (per esempio
messages, current o syslog) a seconda del demone di syslog
installato dalla vostra distro. I tool di log pi gettonati sono
syslog-ng, rsyslog e metalog. Negli esempi seguenti
useremo il file /var/log/messages, ma voi sostituitelo
con quello usato dal vostro logger. In tutti i casi il formato
del log sempre lo stesso, con una voce per ogni linea;
ecco un esempio tipico:
Nov 29 15:34:34 hactar sudo: nelz : TTY=pts/2 ; PWD=/
home/nelz ; USER=root ; COMMAND=/sbin/fdisk /dev/sda
I primi due elementi sono ovvi, la data e lora. Poi c
lhostname. I logger di sistema possono inviare messaggi
a un altro computer, in questi casi la presenza dellhostname
assume fondamentale importanza. Lelemento successivo indica
il programma che sta scrivendo la riga di log in esame, in questo
caso sudo, mentre la parte restante il messaggio salvato
da sudo; nellesempio ci dice chi ha eseguito cosa nel sistema.

Ogni log ha una coda

Logwatch
vi fornisce
un pratico
report di ci
che accaduto
nel PC nellultima
giornata

74

Linux pro 136

Quindi avete questo file che risiede in /var/log e contiene


tutta una serie di informazioni sul vostro sistema, ma come
potete usarlo? Esistono due impieghi principali: uno come
strumento diagnostico per capire cosa andato storto quando
vi accorgete che il sistema non funziona come dovrebbe.
Il secondo, ed qui laspetto pi hacker della storia, come
tool per monitorare attivit sospette, come tentativi ripetuti
di login remoto senza successo provenienti dallo stesso
indirizzo IP. Lesempio pi semplice del primo caso la lettura
del file di log con un pager come less o la ricerca nel file
con grep. Se conoscete il nome del programma
imbizzarrito, trovare le linee corrispondenti facile.

Log di sistema Hacker Zone


Potete anche usare tail per esaminare il log in modo
interattivo:
tail -f /var/log/messages
Vedrete le ultime 10 linee del log e poi ogni nuovo messaggio
che si va ad aggiungere in coda. Se eseguite questo comando
prima di compiere una qualche operazione, potrete tenere
sotto controllo quanto sta accadendo. Per esempio, inserite
una chiave USB e vedrete qualcosa del genere:
Nov 30 09:24:34 hactar kernel: [15796.301313] sd
7:0:0:0: [sdb] Attached SCSI removable disk
Nov 30 09:24:35 hactar udisksd[1890]: Mounted /dev/sdb1
at /media/ninjak/0C90-0006 on behalf of uid 1000
Come vedete il kernel ha inviato un messaggio e potete
vedere il device associato alla chiave USB, un particolare
da guardare bene se dovete scriverci qualcosa con dd!
La lettura di un log qualcosa da fare quando si deve
risolvere un problema, non un passatempo, ma ci possono
essere dei messaggi importanti che vengono scritti mentre
non state guardando. Ci sono dei programmi, per, che
vi possono dare un supporto, uno di questi logwatch
(www.logwatch.org). Questo tool legge il log di sistema
una volta al giorno e vi invia per email un report su qualunque
attivit sospetta. Il file di configurazione di default si trova
in /usr/share/logwatch/default.conf/logwatch.conf
ma non cercate di modificarlo, visto che verrebbe sovrascritto
al prossimo aggiornamento. Dovete mettere le vostre
impostazioni in /etc/logwatch/conf/logwatch.conf,
che ha precedenza sul file di configurazione di default.
Potete creare il file da zero ma conviene copiare quello
di default e poi personalizzarlo secondo le vostre esigenze.
Quantomeno dovete impostare il campo MailTo con il vostro
indirizzo email per linvio del report e magari definire anche
MailFrom per individuare al volo la mail. Potete aggiungere
anche Format = html se volete ricevere un report ben
formattato in HTML invece che in semplice testo.

Logwatch & Logcheck


Altre impostazioni chiave sono: Detail che precisa il livello
di informazione incluso nella mail; Range, il periodo coperto
da ogni mail; Service, che seleziona le particolari scansioni
da eseguire. Il valore di default per questultima voce si spiega
da sola: All, ma potete anche rimuovere dei servizi da questo
controllo con
Service = -foo
per rimuovere il servizio foo. I servizi sono definiti in usr/
share/logwatch/scripts/services, con uno script per ogni
servizio che contiene una descrizione. Essi sono configurati
con i corrispondenti file in /usr/share/logwatch/default.
conf/services. Come con il file di configurazione principale,
ognuno di essi pu essere copiato nella directory equivalente
dentro /etc/logwatch e da qui pu essere modificato.
In particolare, potete cambiare il livello di dettaglio per ogni
servizio per avere pi o meno informazioni nel report.
Logwatch vi fornisce una comoda panoramica sulle attivit
quotidiane. Noi lo troviamo molto utile per individuare attacchi
SSH, ma potreste volere qualcosa di pi immediato.
Per questo possibile ricorrere a logcheck (http://
packages.debian.org/sid/logcheck). Questa una pagina
di Debian, ma il programma disponibile per la maggior parte
delle distro. Funziona in modo simile a Logwatch
ma progettato per essere eseguito pi di frequente;
la configurazione standard prevede lesecuzione ogni ora.

I suoi report sono meno dettagliati rispetto a quelli


di Logwatch, ma fornisce comunque unottima vista su quanto
accade nella Linux box. A ogni report logcheck tiene traccia
del punto in cui si fermato e da l riprende per il report
seguente. Dopo aver installato logcheck potete agire su due
file di configurazione. In /etc/logcheck/logcheck.conf potete
impostare REPORTLEVEL a Workstation, Server
o Paranoid. Il secondo valore quello di default, ma potete
usare Workstation per un normale sistema desktop.
SENDMAIL ovvio, ma deve essere impostato, mentre
definendo SYSLOGSUMMARY a 1 potete ottenere
un riassunto degli eventi registrati nel log piuttosto che una
lista grezza (affinch ci funzioni dovete installare il pacchetto
extra syslog-summary). Laltro file /etc/logcheck/
logcheck.logfiles, che contiene una lista dei file
da controllare per syslog-ng questo semplicemente /var/
log/messages. Ora ricevere ogni ora una mail con le nuove
voci presenti nel file di log di sistema. Forse troverete queste
mail un po troppo prolisse; c un elenco di messaggi
da ignorare ma non molto esteso. Sicuramente vorrete
aggiungere qualche voce a questo elenco, specialmente
se avete dei task Cron che entrano in funzione di frequente.
Se guardate in /etc/logcheck/ignore.d.workstation
(o server se usate questo profilo) potete vedere i file contenenti
le espressioni regolari da ignorare. Non modificate questi file
ma piuttosto createne uno nuovo, per esempio chiamato local.
Ogni sua linea unespressione regolare il cui risultato
da ignorare; per fare un esempio, se non volete che venga
registrato il precedente inserimento della chiave USB nel PC,
Nov 30 09:24:34 hactar kernel: [15796.301313] sd
7:0:0:0: [sdb] Attached SCSI removable disk
potete usare questa espressione regolare:
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel: sd .* Attached SCSI
removable .*
Pu apparire un po arcana, ma segue il formato delle regole
esistenti. La prima parte identifica ora, data e nome dellhost,
poi cerca kernel seguito da una stringa che contiene Attached
SCSI removable. Dovete cercare di creare espressioni regolari
il pi precise possibile per evitare dei falsi positivi.
Potete verificare la bonta di una espressione con egrep:
egrep -f /etc/logcheck/ignore.d.workstation/local /var/log/
messages
Questo comando vi mostrer tutte le linee che corrispondono
a quanto indicato nellespressione regolare e che non volete
appaiano nei report di logcheck. LXP

Logcheck
vi offre
un report orario
su quanto
avviene nel
computer,
ma dovete
modificare la sua
configurazione
per non essere
sommersi
dai messaggi

Linux pro 136

75

Concetti

Hai qualche linguaggio da suggerirci? Scrivici a accademia_codice@linuxpro.it

Ritorno alle basi:


organizzazione dei dati
Lo staff di Linux Pro vi mostrer come utilizzare SQL e un database
relazionale per strutturare la vostra collezione di musica rock anni 70

el numero scorso abbiamo parlato di come rendere


persistenti i dati utilizzati allinterno di un programma
Python. La tecnica utilizzata era molto basilare,
e per quanto utile possa essere, non sicuramente la migliore
per gestire una grande mole di dati. Quando la vostra applicazione
cresce, le prestazioni diventano sempre pi importanti e potrebbe
nascere la necessit di instaurare delle relazioni tra i vari dati;
a questo punto diventa obbligatorio utilizzare altre tecnologie, come
un database a oggetti oppure un database relazionale. Dato che
i database relazionali sono lo strumento pi utilizzato per gestire
la complessit dei dati, in questo tutorial parleremo di questo
e andremo a illustrarvi il linguaggio utilizzato per gestire i database
relazionali (che viene chiamato SQL, Structured Query Language).
una volta apprese le basi, potrete iniziare a integrare i database
relazionali nel vostro codice. Prima di cominciare assicuratevi
di avere MySQL installato e di avere accesso alla sua console:
mysql -uroot
Se avete impostato una password utilizzate lo switch -p per
inserire i dati di login. Con MySQL pronto possiamo iniziare
a lavorare sul database per gestire la nostra collezione di musica.

Relazioni
Iniziamo pensando a quali informazioni vogliamo inserire nella nostra
collezione. Potremmo iniziare pensando in termini di CD che
possediamo. Ogni CD un singolo album, ogni album contiene
diverse informazioni, o attributi, come lartista a cui appartiene,
e le tracce presenti in esso. Potremmo inserire tutti i dati in ununica
tabella, come quella qui sotto: funziona, ma contiene molti dati
superflui. Per ogni traccia dello stesso album, ci ritroviamo molte
informazioni duplicate come la durata dellalbum, il suo nome, lanno
di pubblicazione e tutte le informazioni legate allartista, il suo nome
e lanno di fine carriera. Questo approccio, oltre a essere molto
ripetitivo e occupare molto pi spazio del dovuto, rende la ricerca
tra le informazioni molto lenta, difficile da interpretare e complica
moltissimo la modifica dei dati. I database relazionali risolvono questi

Dati duplicati

76

Album

Free At Last

Free At Last

Artista

Free

Free

Traccia

Little Bit of Love

Travellin Man

Durata

2:34

3:23

Durata album

65:58

65:58

Anno

1972

1972

Fine carriera

1973

1973

LINux PrO 136

Database relazionale
Album

Free At Last

Durata

65:58

Anno

1972

Id_Artista

problemi permettendo di suddividere i dati e salvarli in un formato


molto pi utile ed efficiente. Ci permettono di identificare entit
separate allinterno del database che vengono salvate in tabelle
differenti. Nel nostro esempio, potremmo dividere le informazioni
relative allalbum, allartista e alle tracce in tabelle separate.
A questo punto potremo avere un singolo dato per lartista Free
(che contiene il nome e lanno di fine carriera), un singolo dato per
lalbum Free At Last (che contiene il nome, lanno di pubblicazione
e la durata), e un singolo dato per ogni traccia (che contiene tutti
i dati legati alla traccia) ognuno nella propria tabella. Tutti i dati
duplicati sono spariti, ma ora sono separati su diverse tabelle,
cosa succede se vogliamo mostrare tutte le informazioni di una
singola traccia, incluso lartista che lha prodotta e lalbum a cui
appartiene? Qui dove la parte relazionale entra in gioco.
Ogni riga allinterno di una tabella deve essere in qualche modo
identificabile, e per questo deve avere una colonna che contenga
dati unici (per esempio se il nome dellartista univoco o il titolo
dellalbum), oppure una combinazione di colonne (per esempio
il nome dellalbum e lanno di produzione). Queste colonne univoche
sono chiamate chiave primaria. Siccome una chiave primaria
naturale (una o pi colonne che abbiamo la certezza conterranno
sempre dati diversi) non esiste normalmente in una tabella, potete
aggiungerne una artificiale, un ID che si incrementi in automatico.
Possiamo quindi aggiungere una colonna supplementare a tutte
le nostre tabelle che funga da chiave primaria. Per esempio,
consideriamo la tabella qui sopra. Invece di inserire tutte
le informazioni relative allartista nella tabella, abbiamo
semplicemente specificato lID unico di una riga di unaltra tabella,
chiamata probabilmente Artista. Quando vogliamo mostrare
le informazioni di questo album a un utente, possiamo prendere
le informazioni relative allartista direttamente dalla tabella
corrispondente, recuperando dalla tabella i dati relativi allartista
con ID 1 e visualizzarli insieme ai dati dellalbum.

SQL
Quanto detto finora , molto semplicisticamente, il funzionamento
di un database relazionale. Suddividere le informazioni in pezzi
riutilizzabili, e gestibili, e manipolare le relazioni che intercorrono

Concetti
tra i vari pezzi. Per creare le tabelle sul database, gestire
le relazioni, inserire i dati e interrogarli, molti database relazionali
utilizzano SQL, e ora che sapete cos una tabella e cos
una relazione, possiamo mostrarvi come crearle e utilizzarle
in SQL. Dopo aver effettuato il login nella console MySQL
la prima cosa che dobbiamo fare creare un database.
Il database il contenitore di tutti i dati, per questo dobbiamo
crearlo prima di fare qualsiasi cosa. Per farlo sufficiente
utilizzare lo statement create database:
create database musicalxp;
Da notare il punto e virgola alla fine dellistruzione: tutte
le istruzioni SQL devono terminare con un punto e virgola.
Nellesempio abbiamo utilizzato tutte lettere minuscole ma SQL
non case sensitive quindi potete utilizzare maiuscole o minuscole
a vostro piacimento. Ora che abbiamo un database, dobbiamo
accederci. In MySQL la maggior parte dei comandi relativa
al database selezionato, un po come funziona con le cartelle
nella console Linux. Potete cambiare database utilizzando
il comando use:
use musicalxp;
Ora creiamo alcune tabelle:
create table Album (

Id_Album int auto_increment primary key,

nome varchar(100)
);
create table Traccia (

Id_Traccia int auto_increment primary key,

titolo varchar(100),

durata int,

Id_Album int
);
La cosa pi ovvia da notare che abbiamo eseguito due comandi,
separati da punto e virgola, e che abbiamo suddiviso i due
comandi su pi righe. A SQL non interessano gli spazi bianchi,
quindi potete suddividere il vostro codice come preferite, fintanto
che utilizzate la punteggiatura giusta nei posti giusti. Per quanto
riguarda il comando in s potete notare che assomiglia molto
allo statement create database. Abbiamo specificato lazione
che vogliamo compiere, il tipo di oggetto su cui vogliamo operare
e le propriet delloggetto. Quando abbiamo utilizzato create
database, lunica propriet che abbiamo aggiunto era il nome
del database; con create table invece, abbiamo aggiunto anche
diverse propriet aggiuntive allinterno di parentesi e separate
da virgola. Queste propriet sono conosciute come definizioni
di colonne, e ogni dato separato da virgola descrive una colonna.
Per prima cosa diamo un nome alla colonna, descriviamo poi
quale tipo di dato andr a contenere (questa parte necessaria
in quasi tutti i database) e poi definiamo eventuali altre propriet
aggiuntive della colonna, per esempio se parte della chiave
primaria. La keyword auto_increment fa s che non ci si debba
preoccupare del valore di Id_Traccia quando si inseriscono i dati,
in quanto MySQL si occuper di inserirci allinterno un valore
intero che si incrementa a ogni nuova riga inserita nella tabella,
creando una chiave primaria. Potete trovare molto altro
relativamente allistruzione create table allindirizzo http://dev.
mysql.com/doc/refman/5.7/en/create-table.html (in inglese).

Inserimenti e interrogazioni
Inserire un dato allinterno di una tabella molto semplice:
insert into Album (nome) values (Free at Last);
Ancora una volta, abbiamo specificato lazione e loggetto

MariaDB un valido rimpiazzo per MySQL e sta rapidamente conquistando


consensi in diverse distribuzioni incluse Mageia, OpenSUSE e perfino Slackware

poi abbiamo aggiunto le colonne nelle quali volevamo inserire


un valore e infine i valori. Prima di poter inserire un dato
nella tabella Traccia, comunque, dobbiamo scoprire
qual lID dellalbum Free At Last, altrimenti non saremo
in grado di collegare i due dati. Per fare ci, dobbiamo
utilizzare lo statement select per interrogare il database
(linterrogazione al database viene comunemente
chiamata query):
select * from Album where nome = Free At Last;
Questo comando dice che vogliamo vedere tutte le colonne
di tutte le righe della tabella Album il cui campo nome
corrisponde a Free At Last. In realt si spiega da solo.
Se avessimo voluto avere soltanto lID, sarebbe stato
sufficiente sostituire lasterisco con Id_Album e la query
ci avrebbe mostrato soltanto quella colonna. Siccome
a noi ha restituito il valore 1 (essendo il primo inserimento
nel database), possiamo inserire una traccia in questo modo:
insert into Traccia (titolo, durata, Id_Album) values (Little Bit
of Love, 154, 1);
La cosa pi importante da notare che abbiamo specificato
la durata in secondi e salvata come integer. In molti database
necessario specificare il tipo di dati che la colonna contiene,
e alcune volte questo significa che dovete salvare sul database
i dati in un formato diverso da quello che utilizzerete per
visualizzarli nella vostra applicazione. Sar quindi necessario
scrivere un po di codice per convertirli prima di poterli
mostrare. MySQL offre una vasta gamma di tipi di dati quindi
la maggior parte delle eventualit contemplata. Questo
tutto ci che lo spazio a nostra disposizione ci consente
di trattare per questo mese, ma non lasciate che la vostra
conoscenza di MySQL si fermi qui. Ora che avete visto le basi,
potreste approfondire la conoscenza delle chiavi esterne
e dei join, due tecniche un po pi avanzate che vi
permetteranno di esprimervi molto pi creativamente con
SQL. Potreste approfondire anche le differenze tra i vari tipi
di relazioni, uno-a-uno, uno-a-molti, molti-a-uno e molti-amolti. Se infine volete integrare MySQL al vostro linguaggio
di programmazione, potete cercare un modulo che vi permetta
di farlo, come python-mysql per Python. LXP
Linux pro 136

77

C++
PartE 2

C++11: puntatori smart


Eccovi altri interessanti consigli sul C++, questa volta sfruttando lultima
versione disponibile del linguaggio di programmazione: C++11

n questo tutorial affronterete altri aspetti di C++. In particolare


vedrete i puntatori e il loro uso; imparerete qualcosa in pi
sullereditariet e qualcosaltro sui fondamentali del linguaggio.
Inoltre lavorerete con la versione attuale di C++, C++11

(del quale il padre di C++, Bjarne Stroustrup, disse C++11 sembra


un linguaggio totalmente nuovo). Ritroverete anche alcune
particolarit legate allereditariet introdotte nella scorsa puntata.
Tutti gli esempi sfrutteranno le classi Shape e Circle gi definite.

Puntatori e puntatori smart


C++ , in pratica, unestensione di C. Questo linguaggio
supporta i puntatori tipizzati e le espressioni dei puntatori.
Un puntatore (pointer) semplicemente una variabile
che pu registrare lindirizzo di unaltra variabile in memoria,
nel qual caso si dice che il puntatore punta alla variabile.
Un puntatore pu puntare potenzialmente a qualsiasi cosa del
tipo definito. Per esempio, un puntatore a int pu registrare
lindirizzo di un qualsiasi intero, ma non di altri tipi di dato.
Cos per tutti gli altri tipi di puntatori. Essi sono utilizzati
per varie ragioni: offrono una metafora comoda e pratica
con un bonus nascosto, il valore 0 indicante che il puntatore
non punta a nulla. Luso dei puntatori potenzialmente pi
efficiente delle alternative in alcuni casi, e in altri richiesto,
per esempio, per gestire gli indirizzi della memoria allocata
dinamicamente. Tali puntatori grezzi sono un mezzo molto
potente e altrettanto pericoloso. Errori anche minimi nei
puntatori possono portare a bug seri e talvolta difficili
da trovare. Per questo, C++ li completa con alcuni cosiddetti
puntatori smart, ognuno con un ventaglio di scorciatoie per
cui, alla fine, possono essere pi semplici e sicuri da usare di
quelli grezzi. Cos come quelli offerti dalla C++ Standard
Library, un utente pu potenzialmente scrivere il proprio
puntatore smart per i propri scopi. I puntatori base sono
definiti con la seguente sintassi:
int *p_int // definisce un puntatore (variabile)

Shape

Shape

oppure
int *p_int(0);
// o int *p_int = 0; // definisce e
inizializza
p_int = &i;
// imposta p_int perch punti a i
*p_int // utilizza il valore dellintero al quale p_int sta
attualmente puntando

Puntatori a costanti
Potete avere puntatori a valori di sola lettura, per esempio
const. importante notare, comunque, che una dichiarazione
o definizione della forma
const char *p;
(che definisce p come puntatore che il compilatore
controller) utilizzata solo per la lettura del dato puntato.
In altre parole al puntatore p negato laccesso in scrittura
delloggetto al quale punta (in questo caso il target di p un
char, o un array di char, se avesse valore 0 non punterebbe
a nulla). Nel codice che usa p il puntatore stesso non const:
pu essere cambiato, ma la cosa a cui punta (un char o array
di char in questo caso) non pu essere modificata attraverso
di esso. Per oggetti di una classe MyClass con un puntatore
definito cos
MyClass my_obj;
MyClass *p = &my_obj;
// definisce un puntatore p
che punta ad un oggetto pre-esistente (my_obj) del tipo
MyClass
i membri possono essere letti
p->m // valuta il membro m delloggetto my_obj
referenziato dal puntatore
Dal momento che i data member di una classe sono
tipicamente privati e le member function pubbliche,
la convenzione
p->mf(); // invoca la member function mf delloggetto
referenziato da p

Puntatori e array
Fig.1 Loggetto base e il derivato
in memoria. Un oggetto Circle
ha tutti i data member della classe
Circle, pi quelli della classe Shape
(per ereditariet), memorizzati
come mostrato

78

Linux pro 136

Circle

Gli array e i puntatori sono legati a doppio filo. Il nome


di un array viene trattato come un puntatore costante allinizio
dei suoi elementi: cio larray viene memorizzato da qualche
parte nella memoria e il suo indirizzo viene riportato
nel puntatore. Il compilatore tratta il nome dellarray, perlopi,
come il suo indirizzo. Una copia di questo valore pu essere
cambiata, e lelemento dellarray pu essere modificato

C++
a runtime, ma la variabile (nome) con la quale larray
definito avr un valore fisso corrispondente allindirizzo
dellarray in memoria. I nomi di array sono dunque trattati
come puntatori costanti. Viceversa, i puntatori possono essere
trattati come se fossero nomi di array allo scopo di indirizzare
elementi di array. quindi possibile scrivere una definizione
di questo tipo, per esempio:
int a[10]; // a un array di 10 int
oppure
MyClass a[10];
// a un array di 10 istanze di MyClass

Puntatori come parametri


di funzioni
I puntatori possono essere passati come parametri alle
funzioni, con lovvia sintassi, definendole per esempio cos:
void foo(int *p);
oppure
void foo(const int *p);
Nel secondo esempio la chiave const si applica alla referenza
del puntatore: possibile modificare il valore di p allinterno
della funzione, ma il compilatore non permetter a p
di cambiare la propria referenza in modo diretto.
Incidentalmente, dal momento che i nomi di array sono
perlopi trattati come puntatori allinizio (elemento 0)
dellarray, gli array stessi possono essere passati come
argomenti a funzioni che ammettano un puntatore
del tipo appropriato. Per esempio, dato
MyClass arr[7];
e
void foo(MyClass *pmc);
la funzione foo() pu essere chiamata semplicemente cos:
foo(arr); // arr un puntatore allinizio di arr
I puntatori possono essere altres ritornati dalle funzioni, cos:
int *bar(); // bar() ritorna un puntatore a int

Puntatori smart
ed ereditariet

Base
Derivata
Fig.2 Una generalizzazione dellesempio in Fig.1

La Fig.1 vi mostra quello che ci si potrebbe aspettare


in memoria per un oggetto Shape e un oggetto Circle.
Ci si aspetta che ognuno abbia poco o niente pi dei data
member delloggetto stesso. Perci un oggetto Circle
ci si aspetta abbia il data member radius, r, adiacente
a quelli della classe base (Shape), ovvero le coordinate x e y.
La Fig.2 mostra la stessa cosa generalizzata, per oggetti base
e derivati. La Fig.3, nella pagina successiva, mostra come
un puntatore a classe base possa puntare alla parte
base delloggetto derivato.

Puntatori e referenze
In molti casi la scelta tra luso dei tipi di puntatori e referenze
questione di gusti o convenzione. Una differenza semantica
importante, tuttavia,
che mentre una
referenza deve
referenziare qualcosa
(un oggetto che
contenuto nella sua
definizione), un puntatore
pu puntare a nulla.
Una funzione che accetta
un parametro per referenza avr loggetto corrispondente
disponibile allinterno della sua definizione; se il parametro
fosse passato come puntatore sarebbe necessario controllare
se il suo valore diverso da 0. Viceversa, una funzione
find(), per esempio, potrebbe ritornare un valore puntatore
indicante dove loggetto stato trovato, se lo stato;
un valore di 0 indicherebbe che loggetto non stato trovato
per nulla. Questa tecnica non sarebbe disponibile se il tipo
di ritorno fosse una referenza, dal momento che questultima
deve necessariamente referenziare un oggetto.

Normalmente
i puntatori possono
puntare solo a membri
del loro tipo

I puntatori smart sono oggetti


di classi disegnati per fare qualsiasi
cosa specifichiate possano fare,
quando sono usati con le sintassi
mostrate sopra. Cio, possono
essere inizializzati per referenziare
indirizzi specifici (tipicamente
valori) quando impiegati con
loperatore * e per accedere a membri quando usati
con loperatore ->. Per i puntatori smart, queste operazioni
sono definite come funzioni. Nel contesto dellereditariet,
un oggetto derivato trattato come un tipo di (a kind of,
AKO) oggetto del suo tipo base (seppure, come avete visto,
con possibili variazioni o estensioni della versione base).
In questo modo, un puntatore al tipo base pu puntare
a un oggetto di qualsiasi tipo derivato da tale classe
(normalmente i puntatori possono puntare solo a oggetti
del loro tipo; questo comportamento rispetto ai derivati
consistente: gli oggetti dei tipi derivati sono considerati
AKO delle loro basi). Questo comportamento pu essere
spiegato anche in termini di layout della base e derivato
in memoria. Considerate le classi Shape e Circle definite
nella prima parte del tutorial, con Circle pubblicamente
derivato da Shape aggiungendo un data member per il raggio,
il proprio costruttore e la propria implementazione di draw().

I puntatori nel C++ moderno


Con lampia disponibilit dei puntatori smart e dei componenti
standard che gestiscono i dettagli di allocazione
e deallocazione dinamica della propria memoria, luso
dei puntatori base diventato sempre meno necessario.
Per esempio i contenitori standard, come i vettori, possono
Linux pro 136

79

C++
essere espansi dinamicamente per registrare elementi
mano a mano che vengono aggiunti, e i distruttori
gestiscono la deallocazione.

Vantaggi per lembedded


I puntatori possono essere usati esplicitamente in codice
di basso livello e con necessit di altissime performance,
dove il piccolo overhead e la perdita di flessibilit
dei puntatori smart non sono pi accettabili. Nella maggior
parte delle applicazioni per ci si pu affidare alla sicurezza
e convenienza dei puntatori smart, disegnati comunque
per essere efficienti e flessibili. Quando gli oggetti sono
creati dinamicamente con new viene restituito lindirizzo
al quale sono stati allocati. Le espressioni dei puntatori
appaiono quando loperatore new usato in questo
modo, e normalmente devono essere salvate; possono
offrire, piuttosto, valori per argomenti utilizzati
immediatamente (per esempio per creare un puntatore
smart) oppure essere registrate in un puntatore grezzo
e riusate nel codice dellapplicazione. I puntatori e/o
le espressioni di puntatori sono necessari anche nelluso
di codice legacy (per esempio C) che presenti un tipo
di puntatore nellinterfaccia. Possono anche essere usati
in C++, a seconda dei gusti; la tendenza generale
tuttavia, come gi detto, di usarli sempre meno
a livello dellapplicazione.

Base

Base
Derivata

Puntatore
a classe base
Fig.3 Un puntatore alla classe base pu puntare a un oggetto
del tipo della classe base o (alla parte base di) un oggetto
del tipo di una qualsiasi classe derivata dalla base

Funzioni membro
Dato un oggetto avete visto che potete invocarne una funzione
membro con la sintassi
obj.mf(); // mf() una member function della classe obj
Potete avere diverse classi nel vostro sistema
con una member function chiamata mf.
Il compilatore si occuper di recuperare
quella appropriata per loggetto (obj) interessato
nella chiamata; la effettuer, in altre parole,
in base al tipo di oggetto.

Ereditariet
con funzioni non virtuali

Tip
Ogni directory
degli esempi di
codice contiene
un file Readme.
Leggetelo per
istruzioni sulla
compilazione!

80

Potete avere diverse


classi nel sistema
con una funzione
membro chiamata mf

In casi dove si abbiano classi relazionate tramite ereditariet,


le regole di cui sopra si applicano comunque. In particolare,
se la dichiarazione di una data funzione definita a diversi
livelli di un albero di ereditariet (o rete), allora:
base_obj.mf();
// chiama mf() di Base
derived_obj.mf();
// chiama mf() di Derived
Se la classe Derived non definisce mf() allora verr chiamata
la funzione della classe pi vicina da cui eredita che implementa
tale funzione. In modo simile, se invocate una funzione come:
derived_obj.ClasseParent::mf();
non verr richiesto che mf() sia effettivamente implementata
da ClasseParent, che potrebbe semplicemente ereditare
la definizione a sua volta. Il compilatore utilizzer la funzione
implementata dalla classe chiamata o dalla pi vicina che
la definisce; se non ne vengono trovate (per esempio non
definita nemmeno nella Base) scatener un errore
di compilazione. Se utilizzate puntatori a oggetti, allo stesso
modo la funzione invocata sar in base al tipo di puntatore
(e non al tipo delloggetto puntato). Per esempio, un puntatore

Linux pro 136

a Shape (Shape *) pensato per puntare a un oggetto di tipo


Shape; pu per puntare a oggetti derivati come Circle. Quando
viene invocata una funzione tramite puntatore, tale funzione
sar quella della
classe del tipo
definito dal
puntatore. Quindi
anche se il vostro
Shape* punta
a un Circle,
quando invocate
draw() con tale
puntatore verr chiamato il metodo di Shape:
Shape shp
// crea gli oggetti
Cicle c // con gli argomenti richiesti
Shape *sp(&shp);
Circle *cp(&c); sp->draw(); // chiama draw() di Shape
cp->draw();
// chiama draw() di Circle
// ma con
sp = cp; // ora sp punta ad un Circle
sp->draw();
// chiama draw() di Shape
Questo comportamento della selezione delle funzioni
in base al tipo dimostrato nel primo passo del box
della pagina successiva.

Ereditariet
con le funzioni virtuali
Spesso, comunque, il suddetto comportamento non quello
desiderato. Quello che volete invocare la funzione rilevante
per il tipo di oggetto. In casi come quello dellesempio, dove
state iterando con un puntatore a classe base, vorreste che

C++
la funzione fosse scelta in base al tipo delloggetto puntato,
non del puntatore. in maniera simile, potreste avere una
funzione che accetta un parametro di una classe base.
Se lo passaste per valore avreste loggetto classe base
allinterno della funzione, malgrado gli passiate un qualsiasi
derivato. Se passate largomento per puntatore, o riferimento,
al tipo base, e le funzioni rilevanti sono virtuali, allora le funzioni
da chiamare sono determinate in base al tipo delloggetto
puntato o riferito. Questo mostrato nel passo 2 del box
in questa pagina.

Override in azione
in conclusione, quando una funzione ridefinita a vari livelli
(prevalenza o override) in una gerarchia di ereditariet,
la funzione rilevante pu essere chiamata in base al tipo
di oggetto, ammesso che la funzione sia dichiarata come virtuale
nella classe base. Questo si applica in due scenari comuni:
avete una collezione eterogenea di oggetti su cui iterare
con un puntatore a classe base, e volete chiamare la versione
appropriata della funzione prevalente in base al tipo di oggetto;
state passando un oggetto come argomento puntatore
o riferimento a una funzione, e il tipo di parametro usato
un puntatore/riferimento alla classe base.
il concetto e la terminologia usati qui riguardano una funzione
prevalente a vari livelli in una gerarchia dereditariet.
in questo caso la funzione ha un nome e una sequenza di tipi
di parametro a tutti questi livelli (ovvero ha la stessa segnatura).
Anche i tipi di ritorno sono identici, eccetto il fatto che possano
differire restando allinterno, a loro volta, di una gerarchia
dereditariet. Questo diverso dal sovraccarico (overload),
dove le funzioni hanno un nome comune ma diverse
sequenze di parametri.

Esempi
Gli esempi illustrano alcune caratteristiche del C++
proseguendo il disegno, allo scopo di renderizzarlo finalmente

a schermo. potete modellare il vostro disegno creando


una collezione arbitraria di forme e chiedendo a queste
ultime di disegnarsi; effettuerete questo iterando sulle
forme e chiamando la funzione appropriata per ognuna
(potrebbe servire effettivamente, per esempio, ogni volta
che la finestra viene spostata o ridimensionata). La libreria
C++ standard offre diverse classi contenitori e alcuni
algoritmi utili che possono essere usati in questo caso.
Volete che il contenitore possa memorizzare una collezione
eterogenea (Circle, rectangle, ecc.). Qualsiasi contenitore
standard C++ pu memorizzare una collezione di elementi
di tipo identico (in quel caso si chiama collezione omogenea).
potete, tuttavia, gestire le collezioni eterogenee se il
contenitore memorizza una collezione di puntatori
od oggetti simili a puntatori, ognuno puntante a un oggetto
derivante da Shape. in questo modo il contenitore sta
registrando logicamente una collezione eterogenea, mentre
fisicamente registra una collezione omogenea di oggetti
(elementi che puntano a oggetti).

Compilare gli esempi


Come prima, il codice desempio che trovate nel DVD allegato
(nel lato B) fornito di file readme.txt per mostrare
i comandi rilevanti usando g++. La maggior parte degli
esempi illustreranno specificamente le particolarit di C++11,
quindi per compilarli dovreste avere un compilatore
ragionevolmente moderno, g++ 4.6.3 o superiore.
La libreria C++ offre effettivamente da tempo diverse
classi per le collezioni con alcune particolarit utili.
Gli esempi di codice mostrano luso dei vettori per
memorizzare logicamente collezioni eterogenee di forme
e, per esempio, per iterare su tali collezioni, processando
gli elementi contenuti. illustrano anche luso di funzioni
polimorfiche e non polimorfiche, e varie altre caratteristiche
del linguaggio e della Standard Library. ora non vi resta
che mettervi a programmare! LXP

Passo passo Compilazione ed esecuzione

Creare gli oggetti

utilizzate loperatore new per creare una


collezione eterogenea di oggetti, come mostrato
nella directory Shapes_2. Scrivete e compilate
il codice C++11 con g++. Leggete il file
Readme.txt e il file main.cpp. Costruite
una collezione eterogenea di oggetti utilizzando
le istruzioni in readme e osservate
il comportamento del programma (a questo
punto non lanciate ancora main_1.cpp).

Polimorfismo

Seguendo le istruzioni nella directory Shapes_3


potete vedere come ottenere il polimorfismo.
Compilate ed eseguite main.cpp e main_1.cpp
comparandone loutput con il codice
corrispondente al passo 1.

Creare una collezione

A questo punto potete creare una collezione


di oggetti basata su input utente a runtime. per farlo,
usate i le presenti nella directory Shapes_4.

Linux pro 136

81

Go

Un linguaggio sprint!
Go un linguaggio veloce (sia in fase di scrittura sia di compilazione) e sicuro per
quello che riguarda gli accessi alla memoria. Gli abbiamo dato unocchiata per voi

o (ossia Golang) un linguaggio compilato, Open


Source sviluppato da Google. particolarmente adatto
per scrivere codice per processi concorrenti
e ambisce a essere facile da programmare come lo ogni
linguaggio dinamico. Come molti linguaggi moderni, Go sfrutta

le prestazioni degli attuali analizzatori lessicali per dedurre dal


contesto informazioni sui tipi e sui costrutti impiegati,
e questo lo rende facile da apprendere, da usare e anche
da compilare. Leggendo qui di seguito, saprete tutto quello
che necessario sapere per iniziare a scrivere codice in Go.

Primi passi
La prima cosa da fare installare Go a partire dallarchivio .tar,
che dovete scaricare dalla pagina Web http://golang.org/doc/install.
Una volta ottenuto larchivio, decomprimetelo nella cartella /usr/local
digitando via console il comando sudo tar -C /usr/local -zxf
go1.1.2.linux-amd64.tar.gz (noi abbiamo usato la versione
a 64 bit, ma ovviamente disponibile anche quella a 32 bit).
Dovete poi modificare il valore della variabile PATH nel file .bashrc
o .profile, in modo che includa il percorso /usr/local/go/bin.
anche possibile, se lo preferite, installare i file sorgente al posto
dei file binari. Il prossimo passo da compiere impostare lambiente
di lavoro. Il codice Go ha bisogno di risiedere allinterno di uno spazio
essenzialmente strutturato come segue:
mia_cartella_go/
bin/
<- cartella dei file eseguibili
pkg/
<- cartella dei pacchetti
src/
<- cartella del codice sorgente, formattato in pacchetti,
uno per ciascuna cartella
Potete disporre di pi comandi e librerie allinterno del vostro spazio
di lavoro, come risulter evidente dalla lettura di questo tutorial.
A questo punto, possiamo iniziare creando la cartella radice dello
spazio di lavoro, tutorialgo/. Poi si deve inizializzare la variabile
di ambiente GOPATH in maniera che punti allindirizzo del workspace
appena creato e aggiungere la sottocartella bin/ a $PATH:
export GOPATH=$HOME/tutorialgo
export PATH=$PATH:$GOPATH/bin
Naturalmente consigliamo di inserire questi comandi nel file .bashrc
o nel .profile, in modo che queste impostazioni siano caricate
automaticamente a ogni accensione. Go impostato per integrarsi
in modo ottimale con gli archivi online di codici sorgente: se il vostro
codice risiede in un dato archivio, conviene specificarlo gi nel nome
base per i file; si evitano cos conflitti con i pacchetti standard
di libreria. Questo significa per esempio che, se impiegate GitHub,
potrete usare github.com/mio_nome come nome base.
Il classico
Ciao Mondo!
non mai
visivamente molto
gratificante,
ma la mascotte
di Go nella pagina
sullo sfondo
carina...

82

Linux pro 136

Nel seguito useremo genericamente repo.com/nome, quindi


il codice sorgente si chiamer $GOPATH/src/repo.com/nome.
Il codice del nostro primo programma Go, il classico Ciao Mondo,
necessita della sua sottocartella in /src:
cd $GOPATH/src
mkdir -p repo.com/nome/ciao
Allinterno della cartella si pu creare ciaomondo.go
con un editor di vostra scelta:
package main
import fmt
func main() {
fmt.Printf(Ciao mondo!\n)
}
I programmi in Go sono costruiti da pacchetti, a partire dal package
main, come si pu vedere dalla prima riga di codice. Se scrivete
una libreria che sar usata da altri programmi, allinterno del codice
che la usa la chiamerete con la sintassi package nome_libreria,
ma per lesecuzione del vostro codice da linea di comando
necessario che sia presente il pacchetto main. Proseguiamo
nellanalisi del codice e notiamo che abbiamo importato il pacchetto
fmt, con lo scopo di gestire lI/O (in maniera simile a quello
che avviene in C con printf e scanf, ma il formato degli identificatori
pi semplice). La funzione main() come al solito la prima
che verr invocata durante lesecuzione del pacchetto. Il corpo
di questa funzione , nel caso in esame, piuttosto semplice, essendo
costituito da una sola riga di codice, contenente linvocazione della
funzione Printf che semplicemente stampa il suo argomento.
anche possibile specificare un formato di stampa, ma con una
stringa semplice come nel caso in esame, non ne abbiamo veramente
bisogno (unaltra opzione possibile sarebbe usare fmt.Printf(),
in modo da rendere superfluo il carattere di ritorno a capo \n). Si noti
anche che il nome della funzione inizia con la lettera maiuscola P:
nel riquadro dedicato (Standard per scrittura codice e nomi) sono date

Go
maggiori informazioni sulle convenzioni per i nomi in Go,
ma vi anticipiamo comunque che solo i nomi che iniziano con una
lettera maiuscola sono esportabili e quindi invocabili per lesecuzione,
quindi i nomi di funzione iniziano sempre con una lettera maiuscola.
Infine si noti lassenza di punti e virgola al termine di ogni costrutto
del codice: la grammatica di Go richiede la loro presenza,
ma lanalizzatore lessicale del linguaggio riesce a inserirle quasi tutte
in piena autonomia, quindi non avete bisogno di farlo voi
manualmente. Comunque, i ritorni a capo possono apparire
allanalizzatore lessicale come se fossero la fine di un costrutto,
ed essere quindi trattati di conseguenza: fate attenzione, quando
dovete spezzare una lunga riga di codice, a dove la spezzate.
Per esempio, necessario che la parentesi graffa iniziale che identifica
il blocco delle istruzioni di un costrutto if sia sulla stessa riga dove inizia
il costrutto stesso, altrimenti viene generato un punto e virgola spurio:

// Corretto
if j<1 {
<corpo del costrutto>
}
// Non corretto: lanalizzatore lessicale pone un ; alla fine della prima
riga
if j<1
{
<corpo del costrutto>
}
Per terminare lanalisi del nostro programma Ciao Mondo,
necessario compilarlo: entrate nella cartella che contiene
il pacchetto (repo.com/nome/ciao) e digitate da linea di comado
go install. A questo punto per vederlo in azione baster digitare
$GOPATH/bin/hello.

Tip

Il nostro primo vero programma


Scrivere Ciao mondo sempre un buon esercizio iniziale:
ora vogliamo per ottenere qualcosa di pi utile. Diversamente
da quanto fatto qualche volta in passato, qui vi proponiamo
la creazione di una lista di compiti finiti: si tratta di uno strumento
che, quando viene usato, chiede quale compito avete appena
terminato e lo registra. Il primo passo da compiere realizzare
una procedura di ingresso dati e successiva stampa: creiamo
una nuova cartella src/repo/nome/listafiniti e il listato listafiniti.go:
//Il pacchetto lancia un programma che ha lo scopo di registrare i
compiti terminati e di stamparli.
package main
import fmt
var (
finito string
)
func main() {
chiediFiniti()
stampaFiniti()
}
// chiediFiniti chiede allutilizzatore di inserire qualche compito finito.
func chiediFiniti() {
fmt.Printf(Quali compiti hai terminato?)
fmt.Scan(&finito)
}
// stampaFiniti mostra tutti i compiti terminati fino ad ora
func stampaFiniti() {
fmt.Println(Avete terminato:)
fmt.Println(finito)
}
I commenti in Go possono essere automaticamente rilevati durante
il parsing da godoc per generare la documentazione del software.
Ogni pacchetto deve contenere una riga di commento al suo
contenuto prima della dichiarazione del pacchetto stesso, che ne
dia una descrizione generale. Ogni funzione esportabile (pubblica)
deve avere un commento che ne descrive luso e che inizia con
il nome della funzione stessa. La parola riservata var permette
la creazione e inizializzazione di variabili (in questo esempio per noi
abbiamo dichiarato finito senza inizializzarla), con visibilit sia locale
che globale, mentre per le costanti si usa const. Nellesempio
mostrato, finito ha visibilit globale, in modo da essere accessibile
a pi funzioni. La funzione di libreria fmt.Scan legge i dati in ingresso
assegnandoli a una variabile. Cosa possiamo dire dellespressione

&finito? In Go, il passaggio di un argomento avviene sempre


per valore, vale a dire copiandolo su una variabile locale. Se quindi
abbiamo invocato la funzione fmt.Scan() con argomento finito,
questa assegner il valore letto in ingresso a una copia,
non alloriginale, della variabile di invocazione. In questo caso,
invocando la nostra stampaFiniti(), avremo un output nullo, perch
la variabile globale finito ha ancora il valore null iniziale (potete
vederlo pi esplicitamente assegnandole un valore iniziale allatto della
sua definizione). La soluzione a questo problema usare i puntatori,
che contengono lindirizzo di memoria di una variabile, piuttosto
che il valore della variabile stessa. Lespressione &finito in Go
restituisce un puntatore allindirizzo della variabile finito, per esempio
12345678. A questo punto fmt.Scan() internamente usa
il puntatore passatogli, deferenziandolo (con *pointerName) per
ottenere il valore della variabile puntata. Quindi il valore del puntatore
&finito s copiato, ma tutto funziona perch la copia di un indirizzo
punta comunque allo stesso oggetto puntato dalloriginale. Quando
stampaFiniti() cerca il valore referenziato, trova immancabilmente
il valore della variabile finito, che viene cos modificato: in seguito,
quando invocheremo stampaFiniti(), otterremo quindi il nuovo valore
risultato delle modifiche operate. A questo punto possiamo compilare
il programma digitando go install e farlo eseguire con listafiniti.

Dovrete
spesso creare
delle librerie
nome_libreria.
go nella cartella
lib/, che iniziano
con package
nome_libreria,
e i relativi
file nome_
applicazione.
go che ne fanno
uso, risiedenti
nella cartella src/
e caratterizzati
da package
main e
dallimportazione
di libreria
specificata nel
loro preambolo.

Gestire i buffer
Una soluzione al problema descritto alla fine della precedente sezione
potrebbe essere quella di creare un array e definirne i valori con
un ciclo che usa fmt.Scan(). Il difetto di questa soluzione per
leccessivo lavoro necessario quando si vuole realizzare qualcosa
con strumenti non atti allo scopo, come risulta essere Scan().
Noi impiegheremo invece un pacchetto, bufio, progettato proprio
per risolvere questa classe di problemi, ossia gestire buffer in ingresso/
uscita. Proviamo una prima riscrittura del codice di chiediFiniti(),
mostrando solo le variazioni rispetto alla stesura originale:
import (
bufio
fmt
os
)
const terminatore=\n
func chiediFiniti() {
fmt.Printf(Quali compiti hai terminato?)
r := bufio.NewReader(os.Stdin)
Linux pro 136

83

Go

Tip
Potete usare
la funzione
println() per
il debugging,
ma dovete usare
fmt.Println
per gestire
le stampe
effettive
del codice:
println() scrive
sullo standard
error stderr,
non sullo
standard output
stdout, e non
garantito
che venga
mantenuta
nel linguaggio.

84

finito, err := r.ReadString(terminatore)


if err!=nil {
println(err)
os.Exit(1)
}
}
Per il codice d il seguente messaggio di errore:
$ go install
# repo.com/nome/listafiniti
./listafiniti.go:21: finito declared and not used

Gestire le dichiarazioni
Cosa sta succedendo? Il problema sta nellassegnazione tramite :=.
Con questo operatore si dichiara una variabile e le si assegna
un valore in un colpo solo. Pu anche essere usato per ri-assegnare
il valore a una variabile, ma solo a patto che abbia la stessa visibilit
dellassegnamento e che esista almeno una nuova variabile dichiarata
nel medesimo. Il codice qui di seguito dovrebbe funzionare:
func chiediFiniti() {
fmt.Printf(Quali compiti hai terminato?)
r := bufio.NewReader(os.Stdin)
mioFinito : = ping
mioFinito, err := r.ReadString(terminatore)
if err!=nil {
println(err)
os.Exit(1)
}
println(mioFinito)
}
Se provate questo listato (si noti il println() di debug alla fine),
il risultato sar la stampa corretta di tutto ci che avete inserito come
valore di mioFinito. Quali sono allora le ragioni per cui quello che usa
la variabile finito non funziona? Il problema che questa variabile
definita globalmente, mentre := in grado di creare solo una
variabile locale. Ecco come risolvere il problema.
func chiediFiniti() {
fmt.Printf(Quali compiti hai terminato?)
r := bufio.NewReader(os.Stdin)
riga, err := r.ReadString(terminatore)
if err!=nil {
println(err)
os.Exit(1)
}
stampaFiniti(riga)
}
func stampaFiniti(finito string) {
println(Avete terminato:)
fmt.Println(finito)
}
// In questo modo potete non invocare stampaFiniti() nel main(), ma
solo dentro chiediFiniti()
Questo esempio illustra anche come dichiarare funzioni che accettano
argomenti: la sintassi del tipo func nomeMetodo(nomeVariabile
tipoVariabile). Eseguendo il codice vedrete che funziona senza
che sia necessaria una variabile globale. Comunque dobbiamo
ammettere che un modo di procedere poco pulito, che non separa
nettamente il ricevere dati dallo stamparli. Per continuare con
la nostra soluzione che usa una variabile globale, si possono provare
le seguenti modifiche:
func chiediFiniti() {
fmt.Printf(Quali compiti hai terminato?)
r := bufio.NewReader(os.Stdin)

Linux pro 136

riga, err := r.ReadString(terminatore)


if err!=nil {
println(err)
os.Exit(1)
}
done = line
}
// A questo punto potete invocare stampaFiniti() nel main() senza
passare argomenti
Esiste anche un altro metodo che funziona:
var err error
finito, err = r.ReadString(terminatore)
Seguendo questo metodo, prima si dichiara la variabile err
poi si assegna il risultato della funzione r.ReadString(terminatore)
alle due variabili esistenti, direttamente con =. Ciascuna delle due
variabili pu essere dichiarata o globalmente o localmente: il software
funziona in entrambi i casi. Qualunque sia la via che decidete
di scegliere, lesecuzione del software vi dar i risultati attesi,
permettendovi limmissione di frasi o gruppi di parole e stampandole
parimenti assieme.

Salvare in un file
Come possiamo salvare i dati che immettiamo nel nostro programma,
in modo che siano accessibili in tempi successivi alla loro immissione?
Ecco una parte di codice che usa la libreria IOUtil:
import (
io/ioutil
)
func main() {
chiediFiniti()
salvasuFile()
}
func salvasuFile() {
t := []byte(finito)
err := ioutil.WriteFile(uscita.txt, t, 0644)
if err!=nil {panic(err)}
}
Naturalmente esistono molti altri modi per salvare un file in Go,
ma questo che vi proponiamo ci sembra essere il pi semplice di tutti
(fate comunque attenzione ad adottare sempre questa soluzione,
perch nel caso che dobbiate scrivere file di notevoli dimensioni
potreste avere problemi di buffer). Lunica cosa che dobbiamo fare
trasformare finito in una suddivisione di byte, poi usare la funzione
di libreria ioutil.WriteFile() per fare esattamente quello che dice il
suo nome (e gi che ci siamo, settare i permessi di accesso a 0644).
Si noti la linea di gestione delle eccezioni che controlla se ci sono
problemi allatto della scrittura. Infine, una breve nota sulle suddivisioni:
queste strutture di Go sono simili agli array degli altri linguaggi
(e anche agli array che Go stesso offre). E infatti sono costituite
da array ma, mentre questi ultimi hanno dimensioni fisse (per
esempio [1]string e [3]string sono due oggetti ben definiti e distinti),
per le suddivisioni non cos. Nel codice mostrato sopra abbiamo
creato una suddivisione di byte a partire dalla variabile finito. anche
possibile usare la funzione make per lo stesso compito. Le suddivisioni
possono essere a loro volta ripartite (per ottenere suddivisioni pi
piccole), copiate ed estese: raccomandiamo di osservare il loro uso
nelle parti di codice che vi proporremo qui di seguito. Se compilate
ed eseguite il codice sopra, poi analizzate il file uscita.txt, noterete
che tutto funziona a meraviglia, ma anche che detto file viene
sovrascritto ogni volta. WriteFile() non ha opzioni di append, quindi
se ci interessa economizzare le operazioni in questo senso,
dobbiamo cercare unaltra soluzione, ad esempio la seguente:

Go
func salvasuFile() {
f, err := os.OpenFile(uscita.txt, os.O_APPEND|os.O_WRONLY,
0644)
if err != nil { panic(err) }
defer f.Close()
if _, err = f.WriteString(finito); err != nil {
panic(err)
}
}
os.OpenFile() la chiamata generale di apertura file, che consente
di specificare tutti i flag opportuni (mentre Open() permette lapertura
in sola lettura): in questo caso APPEND apre il file con lopzione
append, mentre WRONLY consente la sola scrittura. Possiamo anche
impostare i permessi, come nellesempio precedente, salvo per il fatto
che questi varranno solo se stiamo creando il file e non alle successive
aperture. Il costrutto defer un trucco di Go per semplificare
la struttura del codice. Tutto ci che fa semplicemente mettere
una data chiamata a funzione (in questo caso f.Close()) in uno stack,
in modo che questa sia eseguita non appena la funzione in cui
inserito restituisce un risultato. Ci significa che anche in caso
di presenza di eccezioni il file aperto verr invariabilmente chiuso.
Se avessimo voluto procedere altrimenti, per assicurare la chiusura
del file, una volta terminata ogni possibile operazione, avremmo
dovuto distribuire chiamate a f.Close() in tutto il listato. Avrete forse
notato la presenza di un altro metodo per la gestione delle eccezioni
nel costrutto if che include la chiamata a WriteString(). Se per
oltrepassassimo il controllo e cancellassimo il file uscita.txt,
riusciremmo a mandare in crisi lapplicazione. Per scongiurare questa
evenienza possiamo fare qualche controllo di esistenza file usando
diverse funzioni delle libreria os, come nellesempio seguente
func controllaSeEsisteFile(file string) {
if _, err := os.Stat(file); os.IsNotExist(err) {
f, err := os.Create(file)

File cancellato
e ricreato durante
lesecuzione
successiva.
Si noti che
stampaFiniti()
ancora
in esecuzione

if err != nil { panic(err) }


f.Close()
}
}
Questa parte di codice mostra anche lidentificatore blank _ di Go:
lo si usa quando indispensabile eseguire un assegnamento ma non
vi interessa affatto quale sia il suo valore effettivo. Nel caso in esame,
os.Stat() restituisce sia informazioni sulla struttura del file a cui
applicata sia eventuali messaggi di errore, ma noi siamo interessati
solo a questi ultimi (per proseguire nellesecuzione e controllare
con os.IsNotExist() se il file effettivamente non esiste) quindi, anzich
allocare risorse per creare una variabile che non useremo, ricorriamo
a _ come se fosse un cestino. Nota importante: non usate mai _ per
assegnargli valori di un messaggio di errore, ma controllate sempre
questo tipo di valori. Anche se luso di _ un modo di procedere
pulito, il codice che vi abbiamo proposto in realt inutilmente
verboso: molto pi semplice aggiungere un semplice flag nella
chiamata di OpenFile():
f, err := os.OpenFile(uscita.txt, os.O_APPEND|os.O_WRONLY|os.
O_CREATE, 0644)
A questo punto, se provate di nuovo a cancellare uscita.txt,
ricompilando e rieseguendo di nuovo il nostro listato, il file verr
ricreato al volo per voi.

Stampare i contenuti
Per finire, vediamo come si possono stampare i contenuti del nostro
file. Ecco il listato veloce di una funzione che pu fare al caso nostro.
import strings
func main() {
stampaInteraLista()
}
var (
fileUscita = uscita.txt
)
func stampaInteraLista() {
fileContent, err := ioutil.ReadFile(fileUscita)
if err != nil { panic(err) }
tuttiFiniti := strings.Split(string(fileContent), string(terminatore))
for i, v := range tuttiFiniti {
fmt.Printf(%d: %s \n, i, v)
}
}
ReadFile() restituisce i contenuti dellintero file in forma
di suddivisione di byte (siate cauti a usare questo metodo se il file
che dovete trattare realmente enorme, perch potreste avere
dei problemi di prestazioni: ricordate che ci sono altre opzioni
per la lettura di file potenzialmente grandi). Successivamente viene
usata stringsSplit() per spezzare la suddivisione, trasformandola
in prima ununica stringa con string(fileContent) e poi dividendola

in una suddivisione di stringhe assegnata a tuttiFiniti. Si noti


che mentre ReadString() ha bisogno di un terminatore di tipo byte,
String() necessita di un terminatore di tipo stringa, quindi necessario
eseguire una conversione di tipi sulla costante terminatore. Notate
infine luso di range per iterare su tutte le stringhe della suddivisione
tuttiFiniti. i lindice di iterazione (che parte da 0, come potrete
vedere durante lesecuzione) e v il valore corrispondente. Printf()
li stampa formattati rispettivamente come cifra e stringa. Il come
innestare tutto questo allinterno del main() e in quale ordine eseguire
le funzioni che abbiamo realizzato a vostra discrezione. Come
in ogni breve tutorial, ci sono molti argomenti che non abbiamo
potuto nemmeno sfiorare. Per esempio, Go fa uso estensivo
di interfacce per condividere il comportamento degli oggetti usati
e permettere il loro uso con altri metodi rispetto a quelli
originariamente previsti. Se implementate i metodi per linterfaccia,
i vostri oggetti possono essere inseriti in qualsiasi cosa che richieda
il tipo interfaccia. La concorrenza anche una grande possibilit
da sfruttare per chiunque voglia lavorare con Go. Occorre ricordare
che il linguaggio di nascita recente ed ancora in sviluppo, quindi
ci sono ancora molte cose che verranno elaborate e gli verranno
aggiunte da Google. Noi pensiamo che si tratti di un linguaggio
elegante con cui divertirsi, dotato di buona documentazione online
e facile da imparare e usare. Detto questo potete sbizzarrirvi
a pensare a quale problema Go pu risolvere per voi. LXP
Linux pro 136

85

Haskell

Primi passi con Haskell


Curiosi di provare la programmazione funzionale? Vi mostriamo un linguaggio
che vi aprir una nuova prospettiva di programmazione

askell un linguaggio compilato, funzionale e pigro.


Funziona diversamente dai linguaggi imperativi come
C++, e anche dai linguaggi OO, e prenderci
confidenza pu aiutare a vedere prospettive e soluzioni
diverse nei vari problemi di programmazione. Non ,
ad esempio, presente un costrutto for. Ovviamente,
previsto un modo per ripetere le cose e ciclare costrutti.
Haskell un linguaggio divertente e leccellente interprete
interattivo rende facile il suo apprendimento. inoltre
possibile effettuare certi tipi di attivit con piccole quantit
di codice, una volta presa confidenza con lidioma.
Questo tutorial non vuol essere una guida approfondita
ad Haskell, ma vi fornir i concetti fondamentali alla base.
Per familiarizzare con il linguaggio, come sempre, dovrete
scrivere parecchio codice, sperimentare diversi modi
per ottenere lo stesso risultato e seguire le risorse disponibili
online. Per cominciare, visitate il sito http://www.haskell.
org/platform per informazioni su come ottenere i pacchetti
della piattaforma Haskell per la vostra distribuzione
o su come compilarla da sorgente. Questo vi fornir
un completo ambiente di sviluppo, inclusivo di ghc il Glasgow
Haskell Compiler (GHC) e ghci, linterprete interattivo.

Fondamenti di Haskell
Avviate linterprete ghci e provate a valutare le vostre prime
espressioni Haskell:
ghci> 4 + 3
7
ghci> 67*13
871
ghci> (/) 15 3
5.0
ghci> Hello world
Hello world
possibile scrivere le espressioni da valutare sia in formato

standard (operatore tra gli operandi) o in formato prefisso


(come in Lisp; operatore tra parentesi prima degli operandi).
Ecco, inoltre, alcuni fondamenti del linguaggio da sapere:
0 non lo stesso di False ( un intero non un Booleano
e Haskell fortemente tipizzato)
loperatore non uguale /=
loperatore negazione not.
Provate ora una serie basilare di operazioni sulle liste:
ghci> [1,2,3] ++ [4,5,6]
[1,2,3,4,5,6]
ghci> 3 : [6,9,12]
[3,6,9,12]
Le liste sono composte da parentesi quadre, concatenate con
++ e loperatore push (conosciuto come operatore cons) :.
[] e indicano entrambi la lista vuota. Si noti che una stringa
attualmente una lista di caratteri ([h,e,l,l,o] lo
stesso di hello). Questo significa che le stringhe possono
essere concatenate e aggiunte con gli operatori lista.
tuttavia possibile aggiungere un solo carattere alle stringhe
alla volta:
ghci> h : world
hworld
ghci> hello : world
<interactive>:12:11:
Couldnt match expected type `[Char] with actual type
`Char
Expected type: [[Char]]
Actual type: [Char]
In the second argument of `(:), namely `world
In the expression: hello : world
Haskell staticamente tipizzato; il che vuol dire che il tipo
di variabile noto durante la compilazione. Include, tuttavia,
linferenza di tipo, che significa la capacit di dedurre il tipo di
variabile dal contesto. Qui, Haskell sta utilizzando la notazione
per trattare implicitamente hello come [Char]. Il vantaggio

Funzionalit
I linguaggi imperativi consistono in una sequenza
di azioni; il programmatore dice al computer cosa
fare e cosa cambiare. I linguaggi funzionali invece
valutano espressioni. Con un linguaggio funzionale
(come Haskell), viene considerato solo cosa
computare e non come o quando computato.
Un aspetto importante dei linguaggi funzionali
che le funzioni non dovrebbero avere effetti
collaterali. Unespressione funzionale non dovrebbe
cambiare lo stato del programma e il risultato
dovrebbe dipende solo dallinput e non da qualsiasi
altra cosa che possa essere accaduta. Questo
inoltre significa che le variabili non variano;

86

LINUX PRO 136

una volta impostate, rimangono tali. La mancanza


di effetti collaterali implica che possibile valutare
le espressioni in qualsiasi ordine, dato che
le variabili non cambiano, indipendentemente dagli
eventi (si veda il box Codice puro e codice I/O
per ulteriori approfondimenti sulla purezza
del codice ed effetti collaterali). Questo fatto
legato alla pigrizia di Haskell: questi infatti ritarda
lesecuzione di ogni computazione al momento
in cui il risultato sia veramente necessario.
Non saprete, perci, il momento esatto (o in quale
ordine) in cui una qualsiasi elaborazione verr
eseguita, tuttavia data la natura funzionale

di Haskell questo non particolarmente importante.


Non appena si prender confidenza con
la valutazione lazy, si comincer a pensare in modo
pi efficiente. I linguaggi funzionali rendono inoltre
facile il passaggio di una funzione in unaltra, per
collegarle insieme (un po come Lisp, che vedremo
dei prossimi numeri). Date unocchiata alla sezione
map del tutorial per capire meglio cosa si intende.
Se siete abituati a utilizzare la programmazione
imperativa ci vorr un po prima di riordinare
i pensieri in termini di programmazione funzionale.
Come al solito, giocate con il linguaggio e leggete
codice di altri per facilitarvi la vita.

Haskell
di questo accorgimento che ogni errore di tipizzazione verr
visualizzato in fase di compilazione; lo svantaggio una
perdita di flessibilit. Haskell inoltre fortemente tipizzato,
che significa porre forti restrizioni sul tipo di dati da utilizzare.
Haskell non si occuper della differenza tra una stringa
e un intero per voi, anche se la stringa a tutti gli effetti
un numero:
ghci> let x = 2
ghci> :type x x :: [Char]
ghci> let y = 3
ghci> :type y y :: Integer
ghci> x + y
<interactive>:87:5:
Couldnt match expected type `[Char] with actual type
`Integer
In the second argument of `(+), namely `y
In the expression: x + y
In an equation for `it: it = x + y
Il frammento di codice riportato consente di vedere come
2 venga interpretato come lista di Char e 2 come Integer.
Non possibile sommarli. Unultima nota sulle liste. I membri
di una lista devono tutti essere dello stesso tipo, tuttavia
le liste possono essere di qualsiasi lunghezza. Se desiderate
una collezione di oggetti di diverso tipo (per esempio,
un intero e una stringa) dovete utilizzare una tupla. Le tuple
hanno dimensione fissa (non possibile aggiungere oggetti
una volta create) ma possono contenere mix di tipi:
ghci> :set +t
ghci> (15, March)
(15,March)
it :: (Integer, [Char])
ghci> (15, March, 2013)
(15,March,2013)
it :: (Integer, [Char], Integer)
ghci> unset +t
set +t e unset +t accendono e spengono rispettivamente
limpostazione che visualizza il tipo dellultima espressione
valutata.

Funzioni
Leggermente allarmante nel caso abbiate utilizzato altri
linguaggi, le funzioni in Haskell non utilizzano le parentesi:
ghci> [1,2,3,4,5]
[1,2,3,4,5]

Gli operatori && e || funzionano, tuttavia vi verr restituito


un errore nel caso trattiate 0 come False

La piattaforma Haskell disponibile attraverso il package manager integrato


in molte distribuzioni

ghci> drop 3 it
[4,5]
(it si riferisce allultima espressione valutata. Dovrete utilizzare
le parentesi solo nel caso largomento sia qualcosa di confuso
o ci sia una precedenza ambigua. E se voleste scrivervi
funzioni personalizzate? Per farlo dovrete creare un file
sorgente fuori da GHCI e caricarlo; non infatti possibile
scrivere funzioni direttamente in GHCI. Cominciate con un
semplice Hello World. Aprite un file hello.hs e scrivete:
ghci> :load hello.hs
[1 of 1] Compiling Main ( hello.hs, interpreted ) Ok,
modules loaded: Main.
*Main> helloworld
Hello World
perci possibile definire la funzione helloworld
semplicemente con =, come per le variabili. Tuttavia,
diversamente da molti altri linguaggi, non possibile cambiare
assegnazione una volta eseguita. Tornate a hello.hs
e aggiungete questa coppia di righe:
x=4
x = Me!
helloworld = print (Hello World from ++ x)
Se provate a caricare questo file nuovamente, Haskell
si lamenter:
ghci> :load hello.hs
[1 of 1] Compiling Main ( hello.hs, interpreted )
hello.hs:2:1:
Multiple declarations of `x
Declared at: hello.hs:1:1
hello.hs:2:1 Failed, modules loaded: none.
Una volta dichiarata x, questa diventa immutabile; cambiate
la prima dichiarazione da x=4 a a=4 per far funzionare
il tutto:
ghci> :load hello.hs
[1 of 1] Compiling Main ( hello.hs, interpreted ) Ok,
modules loaded: Main.
*Main> helloworld
Hello World from Me!
Anche questo un tassello della dedizione alla pulizia del
codice di Haskell.
LINUX PRO 136

87

Haskell
Un programma a tutti gli effetti

Tip
Se volete
provare Haskell
senza scaricare
nulla, http://
tryhaskell.
org/ vi far
usare linterprete
direttamente
da browser.

Proverete ora a scrivere un programma vero e proprio.


Comincerete con lo scrivere il codice in un file, per poi
caricarlo ed eseguirlo in GHCI. Il programma che scriverete
selezioner una citazione casuale da un file di testo
e la stamper a schermo. Per prima cosa create il file delle
citazioni, quote.txt, con un po di citazioni al suo interno,
una per riga, per poterlo parsare. Per prima cosa fate
in modo che il file venga letto e stampato interamente
su schermo, giusto per prendere confidenza con lIO.
Create un file quote.hs come questo:
import System.IO
main :: IO () main = do
inhandle <- openFile quote.txt ReadMode
outhandle <- openFile output.txt WriteMode
mainloop inhandle outhandle
hClose inhandle
hClose outhandle
mainloop :: Handle -> Handle -> IO () mainloop inhandle
outhandle =

Ecco cosa succede se vi dimenticate di importare System.IO: otterrete molti


messaggi Not in scope. Dopo laggiunta della riga tutto torna a funzionare

do ineof <- hIsEOF inhandle


if ineof
then return ()
else do inpStr <- hGetLine
inhandle
hPutStrLn outhandle
inpStr
mainloop inhandle outhandle
Si noti che utilizzando do per inanellare una sequenza di azioni
bisogna assicurarsi che lindentazione sia corretta; questo infatti
il modo in cui Haskell collega le varie azioni. Questo codice per
esempio non funzioner:
-- this code is wrong! mainloop inhandle outhandle =
do ineof <- hIsEOF inhandle
if ineof -- too many indented spaces! Does
not line up!
-- .... etc
Il codice definisce due funzioni: main e mainloop. Ogni programma
Haskell necessita di una funzione main, che viene eseguita come
entry point del programma. main inoltre unazione IO (si veda il box
in basso per approfondire le azioni IO e il codice puro). Qui vengono
aperti il file di input e il file di output e vengono collegati ai rispettivi
handle. Questi vengono poi passati alla funzione mainloop, che
effettivamente svolge il lavoro, e poi i file vengono chiusi. La funzione
mainloop quella che si occupa effettivamente della scansione
del file. Viene impostata una variabile per controllare leffettiva fine
del file (la versione Haskel di qualcosa di simile a while(<FILE>)
in Perl). Nel caso si arrivi alla fine del file, la funzione ritorna. Altrimenti
si ottiene la riga successiva (con hGetLine) dallhandle di input e la si
porta in output con hPutStrLn. Si chiama poi nuovamente mainloop
per continuare il ciclo (questa funzione ha la ricorsione in coda;
i calcoli vengono effettuati prima della chiamata ricorsiva, perci non
dovete salvare nessuno stato evitando problemi con lo stack).
Questo codice include le firme di funzione tipizzate. Non dovete
necessariamente fornire queste informazioni Haskell se ne
occuper per voi tuttavia raccomandabile farlo per la
manutenibilit futura del codice. Cosa significa questa firma?
mainloop :: Handle -> Handle -> IO ()
Il nome della funzione mainloop e :: segna linizio della firma.
Il valore pi a destra, IO () il valore di ritorno della funzione.
In questo caso una funzione di IO che non ritorna nulla. ()
lequivalente Haskell del void in C++ o Java. Handle -> Handle
definisce i parametri: due ed entrambi Handle. Tornando al codice.
Nel caso volessimo visualizzare loutput su stdout (lo schermo) invece
che in output.txt? Haskell prevede tre handle sempre disponibili:
stdin, stdout, e stderr. Quindi semplicemente dovrete rimuovere

Codice puro e codice I/O


Data la sua natura funzionale, Haskell cerca di evitare
gli effetti collaterali. Le operazioni di I/O, per necessit,
includono effetti collaterali; interagiscono con il mondo
esterno, e possono alterare lo stato del programma o
del sistema. Haskell quindi divide strettamente il codice
in puro (pure) e IO. Il codice puro produce sempre lo
stesso risultato con lo stesso input, non ha mai effetti
collaterali e non altera mai lo stato. Il codice di I/O,

88

LINUX PRO 136

impuro, non segue necessariamente queste regole.


Gli effetti collaterali includono I/O, modifiche delle
variabili globali o comandi di sistema. Come dimostrato
nel tutorial, la barriera consiste nel fatto che le variabili
di IO devono essere convertite in variabili pure (con <-)
per poterle utilizzare in codice puro. Questo un modo
per evitare certe classi di bug: quelli che succedono per
effetti collaterali non previsti o perch lo stato del

programma stato alterato e lo stesso input genera


un output diverso. In Haskell, c la garanzia che le parti
pure del codice non possano fare ci. Inoltre, possibile
parallelizzare automaticamente le parti pure del codice
(le versioni recenti di ghc lo faranno per voi); gli effetti
collaterali sono uno dei grandi problemi con il codice
parallelizzato. Questi accorgimenti rendono il codice
pi facile da testare, sicuramente comodo.

Haskell
tutti i riferimenti a outhandle e sostituirli con stdout:
main :: IO () main = do
inhandle <- openFile quote.txt ReadMode
mainloop inhandle
hClose inhandle
mainloop :: Handle -> IO () mainloop inhandle =
do ineof <- hIsEOF inhandle
if ineof -- correct number of spaces here
then return ()
else do inpStr <- hGetLine
inhandle
hPutStrLn stdout inpStr
mainloop inhandle
Esiste una via ancora pi semplice per leggere un file utilizzando
hGetContents, che una funzione lazy. Questa ottiene il contenuto
ma non al momento della chiamata. La funzione legge infatti il file
man mano che ne viene processato il contenuto (che viene letto

come stringa e quindi come lista di caratteri) e la memoria viene


liberata dal garbage collector non appena letta. In questo modo
possibile elaborare piccoli pezzi alla volta anche con stringhe,
e quindi file, arbitrariamente lunghe. Ecco un esempio:
import System.IO
main = do
inhandle <- openFile quote.txt ReadMode
inputStr <- hGetContents inhandle
hPutStr stdout inputStr
hClose inhandle
Questo snippet funziona solo nel caso inputStr venga usata
in un singolo posto. Se questa viene riutilizzata in altre parti del codice,
il compilatore dovr attendere che venga letta e quindi non potr
liberare la memoria. Con file particolarmente grandi questo occuper
tutta la memoria disponibile. Utilizzare quindi questo trucchetto con
particolare attenzione! Nei prossimi paragrafi scoprirete di pi sulle
notazioni <- e do.

Tip
Si consulti
il wiki di Haskell
http://www.
haskell.org/
haskellwiki/
Programming_
guidelines per
gli standard della
community.
I tipi cominciano
con la maiuscola,
le funzioni
in lowercase e i
nomi (variabili)
sono camelCase
e descrittivi.
Fate attenzione
allindentazione.

Array e numeri casuali


Finora avete semplicemente fatto output: quello che dovete fare
ora prendere una delle righe. Unopzione possibile quella
di leggere le righe e di inserirle in una struttura dati e utilizzare
un numero casuale per scegliere un elemento dalla lista. Potreste
utilizzare un hash o un array associativo, tuttavia lopzione pi
semplice quella di leggere le citazioni in un array e scegliere
un indice casuale. Vi renderete inoltre la vita pi semplice
utilizzando la funzione integrata e lazy readFile per leggere il file:
import System.Random
main :: IO () main = do
-- Read the file lazily
contents <- getQuotes quote.txt
let quotes = lines contents
index <- randomRIO (0, (length quotes)-1)
let singlequote = quotes !! index
putStrLn singlequote
getQuotes :: FilePath -> IO String
getQuotes path = do
readFile path
getQuotes legge il file in una stringa; successivamente lines
spezza la stringhe in un array di stringhe. randomRIO genera
un numero casuale tra 0 e lultimo indice dellarray e !! ritorna

La vostra prima versione del codice in esecuzione; e poi la


versione che estrae una parola casuale dalla citazione selezionata

lelemento corrispondente allindice dellarray. Infine putStrLn


stampa la singola citazione. Potreste voler fondere le ultime
due righe con:
putStrLn ( quotes !! index )
La parola chiave do viene utilizzata per concatenare una serie di
azioni di IO. In questo caso lordine importante, perci utilizzare
un blocco di azioni do assicura che queste avvengano nellordine
corretto. <- loperatore di assegnazione IO. possibile utilizzarlo
per collegare unazione di I/O a un certo nome. Qui readFile path
ritorna una IO string tuttavia lines deve operare su una string
classica. La linea contents <- getQuotes file prende la IO
string e la collega come string a contents. ora possibile utilizzare
contents in codice puro (infatti sia do che <- non vengono
utilizzate solo per I/O nonostante sia il punto di partenza di molti
principianti ma vengono impiegate per molti altri monad.
Per maggiori informazioni sui monad consultate il box relativo,
anche se non oggetto del tutorial approfondire la loro
conoscenza). Una qualsiasi cosa con un tipo IO da considerarsi
unazione di I/O. Queste possono essere utilizzate a piacimento
memorizzate e concatenate con altre azioni (utilizzando do)
tuttavia possono essere eseguite solo allinterno di unaltra azione
di IO. La funzione main unazione I/O con tipo IO () (senza valore
di ritorno). Questo significa che possibile eseguire altre azioni di
I/O dal main, ovvero il punto da cui ogni programma Haskell viene
avviato. Qualsiasi azione che non coinvolga lIO dovrebbe essere
gestita in codice puro, che pu essere chiamato sia da main che
da altre azioni di I/O. Noterete che insieme a <- il codice utilizza let.
Come utilizzate <- per estrarre i risultati dal codice di I/O, utilizzate
let (allinterno di un blocco do) per estrarre i risultati dal codice
puro. lines una funzione di codice puro; agisce su stringhe e non
ha effetti collaterali e lo stesso input restituisce sempre lo stesso
output. Anche !! un operatore puro; ritorna un elemento dato
un certo indice da un array (perci [a,b,c] || 1 ritorna b; le liste
sono indicizzate partendo da 0). Invece randomRIO un
operatore di IO perci dovrete utilizzare <-. Per compilare il tutto
come programma a s stante utilizzate ghc:
$ ghc quote.hs
$ ./quote Be the change that you wish to see in the world.
Mahatma Gandhi
Il codice in main eseguito automaticamente.
LINUX PRO 136

89

Haskell
Monad e astrazioni
ma sicuramente uno dei principali. Consentono
di garantire che certe computazioni avvengano
in un particolare ordine, che non generalmente
il comportamento predefinito di Haskell.
Le azioni monadiche passano elementi
e risultati da una funzione alla seguente
in un modo illegittimo per il codice puro.
Contengono inoltre un modo per convertire i tipi
in tipi monad: per esempio, il monad IO pu
convertire una stringa in IO string. Questo

I monad sono delle caratteristiche della


funzionalit e sono anche parte della divisione
puro/non puro. IO un monad comune, cos
come Maybe, che non utilizzerete in questo
tutorial ma che potrebbe esservi utile per
computazioni che possono fallire.
I monad sono modulari, flessibili e consentono
ad Haskell di rimanere puro isolando le parti di
codice che potrebbero avere effetti collaterali
(come il codice di IO). Non il loro unico scopo

nuovamente parte del modo in cui codice puro


e reale vengono tenuti separati. Sono state
effettivamente spese migliaia di parole
(e immagini) sui monad e persone diverse
li comprendono in modo diverso. Se volete
saperne di pi, online troverete molte spiegazioni
e potrete giocare con monad esistenti. Non
potreste infatti andare molto lontano in Haskell
senza di essi, ma una volta presa confidenza li
troverete terribilmente utili.

Mapping
Darete ora un rapido sguardo al modo in cui Haskell gestisce
uno degli aspetti pi importanti della sua sintassi, il mapping.
Scrivete per esempio un qualcosa che stampi la quinta parola
di ogni citazione:
import System.Random
main :: IO () main = do
contents <- getQuotes quote.txt
let quotes = lines contents
let fifthWords = map getFifthWord quotes
index <- randomRIO (0, (length quotes)-1)
putStrLn ( fifthWords !! index )
getFifthWord :: String -> String
getFifthWord = (!!4) . words
map genera un array di lunghezza x da un array di lunghezza
y e prende due argomenti in ingresso: la funzione che genera
il mapping (qui, getFifthWord) e larray al quale applicarla
(qui, quotes). GetFifthWord la concatenazione di due
funzioni (in Haskell, concatenerete spesso le funzioni):
words esplode la stringa passata per singola parola
(producendo un array);
!!4 ritorna lindice 4 (il quinto membro dato che lindice
inizia da zero) dellarray risultante.
Quindi map getFifthWord quotes applica getFifthWord
a quotes, e ritorna un array della quinta parola di ogni
citazione, che viene assegnato a fifthWords.

TECNologIA

FUTURo

Mensile N15 Dicembre 2012

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 136

ARTISTI
DIGITALI

Crea la tua rivista


personale e unica con
il nuovo Flipboard p66

ACCENDE LA TUA PASSIONE!

VIDEOGuIDE
VIDEOGu
IDE IN ITALIANO
Fotoritocco ancora pi F
Facile
acile con le videolezioni passo passo!

arriva lauto controllata da linux!

UBUNTU

UBUNTU FACILE

RNA

Come fare

NUMERO

302

FACILE
tutto NEL CLouD

FotoGRAFIE
Sfondi sfocati Tempi lunghi
Scie luminose Panning
e tanto altro...

Con Jolicloud controlli file, social


network e app remote dal desktop!

APOCALYPSE
NOW

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

in prova
Voyager Air:
Air
1 Terabyte
di memoria
per il tuo iPad
p75
XCOM: EnEMy
UnknOwn
Il miglior gioco
per iOS! p48
App Journal N30 Mensile

Anno 3 3,90

chf 9,20

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

ScoreCleaner Notes
Crea uno
spartito
musicale
cantando p15

Dov' il mio Topolino?


In prova
il divertente
gioco Disney
p50

Scatti ravvicinati di fiori


e... dolciumi di stagione!

In anteprima le nuovissime app


per le mappe, le foto e la musica

un ARtIstA
A 360 GRAdI

Mensile N302 4,99

FIFA 14 VS PES 2014

TGM DECRETA IL VINCITORE NELLA


SFIDA PI ATTESA DELL'ANNO!

s
sullA
VIA
pER dAmAsco
p

Leroica storia del fotogiornalista


Paul Conroy nellinferno siriano

000_Cover_DCM135_A2.indd 2

STAR CITIZEN

CHRIS ROBERTS SVELA I


SEGRETI DEL SUO GIOCO!

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_302_EVO.indd 1

09/10/2013 08.49.14

Se leggi Linux Pro ti potrebbero anche piacere...

FAi uN sito DA PRo

Intervista a Ed Templeton, skater,


fotografo, pittore, imprenditore...

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

INTERNATIONAL

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

mAcRo
dAutunno

Mensile N135 5,90

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

PaSSwORd

LE APP DEL FutuRo


utuRo

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

LG

OPTIMUS
G PRO

Potenza
da urlo
e maxi
schermo

a prova dI hackeR

creative

E in pi...
Come sfruttare al
massimo il flash
Fotoritocco rapido
Test: monopiedi
economici

8 obiettivi 50 mm a confronto

Dicembre 2013

Lottica che non pu mancare neLLa tua borsa!

21/10/13 15:30

Crea un sito professionale


senza scrivere codice
Ubuntu Facile N9 Mensile 2,50

AccAdemiA
del codice

spEAkEr
AirplAy

iPod

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

18 pagine di pura programmazione

iPad

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

la Rivista pRAtICA, UtILE E INDISpENSAbILE

potenza wireless

iPhone

THE GAMES MACHINE

SCIENZA

JOURNAL

A!

Quanto si pu parlare velocemente?


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

i criteri vincenti
 Versatilit d'uso
 Livello di sicurezza
 Scalabilit

Linux Pro 131- 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

LAB TEST

90

&

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

main :: IO () main = do
-- Read the file lazily
contents <- getQuotes quote.txt
let quotes = lines contents
index <- randomRIO (0, (length quotes)-1)
index2 <- randomRIO (0, 10)
let randomWords = map (getRandomWord index2)
quotes
putStrLn ( randomWords !! index )
getRandomWord :: Int -> String -> String
getRandomWord x = (!!x) . words
La comprensione di questo codice un esercizio per voi.
Si noti come si potrebbe usare qualche metodo di verifica
degli errori per assicurarsi che le citazioni siano lunghe
almeno 10 parole. Questa rapida carrellata ha lo scopo
di mettervi la pulce nellorecchio e farvi interessare a Haskell
per cominciare a sperimentare. Nel sito di Haskell sono
presenti diversi link a risorse interessanti; avviate quindi GHCI
e cominciate a programmare! LXP

Prova la tua rivista anche in dioitale


digitale
L

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

Viene poi stampata una parola casuale nellarray, esattamente


come prima. Potete fare anche un passo avanti e utilizzare la
funzione getRandomWord.
Date unocchiata:
import System.Random

ARtisti CoN ubuNtu stuDio


Tutti gli strumenti per audio e video

Se T T

iM a n

14
calendari202014

In anteprima
SOLO
per
te!
O
I
A
a

N
GEN

io
bbra

- 19 Fe
naio

CALENDARIO-AGENDA

FAMIGLIA 2014

Indica il quantitativo delle pubblicazioni che vuoi ricevere

La nostra famiglia

1
2 Gioved
3 Venerd
4 Sabato
5 Domenica
nicaarTire
aM
6 Luned
7 Marted
ddel SiGnore
ia
8 Mercoled
9 Gioved
r teodndo Sac.
10 Venerd
a iM
11 Sabato
led
MeMracSSoiMo
12 Domenica
13 Luned

e
GioGiUvleiadno MarTir 14 Marted
S.
15 Mercoled
iTa
d
r
e
n
e
M
V a l do e r e
16 Gioved
S.
17 Venerd
o
t
a
b
a
S iGino papa 18 Sabato
S.
19 Domenica
a
ic
n
e
m
20 Luned
DoTaTiana
S.
21 Marted

d
e
vo Mercoled
Luilnario veScBo22
i GeS
aTT. d
S.
23 Gioved
rTireVenerd
MaferlticeedMa24
S.
25 Sabato
d Domenica
le
o
MeMracUro 26
a BaT e
S.
27 Luned
dloMarted
i pa pa
GioMavrec28
el
S.
29 Mercoled
rdGioved
ne30
a BaT e
VeOTTOBRE
onioGiuseppe
T
Venerd
n
a
.
31
S

2014

Mercoled

Maria Madre di dio

capodanno

S. faUSTa

S. aMelia MarTire

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

epifania del SiGnore

S. raiMondo Sac.

S. MaSSiMo

S. GiUliano MarTire

5,90

calendario-agenda per lei f.to cm15x50

5,90

Totale Ordine

Totale quantit

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


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.

NOME
COGNOME

S. aldo ereMiTa

S. iGino papa

MARCO

S. TaTiana

S. ilario veScovo

BaTT. di GeS

Ricevilo comodamente a casa


senza spese aggiuntive

S. BaSilio veSc.

S. Genoveffa verGine

6,00

calendario-agenda dei nonni f.to cm15x50

SeTTiMane

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

UGO

MARIA

MarTin lUTher KinGS day

SS. SeBaSTiano
e faBiano MarTiri

O
FID

S. aGneSe verGine

S. vincenzo MarTire

S. eMerenziana verG.

LAURA

S. franceSco di SaleS

conv. di S. paolo

01_ICOVER_famiglia.indd 1

Olga

COMPLEANNI
ANNIVERSARI

2014

GENNAIO

S. TERESA VERG.

FESTE
COMPLEANNI
ANNIVERSARI

Gli impegni di...

Natalia Aspesi, Lui visto da

S. GENOVEFFA VERGINE

S. FRANCESCO DASSISI

S. AMELIA MARTIRE

S. PLACIDO MONACO

EPIFANIA DEL SIGNORE

S. BRUNO ABATE

S. RAIMONDO SAC.

S. PELAGIA VERGINE

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

GIORNO DELLA VISTA

S. IGINO PAPA

S. DANIELE

S. TATIANA

S. BRUNO

S. ILARIO VESCOVO

S. MAURO ABATE

S. ANTONIO ABATE

S. EDVIGE

S. BEATRICE

Gli impegni di...

G. RIFIUTO DELLA MISERIA

S. LUCA EVANGELISTA

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

SS. TITO E TIMOTEO VESC.

S. APOLLONIA VERGINE

S. ANGELA MERICI

G.DELLA PSORIASI

S. GUGLIELMO

MEM. DELLA SHOAH

RICORDO DELLE FOIBE

S. TOMMASO DAQUINO

S. EVARISTO PAPA

S. COSTANZO

S. DELIA

S. MARTINA MARTIRE

B. V. MARIA DI LOURDES

S. EULALIA VERGINE

SS. FOSCA E MAURA


SACRE CENERI

S. GIOVANNI BOSCO
SACERDOTE

SS. SIMONE E GIUDA TADDEO AP.

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

29 Mercoled
30 Gioved
31 Venerd

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

1_ICOVERnonni150X500.indd 1

S. LUCILLA VERGINE

NUMERI
SALVAVITA

HALLOWEEN

soccorso pubblico
di emergenza

113

vigili del fuoco

115

nonni150X500.indd 10

carabinieri

d
con v.
112

emergenza sanitaria 118

NUMERI
SALVAVITA

olo
i S. pa
12/06/13 13:04

soccorso pubblico
di emergenza
vigili del fuoco

o e T iM

07/06/13 18:17

SS. T iT

carabinieri

o T eo

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

23 OTTOBRE
22 NOVEMBRE

SCORPIONE

113

S. PATRIZIA

01_cover_SINGLELEI150X500.indd
2 DEL GATTO
FESTA

ceno con Giovanni


fine set
timan
a in mo
con Fed
erico ntagna

S. VINCENZO MARTIRE

Compleanno
Giorgio

S. EMERENZIANA VERGINE

S. FRANCESCO DI SALES

ici
a Mer la2Shoah
elpio.indd
FAM GLOB_207x285_senza
S. a nG MeM. del

CONV. DI S. PAOLO

SS. TITO E TIMOTEO VESC.

S. ANGELA MERICI
MEM. DELLA SHOAH

S. COSTANZO

S. MARTINA MARTIRE

S. GIOVANNI BOSCO
SACERDOTE

31/05/13 15:21

12/06/13 14:33

dd 1

SINGLELEI150X500.in

S. MANSUETO VESCOVO

S. SILVANO

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)

S. PIER DAMIANI DOTT.

S. MARGHERITA

S. ROMINA

S. ETELBERTO RE

S. COSTANZA

S. FAUSTINIANO VESCOVO

S. LEANDRO

Venerd

PRENOTALI SUBITO SU

S. TOMMASO DAQUINO

S. CINZIA

v e S c.

S. AGNESE VERGINE

palestra

palestra

Firma del titolare

S. ANTONIO ABATE

SS. SEBASTIANO
E FABIANO MARTIRI

Giornata alle Terme


con Pia

parrucchiere

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

h. 18 estetista

S. TATIANA

S. MARCELLO I PAPA

anniversario
pap e mamma

S. GILBERTO VESC.

S. VINCENZO MARTIRE

S. IRENE

S. ANTONIO MARIA VESC.

Elisabetta

S. MAURIZIO
GIORNO DELLA MARMOTTA

SS. SEBASTIANO
E FABIANO MARTIRI

G. DELLOSTEOPOROSI

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
22 Sabato
23 Domenica
24 Luned
25 Marted
26 Mercoled
27 Gioved

FESTE
COMPLEANNI
ANNIVERSARI

S. VERDIANA VERGINE

S. MARIO M.

S. IGINO PAPA

S. ILARIO VESCOVO
BATT. DI GES

George Eliot, Adam Bede, 1859

G. DELLALIMENTAZIONE

S.MARISA

S. ALDO EREMITA

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.

S. MARCELLO I PAPA

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

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

S. MASSIMO

2014

S. FELICE MARTIRE

(Codice di tre cifre che appare

Scad.

S. RAIMONDO SAC.

FEBBRAIO

BATT. DI GES

S. SERAFINO DA M.

S. EDOARDO RE

EPIFANIA DEL SIGNORE

S. ALDO EREMITA

S. DIONIGI

COLUMBUS DAY

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

S. FAUSTA

S. AMELIA MARTIRE

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

N.

S. GENOVEFFA VERGINE

S. GIULIANO MARTIRE

G. DELLA SALUTE MENTALE

02/07/13 10:05

S. BASILIO VESC.

S. MASSIMO

B. V. MARIA DEL ROSARIO

1 Mercoled
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
MARIA MADRE DI DIO
CAPODANNO

G. DEGLI ANIMALI

lei, 1978

FESTE
COMPLEANNI
ANNIVERSARI

Gli impegni di...

S. FAUSTA

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

Ricevuta di versamento su CCP 99075871

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

S. BASILIO VESC.

FESTA DEI NONNI

PROV.

SCELGO IL SEGUENTE METODO DI PAGAMENTO E ALLEGO:

GENNAIO

SS. ANGELI CUSTODI

S. GERARDO DI BROGNE AB.

C.A.P.

CITT

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

Gli impegni di...

1 Mercoled
1
2 Gioved
2 Gioved
cena a casa dei nipotini
3 Venerd
3 Venerd
4 Sabato
e
ric UMENTO
T
Sabatoe a
B
R
4
.
5 Domenica
CO
ST
S03_INTfamiglia.indd
1 UN R ATI CE
P ICA
EFF TILE ILE
5 Domenica
6 Luned
U SAB
PEN
IS
Luned
D
7 Marted
6
IN
8 Mercoled
y
7 Marted
a
.
d
io M er KinGS
r
9 Gioved
MercoledM a
8 S.
recita
scuola
UTh materna H.16
rTin l
10 Venerd
9 Gioved Mafinale di bocce
Sabato
11
h.10 gatto
10 Venerd
dal veterinario
12 Domenica
11 Sabato
T ia no iri
Luned
S
a
13
B
e
12 DomenicaS S. S
MarT
14 Marted
Bia no sarta
13 Luned e faVinaio
15 Mercoled
14 Marted
16 Gioved
ine
h.16etrG
15 Mercoled
17 Venerd
eSeconv Elsa
S. a G n
16 Gioved
18 Sabato
19 Domenica
17 Venerd
giornata con i nipoti
Sabato
preparativi partenza T ire 20 Luned
18
Mar
21 Marted
o
z
H.10 partenza
19 Domenica
n
ce
22 Mercoled
S. v in
20 Luned
23 Gioved
21 Marted
24.Venerd
G
22 Mercoled
r
e
v
25 Sabato
na
23 Gioved
enzia
r
e
26 Domenica
M
e
SCOPRI
COM
Venerd
S.
24
COMODO:
27 Luned
IMPEGNI,
Sabato
25
COMPLEANNI
28 Marted
VISITE MEDICHE
Domenica
eS
Mercoled
26
a
TUTTO
di S 29l Gioved
QUELLO CHE VUOI
Luned
27
ceSco
30
RICORDARE
n
a
r
SEMPRE SOTTO
S. f
Marted
31 Venerd
AI TUOI OCCHI
28
S. Giovanni BoSco
SacerdoTe

Indica con una la forma di pagamento desiderata

LEI

S. coSTanzo

Mercoled

via

DEI

S. ToMMaSo daqUino

Gli impegni di...

COGNOME

5a

MeM. della Shoah

2014

NOME

05/07/13 12:31

S. anGela Merici

S. MarTina MarTire

Voglio regalare questo calendario a:

4a

SS. TiTo e TiMoTeo veSc.

DISTRIBUTORE PER LITALIA E PER LESTERO: PRESS-DI

S. Mario M.

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

EDO

S. BeaTrice

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

1
12
13
14
15
16 NONNI
17 ato
Sab
18 enica
Dom
19 ed
Lun
20 ted
Mar
1
2
led
Merco
22 ed
Giov
23 erd
Ven
24 ato
Sab
5
2
ica
Domen
26 ed
Lun
27

Linux Pro 136

S. anTonio aBaTe

per

io

no
podan

v erGin

Scegli i tuoi calendari preferiti

DELLA

en

04/12/13 16:44

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.
Se hai qualcosa
da segnalarci scrivi
a ecodeilug@
linuxpro.it

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

92 Linux pro 136

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 136

93

Guida

Software

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

Distribuzione

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.

OpenSUSE 13.1 (32 bit)

l lato A del DVD di questo mese ospita la release pi


recente della distro realizzata dal progetto OpenSUSE,
sponsorizzato da un nome importante nel mondo Open
Source, Novell. Come recitano le note di rilascio,
racchiuso in OpenSUSE 13.1 c quanto di meglio si pu
trovare oggi in fatto di Free Software. Dal punto di vista
dellutente desktop, si hanno a disposizione i migliori
ambienti, tra cui KDE 4.11 (il desktop attivo di default),
Plasma Netbook, GNOME 3.10, Enlightenment 17, Xfce
e LXDE. Insomma, c una scrivania per ogni esigenza, e tutte
sono assolutamente ben integrate nellambiente. A corredo,
poi, trovate tutta una pletora di applicazioni che coprono
gli usi quotidiani. Per fare qualche esempio, tra i software
aggiornati, trovate le due suite per lufficio LibreOffice 4.1
e Calligra 2.7. Lottima procedura dinstallazione (una delle
migliori in circolazione) vi guida passo passo nella definizione
delle partizioni e nella scelta dei programmi da installare.
Una nota: tra i filesystem supportati trovate anche
il promettente Btrfs, che pur non essendo quello di default
ha subto netti miglioramenti per prestazioni e stabilit.

Server e cloud
Visto che OpenSUSE sponsorizzata da una grande azienda
software, non potevano mancare novit dal punto di vista
server e cloud. Per quel che riguarda la virtualizzazione,
presente KVM 1.6, un wrapper per gli eseguibili forniti
da Qemu; inoltre supportato Xen. Per i database,
OpenSUSE continua a presentare MySQL Community Server
(un po ignorato da altre distro), ma al contempo offre anche
MariaDB e PostegreSQL. Apache 2.4 invece il server Web
preferito, e porta con s diversi potenziamenti per quel che
riguarda il multi-processing. Infine laspetto cloud, sempre pi
importante per chi lavora con Linux. La release 13.1 offre
varie tecnologie per il cloud, inclusa la versione pi
aggiornata di OpenStack Havana. Si nota poi il debutto
di s3fs, un filesystem per FUSE che consente di montare
i bucket di Amazon S3 come se fossero un filesystem locale.
A dimostrazione che OpenSUSE una distro davvero
eclettica, non mancano poi nuovi strumenti per gli
sviluppatori (non c solo Fedora per chi programma):
trovate infatti il nuovo GCC 4.8 e anche la versione 5.1
del toolkit Qt. Inoltre si hanno a disposizione Rails 4, Ruby
2.0 e PHP 5.4.20. Lo stesso YaST (il pluripremiato tool
di configurazione della distro) stato convertito in Ruby, cos
da consentire agli sviluppatori di potenziarlo ulteriormente.
Diversamente da altre distro (chi ha detto Ubuntu?)

94 LINUX PRO 136

Il desktop di OpenSUSE sempre pi elegante


e la distro ha strumenti per ogni esigenza.
Il centro di controllo YaST continua a essere
un tool di prima categoria
OpenSUSE rispetta la privacy dellutente e lo aiuta
a rendere sicura la macchina con un firewall preinstallato
e attivo di default. Infine, sotto il cofano si trova un kernel
della serie 3.11 che offre grandi vantaggi in termini
di prestazioni, stabilit e funzionalit. Il supporto (cio gli
aggiornamenti di sicurezza e la correzione dei bug) previsto
per questa versione di OpenSUSE di ben tre anni.
Insomma, questa distro ha fatto enormi passi avanti
e ora si propone come scelta ottimale per ogni tipo
di utente, da quello desktop che si limita a navigare, scrivere
e creare/fruire contenuti multimediali, a chi invece si occupa,
anche professionalmente, di server, cloud e virtualizzazione.
Ben fatto, OpenSUSE! LXP

Slackware 14.1
Il lato B del DVD, tra le altre
cose, ospita BackBox, una
distro pensata per la sicurezza
e il penetration testing,
ma soprattutto la nuova
Slackware 14.1, una delle
pi storiche delle distro GNU/
Linux. Dedicata ai puristi
del sistema del Pinguino,
Slackware 14.1 adotta
il kernel 3.10.17 (che verr
supportato per due anni),

GCC 4.8.2, Apache 2.4.6,


tutta una serie di linguaggi
di programmazione, KDE
4.10.5, diversi browser
e molte applicazioni,
tra le quali Pidgin 2.10.7,
GIMP 2.8.6, X-Chat 2.8.8,
XSane 0.998 e Pan 0.139.
Per saperne di pi leggete
le note di rilascio: http://
www.slackware.com/
releasenotes/14.1.php.

COD. LP124

COD. LP125

COD. LP126

SERVER DI POSTA CON KERIO CONNECT

GUIDA AI BREVETTI

Diventa protagonista nel mondo Linux

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

5,90

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

Linux embedded

Aria, la scheda italiana per creare server, sistemi


di allarme, controllare processi e altro ancora

Bitcoin, la valuta digitale

Fai produrre al tuo computer la nuova moneta


che funziona sul Web senza il controllo di una banca

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

Unison
Realizza un clone di Dropbox
senza problemi di privacy

5,90

SFIDA PER PROGRAMMATORI

COD. LP128

NUMERO 125 - GENNAIO 2013

COD. LP129

5,90

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

NUMERO 124 - DICEMBRE 2012

Se leggi Linux Pro,


ti possono piacere anche...

COD. LP127

Raspberry Pi

PRO

La nuova NUMERO 1 delle distro!

5,90

MOODLE

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

23/01/13 17:26

NUMERO 126 - FEBBRAIO 2013

COD. LP130

NUMERO 127 - MARZO 2013

COD. LP131

OFFERTA
SPECIALE

I segreti dello
smartphone Android
pi acclamato
dellanno

COD. SAJ4
4,90

5,90
NUMERO 128 - APRILE 2013

COD. LP132

5,90
NUMERO 132 - AGOSTO 2013

5,90
NUMERO 129 - MAGGIO 2013

COD. LP133

5,90

NUMERO 131 - LUGLIO 2013

COD. LP134

COD. LP135

5,90
NUMERO 133 - SETTEMBRE 2013

5,90

NUMERO 130 - GIUGNO 2013

5,90
NUMERO 134 - OTTOBRE 2013

COD. SLP7
9,90

COD. SLP8
9,90

5,90
NUMERO 135 - NOVEMBRE 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)

In edicola il 24 gennaio

NEL PROSSIMO NUMERO

Hai un argomento da proporci?


Scrivi a prossimamente@linux.it

INTERFACCE GRAFICHE
SENZA CONFINI
Siamo andati alla scoperta di Qt5, la nuova versione del framework che fornisce
agli sviluppatori gli strumenti ideali per creare app multipiattaforma

E inoltre:
Foto in ordine

Scegli le news!

Desktop fai da te

Con Shotwell, gestire le foto


e riorganizzare la vostra raccolta
di immagini su disco fisso facile
e divertente: ecco tutte le potenzialit
di un eccellente programma

Con i feed RSS puoi scegliere quali


notizie ricevere e rimanere sempre
informato sugli argomenti che
ti interessano. Ecco i migliori
programmi Open Source per le news

Massima personalizzazione, minimo


investimento di risorse: ecco
gli strumenti perfetti per creare
il desktop fatto su misura
per le tue esigenze

LINUX

PRO

Mensile - 2013 - 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)
Digital media coordinator: Massimo Allievi
Realizzazione editoriale: Oku Studio
Iconografia e fotografie: Marco Coppola
Contenuti tratti da Linux Format - Future Publishing
Limited Plc., Bath (UK)
Pubblicit: Luigi De Re - luigidere@linuxpro.it
Tel. 339 4546500

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

Sprea Editori S.p.A.


Socio unico Sprea Holding S.p.A.

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

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

Collegio sindacale: Roberto Bosa (Presidente),


Susj Castenetti, Ivo Costa
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, S/NA
ISSN: 1722-6163
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 dai contenuti inglesi della pubblicazione
Linux Format, edita da Future Publishing Limited Plc., con
sede in Bath (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.

Ecco la RIVISTA
CHE STAVI ASPETTANDO

News, prove, guide pratiche, hacker zone

La tua rete ovunque


Facile, con FRITZ!

FRITZ!Box 7390
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.


Modem xDSL integrato e WLAN N con 2 x 300 Mbit/s simultanei

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

FRITZ!Box: comfort e molteplici funzioni per ogni tipo di connessione, FRITZ!Fon: telefono, e-mail, radio web, FRITZ!Powerline: rete domestica
attraverso la linea elettrica, FRITZ!WLAN Repeater: estensione della portata wireless, FRITZ!DECT 200: presa di corrente intelligente,
FRITZ!Apps: accesso remoto al FRITZ!Box

13/023

I prodotti FRITZ! pluripremiati: avm.de/awards_en

fritzbox.eu
info@avm.de