Linuxpro 136 Dicembre 2013

100

Click here to load reader

description

linux magazine

Transcript of Linuxpro 136 Dicembre 2013

Page 1: Linuxpro 136 Dicembre 2013

Diventa protagonista nel mondo Linux

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

Pro

Tari

ffa

r.O

.C. -

PO

sTe

iTal

ian

e sP

a -

abb

. PO

sT. -

D.l

. 353

/200

3 (C

On

v. in

l. 2

7/02

/200

4 n

. 46)

arT

. 1, C

Om

ma

1, s

/na

- Di

sTri

buTO

re: P

ress

-Di,

mil

anO

Il futuro è Mobile

Lancia i componenti

Nuvola lampo

Tre moduli extra per potenziare Raspberry Pi e creare progetti avanzati

Trasforma velocemente il tuo codice in un servizio cloud con la magia di JuJu

Trasforma velocemente il tuo codice in un servizio cloud con JuJu

15 pagine di pura programmazione

C++ Usa i puntatori smartGo Per creare codice concorrente

Plasma Active Ubuntu Touch Tizen CyanogenMod Firefox OS Sailfish

6 piattaforme per battere iOS

AccAdemiA del codice

Pacchetti ad hoc Con FPM crei file RPM

e Deb anche se non sei esperto

Il mistero dello swap Ti sveliamo come funziona e

come impostarlo correttamente

Linux Pro 136 - Mensile - 2013 - €5,90 - CHF 13,60

AllA scopertA del

progettosputnik

Dell XPS 13Developer Edition

Finalmente è nato l’ultrabook con Ubuntu

per chi programma 24 ore al giorno

In prova

LXP_136_cover_ZAG2.indd 1 04/12/13 10:59

Page 2: Linuxpro 136 Dicembre 2013

365 giorni di puro rock.Acquistala subito,

è un’edizione limitata

La prima Agenda in realtà aumentata

l

8,90A SOLO

eurOAnzichè €9,90

Linu

x pr

o 13

6 -

CODI

CE C

AMPA

GNA

264 COGNOME ....................................................................................................................................................

NOME .............................................................................................................................................................

VIA ..................................................................................................................................................................

................................................................................. N° ............................... CAp .....................................

LOCALITà .................................................................................. prOV ......................................................

E-MAIL .............................................................................................................................................................

rISpOSTA ......................................................................................................................................................

acquistala in edicola

e pagala meno

paRtecipa al nostRo sondaggioQUAL è iL tUo cAntAnte o grUppo preferito?

coMpila con i tuoi dati

consegna questo coupon all’edicolante per avere l’agenda 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

Buono Sconto di € 1,00

singola_Agenda_207x285.indd 13 04/12/13 16:23

Page 3: Linuxpro 136 Dicembre 2013

Linux pro 136 1

Domande alla redazione: [email protected]

Abbonamenti: [email protected]

Arretrati: [email protected]

problemi con il DVD: [email protected]

Sito Web: www.linuxpro.it oppure inviate le vostre lettere a: Linux Pro, Sprea Editori S.p.A.,

Via Torino 51, 20063 Cernusco S/N Telefono: 02.92432.1

contatti

Editoriale

ora trovi Linux Pro

anchesu android

Tirando le sommeEccoci giunti all’ultimo numero del 2013. Come si fa spesso in questi casi,

proviamo a intavolare un consuntivo di quanto accaduto durante l’anno. 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 l’anno in cui anche gli ultimi sostenitori di questa idea abbiano seppellito l’ascia 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à cos’altro. Difatti la sicurezza, assieme alla privacy, nel 2013 sono state al centro dell’attenzione. 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 l’open Source può essere d’aiuto. 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 nell’articolo 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 all’infinito. 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ò d’obbligo gli auguri di Buone Feste a tutti voi che ci leggete.

LXP_136_01_editoriale 1 05/12/13 14:05

Page 4: Linuxpro 136 Dicembre 2013

2 LINUX PRO 136

Sommario

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

LINUX PRO 136 LINUX PRO

In primo piano

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

LINUX MOBILE

08 pump.io

ABBONATI ALLA VERSIONE DIGITALE

A SOLI 14,90 €DURATA ABBONAMENTO 1 ANNO

SOLO PER PC E MAC

www.sprea.it/digital

VERSIONE DIGITALE

www.sprea.it/digital

LXP_136_02_03_sommario 2 04/12/13 15:15

Page 5: Linuxpro 136 Dicembre 2013

IL DVD IN BREVELATO A∆ DISTRIBUZIONI∆ Fedora 19 (32 bit)

LATO B∆ DISTRIBUZIONI∆ Deft 8∆ IPFire 2.13∆ Salix Xfce 14.0.1

∆ GIOCHI∆ Ayon∆ RIVISTA∆ Codice d’esempio Android∆ Codice d’esempio Raspberry ∆ Codice d’esempio Ruby∆ Codice d’esempio Sysadmin∆ BurgerSpace 1.9.2∆ NetHogs 0.8.0

LINUX PRO 136 3

Sommario

04 NewsdeskLe novità del mondo Open Source

07 PostaFilo diretto con la redazione

08 FAQ: pump.ioSocial network Open Source

Approfondimenti 10 Linux MobileL’Open Source per il mondo mobile

18 Ultrabook DellI segreti del progetto Sputnik

22 Moduli hardwareGli “extra” migliori per la vostra RP

26 IntervistaEben Upton di Raspberry Pi Foundation

30 ReactOSUsare i programmi Win32 senza Windows

34 Trucchi per sysadminRiconoscimento della rete, ID unico, guida rapida allo spazio di swap

Android

38 NewsIl ritorno di Motorola e Google Vulnerability Reward Program

39 LG Nexus 5Le caratteristiche dell’ultimo dei Nexus

Recensioni

40 I test del mesePC-BSD 9.2, VMware Workstation 10,VMware Player 6, Da non perdere

Tutorial

56 FPMRealizzate e distribuite i vostri pacchetti

60 JujuLo strumento gestionale perfetto per gestire i servizi cloud

66 ZFSIl filesystem flessibile per eccellenza

70 RaspbianNiente di meglio di un sistema operativo dedicato per gestire la Raspberry Pi!

74 Log di sistemaImparate a ricevere via mail solo gli avvisi di sistema che vi interessano davvero

Accademia

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

78 C++11Consigli da esperti sull’uso dei puntatori

82 GoIl linguaggio perfetto per scrivere processi da eseguire in contemporanea

86 HaskellImparate a scrivere un programma con questo linguaggio funzionale

92 L’eco dei LUGLa mappa dei LUG italiani

94 Guida softwareGuida al software presente nel DVD

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

PROdentro il

IL DVD IN BREVELATO A∆ DESKTOP∆ Mednafen 0.9.28

Parcellite 1.1.3∆ DISTRIBUZIONI∆ Mageia 3 (32 bit)∆ Sophos UTM ∆ Untangle 9.4 (32 e 64 bit)

∆ GIOCHI∆ PokerTH 1.0.1∆ INTERNET∆ Firefox 21∆ ProFTPD 1.3.4d∆ PROGRAMMAZIONE∆ CPPCheck 1.60.1∆ GTKDialog 0.8.3 ∆ LiteIDE∆ RIVISTA

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

PROdentro il

IL DVD IN BREVELATO A∆ DISTRIBUZIONI∆ OpenSUSE 13.1(32 bit)

LATO B∆ DISTRIBUZIONI∆ BackBox 3.09∆ pfSense LiveCD 2.1 ∆ Slackware 14.1 (32 bit)

∆ RIVISTA∆ Catfish 0.8.2∆ Choria∆ Colorful 1.1∆ Data Crow 3.12.5∆ GCStar 1.7∆ LiVES 2.0.6∆ Sixv ∆ Tellico 2.3.8

IL DVD IN BREVEIL DVD IN BREVE

IL PROSSIMO NUMERO ESCE ILNUMERO ESCE IL

24 GENNAIO

TrisquelTrisquel

LINUX PRO 133 17

Ubuntu libero?Per un occhio inesperto, Trisquel potrebbe sembrare una copia di Ubuntu, eccetto che per l’esclusione dei pacchetti non free che non rispettano le rigorose politiche sul Software Libero rilasciato sotto licenza GNU. Rodríguez, 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. Nell’estrazione di ciò che non si vuole mantenere, il rischio di fare dei danni è altissimo”. Rodríguez porta come esempio il caso del kernel 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 all’atto pratico il progetto non è indenne da difficoltà. Uno degli aspetti più critici, sta proprio nel garantire agli utenti che la sostituzione

La libera TrisquelLa distro campionessa nella battaglia per il Free Software

La linea che divide il pragmatismo dall’ideologia è sempre sottilissima e il progetto Trisquel GNU/Linux

è forse l’unico 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 l’utente finale gode. Il progetto Trisquel è stato avviato da un gruppo di studenti dell’Università spagnola di Vigo, con l’obiettivo di creare un sistema didattico con supporto per la lingua galiziana. Ben presto l’opera è diventata talmente vasta

Rodríguez. Proprio Rodríguez, 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 Rodríguez, “non usiamo

il termine distro come un’arida 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”.

da superare lo scopo iniziale e portare a un vero e proprio sistema operativo multilingue. Trisquel GNU/Linux ha visto la luce ufficialmente nell’aprile del 2005, quando Richard Stallman l’ha presentata al mondo intero. Il cuore della distro è la vastissima comunità internazionale di appassionati, guidata da un personaggio carismatico qual è Rubén

di un contenuto non free con il suo omologo libero, non danneggi il corretto funzionamento della distro. L’esempio più lampante riguarda i driver. Quando ce ne sono due versioni, una proprietaria e l’altra 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 un’occhiata 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, l’applicazione 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 dell’usabilità, un’altra miglioria nel desktop di Trisquel sta nell’approccio intuitivo con cui accoglie i nuovi utenti. A onor del vero, ricorda molto da vicino Windows ed è proprio Rodríguez a confermare questa impressione, affermando che non c’è niente di male a prendere spunto dalle idee che funzionano.

“Lo sviluppo di software libero porta con sé una grande responsabilità”

L’ambiente grafico di Trisquel ricorda da vicino quello di Windows. La barra degli strumenti, infatti, ne è l’esempio

Usare Trisquel 6.0Trisquel 6.0 è l’ultima versione della distro basata su Ubuntu 12.04. Come per quest’ultima, 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. L’aspetto migliore è sicuramente la sua interfaccia desktop. Anche se la distribuzione viene eseguita su GNOME 3.4, gli sviluppatori - per i motivi che potete leggere nell’articolo - hanno deciso di ripiegare su un ambiente destkop più tradizionale. Nell’edizione 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, 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, 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, noi non abbiamo avuto problemi a far lavorare Trisquel sulle nostre macchine, riscontrando un notevole miglioramento nel panorama dei driver free. L’installer, infine, è una versione modificata di quello che trovate su Ubuntu. La sua particolarità di essere uno dei sistemi d’installazione più semplici da usare per chi proviene dal mondo desktop ne ha fatto il candidato principale per l’uso in Trisquel.

Ubuntu libero?Per un occhio inesperto, Trisquel potrebbe sembrare una copia di Ubuntu, eccetto che per l’esclusione dei pacchetti non free che non rispettano le rigorose politiche sul Software Libero rilasciato sotto licenza GNU. Rodríguez, 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. Nell’estrazione di ciò che non si vuole mantenere, il rischio di fare dei danni è altissimo”. Rodríguez porta come esempio il caso del kernel 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 all’atto pratico il progetto non è indenne da difficoltà. Uno degli aspetti più critici, sta proprio nel garantire agli utenti che la sostituzione

La libera TrisquelLa libera TrisquelRodríguez. Proprio Rodríguez, 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 Rodríguez, “non usiamo

il termine distro come un’arida definizione tecnica per descrivere una versione di un software. La parola distribuzione è qualcosa che implica la massima responsabilità verso chi

mix di ingrandimenti, sintesi vocale e sistema di scrittura braille, consente agli ipovedenti di usare facilmente le funzioni della distro. Sul fronte dell’usabilità, un’altra miglioria nel desktop di Trisquel sta nell’approccio intuitivo con cui accoglie i nuovi utenti. A onor del vero, ricorda molto da vicino Windows ed è proprio Rodríguez a confermare questa impressione, affermando che non c’è niente di male a prendere spunto dalle idee che funzionano.

Usare Trisquel 6.0Trisquel 6.0 è l’ultima versione della distro basata su Ubuntu 12.04. Come per quest’ultima, 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. L’aspetto migliore è sicuramente la sua interfaccia desktop. Anche se la distribuzione viene eseguita su GNOME 3.4, gli sviluppatori - per i motivi che potete leggere nell’articolo - hanno deciso di ripiegare su un ambiente destkop più tradizionale. Nell’edizione principale, trovate LibreOffice 3.5e 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 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 Playerriprodurre video e musica. Se volete installare software proprietari come per esempio Skype, potete farlo tramite Synaptic. Bisogna però

e non sarà certo l’ultimo). Intorno al 2000, ho cominciato a cercare un’alternativa 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 l’annuncio 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 l’Italia. Ho iniziato immediatamente a scontrarmi con Sun, più che un’azienda un caso umano, e con alcuni membri lungimiranti della comunità che

consideravano il marketing del tutto inutile, ma questo non mi ha fermato: la combinazione tra la qualità del prodotto e un’azione di marketing aggressiva ha portato OOo a raggiungere una quota di mercato superiore al 10% in Italia (i dati sono stimati) e un ruolo sempre più visibile sul mercato.A partire dal 2006, dalla conferenza di Lione, ho iniziato a contribuire al marketing internazionale, tanto che nel 2008 sono diventato uno dei leader del team con la supervisione del budget. In questo modo, ho iniziato a conoscere un numero sempre più ampio di persone, e sono stato coinvolto nelle discussioni sull’opportunità di creare una fondazione indipendente (che sono diventate sempre più fitte a partire dalla conferenza di Pechino nel 2008). Nel 2009, quando Oracle ha acquisito Sun Microsystems, ho commentato dicendo che era la cosa peggiore che sarebbe potuta succedere a OOo (in realtà mi sbagliavo, perché quello che è successo dopo è stato anche peggio). Ovviamente, i colloqui sulla fondazione sono diventati sempre più fitti, e si sono trasformati in un piano di lavoro nel gennaio del 2010. A quell’epoca, ho scritto il marketing plan di LibreOffice (senza sapere che si sarebbe

chiamato così), che - a più di tre anni di distanza - può essere considerato un successo.Nell’estate del 2010 ho lavorato a tempo pieno all’annuncio, poi - come se niente fosse - sono andato a Budapest per la conferenza di OpenOffice, durante la quale c’è stato l’incontro 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 quest’anno sarà basato sull’innovazione, 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 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 simile), la maggior parte delle auto dotate di computer di bordo usa sempre Linux Embedded (ve lo immaginate Windows su un sistema frenante?), e infine quasi tutti i supercomputer e un numero sempre più ampio di server utilizzano Linux. Inoltre, non bisogna dimenticare la spinta che ha dato all’innovazione il modello dello sviluppo collaborativo tipico della comunità del Software Libero. Oggi, non esiste una sola azienda in grado di sostenere che il modello di sviluppo chiuso è superiore, dopo che anche IBM e Microsoft - la prima ha inventato il concetto, e la seconda lo ha perfezionato - hanno smesso di dirlo. Linux, e in accezione più ampia tutto il mondo del Software Libero, ha bisogno di maggiore coesione e di una strategia di marketing e comunicazione in grado di contrastare gli investimenti delle grandi aziende. Purtroppo, il frazionamento dei progetti - che in alcuni casi è completamente inutile - è un fatto difficile da comprendere per tutti coloro che sono estranei alla comunità, e rappresenta un fattore di debolezza. Infine, è necessario che il mondo del Software Libero cominci a pensare seriamente a un modello di business sostenibile, perché altrimenti rimarrà sempre ostaggio delle aziende e delle loro strategie di sopravvivenza

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ì l’opinione 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 l’uso di un po’ di buon senso nella comunicazione. Combattiamo contro nemici potenti, che hanno budget importanti e strumenti per influenzare l’opinione pubblica che vanno ben oltre le nostre possibilità, per cui dobbiamo usare tutte le nostre capacità. Solo aggregando tutti i progetti all’interno 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

È il giorno del pinguino

Come ogni anno, il Linux 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 di riferimento per l’innovazione tecnologica, nella vita quotidiana c’è ancora molta difficoltà ad avvicinarsi a una realtà spesso erroneamente percepita per soli addetti ai lavori. Ecco quindi che il Linux Day 2013 vuole essere un’iniziativa rivolta a far conoscere a tutti le potenzialità del Free Software, che in Italia sono ancora un’opportunità quasi 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 Linux Day: scriveteci a [email protected] 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

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 come l’email - 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 l’intervento dell’antitrust, 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,

È l'innovazione il tema centrale del Linux Day 2013 Ce ne parla Italo Vignoli, fondatore e consigliere

di The Document FoundationSEmPRE AL PASSO COn I TEmPI

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

2013

IntervistaIntervista

20 LINUx PRO 133 LINUx PRO 133 21

È il giornodel pinguinoÈ il giornodel pinguinoÈ il giorno

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 come l’email - 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 l’intervento dell’antitrust, 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,

È l'innovazione il tema centrale del Linux Day 2013Ce ne parla Italo Vignoli, fondatore e consigliere

di The Document Foundation

mix di ingrandimenti, sintesi vocale e sistema di scrittura braille, consente agli ipovedenti di usare facilmente le funzioni della distro. Sul fronte dell’usabilità, un’altra miglioria nel desktop di Trisquel sta nell’approccio intuitivo con cui accoglie i nuovi utenti. A onor del vero, ricorda molto da vicino Windows ed è proprio Rodríguez a confermare questa impressione, affermando che non c’è niente di male a prendere spunto dalle idee che funzionano.

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 Gnashpuò riprodurre senza inconvenienti video HTML5 e visualizzare i file PDF senza alcun add-on. Per installare software aggiuntivo potete utilizzare

, oppure sfruttare il gestore di pacchetti della distro. Non mancano poi altri esempi

VLC Media Playerriprodurre video e musica. Se volete installare software proprietari come per esempio Skype, potete farlo tramite Synaptic. Bisogna però

È il giornodel pinguinoÈ il giornodel pinguinoÈ il giorno

Linux Day,Linux Day,Linux 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

infrastrutture enterprise, tanto da essere punto innovazione tecnologica,

è ancora molta difficoltà ad avvicinarsi a una realtà spesso erroneamente percepita per soli addetti ai lavori. Ecco quindi che il Linux Day 2013 vuole essere un’iniziativa rivolta a far conoscere a tutti le potenzialità del Free Software,

opportunità quasi del tutto inesplorata. A parlarne con Linux Pro

, profondo conoscitore del tema e fondatore e consigliere della Document Foundation. Infine un messaggio rivolto ai numerosi LUG che parteciperanno al

[email protected]

la mappa degli eventi, potete collegarvi alla o visitare il sito

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

