Linuxpro 132 Agosto 2013

100
Cerca con Google Recuperate i vostri dati personali dalle grinfie delle società che spiano la vostra vita E anche da Facebook, Twitter, Flickr e molti altri! G o o g l e EXIT Fuga da Inoltre… Firefox OS Le componenti base del sistema Ruby Sintassi perfetta per un codice infallibile! Android Porta il 3D sui tuoi dispositivi Ardour 3 Paladini delle libertà Vediamo come opera la Electronic Frontier Foundation LG Nexus 4 Superaggiornato e con un prezzo alla portata di tutti! Mixare da professionisti su Linux è alla portata di tutti! Trofei digitali Ecco gli Ubuntu accomplishments Diventa protagonista nel mondo Linux A confronto i 5 migliori editor di immagini Controllo parentale fai-da-te PRO Raspberry Pi Imparare a programmare con Scratch ACCADEMIA DEL CODICE 15 pagine di pura programmazione TARIFFA R.O.C. - POSTE ITALIANE SPA - ABB. POST. - D.L. 353/2003 (CONV. IN L. 27/02/2004 N. 46) ART. 1, COMMA 1, DCB MILANO - DISTRIBUTORE: PRESS-DI, MILANO Linux Pro 132- Mensile - €5,90 - CHF 13,60 DEBIAN Storia, miti e leggende della distro più fedele ai dettami dell'Open Source NOVITÀ KDE Le librerie KDE Frameworks 5 promettono meraviglie!

description

linux magazine

Transcript of Linuxpro 132 Agosto 2013

Page 1: Linuxpro 132 Agosto 2013

Voglio fuggire!Cerca con Google

Recuperate i vostri dati personali dalle grinfie delle società che spiano la vostra vita

E anche da Facebook, Twitter, Flickr e molti altri!

GoogleexitFuga da

Inoltre…

Firefox OS Le componenti base del sistemaRuby Sintassi perfetta per un codice infallibile!Android Porta il 3D sui tuoi dispositivi

Ardour 3

Paladini delle libertà Vediamo come opera la Electronic Frontier Foundation

LG Nexus 4 Superaggiornato e con un prezzo alla portata di tutti!

Mixare da professionisti su Linux è alla portata di tutti!

Trofei digitaliEcco gli Ubuntu accomplishments

Diventa protagonista nel mondo Linux

∆ A confronto i 5 migliori editor di immagini ∆ Controllo parentale fai-da-te

Pro Raspberry Pi Imparare a programmare

con Scratch

AccAdemiA del codice

15 pagine di pura programmazione

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

- D

isTr

ibuT

Ore

: Pre

ss-D

i, m

ilan

O

Linu

x Pr

o 13

2- M

ensi

le -

€5,

90 -

CHF

13,

60

DEBIANStoria, miti e leggende della distro più fedele ai dettami dell'Open Source

NovItà KDELe librerie KDE Frameworks 5 promettono meraviglie!

LXP132_cover_A.indd 1 06/08/13 14:42

Page 2: Linuxpro 132 Agosto 2013

MASSIMA FLESSIBILITÀ■ Confi gura separatamente vCore, RAM e spazio Hard Disk a soli 0,01 €/ora IVA escl. per unità!*

■ NOVITÀ: fi no a 8 vCore e 32 GB di RAM

■ Aggiungi in pochi clic fi no a 99 macchine virtuali in un solo contratto

A PROVA DI GUASTI■ Archiviazione e unità di calcolo ridondanti per proteggere il tuo server da eventuali guasti

1and1.it800 977313 (numero verde)

DOMINIO | E-MAIL | WEB HOSTING | SERVER

IVA ESCL.PER OGNI ORA*

0,03€ A PARTIRE DA

IVA ESCL.PER OGNI ORA*

ACCESSO DI ROOT COMPLETO■ Amministrazione di root del tuo server cloud e risorse dedicate

1&1 CLOUD SERVER DINAMICOLA POTENZA GIUSTAAL GIUSTO PREZZO!

®

207X285

■ NOVITÀ: nessun costo di attivazione!

■ NOVITÀ: nessun prezzo di base!

■ NOVITÀ: nessuna durata minima di contratto!

■ Solo per poco tempo: fi no a 30 € di buono!**

■ Accurata tariffazione ad ore

■ Traffi co illimitato senza riduzione della capacità di banda

■ Parallels® Plesk Panel 11 incluso con domini illimitati

CONTROLLO COMPLETO DEI COSTI

* 1&1 Cloud Server Dinamico senza canone fi sso mensile. Prezzo di 1 cent/ora IVA escl. (1,19 cent/ora IVA incl.) per unità. Confi gurazione minima di 3 unità (1 vCore, 1 GB di RAM e 100 GB di Hard Disk) al prezzo totale di 3 cent/ora IVA escl. (3,57 cent/ora IVA incl.). Confi gurazione manuale su hosting.1and1.it/cloud-server-confi g.** Il buono dal valore massimo di 30 € sarà accreditato e applicato solo sull‘importo netto della prima fattura mensile. Offerta limitata nel tempo. Per maggiori informazioni visita il sito 1and1.it.

MAIT1308HN56_1-1_Server_AD_IT_July_207x285+5_RD_0913_28L.indd 1 18.07.13 11:00

Page 3: Linuxpro 132 Agosto 2013

LINUX PRO 132 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

Innovazione.Di tutti. Per tutti. 26 ottobre 2013

Editoriale

ORA TROVI LINUX PRO

ANCHESU ANDROID

Privacy a tutti i costiEh sì, la tecnologia è proprio una bella cosa. Peccato però che ogni tanto ci riserbi anche delle belle

fregature, beh a dir la verità le fregature ce le danno le persone che usano la tecnologia, non la tecnologia stessa, ma lasciamo stare... Ovviamente ci stiamo riferendo ai recenti avvenimenti legati a quanto svelato da Edward Snowden, ex tecnico della CIA, che ci ha fatto gentilmente sapere che esiste un sistema di spionaggio made in USA in grado di controllare le comunicazioni su Internet. Alla fine molte aziende che vivono in Rete (e nella cloud) sembrano essere cadute sotto le grinfie di questo sistema, alcune stanno cercando di correre ai ripari, noi non abbiamo certo nulla da nascondere, ma il punto è che non ci sembra giusto che la tanto pubblicizzata privacy sia stata trasformata in una barzelletta per un presunto bene superiore. Oggi magari i nostri dati finiscono in mani buone, ma che succederà domani? Non lo possiamo sapere. Che fare quindi? La strada giusta è nascondere la testa sotto la sabbia come gli struzzi, cioè smettere di usare il computer o quantomeno limitarci ed evitare le email, i servizi cloud e i social network? La nostra risposta è no, pensiamo che sia sufficiente usare un po’ di buon senso quando ci si trova in Rete. Poi, se proprio vogliamo seguire una strada differente, crediamo che ci siano strumenti alternativi a quelli più “famosi” che dovremmo tutti imparare a utilizzare e impegnarci a diffondere. Nell’articolo di copertina ve ne mostriamo alcuni, ne abbiamo altri in mente di cui abbiamo già parlato e che torneremo a trattare in futuro

e, come sempre, siamo pronti a ricevere i vostri suggerimenti: come fate a difendere la vostra privacy in Internet? Fatecelo sapere. I modi per contattarci li sapete: via mail ([email protected]), nel nostro forum (http://bit.ly/1920wS3) e su IRC (server Freenode, canale #lxp). Se, come detto prima, non vi piace nascondervi e non temete gli spioni perché non avete nulla da celare, ci sono anche i classici Facebook (www.facebook.com/LinuxPro.it) e Twitter (@linux_pro_it). Senza dimenticare che ci potete leggere anche su tutte le piattaforme digitali: Android (http://bit.ly/12ob7lz), iPad (http://bit.ly/15DieMb) e anche, ebbene sì, Windows 8 (boh quale sarà il link? Non lo sappiamo, non usiamo Win8 :) Cercateci nello store, da qualche parte siamo). Insomma, trovarci non è difficile e noi cercheremo di rispondervi il prima possibile. Visto che siamo in vena di “spot pubblicitari”, concludiamo questo editoriale con altre due informazioni: salvo disastri dell’ultimo minuto, a settembre il nostro editore darà vita a una nuova rivista dedicata al mondo Android. Il suo nome sarà Android Journal e anche se non siamo ancora in grado di farvi vedere la copertina del numero 1, dal 12 di settembre circa cercatela nelle edicole, non ve ne pentirete. Il secondo spot, invece, riguarda il prossimo LinuxDay la cui data, come abbiamo già detto anche il mese scorso – ma ci ripetiamo perché è importante - è fissata per il prossimo 26 ottobre. Segnatevelo nel calendario e non perdete questo appuntamento. Non ci rimane che augurarvi buona lettura!

Di tutti. Per tutti.

LXP_132_01_editoriale 1 07/08/13 16:38

Page 4: Linuxpro 132 Agosto 2013

Voglio fuggire!Cerca con Google

GoogleFuga da

2 LINUX PRO 132

Sommario

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

LINUX PRO 132 LINUX PRO

In primo piano

30 Lo stack LAMP

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

Recuperate tutti i vostri dati personali dalle grinfie delle società che vogliono rubare o spiare email, foto e contatti

e riprendete controllo della vostra vita! Vediamo come gestire al meglio la propria privacy quando si interagisce con servizi come Facebook, Twitter, Flickr e molti altri ancora!

08

LXP_132_02-03_sommario 2 06/08/13 15:05

Page 5: Linuxpro 132 Agosto 2013

Questa categoria del test ci ha riservato piacevoli sorprese (nella foto, Arch)

46 LINUX PRO 131 LINUX PRO 131 47

Il fenomeno Raspberry Pi sembra inarrestabile;come un treno in corsa, continua ad avanzare

deciso a conquistarsi un posto nelle pagine dei record. Non è certo una sorpresa: il dispositivo è perfettamente messo a punto per gli obiettivi di Raspberry Pi Foundation, il prezzo è ideale e la versatilità del sistema operativo Linux completa il quadro. Gli utenti, una volta messe le mani sulla loro nuova RPi, si dirigono perlopiù sul sito uffi ciale di Raspberry Pi e seguono

le relative istruzioni; di conseguenza, fi niscono per utilizzare Raspbian “Wheezy”, il sistema operativo consigliato dalla Foundation e creano,

imparano e programmano fi no a portare il suddetto ai suoi limiti massimi. Ciò che molti utenti di RP non sanno

è che per la loro adorata Pi sono disponibili molti altri sistemi operativi. Abbiamo ritenuto quindi opportuno informare gli utenti che non

conoscono le alternative in offerta e di farlo offrendo loro una selezione particolarmente gustosa.

L’installazione dell’immagine di un sistema operativo è piuttosto ben documentata, per esempio

nell’area ‘Guide for beginners’ del sito di Raspberry Pi che trovate all’indirizzo http://goo.gl/53xgp insieme alla semplice procedura di installazione che permette di usare dd in Linux o Win32DiskImager in Windows per trasferire l’immagine sulla scheda SD. La procedura in sé è relativamente semplice; il divertimento comincia quando inserite la scheda SD nella vostra Raspberry Pi. Ognuno dei cinque sistemi che abbiamo testato, Raspbian, Risc OS, Arch, Android 2.3 e Plan 9, ha proprie sfumature e metodi per l’installazione e la creazione di un desktop grafi co base funzionante. Un’interfaccia utente grafi ca non è indispensabile ma viene utilizzata dalla grande maggioranza dei neofi ti di Linux. In questo caso, la defi nizione di ‘installazione’ deve comprendere il raggiungimento di una fase in cui l’utente sia in grado di riconoscere il sistema operativo come farebbe con un desktop Linux standard, cioè trovandosi di fronte un’interfaccia utente grafi ca.

In un mondo in cui è essenziale prendere per mano l’utente di Linux, Raspbian si è trovato tradizionalmente al primo posto; ma anche i sistemi alternativi non mancano di mettere l’utente a suo agio. Prendete Risc OS, per esempio: dopo averlo trasferito sulla scheda SD e avviato, ci si trova presto di fronte a un’interfaccia grafi ca variopinta e accessibile, che fornisce messaggi relativamente dettagliati con informazioni sugli eventuali problemi verifi catisi durante l’avvio iniziale e il setup. Da qui è suffi ciente cliccare sull’icona Confi gure per iniziare a modifi care a piacimento le impostazioni.Arch Linux per RP è diverso. All’avvio, l’utente accede al terminale e sta a lui scaricare, installare e confi gurare il sistema operativo. Una volta imparato a conoscerlo, Arch è tra i migliiori sistemi operativi in circolazione, ma per arrivare al desktop normale occorre apportare qualche modifi ca.La versione di Android per RP sta iniziando a ingranare; all’avvio, vi trovate di fronte la schermata uffi ciale di sblocco di Android e successivamente all’interfaccia che tutti conoscono e (a volte) amano. Ci sono ancora un po’ di bug, il sistema si blocca con una certa frequenza

ed è estremamente lento, quasi al punto di risultare inutilizzabile su una RP da 256 MB; con la versione da 512 MB le cose vanno un po’ meglio. Plan 9 offre un’interfaccia grafi ca effi ciente ma imparare a usarlo è più diffi cile; la documentazione è comunque di buona qualità. Raspbian offre un menu testuale all’avvio. L’utente può confi gurare il sistema, attivare il protocollo SSH e impostare l’avvio automatico della pratica interfaccia grafi ca LXDE. Ai novellini consigliamo Raspbian, seguito da Risc OS e infi ne da Arch, da utilizzare quando avranno acquistato maggiore familiarità con il funzionamento di Linux.

InstallazioneOccorre una laurea per installare il sistema operativo?

Isoftware inclusi nei vari sistemi operativi per Raspberry Pi variano notevolmente; spesso, però,

rappresentano l’attrattiva numero uno dei sistemi stessi.Non aspettatevi nulla di troppo complesso; dopotutto parliamo di un sistema operativo su scheda SD e gestito da un computer delle dimensioni di una carta di credito, con risorse molto inferiori a quelle di un computer fi sso. Al di là dei software da uffi cio e dei programmi di elaborazione grafi ca tipici di qualsiasi distribuzione, siamo rimasti piuttosto soddisfatti dell’offerta dei sistemi operativi per RPi in esame.Al numero uno c’è senz’altro Raspbian, con i software consueti del caso; ma Risc OS la tallona

a breve distanza e tra parentesi, se siete disposti a sborsare 45 euro circa in più per il NutPi Pack, riceverete in cambio un desktop Raspberry Pi completamente funzionante, con software da uffi cio, browser per Internet, funzioni per i messaggi e via dicendo.Arch, come già ricordato, vi conduce al terminale; ma se conoscete i comandi di quest’ultimo potrete ottenere un risultato praticamente identico alla versione desktop. Questo però esula dal discorso relativo ai software inclusi.La sorpresa qui è rappresentata da Android, che offre una dignitosa raccolta di software multimediali ma nessuna

applicazione da uffi cio. Per qualche ragione ci aspettavamo che il progetto RP Android sarebbe stato privo di applicazioni, perciò siamo rimasti piuttosto stupefatti scoprendo qui i soliti sospetti.Plan 9 è risultato piuttosto deludente. Una volta penetrati nell’ambiente desktop, Rio, abbiamo trovato ben pochi strumenti di lavoro effi cienti, in particolare per i neofi ti.

Software inclusiCosa c’è in serbo per gli utenti della Pi più golosi?

Un tempo Raspbian deteneva la palma della facilità di installazione ma i suoi rivali sembrano averla raggiunta

VerdettoRaspbian

Risc OS

Plan 9

Android

Arch

Raspbian offre all’utente un’interfaccia grafica familiare ed è facile da usare.

VerdettoRaspbian

Risc OS

Plan 9

Android

Arch

Se siete disposti a pagare per NutPi Pack, Risc OS non vi deluderà.

Sistemi operativi per Raspberry PiDiamo un’occhiata a una gustosa selezione di distro per la Raspberry Pi

Confronto Test Test Confronto

∆ Raspbian

∆ Risc OS

∆ Plan 9

∆ Android

∆ Arch

LA NOSTRA SELEZIONE

MODALITÀ DEL TEST

La Raspberry Pi è disponibile in due versioni: l’originale modello ‘B’ versione 1, con 256 MB di RAM e il molto più recente modello ‘B’ versione 2, con 512 MB. Per farci un quadro veramente completo, quindi, abbiamo

installato i cinque sistemi operativi su una scheda SD da 4 GB su entrambi i modelli ‘B’. Gli ambiti che abbiamo valutato sono l’installazione, i software inclusi, la riproduzione multimediale (senza

software aggiuntivi), l’estetica e la praticità, la comunità di ciascun sistema e il rispettivo atteggiamento verso il Software Libero. In sostanza, la scelta del sistema da usare dipende dalla natura di ciascun utente di Linux.

Abbiamo inoltre voluto valutare i concorrenti dal punto di vista degli utente che hanno meno familiarità di altri con Linux, in modo da consentire loro di tuffarsi nel progetto senza troppe diffi coltà o delusioni.

“Ciò che molti utenti non sanno è che sono disponibili molti altri sistemi operativi per RP”

è che per la loro adorata Pi sono disponibili molti altri sistemi operativi. Abbiamo ritenuto quindi opportuno informare gli utenti che non

in offerta e di farlo offrendo

L’installazione dell’immagine di L’installazione dell’immagine di Lun sistema operativo è piuttosto ben documentata, per esempio

nell’area ‘Guide for beginners’ del sito di Raspberry Pi che trovate all’indirizzo http://goo.gl/53xgpinsieme alla semplice procedura di installazione che permette di usare dd in Linux o Win32DiskImagerin Windows per trasferire l’immagine sulla scheda SD. La procedura in sé è relativamente semplice; il divertimento comincia quando inserite la scheda SD nella vostra Raspberry Pi. Ognuno dei cinque sistemi che abbiamo testato, Raspbian, Risc OS, Arch, Android 2.3 e Plan 9, ha proprie sfumature e metodi per l’installazione e la creazione di un desktop grafi co base funzionante. Un’interfaccia utente grafi ca non è indispensabile ma viene utilizzata dalla grande maggioranza dei neofi ti di Linux. In questo caso, la defi nizione di ‘installazione’ deve comprendere il raggiungimento di una fase in cui l’utente sia in grado di riconoscere il sistema operativo come farebbe con un desktop Linux standard, cioè trovandosi di fronte un’interfaccia utente grafi ca.

In un mondo in cui è essenziale prendere per mano l’utente di Linux, Raspbian si è trovato tradizionalmente al primo posto; ma anche i sistemi alternativi non mancano di mettere l’utente a suo agio. Prendete Risc OS, per esempio: dopo averlo trasferito sulla scheda SD e avviato, ci si trova presto di fronte a un’interfaccia grafi ca variopinta e accessibile, che fornisce messaggi relativamente dettagliati con informazioni sugli eventuali problemi verifi catisi durante l’avvio iniziale e il setup. Da qui è suffi ciente cliccare sull’icona Confi gure

InstallazioneOccorre una laurea per installare il sistema operativo?

Isoftware inclusi nei vari sistemi operativi per Raspberry Pi variano notevolmente; spesso, però,

rappresentano l’attrattiva numero uno dei sistemi stessi.Non aspettatevi nulla di troppo complesso; dopotutto parliamo di un sistema operativo su scheda SD e gestito da un computer delle dimensioni di una carta di credito, con risorse molto inferiori a quelle di un computer fi sso. Al di là dei software da uffi cio e dei programmi di elaborazione grafi ca tipici di qualsiasi distribuzione, siamo rimasti piuttosto soddisfatti dell’offerta dei sistemi operativi per RPi in esame.Al numero uno c’è senz’altro Raspbian, con i software consueti del caso; ma Risc OS la tallona

a breve distanza e tra parentesi, se siete disposti a sborsare 45 euro circa in più per il NutPi Pack, riceverete in cambio un desktop Raspberry Pi completamente funzionante, con software da uffi cio, browser per Internet, funzioni per i messaggi e via dicendo.Arch, come già ricordato, vi conduce al terminale; ma se conoscete i comandi di quest’ultimo potrete ottenere un risultato praticamente identico alla versione desktop. Questo però esula dal discorso relativo ai software inclusi.La sorpresa qui è rappresentata da Android, che offre una dignitosa raccolta di software multimediali ma nessuna

Software inclusiCosa c’è in serbo per gli utenti della Pi più golosi?

i concorrenti dal punto di vista degli utente che hanno meno familiarità

consentire loro di tuffarsi nel progetto

“Ciò che molti utenti non sanno

altri sistemi operativi per RP”

86 LINUX PRO 131 LINUX PRO 131 87

Android Android

La grande maggioranza degli smartphone Android include una fotocamera integrata, sempre più utilizzabile grazie agli sviluppi

tecnologici. Ci sono molti ambiti di applicazione per la fotocamera e Android fornisce un’ottima API per rendere l’interazione con essa quanto più semplice possibile Se volete semplicemente scattare una foto, la soluzione più semplice

è utilizzare un Intent per lanciare l’app Camera integrata (scoprite come fare nel box relativo); ma, nel caso dobbiate ottenere maggiore controllo, potrete scrivere la vostra activity Camera. In questo tutorial costruirete un’Activity che utilizza semplicemente la fotocamera, che, naturalmente, potrete integrare in un’app che la utilizzi solo quando richiesto.

Prima di cominciare a programmare, dovrete richiedere alcuni nuovi permessi per la fotocamera in AndroidManifest.xml: <manifest .... > <uses-permission android:name= “android.permission.CAMERA” /> <uses-permission android:name=”android.permission. WRITE_EXTERNAL_STORAGE” /> <uses-feature android:name= “android.hardware.camera” />Non avrete bisogno di WRITE_EXTERNAL_STORAGE a meno che non vogliare memorizzare le immagini (ma dato che lo farete in seguito nel tutorial è meglio aggiungere subito questa funzionalità). La dichiarazione uses-feature indica che al momento dell’installazione, il dispositivo deve essere equipaggiato con una fotocamera. Se l’uso della fotocamera è una parte non fondamentale della vostra app, e volete che gli utenti possano eseguirla anche senza, aggiungete android:required=“false” alla riga; scoprirete in seguito altre peculiarità della fotocamera.Proseguite con il setup iniziale dell’app, dove ottenere un’istanza della fotocamera. Il metodo onCreate() in MyCameraActivity conterrà quanto segue: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (!checkCameraExists(this)) { Toast.makeText(this, “Spiacente: non hai una fotocamera!”, Toast.LENGTH_LONG); fi nish(); } camera = getCameraInstance(); }Il manifest dovrebbe sincerarsi che sia presente la fotocamera, ma è comunque una buona pratica controllare. checkCameraExists() è quindi molto semplice: private boolean checkCameraExists(Context c) { if (c.getPackageManager(). hasSystemFeature(PackageManager.FEATURE_

CAMERA)) { return true; } else { return false; } }getCameraInstance() è, invece, leggermentepiù complesso: private Camera getCameraInstance() { Camera c = null; try { c = Camera.open(); } catch (Exception e) { Toast.makeText(this, “Spiacente: non trovo la fotocamera!”, Toast.LENGTH_LONG); Log.e(TAG, “Nessuna fotocamera: eccezione ” + e.getMessage()); e.getStackTrace(); fi nish(); } return c; }Camera.open() accede alla prima fotocamera non frontale del dispositivo. I dispositivi Android possono avere più fotocamera; se volete accedere a una particolare fotocamera, utilizzate Camera.open(int cameraId). Camera.getNumberOfCameras() ritornerà il numero di fotocamere del dispositivo, e Camera.getCameraInfo() ritornerà informazioni su di una specifi ca fotocamera. Per la maggior parte degli scopi, la prima fotocamera non frontale sarà quella desiderata. Nei prossimi paragrafi imparerete a visualizzare l’anteprima dalla fotocamera e la presa di un’immagine. Prima di ciò, tuttavia, la cosa più importante da fare è quello di rilasciare la fotocamera una volta terminato il suo impiego. In caso contrario, nessun altro processo sarà in grado di utilizzare la fotocamera, arrecando notevole disturbo all’utente. Create il metodo onPause come segue:

Impostiamo la fotocamera

È possibile utilizzare le Camera API per scattare una foto senza che l’utente se ne renda conto, tuttavia nella maggior parte dei casi vorrete visualizzare un’anteprima prima dello scatto vero e proprio. Per fare ciò dovrete creare una classe CameraPreview, che estende SurfaceView: public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback { private static fi nal String TAG = “CameraPreview”; private SurfaceHolder sh; private Camera camera; public CameraPreview(Context context, Camera cm) { super(context); camera = cm; sh = getHolder(); sh.addCallback(this); // deprecated but required pre-3.0 sh.setType(SurfaceHolder.SURFACE_TYPE_ PUSH_BUFFERS); }

public void surfaceCreated(SurfaceHolder holder) { try { camera.setPreviewDisplay(holder); camera.startPreview();

} catch (IOException e) { Log.e(TAG, “Error setting up preview: ” + e.getMessage()); e.getStackTrace(); } }

public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { if (sh.getSurface() == null) { // no preview surface! return; }

// Stop preview before making changes. try { camera.stopPreview(); } catch (Exception e) { // Tried to stop non-existent preview }

try { camera.setPreviewDisplay(sh); camera.startPreview(); } catch (Exception e) { Log.e(TAG, “Errore riavvio anteprima: ”

Anteprima

œ

Nel caso vogliate scattare semplicemente una foto, potete usare un Intent come segue: { Intent i = new Intent(MediaStore.ACTION_IMAGE_ CAPTURE); fi leUri = getOutputMediaFileUri( MEDIA_TYPE_IMAGE); i.putExtra(MediaStore.EXTRA_OUTPUT, fi leUri); startActivityForResult(i, CAPTURE_IMAGE_ ACTIVITY_REQ); } protected Uri getOutputMediaFileUri(int type) { // Vedere articolo principale per getOutputMediaFile() return Uri.fromFile(getOutputMediaFile(type)); }Inserite il primo blocco dove vi è più utile; per esempio potreste collegarlo al metodo onClick() del pulsante (come nel codice nel DVD), o a un elemento di menu.

Questo blocco imposta un nuovo Intent – con il compito di catturare le immagini – e collega un URI che specifi ca dove salvare l’immagine risultante. Dal momento che lancerete un Intent per avviare un’Activity, dovrete anche gestirne il risultato: protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQ) { if (resultCode == RESULT_OK) { if (data == null) { // Bug noto! L’immagine dovrebbe essere salvata in fi leUri Toast.makeText(this, “Immagine salvata correttamente”, Toast.LENGTH_LONG).show(); } else { Toast.makeText(this, “Immagine salvata correttamente in: ” + data.getData(), Toast.LENGTH_LONG).show();

} // nel caso si voglia gestire la cancellazione } else if (resultCode == RESULT_CANCELED) { // non fare nulla } else { Toast.makeText(this, “Chiamata a immagine fallita”, Toast.LENGTH_LONG).show(); } } }Nel codice reale ovviamente vorrete fare qualcosa con l’immagine ricevuta. È presente un bug noto in alcuni dispositivi e fi rmware relativo al salvataggio delle immagini: l’URI dell’immagine dovrebbe essere ritornato con l’Intent; alcuni dispositivi, tuttavia, inviano un Intent nullo salvando comunque il fi le nella posizione desiderata. Per aggirare il problema è suffi ciente salvare l’URI passato all’Intent e utilizzarlo nel momendo della ricezione del callback.

Uno scatto veloce!

@Override protected void onPause() { super.onPause(); releaseCamera(); }

private void releaseCamera() { if (camera != null) { camera.release(); camera = null; } }

@Override protected void onResume() { if (camera == null) { camera.getCameraInstance(); } super.onResume(); }

Dopo aver implementato il codice per l’anteprima dell’immagine dovrete complicare un po’ questi metodi ma, per il momento, è meglio attendere e ricordarsi di rilasciare la fotocamera una volta messa in pausa l’app.

Sviluppa il tuo Instagram personale!Non ti piace l’app per la fotocamera del tuo dispositivo? Hai una grande idea per un’app fotografi ca? Scopri le Camera API di Android con Linux Pro

La grande maggioranza degli smartphone Android include una fotocamera integrata, sempre più utilizzabile grazie agli sviluppi

tecnologici. Ci sono molti ambiti di applicazione per la fotocamera e Android fornisce un’ottima API per rendere l’interazione con essa quanto più semplice possibile Se volete semplicemente scattare una foto, la soluzione più semplice

è utilizzare un Intent per lanciare l’app Camera integrata (scoprite come fare nel box relativo); ma, nel caso dobbiate ottenere maggiore controllo, potrete scrivere la vostra activity Camera. In questo tutorial costruirete un’Activity che utilizza semplicemente la fotocamera, che, naturalmente, potrete integrare in un’app che la utilizzi solo quando richiesto.

aggiungere subito questa funzionalità). La dichiarazione indica che al momento dell’installazione,

il dispositivo deve essere equipaggiato con una fotocamera. Se l’uso della fotocamera è una parte non fondamentale della vostra app, e volete che gli utenti possano eseguirla anche senza, aggiungete

alla riga; scoprirete in seguito altre peculiarità della fotocamera.Proseguite con il setup iniziale dell’app, dove ottenere un’istanza della fotocamera. Il metodo onCreate()

conterrà quanto segue: @Override public void onCreate(Bundle

super.onCreate(savedInstanceState); if (!checkCameraExists(this)) { Toast.makeText(this, “Spiacente: non hai una fotocamera!”, Toast.LENGTH_LONG);

camera = getCameraInstance();

Il manifest dovrebbe sincerarsi che sia presente la fotocamera, ma è comunque una buona pratica

è quindi molto semplice: private boolean checkCameraExists(Context c) { if (c.getPackageManager(). if (c.getPackageManager(). hasSystemFeature(PackageManager.FEATURE_

CAMERA)) { return true; } else { return false; }

getCameraInstance() è, invece, leggermentepiù complesso: private Camera getCameraInstance() { Camera c = null; try { c = Camera.open(); } catch (Exception e) { Toast.makeText(this, “Spiacente: non trovo la fotocamera!”, Toast.LENGTH_LONG); Log.e(TAG, “Nessuna fotocamera: eccezione ” + e.getMessage()); e.getStackTrace(); fi nish(); } return c; }Camera.open() accede alla prima fotocamera non frontale del dispositivo. I dispositivi Android possono avere più fotocamera; se volete accedere a una particolare fotocamera, utilizzate Camera.open(int cameraId). Camera.getNumberOfCameras() ritornerà il numero di fotocamere del dispositivo, e Camera.getCameraInfo() ritornerà informazioni su di una specifi ca fotocamera. Per la maggior parte degli scopi, la prima fotocamera non frontale sarà quella desiderata. Nei prossimi paragrafi imparerete a visualizzare l’anteprima dalla fotocamera e la presa di un’immagine. Prima di ciò, tuttavia, la cosa più importante da fare è quello di rilasciare la fotocamera una volta terminato il suo impiego. In caso contrario, nessun altro processo sarà in grado di utilizzare la fotocamera, arrecando notevole disturbo all’utente. Create il metodo onPause come segue:

viluppa il tuo Instagram personale!Non ti piace l’app per la fotocamera del tuo dispositivo? Hai una grande idea per un’app fotografi ca? Scopri le Camera API di Android con Linux Pro

prendere per mano l’utente di Linux, Raspbian si è trovato tradizionalmente al primo posto; ma anche i sistemi alternativi non mancano di mettere l’utente a suo agio. Prendete Risc OS, per esempio: dopo averlo trasferito sulla scheda SD e avviato, ci si trova presto di fronte a un’interfaccia grafi ca variopinta e accessibile, che fornisce messaggi relativamente dettagliati con informazioni sugli eventuali problemi verifi catisi durante l’avvio iniziale e il setup. Da qui è suffi ciente cliccare

Occorre una laurea per installare il sistema operativo?

Questa categoria del test ci ha riservato piacevoli sorprese (nella foto, Arch)

a breve distanza e tra parentesi, se siete disposti a sborsare 45 euro circa

, riceverete in cambio un desktop Raspberry Pi

La grande maggioranza degli smartphone Android include una fotocamera integrata, sempre più utilizzabile grazie agli sviluppi

tecnologici. Ci sono molti ambiti di applicazione per la fotocamera e Android fornisce un’ottima API per rendere l’interazione con essa quanto più semplice possibile Se volete semplicemente scattare una foto, la soluzione più semplice

Prima di cominciare a programmare, dovrete richiedere alcuni nuovi permessi per la fotocamera

AndroidManifest.xml

<uses-permission android:name= “android.permission.CAMERA” /> <uses-permission android:name=”android.permission. WRITE_EXTERNAL_STORAGE” /> <uses-feature android:name= “android.hardware.camera” />Non avrete bisogno di a meno che non vogliare memorizzare le immagini (ma dato che lo farete in seguito nel tutorial è meglio aggiungere subito questa funzionalità). La dichiarazione

indica che al momento dell’installazione, il dispositivo deve essere equipaggiato con una fotocamera. Se l’uso della fotocamera è una parte non fondamentale della vostra app, e volete che gli utenti possano eseguirla anche senza, aggiungete android:required=“false” alla riga; scoprirete in seguito altre peculiarità della fotocamera.Proseguite con il setup iniziale dell’app, dove ottenere un’istanza della fotocamera. Il metodo

MyCameraActivity conterrà quanto segue: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (!checkCameraExists(this)) { Toast.makeText(this, “Spiacente: non hai una fotocamera!”, Toast.LENGTH_LONG); fi nish();

camera = getCameraInstance();

Il manifest dovrebbe sincerarsi che sia presente la fotocamera, ma è comunque una buona pratica

checkCameraExists() è quindi molto semplice: private boolean checkCameraExists(Context c) { if (c.getPackageManager(). if (c.getPackageManager(). hasSystemFeature(PackageManager.FEATURE_

Impostiamo la fotocamera

viluppa il tuo Instagram personale!Non ti piace l’app per la fotocamera del tuo dispositivo? Hai una grande idea per un’app fotografi ca? Scopri le Camera API di Android con Linux Pro

50 distribuzioni50 distribuzioni

6 LINUX PRO 131 LINUX PRO 131 7

Scelta e flessibilità sono i tratti distintivi dell’ecosistema Linux. In Windows e OS X, chi non apprezza specifici aspetti del sistema operativo può

fare ben poco. Non è così nel mondo di Linux, dove grazie alle numerose distribuzioni avete solo l’imbarazzo della scelta. Ogni distribuzione ha al centro il kernel Linux ma vi aggiunge una serie di componenti aggiuntivi specifi ci, in funzione del suo target di utenza. Le varie distribuzioni offrono opzioni di personalizzazione diverse, che vi permettono di mettere mano al sistema prescelto e di adattarlo ai vostri gusti e preferenze, fi no a ottenere il risultato desiderato. Qualsiasi tipo

di utenti siate, state certi che esiste una distribuzione per voi. In questo articolo ci concentreremo anzitutto sul desktop.

Alcune distribuzioni desktop mirano a semplifi carvi quanto più possibile la vita, mentre altre vi offrono maggiore controllo. Utilizzano procedure di installazione diverse, ambienti desktop diversi, diversi sistemi

di gestione dei pacchetti e diversi strumenti di amministrazione. Esamineremo sia distribuzioni convenzionali, utilizzabili per il lavoro di tutti

i giorni, sia distribuzioni progettate per conquistare gli utenti che provengono da altri sistemi operativi, come Windows e Mac OS X. Ci occuperemo, inoltre, di distribuzioni in grado di trasformare un ferrovecchio in un computer snello e scattante e di altre che offrono all’utente il pieno controllo sul suo ambiente di lavoro.

Nelle pagine che seguono metteremo al la prova ben cinquanta tra le migliori distribuzioni, testando le loro funzioni specifi che e valutandone i punti di forza e i punti deboli, per aiutarvi a trovare quella su misura per voi!

“Metteremo alla prova ben cinquanta tra le migliori distribuzioni”

DISTRIBUZIONIPROVATE

Qual è la distribuzione

ideale per voi? Ecco cinquanta

delle migliori, provate

e valutate

aLinux ............................13Antergos ........................15 antiX ..............................13Arch ...............................15Bodhi Linux ....................13CentOS ...........................15Chakra ...........................09Crunchbang ...................13Crux ...............................15Debian ...........................15

DSL ................................13Fedora ...........................07Foresight Linux ..............15Frugalware ....................15Gentoo ...........................15Kanotix ..........................10Knoppix .........................09Korora ...........................10Linux Mint ......................08LinuxLite ........................14

Mageia ...........................07Manjaro ..........................10Netrunner ......................11Open Xange ...................10OpenSUSE ......................07OS4 ................................14Parsix .............................14PCLinuxOS .....................08Pear Linux ......................14Porteus ..........................12

Puppy ............................12PureOS ..........................07Qubes OS .......................10Rosa ...............................09Sabayon Linux ...............08Salix OS..........................09Semplice Linux ...............12 Slackel ...........................07Slackware ......................15Slax ................................12

SliTaz .............................11SolusOS ..........................14Sparky Linux ..................12Tiny Core Linux ..............13Ubuntu ...........................07Ultimate Edition .............14WattOS ..........................10Zenwalk .........................11ZevenOS ........................11Zorin ..............................14

Indice

6 LINUX PRO 131

Distribuzioni per tutti i giorniProgettate per sostituire il vostro attuale sistema operativo

miglioramento). I novellini rimarranno spiazzati di fronte all’arido desktop la cui navigazione richiede l’apprendimento di capacità specifi che. L’assenza di un sistema di gestione dei pacchetti e di codec multimediali, così come il nuovo e poco intuitivo programma di installazione, non aiutano di certo.Giudizio Un’ottima distribuzione per l’utente avanzato di Linux in crisi di mezza età.

è di facile navigazione e molte schermate presentano un pulsante Avanzato che consente agli utenti più esperti di accedere a opzioni aggiuntive. La caratteristica più peculiare della distribuzione è il Mageia Control Center, dal quale potete alterare quasi tutti gli aspetti del sistema.Giudizio Un fork che poggia sulle solide fondamenta della sua comunità; un’ottima distribuzione per l’uso quotidiano.

UbuntuSe non è la prima distribuzione progettata per gli utenti di Linux meno esperti, è senz’altro la più conosciuta. Questa distribuzione offre numerose funzioni innovative, tra cui l’amato-odiato desktop Unity. Vi è inoltre il sistema di cloud-sharing e sincronia fi le Ubuntu One, indipendente dal sistema operativo e dal dispositivo utilizzato, che offre 5 GB di spazio di archiviazione gratuito. Per l’aggiunta di ulteriori software c’è Ubuntu Software Center.

La procedura di installazione di Ubuntu è tra le più facili. La distribuzione base non comprende codec proprietari, che potete però includere durante l’installazione semplicemente selezionando una casella. La distribuzione viene pubblicata due volte all’anno con periodiche release Long Term Support (LTS) supportate per cinque anni.Giudizio Con la crescente praticità di Unity, Ubuntu continuerà a sfi dare i desktop proprietari.

OpenSUSEUn’altra vecchia gloria, nonché una delle più importanti distribuzioni che utilizzano (contribuendovi) il desktop KDE, pur non preferendolo in forma uffi ciale. La distribuzione è infatti omogenea su entrambi i desktop, oltre che visivamente elegante.Il suo strumento gestionale “tutto compreso”, YaST (Yet another Setup Tool) può occuparsi sia dell’installazione dei software sia della confi gurazione e dell’amministrazione del sistema.

Il controllo centralizzato di tutte queste impostazioni è senz’altro comodo ma forse anche un po’ cervellotico, soprattutto per i neofi ti di Linux. Inoltre, il programma di installazione è meno intuitivo di quello di Ubuntu. Rompendo una tradizione consolidata, la distribuzione esce con nuove release ogni otto mesi.Giudizio Benché progettato per gli utenti desktop, è meno intuitivo di Ubuntu o Mint; è però ideale come elegante soluzione aziendale.

FedoraTradizionalmente presentato come alternativa a Ubuntu, nelle sue release più recenti la distribuzione supportata da Red Hat ha posto l’enfasi più sulle funzioni server che sui miglioramenti dell’ambiente desktop. Per questo Fedora è più adatto all’utente avanzato. Dopotutto, costituisce un terreno di prova per funzioni destinate a trovare posto nelle offerte di Red Hat Enterprise.La facilità d’uso di Fedora, inoltre, è diminuita dopo l’introduzione del desktop GNOME 3 (in via di lento

MageiaMandrake Linux è stata la prima distribuzione progettata per l’uso quotidiano. Ha attraversato numerose incarnazioni, l’ultima delle quali ha costretto i membri della sua consolidata comunità a dare vita a un fork. La distribuzione basata su RPM si chiama ora Mageia ed è sostenuta da una robusta comunità. Offre entrambi i desktop KDE e GNOME e nei tre repository del progetto troverete tutti i software che vi servono. Il programma di installazione

9Voto

SlackelQuesta distribuzione utilizza software d’avanguardia tratti dalla linea Current di Slackware, presentandoli in un pratico pacchetto desktop realizzato prendendo in prestito alcuni dei più apprezzati strumenti della distribuzione Salix OS. Le immagini KDE di Slackel sono disponibili in versioni Live installabili o di sola installazione.

Tra gli strumenti tratti da Salix OS fi gurano il programma per l’installazione dei codec, il sistema di gestione dei pacchetti Gslapt e il programma di installazione da LiveCD.Giudizio Una release ad aggiornamento continuo, che offre le ultime novità di Slackware utilizzando strumenti di Salix OS.

PureOS È una distribuzione disponibile in due versioni, basate rispettivamente sul desktop GNOME e sul più leggero Openbox. PureOS si basa sul ramo Testing di Debian e offre un supporto multilingue. PureOS è disponibile solo sotto forma di immagini utilizzabili per la creazione di dischi Live USB. Si propone come una distribuzione

funzionale, che potete personalizzare progressivamente con l’aggiunta di moduli mediante gli script inclusi. Comprende inoltre lo script smxi che permette di ritoccare il sistema e di installare driver proprietari. Giudizio Una distribuzione scattante e pronta per l’uso, ideale per chi ama sporcarsi le mani.

7Voto

6Voto

7Voto

6Voto

8Voto

scattare una foto, la soluzione più semplice quando richiesto.

WRITE_EXTERNAL_STORAGEa meno che non vogliare memorizzare le immagini (ma dato che lo farete in seguito nel tutorial è meglio aggiungere subito questa funzionalità). La dichiarazione

CAMERA)) { return true; } else { return false; } }getCameraInstance()più complesso: private Camera getCameraInstance() { Camera c = null; try { c = Camera.open(); } catch (Exception e) { Toast.makeText(this, “Spiacente:

Impostiamo la fotocamera

scattare una foto, la soluzione più semplice

Prima di cominciare a programmare, dovrete richiedere alcuni nuovi permessi per la fotocamera

AndroidManifest.xml

<uses-permission android:name= “android.permission.CAMERA” /> <uses-permission android:name=”android.permission. WRITE_EXTERNAL_STORAGE” /> <uses-feature android:name= “android.hardware.camera” />Non avrete bisogno di WRITE_EXTERNAL_STORAGEa meno che non vogliare memorizzare le immagini (ma dato che lo farete in seguito nel tutorial è meglio aggiungere subito questa funzionalità). La dichiarazione

Impostiamo la fotocameraImpostiamo la fotocameraImpostiamo la fotocamera

Prima di cominciare a programmare, dovrete richiedere alcuni nuovi permessi per la fotocamera

AndroidManifest.xml:

<uses-permission android:name= “android.permission.CAMERA” /> <uses-permission android:name=”android.permission. WRITE_EXTERNAL_STORAGE” />

CAMERA)) { return true; } else { return false; } }getCameraInstance()più complesso: private Camera getCameraInstance() { Camera c = null;

<uses-feature android:name= “android.hardware.camera” />

Prima di cominciare a programmare, dovrete richiedere alcuni nuovi permessi per la fotocamera

<uses-permission android:name=

<uses-permission android:name=”android.permission. WRITE_EXTERNAL_STORAGE” />

Prima di cominciare a programmare, dovrete richiedere alcuni nuovi permessi per la fotocamera

<uses-permission android:name= “android.permission.CAMERA” /> <uses-permission android:name=”android.permission. WRITE_EXTERNAL_STORAGE” /> <uses-feature android:name=

Ognuno dei cinque

Raspbian, Risc OS, Arch, Android 2.3

e la creazione di un desktop grafi co

utente grafi ca non è indispensabile

installazione’ deve comprendere il raggiungimento di una fase in cui l’utente sia in grado di riconoscere il sistema operativo come farebbe

sull’icona Confi gure per iniziare a modifi care a piacimento le impostazioni.Arch Linux per RP è diverso. All’avvio, l’utente accede al terminale e sta

conoscono e (a volte) amano. Ci sono ancora un po’ di bug, il sistema si blocca con una certa frequenza

per iniziare a modifi care a piacimento le impostazioni.Arch Linux per RP è diverso. All’avvio, l’utente accede al terminale e sta a lui scaricare, installare e confi gurare il sistema operativo. Una volta imparato a conoscerlo, Arch è tra i migliiori

ma per arrivare al desktop normale occorre apportare qualche modifi ca.

sta iniziando a ingranare; all’avvio,

successivamente all’interfaccia che tutti conoscono e (a volte) amano. Ci sono

si blocca con una certa frequenza

Arch Linux per RP è diverso. All’avvio, l’utente accede al terminale e sta a lui scaricare, installare e confi gurare il sistema operativo. Una volta imparato a lui scaricare, installare e confi gurare il sistema operativo. Una volta imparato a lui scaricare, installare e confi gurare

vi trovate di fronte la schermata uffi ciale di sblocco di Android e successivamente all’interfaccia che tutti

sta iniziando a ingranare; all’avvio,

successivamente all’interfaccia che tutti uffi ciale di sblocco di Android e successivamente all’interfaccia che tutti

a lui scaricare, installare e confi gurare il sistema operativo. Una volta imparato a conoscerlo, Arch è tra i migliiori sistemi operativi in circolazione, ma per arrivare al desktop normale occorre apportare qualche modifi ca.La versione di Android per RP sta iniziando a ingranare; all’avvio, vi trovate di fronte la schermata uffi ciale di sblocco di Android e successivamente all’interfaccia che tutti

ma per arrivare al desktop normale occorre apportare qualche modifi ca.

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…

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

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

Linu

x Pr

o 13

1- M

ensi

le -

€5,

90 -

CHF

13,

60

LAB TEST

Sommario

Tutorial

56 Ardour 3Lavori audio multitraccia da professionisti

60 Controllo parentaleUn semplice script per sorvegliare i vostri figli quando non ci siete

64 BashRealizzate script Bash facili e veloci per automatizzare le operazioni

68 Raspberry PiProgrammare in modo semplice con la Pi usando Scratch e Python

72 NASUsare al meglio i dischi di rete

Accademia

78 Concetti di baseAltre indicazioni alla scoperta del linguaggio di programmazione Python

80 RubyModuli e mixin, blocchi e yield, e come impacchettare e condividere il codice

86 Firefox OSIl nuovo sistema operativo firmato da Mozilla si programma in HTML

88 AndroidCreate grafica 3D cominciando

dal classico cubo rotante con OpenGL

94 L’eco dei LUGLa mappa dei LUG italiani

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

PROdentro il

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∆ OCRFeeder 0.7.1∆ PushOver 0.0.5∆ QMMP 0.7.1

04 NewsdeskLe novità del mondo Open Source

06 Ubuntu AccomplishmentEcco i trofei del mondo di Ubuntu

Approfondimenti 08 Fuga da Google Non fatevi rubare i vostri dati personali

16 Debian 7.1 Il sistema operativo definitivo?

22 Cos’è EFFI guardiani delle libertà digitali

26 KDEKDE adotta nuove tecnologie

30 Trucchi per sysadminGestire i database dei sistemi LAMP

Android

36 NewsTutte le novità sul sistema del robottino

38 LG Nexus 4I segreti dello smartphone di Google

39 PebbleL’orologio “intelligente”

Recensioni

41 I test del meseDS213j; NOOBS; Mint 15; Mageia 3

46 ConfrontoCinque programmi per disegnare

52 Da non perdere

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

IL DVD IN BREVEIL DVD IN BREVE

IL PROSSIMO NUMERO ESCE ILNUMERO ESCE IL

25 SETTEMBRE

LXP_132_02-03_sommario 3 06/08/13 15:05

Page 6: Linuxpro 132 Agosto 2013

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

Appuntamenti

La Comunità di LibreOffice si dà appuntamento a Milano

La LibreOffi ce Conference, l’evento annuale che ha come soggetto principale il noto pacchetto per l’uffi cio,

quest’anno si terrà a Milano, dal 25 al 27 settembre, sotto l’egida di The Document Foundation (www.documentfoundation.org), l’organizzazione no profi t che si occupa di tutti gli aspetti del suo sviluppo. Dopo il Centro Congressi del Ministero Federale per l’Economia e la Tecnologia di Berlino, che lo scorso anno è stato il teatro dell’evento, la LibreOffi ce Conference 2013 si svolgerà principalmente presso i locali del Dipartimento di Scienze dell’Informazione dell’Università Statale. Tuttavia alcuni appuntamenti importanti, come la cerimonia di apertura, avranno luogo anche in altre prestigiose cornici, come la Ca’ Granda, lo storico Ospedale Maggiore.

Creare l’evento Come sempre, durante la LibreOffice Conference verranno trattati svariati argomenti che riguardano sia gli aspetti più strettamente tecnici del pacchetto per l’ufficio, sia la politica di diffusione del pacchetto stesso. Per esempio si parlerà di interoperabilità e degli attuali progetti di sviluppo, con una particolare attenzione per le API e le Estensioni. L’intero programma è stato realizzato in maniera cooperativa, coinvolgendo sviluppatori e utenti di LibreOffice, i quali hanno avuto tempo fino al 4 agosto scorso per sottoporre al comitato organizzatore i propri contributi su una serie di tematiche prestabilite. Inoltre è stata data a tutti la possibilità di progettare e realizzare conferenze e workshop nell’ambito della manifestazione.

Passare a LibreOffice Uno dei momenti cardine di questa LibreOffice Conference si terrà il 27 settembre presso la Sala Alessi di Palazzo Marino, sede del Comune di Milano. Si tratta infatti di un seminario in italiano, rivolto principalmente alle aziende e alla pubblica amministrazione,

dal titolo Migrare a LibreOffice: si può fare, si deve fare”. Organizzato dalla Comunità italiana del Software Libero, questo evento avrà vari obiettivi. Per prima cosa verrà presentato il Protocollo di Migrazione creato dalla Document Foundation e pensato per assistere le aziende e le pubbliche amministrazioni durante il passaggio a LibreOffice. Questo protocollo altro non è che il risultato della condivisione delle esperienze di maggiore successo di questi anni proprio riguardo al passaggio al pacchetto per l’ufficio di The Document Foundation in vari ambiti. Inoltre, per l’occasione, verranno presentati due importanti progetti di migrazione che vedono protagoniste le pubbliche amministrazioni della Regione Umbria e della Provincia di Bolzano. In entrambi i progetti sono coinvolte più strutture e diverse migliaia di utenti. Ovviamente lo scopo principale di questi progetti è abbattere i costi della stessa amministrazione, come è accaduto nella Provincia di Perugia che, con la migrazione dei primi 1.000 utenti, è riuscita a ottenere un risparmio pari a circa 200.000 euro.

The Document Foundation è l’organizzazione no profi t che si occupa dello sviluppo di LibreOffi ce

“La LibreOffice Conference si terrà a Milano nel Dipartimento di Scienze dell’Informazione dell’Università Statale”

4 LINUX PRO 132

LXP_132_04-05_news_Ultime.indd 4 07/08/13 16:32

Page 7: Linuxpro 132 Agosto 2013

Newsdesk

Sistemi mobile

20.000 per LinuxS

amsung, leader in molti settori tecnologici, è Membro di Platino di The Linux Foundation.

Questo importantissimo risultato è stato ottenuto grazie alla politica degli ultimi anni che ha visto la notissima azienda coreana diventare il primo produttore al mondo di dispositivi mobili basati su Android. Inoltre Samsung ha sempre puntato molto sull’Open Source in generale, tra cui la creazione del nuovo filesystem F2FS, dedicato proprio ai dispositivi mobili, e su Linux in particolare, tanto da favorirne lo sviluppo del kernel. Ed è proprio sul kernel Linux che Samsung sta impegnando molte risorse. D’altra parte l’azienda coreana non ha mai nascosto

la propria volontà di migliorarlo grazie all’introduzione di patch e altri accorgimenti che serviranno a rendere più stabili sistemi operativi mobili come Android, Firefox OS, Ubuntu Touch e Tizen, su cui sta lavorando in stretta collaborazione con un colosso come Intel. Per raggiungere in modo più efficiente e veloce gli obiettivi prefissi, Samsung avrebbe intenzione di assumere un vero e proprio esercito di sviluppatori: circa ventimila! Questa incredibile forza lavoro verrebbe principalmente dedicata allo sviluppo del kernel Linux. Tuttavia verrebbero inclusi nell’operazione anche altri progetti, tra cui Linaro, il team che si occupa dello sviluppo di sistemi ARM, principalmente basati su Ubuntu.

Inoltre, i ventimila di Samsung verrebbero impegnati nello sviluppo di numerosi progetti Open

Source come il server grafico Wayland, GStreamer,

FFmpeg, Cairo, UBoot, Xen, Hadoop, Lighttpd e Cassandra.

In pratica, con questa mossa, Samsung diventerebbe davvero il punto di riferimento assoluto di tutto ciò che riguarda sia Linux come sistema operativo, sia di una buona fetta dell’universo che gli orbita attorno. Per ora non ci resta che attendere che l’operazione vada in porto e dia i primi frutti.

LA TUA PALESTRALA TUA PALESTRALA TUA PALESTRALA TUA PALESTRALA TUA PALESTRALA TUA PALESTRAPER LA MENTEPER LA MENTEPER LA MENTEPER LA MENTEPER LA MENTE

In entrambe le serie di numeri piazzare una e una sola volta ciascuno dei 4 segni evidenziati (+, -, x, :) con lo scopo di ottenere il totale indicato. Le operazioni si

eseguono rigorosamente nell’ordine.

4 SEGNI

12 8 2 7 3 = 14

12 5 2 7 3 = 5

+ - x :

+ - x :

Soluzione: 12-8+2x7:3=14; 12-5x2:7+3=5

OGNI MARTEDÌ IN EDICOLA

Linux

Leap MotionL

eap Motion è una scatoletta che, messa davanti allo schermo del computer, riesce a rilevare i movimenti delle

nostre mani e a trasformarli in comandi. Tutto ciò grazie a una serie di sensori e telecamere a infrarossi. Le potenzialità sono subito evidenti, perché di fatto possiamo trasformare in schermi interattivi anche quelli che non sono sensibili al tocco. Peraltro questo strumento, già supportato dal Kernel Linux, può essere completamente personalizzato grazie a un’applicazione dedicata, che consente di confi gurare, per esempio, la reazione del dispositivo a nostri gesti specifi ci. Attualmente Leap Motion è ancora in fase di sviluppo, tuttavia è stato già possibile metterlo alla prova, con risultati discordanti. Infatti si è dimostrato ottimo con applicazioni per schermi sensibili al tocco, ma meno all’altezza con programmi più diffusi come il noto Google Earth.

LXP_132_04-05_news_Ultime 5 05/08/13 16:50

Page 8: Linuxpro 132 Agosto 2013

FAQ Ubuntu Accomplishments

6 Linux pro 132

Ubuntu AccomplishmentsLa redazione di Linux Pro e Jono Bacon vi accompagnano nel mondo dei trofei delle comunità digitali accessibile mediante Ubuntu Accomplishments

Alcune domande su...

» Ok, Bacon: che cos’è Ubuntu Accomplishments?

ubuntu Accomplishments è un sistema di gamification progettato per facilitare l’esame delle diverse opportunità accessibili al computer dell’utente e nell’ambito della comunità. L’idea è di permettere all’utente di esaminare i vari obiettivi che è possibile conseguire e di gratificarlo facendogli ottenere automaticamente un trofeo quando raggiunge un obiettivo; i trofei conquistati possono quindi essere visualizzati, ovviamente.

» ‘Gamification’? Di che si tratta?La gamification è la scienza della

creazione di giochi basati su diversi scenari

comuni della vita di tutti i giorni. La teoria è che alla gente piace giocare, perciò dando a una qualunque attività l’aspetto e l’atmosfera di un gioco è possibile indurre la gente a parteciparvi. Alcuni gruppi tentano di creare sistemi di gamification anche per le attività più insignificanti, riuscendo a renderle più interessanti. A dire il vero, ubuntu Accomplishments non è proprio un vero sistema di gamification, in quanto l’enfasi non è posta sulla competizione basata su chi ottiene più trofei; l’idea di eseguire attività o compiti per ottenere trofei, però, è comune nei sistemi di gamification.

» Che tipo di trofei si possono ottenere con Ubuntu

Accomplishments?i trofei si dividono in due aree. La prima è quella della comunità. Ci sono varie opportunità disponibili, per esempio correggere il vostro primo bug, partecipare a un ubuntu Developer Summit, entrare a far parte del Consiglio della Comunità, diventare membri di ubuntu e altro ancora. Questi trofei riguardano vari ambiti della

comunità di ubuntu, come lo sviluppo, il collaudo, la documentazione, la governance, Ask ubuntu e altri. Gli altri tipi di trofei riguardano le applicazioni installate sul vostro sistema. per esempio, ci sono trofei per alcuni dei giochi distribuiti con ubuntu. i trofei legati alle applicazioni sono una novità di ubuntu Accomplishments e perciò sono meno numerosi ma ne vengono creati continuamente di nuovi.

» E come fa il mio computer a sapere che ho ottenuto questi trofei?

A questa domanda si possono dare una risposta semplice e una complessa.La risposta semplice è che per i trofei della comunità dovete inserire una serie

di credenziali necessarie per rilevare se avete svolto un determinato compito (per esempio, il vostro indirizzo email su Launchpad o l’urL del vostro profilo Ask ubuntu); il sistema rileverà quindi automaticamente se i compiti in questione sono stati svolti e vi assegnerà un trofeo.per le applicazioni presenti sul vostro computer, i trofei vengono rilevati in due modi. Anzitutto, vi è un controllo periodico dei compiti che verifica se sono stati eseguiti. in alternativa, il trofeo può essere assegnato direttamente dall’applicazione stessa.

» … e la risposta complessa, per i nerd?

il sistema ubuntu Accomplishments comprende un daemon di back-end che carica una serie di compiti predefiniti. per esempio, il set ubuntu-community-accomplishments comprende tutti i compiti legati alla comunità. ognuno comprende due file essenziali:1) le informazioni sul compito in sé (la documentazione che vedete nel visualizzatore);

2) uno script che viene eseguito per controllare se il compito è stato svolto o meno. Quando avviate il visualizzatore di ubuntu Accomplishments, questo si connette con il daemon e controlla anzitutto se è necessario fornire credenziali per il controllo dei compiti svolti. una volta fornite le credenziali, gli script dei compiti vengono avviati uno dopo l’altro per il controllo relativo agli specifici compiti. Se avete ultimato uno dei compiti, viene generato un file trofeo che viene salvato sul vostro sistema.

» Un attimo: non si può fingere di aver ultimato un compito

falsificando il file del trofeo?Ah, è qui che la cosa diventa interessante. Quando il daemon rileva che avete ultimato un compito, il file del trofeo viene generato e quindi inserito in Ubuntu One, il servizio di cloud personale di ubuntu, dove viene automaticamente sincronizzato con uno speciale server di convalida. il server verifica quindi in modo indipendente che il trofeo sia stato effettivamente conseguito; se il trofeo supera il controllo, viene convalidato con una chiave GpG e sincronizzato nuovamente con il vostro computer.il visualizzatore presenta solo i trofei che possono essere correttamente decodificati con la chiave GpG. Se un trofeo non viene decodificato correttamente, viene reso invisibile; questo in pratica impedisce la falsificazione dei compiti.purtroppo non è possibile verificare i compiti relativi alle applicazioni installate sul computer; ma falsificarli vorrebbe dire ingannare se stessi.

» Quindi, bisogna pagare per un account Ubuntu One

per utilizzare il sistema?no. L’uso di ubuntu one è interamente gratuito fino a 5 GB di spazio su disco e i trofei in background sono file minuscoli che occupano una frazione infinitamente piccola di questo spazio. un vantaggio in più offerto dall’uso di ubuntu one è che tutti i vostri trofei sono sempre sincronizzati con tutti i vostri dispositivi che hanno installato ubuntu.

“C’è una lente che permette di visualizzare i trofei nella Dash di Ubuntu”

LXP_132_06_07_FAQ 6 05/08/13 16:50

Page 9: Linuxpro 132 Agosto 2013

Ubuntu Accomplishments FAQ

Linux pro 132 7

nella Dash di ubuntu. La lente permette di accedere rapidamente a tutto senza nemmeno dover aprire un’applicazione. infi ne, è in fase di lavorazione un’interfaccia Web per la visualizzazione dei trofei all’indirizzo http://trophies.ubuntu.com, dove sarà possibile visualizzare e condividere i propri trofei con altri e sui social network.

» Il sistema funziona solo su Ubuntu?È stato progettato in funzione

di ubuntu ma nessun aspetto della sua tecnologia è specifi camente legato a ubuntu. il sistema è scritto in python e pyGTK. L’unico elemento specifi camente legato a ubuntu è ubuntu one, che può essere utilizzato anche con altre distribuzioni (perfi no su Windows e Mac).il sistema in sé, pur essendo uffi cialmente disponibile solo per ubuntu, potrà essere adattato ad altre distribuzioni se susciterà interesse.

» Questo sembra interessante… Come si comincia?

ubuntu Accomplishments non ha ancora una release fi nale ma sono disponibili alcune versioni precedenti per chi avesse voglia di lavorarci. Funzionano con tutte le versioni di ubuntu a partire dalla 12.04.ubuntu Accomplishments è facile da installare: è suffi ciente installare un ppA. per farlo funzionare basta copiare e incollare i seguenti comandi: sudo add-apt-repository ppa:ubuntuaccomplishments/releases

» Torniamo agli script per il controllo dei trofei: praticamente,

tutti questi script sono continuamente in funzione?Fortunatamente, il sistema funziona in modo più intelligente. i compiti dispongono di un’intelligente funzione condizionale che vi permette di stabilire che un dato compito va ultimato prima che sia possibile completarne un altro. per esempio, per diventare membro di ubuntu occorre avere un account Launchpad, perciò prima del controllo relativo al primo compito viene verifi cato che sia stato sbloccato il compito ‘registrato su Launchpad’. il sistema avvia solo gli script relativi ai compiti attualmente disponibili, non quelli relativi ai compiti bloccati. Solo quando questi ultimi vengono sbloccati, cioè quando le loro condizioni sono state soddisfatte, questi compiti vengono avviati. inoltre, gli script dei compiti vengono avviati ogni 15 minuti, perciò il numero degli script avviati periodicamente è relativamente ridotto.

» Mi dici come si fa per visualizzare i trofei sul computer?

È possibile visualizzarli in diversi modi. Anzitutto c’è il visualizzatore uffi ciale ubuntu Accomplishments distribuito unitamente al sistema. Questo fornisce un elenco di tutte le opportunità disponibili (i compiti non ancora ultimati) e un elenco dei trofei già conseguiti. C’è poi una lente dei trofei che permette di visualizzare le opportunità e i trofei direttamente

sudo apt-get update sudo apt-get install accomplishments- daemon accomplishmentsviewer ubuntu-community-accomplishments ubuntu-desktop-accomplishmentsuna volta installati i pacchetti, provate a cercare ‘ubuntu Accomplishments’ nella Dash e caricate il client. Se non disponete di un account registrato ubuntu one, potete ottenerlo tramite l’applicazione; quindi vi sarà chiesto di accettare la condivisione dei vostri trofei con ubuntu one. infi ne, vi saranno chiesti i vostri dettagli di autenticazione per il controllo del completamento dei compiti. nel giro di pochi minuti, i vostri trofei verranno verifi cati e inizieranno ad apparire.

» Dato che il progetto è ancora in fase di sviluppo, dove

si può ottenere aiuto?Si può trovare aiuto sulla mailing list iscrivendosi all’indirizzo Web https://launchpad.net/~ubuntu-accomplishments-contributors o sul canale IRC #ubuntu-accomplishments su Freenode.

» Ho capito. Come posso partecipare al progetto?

Fortunatamente è disponibile un’ampia documentazione di qualità su come iniziare, all’indirizzo https://wiki.ubuntu.com/Accomplishments. inoltre, non mancate di utilizzare i canali di comunicazione per chiedere consiglio ad altri utenti. LXP

LXP_132_06_07_FAQ 7 05/08/13 16:50

Page 10: Linuxpro 132 Agosto 2013

Fuga da GoogleFuga da Google

8 LINUX PRO 132 LINUX PRO 132 98 LINUX PRO 132

ESCI

+ Tu Ricerca Immagini Mappe Play YouTube News Gmail Drive Calendar

Pubblicità Soluzioni aziendali Informazioni Privacy & Termini Impostazioni Google.com

Tutti noi usiamo sempre più il cloud. La disponibilità di connessioni più veloci e affidabili rende sempre più allettante la possibilità di avere a disposizione

i nostri dati su tutti i dispositivi che usiamo. I servizi cloud hanno tuttavia degli svantaggi, in particolare quelli gratuiti che devono comunque in qualche modo produrre un profitto. Prima di affidare la sicurezza dei vostri dati a terzi è opportuno che vi poniate alcune domande spinose ma indispensabili; come scoprirete leggendo questo articolo, le risposte non sono generalmente quelle che vorreste sentire:

Privacy – i vostri dati vengono solo archiviati o vengono esaminati a fini pubblicitari o di marketing?

Affidabilità – potete essere certi che il servizio che utilizzate sarà sempre disponibile? Quali garanzie avete sulla sicurezza dei vostri dati? Potete fare qualcosa per migliorarla?

Sicurezza – le vostre informazioni sono criptate? Chi ha accesso alle chiavi crittografiche? I vostri dati rischiano di venire violati o rubati?

Continuità – il fornitore del servizio cloud può per qualunque ragione sospendere o annullare il vostro account, magari facendovi perdere tutti i dati?

Prestazioni – la vostra connessione a Internet è abbastanza veloce da permettervi di usare i servizi desiderati senza ritardi?

Copyright – chi è il titolare dei contenuti da voi

caricati? Le vostre foto possono essere vendute o pubblicate senza il vostro consenso? Se è probabile che le politiche di sicurezza e backup

di una grande azienda siano probabilmente meglio progettate e implementate delle vostre, rimane la questione relativa a ciò che l’azienda può fare dei vostri dati. Qualcuno potrebbe ritenere che permettere al fornitore di scansionare le email allo scopo di presentare annunci pubblicitari più mirati sia un prezzo ragionevole per un servizio gratuito. Altri potrebbero invece desiderare che la loro posta privata rimanga tale; se utilizzate la posta elettronica per lavoro, le preoccupazioni

sono ancora maggiori. In questo caso, siete responsabili non solo dei vostri dati ma anche di quelli delle aziende con cui avete contatti. Potreste inoltre essere preoccupati per la riservatezza delle informazioni interne alla vostra rete privata, non solo per una questione

di segretezza commerciale ma anche per la protezione dei dati e la tutela della privacy delle persone con cui l’azienda ha a che fare.

Me ne vado!Cerca con Google

Liberate i vostri dati personali dalle aziende che vogliono impadronirsi delle vostre email, delle foto e dei contatti. Riprendetevi la vostra vita

Fuga da

“Quali garanzie avete sulla sicurezza dei vostri dati?”

GoogleE Facebook Twitter Flickr, ecc…

8 LINUX PRO 132

LXP_132_08_15_LXF173.feat_google.indd 8 07/08/13 16:50

Page 11: Linuxpro 132 Agosto 2013

Fuga da GoogleFuga da Google

8 LINUX PRO 132 LINUX PRO 132 9LINUX PRO 132 9

Una legge per noi, un’altra per loroUn altro problema spinoso è che il servizio di cloud potrebbe essere gestito in un paese diverso dal vostro e quindi soggetto a legislazioni e normative diverse. Anche se questo non rappresenta un problema per voi, nulla impedisce al titolare del servizio di trasferire tutti i dati in un paese diverso, per ragioni economiche o politiche o semplicemente per sfuggire al fisco. Google si è attirata forti critiche per il suo approccio alla privacy; ma sotto questo aspetto non è né l’unica, né la peggiore. A suo credito va detto che è relativamente onesta nell’ammettere di utilizzare i vostri dati per fare soldi; la maggior parte di voi, prima ancora di registrare un account Gmail, sapeva già che Google avrebbe letto le vostre email. Eppure, l’idea dei servizi cloud rimane allettante e conveniente: come risolvere il dilemma? La risposta è semplice: gestitevi da soli il vostro cloud. Conserverete così sia la comodità dell’accesso facile ai dati da più dispositivi e posizioni, sia il controllo sui dati stessi. Non vi stiamo consigliando di crearvi una centrale dati e di dare vita a un clone di Gmail, Dropbox o Facebook. Diciamo solo che per un computer domestico o per una piccola azienda non avete bisogno di simili colossi.

Che cosa vi serve?Il cloud è in sostanza un servizio basato sul Web e di servizi Web Linux ne sa decisamente qualcosa. Non vi serve altro che un computer Linux con un pacchetto LAMP standard (Linux, Apache, MySQL, PHP) per poter installare in pochi minuti la maggior parte dei software citati nelle pagine che seguono. A questo punto, rimane solo da domandarsi che cosa installare e dove. A seconda delle vostre esigenze, il dispositivo può essere un piccolo server, il vostro computer fisso se intendete lasciarlo acceso per tutto il tempo necessario o anche solo un dispositivo piccolo ed economico sul piano energetico, come un Raspberry Pi o un plug computer. Il dispositivo sarà collegato alla vostra rete locale, il che vi fornirà velocità eccellenti quando lo utilizzerete sulla vostra LAN. Potrà inoltre essere reso accessibile dall’esterno; questo però chiama in causa la questione della velocità

di caricamento della vostra connessione a Internet. I collegamenti domestici sono perlopiù asimmetrici, cioè forniscono velocità molto superiori in scaricamento rispetto a quelle in caricamento. L’accesso ai dati dall’esterno è classificato come caricamento, perciò risulterà più lento; non al punto da essere inutilizzabile ma è comunque il caso di tenerlo presente, specie se intendete supportare più utenti. Per fornire accesso da tutto il mondo, è molto più pratico utilizzare un provider che vi fornisca un indirizzo IP statico; diversamente dovrete ricorrere a un servizio di DNS dinamico. Un’alternativa è rappresentata da un Virtual Private Server o VPS. Si tratta in sostanza di una distribuzione di Linux installata su un computer virtuale presso un centro dati, che offre il doppio vantaggio della velocità elevata di questo tipo di ambienti e del pieno controllo su un sistema che rimane vostro, in cui siete voi a stabilire quali software includere e quali password e chiavi usare; il provider non ha la necessità di leggere alcun vostro dato. A tale fine potreste usare anche un host Web, dato che tutto quanto utilizza lo stack LAMP; in questo caso, però, le opzioni per la protezione dei vostri dati diminuiranno. Quale che sia il dispositivo reale o virtuale da voi scelto, vi servirà un’installazione LAMP completa. Se intendete riservare un dispositivo specifico a questo scopo, la soluzione più semplice sarà installare distribuzioni di tipo server, come Ubuntu Server o Debian, selezionando l’opzione server Web durante l’installazione. Se utilizzerete un sistema esistente, sarà sufficiente installare Apache, MySQL e PHP. Se installerete i software qui in esame mediante il sistema di gestione dei pacchetti della distribuzione, sarà quest’ultimo a occuparsene.

Il client di sincronizzazione vi consente di impostare più operazioni di sincronizzazione da effettuare in successione, senza fare riferimento a un’unica directory

Il sito offre due metodi per installare ownCloud; il più semplice consiste nello scaricare ed estrarre un file TAR (a meno che la vostra distribuzione disponga di un pacchetto apposito)

Il demo alla pagina http://demo.owncloud.org vi permette di provare ownCloud prima di installarlo

+ Tu Ricerca Immagini Mappe Play YouTube News Gmail Drive Calendar

Pubblicità Soluzioni aziendali Informazioni

Flickr, ecc…

LINUX PRO 132 9

LXP_132_08_15_LXF173.feat_google 9 06/08/13 17:02

Page 12: Linuxpro 132 Agosto 2013

Fuga da GoogleFuga da Google

10 LINUX PRO 132 LINUX PRO 132 11

Se usate MySQL, dovrete creare database e utente. Potete farlo dalla linea di comando o mediante il pratico tool Web phpMyAdmin

Chiariti i motivi per crearvi (o meno) un vostro servizio cloud, come si fa? ‘Cloud’ è un termine piuttosto vago, che copre praticamente qualsiasi tipo di servizio che vi permetta

di archiviare i vostri dati ‘altrove’ e di accedervi via Internet. Ci sono i servizi di posta elettronica come Gmail, quelli di archiviazione dati come Dropbox, le gallerie fotografiche come Flickr... l’elenco potrebbe continuare. Non è detto che vogliate trasferire tutto ciò su un cloud privato; la condivisione sociale offerta da un sito come Flickr fa sì che la sua natura pubblica costituisca un vantaggio (specie ora che offre 1 TB di spazio gratuito); ma le cose non stanno sempre così. Da dove cominciare, dunque? Quale servizio ‘privatizzare’ per primo? Un progetto che si occupa di vari aspetti del genere è ownCloud (http://owncloud.org). Benché si concentri anzitutto sull’archiviazione dei dati, sulla falsariga di Dropbox, fornisce anche alcune altre funzioni, incorporate o accessibili mediante plug-in. Per prendere confidenza con ownCloud prima di installarlo, provate il demo disponibile all’indirizzo http://demo.owncloud.org. Si tratta di un’applicazione Web, perciò per prima cosa assicuratevi che il vostro server Web sia attivo. Se il vostro computer ha un desktop, vi basterà controllare che http://localhost funzioni in un browser. Se intendete installare su un server separato, usate il suo nome host al posto di ‘localhost’. La versione di ownCloud provata è la 5.0.6. Ci sono tre modi per installare ownCloud. Se si trova nei repository della vostra distribuzione, potete installarlo dal gestore dei pacchetti. In alternativa, scaricate il file compresso dell’ultima versione da http://owncloud.org/install/ ed estraetelo nella root del server Web (DocumentRoot nella configurazione Apache). Di solito si chiama /var/www/ o /var/www/htdocs; alcune distribuzioni usano /srv/www in luogo di /var/www. Il terzo metodo è l’installazione Web, da utilizzare per le installazioni remote (per esempio su un VPS). Scaricate il programma di installazione (attualmente disponibile su http://bit.ly/12pWiUW)

nel vostro spazio Web, quindi aprite il file PHP mediante il browser. In ciascuno dei tre casi, avrete ora una directory ownCloud nella vostra root del server Web, perciò collegandovi con il browser a http://hostname/owncloud potrete caricare la pagina di configurazione iniziale. La decisione principale da prendere qui riguarda il database da utilizzare. SQLite è il più semplice e il più indicato per le installazioni a utente singolo. Se tuttavia utilizzate qualcosa che si serve di MySQL, (e alcuni dei pacchetti che esamineremo più avanti lo richiedono), sarà preferibile usare un solo database per tutto e optare per MySQL. In ogni caso, dovrete indicare il nome del database e i dettagli dell’utente. Il database SQLite verrà creato automaticamente mentre gli utenti di MySQL dovranno crearlo prima di impostare ownCloud; ne parleremo più avanti nel paragrafo dedicato a MySQL.

Sempre sincronizzatiDopo che avrete inserito i dettagli relativi all’amministratore e al database, ownCloud si configurerà da sé e sarà pronto per l’uso. Prima di cominciare, però, potrete apportare una certa modifica. Una delle restrizioni di Dropbox è il limite di 300 MB per le dimensioni dei singoli file; il limite di ownCloud è di 512 MB ma potete modificarlo: il cloud è vostro... Il limite di 512 MB deriva dalle impostazioni predefinite di PHP per le dimensioni massime dei file in caricamento; potete aumentarlo se utilizzate una rete veloce. Cliccate sul nome utente in alto a destra nel browser per accedere al menu principale e scegliete Settings. Potete modificare l’impostazione relativa ai file in caricamento secondo le vostre esigenze; tuttavia, la release usata contiene un bug (probabilmente legato a PHP) che crea problemi quando il limite viene fissato a 2 GB o più. Perciò, per evitare che i file vengano indicati come troppo grandi quando non lo sono affatto, regolate il limite su 1,9 GB in attesa che il bug venga eliminato. La vostra area di archiviazione in stile Dropbox è pronta: ma come sincronizzarla con i vostri dispositivi? Per farlo dovrete installare il cliente ownCloud, disponibile per tutti i principali sistemi operativi compresi Windows e Mac OS X. Di solito compare nel gestore dei pacchetti della distribuzione come owncloud-client o simili ma alcune distribuzioni usano ancora mirall, il vecchio nome del software di sincronizzazione.

Create un utente amministratore e premete il pulsante Advanced per impostare le credenziali del database

ownCloudTenete al sicuro i vostri dati: create e gestite un server cloud tutto vostro

LXP_132_08_15_LXF173.feat_google 10 06/08/13 17:02

Page 13: Linuxpro 132 Agosto 2013

ESCI

Fuga da GoogleFuga da Google

10 LINUX PRO 132 LINUX PRO 132 11

“Il programma è relativamente nuovo, perciò ne escono continuamente nuove versioni”

Fuga da

Google

Vi conviene disattivare il controllo ortografico standard di Roundcube o Google continuerà a leggere le vostre email in uscita

Dopo averlo installato e avviato vedrete apparire un’icona nella barra delle applicazioni. Al primo avvio, il client richiederà l’indirizzo del server e la directory con cui effettuare la sincronizzazione. Tutto come in Dropbox, dunque? No: c’è di più. Potete aggiungere ulteriori procedure di sincronizzazione, incentrate su directory diverse e perfino su server diversi. Non siete cioè costretti a limitare la sincronizzazione a una directory e a un server. Oltre alla possibilità di sincronizzare in modo flessibile dati provenienti da più cartelle, ciò vi permette per esempio di sincronizzare i documenti di lavoro e quelli personali con server diversi. Privacy assoluta e più funzioni: un doppio vantaggio! Esistono anche client di sincronizzazione per Android e iOS, che vanno installati nel solito modo.

Condivisione di fileE per condividere i file con altri? Quando fate scorrere il cursore del mouse su un file nel browser, a destra appare un menu che contiene un’opzione Share. Quest’ultima comprende un campo in cui inserire un indirizzo email con cui condividere il file; se invece selezionate l’opzione Share with link, vi sarà indicato un URL che potrete inviare via email o comunicare ad altri utenti. Si tratta di un link per lo scaricamento, che non espone i contenuti del vostro cloud ad altri ma permette loro di scaricare il file in questione oppure, se a essere condivisa è una cartella, di visualizzarla e di scaricarne il contenuto. Se avete più utenti e non volete che condividano indebitamente alcuni file, potete inserirli in gruppi e selezionare nella pagina di amministrazione un’opzione che permette loro di condividere documenti solo con utenti appartenenti allo stesso gruppo. Potranno così collaborare senza rivelare segreti commerciali. Gli utenti si creano mediante l’opzione Users del menu di archiviazione principale. Oltre a inserirli in gruppi, potete limitare lo spazio di archiviazione a loro disposizione.Potete accedere ai vostri file anche in un altro modo, mediante il protocollo WebDAV, supportato dai file manager e da altri programmi. Questo vi permette di accedere ai file del cloud come se fossero file locali. La sintassi da utilizzare varia: in Nautilus dovete usare dav://vostro.server/owncloud/files/webdav.php mentre KDE preferisce webdav:// in luogo di dav://, LibreOffice, invece, utilizza

il classico http://. Avete capito bene: LibreOffice può caricare i file direttamente dal cloud. WebDAV è un protocollo a due vie e consente quindi anche il salvataggio dei file. Questo elimina in gran parte la necessità di un client Web da ufficio separato: sui file salvati nel cloud potete cioè usare i vostri strumenti standard. Alcuni moduli di ownCloud, tra cui le applicazioni calendario, rubrica e segnalibri, sono inizialmente vuoti anche se probabilmente tutte le vostre informazioni in merito sono archiviate altrove. Fortunatamente, è semplicissimo importarle da formati standard (rispettivamente ICS, VCF e HTML). Potete perfino sincronizzare il calendario con altri dispositivi: basta premere il pulsante delle impostazioni per visualizzare l’URL per la sincronizzazione con altri client calendario. Le applicazioni relative alla musica e alle foto troveranno tutti i file appropriati in qualunque cartella del cloud. Nell’applicazione musicale dovrete premere il pulsante Rescan dopo aver caricato un nuovo file per aggiungerlo all’elenco.

Moduli e plug-inQuando sarete stanchi di esplorare le funzioni di ownCloud, potrete aggiungerne di nuove. Esistono diversi plug-in (o ‘App’, nella terminologia del software) che potete attivare per aggiungere nuove funzioni. Alcuni vengono installati di default, altri possono essere scaricati da http://apps.owncloud.com. Selezionate Apps nel menu a tendina per visualizzare i plug-in installati. Quelli in grassetto in cima all’elenco sono attivati. Per usare uno degli altri, selezionatelo e cliccate sul pulsante Enable. Il pulsante More vi condurrà alla pagina delle App dove potrete scorrere e cercare altri plug-in. Scaricandone uno vi ritroverete con un file ZIP da estrarre nella directory apps della vostra installazione. Alcune funzioni aggiuntive di ownCloud lo rendono ancor più interessante. Per esempio, il controllo della versione dei file.

Se sovrascrivete un file con una nuova versione, la precedente viene conservata e rimane accessibile, se lo spazio di archiviazione è sufficiente. C’è inoltre un cestino per l’eliminazione dei file, in cui potete recuperare

tutti i file cancellati mediante l’interfaccia Web qualora cambiaste idea. Il programma è relativamente nuovo, perciò ne escono continuamente nuove e corpose versioni. In un codice non troppo maturo, inoltre, ci sono maggiori rischi di vulnerabilità in termini di sicurezza, perciò è opportuno mantenerlo sempre aggiornato. La pagina Admin vi segnala la disponibilità di una versione più recente di quella attualmente installata. Dopo l’aggiornamento, potreste accorgervi che ownCloud rimane in modalità manutenzione. Lo scopo è impedire a chiunque di accedervi prima che voi, come amministratori, abbiate effettuato le eventuali operazioni di aggiornamento. Modificate il file config/config.php regolando l’impostazione manutenzione su ‘false’. Ricaricate la pagina principale, rispondete alle eventuali domande e il vostro cloud tornerà a funzionare alla perfezione.

LXP_132_08_15_LXF173.feat_google 11 06/08/13 17:02

Page 14: Linuxpro 132 Agosto 2013

Fuga da GoogleFuga da Google

12 LINUX PRO 132 LINUX PRO 132 13

L’installazione crea due file che dovrete scaricare e copiare nella directory di configurazione di Roundcube

vantaggio rispetto al vecchio protocollo POP3 oltre a quello di non costringervi a scaricare tutto prima di leggerlo: archivia le informazioni (per esempio quelle relative alle email già lette) sul server, il che vi permette di utilizzare più client mantenendo sempre il punto della situazione.

InstallazioneInstallare Roundcube è facile. Potete farlo tramite il vostro gestore dei pacchetti o collocarlo direttamente sul vostro server scaricando l’archivio compresso da www.roundcube.net. Estraetelo nella directory principale del vostro server Web. Verrà così creata una directory denominata roundcubemail-0.9.0 (per la versione

attuale). Rinominatela o create un collegamento simbolico a un nome più pratico come ‘roundcube’ o ‘webmail’. Roundcube richiede la scrittura dei file nei suoi log e nelle directory temporanee, perciò assicuratevi che questi ultimi

siano di proprietà dell’utente che gestisce il server Web (di solito apache o www-data). Quindi avviate il programma di installazione collegandovi con il browser a http://address-of-server/roundcube/installer. Verificate che nessuna delle voci riporti l’indicazione Not OK. I moduli opzionali non sono indispensabili: vi serve un solo database disponibile (Roundcube supporta vari formati di database). Importante è l’opzione date.timezone di PHP, che è necessario impostare perché le vostre email riportino l’orario giusto. Se utilizzate un VPS invece di un server locale, dovrete impostarla sul fuso orario della località in cui si trova fisicamente il server. L’impostazione si trova nel file /etc/php5/apache2/php.ini la riga in questione non dovrà riportare commenti e dovrete aggiungervi il fuso orario. Il fuso corretto è solitamente indicato in /etc/timezone. Dopo aver sostituito questa o eventuali altre impostazioni PHP, dovrete riavviare Apache con:sudo apachectrl restart

ImpostazioniRicaricate l’installer e correggete gli altri eventuali errori prima di proseguire. La pagina successiva imposterà la configurazione. Se utilizzate un servizio di posta tutto vostro per ragioni di privacy, probabilmente vi converrà disattivare il controllo ortografico, perché il sistema standard fa controllare il testo direttamente a Google! Dovrete specificare il vostro database e, se non utilizzate SQLite, impostare voi stessi le tabelle. Per farlo potete avviare il client mysql in modalità root e inviare i seguenti comandi:CREATE DATABASE roundcubemail;GRANT ALL PRIVILEGES ON roundcubemail.* TO username@localhost IDENTIFIED BY ‘password’;FLUSH PRIVILEGES;

Sostituite ‘username’ e ‘password’ ma lasciate invariato ‘localhost’, perché il server del database si trova nello stesso sistema del server Web. In alternativa, potete creare il database e l’utente con phpMyAdmin. A questo punto dovrete aggiungere uno o più server IMAP ai quali effettuare la connessione. Se ne aggiungerete più di uno, al caricamento della pagina accederete a un menu in cui

OwnCloud vi permette di fare moltissime cose ma c’è un importante servizio cloud che lascia scoperto: la posta elettronica. Tra tutti i servizi cloud, quelli che suscitano

maggiori preoccupazioni riguardo alla privacy sono quelli di posta elettronica in generale e Gmail in particolare. I vostri messaggi vengono trasmessi e archiviati in semplice formato testo e Google ammette apertamente di leggerli allo scopo di farvi arrivare pubblicità mirata. Finché si tratta di messaggi non confidenziali, questo è accettabile per la maggior parte degli utenti; ma se per voi non lo è, potete passare a un servizio di posta tutto vostro. Meglio ancora: non avete nemmeno bisogno di cambiare indirizzo email o di utilizzare un indirizzo Internet statico, come è solitamente necessario fare per gestire un server SMTP. Il programma di posta via Web non deve necessariamente condividere il sistema con il server di posta, perciò potete installarlo sul vostro server, continuando a utilizzare l’indirizzo email e il server di posta attuali. Esistono varie alternative per la scelta del programma: due tra le più usate sono SquirrelMail e Roundcube entrambi scritti in PHP e utilizzabili con il normale stack LAMP. Qui ci occuperemo di Roundcube ma Squirrel è altrettanto valido e facile da installare. Si possono anche utilizzare entrambi: dopotutto sono semplici client di posta e molti utenti ne installano più di uno. Entrambi i servizi utilizzano IMAP per comunicare con il server di posta, perciò le email rimangono sul server e potete leggere lo stesso messaggio mediante un computer fisso o un client di posta elettronica mobile. IMAP offre un ulteriore

“Meglio ancora: non avete nemmeno bisogno di cambiare indirizzo email”

WebmailTenete al sicuro le email: createvi un vostro servizio di posta Web

LXP_132_08_15_LXF173.feat_google 12 06/08/13 17:02

Page 15: Linuxpro 132 Agosto 2013

Fuga da GoogleFuga da Google

12 LINUX PRO 132 LINUX PRO 132 13

Vi serviranno almeno un server IMAP dal quale leggere le e-mail e un server SMTP per il loro invio

effettuare la scelta; se lo lascerete in bianco, dovrete digitare il nome del server ogni volta che vorrete usare Roundcube. Cliccando sul pulsante Create Config accederete a una pagina con collegamenti per lo scaricamento di due file, main.inc.php e db.inc.php. Copiateli nella directory di configurazione della vostra installazione di Roundcube. Cliccate quindi su Continue per effettuare il collaudo della configurazione. Correggete tutte le eventuali voci segnalate, ritornando alla pagina precedente o modificando direttamente i file, quindi ricaricate la pagina di prova. Qui dovrete anche collaudare le impostazioni SMTP e IMAP. Occhio al grosso avviso rosso alla fine della pagina di prova: non dimenticate di rimuovere o disattivare il programma di installazione dopo aver impostato Roundcube, altrimenti chiunque potrà vedere le vostre impostazioni e password.

Leggere la postaLa pagina che visualizzerete al caricamento dell’URL del vostro servizio di posta nel browser dipenderà dalle impostazioni. Se avrete impostato un solo server di posta, vi chiederà direttamente nome utente e password; altrimenti, vedrete un menu in cui scegliere tra i vari server oppure, se non avete inserito alcun server, una casella

di testo. Al vostro primo collegamento dovrete attendere la scansione della vostra casella di posta. La velocità di caricamento di quest’ultima dipende soprattutto da quella della connessione tra il server Web e il server di posta, dalla loro presenza sullo stesso computer (questo fa la differenza) e dalla quantità di posta inutile che desiderate comunque conservare. Il menu delle impostazioni contiene opzioni che permettono di modificare sia il comportamento sia l’aspetto di Roundcube, e il sito http://roundcube.net ha un wiki zeppo di informazioni su come adattare il server alle vostre esigenze. Il sito offre inoltre numerosi plug-in da installare per migliorare le funzioni e l’aspetto di Roundcube. I plug-in sono distribuiti sotto forma di archivi, solitamente TAR o ZIP, che vanno estratti nell’apposita directory del software (ne troverete diversi già dopo l’installazione standard). I plug-in sono disattivati per impostazione predefinita; per attivarli dovete aggiungerne i nomi, così come appaiono nella directory dei plug-in, all’array $rcmail_config[‘plugins’] in config/main.inc.php. Per esempio, per aggiungere il plug-in (incluso) di collegamento automatico e il plug-in SpamAssassin , dovrete aggiungere al file qualcosa come:$rcmail_config[‘plugins’] = array(‘autologon’, ‘sauserprefs’);

AmministrazioneUno dei vantaggi dei servizi pubblici è che funzionano da soli. Non dovete impostare niente a parte un account e non dovete preoccuparvi di backup, requisiti di archiviazione, sicurezza delle reti, attacchi DDoS e via dicendo. Se volete cavarvela davvero da soli, dovrete tenere conto di questi elementi, così come fareste in relazione ai sistemi tradizionali di elaborazione e archiviazione dei dati. Naturalmente, i rischi possono essere trasformati in vantaggi. L’uso di un cloud privato per l’archiviazione di tutti i vostri file crea sì un unico punto di vulnerabilità ma anche un’unica posizione di cui effettuare un backup. Sincronizzare un server cloud a una posizione esterna al sito

è più facile che farlo per una decina o per una ventina di computer. Il controllo delle versioni dei file e la possibilità di recuperare i file cancellati forniscono una protezione contro gli errori commessi dagli utenti, protezione su cui non potete contare quando qualcuno elimina accidentalmente la cartella sbagliata dal suo desktop. Se gestite il vostro servizio su una rete privata alcuni di questi rischi non vi riguardano e se avete già un server Web pubblicamente accessibile, alcuni di essi saranno già stati risolti; la situazione, quindi, è meno preoccupante di quanto possa sembrare a prima vista. Evitate però di usare dati o servizi critici al primo tentativo.

Roundcube si installa tramite il suo programma di installazione sul Web, che controlla anzitutto che i requisiti di sistema siano soddisfatti

LXP_132_08_15_LXF173.feat_google 13 06/08/13 17:02

Page 16: Linuxpro 132 Agosto 2013

Fuga da GoogleFuga da Google

14 LINUX PRO 132 LINUX PRO 132 15

Dopo aver impostato Elgg potrete avviarlo indicandogli un nome, un indirizzo email e una posizione in cui archiviare i suoi dati

Impostare un servizio di posta elettronica va benissimo; ma la posta elettronica fa un po’ XX secolo… o almeno, questo è ciò che vogliono farci credere servizi come Facebook. I social network

sollevano diverse preoccupazioni relative alla privacy e se le aziende possono utilizzare servizi come Facebook per entrare in contatto con gli utenti che concedono loro il ‘mi piace’, non dovrebbero comunque servirsene per le comunicazioni interne. In realtà la maggior parte delle aziende adotta regolamenti piuttosto rigidi sulla discussione di qualunque attività aziendale sui social network. Questi servizi offrono d’altronde agli utenti un buon sistema per interagire in pubblico o all’interno di un’azienda. Per risolvere il dilemma della privacy ci occorre quindi un sistema di rete sociale gestito da noi stessi, preferibilmente Open Source. Esistono varie opzioni, come Buddy Press (http://buddypress.org) nato come mod di WordPress e divenuto in seguito una piattaforma di social media a sé; noi però ci concentreremo su Elgg (http://elgg.org). Basta scorrere l’elenco delle organizzazioni e delle istituzioni didattiche che lo hanno scelto per farsi un’idea della sua popolarità e della sua praticità.

Una procedura familiareL’installazione è simile a quella di molte altre applicazioni Web. Scaricate il file ZIP, estraetelo nella directory del vostro server Web, preferibilmente creando un collegamento simbolico a un nome più maneggevole di elgg-1.8.15, quindi impostate il database. Elgg utilizza MySQL, perciò seguite le istruzioni riportate sopra per la creazione di un database e di un utente. Dovrete inoltre creare una directory dati per Elgg; questa non dovrà trovarsi nella DocumentRoot del vostro server Web, cioè nell’area dalla quale

il server fornisce le pagine, dato che i suoi contenuti non dovranno essere direttamente accessibili da un browser. La directory dev’essere di proprietà dell’utente del server Web (solitamente www-data o apache) e da lui modificabile. Questo per quanto riguarda la linea di comando; potete comunque svolgere buona parte dell’operazione con phpMyAdmin e un file manager compatibile con SSH. Caricate quindi http://vostroserver/elgg nel vostro browser. La pagina vi guiderà nelle impostazioni, verificando la presenza di tutti i moduli necessari, impostando le credenziali per il database, collaudando l’accesso e configurando la posizione della directory dati. Se individuerà

14

Aggiungere un database MySQLMySQL è un server database e tutti i pacchetti che abbiamo citato qui richiedono qualche tipo di database per l’archiviazione delle impostazioni e dei dati. Se MySQL è uno dei più usati, esistono comunque delle alternative. SQLite, per esempio, è molto più leggero. Archivia un database completo in un unico file e funziona ottimamente sui sistemi a utente unico con requisiti non particolarmente elevati. Non è tuttavia molto scalabile, né in termini di utenti né riguardo al carico di lavoro. Poiché MySQL utilizza il classico modello server/client, un unico server si occupa delle esigenze di più programmi; perciò, se intendete utilizzare più di uno dei pacchetti qui descritti, vi converrà probabilmente optare per MySQL. Lo svantaggio è che dovrete impostare database e utenti sul server per ogni pacchetto. All’installazione, MySQL richiede una password, destinata all’utente della directory principale e non ai singoli pacchetti. Potete creare un nuovo database e il relativo utente mediante il client della linea di comando:mysql -uroot -p

Il client di MySQL vi richiederà una password, poi potrete creare il database e l’utente nel seguente modo: CREATE DATABASE dbname;GRANT ALL PRIVILEGES ON dbname.* TO username@localhost IDENTIFIED BY

‘password’;FLUSH PRIVILEGES;

La prima riga crea il database e la seconda crea un utente con una password, permettendogli di accedere pienamente al database in questione. Il comando flush si limita a ordinare a MySQL di implementare immediatamente le modifiche. Terminata l’operazione, potrete uscire dal client con \q. Potrete ordinare al vostro

programma di utilizzare quel database e quell’utente; sarà quindi il programma stesso a creare la struttura del database.Un’alternativa a tutto questo traffico con la linea di comando consiste nell’utilizzare phpMyAdmin, uno strumento Web di amministrazione per MySQL. A dirla tutta, per creare l’utente per phpMyAdmin, dovrete comunque servirvi della linea di comando; ma l’intera procedura è descritta dettagliatamente nell’interfaccia Web.

Social NetworkNiente più preoccupazioni per la privacy: createvi il vostro sistema di social media

Con phpMyAdmin, per controllare i database MySQL basta cliccare e digitare un po’, altro che ricorrere alla riga di comando...

14 LINUX PRO 132

LXP_132_08_15_LXF173.feat_google 14 06/08/13 17:02

Page 17: Linuxpro 132 Agosto 2013

ESCI

Fuga da GoogleFuga da Google

14 LINUX PRO 132 LINUX PRO 132 15

un problema in un qualsiasi punto della procedura, vi fornirà utili suggerimenti per la sua risoluzione. Premete Aggiorna dopo aver risolto il problema, per ripetere il controllo. L’ultima operazione consisterà nel creare un account di amministrazione. Quando vi collegherete utilizzando questo account, potrete modificare notevolmente l’aspetto del sito oltre ad attivare vari plug-in e opzioni.

Un Elgg tutto vostroElgg è ben documentato ma la documentazione in questione è piuttosto nascosta e non c’è nemmeno un link dalla homepage del sito. Prima dell’installazione, visitate la pagina http://docs.elgg.org. Dopo aver installato Elgg, troverete dei link al manuale e alle FAQ sulla pagina Administration, in basso. La procedura per il controllo dei plug-in dovrebbe ormai risultarvi familiare. Ai plug-in installati si accede mediante un link sulla pagina Administration. I nuovi plug-in vanno scaricati sotto forma di file ZIP ed estratti nella directory del mod, dopodiché appaiono nella suddetta lista. Anche i temi sono plug-in, perciò si installano e si configurano nello stesso modo. I collegamenti ai repository dei temi e dei plug-in si trovano sulla prima pagina del manuale di amministrazione. Tenete presente che dal momento che i temi vengono trattati come plug-in, è possibile selezionarne più di uno alla volta, il che può dare risultati bizzarri. Una funzione utile della pagina dei plug-in è la possibilità di spostarli su e giù nell’elenco ordinato per priorità, alterando così l’ordine in cui vengono caricati.

LAMP: che cos’è?I servizi Web operano su quello che si definisce un sistema LAMP, una sigla le cui prime tre lettere indicano Linux, Apache e MySQL, mentre la P sta per PHP, Perl o Python, a seconda delle vostre preferenze. Apache è di fatto il server Web standard per Linux, benché esistano alternative come Lighttpd e Cherokee, spesso più leggeri e compatibili con questi servizi. Apache rimane comunque il più usato e tutti i servizi sono predisposti per il suo utilizzo, mentre l’uso di un server Web diverso può richiedere un po’ di lavoro in più; le informazioni specifiche sono solitamente disponibili sui siti dei relativi progetti. Il modo più facile per installare Apache è farlo tramite

il gestore dei pacchetti (della L di LAMP dovreste già esservi occupati...); Python e Perl sono spesso installati per impostazione predefinita; quanto a PHP e MySQL, vanno installati anch’essi tramite il gestore dei pacchetti.

E in più…Abbiamo esaminato tre programmi principali, occupandoci anzitutto di archiviazione dei dati, posta elettronica e social network, benché tutti offrano funzioni aggiuntive (album fotografici, calendari, rubriche e gestione dei segnalibri). Come abbiamo visto, ci sono alternative per ognuno dei programmi citati; inoltre esistono molti altri tipi di programmi cloud. Per esempio, Gallery (http://gallery.menalto.com) è un album fotografico dedicato che offre molte più funzioni rispetto ai moduli aggiuntivi dei programmi qui in esame. È una tipica applicazione Web che utilizza PHP, perciò la procedura di installazione e configurazione è molto simile a quella dei programmi precedenti; offre inoltre un’interfaccia Web di amministrazione completa per la creazione di album pubblici e privati, nonché molti plug-in che lo migliorano ulteriormente. Esiste inoltre un servizio di messaggeria istantanea Open Source che utilizza Jabber (abbandonato di recente da Google) Asterisk, di cui ci siamo già occupati, può essere usato per impostare un vostro gateway VoIP, particolarmente utile per le aziende con più sedi. Solo in un settore le alternative Open Source non sono attualmente all’altezza dei prodotti commerciali: ci riferiamo ai software da ufficio. Benché la compatibilità WebDAV di ownCloud permetta di modificare i documenti ovunque e da parte di chiunque disponga dei parametri di collegamento richiesti, il sistema fa comunque affidamento su software da ufficio lato client. È attualmente in via di elaborazione un progetto denominato OX documents, del quale è disponibile un demo all’indirizzo https://www.ox.io/ox_text. È interessante notare che supporta sia il formato ODF sia il formato Word: si tratta del primo passo verso un pacchetto da ufficio online e Open Source. La prima versione dovrebbe essere pubblicata a breve; quando comprenderà anche un foglio elettronico, avremo modo di fare nei nostri cloud praticamente tutto ciò che facciamo in quelli proprietari… salvo mettere a rischio la nostra privacy. LXP

“I soggetti che hanno scelto Elgg danno un’idea della sua popolarità”

OpenstackIn questo articolo ci siamo concentrati su ownCloud ma esistono delle alternative: tra esse OpenStack, che tuttavia è destinato più che altro agli impieghi su vasta scala. OwnCloud può essere utilizzato in contesti aziendali e ne esistono versioni commerciali ma è perfettamente indicato anche per l’uso personale e per le piccole aziende. OpenStack invece, si rivolge più a chi intende fornire servizi cloud commerciali. Non per questo va escluso in partenza; se avete esigenze che vanno oltre quelle di un servizio cloud personale, date un’occhiata a www.openstack.org per valutare se OpenStack fa al caso vostro.

OpenStack è un altro sistema cloud Open Source, rivolto decisamente alle aziende

Esistono perfino temi che rendono l’aspetto delle pagine di Elgg simile a quello di un ben noto sito di social network...

LINUX PRO 132 15

LXP_132_08_15_LXF173.feat_google 15 06/08/13 17:02

Page 18: Linuxpro 132 Agosto 2013

Puntualmente, quando esce la nuova versione di Fedora o Mint, ci si ritrova con il “solito” articolo che riporta la lista del software disponibile: Linux-versione-ABC,

KDE-versione-tot, LibreOffice tal-dei-tali... Tutte cose che si possono trovare nei changelog della distro. Noi pensiamo che invece Debian meriti qualche cosa di più, per cui lasceremo da parte l'aspetto meramente di cronaca per parlare di Debian in quanto Progetto.

Storia, miti e leggende Debian nasce il 16 agosto 1993, quando Ian Murdock annuncia l’intenzione di dare vita a una nuova distribuzione. Il nome deriva dall'unione dei due nomi del Fondatore e della di lui allora fidanzata Debra: DEBIAN. Grazie a questo omaggio sentimentale, quella signorina si è guadagnata una

piccola fetta di immortalità nelle note del progetto. Il punto di forza di Debian è il suo modello di sviluppo che si è dimostrato robusto e affidabile, generando non solo un sistema operativo ma anche e soprattutto un vero e proprio “ecosistema informatico” composto da sviluppatori, tester, traduttori, siti Web, forum di discussione e mailing list che rappresentano la vera forza di Debian. Nel Manifesto iniziale, Murdock teorizzava che Debian sarebbe diventata “sistema operativo universale”: se questo obiettivo poteva sembrare ambizioso e visionario, negli anni questa in realtà è andata lentamente concretizzandosi, registrando una continua crescita di software disponibile e di hardware supportato. Migliaia di sviluppatori, una decina di architetture e circa 37.500 pacchetti pronti all’uso (nella versione Linux/x86) sono imponenti numeri su cui l’utente finale può fare affidamento.

Chi usa Debian? Tanti, molti: magari anche chi sta leggendo, ma non lo sa per il semplice fatto che Debian è dentro il suo televisore ultimo modello e si occupa di videoregistrare le trasmissioni preferite dell'utente o perché molto probabilmente, è la distro che tiene in piedi i siti Web che visita. è recente la notizia che Debian è stata adottata da Google, il colosso informatico le cui migliaia di server sparsi per il mondo devono garantire stabilità e continuità di servizio 24 al giorno, 365 giorni all'anno (366 negli anni bisestili). Se invece consideriamo anche le versioni derivate, (tutto il sottobosco *buntu), la famiglia knoppix, Mint, e così via, ecco che i numeri degli utenti di debian-anche-se-con-un-nome-diverso sono molti di più di quelli che ci si immagina.

Debian rimane fedele alla tradizionale stabilità senza dimenticare di protendersi verso il futuro

Debian, il sistema operativo universale

Roberto Premoli

L’autore

Debian

16 LINux PrO 132

LXP_132_16_21_Debian 16 06/08/13 14:51

Page 19: Linuxpro 132 Agosto 2013

Il neofita che si avvicina al mondo GNu/Linux in un modo ragionato e che vuole andare su una delle distro storiche (Debian, redhat,

Slackware) perché dovrebbe scegliere Debian? Analizziamo la situazione.

Slackware Anche se di poche settimane, Slackware (slack per gli amici) è più anziana di Debian e per omaggiare la sua anzianità, sarà la prima che analizzeremo. Slack gira su x86 (32 e 64 bit) e più recentemente, anche sugli ArM; essa ha il pregio di essere la distro Linux più simile a uNIx che ci sia, ma è una “one-man-distro” cioè una distro assemblata, gestita e mantenuta da un solo uomo: Patrick Volkerding. Qual è il problema? Il problema è che la gente invecchia. Senza arrivare a punti estremi, domani Patrick (ed è già successo) potrebbe ammalarsi o semplicemente decidere di mollare tutto e ritirarsi in un capanno a pescare. Che fine farebbe la distro e i suoi utenti?

RedHatRedHat è la seconda distro del “terzetto del 1993”. Di chiara matrice statunitense, questa distro si è fatta strada commercialmente arrivando ad avere circa 4.000 dipendenti in tutto il mondo, un evidente segno di successo. Ma è stata per anni afflitta dalla “maledizione del .0”. In altre parole, le versioni 5.0, 6.0, 7.0 e 8.0 sono state afflitte da bug, errori e problematiche varie. La fretta di uscire al più presto possibile ha condannato

Perché scegliere Debian? Ecco i motivi per i quali Debian può effettivamente fare al caso nostro

la distro - e gli utenti - a patire fino all’arrivo delle versioni x.1 o x.2. Situazioni lontane nel tempo, ma che mostrano chiaramente che non c’era “attenzione alla qualità” ma operavano sotto pressione commerciale che imponeva uscite di facciata: in tre parole, “solo dannato marketing”. Inoltre redHat fa dei “trucchetti” (legali) per rendere difficoltoso l'utilizzo al privato della distro madre, trucchetti a cui la comunità ha risposto dando vita a CentOS, una redHat-senza-marchio.

Debian Debian ha una filosofia diversa dalle altre due distro appena viste. Prima di tutto, è collegiale, in quanto si basa su circa mille manutentori che si occupano delle decine di migliaia di pacchetti che compongono la distro. Non esiste un padre padrone, ma un Capo Progetto eletto a base annuale. Non ci sono “pressioni” da parte degli azionisti, in quanto Debian non ha natura commerciale ed “esce quando è pronta”, cioè quando viene ritenuta tecnicamente affidabile. Invero questo ha dato origine a molte critiche in passato, poiché veniva tacciata di essere “vecchia” e non al passo con i programmi più recenti. Ma affidabilità e novità non possono stare nella stessa frase! Ad ogni modo, accettando le richieste di cambiamento, Debian ha da anni adottato il modello “biennale” cioè un nuovo rilascio ogni 24 mesi (mese più, mese meno). Questo soddisfa chi vuole “la novità” ma altresì conforta sistemisti e amministratori di datacenter che vogliono “stabilità e affidabilità” nel tempo,

cioè una distro senza troppi grilli per la testa. Debian presenta molte “sfaccettature” e secondo noi il modo migliore per scegliere ciò che meglio soddisfa l'utente è adottare una “matrice tridimensionale” composta da kernel, piattaforma, pacchetti.

Il kernelChe succede se non potessimo usare OpenOffice? Beh, direte voi, “c’è LibreOffice”. Giusto: e se manca quello ecco farsi avanti Kalligra, Abiword e Gnumeric... insomma, per le attività da ufficio non ci sono problemi. Vedere film? Vlc, Totem, Gmplayer... E se non ci fosse più Linux? Beh, si può usare... si può usare... niente, sarebbe necessario migrare ad altri sistemi operativi! Libertà significa “possibilità di scegliere un’alternativa” e la libertà dell’utente finale è una delle cose che più interessano a Debian, ecco perché essa cerca di offrire la maggior scelta possibile. Tutte - TuTTE! - le distro Linux si basano, appunto, sul kernel Linux. Cosa succederebbe se domani Linus Torvalds, impazzisse, morisse o altro ancora? Che fine farebbe il kernel? Dipendere da un unico fornitore non è mai una buona idea, la pluralità delle fonti è fondamentale. Ecco perché a partire dal 2011 Debian si è dotata anche di un altro kernel, lo-stabile-come-una-roccia kernel di FreeBSD, rinominato per l’occasione kFreeBSD che, unito allo “spazio utente GNu”, ha dato vita a Debian GNu/kFreeBSD, una distro che si avvantaggia dell’ecosistema Debian, unito alla solidità di un kernel FreeBSD (si continui a leggere per ulteriori dettagli).

1 Un piccolo sforzoL’unica cosa da fare è scegliere il tipo di installazione grafica e la lingua italiana. Dopodiché si va avanti per inerzia... con “continua”, “continua”, “continua”, anche se ogni tanto dobbiamo inserire cose tipo nome utente e password da associargli.

Passo passo Scopriamo il nuovo tool di installazione

2 Tutto facilissimoAnche se è possibile intervenire per tarare di fino il sistema, il programma di installazione propone in automatico le opzioni più facili, come il profilo “desktop” e alcuni servizi. Sembra quasi di istallare ubuntu: anche qui non serve pensare.

3 Automaticamente!Dopo aver premuto su Continua per la dodicesima volta, il sistema procede in automatico e scarica dalla rete tutti i pacchetti, per poi installarli. Ne approfittiamo per ritemprarci dallo sforzo profuso nell'utilizzo del mouse.

4 Pronti a lavorareIl sistema ha effettuato il reboot: dopo aver inserito la password, siamo dentro... è stato tutto fin troppo facile e, da vecchi debianisti a-riga-di-comando, ci troviamo un po’ spaesati da questa semplicità. Ma se Debian adesso è così facile, a cosa serve ubuntu?

Quale ISO scegliere? Con una buona connessione Internet, basta la netinstall (http://cdimage.debian.org/debian-cd/7.0.0/i386/iso-cd/debian-7.0.0-i386-netinst.iso), cioè una versione ridotta che pesa meno di 280 MB e che contiene il minimo indispensabile per partire, dopodiché farà riferimento unicamente ai repository in rete. Scarichiamo, masterizziamo, accendiamo il PC, inseriamo il disco, selezioniamo il boot da CD e via che si parte!

Debian

LINux PrO 132 17

LXP_132_16_21_Debian 17 06/08/13 14:51

Page 20: Linuxpro 132 Agosto 2013

Scegliere il “ramo” migliorePrima di installare una versione non abbastanza stabile, verifichiamo che ramo ci serve

Debian ha tre “rami”: stable, testing, unstable. Dalla prima alla terza ogni versione contiene software sempre più nuovo rispetto

al precedente “ramo”, ma potenzialmente foriero di problemi. Occorre sottolineare che il concetto di stable (stabile) non si riferisce al grado di affidabilità di funzionamento del software, ma al fatto che il software, una volta dichiarato stabile, non subirà nessuna modifica e manterrà le stesse funzionalità senza introdurne ulteriori: in altre parole, un software stabile non subisce aggiunte di nuove funzionalità ma viene semplicemente mantenuto (cioè ci si limita a correggerne gli errori di programmazione e/o i problemi di sicurezza). Ne deriva che un software stabile è tendenzialmente più sicuro poiché evitare di introdurre nuove funzionalità equivale a non aggiungere possibili bachi di programmazione, per cui, con l’andare del tempo, un software stabile diventa sempre più sicuro/affidabile man mano che nuovi bachi vengono scoperti e corretti. L'assenza di bachi è la caratteristica maggiormente ricercata dagli amministratori di sistemi informatici, e questo è uno dei motivi per cui la versione stable di Debian è popolare tra coloro che installano macchine con funzionalità di server. Il contenuto del ramo “unstable” e quello maggiormente soggetto a modifiche, infatti quando un nuovo software si candida per entrare a far parte della distro Debian, viene piazzato nel ramo unstable: lì viene testato per un certo periodo fino a che non se ne dimostra l'affidabilità, dopodiché, se ritenuto valido, viene spostato nel ramo testing. Il ramo testing è la via di mezzo tra stable e unstable e contiene tutto il software che andrà a formare il corpo della nuova stable. Ogni due anni circa, testing viene congelata, cioè non accetta più nuovi pacchetti e quelli presenti vengono sottoposti a una feroce analisi alla ricerca di bachi che, una a volta risolti, permettono a testing di diventare la nuova stable mentre la vecchia viene marchiata old-stable. Ad ogni modo, gli utenti che continuano a usare la old-stable non hanno

da preoccuparsi, poiché essa viene supportata come minimo ancora per un anno, in modo da dare tutto il tempo per pianificare il passaggio alla nuova versione. Chiaramente l'utente è libero di scegliere il ramo che preferisce: amministratore di server? Stable tutta la vita! utente desktop che cerca la via di mezzo tra novità e sicurezza? Testing fa per voi! Amante delle novità dell'ultimo minuto? Unstable! Per chi invece ama il rischio e il sofware “ancora fresco di compilazione” c’è il ramo experimental, ancora più estremo di unstable.

Un’ulteriore scelta Abbiamo visto come Debian sia “modulabile” dal punto di vista della novità del software, ma lo è anche dal punto di vista “etico”. Cominciamo col dire che un grosso lavoro è stato fatto per purgare il kernel da tutti i blob binari che aveva incamerato negli anni: Debian si può fregiare del fatto che la versione Linux da lei usata è completamente libera, cioè l’utente non è costretto a installare nemmeno un bit che non sia stato generato da sorgenti accessibili liberamente. una grande libertà “etica” alla quale Debian non vuol costringere nessuno a rinunciare. Infatti tutto il Software Libero è contenuto nel ramo “main”, cioè quello principale. A ogni modo, non sarebbe giusto obbligare l’utente a essere etico se lui non lo vuole, ed ecco perché esiste il ramo “non-free” (non-libero) che contiene software e applicazioni per le quali non sono disponibili i sorgenti: tipicamente i fi rmware di hardware particolare (schede video,

schede di rete wireless, ecc.) ma anche applicativi terzi. A metà strada tra il main e il non-free, troviamo il ramo “contrib”: esso contiene Software Libero che però dipende, per il suo completo funzionamento, dall'utilizzo di qualche componente appartenete al ramo non-free.

Debian è comporta da 37.500 packages, in italiano, “pacchetti”. Ma cosa è un pacchetto? un pacchetto non è altro che un archivio, un fi le compresso in formato .deb, che contiene tutto ciò che il suo realizzatore ritiene necessario. Per esempio, il pacchetto di leafpad, un semplice editor di test grafi co, contiene il programma vero e proprio, il manuale, e le “istruzioni” per il gestore di pacchetti su come e dove il pacchetto stesso deve essere installato sul disco, la lista delle dipendenze e così via. Ma esistono moltissimi pacchetti (la maggioranza) che non contengono programmi veri e propri, ma librerie, documentazione, sorgenti e così via. Nonostante i pacchetti siano 37.500, i “programmi”, cioè gli applicativi, sono meno della metà. Perché questa

differenza? Beh, alcuni programmi sono ripetuti varie volte: per esempio il kernel è disponibile compilato per 486, per 686, con o senza supporto PAE, e così via. Ma la cosa principale è che Debian è un progetto internazionale, per cui ci sono i vari pacchetti di nazionalizzazione, cioè che contengono la traduzione di LibreOffi ce, GNOME, KDE, ecc. nelle varie lingue. Per esempio, pur essendo di base uno solo, LibreOffi ce ha 174 pacchetti accessori per la localizzazione. Il dizionario dei sinonimi di LibreOffi ce è disponibile i 14 lingue. Iceweasel? un programma, ma 90 lingue, e così via: giocando con apt-get, abbiamo trovato piu di 500 pacchetti dedicati alla localizzazione di vari programmi, 3.400 pacchetti development (sviluppo) necessari come appoggio

se si desidera compilare da sorgente. Ci sono poi circa 1.000 pacchetti di transizione (necessari per non “rompere” la continuità tra una versione e l’altra) e 170 metapacchetti (pacchetti che installano altri pacchetti). Infi ne 2.500 pacchetti “doc”, cioè documentazione. In meno di 5 minuti ecco trovati più di 7.600 pacchetti di “non-programmi” (ma ce ne sono sicuramente di più). Se 2.500 pacchetti di documentazione vi sembrano troppi, rammentiamo che la conoscenza è forza, e tale forza Debian la fornisce agli utenti sottoforma di documentazione, cioè di manuali e istruzioni. A ogni modo, anche se “solo” 18.000, gli applicativi sono talmente tanti che non abbiamo ancora trovato una cosa che non sia fattibile tramite un software “debianizzato”.

Il concetto di “pacchetto” Dai 474 pacchetti della prima versione, ai 37.500 di Debian 7.0

Aptitude e Synaptic, i programmi per gestire i pacchetti più potenti ed eleganti

Debian

18 LINux PrO 132

LXP_132_16_21_Debian 18 06/08/13 14:51

Page 21: Linuxpro 132 Agosto 2013

La novità maggiore di Debian 6.0 è stata la presenza di una nuova versione che adotta ufficialmente il kernel di FreeBSD.

Debian non è quindi più dipendente da un unico kernel – Linux – ma è disponibile anche con un altro nucleo. La versione si chiama Debian GNU/kFreeBSD, dove “k” sta a indicare che da FreeBSD si è unicamente prelevato il kernel, modificandolo quel minimo necessario affinché funzioni perfettamente con lo spazio utente GNU. Debian GNU/kFreeBSD si limita al supporto delle due piattaforme più diffuse, cioè i386 e amd64: poiché queste due architetture coprono la maggioranza dell’installato, si può considerare la loro disponibilità il logico inizio, augurandosi il supporto futuro ad altre architetture. Le versioni 7.0 e 7.1 hanno smussato gli ultimi spigoli che erano rimasti, rendendola appetibile non solo ai sistemisti che cercano stabilità a tutto tondo, ma anche agli utenti desktop. Installandola si scopre con piacere che pochissimo varia rispetto a un’installazione basata su Linux perché gli sviluppatori si sono sforzati di mantenere una omogeneità d’azione in quanto dkpg, apt-get e aptitude sono gli stessi di sempre. Dopo aver visto con sollievo che la riga di comando è l’amata Bash, si può installare KDE, GNOME, Window Maker, OpenOffice.org, Iceweasel, K3b, Brasero, VLC e tutti i programmi soliti: dopo un apt-get install l’attività va a buon fine, come ci si aspetta, e l’esperienza utente non si discosta da quella tipica basata su Linux. Per amore di precisione, va detto che le differenze ci sono e non potrebbe essere altrimenti, vista la differente natura del kernel: bisogna dimenticare eth0, sda1 e gli altri nomi di device con cui si è cresciuti e mettere in conto di imparare nomi diversi per indicare le stesse cose. I dischi non sono partizionati secondo lo schema “pinguino” ma adottano il concetto delle “slice” (fette), tipiche del mondo *BSD. Dando uno sguardo ad Aptitude, si scopre che rispetto ai 37.500 pacchetti disponibili per Linux

Parliamo di Debian GNU/kFreeBSD Debian abbandona ufficialmente la sua dipendenza da un singolo kernel

i386, qualche centinaio di pacchetti mancano all’appello. Se la presenza del pacchetto XYZ è per voi fondamentale, sarebbe meglio verificarne la presenza tramite la pagina http://packages.debian.org, in modo da evitare spiacevoli delusioni dopo l’installazione. Ci si potrebbe chiedere “perché” è stato fatto tutto il lavoro in implementazione (che comporta quindi la ricompilazione di tutta la distro) su un nuovo kernel, quando Linux soddisfa egregiamente le necessità dell'utente medio. Beh, prima di tutto Debian/KfreeBSD va “meglio” del puro FreeBSD, complice il migliore spazio utente GNU. A sua volta, Debian/Linux va “meglio” di Debian/kfreeBSD, complice un miglior comportamento generale di Linux rispetto a kFreeBSD: anche se di tre anni fa e quindi bisognosi di essere rifatti, i test reperibili in Rete (http://www.phoronix.com/scan.php?page=article&item=debian_kfreebsd&num=1) riportano nella maggioranza dei casi la vittoria a favore di Linux, molti risultati paritari e qualche macroscopica eccezione, per esempio durante l’uso di SQLite, dove Linux viene stracciato dal concorrente. Va inoltre considerato che unendo lo spazio utente GNU a un kernel BSD, Debian ha dato un grosso stimolo e aiuto per tutti coloro che si sono sempre voluti avvicinare al mondo dei cugini *BSD ma temevano uno “strappo” troppo drastico rispetto al conosciuto e confortevole ambiente GNU/Linux. Va riportato che il kernel di FreeBSD offre evidenti vantaggi rispetto al kernel Linux, tra i quali vanno citati i seguenti:

la presenza di OpenBSD Packet filter, l’avanzato sistema per la gestione di firewall, uno dei punti forti dei sistemi *BSD;

l’integrazione nello spazio-kernel di ZFS, il filesystem a 128 bit che per motivi

di incompatibilità di licenza (la CDDL) non può essere integrato nel kernel Linux, rilasciato sotto GPL;

l’esistenza di jails, un potente ed elegante sistema di virtualizzazione. Essendo una via di mezzo tra chroot e kvm, jails potrebbe essere quella giusta via di mezzo che cercavate;

il supporto ai driver NDS;la presenza del solo /dev gestito da devfs,

al contrario dei tre sistemi presenti in GNU/Linux;il sottosistema audio è OSS, standard dei

sistemi UNIX. Inoltre lo sviluppo di FreeBSD (e del suo kernel) è molto rigido e centralizzato, per cui ci sono molti meno potenziali problemi di licenze, cause legali, patent-troll, e così via. Ma al di là dei vantaggi tecnici e legali, vogliamo da ultimo sottolineare il vantaggio “morale”: per tutte le altre distro, Linux è “il” kernel, mentre per Debian è solo “un” kernel. Là dove coloro che usano *buntu, Fedora, Slackware, ecc. sono costretti a usare Linux, Debian permette una valida alternativa. In ultima analisi, ecco il più grande vantaggio: Debian consente di scegliere anche quale kernel utilizzare.

All'URL www.phoronix.com/scan.php?page=news_item&px=MTM4NzQ trovate un nuovo benchmark che mette a confronto le prestazioni di Debian GNU/Linux 7.0 e Debian GNU/kFreeBSD 7.0

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!299nuMeRo

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°299 €4,99 game makercapolavori creati da una sola persona!

neverwinterun gioco di ruolo di massa per gli amanti di dungeons & dragons!

CoMpANy of HEroESUna guerra spietata per strateghi raffinati!

La fiera dei sogni è arrivata in città!

ASSALTo froNTALE!

AMErICANo!

SpECIALE3

2

accende la tua passione!299nuMeRo

299

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

CoCoCoCoCoMMpppANANANANANANANpANppANppANppANp yyof of of of HEHEHErororororoESESESESUna Una Una Una Una Una Una Una Una Una Una Una Una Una Una Una Una Una Una Una Una Una Una Una Una guerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataguerra spietataper per per per per per per strateghi raffinatistrateghi raffinatistrateghi raffinatistrateghi raffinatistrateghi raffinatistrateghi raffinatistrateghi raffinatistrateghi raffinatistrateghi raffinatistrateghi raffinatistrateghi raffinatistrateghi raffinatistrateghi raffinatistrateghi raffinatistrateghi raffinatistrateghi raffinatistrateghi raffinatistrateghi raffinatistrateghi raffinatistrateghi raffinatistrateghi raffinatistrateghi raffinatistrateghi raffinatistrateghi raffinatistrateghi raffinatistrateghi raffinatistrateghi raffinatistrateghi raffinati! !

La La La La fiera dei sognifiera dei sognifiera dei sognifiera dei sognifiera dei sognifiera dei sognifiera dei sognifiera dei sognifiera dei sognifiera dei sognifiera dei sognifiera dei sognifiera dei sognifiera dei sognifiera dei sognifiera dei sogniè arrivata in città!è arrivata in città!è arrivata in città!è arrivata in città!è arrivata in città!è arrivata in città!è arrivata in città!è arrivata in città!è arrivata in città!è arrivata in città!è arrivata in città!è arrivata in città!è arrivata in città!è arrivata in città!è arrivata in città!è arrivata in città!è arrivata in città!è arrivata in città!è arrivata in città!è arrivata in città!è arrivata in città!è arrivata in città!è arrivata in città!è arrivata in città!è arrivata in città!è arrivata in città!è arrivata in città!è arrivata in città!è arrivata in città!è arrivata in città!è arrivata in città!

ASSALTo froNTALE!

AMErICANo!

La La La La La fiera dei sognifiera dei sognifiera dei sognifiera dei sognifiera dei sognifiera dei sognifiera dei sognifiera dei sognifiera dei sognifiera dei sognifiera dei sognifiera dei sognifiera dei sognifiera dei sognifiera dei sognifiera dei sognifiera dei sognifiera dei sogniSSppECIALECIALECIALECIALECIALECIALECIALECIALEE33

222222222Scatta foto mozzafiato in b/n anche d’estate!

bianco&neroPer TUTTe Le STagioni

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

Mensile N°132 €5,90 Settembre 2013

La prova compLeta deLLa canon eoS 100d

8 ottiche zoom per full-frame Obiettivi di qualità a prezzi cOnvenienti

E in più...10 progetti

facili e velociCome migliorare le foto di viaggioTest: accessori

PaeSaggi Da Sogno

La ProfonDiTà Di camPoImpara a gestirla per sfondi sfocati o panorami perfettamente nitidi

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

Settembre 2013Settembre 2013

Saggiogno

lo smartphone DI ubuntu sarà tIm

Prova le migliori alternative alla versione desktoP

Con Birdie controlliamo facilmente tutti i nostri account Twitter

tWittare Con tUtti

Player tUttofare

Webradio, testi delle canzoni e altro ancora con XiX Music Player

UBUNTUFACILEU

BUN

TU FACIL

E

desktoP sPaZiale

Usiamo Gimp per creare uno sfondo davvero fantascientifico!

sempre CON Te!

i fratelli di UBUntU

meTTI UBUNTU sU CHIAVeTTA UsB e pOI UsAlO sU OgNI pC!

lo smartphone DI ubuntu sarà tIm

UBUNTUUBUNTUFACILE

Prova le migliori alternative ntU

e pOI UsAlO sU OgNI pC!

Ub

untu

Fac

ile N

°6 M

ens

ile €

2,5

0

sCONFIgge l’IpHONe!sCONFIgge l’l’l IpHONe!

sAmsUNggAlAXY s4

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

Debian

LXP_132_16_21_Debian.indd 19 07/08/13 16:35

Page 22: Linuxpro 132 Agosto 2013

Chi usa Debian può “vivere di aggiornamenti”. Che significa? Significa che se tirate fuori dall’armadio un PC che monta una vecchia versione, per esempio Debian 3.0, è possibile (tramite una serie di passaggi intermedi) portare il sistema a Debian 7.0, senza necessità di riformattare, perdere le configurazioni dei software installati o l'altro. Senza essere così estremi, aggiornare da Debian 6.0 a Debian 7.1 è faccenda di pochi minuti, cosa ottima soprattutto per amministratori di server che non si possono permettere un “fermo macchina” troppo prolungato.

Intervista a Stefano Zacchiroli

Abbiamo contattato Stefano Zacchiroli, il Capo Progetto Debian dall'aprile 2010 all'aprile 2013, ed e stato così gentile da rispondere a qualche nostra domanda su questo progetto.

LXP: Stefano Zacchiroli, per tre anni Project Leader di Debian. Nemmeno il fondatore Ian Murdok è rimasto in carica così a lungo. Come mai questa eccezione tutta italiana?SZ: Non credo c’entri l’italianità. Debian, a differenza dei nostri principali concorrenti, è un progetto su base volontaria che non dipende da nessuna azienda in particolare. Questo implica che dobbiamo farci tutto in casa: dallo sviluppo software all’infrastruttura tecnica, dalla comunicazione al reclutamento dei volontari, dalla contabilità al disbrigo delle beghe legali. In questi tre anni, iniziati un po’ per caso su incoraggiamento di amici, ho avuto la fortuna di trovarmi a mio agio nel ruolo di Debian Project Leader, e ho sempre avuto la sensazione che i miei sforzi fossero apprezzati. Questo mi ha permesso di offrire questo servizio a lungo fi no a quando, semplicemente, non è giunta una sana voglia di cambiare nuovamente mansioni, sempre all’interno del progetto Debian.

LXP: Debian è una realtà in costante crescita. Come amministrare con effi cacia un progetto che ormai è internazionale e che integra nella versione x86 più di 37 mila pacchetti?SZ: Debian è decisamente internazionale. I membri uffi ciali del progetto sono un migliaio e sono sparsi nei cinque continenti, con una prevalenza di Europa e Nord America. L’organizzazione tecnica è interamente basata su gruppi di lavoro che si formano spontaneamente attorno a interessi comuni. Le squadre si dividono tra loro le responsabilità di insiemi di pacchetti tecnicamente affi ni. Per quanto riguarda i pacchetti, ciò che resta da fare dal punto di vista gestionale è scovare i “buchi” in questa fi tta rete di squadre, scoprendo dove siamo sguarniti e cercando di porvi rimedio, gestire i confl itti che inevitabilmente possono capitare in un progetto di queste dimensioni e dare la linea di lungo termine basandosi sulle tendenze e i bisogni del movimento globale per il Software Libero. Non è poco, certo, ma è molto motivante!

LXP: Sempre più realtà “pesanti” adottano Debian. È di pochi giorni fa la notizia che Google passerà a Debian molti dei suoi sistemi: un suo commento.SZ: è decisamente un periodo d’oro per Debian.

Già prima della recente release di Wheezy ci siamo affermati come leader nel mercato dei Web server: circa 1 server GNu/Linux su 3, e più di 1 server su 10 complessivamente nel World Wide Web, utilizza Debian. Con l’avvento di Wheezy siamo stati al centro di altre ottime notizie, come l’adozione di Debian da parte della Stazione Spaziale Internazionale, e la scelta di Google di puntare su Debian come sistema operativo di default per il suo “cloud” pubblico (Google Compute Engine). Più in generale, prevedo per gli anni a venire una forte espansione di Debian nel cosiddetto “cloud” (inteso qui come Infrastructure as a Service), sia nelle varianti pubbliche che private. Credo che la generale tendenza di maggiore adozione di Debian sia dovuta a un aumento di riconoscenza del fatto che Debian offre garanzie non solo di qualità tecnica, ma anche di indipendenza da specifi ci interessi commerciali. In questo modo possiamo offrire un “ecosistema informatico” più sicuro per chi deve fornire soluzioni tecniche stabili sul lungo periodo, indipendentemente dalle “mode” del mercato.

LXP: Cosa consiglierebbe a chi desidera agire direttamente in Debian e diventare un “responsabile di pacchetti”?SZ: Sporcatevi le mani! Cominciate dalla lista delle Squadre di Lavoro sul nostro wiki (http://wiki.debian.org/Teams) e cercate qualcosa che corrisponda ai vostri interessi e alle vostre abilità. Proprio perché dobbiamo farci tutto in casa, ce n’è per tutti i gusti e per tutte le competenze, anche in ambiti slegati dallo sviluppo software: giornalismo, organizzazione di eventi, contabilità, traduzioni, ecc. una volta scelta una Squadra, siate presenti sui loro media (mailing list, canali IrC, Bug Tracking System, ecc.) e cominciate semplicemente a dare una mano facendovi conoscere. Il resto verrà da sé, naturalmente.

LXP: Linux, KfreeBSD e poi? Si vociferava di una versione GNU/Hurd in concomitanza con la 7.0 ma nessun annuncio, né uffi ciale né uffi cioso, è comparso sul sito di Debian. Sarà necessario aspettare “Jessie” (Debian 8.0) per avere disponibile un "tridente" di kernel?SZ: Non c’è bisogno di aspettare, questo “tridente”

è già realtà. Il modo migliore per provare Hurd è, da molti anni a questa parte, quello di usare Debian GNu/Hurd, come raccomandato dallo stesso progetto GNu. è di poco tempo fa il nostro annuncio della release Debian GNu/Hurd 2013 (http://bits.debian.org/2013/05/debian-gnu-hurd-wheezy.html), che è indubbiamente una buona base di partenza. Cosa diversa è la decisione, da parte nostra, di etichettare o meno Debian GNu/Hurd come un prodotto Debian “uffi ciale”, parte delle nostre release stabili, come facemmo per la prima volta un paio di anni fa con Debian GNu/kFreeBSD. Questa scelta si basa su quanto le aspettative di qualità e di completezza dell’archivio, che i nostri utenti hanno per qualsiasi release stabile di Debian, siano soddisfatte o meno. Con mio grande rammarico, abbiamo valutato che in Wheezy fosse troppo presto per dichiarare stabile Debian GNu/Hurd, che però resta comunque disponibile per gli utenti più avventurosi. Spero anch’io che saremo pronti a fare il grande passo in Jessie (nome in codice della prossima stable). Tutto dipenderà da quanti entusiasti di GNu/Hurd si uniranno a noi per renderlo possibile.

Stefano Zacchiroli, per tre anni capoprogetto Debian

In Debian, ogni bug (errore nel software) ha un numero e il bug #363516 sarà ricordato a lungo. La notizia è del 2008, ma ancora brucia: il manutentore di un pacchetto aveva modifi cato i sorgenti quel tanto che bastava per eliminare un fastidioso messaggio di avviso in fase di compilazione. Peccato che questa innocente modifi ca aveva minato la sicurezza dei certifi cati SSL, con il risultato che gli amministratori Debian di mezzo pianeta hanno vissuto con un bug critico dal 2006 al 2008 e, quando scoperto, ha obbligato a rigenerare migliaia di chiavi criptografi che. Anche se ottima, Debian non è perfetta.

Da Woody 3.0 a Wheezy 7.1: 11 anni senza riformattare!

#363516, il numero della bestia

Un ulteriore vantaggio

Debian

20 LINux PrO 132

LXP_132_16_21_Debian 20 06/08/13 14:52

Page 23: Linuxpro 132 Agosto 2013

Debian funziona su dispositivi di ogni tipo, dai palmari ai supercomputer: non esiste certo solo l’architettura x86, lo sapete? Tanto per dirne una, c’è ArM che negli ultimi mesi sta spopolando, ma anche se non sulla vostra scrivania o nel vostro cellulare, altre architetture come SPArC, MIPS e S/390 sono presenti nei datacenter di mezzo mondo. Beh, Debian è anche lì e supporta un totale di nove architetture:

32-bit PC / Intel IA-32 (i386), 64-bit PC / Intel EM64T / x86-64 (amd64), Motorola/IBM PowerPC (powerpc), Sun/Oracle SPARC (sparc), MIPS (mips big-endian), mipsel (little-endian), Intel Itanium (ia64), IBM S/390 (32-bit s390 e 64-bit s390x) ARM EABI (armel per l'hardware vecchio

e armhf per quello più recente che utilizza il fl oating-point via hardware).

Tante architetture supportate!

A l di là di cose necessarie come la scelta dell’installazione grafica e della lingua, durante l'installazione siamo stati

in modalità “cervello spento”, tipica di altre distro e/o sistemi operativi. Insomma, se anni fa chi installava Debian doveva sapere cosa scegliere e quando, ora non è più necessario. Certo, chi sa e vuole tarare di fino il sistema (partizioni separate per /home, /usr, scegliere il tipo di filesystem e così via) sì può continuare a farlo, ma ora tale attività non è più obbligatoria ma semplicemente opzionale. Gli utenti sono ora liberi di ignorare la parte “sotto il cofano” del sistema, quindi non più tecnici, ma semplici utenti. una volta terminata l'installazione e avviato il sistema, ci si ritrova nel desktop basato su GNOME, completo di tutte le applicazioni tipiche come la suite LibreOffice, Iceweasel, gestore di file audio/video, giochi e tool di sistema. Facciamo partire Iceweasel (il Firefox di Debian) e notiamo che è preinstallato Adblok Plus, la nota estensione che permette di tener fuori dal proprio PC la pubblicità eccessivamente invasiva che ormai infesta ogni angolo del Web. Proviamo YouTube e... funziona, i filmati funzionano! Prima era necessario installare il plug-in relativo: forse che sia stato automaticamente installato il non-libero plug-in Flash? Niente di tutto questo. Apriamo una console e, indagando nella lista di pacchetti installati tramite il comando dpkg -l | grep -i flash, vediamo che è stato installato Gnash, il noto clone a sorgenti aperti di Flash, per cui siamo liberi di vedere i filmati e lo facciamo tramite Software Libero! A conferma di ciò,

Semplicità e indipendenzaFacilità di installazione e un vasto parco software rendono Debian oggi una scelta perfetta

guardando nel file /etc/apt/sources.list, notiamo che solo il ramo main è presente nella lista di repository accessibili, quindi Debian salvaguarda la nostra etica di utenti GNu. Di nostra responsabilità la scelta di essere meno adamantini, aggiungendo le voci contrib e non-free in coda a main: come sempre Debian propone la retta via, ma non impone a nessuno di seguirla. Se poi vogliamo installare altro, basta attivare l’ormai noto Synaptic selezionando dal menu Strumenti di sistema ➠ Amministrazione ➠ Gestore pacchetti e lì c’è solo l’imbarazzo della scelta!

Tante Debian... e poi? Per quanto riguarda l’ambito kernel, Debian ha sempre avuto come obiettivo l’integrazione di Hurd, lo storico microkernel che nei piani iniziali avrebbe dovuto essere “il” kernel del progetto GNu, ma che per motivi di complessità implementativa non è mai stato adottato. I puristi della Free Software Foundation – qualcuno li potrebbe etichettare come troppo pignoli – non hanno mai visto di buon occhio il fatto che Linus Torvalds accettava “pezzi” di software non libero, solitamente sotto forma di “blob” binari (come il firmware di schede video, chiavette wireless, ecc). Ad ogni modo, vista l’assenza di alternative usabili, ci si è sempre dovuti accontentare di Linux. Bene, sappiate che, ancorché quasi in modo lento discontinuo e “dietro le quinte”, Hurd ha subito un costante lavorìo da parte degli appassionati, che lo hanno portato lentamente a essere usabile. A dimostrazione di ciò, una versione non ufficiale

di Debian GNu/Hurd è stata resa disponibile in data 24/05/2013 e le immagini ISO possono essere prelevate da qui http://ftp.debian-ports.org/debian-cd/hurd-i386/current/. L'installazione non si discosta molto dalla “solita” procedura ma si noti che, per quanto molto sia stato fatto e che molto di più resta da fare, vi anticipiamo subito che non è una bella idea evitare di leggere le istruzioni post-installazione. Diciamo quindi che si tratta di un buon inizio, ma il bello verrà tra un paio d’anni, quando avremo la prossima Debian “Jessie” 8.0.

ConclusioniCi sembra di avere detto più o meno tutte le ragioni che rendono Debian degna di essere utilizzata, ma a chi retoricamente ancora domanda “perché scegliere Debian?”, rispondiamo con uno stringato riassunto: vasto parco software, ampia base hardware supportata, installabile su nove famiglie di microprocessori, disponibilità di due kernel, circa mille manutentori, centinaia di distro derivate, continuo aumento di programmi disponibili, dimostrato successo del modello di sviluppo, attenzione all’etica, supporto agli utenti, ampia comunità, comunità democratica basata sul principio della meritocrazia, indipendenza da pressioni commerciali, cura (maniacale) della qualità, stabilità e sicurezza del software, tradotta in 73 lingue... facciamo così, se voi trovate un motivo per non usare Debian, ditecelo, perché noi non ne abbiamo trovato nemmeno uno! LXP

Debian

LINux PrO 132 21

LXP_132_16_21_Debian 21 06/08/13 14:52

Page 24: Linuxpro 132 Agosto 2013

Dentro l’EFFDentro l’EFF

22 LINUX PRO 132 LINUX PRO 132 23

Dentro l’EFFLinux Pro indaga su come la Electronic Frontier Foundation (EFF)

ci protegge dalle multinazionali e dalla sorveglianza dei governi

La nostra libertà di condividere informazioni, esprimere opinioni, elaborare nuove idee e tutelare la nostra privacy è minacciata.

I governi sono alla continua ricerca di nuovi modi per monitorare le nostre attività, mentre le grandi aziende tentano costantemente di imporci i loro prodotti. Un pezzetto per volta, tutto ciò sta erodendo le nostre libertà. I media tracciano spesso dei parallelismi tra la nostra attuale condizione e1984, di George Orwell, un paragone che alcuni trovano esagerato. Però, pensateci un attimo: i governi intercettano le nostre comunicazioni telefoniche, leggono le nostre email e sorvegliano i nostri movimenti online. Social media e motori di ricerca stanno costruendo giganteschi database che tracciano le nostre abitudini di navigazione e di acquisto.

e le sue attività coprono l’intero spettro della lotta per la libertà: assistenza nelle controversie legali, pubblicazione di libri bianchi che illustrano le attuali minacce, organizzazione di campagne di sensibilizzazione su varie questioni e sviluppo di tecnologie che difendono le nostre attività online dagli sguardi indiscreti. Si tratta di un’organizzazione senza fini di lucro e finanziata mediante donazioni, che ha sede a San Francisco e vanta una squadra di collaboratori decisamente notevole (guardate su www.eff.org/about/staff), che comprende legali, analisti e attivisti. In generale, ha un atteggiamento estremamente favorevole al Software Libero e alla cultura GNU/Linux. Scoprite come è nata la EFF, che cosa ha fatto finora e come si sta preparando per le battaglie del futuro.

Tutto ciò ha luogo in un contesto fatto di perenni presunte minacce terroristiche, intrallazzi tra politici e dirigenti dei media e super-ricchi che diventano sempre più ricchi.

Occhi apertiPerciò, è opportuno essere vigili e magari perfino un po’ paranoici. Un mondo alla 1984 non si costruisce in un giorno e uno stato di polizia non appare dall’oggi al domani. I tempi però stanno cambiando, le minacce alla nostra libertà arrivano da ogni direzione e la battaglia da combattere richiede una grande quantità di tenacia e determinazione. Uno dei gruppi decisamente schierati dalla nostra parte è l’EFF.Obiettivo della Electronic Frontier Foundation è “difendere i vostri diritti nel mondo digitale”

22 LINUX PRO 132

LXP_132_22_25_LXF173.feature_wteff 22 06/08/13 14:37

Page 25: Linuxpro 132 Agosto 2013

Dentro l’EFFDentro l’EFF

22 LINUX PRO 132 LINUX PRO 132 23

Dentro l’EFF

Eppure è proprio questo che la EFF fa poco dopo la sua fondazione nel luglio 1990. I servizi segreti USA perquisiscono un piccolo editore di libri sui videogiochi

alla ricerca di documenti tecnici rubati che potrebbero cadere nelle mani sbagliate. Non viene rinvenuta alcuna prova di reato ma l’editore in questione, ritrovatosi con i computer sequestrati, nell’impossibilità di rispettare le scadenze e costretto a licenziare il suo personale, va in fallimento. Quel che è peggio, gli 007 cancellano buona parte dei suoi preziosi dati. Un gruppo di esperti di informatica impegnati nella difesa delle libertà civili, che avevano già assistito a casi analoghi di palese violazione dei diritti nel campo digitale e online, viene a sapere dell’accaduto. Così, Mitch Kapor (fondatore di Lotus e in seguito presidente della Mozilla Foundation), John Perry Barlow (ex-autore dei testi dei Grateful Dead lyricist) e John Gilmore (già dipendente di Sun Microsystems) fondano la EFF, ricevendo ulteriori finanziamenti da Steve Wozniak, uno dei fondatori di Apple. La loro prima impresa consiste nel sostenere il suddetto editore nella causa da lui intentata contro i servizi segreti. Alla fine, l’editore vince

Dentro la EFF

23

Guida da ritagliare: botta e risposta

1 “Io non ho paura del governo X o dell’azienda Y!”.Buon per voi; ma non potete sapere che cosa X o Y diventeranno nel futuro. Al momento il vostro governo può anche essere decente; ma che ne sarà di tutti i dati da esso raccolti su di voi quando salirà al potere qualcun altro? Se a governare sarà un partito che non vi piace affatto, sarete ancora a favore di tutte queste leggi sulla sorveglianza e tecniche di monitoraggio delle comunicazioni? Lo stesso vale per le aziende: anche se secondo voi l’azienda Y sta rispettando alla lettera la vostra privacy e i vostri dati, come si comporterà tra dieci anni quando avrà una dirigenza completamente diversa?

2 “Se una persona fa qualcosa online e non vuole che altri lo sappiano, forse non dovrebbe farla”.Tutti noi abbiamo diritto alla privacy ed esistono abbondanti ragioni perfettamente legali e valide per desiderare di fare qualcosa su Internet senza essere sorvegliati e monitorati. Per esempio, potreste volervi informare su un problema di salute imbarazzante senza essere travolti da quel momento in poi da una miriade di annunci pubblicitari a esso legati. Potreste voler prenotare segretamente una vacanza o acquistare un regalo per una persona amata, senza lasciare traccia dell’acquisto fino al momento di svelare la sorpresa.

O ancora, potreste voler studiare un argomento storico o politico sensibile senza far scattare allarmi in qualche ufficio governativo.3 “Se l’azienda X dovesse mettersi a spiarmi, passerò all’azienda Y”.Magari la vita fosse così semplice! Non è come cambiare panetteria: può essere estremamente complicato. Che ne sarà di tutti i libri e la musica che avete acquistato da X e che funzionano solo sui dispositivi X? Come farete per prelevare tutti i vostri dati e trasferirli a Y? Che fine faranno tutti i profili raccolti da X su di voi nel corso degli anni? Potrete o no farli cancellare? Di rado le cose sono così semplici.

Molti benpensanti ritengono che sia tutto un polverone inutile e che non abbiamo bisogno di misure difensive così agguerrite. Ecco una rassegna dei tipici argomenti da loro usati, con le relative repliche

Sfidare i servizi segreti degli Stati Uniti è un’impresa decisamente rischiosa…due delle tre udienze, ottenendo risarcimenti di 50.000 dollari per danni e di 250.000 dollari per le spese legali. Ciò che più conta, tuttavia, è che il caso porta alla ribalta la seguente questione: le comunicazioni elettroniche meritano o no la stessa tutela legale che protegge altre forme di comunicazione (per esempio le conversazioni telefoniche)? Il tribunale decreta che i servizi segreti non avevano il diritto di accedere alle email dell’editore senza un mandato di perquisizione che facesse specifico riferimento alla posta elettronica, creando così un precedente legale che fa tuttora giurisprudenza. La EFF ha in seguito fornito assistenza per molte altre cause legali, come vedremo più avanti; il suo campo d’azione si è ampliato di fronte al boom di Internet degli anni ‘90 e ai nuovi problemi da esso sollevati. Gilmore e Barlow fanno tuttora parte della direzione della EFF e a loro si sono uniti altri nomi celebri, come Brian Behlendorf, tra i primi sviluppatori di Apache e John Buckman, fondatore del servizio musicale Magnatune). I dirigenti coordinano un gruppo di 44 collaboratori, con decine di migliaia di sostenitori sparsi in tutto il mondo.

Sfidare i servizi segreti degli Stati Uniti è un’impresa decisamente rischiosa…

Mitch Kapor, creatore di Lotus 1-2-3 e leader e co-fondatore di EFF

LINUX PRO 132 23

LXP_132_22_25_LXF173.feature_wteff 23 06/08/13 14:37

Page 26: Linuxpro 132 Agosto 2013

Dentro l’EFFDentro l’EFF

24 LINUX PRO 132 LINUX PRO 132 25

Tecnologia

1 HTTPS Everywhere • www.eff.org/https-everywhereQuesta estensione per i browser Firefox e Chrome tenta di utilizzare connessioni sicure HTTPS ovunque possibile, anche sui siti che utilizzano come protocollo predefinito il normale HTTP. Il trasferimento dei dati tra il vostro computer e il sito remoto viene criptato. Non tutti i siti supportano il protocollo HTTPS, perlomeno su ogni pagina, perciò potete disattivare l’estensione per siti specifici cliccando su un’icona.

2 Panopticlick • http://panopticlick.eff.orgUna pagina Web geniale e un po’ inquietante che vi mostra quante informazioni vengono inviate ai siti Web dal vostro browser. Anche se avete disattivato i cookie, i siti potrebbero comunque identificarvi e tracciarvi sulla base di una combinazione di dati forniti dal browser, come la stringa dell’user agent, le versioni dei plug-in,

le dimensioni dello schermo e i font installati. Questa è la vostra ‘impronta digitale del browser’ e se non corrisponde a quella di nessun altro utente di Internet, individuarvi è facilissimo.

3 Switzerland • www.eff.org/pages/switzerland-network-testing-toolÈ noto che alcuni provider di servizi Internet interferiscono con le connessioni dei loro utenti, tentando di limitare l’uso di determinate tecnologie come BitTorrent. Switzerland vi consente di testare l’integrità delle connessioni tra 2 computer su Internet, avvertendovi se i pacchetti di dati IP sono stati modificati durante il percorso.

4 TOSBack • www.tosback.orgI termini di servizio dei siti Web di solito si estendono per migliaia di parole e traboccano di termini legali incomprensibili, fatti solo per permettere agli avvocati

di darsi importanza. Questo sito vi informa quando i principali servizi online modificano i loro termini di servizio, evidenziando le parti che potrebbero riguardarvi. Perciò, se per esempio venite a sapere che Facebook sta modificando i suoi termini di servizio ma non avete voglia di cercarvi tutte le differenze, questo sito può aiutarvi.

Decisioni difficiliCome la EFF sceglie le sue battaglie

Progetti software sostenuti dalla EFF che mirano a tutelare la vostra libertà

Panopticlick è un sito sperimentale che individua il tracciamento online e vi aiuta a proteggervi

In che modo la EFF decide quando offrire assistenza legale? Dopotutto, né il tempo né i fondi a sua disposizione sono illimitati e i settori in cui potrebbe impegnarsi sono innumerevoli. Il personale

della EFF valuta costantemente le richieste che pervengono a [email protected], indirizzo a cui può rivolgersi chiunque necessiti di assistenza legale; la scelta di mettere le risorse della fondazione al servizio di un caso specifico dipende da alcuni punti chiave. Anzitutto, se il caso potrebbe avere un forte impatto in campo legale, creando un precedente per futuri casi analoghi, è più probabile che la EFF decida di scendere in campo. I casi-simbolo, quelli che modificano il futuro, sono tra l’altro utili per sensibilizzare l’opinione pubblica sulle attività della fondazione. In secondo luogo, ha grande importanza anche

la possibilità per la EFF di aiutare più persone o interi gruppi, per esempio organizzando una class action. Infine, la EFF è particolarmente incline ad aiutare persone e gruppi che semplicemente non possono permettersi di sostenere le enormi spese legali di questo tipo di cause. In alcune occasioni la fondazione viene criticata per il suo silenzio su specifiche questioni, in particolare dopo la comparsa di grosse novità relative ai diritti digitali, quando Internet brulica di prese di posizione sulla questione del momento. La EFF, tuttavia, deve giocare d’astuzia:

“La peggior cosa che potremmo fare sarebbe prendere posizione pubblicamente prima di aver elaborato

una strategia legale”. Perciò, la prossima volta che noterete che un governo o un’azienda

sta limitando indebitamente la vostra libertà e che la EFF non apre bocca, sappiate

che potrebbe già essere impegnata a indagare sulla questione.

LXP_132_22_25_LXF173.feature_wteff 24 06/08/13 14:37

Page 27: Linuxpro 132 Agosto 2013

Dentro l’EFFDentro l’EFF

24 LINUX PRO 132 LINUX PRO 132 25

Contro AppleA metà degli anni 2000, i siti che si occupano di voci relative a Apple vivono un momento d’oro. La caratteristica segretezza di Apple e l’espansione della sua linea di iGadget rendono particolarmente allettanti per questi siti le fughe di notizie relative ai suoi prodotti. Occasionalmente, notizie e foto intriganti trovano il modo di filtrare dal quartier generale di Apple e a quel punto risulta molto difficile impedirne la diffusione. Quindi Apple, a cui la cosa non piace affatto, fa causa a un gruppo di giornalisti online, ingiungendo loro di comunicare l’identità delle fonti all’origine di alcune fughe di notizie. La EFF si schiera con i giornalisti, affermando il loro diritto di mantenere riservate le proprie fonti. Il processo si conclude a favore della fondazione e i giornalisti vengono tutelati contro le ingiunzioni di Apple. È una grande vittoria per i media indipendenti.

Contro SonyNel 2005, Sony inizia a distribuire CD musicali che contengono anche software Windows che impediscono la duplicazione e implementano la gestione dei diritti digitali (DRM). I programmi in questione installano file nascosti, inviano via Internet informazioni sull’uso dei CD e aprono potenziali falle nella sicurezza dei computer. L’idea è disastrosa fin dall’inizio, eppure Sony riesce a vendere ben 22 milioni di CD che contengono questi controversi software. Lo scandalo non tarda a emergere e inizialmente Sony respinge le critiche affermando che i programmi in questione non compromettono la sicurezza. Dopo qualche tempo, tuttavia, Sony accetta di ritirare i CD; ma è solo dopo la causa intentata dalla EFF che l’azienda intraprende qualche passo concreto per riparare i danni causati, offrendo programmi di disinstallazione e offrendo assistenza agli utenti che hanno difficoltà a rimuovere i software incriminati.

Contro varie agenzie governativeUna proposta particolarmente censurabile, all’inizio degli anni 2000, è il ‘broadcast flag’ ideato dalla Federal Communications Commission americana (FCC). In sostanza si tratta di un codice

25

Il meglio (o il peggio) deve ancora venire…

Rebecca Jeschke è responsabile della EFF per i rapporti con i media, nonché analista dei diritti digitali per conto della fondazione. Le abbiamo chiesto che cosa ci riserva il futuro…

LXP: Secondo te, di che cosa dovremo preoccuparci nei prossimi anni?RJ: Una cosa importante da tenere d’occhio nel prossimo paio di anni saranno i tentativi del governo degli Stati Uniti di impadronirsi di dati sensibili. Sappiamo già che la NSA (Agenzia per la sicurezza nazionale) sta raccogliendo enormi quantità di dati sulle attività su Internet attraverso nuove strutture di spionaggio (http://tinyurl.com/c8fk466,

http://tinyurl.com/buttjre) e vi sono proposte intese a rendere più facile alle autorità l’osservazione di tutto ciò che si trova online (http://tinyurl.com/cv5yn52).Per di più, il governo USA non ha nemmeno bisogno di raccogliere tutti i dati da sé: basta dare un’occhiata al sostegno tributato dalle forze dell’ordine al CISPA, una proposta di legge che darebbe alle aziende maggiori poteri per raccogliere informazioni legate a ‘minacce’ (per esempio all’interno delle comunicazioni private tra gli utenti) e rivelare i relativi dati al governo senza alcun mandato, trasmettendole perfino all’Agenzia per la sicurezza nazionale. Inutile aggiungere che queste pratiche, benché relative agli Stati Uniti, colpiscono gli utenti di tutto il mondo.

LXP: E per quanto riguarda le aziende?RJ: Soggetti come Facebook e Twitter sanno già moltissimo su di noi e in futuro ne sapranno ancora di più. È importante proteggere i nostri dati dalla raccolta e dall’uso indiscriminato. Non intendiamo dire che le forze dell’ordine non dovrebbero averne accesso ma nella maggior parte dei casi i governi dovrebbero ottenere un mandato e affidare la raccolta dei dati alla supervisione di un giudice. Le persone che non vogliono che le loro vite siano un libro aperto dovrebbero assicurarsi che i loro rappresentanti politici sappiano qual è la loro opinione. Negli Stati Uniti abbiamo avuto forti reazioni contro il CISPA e riteniamo che questa sia una delle ragioni per cui il provvedimento è rimasto finora in sospeso al Senato.

che le reti televisive potranno inviare ai dispositivi di registrazione domestici, impedendo loro di registrare determinati programmi. Ciò sottrarrebbe il controllo di questi dispositivi e software di registrazione video dalle mani dei consumatori che li hanno acquistati, riservandolo agli imperi mediatici. In occasione di una causa legale, la EFF obietta che la FCC non ha il diritto di determinare che cosa avviene nei nostri televisori e computer una volta che questi ricevono un segnale e il tribunale le dà ragione. È un passo importante per l’affermazione del nostro diritto di usare e controllare i prodotti che acquistiamo. Nel frattempo, il Dipartimento della Giustizia USA utilizza da diversi anni tecniche di sorveglianza estremamente discutibili, come il monitoraggio della posizione dei cellulari dei sospetti in mancanza di mandati specifici. La EFF è scesa in campo anche qui, consigliando ai giudici di non autorizzare mandati così estesi e intrusivi salvo qualora venga evidenziata la ‘causa probabile’ di un reato, cioè la ragionevole probabilità che si stia commettendo un crimine. La battaglia è ancora in corso ma è cruciale per difenderci da uno stato spione in stile Grande Fratello. LXP

La EFF si finanzia tramite donazioni: visitando il sito https://supporters.eff.org/donate potrete diventare membri finanziatori

Le più grandi vittorie della EFFNel corso della sua storia, la EFF ha preso parte ad alcune grandi battaglie, uscendone vittoriosa. Ecco alcuni dei suoi migliori successi

Quali sono le principali minacce all’orizzonte?

LXP_132_22_25_LXF173.feature_wteff 25 06/08/13 14:38

Page 28: Linuxpro 132 Agosto 2013

26 Linux pro 132

KDEKDE

KDE adotta nuove tecnologie. Ecco perché non ci sarà un KDE 5...

Nel lontano 2008, KDE ha rinnovato il proprio marchio, lasciando intendere che non ci sarebbe mai stato un KDE 4. KDE è divenuto

il nome di una comunità che produceva software in tre settori: aree di lavoro (o desktop) come Plasma Desktop e Plasma Netbook, una piattaforma di sviluppo (dall’originale denominazione di KDE Platform) e, naturalmente, le applicazioni KDE in sé. il rinnovamento è stato il frutto di discussioni interne a KDE, nel corso dell’anno precedente, che vertevano su come rendere le applicazioni e le librerie più allettanti per coloro che non utilizzavano il desktop, al di là della loro preferenza per GnoME, Windows o Mac oS. All’epoca si è trattato in gran parte di un’operazione commerciale, che non introduceva novità sostanziali nella modalità di produzione o di pubblicazione dei software KDE e il cui impatto di conseguenza è stato limitato. Ancora oggi molti, perfino all’interno della comunità di KDE, parlano di ‘KDE 4.x’. il processo avviato da quel rinnovamento del marchio sta ora iniziando a dare i suoi frutti. i vari prodotti di KDE non saranno più differenziati solo dal brand; KDE ha imparato la lezione in occasione della pubblicazione di KDE 4.0. La pubblicazione simultanea di nuove librerie e di un nuovo desktop diede vita a due prodotti non

fa sì che anche le applicazioni più semplici possano avere decine o anche centinaia di MB di dipendenze dirette. Gli utenti delle aree di lavoro KDE le hanno probabilmente già installate; ma per gli utenti che si servono di un sistema GnoME puro, la mole degli scaricamenti può risultare ingente. il problema è ancor più serio in ambienti come Windows e ha indotto il team che converte i software KDE per Windows a creare quello che è sostanzialmente un gestore dei pacchetti che funziona come programma di

installazione. Funziona, certo; ma il concetto in sé è del tutto sconosciuto agli utenti di Windows e anche le applicazioni più piccole sono legate a dipendenze il cui scaricamento può richiedere tempi lunghi.per ovviare a questi problemi si è compiuto uno sforzo continuo volto a rendere KF5 quanto più modulare possibile, in modo

che le applicazioni riducano al minimo le dipendenze. Kevin ottens, tecnico e ricercatore specializzato nell’open Source, ha lavorato a lungo sul problema e la sua opinione è che i progressi compiuti siano notevoli: i componenti a livello inferiore sono stati per la maggior parte suddivisi. nel complesso, Kevin individua numerosi vantaggi per gli utenti delle applicazioni KDE, in particolare per coloro che usano sistemi diversi. “Sarà più facile adattare le applicazioni

sufficientemente collaudati e non abbastanza stabili per l’uso quotidiano. un errore del genere non verrà ripetuto: non ci sarà un KDE 5 e i software KDE di nuova generazione potrebbero arrivare alla spicciolata.

Dividere le librerieLe tecnologie KDE di nuova generazione vanno ben oltre la semplice separazione tra librerie, desktop e applicazioni. Le librerie, che prenderanno il nome di KDE Frameworks 5 (KF5), sono state a loro volta

suddivise allo scopo di rendere più modulare il software KDE. L’obiettivo è rendere più interessanti le singole applicazioni e facilitare agli sviluppatori indipendenti l’impiego di singole parti di KF5. L’utilizzo di applicazioni KDE al di fuori di un’area di lavoro KDE (per esempio in un ambiente GnoME o unity) comporta un annoso problema, almeno a livello di percezione. L’uso di codice condiviso e riutilizzato che rende così omogenei e potenti i software KDE

“La suddivisione renderà KF5 più adatto all’uso al di fuori della comunità di KDE”

KDE adotta nuove tecnologie.

La prossima generazione di KDE

26 Linux pro 132

LXP_132_26_29_LXF173.feat_kde 26 05/08/13 16:51

Page 29: Linuxpro 132 Agosto 2013

KDE

Linux pro 132 27

KDEKDE

delle icone, per il quale Qt fa uso del caching per processo all’interno della memoria. “Dal punto di vista di KDE, vengono seguiti numerosi processi diversi, perciò vi è una cache condivisa tra tutti i processi. Questa è la tipica differenza di prospettiva tra gli sviluppatori

di Qt (che si occupano di un’applicazione per volta) e l’area di lavoro KDE (che si occupa di più applicazioni in funzione). il plug-in QPA, in un ambiente KDE, carica il plug-in del tema di KDE,

che fornisce il sistema di caricamento delle icone che utilizza la cache condivisa in un file, condiviso da tutti i processi. “il trasferimento di alcune funzioni in Qt è stato accompagnato da sforzi intesi a utilizzare direttamente Qt invece delle librerie KDE. nei casi in cui una funzione è stata interamente trasferita in Qt, KF5 utilizzerà i nuovi equivalenti di Qt dei vecchi componenti KDE”.

Usare di più Qtnaturalmente, non tutto si presta al trasferimento in Qt: “Attualmente non abbiamo intenzione di sostituire per intero l’utilizzo del sistema di localizzazione di KDE con il suo equivalente di Qt. - spiega Stephen - L’equivalente di Qt non è sufficiente per le esigenze delle applicazioni KDE. Tuttavia, alcuni elementi di KDE Frameworks non hanno grosse esigenze in relazione al sistema di localizzazione, perciò ove possibile verranno convertiti in modo da utilizzare il sistema di Qt. Questo permette di ridurre notevolmente le dipendenze senza rinunciare ad alcuna funzionalità”. Altri elementi dipendono ancora

Il desktop di Plasma sta passando da QGraphicsWidgets (a sinistra) a QML (a destra). Difficile cogliere la differenza: l’obiettivo, infatti, non è quello di modificare il flusso di lavoro dell’utente

a sistemi e contesti diversi. - spiega - il consumo di risorse sarà minore. ogni applicazione potrà fare riferimento solo a ciò che utilizza concretamente. La suddivisione renderà KF5 più adatto all’uso al di fuori della comunità di KDE e valorizzerà anche Qt, dato che abbiamo soluzioni per le funzioni che mancano in Qt”. in breve, sarà molto più facile per gli utenti di Qt utilizzare alcune funzioni di KDE senza ricorrere a voluminose e complicate liste di dipendenze per le loro applicazioni.

Trasferimentiun altro obiettivo chiave del progetto KF5 è il trasferimento di alcune funzioni all’interno di Qt. David Faure osserva che “questo non rappresenta una perdita per KDE”. Che lo sviluppatore collochi il codice in Qt o nelle librerie KDE, il risultato sarà comunque accessibile agli sviluppatori di KDE. in più, ci sono dei vantaggi. i componenti precedentemente utilizzati solo nelle applicazioni KDE potranno avere un impiego più vasto, con la possibilità di beneficiare dei contributi di altri sviluppatori. “Alcuni contributi di programmazione a Qt (come QSaveFile)”, dice lo sviluppatore di KDE Stephen Kelly, “hanno evidenziato bug presenti anche nella classe KSaveFile”. La loro individuazione permetterà di eliminarli nella prossima release di KDE 4.x, perciò i vantaggi saranno percepiti anche nel futuro, oltre che nel presente. “inoltre, ho notato un aumento delle persone che partecipano al progetto KDE Frameworks e contribuiscono a Qt”, aggiunge Stephen. David osserva che il trasferimento di funzioni in Qt eliminerà la creazione di classi alternative per le stesse cose (cosa che è avvenuta in passato). inoltre, la conversione per sistemi non Linux dovrebbe risultare più facile perché gli sviluppatori “avranno la garanzia che il software è stato pienamente collaudato in tutti i sistemi, non solo in Linux”. David spiega che il trasferimento di funzioni in Qt implica spesso la riscrittura di parti del codice, perché in alcuni casi l’Api non è all’altezza degli standard di Qt e per questioni di licenze: i contributi a Qt richiedono un accordo di licenza non concesso dagli autori originali. “È inoltre un’ottima occasione per migliorare l’implementazione”, aggiunge David, sottolineando il caso della gestione dei tipi MiME, utilizzati per descrivere il tipo di contenuto dei file in modo che vengano aperti con la giusta applicazione e gestiti correttamente. “L’implementazione utilizzava cache testuali ma la tecnologia alla base di Freedesktop (shared-mime-info) offre cache binarie più efficienti”. David confida che il nuovo codice per la gestione dei tipi MiME offrirà “prestazioni decisamente migliori”.il trasferimento di funzioni in Qt non implica affatto l’abbandono degli adattamenti e degli stili specifici di KDE. “il meccanismo dei temi usato dal QpA (livello Qt platform Abstraction) di Qt ci permette di attivare funzioni specifiche di KDE mediante Api standard di Qt - spiega David - non siamo costretti a persuadere gli sviluppatori di Qt in rapporto a ogni nostra singola esigenza”. David cita l’esempio del caricamento

27

Portare le immagini sullo schermo: Wayland, X e MirX (per la precisione, X Window System) è da lungo tempo la tecnologia standard per la visualizzazione grafica a schermo nei sistemi Linux e unix. È potente e si presta ottimamente all’uso in rete, il che era importante agli esordi delle workstation unix in cui agli utenti capitava spesso di utilizzare dalla sua postazione applicazioni situate

su un computer a distanza. negli ultimi anni sono stati evidenziati diversi limiti di x e si è iniziato a lavorare al protocollo sostitutivo Wayland (e alle relative librerie). Wayland si propone come sistema più semplice e delega buona parte del controllo ai gestori delle finestre, come KWin di KDE. Questo controllo diretto consentirà a KWin di garantire

che il contenuto delle finestre venga inviato allo schermo nel posto giusto e al momento giusto. Lo scorso marzo, Canonical ha annunciato che ubuntu adotterà un proprio display server, Mir, in luogo di Wayland. KDE e GnoME hanno tuttavia segnalato che continueranno a fare riferimento a Wayland come al display server della prossima generazione.

“KF5 utilizzerà i nuovi equivalenti di Qt dei vecchi componenti KDE”

LXP_132_26_29_LXF173.feat_kde 27 05/08/13 16:51

Page 30: Linuxpro 132 Agosto 2013

28 Linux pro 132

KDEKDE

28

Qt: la base dei software KDEQt è un framework di sviluppo indipendente dal sistema operativo le cui origini risalgono al lontano 1991. nel 1996, all’avvio del progetto KDE, è stato scelto come sua base. Di solito, a ogni nuova versione di Qt fa seguito una nuova versione dei software KDE. Qt 5 ha introdotto notevoli novità nel framework, in particolare nei componenti dell’interfaccia e nella renderizzazione grafica. Qt Quick è oggi il sistema d’elezione per la creazione di interfacce utente (mediante il linguaggio dichiarativo QML). Ciò permette

alle aree di lavoro plasma 2 di KDE di definire il layout e il comportamento in QML, il che facilita la creazione di aree di lavoro personalizzate e rende queste ultime indipendenti dal dispositivo su cui operano. non è necessario compilare il sistema di containment e questo rende più facile la condivisione e l’utilizzo su computer diversi. Qt ha recentemente subito modifiche anche in termini di controllo esterno. Sviluppato originariamente dalla compagnia Trolltech, Qt è stato in seguito acquisito da nokia, che lo ha utilizzato

nei suoi progetti Symbian e MeeGo. Con il passaggio di nokia a Windows phone nel 2011, l’utilizzo di Qt all’interno dell’azienda ha subito un declino e il framework è stato venduto a Digia. più o meno nello stesso periodo è nata Qt Open Governance, nel cui ambito diverse aziende e organizzazioni hanno modo di contribuire direttamente a Qt; la base del codice è controllata dall’indipendente Qt Project. Ciò ha reso più facile per i soggetti interessati all’ecosistema Qt, come KDE, contribuire a plasmarne lo sviluppo.

dall’inserimento in Qt delle funzioni necessarie. Secondo Stephen, l’uso di QDateTime in luogo di KdateTime richiede anzitutto che nelle classi di data e ora di Qt vengano inserite funzioni per la gestione e l’elaborazione dei fusi orari. “L’obiettivo è utilizzare direttamente Qt senza rinunciare a funzioni importanti in KDE Frameworks o nelle applicazioni KDE. in generale, ciò che va bene per Qt va bene anche per KDE. Qt può offrire a KDE la stessa affidabilità a cui siamo abituati, dato che viene continuamente riesaminato a fondo”.

Passaggio a Qt 5Qt 5 è stato progettato per essere quanto più possibile compatibile con Qt 4. Di conseguenza, la conversione per Qt 5 della maggior parte delle applicazioni KDE dovrebbe risultare piuttosto agevole. C’è però un elemento di KDE la cui conversione richiede molto lavoro: KWin, il gestore delle finestre. “Qt promette una compatibilità al 99% del codice sorgente. - dice Martin Graesslin, sviluppatore di KWin - Solo il codice legato al sistema operativo va adattato… e sì, KWin è proprio quell’1%”. Tra le differenze essenziali di Qt 5 che hanno conseguenze su KWin vi è il passaggio all’Api QpA, che ha eliminato molte richieste legate al sistema operativo utilizzate da KWin. un’altra novità rilevante è il fatto che Qt 5 è passato da xLib a XCB, il che richiede la riscrittura del sistema di gestione degli eventi in KWin (xCB è un linguaggio C legato al protocollo x). il passaggio a Qt 5 frutterà però anche dei benefici oltre a maggiori fatiche. QML è sempre più usato in KWin e ciò consente la creazione di interfacce più eleganti per effetti come “present Windows” e la griglia del desktop (che mostrano rispettivamente tutte le finestre o l’intero desktop sullo

schermo, in versione ridotta). “KWin 4.11 non utilizza più le funzioni legate al sistema operativo che sono state rimosse da Qt ed è possibile compilare KWin in funzione di Qt 5 e KDE Frameworks 5”, spiega Martin. nondimeno, la gestione degli eventi non è ancora stata adattata, perciò non è ancora disponibile una versione di KWin per Qt 5. L’obiettivo è rendere KWin 4.11 utilizzabile mediante Qt 5 ma il sistema di riferimento (e quello consigliato) rimarrà comunque Qt 4.

In vista di WaylandL’altro settore in cui occorrerà molto lavoro per adattare KWin alla nuova generazione di ambienti KDE è la sua preparazione all’uso di Wayland come rimpiazzo di x. Questo è legato all’adattamento a Qt 5, in quanto Martin intende utilizzare in Qt il modulo QtWayland. “in questo modo si otterrà un wrapper in stile Qt 5 che avvolgerà la libreria Wayland. - spiega Martin - per noi è piuttosto interessante, perché avremmo dovuto creare comunque un wrapper dal momento che Wayland è una libreria C. La difficoltà principale è che KWin è stato progettato e scritto esclusivamente in funzione di x11, perciò saranno necessarie notevoli modifiche interne; è un compito che ci occuperà costantemente per i prossimi anni”. Saranno inoltre necessarie modifiche alle funzioni che KWin dovrà fornire. “in un contesto Wayland, il compositore KWin si occupa di molte operazioni precedentemente affidate all’x-Server, per esempio l’invio degli input alle finestre”. il supporto per Wayland di KWin dovrebbe essere disponibile verso la fine dell’anno. Secondo Martin, tutto dipenderà dalla velocità con cui verrà ultimata la conversione di Qt 5 e dallo stato del modulo QtWayland. il supporto per Wayland verrà testato anzitutto in plasma Active (l’ambiente KDE per i tablet) e se funzionerà in quel contesto, anche gli altri ambienti inizieranno a passare a Wayland. il passaggio rapido a Wayland non costituisce una priorità. “non vogliamo sconvolgere il desktop, perciò saremo cauti. - dice Martin - non sono soggetto ad alcuna pressione e non intendo affrettarmi solo perché GnoME è già passato a Wayland o perché unity utilizza Mir”. in ogni caso, questi sforzi di conversione hanno già prodotto dei vantaggi. “Grazie al passaggio a xCB, KWin è sempre più veloce, - osserva Martin, aggiungendo che - le modifiche producono vantaggi in termini di miglioramento delle prestazioni o di aggiunta di funzioni, come la migliore gestione del bordo dello schermo in KWin 4.11”.

Rinnovamento di Plasmail lavoro su KF5 è naturalmente motivato dalla determinazione a supportare la nuova generazione di applicazioni e ambienti KDE. A partire da KDE 4.0, gli ambienti di lavoro utilizzano come base le librerie plasma, perciò grandi preparativi circondano la prossima generazione di quest’ultimo. Tra le principali novità in arrivo per plasma c’è l’abbandono dell’utilizzo di Qt Quick (una parte di Qt che riguarda la creazione di interfacce utente per mezzo del linguaggio

Il nuovo containment del desktop

Plasma facilita il posizionamento dei

widget, con un’ombra che indica la posizione

che il widget assumerà dopo

il trascinamento

LXP_132_26_29_LXF173.feat_kde 28 05/08/13 16:51

Page 31: Linuxpro 132 Agosto 2013

KDE

Linux pro 132 29

KDEKDE

dichiarativo QML) da parte dei widget basati su x. Gli ambienti plasma passeranno in blocco a plasma Quick. “A Qt Quick si aggiungeranno vari componenti integrativi per i temi, l’interazione con il compositore, l’internazionalizzazione, l’accesso e la condivisione dei dati, la configurazione e i dispositivi”, spiega Sebastian Kuegler, sviluppatore di plasma. A suo parere, l’adattamento a QML dei componenti dell’ambiente di lavoro è già ben avviato e molti widget sono già stati convertiti: tra essi System Tray, pager, notifications, Device notifier, Battery, Lock/Logout, Weather, Wallpaper e Containment. “per questioni di portabilità e manutenzione, preferiamo i widget puramente QML. - spiega Sebastian - per alcuni casi complessi che non possono essere risolti adeguatamente in QML, forniamo applet combinate C++ e QML”. L’uscita di KDE 4.10, all’inizio dell’anno, ha reso disponibile agli utenti un sistema di desktop containment sperimentale, adattato a QML. “il nuovo sistema è perlopiù identico a quello attuale predefinito. - spiega Sebastian - non intendiamo introdurre modifiche radicali all’ambiente e al flusso di lavoro degli utenti, bensì migliorarli progressivamente mediante una procedura iterativa”. Due cose, tuttavia, sono cambiate nel containment sperimentale QML: il posizionamento/ridimensionamento e la nitidezza visiva. i widget sono stati uniti alle loro cornici in modo da creare un effetto più ordinato e il posizionamento è stato reso più semplice. “Durante lo spostamento, appare un alone in corrispondenza della posizione in cui l’applet si collocherà una volta trascinata. - spiega Sebastian - Questo rende il collocamento dei widget più prevedibile e consente all’utente di azzeccarlo al primo tentativo. Le applet si allineano automaticamente l’una all’altra, in modo perfetto”.

Le prossime applicazioniun notevole progresso determinato dal passaggio a QML per i sistemi di containment è che esso rende molto più facile lo sviluppo di containment personalizzati (layout del desktop) per impieghi diversi. “ora è molto semplice creare un containment, modificarne uno creato da altri e condividerli. - dice Sebastian - Dato che widget e containment sono indipendenti dall’architettura, tutto questo funziona naturalmente su qualunque dispositivo”. in Plasma 2 non saranno più utilizzati codici C++ diversi per gli ambienti di lavoro destinati a computer fissi, portatili e tablet: tutti saranno definiti come containment QML incentrati su un’unica base C++. plasma 2 dovrebbe offrire agli utenti un’esperienza migliore, al di là di qualche cambiamento iniziale in termini di aspetto. Sebastian spiega che sotto molti aspetti la grafica di Linux è migliorata. in ultima analisi, grazie a nuove tecnologie come Qt Quick (che può utilizzare openGL e i dispositivi grafici per la renderizzazione) e Wayland, plasma sarà

in grado di “visualizzare 60 fotogrammi perfetti al secondo sullo schermo e di far apparire l’interfaccia liscia come seta”. La buona notizia per gli sviluppatori di applicazioni è che KDE Frameworks 5 sarà in massima parte compatibile con le librerie KDE 4. Basteranno quindi modifiche minime per convertire un’applicazione a Frameworks 5. il vantaggio principale sarà costituito dal fatto che con la suddivisione delle librerie ogni applicazione potrà utilizzare un minor numero di dipendenze dirette. Ciò dovrebbe rendere le singole applicazioni più interessanti per l’impiego in GnoME e unity e in particolare in sistemi come Windows e Mac oS. Sarà inoltre possibile creare sistemi ridotti al minimo nei casi in cui fosse necessario solo un numero limitato di applicazioni. Stephen ha già provato a convertire per Qt 5 alcune applicazioni di KDE. “A livello sperimentale, ho adattato a Qt 5 alcune applicazioni come Dolphin, Konqueror e parti di KDE piM. Dovrò lavorarci sopra ma l’esperimento ha dimostrato quanto sia agevole arrivare a collaudare il codice e scovare i bug rimasti”. Vi è inoltre la possibilità di trasferire le interfacce a QML. “L’adattamento di un’interfaccia utente esistente a QML è un passaggio facoltativo nell’ambito di una conversione a Qt 5, che può essere intrapreso prima o dopo la conversione stessa”, dice Stephen.

Il futuro è adessoLa prossima generazione di software KDE arriverà probabilmente in varie fasi; il primo a raggiungere la maturità sarà KDE Frameworks 5, seguito da plasma 2 e infine dalle modifiche apportate alle applicazioni in modo da consentire loro di sfruttare le nuove tecnologie. KDE Frameworks 5 mostra già dei mutamenti, così come KWin e plasma la cui trasformazione progressiva ha effetti positivi sugli utenti attuali, dovuti soprattutto all’uso crescente di QML per la creazione di interfacce più eleganti e omogenee. Tra un po’ potrebbe essere possibile utilizzare KWin con Wayland ma secondo Sebastian “manca ancora almeno un anno a una release basata su plasma 2”. Questa volta, tuttavia, i cambiamenti dovrebbero risultare molto meno invasivi rispetto al passaggio a KDE 4.0 e la modernizzazione dei componenti profondi di Linux e dei software KDE renderà più longeva l’accoppiata, oltre a contribuire alla portabilità dei software KDE verso sistemi nuovi. il futuro di KDE va decisamente oltre quello di un ambiente desktop. Con la sua natura fortemente modulare, KDE Frameworks 5 mirerà a creare componenti riutilizzabili adatti a qualunque sviluppatore di Qt, estendendo e valorizzando nel contempo Qt come framework per le applicazioni. plasma 2 offrirà nuove aree di lavoro più fluide per i computer tradizionali e i tablet, oltre a facilitare molto la creazione di aree di lavoro personalizzate per i nuovi dispositivi. Le applicazioni KDE saranno più portabili, avranno dipendenze più ridotte e sarà più facile usarle ovunque. LXP

L’adattamento delle applicazioni a Qt 5 dovrebbe risultare relativamente facile. Un adattamento sperimentale di Konqueror ha evidenziato solo qualche difetto di renderizzazione (immagine di Stephen Kelly/KDAB)

Molti widget esistenti di Plasma sono passati a QML, il che li rende molto più facili da adattare e condividere per gli sviluppatori

LXP_132_26_29_LXF173.feat_kde 29 05/08/13 16:51

Page 32: Linuxpro 132 Agosto 2013

30 LINUX PRO 132 LINUX PRO 132 31

Sysadmin

30

D ato che questa serie di articoli dovrebbe occuparsi di amministrazione di sistema, mi trovo un po’ a sciare

fuori pista in questo caso, ma voglio attirare la vostra attenzione su una incredibile suite di strumenti per la manipolazione delle immagini chiamata ImageMagick. L’idea di un insieme di strumenti per l’elaborazione delle immagini utilizzabili unicamente da riga di comando può suscitare qualche perplessità anche nel più stagionato degli aficionados di Linux, ma ImageMagick è esattamente questo (anche se è disponibile una semplice interfaccia grafica che permette di accedere ad alcuni comandi attraverso menu). Le possibilità offerte da ImageMagick sono incredibili. Permette di convertire tra differenti formati di file (ne riconosce oltre 100), di capovolgere, ribaltare, scalare, tagliare e trasformare le immagini, sfumare o esaltare i contorni, regolare i colori, rilevare i bordi, inserire testo e forme geometriche e molto

altro. Non rendo certo giustizia alle potenzialità di ImageMagick con due semplici esempi, ma non ho spazio per altro. Il primo genera un’immagine che contiene del testo disposto all’interno di un arco di 360 gradi: $ convert -background khaki -fill sienna -font acmesa.TTF -pointsize 144 label:”Amministreria del Dr. Brown.” -distort Arc 360 arctext.pngIl secondo genera il montaggio di tutte le miniature delle immagini che si trovano nella mia directory Immagini $ montage -label ‘%t\n%[width]x%[height]’ -size 512x512 ‘/home/chris/Immagini/*.jpg[120x90]’ -auto-orient -geometry +5+5 -tile 5x -frame 5 -shadow photos.pngIl risultato è una elegante matrice di miniature, ognuna delle quali dotata di didascalia, cornice e ombra. Questi esempi mostrano l’uso di solo due comandi, convert e montage. Ce ne sono altri nove: animate, compare, composite, conjure, display, identify, import, mogrify e stream. Messi assieme, questi comandi offrono un numero di opzioni in grado di mandare in confusione anche il più entusiasta sostenitore della riga di comando. Per fortuna su www.imagemagick.org si trovano moltissimi esempi già pronti, che coprono tutte le possibili necessità, dalla sfocatura da movimento alle trasformazioni affini. Oltre all’utilizzo da riga di comando (o dall’interno di uno script di shell) è possibile accedere a tutte le operazioni di manipolazione delle immagini da linguaggi come C, Java, Perl, PHP e Ruby, grazie ad apposite librerie di interfaccia. Quasi certamente ImageMagick si trova nei repository della vostra distro, quindi non dovrebbe essere un problema installarlo. È anche disponibile per Windows.

Lo strumento che è in grado di fare con un’immagine tutto quello che possiamo concepire, tranne disegnarne unaG

ià da un po’ di tempo Ubuntu è uscita dalle prime posizioni delle distribuzioni più diffuse e ha ricevuto un bel po’

di critiche per il suo ambiente desktop Unity. Qualcuno potrebbe essere indotto a pensare che in Canonical (l’azienda che sta dietro Ubuntu) siano improvvisamente impazziti. Non sono d’accordo. Per quanto riguarda il desktop, HP ha lanciato un nuovo PC all-in-one su cui è installato Ubuntu al prezzo di circa 650 euro. Ubuntu Touch sta diventando sempre più popolare e già è usato da numerosi dispositivi Nexus, anche se non è ancora del tutto rifinito come prodotto (per maggiori dettagli il sito ufficiale in inglese è www.ubuntu.com/phone). Ovviamente Ubuntu si è fatta un nome come sistema desktop, ma Canonical sta lavorando duramente per conquistare una posizione nel mercato server e da alcuni anni rilascia regolarmente versioni specifiche per server. Sta anche diffondendosi come immagine per installazioni nella nuvola. Date un’occhiata al percorso guidato di lancio di un’istanza EC2 di Amazon Web Services: e scoprirete che 4 delle 20 immagini sono Ubuntu. Se poi guardate le immagini messe a disposizione dalla comunità (sono ben 15.596!) osserverete la seguente ripartizione: Ubuntu 31,8%, CentOS 3,5%, RedHat 2,5%, SUSE 0,3%, Windows 9,8% e altre distribuzioni Linux 48,3%. Mi sembra particolarmente interessante il rapporto tra Ubuntu e RedHat. Esiste un altro mercato emergente, quello delle nuvole private. Anche qui Canonical si sta dando molto da fare con soluzioni innovative per il deploy, come MAAS e Juju, che potrebbero rivoluzionare sia il sistema che usiamo per installare le applicazioni nelle nostre nuvole sia il modo in cui vengono create le nostre cloud private. Quindi Canonical sembra avere una strategia a tutto campo, anche se non sono ancora convinto dell’opportunità di passare dal rilascio di una nuova versione ogni 6 mesi a una rolling release.

Sono impazziti? ImageMagick

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.

Da uno scriptCome è noto uno dei benefici degli strumenti a riga di comando consiste nella possibilità di usarli all’interno di script di shell. Ecco ad esempio un ciclo che converte tutte le immagini JPG presenti nella directory corrente in formato PNG:$ for f in *.jpg; do convert $f $(basename $f.

jpg).png; done

Dato che ImageMagick è in grado di elaborare praticamente qualsiasi formato di immagine noto all’uomo, non dovreste avere problemi con le conversioni.

LXP_132_28_31_LXF169.sysadmin 30 06/08/13 14:31

Page 33: Linuxpro 132 Agosto 2013

30 LINUX PRO 132 LINUX PRO 132 31

Sysadmin

31

Questo mese ci occupiamo della M dello stack LAMP: MySQL. Partiremo con un po’ di teoria dei database per poi passare all’SQL e infine installeremo MySQL e creeremo

un database. Come nelle puntate precedenti userò CentOS 6.2 come base: siete incoraggiati a installarlo in una macchina virtuale per mettere in pratica i nostri esperimenti.

Breve guida ai databasePotete passare la vita cercando di diventare un guru dei database, ma le nozioni di base non sono difficili. Per cominciare dall’inizio: i database conservano le informazioni in tabelle e ogni tabella ha un nome. Una tabella consiste di righe e colonne. Ogni colonna ha un nome e un tipo di dato. Questi tipi di dati dipendono in una qualche misura dal server di database che state usando e non necessariamente esiste una corrispondenza con i tipi di dati usati dai linguaggi di programmazione lato server. Ad esempio, MySQL mette a disposizione un tipo di intero a 8 bit chiamato TINYINT, che PHP non ha. All’interno di ciascuna tabella, una colonna è definita come chiave primaria, deve cioè essere unica all’interno della tabella: in altre parole, se fate un’interrogazione sulla tabella per recuperare una chiave primaria specifica, otterrete al massimo una sola riga. È anche pratica comune avere una o più colonne che contengono quella che viene indicata come chiave esterna (foreign key in inglese): si tratta di un riferimento alla chiave primaria di un’altra tabella. La struttura del database, cioè le tabelle di cui è composto, le relative colonne, con i loro tipi e le chiavi e le relazioni tra di loro, è noto come schema del database. Vediamo un esempio. La figura mostra due tabelle, chiamate libri e lettori, che potrebbero costituire la base di un database usato da una biblioteca che presta i libri ai lettori. Il DB ci permette di tenere traccia dei libri, sapere se sono in prestito e, in questo caso, a chi ed entro che data vanno restituiti. Nella tabella libri a ogni libro è assegnato un identificativo unico, che serve come chiave primaria della tabella. Potremmo essere tentati di usare l’ISBN come chiave primaria: sicuramente è univoco. Ci precluderemmo però la possibilità di avere nella nostra biblioteca più copie di uno stesso libro. Usando un identificativo nostro come chiave evitiamo il problema. Guardando la tabella nella figura vediamo che uno dei libro è in prestito al lettore 102. È un esempio di chiave esterna. Il 102 si riferisce alla chiave primaria della tabella lettori. Consultandola scopriamo che il libro è in prestito a Jane Smith.

Structured Query LanguageLe tabelle del database sono create, interrogate e aggiornate usando un antico linguaggio chiamato SQL (Structured Query Language, linguaggio strutturato di interrogazione). Risale al 1974, è diventato uno standard ANSI nel 1986, e appare piuttosto diverso dagli altri linguaggi con cui forse avete familiarità. Sono state scritte decine di libri su di esso, ma, a meno che mi sia concesso di occupare tutto lo spazio della rivista, mi dovrò accontentare di mostrare qualche esempio, in modo che ve ne facciate un’idea. Per prima cosa ecco un paio di interrogazioni SQL:select * from libri where autore = ‘Charles Dickens’select autore, titolo from libri where inprestito = 1

Ognuna di queste interrogazioni restituisce un ‘insieme di risultati’

(result set in inglese), una collezione di zero o più righe che contengono i dati che corrispondono all’interrogazione. Nel primo esempio l’asterisco significa che vogliamo avere all’interno del result set tutte le colonne delle righe corrispondenti all’interrogazione. Se esaminate la tabella vedrete che si tratta di due sole righe (perché Charles Dickens è l’autore di due dei nostri libri). Il secondo esempio inserirà invece solo le colonne autore e titolo nel result set e, dato che un solo libro della nostra tabella libri è in prestito, ci sarà solo una riga.Non tutte le interrogazioni restituiscono righe di dati. Il seguente esempio semplicemente restituisce il numero dei libri in prestito:

Una nota personale...Nei miei anni di formazione come programmatore ho lavorato in diversi gruppi di ricerca universitari, facendo quello che definirei calcolo “scientifico”. Ero in grado di scrivere senza problemi un programma che eseguisse una trasformata di Fourier bidimensionale oppure di simulare la fisica di una camera a bolle (davvero!), ma non sapevo da che

parte cominciare con un database se per caso me ne davate uno. Sono quindi arrivato relativamente tardi alla teoria relazionale dei dati, non ho passato la mia vita a bagno in integrità referenziali e prime forme normali. Quasi tutte le persone che incontro nelle aule corsi invece considerano dati e database come il cuore delle loro applicazioni.

Questo è lo script usato per creare e popolare il database della biblioteca

La M sta per MySQL. Terza parte di una serie di quattro, questa volta siamo alle prese con il database

Lo stack LAMP

LXP_132_28_31_LXF169.sysadmin 31 06/08/13 14:31

Page 34: Linuxpro 132 Agosto 2013

32 LINUX PRO 132 LINUX PRO 132 33

Sysadmin

32

select count(*) from libri where inprestito = 1Supponiamo ora che la biblioteca abbia acquistato un nuovo libro. Ecco l’istruzione SQL che permette di aggiungere una nuova riga alla tabella libri:insert into libri values (6, ‘Birdsong’, ‘Sebastian Faulks’, 0, null, null)

Notate come il libro non sia inizialmente in prestito. La parola chiave null semplicemente significa che a quell’elemento non viene assegnato alcun valore. Se ora la biblioteca decidesse di eliminare il suo unico libro di Douglas Adams (vergogna!) dovremmo cancellarlo dal database, usando un’istruzione di questo genere:delete from libri where idlibro = 4

Da notare che, dato che stiamo selezionando le righe da cancellare in base alla loro chiave primaria, cancelleremo al più un solo libro. Come secondo esempio supponiamo di voler cancellare tutti i libri di Dickens (vergogna ancora maggiore!). Potremmo fare così:delete from libri where autore = ‘Charles Dickens’

Infine supponiamo che il lettore John Doe abbia notificato alla biblioteca un cambio di indirizzo. Dovremo aggiornare il database in questo modo:update lettori set indirizzo = ‘15 Lemon Street, Liverpool’ where nome = ‘John Doe’

Ci sono ancora un paio di cose che vorrei farvi notare. Primo, sto scrivendo le parole chiave dell’SQL (come select, where, insert in minuscolo). Tutto bene, dato che SQL ignora maiuscolo e minuscolo, ma i puristi del linguaggio avrebbero usato tutte maiuscole. Secondo, stiamo solo esaminando le istruzioni del linguaggio. Più avanti nell’articolo vedremo come eseguire questi comandi usando il client a riga di comando di MySQL, mentre il mese prossimo scopriremo come eseguirli dal nostro codice PHP. Per ora però si tratta di SQL puro.

Interrogazioni più complessePrima di abbandonare il nostro mini tutorial sull’SQL voglio mostrarvi qualche interrogazione più complessa. Supponiamo di voler ottenere la lista dei titoli dei libri e dei lettori a cui sono stati prestati per tutti i libri che sono effettivamente in prestito. Queste informazioni sono ripartite in due tabelle, dobbiamo quindi combinare i dati di entrambe. L’interrogazione si presenta così:select libri.titolo, lettori.nome from libri, lettori where libri.inprestito = 1 and libri.idlettore = lettori.idlettore;

Notate come dobbiamo qualificare i nomi delle colonne con il nome della tabella cui appartengono, ad esempio libri.titolo invece del più semplice titolo. Questo tipo di interrogazione è chiamata join (unione). Ci sono due condizioni nella clausola where, collegate tra di loro da un and. La seconda di esse – libri.idlettore = lettori.idlettore, ci garantisce che otterremo solo quelle combinazioni delle due tabelle che corrispondono al medesimo libro in prestito.Stiamo dando solo un’occhiata superficiale all’SQL. Non abbiamo parlato dei comandi che si usano per creare database e tabelle e non abbiamo parlato delle stored procedure: si tratta in sostanza di frammenti di codice SQL conservati sul server e richiamabili dalle

nostre interrogazioni. Abbiamo anche completamente ignorato il problema del controllo degli accessi. MySQL ha uno schema di controllo degli accessi a grana piuttosto fine, che permette di creare account utente e di specificare per essi, ad esempio, che un utente ha un accesso in sola lettura a specifiche tabelle o addirittura a una specifica colonna all’interno di una tabella. Il nostro utente root ha accesso a tutto, ma non è prudente usare un simile utente per una applicazione Web accessibile da Internet. Vediamo ora come installare MySQL e come cominciare a fare le cose sul serio. Il pacchetto fa parte dei repository standard di CentOS, quindi l’installazione è facile:yum install mysql mysql-server

Il pacchetto mysql-server contiene il server vero e proprio (mysqld), mentre il pacchetto mysql contiene (tra le altre cose) lo strumento lato client mysql, di cui ci occuperemo tra poco. Bisogna poi occuparsi dei soliti comandi per la gestione del sistema. Per prima cosa dobbiamo assicurarci che il servizio parta quando riavvieremo la macchina:# chkconfig mysqld on

Secondo, dobbiamo far partire il servizio:# service mysqld start

Inoltre dobbiamo lanciare il comando mysql_secure_installation per definire la configurazione iniziale. Va fatto una volta sola. Vi verrà richiesta la password di root, ma per ora non ne è ancora stata definita una, quindi premete semplicemente Invio. Vi verrà poi chiesto di impostarne una: dovreste sceglierne una sufficientemente robusta, perché questo account ha il completo controllo amministrativo sul database. Le best practice suggeriscono di scegliere una password diversa da quella del corrispondente account Linux. Poi, seguendo quanto vi viene richiesto, dovreste:

rimuovere gli utenti anonimi disabilitare il login come root da remoto cancellare il database di test

A questo punto siete pronti per cominciare. Semplificheremo un po’ le cose iniziando direttamente con la creazione del database della biblioteca che abbiamo usato negli esempi. Lo faremo utilizzando uno script SQL già pronto chiamato crea-database-biblioteca.sql. Lo vedete nella figura ed è anche disponibile sul DVD allegato alla rivista. Dal prompt di shell possiamo far eseguire lo script a MySQL con il seguente comando:$ mysql -u root -ppassworddiroot < crea-database-biblioteca.sql

passworddiroot è la password dell’account root di MySQL che avete impostato prima. Se tutto funziona il vostro database viene creato e potete eseguire le interrogazioni viste sopra. Eseguite il login nel server MySQL e selezionate il database della biblioteca:$ mysql -u root -ppassworddiroot bibliotecaMySQL stamperà alcune righe di informazione, poi mostrerà

Tornare a scuolaSe volete saperne di più sull’SQL (e non volete acquistare un libro), vi raccomando di dare un’occhiata a w3schools.com e di cliccare sul link Learn SQL. Troverete del materiale introduttivo (in inglese), una guida di riferimento all’SQL e una meravigliosa piccola App che vi permetterà

di inserire ed eseguire interrogazioni SQL su un semplice database. Allargando un po’ la discussione vi segnalo che il sito mette a disposizione parecchio materiale anche su HTML, CSS, PHP, XML e molto altro. Se non l’avete mai visitato fatelo subito. Vi garantisco che non ve ne pentirete.

Più click, meno tasti. MySQL Workbench è un prezioso strumento per la gestione di un database MySQL

LXP_132_28_31_LXF169.sysadmin 32 06/08/13 14:31

Page 35: Linuxpro 132 Agosto 2013

32 LINUX PRO 132 LINUX PRO 132 33

Sysadmin

un prompt dal quale potrete eseguire un’interrogazione, ad esempiomysql> select autore, titolo from libri where inprestito = 1;+---------------+--------------------+| autore | titolo |+---------------+--------------------+| J. K. Rowling | The Goblet of Fire |+---------------+--------------------+1 row in set (0.00 sec)

Notate come abbiamo concluso il comando SQL con un punto e virgola finale. Fa parte della sintassi MySQL, non dell’SQL (se siete come me vi capiterà spesso di dimenticarvi i punti e virgola!).Le altre interrogazioni e gli altri comandi SQL che abbiamo visto prima possono essere eseguiti allo stesso modo. Potrete anche provare qualche interrogazione ideata da voi.

Integrità referenzialeCi sono due back-end per l’archiviazione dei dati su disco comunemente usati con MySQL: MyISAM e InnoDB. Nelle versioni di MySQL anteriori alla 5.5, MyISAM era il tipo di default delle tabelle e, se volevate una tabella di tipo InnoDB, dovevate specificarlo al momento della creazione della tabella. Dalla versione 5.5 in poi invece InnoDB è il default. Uno dei vantaggi di InnoDB è che è in grado di imporre l’integrità referenziale ai dati. Il termine suona molto tecnico, ma in sostanza significa che, se in una tabella esiste una chiave esterna, questa deve essere effettivamente presente (come chiave primaria) nella tabella a cui fa riferimento. Per esempio, se cancellassimo Jane Smith dalla tabella dei lettori del nostro database biblioteca, perderemmo l’integrità referenziale perché la relativa chiave primaria (102) compare nella tabella dei libri. Dato che il nostro database usa il back-end InnoDB e la relazione di chiave esterna è stata dichiarata nell’istruzione CREATE TABLE, se provo a cancellare Jane Smith ricevo un gentile rifiuto da MySQL: mysql> delete from lettori where nome = ‘Jane Smith’;ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`biblioteca`.`libri`, CONSTRAINT `libri_ibfk_1` FOREIGN KEY (`idlettore`) REFERENCES `lettori` (`idlettore`))

Anche l’occhio vuole la sua parte Se state iniziando a stancarvi di tutto questo uso della riga di comando e vorreste vedere qualcosa di grafico, installate MySQL Workbench. Usando questo strumento potrete:

progettare, creare e gestire in forma visuale i database creare, ottimizzare ed eseguire interrogazioni SQL configurare server e account utente migrare database da SQL Server, Sybase e PostgreSQL

Sfortunatamente non si trova nei repository CentOS, ma può essere

scaricato dal sito di MySQL. Procedete come segue: visitate www.mysql.com/downloads cliccate sul link MySQL Workbench nel menu a tendina che appare selezionate RedHat Linux 6 cliccate sul pulsante corrispondente alla versione a 32 o 64 bit

in base alla vostra piattaforma premete su “No thanks, just start my download” per evitare

la registrazione salvate il file (andrà a finire nella directory Scaricati) copiate il file in /tmp diventate root e date i comandi:

# yum install libzip pexpect gtkmm24# rpm -i /tmp/mysql*rpm

Il primo installa le dipendenze del pacchetto, il secondo il pacchetto stesso. L’immagine nella pagina precedente mostra come appare lo schema del database visto con MySQL Workbench, accanto al risultato di una semplice interrogazione. Per quanto si tratti di uno strumento grafico, MySQL Workbench richiede ugualmente l’uso di SQL! Una delle funzionalità del programma che apprezzo particolarmente è la sua abilità di eseguire il reverse engineering di un database e di produrre un chiaro diagramma entità-relazioni, come quello mostrato qui sotto, che evidenzia la struttura delle tabelle e le relazioni tra di esse. Il mese prossimo, nell’ultima puntata della serie, metteremo insieme i vari pezzi dello stack LAMP. Svilupperemo un’applicazione Web che permetterà agli utenti della biblioteca di interrogare il database usando un modulo HTML, scriveremo il codice PHP lato server che eseguirà le interrogazioni sul database e presenteremo i risultati formattandoli in HTML. Arrivederci! LXP

La Enterprise EditionMySQL appartiene ora ad Oracle e si sta incamminando sulla strada seguita da altre applicazioni (come tripwire) che sono nate come puro Open Source e poi sono diventate dei prodotti commerciali. La versione gratuita e Open Source è ancora disponibile (e funziona bene), ma le funzionalità a livello enterprise sono disponibili solo per il prodotto a pagamento. La versione enterprise mette a disposizione strumenti per il backup a caldo, strumenti per la replicazione e il supporto per alta disponibilità, scalabilità, replicazione e ovviamente anche il supporto tecnico. Per i dettagli visitate www.mysql.com/products/enterprise.

MySQL Workbench è in grado di generare, a partire da un database esistente, diagrammi entità-relazione che aiutano a visualizzarne la struttura

LXP_132_28_31_LXF169.sysadmin 33 06/08/13 14:31

Page 36: Linuxpro 132 Agosto 2013

Diventa protagonista del mondo Linux

LXP_132_34-35_Doppia_Abbo_LinuxPro 32 06/08/13 15:59

Page 37: Linuxpro 132 Agosto 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 rivista 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. Socio Unico Sprea Holding 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 abbona-mento. 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 è Press Di Srl – Via Trentacoste, 7 - 20134 Milano. 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 030.319.82.81 “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 Press Di Srl - Uf� cio Privacy – Via Trentacoste, 7 –20134 Milano.

•TELEFONA al N. 199 111 999 Dal lunedì al venerdì dalle ore 9,00 alle ore 19,00. Costo massimo della chiamata da tutta Italia per telefoni � ssi: € 0,12 + iva al minuto senza scatto alla risposta. Per cellulari costo in funzione dell’operatore.

•POSTA Compila, ritaglia e spedisci il coupon in busta chiusa a: Press Di - Servizio Abbonamenti - Casella Postale 97 - 25126 Brescia BS

•FAX invia il coupon al N. 030 3198412 •ONLINE sul sito www.myabb.it/linuxpro

•SMS da inviare al N. 335 8331122 indicando nell’ordine: il codice dell’offerta 25916!Nome!Cognome!Indirizzo!Numero civico!Località!CAP!Sigla provincia!S (oppure N)!S (oppure N)! per indicare rispettivamente il consenso (Si o No) alla privacy 1 e alla privacy 2 riportate sulla

cartolina. Non lasciare nessuno spazio dopo i punti esclamativi come nell’esempio:

25916!Paolo!Rossi!Via Verdi!1!Milano!20123!Mi!S!S! Entro 24 ore riceverai un SMS di conferma dal Servizio Abbonati. Il costo del messaggio inviato è pari al normale costo di un SMS.

Il pagamento dell’abbonamento è previsto in un’unica soluzione con il bollettino di conto corrente postale che ti invieremo.

ABBONATI SUBITO! ABBONATI SUBITO! ABBONATI SUBITO! ABBONATI SUBITO! SCEGLI IL METODO PIÙ COMODO PER ABBONARTI:

OFFERTA VALIDA SOLO PER L’ITALIA 389 11 006 389 01

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: PRESS-DI Servizio Abbonamenti - Casella Postale , Brescia

Tagliare lungo la linea tratteggiata

▷ Inviate Linux Pro al mio indirizzo:Cognome e Nome

Località

Tel. email

CAP Prov.

Via N.

30 Con il bollettino postale che mi invierete

20 Con carta di credito: Visa American Express Diners Mastercard

▷ Scelgo di pagare, in un unico versamento:

Numero

Scad. (mm/aa) Firma

Sì! Mi abbono a Linux ProCOUPON DI ABBONAMENTO

Riceverò numeri a soli , euro anziché , euro con lo sconto del %

LXP_132_34-35_Doppia_Abbo_LinuxPro 33 06/08/13 15:59

Page 38: Linuxpro 132 Agosto 2013

36 Linux pro 132

L’angolo di

News, recensioni e guide sul sistema operativo libero per smartphone

Android

Sempre più grandeDisplay da 6,4 pollici: il confine tra smartphone e tablet è sempre meno certo

La tendenza a costruire smartphone con il display sempre più grande era destinata a scontrarsi

con quella di realizzare tablet sempre più piccoli. Questo è successo grazie a Sony e al suo Xperia Z Ultra con display da 6,4 pollici. Attenzione però perché mentre Samsung per i suoi note da 5,5 pollici ha coniato il termine “phablet”, che unisce phone con tablet, a Sony insistono nel voler defi nire il loro maxi terminale come uno smartphone. Avendolo potuto provare in anteprima abbiamo constatato che larghezza e lunghezza sono fuori standard ma vengono compensati dallo spessore inferiore al centimetro, e comunque le dimensioni sono paragonabili a quelle di un passaporto. L’obiettivo di Sony è quello di realizzare un dispositivo ibrido, per cui quando il maxi display non serve xperia Z ultra può essere usato come telefono con un auricolare Bluetooth, per poi passare alla modalità tablet dove il display

Full HD sfrutta l’ultima tecnologia X Reality Engine presente sui più nuovi TV Bravia di Sony. Grazie alla presenza di speciali nanoparticelle, lo schermo può visualizzare una tavolozza di colori più ampia del 50% rispetto ai classici schermi LCD, avvicinandosi alla ricchezza di colori tipica degli schermi Amoled, soprattutto per quanto riguarda i neri. inoltre lo schermo è sensibile non solo alle dita ma anche a matite e pennini vari che possono essere usati senza il timore di danneggiarlo grazie alla protezione antigraffi o. il tutto senza dimenticare la presenza per la prima volta su di uno smartphone del processore Snapdragon 800 che secondo i primi benchmark dovrebbe polverizzare i risultati non solo della precedente generazione di Snapdragon 600 (quello per intenderci presente sul Galaxy S4) ma anche del nuovissimo nvidia Tegra 4. il prezzo di 699 euro è sicuramente elevato, ma è comunque in linea con quello dei modelli top di gamma.

È il momento degli impermeabili I dispositivi (quasi) adatti a piscine e mare...

Sono sempre più diffusi gli smartphone Android resistenti ad acqua e polvere. Aveva iniziato

l’anno scorso panasonic con Eluga, un terminale in grado di funzionare senza problemi sott’acqua fi no a un metro di profondità e di resistere alla polvere, e ora la maggior parte dei produttori ha in catalogo almeno un terminale di questo tipo, che in inglese viene defi nito rugged. Gli ultimi modelli Experia Z di Sony possono resistere sott’acqua fi no a un metro e mezzo per 30 minuti mentre il nuovissimo Samsung Galaxy S4 Active viene garantito fi no a un metro. Attenzione però a non portarli al mare pensando di usarli per qualche ripresa fotografi ca subacquea: i produttori infatti specifi cano che l’acqua in cui immergere i dispositivi

non deve essere salata e nemmeno quello ricca di cloro delle piscine. Se proprio volete fare fotografi e subacque dovrete attrezzarvi con una delle tante custodie waterproof che si trovano su eBay. inoltre con il Galaxy S4 Active occorre stare attenti a controllare la corretta chiusura del retro di tipo removibile. in compenso vista la resistenza alla polvere potrete portarli in spiaggia o, se siete particolarmente avventurosi, a spasso nel deserto. resta comunque il problema della resistenza agli urti che al momento viene garantita solo per i tablet Toughpad di panasonic, che non per nulla vengono utilizzati nei cantieri e dall’esercito durante le esercitazioni ma che scontano un peso e soprattutto un prezzo decisamente superiore alla media.

Wi-Fi sempre attivo

Grazie a un fi rmware beta presente sul Galaxy S4 Google Edition iniziano a trapelare le prime

informazioni sulla prossima versione di Android, la 4.3. Le novità non dovrebbero essere molte e riguarderanno principalmente la fotocamera, gli sfondi e soprattutto la gestione del Wi-Fi. A differenza di quello

che accade oggi, dove il Wi-Fi deve essere attivato, in Android 4.3 il collegamento sarà sempre attivo per migliorare la triangolazione e quindi la localizzazione con le varie App. La continua ricerca di una rete Wi-Fi porta anche a maggiori consumi, e quindi sarà possibile disattivarla, anche se la tendenza sarà sempre di più quella di essere Always On.

LXP_132_36_37_news android 36 05/08/13 16:52

Page 39: Linuxpro 132 Agosto 2013

Linux pro 132 37

News L’angolo di Android

Sempre più grande

Wi-Fi sempre attivo

Tablet su misuraSamsung presenta tre nuovi tablet Android, da 7, 8 e 10.1 pollici, adatti per tutte le tasche e con quotidiani e fumetti inclusi nel pacchetto

Il predominio di Apple e dei suoi ipad nel settore dei tablet si sta allentando anche in italia, e tra tutti il produttore che

ne approfitta maggiormente è sicuramente Samsung che, sfruttando la fama del brand Galaxy, presenta tre nuovi modelli adatti praticamente a tutti. Le dimensioni dei nuovi Galaxy Tab 3 sono rispettivamente da 7, 8 e 10.1 pollici, mentre le specifiche hardware pur non essendo eccelse garantiscono comunque buone prestazioni anche con i giochi 3D. La caratteristica più interessante è probabilmente la presenza su tutti i tablet, e quindi anche sul modello base Galaxy Tab 3/7.0, della connessione 3G/HSpA, importante soprattutto nel nostro paese visto che libera dall’esigenza di avere sempre a disposizione una connessione Wi-Fi. il prezzo di 229 euro per un tablet con modulo 3G è sicuramente competitivo sia nei confronti del nexus 7 di Google che dei nuovi tablet di Amazon che arriveranno in autunno. Altro vantaggio per il Samsung Galaxy Tab 3 è la memoria disponibile di 16 GB che può essere ampliata via scheda microSD, possibilità assente nei tablet nexus. il modello

da 8 pollici invece è sicuramente meno competitivo come prezzo (329 euro) ma in compenso può vantare un display ipS da 1280x800 pixel, 1,5 GB di rAM e una batteria da ben 4.550 mAh. Le dimensioni sono le stesse dell’ipad Mini di Apple rispetto al quale costa comunque 100 euro in meno. Anche il modello da 10.1 pollici in vendita al prezzo di 369 euro può vantare un ottimo rapporto qualità/prezzo considerando la dotazione hardware che comprende un processore dual core da 1,6 GHz, un display ipS in HD da 1280x800 pixel, doppia fotocamera e una maxi batteria da 6.800 mAh in grado di superare le 12 ore di autonomia. Ma il vero asso nella manica di Samsung è la dotazione multimediale compresa nel prezzo che comprende l’abbonamento annuale gratuito a Corriere della Sera e Gazzetta dello Sport, mentre per i bambini c’è un abbonamento di sei mesi a Topolino. in più ci sono 40 ebook gratuiti scaricabili dallo store di Samsung e alcune App esclusive come il Cucchiaio d’oro e Buon “App”etito per gli appassionati di cucina.

File crittografati su Google Drive

Il tallone di Achille di Google e dei suoi tanti servizi è sicuramente quello della sicurezza. non per nulla

Android è il sistema operativo mobile più infestato dai malware, mentre la gestione globale del cloud sta ponendo a molti dei dubbi riguardanti la sicurezza dei propri file. per offrire maggiori garanzie

di sicurezza ai suoi utenti Google ha quindi deciso di crittografare i file che transitano su Google Drive in modo da renderli inutilizzabili non solo dai malviventi, ma anche da eventuali spioni “governativi”, come ha insegnato il caso prism che vede lo stesso governo uSA impegnato a spiare le email di milioni di cittadini americani e non solo. LXP

Ricaricarsicamminando Per risparmiare soldi e migliorare il fisico!

Fare esercizio fisico fa bene non solo alla vostra salute ma anche a quella dei vostri dispositivi elettronici.

È questa l’idea che ha spinto un gruppo di ricercatori della Carnegie Mellon university a progettare SolePower, un nuovo modello di accumulatore per smartphone che recupera parte delll’energia cinetica prodotta mentre camminate. il progetto iniziale in realtà prevedeva che l’energia prodotta dalla camminata confluisse in una speciale torcia elettrica e quindi a realizzare un sistema di illuminazione notturna per migliorare la sicurezza degli studenti nel campus, ma da questo all’utilizzo dell’energia per ricaricare una batteria il passaggio è stato breve. ogni volta che

il tallone tocca terra la speciale soletta Solepower (dove sole significa appunto pianta del piede) accumula parte dell’energia prodotta e la trasferisce alla batteria di uno smartphone collegata attraverso le stringhe della scarpa. il progetto Solepower, http://solepowertech.com/, è già passato dalla fase iniziale a quella pratica attraverso il sito di finanziamento online Kickstarter, che ha messo in prevendita le prime solette a 120 dollari, promettendo che saranno consegnate entro la fine del 2014. Secondo i ricercatori basta camminare da tre a cinque chilometri per ricaricare completamente una batteria da smartphone, mentre la durata dell’accumulatore è garantita per 100 milioni di passi, sicuramente più di quanto possa durare la stessa scarpa.

Con SolePower vi basterà camminare 4 Km per ricaricare la batteria del vostro smartphone

LXP_132_36_37_news android 37 05/08/13 16:52

Page 40: Linuxpro 132 Agosto 2013

38 LINUX PRO 132

L’angolo di Android LG Nexus 4

Caratteristiche 7.5Prestazioni 8 Autonomia 8Qualità/prezzo 9

Nexus 4

Bello, potente e alla portata di molti. Peccato per la mancanza del LTE e della scheda di memoria.

Il voto di Linux Pro

Giudizio

Produttore: LGWeb: www.lge.com/itPrezzo: 479 euro (con garanzia it..) 349 euro (online con garanzia EU)

8.5

Effetti specialiLa parte posteriore in vetro del Nexus 4 è sicuramente fragile, ma in compenso offre giochi di luce ed effetti visivi veramente non comuni.

Il rapporto tra l’Italia e gli smartphone della serie Nexus, quelli cioè progettati direttamente da Google,

non è mai stato semplice. Fin dai primi modelli siamo stati abituati a dovere aspettare mesi per poterli acquistare anche nel nostro paese, ma con il Nexus 4 prodotto da LG abbiamo probabilmente raggiunto il record: sono dovuti passare infatti oltre sei mesi dalla presentazione per trovarli fi nalmente nei negozi. I motivi sono diversi: dal prezzo aggressivo (349 euro) imposto da Google, che per alcuni mesi ha venduto direttamente il telefono solo in alcuni paesi (non nel nostro), e che lasciava pochi margini al produttore, alla scarsa disponibilità complessiva. Fatto sta che per acquistare il primo telefono uffi ciale LG con garanzia italiana si è dovuto aspettare maggio, quando ormai erano in commercio i nuovi modelli top di gamma come il Galaxy S4 di Samsung e l’HTC One, che dal punto di vista delle prestazioni complessive superano il Nexus 4. Quest’ultimo però può contare su due caratteristiche assolutamente da non sottovalutare: il prezzo di circa 200 euro inferiore rispetto ai concorrenti e la certezza che sarà sempre il primo ad avere gli aggiornamenti del sistema operativo da parte di Google. Anche se a livello di prestazioni assolute Nexus 4 deve inchinarsi

Ottimo anche il processore Quad-Core Qualcomm Snapdragon S4 Pro da 1.5 GHz abbinato alla scheda Adreno 320 che riesce a gestire senza problemi anche il 3D più pesante. Il benchmark Quadrant Standard ci ha restituito un valore di 5.500 punti, in pratica prestazioni più che raddoppiate rispetto al precedente Galaxy Nexus realizzato da Samsung, anche se notevolmente inferiore ai 10.000 raggiunti dal Galaxy S4. Sulla carta la memoria Flash disponibile è di 16 GB, in realtà prima ancora di installare qualsiasi App vi accorgerete di averne a disposizione meno di 13 GB, visto che l’ultima versione di Android 4.2 Jelly Bean occupa più di 2 GB di spazio. Purtroppo, come su tutti i terminali Nexus, non è previsto l’alloggiamento per una scheda di memoria e visto che alcuni giochi arrivano a pesare anche più di 2 GB è possibile ritrovarsi in breve tempo senza spazio. Per quanto riguarda musica e fi lm il consiglio è quello di usare per quanto possibile il servizio cloud di Google, a condizione naturalmente di avere una

ai modelli top di gamma di Samsung e HTC, come struttura e hardware non è secondo a nessuno. L’idea di realizzare la parte posteriore con lo speciale vetro Gorilla Glass era stata già utilizzata da Apple per il suo iPhone 4, ma in più sul Nexus 4 è stato inserito lo speciale effetto “gatteggiamento” che indica in pratica una particolare trama che rifl ette la luce con risultati estetici piacevoli. Il peso di 139 grammi è leggermente superiore alla media ma rifl ette la presenza del vetro, mentre lo spessore rimane sotto il centimetro. La struttura in vetro è sicuramente bella da vedere, ma allo stesso tempo decisamente più fragile rispetto a quella in policarbonato presente su altri smartphone, nonostante la tecnologia Gorilla Glass che dovrebbe proteggere dalle cadute. Non per nulla il consiglio della stessa Google, è quello di munirsi di un “bumper”, cioè di una protezione in plastica/gomma che riduca al massimo le possibili rotture.

Prestazioni Lo schermo da 4,7’’ è del tipo IPS True HD con una risoluzione da 1280x768 pixel, i colori non sono brillanti come sui modelli Samsung con display Amoled, ma in compenso risultano molto più realistici. Avremmo solo preferito maggiore luminosità e meno rifl essi: sotto la luce diretta del sole infatti diventa diffi cile anche solo cercare un nome in rubrica. Niente da dire invece per la risoluzione: con un display da 4,7 pollici non si sente la mancanza del Full HD, nemmeno guardando un fi lm rippato da Blu-Ray oppure divertendosi con uno dei giochi di ultima generazione. A nostro parere la scelta vincente di Google con il Nexus 4 è stata quella di dotarlo di 2 GB di memoria RAM, che oltre a renderlo sempre fl uido gli permettono di gestire molteplici App in un multitasking ”vero”.

connessione Wi-Fi sottomano. Il resto della dotazione è di ottimo livello, l’unica vera pecca è rappresentata dalla mancanza della tecnologia LTE, cioè il 3G di ultima generazione che inizia a essere diffuso almeno nelle grandi città. In realtà è presente la predisposizione LTE, per cui è possibile che in una prossima versione venga inserita uffi cialmente, ad oggi però chi compera Nexus 4 deve sapere che parte svantaggiato. LXP

LG Nexus 4L’ultimo dei Nexus è completamente costruito in vetro, integra 2 GB di RAM e soprattutto è subito aggiornabile ad Android 4.3

Due GB di memoria RAM permettono di tenere aperte più App contemporaneamente senza notare alcun rallentamento

LXP_132_38_Nexus4 38 06/08/13 15:12

Page 41: Linuxpro 132 Agosto 2013

LINUX PRO 132 39

Pebble L’angolo di Android

Orologio da biciPebble è compatibile con l’App di fi tness Runkeeper (per Android e iOS) che permette di visualizzare in ogni momento tempo, velocità media e distanza complessiva.

Gli smartwatch, o orologi “intelligenti” che dir si voglia, sono in commercio ormai

da diversi anni. Solo che non sono riusciti ad avere il successo sperato, un po’ per le dimensioni eccessive, un po’ per gli schermi LCD che diventano invisibili sotto la luce diretta del sole, un po’ per l’autonomia che diffi cilmente superava le due giornate. Anche noi italiani ci abbiamo provato con I’mWatch, uno smartwartch Android che può vantare un ottimo design ma purtroppo risente di tutti i difetti elencati, e che infatti non ha avuto un grande successo. Il 2013 però potrebbe però essere l’anno della svolta visto che tutti i principali produttori IT, da Apple a Samsung, da Sony a LG, stanno mettendo a punto un loro modello e ormai la tecnologia sembra fi nalmente matura. Nel frattempo però un orologio in grado soddisfare in pieno tutti questi requisiti esiste già, ed è stato realizzato da un gruppo di ragazzi californiani che non riuscendo a trovare i fi nanziamenti necessari al decollo della loro startup hanno deciso di chiedere aiuto direttamente al Web, presentando il loro progetto sul sito di autofi nanziamento Kickstarter e riuscendo in pochi mesi a convincere 70.000 persone a investire 100 dollari sul loro

“ponte” con il telefono. Con un peso di soli 40 grammi, Pebble è sicuramente il più leggero tra gli smartwatch in commercio ed è

oltretutto anche impermeabile fi no a cinque atmosfere, in pratica fi no a 50 metri di profondità. Il display da 1,26 pollici ha una risoluzione di 144x168 pixel e utilizza la tecnologia e-paper simile a quella presente sui lettori di ebook e, pur essendo solo in bianco e nero, ha il vantaggio di risultare perfettamente leggibile anche sotto la luce diretta del sole. Al buio invece è possibile attivare la retroilluminazione utilizzando l’accelerometro, cioè semplicemente scuotendo il polso. L’arrivo di telefonate, messaggi e mail viene annunciato da una vibrazione suffi cientemente potente per essere avvertita anche mentre si guida una moto, anche se poi naturalmente non è possibile visualizzare l’intero corpo di una mail, ma al massimo un SMS. Pur non potendo eseguire App complesse, Pebble è comunque in grado di “visualizzare” alcune App presenti sullo smartphone: è il caso

orologio Pebble. Chi scrive è stato uno di quelli che nel maggio 2012 ha dato fi ducia a questi ragazzi ed esattamente un anno più tardi si è visto recapitare in Italia il primo smartwatch con schermo e-paper. A differenza di altri smartwatch in commercio che integrano un sistema operativo piuttosto complesso come Android, Pebble utilizza FreeRTOS, un sistema estremamente semplice e leggero, distribuito con licenza GPL, che ha il vantaggio di non bloccarsi praticamente mai. In pratica l’orologio dipende completamente dal telefono a cui è collegato via Bluetooth, ma questo non signifi ca che sia tecnologicamente arretrato visto che integra un accelerometro

a tre assi, un magnetometro, il sensore per la luce ambientale ed è compatibile con il nuovo protocollo Bluetooth 4.0. Certo, a differenza di altri modelli non ha lo schermo touch e non permette nemmeno di ascoltare la musica con l’auricolare, ma riceve senza problemi SMS, mail e anche i messaggi di WhatsApp, Facebook e Google Hangout, oltre naturalmente ad avvisarvi in caso di chiamate in entrata. In più, grazie alla libera disponibilità del SDK, si è già sviluppata un’importante comunità di sviluppatori che fi no ad oggi hanno realizzato più di un migliaio di “watchface” (quadranti) differenti, sia di tipo analogico che digitale, che possono essere facilmente installati sull’orologio, sempre partendo dallo smartphone. La compatibilità è garantita sia con i telefoni Android che con l’iPhone attraverso l’App che va scaricata dallo Store e che funziona da

di Runkeeper, una delle più conosciute applicazioni di fi tness che trasferisce in tempo reale sul piccolo display dell’orologio i dati principali dell’allenamento (tempo, velocità, ritmo). Stesso discorso per Rangefi nder, un’App dedicata al golf che permette di gestire i dati di 25.000 campi di tutto il mondo visualizzando sull’orologio la distanza per la buca successiva. Ci sono anche semplici App che è possibile installare direttamente sull’orologio, ma pesano pochi KB e come complessità non vanno al di là del tris o del Pong di 40 anni fa. Il tutto con un’autonomia media di sette giorni, che nel caso di un utilizzo intenso dello smartphone possono scendere a cinque, ma che limitando la ricezione dei messaggi possono arrivare a dieci. LXP

PebbleDa un’idea di un gruppo di ragazzi californiani finanziata online arriva il primo smartwatch Android a lunga autonomia e con display e-paper

“La fantasia di chi realizza quadranti originali per il Pebble è illimitata: a oggi ci sono oltre 1.000 watchface”

Niente altoparlanti e avvisi sonori per Pebble, ma solo vibrazioni abbastanza potenti da svegliare i più dormiglioni

Caratteristiche 8Prestazioni 7 Autonomia 9Qualità/prezzo 8

Pebble

Lo stato dell’arte nel settore degli smartphone. Farà anche poche cose, ma le fa tutte bene.

Il voto di Linux Pro

Giudizio

Produttore: Pebble TechnologyWeb: www.getpebble.comPrezzo: 150 dollari (con spedizione e dazio circa 160 euro)

8

LXP_132_39_Pebble 39 06/08/13 15:10

Page 42: Linuxpro 132 Agosto 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 noi due f.to cm15x50 € 5,90

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

calendario padre pio 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

132

SFOGLIALO E SCOPRI LA PRATICITÀ DI ORGANIZZARE IL TUO TEMPO

Gli impegni di...

2014

1234567 28

89

10 1112 1314 29

15161718192021 30

22232425262728 31

293031

MartedìS. EStEr rEgina

MercoledìS. ottonE vESc.

GiovedìS. tommaSo apoStolo

VenerdìS. EliSabEtta rEgina

SabatoS. antonio Sac.

DomenicaS. maria gorEtti mart.

LunedìS. claudio martirE

MartedìS. adriano

MercoledìS. vEronica giuliani vErg.

GiovedìSS. rufina E SEconda

VenerdìS. bEnEdEtto abatE

SabatoS. fortunato martirE

DomenicaS. Enrico ii impEratorE

LunedìS. camillo SacErdotE

MartedìS. bonavEntura vESc.

MercoledìS.Elvira

GiovedìS. alESSio mEndicantE

VenerdìS. fEdErico vEScovo

SabatoS. giuSta

DomenicaS. SEvErina

LunedìS. lorEnzo da brindiSi

MartedìS. maria maddalEna

MercoledìS. brigida di SvEzia rEl.

GiovedìS. criStina martirE

VenerdìS. giacomo il maggiorE ap.

SabatoSS. anna E gioacchino

DomenicaS. liliana

LunedìSS. nazario E cElSo mart.

MartedìS. marta di bEtania

MercoledìS. piEtro criSologo dott.

GiovedìS. ignazio di loyola Sac.

Non ostentando ciò che è desiderabilesi evitadi confondere il cuore della gente.

(Lao Tzu, da “Tao The Ching”)

LUGLIO

LEONE23 Luglio22 Agosto

noiDUE_150X500bis.indd 7 07/05/13 18:57

PAOLA FEDERICO

partitona

CENA DI LAVORO

SONO TUTTO PER TE

cena con i genitori

cinema con Mariella

h.18 estetista

il nostro anniversario

h. 19,30 corso di cucina

pom. con Elisa

h. 17,30 tennisriunione

non a che ora torno???

tesoro ti porto in montagna

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

NOI DUE

1_ICOVERDUE150X500.indd 1 12/06/13 14:18

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

PADREPIO

CALENDARIO 2014

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

UN CALENDARIO PRATICOCHE CI RICORDA LE BELLE

FRASI DEL SANTO PER ESSERE ISPIRATI OGNI MESE

1_ICOVERPADPIO150X500.indd 1 12/07/13 13:03

PROVA FAM GLOB_207x285.indd 2 06/08/13 11:59

Page 43: Linuxpro 132 Agosto 2013

Test >>Synology DS213jSemplice e funzionale, un NAS sicuramente ottimo sia a casa sia in ufficio pag. 42

NOOBSUn modo semplice per impostare la propria Raspberry Pi senza un collegamento a Internet e senza operazioni complesse pag. 43

Mint 15 OliviaUna delle più popolari distribuzioni di Linux nel campo dei desktop pag. 44

Mageia 3Una distribuzione che ci riporta ai bei tempi andati pag. 45

Confronto >>Cinque programmi per disegnare e ritoccare pag. 46∆ GIMP ∆ Inkscape ∆ Krita ∆ MyPaint∆ Pinta

Da non perdere >>Modifica testi, reti, musica, giochi e simulazione∆ OCRFeeder pag. 52∆ Nethogs pag. 53∆ Qmmp pag. 53∆ Pushover pag. 54∆ BurgerSpace pag. 54

Mint 15 Olivia

Mageia 3

Krita

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

QUESTO MESE...

LINUX PRO 132 41

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_132_41_introRecens 41 07/08/13 16:37

Page 44: Linuxpro 132 Agosto 2013

Test Synology DS213j

Synology DS213jLa redazione di LXP ha provato un NAS che non è un NAS, ma un vero e proprio server. Vediamo come se la cava con trasferimenti di rete e configurazione...

Caratteristiche 9.5Prestazioni 9Facilità d’uso 9.5Qualità/prezzo 9

Synology DS213j

Molto più di un NAS, può diventare il vero centro di lavoro e multimediale per l’ufficio e la casa.

Il voto di Linux Pro

Giudizio

Produttore: Synology Web: www.synology.comPrezzo: €150,00 (IVA esclusa)

9.542 LInux pro 132

Tra i dispositivi hardware che proviamo, i due tipi più frequenti sono gli smartphone/tablet e i

nAS. Quindi non dovremmo più sorprenderci quando ci arriva in redazione uno di questi device da provare. Eppure il nAS DS213j di Synology è riuscito nell’impresa di farci rimanere di stucco per semplicità d’uso e funzionalità.

Pronti… viaLa confezione comprende il nAS a due baie (privo di dischi), l’alimentatore, un CD d’installazione (che include software per Linux) e le viti per fissare il case del Synology e per bloccare le unità disco all’interno del nAS (usatele, ci raccomandiamo). Dando uno sguardo al nAS, vediamo nella parte frontale 4 LED che indicano lo stato di funzionamento e un pulsante d’accensione (un po’ piccolo, forse l’unico difetto del nAS). Sul retro, invece, troviamo due porte uSB 2.0, la porta Ethernet Gigabit e la porta di alimentazione. In breve tempo, seguendo la guida rapida, siamo riusciti a montare l’hard disk WD Red WD30EFRX, un’unità di Western Digital da 3 TB pensata proprio per l’uso nei nAS, quindi con un tempo di vita maggiore rispetto ai dischi tradizionali e con

funzioni, sia per l’uso desktop sia per quello business. Aprendo il menu dei programmi, il Gestore archiviazione è quello che vi consente di impostare il livello di rAID da usare (usando due dischi) e di controllare lo stato delle unità presenti. Ma lo stupore arriva quando si clicca sul Centro pacchetti. Si apre un mondo di possibilità: divise in cinque categorie (Backup, Multimedia, Affari, Sicurezza e utilità) trovate applicazioni per fare streaming audio/video (grazie a DLnA), backup di vario tipo, per utilizzare delle videocamere e realizzare così un sistema di sorveglianza, fino ad arrivare alla creazione di un vero e proprio sito Web dentro il nAS grazie a tool come Wordpress, Joomla, osCommerce, SugarCrM e tanti altri. per non parlare poi della possibilità di installare un server di posta, un server Vpn, un DnS server e del fantastico Download Manager. Se questo non vi basta, una rapida ricerca in rete vi fa scoprire la possibilità di installare altri pacchetti grazie a repository non ufficiali. Il tutto con

prestazioni di tutto rilievo (il suo prezzo di listino è di euro 189,90). A questo punto, di solito, ci ritroviamo costretti a guardare tra le impostazioni del router per scoprire l’indirizzo del nAS. Con il Synology, invece, anche senza installare il software incluso, è sufficiente andare all’urL http://find.synology.com per vedere apparire una pagina Web che ci indica l’Ip. premendo il pulsante Connetti presente nella pagina, essendo alla prima accensione, inizia la procedura d’installazione del DiskStation Manager. Si tratta di un vero e proprio sistema operativo che consente di impostare e usare le tante funzioni del DS213j semplicemente usando il browser e il mouse. Sulla scrivania vediamo alcune icone, tra cui la guida, il Pannello di controllo e il Centro pacchetti. Sulla destra, invece, c’è un pannello che ci aggiorna sullo stato e sull’operatività del dispositivo. Il pannello in alto, infine, consente di aprire il menu dei programmi e di cambiare le impostazioni. Dal pannello di controllo si attivano i vari servizi di rete e di condivisione (DDnS, accesso via SSH, Samba, nFS, FTp, WebDAV, ecc.) e si controllano le impostazioni per utenti e gruppi, backup di rete e numerose altre

la massima semplicità e con anche la possibilità di controllare la maggior parte delle funzioni del nAS tramite app per Android. Le caratteristiche hardware, la qualità del sistema operativo, i limitati consumi (circa 20 Watt a pieno regime, oltre alla possibilità di usare il Wake on LAn o l’accensione/spegnimento programmati) e la silenziosità assoluta rendono questa unità perfetta per l’uso sia nei piccoli uffici sia in casa. LXP

Il NAS DS213j di Synology è facile sia per quel che riguarda l’installazione dei dischi, sia per l’uso quotidiano grazie al vero e proprio sistema operativo integrato

Un click e il NAS diventa un server multimediale, Web, email, stazione di videosorveglianza o un vero centro automatizzato per i download

LXP_132_42_Synology 42 06/08/13 14:32

Page 45: Linuxpro 132 Agosto 2013

Noobs Test

NOOBSNon sapete come salvare il sistema operativo della Raspberry Pi su una SD? LXP vi viene in soccorso: ha scovato il tool fatto proprio per questo scopo...

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

NOOBS

NOOBS è perfetto per chiunque voglia imparare a usare la RP.

Il voto di Linux Pro

Giudizio

Sviluppatori: Raspberry Pi Foundation, Berry TerminalWeb: www.berryterminal.comLicenza: MIT

9LINUX PRO 132 43

ConfigurazioneSe siete utenti esperti della RP, potete personalizzare al massimo la vostra RP modificando il file config.txt.

In evidenza

Help onlinePotete cercare aiuto direttamente dall’interfaccia di NOOBS usando il pratico browser integrato nel tool.

Il menu principale di NOOBS offre un modo semplicissimo per installare la distro per RP che preferite senza dover conoscere troppi dettagli tecnici o strani comandi da shell

La Raspberry Pi, il piccolo computer da 33 euro che nell’ultimo anno e mezzo ha rivoluzionato

il mondo dell’informatica, è stato protagonista di numerosi progetti, dall’accensione di semplici LED usando il GPIO all’animazione di un robot in grado di uscire da solo da un labirinto. Eppure in questo periodo c’è stata una barriera che ha impedito, o limitato gli utenti nell’uso della RP: il processo di copia di un’immagine del sistema operativo su una scheda SD. Per gli utenti Linux, l’operazione che includeva l’uso del comando dd per copiare l’immagine si è dimostrata complicata per alcuni. Un tasto premuto per sbaglio e dd poteva rovinarvi la giornata. È per questo che la Raspberry Foundation ha annunciato un nuovo tool: NOOBS. New Out Of Box Software (NOOBS) è un tool di recovery per gli utenti della RP. Esso contiene le immagini di diversi sistemi operativi (Raspbian, RiscOS, Arch Linux, Pidora, Raspbmc e OpenELEC), tutti racchiusi in un fi le da 1,2 GB. Lo scopo di NOOBS è di fornire agli utenti della Raspberry Pi un modo semplice per impostare la propria scheda senza un collegamento a Internet e senza dover compiere operazioni complesse. Bisogna

operativo. Una delle funzionalità più interessanti di NOOBS, però, è che potete provare con facilità un altro sistema semplicemente tenendo premuto il tasto Shift all’avvio della RP. Facendo ciò vi apparirà nuovamente il menu di scelta dei sistemi operativi installabili che era apparso al primo avvio. Fate però attenzione: il cambio di sistema spazzerà via quello installato in precedenza, dati compresi. Questa funzionalità è comoda anche per ripristinare in un baleno il sistema installato se, nei vostri esperimenti, avete “rotto” qualcosa, proprio come se si facesse un reset di fabbrica. Dal menu, se siete abbastanza esperti, potete modifi care il fi le confi g.txt per personalizzare le impostazioni della vostra RP. Se la vostra scheda è collegata via Ethernet alla Rete, è anche possibile usare l’help online per recuperare degli aiuti, trucchi e guide. Il team dietro a NOOBS ha sviluppato anche BerryBoot e NOOBS può essere considerato una versione semplifi cata di questo software. NOOBS è anche altamente confi gurabile, per cui potete realizzarne una versione da usare per il vostro LUG. Noi amiamo NOOBS perché

dire che tale scopo viene raggiunto in pieno. Per usare NOOBS vi serve una scheda SD da almeno 4 GB formattata in FAT32 e, ovviamente, una copia di NOOBS, che trovate nella sezione Download del sito della RP www.raspberrypi.org/downloads. Installare NOOBS è incredibilmente facile, vi basta estrarre il fi le Zip sulla SD e il gioco è fatto. Ora inserite la SD nel suo alloggiamento nella RP e avviate la scheda. Al primo boot NOOBS si carica automaticamente e vi mostra un menu che elenca i sistemi disponibili. Per installarne uno è suffi ciente selezionare la sua voce di menu e poi cliccare sul pulsante Install OS che si trova in alto. A questo punto vedrete comparire un installer grafi co che vi fornisce maggiori informazioni sul sistema scelto. Nei nostri test abbiamo visto che la partizione Raspbian è stata automaticamente ridimensionata per occupare tutto lo spazio della SD, mentre Pidora – il respin di Fedora per la RP – ci ha chiesto se volevamo ridimensionare la partizione come parte del processo post-installazione.

Installazione facileCompletata l’installazione, siete pronti ad avviare il nuovo sistema

semplifi ca al massimo il processo di installazione di diversi sistemi operativi sulla RP e pensiamo che possa contribuire ulteriormente alla diffusione della piccola scheda. Il sito della Raspberry Foundation contiene tutte le istruzioni che vi servono per usare NOOBS, oltre a un simpatico video esplicativo. Trovate tutto all’URL www.raspberrypi.org/archives/4100. Il codice sorgente di questo progetto si trova invece su Github all’indirizzo https://github.com/raspberrypi/noobs. LXP

LXP_132_43_noob 43 07/08/13 16:37

Page 46: Linuxpro 132 Agosto 2013

44 LINUX PRO 132

Test Mint 15 Olivia

Linux Mint 15 OliviaRiuscirà Mint a conservare il suo dominio nel campo dei desktop? Abbiamo fatto un giro con la recente versione 15 per valutare le sue prestazioni

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

Mint 15 Olivia

Linux Mint 15 è la quintessenza del desktop Linux ma il breve periodo di supporto rappresenta un limite notevole.

Il voto di Linux Pro

Giudizio

Sviluppatore: Linux Mint TeamWeb: www.linuxmint.comPrezzo: Gratuito con varie licenze

9

Cinnamon 1.8Le desklet sono una novità di questa versione che vi permetterà di leggere fumetti o guardare l’orologio direttamente sul desktop.

In evidenza

Mate 1.6Grafi camente non è molto diverso da Mate 1.4 ma gli sviluppatori assicurano che è stato ripulito a livello interno.

Le desklet: una soluzione per personalizzare a piacimento il vostro desktop… o il primo passo verso una cervellotica mostruosità (vedi KDE)?

“Mint ha raggiunto una certa stabilità ed evita di cambiare per il puro gusto di farlo”

Avviando la versione Live di Linux Mint 15 (nome in codice Olivia), è difficile

notare delle differenze rispetto alla versione 14. Per scovarle abbiamo dovuto andarle a cercare nelle note di pubblicazione. Al di là dei soliti aggiornamenti, Olivia contiene tre nuove funzioni: un nuovo display manager (MDM), sorgenti per i software (mintsources) e un sistema per i driver (mintdrivers). Sono tutte novità interessanti, benché difficilmente si possano definire rivoluzionarie. Maggiori modifiche hanno subito gli ambienti desktop, Cinnamon e Mate. Cinnamon, che passa alla versione 1.8, comprende ora le cosiddette desklet. Si tratta di applicazioni che operano sul desktop come i plasmoidi di KDE o i widget di Android. Per il momento non sono molto numerose: mentre scriviamo, ce ne sono tre preinstallate (un orologio, una cornice fotografica e un programma di avvio) e tre scaricabili mediante l’applicazione desklet (un sistema di visualizzazione per XKCD, destinato a chi ha molto tempo da perdere, più altri due orologi). Data la popolarità

Paura di cambiareLa decisione non è stata presa dal team di Mint: gli è stata imposta da Canonical, che ha ridotto il suo periodo di supporto per le versioni non a lungo termine da 18 a 9 mesi (con il rammarico di molti utenti). Il team di Mint sostiene comunque da tempo che chi è soddisfatto del suo sistema non ha alcuna necessità di aggiornarlo in corrispondenza di ogni nuova release. Tuttavia, a partire da questa versione, dovrete farlo ogni volta, per assicurarvi di disporre degli ultimi aggiornamenti di sicurezza. Questa novità rende le versioni con supporto a lungo termine (LTS) decisamente più allettanti. Per fare un esempio, Mint 13 sarà supportata fino all’aprile 2017, mentre la prossima versione LTS non uscirà fino

di Mint, tuttavia, prevediamo che presto ne appariranno molte altre. I principali progressi di Mate, invece, operano dietro le quinte; il fatto che siano invisibili all’utente, però, non li rende meno importanti. La base del codice è stata riordinata e ripulita in modo da facilitarne la manutenzione in futuro. Il fatto che Mint non sia cambiato molto è rassicurante. Ha ormai raggiunto una certa stabilità ed evita di cambiare per il puro gusto di farlo. Non è il caso che gli utenti si ritrovino a dover imparare nuovi modi per fare le cose solo perché un programmatore decide che debbano farlo. In effetti, la novità principale del sistema non è dovuta affatto al team di Mint, bensì a Ubuntu, sul quale Mint è basata. L’attuale versione di Ubuntu, Raring Ringtail, è la prima il cui supporto è limitato a soli nove mesi. Dato che Mint 15 è uscita un mese dopo questa distribuzione, anche se la avete già installata potrete contare sul supporto solo per otto mesi (fino al gennaio 2014). La versione precedente sarà supportata per tre mesi in più (fino all’aprile 2014).

al maggio 2014. Perciò, se siete appassionati di Mint, è il momento di decidere se le nuove funzioni valgono un ciclo di aggiornamento così rapido. Se invece non l’avete mai provata, fatelo, è davvero una gran distro. LXP

In evidenza

LXP_132_44_Mint_OK.indd 44 06/08/13 15.18

Page 47: Linuxpro 132 Agosto 2013

Mageia 3 Test

Mageia 3Linux Pro ha trovato una distribuzione che ci riporta ai bei tempi andati: vediamo se è per tutti o solo per i nostalgici delle distro semplici

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

Mageia 3

Diremo, con affettato accento francese: Ooh-la-la-la, c’est Magnifique!

Il voto di Linux Pro

Giudizio

Sviluppatore: La squadra di Mageia Web: www.mageia.orgLicenza: Varie licenze di Software Libero

8Linux pro 132 45

La facile gestione dei pacchetti è ancora uno dei motivi migliori per usare Mageia, insieme alla fantastica vastità di ciò che è disponibile

Usare una distribuzione derivata da Mandrake sembrava sbagliato senza decidere di scegliere anche di installare KDE

Mageia è come una minestra fatta in casa in una fredda notte d’inverno:

è una distribuzione che vi fa sentire caldi e comodi e vi ricorda un’età più innocente. in un mondo di continui cambiamenti, interfacce sperimentali e agitazioni degli sviluppatori, Mageia vi riporta a tempi migliori; tempi in cui le distribuzioni mantenevano lo status quo facendo del proprio meglio per essere quello che i loro utenti volevano che fossero. È il prodotto di una comunità di Mandrake divisa e di un momento in cui hanno preso in pugno la situazione, creando la distribuzione che pensavano dovesse essere Mandrake. Hanno fatto un ottimo lavoro. Considera prima di tutto l’utente, ad esempio, quando il programma di installazione chiede quale interfaccia vorreste, la proposta è fatta senza traccia di ironia o favoritismi. La breve panoramica dell’installazione è ancora unica e una nuova funzione fornisce la capacità di abilitare le sorgenti di software proprietario e non libero al momento dell’installazione.

di Controllo, su misura, che ora è situato al primo posto nella Barra di avvio di KDE. un nuovo aspetto lo aiuta a sembrare quasi altrettanto pulito dei pannelli nativi di KDE e fornisce un facile accesso a molte opzioni di configurazione hardware e software. nonostante questo, avrebbe bisogno di una ristrutturazione dell’usabilità. usa un codice vecchio di anni e molti dei pannelli sono incoerenti: in alcuni premendo Esci si torna alla pagina principale, in altri Esci annulla solo l’operazione. inoltre, non c’è un segna percorso che indichi dove siete nella gerarchia di configurazione. Questa mancanza di rifiniture è probabilmente il risultato di altre priorità. Fuori rete Queste priorità sembrano dettate soprattutto dall’aggiornamento dei pacchetti e dall’aggiunta di nuove applicazioni ed è un altro buon motivo per installare dal DVD completo poiché molte possono essere installate dal disco quando volete. Questo è l’ideale se non avete accesso alla banda larga. La stazione audio digitale, Ardour, è ora compresa insieme a molti altri

Sono tocchi come questi che hanno reso Mandrake un successo tra i principianti quando Linux era difficile da usare, ed è bello vedere che Mageia porta la stessa fiaccola. Dalle sue ceneri poiché Mandrake originale era una distribuzione KDE, abbiamo continuato la tradizione e abbiamo optato per un’interfaccia KDE 4.10 nella nostra installazione. Mageia ha un logo e una veste migliorati e pensiamo che siano fantastici. il tema formato azzurro funziona bene con KDE e complessivamente l’esperienza dell’interfaccia è eccellente. il lanciatore di applicazioni è del tipo “Menu di avvio”, piuttosto che quello macchinoso predefinito di KDE e anche le attività superflue sono state rimosse, ma per il resto, lo stile visuale e gli effetti di KDE non sono stati toccati. Avete ancora lo strano bagliore blu intorno alle finestre, ma non conosciamo una distribuzione abbastanza coraggiosa da rimuovere anche questo. La grande forza di Mageia, ereditata da Mandrake, è sempre stata nel Centro

strumenti per la musica complementari. La leggera interfaccia RazorQT fa parte del DVD e rappresenta un’ottima alternativa a KDE basata su Qt, gli utenti di GnoME saranno contenti dell’inclusione del fantastico client di posta Geary. il client ufficiale Steam farà felici i giocatori e insieme all’ottimo supporto ai driver di nvidia, rende Mageia un’alternativa concreta a ubuntu per giocare su Linux. La squadra di Mageia sta facendo un ottimo lavoro. Hanno catturato l’essenza di Mandrake e le hanno dato nuova vita. LXP

LXP_132_45_Mageia 45 07/08/13 16:37

Page 48: Linuxpro 132 Agosto 2013

Roundup Office suites

46 Linux pro 132 Linux pro 132 47

Confronto Test Test Confronto

U n’immagine vale mille parole. Sapevate che, secondo diverse fonti, questo proverbio ha quasi esattamente cent’anni?

naturalmente, non è sempre vero. Tutti quelli che hanno avuto bisogno di navigare velocemente almeno una volta siti Web infestati dalla grafica tramite una connessione molto lenta, lo sanno. però, logo ben fatti, manifesti, organigrammi, sfondi e molte altre immagini possono

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

Modalità del test

trasmettere le informazioni molto più efficientemente dei loro corrispettivi testuali. Ancor più importante è il fatto che disegnare può essere un enorme divertimento ed è un bisogno primario per molti di noi, come leggere o praticare sport. Ma come si fa questo tipo di lavoro su Linux, o almeno con il Software Libero? Questo confronto prova ad aiutare più utenti possibile a trovare la propria risposta a questa domanda. Deliberatamente non abbiamo

provato a immaginare quale programma sarebbe il migliore per i veri artisti e i professionisti della grafica in generale. Abbiamo cercato, invece, un software che fosse facile sia da installare, sia da usare per creare illustrazioni basilari, manifesti, diagrammi e materiale per brochure, o semplicemente disegnare con un computer per divertirsi e per guadagnare. Questo ci ha portato alle cinque applicazioni bitmap o vettoriali che troverete in queste pagine.

Editor di immagini

La nostra selezione GIMP Inkscape Krita MyPaint Pinta

Dovete dare un tocco particolare al vostro lavoro con grafica disegnata da voi o semplicemente vi piace disegnare? Linux Pro vi presenta cinque programmi che vi possono aiutare in questa missione

I cinque programmi descritti in queste pagine sono stati tutti provati su un PC con Fedora 17 a 64 bit, con tutte le correzioni applicate. Per i motivi spiegati nell’introduzione, abbiamo installato e provato le versioni disponibili nei normali repository di Fedora. Volevamo controllare le funzioni principali di ogni programma e verificare quanto sia semplice per un utente medio iniziare a usarli per un lavoro basilare. Allo stesso tempo, volevamo darvi un’idea veloce di quanto potete spingervi oltre con questi programmi se avete le capacità e le motivazioni giuste. Questo è il motivo per cui, diversamente da quanto accade nella maggior parte dei confronti, alcune delle schermate non provengono dalle nostre prove, ma direttamente dal sito Web del programma.

LXP_132_46_51_LXF171.round_pixels 46 05/08/13 17:02

Page 49: Linuxpro 132 Agosto 2013

Roundup Office suites

46 Linux pro 132 Linux pro 132 47

Confronto Test Test Confronto

Q uesti due problemi sono sempre importanti nel software, ma negli elaboratori grafici sono più

fondamentali del solito. A marzo 2013, krita.org parlava solo di un “installer per Windows altamente sperimentale”. il pacchetto di programmi Calligra invece, che include Krita, offriva “supporto preliminare su Mac oS x e Windows” su calligra.org/get-calligra. Questo potrebbe essere cambiato quando leggerete questo confronto. Gli altri elaboratori girano tutti su Windows e Mac oS. GiMp ha anche installatori di terze parti per entrambe le piattaforme su gimp-win.sourceforge.net e gimp.lisanet.de. L’interoperabilità è strettamente collegata ai formati dei file. in genere, ogni volta che convertite un’immagine da un formato a un altro potreste perdere qualcosa, che sia la risoluzione, la profondità di colore, i livelli o i metadati. Teoricamente, dovreste generare e salvare un’immagine solo nel formato di file nativo o preferito dell’editor

Interoperabilità e supporto multipiattaforma

Supporto del testo

C’è il rischio di chiudersi dentro?

Le immagini valgono 1.000 parole, ma non possono farne a meno

che state usando, fino a quando non avete finito di lavorarci. Altrimenti certi metadati, o persino livelli, possono andare persi. Le perdite possono essere notevoli, specialmente quando passate dai formati bitmap ai vettoriali o viceversa. Questo è dovuto alla differenza tra i due. Le immagini bitmap sono matrici di pixel, mentre i vettori combinano linee e altri oggetti generati da istruzioni più o meno complesse. Questo è importante perché inkscape è progettato specificamente per i vettori e gli altri per le bitmap. inkscape può esportare in postScript e scrivere o leggere parecchi formati bitmap. Tuttavia, se doveste usarlo insieme a strumenti bitmap, sarebbe meglio mettere inkscape solo all’inizio o alla fine del vostro procedimento. in pratica, oltre a JpG e pnG, pinta accetterà anche TGA, iCo, TiFF e BMp. Krita può importare ed esportare immagini pnG e JpG, leggere xFC, pDF e i formati rAW di alcune macchine fotografiche, o esportare in BMp. GiMp supporta quasi

tutti i formati esistenti. per quanto concerne l’interoperabilità, i quattro programmi bitmap supportano anche openraster (orA, http://freedesktop.org/wiki/Specifications/OpenRaster), anche se GiMp necessita di un’estensione per farlo. orA è un sostituto di Adobe pSD per lo scambio di immagini bitmap multilivello, completo di metadati specifici per livello. orA è una buona scelta, se non una necessità, quando dovete usare più di un programma bitmap. Mypaint, per esempio, conserva i livelli separati solo quando si salva nel formato orA!

I lavori grafici non artistici, che sono il contesto di questo confronto, molto spesso includono una combinazione

di testo e disegni. i singoli editor di questa prova hanno una valutazione molto diversa in questa categoria. Mypaint non ha affatto una funzione Aggiungi testo nella sua interfaccia normale, mentre in pinta potete

scrivere sulle vostre immagini e impostare la formattazione di base (carattere, dimensione, ecc). non è proprio divertente né semplice comunque, e se dovete cambiare quello che avete scritto, per esempio, bisogna cancellare e riscrivere tutto da capo, a quanto pare. GiMp, Krita e inkscape sono tutti notevolmente migliori a questo riguardo.

Lo strumento Testo di GiMp 2.8 vi permette di accedere a tutti i parametri specifici di formattazione (da elementi come carattere e dimensione, peso e famiglia, al colore, distanza dalla linea di base e kerning) direttamente nello spazio di lavoro

principale, sulle parole che state digitando. Questo è molto più semplice che nelle precedenti versioni, quando tutti questi controlli erano in una sottofinestra separata. La migliore notizia di tutte è che Krita e inkscape si comportano meglio di GiMp con i testi. rendono semplice non solo l’aggiunta di testo alle vostre immagini, ma anche giocarci e renderlo un vero elemento dell’illustrazione, non solo una didascalia sovrapposta. in inkscape potete installare i vostri caratteri, impostare la spaziatura e il kerning predefiniti e inserire righe di testo singole o multiple. Soprattutto, inkscape vi fa scrivere facilmente il testo lungo qualsiasi linea che scegliete. naturalmente, sia il testo stesso, sia la linea sul quale avete detto a inkscape di metterlo, rimangono modificabili. Krita ha funzioni di testo su tracciato simili e un Pennello testo che potete usare per dipingere efficacemente il testo in parecchi modi.

L’elenco dei formati nei quali GIMP può salvare le immagini è così enorme che non entra nemmeno nello schermo...

Il pannello di formattazione del testo in Krita: carattere, colore, peso e la possibilità di mettere il testo su tracciati o cornici

VerdettoGIMP

Inkscape

Krita

MyPaint

Pinta

Se il supporto multipiattaforma e i formati sono importanti, optate per GIMP.

VerdettoGIMP

Inkscape

Krita

MyPaint

Pinta

Se vi serve del testo nelle vostre immagini, Krita o Inkscape sono i migliori.

LXP_132_46_51_LXF171.round_pixels 47 05/08/13 17:02

Page 50: Linuxpro 132 Agosto 2013

48 Linux pro 132 Linux pro 132 49

Confronto Test Test Confronto

Interfaccia utenteQual è il programma più produttivo da usare?

L’elaborazione grafica è un campo enorme, con tante facce diverse quanti sono i modi di creare e modificare realmente le immagini.

i singoli elaboratori di immagini che stiamo recensendo in queste pagine lo provano al primo sguardo e ciascuno di loro ha i suoi propri diversi obiettivi e metodi distinti per fare il lavoro. GiMp

prova a essere un tuttofare e più o meno riesce in questa missione. Mypaint si concentra quasi esclusivamente sul disegno a mano libera, mentre Krita e pinta vivono ciascuno molto individualmente di vita propria, più o meno a metà strada tra questi due estremi. intanto, inkscape si prefigge di aiutarvi a domare illustrazioni che, dietro le quinte, sono

essenzialmente solo una serie di equazioni o una sequenza di comandi. Confrontare le interfacce di strumenti con obiettivi così completamente diversi è come confrontare le mele con i mulini a vento, piuttosto che con le arance. perciò, abbiamo solo provato a menzionare, nel poco spazio disponibile, le funzioni più caratteristiche di ogni programma.

GIMPGiMp è un elaboratore bitmap generalistico già usato per le fotocomposizioni, l’elaborazione fotografica avanzata e tutto quello che c’è in mezzo. per fare tutte queste cose GiMp si è dotato di una nutrita interfaccia utente. in modo predefinito, questo programma spargerà (almeno) tre finestre separate sul vostro schermo, con molte altre a portata di un solo click. Fortunatamente, se questo è un problema potete facilmente passare alla modalità a singola finestra. otterrete una linguetta per ogni immagine aperta al centro della finestra, più una manciata di pannelli, o finestre agganciabili, sui lati. Attivate la casella Personalizzazione UI per altro. per ora, ricordate solo che per GiMp Salva significa solo salva come xCF, poiché questo è il suo formato nativo. per ottenere qualsiasi altro formato dovete scegliere invece Esporta (ma fatelo solo quando avete veramente finito l’elaborazione!).

Inkscapeinkscape è nato per la grafica vettoriale, com’è evidente dopo appena uno sguardo di due secondi ai suoi pulsanti. in inkscape, ogni cosa è un oggetto che potete collegare ad altri oggetti: ottimo per creare organigrammi o diagrammi di flusso. Gli oggetti di inkscape possono essere facilmente ruotati, tagliati e mascherati in molti modi, o disposti su diversi livelli. C’è uno strumento per creare archi, stelle, poligoni e altre forme. inkscape supporta anche le sfumature complesse e i cloni, cioè copie di un oggetto che cambiano quando modificate l’originale. il disegno di linee è possibile a mano libera o con lo strumento Bezier, il che vuol dire fare semplicemente click dove volete che passi la linea. Tutti i disegni sono conservati come Standard Vector Graphic (SVG), un formato testuale che potete modificare direttamente nell’editor xML di inkscape.

In generale, non c’è supporto all’animazione da nessuna parte in questo confronto, eccetto che

per qualcosa di molto semplice. pinta non ha proprio niente, mentre gli altri offrono molto poco. GiMp e inkscape vengono prima. il GIMP Animation Package (http://gimp.org/tutorials/Using_GAP) vi permette di combinare le immagini esistenti in cicli di diverso tipo, per esempio Diretto, inverso o pingpong. L’ultimo termine indica un ciclo con tutti i passaggi

Multimedialità e animazioneCosa cosa? Niente video negli editor di immagini?

eseguiti prima in un ordine e poi nel suo opposto. Lo standard SVG supporta l’animazione: le specifiche definiscono come inserire parecchie animazioni basate su linee temporali nello stesso file. ogni animazione può avere un avviatore separato, fisso o controllato dall’utente. inkscape, comunque, non supporta ancora tutte le possibilità citate nello standard. Le animazioni sono possibili anche mettendo ogni singolo fotogramma in un livello separato. inkscape ha una funzione Incolla in origine che sembra fatta per

questo tipo di lavoro, insieme a un’estensione (JettyInk) che può esportare ogni livello come file pnG separato. L’animazione con Krita o Mypaint sembra riservata agli utenti con capacità e tempo per smanettare. Krita dovrebbe avere un’estensione per l’animazione, ma il suo sviluppo è fermo. Mypaint ha due diramazioni sperimentali che dovrebbero supportare le animazioni fatte su livelli separati, alla maniera di inkscape. Andate su wiki.mypaint.info/Animation per i dettagli.

VerdettoGIMP

Inkscape

Krita

MyPaint

Pinta

Questi programmi non sono progettati per l’animazione. Non aspettatevi molto quindi sotto questo aspetto.

LXP_132_46_51_LXF171.round_pixels 48 05/08/13 17:02

Page 51: Linuxpro 132 Agosto 2013

48 Linux pro 132 Linux pro 132 49

Confronto Test Test Confronto

Kritapotete usare l’interfaccia ben ordinata di Krita per elaborare immagini esistenti, ma non è per questo che è stato scritto. Krita in svedese significa gesso o pastello. Questa applicazione è stata creata per rendere il disegno e la pittura da zero su di un computer quanto più simili possibile a farlo con strumenti non digitali. Questo è il motivo per cui i suoi sviluppatori dicono che “non è molto divertente senza una tavoletta grafica sensibile alla pressione”. Ma se lo chiedete a noi, non è completamente vero. in Krita potete anche disegnare con strumenti vettoriali e bitmap e decine di filtri, mantenendo ogni parte di un’immagine in un livello diverso, con profondità di colore fino a 32 bit in virgola mobile per canale. Come parte di Koffice e Calligra, Krita può essere la scelta migliore per le persone che creano grafica da inserire in testi o presentazioni.

MyPaintMypaint è costruito per essere usato principalmente in combinazione con una tavoletta grafica, in tutta una serie di stili. i vostri movimenti sulla tavoletta (pennellate) vengono tradotti in sequenze di minuscole ellissi o cerchi chiamati dab. Quando provate a uscire senza salvare, Mypaint vi dice quanti minuti di lavoro potreste perdere. L’interfaccia, basata su una tela di dimensioni illimitate con uno sfondo configurabile, rimane nascosta alla vista il più possibile. in modo utile, la funzione Salva come Schizzo (che è collegata al tasto F2) salva di un disegno tutte le copie che volete. oltre a tutto questo, c’è un buon supporto dei livelli. i pennelli di Mypaint, di cui potete cambiare la dimensione anche nel mezzo di una pennellata, sono forse i più potenti dell’intero gruppo. per sottolineare questo, c’è una vasta scelta di opzioni per consentirvi di configurare i pennelli esistenti o persino creare le vostre proprie versioni.

Pintapinta è inspirato da paint.nET. offre tutti gli strumenti di base di cui avete bisogno per regolare la luminosità, il contrasto e altri dettagli fotografici e vi dà illimitati livelli, una funzione di cattura della schermata e la cronologia completa, così potete sempre annullare qualsiasi azione della sessione corrente. Due strumenti caratteristici di pinta sono le opzioni Bacchetta magica e Ricolora. La bacchetta è usata per selezionare rapidamente aree con colori simili alla selezione corrente. ricolora ridipinge solo all’interno di aree dipinte precedentemente. potete disegnare in modalità forma libera, spostando il cursore in qualsiasi modo vi piaccia, incluse sia le figure chiuse sia aree di selezione chiuse automaticamente. Quest’ultima funzione è chiamata strumento Selezione libera. pinta ha anche molte regolazioni grafiche ed effetti per eseguire piccole modifiche o cambiamenti sostanziali all’immagine corrente.

Personalizzare l’interfacciaNon vi piace dov’è il pulsante? Allora spostatelo...

VerdettoGIMP

Inkscape

Krita

MyPaint

Pinta

La maggior parte dei programmi vi permette di personalizzare quasi tutti gli aspetti dell’interfaccia.

“Whe

re R

ed A

pple

s Li

e”,

Gri

atch

(gri

atch

-art

.dev

iant

art.

com

)

A volte la cosa che vi fa amare od odiare un’applicazione è la possibilità di mettere le parti della

sua interfaccia grafica proprio dove le volete vedere. Mypaint e inkscape sono i meno flessibili del gruppo. Krita e pinta vi permettono di avere qualsiasi combinazione, mentre GiMp è il programma con le maggiori possibilità di personalizzazione. Forse avere così tante cose che devono essere riposizionate è proprio il suo difetto, ma quello che importa è la scelta dell’utente,

no? potete cambiare quasi tutto nell’aspetto di GiMp, dalla dimensione delle icone ai colori, ai temi dei componenti. Se doveste usare GiMp su di un tablet, trovereste anche cursori e finestre speciali per configurare le impostazioni della pressione e della penna. Tuttavia, queste non sono le funzioni di personalizzazione dell’interfaccia più importanti che offre. GiMp organizza le centinaia di cose che può fare in pannelli, o finestre agganciabili. A seconda dei vostri gusti, potete avere queste cornici sparse

su tutto il vostro spazio di lavoro o impilate in quante colonne volete in una sola finestra. premendo il tasto Tab si chiudono o aprono tutti i pannelli. per massimizzare la produttività, comunque, dovrete trovare la disposizione che funziona meglio per voi e imparare a usarla appropriatamente. Questo è un compito sufficiente ad aver generato una guida dedicata, Managing Dockable Dialogs (Gestire le finestre impilabili) su http://registry.gimp.org/node/20335. Vi abbiamo avvertiti...

LXP_132_46_51_LXF171.round_pixels 49 05/08/13 17:02

Page 52: Linuxpro 132 Agosto 2013

50 LINUX PRO 132 LINUX PRO 132 51

Confronto Test Test Confronto

Fu può fare persino cose per cui non dovreste davvero aver bisogno di installare uno script, come disegnare frecce. Una sezione dedicata del sito Web di GIMP (http://registry.gimp.org) cataloga le estensioni che potete creare con Script-Fu o altri linguaggi. Save for Web, per esempio rimuove i metadati e sceglie il miglior compromesso tra dimensione e qualità dell’immagine prima che carichiate le immagini sul vostro blog. Oppure potrebbe piacervi National Geographic, che dà alle vostre fotografie lo stesso aspetto di quelle nella rivista. Anche GIMP ha una modalità batch e un’estensione file-glob per lavorare da riga di comando o con uno script della shell. Digitando gimp -i -b - sulla riga di comando, si apre una console interattiva nella quale potete eseguire tutti i comandi Script-Fu elencati nel Navigatore di procedure di GIMP. Per saperne di più andate alla pagina Web www.gimp.org/tutorials/Basic_Batch. Inkscape può eseguire script Python e ha una modalità a riga di comando proprio come GIMP, ma è più interessante per l’automatizzazione, perché il formato SVG è XML, che è perlopiù semplice testo. Se volete, potete generare grafica per Inkscape con script della shell o in Perl, aprendo il programma solo per i ritocchi finali.

C reare grafica è divertente. Tutti sappiamo che questo è vero solo fintanto che possiamo

far fare al computer da solo le parti noiose. Con questi software, quello che potete di fatto personalizzare o delegare al software varia enormemente da programma a programma, semplicemente perché i loro obiettivi e ambiti di lavoro sono diversi. Entro questi limiti, le applicazioni hanno tutte qualcosa da offrire. Potete trovare parecchie estensioni per Pinta sul suo sito Web, o scrivere la vostra se conoscete Visual Studio o MonoDevelop. MyPaint sembra

Svelti! Quali sono i nomi delle azioni che dovete eseguire con un programma di grafica

per ottenere qualcosa di semplice da descrivere come un cubo con un’immagine diversa su ciascun lato? Questa domanda dimostra che nella grafica la documentazione è più necessaria che negli altri campi. Fortunatamente, quasi sempre ce n’è in abbondanza! Pinta ha una serie di ottimi tooltip, ma oltre a questi c’è solo una semplice guida all’installazione e un tutorial che spiega come preparare e installare le estensioni. Non molto, insomma. GIMP offre un help contestuale (con F1), un manuale e tre gruppi

Automatizzare le operazioni

Documentazione

non avere alcun supporto per le modalità batch e automazione. Questo in verità è comprensibile: perché un programma esplicitamente creato per farvi disegnare il più naturalmente possibile dovrebbe aver bisogno di automatizzazione? La personalizzazione è un’altra questione. Potete creare, per esempio, i vostri pennelli come spiegato su http://mypaint.intilinux.com/?page_id=173, o su http://bit.ly/15k6heI. Krita può caricare ed eseguire script scritti in Ruby, JavaScript o Python che seguono le linee guida del framework di scripting Kross (http://kross.dipe.org/dox/krita.html). Altri filtri sono disponibili dal progetto Krita-plugins. Comunque,

in Krita potete registrare sequenze di azioni come macro!In GIMP è possibile, invece, usare il linguaggio di scripting chiamato Script-Fu per automatizzare compiti e funzioni ripetitive. Script-

di guide sul sito Web ufficiale, in più ci sono molte altre comunità in Rete. Esistono almeno dieci libri su GIMP, sebbene parecchi siano piuttosto superati. Anche MyPaint ha un buon insieme di documentazione. La pagina principale ha i collegamenti a una guida per principianti, parecchi articoli di terze parti e un wiki. In quest’ultimo troverete guide artistiche, risorse per la personalizzazione dei pennelli e un elenco di compatibilità dell’hardware. Il sito Web http://code.google.com/p/mypaintatelier è in spagnolo, ma ospita parecchie videoguide, dal disegno di fiori alla creazione di pennelli, che dovreste poter usare senza problemi. Inkscape ha un’ottima guida ufficiale disponibile anche come libro

Posso dire al programma di lavorare al posto mio, per favore?

Chi mi aiuta a imparare come devo fare?

L’editor XML di Inkscape: quanto è bello poter generare o elaborare immagini complesse come semplice testo?

Krita ha ottime guide, ma Inkscape offre il migliore menu di aiuto

stampato o digitale su tavmjong.free.fr/INKSCAPE. Lo stesso sito Web ospita anche i file che vi servono per seguire le spiegazioni nel libro. La documentazione più utile di Krita è elencata su krita.org/resources. Oltre alle guide di base c’è una serie di video su come creare fumetti e due guide Start to Finish (Dall’inzio alla fine) per la procedura completa di un dipinto basato su Krita, MyPaint e GIMP.

VerdettoGIMP

Inkscape

Krita

MyPaint

Pinta

Krita ottiene il punteggio migliore poiché supporta gli script in parecchi linguaggi.

VerdettoGIMP

Inkscape

Krita

MyPaint

Pinta

Le risorse per Krita e Inkscape sono le più complete e facili da usare.

LXP_132_46_51_LXF171.round_pixels.indd 50 07/08/13 16:35

Page 53: Linuxpro 132 Agosto 2013

50 Linux pro 132 Linux pro 132 51

Confronto Test Test Confronto

Oltre a tutto quello che abbiamo già descritto, Krita ha anche modelli pronti per fumetti e altre categorie di prodotti grafici

libera senza distrazioni. per la stessa ragione, pensiamo che non sia uno strumento di utilizzo generale. GIMP è un software di grafica bitmap generalista, ed è veramente grosso, ma forse un po’ troppo grande e complesso per l’utente che avevamo in mente. Questo ci lascia con Krita e Inkscape tra cui scegliere. Scelta non facile. La ragione è che Krita e inkscape fanno entrambi molto bene le stesse cose, cioè disegnare ed elaborare. Ma lo fanno in mondi molto diversi: la grafica bitmap e vettoriale. Hanno serie di funzioni e possibilità di personalizzazione ugualmente vaste, anche se non veramente confrontabili. Entrambi rendono relativamente facile per i principianti iniziare a fare qualcosa di interessante rapidamente. È come dover decidere quale macchina è migliore tra una bella berlina e un grande SuV 4x4. Tutto considerato, dichiariamo vincitore Krita, con inkscape che si piazza secondo di un soffio.

A meno che non abbiate un obiettivo e una serie di necessità molto precise, se progettate

di fare lavori grafici regolarmente è quasi impossibile che un solo strumento sia sufficiente per voi, indipendentemente da quello che scegliete. non c’è un software di elaborazione grafica migliore in generale. Con questo confronto, comunque, abbiamo considerato solo una, sebbene enorme, classe di casi di utilizzo: “software facile sia da installare che da usare per creare illustrazioni semplici, manifesti, diagrammi e materiale per brochure”. Grazie alla decisione di limitarci a questo scenario particolare, pensiamo di poter indicare un vincitore con una certa sicurezza. Ma il percorso per arrivarci è stato molto duro. Pinta è un buon programma, ma in generale è più limitato dei suoi concorrenti, perciò è stato facile eliminarlo dalla corsa. MyPaint sembra perfetto per la missione che si propone, cioè disegno a mano

Lo abbiamo fatto per una semplice ragione: l’obiettivo era un’illustrazione semplice, manifesti, diagrammi e materiale per brochure, che sono cose che spesso dovete includere in testi, libretti e presentazioni. Se questo è lo scenario, usare un’applicazione che è integrata in un pacchetto completo da ufficio, può essere più produttivo. Anche se date retta a noi e fate di Krita il vostro elaboratore grafico principale, ricordatevi di usare anche inkscape ogni tanto!

Editor d’immagini

Il verdetto

Se prendete la grafica sul serio, una cosa sola è certa: prima o poi dovrete usare più di un programma. Speriamo che quello che avete imparato leggendo questo confronto vi risparmi un sacco di tempo nel definire il procedimento grafico completo migliore per le vostre specifiche

necessità. per certi tipi di lavoro ci sono un sacco di operazioni semplici che davvero non dovreste fare a mano. Gli strumenti di ImageMagick non sono stati inclusi nel confronto perché sembrava difficile descriverli come editor grafici, qualunque sia la definizione di editor grafico. poi ci sono

i metadati. non avevamo spazio per questi e non erano realmente in linea con l’argomento, tanto per iniziare. Ma non potete ignorarli, specialmente gli ExiF e gli iTpC se elaborate le foto. Qualunque spftware usiate, controllate se preserva (o modifica) i metadati nei vostri file! LXP

Considerate anche...

Krita 1° MyPaint 4°Web: www.mypaint.intilinux.com Licenza: GPLv2+, LGPLv2+, CC-BY

Meno versatile degli altri, ma compie la sua missione egregiamente.Web: www.krita.org Licenza: GPLv2+, LGPLv2+

ottima combinazione di funzioni e facilità d’uso anche per lavori non artistici.

Avete trovato un bel trucco non documentato da nessuna parte? inviate le vostre opinioni su questo Confronto e altro a: [email protected]

A voi la parola...

Inkscape 2°Web: www.inkscape.org Licenza: GPLv2+

Sarebbe stato il vincitore se avessimo trattato solo grafica vettoriale.

GIMP 3°Web: www.gimp.org Licenza: GPL v3+

può fare quasi tutto, ma non sempre al meglio, secondo noi.

Pinta 5°Web: www.pinta-project.com Licenza: MIT, CC-BY

Ben fatto, ma meno maturo, completo ed estensibile dei suoi concorrenti.

Automatizzazione

LXP_132_46_51_LXF171.round_pixels 51 05/08/13 17:02

Page 54: Linuxpro 132 Agosto 2013

52 Linux pro 132 Linux pro 132 53

“Probabilmente avete già sentito parlare di software OCR”

Potete regolare il modo in cui OCRFeeder identifica il testo e le aree di contenuto

È il 2013 e ancora non abbiamo le moto volanti, case vacanze sulla Luna e tutte le altre belle cose

che ci hanno promesso nel secolo scorso. un’altra delusione è che non tutti abbiamo compiuto la transizione verso gli uffici senza carta amici delle foreste. per quanto ci sforziamo, a volte arrivano per posta cose fatte di alberi morti, ma con un software oCr decente potete convertirle in un formato più amico dell’ambiente e inviare l’originale sulla sua felice strada verso il cestino del riciclaggio. probabilmente avete già sentito parlare di oCr, è il riconoscimento ottico dei caratteri, il sistema per cui un documento digitalizzato

OCRFeederè analizzato alla ricerca di forme dall’aspetto familiare (lettere) e queste sono convertite in stringhe di testo modificabili. Questa è l’idea, ma spesso non è così semplice. Considerate tutti i caratteri diversi, i colori e le posizioni usate e potrete vedere che il software oCr ha per le mani un arduo compito. Abbiamo fatto il giro di vari programmi oCr, ma OCRFeeder ha catturato la nostra attenzione perché

può “automaticamente delineare i contenuti e distinguere tra cos’è grafica e cos’è testo”. Almeno, questo è quello che dichiarano gli sviluppatori, ma noi eravamo curiosi di vedere se veramente ha più cervello di un generico programma oCr. Siamo rimasti impressionati. Abbiamo provato varie impaginazioni e la maggior parte delle volte è riuscito a estrarre le colonne di testo, i riquadri e altri elementi testuali. Si è un po’ confuso con impaginazioni complesse, ma potete selezionare manualmente le aree da convertire. oCrFeeder supporta diversi motori oCr, a seconda di cosa avete installato, nelle nostre prove abbiamo avuto i migliori risultati con Cuneiform. Se state acquisendo documenti vecchi e sbiaditi, potete usare Unpaper per rendere più nitide le scansioni prima di eseguire l’oCr. una volta che avete impostato tutto, potete generare un file di testo oDT per le modifiche in un’applicazione che lo supporta, come LibreOffice. nel complesso è facile da usare, ha buone prestazioni ed è personalizzabile per diversi tipi di documento. Se avete un mucchio di vecchi documenti che giacciono in soffitta che vi piacerebbe avere in formato digitale, questo tool farà un ottimo lavoro.

Versione: 0.7.11 Web: http://live.gnome.org/oCrFeeder

OCRFeeder Nethogs Qmmp Pushover BurgerSpace

Strumento di riconoscimento del testo

L’interfaccia di OCRFeeder

NavigatoreQui potete aggiungere diverse immagini a una sessione di scansione.

ControlliAggiungete un file immagine e premete Riconosci per trovare le aree di testo.

Vista principaleQuesta vista mostra il documento, con le aree riconosciute evidenziate in blu.

Zoomuna vista ingrandita delle aree di testo da elaborare.

MotoreScegliete un motore di oCr e fate click sul pulsante oCr per iniziare l’elaborazione.

RisultatiQuesto pannello di testo mostra i risultati dell’elaborazione e vi permette di fare modifiche veloci.

Da non perdereDa non perdere

Da non perderei migliori nuovi programmiopen Source del pianeta

LXP_132_52_54_LXF170.hotpicks 52 06/08/13 14:37

Page 55: Linuxpro 132 Agosto 2013

52 Linux pro 132 Linux pro 132 53

Recentemente siamo stati obbligati a usare Windows con una connessione mobile a banda larga:

sapete, una di quelle chiavette uSB con una connessione 3G. L’esperienza è stata orrenda. poiché le tariffe per i dati sono costose, abbiamo provato a ridurre al minimo la nostra attività in rete controllando solo le email periodicamente e leggendo pagine di Wikipedia. Ma Windows e le sue applicazioni si sono fatte gioco dei nostri sforzi, svegliando tutti i tipi di giochetti consuma-banda dietro le quinte. Tutto si aggiornava, telefonava a casa e portava il nostro conto alle stelle. per fortuna le distribuzioni e le applicazioni di Gnu/Linux sono molto più educate, ma se dovessimo mai avere un simile scenario con Linux, terremmo Nethogs a portata di mano. Questo piccolo strumento mostra l’attività della vostra rete e vi mostra quali programmi stanno scaricando e caricando dati, insieme alla velocità. Se avete una manciata

Veramente pochi lettori di Linux pro sono grandi patiti di Apple; è un dato di fatto, ma dobbiamo ammettere

che la società di Cupertino fa centro con il design e il concept dei suoi prodotti. una grande eccezione negli anni recenti, comunque, è stata iTunes: è un mostro. Quando volete semplicemente riprodurre un brano musicale, lottare con quella bestia di applicazione e le sue 10.000 diverse funzioni non è un esercizio piacevole. Apple ha riorganizzato l’interfaccia alcune volte nella sua storia, ma ancora ne abbiamo paura ogni volta che vi siamo esposti. Linux se la passa molto meglio in questo, con una vasta gamma di player musicali strettamente integrati nei grandi ambienti grafici. Qmmp è relativamente un nuovo arrivato nel campo e ha un asso nella manica nell’interfaccia, di cui parleremo tra un momento. per compilarlo dovrete avere Qt insieme a una manciata di librerie

Nethogs

Qmmp

di programmi aperti e le luci del vostro modem o router iniziano a lampeggiare, potete trovare il colpevole molto rapidamente. Avviate nethogs (come root) e otterrete una semplice schermata in stile Top che elenca i programmi e il loro consumo di dati. Di default questa schermata si aggiorna ogni secondo, ma potete cambiare usando l’opzione -d da riga di comando. A sinistra potete vedere gli iD di processo (piD) per ogni programma, così se qualcosa va fuori controllo, potete terminarla con il comando kill, seguito dal piD, sulla riga di comando (per compiti particolarmente ostinati, usate kill -9). La visualizzazione predefinita per la velocità dei

multimediali (ffmpeg copre la maggior parte dei formati). non avete bisogno di una installazione completa di KDE per avviarlo, una benedizione per quelli che eseguono interfacce/Window Manager leggeri. Di default l’interfaccia di Qmmp assomiglia a quella di XMMS e delle vecchie versioni di Winamp. Avete i pulsanti di controllo in alto, un equalizzatore al centro e un elenco di tracce in fondo. È semplice, efficace e vi lascia tenere l’applicazione nell’angolo dello schermo senza consumare un’enorme porzione di spazio. potete usare più scalette e modificare le etichette di un file musicale dall’interno dell’applicazione.Qmmp fa intenso uso di un sistema

Indicatore di banda di rete

Player musicale

dati è KB/sec, ma usando il tasto m è possibile cambiarla in altri formati. Similmente, potete premere r per ordinare l’elenco in base alla quantità di dati ricevuti dai processi e usare s per ordinare per dati inviati. È un programma piuttosto semplice al momento, e una funzione che vorremmo vedere è la capacità di autoterminare un processo se inizia a scaricare troppi dati. o, almeno, prendere automaticamente un prestito dalla banca per pagare i conti assurdamente alti della banda larga mobile.

di moduli, accessibile cliccando con il tasto destro in un punto vuoto dell’interfaccia, andando in Configurazione > Moduli. Qui, potete attivare effetti e codec aggiuntivi e anche l’integrazione con altre applicazioni (per esempio: le notificazioni di KDE) e servizi (il reperimento di testi in rete). Ma l’asso nella manica dell’interfaccia citato prima è la capacità di cambiare l’interfaccia completamente tramite moduli. Se vi piacciono le funzioni di Qmmp ma non vi piace l’aspetto tipo Winamp, mettete l’estensione Amarok e bum, ottenete un’interfaccia totalmente diversa.

Versione: 0.8.0 Web: http://nethogs.sourceforge.net

Versione: 0.6.7 Web: http://qmmp.ylsoftware.com

Pacman si sta muovendo velocemente sulla nostra connessione, mentre anche Firefox è attivo, ma è molto calmo a confronto

Il sistema di moduli di Qmmp vi lascia regolare bene la serie di funzioni e persino dare al player un’interfaccia del tutto nuova

“Ci piacerebbe vedere la funzione per auto terminare un processo”

“Qmmp è nuovo e l’interfaccia è il suo asso nella manica”

Da non perdere

LXP_132_52_54_LXF170.hotpicks 53 06/08/13 14:37

Page 56: Linuxpro 132 Agosto 2013

54 Linux pro 132 Linux pro 132 TM

Giochi Applicazioni per il tempo libero

Indovinate che c’è? un’altra opportunità di parlare dell’Amiga! Certo, lo facciamo da tempo, ma

le vecchie abitudini sono dure a morire. uno dei nostri giochi rompicapo per Amiga preferiti all’inizio degli anni ‘90 era Pushover, di ocean, una variante del domino con protagonista una formica sorprendentemente abile. L’obiettivo era di sistemare le tessere del domino lungo una serie di piattaforme in modo che si potesse spingere la prima e cadessero tutte le altre. Dovevate farlo con una sola spinta e non potevate andare in giro a spingerle singolarmente. per completare pienamente un livello, dovevate assicurarvi che cadesse una tessera di innesco, che apriva la porta che conduceva al livello successivo. Era molto divertente e aveva alcuni veri rompicapo,

Pushoverper cui siamo felicissimi di vedere un rifacimento open Source in lavorazione. Anche se è solo una versione 0.0.4, questa versione GpL di pushover è molto giocabile, con gli elementi essenziali del gioco implementati efficacemente. per fortuna, gli sviluppatori hanno rifatto il gioco usando SDL, per cui è facile compilarlo dai sorgenti. poi potete avviarlo dalla cartella nel quale l’avete compilato con il solo ./pushover. Sono inclusi vari livelli, alcuni del gioco originale e alcuni nuovi; sceglietene uno e la vostra formica passeggerà sullo schermo. usate i tasti freccia per muovervi

Quella tessera a strisce in fondo a destra è l’innesco, che dobbiamo ribaltare per aprire la porta di uscita dal livello

Puzzle game

e quando siete di fronte a una tessera, premete Spazio per afferrarla. potete quindi trascinarla in un punto diverso e premere Spazio per metterla giù. premete la freccia in su per spostarvi accanto a una tessera, poi la direzione in cui volete spingere e la barra spaziatrice. Ci sono 10 tipi di tessere per variare il gioco: alcune esplodono, altre si dividono in due e altre ancora creano ponti. Vi verrà da congratularvi con voi stessi ai livelli più alti.

Versione: 0.0.4 Web: http://pushover.sourceforge.net

“Vi verrà da congratularvi con voi stessi ai livelli più alti del gioco”

Se lo scandalo della carne di cavallo vi risuona in testa, ma amate ancora affondare i denti in una

succosa polpetta di manzo di tanto in tanto, forse è ora di imparare a cucinare. Ma qui abbiamo un problema: patiti di informatica e cucina non stanno insieme. Come patiti di informatica, ci piace fare le cose con precisione: seguire le istruzioni e ottimizzare i processi dove vediamo delle carenze. un tale approccio non si presta bene alla cucina, però, dove regnano le quantità vaghe (un pizzico di questo, un goccio di quello) e si richiede molta pazienza. Ciononostante, potreste provare a imparare a cucinare tramite un videogioco. BurgerSpace è un gioco basato sul classico da bar BurgerTime del 1982. L’obiettivo è molto semplice: avete le parti di un hamburger sparse sullo

BurgerSpaceschermo e il vostro lavoro è sistemarle in hamburger completi in fondo. per fare questo, controllate un amabile piccolo chef che può correre lungo le piattaforme, salire le scale e camminare sui pezzi di hamburger per buttarli giù al livello sottostante. una volta che tutti gli hamburger sono stati sistemati sul fondo nella maggior parte dei livelli, vincete e avanzate allo stadio successivo. Salvo che non è così facile: ingredienti che danno un gran fastidio, come cipolline e cetriolini sottaceto vi corrono dietro e se vi toccano siete spacciati. Avete un pizzico di sale a vostra disposizione, che congela i pezzi

Quanti altri giochi hanno cetriolini come nemici? No, seriamente, lo vogliamo sapere davvero

Simulazione di costruzione di alimenti

di sottaceti pieni di odio, dandovi il tempo di scappare. Quindi è come uno strano incrocio tra Pacman, Dig Dug e Donkey Kong con uno scenario ancora più surreale. non siamo sicuri di cosa abbiano fumato gli sviluppatori originali quando se ne sono usciti con questo, ma dopo avranno avuto voglia di uno spuntino... Tuttavia, è un divertente passatempo e potete salvare i vostri progressi nel mezzo di un livello e ritornarci in seguito. LXP

Versione: 1.9.2 Web: http://bit.ly/j0qpBW

“È come uno strano incrocio tra Pacman, Dig Dug e Donkey Kong”

Da non perdere Da non perdere

LXP_132_52_54_LXF170.hotpicks 54 06/08/13 14:37

Page 57: Linuxpro 132 Agosto 2013

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

TUTORIALMusicaConfigurate Ardour 3 per lavorare al meglio con l’audio multitraccia sul vostro sistema Linux pag. 56 Controllo parentaleCome scrivere un semplice script da shell per controllare l’uso del computer da parte dei vostri bambini pag. 60 BashBasta perder tempo con noiose operazioni ripetitive. Scrivere un semplice script Bash che le faccia per voi è facilissimo! pag. 64Raspberry PiUsate Scratch e Python presenti di default sulla Raspberry per creare dei programmi semplici ma funzionali pag. 68

ACCADEMIA DEL CODICEConcetti di baseIl secondo articolo su come scrivere un programma con il linguaggio di programmazione Python pag. 78

RubyIn questa puntata della serie dedicata a Ruby scoprite come usare i moduli, i blocchi e le gemme con Ruby pag. 80

Firefox OSIl nuovo sistema operativo firmato da Mozilla e basato sul kernel Linux: uno sguardo d’insieme sulle sue caratteristiche pag. 86

AndroidScoprite OpenGL e fate un bel viaggio nel mondo della grafica 3D cominciando dal classico cubo rotante pag. 88

NASLa prima parte di una serie di tutorial sulle soluzioni per la gestione dei dati pag. 72

LINUX PRO 132 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_132_55_introTutorial 55 06/08/13 17:01

Page 58: Linuxpro 132 Agosto 2013

Tutorial Ardour 3Tutorial Ardour 3 Tutorial

56 Linux pro 132

riguarda la facilità di utilizzo. Questo significa che per un principiante è difficile avvicinarsi a questi software. noi cercheremo di colmare questa lacuna nelle seguenti pagine, accompagnandovi passo dopo passo, in modo che ognuno di voi possa essere in grado di registrare, mixare e gestire al meglio le proprie registrazioni audio.

Preparare l’hardwareLa chiave per gestire al meglio l’audio con Linux è di utilizzare l’hardware migliore su cui potete mettere mano. L’hardware fa la differenza tra l’essere costantemente in lotta per ottenere una qualità decente, stabilità e prestazioni e accendere semplicemente il vostro kit e registrare. Con un’applicazione di livello professionale come Ardour, ha ancora più senso utilizzare un’interfaccia audio dedicata piuttosto di quella integrata nella scheda madre. Questa soluzione non si limita a offrirvi una qualità audio migliore, ma vi offre anche delle performance superiori e meno problemi. Detto ciò, non c’è niente di male nell’utilizzare i dispositivi audio integrati nel vostro computer, potrete comunque giocare con il software e capire le sue potenzialità. Se vi limitate soltanto all’uso di sorgenti digitali, come ad esempio il sintetizzatore del vostro computer, sarete in grado di generare dell’output di qualità professionale, ma non sarete in grado di realizzare registrazioni in alta qualità. oltre al device per registrare bisogna tenere conto anche di quale interfaccia utilizza, ci sono tre tipi di schede. il primo tipo utilizza il bus pCi della vostra scheda madre, il che significa che non è molto adatto per portatili o macchine non molto potenti. Storicamente, questi erano device come la Creative SoundBlaster così come modelli più professionali tipo quelli di rME. Dovete assicurarvi che il produttore offra supporto per Linux, questo non è un problema per le SoundBlaster (che comunque non consigliamo), ma potrebbe esserlo se utilizzate alcuni device professionali di altre marche. RME è un’eccezione, perché i creatori di Ardour utilizzano una di queste schede. il secondo tipo utilizza l’interfaccia FireWire. Questa opzione offre le migliori performance multitraccia ad alti bitrate. Ma il FireWire è caduto in disgrazia, e in Linux la maggior parte di questi device non ha dei driver adeguati e spesso hanno anche prezzi elevati. il terzo tipo utilizza l’uSB. Questa tipologia è la più comune e grazie al fatto che l’implementazione dell’audio su uSB è standard, la maggior parte di questi device funziona tranquillamente con Linux senza bisogno di alcuna configurazione (fate attenzione, ci sono alcune eccezioni). Attaccateli al computer e il kernel farà il resto. Siccome è probabile che utilizzerete questi dispositivi con Jack, piuttosto che come output audio principale, dovete soltanto selezionare il device corretto di input e output dalla pagina di setup di QJackCtl, dopo aver scelto per l’audio l’opzione Duplex. il nostro dispositivo preferito al momento è Alesis iO4. Si connette tramite uSB e offre quattro input e quattro output indipendenti. i quattro input possono essere configurati per l’utilizzo di chitarre, microfoni o qualsiasi altra cosa. Tutti gli input hanno quattro LED che indicano il livello del segnale.

Musica Configurare Ardour per ottenere la migliore qualità audio possibile dal vostro sistema

L’incredibile ambiente di produzione, Ardour 3, è molto ricco e complesso, ne abbiamo già parlato in passato ma restano ancora molte cose di cui parlare. Come

l’applicazione per il modelling 3D Blender, Ardour è il migliore nel suo settore ma non offre alcun compromesso per quanto

La finestra di connessione

di Ardour serve a collegare gli

input hardware e software agli

output nelle vostre tracce

e bus

Editing audio da proLo staff di Linux pro vi accompagnerà nel fantastico mondo della produzione audio con Ardour 3, il programma definitivo per l’elaborazione professionale multitraccia

fACiLE

LXP_132_56_59_LXF172.tut_ardour.indd 56 07/08/13 16:36

Page 59: Linuxpro 132 Agosto 2013

Tutorial Ardour 3 Tutorial

Linux pro 132 57

una manopola vi permette di avere un’anteprima del segnale in ingresso senza dover attendere che il pC processi l’audio, che potrebbe essere fondamentale se utilizzate delle cuffie mentre registrate. L’unico neo dell’Alesis io4 è che se abilitate la registrazione a 24 bit siete limitati soltanto all’uso di due input per volta, ma questo è un limite della banda disponibile in uSB, non dell’hardware.

CollegamentoArdour utilizza un sottosistema audio chiamato Jack che permette a ogni altra applicazione che lo supporta di condividere l’audio con facilità. potete inviare l’output di un sintetizzatore o di qualsiasi altra cosa direttamente ad Ardour, senza dovervi preoccupare della condivisione di un singolo dispositivo tra varie applicazioni. Sfortunatamente, Jack non è in grado di lavorare correttamente accoppiato con PulseAudio, che è il sistema che molte distribuzioni utilizzano per il suono. il modo migliore per aggirare questo problema è quello di utilizzare un piccolo tool chiamato pasuspender. Questo tool disabilita temporaneamente pulseAudio nel momento in cui il vostro hardware viene utilizzato da un’altro processo. Dovrebbe essere installato di default in quasi tutti i sistemi e il modo migliore per configurare sia lui che Jack è di utilizzare la Gui chiamata QJackCtl. Dovreste trovarla all’interno del gestore pacchetti della vostra distribuzione, così come Ardour, e una volta avviata dovreste vedere una finestra dall’aspetto molto simile a quella di un player audio. Dopo aver lanciato QJackCtl, cliccate sul pulsante impostazioni e si aprirà una pagina di configurazioni. per prima cosa, dovete cambiare il Prefisso per il server per includere pasuspender. per fare ciò, sostituite il comando inserito come prefisso (di solito jackd) con pasuspender --. i due trattini sono importanti. il resto delle impostazioni dovrebbero funzionare, ma è consigliabile darci un occhiata per farle lavorare al meglio con l’hardware a disposizione. impostate a Duplex l’audio se non è già così perché questo vi permette di registrare in input e riprodurre in output allo stesso tempo, e selezionate il dispositivo di entrata e di uscita. un’altro aspetto importante di questa schermata è la latenza del vostro hardware. La latenza non è altro che il tempo richiesto dalla vostra macchina per processare l’audio e dipende ovviamente dall’hardware che state utilizzando, dalla dimensione dei buffer e da quale frequenza di campionamento state usando. La latenza impatta sia sul tempo impiegato da un segnale in input per essere letto, sia da quello che intercorre tra Ardour e le vostre casse o cuffie. Sfortunatamente l’unico modo per ridurre al minimo la latenza del proprio hardware è provando e riprovando. Ad esempio, noi abbiamo ottenuto una latenza molto bassa dall’Alesis io4 impostando fotogrammi/Periodo a 256 e Periodi/Buffer a 2 nelle impostazioni di QjackCtl. Questo ci ha garantito una latenza di 11.6 millisecondi, che è praticamente impercettibile, e riteniamo che un risultato simile sia raggiungibile da quasi tutti gli hardware in circolazione. Se le vostre impostazioni sono troppo basse, vedrete apparire un errore in QjackCtl quando Jack è in esecuzione, e il suono avrà dei problemi, quindi dovrete aumentare i vostri valori e testare ogni modifica tenendo d’occhio il carico del processore. Alternativamente, se volete provare Ardour senza dover configurare QjackCtl, soprattutto se state utilizzando il dispositivo audio integrato, basterà lanciare Ardour e lui farà del suo meglio per creare la configurazione più consona al vostro hardware. Questo approccio vi sgrava un po’ dalle configurazioni Jack ma secondo la nostra esperienza è meglio affrontare le proprie paure e configurare personalmente le impostazioni, specialmente se pulseAudio è in esecuzione.

ArdourLa prima volta che avviate l’applicazione, vi apparirà una piccola finestra che vi offre la possibilità di creare una nuova sessione o di aprirne una esistente, ovviamente optate per la creazione, date un nome alla vostra sessione e scegliete la cartella in cui salvarla; in questa cartella verranno salvati tutti i dati audio legati al progetto. un’ora di audio in stereo mediamente occupa attorno ai 650 MB di spazio, quindi scegliete con cura la posizione del progetto. una volta cliccato su Nuovo, l’applicazione si aprirà. A un primo sguardo Ardour può intimidire, non fa nulla per venire incontro ai nuovi utenti, o a chi può aver utilizzato programmi come GarageBand di Apple. Ma una volta presa un po’ di confidenza con la Gui, non è così complicato come sembra. pochissime opzioni sono nascoste, e se pensate ad Ardour come a un front-end di uno studio di registrazione, è abbastanza logico. La parte in alto contiene la gestione di avanti veloce, indietro, riproduzione e registrazione del vostro progetto, il metronomo, l’ingresso e l’uscita. nella parte sotto ci sono diverse tracce, con dei segnaposto che possono variare come il tempo e il ritmo di un pezzo o la posizione delle diverse tracce di un CD. Al di sotto di questa c’è la parte più importante dell’applicazione dove si trovano le tracce audio. Di default in un nuovo progetto, c’è soltanto il bus “master” che potete vedere in testa. ogni traccia che viene aggiunta ad Ardour passa attraverso il master, in questo modo potete fare cose come comprimere l’output finale

o mixare l’intero progetto. Ma come vedrete, Ardour è completamente modulare, quindi non esiste una regola assoluta per cui ogni traccia debba passare attraverso il master bus, è soltanto la strada predefinita. potete creare una nuova traccia cliccando con il tasto destro nell’area sotto al bus master. Questo aprirà una finestra per l’aggiunta di una traccia o un bus, e potete scegliere il tipo di traccia in testa alla finestra. Ci sono tre tipi di tracce in Ardour…

Traccia audioQueste sono le tracce più comuni in Ardour. Sono comparabili alle tracce audio che potete trovare in editor come Audacity, e possono contenere audio importato o registrato direttamente in Ardour. nella maggior parte dei progetti, una traccia audio

Utilizzando le automazioni potete registrare e aggiustare gli slider in tempo reale, oltre a molti altri parametri

Se volete ottenere le migliori prestazioni dal vostro hardware audio, installate la versione ‘realtime’ del vostro kernel. Vi offrirà una latenza minore e una maggiore stabilità per l’audio.

Tip

“A un primo sguardo Ardour può intimidire ma una volta presa un po’ di confidenza non è così complicato”

LXP_132_56_59_LXF172.tut_ardour 57 05/08/13 16:52

Page 60: Linuxpro 132 Agosto 2013

Tutorial Ardour 3 Ardour 3 Tutorial

58 Linux pro 132

conterrà un singolo canale (mono) o due (stereo), ma Ardour può gestire anche più canali per il suono surround e altre applicazioni. potete modificare le tracce suddividendole in blocchi, così come trascinare l’audio insieme agli arrangiamenti. A differenza di Audacity, tutte queste operazioni sono fatte in modo non-distruttivo, che significa che il file audio originale non viene toccato durante il processo. Questo può essere modificato dal menu Modalità traccia. il modo Normale crea sempre un nuovo file quando viene registrato dell’audio sopra a dell’altro audio, Non stratificato è sempre non distruttivo, ma i blocchi delle registrazioni vengono tagliati per fare spazio al nuovo audio. Con la modalità Nastro il nuovo audio sovrascriverà i dati del file originale, per questo noi raccomandiamo di non utilizzarlo.

Traccia MiDiQueste tracce sono una novità della versione 3. Forniscono ad Ardour la possibilità di controllare hardware e software MiDi. il MiDi è un protocollo antico che spesso viene utilizzato per inviare dati ai sintetizzatori, ma si è evoluto anche per controllare molte altre cose, oltre che strumenti software. Le tracce MiDi vi permettono di creare e modificare questi dati dalla vista arrangiamenti, vicino alle tracce audio. nella finestra Aggiungi traccia potete utilizzare la tendina instrument per selezionare un qualsiasi strumento software o effetto LSSi che avete installato nel vostro sistema. Questo preconfigurerà Ardour per connettere il dispositivo MiDi automaticamente, invece di richiedere una configurazione da parte vostra. Se state utilizzando dell’hardware esterno, o degli strumenti software, dovrete creare la connessione da soli dopo aver creato la traccia MiDi, vi mostreremo come tra poco. Traccia MiDi e Audionella traduzione si è persa la parte “Audio” (in inglese si chiamano Audio+MiDi tracks) ma potete comunque selezionarla usando la terza voce della tendina (in pratica la seconda Aggiungi traccia MiDi) il funzionamento fortunatamente è rimasto invariato. in altre workstation per l’audio digitale, come Cubase, le tracce Audio+Midi sono un modo semplice per integrare un sintetizzatore software nel vostro processo. Vi permettono di creare dati MiDi da inviare al sintetizzatore, ma gestiscono anche l’audio. Questo non è lo scopo delle tracce Audio+MiDi di Ardour che invece, sono state

pensate per quei dispositivi che accettano sia dati MiDi che audio, come ad esempio un pitch shifter che utilizza i dati MiDi per selezionare il pitch, oppure un vocoder. Questo purtroppo li rende un pochino meno utili.

Busnel mondo della registrazione audio analogica i bus sono utilizzati per raggruppare i segnali audio di diversi canali per poterli processare o controllare. potete utilizzare un bus per aggiungere un riverbero a un gruppo di effetti audio, ad esempio. L’audio viene inviato a un bus utilizzando una cosa chiamata Aux Send. Essi possono essere aggiunti per ogni canale dalla vista mixer di Ardour, che vi permette di controllare la quantità di audio che viene passata al bus così come se inviare l’audio prima o dopo il fader. L’invio pre-fader non risentirà del controllo del volume eseguito sul fader, mentre quello post-fader sarà proporzionale al volume del fader.

Collegare i canaliper capire come funziona Ardour, e come eseguire la vostra prima registrazione, dovete dare un’occhiata a come l’audio, i MiDi e i bus sono collegati tra di loro. Questo perché Jack sta gestendo le connessioni, e c’è una visualizzazione di cosa sta

1 installare un sintetizzatoreQuesto procedimento dovrebbe funzionare con tutti i sintetizzatori (noi abbiamo utilizzato Bristol). installate il vostro sintetizzatore e avviatelo da linea di comando con: startBristol -audio jack -arp2600 -midi jack.

3 Modificare le tracceingrandite la traccia MiDi e dovreste essere in grado di aggiungere blocchi e note usando il tool a forma di matita. per registrare la musica nella traccia audio, abilitate la registrazione su di essa, e avviate la registrazione dalla barra principale.

2 Configurare le tracceAggiungete una traccia audio e poi una traccia MiDi. Dal Gestore delle connessioni audio connettete Bristol da ‘Altro’ alla traccia Ardour Audio1 e connettete la traccia MiDi in modo inverso nel Gestore delle connessioni MiDi.

Registrare un sintetizzatore virtuale

L’editing non-distruttivo significa che potete tagliare, spostare o applicare dissolvenze ai vostri blocchi audio senza dovervi preoccupare del file originale

nel mixer potete aggiungere effetti pre-fader trascinandoli prima del device fader.

Tip

LXP_132_56_59_LXF172.tut_ardour 58 05/08/13 16:52

Page 61: Linuxpro 132 Agosto 2013

Ardour 3 Tutorial

Linux pro 132 59

succedendo nel tool QJackCtl che abbiamo utilizzato prima. Se provate a cliccare su Connetti e selezionate il tab Audio, potrete vedere come Ardour è collegato al vostro sistema audio. Le tracce, i bus e gli altri canali audio sono elencati nel pannello di sinistra, le loro destinazioni sono sulla destra. il bus Master, ad esempio, dovrebbe essere connesso al vostro output di sistema, se non lo è, non sentirete nulla. Allo stesso modo, per registrare l’input del vostro hardware audio, dovete aver connesso l’input di sistema della vostra periferica audio all’input audio del canale Ardour (di default Audio 1/audio_in 1). Questo non succede in automatico ma Ardour gestisce da solo le connessioni tra le sue interfacce in modo che voi non siate costretti a modificare QJackCtl. Tornando ad Ardour, se volete connettere un input fisico a un canale audio, cliccate sul menu finestra e poi su Audio Connections. Questa finestra è l’equivalente di Ardour della schermata Connetti di QJackCtl, solo con sorgenti e destinazioni su assi differenti e una griglia invece che dei cavi virtuali. Le sorgenti, come l’interfaccia audio, sono elencate all’interno del tab Hardware. un’interfaccia non apparirà se l’input non è stato identificato, come ad esempio se state

eseguendo Jack configurato solo per la riproduzione. per collegare un input a una traccia per la registrazione, cliccate su Ardour Tracce nell’elenco delle destinazioni e selezionate la cella di intersezione desiderata. Se collegate più di un input a un canale il segnale verrà mixato. Tornando alla schermata principale dovreste ora vedere l’indicatore che si alza e si abbassa in base all’input di ciò che avete connesso, e potrete registrarlo semplicemente cliccando sul pulsante rosso in alto chiamato Registra.

Modificare e mixareQuando registrate l’audio compaiono dei blocchi nelle vostre tracce. Si spera che il segnale in ingresso sia abbastanza forte da permettervi di vedere le onde dell’audio che state registrando. Questo dovrebbe risultarvi familiare se avete utilizzato almeno una volta un editor audio come Audacity i picchi in alto e in basso rappresentano l’ampiezza del segnale. Se l’onda è piatta, dovete controllare la configurazione del mixer ALSA o dell’amplificatore

esterno. La Gui delle tracce di Ardour può essere modificata per rendere l’editing più facile. potete trascinare i bordi di una traccia, ad esempio, per rendere l’onda più grande, e usare la rotellina del mouse o la lente d’ingrandimento per ingrandire una sezione. L’overview del progetto in basso nella finestra principale vi offre un modo veloce per gestire il vostro progetto, in quanto potete aumentare la dimensione della sezione visualizzata e spostarvi nella linea temporale. il processo di editing dipende dal tipo di materiale su cui state lavorando, normalmente prevede l’ascolto (premete Spazio per avviare la riproduzione), pausa (premete Spazio di nuovo), la modifica (con il mouse) e di nuovo l’ascolto. Durante la riproduzione, noterete un cursore muoversi lungo le tracce. Questo cursore vi indica la posizione di riproduzione. potete muoverlo manualmente trascinandolo con il mouse usando il triangolo rosso in alto. Le modalità di modifica possono essere selezionate dalla toolbar, la più comune è identificata con una mano che indica. Con questa icona selezionata potete dividere la traccia dov’è posizionato il cursore premendo S e potete trascinare le sezioni con il cursore. il punto di modifica può essere modificato trascinando di nuovo, e l’ancora in alto alla sezione può essere trascinata per creare delle dissolvenze. per tagliare più blocchi basta selezionarne più di uno, questo trucchetto funziona anche se dovete ridimensionare più blocchi. in questo modo, potete modificare e costruire la vostra composizione proprio come potreste farlo con qualsiasi workstation audio. per finire, quando sarete soddisfatti del vostro arrangiamento, potete esportare e remixare l’intero progetto in un unico file utilizzando il menu Esporta all’interno di Sessione. Ma prima di farlo, assicuratevi che i marcatori di inizio e fine siano posizionati correttamente nel vostro progetto. La finestra di esportazione sembra complessa ma potete evitare di configurare tutto manualmente utilizzando una preselezione, sono inclusi praticamente tutti i formati più comuni. ricordatevi di configurare bene il master bus perché è questo quello che verrà riprodotto e salvato sul file. LXP

Alesis iO4 si connette tramite USB e non necessita di alcun driver, rendendolo un’ottima scelta per la registrazione preamplificata di quattro input

il mixer di Ardouruna delle finestre più importanti di Ardour è quella del mixer. potete trovarla nel menu finestra e contiene tutte le tracce del vostro progetto e i bus disposti come se fossero in un mixer da sala di registrazione. il lavoro del mixer è quello di permettervi di modificare i livelli delle vostre tracce e di aggiungere effetti e altri processi audio. i livelli possono essere cambiati semplicemente agendo sulle barre in basso, ma se volete automatizzare i cambiamenti dovete utilizzare il pulsante M sotto di essi. Questo pulsante vi aprirà un piccolo menu, e dovete selezionare Scrivi. Adesso ogni cambiamento effettuerete, anche durante la riproduzione, verrà salvato su di una traccia di

automazione. Cambiate la modalità in Suona perché i dati cambino il valore automaticamente. Se volete vedere queste informazioni, tornate alla visualizzazione normale, cliccate con il tasto destro su una traccia, selezionate il menu Automazione e poi fader.il mixer è utile anche per aggiungere degli effetti. Cliccate con il tasto destro sulla parte nera in alto e utilizzate il plugin manager per aggiungere l’effetto desiderato. Ardour è molto pignolo su input e output, quindi dovete essere sicuri che l’effetto selezionato sia configurato per gestire i canali proposti dalla vostra traccia. Da qui potete anche definire l’aux send, inviando i canali desiderati a un bus.

il mixer è utile per controllare l’output in tempo reale, gestire il volume e aggiungere effetti

“L’esportazione sembra complessa ma potete usare una preselezione”

LXP_132_56_59_LXF172.tut_ardour 59 05/08/13 16:52

Page 62: Linuxpro 132 Agosto 2013

Controllo parentale Tutorial

Volete controllare cosa fanno i vostri bimbi al computer senza essere sempre alle loro spalle? Ecco come scrivere un semplice script di shell per farlo!

Tutorial XxxxControllo parentale Ecco uno script per controllare quello che fanno i vostri bimbi online

Il gioco è bello soloquando dura il giusto!

60 LinuX pro 132

Qualche numero di Linux pro addietro avete scoperto come proteggere i vostri bambini dal lato oscuro del Web e da loro stessi. Ma se voleste effettivamente restringere

anche quando e soprattutto per quanto tempo possono usare il computer? per esempio, potreste voler bloccargli l’uso del computer dopo l’ora della nanna, oppure impostare un tempo limite fisso di due ore sui social network come Facebook. Gnome Nanny, utilizzato per fare cose del genere, non viene purtroppo più sviluppato e peraltro non funziona con GnoME3. un destino simile ha incontrato Timekpr: in questo caso lo sviluppatore

Educare è meglio che vietareil modo migliore per trattare i bambini (e la maggior parte delle persone) è educarli, piuttosto che imporre dei divieti. il tipo di controllo d’accesso discusso in queste pagine non dev’essere visto come una soluzione completa: non esistono

sostituti per la supervisione e l’educazione. i vostri bambini dovrebbero capire cos’è un utilizzo accettabile e cosa non lo è, alcuni controlli possono aiutare a sottolineare il concetto. i divieti da soli di solito provocano una comprensione del sistema da parte

dei bambini migliore della vostra, così da poter aggirare i paletti che avete posto. il modulo pam_time registra tutti i login bloccati in syslog, potete così vedere se i bimbi hanno capito oppure se sono trattenuti solamente dai vostri blocchi.

ha dichiarato di volerlo riprendere entro fine anno, anche se ovviamente non c’è alcuna garanzia in merito. Ciò significa che a Linux manca una modalità punta e clicca per impostare questo genere di restrizioni. Ma non tutto è perduto, potete farlo sporcandovi un po’ le mani.

PAMimpostare una restrizione d’uso sugli orari può essere fatto con PAM (pluggable Authentication Module). prima di buttarvici a testa bassa, ecco una breve panoramica di cosa sia pAM e come funzioni. nel passato, i programmi si interfacciavano direttamente con lo strato di autenticazione del sistema, solitamente verificando il file /etc/passwd. Questo implicava che nel caso di aggiunta di nuovi metodi di autenticazione, ogni programma doveva essere riscritto per supportarli. pAM offre uno strato intermedio per l’autenticazione, ovvero il programma chiama pAM e pAM si occupa di autenticare a seconda del metodo in uso, che potrebbe essere lo standard username/password ma anche un lettore di impronte digitali o un Kinect che riconosca una sequenza di movimenti. pAM gestisce qualsiasi sistema sottostante e comunica al programma se l’utente è autenticato o meno. può sembrare un sacco di lavoro in più per gestire una “semplice” autorizzazione, e in questo caso lo è, ma quando vengono introdotti più metodi rende la vita molto più semplice. pAM viene configurato da diversi file in /etc/pam.d, uno per ogni servizio omonimo. Se controllate il file di login troverete:auth required pam_securetty.soauth include system-local-loginaccount include system-local-loginpassword include system-local-login

session include system-local-loginil primo elemento della riga indica l’azione su cui ha effetto, il secondo se è richiesto o sufficiente, e il terzo è il nome del modulo pAM da usare per l’autenticazione. La prima riga quindi vi dice che per l’azione auth dev’essere usato il modulo pam_securetty ed è required il successo. Se questa autenticazione fallisce, l’intero processo fallisce, se invece ha successo pAM

INTERMEDIO

LXP_132_60_63_LXF172.tut_parents 60 05/08/13 16:53

Page 63: Linuxpro 132 Agosto 2013

Controllo parentale TutorialTutorial Xxxx

LinuX pro 132 61

Modificate il file system-auth di PAM per abilitare orari e controlli scriptati e per aggiungere il logging

Gnome Nanny e Timekpr offrivano un’interfaccia grafica molto pratica per il controllo parentale, ma non sono più sviluppati

passa alla regola successiva. una regola sufficiente ritorna sempre un successo. Esistono alcune altre opzioni (le trovate nel man) e una di queste è include, che aggiunge regole da altri file; la seconda riga quindi aggiungerà le regole auth da /etc/pam.d/system-local-login, e questo vi tornerà utile fra poco. notate che alcune distribuzioni usano il formato @include common-account. È leggermente diverso ma non vi tocca in alcun modo. È importante che guardiate i file in /etc/pam.d per vedere quello che dovete modificare.

Tempo di loginTornando all’obiettivo principale, uno dei moduli pAM è chiamato time e controlla l’autenticazione in base all’orario. potete, ad esempio, impedire il login dopo le 8 di sera nei giorni feriali e dopo le 9 in quelli festivi e altri controlli di fino. Ci sono due fasi: l’abilitazione del modulo e la sua configurazione. Ecco come abilitarlo. il file system-local-login ppena menzionato, assieme ai file pAM per KDE, Gdm e Lightdm (o qualsiasi altro login manager usiate) includono tutti system-auth (o common-account per ubuntu e i suoi derivati). Abilitando i controlli sull’orario in questo file imporrete il divieto su tutti i metodi di login: grafici, console o SSH. Modificate il file aggiungendo in cima# abilita controlli orario

account required pam_time.so La ragione per piazzarlo in cima sta nel voler evitare che una regola precedente possa permettere il login prima che pam_time possa dire la sua. pAM controllerà ora la lista di utenti permessi e gli orari prima di permettere il login. Tale lista è nel file /etc/security/time.conf. una semplice configurazione d’esempio è:* ; * ; jimmy ; SaSu0800-2100

ogni riga contiene quattro campi separati da punto e virgola: il primo è la lista dei nomi dei servizi pAM a cui si applica, la seconda una lista di TTY (nomi dei terminali logici); il terzo campo contiene il nome (o i nomi) dell’utente: nell’esempio ne è stato usato uno ma potete avere più nomi in una stringa logica (jim|bob indica sia jim che bob). il quarto campo è quello di vostro interesse: una lista di orari. Viene fornita come uno o più giorni (abbreviati nelle prime due lettere inglesi) seguiti da due orari in formato 24 ore. Qui permettete a Jimmy di collegarsi il sabato e la domenica dalle 8 di mattino alle 9 di sera. Se il secondo orario è precedente al primo viene considerato del giorno successivo: per bloccare accessi notturni durante i giorni di scuola potete usare: * ; * ; jimmy ; !SuMoTuWeTh2100-0800 notate l’uso di ! che indica “non” (! può essere usato anche

per i nomi utente), quindi Jimmy non potrà collegarsi in quegli orari. Esistono alcune scorciatoie per i giorni: Wk indica i giorni feriali mentre, Wd i weekend (attenti a non scambiarli, dacché non sono troppo intuitivi), Al tutti i giorni. Specificare un giorno due volte lo nega, quindi AlSa indicherà tutti i giorni tranne il sabato. potrebbe essere saggio mettere* ; * ; yourusername ; Al000-2400

all’inizio del file per impedirvi di chiudervi fuori dal sistema con un errore di digitazione. pAM non è un demone, non dovete riavviarlo o inviare un segnale dopo aver modificato i file di configurazione: nel momento in cui salvate il file sarà effettivo dal prossimo uso di pAM.

Tempo di andareAnche se pAM può controllare il login, non può essere usato per chiudere una sessione esistente, ma quest’ultima azione può essere compiuta con l’aiuto di Cron. Questo script darà a un utente di KDE cinque minuti prima di forzare un logout o l’arresto.#!/bin/shTHEuSEr=“username”[[ -z “$(w -h $THEuSEr)” ]] && exitDiSpLAY=“:0” kdialog --msgbox “È tempo di dormire\n \nSpegnimento fra 5 minuti.” &sleep 5msource /home/$THEuSEr/.dbus/session-bus/$(cat /var/lib/dbus/machine-id)-0

qdbus --address $DBuS_SESSion_BuS_ADDrESS org.kde. ksmserver /KSMServer logout 0 3 3 Comincia con il comando w (sì, è un comando!) per controllare se l’utente è collegato, quindi visualizza un messaggio, aspetta cinque minuti e invia un’istruzione di shutdown al servizio D-BuS di KDE. La riga ‘source’ è usata per identificare il file contenente l’indirizzo della sessione D-BuS relativa all’utente e impostare le variabili contenute nel file stesso. ora dovete lanciare questo script cinque minuti prima del tempo limite, cosa possibile tramite Cron. Dovrà girare con gli stessi permessi dell’utente, quindi aggiungetelo alla sua crontab:sudo crontab -e -u username

per impostare il tempo limite alle 21 da domenica a giovedì e alle 22 nel weekend:55 20 * * 0-4 /path/to/script

55 21 * * 5,6 /path/to/script Volete anche che l’utente non possa modificare questa crontab, quindi aggiungete lo username a /etc/cron.deny e assicuratevi che lo script non sia scrivibile da lui o in una diretory scrivibile da lui (se avete accesso a una directory potete eliminare o rinominare i file ivi contenuti, anche se non potete modificarli).

LXP_132_60_63_LXF172.tut_parents 61 05/08/13 16:53

Page 64: Linuxpro 132 Agosto 2013

Tutorial Controllo parentale Controllo parentale Tutorial

62 LinuX pro 132

È tempo di dormire!

Un po’ di scripting

combinato con Cron spingeranno il vostro bimbo a

scollegarsi, anche se non vuole

un buon piazzamento è /usr/local/bin. usate GnoME e unity? il comando gnome-session-quit chiude la sessione desktop, ma non può essere usato per scollegare l’utente senza conferma da parte sua, quindi continuerete a usare D-BuS. Ecco come deve essere la versione GnoME:#!/bin/shTHEuSEr=“username”[[ -z “$(w -h $THEuSEr)” ]] && exitDiSpLAY=“:0” zenity --info --text=“È tempo di dormire\n\nSpegnimento fra 5 minuti.” &sleep 5msource /home/$THEuSEr/.dbus/session-bus/$(cat /var/lib/dbus/machine-id)-0

qdbus --address $DBuS_SESSion_BuS_ADDrESS org.nome.SessionManager /org/gnome/SessionManager org.gnome.SessionManager.requestShutdownin pratica avete usato Zenity invece di Kdialog per visualizzare il messaggio e modificato la chiamata D-BuS. Con desktop diversi potreste riuscire a controllarli con D-BuS, altrimenti dovrete killare brutalmente il server X. potete usare notify-send per far comparire una notifica nella barra di stato del desktop, a prescindere da cosa state usando, ma tali notifiche sono generalmente meno visibili di una finestra modale: DiSpLAY=“:0” notify-send “È tempo di dormire” “Spegnimento fra 5 minuti”un utente abile e a conoscenza delle vostre restrizioni potrebbe tentare di entrare con il vostro account per aggirare i controlli. naturalmente avete scelto una password robusta, preferibilmente che non contenga il nome del bimbo che state cercando di educare, ma questo non lo fermerà. Quello che vi serve è il modulo pam_tally2, che blocca un account per un tempo predeterminato oppure finché non decidete di sbloccarlo, dopo una serie di tentativi di login falliti. Abilitatelo e configuratelo nel file

system-auth con questa riga: auth required pam_tally2.so deny=5 unlock_time=7200Questo disabiliterà qualsiasi account (a eccezione di root) per due ore (7.200 secondi) dopo cinque tentativi di login falliti. Se volete che pam_tally2 possa gestire anche i tentativi su root, aggiungete l’opzione even_deny_root. Se non specificate un tempo di sblocco, l’account rimarrà bloccato indefinitamente. potete vedere lo stato di ogni utente consudo pam_tally2 --user jimmy

e sbloccare l’account prima del tempo, o se nessun tempo è stato fissato, con sudo pam_tally2 --user jimmy --resetricordate che un blocco simile impedirà anche a voi di collegarvi con il vostro account (o con root se l’avete specificato), ma non impedisce login SSH se avete impostato l’autenticazione via chiave (perché tale autenticazione è gestita internamente da SSH e non coinvolge pAM). Assicuratevi dunque di aver configurato correttamente SSH. in aggiunta, visto che funziona comunque per i login via SSH con password, può essere usato come ulteriore strato di rinforzo verso i tentativi di attacco in rete.

Extra PAMpAM ha una miriade di moduli, e molti altri sono disponibili tramite i repository della vostra distribuzione. il modulo pam_script limita il tempo di utilizzo del computer ma può essere usato anche per una singola sessione. installate pam-script nel solito modo e aggiungete a system-auth:session optional pam_script.so

ogni volta che una sessione si apre o chiude, pam-script lancerà qualsiasi script si trovi in /etc/security/pam-script/pam-script.d che finisca con _ses_open o _ses_close, rispettivamente. il flag optional indica che non bloccherà il login se uno script fallisce. ricordate lo script che scollega un utente da Cron? potete impostare pam_script in modo che lanci lo stesso script dopo un determinato tempo di collegamento. Scrivete in /etc/security/pam-script/pam-script.d/timeout_ses_open:#!/bin/shecho “sudo -u $pAM_uSEr /path/to/our/logoutscript” | at -q z now + 1 hour

il demone at lancia dei comandi in alcuni momenti prefissati, una-tantum (a differenza di Cron). il comando indica di lanciare il vostro script un’ora dopo il collegamento e lo aggiunge alla coda denominata z. At mantiene diverse code identificate da una singola lettera. il default è a, qui usate z ma potrebbe essere una qualsiasi coda non usata da altro, poiché la pulite all’uscita della sessione. un’ora dopo il login, lo script funziona come prima. non volete farlo girare se l’utente non è più collegato, quindi in /etc/security/pam-script/pam-script.d/timeout_ses_close inserite:#!/bin/sh

Regolazione dei diritti amministrativiVi serve accesso di root, via su o sudo, per modificare queste impostazioni. non serve aggiungere che coloro ai quali state imponendo le restrizioni non devono avere tale accesso, altrimenti potrebbero invertire quello che avete fatto. Se utilizzate su la soluzione è semplice: non fatevi sfuggire la password. Molte distribuzioni utilizzano ora sudo, permettendo al primo utente creato di lanciare programmi come root. Se si tratta del computer di vostro figlio e lui ha diritti

amministrativi, dovete effettuare l’accesso con il suo account, creare un altro utente e aggiungerlo al gruppo privilegiato. Quest’ultimo varia in base alle distribuzioni, controllate in /etc/sudoes una riga come%groupname ALL=(ALL) ALL

il gruppo è solitamente wheel o adm. Aggiungete il vostro utente a tale gruppo, quindi scollegatevi e ricollegatevi con il nuovo utente per controllare di poter correttamente fare sudo, e infine rimuovete l’account

del figlio dal gruppo privilegiato. Questo approccio è manicheista, tutto o niente. sudo vi permette più flessibilità. Modificate il file sudoers con visudo (non modificatelo direttamente a meno che non vi divertiate a usare LiveCD per riparare le installazioni dopo esservi chiusi fuori) e aggiungete qualcosa del tipo:username ALL = /usr/bin/apt-get,/usr/bin/apt-cache,/ usr/bin/synaptic

per consentire solo l’installazione del software.

LXP_132_60_63_LXF172.tut_parents 62 05/08/13 16:53

Page 65: Linuxpro 132 Agosto 2013

Tutorial Controllo parentale Controllo parentale Tutorial

LinuX pro 132 63

A meno che non siate un guru di iptables, è generalmente più facile e sicuro usare una GUI per i firewall. Firewall Builder può essere usato per installare e creare regole per computer diversi nella vostra rete

Molti router vi permettono di controllare l’accesso su siti e orari. DD-WRT è ottimo per questo, ed è Open Source!

atrm $(atq -q z | awk ‘{print $1}’)usando Awk per estrarre il numero del job dalla lista di quelli pendenti ottenuta con atq, lo passa ad atrm per rimuoverlo. Assume che la coda venga usata per un solo utente alla volta, se così non fosse sarebbe necessario controllare lo username.

Attività InternetControllare quando il computer può essere usato è un sicuramente un ottimo inizio. potremmo effettivamente però voler limitare l’attività in generale: come possiamo fare? Alcuni router vi permettono di limitare l’accesso a determinati siti in base all’orario, servizio o urL, o una combinazione. il sistema operativo per router DD-WrT, open Source e disponibile per diversi router, offre controlli flessibili. potete, per esempio, bloccare l’accesso ai social network via urL, agli iM e Skype pur mantenendo la possibilità di utilizzare il computer per le ricerche. Controllate le pagine d’aiuto del vostro router per altri dettagli; se non vi offre queste possibilità dovrete usare il firewall del kernel. utilizzando il modulo xt_time potete aggiungere delle regole Iptables per bloccare tutti i pacchetti in ingresso e uscita non appartenenti alla vostra rete locale, così:iptables -A ouTpuT ! -d 192.168.1.0/24 -m time --timestart 21:00 --timestop 08:00 --weekdays Sun,Mon,Tue,Wed,Thu -j Drop

iptables -A inpuT ! -d 192.168.1.0/24 -m time --timestart 21:00 --timestop 08:00 --weekdays Sun,Mon,Tue,Wed,Thu -j Dropnotate che iptables usa uTC per default, non il tempo locale, quindi dovrete fare gli opportuni aggiustamenti. Significa anche che dovete effettivamente aggiornare le regole due volte all’anno, con il cambio dell’ora. per evitarlo potete comunque aggiungere l’opzione --kerneltz alle regole di cui sopra per usare orari locali. È possibile anche filtrare pacchetti in uscita in base al possessore, così da applicare la chain OUTPUT a un solo utente:iptables -A ouTpuT ! -d 192.168.1.0/24 -m time --timestart 21:00 --timestop 08:00 --weekdays Sun,Mon,Tue,Wed,Thu -m owner --uid-owner jimmy -j Drop

Scrivere regole per il firewall non è banale: aggiungere una singola regola a ogni chain, come sopra, a un insieme vuoto di regole non è difficile, ma modificare un insieme già definito di regole per aggiungere funzioni extra potrebbe

portare conseguenze inaspettate se non siete pienamente consapevoli di quello che state facendo. Se avete già un firewall è più sicuro usare il programma di configurazione che solitamente la distro vi offre, ad esempio Firewall Builder o qualcosa sul genere di Shorewall, per modificare le impostazioni. Tali programmi controlleranno la coerenza delle regole prima di applicarle.

Tenete tracciapAM registra i login non riusciti in syslog, ma potete anche fargli registrare tutti i login aggiungendo la riga a system-auth o common-account: account required pam_warn.so il modulo pam_warn non ha alcun effetto pratico sull’autenticazione, ma registra il tentativo sul log di sistema. un’altra utile fonte di informazioni è il log ConsoleKit in /var/log/ConsoleKit/history. Questo non registra solamente i login e logout, ma anche lo switch tra sessioni (come l’uso di Ctrl+Alt+F1 per passare da X a una console virtuale). include anche i login SSH, quindi potrebbe servirvi un po’ della magia di grep per ottenere le informazioni che volete, ad esempio così:grep “session-x11-display=‘:0’.*session-unix-user=1001” /var/log/ConsoleKit/history

specificando lo user iD numerico vi mostrerà tutti i login e logout in X per l’utente, ad esempio:1366128164.765 type=SEAT_SESSion_ADDED : seat-id=’Seat1’ session-id=’Session65’ session-type=’’ session-x11-display=’:0’ session-x11-display-device=’/dev/tty7’ session-display-device=’’ session-remote-host-name=’’ session-is-local=TruE session-unix-user=1000 session-creation-time=‘2013-04-16T16:02:44.761963Z’

1366285984.660 type=SEAT_SESSion_rEMoVED : seat- id=’Seat1’ session-id=’Session65’ session-type=’’session-x11- display=’:0’ session-x11-display-device=’/dev/tty7’ session- display-device=’’ session-remote-host-name=’’ session-is- local=TruE session-unix-user=1000 session-creation- time=’2013-04-16T16:02:44.761963Z’i login vengono differenziati come type=SEAT_SESSION_ADDED mentre i logout type=SEAT_SESSION_REMOVED. ogni elemento contiene l’orario di creazione della sessione, ma se volete sapere quando l’utente si è scollegato dovete convertire il timestamp all’inizio della riga dallo standard uniX in una data leggibile, con il comandodate --date=‘@1366285984.660’

date vi dirà che la sessione è terminata il 18 aprile alle 12:53:04. potete combinare il tutto con un po’ di magia Awk se vi sentite esploratori e volete fare un po’ di esercizio. LXP

LXP_132_60_63_LXF172.tut_parents 63 05/08/13 16:53

Page 66: Linuxpro 132 Agosto 2013

Tutorial Xxxx

64 LINUX PRO 132

mentre preferirebbe fare altro. Eliminare i backup obsoleti, per esempio, o controllare l’integrità dei server da lui gestiti, o installarne di nuovi, e la lista può continuare a lungo. Comunque, Linux rende molto più semplice assolvere tutti questi compiti, grazie alla potente shell Bash e al relativo linguaggio di scripting che molte distribuzioni forniscono installato già di default. In questo articolo vi presenteremo nuovamente Bash, focalizzandoci sulle sue caratteristiche che permettono di automatizzare praticamente qualsiasi compito.

In breveBash è l’acronimo di Bourne Again Shell, e fu rilasciato per la prima volta al pubblico nel 1989 come sostituto della Bourne Shell. Comunque nessuna di queste informazioni storiche vi aiuta molto se non sapete cosa sia una shell: si tratta di un interprete di comandi. Fornisce un’interfaccia testuale che permette a voi, gli utilizzatori, di impartire comandi al vostro computer. La shell interpreta questi comandi e li passa al sistema operativo per farli eseguire. Ogni informazione generata come risultato dell’esecuzione dei vostri comandi viene poi mostrata nella schermata della shell per fare in modo che possiate interpretarla e intraprendere eventuali altre azioni. Se fino a ora non avete mai usato la shell (e in questo articolo useremo la parola shell come sinonimo di Bash), questo è il momento buono per iniziare. Sulle moderne macchine Linux, le shell vengono nella maggior parte dei casi lanciate da applicazioni che girano sul desktop: in Ubuntu e in Fedora, questa applicazione si chiama Terminale. Trovatela e lanciatene una istanza.

I rudimenti di BashEffettuato il lancio, il terminale vi apparirà in forma di finestra con un prompt per la digitazione dei comandi lampeggiante in alto alla vostra sinistra. Provate ora a digitare ls e poi premete Invio. Come risultato di queste operazioni, dovrebbe apparire una lista dei file e delle cartelle contenute nella vostra cartella Home seguita, sulla linea immediatamente successiva all’ultimo oggetto della lista, dal prompt. ls è il nome di un preciso comando shell, un programma che elenca tutti i file della cartella dove correntemente vi trovate (e che al login è di default la vostra cartella Home). Digitando il nome di un comando e premendo successivamente Invio, voi ordinate alla shell di eseguirlo. In generale, potete “personalizzare” l’esecuzione di un programma passandogli opportune opzioni, nella forma -x – ossia come lineetta seguita da un dato carattere. Per esempio, ls -l, restituirà lo stesso risultato di ls ma con più dettagli. Altri comandi hanno argomenti posizionali che ne specificano la modalità di operazione – e in altri comandi, i parametri posizionali sono indispensabili al funzionamento. Per esempio, il comando cp, che effettua la copia di file, richiede due argomenti posizionali, ossia il nome del file che deve essere copiato e quello del file su cui lo vogliamo copiare: cp ciao.txt mondo.txt

Nel caso specifico, il comando mostrato farà la copia del file

L’abc degli script Bash

Bash Usare la shell per scrivere script e automatizzare le operazioni più noiose

Annoiati e stanchi di digitare sempre gli stessi comandi? LXP vi mostra come realizzare qualche script Bash facile e veloce che faccia il lavoro per voi

I n quasi tutti i numeri di Linux Pro qualcuno scrive qualcosa sull’importanza di fare backup del vostro sistema a intervalli regolari (e nel caso qualcuno non l’abbia già fatto in questo

numero, lo facciamo ora qui). Comunque noi siamo pronti a scommettere che meno del 50% di voi seguono questo ottimo consiglio. Il problema con i backup è che sono molto noiosi, quindi si fa presto a dimenticare di farli per dedicarsi a cose interessanti. Ci sono molti altri compiti noiosi che un amministratore di sistema deve compiere su base regolare

È la possibilità di unire

facilmente tutti i potenti strumenti GNU che rende la scrittura di codice

in Bash un piacere

INTERMEDIO

LXP_132_64_67_LXF172.tut_bash 64 06/08/13 14:36

Page 67: Linuxpro 132 Agosto 2013

Tutorial Xxxx

LINUX PRO 132 65

ciao.txt della cartella corrente (ad esempio la Home, se siete nella cartella di default) sul file mondo.txt.: il comando stesso crea quest’ultimo file se non esiste, mentre lo sovrascrive in caso contrario, quindi fate attenzione! Se volete spostarvi in un’altra cartella, potete usare il comando cd. Ad esempio cd / vi porterà nella cartella root, all’apice della gerarchia del filesystem, mentre cd /usr/bin vi porterà all’interno della sottocartella bin della cartella usr, a sua volta sottocartella della cartella root (/). L’indirizzo specificato può anche essere relativo, vale a dire indicato a partire dalla cartella dove attualmente vi trovate, in maniera implicita. Ad esempio, se siete nella vostra Home e digitate cd Documenti, la shell cercherà una sottocartella chiamata Documenti e, se esiste, vi porterà all’interno di essa. Si noti infine che gli indirizzi specificati possono servire anche per specificare su quali file un comando deve operare: ad esempio, se volete copiare ciao.txt su mondo.txt, ma quest’ultimo si trova nella cartella Documenti, mentre il primo si trova nella vostra cartella test, potreste digitare il seguente comandocp test/ciao.txt /home/MioAccount/Documenti/mondo.txt

Come potete vedere è possibile specificare contemporaneamente sia indirizzi relativi che indirizzi assoluti.

Ciao mondoTerminata la panoramica sulle basi, è il momento di realizzare qualcosa di più concreto: affrontiamo il vero scripting in Bash. A mano a mano che vi presenteremo le caratteristiche che consentono di usare la shell come un ambiente di programmazione di uso generale, introdurremo anche un gran numero di comandi che probabilmente vi sono ignoti. Allora, piuttosto che fermarci e spiegare ogni relativo dettaglio, suggeriamo fin d’ora l’uso del comando man per saperne di più. Semplicemente basta digitare il comando man <nome comando>, e la shell vi restituirà il manuale d’uso del comando specificato. Per iniziare potete provare man man. Come è tradizione in tutti i tutorial sulla programmazione, inizieremo con il realizzare un programma che scriva “Ciao Mondo” sullo schermo. Scriviamo il seguente codice in un file e salviamolo:#!/bin/bashecho “Ciao Mondo”

Una volta terminata la scrittura è necessario rendere il file eseguibile: facciamolo digitando il seguente comandochmod +x <nome file>

Poi eseguiamolo tramite la shell digitando da riga di comando./<nome file>.

La prima riga del file <nome file> è chiamata “shebang”: è una

direttiva per il sistema operativo che dice quale programma deve essere caricato per eseguire il contenuto del file. In questo caso abbiamo specificato l’indirizzo assoluto del programma Bash. La direttiva deve quindi iniziare con la coppia di caratteri #! seguita dall’indirizzo assoluto del programma che si vuole invocare. La seconda riga del file è un semplice comando per la shell: in questo caso, si tratta di echo, che semplicemente stampa su schermo ogni parametro passatogli come argomento.

Ma avremmo potuto inserire qualsiasi comando e, al lancio del nostro script, la shell lo avrebbe eseguito. È questo quello che dà allo scripting shell la potenza che effettivamente ha. Si può sfruttare l’intera gamma dei comandi già esistenti in Bash, così come i costrutti di ridirezionamento e pipe, usarli congiuntamente e ancora di più: si può usare tutto questo all’interno di istruzioni condizionali, cicli e funzioni. Gli ultimi due punti su cui vale la pena insistere sono il fatto che è necessario rendere il file eseguibile, altrimenti il sistema operativo non ci permetterà di lanciarlo, e che non ci è possibile eseguirlo semplicemente digitandone il nome, ma è necessario anteporre la coppia di caratteri ./. Il punto rappresenta la cartella corrente, mentre lo slash è il comune separatore di cartelle e file – essenzialmente questa coppia di caratteri è un’abbreviazione dell’indirizzo assoluto di un file nella vostra cartella corrente (per una spiegazione più dettagliata, leggete il box dal titolo $PATH presente nella prossima pagina).

VariabiliÈ possibile estendere il precedente script in molti modi. Per esempio si possono aggiungere più comandi da eseguire, semplicemente scrivendo ciascuno di essi su una riga diversa da quella degli altri. #!/bin/bashecho “Ciao Mondo”echo “Questi sono i file presenti nella cartella corrente”

ls Potete usare i costrutti di Bash per il controllo di flusso così

come negli script, anche come comandi in linea

Conoscere la vostra posizione Quando usate la shell, quest’ultima è sempre a conoscenza della cartella dove al momento vi trovate. Nell’articolo abbiamo brevemente accennato al fatto che, al primo lancio della shell sulla vostra macchina, vi troverete di default nella vostra home directory. Questo può sembrare un dettaglio minore, ma è in realtà molto importante. A meno che voi non specifichiate un indirizzo assoluto, la shell considera che tutti gli indirizzi di comandi e programmi siano relativi alla cartella in cui correntemente vi trovate. Se lanciate un comando a partire dalla cartella sbagliata, potreste ottenere risultati indesiderati e perfino la cancellazione del file

sbagliato. La ragione per cui questo dato è così importante è che certe operazioni, come il montare e lo smontare una cartella sul filesystem non può avere successo se avete una shell attiva al suo interno. Ora, questo forse non è un problema se si usa la shell interattivamente, ma lo diventa quando, ad esempio, uno dei vostri script in esecuzione entra prima con cd in una cartella che successivamente cerca di smontare: in questo caso vi ritrovereste con uno script che fallisce il suo compito senza sapere il perché. Potete sempre determinare la cartella dove vi trovate al momento con il comando pwd – acronimo di Present Working Directory.

“Questo semplice approccio alla programmazione da già una notevole potenza espressiva ai vostri script”

Bash Tutorial

LXP_132_64_67_LXF172.tut_bash 65 06/08/13 14:36

Page 68: Linuxpro 132 Agosto 2013

66 LINUX PRO 132

Con tutti i comandi messi a disposizione da Bash, questo semplice approccio alla programmazione dà già una notevole potenza espressiva ai vostri script. Comunque, per fare programmi veramente potenti e aggiungere intelligenza e flessibilità ai nostri script, ci occorrono costrutti, come quelli disponibili in altri linguaggi di programmazione, per legare tra loro le diverse parti. Ad esempio le variabili: #!/bin/bash

nome=LXP

echo “Ciao ${nome}” echo “${nome}, è un bel nome.”La prima riga non commentata dello script assegna il valore LXP (come stringa di testo) alla variabile nome. Una volta eseguito l’assegnamento, è possibile referenziare questa variabile da qualunque posizione del nostro script, semplicemente ponendone il nome all’interno del costrutto ${}. Quando faremo eseguire il codice, Bash scandirà ogni singola riga, sostituendo il valore nome ovunque trovi l’espressione ${nome}. Tutto questo è già di per sé molto utile, ma Bash offre modi ancora più utili di usare le variabili. Per esempio, è possibile assegnare il valore di uscita di un comando, inteso come stringa di caratteri, a una variabile richiudendola tra due apici inversi (backtick) `:data=`date +%d-%m-%Y`

Nell’esempio si assegna l’uscita di un comando che estrae una data dal calendario del computer alla variabile data, per

poterla usare nei comandi successivi. Comunque si può fare ancora meglio, innestando ad esempio l’uscita di un comando direttamente all’interno di altre stringhe tramite il costrutto $(): echo “Oggi è il $(date +%d-%m-%Y)”

Quest’ultimo esempio è particolarmente importante quando dovete eseguire un backup, perché vi permette di creare file che contengono la data di esecuzione al loro interno.

Controllo di flussoUn altro “legante” che Bash mette a nostra disposizione, comune in ogni linguaggio di programmazione, sono gli strumenti per il controllo di flusso. Fino a ora abbiamo visto Bash eseguire i comandi del vostro script nello stesso rigido ordine in cui voi li avete elencati nel listato, ma cosa si deve fare se si desidera modificare l’evoluzione del risultato in funzione del verificarsi o meno di una qualche condizione? Bene, per fare questo, si devono usare proprio questi strumenti, e il primo di questi che vi presentiamo è il costrutto if...then. L’idea alla base è quella di controllare se è vera una data condizione, come la presenza di un dato file e, in caso affermativo eseguire il codice che segue, come mostrato in questo esempio: #!/bin/bashif [ 2 > 1 ]; then echo “Vero”fi

Si tratta di un esempio banale, siccome il risultato di tale confronto è sempre True, ma ci è utile per mostrare la sintassi del costrutto. In Bash, i costrutti di tipo if si realizzano digitando la parola chiave if, seguita da una condizione da valutare posta all’interno di parentesi quadre. Seguono poi la parola chiave then, che precede il comando da eseguire in caso di verità della condizione data, e infine la parola chiave fi che chiude il costrutto. Bash offre una vasta gamma di tipi di valutazione, molte delle quali sono molto utili, quali -f, che controlla se un file esiste, e -nt che permette di controllare se, tra due file, uno è più recente dell’altro. if [ -f /var/run/backup.lock ]; then exit 1else

In Bash, potete referenziare

i file in molti modi diversi, inclusi

l’indirizzamento relativo e quello

assoluto

$PATHNon c’è nulla di misterioso nell’esecuzione dei comandi in Bash. Quando digitate un nome, la shell trova l’eseguibile binario o lo script che il nome identifica e poi lo esegue come fosse un normale programma lanciato dall’utente, per esempio ./hello.bash. Ma, a meno che non specifichiate l’indirizzo assoluto del file, come fa la shell a sapere dove trovare il comando? La risposta sta nella variabile di ambiente $PATH. Le variabili di ambiente, presenti in gran numero nella vostra shell, influenzano la maniera in cui i programmi vengono eseguiti all’interno della shell corrente. La variabile PATH è una di esse, e contiene i nomi di una serie di cartelle dove è possibile trovare i comandi invocati. Non appena digitate il nome del comando che desiderate lanciare, ad esempio foo, la shell cerca il file corrispondente in tutte le cartelle specificate da questa variabile di ambiente, dalla prima a sinistra all’ultima a destra (ricordiamoci che i valori delle variabili in una shell sono stringhe), finché lo trova e lo esegue o, non trovandolo, genera il seguente messaggio di errore: foo: comando non trovatoÈ possibile vedere il contenuto della variabile $PATH semplicemente tramite echo, come avviene per qualsiasi altra variabile. Potete anche modificarla impostandone il valore come avviene per ogni altra variabile. Se volete che i cambiamenti effettuati siano persistenti nel tempo, dovrete specificarli all’interno di uno dei file di configurazione di Bash, .bashrc o .bash_profile, a seconda che desideriate che detti cambiamenti valgano per la shell di login, per le sottoshell o per entrambe.

“Potrete scrivere codice che automatizza qualsiasi funzione della vostra Linux box”

Tutorial Bash

LXP_132_64_67_LXF172.tut_bash 66 06/08/13 14:36

Page 69: Linuxpro 132 Agosto 2013

Suddividere un compito complesso in diversi task più semplici vi aiuta a realizzarlo ed è uno dei trucchi dei programmatori

LINUX PRO 132 67

touch /var/run/backup.lock tar -czf /mnt/backup-$(date +%Y-%m-%d).tgz /home/jon rm /var/run/backup.lock

fiIn questo esempio, controlliamo se esiste un dato file di lock: in caso affermativo non verrà iniziato un nuovo backup perché ciò significa che un’operazione di questo tipo è attualmente in corso. Ma se il file di lock non esiste, usiamo la clausola else per crearlo, lanciare il backup, e puoi rimuoverlo. Anche in questo caso suggeriamo di dare un’occhiata alla relativa pagina man di Bash per vedere quali opzioni test sono disponibili. Infine, anche se abbiamo detto che non approfondiremo ogni singolo comando che vi presentiamo in questo articolo, exit merita qualche parola. Quando un programma o un semplice comando Bash termina, viene restituito un valore numerico. Il valore 0 è assunto come risultato in caso di esecuzione terminata con completo successo, mentre ogni altro numero suggerisce che qualcosa è andato storto. Tutto questo è particolarmente utile quando si usa la variabile predefinita ?, dove viene memorizzato il valore numerico restituito dal precedente comando. Tutto questo vi permette di controllare l’esecuzione del vostro programma in funzione del successo o meno dell’esecuzione di sue parti.

Cicli forUn altro “legante” utile e disponibile in ogni linguaggio di programmazione è il ciclo for. Si usa quando si vuole iterare l’esecuzione di un blocco di codice su un dato gruppo di oggetti, eseguendolo su uno alla volta. In Bash, il suo funzionamento è simile al comando if: for file in $(ls); do echo ${file}

doneAnche questo esempio è banale, ma comunque illustra la sintassi. Dopo la parola chiave for segue una variabile che prende valori nel range definito dall’espressione dopo in. do e done delimitano il blocco di istruzioni da eseguire per ciascun valore assunto dalla variabile specificata: si noti che questa file può essere referenziata anche all’interno del blocco stesso, come qualsiasi altra variabile. Infine il costrutto importante, proprio di qualsiasi buon linguaggio di programmazione, che vi serve per rendere i vostri script Bash il più utili possibile, sono le funzioni. La creazione e l’invocazione di funzioni in Bash è piuttosto standard.

Per definire una nuova funzione, semplicemente digitate il nome che desiderate darle seguito da una coppia di parentesi tonde, e mettete il codice che volete farle eseguire di seguito, racchiuso tra parentesi graffe. func () { echo “La mia prima funzione” echo $1}

func “ciao”Come si può vedere da questo esempio, l’invocazione di una funzione è esattamente come l’invocazione di qualsiasi altro comando in Bash – si digita il nome della funzione seguito da tutti gli argomenti di invocazione. A ciascuno di detti argomenti si può accedere tramite le variabili posizionali – $1 è il primo, $2 è il secondo, e così via (si noti che $0 identifica il nome del comando, inteso come stringa). Lo stesso insieme di variabili identifica gli argomenti che passate alla vostra funzione. Ad esempio, supponendo che il seguente listato sia stato salvato in un file dal nome ripeti e reso eseguibile,#!/bin/bashecho $1

la sua invocazione darà sullo schermo il seguente risultato:~$ ./ripeti LXPLXP

Automatizzare tuttoPer ora terminiamo qui, ma con tutti questi rudimenti disponibili, potrete scrivere codice che automatizza qualsiasi funzione della vostra Linux box. Ricordate solo che, se vi trovate ad affrontare un compito difficile e non sapete come fare, cercate un programma preesistente e, in caso non riusciste a trovare niente, pensate a come mettere in cascata diversi programmi semplici per ottenere il risultato che cercate. In particolare i comandi grep, sort e cut sono particolarmente utili, come lo è sed (quest’ultimo potrebbe costituire da solo l’argomento di un grosso libro!). LXP

Ridirezionamenti e pipeIn tutti gli esempi che abbiamo visto, l’uscita è mostrata sullo schermo, nella sessione di shell che al momento gira sul vostro terminale. Ma se pensate che i programmi possano mostrare i risultati della loro esecuzione solo sullo schermo, vi sbagliate di grosso. In verità ogni programma invia la propria uscita in una ‘pipe’ chiamata stdout. Questa pipe ha due estremità: una è collegata al programma e trasmette i suoi risultati, l’altra è collegata a qualcosa che riceve i risultati e li elabora in varie maniere. Di default, questo qualcosa è lo schermo, ma non è obbligatorio che sia sempre così. Esistono due modi in cui è possibile manipolare questa pipe. Uno è quello di connetterne l’estremità di uscita in modo che i dati vengano inviati a un altro file invece che allo schermo:echo “Ciao Mondo” > hello.txt

Per essere completamente chiari, > è il carattere che indica l’operazione di ridirezione. Per vedere qual è il secondo modo, dobbiamo dire che per ogni programma esiste anche un’altra pipe, chiamata stdin. Questa pipe, come forse avrete già immaginato, è usata per controllare la sorgente dei dati in ingresso di un programma. Orbene, una delle più potenti caratteristiche di Bash è quella di poter connettere la pipe stdout di un programma con quella stdin di un altro: ls | grep *.txt

In questo esempio | connette l’uscita del comando ls all’ingresso del comando grep che filtra tutti i file tranne quelli di estensione .txt. In Bash è possibile concatenare in questo modo tutti i programmi che si desidera e, di conseguenza, fare delle elaborazioni dati molto complesse.

Bash Tutorial

LXP_132_64_67_LXF172.tut_bash 67 06/08/13 14:37

Page 70: Linuxpro 132 Agosto 2013

Tutorial Raspberry Pi

68 Linux pro 132 Linux pro 132 69

Raspberry Pi TutorialTutorial Raspberry PiTutorial Xxxx

utilizzando i classici tasti freccia. La prima cosa da fare è creare il codice che ci permetterà di muovere il gatto (simbolo del programma e al contempo “oggetto” di default con cui interagire) sullo schermo: utilizzeremo tre blocchi distinti, ognuno dei quali entrerà in azione quando verrà premuto un particolare tasto. Selezionate Control, poi trascinate la scritta When Space Key Pressed all’interno dello script. Questo crea uno script (cioè una sequenza di istruzioni) che viene eseguito ogni volta che si preme la barra spaziatrice. ovviamente questo è solo lo “scheletro” dello script che possiamo personalizzare come segue: aprite il menu a tendina di fianco al comando e cambiate Space con Right Arrow, dopodiché trascinate Move 10 steps sotto il comando. Come notate ora alla pressione del tasto “freccia destra” (right arrow) l’icona del micio si sposterà di dieci passi (move 10 steps) nella direzione in cui sta guardando. il primo microprogramma (script) è stato creato senza scrivere una sola riga di codice, come vi avevamo promesso. ora potete creare script simili, per esempio per far girare verso destra il micio alla pressione di “freccia giù” e farlo ruotare a sinistra premendo “freccia su”. Manca il blocco che permette di scrivere: ovviamente non desideriamo che il gatto lasci una scia di inchiostro sempre, ma solo quando vogliamo noi. Anche qui nessun problema, useremo l’azione pen up (alza la penna) e pen down (abbassa la penna). Chiaramente, in funzione della posizione della penna, il gatto lascerà o meno una scia di inchiostro dietro di sé.

Usare le variabiliper determinare lo stato della penna (alzata o abbassata) abbiamo bisogno di un pezzo di codice che mantenga la memoria dello stato della penna: in informatica, si utilizzano le variabili. una variabile è come un casella che può contenere un valore numerico, permettendoci di leggerlo o di modificarlo.

Programmazione di base

Raspberry Pi Come programmare con la pi usando Scratch e python

Vediamo come usare due dei tool di programmazione presenti di default sulla raspberry e usiamoli per creare dei programmi d’esempio

Con questo tutorial, torniamo allo scopo originale per il quale è nata la raspberry, cioè l’insegnamento della programmazione. nelle prossime pagine faremo un “giro

turistico” in due dei linguaggi di programmazione presenti di default su raspbian, la versione di Debian “tagliata” su misura per la nostra scatoletta. Se non avete ancora un esemplare di raspberry, non disperate: i linguaggi che useremo sono presenti anche in Debian per x86 (e praticamente in ogni distribuzione Gnu/Linux), quindi è sufficiente fare riferimento ai repository che usate di solito e installarli sulla vostra Linux box. non sentitevi in soggezione se non avete mai programmato prima d’ora: cominceremo dal livello più facile, in modo che chiunque ci possa seguire senza difficoltà. Scratch è un linguaggio di programmazione che mette a proprio agio il neofita: nessuna antipatica riga di comando, ma un giocoso ambiente colorato dove è possibile comporre graficamente il proprio programma, trascinando e connettendo “blocchi” di istruzioni preconfigurate: più che “scrivere”, si “disegna” e non è necessario ricordare qual è l’istruzione esatta da usare per svolgere un particolare azione. Andremo quindi a scrivere – scusate, a realizzare – un semplice programma di esempio, un programmino che permetterà di disegnare sullo schermo

Alle variabili viene assegnato automaticamente il valore “zero”, l’utente potrà modificarne il contenuto nell’area di lavoro nell’apposita casella

inTeRMedio

LXP_132_68_71_LXF168.tut_rpi 68 06/08/13 14:32

Page 71: Linuxpro 132 Agosto 2013

Tutorial Raspberry Pi

68 Linux pro 132 Linux pro 132 69

Raspberry Pi TutorialTutorial Raspberry PiTutorial Xxxx

prima di poter usare una variabile, dobbiamo dire al computer di riservare spazio per essa e inoltre le dovremo assegnare un nome, per facilitarne l’uso. Andiamo su Variables, selezioniamo Make a Variable e assegniamole un nome (“pen” andrà benissimo come nome), dopodiché verrà mostrata una serie di azioni che possono usare o modificare il valore della variabile. ora che è stata creata, dobbiamo dire al computer come agire in funzione del valore della variabile. Faremo ciò attraverso il blocco if… else (Se... allora) che si basa sul concetto di azione>reazione (ad esempio SE piove ALLorA apri l’ombrello). il blocco in questione verifica il valore della variabile pen controllando se è uguale a zero: se lo è, viene eseguito il primo pezzo di codice e la penna viene abbassata, invertendo contemporaneamente il valore della variabile da zero a uno. Viceversa, se il valore inizialmente verificato è uguale a uno, la penna verrà alzata e il valore della variabile verrà fatto passare da uno a zero. Con questo meccanismo è possibile passare da uno stato all’altro (0->1 oppure 1->0) eseguendo contemporaneamente un’azione (alza-abbassa la penna). il tasto da assegnare a questa azione ci sembra giusto che sia il tasto space cioè la Barra spaziatrice. Date un’occhiata alla figura qui a lato per avere un’idea di come dovrebbe apparire il lavoro svolto fino a ora. Si osservi l’uso dell’operatore = nel blocco dell’iF. Ciò significa che il primo blocco di codice viene eseguito solo se la variabile “pen” contiene (equals) zero, altrimenti (else) sarà la seconda parte del blocco ad essere eseguito.

Utilizzare i cicliÈ possibile muovere il gatto in giro per lo schermo e realizzare divertenti disegni, ma non sarebbe più professionale avere dei disegni predeterminati (per esempio dei cerchi) da poter inserire velocemente ove necessario? Sarà il nostro prossimo esercizio. Diciamola tutta: non siamo dei Giotto, per cui realizzeremo un poligono con tanti lati (24) che approssimerà in un modo più o meno accettabile un cerchio. il metodo da usare è il già noto move forward 10 (avanza di dieci passi) seguito dal comando rotate 15 degrees (girati di 15 gradi). ripetendo questi due comandi per 24 volte si otterrà il quasi-cerchio che si desiderava. Certo, possiamo ripetere move Move e rotate per 24 volte ma non è né veloce né comodo oltre a essere esteticamente “brutto”: anche i programmatori cercano la bellezza nelle loro creazioni! Se poi si vogliono modificare le dimensioni del cerchio, occorrerebbe correggere il valore del “move” 24 volte! Dunque, molto meglio usare un ciclo (in inglese: loop). Si tratta di un blocco che ripete per un certo numero di volte le istruzioni che contiene. Esistono cicli di vario tipo: alcuni sono attivi finché una variabile non cambia il suo contenuto (un po’ come ripetere un blocco iF), ma il ciclo che noi useremo funzionerà per un numero prefissato di volte. All’interno del loop, inseriremo solo i due comandi che abbiamo anticipato, cioè move forward 10 e rotate 15, come mostrato nella figura qui a lato. Ehi, per quanto semplice, avete appena finito un altro programma in Scratch! Sia chiaro che la programmazione non è fine a sé stessa, ma è il modo in cui si piega il computer ai propri voleri: ora che sappiamo come muoverci, l’unico limite è la fantasia. potete creare il prossimo gioco “campione di incassi” o anche qualcosa di così futuristico per il quale ancora non esiste un nome. in giro per internet ci sono moltissimi programmi già fatti, alcuni giocabili addirittura nel navigatore internet, a patto di avere Flash installato: ecco qui alcuni esempi.

il cerchio è solo un esempio, con un po’ di fantasia potete creare qualunque forma

Super Mario Galaxy si corre e si salta per i premi. idea buona e musichetta piacevole. http://http://scratch.mit.edu/projects/dolfus555/162167

Wipeout Grafica mediocre ma divertimento assicurato http://scratch.mit.edu/projects/awesomestickdude/ 1149306

Space War 4 un classico “astronave spara-spara”, adrenalina al massimo. http://scratch.mit.edu/projects/illusionist/ 879463

Snake Chamber Allevare serpenti? Si può! http://scratch.mit.edu/projects/dewleafWolf/2758178

day dream Scratch non serve solo per i giochi ma può creare belle animazioni. http://scratch.mit.edu/projects/cremeglace/40150

il blocco iF... eLSe consente di prendere decisioni, una condizione indispensabile nella programmazione delle CPU

LXP_132_68_71_LXF168.tut_rpi 69 06/08/13 14:32

Page 72: Linuxpro 132 Agosto 2013

70 Linux pro 132 Linux pro 132 71

Tutorial Raspberry Pi Raspberry Pi Tutorial

il programma potrà essere eseguito. ora digitiamo ./ciao.py e si dovrebbe presentare a video il frutto delle nostre fatiche, cioè la scritta Ciao Mondo!. Ecco dimostrato che l’interprete (python) funziona, la sintassi del programma è corretta e il risultato è quello che ci si aspettava. Certo, le basi ci sono, ma un programma così non va molto oltre: come in Scratch, occorre poter far interagire l’utente con il software. in questo caso non è necessario dichiarare anticipatamente (come in Scratch) una variabile, è possibile farlo dinamicamente nel corpo del programma (python si occuperà autonomamente di riservare in memoria lo spazio necessario). Modificate il programma, cancellate la riga print “Ciao Mondo!” e sostituitela con nome = raw_input(‘Come ti chiami?’)

Questa riga crea la variabile nome, mostra a video la domanda Come ti chiami? e dopo che l’utente avrà dato risposta, essa verrà immagazzinata all’interno della variabile. notate che il testo è contenuto all’interno di due apici (simbolo: “‘”): questo serve per specificare all’interprete che “è proprio tutto testo” e non qualcosa di differente. ora che la variabile ha un valore, stampiamola con:print ‘Ciao ’, nome

poiché il computer esegue in sequenza un comando dopo l’altro, non ci sono problemi. Se avessimo invertito la sequenza di comandi, avremmo avuto un errore in quanto si sarebbe tentato di stampare il valore di una variabile prima di averla creata. ora si salvi il file e lo si esegua con il solito ./ciao.py a riga di comando.

Prendere decisioniAbbiamo leggermente migliorato il programma, ma resta ancora “freddo” e poco interattivo: un paio di istruzioni e fine. per renderlo maggiormente utile, aggiungiamo un “bivio decisionale” dove il computer analizza l’input e decide come agire in funzione del valore inserito dall’utente. ricordate il “blocco if” di Scratch? Bene, qui è lo stesso anche se cambia la “struttura”: eccola qui di seguito.if <espressione>:<indentazione> istruzioni-da-eseguire

<espressione> deve essere rimpiazzata da un qualcosa che possa essere “vero” o “falso”. per esempio l’affermazione 1 = 0 (uno uguale a zero) è palesemente falsa (e lo sarà sempre quindi poco utile ai fini programmatori). Meglio usare una variabile, per esempio vite_rimaste = 0 può essere vero o falso in funzione del valore contenuto nella variabile vite_rimaste, permettendo quindi al software di eseguire istruzioni differenti in base al risultato del confronto. nel nostro caso, verificheremo il valore della variabile nome per vedere se corrisponde a un valore ben preciso, come segue:if nome == ‘Mario’ :

perché abbiamo usato l’operatore ==, cioè un ‘uguale’ ripetuto due volte? Beh, i computer non se la cavano bene come noi umani a risolvere le ambiguità, per cui bisogna essere precisi. ogni simbolo o parola può avere un solo e unico significato, altrimenti le cose si metterebbero veramente male! il simbolo ‘=’ è utilizzato per assegnare un valore a una variabile (pippo = 0) mentre il simbolo ‘==’ è usato per confrontare due valori/variabili: il comando (sbagliato!) if nome = ‘Mario’ :

verrebbe riportato come errore dall’interprete python, con conseguente blocco del programma. Ancora, abbiamo limitato il valore Mario all’interno degli apici, per dire a python che si tratta di un testo mentre i due punti finali stanno a indicare che l’espressione

Scratch è ottimo per acquisire le basi della programmazione, ma presto o tardi ci si scontrerà con i suoi limiti. Vediamo quindi di passare a un linguaggio popolare e adatto a molti usi:

Python. La prima cosa da sapere è che, a differenza di Scratch, quanto linguaggio di programmazione è “a riga di comando”: intendiamoci, ciò non significa che non sia possibile creare programmi grafici, ma semplicemente che l’interfaccia utente dedicata alla scrittura del software non è così accattivante come quella di Scratch, ciò senza la possibilità di blocchi preconfezionati “clicca e trascina”. Quindi, per realizzare programmi, si deve ricorrere a un classico editor di testi e, fortunatamente, qualunque programmadi questo tipo andrà bene. Visto che Leafpad è preinstallato sulla raspbian, sarà il primo che useremo. Ad ogni modo, se proseguirete con la programmazione in python varrebbe la pena di provare anche altri editor di testi: per esempio, molte persone che affrontano da neofiti la programmazione python, trovano conveniente affidarsi a Geany quale piattaforma di lavoro predefinita. Attenzione: evitate assolutamente programmi come Libreoffice o Abiword! Essi non sono “editor” di testo ma “elaboratori” di testo e aggiungerebbero la formattazione (cioè i vari orpelli grafici come tipo di font, colori, ecc.) che renderebbero inutilizzabile il programma python. Bene, si comincia: aprite Leafpad e scrivete come prima linea:#!/usr/bin/python

Questa intestazione serve per dire al sistema operativo che tutto ciò che viene dopo dovrà essere interpretato dal programma python, localizzato nella directory /usr/bin/. Va ricordato che questa intestazione deve essere una costante in tutti i programmi scritti per python. possiamo ora scendere all’interno del programma: è tradizione consolidata che il primo programma che si scrive in un nuovo linguaggio di programmazione sia il classico “Ciao Mondo!”, cioè un piccolo software che non fa altro che scrivere un testo sul monitor; chi siamo noi per sottrarci alla tradizione? Dopo l’intestazione, lasciamo una riga bianca e nella terza scriviamo:print “Ciao Mondo!”

Finito! Salviamo il testo e diamo al file il nome di ciao.py, dopodiché dobbiamo rendere eseguibile il programma: quindi a riga di comando digitiamo: chmod a+x ciao.py per dire al sistema operativo che

Molti editor di testo prevedono la colorazione per facilitare la lettura: ecco per esempio come si presenta il codice in mcedit

ora si passa al linguaggio Python

LXP_132_68_71_LXF168.tut_rpi 70 06/08/13 14:32

Page 73: Linuxpro 132 Agosto 2013

70 Linux pro 132 Linux pro 132 71

Tutorial Raspberry Pi Raspberry Pi Tutorial

Se avete seguito passo-passo questo articolo, potreste chiedervi quali sono le prossime mosse per migliorare le vostre capacità: beh, sia Scratch che python sono ottimi per iniziare, quindi meglio scegliere subito uno dei due. Se la scelta è caduta su Scratch, il posto migliore per avere aiuto è http://scratch.mit.edu, un sito straboccante di progetti caricati da altre persone e totalmente a vostra disposizione,

da scaricare e studiare. inoltre ci sono dozzine di video-guide che spiegano passo passo molti trucchi di programmazione. python è molto più diffuso a livello professionale e anche per esso sono disponibili innumerevoli risorse in rete per imparare a usarlo al meglio. ovvio che la cosa migliore è partire da www.python.org, dove è possibile trovare un tutorial che spiega le basi, anche se in un modo un po’ troppo

stringato. Ci sono parecchi libri scritti molto bene, per esempio Dive into python, che acclude addirittura un DVD: il testo è liberamente consultabile presso www.diveintopython.org. un’altra fonte di conoscenza è la consultazione è la vostra rivista preferita, Linux Pro ovviamente. negli ultimi anni abbiamo pubblicato una lunga serie di guide su questo linguaggio: cercate le nostre raccolte pDF.

è terminata e ciò che segue sono i comandi da eseguire in caso di successo del confronto. potrebbe darsi che si desideri eseguire più di una istruzione dopo il confronto, quindi esse devono essere parte di un blocco di istruzioni. il blocco viene delimitato dall’indentazione, cioè spostate a destra rispetto all’iF e incolonnate per bene. Ecco, questo bizantinismo (espressioni più forti ci verrebbero censurate) è fonte di innumerevoli errori di programmazione ed è una delle migliori frecce all’arco degli oppositori di python: sarebbe stato sufficiente delimitare il blocco da due parentesi graffe, come in molti altri linguaggi, ma gli sviluppatori di python quel giorno dovevano avere la testa altrove. Dicevamo, l’indentazione: essa può essere uno (o più) spazio o una tabulazione, ma è fondamentale che sia sempre lo stesso simbolo (mai mischiare spazi con tabulazioni) altrimenti ci si troverebbe un codice visivamente perfetto ma “diversamente interpretabile” da python, con parecchi mal di testa pronti per il povero programmatore. Qui va a gusti, personalmente abbiamo adottato lo “standard” rappresentato da un’indentazione di due spazi: ci piace e la useremo, ma voi potete metterne uno, tre o una tabulazione: libertà di scelta! ok, ok, torniamo al punto: cosa deve fare il computer se veramente nome == ‘Mario’? ovviamente lo deve trattare meglio degli altri per cui ecco qui:if nome = ‘Mario’ : print “Ciao! Mario è proprio un bel nome”.

occhio ai due spazi all’inizio della seconda linea e si notino anche le virgolette che delimitano il testo da stampare: esse servono perché all’interno del testo è contenuto un apice, che essendo un carattere speciale usato per delimitare i testi (vedi sopra) avrebbe mandato in confusione l’interprete e bloccato l’esecuzione del programma. A ogni modo, non vogliamo essere maleducati con le altre persone “non-Mario”, per cui aggiungeremo un’alternativa per salutare anche loro tramite l’altro “ramo decisionale”, impersonato dall’else, che si manifesterà in caso di falsità del confronto, aggiungiamo quindi:else: print ‘ciao ‘, nome

ora come ora, il programma funziona una volta sola, e poi termina. Ma noi desideriamo che sia sempre attivo e otterremo questo tramite un ciclo. ricordate il ciclo in Scratch che ripeteva 24 volte il blocco di istruzioni? Bene, questo nuovo ciclo durerà indefinitamente finché non gli diremo di smettere! useremo a tale scopo l’istruzione

while, che ha la seguente sintassi:while <espressione> :<indentazione> istruzioni-da-eseguire

Questa è la struttura base, da adattare alle nostre esigenze usando una “parola chiave” per terminare il programma:while nome != “fine” :

Risolvere i probleminon chiedeteci il perché, ma il punto esclamativo in informatica è spesso usato con il significato di “no”. Ma questo ci lascia ancora qualche problema: se lo mettiamo prima di nome = raw_input... ci genererà un errore, visto che ancora non conosciamo il valore di nome, mentre se lo mettiamo dopo, la richiesta di inserire il nome ci verrà presentata solo una volta. per risolvere il problema, assegniamo a nome un valore prima dell’istruzione while e il gioco è fatto! Ecco come appare il programma finito:#!/usr/bin/python

nome = ‘’

while nome != ‘fine’ : nome = raw_input(“Come ti chiami? ”) if nome == ‘Mario’: print “Ciao! Mario è proprio un bel nome!” else : print ‘Ciao’, nome

Ci sono quattro spazi prima di ogni print in quanto tali istruzioni sono indentate due volte: la prima per il while e la seconda per l’if. Come al solito, salvatelo come ciao.py e mandatelo in esecuzione con ciao.py. Anche per questo mese abbiamo finito, ciao e alla prossima! LXP

i prossimi passi

interagire con il programmaAbbiamo scritto programmi con un editor di testi e poi li abbiamo dati in pasto a python, che li ha interpretati ed eseguiti. Ma c’è un altro modo di operare e cioè tramite la modalità interattiva. Dalla riga di comando si digiti python e ci si ritroverà nella riga di comando di python, evidenziata dai tre simboli >>>. ora possiamo scrivere direttamente il nostro programma senza passare dall’editor di testi. Finito il lavoro, si deve uscire da python tramite exit(), ritornando così nella riga di comando di Linux. La modalità interattiva è veloce e comoda per testare brevi script o nuovi

moduli, ma è anche evanescente: una volta usciti dall’ambiente, tutto il codice digitato andrà perso.

Modalità interattiva: la potenza di Python disponibile mentre scrivete

Carenza di auto-stima? Rinforziamola con complimenti elettronici

LXP_132_68_71_LXF168.tut_rpi 71 06/08/13 14:32

Page 74: Linuxpro 132 Agosto 2013

Tutorial Raspberry PiNAS TutorialTutorial Raspberry PiTutorial Xxxx

72 LINUX PRO 132

è operato proprio in questo modo, scegliendo un marchio affermato: Buffalo Technology. Il produttore ha diversi modelli a listino, realizzati in formato rack, adatti per armadi di rete oppure oggetti compatti da tavolo. I prodotti sono differenziati per numero di dischi che possono accogliere, per caratteristiche tecniche e per sistema operativo. Per quanto riguarda i sistemi operativi è possibile scegliere modelli con Windows Storage Server a bordo, adatti per realtà con una struttura sistemistica basata sulla piattaforma Microsoft e soluzioni che funzionano grazie a un sistema operativo UNIX. Per questo test si è utilizzato il modello TeraStation 5200 (TS5200D). Si tratta di un’unità compatta (170 x 170 x 230 mm) con due alloggiamenti dischi da 3.5” in formato SATA III. L’unità in prova contiene due dischi da 1 TB ma sono disponibili versioni con dischi da 2, 3 o 4 TB. I dischi possono essere configurati in modalità RAID mirror o striping. I dischi sono inseriti in slitte estraibili dotate di tecnologia Hot-Swap. In caso di modalità mirror è possibile quindi sostituire un disco guasto senza spegnere l’unità e senza impattare la continuità operativa. Le slitte sono ubicate frontalmente, dietro uno sportello di plastica che si chiude con la chiave fornita insieme all’unità. Il prodotto è dotato di due porte Gigabit Ethernet: le due interfacce possono essere configurate in modo autonomo con due indirizzi IP differenti oppure possono essere aggregate attraverso protocolli standard per raddoppiare la banda passante disponibile o per aumentare la disponibilità del NAS in caso di guasto a un’interfaccia del prodotto o a una delle porte a cui l’unità è attestata

Come si usano i NAS

NAS Ecco come gestire al meglio un NAS per tutte le nostre esigenze di rete

Avete comperato un NAS ma non sapete come sfruttarlo al massimo? Seguite il corso di LXP e diventerete i signori dei dischi di rete

I NAS (Network Attached Storage) sono dispositivi che offrono capacità di immagazzinamento dati attraverso una rete locale. Si tratta di prodotti concepiti per uffici e per organizzazioni

di piccole dimensioni dove sussiste la necessità di condividere una base dati comune con più utenti. Si tratta di un’ottima alternativa a soluzioni convenzionali composte da un server con Windows e Linux dotati di dischi integrati da condividere in rete. Il NAS permette infatti di avere il “disco” senza il “server”, riducendo il costo di acquisizione, i consumi elettrici, l’occupazione di spazio ma soprattutto i costi di gestione. Questi vantaggi sono stati apprezzati dal mercato che ha sancito il successo di questa categoria di prodotti inducendo l’ingresso di nuovi operatori e un continuo miglioramento in termini di qualità e di funzionalità offerte. Recentemente il target per questi prodotti si è ampliato, includendo utenti domestici dotati di molti dispositivi connessi e con elevati volumi di dati da gestire e organizzazioni più grandi dove non è giustificabile l’implementazione di reti dedicate, magari in fibra, per lo storage (soluzioni SAN). Vi sono perciò prodotti dal prezzo accessibile all’utenza privata come soluzioni avanzate dal costo di migliaia di euro concepite per imprese di medie dimensioni. La scelta del prodotto idoneo alle proprie necessità non è semplice in un contesto così florido di soluzioni. L’approccio migliore consiste nell’individuazione di un marchio di qualità per poi selezionare il prodotto più adatto dal listino ufficiale. È meglio evitare soluzioni improvvisate quando si parla di memorizzare dati in maniera affidabile. Per questo articolo si

PARTE 1

L’unità TS5200D con la slitta hot-plug estratta

Silvio Umberto Zanzi [email protected]

L’autore

LXP_132_72_76_tut_nas 72 06/08/13 14:31

Page 75: Linuxpro 132 Agosto 2013

Tutorial Raspberry PiNAS TutorialTutorial Raspberry PiTutorial Xxxx

LINUX PRO 132 73

sullo switch. Questo dettaglio evidenzia la propensione professionale dell’unità, dimostrata ulteriormente dalla presenza di una porta seriale a cui collegare l’uscita dati di un UPS. In questo modo il NAS può ricevere la notifica dell’entrata in funzione del gruppo di continuità in conseguenza della caduta di tensione. In questo modo il NAS può iniziare uno shutdown controllato prima che la carica dell’UPS esaurisca, scongiurando la perdita o la corruzione dei dati. La dotazione di porte viene completata dalla presenza di quattro connettori USB, due in standard 2.0 e due in standard 3.0. L’unità è corredata di un piccolo display LCD di due righe dove sono visualizzate alcune informazioni sull’unità. Sopra il display sono posizionati alcuni LED che indicano l’attività delle interfacce di rete e segnalano eventuali stati di errore. Una nota molto importante riguarda la ventilazione. I due dischi rigidi e l’elettronica di controllo generano calore che viene smaltito attraverso una ventola che espelle l’aria verso il lato posteriore dell’unità. I progettisti hanno riposto attenzione alla rumorosità del prodotto visto che il funzionamento ordinario della ventola è pressoché impercettibile. Portando l’orecchio in vicinanza dell’oggetto si percepisce il movimento dell’aria ma si tratta di un rumore estremamente basso e non fastidioso (a stento lo si può definire rumore). Già a due passi dall’unità non si sente nulla. Il NAS può quindi essere utilizzato anche in un ambiente domestico e rimanere acceso di notte senza che ci si accorga della sua presenza.

Configurare generaleLa procedura standard di installazione del prodotto prevede l’utilizzo del CD-ROM presente all’interno della confezione. Questo contiene un wizard per le operazioni iniziali, la più importante delle quali è l’impostazione dell’indirizzo IP della porta 1 tramite selezione manuale oppure per assegnazione automatica attraverso DHCP. Il display frontale dell’unità mostra comunque l’indirizzo IP impostato sulle porte, nel caso vi siano dubbi sul valore impostato. Il wizard è concepito per sistemi operativi Windows o Mac (disponibile eventualmente anche direttamente sull’App Store di OS X). Sarà quindi necessario reperire un computer dotato di uno di questi sistemi operativi se si desidera usare il software guidato. Se si vogliono invece svolgere tutte le operazioni di setup da un client Linux è necessario controllare sul display dell’unità l’indirizzo IP attivo e poi impostare il proprio client nella stessa sottorete con un indirizzo differente, lanciare il browser ed eseguire le configurazioni specifiche sfruttando il server Web integrato. Si consiglia di attivare un server DHCP sulla propria rete per fornire automaticamente un indirizzo all’unità per la fase di configurazione iniziale. I router per l’accesso a Internet, anche i modelli economici, dispongono di questa funzionalità e permettono di implementare facilmente il servizio. Con i NAS che non hanno un display che mostra l’indirizzo IP del dispositivo, si può sempre verificare nell’interfaccia di gestiore del router qual è l’indirizzo assegnato (o, in alcuni casi, l’IP del NAS è fisso e viene indicato nel manuale d’istruzione). L’accesso al pannello di configurazione è protetto da una schermata di login. La password di default per l’amministratore è “password”. Si può quindi proseguire con le operazioni di impostazione dell’unità. Il pannello di configurazione Web del prodotto è realizzato con uno stile logico e molto diretto. Chi ha familiarità di networking, di protocolli di rete di alto livello e di sistemi di storage non avrà difficoltà a configurare il prodotto. Si consiglia di procedere partendo dalla voce Gestione. Da questo pannello è possibile impostare una serie di parametri di base come il nome dell’unità, la lingua, l’ora locale, l’indirizzo della propria casella di posta elettronica per la consegna di allarmi e note informative sullo stato dell’unità, i parametri del server di posta, i log di sistema, i timer per la modalità di risparmio energetico,

È stato configurato un volume iSCSI denominato “iscsi-test1” da 40 Gbyte all’interno dello spazio complessivo disponibile sul NAS

la configurazione della comunicazione con l’UPS ma anche la possibilità di formattare o ripristinare l’unità. Sono interessanti le funzioni di ripristino. Si può per esempio salvare l’intera configurazione dell’unità su una chiave USB. In caso di crash catastrofico è possibile, quindi, ripristinare il sistema inserendo la chiave USB e attivando una specifica sequenza in fase di boot per ritrovarsi l’unità configurata allo stato precedente al crash. Naturalmente sarà necessario ripristinare anche i dati preventivamente copiati su un disco esterno collegato a una delle tante porte USB del TeraStation. È possibile anche azzerare completamente l’unità e riportarla alle impostazioni di fabbrica distruggendo configurazioni e dati oppure ripristinando le opzioni di fabbrica pur mantenendo i file. Sempre dal pannello di gestione è possibile configurare quali messaggi devono essere visualizzati sul display e se si desidera abilitare degli allarmi sonori in casi di eventi particolari, per esempio surriscaldamento, errori sui dischi, problema alle ventole o una caduta di tensione rilevata dall’UPS. Tramite il menu Gestione si può controllare anche

Il TeraStation TS5200D è in grado di esportare i volumi configurati in un elevato numero di protocolli compatibili con Windows, Mac e UNIX

LXP_132_72_76_tut_nas 73 06/08/13 14:31

Page 76: Linuxpro 132 Agosto 2013

Tutorial NAS NAS Tutorial

74 LINUX PRO 132

sezione si può avere visibilità dei dischi installati all’interno dell’unità. Il primo pulsante da cliccare è RAID. Questo visualizzerà uno schema con la codifica RAID applicata. Il termine RAID è un acronimo per Redundant Array of Inexpensive Disks e indica la possibilità di combinare due o più dischi per sommare la capacità e/o ottenere forme di protezione. Esistono parecchie forme di codifica RAID, identificate da un numero, ognuna concepita con uno scopo ben preciso. Di seguito sono elencati gli schemi RAID più diffusi: RAID 0 (striping) – Somma della capacità di due o più dischi

attraverso la distribuzione dei blocchi dati sui dischi. Il RAID 0 incrementa le prestazioni in fase di lettura e scrittura. Se si usa infatti un RAID con quattro dischi, per esempio, la scrittura di un blocco di dati sarà diviso sulle quattro unità, comportando un tempo di scrittura di circa un quarto. In caso di guasto a un disco si perdono però tutti i dati. RAID 1 (mirror) – I dati sono scritti in modo trasparente

e automatico su due dischi identici. In caso di rottura di un disco non si ha perdita di dati. Non viene apportato alcun incremento di prestazioni di accesso ai dischi. RAID 5 (striping con parità) – I dati sono distribuiti su due o più

la presenza di una versione aggiornata del firmware e ricevere una notifica automatica in caso sia rilasciata una nuova versione. Il sistema di controllo dell’unità è stato costruito in modo puntiglioso per quanto riguarda la comunicazione con l’amministratore. È molto importante configurare correttamente i dati del server di uscita SMTP nel pannello Gestione alla voce Notifica e-mail. Si sconsiglia di abbandonare questo pannello fino a quando il pulsante di test non farà recapitare la mail di prova alla propria casella di posta elettronica (o ai destinatari multipli che si possono configurare). Una volta completata la configurazione si deve ricordare di abilitare “l’interruttore” nell’interfaccia utente. Non basta infatti configurare l’opzione di notifica: bisogna anche attivarla manualmente. Una volta che la configurazione di questi aspetti basilari è conclusa è possibile proseguire con le attività di setup. I passaggi seguenti consistono nella configurazione dei dischi e nell’attivazione dei servizi che si desidera fornire alla rete locale attraverso l’unità TeraStation.

Gestione dei dischiPer proseguire con la configurazione dell’unità si deve accedere alla voce Unità del menu di configurazione Web del NAS. Da questa

1 La confi gurazione di iSCSIPer creare un volume iSCSI si deve accedere al pannello di amministrazione dell’unità, selezionare la voce Unità e poi cliccare il pulsante nero sulla destra della dicitura iSCSI. Compare una fi nestra con l’elenco dei volumi iSCSI confi gurati. Al primo ingresso la fi nestra è naturalmente vuota.

Passo passo Creare un volume iSCSI

2 Creare l’area iSCSIDalla fi nestra di Impostazioni iSCSI si deve premere il pulsante Crea volume e indicare nome e dimensione dell’area iSCSI. Si deve anche specifi care quale volume del TeraStation usare.

3 Restringere l’accessoSi consiglia di selezionare la voce Restrizioni di accesso per limitare l’accesso a particolari indirizzi e richiedere un’autenticazione. In caso contrario l’accesso all’area iSCSI così creata sarebbe accessibile a chiunque senza alcuna regolamentazione.

4 Monitorare le connessioniL’area iSCSI è creata e pronta all’uso. L’indicazione In standby segnala che nessun computer sta al momento impiegando l’area iSCSI. È possibile visionare la cronologia delle connessioni dal pulsante in basso a sinistra.

LXP_132_72_76_tut_nas 74 06/08/13 14:31

Page 77: Linuxpro 132 Agosto 2013

Tutorial NAS NAS Tutorial

LINUX PRO 132 75

dischi, come per il RAID 0. Si ha però un disco aggiuntivo utilizzato per gestire informazioni di parità. In caso di guasto a un disco non si ha perdita di dati. Le prestazioni sono incrementate per via dell’accesso parallelo su più dischi ma si ha un costo computazionale per il calcolo della parità. RAID 6 – Simile al RAID 5 ma con due dischi per la gestione

della parità. Si può in questo modo gestire il guasto a due dischi contemporaneamente senza perdere dati. Si ha un costo computazionale alto per la gestione della parità su due dischi e un costo economico per l’acquisto dei dischi di parità.Generalmente tutti i sistemi NAS sono dotati dei livelli 0, 1 e 5. Il livello 6 non è invece frequente nelle unità di fascia SoHo o nelle fasce professionali di tipo entry level. Questi schemi possono essere gestiti anche a livello software direttamente dal sistema operativo. In genere viene sconsigliato di adottare questa soluzione per via dell’alto overhead e per il relativo impatto sul sistema. Si demanda quindi la gestione RAID a schede dedicate inserite dentro il sistema su bus veloce. Questa pratica è comune nei server di fascia media e alta. Negli studi e in piccole organizzazioni diventa conveniente l’acquisto di un’unità di qualità come il Buffalo TeraStation, usato come “base” per questa serie di tutorial. L’hardware a bordo dell’unità è in grado di gestire gli schemi RAID senza comportare overhead sulle postazioni in rete che guadagneranno uno storage avanzato in modo del tutto trasparente. Il 5200D supporta il livello 0 e il livello 1. È possibile perciò sommare lo spazio complessivo dei dischi oppure creare un mirror con i due dischi e avere la sicurezza in caso di guasto a un disco. Non sono possibili codifiche RAID superiori come per esempio il diffuso livello 5 per via del fatto che l’unità è dotata di due slitte dischi. Il RAID 5 richiede infatti almeno tre dischi. Per utilizzare questo schema si deve acquistare un’unità NAS con almeno quattro slitte. In questo caso è possibile impiegare il livello 5, 6 e anche il livello 10. Il RAID 10 è considerato uno schema avanzato per ambienti di storage con un elevato numero di baie per dischi, per esempio attraverso unità di tipo enterprise basate su batterie di rack da 16 dischi rigidi. Il RAID 10 permette, infatti, di sommare la capacità di un numero elevato di dischi, incrementando

lo spazio complessivo e riducendo i tempi di accesso allo storage. Il tutto con garanzia di sicurezza in caso di rottura di un disco. Per farlo si abbina ogni disco del set con un ulteriore disco in mirror. In questo modo è possibile gestire la rottura di più dischi contemporanei, purché si tratti di un singolo disco del gruppo mirror. Questo sistema è costoso perché viene dedicato metà dello spazio alla duplicazione del contenuto dei dischi. Si hanno però prestazioni alte visto che il meccanismo è privo di schemi di parità, senza costi computazionali. Il RAID 10 è quindi il miglior schema per sommare lo spazio dei dischi, incrementare le prestazioni sullo storage e ottenere comunque l’affidabilità in caso di guasto. Per fruire di questo schema in ambito NAS è necessario dotarsi di un prodotto con un numero idoneo di slitte, come già detto. Ritornando alla configurazione dell’unità, attraverso il pulsante Raid è possibile visionare l’attuale schema in atto ed eventualmente distruggerlo, perdendo tutti i dati, per realizzare un nuovo schema. Si possono gestire anche le singole meccaniche, in questo caso attraverso il pulsante Unità. Si potranno smontare i volumi, verificare e controllare i dischi. L’unità TeraStation può essere programmata per eseguire una scansione pianificata del volume per controllarne l’integrità e correggere eventuali problemi. L’esito del processo e gli eventuali errori saranno segnalati a fine procedura attraverso una mail. Naturalmente dovrà essere stato configurato precedentemente un profilo SMTP tramite un server di posta presente sulla rete locale o su Internet. L’unità TeraStation è dotata anche di quattro porte USB, di cui due in standard USB 3.0. È possibile quindi avere spazi di memorizzazione ausiliari a supporto del volume nativo interno. La gestione delle funzioni basilari avviene attraverso il menu Disco USB.

Supporto iSCSILa soluzione NAS di Buffalo supporta il protocollo iSCSI, aprendo scenari di impiego avanzati. Questo protocollo è un’estensione “geografica” di SCSI, standard industriale nato negli anni ottanta come bus evoluto per gestire un pool massimo di sette dischi connessi a un cavo a trasmissione parallela. Il protocollo è stato aggiornato negli anni per supportare velocità di trasferimento sempre più elevate e per incrementare il numero di dischi collegabili al bus. SCSI è perciò sempre stato sinonimo di tecnologia avanzata e alta velocità. SCSI è ancora molto usato ma principalmente in soluzioni server di fascia media ed enterprise attraverso comunicazioni di tipo seriale per supportare le velocità richieste dal mercato. Certamente iSCSI è oggi la “varietà” più interessante del protocollo visto che permette di avere dischi e host adapter ubicati in un punto della rete, magari negli Stati Uniti, e le stazioni di lavoro attestate in un altro punto della rete, per esempio a Tokyo. Questi computer, definiti initiator, si connetteranno al target presente negli Stati Uniti e potranno accedere ai volumi, in modo esclusivo. Un volume potrà cioè essere attestato a un singolo computer dato che in caso contrario si avrebbe la corruzione dei dati, come se si volesse collegare un hard disk a due computer contemporaneamente.

Protocolli di condivisioneIl TeraStation, così come la maggior parte dei NAS presenti oggigiorno nei negozi, offre diversi protocolli per il filesharing in rete: SMB DFS AFP

FTP SFTP WebAccess NFS

Nelle prossime puntate di questa serie vedrete come usare tutti questi protocolli con la vostra Linux box.

L’unità è dotata di due porte di rete che possono essere combinate per aggregare la banda o per avere funzionalità di failover in caso di guasto a una delle porte

Nella modalità mirror (RAID 1) si ottiene la garanzia della continuità in caso di guasto di un singolo disco, a scapito del 50% della capacità complessiva. Nella modalità striping (RAID 0) si utilizza la capacità complessiva di entrambi i dischi, si hanno alte prestazioni ma non si ottiene alcuna garanzia in caso di crash di un singolo disco. La rottura di un disco cioè comporta la perdita di tutti i dati.

RAID: striping o mirror?

LXP_132_72_76_tut_nas 75 06/08/13 14:31

Page 78: Linuxpro 132 Agosto 2013

Tutorial NAS

76 LINUX PRO 132

a un controllo antivirus. Avere la protezione antivirus dentro al box permette di ridurre gli sforzi sistemistici a protezione dei file. Sempre in termine di protezione va citata la funzionalità di backup offerta dal TeraStation. Si possono programmare copie dei dati per esempio su un disco USB esterno connesso a una delle porte dell’unità. Se si dispongono di più unità TeraStation è possibile creare configurazioni per cui due box sono sincronizzati tra loro, implementando anche un meccanismo di failover. In caso cioè di guasto a un’unità subentra quella superstite a erogare le funzioni di condivisione agli utenti della rete. Sono funzionalità enterprise non disponibili in NAS economici o in prodotti di qualità inferiore. Queste funzioni sono configurabili attraverso il pulsante Backup.

Servizi di reteBuffalo ha integrato un certo numero di servizi all’interno del TeraStation. Alcuni sono del tutto comuni in dispositivi di questa classe come per esempio il DLNA e il server di stampa per stampanti USB eventualmente connesse alle porte del prodotto. Sono invece più originali i servizi iTunes, SqueezeBox, il server Web e il server MySQL. Il server Web permette di pubblicare pagine HTML e PHP direttamente sul box senza dover installare Apache sui propri computer. Basta indicare la porta e impostare il file php.ini. La cartella radice per il server Web viene configurata a piacimento dall’utente tra le cartelle create sul NAS. La presenza del server MySQL rende il prodotto estremamente interessante in quanto rende il box di Buffalo un piccolo motore database già configurato, idoneo per esigenze di piccole realtà. Tutte queste funzioni si configurano attraverso il pulsante Servizi. Il prodotto è in grado anche di svolgere funzioni BitTorrent o operare come server per telecamere di sicurezza. Un altro aspetto molto interessante è la possibilità di sincronizzare un volume creato su Amazon S3. Funzioni di tipo cloud sono molto rare in dispositivi di questa categoria. LXP

Se si dispone di una buona connessione, gli utenti non avranno alcuna percezione delle distanze in atto tra l’elaborazione e lo storage. Il TeraStation integra pienamente iSCSI e può diventare un target iSCSi accessibile via Internet oppure essere utilizzato all’interno di una comune rete locale. Per esempio se si utilizza un sistema di virtualizzazione si potrà utilizzare il NAS come area dove creare i volumi dei server virtuali. L’iSCSI è considerata la tecnologia entry level per la realizzazione di ambienti di virtualizzazione professionali. Questo scenario sarà esaminato nel prossimo articolo di questa serie. L’unità di Buffalo risulta particolarmente interessante in quanto permette di usare uno schema LVM (Logical Volume Manager) per dividere lo spazio complessivo in due aree, per esempio una parte dello spazio dedicato a iSCSI e la parte restante da usarsi come file server gestito dal NAS. Si potrà in questo modo avere delle aree file di gruppo, completamente gestite dal TeraStation e uno spazio iSCSI che sarà gestito per esempio da un ambiente come VMware. L’operazione di suddivisione avviene tramite il pulsante LVM della voce Unità. Una volta abilitata la funzione è possibile creare un volume della dimensione desiderata da dedicare alle funzioni NAS, tipicamente per funzioni di file sharing. La parte restante sarà invece gestita attraverso la voce iSCSI. Questa permette di creare volumi all’interno dello spazio. Ogni volume potrebbe per esempio essere il disco di sistema di una macchina virtuale. In fase di configurazione della macchina virtuale sarà sufficiente specificare questo target come disco. Naturalmente le sessioni iSCSI possono essere protette da autenticazione. Se il NAS è posizionato su Internet è fondamentale incapsulare il traffico iSCSI in una VPN per garantire la riservatezza.

Servizi NASIl TeraStation integra parecchi protocolli per lo scambio di file in rete quali i formati di sharing di Windows (SMB), Apple (AFP) e UNIX (NFS), più i protocolli FTP e l’accesso Web alle cartelle. Quindi i protocolli usati dalle tre piattaforme maggiormente utilizzate nel pianeta più l’universale meccanismo FTP. L’area dati può essere organizzata in cartelle. Per ogni cartella si può specificare quali protocolli sono supportati e se abilitare l’indicizzazione della cartella, se limitare la cartella alla sola lettura e specificare quali gruppi e utenti possono accedervi. Le cartelle saranno visibili normalmente tra le risorse di rete, utilizzabili come se facessero parte di un normale server connesso alla rete locale. A volte (come nel caso del NAS di Buffalo) acquistando un particolare abbonamento è possibile usare un motore antivirus integrato e fare in modo che le cartelle siano sottoposte

Il dispositivo è dotato di funzioni di replica verso altre unità analoghe in rete. È possibile implementare un meccanismo di failover dello storage con un investimento limitato

Il TeraStation può essere collegato alla porta dati di un UPS compatibile per conoscere lo stato dell’alimentazione e provvedere a uno shutdown controllato in caso di caduta dell’alimentazione

Nel prossimo numeroNel prossimo numero proseguirà la discussione sull’utilizzo dei dispositivi NAS avanzati con una panoramica dei protocolli di rete disponibili sui NAS. In particolare si analizzerà il protocollo iSCSI per esportare volumi verso sistemi server in grado di agire come endpoint e vedere lo spazio come unità disco da agganciare al sistema operativo. Questa funzionalità è molto utile in ambienti di virtualizzazione per creare dischi raw da connettere alle macchine virtuali.

LXP_132_72_76_tut_nas 76 06/08/13 14:31

Page 79: Linuxpro 132 Agosto 2013

CORRI IN EDICOLAANCHE SU IPAD

ADV_BBC_Science_207x285.indd 1 06/08/13 12:00

Page 80: Linuxpro 132 Agosto 2013

Concetti Concetti

qualcosa, semplicemente, aspetta. Ogni volta che viene scritta una nuova riga nell’input, il programma lo ripeterà in output. Ora, il nostro programma ha due modi per interagire con il resto del mondo, dobbiamo solo metterli insieme. Se chiamiamo il nostro programma con degli argomenti, vogliamo che lavori come nello scorso tutorial, cioè, concatenando i file tra di loro; se lo chiamiamo senza argomenti, vogliamo che lavori con le novità

di questo mese, cioè ripeta riga per riga l’input ricevuto dallo standard input. Possiamo farlo in modo molto semplice grazie a ciò che abbiamo visto finora: semplicemente controllate la lunghezza dell’array

sys.argv. Se è maggiore di 1, eseguite la versione del mese scorso, altrimenti quella di questo mese: if len(sys.argv) > 1: [mese scorso....]else: [questo mese....]

Semplicissimo. L’unica cosa interessante da notare è l’uso della funzione len(), questa funzione è inclusa in Python e può essere utilizzata su quasi ogni oggetto (stringe, tuple, liste) o mappa (dizionari), e in ogni caso vi dice quanti elementi sono presenti nell’oggetto. Esistono molte funzioni utili come questa, che potete vedere qui: http://docs.python.org/3/library/functions.html.

Scorrere argomenti e opzioniQuanto visto finora è un approccio molto semplificato, Python offre delle alternative molto potenti per sys.argv. Per dimostrarlo, vediamo di aggiungere due opzioni al nostro codice che modificheranno l’output generato dal programma. Potreste non esservene accorti, ma cat offre diverse opzioni. Noi andremo a implementare -E, che aggiunge un simbolo del dollaro alla fine di ogni riga, e -n, che mostra il numero di riga all’inizio di ogni riga. Per fare ciò, dobbiamo partire dalla creazione di un OptionParser. L’OptionParser è un oggetto speciale, incluso nel modulo optparse, che si occuperà di fare la maggior parte del lavoro per voi. Distingue autonomamente tra opzioni e argomenti, risparmiandovi molta fatica, inoltre si occupa di generare un help nel caso in cui il vostro programma venisse chiamato in modo scorretto o gli venisse passato --help, in questo modo: light@gonzo:~$ ./cat.py --helpUtilizzo: cat.py [OPZIONI]... [FILE]...Opzioni:

Python per tuttiCreare un clone di cat

Continua il nostro tour alla scoperta del linguaggio di programmazione Python per creare un clone del comando cat di UNIx

Lo scorso mese vi abbiamo mostrato come creare un semplice clone di cat utilizzando Python. Ora, senza ulteriori indugi, vediamo di approfondire

l’argomento. Fortunatamente, ormai conoscete tutto ciò che vi serve per interagire con lo standard input. In Linux, l’output e l’input sono trattati alla stregua di file: potete passare un file come argomento a un comando, o potete passare un input da shell come argomento, non importa cosa scegliete perché sostanzialmente sono la stessa cosa. Python funziona allo stesso modo. Tutto ciò di cui avete bisogno per lavorare con lo standard input è accessibile tramite la libreria sys, che se avete seguito lo scorso tutorial dovreste avere già incluso nel vostro progetto. Per prima cosa vediamo di scrivere un piccolo esempio per dimostrare come funziona: import sysfor riga in sys.stdin: print(riga, end=“”)

La prima riga importa il modulo sys. Le righe che seguono sono praticamente identiche a quelle che avevamo lo scorso mese. Invece di specificare il nome di un file, abbiamo indicato il nome di un oggetto, stdin, che si trova all’interno del modulo sys. Esattamente come un file, in Python lo standard input è un oggetto iterabile, quindi possiamo usare un ciclo for per scorrere ogni riga. Potreste chiedervi in che modo funziona, visto che lo standard input all’inizio è vuoto. Se eseguite il programma, lo vedrete. Quando avviate il programma, invece di scrivere

Il linguaggio Python include tutte le funzionalità necessarie per scrivere programmi utili. In questo esempio, potete vedere il metodo replace applicato a una stringa per rimuovere gli spazi bianchi, nel tutorial abbiamo utilizzato il metodo rstrip per raggiungere un obiettivo simile

“Python fornisce un’alternativa a sys.argv molto più potente”

PARTE 2

78 LINUx PrO 132

LXP_132_78_79_LXF168.code_concepts 78 05/08/13 16:53

Page 81: Linuxpro 132 Agosto 2013

Concetti Concetti

Python per tuttiCreare un clone di cat

Il sito Web di Python 3 offre un’eccellente documentazione delle funzioni e dei metodi disponibili. Se vi state chiedendo come funzioni qualcosa in Python, la documentazione all’indirizzo http:/docs.python.org/3/ è il primo posto dove cercare

-h, --help mostra questo messaggio ed esce -E Aggiunge $ in fondo alla riga -n Aggiunge il numero di riga

proprio come un programma vero! Per iniziare a utilizzare OptionParser, come prima cosa è necessario importare i componenti:from optparse import OptionParser

Potreste notare che questo import è un po’ differente da quelli visti finora; invece di importare l’intero modulo, abbiamo importato soltanto l’oggetto OptionParser. Ora, bisogna creare una nuova istanza dell’oggetto, aggiungere alcune opzioni con il metodo add_option, e passargli una stringa di utilizzo da mostrare:uso = “Utilizzo: %prog [OPZIONI]... [FILE]...”parser = OptionParser(usage=uso)parser.add_option(“-E”, dest=“showend”, action=“store_true”, help=“Aggiunge $ in fondo alla riga”)parser.add_option(“-n”, dest=“shownum”, action=“store_true”, help=“Aggiunge il numero di riga”)

La parte %prog nella stringa uso verrà sostituita dal nome del vostro programma. L’argomento dest specifica quale nome potrete utilizzare per accedere al valore di un argomento una volta che sarà stato parsato, mentre l’action definisce quale dovrebbe essere il suo valore. In questo caso, l’action store_true indica di impostare il valore di dest a True se l’argomento è presente o a False se non lo è. Potete trovare tutto quello che vi occorre nella documentazione a questo indirizzo: http://docs.python.org/3/library/optparse.html. Per finire, ora che avete configurato tutto, dovete soltanto parsare gli argomenti che vengono passati al vostro programma e assegnare i risultati in array: (opzioni,args) = parser.parser_args()

La variabile opzioni conterrà tutte le opzioni definite dall’utente, come -E o -n, mentre args conterrà tutti gli argomenti che rimangono fuori una volta esaminate le opzioni.

Potete chiamare queste variabili come volete, ma saranno sempre impostate in questo ordine, quindi fate attenzione a non confondervi scambiando i nomi delle variabili. Con il codice che legge gli argomenti completato, dobbiamo ora iniziare a implementare il codice che verrà chiamato quando un’opzione è impostata. In entrambi i casi, dobbiamo modificare la stringa di testo dell’output del programma, ciò significa che è necessario conoscere qualche funzione di editing delle stringhe presente in Python. Pensiamo all’opzione -E, tutto ciò che dobbiamo fare è sostituire il fine riga invisibile con il simbolo del dollaro seguito da Invio. La prima parte, rimuovere l’Invio esistente, può essere fatta utilizzando il metodo stringa.rstrip(), questo comando rimuove tutti gli spazi bianchi, all’estremità destra della stringa. Se passate una stringa a questo metodo come argomento, rimuoverà i caratteri della stringa invece degli spazi vuoti. Nel nostro caso, la scelta corretta sono gli spazi vuoti.

Completare il lavoroLa seconda parte del lavoro è semplicissima, basta cambiare la variabile end del comando print impostandola a $\n e il lavoro è quasi finito. Abbiamo detto quasi perché dobbiamo ancora scrivere un po’ di codice per controllare quali opzioni sono impostate così come se sono stati passati o meno degli argomenti. Il problema ora è che la logica deve essere

un pochino più complessa di quanto visto fin qui perché dobbiamo tenere conto di quante righe sono state stampate per implementare l’opzione -n. Esistono diversi modi per farlo, il prossimo

mese parleremo della programmazione a oggetti in Python e implementeremo questa funzione in una classe. Parleremo inoltre di una convenzione molto importante: la funzione main(). Nel frattempo, potete tenervi impegnati studiando il metodo stringa.format() e cercando di capire come potete aggiungere un numero all’inizio di ogni riga. LXP

“Non fate confusione ed evitate di mettere le variabili al contrario!”

LINUx PrO 132 79

LXP_132_78_79_LXF168.code_concepts 79 05/08/13 16:53

Page 82: Linuxpro 132 Agosto 2013

l’istruzione yield (una delle cose davvero più interessanti di Ruby in assoluto). Infine scopriremo come impacchettare il nostro codice in una gemma, per facilitarne la successiva installazione e condivisione fra i membri della comunità e gli utenti. Partiremo anche questa volta dal programma che abbiamo perfezionato il mese scorso, il bloc notes a riga di comando che ci permette di archiviare semplici note.

Nell’ultima puntata di questa serie impariamo qualcosa in più su moduli e mixin, blocchi e yield, e su come impacchettare e condividere il codice

Nelle precedenti puntate di questa serie abbiamo iniziato a usare Ruby, abbiamo imparato qualcosa in più sulla sua sintassi e sulle sue strutture,

organizzando il nostro codice secondo le convenzioni definite all’interno della comunità Ruby. Questo mese apprenderemo quindi qualcosa in più sui mixin (l’altro importante utilizzo dei moduli in Ruby) e sui blocchi, e impareremo a usare

Strutture dati e archiviazione

Alla fine del tutorial del mese scorso avevamo messo a punto un programma in grado di rileggere le note da un file, di stamparle sullo schermo e di aggiungerne una alla fine. Non eravamo però cancellare o modificare le note, dato che non venivano conservate in memoria. Per fare ciò occorre inserirle all’interno di una struttura, in modo da potervi fare riferimento dal programma. Ruby dispone delle strutture dati standard, tra cui hash e vettori: inizieremo nella maniera più semplice, inserendo le nostre note in un vettore dopo averle lette dal file (per usare un hash dovremmo aggiungere una chiave univoca, e né il titolo né il corpo garantiscono l’unicità).class Lettore attr_reader :blocconote def leggi blocconote = Array.new File.open(@file, ‘a+’) do |f| while riga = f.gets do nota = riga.split(‘,’) if nota.length != 2 puts “Problema: la nota contiene un numero di campidiverso da 2” next end blocconote << Nota.new(nota.first, nota.last).to_s end end blocconote.each {|x| puts x.to_s} end end

endIl metodo leggi crea un vettore e vi inserisce tutte le note lette usando l’operatore shovel (pala) <<<, che aggiunge un elemento alla fine del vettore, per poi stamparne sullo schermo il contenuto. Lanciate il programma: dovreste vedere qualcosa come...Nota: aaaaa, binNota: a, bNota: pong, ping

Il problema principale con questa versione del codice è che l’utente non ha nessun riferimento per indicare una nota. Sostituiamo la riga contenente blocconote.each con:blocconote.each_with_index {|valore, indice| puts “#{indice}: #{valore}”}

Non è necessario chiamare esplicitamente il metodo to_s: dato che ci riferiamo a uno dei nostri oggetti di tipo Nota all’interno di un contesto stringa, Ruby userà automaticamente il metodo to_s più appropriato (già che ci siamo possiamo modificare il nostro metodo to_s per eliminare la stringa ”Nota:” all’inizio). Lanciate di nuovo il programma: ora le vostre note dovrebbero avere un indice associato:0: aaaaa, bin1: a, b2: pong, ping

Come facciamo però effettivamente a usarli per indicare una nota specifica? Ancora più grave: se iniziate a fare qualche esperimento noterete che per accedere al vettore delle note occorre avere creato un’istanza della classe Lettore e aver chiamato il suo metodo leggi. Diverse istanze della classe avranno al loro interno differenti versioni del vettore, magari vuote o con diverse versioni delle note.

Quando usate l’istruzione Foo.new in Ruby viene chiamato il metodo Foo.initialize. Finora nel nostro codice abbiamo visto solo metodi initialize() privi di argomenti e uno con un argomento (Lettore.initialize(file)). Se date l’istruzione Lettore.new senza argomenti Ruby dà un errore. E se volessimo impostare un valore di default? Nel nostro codice il

default è impostato nella classe Opzioni, ma potremmo spostarlo. Saremmo in grado di specificare un file per il blocco note oppure di chiamare initialize senza argomenti per usare il valore di default. Ruby ha un modo per farlo senza ricorrere a due costruttori distinti:def initialize(file = “blocconote.txt”) @file = file

endVerrà usato il contenuto della variabile passata come argomento quando è presente Lettore.new(“file.txt”) e blocconote.txt quando non è presente. Si può anche usare una costante definita all’interno del file prima della definizione del metodo (def initialize(file = BLOCCONOTE_DEFAULT)).

Inizializzazione flessibile

Ruby

Moduli, blocchi e gemmeModuli, blocchi e gemmePARTE 3

80 LINUx PRO 132

LXP_132_80_84_LXF170.code_ruby 80 06/08/13 14:31

Page 83: Linuxpro 132 Agosto 2013

LINUx PRO 132 81

puts “Problema: la nota contiene un numero di campi diverso da 2” next end ArchivioNote.instance.aggiungi(Nota.new(nota.first, nota.last)) end end ArchivioNote.instance.stampa end end

def scrivi File.open(@file, ‘w’) do |f| ArchivioNote.instance.vettore_note.each { |x| f.puts(x)} end end

def stringa_totale_note totale_note = ArchivioNote.instance.vettore_note.length “Totale note: #{totale_note}” end

endIl metodo leggi inserisce tutte le righe del file all’interno del vettore @vettore_note nella classe ArchivioNote, poi le stampa sullo schermo. Il metodo scrivi, che permette di salvare tutte le note sul file (dopo averle modificate), sovrascrivendo il contenuto presente, accede anch’esso allo stesso vettore della classe ArchivioNote. Infine anche il metodo stringa_totale_note fa uso dello stesso vettore per calcolare il numero totale delle note. All’interno della classe ArchivioNote abbiamo chiamato il metodo Nota.modifica, quindi dobbiamo definirlo:class Nota def modifica puts “Il titolo è #{titolo}: inserire il nuovo titolo o Invio” nuovo_titolo = gets.chomp if (nuovo_titolo != “”) @titolo = nuovo_titolo end puts “Il corpo è #{@corpo}: inserire il nuovo corpo o Invio`” nuovo_corpo = gets.chomp if (nuovo_corpo != “”) @corpo = nuovo_corpo end return self end

endAnche in questo caso il codice è estremamente semplice. Se l’utente ha inserito un nuovo titolo o un nuovo corpo per la nota modifichiamo il corrispondente valore all’interno dell’oggetto Nota e alla fine restituiamo la Nota stessa. All’interno del metodo ArchivioNote.modifica il valore restituito viene sostituito a quello preesistente all’interno del vettore delle note. Infine dobbiamo utilizzare tutto questo all’interno dell’Esecutore e delle Opzioni. Cominciamo da quest’ultima classe:class Opzioni # Il resto del codice non cambia. attr_reader :blocconote, :aggiungi, :leggi, :modifica,

SingletonIl problema è che ogni volta che create un nuovo oggetto Lettore generate anche un vettore contenente le note, cosa che rende impossibile essere certi che vi state riferendo sempre al medesimo vettore (o che abbia delle note al suo interno). Quello che invece ci serve è una classe di tipo Singleton, che può essere istanziata una sola volta. Per fortuna Ruby mette a disposizione un modulo per questo scopo. Creiamo quindi una classe ArchivioNote di tipo singleton, da affiancare alla classe Lettore, e spostiamo parte delle funzionalità di quest’ultima al suo interno:require ‘singleton’module Blocconote class ArchivioNote include Singleton attr_accessor :vettore_note def initialize @vettore_note = Array.new end def aggiungi(nota) @vettore_note << nota end def modifica(indice) nuova_nota = @vettore_note[indice].modifica @vettore_note[indice] = nuova_nota end def cancella(indice) @vettore_note.delete_at(indice) end def stampa @vettore_note.each_with_index{|valore, indice| puts “#{indice}: #{valore}”} end endend

Notate come tutto sembri chiaro e semplice: è spesso un segno che il codice sta facendo la cosa giusta. La lettura verrà eseguita ancora nella classe Lettore (riportata più sotto), ma questa nuova classe conterrà i dati letti dal file e permetterà alle altre classi di accedervi.Facciamo più o meno le stesse cose che facevamo con il vettore all’interno della classe Lettore. La magia è dovuta alla riga include Singleton. Fa in modo che la nostra classe usi il modulo Singleton, un esempio di come impiegare un modulo di Ruby come mixin per fornire un meccanismo di ereditarietà. Potete consultare il box nella pagina seguente per saperne di più. Il modulo Singleton, tra le altre cose, disabilita il metodo new() e aggiunge alla classe il metodo instance(). Per utilizzare la classe dovremmo crearne un’istanza, ma il metodo new() è ora privato, quindi inaccessibile alle altre classi e agli altri moduli: la chiamata ArchivioNote.new genera un errore al momento dell’esecuzione. Tutto questo per garantire che esista una, e solo una, istanza della classe. Per accedere alla classe occorre usare il metodo statico instance(), che restituisce l’unica istanza esistente. La classe Lettore si presenta quindi così:class Lettore

def leggi File.open(@file, ‘a+’) do |f| while riga = f.gets do nota = riga.split(‘,’) if nota.length != 2

Ruby

PROdentro il

Codice d’esempio

LXP_132_80_84_LXF170.code_ruby 81 06/08/13 14:31

Page 84: Linuxpro 132 Agosto 2013

Ruby

:numero_modifica def parse(argv) @modifica = false OptionParser.new do |opts| opts.on(“-m”, “--modifica NUMERO”, Integer, “Modifica una nota specifica”) do |numero| @modifica = true @numero_modifica = numero end end end end

Ora aggiungiamo all’interno della classe Esecutore il codice che usa la nuova opzione:

class Esecutore

attr_reader :opzioni

def esegui

lettore = Lettore.new(@opzioni.blocconote)

# Il resto del codice per l’analisi delle opzioni non cambia.

Se Ruby dà un errore del tipo LoadError: cannot load such file -- miofile, verificate che tutti i file siano elencati nell’attributo s.files della gemspec. Se usate il comando git ls-files accertatevi di aver inserito tutti i file sotto git!

Tip

Finora nel nostro codice abbiamo usato i moduli solo per sfruttare il relativo spazio dei nomi namespace. La classe ArchivioNote, che include il modulo Singleton, ne illustra il loro secondo scopo: comportarsi come mixin. Una maniera di pensare i moduli consiste nel vederli come fornitori di caratteristiche, mentre le classi forniscono cose. Dato che le cose posso avere delle caratteristiche, le classi possono includere i moduli e accedere alle loro caratteristiche (cioè metodi e variabili). Tutto questo è dimostrato dalla classe ArchivioNote. La riga include Singleton significa che ArchivioNote include il metodo instance(), il nuovo metodo privato new() e gli altri metodi, riscritti o del tutto nuovi, che fanno funzionare il pattern Singleton. Un altro esempio potrebbe essere il seguente: supponiamo di volere due tipi differenti di note, uno per note modificabili, l’altro per note non modificabili. Potremmo impostare le cose così: » un modulo Modificabile che descrive i vari metodi

che possono essere applicati ad una cosa Modificabile » una classe Nota con metodi e variabili che si applicano alle note (a tutte, sia che siano modificabili, sia che non lo siano) » una classe NotaModificabile che è una sottoclasse della classe Nota e che include il modulo Modificabile. In Ruby, come in altri linguaggi, le sottoclassi possono essere pensate come “specializzazioni” delle loro classi genitore. La classe si presenterebbe così:class NotaModificabile < Nota include Modificabile # Qui ci va il resto della classeend

NotaModificabile erediterebbe i metodi di Modificabile e Nota e potrebbe anche ridefinirli per farne una versione sua. Occorre notare, però, che le classi non possono ereditare le variabili. Le variabili di istanza in Ruby sono create quando viene loro assegnato per la prima volta un valore. Se una variabile di istanza

usa un metodo ereditato che assegna un valore a una variabile, in quel momento acquisirà la sua propria versione della variabile. Per esempio, NotaModificabile potrebbe ereditare il metodo modifica_titolo, che assegna la variabile @titolo. Ma questa variabile non ha nulla a che fare con la corrispondente variabile di istanza nella classe genitore. Un’altra cosa importante a proposito dei moduli è che non possono venire istanziati. Solo una classe può essere istanziata. Questo significa che, anziché usare Singleton, potreste scrivere un modulo che contiene una classe che si comporta come un singleton e che contiene variabili e metodi.Il modulo Singleton rimane però la maniera migliore per avere una classe che implementa il relativo pattern: è stato pensato apposta per questo scopo. Fate attenzione quando esaminate del codice Ruby, cercando di scoprire esempi di moduli usati come mixin. Ispiratevi a questi esempi per rendere il vostro codice molto più flessibile e facile da comprendere.

Moduli, classi e mixin

Tutto su blocchi e yield

if @opzioni.modifica

lettore.leggi

if @opzioni.numero_modifica >=

ArchivioNote.instance.vettore_ note.length

puts “Non esiste una nota con questo numero”

return

end

ArchivioNote.instance.modifica(@opzioni.numero_modifica)

lettore.scrivi

end

end

end

L’unica cosa degna di nota è la gestione degli errori: dobbiamo verificare che la nota corrispondente al numero passato dall’utente esista all’interno del vettore. Provate a dare il comando ruby bin/blocconote -l per vedere le note già presenti nel file e poi ruby bin/blocconote -m 2 per modificare la nota con indice 2. Tutto dovrebbe funzionare come ci aspettiamo. La classe Lettore e la classe ArchivioNote potrebbero essere fuse in un’unica classe di tipo singleton: provare a modificare voi stessi il codice.

Abbiamo usato i blocchi in più occasioni all’interno del nostro codice, ma senza comprendere bene quello che facevamo. Proviamo perciò a usare un blocco con un yield per capire quello che succede dietro le quinte. I blocchi e l’istruzione yield sono tra le cose più potenti di Ruby, vale perciò la pena di fare uno sforzo per comprendere come funzionano. Cominciamo con un blocco di codice molto semplice:def il_mio_primo_blocco puts “Inizio blocco...” yield puts “...fine blocco”endil_mio_primo_blocco {puts “Ciao”}

Se eseguite questo codice dovrete ottenere sullo schermo Inizio blocco... Ciao...fine blocco

Semplicemente l’istruzione yield sputa fuori quello che viene passato all’interno delle parentesi graffe. Può anche trattarsi di più di una riga. Fin qui tutto bene, ma nel codice abbiamo visto dei blocchi che usano uno o più parametri (ad esempio il blocco associato a File.open). Come va scritto un blocco che accetta un parametro?def cose_con_cinque yield 5endcose_con_cinque {|x| puts 3 * x}

Questo frammento di codice stampa 15. Se sostituite 15 / x a 3 * x all’interno del blocco otterrete 3. Provate ora questo:def cose_con_cinque_e_dieci yield 5 yield 10endcose_con_cinque_e_dieci {|x| puts 3 * x}

82 LINUx PRO 132

LXP_132_80_84_LXF170.code_ruby 82 06/08/13 14:31

Page 85: Linuxpro 132 Agosto 2013

Ruby

Viene stampato 15 e poi 30. Quello che accade corrisponde al seguente pseudocodice:cose_con_cinque_e_dieci: puts 3 * 5 puts 3 * 10

Ogni volta che all’interno del blocco è presente yield, alla variabile x viene assegnato il valore che segue l’istruzione, nel nostro caso prima 5 e poi 10, e poi viene eseguito il blocco. L’istruzione yield esegue il codice scritto nel blocco, ma all’interno del contesto del metodo in cui è inserita. Ora siamo in grado di scrivere il metodo ArchivioNote.fai_su_tutte, che permetterà di modificare una dopo l’altra tutte le note, e il metodo Nota.modifica_titolo come test. Aggiungeremo anche un’opzione all’Esecutore per utilizzare i due metodi:class ArchivioNote def fai_su_tutte i = 0 while @vettore_note[i] nuova_nota = yield @vettore_note[i] @vettore_note[i] = nuova_nota i += 1 end end end class Nota def modifica_titolo(titolo) @titolo = titolo return self end end class Esecutore def esegui # Stesso codice di prima... if @opzioni.tutte lettore.leggi ArchivioNote.instance.fai_su_tutte do |n| n.modifica_titolo(@opzioni.tutte_titolo) end lettore.scrivi end end end

end

Attenzione: è necessario aggiungere un’opzione tutte alla classe Opzioni: accetta come parametro una stringa che inserisce come titolo in tutte le note, sostituendo il titolo esistente. La sintassi è la stessa delle altre opzioni, per i dettagli potete vedere il codice sul DVD. Ora, Esecutore.esegui chiama il metodo fai_su_tutte del nostro singleton ArchivioNote e applica il metodo modifica_titolo alla variabile n. fai_su_tutte usa un ciclo while per assegnare successivamente a n ciascun elemento del vettore @vettore_note, usando l’istruzione yield. Un altro modo di vedere la cosa consiste nell’immaginare che fai_su_tutte passi una nota per volta a Esecutore.esegui e la sostituisca alla variabile n in questo modo: nuova_nota = @vettore_note[i].modifica_titolo(@opzioni. tutte_titolo) Il metodo fai_su_tutte esegue poi un altro paio di righe di codice prima di passare al ciclo successivo. Si comporta come un iteratore. In effetti, dato che @vettore_note è un vettore, e dato che i vettori hanno già un metodo che funziona come iteratore. chiamato each, possiamo ulteriormente semplificare il codice:def fai_su_tutte i = 0 @vettore_note.each do |n| nuova_nota = yield n n = nuova_nota end end

Questa volta abbiamo annidato uno yield all’interno di un blocco: fai_su_tutte usa esso stesso un blocco per accedere a ciascun elemento di @vettore_note e poi lo passa al blocco che si trova in Esecutore.esegui. Molto elegante, anche se forse un po’ difficile da comprendere all’inizio. Ok! Modificato il codice, provate a dare il comando ruby bin/blocconote -t NULLA: verranno modificati i titoli di tutte le note e sostituiti con la stringa NULLA. Potete anche pensare a qualche altro metodo simile che si applichi a tutte le note, ad esempio uno per aggiungere una stringa alla fine del corpo della nota o addirittura un metodo interattivo che permetta di modificare ciascun titolo uno per volta. Blocchi e yield sono uno degli aspetti più potenti di Ruby quindi continuate a sperimentare con essi e cercate degli esempi di utilizzo all’interno delle altre classi con cui avete a che fare. Noterete come compaiano pressoché dovunque e questo vi aiuterà ad abituarvi alla loro struttura e al loro uso.

Distribuire il codice con le gemmeUno volta che siete riusciti a produrre un pezzo di codice funzionante potreste avere il desiderio di condividerlo con la comunità Ruby. La maniera standard per farlo consiste nel creare una gemma. Probabilmente ne avete già usate: si tratta in effetti di pacchetti per Ruby, che possono essere gestiti molto facilmente con RubyGems. Fa parte dell’installazione standard di tutte le versioni più recenti di Ruby, quindi non dovrete fare altro che iniziare a usare le gemme. I comandi standard per gestire gemme già esistenti sono:gem install miagemmagem uninstall miagemmagem list --local # elenca tutte le gemme installategem list --remote # elenca tutte le gemme disponibili

Come si fa a creare una nuova gemma? Abbiamo già dato al codice del nostro blocco note una struttura compatibile con quella di una

gemma, con le directory bin/, lib/ e test/. Mancano però ancora un paio di cose prima che possiamo impacchettare il tutto in una gemma. Per prima cosa è buona norma avere un blocconote.rb nella directory lib/ che semplicemente carica gli altri file della libreria:require ‘blocconote/nota’require ‘blocconote/archivio_note’require ‘blocconote/opzioni’require ‘blocconote/lettore’require ‘blocconote/esecutore’

Questo aiuta a garantire che i namespace funzionino correttamente e che nessuno interferisca con qualcun altro. Dobbiamo anche riscrivere bin/blocconote in modo da renderlo compatibile con la struttura della gemma:#!/usr/bin/env ruby

LINUx PRO 132 83

LXP_132_80_84_LXF170.code_ruby 83 06/08/13 14:31

Page 86: Linuxpro 132 Agosto 2013

Ecco cosa succede lanciando i test con Rake: ci tocca riscrivere la test suite...

Ruby

Rake è l’equivalente Ruby del programma make di UNIx e lavora in modo analogo. È utile per automatizzare il processo di creazione delle gemme. Anche la gemma Bundler (disponibile dando il comando gem install bundler) può aiutarvi a costruire una gemma ben strutturata. Se partite da zero potete usare Bundler per creare le directory in cui lavorare, compreso un repository git nuovo fiammante per i sorgenti della gemma. Se invece avete già realizzato a mano la gemma, come abbiamo fatto sopra, potete limitarvi a usare Rake per automatizzarne l’installazione con il seguente Rakefile:require “budler/gem_tasks”

Fatto questo il comando rake install creerà e installerà la vostra gemma. Gli altri task

di Bundler installati automaticamente sono build (che crea la gemma) e release (che assegna un tag ai sorgenti della gemma, fa un push su GitHub e spedisce la gemma a https://rubygems.org/. Accertatevi che sia davvero pronta per essere rilasciata pubblicamente prima di farlo!) È anche possibile configurare Rake per fargli gestire i test. Una maniera per farlo è aggiungere queste righe al Rakefile:require ‘rake/testtask’Rake::TestTask.new do |t| t.libs << “test” t.test_files = FileList[‘test/test*.rb’] t.verbose = trueend

Date poi il comando rake test per eseguire tutto quello che si trova in test/test.

Rake e Bundler

begin require ‘blocconote’rescue LoadError require ‘rubygems’ require ‘blocconote’endesecutore=Blocconote::Esecutore.new(ARGV)esecutore.esegui

La struttura di controllo begin/rescue/end in questo caso evita

di eseguire il require di RubyGem in modo che, se qualcuno

non sta già usandolo per gestire il percorso di ricerca dei require,

non lo obblighiamo a farlo. È però ragionevole caricarlo nel blocco

rescue perché in quel caso vuole dire che non abbiamo trovato

la gemma nel percorso di caricamento, qualsiasi sia il sistema

di gestione usato dall’utente. La nostra gemma richiede un numero

di versione e le best practice suggeriscono di conservarlo nel file

lib/blocconote/version.rb:

module Blocconote VERSION = “0.0.1” endPoi dobbiamo scrivere una gemspec, blocconote.gemspec,

che va posta nella directory di livello superiore del nostro modulo.

Una gemspec contiene le specifiche del modulo, con una lista

di attributi, per la maggior parte opzionali. Gli attributi obbligatori

sono date, name, summary, e version. platform e require_paths sarebbero anch’essi obbligatori, ma entrambi hanno

dei valori di default che funzionano nella stragrande maggioranza

dei casi, quindi si possono omettere. Ecco una breve gemspec

per la nostra gemma:

lib = File.expand_path(‘../lib’, __FILE__)$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)require ‘blocconote/version’Gem::Specification.new do |s| s.name = ‘blocconote’ s.version = Blocconote::VERSION s.date = ‘2013-02-10’ s.summary = “Blocco note” s.description = “Una gemma blocco note che contiene note di una sola riga” s.authors = [“Juliet Kemp”] s.email = ‘[email protected]

s.files = `git ls-files`.split(“\n”) s.test_files = `git ls-files test/*`.split(“\n”) s.executables = “blocconote” s.homepage = “”end

Le righe iniziali permettono di trovare il file contenente il numero

di versione. Per gli altri attributi potete trovare dettagli nella

documentazione di RubyGem. Uno molto usato consente

di specificare le dipendenze runtime della gemma, ma, dato

che l’unica libreria esterna usata dalla nostra è OptionParser,

che fa parte dell’installazione standard di Ruby, non ci serve.

Git è caldamente raccomandato per tenere traccia dei file

che compongono la gemma senza dover inserire manualmente

la lista dei nomi nell’attributo files (alcuni strumenti per la gestione

delle gemme addirittura non funzionano affatto se non c’è

un repository git, quindi facciamo particolare attenzione),

ma nel nostro caso poteva andare bene anche una semplice lista.

I file non presenti nella lista non sono accessibili alla gemma, quindi

se non ci sono tutti quelli necessari al suo funzionamento si avrà

un errore in fase di esecuzione. È anche buona pratica scrivere

un file README.md che illustra l’utilizzo della gemma: eccone

un brevissimo esempio:

# Blocconote## Installationgem install blocconote## Usagerequire ‘blocconote’‘blocconote -h’ per avere informazioni sulle opzioni da riga di

comando.Di solito il file contiene informazioni sulla API, ma la nostra gemma è progettata per essere usata dalla riga di comando piuttosto che da un altro pezzo di codice Ruby. Infine possiamo creare e installare la gemma. gem build blocconote.gemspecgem install ./blocconote-0.0.1.gem

Dovreste ora essere in grado di dare il comando blocconote -l e vedere sullo schermo tutte le note presenti nel vostro file (se avete cambiato directory ricordatevi di specificare il percorso del file, altrimenti ne verrà creato uno nuovo vuoto). Ora siete quindi in grado di contribuire con il vostro codice impacchettato in gemme alla comunità Ruby. LXP

nuova_nota = @vettore_note[i].modifica_titolo(@opzioni.tutte_titolo)

84 LINUx PRO 132

LXP_132_80_84_LXF170.code_ruby 84 06/08/13 14:31

Page 87: Linuxpro 132 Agosto 2013

Digital Camerail tuo assistente fotografiCo

LEGGILO ANCHE SU FACEBOOK

www.facebook.com/digitalcameraitaly

Disponibile nella tua edicola e anche su iPad e iPhone

min_dcm_207x285.indd 1 06/08/13 12:05

Page 88: Linuxpro 132 Agosto 2013

È finalmente arrivato! Il nuovo sistema operativo firmato da Mozilla e basato sul kernel Linux è pronto. Tutti a caccia di device!

Il mondo mobile è open: benvenuto Firefox OS!

86 LInux pro 132

Alberto Bottarini

L’autore

Firefox OS Firefox OS

Questo è lo schema dei tre componenti nei quali è strutturato Firefox OS. Si notano Gonk composto da kernel, driver e librerie, Gecko e le sue Web API e infine il livello applicativo che ospita Gaia

Da qualche anno l’attenzione dei principali investitori mondiali in ambito tecnologico consumer si è spostato sempre di più verso il mondo mobile. poteva una delle

nostre aziende preferite rimanere inerme di fronte a tutto questo cambiamento? La risposta è ovviamente no! Firefox OS nasce dal progetto Boot to Gecko (B2G) che si poneva come obiettivo quello di realizzare un sistema operativo completamente open basato su standard Web e che gestisse tutte le applicazioni, anche quelle di sistema, tramite HTML, JavaScript e CSS, proprio come una applicazione Web. B2G trasforma il vostro dispositivo in una sorta di mega browser, all’interno del quale è però

possibile eseguire qualsiasi operazione considerata “nativa” come ad esempio configurare la connettività o visualizzare lo stato della batteria. Firefox oS porta tutto questo in ambito mobile offrendosi di fatto come alternativa davvero open ai tre big del momento (ioS, Android, Windows phone) e strizzando gli occhi a tutti gli sviluppatori che ritrovano lo stack tecnologico che da anni utilizzano per sviluppare applicativi su Web. Grazie alle nuovissime API HTML 5 sarà infatti possibile controllare tutti i componenti hardware direttamente dal motore JavaScript, cosa al momento impensabile nell’ambito dei browser tradizionali che fungono da sandbox alquanto limitata verso le funzionalità della macchina ospitante. Molte di queste ApI sono state sviluppate ad hoc da Mozilla stessa e sono in fase di standardizzazione dagli enti appositi (W3C in primis). Le applicazioni di Firefox oS sono quindi delle vere e proprie applicazioni Web, installabili sia attraverso i canali ufficiali (Marketstore - una sorta di Google play o di Apps Store) sia navigando su siti che offrono questa funzionalità. Il vantaggio di offrire un’installazione tramite Marketstore riguarda il livello di sicurezza offerto dall’applicazione e quindi dei diritti che essa potrà disporre.

Una breve storia L’idea iniziale sulla quale Boot to Gecko (e poi Firefox oS) è sorto risale al 25 luglio 2011 grazie a un direttore di ricerca di Mozilla, il dottor Andreas Gal. La sua idea era appunto quella di riempire le lacune che esistevano tra le competenze degli sviluppatori Web e i requisiti imposti dai vari SDK dei principali sistemi operativi mobile dell’epoca. un anno dopo il progetto acquista il suo nome attuale. In questo periodo, oltre a essere resi pubblici i primi screenshot, si avvicinano i primi partner del progetto tra i quali spicca sicuramente l’italianissima Telecom, la spagnola Telefònica (quinta azienda di telecomunicazioni al mondo come numero mercato) e Deutsch Telekom (la più grande azienda di telecomunicazioni europea). Qualche mese fa Mozilla annuncia, durante l’ultimo Mobile World Congress, la prima versione stabile, la 1.0 e il piano di commercializzazione che partirà dal Sud America e si sposterà in seguito anche in Europa.

Cosa si nasconde dentro Firefox OSCome qualsiasi componente software che si rispetto, anche Firefox oS è stato sviluppato a strati questo per favorire lo sviluppo, la manutenzione e la scalabilità dell’intero progetto. Firefox oS può essere quindi inteso come una pila di 3 oggetti che, partendo dal basso, sono:

Gonk - rappresenta il cuore del sistema: consiste in un kernel Linux dedicato e un layer di astrazione hardware (HAL) per permettere al software di interagire con i diversi device. Gecko accede direttamente allo stack di funzionalità telefoniche e le espone, insieme a tutte le altre

LXP_132_86_87.tut_firefox 86 07/08/13 17:08

Page 89: Linuxpro 132 Agosto 2013

LInux pro 132 87

Geeksphone, il telefono degli sviluppatoriLa creazione di applicazioni per Firefox oS, ha due grandi pregi: la semplicità, poiché non si deve imparare un linguaggio nuovo o difficile ma bastano HTML5/CSS/JavaScript e le ApI del sistema; la facoltà di scegliere come distribuire le proprie app, tramite il Firefox Marketplace, il proprio sito Web o qualunque altro store basato sulla tecnologia aperta di Firefox. A questo si aggiunge il fatto che la maggior parte delle app sviluppate per Firefox oS dovrebbero funzionare anche sotto Android, a patto di usare il browser Firefox. Dal punto di vista degli strumenti, per sviluppare app per Firefox oS esiste un simulatore che si integra nel browser Firefox (cercate Firefox OS Simulator sul sito degli add-on di Firefox) e che consente ai programmatori di provare subito il codice scritto. L’alternativa migliore, però, è acquistare il Geeksphone (www.geeksphone.com). ne esistono tre modelli, Keon, Peak e il nuovo Peak+. noi abbiamo avuto la fortuna di poter provare il primo, Keon, il modello base (dal costo di €91 IVA esclusa). Si tratta di un telefono dalle dimensioni ridotte, con schermo da 3,5’’ HVGA multitouch, Cpu Qualcomm

Snapdragon S1 7225AB a 1 GHz, 4 GB di roM e 512 GB di rAM, collegamento 3G HSpA e 2G Edge, Wi-Fi n, Bluetooth, GpS, fotocamera posteriore da 3 Mp, alloggiamento microSD e una serie di sensori. usandolo si può notare la rapidità e la leggerezza di Firefox oS e si possono provare le app già presenti nel Marketplace: pur non essendo tantissime sono abbastanza varie e ci si può fare un’idea delle grandi potenzialità di questa piattaforma. Il bello, dal punto di vista del programmatore, è che il Geeksphone si integra con il Firefox oS Simulator, quindi è possibile provare subito sul telefono le proprie creazioni, cosa indispensabile se ci si vuole impegnare sul serio con questo nuovo attore del mondo mobile. L’aspetto dell’ambiente è, ovviamente, ancora un po’ acerbo ma sta a voi programmatori migliorarlo e arricchirlo, cosa aspettate? per iniziare a sviluppare app, oltre a seguire Lxp, potete visitare l’urL http://mzl.la/13fR50o, dove trovare una guida introduttiva. per scoprire le ApI che avete a disposizione andate invece su http://mzl.la/1aNlimW e su https://developer.mozilla.org/it/docs/apps, dove trovate anche una mailing list

dedicata agli sviluppatori. L’ultimo riferimento è il più generale https://marketplace.firefox.com/developers/. un altro utile sito da visitare in lungo e in largo, infine, è https://hacks.mozilla.org/, dove troverete pane per i vostri denti, comprese le istruzioni per creare app a pagamento, chiaro?

Firefox OS Firefox OS

Ecco Firefox OS Simulator in azione

funzionalità hardware, ai livelli soprastanti;Gecko - è il motore di rendering HTML che permette al device

di visualizzare in forma grafica tutto il markup delle applicazioni. È lo stesso componente, ovviamente ottimizzato, che esiste nelle vostre installazioni desktop di Firefox. Gecko è in costante collegamento con Gonk dal quale eredita la possibilità di invocare funzionalità native e le offre all’utente tramite appunto JavaScript.

Gaia - è la vera interfaccia standard, costruita con standard HTML/CSS, preinstallata sui device con la quale l’utente svolge tutte le operazioni basilari di gestione del dispositivo.

Open non vuol dire poco sicuroEssendo un sistema open con una curva di apprendimento molto bassa (o addirittura assente date le tecnologie coinvolte) e con una forte propensione per l’utilizzo online, Firefox oS necessita di un sistema di sicurezza affidabile e consolidato. Ed è esattamente così. Il vero “guardiano del faro” del sistema è Gecko che protegge il nucleo del sistema da eventuali attacchi provenienti dal livello applicativo. Le funzionalità native del telefono sono esposte esclusivamente tramite ApI designate apposta e che

quindi non presentano per definizione delle back-door. La sicurezza del sistema stesso e dei futuri aggiornamenti è garantita dall’oEM e da Mozilla stessa tramite controlli basati su:

controlli sull’origine dei pacchettiintegrità dei file (basata su SHA-256)firma digitale del codice

per quanto riguarda invece il livello applicativo, la piattaforma di sicurezza è più complessa e granulare sulla base delle ApI che ciascuna applicazione può utilizzare. per esempio le ApI strettamente legate ai servizi di telefonia (le Telephony ApI) possono essere utilizzate solo da applicazioni certificate e installate sin da subito sul dispositivo. un’applicazione viene considerata privilegiata o addirittura certificata solamente dopo aver passato una serie di test effettuati da un Marketplace autorizzato. Durante la fase di installazione viene esplicitamente richiesto all’utente di approvare eventuali permessi aggiuntivi richiesti dall’applicazione. una volta installata l’applicazione viene eseguita in una sandbox dedicata nella quale sono disponibili solamente le ApI disponibili e un archivio di storage dedicato rendendo di fatto impossibile interferenze tra le applicazioni. LXP

LXP_132_86_87.tut_firefox 87 07/08/13 17:09

Page 90: Linuxpro 132 Agosto 2013

AndroidAndroid

OpenGL è incluso in Android, quindi non ci sono operazioni particolari da compiere per utilizzarlo in un progetto. Dovrete, comunque, includere una linea nel manifest (sotto la riga uses-sdk) per indicare che la vostra App ha bisogno di OpenGL 2.0 per funzionare:<uses-feature android:glEsVersion=“0x00020000” android:required=“true” />

L’Activity principale dell’App è molto semplice:public class CubeInSpaceActivity extends Activity { private GLSurfaceView glView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); glView = new GLSurfaceView(this); glView.setEGLContextClientVersion(2); glView.setRenderer(new CISGLRenderer()); setContentView(glView); }

@Override protected void onResume() { super.onResume(); glView.onResume(); }

@Override protected void onPause() { super.onPause(); glView.onPause(); }}

onCreate() imposta la GLSurfaceView, crea un contesto OpenGL ES 2.0 e imposta il renderer per poterci scrivere. È importante utilizzare i metodi onPause() e onResume() della classe View per gestire pausa e resume dell’App. OpenGL è fantastico ma utilizza molte risorse, che non vorrete ovviamente tenere occupate anche se l’App non è in primo piano, sotto gli occhi dell’utente. La maggior parte del lavoro verrà svolta dalla classe CISGLRenderer; ecco una prima versione, che imposta semplicemente lo sfondo:public class CISGLRenderer implements GLSurfaceView.Renderer { public void onSurfaceCreated(GL10 gl, EGLConfig config) { GLES20.glClearColor(61f/255, 89f/255, 171f/255, 1.0f); }

public void onDrawFrame(GL10 gl) { GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT); }

public void onSurfaceChanged(GL10 gl, int width, int height) { GLES20.glViewport(0, 0, width, height); }}

Per implementare GLSurfaceView.Renderer, dovrete fornire tre metodi. onSurfaceCreated() viene chiamato un’unica volta alla creazione per effettuare il setup; onDrawFrame() viene chiamato ogni volta che il frame viene ridisegnato (continuamente); onSurfaceChanged() viene chiamato nel caso avvenga un cambio di geometria nella View (spesso al cambio di orientamento del dispositivo). Si noti come tutti questi metodi abbiano un parametro GL10; dato che utilizzerete GLES20, che usa a sua volta metodi

I primi passi con OpenGL

In questo tutorial, utilizzerete OpenGL ES 2.0, dato che al momento l’85% dei dispositivi utilizza la versione 2.2 o successiva; tuttavia, nel caso sia importante la retrocompatibilità, è possibile inserire il codice per controllare il livello delle API e utilizzare eventualmente OpenGL ES 1.1. Potrete seguire questo tutorial anche se non avete mai utilizzato OpenGL o visto le API Android dato che partirete dai fondamentali. Si partirà con la creazione di una forma statica 2D per arrivare a un cubo rotante. Nella prossima puntata scoprirete, inoltre, come muovere la telecamera e come interagire con il touchscreen.

Android e il 3D Scopriamo OpenGL

Linux Pro vi porta nel mondo della grafica 3D cominciando dal classico cubo rotante

OpenGL (Open Graphics Library) è una specifica molto usata per produrre grafica 2D e 3D con una API cross-platform. È stata quindi progettata

per facilitare il compito degli sviluppatori nella gestione di diverse piattaforme hardware e acceleratori 3D, creando un eccellente set di funzionalità e interfacce standard. Esistono librerie OpenGL per un grande numero di linguaggi di programmazione e, fortunatamente, anche Android include le API per supportare OpenGL. OpenGL ES 1.0 e 1.1 sono supportati dalla prima release di Android; OpenGL ES 2.0 è supportato da Android 2.2 (API level 8).

88 LINUx PRO 132

LXP_132_88_93_LXF166.code_android 88 05/08/13 16:54

Page 91: Linuxpro 132 Agosto 2013

AndroidAndroid

statici, questi rimarrà inutilizzato (nel caso vogliate supportare GL10, potrete quindi farlo). glClearColor imposta il colore di sfondo che sarà applicato ogni qual volta venga chiamato il metodo glClear – in questo caso un bel blu cobalto. I valori sono rosso, verde, blu e alfa (che controlla la trasparenza) e devono essere compresi da 0 e 1. Per convertire i valori standard RGB è sufficiente utilizzare il valore e dividerlo per 255, come fatto in questo caso, oppure calcolarli e inserirli manualmente. glClear() riceve un singolo parametro, che è una maschera bitwise dei buffer da svuotare: in questo caso, colore e profondità (parleremo del depth buffer in seguito, trattando il 3D). Nel metodo onSurfaceChanged(), infine, viene impostato il rettangolo del viewport per corrispondere ad altezza e larghezza della View. Questo codice disegna solo lo sfondo. Disegnateci sopra un quadrato utilizzando la classe Square:public class Square { private FloatBuffer squareBuffer;

float vertices[] = { -0.5f, -0.5f, 0.0f, // basso sinistra 0.5f, -0.5f, 0.0f, // basso destra -0.5f, 0.5f, 0.0f, // alto sinistra 0.5f, 0.5f, 0.0f // alto destra };

public Square() { ByteBuffer vbb = ByteBuffer.allocateDirect(vertices.length * 4); vbb.order(ByteOrder.nativeOrder()); squareBuffer = vbb.asFloatBuffer(); squareBuffer.put(vertices); squareBuffer.position(0); }}

vertices definisce la posizione di ogni angolo, con una coordinata x, Y, Z per ogni vertice (la forma è 2D e quindi Z è zero per ogni vertice). Il sistema di coordinate di OpenGL ha l’origine al centro, e gli assi organizzati come in figura.

Creare un ByteBufferPer impostare il quadrato, per prima cosa dovrete creare un ByteBuffer, utilizzando quattro byte per valore immagazzinato e l’ordinamento dei byte nativo del dispositivo. Ottenete poi un buffer floating point, squareBuffer, inserite al suo interno i vertici e impostate la posizione del buffer sulla prima coordinata. Tornate a CISGLRenderer.java per impostare vertex shader e fragment shader. Il vertex shader gestisce come OpenGL posiziona e disegna i vertici (angoli) della forma. Il fragment shader controlla cosa disegnare tra i vertici della forma. Per poterli creare, vi avvallerete di stringhe da passare a OpenGL:private final String vertexShaderCode =“attribute vec4 vPosition; \n” +“void main(){ \n” +“ gl_Position = vPosition; \n” +“} \n”;

private final String fragmentShaderCode =“precision mediump float; \n” +“void main(){ \n” +“ gl_FragColor = vec4 (0.63671875, 0.76953125,0.22265625, 1.0); \n” +

“} \n”;

private Square square;public void onSurfaceCreated(GL10 gl, EGLConfig config) { GLES20.glClearColor(0.5f, 0.5f, 05.f, 1.0f); square = new Square(); int vertexShader = loadShader(GLES20.GL_VERTEx_SHADER, vertexShaderCode); int fragmentShader = loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentShaderCode);}private int loadShader(int type, String shaderCode) { int shader = GLES20.glCreateShader(type); GLES20.glShaderSource(shader, shaderCode); GLES20.glCompileShader(shader); return shader;}

Per creare lo shader, dovete caricarlo nel codice come stringa e compilarlo, come in loadShader(). OpenGL ES 2.0 utilizza un Program per il disegno: si tratta di un oggetto che prende gli shader (gli eseguibili), li compila e li linka per disegnare la scena. Dovrete quindi impostare un Program e collegarvi gli shader:private int program;private int positionHandle;public void onSurfaceCreated(GL10 gl, EGLConfig config) { [ ... ] program = GLES20.glCreateProgram(); GLES20.glAttachShader(program, vertexShader); GLES20.glAttachShader(program, fragmentShader); GLES20.glLinkProgram(program); positionHandle = GLES20.glGetAttribLocation(program, “vPosition”);}

Android e il 3D Scopriamo OpenGL

Il sistema di coordinate 2D di OpenGL. Per il 3D, l’asse Z esce dallo schermo

LINUx PRO 132 89

LXP_132_88_93_LXF166.code_android 89 05/08/13 16:54

Page 92: Linuxpro 132 Agosto 2013

AndroidAndroid

Far quadrare i quadratiIl problema dei quadrati non quadrati è dovuto all’assunzione da parte di OpenGL di trovarsi in una view perfettamente quadrata. In pratica, tuttavia, gli schermi dei dispositivi Android non sono, in generale, quadrati. Per sistemare il problema, quindi, è possibile impostare una matrice di proiezione e una matrice camera-view per calcolare le coordinate correttamente e mapparle sullo schermo del dispositivo in uso. Si veda il box per approfondire le matrici, tuttavia la matrice di proiezione semplicemente fornisce un mapping per il quadrato ideale OpenGL sullo schermo corrente, e la matrice camera-view (o punto di vista) imposta gli oggetti da visualizzare come se fossero inquadrati da una certa posizione. In questo caso la camera sarà al centro dello schermo. Tutto il lavoro è svolto in CISGLRenderer.java. Per prima cosa dovrete modificare il codice dello shader per aggiungere un riferimento a una singola matrice, uMVPMatrix. Combinerete, infatti, le matrici di proiezione e camera-view in una singola matrice: private final String vertexShaderCode = “uniform mat4 uMVPMatrix; \n” + “attribute vec4 vPosition; \n” + “void main(){ \n” + “ gl_Position = uMVPMatrix * vPosition; \n” + “} \n”;

Il codice aggiunge una linea con il riferimento alla matrice, che viene utilizzata per moltiplicare la posizione e calcolare glPosition.Dovrete inoltre aggiungere qualche matrice privata per memorizzare diverse cose:private int mvpMatrixHandle; // matrix handleprivate float[] uMVPMatrix = new float[16]; // matrice unificataprivate float[] vMatrix = new float[16]; // matrice camera viewprivate float[] projMatrix = new float[16]; // matrice di proiezione

Aggiungete ora il codice mancante a onSurfaceCreated() e onSurfaceChanged():public void onSurfaceCreated(GL10 gl, EGLConfig config) { [ ... ] mvpMatrixHandle = GLES20.glGetUniformLocation(program, “uMVPMatrix”); [ ... ]}public void onSurfaceChanged(GL10 gl, int width, int height) { GLES20.glViewport(0, 0, width, height); float ratio = (float) width/height; Matrix.frustumM(projMatrix, 0, -ratio, ratio, -1, 1, 2, 7); Matrix.setLookAtM(vMatrix, 0, 0, 0, -3, 0f, 0f, 0f, 0f, 1.0f, 0.0f);}

Dominare MatrixI metodi di Matrix consentono diverse manipolazioni matriciali. frustumM() definisce la matrice di proiezione in funzione di sei piani di clipping. Un piano di clipping nella grafica 3D indica al renderer quanto distante dalla camera fermare il calcolo delle superfici. Questo significa che superfici molto lontane non verranno considerate, preservando la potenza di calcolo. In questo caso, i piani destro e sinistro saranno impostati a ratio, ovvero ai lati dello schermo a destra e sinistra; similarmente alto e basso sono impostati a -1 e 1, che nuovamente corrispondono ai valori limite dello schermo in alto e in basso. Gli ultimi due valori corrispondono a ‘near’ e ‘far’, impostati rispettivamente a 2 e 7 (devono essere positivi). Viene ottenuto l’handle alla matrice degli uniform e successivamente viene impostata la matrice camera-view con setLookAtM. Questa verrà memorizzata in vMatrix, con un offset

Un bellissimo quadrato! Che... non è per niente quadrato. Nella

prossima sezione scoprirete come

sistemare questo problema

android.opengl.GLES20 è semplicemente un’interfaccia alle librerie OpenGL, perciò consultate la documentazione all’indirizzo www.opengl.org/sdk/docs/ piuttosto

TipIl codice crea un nuovo Program vuoto, collega gli shader e crea gli eseguibili richiesti tramite glLinkProgram(). L’ultima riga, infine, ottiene un handle alla variabile vPosition nel codice dello shader. Questo vi consentirà di passare la posizione di ogni vertice dal codice Android al programma OpenGL. Impostato il program OpenGL, aggiungete queste righe a onDrawFrame() per disegnare il quadrato:GLES20.glUseProgram(program);square.draw(positionHandle);

e il metodo draw() a Square:public void draw(int positionHandle) { GLES20.glVertexAttribPointer(positionHandle, 3, GLES20.GL_FLOAT, false, 0, squareBuffer); GLES20.glEnableVertexAttribArray(positionHandle); GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, vertices.length/3);}

glVertexAttribPointer() definisce un array di vertici. positionHandle rappresenta l’indice del vertice da disegnare, che comprende le componenti x, Y, Z. Il tipo di dato è GL_FLOAT, i valori non dovrebbero essere normalizzati (false), non è presente offset tra i valori nell’array (0) e le informazioni sui vertici sono contenute in squareBuffer. glEnableVertexAttribArray() abilita l’array, e glDrawArrays() converte i dati nell’array in primitive geometriche. State utilizzando il tipo GL_TRIANGLE_STRIP, iniziando dall’indice 0 e renderizzando quattro vertici, dato che vertices ha tre valori (x, Y, Z) per vertice. Compilate ed eseguite per vedere il vostro quadrato, che non è poi così quadrato...

90 LINUx PRO 132

LXP_132_88_93_LXF166.code_android 90 05/08/13 16:54

Page 93: Linuxpro 132 Agosto 2013

AndroidAndroid

di 0. Il punto di vista viene impostato a (0, 0, -3), cioè a x = y = 0 e z = -3, perciò il punto di vista si trova a tre unità fuori dallo schermo. Il centro della vista è impostato a (0,0,0), cioè al centro dello schermo, e il vettore ‘up’ è (0,1,0). Il vettore ‘up’ definisce la direzione verso l’alto; in questo caso, e come di consueto, l’asse Y. Infine, modificate onDrawFrame() per utilizzare le nuove matrici: public void onDrawFrame(GL10 gl) { GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT); Matrix.multiplyMM(uMVPMatrix, 0, projMatrix, 0, vMatrix, 0); GLES20.glUniformMatrix4fv(mvpMatrixHandle, 1, false, uMVPMatrix, 0); GLES20.glUseProgram(program); square.draw(positionHandle);}

multiplyMM moltiplica vMatrix per projMatrix e inserisce il risultato in uMVPMatrix (gli 0 rappresentano gli offset nella matrice risultante; non viene utilizzato nessun offset). glUniformMatrix4fv aggiorna mvpMatrixHandle – ottenuta dal vertex shader in onSurfaceChanged() con uMVPMatrix, senza trasporre gli elementi (false). Ecco fatto! Ricompilate per avere sullo

Finora avete impostato il colore del quadrato manualmente, come parte della variabile fragmentShaderCode. È tuttavia preferibile passarlo direttamente dal codice. Modificate fragmentShaderCode e vertexShaderCode:private final String vertexShaderCode = “uniform mat4 uMVPMatrix; \n” + “attribute vec4 vPosition; \n” + “attribute vec4 aColour; \n” + “varying vec4 vColour; \n” + “void main(){ \n” + “ vColour = aColour; \n” + “ gl_Position = uMVPMatrix * vPosition; \n” + “} \n”;

private final String fragmentShaderCode = “precision mediump float; \n” + “varying vec4 vColour; \n” + “void main(){ \n” + “ gl_FragColor = vColour; \n” + “} \n”;

Il vostro quadrato, ora veramente quadrato

Avrete sicuramente notato come tutte le matrici siano 4x4. Dal momento che avete utilizzato tre valori per definire la posizione dei vertici (con z a 0, che cambierete non appena vorrete utilizzare forme 3D), a cosa serve il quarto? In OpenGL, i vertici hanno sempre quattro coordinate (x, y, z, w). Approfondire questa cosa va oltre gli scopi del tutorial ma, fondamentalmente, la coordinata w consente di rappresentare le traslazioni (movimento nello spazio, non solo rotazioni e cambi di scala) utilizzando operazioni matriciali. Nel caso vogliate approfondire il mondo della grafica 3D, è

consigliabile prendere confidenza con la matematica delle matrici, cosa estranea a questo tutorial anche se approfondiremo l’argomento nel prossimo numero. Per il momento, potreste vedere le matrici come un modo di memorizzare le azioni da applicare agli oggetti. La matrice di proiezione prende il vostro oggetto e lo manipola per adeguarlo ad una proiezione. I metodi della classe Matrix come frustumM vi permettono di impostare i valori della matrice di proiezione utilizzando piani di clipping piuttosto che manipolare direttamente la matrice. Similarmente, la matrice della camera è

impostata specificando la posizione della stessa e il suo vettore up. Le matrici memorizzano le informazioni nell’attesa che OpenGL disegni gli oggetti. Prima che gli oggetti siano disegnati, le matrici vengono applicate alle coordinate, producendo un nuovo set di coordinate che definiscono la visualizzazione dell’oggetto nello spazio, dato il punto di vista e la proiezione impostata. In generale, potete aggiungere matrici per ogni trasformazione da applicare, fino ad arrivare alla matrice che poi OpenGL utilizzerà per disegnare l’oggetto sullo schermo.

Proiezioni, punto di vista e matrici

Un tocco di coloreaColour e vColour fanno tutto il lavoro. Le variabili varying vengono utilizzate come interfaccia tra vertex e fragment shader. Il colore per vertice è impostato in aColour, che non varia. vColour (che varia) è uguale ad aColour ai vertici e nel fragment shader viene interpolata per ricavare il colore per pixel, che varia tra i vertici fornendo una forma colorata. Impostate il Program per utilizzare tali variabili, in onSurfaceCreated():

private int colourHandle;public void onSurfaceCreated(GL10 gl, EGLConfig config) { [ ... ] program = GLES20.glCreateProgram(); GLES20.glAttachShader(program, vertexShader); GLES20.glAttachShader(program, fragmentShader); GLES20.glBindAttribLocation(program, 0, “vPosition”); GLES20.glBindAttribLocation(program, 1, “aColour”); GLES20.glLinkProgram(program); positionHandle = GLES20.glGetAttribLocation(program, “vPosition”); colourHandle = GLES20.glGetAttribLocation(program,

schermo un quadrato davvero quadrato. Fate attenzione tuttavia al fatto che qualsiasi errore nelle stringhe che definiscono gli shader OpenGL romperanno il vostro codice, ma non verranno segnalate dal compilatore Android, dato che per esso sono solo stringhe. Se il codice non funziona come previsto, controllate le stringhe per errori di capitalizzazione, spazi mancanti e operatori corretti.

LINUx PRO 132 91

LXP_132_88_93_LXF166.code_android 91 05/08/13 16:54

Page 94: Linuxpro 132 Agosto 2013

AndroidAndroid

“aColour”);}

Il codice collega gli handle per posizione e colore alle variabili relative nel vertex shader (vPosition e aColour), e ottiene un handle per entrambi. Modificate ora la chiamata a square.draw() in onDrawFrame() per passare entrambi gli handle, per posizione e colore. La nuova versione di square.draw() aggiunge solo due righe:GLES20.glVertexAttribPointer(colourHandle, 4, GLES20.GL_FLOAT, false, 0, squareColourBuffer);GLES20.glEnableVertexAttribArray(colourHandle);

Si noti come ci si stia riferendo alla variabile squareColourBuffer, collegata a colourHandle. Questa ovviamente conterrà i colori dei vertici:private FloatBuffer squareColourBuffer; float verticesColour[] = { 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f,};

Ogni vertice ha un valore RGBA e i pixel a quel vertice avranno tale valore. Non appena il renderer si sposta verso il successivo, i colori intermedi verranno interpolati generando il gradiente in figura. Se impostate tutti i valori allo stesso colore in verticesColour, otterrete un quadrato piatto squareColourBuffer viene creato nel costruttore esattamente come squareBuffer. Compilate ed eseguite, per vedere un quadrato multicolore.

};

short[] cubeIndices = { 0, 4, 5, // 36 indici totali in 12 gruppi di 3 (si legga il testo); vedere il DVD per i dettagli };

public Cube() { // Inizializzate cubeBuffer e cubeColourBuffer come fatto in Square.java cubeIndexBuffer = ByteBuffer.allocateDirect(cubeIndices.length * 4).order(ByteOrder.nativeOrder()).asShortBuffer(); cubeIndexBuffer = cbb.asShortBuffer().put(cubeIndices).position(0); }

I quadrati sono grandiosi ma la grande capacità di OpenGL è quella di gestire le forme 3D. Create quindi una classe Cube da disegnare al posto del quadrato:

public class Cube { private FloatBuffer cubeBuffer; private FloatBuffer cubeColourBuffer; private ShortBuffer cubeIndexBuffer; float vertices[] = { -0.5f, -0.5f, -0.5f, // coordinate per gli 8 vertici; vedere il DVD per i dettagli }; float verticesColour[] = { 0.0f, 0.0f, 0.0f, 1.0f, // coordinate per gli 8 vertici; vedere il DVD per i dettagli

Il vostro quadrato multicolore, in tutta la sua bellezza

Costruire un cubo

Cubi animatiCompletiamo l’opera facendo finalmente muovere il cubo. Si tratta di utilizzare nuovamente la matrice di movimento; questa volta in onDrawFrame():Matrix.rotateM(mMatrix, 0, 1, 6, 2, 3);Matrix.setIdentityM(uMVPMatrix, 0);

Ogni volta che viene ridisegnato il frame (il timing preciso dipende dall’hardware e dagli altri processi nel sistema), il cubo verrà ruotato

di un grado lungo l’asse (6, 2, 3). Sperimentate, nuovamente, con i numeri per capire come funziona la rotazione (provate anche a incrementare il numero di gradi per velocizzare la rotazione, per esempio). Si noti come la sequenza di moltiplicazione delle matrici in onDrawFrame() sia importante; provate a spostare ad esempio la linea multiplyMM mMatrix dopo le righe vMatrix e projMatrix per scoprire cosa intendiamo!

92 LINUx PRO 132

LXP_132_88_93_LXF166.code_android 92 05/08/13 16:54

Page 95: Linuxpro 132 Agosto 2013

AndroidAndroid

public void draw(int positionHandle, int colourHandle) { // impostate colore e posizione in VertexAttribPointers come fatto in Square.java GLES20.glDrawElements(GLES20.GL_TRIANGLE_STRIP,ubeIndices.length, GLES20.GL_UNSIGNED_SHORT,cubeIndexBuffer); }}

La differenza principale è l’uso degli indici del cubo. L’array vertices definisce gli otto vertici del cubo, che potete numerare da 0-7. L’array cubeIndices li raggruppa in terzine, dove ognuna definisce un triangolo corrispondente a metà faccia del cubo. Vengono raggruppati per tre dato che utilizzerete la primitiva GL_TRIANGLE_STRIP per disegnare il cubo (sfortunatamente Android non supporta GL_QUADS, che vi consentirebbe di definire direttamente le facce del cubo con quattro vertici). Strutturando i dati di vertici e facce in questo modo e utilizzando glDrawElements() potete specificare il cubo con meno chiamate. Nel caso chiamaste cube.draw() in CISGLRenderer.onDrawFrame(), in questo momento vedrete ancora un quadrato; la faccia frontale del cubo, che state visualizzando da davanti. Per vedere il cubo in 3D, dovrete ruotarlo un po’. Per fare questo potete utilizzare un’altra matrice, mMatrix, aggiungendo un paio di righe a onSurfaceCreated() e una linea a onDrawFrame():private float mMatrix = new float[16];public void onSurfaceCreated(GL10 gl, EGLConfig config) { [ ... il resto del metodo ... ] Matrix.setIdentityM(mMatrix, 0); Matrix.rotateM(mMatrix, 0, -40, 1, -1, 0);}

public void onDrawFrame(GL10 gl) { GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT); Matrix.setIdentityM(uMVPMatrix, 0); Matrix.multiplyMM(uMVPMatrix, 0, mMatrix, 0, uMVPMatrix, 0); Matrix.multiplyMM(uMVPMatrix, 0, vMatrix, 0, uMVPMatrix, 0); Matrix.multiplyMM(uMVPMatrix, 0, projMatrix, 0, uMVPMatrix, 0); GLES20.glUniformMatrix4fv(mvpMatrixHandle, 1, false, uMVPMatrix, 0); GLES20.glUseProgram(program); cube.draw(positionHandle, colourHandle);}

Nel metodo onSurfaceCreated(), viene inizializzata la matrice all’identità; viene ruotata di -40 gradi lungo l’asse xYZ (1, -1, 0) (provate a cambiare questi numeri per capire come funziona, se non siete pratici con le rotazioni 3D). In onDrawFrame(), dovrete applicare (moltiplicare) la matrice sulla matrice camera-view vMatrix e sulla matrice di proiezione (projMatrix). Questo significa separare le singole linee per portarle nella matrice unificata; fondamentalmente si tratta della stessa operazione svolta in precedenza (fondere le matrici in una matrice unificata da applicare alla forma), con una matrice in più. Fatto ciò, si disegna il cubo. A questo punto dovreste vedere una forma simile a un cubo ma con qualcosa di strano. Per renderlo più solido, aggiungete due righe al metodo onSurfaceCreated() dopo la riga glClearColor():GLES20.glEnable(GLES20.GL_DEPTH_TEST);GLES20.glDepthFunc(GLES20.GL_LEQUAL);

La prima riga abilita il depth testing e il depth buffer. Con il depth

Il vostro cubo multicolore ruotato di 40 gradi

Nel prossimo numeroNel prossimo tutorial, imparerete a muovere il cubo sullo schermo in risposta agli eventi del touchscreen e come aggiungere le texture agli oggetti 2D e 3D.

buffer abilitato, ogni volta che un pixel viene disegnato il valore di profondità viene comparato con i valori nel buffer. È stato impostato GL_LEQUAL, perciò i nuovi pixel verranno disegnati solo se sono più vicini rispetto ai precedenti e quindi visibili all’utente. Senza questa tecnica, dato che OpenGL disegna i pixel senza un ordine preciso, potreste ottenere risultati non voluti e vedere attraverso gli oggetti. Compilate ed eseguite il tutto per vedere il vostro cubo! Come indicato all’interno del codice pubblicato, trovate i sorgenti nel DVD allegato. LXP

LINUx PRO 132 93

LXP_132_88_93_LXF166.code_android 93 05/08/13 16:54

Page 96: Linuxpro 132 Agosto 2013

i LugI 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

94 Linux pro 132

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_132_94_95_lug 94 06/08/13 15:52

Page 97: Linuxpro 132 Agosto 2013

Linux pro 132 95

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_132_94_95_lug 95 06/08/13 15:52

Page 98: Linuxpro 132 Agosto 2013

NEL PROSSIMO NUMEROIn edicola il 25 settembre

Mensile - 5,90 euro - 13,60 CHF

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

Publisher: Mario Bosisio

Redazione: [email protected] Zagaglia (responsabile di redazione, realizzazione DVD) Brunetta Pieraccini (segreteria)

Digital media coordinator: Massimo Allievi

Realizzazione editoriale: Oku Studio

Impaginazione: Sara Benecino

Iconografia e fotografie: Marco Coppola

Contenuti su licenza: Linux Format - Future P.ce - London (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 [email protected]; puoi anche abbonarti via fax 030 3198412,per telefono 199 111 999 dal lunedì al venerdì dalle ore 9 alle ore 19. Costo massimo della chiamata da tutta Italia per telefoni fissi € 0,12 + iva al minuto senza scatto alla risposta. Per cellulari costo in funzione dell’operatore. Per chi volesse abbonarsi dall’estero +39 041.50.99.049.

ArretratiSi sottoscrivono online all’indirizzo: www.spreastore.itPer informazioni: [email protected] fax al numero 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), Maria Luisa Capuzzoni, Ugo Besso

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, DCB Milano

Copyright Sprea Editori S.p.A.La Sprea Editori è titolare esclusiva della testata Linux Pro e di tutti i diritti di pubblicazione e diffusione in Italia. I contenuti sono adattati e tradotti su licenza della pubblicazione: Linux Format – Future P.ce – London (UK). 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.

I tuo avi su Linux Con Gramps realizzare un albero genealogico è semplice e divertente: in pochi passaggi potrete ricostruire la storia della vostra famiglia e presentarla ai parenti!

Documenti perfettiÈ possibile creare documenti sempre eleganti e organizzati con i modelli e i fogli stile di LibreOffice. Vediamo come sfruttare al meglio le potenzialità della suite di programmi per ufficio

Video d’autoreCon Lightworks, realizzare filmati di qualità professionale è davvero facile. Dalla preparazione del progetto al rendering del filmato, ecco come produrre video di qualità

E inoltre:

LINUXPRO

DESKTOP SU MISURAEcco come organizzare il desktop perfetto con le funzioni, l’aspetto e la praticità

che volete. Vediamo gli ambienti migliori e scegliete quello ideale per le vostre esigenze!

LXP132_96_prossimamente 1 06/08/13 14:33

Page 99: Linuxpro 132 Agosto 2013

Senza titolo-2 1 06/08/13 11:05

Page 100: Linuxpro 132 Agosto 2013

Con FRITZ!WLAN Repeater 310 estendi la portata della rete wifi premendo un

semplice pulsante. Grazie al design estre-mamente compatto e alla sua efficienza energeti-ca, si usa con qualsiasi presa, cifra il traffico ed è compatibile con tutti i più comuni router WLAN.

NUOVO! FRITZ!WLAN Repeater 310

FRITZ!Box 7390Massime prestazioni e comfort per la tua rete e Internet! Noto per la sua versatilità, FRITZ!Box realizza ogni tuo desiderio in fatto di comunicazione trasformando la mera connettività in una porta su infinite possibilità.

Navigazione ultraveloce grazie al modem xDSL integrato Dual-WLAN N: 2 frequenze simultanee fino a 300 MBit/s Centralino, DECT, segreteria e fax per la massima comodità Condivisione in rete di stampanti USB e memorie (NAS) Perfetta integrazione di iPhone e Android con le App gratuite FRITZ!OS con media server, MyFRITZ! e molto altro ancora

Maggiori informazioni sul sito fritzbox.euSeguici anche su www.facebook.com/FRITZBox.it

Il pluripremiato FRITZ!Box:

La tua rete ovunqueFacile, con FRITZ!

13/0

22 fritzbox.euAVM International • [email protected]