tutta colpa, o merito, di Outlook. Io sono

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 come lstandard (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

È l'innovazione il tema centrale del Linux Day 2013Ce ne parla Italo Vignoli, fondatore e consigliere

di The Document Foundation

Gramps Gramps

24 LINUX PRO 133 LINUX PRO 133 25

Scroprite come usare Gramps per creare un albero genealogico e ricostruire la storia della vostra famiglia

Genealogia fai da te

Nella maggior parte dei casi, le conoscenze familiari non vanno oltre qualche grado di parentela. Quando

però si inizia a scavare alla ricerca degli avi più lontani o di parenti che hanno trovato fortuna in altri paesi in epoche passate, le cose si complicano non poco. Quali sono le origini della famiglia? Dove vivevano? Da dove deriva il vostro cognome? La genealogia è l’unica scienza che può dare risposta a queste domande, catalogando, ricercando e studiando tutti i legami famigliari che si sono evoluti nel

tempo. In definitiva è un’attività 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://gramps-

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

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 d’oro 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 l’organizzazione dei lavori di ricerca, registrazione e pubblicazione, diventando così un insostituibile assistente.

I primi passiAlla fine di questo articolo, creerete un albero genealogico di esempio della famiglia Rossi, ma ovviamente l’intento è 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, l’ultimo della famiglia.

Create una fonteIl primo elemento da cui partire è anche il più semplice. Basterà infatti intervistare l’ultimo 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 l’icona a forma di +, denominata Aggiungi. Si apre così l’editor 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

emergono, quindi premete il pulsante OK per confermare. In qualsiasi momento se ne presentasse la necessità, potrete sempre modificare l’intervista facendo doppio click sulla scheda “Intervista a Giovanni Rossi” che trovate sotto la voce Fonti.

Aggiungete una personaAl 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 dall’intervista 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 l’omonima 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 dall’intervista di Giovanni. Trascinate “Intervista a Giovanni Rossi” nel campo Citazione Fonti, in modo da aprire un’ulteriore scheda dedicata. Nella parte inferiore, titolata Fonti informazioni condivise, notate come siano già presenti i dati dell’intervista. Nella zona superiore, invece, avete a disposizione nuovi campi da riempire. Potete aggiungere la data in cui è stata fatta l’intervista e il livello di confidenza che si attribuisce alle informazioni ottenute. Mettete quindi Molto alta. Adesso, per dare vita all’albero 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 l’icona 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 dell’immagine nella scheda Citazioni fonti, presente nell’Editor riferimento oggetto multimediale.

Mediante l’opzione Vista ascendenza, avete una visuale chiara del diagramma genealogico

Quante più persone aggiungete all’albero 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 dell’hard disk, vi consigliamo di dedicare una cartella alle sole foto da utilizzare. Ricordate: essere precisi è il miglior approccio alla ricerca genealogica!

Cartella dedicata

È l'innovazione il tema centrale del Linux Day 2013Ce ne parla Italo Vignoli, fondatore e consigliere

di The Document Foundation che si

terrà a ottobre, propone un argomento cardine su cui ruota tutta l'intera fiera

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

È l'innovazione il tema centrale del Linux Day 2013Ce ne parla Italo Vignoli, fondatore e consigliere

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

terrà a ottobre, propone un argomento

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

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

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

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

Per un occhio inesperto, Trisquel potrebbe sembrare una copia di Ubuntu, eccetto che per l’esclusione dei pacchetti non free che non rispettano le rigorose politiche sul Software Libero rilasciato sotto licenza GNU. Rodríguez, 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. Nell’estrazione di ciò che non si vuole mantenere, il rischio di fare dei danni è altissimo”. Rodríguez porta come esempio il caso del kernel 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,

di un contenuto non free con il suo omologo libero, non danneggi il corretto funzionamento della distro. L’esempio più lampante riguarda i driver. Quando ce ne sono due versioni, una proprietaria e l’altra free, la maggior parte delle

In effetti basta dare un’occhiata 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 mix di ingrandimenti, sintesi vocale e sistema di scrittura

di un contenuto non free con il suo omologo libero, non danneggi il corretto funzionamento della distro. L’esempio più lampante riguarda i driver. Quando ce ne sono due versioni, una proprietaria e l’altra 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 un’occhiata 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, l’applicazione che mediante un sapiente mix di ingrandimenti, sintesi vocale e sistema di scrittura

copia di Ubuntu, eccetto che per l’esclusione dei pacchetti non free che non rispettano le rigorose politiche sul Software

lampante riguarda i driver. Quando ce ne sono due versioni, una proprietaria e l’altra free, la maggior parte delle

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,

una proprietaria e l’altra free, la maggior parte delle distribuzioni, come Ubuntu e Fedora/Red Hat, scelgono una proprietaria e l’altra free, la maggior parte delle distribuzioni, come Ubuntu e Fedora/Red Hat, scelgono la prima. Nel momento in cui si decide di sostituirla con

non free che non rispettano le rigorose politiche sul Software

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 un’occhiata a Trisquel 6.0 per rendersi

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 un’occhiata a Trisquel 6.0 per rendersi

si vuole mantenere, il rischio di fare dei danni è altissimo”. Rodríguez porta come esempio il caso del kernel Linux-libresul cui progetto è basato Trisquel. Per chi non lo conoscesse,

non free che non rispettano le rigorose politiche sul Software Libero rilasciato sotto licenza GNU. Rodríguez, 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. Nell’estrazione di ciò che non si vuole mantenere, il rischio di fare dei danni è altissimo”.

Linux-libre,

una proprietaria e l’altra 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.

è legata e da cui dipende la sua corretta gestione continui a operare senza problemi. Il team di Trisquel, però, non si limita

Prova la tua rivista anche in digitaleProva la tua rivista anche in dioitaleProva la tua rivista anche in dioitaleProva la tua rivista anche in digitaleProva la tua rivista anche in dioitaleProva la tua rivista anche in digitaleProva la tua rivista anche in dioitaleProva la tua rivista anche in dioitaleProva la tua rivista anche in dioitaleProva la tua rivista anche in dioitaleProva la tua rivista anche in dioitaleProva la tua rivista anche in dioitale

Inoltre…

Il database perfetto

Libertà pura

Cambia desktop!

TizenIl futuro dei dispositivi mobili è sempre più Open Source

AVM Fritz!Box 3390 6 antenne per la massima velocità wireless a 2,4 e 5 GHz in contemporanea

Il database perfetto Le applicazioni Web sono più veloci,

scalabili e sicure se usi MariaDB

Libertà pura Scopri Trisquel, la distro più fedele

ai dettami del Free Software

Cambia desktop!Cambia desktop! Scegli l’ambiente grafico giusto

per look e funzionalità!

Diventa protagonista nel mondo Linux

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

Pro Raspberry Pi Streaming audio e video in casa

AVM Fritz!Box 33906 antenne per la massima velocità wireless a 2,4 e 5 GHz in contemporanea

AVM Fritz!Box 33906 antenne per la massima velocità wireless

AccAdemiA del codice

lightworks Effetti speciali e strumenti per l’editing professionale a tua disposizione

gnome 3Accedi alle opzioni avanzate con Frippery e Gnome Tweak Tool

Ruby on Rails Il framework Web senza difettiFirefox OS Scopri l’emulatore e le sue APIAndroid Gestire texture e touchscreen con OpenGLConcetti Le basi della programmazione a oggetti

programmare!

Linu

x Pr

o 13

3- M

ensi

le -

€5,

90 -

CHF

13,

60

Tari

ffa

r.O

.C. -

PO

sTe

iTal

iane

sPa

- a

bb. P

OsT

. - D

.l. 3

53/2

003

(CO

nv. i

n l.

27/

02/2

004

n. 4

6) a

rT. 1

, CO

mm

a 1,

DCb

mil

anO

- Di

sTri

buTO

re: P

ress

-Di,

mil

anO

Inoltre…

Cambia desktop!Cambia desktop!

AVM Fritz!Box 3390

Cambia desktop! Scegli l’ambiente grafico giusto Scegli l’ambiente grafico giusto

AVM Fritz!Box 3390AVM Fritz!Box 3390

Il framework Web senza difetti

Gestire texture e touchscreen con OpenGL Le basi della programmazione a oggetti

programmare!L'Accademia del Codice ti svela tutti i misteri dell'arte del coding

LXP_133_cover 3.indd 1 17/09/13 14:41

Prova la tua rivista anche in dioitaleProva la tua rivista anche in dioitaleProva la tua rivista anche in dioitale

LXP_136_02_03_sommario 3 04/12/13 15:15

Page 6: Linuxpro 136 Dicembre 2013

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

Se hai news da segnalarci o dei commenti scrivi a [email protected]

4 LINUX PRO 136

Codec

Cisco, l’azienda 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 dell’Open 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 all’adozione 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 l’alta 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

in proprio, con una notevole riduzione dei costi. Uno dei primi esempi viene da Mozilla Foundation che ha deciso di implementare OpenH264 in Firefox.

Cisco ha tutto l’interesse a far diffondere lo standard WebRTC, perché controlla il mercato delle videoconferenze

L’anima FreeBSD di PlayStation 4Era 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, un’ottima 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.

Il codec video H.264 è gratis!

WebRTC fa funzionare applicazioni VoIP e per la condivisione P2P senza bisogno di plug-in

Informazione a cura di Studio Storti Srl

Il server di posta più usato è Open Source!Nell’agguerrito 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 l’Enterprise 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

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. L’unica 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, l’Add-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à real-time, 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.

LXP_136_04_05_news_ok 4 03/12/13 16:45

Page 7: Linuxpro 136 Dicembre 2013

Newsdesk

Privacy

Niente backdoor per Linux!S

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 l’ente americano. A questo proposito, Rick Falkvinge, del Partito Pirata Svedese,

ha voluto puntualizzare che l’inserimento di una backdoor nel kernel Linux sarebbe un’operazione 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

Informazione a cura di Studio Storti Srl

Il server di posta più usato è Open Source!Nell’agguerrito 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 l’Enterprise 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

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. L’unica 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, l’Add-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à real-time, 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.

come Windows e Mac OS X che, avendo un codice sorgente non Open, potrebbero nascondere molto più facilmente una porta nascosta. LXP

LXP_136_04_05_news_ok 5 03/12/13 16:45

Page 8: Linuxpro 136 Dicembre 2013

PACCHETTI COMPLETI PER

PROFESSIONISTI

40 €IVA escl.*40

12 mesi da

Performance garantiteAdobe® Dreamweaver® CS5.5 incluso

Drupal™, WordPress, Joomla!™, Typo3, Magento®…

Più di 140 applicazioniMobile Site Builder

Newsletter Tool

MySQL SEOFree Mode o Safe Mode

CDNPHP 5.4

NetObjects Fusion® 2013

GeoridondanzaBackup giornalieri

Connettività di oltre 300 Gbit/s

SiteAnalytics

HOSTINGNEW

1-1_WebHosting_207x285_5_28L

1and1.it800 977313 (numero verde)

6 € per il primo anno IVA escl.*

10 €OFFERTASPECIALE

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

DE100020100364_1-1_207x285_5_28L.indd 1 18.11.13 11:23

Page 9: Linuxpro 136 Dicembre 2013

LINUX PRO 125 7

Proteggere i videoBuongiorno 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

RCiao 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 comandomd5sum 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 digitandomd5sum --check MD5SUMS

In alternativa ti suggeriamo l’uso 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.

Scriveteci!Se avete dei dubbi di natura tecnica o dei commenti inviate una e-mail a [email protected] 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 all’indirizzo Web www.linuxpro.it, oppure a collegarsi al nostro canale IRC #lxp ospitato dalla rete irc.freenode.net.

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

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.

1and1.it

MASSIMA FLESSIBILITÀPER I TUOI PROGETTI WEB

■ Dominio gratuito (.it, .com, .net, .org, .info, .eu)■ Potenza illimitata: spazio web, traffi co, account e-mail,

database MySQL■ Sistema operativo Linux o Windows

TUTTO INCLUSO

■ Più di 140 popolari applicazioni (Drupal™, WordPress, Joomla!™, Typo3, Magento®…)

■ Supporto di esperti per ogni domanda

APP AD ALTE PRESTAZIONI

■ Software Premium inclusi: Adobe® Dreamweaver® CS5.5 e NetObjects Fusion® 2013

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

POTENTI TOOL

■ 1&1 Strumento SEO■ 1&1 Newsletter Tool■ 1&1 SiteAnalytics

MARKETING DI SUCCESSO

■ Massima disponibilità (georidondanza)■ Connettività di oltre 300 Gbit/s■ Fino a 2 GB di RAM garantiti■ 1&1 CDN powered by CloudFlare

TECNOLOGIA ALL’AVANGUARDIA

DE100020100364_1-3_113x285_5_28L.indd 1 18.11.13 11:24

LXP_136_07_posta 7 05/12/13 12:00

Page 10: Linuxpro 136 Dicembre 2013

FAQ pump.io Cosa ne pensi di questo progetto? Scrivilo a [email protected]

8 Linux pro 136 Linux pro 136 9

D Cominciamo con una domanda facile. Puoi darmi una definizione di pump.io?

R pump.io (http://pump.io) è un software 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.

D Come? Perché? Che cosa c’era che non andava in StatusNet e Identi.ca?

R nulla, in realtà… tranne una cosa. il grande successo del servizio di microblogging

per comunicare. per farlo, pump.io utilizza una licenza Apache, che ne faciliterà l’adozione da parte di quanti più prodotti possibile, una semplice interfaccia rEST e, soprattutto, il concetto di federazione.

D So che cos’è una licenza software; ma che cosa significa REST?

R il representation State Transfer è un 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

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 Meno male; ma quali sono i principali vantaggi di pump.io?

R L’idea alla base del progetto è mettere al centro gli individui, più che i singoli

siti sociali o applicazioni da essi usati

Linux pro presenta un software open Source e il relativo protocollo in grado di rendere superflui Facebook e gli altri social network

pump.io?Alcune domande su...

LXP_136_08_09_LXF175.woe 8 03/12/13 16:45

Page 11: Linuxpro 136 Dicembre 2013

FAQ pump.io Cosa ne pensi di questo progetto? Scrivilo a [email protected] pump.io FAQ

8 Linux pro 136 Linux pro 136 9

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.

D Hai detto che pump.io utilizza REST solo per una semplice API?

R È così. pump.io si limita deliberatamente 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.

D E per quanto riguarda la federazione? Non c’entra nulla con Star Trek, immagino…

R no, infatti; ed è anche molto semplice 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.

D La federazione, invece, è l’esatto opposto di quanto avviene su Twitter, Facebook

e Google Plus?

R più o meno. La federazione, cioè l’interconnessione 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 un’unica interfaccia. uno degli obiettivi essenziali della federazione di pump.io è sostituire, almeno in parte, l’uso di infrastrutture centralizzate che sono a un tempo molto costose da mantenere per le imprese e molto facili da monitorare con sistemi tipo priSM.

D La cosa si fa interessante; ma che cosa si potrebbe fare concretamente

con un account su un server pump.io?

R un’occorrenza 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.

D Come si può provare l’effetto del social networking in stile pump.io?

R Ci sono due modi per farlo. uno è installare una copia del server. L’altro, molto più

semplice, consiste nel caricare sul browser

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.

D Hai citato le attività e i flussi di attività. Di che cosa si tratta esattamente?

R Le attività di pump.io sono semplici descrizioni di ciò che avviene a o tra

gli utenti. purché formattata correttamente, qualsiasi cosa che abbia una struttura soggetto-verbo-oggetto può essere un’attività 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 l’elenco delle relazioni tra gli utenti, il cosiddetto social graph.

D Sembra abbastanza semplice. Perciò, immagino, i flussi sono semplicemente

sequenze di attività effettivamente caratterizzate da un tema comune…

R Esattamente. un’altra 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 l’unico compito di pump.io è distribuire i flussi di attività agli utenti definiti come loro destinatari.

D E per usare pump.io personalmente, su un proprio server, che cosa si deve fare?

R per cominciare, occorre scaricare il software; 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.

D Il social networking con pump.io sembra interessante. Dove si possono trovare

altre informazioni?

R 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 un’occhiata all’articolo ‘Setting up pump.io on Debian Wheezy’ (http://saz.im/blog/pumpio.html) e adattate le sue indicazioni alla vostra distribuzione Gnu/Linux. LXP

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.

D In che modo potrò accedere al mio account pump.io dopo averlo creato?

Solo tramite un browser?

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

D Un attimo, però. L’idea centrale del social networking è connettersi con altre

persone… ma come faccio a trovarle, se non esiste un server centrale?

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

D E per quanto riguarda i contenuti? Facebook e Twitter usano un’unica

casella di ricerca per tutti i contenuti postati dai loro utenti. Pump.io può offrire qualcosa del genere?

R 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 all’interno di questi dati; non esiste però uno spazio unico che raccolga i contenuti di tutti.

D Ok, evitare la centralizzazione è il principio base di pump.io… ma se non sbaglio

hai detto anche “Sì, più o meno”…

R 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ò

LXP_136_08_09_LXF175.woe 9 03/12/13 16:45

Page 12: Linuxpro 136 Dicembre 2013

Linux Mobile Linux Mobile

Scoprite la prossima generazionedi sistemi operativi mobili Open Source insieme a noi

Indicare 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, d’altra 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 l’amaro in bocca a più di un fautore dell’Open 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

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

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); d’altronde, data la velocità con cui si evolve il mondo dei telefoni cellulari, quando leggerete queste pagine potrebbero essercene altri già disponibili.

10 LINUX PRO 136

“Il mondo di Linux non è rimasto a guardare mentre si scontravano i giganti”

LINUX MOBILE

LXP_136_10_17_LXF177.feat_mobs 10 03/12/13 16:46

Page 13: Linuxpro 136 Dicembre 2013

Linux Mobile Linux Mobile

Salvo per l’assenza dei servizi Google, la maggior parte degli utenti non noterà la differenza tra CyanogenMode Android

OSMAnd conserva tutte le mappe sul vostro dispositivo, che tuttavia possono occupare diverse centinaia di MB

CyanogenMod, si basa su Android Open Source Project ed è un sistema operativo gratuito molto simile (dal punto di vista dell’utente) 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. L’installazione è 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.

Android così come lo conosciamo

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 dell’Open 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 l’Open Source troverà applicazioni non sovraccariche di pubblicità indesiderate). Ognuno usa il tablet in modo diverso ma per noi l’accesso 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à è tutt’altro 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 l’Android di Google.

CYANOGENMODCYANOGENMODAndroid così come lo conosciamo

CYANOGENMODAndroid così come lo conosciamo

LINUX PRO 136 11

“Per le operazioni quotidiane possiamo dirci soddisfatti”

LXP_136_10_17_LXF177.feat_mobs 11 03/12/13 16:46

Page 14: Linuxpro 136 Dicembre 2013

Linux Mobile Linux Mobile

Fin dalla sua nascita si dice che Unity è progettato per i touchscreen, perciò l’annuncio 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 nell’acqua 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). L’interfaccia utente Touch, tuttavia, si ispira chiaramente all’ambiente 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 l’abbiamo 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 all’utente uno sguardo non solo sul suo tablet ma

sull’intero 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 un’idea 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 dall’interfaccia 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 dall’alto 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 all’altra delle app in funzione. Quest’ultimo 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 dell’app 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.

UBUNTU TOUCHUBUNTU TOUCHUn desktop controverso sbarca sul cellulare

Con il Launcher di Ubuntu Touch, tutte le vostre app preferite sono accessibili con un gesto

La sezione Featured degli scope Video e Music presenta una carrellata di copertine. Se solo lo facesse per i nostri contenutie non per quelli che Canonical tenta di venderci…

12 LINUX PRO 136

“Appare davvero chiaro che si tratta di una release non finale”

LXP_136_10_17_LXF177.feat_mobs 12 03/12/13 16:46

Page 15: Linuxpro 136 Dicembre 2013

Linux Mobile Linux Mobile

M 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 dell’interfaccia utente, dal Marketplace al dialer telefonico, sono programmati con tecnologie Web, come HTML5 con CSS e JavaScript. Il risultato è un’esperienza Web completamente omogenea. Il fatto che il sistema utilizzi tecnologie Web, tra l’altro, 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 dell’accelerazione grafica e di altre funzioni hardware. L’interfaccia 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.

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 dell’uovo 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 (anch’esso 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. L’essenziale è la creazione di un’esperienza 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.

FIREFOX OSFIREFOX OSUn sistema operativo per cellulari nato dalle tecnologie Web

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

LINUX PRO 136 13

LXP_136_10_17_LXF177.feat_mobs 13 03/12/13 16:46

Page 16: Linuxpro 136 Dicembre 2013

Linux Mobile Linux Mobile

agevolmente dall’uno all’altro. Per attivare le Attività è sufficiente trascinare un pulsante dal lato destro dello schermo e quindi selezionare quella prescelta all’interno 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 l’arena 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 l’altra 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 un’attività per il controllo della posta elettronica e per la navigazione sul Web e un’altra 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 è l’unico 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.

PLASMA ACTIVEPLAMSA ACTIVEKDE per dispositivi mobili

I 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. L’ideale sarebbe un dispositivo in grado di fare da ponte tra i due ambiti; un device, cioè, abbastanza semplice da poter essere utilizzato con un’interfaccia touchscreen e abbastanza potente da permettere di svolgere operazioni serie. È proprio questo l’obiettivo 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 quest’ultimo, compreso Calligra Suite. Già al primo

sguardo il retaggio di KDE appare evidente, in particolare dal tema usato dall’interfaccia 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 all’accesso 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

14 LINUX PRO 136

Tra tutti i sistemi da noi provati, Plasma Active è quello che ricorda più l’ambiente desktop, in virtù delle sue numerose funzioni

“Plasma Active assomiglia più di tutti gli altri a un sistema operativo desktop”

Ecco Kubuntu Active: è chiaro che Canonical non ha puntato tutto su Ubuntu Touch nella corsa dei cellulari

a un sistema operativo desktop più di qualsiasi altra soluzione qui widget e applicazioni per creare ambienti desktop separati passando sue numerose funzioni

14 LINUX PRO 136

LXP_136_10_17_LXF177.feat_mobs 14 03/12/13 16:46

Page 17: Linuxpro 136 Dicembre 2013

Linux Mobile Linux Mobile

Jolla, un’azienda 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 nell’interfaccia 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 l’interfaccia sulla base dei colori dell’immagine 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 un’elegante interfaccia Qt che dovrebbe risultare deliziosa da usare.

SAILFISHSAILFISH

Le opzioni alla provaCome ricordato all’inizio, 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 all’indirizzo http://tasssadar.github.io/mrom_status. È disponibile un simulatore di Firefox OS sotto forma di add-on

per Firefox. Non consente di farsi un’idea 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 un’immagine 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).

Il sistema nato dalle ceneri di Nokia…

LINUX PRO 136 15

“Il manuale video di Sailfish mostra un’elegante interfaccia Qt”

Ciascun rettangolo corrisponde a un’applicazione in funzione, che potete controllare direttamente dalla schermata Home

LXP_136_10_17_LXF177.feat_mobs 15 03/12/13 16:46

Page 18: Linuxpro 136 Dicembre 2013

Linux Mobile Linux Mobile

La 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. L’interfaccia 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: “L’obiettivo di Tizen è introdurre una solida esperienza omogenea su più dispositivi quali smartphone, tablet, Smart TV, PC e strumenti di infotainment per veicoli, con un’enfasi 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

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.

F 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

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. L’uso 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.

troppo piccolo per un desktop normale). Enlightenment è una delle Enlightenment è una delle Enlightenment 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. L’uso 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.

DESKTOP LINUXDESKTOP LINUX

TIZENTIZENDirettamente dai forzieri di Samsung & C

L’alternativa pratica

16 LINUX PRO 136

La nitida interfaccia di Tizen funziona ottimamente; ma il suo fascino basterà ad attirare gli utenti verso il nuovo sistema?

Enlightenment funziona a dovere su un tablet ma l’interfaccia può risultare scomoda da usare senza mouse

LXP_136_10_17_LXF177.feat_mobs 16 03/12/13 16:46

Page 19: Linuxpro 136 Dicembre 2013

Linux Mobile Linux Mobile

Per 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. L’unico 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à dell’offerta. Con l’eccezione 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 l’esperienza 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 nell’arena del desktop. Devono essere disponibili nei negozi, promossi da investimenti pubblicitari e risultare attraenti per l’utente comune, non solo per lo “smanettone”. In breve, non devono solo essere migliori dei prodotti rivali: devono essere anche percepiti come tali da un’ampia fetta del mercato. LXP

LA SFIDALA SFIDAIn che modo potranno trionfare i sistemi operativi Linux

LINUX PRO 136 17

LXP_136_10_17_LXF177.feat_mobs 17 03/12/13 16:46

Page 20: Linuxpro 136 Dicembre 2013

18 LINUX PRO 136 LINUX PRO 136 19

Progetto Sputnik Progetto Sputnik

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. L’ultrabook generato

A 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. All’interno

di Dell, l’istigatore del progetto era Barton George, Director of Cloud Developer Programs dell’azienda americana. Per saperne di più abbiamo scambiato quattro chiacchiere con lui così da scoprire cosa si aspetta dal progetto e come viene visto l’hardware associato a Linux in Dell. Inoltre abbiamo avuto la fortuna di poter provare per un po’ di tempo il frutto di questa collaborazione, usando l’ultrabook per prendere appunti nelle conferenze e per i nostri tutorial: dalla programmazione al cloud, passando da giochi e tool

ALLA SCOPERTA DEL PROGETTO SPUTNIK

L’ULTRABOOK DI DELLCHE MONTA UBUNTU

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

LXP_136_18_21_LXF177_sput 18 04/12/13 17:24

Page 21: Linuxpro 136 Dicembre 2013

18 LINUX PRO 136 LINUX PRO 136 19LINUX PRO 136 19

Progetto Sputnik 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 dell’hardware 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 dall’hardware. 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: “L’idea iniziale arriva da Stephen O’Grady 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 l’idea 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 l’idea”. “Poi, 3 o 4 mesi più tardi successe nacque in Dell un fondo di incubazione per scovare nuove idee nascoste nelle teste delle persone dell’azienda. Quindi fui il primo ad alzare la mano, e ottenni un pollice alzato”.

Dimmi come ti piace“L’idea 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 l’intera toolchain DevOps, perché non lo facciamo?’. L’avevo detto che mi piaceva”. “Siamo andati live con questa idea il 7 maggio (2012) all’Ubuntu Developer’s 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, “C’era un desiderio represso di qualcosa che semplicemente funzionasse su un pezzo di hardware dall’aspetto 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 dell’hardware, 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

all’uso 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 all’ultimo minuto e non lo sai mai finché non ti arriva l’hardware in casa e cerchi di installarci Linux. Un utente Linux che ha scelto l’opzione 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 nell’usare nel modo migliore i display ad alta risoluzione di Apple. Ciò che più sorprende del progetto Sputnik è che l’hardware scelto da Dell non era compatibile al 100% con il kernel Linux del momento.

Specifiche hardwareL’hardware è quello del Dell XPS 13, con la versione 2013 che ha visto l’aggiornamento dello schermo con un incredibile pannello IPS da 13,3 pollici con risoluzione 1920x1080 pixel. All’interno 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

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 è un’interessante novità. Il design è ovviamente un fattore soggettivo, ma noi amiamo lo stile dell’XPS 13. Lo chassis è largo 316mm, profondo 205mm e alto tra i 6 e i 18mm, con il dispositivo che si assottiglia dal dietro all’avanti. L’effetto complessivo è quello di un prodotto di fascia alta, e il case è abbastanza resistente da sopportare

“Si tratta di sviluppatori: sono loro quelli che ‘fanno’ per davvero”

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

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

LXP_136_18_21_LXF177_sput 19 04/12/13 17:24

Page 22: Linuxpro 136 Dicembre 2013

20 LINUX PRO 136 LINUX PRO 136 21

Progetto Sputnik Progetto Sputnik

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 dall’ottima risposta, e anche se non ci entusiasma il font usato per indicare le lettere, la retroilluminazione dei tasti è perfetta per quando si programma

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 dell’aspetto 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 l’unica soluzione è usare una rete cablata, cosa

impossibile con l’XPS 13 a meno di non portarsi dietro un adattatore USB. L’unica altra connessione fisica è una mini DisplayPort. Normalmente non menzioneremmo l’alimentatore, ma il piccolo modello di cui è dotato l’ultrabook 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 l’alimentatore, 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 l’ultrabook. L’unica deficienza hardware

che ci aspettavamo di trovare riguardava l’unità wireless, basata sul chipset Intel Centrino Advanced-N 6235 e sul driver iwlwifi, che non funziona molto bene. Prima di ricevere in redazione l’ultrabook 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 all’URL http://bit.ly/1fT1cim. Inoltre sembra che Dell abbia intenzione di sostituire questo componente problematico con un’unità Killer Wireless-N 1202 di Qualcomm, che dovrebbe risolvere eventuali problemi con i driver.

Il softwareL’unico sistema ufficialmente supportato da Dell è Ubuntu 12.04 LTS ed è quello che trovate preinstallato. L’aver 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 l’XPS 13, e anche il kernel è compilato ad hoc. Questo soprattutto a causa del trackpad, che fino alla versione Ubuntu dell’XPS 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 l’XPS 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 dell’intero 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 l’implementazione delle gesture. Un’altra area in cui Linux probabilmente non riesce a ottenere il massimo dall’hardware è lo schermo. Con una densità di pixel pari a 165ppi (era

“Lo schermo è incredibile. È luminoso, con colori ben definiti e un alto contrasto”

L’aspetto e il peso dell’ultrabook di Dell sono perfetti per chi è sempre in movimento

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

LXP_136_18_21_LXF177_sput 20 04/12/13 17:24

Page 23: Linuxpro 136 Dicembre 2013

20 LINUX PRO 136 LINUX PRO 136 21

Progetto Sputnik 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. L’hardware 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 starDopo 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 l’editing. Affiancando le finestre, per esempio browser ed editor di testo, è l’ideale grazie all’alta 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 dell’XPS 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 dell’inattività, 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 l’ultrabook 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, l’impressione 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 dell’hardware. Cosa più importante per noi, comunque, è la

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 dell’inizio. LXF

Un’app personalizzata per ricreare il vostro ambiente di sviluppodicono ‘Ehi, l’ho 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 all’URL https://github.com/sputnik.

Dell spera vivamente di riuscire a offrire i profili creati da sviluppatori importanti, come per esempio l’ambiente Python di Mark Shuttleworth o quello Android

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. L’idea dietro questo strumento è quella di rimuovere la noia di installare i pacchetti per il

Il Profile Tool di Dell

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. L’unico 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

“Sembra che Dell abbia capito cosa è importante nel mercato Linux”

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

LXP_136_18_21_LXF177_sput 21 04/12/13 17:25

Page 24: Linuxpro 136 Dicembre 2013

Raspberry RaspberryRaspberry Pi

22 LINUX PRO 136 LINUX PRO 136 23

Moduli hardwareper tutti i gusti!

Analizziamo gli “extra” per potenziare il nostro piccolo gigante!

Raspberry 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

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!

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 l’hardware 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

Raspberry Pi

LXP_136_22_25_LXF176.feature_rpi 22 04/12/13 17:05

Page 25: Linuxpro 136 Dicembre 2013

Raspberry RaspberryRaspberry Pi

22 LINUX PRO 136 LINUX PRO 136 23

Una 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 l’espansione. 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 l’installazione 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 all’espansione, 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:$$$F000000000000000000000111000011111110011111110111111111111101111111101111011000110011000110000000000000000000000000000000000000

L’ultimo 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

Pi-LiteMatrice di LED multifunzione

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 l’avessero come gli attuali PC, un economico convertitore USB<-->rs232 fungerà da ponte con sistemi più moderni.

L’emulatore di Pi-LiteSe vi interessa sapere come funziona la Pi-Lite ma non siete ancora convinti dell’acquisto, potete farvi un’idea di cosa si avrà in mano tramite un emulatore prelevabile sempre dal sito openmicros.org all’indirizzo 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 l’uso dei 5 input analogici dell’ATMEGA, 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 l’hardware, cosa che diventa un’ottima 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?

Raspberry Pi

LXP_136_22_25_LXF176.feature_rpi 23 04/12/13 17:05

Page 26: Linuxpro 136 Dicembre 2013

Raspberry Pi Raspberry Pi

24 LINUX PRO 136 LINUX PRO 136 25

Il modulo CameraScattate foto con la Raspberry Pi

Altre videocamere

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.

Connettere una DSLR o webcam

Prima 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à d’uso in mente. La piattina di connessione del modulo webcam si connette al pettine verticale piazzato vicino al connettore HDMI, a poca distanza dall’area 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 updatesudo apt-get upgradesudo 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 digitiraspistill -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 l’esempio 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”

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à dell’immagine 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 l’altro, 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 auto-incrementa tra uno scatto e l’altro. È 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 l’elenco 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 l’estensione 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! La lunghezza

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

LXP_136_22_25_LXF176.feature_rpi 24 04/12/13 17:05

Page 27: Linuxpro 136 Dicembre 2013

Raspberry Pi Raspberry Pi

24 LINUX PRO 136 LINUX PRO 136 25

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

Una 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 un’uscita. 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 un’occhiata al Quick2Wire con interfaccia I2C e SPI, in quanto c’è da configurare qualche parametro per rendere la scheda operativa.

Espandere il bus GPIOSPI 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

Quick2WirePotenziamo in modo efficace il GPIO con poca spesa

Altri extra

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 d’America. 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!

Accessori e kit per ogni necessità

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 all’URL http://github.com/quick2wire/quick2wire-python-api che richiedono l’installazione del pacchetto python3-setuptools. Dopo che avrete fatto tutto, la programmazione della scheda tramite Python diventa un’autentica 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 dell’I/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

“È facile programmare la scheda con Python”

LXP_136_22_25_LXF176.feature_rpi 25 04/12/13 17:06

Page 28: Linuxpro 136 Dicembre 2013

IntervistaIntervista

26 LINUx PRO 136

LXP_136_26_28_LXF173.iview_Eben 26 03/12/13 16:49

Page 29: Linuxpro 136 Dicembre 2013

Intervista

Abbiamo visitato la Raspberry Pi Foundation per parlare di proprietà intellettuale, aggiornamenti

hardware e altro ancora con il suo fondatore

E come EbenN

on sono molte le persone impegnate quanto Eben Upton. È soprattutto a lui che si deve l’esistenza 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 l’altro con potenziali partner e media internazionali, Upton ha trovato un paio d’ore per la nostra intervista. Con Upton abbiamo parlato di tutto, dall’ideazione 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 dall’inizio di utilizzare queste due case?EU: L’idea 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 l’ultimo anno nel tentativo di far fronte alla

domanda del primo giorno. Ci siamo andati vicini ma ce l’abbiamo 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 l’attesa.EU: Assolutamente. Credo che per i nostri due partner sia stata una vera sorpresa. Ed è stata un’ottima 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 l’azienda 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 un’impresa al tempo stesso. È un modello peculiare e non molto diffuso.EU: Penso sia importante se si vuole che l’attività sia sostenibile. C’è questa idea secondo cui un’attività non a scopo di lucro non potrebbe crescere: beh, noi volevamo essere e siamo proprio questo, un’organizzazione senza fini di lucro. Tutto il denaro che entra viene reinvestito nell’attività. 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. Quest’ultima è 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

LXP_136_26_28_LXF173.iview_Eben 27 03/12/13 16:49

Page 30: Linuxpro 136 Dicembre 2013

Intervista

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 dall’organizzazione, al netto degli stipendi, vengono reinvestiti nell’attività 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 l’ha progettata per noi.

LXP: Questo avrà delle conseguenze sulla pubblicazione degli schemi tecnici?

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: È per questo che non avete pubblicato la sua struttura?EU: Se la pubblicassimo, l’utente 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 l’onta. 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

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é. D’altra 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 nell’istruzione, 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 l’onta di cui parlavo finirebbe per gravare su Broadcom, se a quel punto non rendesse disponibili i chip.

LXP: Ci sarà un aggiornamento della RP? Avete preso in considerazione l’ipotesi 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 dell’hardware.

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

28 LINUx PRO 136

LXP_136_26_28_LXF173.iview_Eben 28 03/12/13 16:49

Page 31: Linuxpro 136 Dicembre 2013

Intervista

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 un’impresa 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: Un’installazione standard di Raspbian, che cosa utilizzerebbe?EU: Attualmente utilizza il percorso dell’output video, il controller USB; cose che esistevano prima dell’architettura ARM. Quest’ultima ha fatto aumentare del 3% le dimensioni del chip. Il carico di lavoro grava soprattutto sull’ARM e in parte sull’infrastruttura 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 dell’hardware siamo in qualche modo bloccati, stiamo dedicando maggiore impegno al software, in modo da sfruttarlo al massimo. Per questo abbiamo dedicato molto tempo all’ottimizzazione dei componenti a livello di sistema, con l’obiettivo di realizzarne versioni ottimizzate per Linux. Pixmap, per esempio; o versioni ottimizzate di elementi come memcopy e memset. Sull’accelerazione 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 sull’acceleratore x del server; e questo va benissimo. Il software è perfetto per questo; funziona in modo sorprendente. L’ARM muove un pixel per volta ma grazie a pixmap ora le prestazioni sono molto migliori, nella misura in cui un’ARM con prestazioni relativamente basse può muovere i pixel più velocemente. Abbiamo discusso sull’opportunità di utilizzare un’accelerazione 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 un’azienda di Cambridge chiamata Collabora. Pek [Pekka Paalanen], che ci lavora ed è un

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,

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 dell’ARM, dato che comprende un’ampia 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 all’utente un’esperienza 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 quest’ultimo 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 dell’immagine originale. LXP

LINUx PRO 136 29

LXP_136_26_28_LXF173.iview_Eben 29 03/12/13 16:49

Page 32: Linuxpro 136 Dicembre 2013

ReactOSReactOS

30 Linux pro 136

P 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 quant’altro: 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. Sito rinnovato, utente catturatoil 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 quell’aria da “Web 1.0”. personalmente non

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 l’accesso 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 l’internazionalizzazione 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.

Supporto hardware miglioratoSe 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

Il sistema operativo “come” Windows ma “non” Windows

REACTOSL’ANTI-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

LXP_136_30_33_feat_reactsOS 30 03/12/13 17:44

Page 33: Linuxpro 136 Dicembre 2013

ReactOSReactOS

Linux pro 136 31

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ò l’installazione 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, l’audio, 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 dell’utente 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: l’installazione 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.

Arriva in aiuto TODVD ricorrendo ancora al trucco del boot con un LiveCD Linux per aggirare il problema dell’assenza di connessione, abbiamo scaricatoToDVD, 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

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 l’estrema 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 mezz’ora 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

La lista delle periferiche mancanti di driver

LXP_136_30_33_feat_reactsOS 31 03/12/13 17:44

Page 34: Linuxpro 136 Dicembre 2013

ReactOSReactOS

32 Linux pro 136

e riaperti per verificarne l’effettivo 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 l’evidente miglioramento, reactoS se ne esce chiaramente sconfitto sul fronte della compatibilità e non ci resta che segnare una

1 L’avvio dell’installazioneLa prima schermata durante l’installazione: l’ispirazione al vecchio Windows nT è evidentissima.

Passo passo Installare ReactOS

2 Configurazione e formattazioneDopo l’impostazione dei dati classici (lingua, ecc.) si formatta e si installa.

3 Il primo avvioDopo 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.

4 Il tipico desktop ReactOSpochi minuti e ci si ritrova con il desktop attivo, pronti a lavorare (schermata blu permettendo).

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 migliorarepurtroppo 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 dell’altra, 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 dell’interfaccia grafica. in poche parole, manca un’adeguata gestione della pagina video, cosa che a nostro giudizio penalizza fortemente il sistema, confermando nell’utente 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?

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

LXP_136_30_33_feat_reactsOS 32 03/12/13 17:44

Page 35: Linuxpro 136 Dicembre 2013

ReactOSReactOS

Linux pro 136 33

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

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 all’inverosimile 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, nell’esempio di prima, il tizio vittima dell’esperimento 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 l’instabilità è parecchio diminuita, facendo rientrare il numero dei BSoD entro una soglia che, quand’anche tuttora inaccettabile per l’utenza 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 dall’agosto 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à l’ultimo 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 l’opera: certo non possiamo prevedere il futuro, ma nessuno ci può impedire di immaginare un reactoS usabile entro breve dall’utente finale e non solo da appassionati e tecnici.

I 4 moschettieri di ReactOSnonostante 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 è l’ideale 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.

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 dall’altra. 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

LXP_136_30_33_feat_reactsOS 33 03/12/13 17:44

Page 36: Linuxpro 136 Dicembre 2013

Premiata Amministreria Dottor Brown

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

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

SysadminSysadmin

34 LINUX PRO 136 LINUX PRO 136 35

Guardandomi indietro mi sembra davvero difficile da credere che, in tutte queste puntate dell’Amministreria 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 all’interno 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 all’interno 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 dall’esterno 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.orgStarting Nmap 5.21 ( http://nmap.org ) at 2013-

05-02 16:24 BSTNmap scan report for scanme.nmap.org

(74.207.244.221)Host is up (0.17s latency).Not shown: 998 closed ports

PORT STATE SERVICE22/tcp open ssh80/tcp open http1720/tcp filtered H.323/Q.9319929/tcp open nping-echo

Nmap done: 1 IP address (1 host up) scanned in 4.83 secondsL’opzione -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!

La riga di comando di *Nmap può diventare alquanto complicata: per una soluzione visuale potete provare Zenmap

Una recente visita all’Eden Project mi ha spinto a riciclare di più e a ridurre la mia carbon footprint, cioè le mie emissioni

di anidride carbonica nell’atmosfera. 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 dall’esaurirsi 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 l’ultimo uno (potrebbe anche trattarsi dell’ultimo 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.

Riciclare i bit

Scopriamo cosa c’è là fuori con lo strumento Open Source meglio documentato al mondo

Ricognizione della rete

Un tripudio di documentazioneUna 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 un’approfondita guida utente

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!

LXP_136_34_37_LXF173.sysadmin 34 03/12/13 17:28

Page 37: Linuxpro 136 Dicembre 2013

SysadminSysadmin

34 LINUX PRO 136 LINUX PRO 136 35

Hai usato160eca3c-082c-45c2-ac95-a3fd3af48949 ?V i sono molte situazioni nelle quali dobbiamo garantire

l’unicità. 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 l’unicità 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 l’altro che la richiesta di un nuovo ID unico richieda minuti, ore, giorni o addirittura settimane per essere soddisfatta. Per quel che ne so l’idea 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, all’interno del Distributed Computing Environment della Open Software Foundation all’inizio 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 l’affermazione 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 l’entusiasta 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ì, l’abbiamo già usato... era su una vaschetta di salsa di avocado”. Guarda con aria di rimprovero l’entusiasta 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 l’indirizzo 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 dall’IEEE: si tratta di quello che viene chiamato un OUI (Organisationally Unique Identifier) ed è un identificativo univoco dell’azienda. Il produttore poi assegna (presumibilmente) i rimanenti 24 bit inferiori in maniera unica per ciascuna scheda prodotta. Ignorando l’eventualità di aver bisogno di generare più di un UUID in un intervallo di 100ns, questo sistema garantisce l’unicità. Su Linux è possibile generare un UUID versione 1 con il comando:uuidgen -t13a1c098-b23d-11e2-8eab-001d095409e5

Date di nuovo il comando e vedrete che i 12 bit più bassi sono

sempre gli stessi. Questo è il mio indirizzo MAC e potete scoprire a quale organizzazione appartiene l’OUI 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 -raca7197d-1e01-4e2f-b0f0-b3a232409ea9

ed è anche possibile ottenerli dal kernel così:cat /proc/sys/kernel/random/uuidd54f567e-f2b4-4d46-94e9-bbcedbe6c199

L’unicità degli UUID versione 4 non può essere garantita in assoluto, anche se la pura forza bruta dell’aritmetica 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 dell’uso 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!

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-ade1-1a5e7aede11a7e1aSe avete qualcosa di meglio mi piacerebbe saperlo!

Ricordatevi che anche voi siete unici. Come chiunque altro

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

Quanto è unico il vostro ID unico?

No!Hai usato160eca3c-082c-45c2-ac95-a3fd3af48949 ?

LXP_136_34_37_LXF173.sysadmin 35 03/12/13 17:28

Page 38: Linuxpro 136 Dicembre 2013

SysadminSysadmin

36 LINUX PRO 136 LINUX PRO 136 37

Una 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 dall’hardware 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 all’interno 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 l’attività 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 all’epoca 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 setDetto 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 all’altra, 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 funzionaBasta con la teoria, passiamo alla pratica. La configurazione più comune consiste nel creare una singola partizione di swap al momento dell’installazione. Il programma di installazione aggiungerà una riga in /etc/fstab, qualcosa di questo genere:/dev/sda6 none swap defaults 0 0

Al momento dell’avvio della macchina viene lanciato il comando swapon -a (su Red Hat, per esempio, viene fatto all’interno 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 dell’avvio 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 dell’altro 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 pagingLa 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

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.

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

Guida rapida allo spazio di swap

I programmi di installazione di Linux vi redarguiscono severamente se non create una partizione di swap. Ignorateli!

LXP_136_34_37_LXF173.sysadmin 36 03/12/13 17:28

Page 39: Linuxpro 136 Dicembre 2013

SysadminSysadmin

36 LINUX PRO 136 LINUX PRO 136 37

È 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 l’intero 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 -sFilename 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 un’occhiata 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.

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 l’attività di swap in entrata e quella in uscita verso il disco. C’è poi top:$ top -n 1 -b | grep totalTasks: 212 total, 1 running, 209 sleeping, 0 stopped, 2 zombieMem: 4048324k total, 3810436k used, 237888k free, 143032k

buffersSwap: 8859640k total, 6860k used, 8852780k free, 705668k

cachedll comando free mostra più o meno le stesse informazioni:$ free -m -t total used free shared buffers cachedMem: 3953 3744 209 0 141 699-/+ buffers/cache: 2902 1050Swap: 8651 6 8645Total: 12605 3750 8854

Nell’esempio 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 l’accesso 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 l’utilizzo aggressivo dello spazio di swap. Il valore di default è 60, come potete verificare con il comando

A ogni processo viene data l’illusione di disporre di uno spazio di indirizzi logici contigui, ma la realtà è più complicata

Processo 1

Processo 2

Spazio logico degli

indirizzi

Spazio fisico degli indirizzi

Spazio logico degli

indirizzi

Le pagine ombreggiate sono scritte

sul disco

Mem

ory

Man

agem

ent U

nit

(MM

U)

Una pagina

RAM

Spazio di swap

$ sysctl vm.swappinessvm.swappiness = 60

Per modificarne il valore:$ sudo sysctl -w vm.swappiness=100vm.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’è un’altra 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 l’alimentazione 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

Un po’ di storiaUNIX iniziò su macchine che non avevano la memoria virtuale. C’era 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

l’esecuzione. L’avvento 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 l’operazione non ha alcun effetto.

LXP_136_34_37_LXF173.sysadmin 37 03/12/13 17:28

Page 40: Linuxpro 136 Dicembre 2013

38 LINUX PRO 136

L’angolo di

News, recensioni e guide sul sistema operativo libero per smartphone

Android

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

Adistanza di due anni da quando ha deciso di lasciare l’Italia, 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 dell’acquisizione 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 l’arrivo 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 l’ottimo 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

è 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’è l’alloggiamento 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 l’utilizzo 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 l’aggiornamento a KitKat entro gennaio, e due applicazioni originali Motorola come Assist e Migrazione. La prima semplifica l’utilizzo 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

Il ritorno di Motorola

A caccia di bug

Che 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 l’introduzione di verifi che 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 all’indirizzo [email protected] mentre per avere maggiori informazioni l’indirizzo è http://www.google.com/about/appsecurity/patch-rewards/. LXP

Se hai news da segnalarci o dei commenti scrivici ad [email protected]

a quella del Nexus 4 e dovrebbe consentire un’autonomia più che sufficiente per un’intera 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.

LXP_136_38_news android 38 03/12/13 16:51

Page 41: Linuxpro 136 Dicembre 2013

Nexus 5 L’angolo di Android

Caratteristiche 8.5Prestazioni 8Autonomia 7Qualità/prezzo 9.5

Nexus 5

L’ultima generazione di smartphone curati da Google si distingue per il prezzo.

Il voto di Linux Pro

Giudizio

Produttore: LG Web: https://play.google.com/storePrezzo: €349,00

8Linux pro 136 39

Come 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. L’unica 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 d’ore 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

personalizzate dai produttori, nexus 5 offre l’esperienza 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 all’impiego 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 l’integrazione degli SMS nell’App 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 all’altezza 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

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 l’alloggiamento 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

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

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 dall’italia. Basta avere un account Google e collegarsi all’indirizzo 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 all’anno scorso per acquistare all’estero un nexus. LXP

LXP_136_39_Nexus 39 03/12/13 16:51

Page 42: Linuxpro 136 Dicembre 2013

Test >>PC-BSD 9.2Un sistema ostico è oggi diventato accessibile. Possibile? pag. 41

VMware Workstation 10Strumenti ancora più professionali per il principe indiscussodella virtualizzazione pag. 42

VMware Player 6Un 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 le vostre collezioni pag. 46∆ Data Crow ∆ GCstar ∆ Kexi ∆ LibreOffice Base∆ Tellico

Da non perdere >>Video editing, motori di ricerca interni, visualizzatori di immagini e retro game∆ LiVES pag. 52∆ Catfish pag. 53∆ Sxiv pag. 53∆ Colorful pag. 54∆ Choria pag. 54

VMware Workstation 10

Data Crow

LiVES

40 LINUX PRO 136

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

Se vuoi segnalarci qualche novità scrivi a [email protected]

QUESTO MESE...

Ogni test di questa sezione

è accompagnato da un giudizio

che riassume con quattro indici numerici

le principali qualità dell’applicazione

o del prodotto hardware messo alla prova.

I laboratori di Linux Pro assegnano

un voto da 1 a 10 alle seguenti categorie:

Caratteristiche: fornisce tutte

le funzioni di cui abbiamo bisogno?

È innovativo?

Prestazioni: esegue in maniera

efficiente le sue funzioni?

È veloce e affidabile?

Facilità d’uso: dispone di un’interfaccia

grafica chiara e facilmente fruibile?

La documentazione che lo accompagna

è sufficientemente completa ed esaustiva?

Qualità/prezzo: ha un prezzo

competitivo? Vale i soldi richiesti

per il suo acquisto?

Il nostro giudizio viene

poi riassunto da un voto finale,

espresso anche graficamente.

Ecco la legenda dei voti:

10 Nulla da eccepire. Un prodotto

praticamente perfetto.

8-9 Un buon prodotto. I pochi

difetti presenti non sono gravi.

6-7 Compie il suo lavoro ma

necessita di ulteriori sviluppi.

5-4 Deve migliorare prima di

raggiungere un voto sufficiente.

1-3 Un completo disastro.

Gli sviluppatori devono tornare

alla fase di progettazione.

Ricordiamo infine che i software citati

nelle sezioni Confronto e Da non

perdere sono spesso presenti nel DVD

sotto la voce “Rivista” sotto forma

di codice sorgente o binario.

Una breve legenda

LXP_136_40_introRecens 40 03/12/13 16:51

Page 43: Linuxpro 136 Dicembre 2013

PC-BSD 9.2 Test

TM Linux pro 136 Linux pro 136 41

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

Caratteristiche 9Prestazioni 9Facilità d’uso 10Documentazione 8

PC-BSD 9.2

Senza alcun dubbio è l’introduzione più agevole al mondo non sempre comprensibile di BSD.

Il voto di Linux Pro

Giudizio

Sviluppatore: pC-BSD Software Web: www.pcbsd.orgLicenze: Varie; il nucleo è BSD

9

“PC-BSD si propone come sistema accessibile, una sorta di equivalente BSD di Linux Mint”

BSD viene spesso considerato come il cugino cattivo di Linux. il suo nome viene

sussurrato sottovoce e i suoi utenti sono considerati programmatori d’élite e super-amministratori di sistema. Tuttavia, quando ci siamo collegati al sito di pC-BSD per scaricare l’iSo 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

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. D’altronde, pC-BSD si può considerare una distribuzione di FreeBSD. L’installazione non potrebbe essere più facile: basta selezionare Desktop o Server e dare l’avvio. 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. L’unico neo è stato un messaggio

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 fileormai da anni, la principale differenza tra BSD e Linux riguarda il modo in cui gestiscono i filesystem. ZFS di BSD suscita da tempo l’invidia 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 l’alternativa 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

di avvertimento che ci comunicava che avevamo meno di 50 GB di spazio sull’hard disk. L’ammonimento sembrava un po’ esagerato, dato che l’installazione occupa solo 7,2 GB; un messaggio del genere può far temere all’utente che l’installazione non andrà a buon fine. noi l’abbiamo 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.

Manca una suite office, l’unico 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, un’interfaccia grafica per l’installazione 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

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 un’occhiata. 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

L’aspetto esterno può ricordare l’eleganza di KDE (sì, è una battuta) ma sotto di esso batte un cuore BSD

LXP_136_41_LXF176.rev_ben 41 03/12/13 16:51

Page 44: Linuxpro 136 Dicembre 2013

Test VMware Workstation VMware Workstation Test

42 LINUX PRO 136 LINUX PRO 136 43

V 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 dell’ultima, 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.

L’hardware virtualeA ogni rilascio di VMware Workstation, possiamo realizzare macchine virtuali dalla configurazione sempre più

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

VMware Workstation 10

La schermata iniziale di VMware Workstation 10 è estremamente essenziale: presenta solo le funzioni principali

VMware Workstation 10 è il software di virtualizzazione più completo, ma solo i professionisti apprezzeranno le sue funzionalità più avanzate

VMware Tools è un pacchetto di driver che va installato sui sistemi operativi ospitati dalle VM. Non tutti i SO sono ovviamente

supportati, ma varie versioni di Windows, Linux e BSD sì. Questi tool attivano le opzioni di integrazione più avanzate.

VMware Tools

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 (d’ora in poi, host) di elevata potenza, insomma, si possono eseguire con agilità diverse macchine virtuali anche se, ovviamente, chi ha bisogno di virtualizzare un’infrastruttura di 4 o più server sempre accesi dovrebbe guardare altrove, come minimo a VMware ESXi e vSphere.

Macchine virtuali a tempo determinato Un’altra novità di rilievo di VMware Workstation 10 è la possibilità di dare una scadenza

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.1Se la novità dell’anno scorso fu la possibilità di realizzare macchine virtuali pronte a ospitare Windows 8 e 2012, quella di quest’anno è ovviamente la compatibilità con Windows 8.1, che può essere utilizzato

LXP_136_42_43_rev_workstation 42 03/12/13 16:51

Page 45: Linuxpro 136 Dicembre 2013

Test VMware Workstation VMware Workstation Test

42 LINUX PRO 136 LINUX PRO 136 43

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 nell’ambito delle poche VM gestite su un singolo computer, infine, VMware Workstation 10 ne consente una gestione centralizzata per mezzo di un’interfaccia 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 un’infrastruttura 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 usareBenché 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 dell’ottima 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

tranquillamente come guest OS sfruttando – se presenti – anche gli eventuali sensori di cui è provvisto l’host. 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 intoppoL’installazione su Ubuntu 12.X e Fedora 19 potrebbe dare qualche grattacapo iniziale. In particolare, sulla seconda VMware Workstation si è lamentato per l’assenza di GCC (che può sempre essere installato all’occorrenza), mentre un analogo tentativo su Linux Mint 15 ha dato esito positivo al primo colpo. L’unica 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 l’utilizzo 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 un’infrastruttura composta da un virtual center vSphere e da un singolo host ESXi,

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 dell’audio 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 l’accelerazione 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

Caratteristiche 9Prestazioni 9Facilità d’uso 8Qualità/Prezzo 7.5

Workstation 10

Il più completo programma di virtualizzazione sulla piazza, ma solo le sue caratteristiche “pro” ne giustificano l’acquisto.

Il voto di Linux Pro

Giudizio

Sviluppatore: VMwareWeb: www.vmware.comPrezzo: €225,00

8.5

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

UnityLa modalità di lavoro Unity permette di visualizzare sul desktop dell’host le finestre del guest. Occorre però installare i VMware tools e configurare lo schermo opportunamente (il guest deve poter seguire le impostazioni dell’host).

Una vecchia macchina Ubuntu alle prese con una compilazione software relativamente semplice

LXP_136_42_43_rev_workstation 43 03/12/13 16:51

Page 46: Linuxpro 136 Dicembre 2013

Test VMware Player

44 Linux pro 136 Linux pro 133 TM

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

Caratteristiche 7Prestazioni 8.5Facilità d’uso 10Qualità/Prezzo 9.5

Player 6.0.1

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

Il voto di Linux Pro

Giudizio

Sviluppatore: VMware Web: www.vmware.comLicenza: gratis per uso personale

8.5

Da 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 risparmiareL’interfaccia utente di player 6 è basilare: appena avviato, sulla sinistra, appare l’elenco 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 dall’installazione, nell’angolo inferiore destro comparirà anche un avviso che il periodo di valutazione è scaduto e, di conseguenza, per l’uso

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 all’altra per mezzo del tab-browsing, come invece avviene con VMware Workstation, ma in compenso non subiremo l’overhead 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”.

EssenzialeVMware 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 l’impossibilità di clonare o di scattare delle “istantanee”

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. L’inserimento 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 un’interfaccia più gradevole e una semplicità d’uso infinitamente superiore.

Sessioni unicheLa maggiore differenza rispetto a VMware Workstation, per chi non è uso addentrarsi negli aspetti più “professionistici” della virtualizzazione, è l’organizzazione delle virtual machine che, in VMware player, di fatto è assente. in ogni finestra del programma possiamo ospitare

(snapshot) delle VM prima di effettuare un’operazione importante come, per esempio, l’installazione 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

VMware Player 6 consente di realizzare macchine virtuali con qualsiasi sistema Linux o Windows contemporaneo, anche versione 8.1 o 2012

Quando creiamo una nuova VM, dobbiamo considerare quanta RAM sia necessaria al sistema ospitato, e quanta ne abbia a disposizione quello ospitante

LXP_136_44_rec_VMware 44 03/12/13 16:52

Page 47: Linuxpro 136 Dicembre 2013

Linux pro 136 45

In libreria Test

Learning Python (5th edition)LXP ha scoperto che l’amato C++ ha trovato un degno concorrente

al massimo quanto spiegato, ma di certo un po’ di pratica nell’arte 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

Costruire un robot con ArduinoL’editor di Linux Pro vuole realizzare un automa che lavori al suo posto…

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 l’immancabile saldatore. Si spiega teoria e pratica in modo molto chiaro, dalla costruzione del corpo del robot all’aggiunta 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

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 dell’una o dell’altra versione. È ben scritto, impegnativo e omnicomprensivo. LXP

Con 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

La robotica è una scienza affascinante ma complessa. Eppure si possono muovere i primi

passi in questo mondo senza per

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 o’reilly (l’editore dell’edizione inglese del libro). LXP

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 un’applicazione. 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

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, l’autore 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 l’autore bada più alla parte fisica/elettronica che non a quella di programmazione, dando per

Learning Python (5th edition)

Se volete imparare il Python, è il libro da mettere tra i regali delle feste.

Il voto di Linux Pro

Giudizio

Autore: Mark LutzEditore: o’reilly ISBN: 978-1-4493-5573-9 Pagine 1.540 Prezzo: $ 64,99

9.5

Costruire un robot con Arduino

Un buon testo se volete apprendere i principi della robotica in salsa Open Source. Impegnativo ma soddisfacente.

Il voto di Linux Pro

Giudizio

Autore: Michael MargolisEditore: Tecniche nuove ISBN: 978-88-481-7874-7 Pagine 258Prezzo: €25,90, €22,00 (ebook)

8

LXP_136_45_inlibreria 45 04/12/13 16:57

Page 48: Linuxpro 136 Dicembre 2013

Roundup Office suites

46 Linux pro 136

Test Confronto

Raccogliere 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

Ogni mese mettiamo a confronto prodotti e programmi per farvi scegliere al meglio!

Modalità del test

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.

Gestori di collezioni

La nostra selezione Data Crow

GCstar

Kexi

LibreOffice Base

Tellico

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

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 l’immissione dei dati da fonti online e in locale e non ci siamo fatti mancare l’analisi della versatilità e la semplicità d’uso, la compatibilità con altri programmi e la qualità della documentazione disponibile.

“Un front-end per db può essere una valida soluzione alternativa ai più comuni gestori di collezioni”

LXP_136_46_51_LXF176.round 46 03/12/13 17:28

Page 49: Linuxpro 136 Dicembre 2013

Roundup Office suites

Linux pro 136 47

Confronto Test

La ricerca Web di GCstar è minimalista, ma funzionale

Non 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 (d’ora in pochi chiamati “Media organizer”), Base e Kexi possono sfruttare diversi back-end 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 l’interazione 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

Flessibilità e personalizzazione

Inserimento dati e ricerche

Sono adatti alle vostre esigenze?

L’accessibilità è fondamentale per tenere aggiornate le raccolte

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 (quest’ultima è 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 vostroi 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. L’assegnazione di un nome che definisca il genere della raccolta, invece, creerà immediatamente un modello personale

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 è l’unico espediente utilizzabile per far capire a Tellico la natura di una raccolta personalizzata, e di conseguenza permettervi di usare le icone standard del programma.

P 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 l’ago della bilancia verso i Media organizer rispetto ai database. Base e Kexi, infatti, pur

interfacciandosi all’esterno, 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

l’immissione 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 (modificabile) sia di

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 un’eventuale 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.

Creare una collezione con Tellico è semplice. Gli strumenti a disposizione, inoltre, sono potenti e rendono l’operazione molto divertente

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

Verdetto

Data Crow

GCstar

Kexi

LibreOffice Base

Tellico

Kexi e Base hanno il miglior punteggio, ma usandoli avrete da lavorare.

Verdetto

Data Crow

GCstar

Kexi

LibreOffice Base

Tellico

LXP_136_46_51_LXF176.round 47 03/12/13 17:28

Page 50: Linuxpro 136 Dicembre 2013

48 Linux pro 136

Test Confronto

Interfaccia utenteQuale programma offre di più e nel modo più semplice?

L’interfaccia grafica di qualsiasi software riveste sempre un aspetto importante. Ancor più se, come nel nostro caso, parliamo

di gestori per l’organizzazione delle raccolte collezionabili. L’ambiente 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 l’inserimento 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 l’accesso ai dati della vostra collezione da parte di altre persone o collaboratori, potrete evitare che vengano modificati senza uno specifico consenso.

Data CrowData Crow funziona su qualsiasi sistema in cui sia installato Java 1.6 o versione superiore (anche come server Web). in realtà, questo è l’unico 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. L’interfaccia grafica può essere personalizzata ed è disponibile in sette lingue. potete sfruttare sia l’ambiente per principianti sia quello per esperti. Vi consigliamo di prendere confidenza con l’interfaccia avanzata in modalità esperti, in cui potete lasciare attivo il “suggerimento del giorno” che compare in una finestra pop-up. Detto questo, anche l’ambiente per principianti è ottimo. infine, le funzioni di backup e i servizi Web per il tagging sono perfette.

LibreOffice BaseL’unica 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 un’interfaccia 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 dell’archivio saranno più funzionali e veloci. per evitare problemi, rammentate di associare i campi dei form alla colonna di riferimento del database corrispondente.

A 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 un’idea 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

DocumentazioneÈ disponibile un valido supporto per l’applicazione?

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 l’eventuale ottimizzazione delle ricerche online o l’uso 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.

Base e Kexy hanno la migliore documentazione, ma purtroppo non è specifica per l’ambito che vi interessa, vale a dire le collezioni.

VerdettoData Crow

GCstar

Kexi

LibreOffice Base

Tellico

LXP_136_46_51_LXF176.round 48 03/12/13 17:28

Page 51: Linuxpro 136 Dicembre 2013

Linux pro 136 49

Confronto Test

GCstarL’interfaccia 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ù un’altra 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.

KexiMolto 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 “l’unico strumento grafico multipiattaforma per l’importazione 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 (quest’ultimo 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.

TellicoTellico è 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 quest’ultimo caso, però, la procedura non è delle più intuitive. i filtri di ricerca supportano i comandi tradizionali per raffinare l’operazione cercando solo determinate informazioni, ma è possibile utilizzare anche diverse funzioni avanzate. Basta premere il pulsante Filtro e gestire i criteri tramite l’apposita 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 memoriaE se prestate qualcosa agli amici e non lo ricordate?

Molto spesso, soprattutto quando si tratta di libri e DVD, si ha la necessità di avere un’idea 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 d’aiuto. 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 l’intera 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

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.

Verdetto

Tutti i software, in qualche modo, vi aiutano a tenere in considerazione i vostri prestiti, ma GCstar rende l’operazione davvero semplice.

Data Crow

GCstar

Kexi

LibreOffice Base

Tellico

LXP_136_46_51_LXF176.round 49 03/12/13 17:29

Page 52: Linuxpro 136 Dicembre 2013

50 Linux pro 136

Test Confronto

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 l’inserimento 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à.

Dei 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

Ancora 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. L’importazione guidata di Data Crow può includere elementi da file CSV o xML, che vengono recuperati selezionando il modulo prima di iniziare la procedura. L’operazione inversa, ovvero l’esportazione 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

Funzioni per i report

Interoperabilità

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 sull’icona 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 l’opzione Sorting and Grouping. il report Design di Kexi ha la stessa flessibilità di Base quando si tratta

riuscite a importare, esportare e scaricare i dati direttamente da riga di comando senza avviare l’interfaccia 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 un’estensione xML, per Tellico va bene (i file possono comunque essere

Per stampare resoconti e liste dettagliati come si comportano?

Riescono a lavorare con altri programmi?

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

La quantità e il tipo di file importabili in Tellico è semplicemente formidabile

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.

Verdetto

Verdetto

Tutti e tre i Media Organizer permettono di creare report di base, ma Data Crow li supera, includendo grafici e codici a barre.

Data Crow

GCstar

Kexi

LibreOffice Base

Tellico

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

Data Crow

GCstar

Kexi

LibreOffice Base

Tellico

LXP_136_46_51_LXF176.round 50 03/12/13 17:29

Page 53: Linuxpro 136 Dicembre 2013

Linux pro 136 51

Confronto Test

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

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 dall’uno e dall’altro. 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 un’ottima 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, è l’unico capace

Prima 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 nell’analisi 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

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 nell’immagine riportata qui sopra).

Gestori di collezioni

Il verdetto

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

Considerate anche...

Data Crow1° LibreOffice Base4°Web: www.libreoffice.org Licenza: LGPL Versione: 4.1

un’eccellente base per un programma, se avete la pazienza di svilupparlo.Web: www.datacrow.net Licenza: GPL Versione: 3.12.5

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

non siete d’accordo con le nostre scelte? Avreste usato altri programmi? inviate le vostre opinioni su questo Confronto a: [email protected]

A voi la parola...

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

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

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

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

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

Stessi risultati di Base, stesso giudizio.

“Le funzioni di Data Crow sono tante, addirittura troppe, ma non si può fare a meno di apprezzarle”

LXP_136_46_51_LXF176.round 51 03/12/13 17:29

Page 54: Linuxpro 136 Dicembre 2013

52 Linux pro 136 Linux pro 136 53

“Con LiVES potete usare FireWire per importare le clip dalle videocamere”

L 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 quest’anno è 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

LiVESformati video. Se poi installate altri strumenti e librerie, come libtheora, allora godrete perfino di un’ulteriore 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 l’aggiunta di qualche

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 l’aggiunta di più luce o per la riduzione del rumore digitale.

Da provareDalla 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 all’istante. È 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.

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

LiVES Catfish Sxiv Colorful Choria

Programma di video editing

L’interfaccia del programma

AnteprimaA sinistra e a destra, vedete le immagini che appartengono al primo e all’ultimo fotogramma della selezione.

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

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

Date un’occhiata a questa barra. Troverete una serie di informazioni utili sui plug-in e gli strumenti esterni.

SelezioniFate click e trascinate il cursore sulla barra per cambiare la parte selezionata del video.

Da non perdereDa non perdere

Nelle preferenze, potete dire a LiVES quali strumenti esterni usare per riprodurre e convertire file audio e video.

Da non perdere Testi migliori nuovi programmiopen Source del pianeta

LXP_136_52_54_LXF172.hotpicks 52 03/12/13 16:52

Page 55: Linuxpro 136 Dicembre 2013

52 Linux pro 136 Linux pro 136 53

Se 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 l’operazione 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,

C’è 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 keyboard-driven e, naturalmente, Vi(m) ed Emacs, i famosi editor di testo che richiedono all’utente 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 un’immagine.

Catfish

Sxiv

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 sull’icona 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 nell’arco di date predeterminate. L’altra opzione, che trovate sotto il menu Tipo di file consente di perfezionare la ricerca per

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 dell’immagine corrente all’interno 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

Motore di ricerca interno

Visualizzatore di immagini

una vasta gamma di MiME. Sempre dall’icona 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.

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 l’onnipresente roditore, Sxiv è l’applicazione giusta.

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

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

L’interfaccia di Catfish è molto funzionale. Basta fare click con il tasto destro del mouse su un file e scegliere Open per aprirlo

Con Sxiv le immagini memorizzate in un dato percorso si aprono con un semplice comando. Facile, veloce e senza fronzoli

“Con Catfish restringete le ricerche a file specifici in un batter d’occhio”

“Dopo essersi affezionati alla tastiera, è difficile tornare indietro”

Da non perdere Test

LXP_136_52_54_LXF172.hotpicks 53 03/12/13 16:52

Page 56: Linuxpro 136 Dicembre 2013

54 Linux pro 136 Linux pro 136 TM

Giochi Applicazioni per il tempo libero

La 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 un’ambientazione 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 l’uso delle frecce per muoversi, del tasto Z per sparare a sinistra e X a destra. il gioco

Colorfulè scritto in pascal, ma se estraete il file binario, basta copiare libbass.so all’interno 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 l’esplorazione 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?

Retro game

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 all’ultimo grido, ma è pur sempre fluido e veloce. La grafica, seppure molto spartana, rende bene l’azione e permette di mirare con precisione contro i nemici, evitando di proporci sfondi troppo colorati che potrebbero nascondere le traiettorie.

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

“In Colorful impersonate un ragazzo che deve trovare oggetti colorati”

Se 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 strategico-tattici, 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 un’occhiata approfondita al file rEADME, dov’è spiegata nel dettaglio la procedura. L’unica cosa che non ci spieghiamo

Choriaè 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

Retro game

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

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

“Per progredire nel gioco in poco tempo, basta esplorare”

Test Da non perdere Da non perdere Test

LXP_136_52_54_LXF172.hotpicks 54 03/12/13 16:52

Page 57: Linuxpro 136 Dicembre 2013

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

TUTORIALFPMUn programma semplice e pratico per “impacchettare” le vostre creazioni in formato Deb e RPM pag. 56 JujuLo strumento di gestione dei servizi cloud che funziona a “charm” pag. 60 ZFSCreate array RAID, salvate snapshot e ripristinateli con questo filesystem straordinariamente flessibile pag. 66

Raspberry PiUn tutorial passo passo su come installare il sistema operativo Raspian con Linux, avviarlo e come risolvere problemi in modo rapido ed efficiente pag. 70

Hacking Gli strumenti di monitoraggio e logging sono estremamente utili ma tendono a fornire

ACCADEMIA DEL CODICEConcetti di baseLo staff di Linux Pro vi insegnerà a utilizzare SQL e un database relazionale per capire come strutturare i dati pag. 76

C++11Consigli su questo interessante linguaggio di programmazione: puntatori, puntatori smart e funzioni membro pag. 78

GoUna guida rapida su questo linguaggio perfetto per script che richiedono un rapido accesso alla memoria pag. 82

HaskellAlla scoperta di questo linguaggio compilato funzionale e divertente che vi aprirà una nuova prospettiva di programmazione pag. 86

persino troppe informazioni. Ecco come ricevere via mail solamente i messaggi critici che vi interessano davvero pag. 74

LINUX PRO 136 55

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

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 := notendQuando una riga di codice supera la lunghezza della colonna la riporteremo su più righe utilizzando la notazione seguente:printf(“Vi preghiamo di inserireuna password.“);

COMERAPPRESENTIAMOLE LINEE DI CODICE

LXP_136_55_introTutorial 55 05/12/13 12:00

Page 58: Linuxpro 136 Dicembre 2013

FPM TutorialTutorial XxxxGeneratore di package Scoprite il metodo più semplice per produrre Deb e RPM

56 LinuX PRo 136

Creare pacchetti con FPMinsieme 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 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 all’ultimo grido per tentare di far funzionare un vecchio pacchetto su una nuova distro. Certo, rispetto a Windows, dove ci sono mille programmi d’installazione 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 un’oasi felice. ora, tutti noi apprezziamo il lavoro svolto dagli sviluppatori per pacchettizzare i propri software, e se almeno una volta avete provato l’ebrezza 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 nell’arte 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 FPMFPM è scritto in Ruby e quindi, prima di tutto, avrete bisogno di recuperare l’ultima 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 scriveresudo 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.

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

INteRMeDIo

LXP_136_56_59_LXF176.tut_fpm 56 03/12/13 18:01

Page 59: Linuxpro 136 Dicembre 2013

FPM Tutorial

LinuX PRo 136 57

FPM, quindi, non chiede alcuna specifica. Quello di cui invece ha bisogno, è la posizione in cui sono collocati i file con un’appropriata 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 contar 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 l’opzione --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 all’interno 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/directorypacchettomake install DESTDiR=/tmp/directorypacchetto

Se date un’occhiata in /tmp/directorypacchetto, noterete come al suo interno siano stati spostati tutti i file necessari all’installazione 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 DebAdesso entriamo nel vivo del tutorial, usando FPM per inserire questa directory all’interno 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 un’occhiata 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

del pacchetto automaticamente, usando per esempio il nome con cui avete eseguito il login e l’hostname 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 d’arte: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 l’operazione è andata a buon fine. E siamo solo all’inizio... 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 risultatiAdesso potete usare --url per aggiungere l’indirizzo 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 l’operazione. Per vedere come lavorano, create un file di testo chiamato postinstallazione in /tmp con i seguenti campi:

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

LXP_136_56_59_LXF176.tut_fpm 57 03/12/13 18:01

Page 60: Linuxpro 136 Dicembre 2013

Tutorial FPM FPM Tutorial

58 LinuX PRo 136

#!/bin/shls --color

Rendetelo eseguibile (chmod +x /tmp/postinstallazione) e ricreate di nuovo il pacchetto, usando l’opzione --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 l’output 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 all’utente alcune domande. Basta solo realizzare qualche script di shell.

Conflitti e dipendenzeAlcuni 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 all’interno della stessa posizione nel filesystem. Per simulare una cosa del genere, provate a creare il pacchetto con l’istanza --conflicts xterm e installatelo di nuovo (comparirà quindi un errore che informa dell’impossibilità 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

urlando, perché FPM riesce a gestirle senza alcun problema. Prima di tutto avrete bisogno di scoprire quali librerie (e versioni) sono richieste dall’applicazione 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 l’elenco dettagliato di tutti i file utilizzati dalla libreria. A questo punto, con i tradizionali strumenti di packaging, potete scoprire l’appartenenza 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 all’istruzione >=, 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

trucchi per l’indipendenza delle distroCostruire un pacchetto che funzioni su più distro non è un’impresa

da poco. Alcuni hanno provato a realizzare un formato neutrale, come

per esempio l’oramai defunta Autopackage, ma nessuno è mai riuscito

fino in fondo nell’intento. 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

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 d’installazione, potreste essere tentati di richiamare

il modulo Yast, salvo poi accorgervi che con Fedora il pacchetto sarà

inutilizzabile. Date inoltre un’occhiata 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 all’interno di uno script,

per scoprire quale distro e quale relativa versione sono state usate.

Generare RPMCome 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 un’altra 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

ricordare che ci sono alcune opzioni di FPM che si applicano solo agli RPM. Per conoscerle, basta eseguire fpm --help e dare un’occhiata 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 un’applicazione 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.

LXP_136_56_59_LXF176.tut_fpm 58 03/12/13 18:01

Page 61: Linuxpro 136 Dicembre 2013

Tutorial FPM FPM Tutorial

LinuX PRo 136 59

-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 un’applicazione 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 avanzateFino 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

un’altra 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

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

LXP

Collegatevi a http://goo.gl/sWs3Z per vedere una divertente presentazione rilasciata dall’autore di FPM, in cui spiega le motivazioni che l’hanno spinto a scrivere il software

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 dell’omonima 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 all’interno del pacchetto. Ed ecco quindi che questo stratagemma attira tutto il codice della libreria condivisa all’interno dell’eseguibile, 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 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 un’occhiata 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-geditabbiamo 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.

LXP_136_56_59_LXF176.tut_fpm 59 03/12/13 18:01

Page 62: Linuxpro 136 Dicembre 2013

Tutorial Xxxx

60 Linux pro 136 Linux pro 136 61

Il cloud secondo Ubuntu

Juju Mettete nel cloud i vostri servizi preferiti senza fare sforzi

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

La struttura della vostra

directory dello charm deve

avere questo aspetto

J 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 d’installazione: 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).

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 un’altra 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 sull’installazione relativi alla vostra distro/piattaforma andate all’urL 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à nell’impostare Juju con il vostro provider cloud, controllate l’urL 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 (l’avete fatto, vero?) è molto semplice:mkdir -p ~/localcharms/precise cd ~/localcharms/precise charm create vacilla

Vedrete apparire un messaggio d’errore che vi comunica l’impossibilità 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 charmil 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: vanillasummary: Vanilla is an open-source forum.maintainer: my name <[email protected]>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:

dIffICILe

LXP_136_60_63_LXF176.tut_juju 60 04/12/13 17:57

Page 63: Linuxpro 136 Dicembre 2013

Tutorial Xxxx

60 Linux pro 136 Linux pro 136 61

La GUI di JujuStanchi di digitare? Allora dovreste guardare Juju GUI, un’interfaccia drag & drop per fare il deploy dei charm nel cloud. La Gui esegue un’istanza 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.

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

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. nell’esempio si tratta di un sito Web quindi si indica “website” e sotto, indentato, si deve indicare l’interfaccia 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.

Agganciamentoora 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 all’ambiente (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 d’errore 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

(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 – l’opzione 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 php5-gd 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 l’elenco 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

Se avete bisogno di aiuto con Juju, controllate la documentazione online all’URL https://juju.ubuntu.com/docs

LXP_136_60_63_LXF176.tut_juju 61 04/12/13 17:57

Page 64: Linuxpro 136 Dicembre 2013

62 Linux pro 136 Linux pro 136 63

cp /var/www/vanilla/conf/config.php /tmp/ rm -rf /var/www/vanilla 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 l’output 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!”

L’ultima 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.

RelazioniLe 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 l’hook 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 l’esecuzione dell’hook 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’;

Tutorial Juju

Online potete esaminare

il codice di altri charm; leggere

i file Readme per capire come

collegarvi

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 un’operazione non dovrebbe cambiare il risultato atteso. Quindi se un’operazione 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.

LXP_136_60_63_LXF176.tut_juju 62 04/12/13 17:57

Page 65: Linuxpro 136 Dicembre 2013

62 Linux pro 136 Linux pro 136 63

Juju Tutorial

\$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 comandojuju 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 un’unità 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 tuttoA 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 un’altra funzione helper, unit-get, per recuperare un valore locale (l’indirizzo del server). potreste pensare che il servizio, che è solo un sito Web dopotutto, può operare e creare connessioni all’esterno 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.

I tocchi finaliSe 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 un’icona! 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 all’indirizzo Web http://juju.ubuntu.com. LXP

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

In locale con LXCnon 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 un’istanza locale: in questo modo si risparmiano tempo e soldi. potete trovare le istruzioni per procedere in questo modo all’urL http://juju.ubuntu.com/docs/config-LXC.html.

Quando le cose vanno maleinevitabilmente 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 scriverejuju ssh <nomemacchina>

Dopodiché potete esaminare i file di log o qualunque altra cosa vi serva.

LXP_136_60_63_LXF176.tut_juju 63 04/12/13 17:57

Page 66: Linuxpro 136 Dicembre 2013

Diventa protagonista del mondo Linux

LXP_136_32_33_Doppia_Abbo_LinuxPro 32 04/12/13 18:21

Page 67: Linuxpro 136 Dicembre 2013

39,90 € invece di 70,80 €SCONTO 43%

■ PREZZO BLOCCATO: per tutta la durata dell’abbonamento 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 rivi-sta non venisse stampato, l’abbonamento verrà prolungato � no 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.

ABBONANDOTI AVRAI DIRITTO AI SEGUENTI VANTAGGI

Informativa ex Art.13 LGS 196/2003. I suoi dati saranno trattati da Sprea Editori S.p.A., nonché dalle società con essa in rapporto di controllo e collegamento ai sensi dell’art. 2359 c.c. titolari del trattamento, per dare corso alla sua richiesta di abbonamento. A tale scopo, è indispensabile il conferimento dei dati anagra� ci. Inoltre previo suo consenso i suoi dati potranno essere trattati dalle Titolari per le seguenti � nalità: 1) Finalità di indagini di mercato e analisi di tipo statistico anche al � ne di migliorare la qualità dei servizi erogati, marketing, attività promozionali, offerte commerciali anche nell’interesse 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, � nanziario, assicurativo, automobilistico e ad enti pubblici ed Onlus, per propri utilizzi aventi le medesime � nalità di cui al suddetto punto 1) e 2). Per tutte le � nalità 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 � ni: addetti al customer service, addetti alle attività di marketing, addetti al confezionamento. L’elenco 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 dall’articolo 7 del D.Lgs.196/03 – e cioè conoscere quali dei suoi dati vengono trattati, farli integrare, modi� care 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).

ABBONANDOTI

39,90 € invece di 70,80 €

SCONTO 43%

anno - numeri

ABBONATISUBITO

SCEGLI IL METODO PIÙ COMODO PER ABBONARTI:

•TELEFONA al N. 02 87168074 Dal lunedì al venerdì dalle ore 9,00 alle ore 18,00. Il costo massimo della telefonata da linea � ssa è pari a una normale chiamata su rete nazionale in Italia. Da telefono cellulare il costo dipende dal piano tariffario in uso. Via mail: [email protected]

•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 700537672 •ONLINE sul sito www.myabb.it/linuxpro

Tag

liar

e lu

ng

o la

lin

ea t

ratt

eg

gia

ta

Accetto che i miei dati vengano comunicati a soggetti terzi (come indicato al punto 2 dell’informativa privacy): ☐ SI ☐ NO

Accetto di ricevere offerte promozionali e di contribuire con i miei dati a migliorare i servizi offerti (come speci� cato al punto 1 dell’informativa privacy): ☐ SI ☐ NO

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

▷ Inviate Linux Pro al mio indirizzo:Cognome e Nome

Località

Tel. email

CAP Prov.

Via N.

▷ Regalo Linux Pro a:Cognome e Nome

Località

Tel.

CAP Prov.

Via N.

Con il bollettino postale che mi invierete

Con carta di credito: Visa American Express Diners Mastercard

▷ Scelgo di pagare, in un unico versamento:

Numero

Scad. (mm/aa) Firma

Riceverò 12 numeri di Linux Pro a soli € 39,90 anziché € 70,80 con lo sconto del 43%.

SI! Mi abbono a Linux Pro COUPON DI ABBONAMENTO

ABBONATI ANCHE IN INTERNET! Collegati subito a: www.myabb.it/linuxpro

LXP1

36

OFFERTA VALIDA SOLO PER L’ITALIA

LXP_136_32_33_Doppia_Abbo_LinuxPro 33 04/12/13 18:21

Page 68: Linuxpro 136 Dicembre 2013

Tutorial Xxxx

66 Linux pro 136 Linux pro 136 67

Gestione dischi flessibile

Filesystem rendetevi la vita più semplice con ZFS

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

Facile

Un po’ di anni fa publicammo un paio di tutorial sull’utilizzo 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

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, l’impostazione 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.

ZFS su linuxDue 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 un’ampia 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 l’ho usato aveva 2 GB di rAM. L’installazione 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 dall’installazione 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 un’idea 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. L’altro comando serve invece per la gestione dei filesystem stessi.

Un singolo comando

per creare una versione

migliorata di un array RaiD

5 completo del suo primo

filesystem

LXP_136_66_69_LXF175.tut_zfs 66 03/12/13 16:53

Page 69: Linuxpro 136 Dicembre 2013

Tutorial Xxxx

66 Linux pro 136 Linux pro 136 67

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 l’avvenuta creazione del pool bisogna dare il seguente comando:% zpool listnAME SiZE ALLoC FrEE CAp DEDup HEALTH ALTrooTprimopool 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 /primopoolFile system Tipo Dim. usati Dispon. uso% Montato suprimopool 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 all’interno 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 listnAME uSED AVAiL rEFEr MounTpoinTprimopool 24,4M 1,90G 31K /primopoolprimopool/testdir 24,4M 1,90G 24,4M /primopool/testdir

notate come l’utilizzo sia lo stesso per il pool e il filesystem di test, dato che c’è un solo filesystem.

Proprietà dei filesystemFinora 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 all’interno 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 comandozfs 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.

Ci sono altre proprietà che vale la pena esaminare. Ad esempio, per impostare una quota su un filesystem basta il comandozfs 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 comandozfs create primopool/home -o mountpoint=/home -o quota=10G

tutti i filesystem che creerete per gli utenti con un comando di questo generezfs 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 all’inizio 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 l’ammontare 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à

ambiente di testper 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=2dd if=/dev/zero of=/percorso/di/file3

bs=1G count=2Questi 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.

LXP_136_66_69_LXF175.tut_zfs 67 03/12/13 16:53

Page 70: Linuxpro 136 Dicembre 2013

68 Linux pro 136 Linux pro 136 69

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.

RaiDAbbiamo 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 all’avere 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 sdbzpool create nomepool raidz sda sdb sdc

il primo comando crea l’equivalente 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

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. L’accesso 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 comandozfs destroy miopool/miovolume@nomesnapshot

per rimuovere una serie di snapshot si usa il carattere %:zfs destroy miopool/miovolume@snapshot1%snapshot5zfs 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 comandozfs destroy mypool/myvolume@%giovedi

verrà cancellato anche lo snapshot di mercoledì. per vedere l’elenco di tutti gli snapshot si usa il comando zfs list:zfs listzfs list -t snapshotzfs list -t allzfs list -t all -r primopool/testdir

il primo comando elenca solo i filesystem, il secondo solo gli snapshot, il terzo entrambi e l’ultimo 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 l’opzione 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 l’opzione -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@oggizfs clone primopool/miedati@oggi primopool/oggi

Come gli snapshot, i cloni non occupano spazio all’inizio, 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 dall’altro.

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 all’interno del kernel, ma non ne vieta, invece, la sua distribuzione come modulo separato.

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

LXP_136_66_69_LXF175.tut_zfs 68 03/12/13 16:53

Page 71: Linuxpro 136 Dicembre 2013

68 Linux pro 136 Linux pro 136 69

ZFS Tutorial

compressionei 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 all’utente, ls visualizza la dimensione originale del file e file dà il tipo originale del file, ma df e du mostrano l’uso 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/compressoFile system Tipo Dim. usati Dispon. uso% Montato suprimopool/normale zfs 100M 19M 81M 19% /primopool/normaleprimopool/compresso zfs 100M 5.0M 95M 5% /primopool/compresso% ls -lh /primopool/compressototale 4.9Mrw-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 all’abilitazione 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/compressonAME propErTY VALuE SourCEprimopool/compresso compressratio 3.87x -

L’abilitazione 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, l’azienda 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=“[email protected]/24” primopool/publicVa poi condiviso con uno dei seguenti comandi:zfs share primopool/publiczfs 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 l’opzione 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 l’utente continua a usarlo. Lanciando il comandozpool statusozpool status primopool

vedrete una riga che indica il procedere dello scrub in corso oppure il risultato dell’ultimo. 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 l’elettrosmaltatura 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

Che dire della cifratura? Speravamo che non ce lo chiedeste. Anche se le versioni più recenti di ZFS supportano la cifratura, l’ultima 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: è l’opzione migliore nel caso si desideri cifrare l’intero disco. Significa che l’intero pool risulterà crittografato:

non è possibile scegliere i filesystem da cifrare. Se invece desiderate avere questa possibilità l’alternativa è usare encryptfs per crittografare le singole directory: è il metodo usato da ubuntu e da altri per cifrare la directory home degli utenti.

cifratura

LXP_136_66_69_LXF175.tut_zfs 69 03/12/13 16:53

Page 72: Linuxpro 136 Dicembre 2013

70 Linux pro 136 Linux pro 136 71

Raspberry Pi TutorialTutorial Raspberry PiTutorial XxxxRaspberry Pi raspbian è l’oS ideale per gestire la pi: ecco come installarlo

Anche senza avere Linux installato, potete usare un LiveCD per usare questo sistema

Quando inserite un dispositivo USB in Ubuntu, il sistema mostrerà

il contenuto di tutte le partizioni presenti

ImageWriter è disponibile nelle vecchie versioni di Ubuntu. Dall’URL www.ubuntu.com/download/desktop potete scaricare la release 12.04 LTS

1 Anche da LiveCDSe non avete mai usato Linux prima d’ora, non preoccupatevi. Le versioni recenti di questo sistema hanno la stessa facilità d’uso 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 l’operazione usando un altro sistema Linux. non è una cosa indispensabile, ma vi permette di dare un’occhiata al nuovo sistema ancor prima di accendere la rp.

3 ImageWriterState per usare un tool chiamato ImageWriter come front-end grafico per scrivere l’immagine di raspbian sulla SD. Se come vi abbiamo suggerito prima state usando una versione non recente di ubuntu, lo potete installare senza sforzi dall’ubuntu Software Center: lo trovate nella barra sulla sinistra dello schermo, è l’icona 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

Passo passo Setup dal pinguino

Vi raccomandiamo ubuntu Linux, che è l’ideale per i principianti, ma queste istruzioni valgono per qualunque altra distribuzione – rimpiazzate l’ubuntu 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 l’italiano) invece di quella per l’installazione. presto apparirà il desktop di ubuntu.

è 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 dall’immagine di raspbian per la rp. ora, con imageWriter installato e la scheda SD montata, siete pronti a procedere.

2 Preparazioneun problema legato all’uso di una distro Live per installare raspbian è che non riuscirete a scaricare l’immagine del sistema per la rp. in molti casi non c’è abbastanza rAM per scaricare e decomprimere l’immagine, 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 l’immagine 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

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.

Installare RaspbianVolete metttere le mani su una raspberry pi nel modo più affidabile? installate un sistema operativo ottimizzato direttamente da ubuntu!

LXP_136_70_73_tut_rpi 70 03/12/13 16:53

Page 73: Linuxpro 136 Dicembre 2013

70 Linux pro 136 Linux pro 136 71

Raspberry Pi TutorialTutorial Raspberry PiTutorial Xxxx

ImageWriter ha bisogno solo di un’immagine da scrivere e di una scheda SD su cui fare l’operazione. Facile, no?

Linux può leggere le partizioni Windows, OS X e Linux, ovviamente

Potete bloccare l’esecuzione di dd premendo Ctrl+C in qualunque momento

4 Scrivete l’immagineDovete avviare imageWriter dopo aver collegato il lettore di schede e aver inserito la SD, altrimenti ne lamenterà l’assenza. Quando appare la finestra principale (dopo aver inserito la vostra password di amministratore) dovrete indicare la posizione dell’immagine 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

5 Provate la SDDiversamente da Windows e oS x, Linux è l’unico 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 l’occasione di osservare per bene cosa contengono. Quella Linux ha un aspetto

6 Installazione alternativaC’è 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 l’uso 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 l’hard 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

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 dell’operazione. 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.

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 l’utente, 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 nell’alloggiamento della raspberry pi.

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 l’immagine verrà scritta sulla scheda.

LXP_136_70_73_tut_rpi 71 03/12/13 16:53

Page 74: Linuxpro 136 Dicembre 2013

72 Linux pro 136 Linux pro 136 73

Tutorial Raspberry Pi Raspberry Pi Tutorial

La 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 l’intoppo 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 signifi cato dei LEDL’unico elemento che può fornirvi qualche indizio sul funzionamento del computer è l’insieme di LED presenti a fi anco 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) connessaVisto 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.

Questo indica che il dispositivo sta ricevendo il giusto quantitativo di corrente; questo LED dovrebbe rimanere acceso fi ntanto 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 l’alimentatore. Con la scheda SD inserita, deve lampeggiare il primo LED che segnala la lettura dei dati dalla scheda.

Sequenza di bootinizialmente il LED1 lampeggerà, poi farà una pausa e infi ne 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 signifi cato. Abbiamo trovato questo elenco nel forum della rp, controllate voi stessi se avete bisogno perché il signifi cato potrebbe cambiare con il variare della versione del fi rmware. 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 avviatoun aggiornamento del fi rmware di fi ne 2012 ha cambiato il signifi cato 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 fi le coinvolti e assicurandosi che siano corretti. Date un’occhiata a una cosa chiamata checksum e assicuratevi che questo valore per i fi le sulla scheda sia uguale a quello dichiarato per i fi le 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.

In caso di probleminove volte su dieci non vi servirà quanto scritto in queste due pagine, la vostra rp farà semplicemente il boot. Ma se qualcosa va storto…

LXP_136_70_73_tut_rpi 72 03/12/13 16:53

Page 75: Linuxpro 136 Dicembre 2013

72 Linux pro 136 Linux pro 136 73

Tutorial Raspberry Pi Raspberry Pi Tutorial

NetworkingSe 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 l’inizio dell’avvio 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 l’efficienza, 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 è l’equivalente di rete del LED ACT per l’accesso 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. L’unico modo di risolvere questi problemi è provare la rp nel ramo più semplice della vostra rete e poi lavorare sulla configurazione. L’ultimo 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 l’uso 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 l’uso

LXP_136_70_73_tut_rpi 73 03/12/13 16:53

Page 76: Linuxpro 136 Dicembre 2013

74 Linux pro 136 Linux pro 136 75

“Qualcosa è andato storto” o “Lavoro finito”, ma un’applicazione 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: un’applicazione 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 all’accesso 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 l’ora. poi c’è l’hostname. i logger di sistema possono inviare messaggi a un altro computer, in questi casi la presenza dell’hostname assume fondamentale importanza. L’elemento 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; nell’esempio ci dice chi ha eseguito cosa nel sistema.

Ogni log ha una codaQuindi 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 l’aspetto più “hacker” della storia, è come tool per monitorare attività sospette, come tentativi ripetuti di login remoto senza successo provenienti dallo stesso indirizzo ip. L’esempio 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.

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

Nel 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

Ricevere avvisi via mail

Hacker Zone Log di sistema

Logwatch vi fornisce un pratico

report di ciò che è accaduto

nel PC nell’ultima giornata

LXP_136_74_75_tut_sicurezza 74 03/12/13 17:29

Page 77: Linuxpro 136 Dicembre 2013

74 Linux pro 136 Linux pro 136 75

i suoi report sono meno dettagliati rispetto a quelli di Logwatch, ma fornisce comunque un’ottima 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). L’altro 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 è un’espressione 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 SCSiremovable .*

può apparire un po’ arcana, ma segue il formato delle regole esistenti. La prima parte identifica ora, data e nome dell’host, 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/

messagesQuesto comando vi mostrerà tutte le linee che corrispondono a quanto indicato nell’espressione regolare e che non volete appaiano nei report di logcheck. LXP

Ricevere avvisi via mailpotete 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 disknov 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 l’invio 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 & LogcheckAltre 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 quest’ultima voce si spiega da sola: All, ma potete anche rimuovere dei servizi da questo controllo conService = -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 l’esecuzione ogni ora.

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

Log di sistema Hacker Zone

LXP_136_74_75_tut_sicurezza 75 03/12/13 17:29

Page 78: Linuxpro 136 Dicembre 2013

problemi permettendo di suddividere i dati e salvarli in un formato molto più utile ed efficiente. Ci permettono di identificare entità separate all’interno del database che vengono salvate in tabelle differenti. Nel nostro esempio, potremmo dividere le informazioni relative all’album, all’artista e alle tracce in tabelle separate. A questo punto potremo avere un singolo dato per l’artista Free (che contiene il nome e l’anno di fine carriera), un singolo dato per l’album Free At Last (che contiene il nome, l’anno 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 l’artista che l’ha prodotta e l’album a cui appartiene? Qui è dove la parte “relazionale” entra in gioco. Ogni riga all’interno 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 dell’artista è univoco o il titolo dell’album), oppure una combinazione di colonne (per esempio il nome dell’album e l’anno 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 all’artista nella tabella, abbiamo semplicemente specificato l’ID unico di una riga di un’altra tabella, chiamata probabilmente Artista. Quando vogliamo mostrare le informazioni di questo album a un utente, possiamo prendere le informazioni relative all’artista direttamente dalla tabella corrispondente, recuperando dalla tabella i dati relativi all’artista con ID 1 e visualizzarli insieme ai dati dell’album.

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

Ritorno alle basi: organizzazione dei datiLo staff di Linux Pro vi mostrerà come utilizzare SQL e un database relazionale per strutturare la vostra collezione di musica rock anni 70

Nel numero scorso abbiamo parlato di come rendere persistenti i dati utilizzati all’interno 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.

RelazioniIniziamo 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 l’artista a cui appartiene, e le tracce presenti in esso. Potremmo inserire tutti i dati in un’unica 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 dell’album, il suo nome, l’anno di pubblicazione e tutte le informazioni legate all’artista, il suo nome e l’anno 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

Database relazionaleAlbum Free At Last

Durata 65:58

Anno 1972

Id_Artista 1

Dati duplicatiAlbum 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

Concetti Hai qualche linguaggio da suggerirci? Scrivici a [email protected] Concetti

76 LINux PrO 136 LINux PrO 136 77

LXP_136_76_77_LXF172.code_concepts 76 03/12/13 17:29

Page 79: Linuxpro 136 Dicembre 2013

MariaDB è un valido rimpiazzo per MySQL e sta rapidamente conquistando consensi in diverse distribuzioni incluse Mageia, OpenSUSE e perfino Slackware

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 dell’istruzione: tutte le istruzioni SQL devono terminare con un punto e virgola. Nell’esempio 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 l’azione che vogliamo compiere, il tipo di oggetto su cui vogliamo operare e le proprietà dell’oggetto. Quando abbiamo utilizzato create database, l’unica proprietà che abbiamo aggiunto era il nome del database; con create table invece, abbiamo aggiunto anche diverse proprietà aggiuntive all’interno 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 all’interno un valore intero che si incrementa a ogni nuova riga inserita nella tabella, creando una chiave primaria. Potete trovare molto altro relativamente all’istruzione create table all’indirizzo http://dev.mysql.com/doc/refman/5.7/en/create-table.html (in inglese).

Inserimenti e interrogazioniInserire un dato all’interno di una tabella è molto semplice: insert into Album (nome) values (“Free at Last”);

Ancora una volta, abbiamo specificato l’azione e l’oggetto

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 è l’ID dell’album 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 (l’interrogazione 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 l’ID, sarebbe stato sufficiente sostituire l’asterisco 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-a-molti. 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

Concetti Hai qualche linguaggio da suggerirci? Scrivici a [email protected] Concetti

76 LINux PrO 136 LINux PrO 136 77

LXP_136_76_77_LXF172.code_concepts 77 03/12/13 17:29

Page 80: Linuxpro 136 Dicembre 2013

78 Linux pro 136 Linux pro 136 79

C++

(del quale il padre di C++, Bjarne Stroustrup, disse “…C++11 sembra un linguaggio totalmente nuovo…”). ritroverete anche alcune particolarità legate all’ereditarietà introdotte nella scorsa puntata. Tutti gli esempi sfrutteranno le classi Shape e Circle già definite.

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

In questo tutorial affronterete altri aspetti di C++. in particolare vedrete i puntatori e il loro uso; imparerete qualcosa in più sull’ereditarietà e qualcos’altro sui fondamentali del linguaggio.

inoltre lavorerete con la versione attuale di C++, C++11

C++11: puntatori smart

Puntatori e puntatori smart

PartE 2

C++ è, in pratica, un’estensione di C. Questo linguaggio supporta i puntatori tipizzati e le espressioni dei puntatori. un puntatore (“pointer”) è semplicemente una variabile che può registrare l’indirizzo di un’altra 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 l’indirizzo 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. L’uso 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)

oppureint *p_int(0); // o int *p_int = 0; // definisce e inizializzap_int = &i; // imposta p_int perché punti a i*p_int // utilizza il valore dell’intero al quale p_int sta attualmente puntando

Puntatori a costantipotete avere puntatori a valori di sola lettura, per esempio const. È importante notare, comunque, che una dichiarazione o definizione della formaconst 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 l’accesso in scrittura dell’oggetto 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 lettip->m // valuta il membro m dell’oggetto 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 dell’oggetto referenziato da p

Puntatori e arrayGli array e i puntatori sono legati a doppio filo. il nome di un array viene trattato come un puntatore costante all’inizio dei suoi elementi: cioè l’array viene memorizzato da qualche parte nella memoria e il suo indirizzo viene riportato nel puntatore. il compilatore tratta il nome dell’array, perlopiù, come il suo indirizzo. una copia di questo valore può essere cambiata, e l’elemento dell’array può essere modificato

Shape Shape

Circle Fig.1 L’oggetto 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

LXP_136_78_81_LXF174.code_cpp 78 03/12/13 16:54

Page 81: Linuxpro 136 Dicembre 2013

78 Linux pro 136 Linux pro 136 79

C++

C++11: puntatori smarta runtime, ma la variabile (nome) con la quale l’array è definito avrà un valore fisso corrispondente all’indirizzo dell’array 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

oppureMyClass a[10]; // a è un array di 10 istanze di MyClass

Puntatori come parametri di funzionii puntatori possono essere passati come parametri alle funzioni, con l’ovvia sintassi, definendole per esempio così: void foo(int *p);

oppurevoid foo(const int *p);

nel secondo esempio la chiave const si applica alla referenza del puntatore: è possibile modificare il valore di p all’interno 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 all’inizio (elemento 0) dell’array, gli array stessi possono essere passati come argomenti a funzioni che ammettano un puntatore del tipo appropriato. per esempio, datoMyClass arr[7];

e void foo(MyClass *pmc);la funzione foo() può essere chiamata semplicemente così:foo(arr); // arr è un puntatore all’inizio di arr

i puntatori possono essere altresì ritornati dalle funzioni, così:int *bar(); // bar() ritorna un puntatore a int

Puntatori smart ed ereditarietà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 l’operatore * e per accedere a membri quando usati con l’operatore ->. per i puntatori smart, queste operazioni sono definite come funzioni. nel contesto dell’ereditarietà, 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().

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 dell’oggetto 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 dell’oggetto derivato.

Puntatori e referenzein molti casi la scelta tra l’uso 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à l’oggetto corrispondente disponibile all’interno 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 l’oggetto è stato trovato, se lo è stato; un valore di 0 indicherebbe che l’oggetto non è stato trovato per nulla. Questa tecnica non sarebbe disponibile se il tipo di ritorno fosse una referenza, dal momento che quest’ultima deve necessariamente referenziare un oggetto.

I puntatori nel C++ modernoCon l’ampia disponibilità dei puntatori smart e dei componenti standard che gestiscono i dettagli di allocazione e deallocazione dinamica della propria memoria, l’uso dei puntatori base è diventato sempre meno necessario. per esempio i contenitori standard, come i vettori, possono

“Normalmente i puntatori possono puntare solo a membri del loro tipo”

Base

Derivata

Fig.2 Una generalizzazione dell’esempio in Fig.1

LXP_136_78_81_LXF174.code_cpp 79 03/12/13 16:54

Page 82: Linuxpro 136 Dicembre 2013

80 Linux pro 136 Linux pro 136 81

C++

Tipogni directory degli esempi di codice contiene un file readme. Leggetelo per istruzioni sulla compilazione!

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

Vantaggi per l’embeddedi 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 l’indirizzo al quale sono stati allocati. Le espressioni dei puntatori appaiono quando l’operatore 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 dell’applicazione. i puntatori e/o le espressioni di puntatori sono necessari anche nell’uso di codice legacy (per esempio C) che presenti un tipo di puntatore nell’interfaccia. possono anche essere usati in C++, a seconda dei gusti; la tendenza generale è tuttavia, come già detto, di usarli sempre meno a livello dell’applicazione.

BaseBase

Puntatore a classe base

Derivata

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 membroDato un oggetto avete visto che potete invocarne una funzione membro con la sintassiobj.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 l’oggetto (obj) interessato nella chiamata; la effettuerà, in altre parole, in base al tipo di oggetto.

Ereditarietà con funzioni non virtualiin 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 Basederived_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 dell’oggetto puntato). per esempio, un puntatore

“Potete avere diverse classi nel sistema con una funzione membro chiamata mf”

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 oggettiCicle c … // con gli argomenti richiestiShape *sp(&shp);Circle *cp(&c); sp->draw(); // chiama draw() di Shapecp->draw(); // chiama draw() di Circle// ma consp = cp; // ora sp punta ad un Circlesp->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 virtualiSpesso, comunque, il suddetto comportamento non è quello desiderato. Quello che volete è invocare la funzione rilevante per il tipo di oggetto. in casi come quello dell’esempio, dove state iterando con un puntatore a classe base, vorreste che

LXP_136_78_81_LXF174.code_cpp 80 03/12/13 16:54

Page 83: Linuxpro 136 Dicembre 2013

80 Linux pro 136 Linux pro 136 81

C++

la funzione fosse scelta in base al tipo dell’oggetto 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 l’oggetto classe base all’interno della funzione, malgrado gli passiate un qualsiasi derivato. Se passate l’argomento per puntatore, o riferimento, al tipo base, e le funzioni rilevanti sono virtuali, allora le funzioni da chiamare sono determinate in base al tipo dell’oggetto puntato o riferito. Questo è mostrato nel passo 2 del box in questa pagina.

Override in azionein 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 d’ereditarietà. 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 all’interno, a loro volta, di una gerarchia d’ereditarietà. Questo è diverso dal sovraccarico (overload), dove le funzioni hanno un nome comune ma diverse sequenze di parametri. EsempiGli 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 d’esempio 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 l’uso dei vettori per memorizzare logicamente collezioni eterogenee di forme e, per esempio, per iterare su tali collezioni, processando gli elementi contenuti. illustrano anche l’uso 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

1 Creare gli oggettiutilizzate l’operatore 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).

3 Creare una collezioneA questo punto potete creare una collezione di oggetti basata su input utente a runtime. per farlo, usate i fi le presenti nella directory Shapes_4.

2 PolimorfismoSeguendo le istruzioni nella directory Shapes_3 potete vedere come ottenere il polimorfismo. Compilate ed eseguite main.cpp e main_1.cpp comparandone l’output con il codice corrispondente al passo 1.

Passo passo Compilazione ed esecuzione

LXP_136_78_81_LXF174.code_cpp 81 03/12/13 16:54

Page 84: Linuxpro 136 Dicembre 2013

82 Linux pro 136 Linux pro 136 83

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.

Go (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

Primi passiLa prima cosa da fare è installare Go a partire dall’archivio .tar, che dovete scaricare dalla pagina Web http://golang.org/doc/install. una volta ottenuto l’archivio, 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 l’ambiente di lavoro. il codice Go ha bisogno di risiedere all’interno 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 all’interno 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 all’indirizzo 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.

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

All’interno della cartella si può creare ciaomondo.go con un editor di vostra scelta:package mainimport “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, all’interno del codice che la usa la chiamerete con la sintassi package nome_libreria, ma per l’esecuzione del vostro codice da linea di comando è necessario che sia presente il pacchetto main. proseguiamo nell’analisi del codice e notiamo che abbiamo importato il pacchetto fmt, con lo scopo di gestire l’i/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 l’esecuzione del pacchetto. il corpo di questa funzione è, nel caso in esame, piuttosto semplice, essendo costituito da una sola riga di codice, contenente l’invocazione 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 (un’altra 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

Un linguaggio sprint!

Il classico “Ciao Mondo!”

non è mai visivamente molto

gratificante, ma la mascotte

di Go nella pagina sullo sfondo

è carina...

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 un’occhiata per voi

LXP_136_82_85_LXF175_code_lesser 82 03/12/13 18:08

Page 85: Linuxpro 136 Dicembre 2013

82 Linux pro 136 Linux pro 136 83

Il nostro primo vero programmaScrivere “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 mainimport “fmt” var ( finito string)func main() { chiediFiniti() stampaFiniti()}// chiediFiniti chiede all’utilizzatore di inserire qualche compito finito.func chiediFiniti() { fmt.printf(“Quali compiti hai terminato?”) fmt.Scan(&finito)}// stampaFiniti mostra tutti i compiti terminati fino ad orafunc 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 l’uso 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. nell’esempio 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 dell’espressione

Go

&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 all’originale, 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 all’atto della sua definizione). La soluzione a questo problema è usare i puntatori, che contengono l’indirizzo di memoria di una variabile, piuttosto che il valore della variabile stessa. L’espressione &finito in Go restituisce un puntatore all’indirizzo 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 dall’originale. 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.

Gestire i bufferuna 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ò l’eccessivo 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)

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 l’esecuzione, quindi i nomi di funzione iniziano sempre con una lettera maiuscola. infine si noti l’assenza di punti e virgola al termine di ogni costrutto del codice: la grammatica di Go richiede la loro presenza, ma l’analizzatore 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 all’analizzatore 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:

// Correttoif j<1 { <corpo del costrutto>}// non corretto: l’analizzatore lessicale pone un ; alla fine della prima rigaif j<1{ <corpo del costrutto>}

per terminare l’analisi 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.

TipDovrete 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 dall’importazione di libreria specificata nel loro preambolo.

LXP_136_82_85_LXF175_code_lesser 83 03/12/13 18:08

Page 86: Linuxpro 136 Dicembre 2013

Go

84 Linux pro 136 Linux pro 136 85

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 dichiarazioniCosa sta succedendo? il problema sta nell’assegnazione 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à dell’assegnamento 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)

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, l’esecuzione del software vi darà i risultati attesi, permettendovi l’immissione di frasi o gruppi di parole e stampandole parimenti assieme.

Salvare in un fileCome 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). L’unica 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 all’atto 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 un’altra soluzione, ad esempio la seguente:

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

LXP_136_82_85_LXF175_code_lesser 84 03/12/13 18:08

Page 87: Linuxpro 136 Dicembre 2013

Go

84 Linux pro 136 Linux pro 136 85

Stampare i contenuti

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

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 l’apertura in sola lettura): in questo caso APPEND apre il file con l’opzione append, mentre WRONLY consente la sola scrittura. possiamo anche impostare i permessi, come nell’esempio 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 l’applicazione. per scongiurare questa evenienza possiamo fare qualche controllo di esistenza file usando diverse funzioni delle libreria os, come nell’esempio seguentefunc controllaSeEsisteFile(file string) { if _, err := os.Stat(file); os.isnotExist(err) { f, err := os.Create(file)

if err != nil { panic(err) } f.Close() }}

Questa parte di codice mostra anche l’identificatore 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 nell’esecuzione 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 l’uso 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.

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 dell’intero 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 un’unica 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 l’uso di range per iterare su tutte le stringhe della suddivisione tuttiFiniti. i è l’indice di iterazione (che parte da 0, come potrete vedere durante l’esecuzione) e v è il valore corrispondente. Printf() li stampa formattati rispettivamente come cifra e stringa. il come innestare tutto questo all’interno 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 l’interfaccia, 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

LXP_136_82_85_LXF175_code_lesser 85 03/12/13 18:08

Page 88: Linuxpro 136 Dicembre 2013

86 LINUX PRO 136 LINUX PRO 136 87

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)

l’operatore non uguale è /= l’operatore 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 l’operatore 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:Couldn’t 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, l’inferenza 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

Haskell è 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 l’eccellente interprete interattivo rende facile il suo apprendimento. È inoltre possibile effettuare certi tipi di attività con piccole quantità di codice, una volta presa confidenza con l’idioma. 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, l’interprete interattivo.

Fondamenti di HaskellAvviate l’interprete ghci e provate a valutare le vostre prime espressioni Haskell:ghci> 4 + 37ghci> 67*13871ghci> (/) 15 35.0ghci> “Hello world”“Hello world”

È possibile scrivere le espressioni da valutare sia in formato

Haskell

Primi passi con HaskellCuriosi di provare la programmazione funzionale? Vi mostriamo un linguaggio che vi aprirà una nuova prospettiva di programmazione

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. Un’espressione funzionale non dovrebbe cambiare lo stato del programma e il risultato dovrebbe dipende solo dall’input e non da qualsiasi altra cosa che possa essere accaduta. Questo inoltre significa che le variabili non variano;

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 l’esecuzione 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 un’altra, per collegarle insieme (un po’ come Lisp, che vedremo dei prossimi numeri). Date un’occhiata 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.

Funzionalità

LXP_136_86_90_LXF172_code_haskell 86 04/12/13 15:13

Page 89: Linuxpro 136 Dicembre 2013

86 LINUX PRO 136 LINUX PRO 136 87

Haskell

Gli operatori && e || funzionano, tuttavia vi verrà restituito un errore nel caso trattiate 0 come False

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 = 3ghci> :type y y :: Integerghci> x + y<interactive>:87:5:Couldn’t match expected type `[Char]’ with actual type`Integer’In the second argument of `(+)’, namely `y’In the expression: x + yIn 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. Un’ultima 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 +tghci> (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 l’impostazione che visualizza il tipo dell’ultima espressione valutata.

FunzioniLeggermente 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]

ghci> drop 3 it[4,5]

(it si riferisce all’ultima espressione valutata. Dovrete utilizzare le parentesi solo nel caso l’argomento 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 = 4x = “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:1hello.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.

La piattaforma Haskell è disponibile attraverso il package manager integrato in molte distribuzioni

LXP_136_86_90_LXF172_code_haskell 87 04/12/13 15:13

Page 90: Linuxpro 136 Dicembre 2013

Haskell

88 LINUX PRO 136 LINUX PRO 136 89

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,

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.

Codice puro e codice I/O

Ecco cosa succede se vi dimenticate di importare System.IO: otterrete molti messaggi ‘Not in scope’. Dopo l’aggiunta della riga tutto torna a funzionare

Un programma a tutti gli effettiProverete 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 l’IO. Create un file quote.hs come questo:import System.IOmain :: IO () main = do inhandle <- openFile “quote.txt” ReadMode outhandle <- openFile “output.txt” WriteMode mainloop inhandle outhandle hClose inhandle hClose outhandlemainloop :: Handle -> Handle -> IO () mainloop inhandleouthandle =

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 l’indentazione 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 un’azione 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 l’effettiva 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) dall’handle 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 l’inizio 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. () è l’equivalente Haskell del void in C++ o Java. Handle -> Handle definisce i parametri: due ed entrambi Handle. Tornando al codice. Nel caso volessimo visualizzare l’output su stdout (lo schermo) invece che in output.txt? Haskell prevede tre handle sempre disponibili: stdin, stdout, e stderr. Quindi semplicemente dovrete rimuovere

TipSe volete provare Haskell senza scaricare nulla, http://tryhaskell.org/ vi farà usare l’interprete direttamente da browser.

LXP_136_86_90_LXF172_code_haskell 88 04/12/13 15:13

Page 91: Linuxpro 136 Dicembre 2013

Haskell

88 LINUX PRO 136 LINUX PRO 136 89

tutti i riferimenti a outhandle e sostituirli con stdout:main :: IO () main = do inhandle <- openFile “quote.txt” ReadMode mainloop inhandle hClose inhandlemainloop :: 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.IOmain = 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.

La vostra prima versione del codice in esecuzione; e poi la versione che estrae una parola casuale dalla citazione selezionata

Array e numeri casualiFinora avete semplicemente fatto output: quello che dovete fare ora è prendere una delle righe. Un’opzione 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 l’opzione 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.Randommain :: 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 singlequotegetQuotes :: FilePath -> IO StringgetQuotes 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 l’ultimo indice dell’array e !! ritorna

l’elemento corrispondente all’indice dell’array. 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 l’ordine è importante, perciò utilizzare un blocco di azioni do assicura che queste avvengano nell’ordine corretto. <- è l’operatore di assegnazione IO. È possibile utilizzarlo per collegare un’azione 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 un’azione di I/O. Queste possono essere utilizzate a piacimento – memorizzate e concatenate con altre azioni (utilizzando do) – tuttavia possono essere eseguite solo all’interno di un’altra azione di IO. La funzione main è un’azione 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 l’IO 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 (all’interno 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.

TipSi consultiil 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 all’indentazione.

LXP_136_86_90_LXF172_code_haskell 89 04/12/13 15:13

Page 92: Linuxpro 136 Dicembre 2013

Haskell

90 LINUX PRO 136 LINUX PRO 136 TM

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

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

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

Monad e astrazioni

MappingDarete 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.Randommain :: 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 -> StringgetFifthWord = (!!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 l’array 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 l’indice 4 (il quinto membro dato che l’indice inizia da zero) dell’array risultante. Quindi map getFifthWord quotes applica getFifthWord a quotes, e ritorna un array della quinta parola di ogni citazione, che viene assegnato a fifthWords.

Viene poi stampata una parola casuale nell’array, esattamente come prima. Potete fare anche un passo avanti e utilizzare la funzione getRandomWord. Date un’occhiata: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) index2 <- randomRIO (0, 10) let randomWords = map (getRandomWord index2) quotes putStrLn ( randomWords !! index )getRandomWord :: Int -> String -> StringgetRandomWord 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 nell’orecchio 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

mondi perdutiLe risposte sono negli abissi

nuovo look

più interessante

Quanto si può parlare velocemente?Sarà possibile ibernare un uomo?Come funzionano i vetri autopulenti?

&

SCIENZA TECNologIA FUTURoSCIENCE

Mensile N°15 Dicembre 2012

TARI

FFA

R.o.

C. -

poST

E ITA

lIANE

SpA

- Sp

Ed.

IN A

bb. p

oST.

d.l.

353/

2003

(CoN

v. IN

l. 2

7/02

/200

4 N.

46) A

RT. 1

, Com

mA

1, dC

b m

IlANo

INTERNATIONAL

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

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

P e r c h é i l m o n d o P ot r e b b e dav v e r o f i n i r e a d i c e m b r e 2 0 1 2

( e n o n c ’ e n t r a l a P r o f e z i a m a y a )

APOCALYPSE NOW

iPhone iPad iPod iPhone

JOURNAL

UN

ICA

!

ARTISTI20 App PER DIpINGERE E DISEGNARE20 App PER DIpINGERE E DISEGNARE

Gangstar VegasSei pronto a conquistare la città delpeccato? p51

Crea uno spartito musicale cantando p15

L’App per gestire i promemoriain modo semplicee veloce p14

Dov'è il mio Topolino?In prova il divertente gioco Disney p50

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

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

App Journal N°30 Mensile Anno 3 €3,90 chf 9,20

Da sapere

JOU

RN

AL

Voyager Air1 Terabyte di memoria per il tuo iPad

Voyager Air: 1 Terabyte di memoria per il tuo iPad

XCOM: EnEMyUnknOwnIl miglior gioco per iOS! p48

ScoreCleaner NotesTask

la Rivista pRAtICA, UtILE E INDISpENSAbILE

spEAkEr AirplAypotenza wireless

ARTISTIDIGITALI

Ami la natura? Ecco 10 App selezionate per te! p38Ami la natura? selezionate per te!

Da sapereAmi la natura? selezionate per te!

Da sapereAmi la natura? Ecco 10 App selezionate per te!

Da sapereAmi la natura? selezionate per te!

Da sapereAmi la natura? Ecco 10 App selezionate per te!

Da sapereAmi la natura? Ecco 10 App Ecco 10 App selezionate per te! p38p38

in prova

ACCENDE LA TUA PASSIONE!302NUMERO

TH

E G

AM

ES

MA

CH

INE

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

Mensile N°302 €4,99 STAR CITIZENCHRIS ROBERTS SVELA I SEGRETI DEL SUO GIOCO!

TGM DECRETA IL VINCITORE NELLA SFIDA PIÙ ATTESA DELL'ANNO!

FIFA 14 VS PES 2014

ACCENDE LA TUA PASSIONE!302NUMERO

TH

ET

HE

TH

ET

HE

GA

ME

S M

AC

HIN

E G

AM

ES

MA

CH

INE

GA

ME

S M

AC

HIN

E G

AM

ES

MA

CH

INE

GA

ME

S M

AC

HIN

E G

AM

ES

MA

CH

INE

GA

ME

S M

AC

HIN

E G

AM

ES

MA

CH

INE

GA

ME

S M

AC

HIN

E G

AM

ES

MA

CH

INE

GA

ME

S M

AC

HIN

E G

AM

ES

MA

CH

INE

GA

ME

S M

AC

HIN

E G

AM

ES

MA

CH

INE

302

Cop_001_Cover_TGM_302_EVO.indd 1 09/10/2013 08.49.14

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

Mensile N°135 €5,90 8 obiettivi 50 mm a confronto L’ottica che non può mancare neLLa tua borsa!

E in più...Come sfruttare al

massimo il flashFotoritocco rapido

Test: monopiedi economici

VIDEOGuIDE IN ITALIANOFotoritocco ancora più Facile con le videolezioni passo passo!VIDEOGuVIDEOGuIDEIDE IN ITALIANO IN ITALIANOFotoritocco ancora più Fotoritocco ancora più FFacile con le acile con le videolezionivideolezioni passo passo!passo passo!

FotoGRAFIE creative

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

mAcRo d’Autunno Scatti ravvicinati di fiori e... dolciumi di stagione!

un ARtIstA A 360 GRAdI Intervista a Ed Templeton, skater, fotografo, pittore, imprenditore...

sullA VIApER dAmAsco L’eroica storia del fotogiornalista Paul Conroy nell’inferno siriano

spL’eroica storia del fotogiornalista Paul Conroy nell’inferno sirianoL’eroica storia del fotogiornalista Paul Conroy nell’inferno sirianoL’eroica storia del fotogiornalista

Dicembre 2013

ta

riff

a r

.o.C

. - P

ost

e it

ali

an

e sP

a s

PeD. i

n a

bb. P

ost

. - D

.l. 3

53/20

03 (

Con

v. in

l. 2

7.02

.200

4, n

° 46

), a

rt.1

, Co

mm

a 1

, D

Cb m

ila

no

- C

HF

13,

60

000_Cover_DCM135_A2.indd 2 21/10/13 15:30

E in più...E in più...E in più...E in più...E in più...Come sfruttare al

massimo il flashFotoritocco rapidoFotoritocco rapido

Test: monopiedi economici

Test: monopiedi economici

Test: monopiedi

Come sfruttare al

arriva l’auto controllata da linux!

In anteprima le nuovissime app per le mappe, le foto e la musica

UBUNTUFACILEU

BUN

TU FACIL

E

LG OPTIMUS

G PRO

Con Jolicloud controlli file, social network e app remote dal desktop!

a prova dI hackeRPaSSwORd

G PRO

Potenzada urlo e maxi

schermo

tutto NEL CLouD

LE APP DEL FutuRo

FAi uN sito DA PRo

In anteprima le nuovissime app per le mappe, le foto e la musica

Con Jolicloud controlli file, social network e app remote dal desktop!

a prova dI hackeR

utuRo

DA PRo

arriva l’auto controllata da linux!

OPTIMUS

Tutti gli strumenti per audio e video

Ub

untu

Fac

ile N

°9

Me

nsile

2,5

0 ARtisti CoN ubuNtu stuDio

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

Crea un sito professionalesenza scrivere codice

Prova la tua rivista anche in digitaleProva la tua rivista anche in dioitaleProva la tua rivista anche in digitaleProva la tua rivista anche in dioitaleProva la tua rivista anche in digitale

Se leggi Linux Pro ti potrebbero anche piacere...

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

dav v e r o f i n i r e a d i c e m b r e 2 0 1 2

APOCALYPSE Inoltre…

Ruby Ottimizza il codice per lavorare meglioPython Testo e stringhe al tuo comandoAndroid Crea il tuo servizio in stile InstagramConcetti Realizza uno script Python da zero

Tutta un’altra musica

Secure Boot Avvia Linux nonostante i limiti imposti dall’UEFI di Microsoft

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

Come catturare, etichettare e gestire i tuoi file musicali preferiti

Cloud enterpriseScopri Amazon Web Services

Distroi criteri vincenti� Versatilità d'uso � Livello di sicurezza� Scalabilità

Diventa protagonista nel mondo Linux

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

Pro

AUDiO DA PrOCon Ardour 3 lavori con file multitraccia e sequencer MIDI come un professionista

teSt PerFettiPianifica controlli di qualità per creare codice a prova di bomba!

Raspberry Pi Gestire

al meglio i torrent!

Straordinaria autonomia e ottimo rapporto qualità/prezzo!

DistroDistroDistroDistroAccAdemiA del codice

18 pagine di pura programmazione

Tari

ffa

r.O

.C. -

PO

sTe

iTali

ane

sPa

- ab

b. P

OsT

. - D

.l. 3

53/2

003

(CO

nv. i

n l.

27/

02/2

004

n. 4

6) a

rT. 1

, CO

mm

a 1,

DCb

mil

anO

- Di

sTri

buTO

re: P

ress

-Di,

mil

anO

Linu

x Pr

o 13

1- M

ensi

le -

€5,

90 -

CHF

13,

60

LAB TEST

APOCALYPSE APOCALYPSE

LXP_136_86_90_LXF172_code_haskell 90 04/12/13 15:13

Page 93: Linuxpro 136 Dicembre 2013

1a

2a

3a

4a

5a

1 2 3 4 5 6 7 8 9

10111213141516171819202122232425262728293031

La nostra famiglia

MercoledìMaria Madre di dio

capodanno

GiovedìS. BaSilio veSc.

VenerdìS. Genoveffa verGine

SabatoS. faUSTa

DomenicaS. aMelia MarTire

Lunedìepifania del SiGnore

MartedìS. raiMondo Sac.

MercoledìS. MaSSiMo

GiovedìS. GiUliano MarTire

VenerdìS. aldo ereMiTa

SabatoS. iGino papa

DomenicaS. TaTiana

LunedìS. ilario veScovo

BaTT. di GeSù

MartedìS. felice MarTire

MercoledìS. MaUro aBaTe

GiovedìS. Marcello i papa

VenerdìS. anTonio aBaTe

SabatoS. BeaTrice

DomenicaS. Mario M.

MarTin lUTher KinG’S day

LunedìSS. SeBaSTiano

e faBiano MarTiri

MartedìS. aGneSe verGine

MercoledìS. vincenzo MarTire

GiovedìS. eMerenziana verG.

VenerdìS. franceSco di SaleS

Sabatoconv. di S. paolo

DomenicaSS. TiTo e TiMoTeo veSc.

LunedìS. anGela Merici

MeM. della Shoah

MartedìS. ToMMaSo d’aqUino

MercoledìS. coSTanzo

GiovedìS. MarTina MarTire

VenerdìS. Giovanni BoSco

SacerdoTe

Acquario • 21 Gennaio - 19 Febbraio

SeTT

iMa

ne

GENNAIO 2014

03_INTfamiglia.indd 1

02/07/13 10:05

calendario-agenda della famiglia f.to cm30x42,5 € 6,00

calendario-agenda dei nonni f.to cm15x50 € 5,90

calendario-agenda per lei f.to cm15x50 € 5,90

totale ordine ➫ totale quantità

Scegli i tuoi calendari preferitiIndica il quantitativo delle pubblicazioni che vuoi ricevere

1a

2a

3a

4a

5a

1 2 3 4 5 6 7 8 910111213141516171819202122232425262728293031

La nostra famiglia

MercoledìMaria Madre di dio

capodanno

GiovedìS. BaSilio veSc.

VenerdìS. Genoveffa verGine

SabatoS. faUSTa

DomenicaS. aMelia MarTire

Lunedìepifania del SiGnore

MartedìS. raiMondo Sac.

MercoledìS. MaSSiMo

GiovedìS. GiUliano MarTire

VenerdìS. aldo ereMiTa

SabatoS. iGino papa

DomenicaS. TaTiana

LunedìS. ilario veScovo

BaTT. di GeSù

MartedìS. felice MarTire

MercoledìS. MaUro aBaTe

GiovedìS. Marcello i papa

VenerdìS. anTonio aBaTe

SabatoS. BeaTrice

DomenicaS. Mario M.

MarTin lUTher KinG’S day

LunedìSS. SeBaSTiano e faBiano MarTiri

MartedìS. aGneSe verGine

MercoledìS. vincenzo MarTire

GiovedìS. eMerenziana verG.

VenerdìS. franceSco di SaleS

Sabatoconv. di S. paolo

DomenicaSS. TiTo e TiMoTeo veSc.

LunedìS. anGela Merici

MeM. della Shoah

MartedìS. ToMMaSo d’aqUino

MercoledìS. coSTanzo

GiovedìS. MarTina MarTire

VenerdìS. Giovanni BoSco SacerdoTe •

Acquario • 21 Gennaio - 19 Febbraio

SeTT

iMa

ne

GENNAIO 2014

03_INTfamiglia.indd 1 02/07/13 10:05

CALENDARIO-AGENDA FAMIGLIADE

LLA 2014

3a

4a

D

ISTR

IBUT

ORE

PER

L’IT

ALI

A E

PER

L’ES

TERO

: PR

ESS-

DI

DIST

RIBU

ZIO

NE

STAM

PA E

MUL

TIM

EDIA

S.R

.L. -

201

34 M

ILAN

O

LISA

GO

OD

MAN

CAL

ENDA

R N

. 4/

2013

- A

NN

- €

6,0

0

È COMODO !!!

SFOGLIA E SCOPRI

LA SUA PRATICITÀ

UGO

MARIA

LAURA

MARCO

FIDO

EDO

01_ICOVER_famiglia.indd 1 05/07/13 12:31

calendari 2014in anteprima SOlO per te!

prenOtali SUBitO SU www.SpreaStOre.it (tiratUra limitata)

SE VUOI ORDINARE VIA POSTA O VIA FAX, COMPILA QUESTO COUPONRitaglia 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 [email protected] o telefonare al 02.87158224.

NOME

COGNOME

via

N° C.a.P. PROv.

CiTTà

TEL.

E-MaiL

Informativa e Consenso in materia di trattamento dei dati personali - (Codice Privacy d.lgs. 196/03) Sprea Editori S.p.A. Socio U-nico Sprea Holding S.p.A. con sede legale in Cremona (CR), via Beltrami 21, è il Titolare del trattamento dei dati personali che ven-gono 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 l’esercizio di tutti i diritti previsti per Legge. La sottoscrizione del presente modulo deve intendersi quale presa visione, nel colophon della rivista, dell’Infor-mativa completa ex art. 13 d.lgs. 196/03, nonché consenso espresso al trattamento ex art. 23 d.lgs. 196/03 in favore dell’Azienda.

Ricevilo comodamente a casa senza spese aggiuntive

Voglio regalare questo calendario a:

SCELGO iL SEGUENTE METODO Di PaGaMENTO E aLLEGO: Indica con una ✔ la forma di pagamento desiderata

∆ Ricevuta di versamento su CCP 99075871 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. (Per favore riportare il numero della Carta indicandone tutte le cifre)

Scad. CVV Nome e Cognome del Titolare

Data Firma del titolare

(Codice di tre cifre che appare sul retro della carta di credito)

NOME

COGNOME

via

N° C.a.P. PROv.

CiTTà IF 252

Linu

x Pro

136

Gli impegni di...FESTECOMPLEANNI

ANNIVERSARI

Gli impegni di...FESTECOMPLEANNI

ANNIVERSARI

Non nego che le donne siano stupide; Dio Onnipotente le ha fatte per vivere insieme agli uomini.

George Eliot, Adam Bede, 1859

PESCI “il sognatore”Pianeta: NettunoElemento: AcquaSegno: FemminileColore: Verde mare

Transito del Sole: tra il 20 Febbraio e il 19 MarzoPietra portafortuna: TurcheseMetallo: StagnoGiorno favorevole: Giovedì, giorno di Giove

FEBBRAIO2014

6

7

8

9

1 2 3 4 5 6 7 8 910111213141516171819202122232425262728

SabatoS. VERDIANA VERGINE

DomenicaS. MAURIZIO

GIORNO DELLA MARMOTTA

LunedìS. BIAGIO

FESTA DELLA CANDELORA

MartedìS. GILBERTO VESC.

MercoledìS. AGATA VERGINE

Giovedì S. PAOLO MIKI

VenerdìS. TEODORO MARTIRE

SabatoS. GIROLAMO EMILIANI

DomenicaS. APOLLONIA VERGINE

LunedìS. GUGLIELMO

RICORDO DELLE FOIBE

MartedìB. V. MARIA DI LOURDES

MercoledìS. EULALIA VERGINE

GiovedìSS. FOSCA E MAURA

SACRE CENERI

VenerdìS. VALENTINO

FESTA DEGLI INNAMORATI

SabatoS. FAUSTINO

FESTA DEI SINGLE

DomenicaS. GIULIANA MARTIRE

LunedìS. PATRIZIA

FESTA DEL GATTO

MartedìS. CINZIA

MercoledìS. MANSUETO VESCOVO

GiovedìS. SILVANO

VenerdìS. PIER DAMIANI DOTT.

SabatoS. MARGHERITA

DomenicaS. ROMINA

LunedìS. ETELBERTO RE

MartedìS. COSTANZA

MercoledìS. FAUSTINIANO VESCOVO

GiovedìS. LEANDRO

VenerdìS. ROMANO ABATE

01_cover_SINGLELEI150X500.indd 2 03/05/13 07:39

LEIS F O G L IALO E S CO PR I LA PR AT I C I TÀ D I O R GAN I ZZ AR E I L T U O TE M P O

SINGLE per Scelta e per Amorepe

r

h. 18 estetista

ceno con Giovanni

fine settimana in montagna con Federico

Giornata alle Terme con Pia

CompleannoGiorgio

h.18 shopping con Carla

anniversario papà e mamma

parrucchiere

inizio corso di danza caraibica

palestra

palestra

DIST

RIBU

TORE

PER

L’IT

ALIA

E P

ER L

’EST

ERO:

PRE

SS-D

I DIS

TRIB

UZIO

NE

STAM

PA E

MUL

TIM

EDIA

S.R

.L. -

201

34 M

ILAN

O

LIS

A G

OO

DM

AN

C

ALE

ND

AR

N.

X/2

013

- A

NN

-

€ 5,

90

Elisabetta

01_cover_SINGLELEI150X500.indd 2 12/06/13 14:33

soccorso pubblico di emergenza 113vigili del fuoco 115

carabinieri 112

emergenza sanitaria 118

NUMERI SALVAVITA

2014Gli impegni di...

OTTOBRE

1 2 3 4 5 6 7 8 9

10111213141516171819202122232425262728293031

23 OTTOBRE22 NOVEMBRESCORPIONE

MercoledìS. TERESA VERG.

GiovedìSS. ANGELI CUSTODI

FESTA DEI NONNI

VenerdìS. GERARDO DI BROGNE AB.

SabatoS. FRANCESCO D’ASSISI

G. DEGLI ANIMALI

DomenicaS. PLACIDO MONACO

LunedìS. BRUNO ABATE

MartedìB. V. MARIA DEL ROSARIO

MercoledìS. PELAGIA VERGINE

GiovedìS. DIONIGI

GIORNO DELLA VISTA

VenerdìS. DANIELE

G. DELLA SALUTE MENTALE

SabatoS. BRUNO

Domenica S. SERAFINO DA M.

COLUMBUS DAY

Lunedì S. EDOARDO RE

MartedìS. FORTUNATO

MercoledìS. RUGGERO

GiovedìS. EDVIGE

G. DELL’ALIMENTAZIONE

VenerdìS.MARISA

G. RIFIUTO DELLA MISERIA

SabatoS. LUCA EVANGELISTA

DomenicaS. LAURA

Lunedì S. IRENE

G. DELL’OSTEOPOROSI

MartedìS. ORSOLA E COMPAGNE

MercoledìS. DONATO VESCOVO

GiovedìS. GIOVANNI SACERDOTE

VenerdìS. ANTONIO MARIA VESC.

G.DELLA PSORIASI

SabatoS. CRISPINO MARTIRE

DomenicaS. EVARISTO PAPA

LunedìS. DELIA

MartedìSS. SIMONE E GIUDA TADDEO AP.

MercoledìS. ERMELINDA VERGINE

GiovedìS. GERMANO VESCOVO

VenerdìS. LUCILLA VERGINE

HALLOWEEN

�COMPLEANNIANNIVERSARI

nonni150X500.indd 10 07/06/13 18:17

SCOPRI COM’È COMODO:IMPEGNI, COMPLEANNI VISITE MEDICHE

TUTTO QUELLO CHE VUOIRICORDARESEMPRE SOTTO AI TUOI OCCHI

G. DELL’OSTEOPOROSI

S. ORSOLA E COMPAGNE

QUELLO CHE VUOI

DEI

L ISA GOODMAN CALENDAR N. X/2013 - ANN - € 5 ,9 0

DISTRIBUTORE PER L’ ITAL IA E PER L’ESTERO: 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

DEI

NONNI

UN STRUMENTO

PRATICO

EFFICACE

UTILE

INDISPENSABILE

Giuseppe Olga

recita scuola materna H.16

Vinaio

H.10 partenza

sarta

h.16 tè con Elsa

finale di bocce

giornata con i nipoti

h.10 gatto dal veterinario

preparativi partenza

cena a casa dei nipotini

1_ICOVERnonni150X500.indd 1 12/06/13 13:04

soccorso pubblico di emergenza 113

vigili del fuoco 115

carabinieri 112

emergenza sanitaria 118

NUMERI SALVAVITA

GENNAIO�COMPLEANNIANNIVERSARI

2014

1 2 3 4 5 6 7 8 9

10111213141516171819202122232425262728293031

Gli impegni di...Gli impegni di...

MercoledìMARIA MADRE DI DIO

CAPODANNO

GiovedìS. BASILIO VESC.

VenerdìS. GENOVEFFA VERGINE

SabatoS. FAUSTA

DomenicaS. AMELIA MARTIRE

LunedìEPIFANIA DEL SIGNORE

MartedìS. RAIMONDO SAC.

MercoledìS. MASSIMO

GiovedìS. GIULIANO MARTIRE

VenerdìS. ALDO EREMITA

SabatoS. IGINO PAPA

DomenicaS. TATIANA

LunedìS. ILARIO VESCOVO

BATT. DI GESÙ

MartedìS. FELICE MARTIRE

MercoledìS. MAURO ABATE

GiovedìS. MARCELLO I PAPA

VenerdìS. ANTONIO ABATE

SabatoS. BEATRICE

DomenicaS. MARIO M.

MARTIN LUTHER KING’S DAY

LunedìSS. SEBASTIANO E FABIANO MARTIRI

MartedìS. AGNESE VERGINE

MercoledìS. VINCENZO MARTIRE

GiovedìS. EMERENZIANA VERG.

VenerdìS. FRANCESCO DI SALES

SabatoCONV. DI S. PAOLO

DomenicaSS. TITO E TIMOTEO VESC.

LunedìS. ANGELA MERICI

MEM. DELLA SHOAH

MartedìS. TOMMASO D’AQUINO

MercoledìS. COSTANZO

GiovedìS. MARTINA MARTIRE

VenerdìS. GIOVANNI BOSCO

SACERDOTE

19 GENNAIO22 FEBBRAIO

ACQUARIO

nonni150X500.indd 1

31/05/13 11:52

Gli impegni di...

FESTECOMPLEANNI

ANNIVERSARI

L’adulterio è la medicina indispensabile

di ogni buon matrimonio, come sa ogni moglie accorta

essendo lei stessa in cura da uno

o più guaritori del coito furtivo.Natalia Aspesi, Lui visto da lei, 1978

ACQUARIO “il comunicatore”

Pianeta: UranoElemento: AriaSegno: MaschileColore: Blu e Viola

Transito del Sole: tra il 21 Gennaio

e il 19 Febbraio

Pietra portafortuna: Zaffi ro.

Metallo: Zinco, Argento.

Giorno favorevole: Sabato, giorno di Saturno

GENNAIO 2014

1

2

3

4

5

1 2 3 4 5 6 7 8 910111213141516171819202122232425262728293031

MercoledìMARIA MADRE DI DIO

CAPODANNO

GiovedìS. BASILIO VESC.

VenerdìS. GENOVEFFA VERGINE

SabatoS. FAUSTA

DomenicaS. AMELIA MARTIRE

LunedìEPIFANIA DEL SIGNORE

MartedìS. RAIMONDO SAC.

MercoledìS. MASSIMO

GiovedìS. GIULIANO MARTIRE

VenerdìS. ALDO EREMITA

SabatoS. IGINO PAPA

DomenicaS. TATIANA

LunedìS. ILARIO VESCOVO

BATT. DI GESÙ

MartedìS. FELICE MARTIRE

MercoledìS. MAURO ABATE

GiovedìS. MARCELLO I PAPA

VenerdìS. ANTONIO ABATE

SabatoS. BEATRICE

DomenicaS. MARIO M.

MARTIN LUTHER KING’S DAY

LunedìSS. SEBASTIANO

E FABIANO MARTIRI

MartedìS. AGNESE VERGINE

MercoledìS. VINCENZO MARTIRE

GiovedìS. EMERENZIANA VERGINE

VenerdìS. FRANCESCO DI SALES

SabatoCONV. DI S. PAOLO

DomenicaSS. TITO E TIMOTEO VESC.

LunedìS. ANGELA MERICI

MEM. DELLA SHOAH

MartedìS. TOMMASO D’AQUINO

MercoledìS. COSTANZO

GiovedìS. MARTINA MARTIRE

VenerdìS. GIOVANNI BOSCO

SACERDOTE

SINGLELEI150X500.indd 1

31/05/13 15:21

FAM GLOB_207x285_senza pio.indd 2 04/12/13 16:44

Page 94: Linuxpro 136 Dicembre 2013

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

92 Linux pro 136

L’eco dei LUG

aBrUZZOanxaLUG - Lancianowww.anxalug.orgil Pinguino - TeramoNon disponibileMarsicaLUG - Marsicawww.marsicalug.it OpenLUG - L’aquilaNon disponibilePescara LUGwww.pescaralug.orgPineto LUGwww.pinetolug.orgPollinux LUG - Pollutri Non disponibileSSVLUG - San Salvo, Vasto, Termoliwww.ssvlug.orgSulmonaLUGhttp://sulmonalug.itTeateLUG - ChietiNon disponibileTeLUG - Teramowww.telug.itUser Group Valle rovetohttp://linuxvalley-os4.blogspot.com/

BaSiLiCaTaBasilicata LUG - Potenza e Materawww.baslug.org

CaLaBria3BYLug - Trebisaccewww.3bylug.tkBogomips - Bisignanowww.blug.itCastroLUGhttp://castrolug.altervista.orgCosenza hack Laboratoryhttp://hacklab.cosenzainrete.it/CSLUG - Cosenzahttp://cslug.linux.itCzLug Non disponibilehackLab Catanzarohttp://hacklab.czPiana LUG - Piana di Gioia Tauro Non disponibilereggio Calabria LUG http://rclug.linux.it revolutionary Mind www.revolutionarymind.org SpixLug - Spezzano albaneseNon disponibile

CaMPaniaaFr@Linux LUGwww.afralinux.netsons.orgafralug - afragolawww.afralug.comCasertaLUGwww.casertaglug.orghackaserta 81100www.81100.eu.orghackMeetnaples napoli hackLabwww1.autistici.org/hmniGLUG - napoli e provincia

www.iglug.orgirLUG - irpiniawww.irlug.itLUG-ischia www.lug-ischia.orgnaLUG - napoli www.nalug.netneapolis hacklabwww.officina99.org/hacklab.htmlPadulug - Paduli (Bn)http://linux.paduli.comSCaLUG - Scafati (Sa)http://xoomer.alice.it/scalug/Tuxway.org - Provincia di napoliwww.tuxway.orgVaLug - Vallo Linux User Groupwww.valug.itXaLUG - Salernohttp://xalug.tuxlab.org

eMiLia rOMaGnaaLFLUG - alfonsinewww.alflug.itBorgotaro LUG - Val Tarohttp://btlug.it/ConoscereLinux - Modena www.conoscerelinux.iterLUGhttp://erlug.linux.itFerrara LUG www.ferrara.linux.itFoLUG - Forlìhttp://folug.linux.itimoLUG - imolawww.imolug.orgLUGPiacenzawww.lugpiacenza.orgPanLUG - VignolaNon disponibilePLUG - Parmahttp://parma.linux.itravennaLUGwww.ravennalug.orgreLug - reggio emilia e provinciahttp://relug.linux.itriminiLugwww.riminilug.itS.P.r.i.Te http://sprite.csr.unibo.itUieLinux - Valle del rubiconewww.uielinux.org

FriULi VeneZia GiULiaGOLUG - Goriziawww.golug.itiGLU - Udinehttp://iglu.cc.uniud.itLUG Pordenonewww.pordenone.linux.itLugTrieste http://trieste.linux.itLUG [a] [L] [P] - aquileia www.alproject.org

LaZiOCiLUG - Frosinonewww.cilug.org

CLUG - Cassino http://cassino.linux.it/GioveLUG - Terracina www.giovelug.orgLa Sapienza LUG www.lslug.orgLatina LUGwww.llg.itLUG Privernum Volsca - Priverno (LT)www.pvlug.orgLUG rieti www.lugrieti.netLUGroma www.lugroma.orgLUGroma 3www.lugroma3.orgTorLUG - Università Tor Vergata - roma www.torlug.orgV.i.S.C.O.S.a. - Ciampino www.viscosa.org

LiGUriaGenuense Lug - Genova e d’intornihttp://genova.linux.itLugGe - Genova e provinciawww.lugge.netGinLug - Genova Sampierdarenawww.sennaweb.orgGovonis GnU/LUG - Provincia di Savonawww.govonis.orgSavonaLug - Savonahttp://savona.linux.it/TLug-TSL - Tigullio Ligurehttp://tlug.linux.it/

LOMBarDiaBGLug - Bergamo e provinciawww.bglug.itBGLug Valle Seriana - Valle Serianahttp://bglugvs.web3king.com/GL-Como - Comowww.gl-como.itGLUX - Lecco e provinciawww.lecco.linux.itGULLP - Gruppo Utenti Linux Lonate Pozzolowww.gullp.itispraLUG - isprahttp://ispralug.eu/LiFO - Varesewww.lifolab.orgLiFOS - Cinisello Balsamowww.lifos.orgLinux Var - Varesewww.linuxvar.itLoLug - Lodi e provinciawww.lolug.orgLug Bocconi - Milanowww.lug-bocconi.orgLugBS - Brescia e provinciahttp://lugbs.linux.it/Lug Castegnato - Castegnatowww.kenparker.eu/LugCastegnatoLugCr - Cremona e provinciawww.lugcr.itLug Crema - Cremahttp://filibusta.crema.unimi.it/

L’eco dei LUG

LXP_136_92_93_lug 92 04/12/13 17:12

Page 95: Linuxpro 136 Dicembre 2013

Linux pro 136 93

L’eco dei LUG

LUGDucale - Vigevanowww.lugducale.itLugMan - Mantova e provinciawww.lugman.orgLugOB - Cologne e ovest brescianowww.lugob.orgMoBLUG - Monza e Brianzawww.bubblesfactory.itOpenLabs - Milanowww.openlabs.itPOuL - Milanowww.poul.orgTiLug - Paviahttp://pavia.linux.itViGLug - Vignatewww.viglug.org

MarCheascolinux LUG/FSUG ascolihttp://marche.linux.it/ascoli/CameLUG - Camerinowww.camelug.itCMlugwww.cmlug.orgegloowww.egloo.orgFanoLUGwww.fanolug.orgFermo LUGwww.linuxfm.org/fermolug/GLM - Maceratawww.gruppolinuxmc.it/start/index.phpLUG ancona www.egloo.orgLUG Jesiwww.lugjesi.netLUG Marchehttp://marche.linux.itPDP Free Software User Grouphttp://pdp.linux.itPicenix - Picenohttp://picenix.altervista.orgSenaLug - Senigalliawww.lug.senigallia.biz

MOLiSeCampobasso LUGhttp://cb.linux.it/FrenterLUG - Larinonon disponibileSmaLUG - San Martinowww.smalug.org

PieMOnTeaBC Lug - alba/Bra/Carmagnolahttp://abc.linux.it/alLug - alessandria e provinciawww.allug.itBiLUG - Provincia di Biellawww.bilug.linux.itFaSoLi - alessandria e provinciahttp://softwarelibero.al.it/Gallug - Galliatewww.gallug.itGlugTO - Torino e provinciawww.torino.linux.itivLug - ivrea Linux User Groupwww.ivlug.itSLiP - Pinerolohttp://pinerolo.linux.it/ValSusinux - Val Susa e Val Sangonewww.valsusinux.it

PUGLiaBriLUG - Brindisiwww.brilug.itCapitanLUG - Capitanatawww.capitanlug.it

LaTLUG - Latiano Linux User Groupwww.latlug.orgLUGarganowww.lugargano.itLUGBari - Bari e provinciawww.lugbari.orgMurgiaLug - Santeramo in Colle www.open-pc.eu/index.php/murgialug/SaLUG! - Salentohttp://salug.itTalug - Tarantowww.talug.it

SarDeGnaCeSar LUG non disponibileGnUraghewww.gnuraghe.orgGULCh - Cagliariwww.gulch.crs4.itisolalugnon disponibile PLUGS - Sassariwww.plugs.it

SiCiLiaCefaLug - Cefalùhttp://cefalug.linux.itcLUG - Caltanissettawww.clug.itennaLUGwww.ennalug.orgFreaknet MediaLab - Cataniawww.freaknet.orgLeonforte LUGhttp://leonforte.linux.itLUG Cataniawww.catania.linux.itLUGSr - Siracusawww.siracusa.linux.itMeLUG - Messinanon disponibilenorp LUG - noto, Pachino, rosolininon disponibilePaLUG - Palermohttp://palermo.linux.itrgLUG - ragusa e provinciahttp://ragusa.linux.itVPLUG Linux Planet - Provincia Caltanisetta www.vplug.itSputniX - Palermowww.sputnix.it

TOSCanaaCrOS - Versilia, Lucca, Massa Carrarawww.lug-acros.orgCancelliapertinon disponibileelbalinuxnon disponibileelsaGLUG - Val d’elsawww.elsaglug.orgFLUG - Firenzewww.firenze.linux.itGOLeM - empoli, Valdelsahttp://golem.linux.itGroLUG - Grossetowww.grolug.orgG.U.L.Li - Livornowww.livorno.linux.itGulP! Piombinohttp://gulp.perlmonk.orgGULP Pisa

www.gulp.linux.itGuruatWork - Grosseto e provinciawww.guruatwork.comLucca LUGhttp://luccalug.itL.U.G.a.r - arezzonon disponibilePLUG - Prato e provinciawww.prato.linux.itPtLug - Pistoia e provinciawww.ptlug.orgSLUG - Siena e provinciawww.siena.linux.it

TrenTinO aLTO aDiGealtinumLUG - roveretonondisponibile LinuxTrent - Trentohttp://linuxtrent.it LugBz - Bolzanowww.lugbz.org

UMBriaOrvietoLUGwww.orvietolug.itLUG Perugiawww.perugiagnulug.orgTerniLUG www.ternignulug.org

VaLLe D’aOSTaSLaG - aostawww.slag.it

VeneTO0421ug - Provincia di Venezia www.0421ug.orgBLUG - Bellunohttp://belluno.linux.itFaber Libertatis - Padovahttp://faberlibertatis.orgGrappaLUG - Bassano del Grappahttp://grappalug.homelinux.net/iLC - informatica Libera Cittadellese - FSUGhttp://ilc.pd.itLegnagoLUGnon disponibileLinux Ludus - Villafranca (Vr)www.linuxludus.itLuganegawww.luganega.orgLUGSF - San Fidenzionon disponibileLUG Vicenzawww.vicenza.linux.itLugVr - Veronawww.verona.linux.itMontelLUG - Montebellunawww.montellug.itFSUG Padovawww.fsugpadova.orgroLUG - rovigohttp://rovigo.linux.itTVLUG - Trevisowww.tvlug.itVeLug - Veneziawww.velug.itaViLUG Schiohttp://www.avilug.it/doku.php

naZiOnaLiFSUGitaliawww.fsugitalia.orgGentoo Channel italiawww.gechi.itMajaGLUGwww.majaglug.netSkyLUGhttp://tech.groups.yahoo.com/group/skylug/

L’eco dei LUG

LXP_136_92_93_lug 93 04/12/13 17:12

Page 96: Linuxpro 136 Dicembre 2013

94 LINUX PRO 136

PROdentro il

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

Gui

da

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)Distribuzione

Il 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 dell’utente 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 nell’ambiente. 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 l’uffi cio LibreOffi ce 4.1 e Calligra 2.7. L’ottima procedura d’installazione (una delle migliori in circolazione) vi guida passo passo nella defi nizione delle partizioni e nella scelta dei programmi da installare. Una nota: tra i fi lesystem supportati trovate anche il promettente Btrfs, che pur non essendo quello di default ha subìto netti miglioramenti per prestazioni e stabilità.

Server e cloudVisto 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. Infi ne l’aspetto 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 fi lesystem per FUSE che consente di montare i bucket di Amazon S3 come se fossero un fi lesystem 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 confi gurazione della distro) è stato convertito in Ruby, così da consentire agli sviluppatori di potenziarlo ulteriormente. Diversamente da altre distro (chi ha detto Ubuntu?)

OpenSUSE rispetta la privacy dell’utente e lo aiuta a rendere sicura la macchina con un fi rewall preinstallato e attivo di default. Infi ne, 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

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

Slackware 14.1Il 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.

LXP_136_94_guidaDVD 94 03/12/13 16:55

Page 97: Linuxpro 136 Dicembre 2013

Completa la tua collezione ordinando gli arretratisu www.spreastore.it/linuxpro

oppure utilizzando il modulo qui sotto

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 modifi ca, la correzione e/o la cancellazione dei dati, ovvero l’esercizio di tutti i diritti previsti per Legge. La sottoscrizione del presente modulo deve intendersi quale presa visione, nel colophon della rivista, dell’Informativa completa ex art. 13 d.lgs. 196/03, nonché consenso espresso al trattamento ex art. 23 d.lgs. 196/03 in favore dell’Azienda.

Spedizione tramite posta tradizionale al costo aggiuntivo di € 2,90Spedizione tramite Corriere Espresso al costo aggiuntivo di € 7,00

TOTALE COMPLESSIVO €

SCELGO IL SEGUENTE METODO DI SPEDIZIONE: Indica con una ˝ la forma di spedizione desiderata

SCEGLI L‘ARRETRATO CHE VUOI ORDINARE

INSERISCI I CODICI delle pubblicazioni che desideri ricevere:€

€ Totale Ordine

SE VUOI ORDINARE VIA POSTA O VIA FAX, COMPILA QUESTO COUPONRitaglia 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 infor-mazioni puoi scrivere a [email protected] oppure telefonare allo 02/87158224 tutti i giorni dalle 14.00 alle 18.00

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)

∆ Bonifico intestato a Sprea Editori S.P.A. Abbonamenti sul conto 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 dall’abbonato)

NOME

COGNOME

VIA

N° C.A.P. PROV.

CITTÀ

TEL.

E-MAIL

Se leggi Linux Pro, ti possono piacere anche...

I segreti dello smartphone Android

più acclamato dell’anno

OFFERTASPECIALE

COD. SLP7€ 9,90

COD. SLP8€ 9,90

COD. SAJ4 € 4,90

NUMERO 124 - DICEMBRE 2012

COD. LP124

€ 5,90NUMERO 125 - GENNAIO 2013

COD. LP125

€ 5,90NUMERO 126 - FEBBRAIO 2013

Concetti Le tipologie dei dati in PythonDjango Costruire una Web App in pochi minuti Python Come distribuire i propri programmi

10 pagine di pura programmazione

Linux embedded

Bitcoin, la valuta digitale Unison Realizza un clone di Dropbox senza problemi di privacy

Samsung Camera16 Megapixel con Android e schermo touch da 4,8’’

Inoltre…

Raspberry Pi I primi rudimenti

di programmazione con “Guido il Robot”

Aria, la scheda italiana per creare server, sistemi di allarme, controllare processi e altro ancora

Fai “produrre” al tuo computer la nuova moneta che funziona sul Web senza il controllo di una banca

ACCADEMIA DEL CODICE

Le caratteristiche La filosofia I nuovi desktop I punti chiave

La nuova NUMERO 1 delle distro!

MintExtraForte

Migliore di Ubuntu!

TARI

FFA

R.O

.C. -

PO

STE

ITAL

IAN

E SP

A -

ABB

. PO

ST. -

D.L

. 353

/200

3 (C

ON

V. IN

L. 2

7/02

/200

4 N

. 46)

ART

. 1, C

OM

MA

1, D

CB

MIL

ANO

Diventa protagonista nel mondo Linux

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

∆ SERVER DI POSTA CON KERIO CONNECT ∆ GUIDA AI BREVETTI ∆ MOODLE

SFIDA PER PROGRAMMATORIIl 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)

Linux Pro Mensile N°126 €5,90 CHF 13,60

PRO

LXP126_cover.indd 1 23/01/13 17:26

COD. LP126

€ 5,90

COD. LP127

€ 5,90

NUMERO 128 - APRILE 2013

COD. LP128

€ 5,90NUMERO 129 - MAGGIO 2013

COD. LP129

€ 5,90NUMERO 130 - GIUGNO 2013

COD. LP130

€ 5,90NUMERO 131 - LUGLIO 2013

COD. LP131

€ 5,90

NUMERO 132 - AGOSTO 2013

COD. LP132

€ 5,90NUMERO 133 - SETTEMBRE 2013

COD. LP133

€ 5,90NUMERO 134 - OTTOBRE 2013

COD. LP134

€ 5,90NUMERO 135 - NOVEMBRE 2013

COD. LP135

€ 5,90

l

Data Firma del titolare

NUMERO 127 - MARZO 2013

LXP_136_93_Arretrati_NEW_linux 93 28/11/13 18:13

Page 98: Linuxpro 136 Dicembre 2013

Mensile - 2013 - 5,90 euro - 13,60 CHF

Direttore Responsabile: Luca Sprea - [email protected]

Direttore Editoriale: Stefano Spagnolo

Publisher: Mario Bosisio

Coordinatore redazionale: Massimiliano Zagaglia

Redazione: [email protected] 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 - [email protected] Tel. 339 4546500

Abbonamenti (disponibili solo in versione con DVD)Si sottoscrivono in 2 minuti con 2 click via Web. Trovi l’offerta speciale di questo mese all’indirizzowww.myabb.it/linuxpro oppure scrivi ad [email protected]; 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.

ArretratiSi sottoscrivono online all’indirizzo: www.spreastore.it/linuxproPer informazioni o richieste: [email protected] 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.36www.sprea.it - [email protected]

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

Foreign rights: Gabriella Re - [email protected]

Marketing: Walter Longo [email protected]

Distributore per l’Italia e per l’Estero: Press-Di Distribuzione Stampa e Multimedia S.r.l. 20134 Milano

LINUX PROPubblicazione mensile registrata al Tribunale di Milano il 08.02.2003 con il n. 74 - Tariffa R.O.C. - Poste Italiane Spa - Sped. In Abb. Post. - D.L. 353/2003 (conv. In L. 27/02/2004 n. 46) art. 1, comma 1, S/NAISSN: 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). L’utilizzo da parte di terzi di testi, fotografie e disegni, anche parziale, è vietato. L’Editore si dichiara pienamente disponibile a valutare - e se del caso regolare - le eventuali spettanze di terzi per la pubblicazione di immagini di cui non sia stato eventualmente possibile reperire la fonte. Informativa e Consenso in materia di trattamento dei

dati personali (Codice Privacy d.lgs. 196/03). Nel vigore del D.Lgs 196/03 il Titolare del trattamento dei dati personali, ex art. 28 D.Lgs. 196/03, è Sprea Editori S.p.A. (di seguito anche “Sprea”), con sede 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 all’azienda. La avvisiamo, inoltre, che i Suoi dati potranno essere comunicati e/o trattati (sempre nel rispetto della legge), anche all’estero, da società e/o persone che prestano servizi in favore della Sprea. In ogni momento Lei potrà chiedere la modifica, la correzione e/o la cancellazione dei Suoi dati ovvero esercitare tutti i diritti previsti dagli artt. 7 e ss. del D.Lgs. 196/03 mediante comunicazione scritta alla Sprea e/o direttamente al personale Incaricato preposto al trattamento dei dati. La lettura della presente informativa deve intendersi quale presa visione dell’Informativa ex art. 13 D.Lgs. 196/03 e l’invio dei Suoi dati personali alla Sprea varrà quale consenso espresso al trattamento dei dati personali secondo quanto sopra specificato. L’invio di materiale (testi, fotografie, disegni, etc.) alla Sprea Editori S.p.A. deve intendersi quale espressa autorizzazione alla loro libera utilizzazione da parte di Sprea Editori S.p.A. per qualsiasi fine e a titolo gratuito, e comunque, a titolo di esempio, alla pubblicazione gratuita su qualsiasi supporto cartaceo e non, su qualsiasi pubblicazione (anche non della Sprea Editori S.p.A.), in qualsiasi canale di vendita e Paese del mondo. Il materiale inviato alla redazione non potrà essere restituito.

Foto in ordineCon 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

Scegli le news!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

Desktop fai da teMassima personalizzazione, minimo investimento di risorse: ecco gli strumenti perfetti per creare il desktop fatto su misura per le tue esigenze

E inoltre:

LINUXPRO

In edicola il 20 dicembre H a i u n a r g o m e n t o d a

INTERFACCE GRAFICHESENZA CONFINI

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

NEL PROSSIMO NUMEROIn edicola il 24 gennaio

H a i u n a r g o m e n t o d a p r o p o r c i ? S c r i v i a p r o s s i m a m e n t e @ l i n u x . i t

LXP_136_96_prossimamente 1 04/12/13 18:01

Page 99: Linuxpro 136 Dicembre 2013

Ecco la RIVISTACHE STAVI ASPETTANDO

Anche suiPad, iPhone e iPod News, prove, guide pratiche, hacker zone

min_Android_207x285.indd 1 03/12/13 15:43

Page 100: Linuxpro 136 Dicembre 2013

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

I prodotti FRITZ! – pluripremiati: avm.de/awards_en

[email protected]

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

13/0

23

La tua rete ovunqueFacile, con FRITZ!