Sei sulla pagina 1di 84

CSS Programmare da pro i fogli stile per il Web NEL

WEB
DVD
Debian 12
le istruzioni
istruzion
zion
a pagina 4
onii

Fatdog64
pfSense 2.7.0
Q4OS 5.2
Peppermint OS 2023-07-01
Tails 5.15.1
Sniffnet

L’unica guida libera al mondo dell’Open Source PRO Bavarder


e molto altro...

1.000 SERVER
A COSTO ZERO
Virtualizza tutto, dal desktop all’ambiente di sviluppo! Sfrutta gratis la
Scopri i trucchi per diventare un maestro di VirtualBox tecnologia dei
TARIFFA R.O.C. - POSTE ITALIANE SPA - ABB. POST. - D.L. 353/2003 (CONV. IN L. 27/02/2004 N. 46) ART. 1, COMMA 1, S/NA - DISTRIBUTORE: PRESS-DI, SEGRATE

Sviluppa in Python senza più errori di dipendenze e compatibilità colossi del cloud!
10 pagine su Docker: dai container imperdibili a come creare il tuo

Debian 12 è perfetta
per business e
8,8 GB professionisti!
DI SISTEMI
OPERATIVI Crea
Crea llaa tua
tua IA
IA per
per le
le foto
foto
E APP!
CLASSIFICAZIONE DI IMMAGINI
Riconosci oggetti e animali con un
dispositivo da meno di 15 euro!

NUOVO!ICARE
R
2 DVD DA SCOADICE L’Open Source salva le vite!
L’O
L’Ope
CON IL C IN Dagli strumenti open ai tumori trovati per
ALL’INTERNO ER TE
ES CLUS IVA P tempo dall’Intelligenza Artificiale, ecco la
rivoluzione della medicina grazie a Linux

Bimestrale - N.220 - 7,90 €


Sistema operativo
S Programmazione
Distribuzioni immutabili
D Crea videogiochi arcade
I segreti delle distro 100% Con Godot programmare
ssicure: sono il futuro di Linux videogame è Open e facilissimo
P.I. 10-08-2023 Agosto-Settembre
IN EDICOLA
DAL 28 LUGLIO

Scansiona il QR Code

Acquistala su www.sprea.it/vinile
versione digitale disponibile dal 25 luglio
Editoriale

Il presente è la virtualizzazione
Vivere nell’equazione “1 server hardware provate 100 sistemi operativi in un attimo
= 1 server software” significa perdersi senza dover configurare nuove macchine.
straordinari sviluppi che hanno davvero Su questo numero vedremo tutto questo
trasformato il modo di sfruttare le risorse e molto altro. Per esempio scopriremo
informatiche. Creare ambienti virtuali insieme come l’Open Source e l’IA stanno
all’interno della stessa macchina è ormai rivoluzionando il mondo della medicina
un obbligo, perché permette di effettuare promettendo di salvare tantissime vite.
una serie di operazioni essenziali. Per esempio, Vedremo poi come costruire un sistema
potete “impacchettare” configurazioni, di identificazione di oggetti con pochi euro,
dipendenze, ecc. di un ambiente di sviluppo come diventare maestri di CSS e molto altro
per replicarne i risultati in qualsiasi condizione ancora. Buona lettura!
e isolare l’ambiente dagli altri che state
usando. Poi c’è il fattore risparmio: perché La redazione di Linux Pro
creare un server specifico per determinati usi
quando con Docker potete avere un’istanza CSS Pr
og ramm
are da

per ogni necessità (database, sistema di


pro i fo
gli stile
per il
Web
NEL
WEB
gestione di file multimediali, ecc.) in pochissimi DVD
Debian
12
le istruzion
zioni
a paginaonii
4

click? E naturalmente c’è poi sempre


Fatdog64
L’unic a
guida lib pfSense
2.7.0
era al mo Q4OS 5.2
ndo de Peppermin

1.000 SER
t OS 2023
ll’Open -07-01

P RO
Tails 5.15
Source Sniffnet
.1

l’importante fattore emulatore: con VirtualBox


Bavarder

VER
e molto
altro...

A COSTO
ZERO
Da non perdere su questo numero...
Virtualizz
a tutto,
dal deskt
Scopri i truc
E

op all’am
DI, SEGRAT

chi per dive biente di


Sviluppa in ntare un ma sviluppo
: PRESS-

Python sen estro di Virt !


10 pagine za più erro ualBox Sfrutta
DISTRIBUTORE

su Docker ri di
: dai contain dipendenze e compat
er imperd
ibili a com ibilità tecnologratis la
colossi gia dei
1, S/NA -

e creare il
tuo del cloud

08 Cover Story
ART. 1, COMMA

!
Debian 12
004 N. 46)

8,8 è pe
per businrfetta
DI SIS GB
IN L. 27/02/2

OPER TEMI professio ess e


E APAT IV
P! I
nisti!
03 (CONV.

1.000 server a costo zero


- D.L. 353/20

Crea la tua
POST.

CLASSIF IA per
per le
SPA - ABB.

Riconosc
ICAZION
E
DI IMMAGIN
foto
i
dispositi oggetti e animali I
ITALIANE

NUOVO! vo da men con

La virtualizzazione è una tecnologia in costante


o di 15 euro un
2 DVD DA SCARIC
R.O.C. - POSTE

!
CON IL CODIC ARE
ALL’INTERNO E
ESCLUSIVA PERIN L’Open
TARIFFA

TE
Source

evoluzione: scoprite come trarne il massimo per


Bimestrale Dagli stru sa lva le vit
- N.220
- 7,90 €
men
tempo dall ti open ai tum e!
ori trovati
rivoluzio ’Intelligenza Arti
Sistem
S
ne della ficiale, ecc per
medicin o la

risparmiare e migliorare l’efficienza dei vostri server


a
P.I. 10-08-
2023 Agosto
Distribuziooperativo
D a grazie
a Linux
-Settem
bre I segreti ni immutabili
si
sicu delle distr Progra
re: sono
COP_001_L
XP220_cover
il futuro o 100%
di Linux Crea vidmmazione
.indd eogiochi
1
Con God
videogam ot prog arcade
e è Ope rammare
n e facilissi
mo

20 Il boom delle distro immutabili 20/07/2023


02:56:37

Stanno diventando sempre più popolari e molti


ritengono che rappresentino il futuro di Linux,
ma cosa le rende così speciali?
NOI RISPETTIAMO L’AMBIENTE!
54 ChatGPT nel terminale Linux Pro è stato stampato
Accedere alla potenza dell’Intelligenza Artificiale su carta certificata PEFC,
senza bisogno di dover aprire un browser è comodo proveniente da piantumazioni a
e ci sono diversi modi per farlo facilmente! riforestazione programmata e perciò
gestite in maniera sostenibile

CONTATTI
Domande alla redazione: redazione@linuxpro.it
Abbonamenti e arretrati: abbonamenti@sprea.it
Problemi con il DVD: aiutocd@sprea.it
Sito Web: www.linuxpro.it
Oppure inviate le vostre lettere a:
Linux Pro, Sprea S.p.A.,
Via Torino 51, 20063 Cernusco S/N
Telefono: 02.92432.1

LINUX PRO 220 1


Sommario

Sommario LINUX
LINUX PRO 220

PRO

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

Cover story

1.000 SERVER
A COSTO ZERO

La virtualizzazione è una tecnologia in costante evoluzione:


8 scoprite come trarne il massimo per risparmiare denaro
e migliorare l’efficienza dei vostri server

ABBONATI ALLA
VERSIONE DIGITALE
E
SOLO PER PC E MAC
A SOLI 16,90 €
DURATA ABBONAMENTO 1 ANNO

20 Il boom delle distro immutabili www.sprea.it/digital


2 LINUX PRO 220
Sommario

04 Guida DVD 54 ChatGPT nel terminale


RO
LINUXCPO LA
I programmi e le distro contenuti
È IN EDI
ARI
Accedere alla potenza

ILL 15 DEI MESI P


dell’Intelligenza Artificiale senza
06 News bisogno di dover aprire un
Tutte le novità dal mondo Linux
browser è comodo e ci sono
Cover Story diversi modi per farlo facilmente! IL DVD IN BREVE
IL DVD IN BREVE
08 1.000 server a costo zero 58 Classificare LATO A
∆ DESKTOP
DISTRIBUZIONI
La virtualizzazione è una
tecnologia in costante evoluzione:
le immagini con l’IA DVD A
∆ Mednafen
Fedora 19 (32 0.9.28
bit)
Basta una scheda da pochi euro ∆ Parcellite 1.1.3
DISTRIBUZIONI
scoprite come trarne il massimo
per risparmiare denaro e migliorare per addestrare un modello in ∆ DISTRIBUZIONI
Debian 12
l’efficienza dei vostri server grado di riconoscere diversi tipi di ∆ Mageia 3 (32 bit)

frutta e verdura dalle loro foto Peppermint


∆ Sophos UTM OS 2023-07-01
Approfondimenti ∆ Untangle
LATO
∆ GIOCHI
B 9.4 (32 e 64 bit)
DISTRIBUZIONI
20 Il boom delle distro
immutabili
66 Metasploitable3: ∆ PokerTH


Deft 8 1.0.1
INTERNET
∆ IPFire 2.13
WEB
WEB
Stanno diventando sempre più
pronti all’attacco? ∆ Firefox
Salix Xfce21 14.0.1
popolari e molti ritengono che Incrementiamo ancora le nostre ∆ GIOCHI 1.3.4d
∆ ProFTPD

rappresentino il futuro di Linux, skill da penetration tester ∆ PROGRAMMAZIONE


∆ Ayon

DVD
DVD
ma cosa le rende così speciali? e scoviamo le vulnerabilità ∆ RIVISTA 1.60.1
∆ CPPCheck
per un futuro attacco... simulato! ∆ GTKDialog
Codice d’esempio
0.8.3 ∆ LiteIDE
Android
24 Quando l’IA fa la diagnosi ∆Codice
∆ RIVISTA d’esempio
Le nuove frontiere Raspberry
∆ Ardour3 3.2 ∆ Avogadro
dell’apprendimento profondo Accademia DVD B
1.1.0
∆ Codice d’esempio Ruby
permettono di salvare vite con
l’identificazione precoce delle 70 Creare un gioco ∆ Codice tutorial
d’esempio
DISTRIBUZIONI Android
Sysadmin
∆ Codice tutorial Ruby
malattie e facilitando il lavoro per una raccolta Fatdog64
dei medici ∆ Erebus
BurgerSpace
∆ FatRat1.9.2
1.2.0 beta2
Il processo di integrare il proprio ∆ Safe-rm
NetHogs
pfSense 0.100.8.0
2.7.0 ∆ Xowa 0.6.2

Recensioni codice in una struttura già ∆ Plan


OCRFeeder
9 ∆ Raspbian
Q4OS 5.2
0.7.1
creata non è semplice ma
30 Software e hardware
∆ Arch
PushOver
Linux0.0.5
RP
è la chiave per poter collaborare Tails 5.15.1
∆ Android
QMMP 0.7.1
RP ∆ Risc OS
a progetti condivisi
36 Da non perdere RIVISTA
LATO B
42 I test del mese 74 Trucchi per il vostro ∆Sniffnet
DISTRIBUZIONI
1.2.1
∆ Linux Mint 15 Cinnamon
arsenale CSS
Tutorial Anche per chi ha già familiarità con
Bavarder 0.2.3
∆ Linux Mint 15 Mate

50 Elaborazione grafica questo diffusissimo linguaggio,


Halftone 0.3.1

dalla riga di comando c’è sempre qualche chicca Nativefier 50.1.11


Uno strumento ricco di opzioni per facilitare il lavoro Tagspaces 5.4.2
ci permette di applicare mille
modifiche ai nostri file grafici
con la velocità e la comodità 78 L’eco dei LUG E altro ancora!
del terminale La mappa dei LUG italiani

CSS Programmare da pro i fogli stile per il Web


Prova la
Prova la tua
tua rivista
rivista anche
anche in
in dioitale
digitale
NEL

www.linuxpro.it/abbonamenti
WEB
DVD
D
Debian 12
le istruzioni
ionni
a pagina 4

Fatdog64
pfSense 2.7.0
Q4OS 5.2
Peppermint OS 2023-07-01
Tails 5.15.1 CSS Programmare
da pro
i fogli
stile per
il Web

Sniffnet
NEL
WEB
DVD
D le istruzioni

PRO
RO
a pagina
in 4
Debian 12
Fatdog64

Cover story 1.000 server a costo zero


L’unica pfSense
2.7.0
guida libera Q4OS 5.2
al mondo Peppermint
OS
dell’Open Tails 5.15.1 2023-07-01

Bavarder 1.000 SERVER PRO


Source Sniffnet
Bavarder
e molto altro...

A COSTO
L’unica guida libera al mondo dell’Open Source e molto altro...
Virtualizza
tutto, dal
Scopri i trucchi desktop all’ambiente
ZERO
SEGRATE

per diventare di sviluppo!


Sviluppa in
PRESS-DI,

Python senza un maestro


di VirtualBox
10 pagine su più errori di Sfrutta gratis
DISTRIBUTORE:

Docker: dai dipendenze


container imperdibili e compatibilità tecnologia la
a come creare colossi del dei
1, S/NA -

il tuo
cloud!
1, COMMA
N. 46) ART.

Debian 12
8,8 GB è perfetta
L. 27/02/2004

DI SISTEMI
per business
OPERATIVI professionisti!e
(CONV. IN

E APP!
- D.L. 353/2003

Crea la tua
CLASSIFICAZIONEIA
POST.

pe le ffoto
per oto
SPA - ABB.

DI
oggetti e IMMAGINI
Riconosci
dispositivo animali con
ITALIANE

da meno
NUOVO! di 15 euro! un
2 DVD DA SCARICARE
R.O.C. - POSTE

CON IL CODICE
ALL’INTERNO
ESCLUSIVA PERIN L’Open
L’Ope
Op Source
TARIFFA

TE
Dagli strumenti salva le vite!

1.000 SERVER
Bimestrale open ai tumori
- N.220
- 7,90 €
tempo dall’Intelligenza
trovati per
rivoluzione Artificiale,
della medicina ecco
Sistema
Si grazie a Linuxla
operativo
P.I. 10-08-2023 Distribuzioni
Dis
Agosto-Settembre
I segreti delle immutabili Programmazione
si
sicure: distro 100%

I trucchi per usare


sono il futuro Crea videogiochi
COP_001_LXP220_cover.indd di Linux
1 Con Godot arcade
videogame programmare
è Open e
facilissimo

Speciale
20/07/2023
02:56:37

Speciale

al massimo VirtualBox
perfetta per gli ambienti critici. Garantisce inoltre

A COSTO ZERO
prestazioni affidabili e costanti, impedendo a perdita della vista o persino alla cecità se non
modifiche accidentali o configurazioni errate. individuata per tempo e trattata adeguatamente.
Poiché gli OS rimangono invariati dopo ogni Secondo l’International Diabetes Federation, nel
riavvio, si riduce la possibilità di problemi 2021 circa 537 milioni di adulti di età compresa
imprevisti o di guasti al sistema. Ciò è tra i 20 e i 79 anni erano affetti da diabete a
particolarmente importante in ambienti in cui i livello globale, ovvero circa 1 adulto su 10. Si
tempi di attività e la stabilità sono fondamentali,
come i server o i sistemi embedded. Inoltre, con La base della virtualizzazione è l’emulazione di altri OS: tutti sanno cos’è prevede che questo numero salirà a 643 milioni
nel 2030 e a 783 milioni nel 2045. Una persona
Virtualizza tutto, dal desktop all’ambiente di sviluppo! Sfrutta gratis la una distro immutabile il processo di manutenzione
e aggiornamento diventa più semplice ed VirtualBox ma chi ne conosce davvero i segreti? Eccoli!
con diabete su tre in media sviluppa la retinopatia
e poter fare screening di massa permetterebbe di

Scopri i trucchi per diventare un maestro di VirtualBox tecnologia dei efficiente. Invece di applicare patch o
aggiornamenti direttamente al sistema in
individuare molti più casi nelle fasi iniziali
fermando la malattia, ma farlo fare manualmente
TARIFFA R.O.C. - POSTE ITALIANE SPA - ABB. POST. - D.L. 353/2003 (CONV. IN L. 27/02/2004 N. 46) ART. 1, COMMA 1, S/NA - DISTRIBUTORE: PRESS-DI, SEGRATE

esecuzione, si crea una nuova istanza dell’OS con a dei medici richiederebbe risorse elevatissime e
Sviluppa in Python senza più errori di dipendenze e compatibilità colossi del cloud! on si può parlare di virtualizzazione di sistema, l’acquisizione di un’istantanea fornisce non disponibili a livello globale.

N
gli aggiornamenti necessari. In questo modo si
garantisce uno stato pulito e coerente del sistema senza dedicare una buona fetta della una rete di sicurezza. Se qualcosa va storto o non
Collaborazione tra medici e tecnici
10 pagine su Docker: dai container imperdibili a come creare il tuo a ogni aggiornamento, riducendo al minimo il
rischio di conflitti o problemi di compatibilità.
conversazione a VirtualBox. Il software si è soddisfatti delle modifiche, si può facilmente
Per insegnare all’Intelligenza Artificiale di Google
Inoltre, se si verificano inconvenienti durante il
libero e gratuito di emulazione di sistemi operativi tornare allo snapshot precedente, ripristinando a interpretare con precisione le scansioni della I cambiamenti
processo di update, è possibile ripristinare
p g
garantisce e che ogni
ogg parte del sistema sia a prova
Fedora Silverblue è un classico che la maggior parte degli utenti la macchina virtuale com’era. Le istantanee sono retina è stato necessario creare un set di dati Alphabet specializzata nel settore sanitario, per nella rete di vasi
offre un’esperienza
facilmente l’istanza precedente
precedentte del sistema di manomissione
manom missione e possa essere aggiornata simile a quella Linux conosce già e non servono lunghe uno strumento prezioso per la sperimentazione, specifico. Dei team di oftalmologi hanno dovuto affrontare le questioni normative e cliniche e sanguigni nella
suddividere un numero molto elevato di scansioni in ottenere l’approvazione dell’ARDA come dispositivo parte posteriore
un’opzione
operativo, il che offre un’opzio one di rollback molto in modo indipendente.
in
ndipende Permette inoltre di isolare che si ha introduzioni. Però chi sa davvero sfruttarne tutte i test e la garanzia di stabilità del sistema. C’è poi dell’occhio possono
pratica. Un ultimo, importante aspetto è che le e le applicazioni,
applicaz zioni, assicurando
asss che abbiano accesso utilizzando Fedora base al grado di gravità della retinopatia per medico. Sarà simile a un termometro o un
Workstation. le caratteristiche per usarlo al meglio? Abbiamo la compressione del disco virtuale: VirtualBox consentire al modello di assimilare le sfumature glucometro utilizzato da chi ha il diabete per
indicare la presenza
distro immutabili offrono vantaggi
vanttaggi in termini ni di
termini di soloo ai
ai dati
datti che devono
dee gestire. Per capire più nel di varie condizioni
Debian 12 è perfetta quindi trovato le funzioni più utili che non tutti fornisce un’utility chiamata VBoxManage,

QUANDO
Q UAND
UA NDO
NDO
D OL
L’I
L’
L’IA
IA
Fedora ha altre due necessarie a interpretarle. Inizialmente, il team di monitorare il livello di zucchero nel sangue.

IL BOOM DELLE
scalabilità e riproducibilità, soprattutto
sopprattutto in n ambienti
nti dettaglio
dettagli
detta aglio c
cosa popossiamo
os aspettarci da una cardiovascolari.
versioni immutabili:
di cloud computing o containerizzati.
containeerizzat Creando
C eand distribu
di tribuz
uz one di questo
distribuzione qu tipo, vediamo alcuni Kinoite e Sericea conoscono e che danno gran valore aggiunto che consente di comprimere i dischi virtuali, Google ha ricevuto supporto dagli oftalmologi degli Il team di Google ha
per business e e le abbiamo unite a quelle più diffuse ma che riducendone le dimensioni. Nel corso del tempo, ospedali Aravind e Sankara Nethralaya, in India, L’apprendimento profondo sul campo sviluppato algoritmi

8,8 GB
nuove istanze del sistema operativo
opeerativ per
per ogni progetti
dei proget
dei proge i più im importanti
m sul mercato. per analizzare le
deployment, diventa più facile e scalare
sca a
are
ree in
n basee alla
alla
a addestrando il modello a riconoscere alcuni segni Nel progetto di Google del 2018 (https://bit.
professionisti! domanda. Ciò semplifica la gestione
gestione di di Tre
Tr
Tre
re d
distro
iis
istr
stro per
er F
Fedora
Fe
vale la pena di approfondire meglio per capirne quando si apportano modifiche e si eliminano file chiave della retinopatia diabetica, come danni ly/3POZR39), utilizzando algoritmi di
immagini della
retina e identificare
DI SISTEMI deployment su larga scala e garantisce
garant sc cee ambienti
am
ambi
bieenti
en
nti Feddora
ora
ora S
Fedora Si verblue
Silverblue e è un sistema operativo
il valore vero. all’interno della macchina virtuale, il disco virtuale ai tessuti nervosi, gonfiore ed emorragia. In seguito apprendimento profondo (deep learning) addestrati indicatori di rischio

FA LA
LA DIAGNOSI
DIA
DI
D IAGNOSI
IA
OPERATIVI

DISTRO IMMUTABILI
LI
Crea la tua
tua IA per le
le foto coerenti e riproducibili tra le ddiverse istanze.
iverse isstan
tanze.
e imm
im
mmmuutab
tab e che utilizza
immutabile ut l’ambiente desktop potrebbe non ridursi automaticamente è stato coinvolto il sistema EyePACS, una rete sui dati di 284.335 pazienti, i ricercatori sono stati in
E APP! Gnome
Gnoome L’aspetto,
Gnome. L’a
aspetto o, la funzionalità e il Gestire la macchina virtuale per riflettere il nuovo utilizzo dello spazio. statunitense di telemedicina che ha condiviso grado di prevedere i fattori di rischio cardiovascolare
CLASSIFICAZIONE DI IMMAGINI un ampio database. È stato inserito oltre un milione dalle immagini della retina con un’accuratezza

1.000 SERVER
Container
Cont
tainerr e sand
sandbox
dbox
x in primo
priim
moo pi
pia
piano
iaan
ian
ano
no com
comp orta
ammento sono
comportamento s quelli di un normale sistema Cominciamo dagli snapshot: sono una potente La compressione del disco aiuta a ottimizzare di classificazioni per addestrare il modello di IA. sorprendentemente elevata per i pazienti di due serie
Riconosci oggetti e animali con un L’architettura di una distribuzio
distribuzione
one immutabile
immmutab lee operativo
op desktop
erativo deskto p e l’esperienza è simile a quella funzione di VirtualBox che consente di catturare l’uso dello spazio recuperando quello inutilizzato L’obiettivo principale del team era trasformarlo di dati indipendenti di 12.026 e 999 soggetti. Per
ruota attorno ai concetti di co ntainerizzazione
zzazion
containerizzazione utilizzando
che si ha u
utilizzan nd Fedora Workstation. Le
dispositivo da meno di 15 euro! e sandbox. Utilizzando ambienti
ambien nti di virtualizzazione applicazioni
oni grafiche
applicazio grafic c vengono installate tramite lo stato attuale di una macchina virtuale e di all’interno del disco virtuale, con uno sfruttamento in un dispositivo per l’analisi automatica di malattie esempio, l’algoritmo è riuscito a distinguere le
salvarlo come istantanea. Questo include l’intera più efficiente dello storage sul sistema host. retiniche chiamato ARDA (Automated Retinal immagini retiniche di un fumatore da quelle di un
come Docker e LXC (abbrevia
(abbreviazione
Containers), ogni componente
azione di Linux
e del sistema viene
Flatpak, che
e consente
c le tienee separate dal sistema di base
tie
consentte un controllo
con minuzioso dei loro configurazione del sistema, lo stato del disco, Compattando periodicamente i dischi virtuali,
Nuove frontiere dell’apprendimento
ll’apprendimento profondo pe permettono
ermettono di salvare vite Disease Assessment). Poiché nessuno nel team non-fumatore nel 71% dei casi. Oltre a riconoscere i
Stanno diventando sempre più popolari e molti ritengono che inserito in una sandbox sicura. Ciò consente permessi.. Se programmate,
prog g apprezzerete l’utility la memoria e i processi in esecuzione. Prima di è possibile liberare spazio e ridurre con l’identificazione precoce delle d malattie e facilitando il lavoro dei medici
aveva esperienza nella creazione di un dispositivo
medico, si sono rivolti a Verily, una società di
vari fattori di rischio (età, sesso, fumo, pressione
sanguigna, ecc.) dalle immagini retiniche, il loro
di creare ambienti isolati in cui ogni componente Toolbox, che utilizza
c utiliz z i contenitori per fornire un

A COSTO ZERO
! rappresentino il futuro di Linux, ma cosa le rende così speciali? è autonomo e permette al sistema di eseguire ambiente in cui in installare
n e utilizzare strumenti di
apportare modifiche significative alla macchina potenzialmente la dimensione complessiva dei file
NUOVO applicazioni non affidabili senza compromettere librerie.
sviluppo e librerie e Toolbox consente di virtuale, come l’installazione di aggiornamenti, di della macchina virtuale. Infine abbiamo la
I MECCANISMI DI ATTENZIONE NEL DEEP LEARNING
2 DVD DA SCARICAR
E L’Open Source salva le vite!
L’O
L’Ope la sicurezza generale della macchina. Questo organizzare
organizza strumenti
re gli strr di sviluppo per progetto nuovo software o la modifica delle configurazioni gestione a riga di comando. Sempre con giugno Sundar Pichai,
ai,
a apprendimento
ndimento automatico, l’IA di
appren non è però l’unica applicazione
CON IL CODICE
A
econdo le dichiarazioni del embedded, l’IoT e l’esecuzione di sistema operativo principale e e l’una

S
CEO di Google e della a Google e è in grado di identificare segni dell’Intelligenza Artificiale alla Le tecniche di attenzione o elementi all’interno di una sequenza il rilevamento di oggetti, la
IN
ALL’INTERNO TE
Dagli strumenti open ai tumori trovati per team di Fedora, le varianti container, ma possono essere una dall’altra, tipicamente attraverso
erso la sua casa madre Alphabet, abet,
a e pattern
patte ern sottili legati alla salute diagnosi delle malattie, un campo in nell’Intelligenza Artificiale e in base alla loro rilevanza reciproca. classificazione e didascalizzazione
ESCLUSIVA PER tempo dall’Intelligenza Artificiale, ecco la immutabili rappresentano soluzione vincente anche come distro containerizzazione. In questo to modo I LIMITI DEI SISTEMI OPERATIVI IMMUTABILI
IMMUT
TABIL
L ha annunciato uno sviluppo
iluppo cardiovascolare
cardiov vascolare analizzando immagini grande espansione che potrebbe nell’apprendimento profondo sono Per attività come l’elaborazione del di immagini e la loro segmentazione,
la maggior parte delle di uso quotidiano e per i server. le modifiche apportate da una na rivoluzionario nel campo della salute
alute
a dettagliate
dettaglliate dell’occhio. Come cambiare il futuro di tutti. meccanismi che consentono ai modelli linguaggio naturale, in cui il modello sfruttate in alcune delle applicazioni
rivoluzione della medicina grazie a Linux versioni di Fedora Linux in uso. applicazione non possono influenzare
fluenzare cardiovascolare. Utilizzando approfondiremo
approfo ondiremo in seguito, l’algoritmo di concentrarsi su parti o deve essere in grado di comprendere diagnostiche presentate in questo
La prossima release di supporto a
lungo termine di Ubuntu offrirà quasi
Cosa sono nella pratica
Una distro immutabile è un sistema
il sistema centrale o altri programmi.
ogrammi. Se da un lato le distribuzioni immutabili offrono numerosi vantagg
vantaggi,
delle sfide associate alla loro implementazione, tra cui meno fless
ggi, dall’al
dall’altro
La virtualizzazione è una tecnologia in costante evoluzione: scoprite come trarne
lt vi sono anche
sibilità e possibilità di personalizzazione.
flessibilità
l’Intelligenza Artificiale (IA) per
analizzare le scansioni oculari, la a
di intelligenza
intelligenza artificiale è stato
addestrato
addesttrato su un ampio dataset
Retina
Rettin
na e di
diabete
iabete
te
La tecnologia di Google nasce
caratteristiche specifiche dei dati
in ingresso. Mirano a migliorare la
i collegamenti tra le varie parole, è
fondamentale. Un’altra tecnica diffusa
articolo. I meccanismi di attenzione
possono anche essere combinati
I vantaggi che offrono
Bimestrale - N.220 - 7,90 €
Sistema operativo
S Programmazione
certamente una build immutabile,
basata solo su Snap, in aggiunta a
operativo progettato per essere
inalterabile e in sola lettura. Una volta Uno dei principali vantaggi dell’utilizzo
ell’utilizzo
Gli utenti non possono infatti modificare i file di sistema nella stes
distribuzione tradizionale e questo può essere penalizzante per chi
ssa misu
stessa
c è abit t
abituato il massimo per risparmiare e migliorare l’efficienza dei vostri server
u in cui possono farlo con una
misura
alla libertà offerta da Linux.
tecnologia di Google è ora in grado ado
a
di prevedere gli eventi cardiovascolari,
scolari,
s
e ha mostrato
mostrato un tasso di accuratezza
del 70% % nella previsione di attacchi
da un progetto condotto cinque anni
fa da un team di ricercatori di Google
capacità del modello di concentrarsi
sulle informazioni rilevanti, filtrando
è l’attenzione spaziale, spesso utilizzata
nei compiti di computer vision.
con le reti neurali ricorrenti (RNN).
In questo approccio, il meccanismo
quelle classiche e molte altre distro installato l’OS, i file e le directory di dei sistemi operativi immutabili
abili Possono inoltre verificarsi problemi di compatibilità con le applicazioni
applicaazioni e i servizi, in particolare con il come per esempio l’infarto. Potrebberrebbe cardiaci
cardiac ci ed eventi cardiovascolari, e dell’Aravind Eye Hospital in India invece quelle irrilevanti o ridondanti. Permette al modello di concentrarsi su di attenzione aiuta il modello a
Distribuzioni immutabili
D Crea videogiochi arcade immutabili sono già diventate molto sistema non possono essere frono.
è la grande sicurezza che offrono. software per computer desktop. I sistemi desktop richiedono infa infatti un’integrazione
fatti un’inn più stretta tra le in futuro sostituire metodi diagnostici
nostici
n un risultato
risulltato analogo a quello dei per sviluppare uno strumento Sono ampiamente utilizzate in vari regioni o aree specifiche di focalizzarsi selettivamente su diverse
popolari. E sembra proprio che le modificati direttamente dagli utenti o Poiché i file di sistema sono di sola continuità
applicazioni per garantire un’esperienza d’uso senza soluzione di continui it rispetto ai server o ai reare server virtuali consolidamento inoltre riduce elettrica nel tempo e a un minore

C
I segreti delle distro 100% Con Godot programmare tradizionali come TAC, risonanze ze e metodii tradizionali. Se ulteriormente automatizzato per rilevare la campi, tra cui l’elaborazione del un’immagine ritenute rilevanti per il parti della sequenza di input a ogni
distro immutabili non siano affatto una dalle applicazioni. Per apportare lettura, qualsiasi tentativo di modifica dispositivi dell’Internet delle Cose (IoT). È inoltre necessario pren
prendere
ndere in c considerazione lo spazio su sudisco,
una sola macchina, la necessità di comprare hardware footprint ecologico: non male! magnetiche e radiografie. convalidata
convaliidata e sviluppata, questa retinopatia diabetica. Quest’ultima linguaggio naturale, la visione artificiale compito da svolgere, assegnando pesi passo temporale, consentendogli
s
sicure: sono il futuro di Linux videogame è Open e facilissimo moda del momento. In alcuni scenari, aggiornamenti o modifiche viene fallisce. In questo modo si evitano
vitano poiché il fatto di avere applicazioni isolate può portare a una ridondanza
ridonndanza n nell’archiviazione delle loro Questo approccio innovativo mira rra tecnologia
tecnolo ogia sarebbe un metodo non è una complicanza del diabete che e la traduzione automatica. di attenzione a differenti posizioni di catturare le dipendenze ad ampio
P.I. 10-08-2023 Agosto-Settembre
infatti, si spingono un passo oltre i creata, installata e attivata una nuova interventi non autorizzati e sii riduce dipendenze, che non possono più essere condivise. Dal punto di vista v degli
deg
emulare sistemi operativi
g sviluppatori, infine, anche se c’è
aggiuntivo, con conseguente Ma c’è ovviamente molto di più,
a rivoluzionare la diagnosi precoce oce invasivo
invasivvo ed economico per prevedere colpisce gli occhi. Si verifica quando Un meccanismo di attenzione molto spaziali, enfatizzando le regioni raggio e di migliorare le prestazioni in
sistemi Linux tradizionali, offrendo istanza del sistema operativo il rischio di malware o di attacchi
acchi l’indiscutibile vantaggio della riproducibilità, adottare i sistemi ope erativi im
operativi m
immutabili sul desktop, tutelarsi da
può rendere difficile risparmio sui costi di acquisto incluso limitare i problemi legati allo e la prevenzione delle malattie le malattie
malaattie cardiache e potrebbe i livelli elevati di zucchero nel sangue diffuso è chiamato self-attention o importanti e riducendo l’importanza di compiti quali la traduzione automatica,
un’opzione più sicura e affidabile. Sono e gli aggiornamenti vengono applicati malevoli. Isolando il sistema operativo compresi
utilizzare strumenti e flussi di lavoro a cui si è abituati. Una volta c
compres si i meccanismi problemi di sviluppo con il coding
delle distribuzioni dei server, sul raffreddamento, sviluppo di app e poter testare cardiache, che rappresentano la a ridurre in modo significativo i decessi danneggiano i vasi sanguigni della autoattenzione. Permette al modello quelle trascurabili. Questa tecnica è il riconoscimento vocale e l’analisi
COP_001_LXP220_cover.indd 1 20/07/2023 02:56:37
particolarmente utili in applicazioni in modo atomico (tutti in una volta). da potenziali minacce, una distro
istro immutabili, quindi, sta a voi scegliere quando usarle in base ai pro progetti
ogetti e a al vostro metodo di lavoro. virtuali... le occasioni
in ambienti sui requisiti di spazio fisico e anche diversi OS velocemente. Nelle principale causa di mortalità a livello
vello
v a esse legate. Questo strumento retina, la parte sensibile alla luce di pesare l’importanza di diverse parole particolarmente utile per compiti come del sentiment nei testi.
come il cloud computing, i sistemi Le applicazioni sono isolate dal immutabile offre una soluzioneone mondiale. Grazie ad algoritmi di dall’impatto
dall’imppatto potenzialmente enorme all’interno dell’occhio. Può portare
per trarre il massimo da questa in generale sulle risorse necessarie prossime pagine abbiamo messo
tecnologia sono tante. per garantirne la sicurezza. insieme davvero il meglio dei trucchi
20 LINUX PRO 220 La virtualizzazione LINUX PRO 220 21
consente Consolidando più server su un minor e delle tecniche per virtualizzare al 24 LINUX PRO 220 LINUX PRO 220 25
anzitutto di consolidare più server in numero di macchine fisiche, top e a pagina 40 trovate i migliori
un’unica macchina fisica, eseguendo la virtualizzazione riduce anche container “prefabbricati” per Docker
più macchine virtuali (o VM da il consumo energetico, portando con cui partire subito. E allora...
Virtual Machine) su di essa. Questo a risparmi significativi sulla bolletta buona virtualizzazione a tutti! In modalità Seamless le applicazioni risultano funzionare tutte sullo stesso desktop, sia quelle del guest sia quelle dell’host

8 LINUX PRO 220 LINUX PRO 220 9

LINUX PRO 219 3


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

Sul DVD di Distro


questo mese...
Debian 12 bookworm
C
Giochi e strumenti ome i creatori di Debian ci tengono di questo campo. Per i radioastronomi è stato
da installare subito! a sottolineare, è stato necessario addirittura incluso il correlatore openvlbi.
aspettare un anno, nove mesi e Andando invece a dare un’occhiata a uno
Debian 12 ventotto giorni per avere la versione degli ambienti desktop più diffusi, GNOME,
stabile del loro sistema operativo, che scoprirete che l’interfaccia è estremamente
Peppermint OS 2023-07-01
è la numero 12 e che si chiama bookworm. minimalista con una sola barra superiore con
La nuova creatura del team di sviluppo verrà tre uniche funzioni. A sinistra c’è Attività, al
supportata per 5 anni grazie alla centro il calendario e a destra il menu con le
Le migliori collaborazione tra il gruppo per la sicurezza di regolazioni e le funzioni di spegnimento.
distro Debian e il gruppo Debian Long Term Facendo click sul primo pulsante, visualizzate
Support. Un’altra importante notizia da le aree di lavoro disponibili e una dock
sapere è che, in base alla risoluzione generale personalizzabile con le vostre applicazioni
Fatdog64
del 2022 sul firmware non libero, è stata preferite. Di default ha i pulsanti per avviare
pfSense 2.7.0 introdotta una nuova area dell’archivio per Firefox, Evolution e LibreOffice Writer.
separare i firmware non liberi dagli altri Inoltre, ha i classici pulsanti per accedere a
Q4OS 5.2
pacchetti non liberi. Debian 12 viene File, per attivare Software e la schermata di
Tails 5.15.1 distribuito con ben sei diversi ambienti Aiuto. L’ultimo pulsante è quello che serve a
desktop, tra cui GNOME, KDE e MATE. visualizzare tutte le applicazioni attualmente
Va inoltre evidenziata la compatibilità presenti nel sistema operativo. Software ha
con moltissime architetture diverse, anche anche la funzione di mantenere aggiornati
I migliori programmi con l’ormai desueto 32 bit, sebbene il tutti i pacchetti di Debian 12 tramite la
selezionati p. 36 requisito minimo sia un processore i686 sezione Aggiornamenti. Nel menu a destra
e non più i586 come in precedenza. troverete invece i pulsanti per passare
Sniffnet 1.2.1 automaticamente alla modalità Dark e per

Bavarder 0.2.3
Novità e modalità d’uso attivare le funzioni di risparmio energetico,
Rispetto alla versione antecedente, che si oltre a quello per visualizzare le Impostazioni.
Halftone 0.3.1 chiamava bullseye, Debian 12 ha dato un
notevole colpo di acceleratore sotto diversi
Nativefier 50.1.11 aspetti. Per esempio: ha ben 11.089 nuovi
Tubeconverter V2023.6.1 pacchetti e il 67% di quelli già presenti è stato SCARICA SUBITO
Tagspaces 5.4.2
aggiornato. È stato invece rimosso circa I DUE DVD COMPLETI
il 10% dei pacchetti precedenti per diverse
ragioni, soprattutto per questioni di INSERENDO IL CODICE
obsolescenza. Ci sono novità anche per due
famosi blend di questo sistema operativo.
RTHMVRS
Per quanto riguarda Debian Med, sono stati
aggiunti nuovi pacchetti relativi al campo
della medicina e delle scienze della vita.
Da sottolineare l’introduzione del nuovo
pacchetto shiny-server, che ha l’obiettivo
di semplificare le applicazioni Web
scientifiche che usano R. Anche Debian Astro
ha avuto la sua dose di miglioramenti. Infatti
Debian 12 viene fornito con la versione 4.0 di www.sprea.it/LXP220_DVD
Debian Astro Pure Blend, dedicata a tutti gli
appassionati di astronomia e ai professionisti

4 LINUX PRO 220


Un’installazione molto dettagliata

Avvio della procedura Installazione della lingua


Nella schermata del GRUB che viene visualizzata, lasciate Nella schermata che segue vedrete un messaggio che avverte
selezionato Graphical install e premete INVIO. In quella che la lingua italiana non è stata ancora completamente
successiva, scorrete l’elenco delle lingue fino a selezionare installata, quindi selezionate Sì per autorizzarne l’installazione
Italian - Italiano, dopodiché fate click su Continue per e fate click su Continua. Poi selezionate Italia e premete
procedere con il passo successivo. nuovamente su Continua per avviare l’installazione della lingua.

Tastiera e rete Creazione del profilo utente


Nella schermata Configurare la tastiera, lasciate selezionata Nella schermata Impostazione utenti e password, compilate
Italiana e fate click su Continua. Dopo il rilevamento di alcuni i due campi disponibili con una password sicura e fate click su
elementi del vostro computer, appare la schermata Continua. Poi digitate un nome utente in quella successiva e
Configurare la rete. Datele un nome e premete su Continua. premete su Continua per due volte. Poi vi verrà chiesto di digitare
Quindi digitate il nome del dominio e premete su Continua. nuovamente due password per l’account. Fate click su Continua.

Partizioni Installazione
In Partizionamento dei dischi selezionate Guidato - usa l’intero Lasciate No alla richiesta di analisi di supporti aggiuntivi e
disco e fate click su Continua. Selezionato il disco di destinazione premete su Continua. Fate lo stesso quando vi viene chiesto di
premete su Continua. Lasciate Tutti i file in una partizione e fate usare un mirror. Fate click su Continua e negate il permesso alla
ancora click su Continua. Autorizzate le modifiche e premete su raccolta dati. Scegliete il software da installare, poi autorizzate
Continua. Poi selezionate Sì e fate click su Continua. l’installazione del boot loader GRUB e riavviate. LXP

LINUX PRO 220 5


Newsdesk

Newsdesk
RedHat cambia l’accesso
a RHEL ed è bufera
Red Hat Enterprise Linux è alla base di numerose altre distribuzioni
ma il mondo Open Source è già corso ai ripari

ed Hat ha annunciato a fine accaloratamente


R giugno (https://bit.ly/3NZPMh7)
che limiterà l’accesso pubblico
difeso la sua
posizione e ha
al codice sorgente di Red Hat Enterprise dichiarato di
Linux (RHEL) a CentOS Stream. Questa rimanere
decisione ha suscitato la preoccupazione impegnata nello
di alcuni membri della comunità Linux, sviluppo Open
poiché RHEL è essenziale per molti Source e di
progetti Open Source, come Rocky Linux, continuare a
AlmaLinux e Oracle Linux. Il team di contribuire con
Rocky Linux, per esempio, ha espresso il proprio codice
il suo disappunto per la scelta di Red Hat upstream (https://
in termini poco equivoci (https://bit. bit.ly/44vJe0R).
ly/3K68piq), scrivendo: “I Termini di Un importante L’annuncio della limitazione dell’accesso
pubblico al codice sorgente di RHEL ha
Servizio e gli Accordi di Licenza con sviluppo in questa catena di eventi
suscitato forti reazioni di alcuni membri della
l’Utente Finale di Red Hat impongono è che SUSE intende investire 10 milioni
comunità Linux e delle distribuzioni che sono
condizioni che cercano di ostacolare di dollari per creare un fork di RHEL e basate su quella di Red Hat
i clienti legittimi nell’esercizio dei loro sviluppare una distribuzione compatibile.
diritti garantiti dalla licenza GPL. Mentre
la comunità discute se ciò violi la GPL,
noi crediamo fermamente che tali accordi SVILUPPI FUTURI
violino lo spirito e lo scopo dell’Open
Source”. AlmaLinux ha espresso concetti SUSE intende investire 10 milioni di dollari
non dissimili (https://bit.ly/44uaEE5).
La decisione di Red Hat di limitare per creare un fork di RHEL e sviluppare
l’accesso al codice sorgente di RHEL
si ripercuote su altre distribuzioni Linux una distribuzione compatibile
in diversi modi, ma tutti sono determinati
a continuare con i propri aggiornamenti
senza creare problemi agli utenti, anche SUSE dichiara di mirare a preservare
se ora la procedura risulta più complessa. l’innovazione e a fornire ai clienti
AlmaLinux ha sottolineato che il futuro e alla comunità Open Source delle scelte
della distribuzione è roseo, ma ha deciso autentiche. Anche se non c’è una data
di abbandonare l’obiettivo di essere di rilascio precisa, l’investimento
compatibile 1:1 con RHEL (https://bit. significativo garantisce il progresso
ly/3Q4cQOr). Nel frattempo Red Hat ha del progetto nei prossimi anni.

6 LINUX PRO 220


Buon trentesimo compleanno LE EMAIL
a Slackware Linux! DECOLLANO
Il popolare client per la
La prima distribuzione indipendente della storia posta elettronica Open
Source Thunderbird ha
continua ad avere il suo seguito tra gli utenti avanzati rilasciato la sua ultima
versione, Thunderbird
115 Supernova (https://
n’importante pietra miliare nella né la risoluzione automatica delle bit.ly/3DlY1iQ). La nuova
U storia di Linux è stato il primo
rilascio stabile di una distribuzione
dipendenze. La sua ultima versione stabile
15.0, basata sul kernel Linux 5.15 LTS
uscita è caratterizzata
da una completa
GNU/Linux sviluppata in modo con supporto a lungo termine, è stata riprogettazione
indipendente. Il suo nome era Slackware annunciata nel febbraio 2022 (https://bit. dell’interfaccia utente
Linux 1.0 e fu pubblicata da Patrick ly/3O1ZeA) ed è inoltre disponibile un mirata a offrire agli
Volkerding il 16 luglio 1993 come ramo di sviluppo su https://bit.ly/3DiyeIj. utenti un’esperienza
“un sistema di installazione completo Anche se Slackware potrebbe non essere più elegante e coerente.
progettato per sistemi con un floppy la scelta ideale per i principianti o per Il restyling fa parte
di avvio da 3,5 pollici”. Trent’anni sono chi cerca una distribuzione con un’ampia di un piano triennale
(da poco) passati e non possiamo che gamma di pacchetti preconfigurati, è di modernizzazione
celebrare la longevità di questa distro, apprezzata da chi desidera una base solida del client di posta
la cui filosofia di mantenere la semplicità, e affidabile per costruire il proprio sistema elettronica e della sua
la stabilità e l’aderenza alle tradizioni del Linux personalizzato. Grazie alla sua lunga codebase, inaugurato
sistema operativo Unix è rimasta immutata storia e alla fedeltà alla filosofia Unix, dopo la decisione di
dalla sua prima beta. S
Slackware continua Mozilla di interrompere
Ha infatti sempre iinfatti ad avere una il supporto per il
mirato a essere è la ssolida base di utenti prodotto (https://bit.
distribuzione Linux “più e una comunità di ly/44SHjTE), presa a
simile a Unix” e apporta sviluppatori dedicati.
s febbraio. Nel complesso,
il minor numero Thunderbird 115
possibile di modifiche Supernova offre
ai pacchetti software. A un’interfaccia moderna
differenza della maggior e funzionalità migliorate,
parte delle distro Slackware Linux 1.0, la oltre a risultare più
moderne, Slackware non prima distro indipendente, veloce, anche se i vecchi
fu rilasciata da Patrick
prevede una procedura utenti dovranno
Volkerding il 16 luglio 1993
di installazione grafica prenderci la mano.

RACCOLTA
PDF
LINUX PRO
Acquista la raccolta
PDF digitale del 2022
7 numeri a soli 5,90 €
anziché 47,30 € vai su
www.sprea.it/raccoltalxp2022

LINUX PRO 220 7


Cover story 1.000 server a costo zero

1.000 SERVER
A COSTO ZERO
La virtualizzazione è una tecnologia in costante evoluzione: scoprite come trarne
il massimo per risparmiare e migliorare l’efficienza dei vostri server
reare server virtuali consolidamento inoltre riduce elettrica nel tempo e a un minore

C su una sola macchina,


emulare sistemi operativi
sul desktop, tutelarsi da
la necessità di comprare hardware
aggiuntivo, con conseguente
risparmio sui costi di acquisto
footprint ecologico: non male!
Ma c’è ovviamente molto di più,
incluso limitare i problemi legati allo
problemi di sviluppo con il coding dei server, sul raffreddamento, sviluppo di app e poter testare
in ambienti virtuali... le occasioni sui requisiti di spazio fisico e anche diversi OS velocemente. Nelle
per trarre il massimo da questa in generale sulle risorse necessarie prossime pagine abbiamo messo
tecnologia sono tante. per garantirne la sicurezza. insieme davvero il meglio dei trucchi
La virtualizzazione consente Consolidando più server su un minor e delle tecniche per virtualizzare al
anzitutto di consolidare più server in numero di macchine fisiche, top e a pagina 40 trovate i migliori
un’unica macchina fisica, eseguendo la virtualizzazione riduce anche container “prefabbricati” per Docker
più macchine virtuali (o VM da il consumo energetico, portando con cui partire subito. E allora...
Virtual Machine) su di essa. Questo a risparmi significativi sulla bolletta buona virtualizzazione a tutti!

8 LINUX PRO 220


CSS Prog
rammare
da pro i fogli
stile per
il Web
NEL
WEB
DVD
Debian 12
le istruzio
istruzioni
oni
a pagina ni
4

Fatdog64
L’unic a pfSense
2.7.0
guida libera Q4OS 5.2
al mond Peppermint
o dell’O OS
Tails 5.15.1 2023-07-01

1.000 SERV
pen Sourc
e PR
ROO
Sniffnet
Bavarder
e molto altro...

A COSTO ER
Virtualizza
tutto,
Scopri i trucchi
dal deskto
p all’amb
ZERO

SEGRATEE
per diventa iente di svilupp
Sviluppa in
Python senza re un maestro di VirtualB

PRESS-DI,
o!
10 pagine su più errori di ox Sfrutta grati

1, S/NA - DISTRIBUTORE:
Docker: dai dipende
container imperdib nze e compatibilità tecnologi s la
ili a come creare
il tuo colossi del a dei
cloud!

1, COMMA
N. 46) ART.
Debian 12
8,8 GB è perfett
per busine a

L. 27/02/2004
DI SISTE ss e
OPER MI professionist
ATIVI

(CONV. IN
E APP! i!

- D.L. 353/2003
Crea la tua
CLASSIFICAZIONEIA per le foto

POST.
SPA - ABB.
Riconosc DI IMMAGIN
dispositiv
i oggetti
e animali I
o da meno con

ITALIANE
NUOVO! di 15 euro! un
2 DVD DA SCARICARE

R.O.C. - POSTE
CON IL CODICE
ALL’INTERNO
ESCLUSIVA PERIN L’O n
L’Ope
TE Source

TARIFFA
salva
Dagli strumen le vite!
Bimestrale
- N.220
- 7,90 €
tempo dall’Intelti open ai tumori
rivoluzion ligenza Artificialtrovati per
e della medicina e, ecco
Sistema
S
operati grazie a Linuxla
P.I. 10-08-2023 Distribuzioni
D vo
Agosto-Settem
bre I segreti delle immutabili Program
si
sicure: distro 100% mazion

I trucchi per usare


sono il futuro Crea videogi e
COP_001_LXP di Linux
220_cover.indd
1 Con Godot ochi arcade
videogam programm
e è Open are
e facilissim
o

20/07/2023
02:56:37

al massimo VirtualBox
La base della virtualizzazione è l’emulazione di altri OS: tutti sanno cos’è
VirtualBox ma chi ne conosce davvero i segreti? Eccoli!

on si può parlare di virtualizzazione di sistema, l’acquisizione di un’istantanea fornisce


N senza dedicare una buona fetta della
conversazione a VirtualBox. Il software
una rete di sicurezza. Se qualcosa va storto o non
si è soddisfatti delle modifiche, si può facilmente
libero e gratuito di emulazione di sistemi operativi tornare allo snapshot precedente, ripristinando
è un classico che la maggior parte degli utenti la macchina virtuale com’era. Le istantanee sono
Linux conosce già e non servono lunghe uno strumento prezioso per la sperimentazione,
introduzioni. Però chi sa davvero sfruttarne tutte i test e la garanzia di stabilità del sistema. C’è poi
le caratteristiche per usarlo al meglio? Abbiamo la compressione del disco virtuale: VirtualBox
quindi trovato le funzioni più utili che non tutti fornisce un’utility chiamata VBoxManage,
conoscono e che danno gran valore aggiunto che consente di comprimere i dischi virtuali,
e le abbiamo unite a quelle più diffuse ma che riducendone le dimensioni. Nel corso del tempo,
vale la pena di approfondire meglio per capirne quando si apportano modifiche e si eliminano file
il valore vero. all’interno della macchina virtuale, il disco virtuale
potrebbe non ridursi automaticamente
Gestire la macchina virtuale per riflettere il nuovo utilizzo dello spazio.
Cominciamo dagli snapshot: sono una potente La compressione del disco aiuta a ottimizzare
funzione di VirtualBox che consente di catturare l’uso dello spazio recuperando quello inutilizzato
lo stato attuale di una macchina virtuale e di all’interno del disco virtuale, con uno sfruttamento
salvarlo come istantanea. Questo include l’intera più efficiente dello storage sul sistema host.
configurazione del sistema, lo stato del disco, Compattando periodicamente i dischi virtuali,
la memoria e i processi in esecuzione. Prima di è possibile liberare spazio e ridurre
apportare modifiche significative alla macchina potenzialmente la dimensione complessiva dei file
virtuale, come l’installazione di aggiornamenti, di della macchina virtuale. Infine abbiamo la
nuovo software o la modifica delle configurazioni gestione a riga di comando. Sempre con

In modalità Seamless le applicazioni risultano funzionare tutte sullo stesso desktop, sia quelle del guest sia quelle dell’host

LINUX PRO 220 9


Cover story 1.000 server a costo zero

VBoxManage, abbiamo a disposizione ampie e migliora la produttività eliminando la necessità


TIP capacità per fare ogni genere di operazione di passare continuamente dall’ambiente guest a
con le macchine virtuali in questo modo. quello host. Su Linux possono esserci problemi
Mantenete
Possiamo usarlo per creare, configurare e di compatibilità quando si emula Windows ma
VirtualBox
aggiornato controllare macchine virtuali, reti e risorse di un utente su Reddit le ha risolte brillantemente
installando storage. Offre un’ampia gamma di comandi e per una versione non attuale di Ubuntu. L’utente
l’ultima versione opzioni per automatizzare le attività più comuni, Teh_ROkER ha infatti notato che su alcune distro
disponibile sul come la creazione, l’eliminazione e il controllo Linux, questa modalità non funziona ed è come
sito ufficiale dell’esecuzione delle macchine virtuali e la usare la VM in modalità a tutto schermo. Però
di VirtualBox modifica delle loro impostazioni. Permette inoltre ha scoperto che Windows disegna elementi di
o attraverso la gestione delle istantanee. Il controllo da riga nascosto che di fatto coprono quelli sottostanti
il gestore di di comando tramite VBoxManage consente infine invece che lasciare il desktop come trasparente.
pacchetti
lo scripting e la gestione delle interfacce di rete. In particolare, un eseguibile che si trova sotto Edge
della vostra
nel task manager, chiamato “User Interface
distribuzione. Le
nuove versioni Accessibilità e massima integrazione Service”, va eliminato. Poi bisogna rinominare la
spesso includono Avete mai usato le cartelle condivise in cartella delle applicazioni in cui si trova Edge, in
miglioramenti VirtualBox? Se no, fatelo subito! Offrono un modo modo che anche dopo il riavvio la modifica di cui
delle prestazioni, pratico per condividere file e cartelle tra il sistema sopra rimanga attiva. Infine va usato VboxSVGA
correzioni di operativo host (quello che esegue VirtualBox) e il per disabilitare in Windows l’accelerazione 3D e 2D.
bug e nuove sistema operativo guest (ossia l’OS in esecuzione
funzionalità all’interno della macchina virtuale). Impostando Connessione totale
che migliorano le cartelle condivise, è possibile trasferire senza In VirtualBox potete collegare i dispositivi USB
l’esperienza
problemi file e dati tra il sistema host e quello direttamente alla macchina virtuale, garantendo
complessiva.
guest, senza dover ricorrere a complesse al sistema operativo guest l’accesso diretto a essi.
configurazioni di rete o a dispositivi di Abilitando l’USB passthrough, è possibile
archiviazione esterni. Le cartelle condivise utilizzare senza problemi le periferiche USB
appaiono come unità di rete o directory all’interno all’interno della macchina virtuale, proprio come
del sistema operativo guest, consentendo un se fossero collegate a una macchina fisica.
facile accesso e la manipolazione dei file. Questa Questa funzione è particolarmente utile per
funzione semplifica la collaborazione e lo scambio accedere a strumenti quali dischi rigidi esterni,
di dati tra i sistemi operativi host e guest, unità flash USB, stampanti, scanner, fotocamere
rendendola ideale per la condivisione di o dispositivi mobili dall’interno della macchina
documenti, file di codice o altre risorse. C’è poi virtuale. Il passthrough USB semplifica il
la modalità Seamless, che è molto interessante. trasferimento dei dati, la stampa o qualsiasi altra
Migliora l’integrazione tra il sistema operativo operazione che richieda l’interazione tra il sistema
guest e l’ambiente desktop del sistema operativo operativo guest e i dispositivi USB. C’è poi la
host. Quando si attiva la modalità Seamless in comodità della rete virtuale in VirtualBox, che
VirtualBox, le applicazioni del sistema operativo consente di creare e configurare reti virtuali per le
guest appaiono come se fossero in esecuzione macchine virtuali. No, non è la trama di Inception
direttamente sul desktop host, integrandosi in versione nerd ma consente a più macchine
perfettamente con la sua interfaccia utente. virtuali di comunicare tra loro, oltre che con
Ciò significa che è possibile avviare le applicazioni il sistema host e le reti esterne. È possibile
del sistema operativo guest e interagire con esse impostare diverse modalità di rete, come
senza dover cambiare finestra o passare da NAT (Network Address Translation), Bridged
un desktop all’altro. Le applicazioni guest si Networking o Host-only Networking,
integrano perfettamente con la barra delle a seconda delle esigenze. Il NAT fornisce
applicazioni o il pannello dell’host e le finestre l’accesso a Internet alle macchine virtuali
possono essere ridimensionate e spostate attraverso la connessione di rete dell’host, il
liberamente sia sul desktop host sia su quello Bridged Networking collega le macchine virtuali
guest. La modalità Seamless offre così direttamente alla rete fisica e l’Host-only
un’esperienza utente coesa Networking consente la comunicazione solo
tra le macchine virtuali e il sistema host.
Un altro aspetto molto interessante di VirtualBox
ISTANTANEE DI SICUREZZA è la funzionalità di visualizzazione remota che
consente di accedere alle macchine virtuali e
“Avvantaggiatevi sempre degli snapshot: controllarle in remoto da altri computer della rete.
Configurando protocolli di visualizzazione remota
salvate l’intero OS prima di fare come Remote Desktop Protocol (RDP)
o utilizzando VirtualBox Extension Pack,
aggiornamenti critici per poter è possibile infatti stabilire connessioni remote alle
macchine virtuali senza essere fisicamente
tornare indietro in caso di errori” presenti sulla macchina host. Questa funzione è

10 LINUX PRO 220


CSS Prog
rammare
da pro i fogli
stile per
il Web
NEL
WEB
DVD
Debian 12
le istruzio
istruzioni
oni
a pagina ni
4

Fatdog64
L’unic a pfSense
2.7.0
guida libera Q4OS 5.2
al mond Peppermint
o dell’O OS
Tails 5.15.1 2023-07-01

1.000 SERV
pen Sourc
e PR
ROO
Sniffnet
Bavarder
e molto altro...

A COSTO ER
Virtualizza
tutto,
Scopri i trucchi
dal deskto
p all’amb
ZERO

SEGRATE
per diventa iente di svilupp
Sviluppa in
Python senza re un maestro di VirtualB

PRESS-DI,
o!
10 pagine su più errori di ox Sfrutta grati

1, S/NA - DISTRIBUTORE:
Docker: dai dipende
container imperdib nze e compatibilità tecnologi s la
ili a come creare
il tuo colossi del a dei
cloud!

1, COMMA
N. 46) ART.
Debian 12
8,8 GB è perfett
per busine a

L. 27/02/2004
DI SISTE ss e
OPER MI professionist
ATIVI

(CONV. IN
E APP! i!

- D.L. 353/2003
Crea la tua
CLASSIFICAZIONEIA per le foto

POST.
SPA - ABB.
Riconosc DI IMMAGIN
dispositiv
i oggetti
e animali I
o da meno con

ITALIANE
NUOVO! di 15 euro! un
2 DVD DA SCARICARE

R.O.C. - POSTE
CON IL CODICE
ALL’INTERNO
ESCLUSIVA PERIN L’O n
L’Ope
TE Source

TARIFFA
salva
Dagli strumen le vite!
Bimestrale
- N.220
- 7,90 €
tempo dall’Intelti open ai tumori
rivoluzion ligenza Artificialtrovati per
e della medicina e, ecco
Sistema
S
operati grazie a Linuxla
P.I. 10-08-2023 Distribuzioni
D vo
Agosto-Settem
I segreti immutabili
bre
sicure: sonodelle distro 100% Program
mazion

molto utile negli scenari in cui è necessario


COP_001_LXP
il futuro di
Linux Crea videogi e
220_cover.indd
ndd 1 Con Godot ochi arcade
videogam programm
e è Open are
e facilissim
o

20/07/2023
02:

accedere a macchine virtuali situate su server


remoti a scopo di collaborazione o risoluzione dei
problemi e aumenta la flessibilità e l’accessibilità
nella gestione dell’infrastruttura virtuale.

Estenderne le funzionalità
Siamo quindi arrivati alla fase di ottimizzazione
e aggiunta di funzionalità. A tal proposito, Guest
Additions è un insieme di utility e driver software
forniti da VirtualBox per i sistemi operativi guest
davvero molto interessante. Installandoli
all’interno del sistema operativo guest è possibile
migliorarne le prestazioni, le funzionalità e
l’integrazione con il sistema host. Abilitano
funzioni come il supporto grafico e video È sempre possibile creare immagini per macchine virtuali ma su OSBoxes
(https://osboxes.org) trovate già tantissime immagini pronte e già configurate
migliorato, l’integrazione perfetta del mouse,
la funzionalità di appunti condivisi, le cartelle
condivise e i driver con prestazioni migliorate. al programma. Assicuratevi che il sistema host
E per chiudere questa panoramica non possiamo disponga di abbastanza risorse di sistema come
non menzionare la modalità Headless di CPU, memoria e spazio su disco, per ospitare sia
VirtualBox, che consente di eseguire macchine L’OS host sia le macchine virtuali in esecuzione
virtuali senza interfaccia grafica (GUI). Ciò in VirtualBox. Assegnate una quantità adeguata
significa che la macchina virtuale viene eseguita di core della CPU, memoria e spazio su disco
in background, senza una finestra visibile o un a ciascuna macchina virtuale se ne avete più
ambiente desktop. L’esecuzione di macchine di una con requisiti diversi. Inoltre, ricordate di
virtuali in modalità Headless è particolarmente abilitare la virtualizzazione hardware verificando
utile per le distribuzioni di server o quando che il suo supporto sia abilitato nelle impostazioni
si desidera conservare le risorse del sistema del BIOS del sistema. Questa funzione migliora
evitando l’overhead dell’esecuzione di un desktop le prestazioni della virtualizzazione consentendo
grafico. La modalità Headless consente di gestire ai sistemi operativi host e guest di utilizzare
e controllare le macchine virtuali utilizzando estensioni hardware appositamente progettate
strumenti della riga di comando, API oppure a questo scopo. Infine, può sembrare scontato
connessioni remote. ma chiudete tutte le applicazioni o i processi
non necessari in esecuzione nel sistema operativo
Migliorare le prestazioni host che possono consumare risorse di sistema.
Naturalmente la virtualizzazione richiede risorse In questo modo si liberano cicli di CPU, memoria
importanti, perché state di fatto emulando un e I/O del disco, assicurando che VirtualBox abbia
sistema operativo all’interno del vostro. Quindi, risorse adeguate per funzionare senza problemi.
a prescindere da trucchi e funzionalità meno note, E così siete ora pronti a emulare tutti gli OS che
è sempre importante assegnare risorse sufficienti volete sul vostro sistema!

NOZIONI DI BASE SU VIRTUALBOX E COME INSTALLARLO


Certo, moltissimi utenti Linux consente di crearle, configurare sudo wget -O- https://www.
conoscono VirtualBox e lo usano ma e gestire le macchine. È possibile virtualbox.org/download/oracle_
nel caso non lo conosciate, si tratta allocare risorse di sistema come vbox_2016.asc | gpg --dearmor |
di un popolare software di CPU, memoria e spazio su disco a sudo tee /usr/share/keyrings/
virtualizzazione Open Source che ciascuna macchina virtuale in base virtualbox.gpg
consente di creare ed eseguire alle proprie esigenze. Per installarlo Importate quindi il repository
macchine virtuali sul computer. su un sistema come Mint, per e aggiornate il sistema:
Fornisce un livello di virtualizzazione esempio, per prima cosa aggiornate echo "deb [arch=amd64] http://
che emula i componenti hardware, il sistema e recuperate tutte download.virtualbox.org/virtualbox/
consentendo di installare ed le dipendenze: debian buster contrib" | sudo tee /
eseguire diversi sistemi operativi sudo apt update && sudo etc/apt/sources.list.d/virtualbox.list
in un ambiente virtuale. VirtualBox apt upgrade sudo apt update
funziona creando macchine virtuali sudo apt install wget apt-transport- Infine potete installare il software:
(VM) in cui è possibile installare ed https gnupg2 sudo apt install virtualbox-6.1
eseguire diversi sistemi operativi Dopodiché recuperate la chiave A questo punto potete lanciare
e fornisce un’interfaccia grafica che pubblica: il programma.

LINUX PRO 220 11


Cover story 1.000 server a costo zero

Zero stress con


il codice virtualizzato!
Dipendenze che vanno in conflitto, librerie che non funzionano...
siete stanchi? Ecco come risolvere in Python e in altri linguaggi
e siamo tutti colpevoli: siamo di corsa, Create un ambiente virtuale chiamato “myenv”
N ci serve provare uno script ed eseguiamo
la versione di Python che ci fa più comodo
con il seguente comando:
python3 -m venv myenv
o installiamo le librerie al volo senza pianificare Attivate quindi l’ambiente virtuale:
molto. Però purtroppo poi i nodi vengono al pettine... source myenv/bin/activate
Presto iniziamo ad avere problemi di librerie non Nel prompt del terminale dovrebbe apparire il
compatibili e alcune nostre app che funzionavano nome dell’ambiente virtuale (myenv), a indicare
TIP con una certa versione di Python non funzionano che è attivo. Vediamo quindi subito come gestirne
Se siete nuovi in più con quella nuova che abbiamo installato. due diversi, per esempio nel caso in cui vi serva
Python potreste Non disperatevi se vi succede perché la soluzione usare alcune app in Python 2.7 e altre in Python
pensare che è semplice e si chiama virtualizzazione. L’uso di 3.9. Anzitutto create l’ambiente virtuale di Python
alla fin fine le un ambiente virtuale in Python è fondamentale per 2.7. Aprite un terminale e navigate nella directory
differenze fra
gestire le dipendenze dei progetti, isolare i pacchetti in cui volete metterlo, quindi eseguite il seguente
le versioni non
giustifichino
e mantenere un ambiente di sviluppo pulito e comando per ottenere un ambiente virtuale
l’impegno di usare coerente. Permette di creare uno spazio di lavoro Python 2.7 chiamato “py27env”:
ambienti virtuali. isolato in cui installare versioni specifiche di librerie venv -p /usr/bin/python2.7 py27env
Considerate e pacchetti senza influire sull’installazione di Python Il percorso esatto dell’eseguibile Python 2.7
solo che Python a livello di sistema. Questo è particolarmente (/usr/bin/python2.7 in questo esempio) può variare
3 ha “rotto” importante quando si lavora su più progetti o si a seconda del sistema. Ora attivate l’ambiente
una funzione collabora con altri, perché progetti diversi possono virtuale Python 2.7:
essenziale, quella richiedere dipendenze o versioni diverse. source py27env/bin/activate
di stampa a video. Verificate quindi che Python 2.7 sia attivo:
In Python 2.7, per
stampare l’output
Vantaggi significativi python --version
viene utilizzata
Gli ambienti virtuali assicurano che il progetto Per passare poi dall’ambiente 2.7 a quello 3.9
l’istruzione utilizzi le versioni esatte delle librerie e dei pacchetti dovete prima disattivare quello attuale:
print, mentre necessari. Inoltre, consentono una collaborazione deactivate
in Python 3 è agevole, in quanto tutti coloro che lavorano Dopodiché potete avviare il 3.9:
stata sostituita al progetto possono creare lo stesso identico source py39env/bin/activate
dalla funzione ambiente. Non solo: sono in grado di fornire anche
print(). Questo un ambiente controllato per il test e il debug Sicurezza e buone pratiche
cambiamento del codice. Isolando le dipendenze del progetto, Ora potete iniziare a installare i pacchetti che
richiede la è possibile riprodurre facilmente i problemi e volete. Con l’ambiente virtuale attivo, potete farlo
modifica delle
garantire che il codice si comporti in modo coerente usando pip, proprio come si farebbe in un normale
istruzioni di
stampa per
in ambienti diversi. ambiente Python. C’è peraltro un ottimo motivo
includere le a convincerci a scegliere questa strada, oltre a
parentesi, il che Usare venv per virtualizzare Python quello della compatibilità: l’uso di un ambiente
può portare a venv è il modulo standard per gli ambienti virtuali virtuale con pip contribuisce a migliorare la
errori di sintassi che viene fornito con Python 3. Fornisce un modo sicurezza, isolando le dipendenze del progetto.
quando si esegue leggero e semplice per crearli e gestirli. Installarlo Quando si lavora in un ambiente virtuale, si ha
il codice Python e configurarlo è semplice. Anzitutto controllate il controllo su quali pacchetti vengono installati
2.7 in Python la versione di Python: verificate che Python e da dove. Questo riduce il rischio di installare
3. Ecco perché 3 sia installato sul sistema eseguendo il comando inavvertitamente pacchetti dannosi o obsoleti da
venv è un’ottima
python3 --version nel terminale. Ora create fonti non attendibili, migliorando la sicurezza del
soluzione!
un ambiente virtuale: aprite un terminale e andate progetto. Inoltre, è buona pratica lavorare in modo
nella directory del progetto su cui state lavorando. pulito. Con un ambiente virtuale, è possibile

12 LINUX PRO 220


CSS Prog
rammare
da pro i fogli
stile per
il Web
NEL
WEB
DVD
Debian 12
le istruzio
istruzioni
oni
a pagina ni
4

Fatdog64
L’unic a pfSense
2.7.0
guida libera Q4OS 5.2
al mond Peppermint
o dell’O OS
Tails 5.15.1 2023-07-01

1.000 SERV
pen Sourc
e PR
ROO
Sniffnet
Bavarder
e molto altro...

A COSTO ER
Virtualizza
tutto,
Scopri i trucchi
dal deskto
p all’amb
ZERO

SEGRATE
per diventa iente di svilupp
Sviluppa in
Python senza re un maestro di VirtualB

PRESS-DI,
o!
10 pagine su più errori di ox Sfrutta grati

1, S/NA - DISTRIBUTORE:
Docker: dai dipende
container imperdib nze e compatibilità tecnologi s la
ili a come creare
il tuo colossi del a dei
cloud!

1, COMMA
N. 46) ART.
Debian 12
8,8 GB è perfett
per busine a

L. 27/02/2004
DI SISTE ss e
OPER MI professionist
ATIVI

(CONV. IN
E APP! i!

- D.L. 353/2003
Crea la tua
CLASSIFICAZIONEIA per le foto

POST.
SPA - ABB.
Riconosc DI IMMAGIN
dispositiv
i oggetti
e animali I
o da meno con

ITALIANE
NUOVO! di 15 euro! un
2 DVD DA SCARICARE

R.O.C. - POSTE
CON IL CODICE
ALL’INTERNO
ESCLUSIVA PERIN L’O n
L’Ope
TE Source

TARIFFA
salva
Dagli strumen le vite!
Bimestrale
- N.220
- 7,90 €
tempo dall’Intelti open ai tumori
rivoluzion ligenza Artificialtrovati per
e della medicina e, ecco
Sistema
S
operati grazie a Linuxla
P.I. 10-08-2023 Distribuzioni
D vo
Agosto-Settem
I segreti immutabili
bre
sicure: sonodelle distro 100% Program
mazion

installare e testare pacchetti specifici per il


COP_001_LXP
COP_001_LX
il futuro di
Linux Crea videogi e
220_cover.indd
1 Con Godot ochi arcade
videogam programm
e è Open are
e facilissim
o

20/07/2023
02:56:37

progetto senza ingombrare l’installazione di


Python a livello di sistema. Inoltre, è possibile
effettuare una facile pulizia, semplicemente
eliminando la directory dell’ambiente virtuale
quando il progetto non è più necessario.

Non c’è solo Python


Isolare gli ambienti è un sistema perfetto
per limitare i problemi. Python non è l’unico
linguaggio a permettervi di fare questo, ce ne
sono altri che garantiscono proprio ambienti
separati o vi forniscono strumenti per compattare
le vostre dipendenze. Ruby utilizza uno strumento
chiamato “Bundler” per gestire le dipendenze
dei progetti e creare ambienti isolati. Bundler
consente di specificare le gem (le librerie di Ruby)
necessarie e le loro versioni in un file di
configurazione, simile a requirements.txt o Pipfile
di Python. Eseguendo bundle install , Bundler
crea un ambiente separato per il progetto. Usarlo
è semplice: anzitutto inizializzate Bundler nella
cartella del progetto. Questo creerà un Gemfile
che conterrà le dipendenze: All’indirizzo https://docs.python.org/3/library/venv.html potete trovare tutte
bundle init le informazioni per approfondire la vostra conoscenza di venv
Dopodiché aprite il Gemfile con un editor di testo
e aggiungete le librerie necessarie per il progetto. separata chiamata vendor/bundle. Nel codice Ruby, si
Per esempio, supponiamo di voler utilizzare la libreria può ora richiamare la libreria nokogiri e utilizzare
nokogiri, comunemente usata per l’analisi dell’HTML: le sue funzionalità. Per esempio:
# Gemfile # main.rb
source "https://rubygems.org" require 'nokogiri'
gem 'nokogiri' Inoltre, Composer è un popolare strumento di
Salvate il Gemfile e ora potete installare le dipendenze gestione delle dipendenze per PHP. Utilizza un file
usando Bundler: chiamato composer.json per definire le dipendenze
bundle install di un progetto PHP. composer install installa le
Bundler recupera la libreria nokogiri e qualsiasi altra dipendenze specifiche del progetto in una cartella
specificata nel Gemfile e le installa in una cartella vendor, creando un ambiente isolato.

RISOLVERE GLI ERRORI DI DIPENDENZE

È uno scenario diffuso e frustrante: lo <module> si può installare la versione richiesta


script parte ma c’è un errore relativo from .exceptions import ( della libreria requests:
alle dipendenze. Per esempio: ImportError: cannot import name (myenv) $ pip install requests==2.25.1
$ python my_script.py 'HTTPError' from 'urllib3.exceptions' Ora, quando si eseguirà lo script
Traceback (most recent call last): In questo scenario, l’errore si verifica nell’ambiente virtuale, questo
File "my_script.py", line 3, in perché la libreria di richieste nel utilizzerà la versione corretta di
<module> sistema dipende da una versione requests e delle sue dipendenze,
import requests specifica di urllib3, ma una versione evitando il conflitto di versioni:
File "/usr/lib/python3/ diversa è installata a livello di sistema. (myenv) $ python my_script.py
dist-packages/requests/__init__.py", Questa mancata corrispondenza di Utilizzando la virtualizzazione e
line 43, in <module> versione provoca un ImportError, creando ambienti isolati, è possibile
import urllib3 impedendo l’esecuzione dello script. garantire che le dipendenze del
File "/usr/lib/python3/ Per risolvere questo problema progetto siano separate e non vadano
dist-packages/urllib3/__init__.py", utilizzando la virtualizzazione, in conflitto con i pacchetti del
line 8, in <module> è possibile creare un ambiente sistema. Questo aiuta a risolvere i
from .connectionpool import ( virtuale specifico per il progetto: problemi di compatibilità delle
File "/usr/lib/python3/ $ python3 -m venv myenv versioni e consente di lavorare
dist-packages/urllib3/ $ source myenv/bin/activate con quelle specifiche delle librerie
connectionpool.py", line 11, in Una volta attivato l’ambiente virtuale, richieste dal progetto.

LINUX PRO 220 13


Cover story 1.000 server a costo zero

Massimizza i tuoi
server con Docker
Sistemi operativi in un container, con tutte le dipendenze e installabili
ovunque: ecco una tecnologia di cui non potrete più fare a meno!
ocker è una piattaforma Open Source Prestazioni quasi native
D che consente di automatizzare la
distribuzione, il ridimensionamento
Docker sfrutta le funzioni di virtualizzazione
a livello di sistema operativo, utilizzando
e la gestione delle applicazioni all’interno di principalmente le funzioni del kernel Linux come
contenitori leggeri e portatili. Nel suo nucleo, gli spazi dei nomi e i gruppi di controllo (cgroup).
Docker fornisce un modo per impacchettare il A differenza delle tecnologie di virtualizzazione
software e tutte le sue dipendenze in un’unità tradizionali come VirtualBox o Vagrant, i container
standardizzata, nota come container, che può Docker non richiedono un sistema operativo guest
essere eseguita in modo coerente su qualsiasi separato. Condividono invece il kernel del sistema
sistema. Tradizionalmente, quando gli sviluppatori host, il che li rende altamente efficienti e riduce
costruiscono e distribuiscono le applicazioni, l’overhead delle risorse. Questi container sono
devono affrontare sfide legate alle differenze creati da immagini Docker, che sono modelli di sola
di ambienti, dipendenze e configurazioni tra i vari lettura che definiscono il filesystem del container
sistemi. Questo può portare a problemi di e la configurazione del runtime.
compatibilità e la loro risoluzione può richiedere
TIP molto tempo. Docker risolve queste difficoltà, Tutto parte da un file di testo
I contenitori sono rendendo le applicazioni più affidabili Le immagini Docker sono costruite usando
unità autonome e facili da distribuire. Un contenitore in Docker un file di testo dichiarativo chiamato Dockerfile.
che incapsulano incapsula l’applicazione e tutte le sue dipendenze, Questo specifica l’immagine di base, il codice
l’applicazione e le comprese le librerie, gli strumenti di sistema dell’applicazione e i passaggi necessari
sue dipendenze. e gli ambienti di esecuzione. Isola l’applicazione per configurare l’ambiente del contenitore.
Questa dall’infrastruttura sottostante, assicurando Con i Dockerfile è possibile controllare la versione
portabilità che venga eseguita nello stesso modo e condividere l’intera configurazione
consente di indipendentemente dal sistema operativo dell’applicazione, rendendola altamente
sviluppare
o dall’hardware dell’host. riproducibile e consentendo lo sviluppo
e testare le
collaborativo. Per quanto invece riguarda i requisiti
applicazioni sul
sistema locale Leggerezza e praticità di sistema, Docker ha diverse opzioni di
e di distribuirle Uno dei vantaggi principali di Docker è la sua installazione per i vari sistemi operativi. Per Linux,
allo stesso modo natura leggera. I container condividono il kernel richiede una versione a 64 bit del sistema
in ambienti del sistema operativo del sistema host, il che operativo con un kernel moderno che supporti
diversi, che siano significa che richiedono meno risorse rispetto le funzionalità necessarie (come per esempio
di sviluppo, di all’esecuzione di macchine virtuali complete le già citate funzioni namespace e cgroup).
staging o di come quelle usate dagli emulatori. Questa
produzione. efficienza consente una maggiore densità di Installare e usare un container
Questa coerenza
container su un singolo host, con conseguente Nella nostra panoramica a pagina 40 trovate tutti
riduce il classico
miglioramento dell’utilizzo delle risorse e della i container per Docker più utili: non dovete fare
problema
“funziona sulla scalabilità. I container possono essere creati, altro che installarli e usarli. Però qui vogliamo
mia macchina” avviati, fermati e replicati rapidamente, mostrarvi come configurare Docker e interagire
(ma non su quella consentendo una facile scalabilità in base alla con i container, in modo che siate poi
del cliente...) domanda. Docker facilita anche i flussi di lavoro completamente indipendenti. Lo faremo usando
e rende più di integrazione continua e distribuzione continua un container di MySQL, il database relazionale
affidabile la (CI/CD), permettendo agli sviluppatori di più diffuso sui server Web. Aprite un terminale
distribuzione automatizzare i processi di creazione, test e ed eseguite i seguenti comandi per aggiornare
delle applicazioni. distribuzione, con conseguenti cicli di rilascio più l’elenco dei pacchetti del sistema:
rapidi e tempi di commercializzazione più brevi. sudo apt update

14 LINUX PRO 220


CSS Prog
rammare
da pro i fogli
stile per
il Web
NEL
WEB
DVD
Debian 12
le istruzio
istruzioni
oni
a pagina ni
4

Fatdog64
L’unic a pfSense
2.7.0
guida libera Q4OS 5.2
al mond Peppermint
o dell’O OS
Tails 5.15.1 2023-07-01

1.000 SERV
pen Sourc
e PR
ROO
Sniffnet
Bavarder
e molto altro...

A COSTO ER
Virtualizza
tutto,
Scopri i trucchi
dal deskto
p all’amb
ZERO

SEGRATE
per diventa iente di svilupp
Sviluppa in
Python senza re un maestro di VirtualB

PRESS-DI,
o!
10 pagine su più errori di ox Sfrutta grati

1, S/NA - DISTRIBUTORE:
Docker: dai dipende
container imperdib nze e compatibilità tecnologi s la
ili a come creare
il tuo colossi del a dei
cloud!

1, COMMA
N. 46) ART.
Debian 12
8,8 GB è perfett
per busine a

L. 27/02/2004
DI SISTE ss e
OPER MI professionist
ATIVI

(CONV. IN
E APP! i!

- D.L. 353/2003
Crea la tua
CLASSIFICAZIONEIA per le foto

POST.
SPA - ABB.
Riconosc DI IMMAGIN
dispositiv
i oggetti
e animali I
o da meno con

ITALIANE
NUOVO! di 15 euro! un
2 DVD DA SCARICARE

R.O.C. - POSTE
CON IL CODICE
ALL’INTERNO
ESCLUSIVA PERIN L’O n
L’Ope
TE Source

TARIFFA
salva
Dagli strumen le vite!
Bimestrale
- N.220
- 7,90 €
tempo dall’Intelti open ai tumori
rivoluzion ligenza Artificialtrovati per
e della medicina e, ecco
Sistema
S
operati grazie a Linuxla
P.I. 10-08-2023 Distribuzioni
D vo
Agosto-Settem
bre I segreti delle immutabili Program
si
sicure: distro 100%
sono il futuro mazion
Crea videogi e

sudo apt upgrade


COP_001_LXP
COP di Linux
220_cover.indd
1 Con Godot ochi arcade
videogam programm
e è Open are
e facilissim
o

20/07/2023
02:56:37

Installate i pacchetti necessari per aggiungere


i repository Docker e installate Docker in modo
sicuro come segue:
sudo apt install apt-transport-https ca-certificates curl
software-properties-common
Ora scaricate e aggiungete la chiave GPG ufficiale
per garantire l’autenticità dei pacchetti Docker:
curl -fsSL https://download.docker.com/linux/ubuntu/
gpg | sudo gpg --dearmor -o /usr/share/keyrings/
docker-archive-keyring.gpg
Aggiungete il repository Docker alle sorgenti
dei pacchetti del sistema:
echo "deb [arch=amd64 signed-by=/usr/share/
keyrings/docker-archive-keyring.gpg] https://
download.docker.com/linux/ubuntu $(lsb_release -cs)
stable" | sudo tee /etc/apt/sources.list.d/docker.list > /
dev/null
Uno dei grandi vantaggi di Docker è che potete essere tranquilli che la tecnologia
A questo punto aggiornate nuovamente l’elenco non è una tendenza del momento. I più grandi nomi mondiali in diversi mercati si
dei pacchetti e installate Docker: affidano a essa e se va bene per loro, probabilmente va bene anche per voi!
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io 40 potete trovare i migliori container da provare.
Verificate che Docker sia installato correttamente E se invece voleste crearne uno voi? Vedremo
eseguendo il seguente comando: quindi ora insieme come scrivere un file Dockerfile
sudo docker run hello-world per creare, in questo esempio, un container di uno
Se tutto è stato configurato correttamente, si stack LAMP, per poi compilarlo e usarlo. Il primo
dovrebbe vedere un messaggio che indica che passo che dovete compiere è creare appunto il file
Docker funziona correttamente. Ora eseguite e per farlo potete partire dal nostro esempio: prima
un contenitore Docker con MySQL utilizzando potete leggerlo, poi vi spiegheremo nel dettaglio
il seguente comando: cosa rappresenta.
sudo docker run -d -p 3306:3306 --name mysql- # Base image
container -e MYSQL_ROOT_PASSWORD=miapassword FROM ubuntu:23.04
mysql:latest
Questo comando scaricherà l’ultima immagine # Set environment variables
Docker di MySQL (se non già presente) e avvierà ENV MYSQL_ROOT_PASSWORD mysecretpassword
un contenitore basato su di essa. Il flag -d esegue
il contenitore in background, -p 3306:3306 mappa # Install system dependencies
la porta 3306 del contenitore con la stessa porta RUN apt-get update && \
del vostro sistema e --name mysql-container apt-get install -y --no-install-recommends \
assegna un nome al contenitore per facilitarne apache2 \
la gestione. Inoltre, -e MYSQL_ROOT_ mysql-server \
PASSWORD=miapassword imposta la password php \
di root per MySQL come “miapassword”. libapache2-mod-php \
Per connettersi al server MySQL in esecuzione php-mysql \
all’interno del contenitore Docker dall’esterno && rm -rf /var/lib/apt/lists/*
del contenitore, è necessario un client MySQL,
come quello a riga di comando o uno strumento # Configure Apache
MySQL GUI come MySQL Workbench. Installate COPY 000-default.conf /etc/apache2/sites-
la versione a riga di comando così: available/000-default.conf
sudo apt install mysql-client # Configure PHP
Ora è possibile connettersi al server MySQL RUN sed -i 's/^;date.timezone =$/date.timezone =
utilizzando il seguente comando:
mysql -h localhost -P 3306 -u root -p
Verrà richiesto di inserire la password impostata TRASPORTABILITÀ TOTALE
durante la creazione del contenitore. Una volta
autenticati, avrete accesso al server MySQL “A differenza di software come
all’interno del contenitore Docker.
VirtualBox, i container Docker
Create da zero un container
Finora abbiamo visto Docker, le sue caratteristiche non richiedono un sistema operativo
e come installare un container pre-cotto, per così
dire. Come abbiamo visto prima, peraltro, a pagina guest separato”
LINUX PRO 220 15
Cover story 1.000 server a costo zero

Questo file imposta l’immagine


TIP di base come Ubuntu 23.04
Docker Compose e le variabili d’ambiente,
è un potente compresa la password di root
strumento per di MySQL. Poi aggiorna l’elenco
definire e gestire dei pacchetti e installa le
applicazioni dipendenze del sistema, come
multi- Apache, MySQL, PHP e i
contenitore. relativi moduli. Quindi copia un
Utilizzandolo file di configurazione di Apache
è possibile
per impostare gli host virtuali,
creare e gestire
cosa di cui avrete sicuramente
facilmente stack
di applicazioni bisogno se volete ospitare più
complesse con di un sito sul vostro server:
servizi inter- se non avete il file di
dipendenti. configurazione e volete crearne
Questo uno su misura per voi potete
semplifica il farlo semplicemente con
Come vedrete anche nella panoramica relativa, gestire container Docker già
processo di creati è davvero facilissimo: se ne trovano di ufficiali, per qualsiasi necessità, il comando sudo a2ensite
distribuzione e nell’Hub all’indirizzo Web https://hub.docker.com/ 000-default.conf . Dopodiché
orchestrazione,
lo script configura PHP per
rendendo più
"UTC"/' /etc/php/7.4/apache2/php.ini impostare il fuso orario su UTC.
facile lavorare
con architetture
di microservizi # Copy application code Spostare l’applicazione su Docker
o configurazioni COPY app/ /var/www/html/ Ora dovete popolare il container con l’unico pezzo
multi-container. di codice non predefinito, cioè il vostro sito. Se non
# Expose ports volete creare subito un sito e i relativi file potete
EXPOSE 80 ignorare questa parte della configurazione,
altrimenti copiate il codice dell’applicazione nella
# Start services directory principale del server web Apache. Dovete
CMD service mysql start && \ naturalmente assicurarvi che il vostro codice
apache2ctl -D FOREGROUND sia nella sottodirectory app della directory
in cui avete salvato il Dockerfile. Per il resto il file
espone la porta 80 per accedere al server Web
SEMPLICITÀ D’USO Apache e quindi avvia il servizio MySQL e il server
web Apache. Infine per compilare l’immagine,
“Creare un container Docker è tanto usate il comando docker build :
docker build -t mylamp:latest
facile quanto scrivere un file di e per eseguire il contenitore, utilizzate il comando
docker run :
configurazione testuale con tutto docker run -d -p 80:80 mylamp:latest
Complimenti, avete appena creato il vostro primo
quello che vi serve” container Docker in pochi minuti!

COME RENDERE PERSISTENTI I DATI SALVATI

I contenitori Docker sono effimeri i file di configurazione delle docker run -d -v myvolume:/path/nel/
per impostazione predefinita, applicazioni o i database, rimangano container myimage:tag
il che significa che qualsiasi modifica persistenti anche se il contenitore Nel comando di cui sopra, /path/nel/
apportata al loro interno viene persa viene ricreato o aggiornato. Questo container deve essere il percorso
una volta che il container viene è utile quando si lavora con database desiderato all’interno del contenitore
arrestato o rimosso. Tuttavia, i o applicazioni statiche. La creazione in cui si vuole montare il volume.
volumi Docker forniscono un modo di volumi gestiti da Docker è un myimage:tag si riferisce invece
per conservare i dati oltre la durata processo semplice. Anzitutto create all’immagine Docker da cui si esegue
di vita del contenitore. I volumi un volume Docker: il contenitore. Ora, tutti i dati scritti
possono essere montati dal sistema docker volume create myvolume nel percorso montato all’interno
host o creati come volumi gestiti Per utilizzare il volume, è possibile del contenitore saranno
da Docker. Utilizzandoli, è possibile montarlo in un percorso specifico memorizzati all’interno del volume
garantire che i dati importanti, come all’interno del contenitore. gestito da Docker.

16 LINUX PRO 220


CSS Prog
rammare
da pro i fogli
stile per
il Web
NEL
WEB
DVD
Debian 12
le istruzio
istruzioni
oni
a pagina ni
4

Fatdog64
L’unic a pfSense
2.7.0
guida libera Q4OS 5.2
al mond Peppermint
o dell’O OS
Tails 5.15.1 2023-07-01

1.000 SERV
pen Sourc
e PR
ROO
Sniffnet
Bavarder
e molto altro...

A COSTO ER
Virtualizza
tutto,
Scopri i trucchi
dal deskto
p all’amb
ZERO

SEGRATEE
per diventa iente di svilupp
Sviluppa in
Python senza re un maestro di VirtualB

PRESS-DI,
o!
10 pagine su più errori di ox Sfrutta grati

1, S/NA - DISTRIBUTORE:
Docker: dai dipende
container imperdib nze e compatibilità tecnologi s la
ili a come creare
il tuo colossi del a dei
cloud!

1, COMMA
N. 46) ART.
Debian 12
8,8 GB è perfett
per busine a

L. 27/02/2004
DI SISTE ss e
OPER MI professionist
ATIVI

(CONV. IN
E APP! i!

- D.L. 353/2003
Crea la tua
CLASSIFICAZIONEIA per le foto

POST.
SPA - ABB.
Riconosc DI IMMAGIN
dispositiv
i oggetti
e animali I
o da meno con

ITALIANE
NUOVO! di 15 euro! un
2 DVD DA SCARICARE

R.O.C. - POSTE
CON IL CODICE
ALL’INTERNO
ESCLUSIVA PERIN L’O n
L’Ope
TE Source

TARIFFA
salva
Dagli strumen le vite!
Bimestrale
- N.220
- 7,90 €
tempo dall’Intelti open ai tumori
rivoluzion ligenza Artificialtrovati per
e della medicina e, ecco
Sistema
S
operati grazie a Linuxla
P.I. 10-08-2023 Distribuzioni
D vo
Agosto-Settem
bre I segreti delle immutabili Program
si
sicure: distro 100%
sono il futuro mazion
di Linux Crea videogi e

Cose da non fare


COP_001_LXP
220_cover.indd
1 Con Godot ochi arcade
videogam programm
e è Open are
e facilissim
o

20/07/2023
02:56:37

mai con Docker


È un framework molto potente per gestire sistemi autocontenuti
ma va usato in maniera corretta: ecco come evitare gli errori!
uando si crea un contenitore Docker, gonfiarlo inutilmente. È buona norma ridurre al
Q è importante conoscere ed evitare gli
errori più comuni per garantire un
minimo il numero di livelli nell’immagine Docker,
rimuovere i file non necessari e utilizzare
processo di containerizzazione fluido e di tecniche come la creazione in più fasi e la
successo. Anzitutto assicuratevi di seguire la corretta pulizia per mantenere le dimensioni
sintassi e la struttura corretta del file Docker. del contenitore ridotte ed efficienti.
Eventuali errori di sintassi o istruzioni errate
possono causare problemi di compilazione o Logging e ordine generale
comportamenti inaspettati nel container. Lo È essenziale incorporare meccanismi di
stesso vale per dipendenze mancanti o errate: registrazione e monitoraggio adeguati nei vostri
assicuratevi che tutte le dipendenze e le librerie container Docker. Trascurare questi aspetti può
necessarie all’applicazione siano correttamente rendere più difficile l’identificazione dei problemi
incluse e installate nel contenitore. Le e la loro risoluzione. Non solo: aggiornate
dipendenze mancanti possono causare errori di regolarmente Docker e i suoi componenti,
runtime. Attenzione anche ai percorsi dei file non compresi il motore Docker e le immagini di base,
corretti quando utilizzate le istruzioni COPY per sfruttare le correzioni di bug, le patch di
o ADD nel file Docker. Assicuratevi che i file sicurezza e le nuove funzionalità. Assicuratevi
o le directory di origine esistano nella posizione infine di trarre massimo vantaggio dal file
giusta e siano referenziati in modo accurato. .dockerignore. Consente infatti di specificare
i file o le directory che devono essere esclusi
Scendiamo nel tecnico dal contesto di creazione durante la produzione
Finora abbiamo visto errori generici, ma ci sono dell’immagine Docker. Utilizzate questo file
anche problematiche legate a questioni più per escludere i file non necessari, come quelli
tecniche e specializzate. Per esempio, potreste specifici per lo sviluppo o sensibili, riducendo
usare delle mappature delle porte non corrette così i tempi di creazione e le dimensioni
per errore. Quando mappate le porte tra l’host dell’immagine risultante. E ovviamente escludete
e il contenitore usando il flag -p con il comando tutto ciò che riguarda chiavi di sicurezza,
docker run , assicuratevi di specificare i numeri credenziali, ecc. In definitiva, Docker è uno
di porta corretti e assicuratevi che siano allineati strumento straordinariamente potente usato da
con le porte esposte all’interno del contenitore. multinazionali e da aziende ad altissimo tasso
Mappature di porte non corrispondenti possono tecnologico. Però va configurato e usato in
infatti impedire la connettività di rete desiderata maniera intelligente, altrimenti rischiate di creare
al container. Evitate anche di eseguire processi danni seri alla vostra infrastruttura, quindi
all’interno del contenitore come utente root, operate sempre con cautela.
quando possibile. In genere si consiglia di creare
un utente non root all’interno del contenitore
e di eseguire i processi con privilegi ridotti SICUREZZA ANZITUTTO
per una maggiore sicurezza. Sempre in tema
sicurezza, seguite le migliori pratiche quando “Così come in Composer per PHP,
create il vostro contenitore Docker.
Ciò include l’uso di immagini di base affidabili, evitate di eseguire processi all’interno
il mantenimento del demone Docker aggiornato
e la scansione delle immagini alla ricerca del contenitore come utente root,
di vulnerabilità. Fate anche attenzione alle
dimensioni del contenitore ed evitate di quando possibile”
LINUX PRO 220 17
Cover story 1.000 server a costo zero

II meglio della
virtualizzazione
L’argomento è sterminato ma conoscere le basi delle tecnologie può essere
molto utile: ecco una rassegna di ciò che vale la pena sapere

KVM QEMU
Kernel-based Virtual Machine: è un modulo del kernel Quick EMUlator è un emulatore di macchine che supporta
Linux che lo trasforma in un hypervisor. Fornisce diverse architetture, tra cui x86, ARM e PowerPC. Fornisce
funzionalità di virtualizzazione assistita dall’hardware, un’emulazione completa, consentendo di eseguire sistemi
consentendo di creare e gestire macchine virtuali. operativi guest su diverse architetture hardware.

Xen VMware Workstation/Player


È un potente hypervisor che fornisce la virtualizzazione Non è Open Source ed è gratuito ma solo registrandosi.
a livello bare-metal. Consente di eseguire più sistemi guest È il corrispettivo più “aziendale” di VirtualBox. Interfaccia
contemporaneamente su una singola macchina fisica. facile da usare per la creazione e la gestione di macchine
Usatissimo negli ambienti di cloud computing. virtuali sui desktop: utile per ambienti commerciali.

libvirt Vagrant
È un tool che offre un’interfaccia unificata per la creazione, Strumento Open Source che consente di definire e fornire
la configurazione e la gestione di macchine virtuali macchine virtuali utilizzando file di configurazione e
e container con KVM, QEMU, Xen e LXC. che si integra con VirtualBox e VMware.

18 LINUX PRO 220


HAI PERSO UN NUMERO DI LINUX PRO?
NON PREOCCUPARTI PUOI ACQUISTARE GLI ARRETRATI!

SOLO IN SOLO IN
VERSIONE VERSIONE
DIGITALE DIGITALE

COD. LP214 COD. LP215 COD. LP216

SOLO IN
VERSIONE
DIGITALE

COD. LP217 COD. LP218 COD. LP219

Completa la tua collezione ordinando


gli arretrati a soli 7,90€ cad.
su www.sprea.it oppure utilizzando il modulo qui sotto

SCEGLI L‘ARRETRATO CHE VUOI ORDINARE NOME


SE VUOI ORDINARE VIA POSTA O VIA FAX, COMPILA QUESTO COUPON COGNOME
Ritaglia o fotocopia il coupon, invialo in busta chiusa a: Sprea Spa 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.56561221. Per ordinare in VIA
tempo reale i manuali collegati al nostro sito www.linuxpro.it/arretrati. Per ulteriori informazioni puoi scrivere a
store@sprea.it oppure telefonare allo 02/87168197 dal Lunedì al Venerdì dalle 9.00 alle13.00 e dalle 14.00 alle 18.00. N° C.A.P. PROV.
INSERISCI I CODICI E MESI DI RIFERIMENTO delle pubblicazioni che desideri ricevere: CITTÀ
€ TEL.
€ E-MAIL

€ SCELGO IL SEGUENTE METODO DI PAGAMENTO (Indica con una ˝ quello prescelto)
Totale Ordine € ▫ Versamento su CCP 99075871 intestato a Sprea Spa arretrati Via Torino 51 20063
Cernusco Sul Naviglio MI (Allegare ricevuta nella busta o al fax)
SCELGO IL SEGUENTE METODO DI SPEDIZIONE: ▫ Bonifico intestato a Sprea Spa arretrati sul conto IBAN IT05 F076 0101 6000 0009 9075 871
Indica con una ˝ la forma di spedizione desiderata
Per una rivista spedizione tramite posta tradizionale al costo aggiuntivo di € 3,90 ▫ Carta di Credito N.
(Per favore riportare il numero della Carta indicandone tutte le cifre)
Per due o più riviste spedizione tramite Corriere Espresso al costo aggiuntivo di € 7,00
Scad. CVV
(Codice di tre cifre che appare sul retro della carta di credito)
TOTALE COMPLESSIVO €

Nome e Cognome del Titolare della carta (può essere diverso dall’abbonato)
Data Firma del titolare
Informativa e Consenso in materia di trattamento dei dati personali - (Codice Privacy d.lgs. 196/03) Sprea Spa Socio unico Sprea Holding Spa con sede in
via Torino 51 – 20063 Cernusco s/Naviglio (MI) è il Titolare del trattamento dei dati personali che vengono raccolti, trattati e conservati ex d.lgs. 196/03.
Gli stessi potranno essere comunicati e/o trattati da Società esterne Incaricate. Ai sensi degli artt. 7 e ss. si potrà richiedere la modifica, la correzione e/o
la cancellazione dei dati, ovvero l’esercizio di tutti i diritti previsti per Legge. La sottoscrizione del presente modulo deve intendersi quale presa visione, nel
colophon della rivista, dell’Informativa completa ex art. 13 d.lgs. 196/03, nonché consenso espresso al trattamento ex art. 23 d.lgs. 196/03 in favore dell’Azienda.
Speciale

IL BOOM DELLE
DISTRO IMMUTABILI
Stanno diventando sempre più popolari e molti ritengono che
rappresentino il futuro di Linux, ma cosa le rende così speciali?

econdo le dichiarazioni del embedded, l’IoT e l’esecuzione di sistema operativo principale e l’una

S team di Fedora, le varianti


immutabili rappresentano
la maggior parte delle
container, ma possono essere una
soluzione vincente anche come distro
di uso quotidiano e per i server.
dall’altra, tipicamente attraverso la
containerizzazione. In questo modo
le modifiche apportate da una
versioni di Fedora Linux in uso. applicazione non possono influenzare
La prossima release di supporto a Cosa sono nella pratica il sistema centrale o altri programmi.
lungo termine di Ubuntu offrirà quasi Una distro immutabile è un sistema
certamente una build immutabile, operativo progettato per essere I vantaggi che offrono
basata solo su Snap, in aggiunta a inalterabile e in sola lettura. Una volta Uno dei principali vantaggi dell’utilizzo
quelle classiche e molte altre distro installato l’OS, i file e le directory di dei sistemi operativi immutabili
immutabili sono già diventate molto sistema non possono essere è la grande sicurezza che offrono.
popolari. E sembra proprio che le modificati direttamente dagli utenti o Poiché i file di sistema sono di sola
distro immutabili non siano affatto una dalle applicazioni. Per apportare lettura, qualsiasi tentativo di modifica
moda del momento. In alcuni scenari, aggiornamenti o modifiche viene fallisce. In questo modo si evitano
infatti, si spingono un passo oltre i creata, installata e attivata una nuova interventi non autorizzati e si riduce
sistemi Linux tradizionali, offrendo istanza del sistema operativo il rischio di malware o di attacchi
un’opzione più sicura e affidabile. Sono e gli aggiornamenti vengono applicati malevoli. Isolando il sistema operativo
particolarmente utili in applicazioni in modo atomico (tutti in una volta). da potenziali minacce, una distro
come il cloud computing, i sistemi Le applicazioni sono isolate dal immutabile offre una soluzione

20 LINUX PRO 220


perfetta per gli ambienti critici. Garantisce inoltre
prestazioni affidabili e costanti, impedendo
modifiche accidentali o configurazioni errate.
Poiché gli OS rimangono invariati dopo ogni
riavvio, si riduce la possibilità di problemi
imprevisti o di guasti al sistema. Ciò è
particolarmente importante in ambienti in cui i
tempi di attività e la stabilità sono fondamentali,
come i server o i sistemi embedded. Inoltre, con
una distro immutabile il processo di manutenzione
e aggiornamento diventa più semplice ed
efficiente. Invece di applicare patch o
aggiornamenti direttamente al sistema in
esecuzione, si crea una nuova istanza dell’OS con
gli aggiornamenti necessari. In questo modo si
garantisce uno stato pulito e coerente del sistema
a ogni aggiornamento, riducendo al minimo il
rischio di conflitti o problemi di compatibilità.
Inoltre, se si verificano inconvenienti durante il
Fedora Silverblue
processo di update, è possibile ripristinare garantisce che ogni parte del sistema sia a prova offre un’esperienza
facilmente l’istanza precedente del sistema di manomissione e possa essere aggiornata simile a quella
operativo, il che offre un’opzione di rollback molto in modo indipendente. Permette inoltre di isolare che si ha
pratica. Un ultimo, importante aspetto è che le le applicazioni, assicurando che abbiano accesso utilizzando Fedora
Workstation.
distro immutabili offrono vantaggi in termini di solo ai dati che devono gestire. Per capire più nel Fedora ha altre due
scalabilità e riproducibilità, soprattutto in ambienti dettaglio cosa possiamo aspettarci da una versioni immutabili:
di cloud computing o containerizzati. Creando distribuzione di questo tipo, vediamo alcuni Kinoite e Sericea
nuove istanze del sistema operativo per ogni dei progetti più importanti sul mercato.
deployment, diventa più facile scalare in base alla
domanda. Ciò semplifica la gestione di Tre distro per Fedora
deployment su larga scala e garantisce ambienti Fedora Silverblue è un sistema operativo
coerenti e riproducibili tra le diverse istanze. immutabile che utilizza l’ambiente desktop
Gnome. L’aspetto, la funzionalità e il
Container e sandbox in primo piano comportamento sono quelli di un normale sistema
L’architettura di una distribuzione immutabile operativo desktop e l’esperienza è simile a quella
ruota attorno ai concetti di containerizzazione che si ha utilizzando Fedora Workstation. Le
e sandbox. Utilizzando ambienti di virtualizzazione applicazioni grafiche vengono installate tramite
come Docker e LXC (abbreviazione di Linux Flatpak, che le tiene separate dal sistema di base
Containers), ogni componente del sistema viene e consente un controllo minuzioso dei loro
inserito in una sandbox sicura. Ciò consente permessi. Se programmate, apprezzerete l’utility
di creare ambienti isolati in cui ogni componente Toolbox, che utilizza i contenitori per fornire un
è autonomo e permette al sistema di eseguire ambiente in cui installare e utilizzare strumenti di
applicazioni non affidabili senza compromettere sviluppo e librerie. Toolbox consente di
la sicurezza generale della macchina. Questo organizzare gli strumenti di sviluppo per progetto

I LIMITI DEI SISTEMI OPERATIVI IMMUTABILI

Se da un lato le distribuzioni immutabili offrono numerosi vantaggi, dall’altro vi sono anche


delle sfide associate alla loro implementazione, tra cui meno flessibilità e possibilità di personalizzazione.
Gli utenti non possono infatti modificare i file di sistema nella stessa misura in cui possono farlo con una
distribuzione tradizionale e questo può essere penalizzante per chi è abituato alla libertà offerta da Linux.
Possono inoltre verificarsi problemi di compatibilità con le applicazioni e i servizi, in particolare con il
software per computer desktop. I sistemi desktop richiedono infatti un’integrazione più stretta tra le
applicazioni per garantire un’esperienza d’uso senza soluzione di continuità rispetto ai server o ai
dispositivi dell’Internet delle Cose (IoT). È inoltre necessario prendere in considerazione lo spazio su disco,
poiché il fatto di avere applicazioni isolate può portare a una ridondanza nell’archiviazione delle loro
dipendenze, che non possono più essere condivise. Dal punto di vista degli sviluppatori, infine, anche se c’è
l’indiscutibile vantaggio della riproducibilità, adottare i sistemi operativi immutabili può rendere difficile
utilizzare strumenti e flussi di lavoro a cui si è abituati. Una volta compresi i meccanismi delle distribuzioni
immutabili, quindi, sta a voi scegliere quando usarle in base ai progetti e al vostro metodo di lavoro.

LINUX PRO 220 21


Speciale

e di mantenere più versioni dei tool indipendenti


l’una dall’altra. Tenete però presente che Fedora
Silverblue non fornisce un’esperienza pienamente
funzionale per il dual booting o il partizionamento
manuale. Fedora ha anche altre due distribuzioni
immutabili: Kinoite con il desktop Plasma e
Sericea che offre il tiling window manager Sway,
ideale per chi preferisce basare il suo flusso di
lavoro sulla tastiera anziché sul mouse.

NixOS, OpenSUSE MicroOS e GNU Guix Uno dei punti di forza di NixOS, oltre alle sue funzionalità avanzate, è la
forza della sua community. Ci sono mille modi per farne parte!
NixOS è una distribuzione costruita sulla base
di Nix, un gestore di pacchetti multipiattaforma
puramente funzionale che utilizza un modello principalmente ai server, è OpenSUSE MicroOS. È
di distribuzione in cui il software viene installato un sistema operativo a microservizi progettato per
in directory uniche generate tramite hash ospitare carichi di lavoro in container con
crittografici. Nix costruisce i pacchetti in amministrazione e patch automatizzate. Utilizza
isolamento per assicurarne la riproducibilità, aggiornamenti transazionali, che consentono un
mentre NixOS facilita la condivisione degli facile rollback e assicurano che il sistema esegua lo
ambienti di sviluppo e di compilazione. La raccolta stesso software in modo coerente a ogni avvio. Il
di pacchetti Nix ne contiene oltre 80.000. sistema è scalabile e affidabile, con recupero
Nix è anche il linguaggio di compilazione utilizzato automatico per gli aggiornamenti difettosi. Il
da NixOS che specifica come costruire i pacchetti progetto offre anche due versioni per computer
dai sorgenti e permette di adattare facilmente desktop, che sono state recentemente rinominate
il sistema alle proprie esigenze. Tuttavia, poiché (bit.ly/449HIkD) come openSUSE Aeon (con
la creazione dai sorgenti è un processo lungo, ambiente desktop GNOME) e openSUSE Kalpa (con
il gestore di pacchetti scarica automaticamente Plasma). Simile a NixOS per la potenza e le funzioni
dei binari precostituiti da un server di cache avanzate è GNU Guix (https://guix.gnu.org), una
quando sono disponibili. In questo modo si unisce distribuzione del sistema operativo GNU. È sia un
la flessibilità di un sistema di gestione dei gestore di pacchetti che può essere usato in
pacchetti basato sui sorgenti con l’efficienza di un qualsiasi distro, sia una vera e propria distribuzione
modello binario. Uno dei punti di forza di questa GNU/Linux immutabile che si impegna a rispettare e
distribuzione dalle caratteristiche uniche e dalle migliorare la libertà dei suoi utenti.
funzionalità molto avanzate è la forza della sua
community. Sulla sua pagina GitHub (https:// Vanilla OS e BlendOS
github.com/NixOS/nixpkgs), che ha oltre 5.000 Vanilla OS (https://vanillaos.org) è un sistema
contributor, trovate i link per accedere, oltre che operativo immutabile basato su Ubuntu con
alla documentazione del progetto, al suo forum, un ambiente desktop GNOME 3 standard. È stato
alla sua chat in Matrix, alla newsletter progettato per essere affidabile e produttivo
settimanale, alla wiki gestita dalla comunità e un per l’operatività quotidiana e offre un’interfaccia
elenco di modi per mettersi in contatto con essa pulita e intuitiva. Mira a soddisfare le esigenze
(Discord, Telegram, IRC, ecc.). Un’altra di sviluppatori, designer, studenti e semplici utenti
distribuzione immutabile interessante, mirata di base grazie a un’ampia gamma di applicazioni.
Al primo avvio è possibile scegliere il formato di
pacchetti che si desidera utilizzare in Vanilla OS,
come Flatpak, Appimage o Nix. Inoltre consente
di lanciare diversi sistemi containerizzati basati
su Arch Linux, Fedora o Alpine Linux.
La distribuzione ha fatto molto parlare di sé
perché ha deciso di passare come base da Ubuntu
a Debian Sid nella prossima versione, Vanilla OS
2.0 Orchid. Mira infatti a essere una distribuzione
neutra (il termine “vaniglia” viene infatti usato in
inglese anche per indicare un gusto di base, senza
fronzoli) che lascia la massima libertà di scelta
possibile agli utenti e secondo gli sviluppatori
le scelte di Ubuntu che si allontanano da questa
filosofia richiedono troppo tempo per essere
neutralizzate (bit.ly/3rbZ8yz). Una filosofia
analoga ma spinta ancora oltre sul fronte della
Nella pagina degli scaricamenti di MicroOS (https://bit.ly/3NUVQsv) sono compatibilità è quella di blendOS (https://
previste diverse piattaforme, tra cui la Raspberry Pi blendos.co). Come suggerisce il nome, mira

22 LINUX PRO 220


Il boom delle distro immutabili

a fondere (blend in inglese) tutte le distribuzioni


Linux, Android e le applicazioni Web in un’unica
soluzione. È basato su Arch Linux e supporta
diversi ambienti desktop, tra cui GNOME e KDE
Plasma, oltre a diversi gestori di pacchetti, come
apt, dnf, yum, pacman e yay. Dopo aver installato
blendOS è possibile utilizzare una qualsiasi delle
centinaia di migliaia di applicazioni da una
qualsiasi delle distribuzioni supportate dal

CREDITI: https://ubuntu.com/core
sistema operativo, tra cui Debian, Ubuntu, Fedora,
Arch Linux, Kali Linux, AlmaLinux, Rocky Linux
e Android. È infatti possibile installare
applicazioni da alcuni dei più popolari store
Android, tra cui Aurora Store o F-Droid, grazie al
fatto che la distro utilizza WayDroid dietro le
quinte. Questo non è solo comodo per gli utenti
che hanno più scelta di app, ma anche per gli
sviluppatori che possono sfruttare facilmente
il proprio PC per il testing.
intelligenti. Anche Ubuntu core potrebbe però Ubuntu core è
Ubuntu core e il futuro sui desktop arrivare presto sui desktop. Come dichiara la già ampiamente
usato nell’Internet
Al di fuori dei nostri desktop, una distribuzione stessa azienda, infatti: “dietro le quinte, il team di delle cose,
immutabile molto importante è Ubuntu Core. Canonical ha esplorato attivamente i vantaggi di nell’automazione
Canonical ha iniziato il suo sviluppo nel 2014, Ubuntu Core al di là del regno dell’IoT, in industriale, nei
con l’obiettivo di creare una piattaforma particolare nel contesto degli sviluppatori e degli progetti per le città e
le vetture intelligenti
completamente containerizzata per l’IoT. utenti quotidiani”. Secondo quando trapelato da
e nella robotica.
Inserisce ogni componente del sistema in una dichiarazioni delle persone che ci lavorano, già la Dovrebbe arrivare
sandbox sicura, il che consente ai dispositivi prossima versione LTS (con supporto a lungo presto in Ubuntu per
IoT autonomi connessi di ricevere aggiornamenti termine) di Ubuntu dovrebbe avere, insieme a desktop
senza l’intervento umano. L’architettura di
Ubuntu Core si concentra sulla componibilità e
sulla sicurezza, rendendola una buona opzione UN FUTURO PROMETTENTE
per l’edge computing (una forma di elaborazione
distribuita che porta la computazione e lo “Le distro immutabili probabilmente
storage dei dati più vicino alle fonti di dati), la
robotica e lo sviluppo sul cloud. L’approccio continueranno a crescere, poiché offrono
containerizzato consente una maggiore
flessibilità e fornisce un sistema operativo sicuro vantaggi sotto il profilo della sicurezza e
e resiliente per ambienti difficili. L’ingombro
minimo dell’OS lo rende inoltre una scelta della standardizzazione”
efficiente per i dispositivi con risorse limitate. Le
sue dimensioni ridotte e le poche dipendenze gli
consentono infatti di funzionare senza problemi quella tradizionale, un’edizione immutabile basata
su diverse schede embedded e single-board solo su pacchetti Snap, senza più quelli .deb.
computer. Viene utilizzato nella robotica, per i I pacchetti Snap stessi sono applicazioni
veicoli autonomi, nell’automazione industriale e immutabili. Quando vengono installati, vengono
nelle applicazioni per le smart city, come i display forniti come pacchetti completi che includono
l’applicazione e tutte le sue dipendenze, riunite in
un filesystem squashfs immutabile. A differenza
del software tradizionale, gli Snap non
modificano o sfruttano le librerie o le
impostazioni del sistema host e, quando uno
Snap viene aggiornato, l’intero pacchetto viene
sostituito in una sola volta. Concludendo, le
distribuzioni immutabili hanno guadagnato
grande consenso negli ultimi anni e
probabilmente diventeranno sempre più popolari
in futuro, poiché offrono una serie di vantaggi, tra
cui una maggiore facilità di test e di sviluppo
del software basato su container, la sicurezza del
All’avvio iniziale potete scegliere il formato o i formati sistema operativo e la standardizzazione.
dei pacchetti che volete utilizzare in Vanilla OS Che sia ora di provarne una? LXP

LINUX PRO 220 23


Speciale

QUANDO L’IA
FA LA DIAGNOSI
Nuove frontiere dell’apprendimento profondo permettono di salvare vite
con l’identificazione precoce delle malattie e facilitando il lavoro dei medici

giugno Sundar Pichai, apprendimento automatico, l’IA di non è però l’unica applicazione

A CEO di Google e della


sua casa madre Alphabet,
ha annunciato uno sviluppo
Google è in grado di identificare segni
e pattern sottili legati alla salute
cardiovascolare analizzando immagini
dell’Intelligenza Artificiale alla
diagnosi delle malattie, un campo in
grande espansione che potrebbe
rivoluzionario nel campo della salute dettagliate dell’occhio. Come cambiare il futuro di tutti.
cardiovascolare. Utilizzando approfondiremo in seguito, l’algoritmo
l’Intelligenza Artificiale (IA) per di intelligenza artificiale è stato Retina e diabete
analizzare le scansioni oculari, la addestrato su un ampio dataset La tecnologia di Google nasce
tecnologia di Google è ora in grado e ha mostrato un tasso di accuratezza da un progetto condotto cinque anni
di prevedere gli eventi cardiovascolari, del 70% nella previsione di attacchi fa da un team di ricercatori di Google
come per esempio l’infarto. Potrebbe cardiaci ed eventi cardiovascolari, e dell’Aravind Eye Hospital in India
in futuro sostituire metodi diagnostici un risultato analogo a quello dei per sviluppare uno strumento
tradizionali come TAC, risonanze metodi tradizionali. Se ulteriormente automatizzato per rilevare la
magnetiche e radiografie. convalidata e sviluppata, questa retinopatia diabetica. Quest’ultima
Questo approccio innovativo mira tecnologia sarebbe un metodo non è una complicanza del diabete che
a rivoluzionare la diagnosi precoce invasivo ed economico per prevedere colpisce gli occhi. Si verifica quando
e la prevenzione delle malattie le malattie cardiache e potrebbe i livelli elevati di zucchero nel sangue
cardiache, che rappresentano la ridurre in modo significativo i decessi danneggiano i vasi sanguigni della
principale causa di mortalità a livello a esse legate. Questo strumento retina, la parte sensibile alla luce
mondiale. Grazie ad algoritmi di dall’impatto potenzialmente enorme all’interno dell’occhio. Può portare

24 LINUX PRO 220


a perdita della vista o persino alla cecità se non
individuata per tempo e trattata adeguatamente.
Secondo l’International Diabetes Federation, nel
2021 circa 537 milioni di adulti di età compresa
tra i 20 e i 79 anni erano affetti da diabete a
livello globale, ovvero circa 1 adulto su 10. Si
prevede che questo numero salirà a 643 milioni
nel 2030 e a 783 milioni nel 2045. Una persona
con diabete su tre in media sviluppa la retinopatia
e poter fare screening di massa permetterebbe di
individuare molti più casi nelle fasi iniziali
fermando la malattia, ma farlo fare manualmente
a dei medici richiederebbe risorse elevatissime e
non disponibili a livello globale.

Collaborazione tra medici e tecnici


Per insegnare all’Intelligenza Artificiale di Google
a interpretare con precisione le scansioni della I cambiamenti
retina è stato necessario creare un set di dati Alphabet specializzata nel settore sanitario, per nella rete di vasi
specifico. Dei team di oftalmologi hanno dovuto affrontare le questioni normative e cliniche e sanguigni nella
suddividere un numero molto elevato di scansioni in ottenere l’approvazione dell’ARDA come dispositivo parte posteriore
dell’occhio possono
base al grado di gravità della retinopatia per medico. Sarà simile a un termometro o un
indicare la presenza
consentire al modello di assimilare le sfumature glucometro utilizzato da chi ha il diabete per di varie condizioni
necessarie a interpretarle. Inizialmente, il team di monitorare il livello di zucchero nel sangue. cardiovascolari.
Google ha ricevuto supporto dagli oftalmologi degli Il team di Google ha
ospedali Aravind e Sankara Nethralaya, in India, L’apprendimento profondo sul campo sviluppato algoritmi
per analizzare le
addestrando il modello a riconoscere alcuni segni Nel progetto di Google del 2018 (https://bit. immagini della
chiave della retinopatia diabetica, come danni ly/3POZR39), utilizzando algoritmi di retina e identificare
ai tessuti nervosi, gonfiore ed emorragia. In seguito apprendimento profondo (deep learning) addestrati indicatori di rischio
è stato coinvolto il sistema EyePACS, una rete sui dati di 284.335 pazienti, i ricercatori sono stati in
statunitense di telemedicina che ha condiviso grado di prevedere i fattori di rischio cardiovascolare
un ampio database. È stato inserito oltre un milione dalle immagini della retina con un’accuratezza
di classificazioni per addestrare il modello di IA. sorprendentemente elevata per i pazienti di due serie
L’obiettivo principale del team era trasformarlo di dati indipendenti di 12.026 e 999 soggetti. Per
in un dispositivo per l’analisi automatica di malattie esempio, l’algoritmo è riuscito a distinguere le
retiniche chiamato ARDA (Automated Retinal immagini retiniche di un fumatore da quelle di un
Disease Assessment). Poiché nessuno nel team non-fumatore nel 71% dei casi. Oltre a riconoscere i
aveva esperienza nella creazione di un dispositivo vari fattori di rischio (età, sesso, fumo, pressione
medico, si sono rivolti a Verily, una società di sanguigna, ecc.) dalle immagini retiniche, il loro

I MECCANISMI DI ATTENZIONE NEL DEEP LEARNING


Le tecniche di attenzione o elementi all’interno di una sequenza il rilevamento di oggetti, la
nell’Intelligenza Artificiale e in base alla loro rilevanza reciproca. classificazione e didascalizzazione
nell’apprendimento profondo sono Per attività come l’elaborazione del di immagini e la loro segmentazione,
meccanismi che consentono ai modelli linguaggio naturale, in cui il modello sfruttate in alcune delle applicazioni
di concentrarsi su parti o deve essere in grado di comprendere diagnostiche presentate in questo
caratteristiche specifiche dei dati i collegamenti tra le varie parole, è articolo. I meccanismi di attenzione
in ingresso. Mirano a migliorare la fondamentale. Un’altra tecnica diffusa possono anche essere combinati
capacità del modello di concentrarsi è l’attenzione spaziale, spesso utilizzata con le reti neurali ricorrenti (RNN).
sulle informazioni rilevanti, filtrando nei compiti di computer vision. In questo approccio, il meccanismo
invece quelle irrilevanti o ridondanti. Permette al modello di concentrarsi su di attenzione aiuta il modello a
Sono ampiamente utilizzate in vari regioni o aree specifiche di focalizzarsi selettivamente su diverse
campi, tra cui l’elaborazione del un’immagine ritenute rilevanti per il parti della sequenza di input a ogni
linguaggio naturale, la visione artificiale compito da svolgere, assegnando pesi passo temporale, consentendogli
e la traduzione automatica. di attenzione a differenti posizioni di catturare le dipendenze ad ampio
Un meccanismo di attenzione molto spaziali, enfatizzando le regioni raggio e di migliorare le prestazioni in
diffuso è chiamato self-attention o importanti e riducendo l’importanza di compiti quali la traduzione automatica,
autoattenzione. Permette al modello quelle trascurabili. Questa tecnica è il riconoscimento vocale e l’analisi
di pesare l’importanza di diverse parole particolarmente utile per compiti come del sentiment nei testi.

LINUX PRO 220 25


Speciale

algoritmo è stato preciso nel prevedere direttamente


TIP il rischio di un evento cardiovascolare, utilizzando
l’intera immagine per quantificare il rischio di infarto
L’apprendimento
o ictus. Data l’immagine retinica di un paziente che
profondo, o deep
(fino a 5 anni dopo) ha avuto un evento
learning, è un
sottoinsieme cardiovascolare importante (come un infarto) e
dell’IA che l’immagine di un altro paziente che non l’ha subito,
si concentra l’algoritmo è stato in grado di individuare il paziente
sull’addestrare che avrebbe avuto l’evento cardiovascolare il 70%
reti neurali per delle volte. Questa prestazione si avvicina
apprendere e all’accuratezza di altri metodi di calcolo del rischio
comprendere cardiovascolare che richiedono un prelievo di sangue
rappresentazioni per misurare il colesterolo. Open Health Stack di Google è una piattaforma Open Source che offre
complesse dei
elementi costitutivi per la creazione di app sanitarie di nuova generazione
dati. Si basa su reti
neurali profonde
Tecniche dalle possibilità infinite
che sono in grado Hanno inoltre dimostrato la validità dell’impiego target o di output utilizzate durante
di individuare di metodi di attenzione (vedi box a pagina 21) per l’addestramento e la valutazione di un modello.
automaticamente esaminare il processo di previsione dell’algoritmo. Rappresenta l’output corretto o atteso per un
gerarchie di Queste tecniche hanno permesso di produrre una determinato input o insieme di input ed è
caratteristiche o mappa di calore che indica i pixel più significativi solitamente fornito da esperti umani che
rappresentazioni nella previsione di uno specifico fattore di rischio assegnano manualmente i valori in uscita corretti
a diversi livelli di cardiovascolare. In un articolo pubblicato ai dati in ingresso di un dataset rappresentativo.
astrazione. Sono su Nature Biomedical Engineering (https://bit. Durante la fase di addestramento, le reti neurali
composte da strati
ly/3rmX9Yr), dimostrano che un modello di imparano a fare previsioni regolando i loro
di neuroni artificiali
apprendimento profondo può estrarre parametri interni in base al confronto tra la
organizzati in modo
gerarchico. Ognuno biomarcatori potenzialmente preziosi anche da previsione del modello e la corrispondente ground
di essi riceve foto esterne dell’occhio, in particolare da immagini truth. I modelli di apprendimento automatico di
input da quelli della sua parte anteriore, più facili da ottenere e Google sono stati sviluppati e distribuiti utilizzando
precedenti, elabora che non richiedono attrezzatura specialistica. Per librerie di modelli e script standard in TensorFlow,
le informazioni e farlo, hanno addestrato una rete neurale mentre il codice custom è specifico per
trasmette l’output convoluzionale sia su queste immagini sia sulla l’infrastruttura informatica del team e utilizzato
ai livelli successivi. corrispondente ground truth per le variabili che principalmente per l’input/output dei dati e la
volevano che il modello predicesse, in modo che la parallelizzazione tra i computer. Come riporta un
rete neurale potesse imparare da questi esempi. articolo del blog di Google Research (https://bit.
Nel contesto delle reti neurali e dell’apprendimento ly/3rh2TCR) da allora, sia loro sia altri ricercatori
automatico, “ground truth” si riferisce alle hanno scoperto altri nuovi biomarcatori dalle foto
informazioni accurate e oggettive sulla variabile del fundus (la faccia interiore dell’occhio), come

RETI NEURALI CONVOLUZIONALI


Una rete neurale convoluzionale (CNN rispondono a stimoli visivi specifici. elaborano le caratteristiche di alto
o ConvNet dall’inglese Convolutional Anch’essa è composta da più livelli, livello estratte dai livelli precedenti ed
Neural Network) è un tipo di algoritmo tra cui quelli convoluzionali, quelli eseguono compiti di classificazione o
di deep learning specificamente di pooling e infine i livelli regressione. Il vantaggio principale
progettato per l’analisi di dati visivi, completamente connessi. I primi sono delle CNN è la loro capacità di
come immagini o video. Si ispira responsabili dell’apprendimento e di apprendere automaticamente
all’organizzazione della corteccia visiva estrarre le caratteristiche dai dati di rappresentazioni gerarchiche a partire
degli animali, che consiste in strati ingresso applicando una serie di filtri. dai dati di input grezzi, risultando
interconnessi di neuroni che Gli strati di pooling vengono utilizzati quindi in grado di catturare modelli e
per ricampionare le mappe di caratteristiche complesse nei dati
caratteristiche, riducendone le visivi. Questo aspetto le rende molto
dimensioni spaziali e efficaci in compiti come la
conservando le informazioni più classificazione delle immagini, il
importanti. Ciò contribuisce a rilevamento degli oggetti e la
ridurre la complessità segmentazione delle immagini.
computazionale della rete e le Se siete interessati a mettere le mani
permette di gestire meglio le su una rete di questo tipo, all’indirizzo
variazioni dell’input. Infine, gli https://bit.ly/3PPoYCM trovate
strati completamente connessi, un tutorial per addestrarne una
situati verso la fine della rete, in TensorFlow.

26 LINUX PRO 220


Quando l’IA fa le diagnosi

PYTORCH PER LE RETI NEURALI


PyTorch è un framework Open (operazioni) e gli archi che l’accelerazione GPU e offre una
Source per l’apprendimento li connettono. A differenza dei perfetta integrazione con le librerie
profondo, sviluppato principalmente framework a grafi statici, in cui e gli strumenti Python più diffusi.
dal laboratorio di ricerca sull’IA la loro struttura è definita a priori, Fornisce inoltre una comoda
di Facebook (FAIR). Fornisce una PyTorch consente agli sviluppatori interfaccia per il caricamento e la
piattaforma flessibile ed efficiente di definire e modificare il grafo preelaborazione dei dati,
per la costruzione e l’addestramento computazionale al volo durante facilitando la gestione dei dataset
di vari modelli di reti neurali ed è il runtime. Questa natura dinamica e un addestramento efficiente.
ampiamente utilizzato per compiti offre flessibilità e facilita il Infine, PyTorch ha una comunità
quali la classificazione delle debugging, la sperimentazione ampia e attiva che contribuisce al
immagini, l’elaborazione del e l’implementazione di modelli suo ecosistema e che ha portato
linguaggio naturale, la computer complessi. PyTorch offre una ricca allo sviluppo di varie librerie e
vision e altro ancora. Uno dei punti serie di strumenti e funzionalità framework di alto livello costruiti
di forza di PyTorch sono i suoi grafi per la costruzione di modelli di su di esso, come PyTorch
computazionali dinamici, ossia apprendimento profondo. Include Lightning (vedi box nella prossima
l’approccio “define-by-run”. un ampio supporto per le pagina) e Torchvision, che fornisce
Semplificando, un grafo è una operazioni tensoriali, la modelli e dataset preaddestrati per
struttura composta da nodi differenziazione automatica, compiti di computer vision.

quelli della malattia renale cronica e i livelli grado di funzionare offline e di fornire un
di emoglobina per rilevare l’anemia. supporto decisionale che consenta di erogare TIP
cure centrate sul paziente. La piattaforma è
Google, salute e Open Source orientata alla comunità e si pone l’obiettivo di L’imaging è
l’acquisizione
Questi progetti sono solo una parte contribuire a un miglior supporto sanitario a
e la creazione
dell’impegno di Google nel campo della livello globale. Gli sviluppatori possono accedere
di immagini che
medicina diagnostica. Google Health (https:// a risorse dedicate, linee guida per la consentono
health.google), la divisione del colosso che si progettazione e approfondimenti su FHIR per di visualizzare,
occupa di sviluppare e sfruttare la tecnologia e creare strumenti di salute digitale più efficaci. interpretare
l’Intelligenza Artificiale per migliorare e comunicare
l’assistenza sanitaria e la salute. Oltre a molti L’importanza dello standard FHIR informazioni
altri progetti sull’analisi dell’imaging e la FHIR, o Fast Healthcare Interoperability dettagliate in
diagnostica di cui potete trovare Resources, è uno standard per lo scambio diversi settori,
le presentazioni all’indirizzo https://bit. elettronico di informazioni sanitarie. dalla medicina
alla scienza,
ly/3O8cxkq e del materiale Open Source su L’API2 di FHIR segue un approccio RESTful
all’ingegneria
https://bit.ly/3NP5XOk, ha ora in fase di beta (Representational State Transfer) allo scambio
e all’arte. Nel
un’iniziativa legata al campo medico di di dati. Ciò significa che utilizza gli URL per contesto medico,
grandissimo interesse: Open Health Stack identificare le risorse sanitarie e che lo scambio l’imaging è
(https://bit.ly/3O66zAn). Si tratta di una di dati avviene con metodi HTTP standard, fondamentale
piattaforma Open Source che fornisce elementi rendendolo compatibile con altri sistemi per la diagnosi, il
costitutivi per la creazione di applicazioni RESTful in modo efficiente e standardizzato. monitoraggio e
sanitarie di nuova generazione. Offre librerie L’obiettivo è creare un insieme di risorse in la pianificazione
progettate per aiutare a costruire applicazioni grado di soddisfare i casi d’uso più comuni. dei trattamenti
Android native di FHIR che siano sicure, in Ognuna di esse rappresenta una categoria di delle malattie e
utilizza tecnologie
dati, come la risorsa “paziente”, che include
e apparecchiature
informazioni demografiche come nome, indirizzo
specifiche, come
e numero di telefono. L’approccio di FHIR la radiografia,
migliora il recupero granulare dei dati, l’ecografia, la
consentendo alle richieste di restituire solo tomografia
quelli rilevanti invece di interi record o computerizzata
documenti che richiederebbero ulteriori (TC) e la risonanza
ricerche. In termini di sicurezza, FHIR utilizza magnetica (RM).
standard moderni per l’autenticazione, la
crittografia e la privacy. Supporta l’etichettatura
delle informazioni sensibili, garantendo che solo
le persone autorizzate possano accedervi.
Inoltre, affronta la sfida dell’interoperabilità
Project InnerEye offre strumenti Open Source per l’utilizzo semantica (ossia l’accesso a un linguaggio
dell’Intelligenza Artificiale per l’analisi dell’imaging medico comune e condiviso) gestendo l’uso di diversi

LINUX PRO 220 27


Speciale

DEMOCRATIZZARE L’IA
“Project InnerEye offre componenti
Open Source per consentire agli
operatori sanitari di costruire modelli di
IA per l’imaging medico”
set di vocabolari, terminologie e codici comunemente Nel Regno Unito un sistema di Intelligenza Artificiale chiamato
presenti nei dati sanitari. Rappresenta quindi uno OSAIRIS è in grado di ridurre a meno della metà i tempi
strumento importante per migliorare lo scambio di di attesa per i pazienti in radioterapia
dati e l’interoperabilità nell’ambito dell’assistenza
sanitaria, facilitando la condivisione continua di e lo sviluppo dell’IA nel campo dell’imaging medico.
informazioni tra sistemi, applicazioni e fornitori di InnerEye-DeepLearning (IE-DL) è un toolbox per
TIP servizi medici. Le risorse per gli sviluppatori (https:// facilitare l’addestramento di modelli di deep learning
Nel machine bit.ly/43d0x5i) di Open Health Stack offrono tutorial, su immagini mediche 3D. Relativamente semplice
learning, esercitazioni e applicazioni di esempio per aiutarvi a da eseguire sia in locale che nel cloud con AzureML,
l’inferenza si familiarizzare con lo standard e con la piattaforma. consente agli utenti di addestrare ed eseguire
riferisce al inferenze su modelli di segmentazione,
processo di utilizzo IA medica Open Source da Microsoft classificazione e regressione (tre tipi comuni di
di un modello modelli utilizzati nell’apprendimento automatico
A unire lo sviluppo Open Source con l’utilizzo
addestrato per
dell’Intelligenza Artificiale per l’analisi dell’imaging e nella modellazione statistica) e su qualsiasi modello
fare previsioni o
trarre conclusioni medico è Project InnerEye. Si tratta di un progetto di PyTorch Lightning (vedi box in questa pagina).
su nuovi dati di ricerca di Microsoft Health Futures (https://bit. InnerEye-Inference (https://bit.ly/3rdfNli) è invece
non visti in ly/3rhehi9) che utilizza tecnologie di apprendimento un’applicazione Web in Python per eseguire
precedenza. Dopo automatico per costruire strumenti per l’analisi l’inferenza su modelli di imaging medico addestrati
aver addestrato automatica di immagini mediche tridimensionali. con il toolkit InnerEye-DeepLearning. Potrà farvi
un modello L’obiettivo del progetto è democratizzare l’IA piacere sapere che Microsoft suggerisce vivamente,
utilizzando un per l’analisi delle immagini mediche e consentire se si sviluppa o si utilizza questo strumento in locale,
set di dati di a ricercatori, ospedali, organizzazioni di scienze di utilizzare Ubuntu 20.04 come sistema operativo,
addestramento, poiché l’immagine di base di Azure App Service sarà
biologiche e fornitori di servizi sanitari di costruire
l’inferenza
modelli di IA per l’imaging medico utilizzando Ubuntu. Sviluppando localmente in questo OS è
consente di
applicare il modello
Microsoft Azure. Il team di InnerEye ha creato possibile garantire la massima ripetibilità tra il
per effettuare del software Open Source per la ricerca comportamento locale e quello nel cloud. Agli utenti
previsioni su nuovi sull’apprendimento profondo, che è stato rilasciato di Windows si consiglia di utilizzare Sottosistema
esempi. con una licenza MIT (https://bit.ly/3rne8df). Offre Windows per Linux. Il terzo componente Open
una raccolta di strumenti Open Source per la ricerca Source del progetto è InnerEye-Gateway (https://bit.

CODICE PIÙ SEMPLICE CON PYTORCH LIGHTNING

PyTorch Lightning è un framework strutturato e modulare, separando le l’addestramento distribuito su


di ricerca per PyTorch che semplifica diverse componenti del processo di più GPU o macchine, offre una facile
il processo di formazione e addestramento, come il caricamento integrazione con i caricatori di dati
organizzazione dei suoi modelli. dei dati, la definizione del modello, e funziona senza problemi con
Fornisce un livello di astrazione l’ottimizzazione e la valutazione. l’ecosistema di strumenti e utility
superiore in cima a PyTorch, Fornisce un’interfaccia di PyTorch. Il suo utilizzo consente
facilitando la scrittura di codice standardizzata e le migliori pratiche sostanzialmente a ricercatori
pulito, leggibile e scalabile per per l’organizzazione degli e sviluppatori di concentrarsi sugli
progetti di apprendimento profondo. esperimenti, facilitando la riusabilità aspetti fondamentali dei loro progetti
Elimina molte parti di codice del codice e la collaborazione e la di apprendimento profondo senza
ripetitive e di base coinvolte condivisione dei modelli con altri. dedicare troppo tempo a dettagli di
nell’addestramento dei modelli, PyTorch Lightning si integra bene implementazione di basso livello ma
come la gestione del posizionamento anche con altre librerie e framework beneficiando al contempo della
dei dispositivi, i cicli di training e la Python popolari nell’ecosistema riutilizzabilità del codice e delle
registrazione. Segue un approccio del deep learning. Supporta best practice.

28 LINUX PRO 220


Quando l’IA fa le diagnosi

ly/3XK92DH), ossia servizi di Windows che agiscono


come un Service Class Provider (SCP) per DICOM
(Digital Imaging and Communications in Medicine),
uno standard pubblico che definisce i criteri per la
comunicazione, la visualizzazione, l’archiviazione e la
stampa di informazioni di tipo biomedico come per
esempio immagini radiologiche. Dopo una richiesta di
associazione a C-STORE (“Composite - Store”,
un’operazione di servizio che consente la
trasmissione e l’archiviazione di immagini mediche
o altri oggetti DICOM), un insieme di file di immagini
DICOM viene anonimizzato rimuovendo gli
identificatori definiti dall’utente e passato
Un altro aspetto
a un servizio Web che esegue InnerEye-Inference. Il futuro dell’IA nella diagnostica in cui l’IA potrà
Passa quindi a un modello di machine learning Con l’IA è possibile, e lo sarà sempre di più, migliorare supportare medicina
addestrato con InnerEye-DeepLearning. Il risultato la precisione, la velocità e l’efficienza delle diagnosi, e diagnostica sono
viene scaricato, deanonimizzato e passato a una offrendo al contempo preziose informazioni i large language
model, come
destinazione DICOM configurabile. e supporto agli operatori sanitari nel trattamento Med-PaLM 2 di
Tutti i file immagine DICOM e l’output del modello dei pazienti. Sfruttando gli algoritmi di Intelligenza Google (https://bit.
vengono automaticamente cancellati subito dopo Artificiale per analizzare vasti database medici ly/43qy77P)
l’uso. Il sito del progetto offre istruzioni dettagliate per e identificare pattern e connessioni si può
l’utilizzo di questi componenti (https://bit. rivoluzionare il settore medico, migliorando l’esito
ly/43eG5Rr) e, qualunque sia la vostra opinione di delle cure per i pazienti e rendendo più efficienti
Microsoft, vale la pena di darci un’occhiata se siete i sistemi sanitari dei vari Paesi. Il campo è però
interessati ai modelli di apprendimento automatico ancora relativamente giovane e ci sono ancora
per immagini mediche. diverse sfide tecniche, normative ed etiche da
affrontare. Una di esse è rappresentata dalla
Un supporto prezioso qualità e dalla disponibilità dei dati medici. Gli
Il progetto ha già visto dei successi sul campo e algoritmi di IA richiedono grandi quantità di dati
nel Regno Unito da oltre 10 anni lavora a stretto accuratamente etichettati per funzionare
contatto con l’Università di Cambridge e il efficacemente, ma spesso sono invece incompleti,
Cambridge University Hospitals NHS Foundation non organizzati o di difficile accesso. La qualità dei
Trust nell’ambito di una collaborazione di ricerca dati di addestramento però è fondamentale per
sulla pianificazione della radioterapia. In questo ottenere esiti utili, altrimenti c’è il rischio che
contesto il Servizio Sanitario Nazionale britannico vengano suggerite analisi errate. Inoltre, l’utilizzo
(NHS) ha introdotto all’Addenbrooke’s Hospital dell’IA nella diagnostica medica solleva
di Cambridge un sistema di Intelligenza Artificiale
chiamato OSAIRIS in grado di ridurre i tempi di
attesa per i pazienti in radioterapia (https://bit. PROSPETTIVE SEMPRE MIGLIORI
ly/44Hg5zv). Gli specialisti possono pianificare
i trattamenti radioterapici circa due volte e mezzo “Con l’IA è possibile, e lo sarà sempre
più velocemente di quanto farebbero se
lavorassero da soli, migliorando la probabilità di di più, migliorare la precisione, la velocità
ottenere risultati ottimali. OSAIRIS riduce in modo
significativo l’impegnativo processo di e l’efficienza delle diagnosi dando
delineazione manuale degli organi sani sulle
scansioni prima della radioterapia, noto come supporto ai medici”
segmentazione, un processo la cui accuratezza
è fondamentale per proteggere dalle radiazioni
il tessuto sano intorno al tumore. Un medico può preoccupazioni di carattere etico quando
impiegare da 20 minuti a tre ore per eseguire si gestiscono dataset privati e sensibili. Le
questa operazione, per ogni paziente, ma questioni relative alla privacy dei dati e alla
OSAIRIS semplifica il processo, consentendo agli trasparenza degli algoritmi richiedono ovviamente
oncologi di concentrarsi sulla pianificazione del un’attenta considerazione. Sarà inoltre importante
trattamento, mentre l’Intelligenza Artificiale che si stabiliscano degli standard di riferimento
si occupa della segmentazione. L’oncologo univoci per facilitare la collaborazione. Con
esamina poi meticolosamente ogni scansione, l’evoluzione del campo dell’IA nella diagnostica
assicurandone l’accuratezza e mantenendo medica, affrontare queste sfide sarà fondamentale
il controllo durante tutto il processo. Lo scopo per massimizzare i benefici. Non c’è però dubbio
dell’Intelligenza Artificiale applicata alla medicina che queste tecnologie, magari applicate
diagnostica è infatti, ovviamente, quello nell’ambiente del codice Open Source, possano
di supportare i medici e non di sostituirli. facilitare la cura di milioni di persone. LXP

LINUX PRO 220 29


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

Una breve QUESTO MESE...


legenda Test >>
Ogni test di questa sezione
è accompagnato da un giudizio
che riassume con quattro indici Radxa Rock 5B
numerici le principali qualità Un SBC potente e versatile.
dell’applicazione o del prodotto
Ha uno slot per SSD NVMe
hardware messo alla prova.
I laboratori di Linux Pro assegnano un M.2 ed eMMC. Manca
voto da 1 a 10 alle seguenti categorie: il Wi-Fi pag. 31
Caratteristiche: fornisce tutte
le funzioni di cui abbiamo bisogno? Shogun Showdown
È innovativo?
Carte e combattimento nel
Prestazioni: esegue in maniera
efficiente le sue funzioni? Giappone medievale pag. 32 Radxa Rock 5B
È veloce e affidabile?
Facilità d’uso: dispone di
un’interfaccia grafica chiara e EarthX
facilmente fruibile?
Alla conquista di Marte in un
La documentazione che lo
accompagna è sufficientemente gestionale spaziale! pag. 32
completa ed esaustiva?
Qualità/prezzo: ha un prezzo
competitivo? Vale i soldi richiesti
Solus 4.4
per il suo acquisto? Una rolling release che
Il nostro giudizio viene offre un’esperienza fluida
poi riassunto da un voto finale,
espresso anche graficamente.
e soluzioni mirate
Ecco la legenda dei voti: e complete per diverse

10 Nulla da eccepire. Un prodotto


praticamente perfetto.
tipologie di utente pag. 34
EarthX
8-9 Un buon prodotto.
I pochi difetti presenti
non sono gravi.
Q4OS 5.2 Aquarius
Stabilità, leggerezza
6-7 Compie il suo lavoro
ma necessita
di ulteriori sviluppi.
e personalizzabilità al
centro di una distribuzione
4-5 Deve migliorare prima
di raggiungere
un voto sufficiente.
adatta tanto a computer
desktop quanto

1-3 Un completo disastro.


Gli sviluppatori devono
tornare alla fase di progettazione.
a server cloud pag. 35

Ricordiamo infine che i software Da non perdere >>


citati nelle sezioni Confronto I migliori programmi pag. 36
e Da non perdere sono spesso
presenti nel DVD sotto la voce
“Rivista” sotto forma di codice Panoramica >> Solus 4.4
sorgente o binario. La forza dei container pag. 42

30 LINUX PRO 220


Test Hardware

Radxa Rock 5B
Un SBC potente e versatile. Ha uno slot per SSD NVMe M.2 ed eMMC. Manca il Wi-Fi

adxa Rock 5 model B è un SBC con fattore di


SPECIFICHE
SoC: Rockchip
R forma Pico-ITX dalle caratteristiche hardware
davvero interessanti. Facendo un confronto
RK3588 64bit con il più noto degli SBC, la Raspberry Pi (in particolare
octa core - la 4), questa scheda di Raxda è decisamente più potente
Quad Core (circa 3 volte) e anche un po’ più grande. Se dal punto di
A76 2,4 GHz + vista hardware la Rock 5B vince a mani basse (o quasi,
Quad Core vedi scheda tecnica qui a lato), purtroppo dal lato
A55 1,8 GHz software il setup richiede tempo e un po’ di conoscenze.
GPU: Mali
G610MP4 Pronta all’uso
Memoria: Basta visitare il wiki di Radxa (https://bit.ly/3NWRTlL)
4, 8 o 16 GB per rendersi conto che l’installazione e la configurazione
LXDDR4 del sistema operativo non sono uno scherzo, almeno
Archiviazione: se non ci si vuole limitare al boot da microSD. Infatti è porta di rete a 2,5 Gbps con supporto PoE usando una
slot per possibile installare l'OS anche su modulo eMMC oppure scheda opzionale, ma non Wi-Fi e Bluetooth, per i quali
microSD, su un SSD M.2 ottenendo prestazioni di I/O del disco è necessario acquistare una scheda a parte (di nuovo,
eMMC, NVMe degne di un normale desktop (almeno con un M.2). il wiki vi è amico e vi indica le schede compatibili e con
M.2 Per sapere quali sistemi operativi possiamo installare, quali limiti). Tra le altre porte citiamo due USB 3.0, due
Connettività: trovate quelli ufficiali qui: https://bit.ly/3OiB1aD. Altre USB 2.0, due HDMI e una micro HDMI input, un GPIO
Ethernet 2,5 immagini di terze parti sono invece presenti all’URL a 40 pin, un jack da 3,5mm per le cuffie. Insomma,
Gbps https://bit.ly/44zFc7C. Tra queste troviamo anche la potenza e le possibilità non mancano di certo, solo
Connettori: 2 una versione ad-hoc di Windows… Viste le complessità, che per sfruttarle bisogna “smanettare” parecchio
HDMI 2.1, 2 se non siamo molto esperti con questo tipo di schede con pacchetti, librerie e configurazioni. Se i progetti
USB 2.0, 2 USB e con Linux, ci conviene acquistare uno dei due kit già che dobbiamo costruire hanno necessità di storage
3.0, GPIO 40 pronti realizzati da Cecchi Shop (www.cecchi.shop/ veloce e di tanta potenza di calcolo, questa è un’ottima
pin, 1 mini shop), uno con 8 GB di RAM e uno con 16 GB. Oltre alla scelta con prestazioni di alto livello e consumi
HDMI input, scheda trovate anche un SSD nVME M.2 con Debian 11 sicuramente inferiori rispetto all’uso di una macchina
CSI, DSI installata, la batteria dell’RTC, l’indispensabile dissipatore Intel/AMD/Apple. Per fare alcuni esempi, si può
e il case. Rimane da acquistare a parte l’alimentatore andare da un sistema desktop a un server –
(noi abbiamo usato quella della Raspberry Pi 4). l’importatore italiano che ci ha fornito l’unità, il già citato
Cecchi Shop, lo usa, per esempio, con Odoo, uno dei
Processore top migliori ERP e CRM Open Source, oppure per fare
Rock 5B presenta il SoC RockChip RK3588, con una editing video viste le capacità di encoding/decoding.
CPU a 8 core, una GPU Mali G610MP4, 6 TOPS NPU Negli altri casi, si fa preferire la Raspberry Pi perché
e capacità di codifica/decodifica 8k. Troviamo poi una ha una maggiore facilità d’uso e di setup. LXP

VERDETTO
DISTRIBUTORE: Cecchi Sr.l.
WEB: https://bit.ly/lxp_rock5b
PREZZO: 380 € (kit completo con 16 GB di RAM)

CARATTERISTICHE 8/10 FACILITÀ D’USO 6/10


PRESTAZIONI 9/10 QUALITÀ/PREZZO 7/10
Possiamo acquistare
il solo SBC, con tre Utilizzabile per progetti che richiedono molto spazio
differenti tagli di di storage e tanta potenza. Mancano Wi-Fi e Bluetooth
RAM (4, 8 e 16 GB). integrati. Setup complesso.
Per il setup software,
il forum e il wiki di
Radxa sono i nostri Il voto di Linux Pro 8/10
migliori alleati

LINUX PRO 220 31


Test Videogiochi

Shogun Showdown
Carte e combattimento nel Giappone medievale

e vi attirano il fascino dell’antico Giappone e


SPECIFICHE
Minime
S la grafica caratteristica del Paese del Sol
Levante, vi divertirà Shogun Showdown.
OS: Ubuntu Il titolo è ambientato nel periodo feudale del Paese,
18.04 o nell’era dei potentissimi shogun, delle sorte di temibili
successivo generali. Shogun Showdown è un avvincente gioco di
GPU: combattimento a turni che combina elementi di tipo Il massimo effetto distruttivo si ha facendolo
Intel HD roguelike con meccaniche di costruzione di mazzi di crescere e scatenando delle combo al momento
Graphics 3000 carte strategici. E la strategia è fondamentale per giusto. In pieno stile roguelike, la morte non è la fine e
o superiore prepararsi ad affrontare il formidabile shogun. Nel a ogni partita potrete sbloccare una serie di nuovi
CPU: 1.7+ GHz corso della partita, potrete acquisire nuove abilità e personaggi, attacchi e abilità, per un’esperienza
o superiore costruire un mazzo in grado di sconfiggere chiunque. dinamica e in continua evoluzione.
Memoria:
1 GB di RAM VERDETTO
SVILUPPATORE: Roboatino
WEB: goblinzstudio.com PREZZO: 9,99€

GIOCABILITÀ 8/10 LONGEVITÀ 8/10


GRAFICA 8/10 QUALITÀ/PREZZO 8/10

Il voto di Linux Pro 8/10

EarthX
Alla conquista di Marte in un gestionale spaziale!

on si può negare che la gestazione di questo


SPECIFICHE
Minime
N gioco, lanciato in accesso anticipato su Steam
nel luglio 2019 e pubblicato definitivamente 4
OS: anni dopo, sia stata sofferta, ma ne è valsa la pena. Il
Distribuzione vostro obiettivo, ispirato alle avventure extraterrestri
32/64 bit, con di Elon Musk, è costruire un impero spaziale e lanciare
supporto dei sempre più razzi fuori dall’atmosfera terrestre. Iniziate
driver più con un piccolo budget e c’è tutta la gestione profondo. La grafica è bella e i velivoli sono vari. Potete
recenti manageriale della crescita ma anche la strategia gioca giocare con razzi, capsule, astronavi e persino prototipi
GPU: un ruolo fondamentale e dovete evitare che i vostri da testare ispirati da SpaceX. La Luna e Marte sono
GTX 750 razzi esplodano al lancio. Il titolo è avvincente, nel vostro mirino e il percorso di crescita economico,
CPU: Intel i5 o divertente e rilassante, malgrado le sfide dello spazio tecnologico ed esplorativo saprà divertirvi a lungo. LXP
AMD FX6300
Memoria: VERDETTO
8 GB di RAM
DISTRIBUTORE: Mesote Games
WEB: bit.ly/3Oh8pOS PREZZO: 19,99 €

CARATTERISTICHE 9/10 FACILITÀ D’USO 8/10


PRESTAZIONI 8/10 QUALITÀ/PREZZO 9/10

Il voto di Linux Pro 9/10

32 LINUX PRO 220


ABBONATI
ALLA TUA RIVISTA PREFERITA
LA RICEVI A CASA APPENA STAMPATA
CSS Programmare da pro i fogli stile per il Web NEL
WEB CONSEGNA GARANTITA ENTRO 48H
DVD
D
Debian 12
le istruzioni
ioni
a pagina 4
onii

Fatdog64
pfSense 2.7.0
Q4OS 5.2
Peppermint OS 2023-07-01
Tails 5.15.1
Sniffnet

L’unica guida libera al mondo dell’Open Source PRO


RO Bavarder
e molto altro...

1.000 SERVER CSS Programmare da pro i fogli stile per il Web NEL
WEB
DVD
DVD

A COSTO ZERO
le istruzioni
zioni
onii
a pagina 4

Debian 12
Fatdog64
pfSense 2.7.0
Q4OS 5.2
Peppermint OS 2023-07-01
Tails 5.15.1
Sniffnet

Virtualizza tutto, dal desktop all’ambiente di sviluppo! Sfrutta gratis la L’unica guida libera al mondo dell’Open Source PRO
RO Bavarder
e molto altro...

tecnologia dei
1.0000 SERVER
Scopri i trucchi per diventare un maestro di VirtualBox
TARIFFA R.O.C. - POSTE ITALIANE SPA - ABB. POST. - D.L. 353/2003 (CONV. IN L. 27/02/2004 N. 46) ART. 1, COMMA 1, S/NA - DISTRIBUTORE: PRESS-DI, SEGRATE

Sviluppa in Python senza più errori di dipendenze e compatibilità colossi del cloud!

A COSTO ZERO
10 pagine su Docker: dai container imperdibili a come creare il tuo

Virtualizza tutto, dal desktop all’ambiente di sviluppo! Sf


Sfrutta gratis
i la
l
Scopri i truccchi peer diventare un maeestro di VirtualBox tecnologia dei
BUTORE: PRESS-DI, SEGRATE

Debian 12 è perfetta Sviluppa in Python senza più errori di dipendenze e compatibilità colossi
olo
olossi
ossii del
e cloud!
o !
10 pagine su Docker: dai container imperdi
imperdibili
dibili
bili a come creare
crear il tuo
tuo
per business e
NE SPA - ABB. POST. - D.L. 353/2003 (CONV. IN L. 27/02/2004 N. 46) ART. 1, COMMA 1, S/NA - DISSTRIBUTORE:

8,8 GB professionisti!
DI SISTEMI Debian 112
2 è perfetta
f tt
OPERATIVI Crea la
Cre
Crea la tua
tua IA per le
le foto
foto
foto peeer business e
E APP! 8,8 GB professionisti!
r
CLASSIFICAZIONE DI IMMAGINI DI SISTEMI
OPERATIVI Crrea
Crea
Cre
reeeaa la
la tu
tua
tua IA
IA per
per
pe
er le fot
ffooto
foto
Riconosci oggetti e animali con un E APP!
CLASSIFICAZIONE DI IMMAGINI
dispositivo da meno di 15 euro! Riconosci oggetti e animali con un
dispositivo da meno di 15 euro!

NUOVO!
L’O en S
L’Ope Source salva
l lle vite!
i !
NUOVO!
ICARE
2 DVD DA SCAR CE
AN

CON IL CODI IN
TARIFFA R.O.C. - POSTE ITALIA

ALL’INTERNO TE
Dagli strumenti open ai tumori trovati per
RICARE
2 DVD DA SCADICE L’Open Source salva le vite!
L’Ope
L’O ESCLUSIVA PER tempo dall’Intelligenza Artificiale, ecco la
rivoluzione della medicina grazie a Linux
CON IL CO IN Dagli strumenti open ai tumori trovati per
ALL’INTERNO TE
ESCLUS IVA PER tempo dall’Intelligenza Artificiale, ecco la Bimestrale - N.220 - 7,90 €
Sistema operativo
S Programmazione
Distribuzioni immutabili
D Crea videogiochi arcade
rivoluzione della medicina grazie a Linux I segreti delle distro 100% Con Godot programmare
sicure: sono il futuro di Linux videogame è Open e facilissimo
P.I. 10-08-2023 Agosto-Settembre

Bimestrale - N.220 - 7,90 €


Sistema operativo
S Programmazione
Distribuzioni immutabili
D Crea videogiochi arcade
I segreti delle distro 100% Con Godot programmare
s
sicure: sono il futuro di Linux videogame è Open e facilissimo
P.I. 10-08-2023 Agosto-Settembre

COP_001_LXP220_cover.indd 1 20/07/2023 02:56:37


C l’abbonamento
Con l’ bb t
cartaceo la versione
digitale è in OMAGGIO!
Riceverai 6 numeri a soli
,90€
32 invece di 47 ,40€
DISPONIBILE
ANCHE IN
DIGITALE

Scansiona il QrCode per abbonarti oppure contattaci


Telefono online email WhatsApp
02 87168197 www.sprea.it/linuxpro abbonamenti@sprea.it 329 3922420
Solo messaggi
Informativa ex Art.13 LGS 196/2003. I suoi dati saranno trattati da Sprea SpA, nonché dalle società con essa in rapporto di controllo e collegamento ai sensi dell’art. 2359 c.c. titolari del trattamento, per dare corso alla sua richiesta di abbonamento. A tale scopo, è indispen-
sabile il conferimento dei dati anagrafici. Inoltre previo suo consenso i suoi dati potranno essere trattati dalle Titolari per le seguenti finalità: 1) Finalità di indagini di mercato e analisi di tipo statistico anche al fine di migliorare la qualità dei servizi erogati, marketing, attività
promozionali, offerte commerciali anche 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, finanziario,
assicurativo, automobilistico e ad enti pubblici ed Onlus, per propri utilizzi aventi le medesime finalità di cui al suddetto punto 1) e 2). Per tutte le finalità menzionate è necessario il suo esplicito consenso. Responsabile del trattamento è Sprea SpA via Torino 51 20063 Cernusco
SN (MI). I suoi dati saranno resi disponibili alle seguenti categorie di incaricati che li tratteranno per i suddetti fini: addetti al customer service, addetti alle attività di marketing, addetti al confezionamento. L’elenco aggiornato delle società del gruppo Sprea SpA, delle altre
aziende a cui saranno comunicati i suoi dati e dei responsabili potrà in qualsiasi momento essere richiesto al numero +39 0287168197 “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, modificare o cancellare per violazione di legge, o opporsi al loro trattamento – scrivendo a Sprea SpA via Torino 51 20063 Cernusco SN (MI).
Solus 4.4
Una rolling release che offre un’esperienza fluida e soluzioni mirate
e complete per diverse tipologie di utente

olus è una distribuzione


IN BREVE
Facile da usare,
S Linux indipendente nota
per il suo approccio
elegante e ricca focalizzato sulla semplicità,
di funzioni, è una l’usabilità e l’eleganza del design.
distribuzione È costruita da zero utilizzando un
solida a fork del gestore di pacchetti PiSi.
prescindere È una rolling release, il che
dalle vostre significa che gli aggiornamenti
esigenze. La software vengono rilasciati in
nuova edizione, modo continuo e progressivo. A
Solus 4.4, offre luglio ha pubblicato la sua prima
aggiornamenti nuova release stabile in due anni,
degli ambienti Solus 4.4 della serie Harmony.
desktop, degli
stack software e 4 ambienti desktop L’ambiente desktop Budgie, sviluppato dal team del progetto, è ricco di funzionalità e facile
dell’abilitazione Solus 4.4 offre nuovi da personalizzare. La versione 10.7.2 supporta lo stack GNOME 43 ed è elegante e ben pensata
hardware. aggiornamenti di suoi ambienti
desktop, degli stack software e dell’abilitazione Novità e tradizione
hardware, oltre a un generale affinamento della sua Tutte le edizioni includono Firefox 114.0.1, LibreOffice
fruibilità. Offre quattro edizioni desktop: Budgie, 7.5.3.2 e Thunderbird 102.12.0, mentre per la
GNOME, KDE Plasma e MATE. Il primo è il desktop riproduzione multimediale di audio e video offrono
di punta, prodotto dal team del progetto. È ricco di software diversi pronti all’uso. Solus 4.4 è basato sul
funzionalità, facile da personalizzare e basato sulle kernel Linux 6.3.8, che consente il supporto di una
tecnologie più moderne. La versione GNOME si gamma più ampia di hardware. Mesa è stato aggiornato
rivolge agli utenti che desiderano distribuzioni alla versione 23.0.3, che porta con sé miglioramenti in
pronte per l’uso ed è curata e al passo con i tempi. questo senso. Budgie 10.7.2 offre il supporto allo stack
L’edizione Plasma viene presentata come GNOME 43, correzioni di bug, nuovi widget e una serie
“un’esperienza desktop sofisticata per gli di miglioramenti a una soluzione già molto elegante e
smanettoni”, mentre MATE è il desktop tradizionale funzionale. La distribuzione si conferma una solida
La versione con per gli utenti avanzati e l’hardware più datato. Il team scelta per diverse tipologie di utente, da quello
ambiente desktop di Solus, tuttavia, prevede per il futuro di deprecare domestico, ai produttori di contenuti, agli sviluppatori e
GNOME permette MATE e di distribuire un’edizione con Xfce per gli persino ai giocatori, a cui offre vari giochi Open Source
di iniziare subito utenti che desiderano un’esperienza desktop supportati nativamente, insieme alla compatibilità
a lavorare semplice e leggera basata su GTK. con molti gamepad e controller. LXP

VERDETTO
PRODUTTORE: Il team di Solus
WEB: https://getsol.us/
LICENZE: varie

CARATTERISTICHE 9/10 FACILITÀ D’USO 9/10


PRESTAZIONI 8/10 DOCUMENTAZIONE 8/10

Un sistema operativo adatto a diverse tipologie di utente,


con app mirate alle esigenze di ognuna.

Il voto di Linux Pro 9/10

34 LINUX PRO 220


Test Distribuzione Linux

Q4OS 5.2 Aquarius


Stabilità, leggerezza e personalizzabilità al centro di una
distribuzione adatta tanto a computer desktop quanto a server

4OS è un sistema veloce


IN BREVE
Un solido
Q e intuitivo basato su
Debian Linux. È stato
sistema progettato per offrire ambienti
operativo basato desktop in stile classico, come
su Debian, Trinity e KDE Plasma, e semplici
veloce e accessori. È adatto sia ai neofiti
piacevole da sia agli utenti esperti. Si distingue
usare. Funziona per il ridotto dispendio di risorse
bene anche su hardware e funziona bene sia su
hardware datato. macchine nuove sia su computer
Non viene datati. È molto utile anche per
fornito con gli ambienti cloud virtuali. A
molte app differenza di altre distro, non offre
preinstallate, ma un gruppo completo di applicazioni
fornisce potenti preinstallate, ma un sistema snello Gli strumenti di questa distribuzione, come il Desktop Profiler, vi permettono di configurarla in base
strumenti per e dotato di potenti strumenti che alle vostre esigenze e preferenze, scegliendo il livello di personalizzazione che preferite
personalizzare il vi consentono di configurarlo in
sistema in base base alle vostre esigenze e preferenze. L’obiettivo prestazioni affidabili e un minimo sforzo post-
alle proprie è quello di fornire un OS stabile e leggero, arricchito installazione. L’adozione di nuove funzionalità viene
esigenze. da strumenti unici. affrontata con cautela, con test e indagini approfondite
prima dell’implementazione. PQ4OS 5.2 Aquarius
Strumenti di personalizzazione è una nuova versione stabile del sistema operativo
Per esempio, lo strumento Desktop Profiler della basata su Debian Bookworm 12 e Plasma 5.27.5 (con
distribuzione consente di creare e importare profili l’ambiente desktop Trinity 14.1.1 opzionale). Questa
personalizzati, semplificando la configurazione del versione con supporto a lungo termine (LTS) riceverà
sistema e l’impostazione delle applicazioni. Q4OS patch di sicurezza e aggiornamenti per almeno cinque
permette la coesistenza degli ambienti desktop Plasma anni. È disponibile per i computer a 64 bit, mentre
e Trinity e potete passare da uno all’altro senza un’edizione a 32 bit per i sistemi più vecchi sarà
interferenze. È anche possibile eseguire una procedura rilasciata a breve. Nel complesso, Q4OS offre un
guidata di setup da Windows e installare Q4OS con la approccio unico alle distribuzioni Linux, concentrandosi
stessa facilità di qualsiasi altra applicazione, ottenendo sulla semplicità, l’efficienza delle risorse e le opzioni di
Potete facilmente
cambiare i temi del
una soluzione molto più efficiente rispetto personalizzazione, il che lo rende una scelta
desktop e passare all’esecuzione di una macchina virtuale. La stabilità è un convincente per gli utenti che cercano un sistema
da uno all’altro obiettivo primario della distro, che garantisce operativo versatile e accessibile. LXP

VERDETTO
PRODUTTORE: Il team di Q4OS
WEB: https://q4os.org/
LICENZE: GPL e altre

CARATTERISTICHE 8/10 FACILITÀ D’USO 8/10


PRESTAZIONI 9/10 DOCUMENTAZIONE 8/10

Prestazioni affidabili e grande solidità nel tempo sono suoi


punti di forza, insieme alla personalizzazione.

Il voto di Linux Pro 8/10

LINUX PRO 220 35


I migliori nuovi programmi Open Source

Da non perdere
ColorWall Tube Converter SonoBus Bavarder Imaginer Sniffnet
Nativefier Halftone Tagspaces Librerama War Thunder
SFONDI SCRIVANIA

ColorWall
Versione: v1.8
Web: https://bit.ly/3NkvboH

olorWall propone la più grande


C collezione al mondo di sfondi online
con risoluzione a 4k, 8k e Ultra HD
in una semplice e veloce interfaccia che offre C’è un sistema di supporto per scaricare più sfondi contemporaneamente in modo rapido
numerose funzioni. Quando aprite il programma
vi trovate davanti a una prima selezione programma definite la cartella per gli scaricamenti
di immagini con le rispettive risoluzioni. e quanti contemporanei consentirne. ColorWall
Passando il mouse su una di esse attivate è scritto col framework Qt/c++, che offre
quattro pulsanti che consentono di vederla prestazioni elevate con un’impronta di sistema
a tutto schermo per assicurarvi che molto bassa e nei nostri test abbiamo avuto
effettivamente risponda alle vostre esigenze, un’esperienza fluida e rapida.
cercarne altre simili, accedere ai suoi metadati
o scaricarla. I metadati risultano particolarmente ORIENTARSI IN COLORWALL
utili perché permettono di sfruttare informazioni
come i colori dominanti dell’immagine e i tag del 1
soggetto per trovare altri sfondi con le stesse
2
caratteristiche. Questo metodo di ricerca è 3
molto completo e fornisce infiniti spunti ma c’è
un’ampia serie di altre opzioni a vostra
disposizione per trovare le foto o illustrazioni
ideali. Prima di tutto c’è la casella di ricerca
Search images in cui si può inserire il soggetto
(in inglese) da ricercare. C’è poi un’ampia serie di
filtri applicabili e attivabili facendo click sul
pulsante Apply filter. Potrete così disporre gli
sfondi per rilevanza, data o numero di
visualizzazioni, filtrarli in base al colore, la data di
aggiunta o altri parametri, oppure farvi
sorprendere da una distribuzione casuale. Ci 4
sono anche pulsanti dedicati a stili specifici, per
esempio per vedere solo soggetti disegnati in
Area di ricerca Azioni sull’immagine
stile giapponese o grafica realizzata con 1 Qui si può inserire direttamente il 3 Passando il mouse su uno sfondo vedete
l’Intelligenza Artificiale. Allo stesso modo termine di ricerca, per esempio un soggetto o i pulsanti per aprirla a tutto schermo, cercarne altre
si può fare click sul pulsante People per vedere un ID precedentemente identificato. simili, accedere ai suoi metadati o scaricarla.
immagini che contengono un soggetto umano.
Applicazione dei filtri Metadati dello sfondo
Potete selezionare più sfondi e sfruttare il 2 In questa barra ci sono vari filtri che 4 Vari dati come i colori dominanti e i tag
Download manager multithreaded per scaricarli permettono di selezionare gli sfondi in base a del soggetto. Fate click su uno di essi per caricare
tutti allo stesso tempo. Nelle impostazioni del parametri come colori, risoluzione e popolarità. le immagini con la stessa caratteristica.

36 LINUX PRO 220


DOWNLOADER YOUTUBE

Tube
Converter
Versione: V2023.6.1
Web: https://bit.ly/3qHK7Vb
nche se per brevità abbiamo definito Tube
A Converter un downloader per YouTube, in
realtà questa applicazione Open Source,
che è un frontend per yt-dlp (https://github.com/
yt-dlp), può gestire moltissime fonti. Ne trovate un
lungo elenco all’indirizzo bit.ly/3PayKPr. Il suo
utilizzo, inoltre, è immediato. Dopo averla installata,
infatti, basta fare click sul pulsante Add Download, base alle proprie esigenze. Tube Converter si può Il menu delle
aggiungere un URL video, quindi fare click su scaricare da Flathub, mentre i sorgenti sono preferenze
Validate. Vengono quindi visualizzate le opzioni per disponibili su GitHub. Nel complesso è un permette di
personalizzare
selezionare una serie di parametri come il formato programma potente, facile da usare e in continuo l’applicazione in
del file, il livello di qualità e i sottotitoli. È anche aggiornamento. Va però ricordato che lo base alle proprie
possibile eseguire più download alla volta e scaricamento di video non è consentito dalla licenza esigenze
scaricare i metadati. Il menu delle preferenze YouTube e di altri canali e che va usato nel rispetto
permette inoltre di personalizzare l’applicazione in delle leggi sui copyright.

COLLABORAZIONE AUDIO

SonoBus
Versione: 1.6.2
Web: https://github.com/sonosaurus/sonobus
e lavorate con altre persone per creare
S podcast, musica o qualsiasi altra
creazione audio, questo strumento di
collaborazione in rete per lo streaming audio
multipiattaforma in tempo reale potrebbe esservi
utile. Basta scegliere un nome di gruppo unico
per collegare più persone e registrare facilmente
l’audio di tutti, oltre a riprodurre qualsiasi
contenuto audio per l’intero team. È inoltre
SonoBus permette
possibile controllare con precisione la latenza, la che si potrebbe ottenere da un microfono. di lavorare in
qualità e il mix complessivo, nonché accedere alla Nel complesso, però, si tratta di un’applicazione gruppo sull’audio
compressione in ingresso, al noise gate, agli facile da usare che consente lo streaming via Internet o LAN
effetti di equalizzazione e a un riverbero master. di audio peer-to-peer di alta qualità e a bassa
Tutte le impostazioni sono dinamiche e le latenza tra dispositivi su Internet o su una rete
statistiche di rete sono chiaramente visibili. locale. Sono disponibili pacchetti per le
La qualità dell’audio può essere regolata distribuzioni Linux basate su Debian come
istantaneamente utilizzando il codec Opus a pure un pacchetto Snap. Le istruzioni per
bassa latenza. Il programma funziona meglio (con l’installazione si trovano su sonobus.net/linux.
latenze più basse) se si collega il computer al html. È anche possibile compilare il programma
router con una rete Ethernet cablata e si autonomamente seguendo le istruzioni riportate
utilizzano le cuffie per evitare l’eco o il feedback su https://bit.ly/3NsWVHC.

LINUX PRO 220 37


Da non perdere

INTELLIGENZA ARTIFICIALE

Bavarder
Versione: 0.2.3
Web: https://github.com/Bavarder/Bavarder

icuramente i servizi di Intelligenza Artificiale


S possono essere molto utili anche per
un dubbio al volo nella vita di tutti i giorni,
ma non sempre abbiamo il tempo di collegarci
al nostro preferito dal browser. Bavarder, che prende
il nome da un verbo francese traducibile con
“chiacchierare”, risolve brillantemente questo
problema offrendovi una finestra sulla scrivania che
si connette a diversi provider, selezionabili dalla voce
Providers del menu principale. L’impostazione Chat che si possono usare senza alcuna La semplice
predefinita è collegarsi a https://open-assistant.io/it, registrazione. Scelto il servizio, che si può cambiare interfaccia
ma ci sono anche altri progetti molto validi. quando si vuole, si può interrogare l’IA in italiano o in di Bavarder
permette di
Per utilizzare Bavarder non serve dare i propri dati ma altre lingue: basta scrivere in quella che si vuole usare. interrogare vari
alcuni servizi come OpenAI GPT 3.5 Turbo Bavarder non offre la stessa versatilità dell’accesso servizi di IA al volo
richiedono una chiave API da ottenere registrandosi diretto ai servizi (per esempio, non si può far dalla scrivania
sul sito del provider di Intelligenza Artificiale e poi riformulare la risposta) ma è pratico per un utilizzo
inserire nella sezione Fornitori delle preferenze di estemporaneo e ha funzioni per copiare e incollare
Bavarder. Ci sono comunque ottimi sistemi come BAI prompt e risposte.

GENERARE IMMAGINI

Imaginer
Versione: 12.0.4
Web: https://imaginer.codeberg.page/

e volete usare l’Intelligenza Artificiale non


S per scrivere ma per creare elementi
grafici, Imaginer è una strada semplice.
Creato dagli stessi autori di Bavarder, ne riprende
la struttura e il funzionamento. Anche in questo
caso, le opzioni sono meno potenti di quelle
offerte dal lavorare direttamente con i servizi su
cui è basato ma in compenso è facilissimo da
usare e permette di scegliere numerosi fornitori Potrete così avere immagini nello stile di Per ottimizzare i
risultati è utile dare
da una singola interfaccia. I prompt però vanno Picasso o di Renoir in pochi secondi. Se volete il prompt in inglese
inseriti in inglese: come si può vedere nella ispirazione per i prompt, il sito di questo servizio e provare
prima finestra della foto, infatti, le istruzioni in offre anche un database di milioni di esempi con a variare il suo testo
italiano possono essere interpretate in modo i loro risultati (https://stablediffusionweb.com/ e il provider con
cui lo si elabora
scorretto. Come in Bavarder, non possiamo prompts). Potete installare Imaginer da Flathub
rigenerare l’output se quello che otteniamo non oppure da Terminale (se avete installato Flathub)
ci soddisfa. Basta però aprire una nuova finestra con flatpak install flathub page.codeberg.
e provare a modificare leggermente il prompt o a Imaginer.Imaginer . Il mercato delle applicazioni
cambiare provider. Con alcuni, come Stable per la produzione di immagini attraverso l’IA
Diffusion (https://stablediffusionweb.com/), si oggi è ricchissimo e con questo strumento
può anche chiedere all’Intelligenza Artificiale di potete provarne varie da un’unica interfaccia
usare lo stile di uno specifico genere o artista. per ottenere i risultati migliori.

38 LINUX PRO 220


Il meglio del software Open Source

MONITORAGGIO INTERNET

Sniffnet
Versione: 1.2.1
Web: https://github.com/GyulyVGC/sniffnet
niffnet è uno strumento Open Source
S di monitoraggio della rete progettato
per semplificare il tracciamento del traffico
Internet. Offre funzioni per raccogliere statistiche e
analizzare in modo dettagliato le attività di rete. Un
suo importante punto di forza è il fatto che ha
un’interfaccia più facile da usare rispetto ad altri
prodotti con funzioni analoghe. L’applicazione è
sviluppata interamente in Rust, un linguaggio di
programmazione popolare ed efficiente e il suo
codice sorgente completo è disponibile su GitHub.
Con Sniffnet è possibile applicare vari filtri per all’interno della rete locale. Inoltre, consente di Sniffet offre funzioni
analizzare il traffico osservato, accedere a grafici in scoprire la posizione geografica degli host remoti, di per analizzare in
modo dettagliato
tempo reale che ne illustrano l’intensità e visualizzare salvare gli host di rete preferiti, di impostare notifiche le attività di rete
le statistiche generali relative a Internet. Fornisce personalizzate per eventi di rete specifici e di in un’interfaccia
inoltre informazioni sui nomi di dominio e sui scegliere tra quattro diversi temi per personalizzare semplice
provider di rete associati agli host che scambiano l’interfaccia. Nel complesso, un buon bilanciamento
traffico, consentendo di identificare le connessioni tra ampie funzioni e facilità d’uso.

CONVERSIONE WEB APP

Nativefier
Versione: v50.1.1
Web: https://github.com/nativefier/nativefier
ome l’autore di Nativefier dichiara sulla
C pagina GitHub del progetto, lo ha creato
perché era stanco di dover aprire un
browser e poi cercare tra le numerose schede
aperte quando utilizzava Facebook Messenger
o Whatsapp Web. Se anche voi non amate
saltare da una scheda all’altra, Nativefier
può essere la soluzione. Questo strumento a
riga di comando consente di creare facilmente
una applicazione desktop da qualsiasi Web app. dell’applicazione e altre opzioni che possono I flag che si possono
È basato su Electron (che utilizza Chromium essere sovrascritte utilizzando i flag da riga visualizzare nell’help
di Nativefier
sotto il cofano), quindi le sue app funzionano di comando che sono disponibili nei documenti permettono di
sia su distro GNU/Linux sia su sistemi operativi dell’API (bit.ly/3r2MYYY) o che possono essere personalizzarne
Windows e Mac. Potete installare facilmente visualizzati nel programma con: le opzioni
Nativefier con il comando: nativefier --help
$ npm install nativefier -g Per esempio, per sovrascrivere il nome, si può usare:
Anche la creazione delle app è in genere nativefier --name App medium.com
semplice. Per crearne una per medium.com, per Su bit.ly/3pgzsAn troverete anche un elenco
esempio, basta usare il comando: di comandi di compilazione forniti dalla
nativefier medium.com comunità di Nativefier per le applicazioni che
Nativefier cercherà di determinare il nome richiedono un po’ più di lavoro.

LINUX PRO 220 39


Da non perdere

COMPRESSIONE IMMAGINI

Halftone
Versione: 0.3.0
Web: https://github.com/tfuxu/Halftone

alftone è una semplice applicazione per


H dare alle immagini uno stile simile alla
pixel art e ridurre le dimensioni dei file.
Per farlo, usa la tecnica di riduzione della
profondità del colore chiamata dithering, ossia
l’aggiunta di rumore distribuito. Si può scegliere
tra 3 diversi algoritmi di dithering che danno
risultati differenti. Il predefinito Floyd-Steinberg
dà un effetto puntinato, Riemersma genera
immagini simili a quelle posterizzate e Bayer/
ordered produce una retinatura. Si può anche per esempio a due, si possono anche creare Ci sono diversi
intervenire sul numero di colori e le dimensioni immagini artistiche. Una volta ottenuto quel algoritmi di
dell’immagine, riducendoli per aumentare che volete dalla vostra foto la potete facilmente dithering e la
possibilità di agire
l’effetto vintage. In base a quali sono le vostre esportare in diversi formati, selezionabili da un sul numero di colori
esigenze dovrete fare qualche tentativo per menu a tendina. Potete scaricare il programma e sulle dimensioni
ottenere i risultati desiderati ma se vi piace un da Flathub (https://bit.ly/3OTrg3o) oppure dell’immagine
look anni 80 potrete ottenere risultati simpatici. installarlo dalla riga di comando con
Riducendo molto il numero di colori, portandolo flatpak install flathub io.github.tfuxu.Halftone

ORGANIZZAZIONE FILE

Tagspaces
Versione: v5.3.5
Web: https://github.com/tagspaces/tagspaces

e mantenere tutti i vostri file organizzati


S e facilmente reperibili è una priorità,
Tagspaces è uno strumento da valutare.
Questa applicazione offline consente di etichettare
facilmente i file semplicemente trascinandoli e
rilasciandoli. Facendo click con il tasto destro si
ottengono opzioni rapide come copiare,
rinominare, eliminare e altro. l menu dei tag Trovare i file è facile e le anteprime sono accessibili TagSpaces aiuta a
organizzare i file e
consente di modificare o rimuovere questi facendo click su di essi. TagSpaces offre anche la le cartelle con tag
elementi. Oltre a poter usare quelli predefiniti funzionalità di creare note digitali, offrendo e colori e dispone
di TagSpaces potete anche creare i vostri un’esperienza versatile per gli appunti simile a di funzionalità per
personalizzati. In tutti potete modificare colori quella di applicazioni popolari come Evernote o prendere appunti
e testi. Le categorie si possono cambiare Notion. Le note possono essere create e
e si possono aggiungere tag al loro interno. È modificate utilizzando editor di testo WYSIWYG,
possibile inoltre estrarre i tag dei file musicali dalle con supporto per vari formati come Markdown,
meta-descrizioni. La ricerca in TagSpaces HTML e testo semplice. È possibile utilizzare
supporta il filtraggio per tag o query multiple e le blocchi comuni come elenchi, intestazioni, tabelle
opzioni di ricerca avanzate includono il tipo e immagini all’interno delle note e il nuovo editor
di file, la dimensione, la data e l’ora (funzioni Markdown di TagSpaces fa un ulteriore passo
disponibili nella versione Pro a pagamento). I tag avanti supportando equazioni matematiche LaTeX
possono essere inclusi o esclusi dalla ricerca. e snippet di codice.

40 LINUX PRO 220


Il meglio del software Open Source

ARCADE

Librerama
Versione: 0.6.1
Web: https://bit.ly/3IJlGMX

e vi piacciono i giochi semplici e veloci,


S Librerama è una raccolta da provare.
I suoi minigiochi arcade, che sono
chiamati “nanogiochi”, sono infatti tanto
immediati quanto incalzanti. Il titolo si installa
facilmente come Flatpak con:
flatpak install flathub page.codeberg.
yeldham.Librerama
Dopo averlo fatto, vedrete una serie di schermate
introduttive dopo le quali, premendo il pulsante
Arcade, potrete passare alla selezione delle vostre finita. I nanogiochi sono divertenti. Tendono a L’azione è serrata,
sfide. Il vostro obiettivo principale è accumulare il essere un po’ punitivi ma offrono una modalità di semplice e
divertente. Si gioca
punteggio più alto possibile vincendo il maggior pratica per orientarsi senza perdere energia. Tutto
con i tasti freccia e
numero di nanogiochi prima di arrivare al game il codice e le risorse dei giochi sono inoltre Open la barra spaziatrice,
over, mentre questi aumentano progressivamente Source. C’è anche una guida allo sviluppo se ma si può anche
sia in velocità sia in difficoltà. Se perdete, invece, volete cimentarvi nella loro creazione (https://bit. collegare un joypad
la velocità e l’energia diminuiscono e se ly/435R5S5) col motore di gioco Godot (https://
quest’ultima raggiunge lo 0, la vostra partita è godotengine.org/).

COMBATTIMENTO BELLICO

War
Thunder
Versione: 0.9.4.106
Web: https://bit.ly/42Dl2YB

ar Thunder è un titolo multiplayer


W immersivo che combina aerei, elicotteri
d’attacco, forze di terra e navi da guerra
in intense battaglie. Giocando potrete
sperimentare un’ampia gamma di situazioni
di combattimento, dal presidiare la torretta storiche e missioni in solitario. Aggiornamenti Un gioco militare
immersivo dalla
di un bombardiere al difendere i vostri commilitoni regolari introducono nuovi veicoli, mappe, missioni
bella grafica che
da assalti aerei, dal lanciare razzi contro velivoli e nazioni. Con una grafica straordinaria, effetti vi permette di
nemici all’affondare navi da guerra con dei siluri. sonori autentici e musiche piacevoli, War Thunder controllare centinaia
Il gioco vanta oltre 2.000 veicoli meticolosamente crea un’atmosfera coinvolgente e la sua attenzione di veicoli
realizzati (ricreati da documenti storici per ai dettagli e agli elementi immersivi vi manterrà e scenari bellici
garantire la massima autenticità) e oltre 100 impegnati e coinvolti a lungo. Considerate però
mappe molto ben progettate che immergono i che non è pensato per un utilizzo occasionale ma
giocatori in importanti teatri di battaglia storici, per gli appassionati del genere. Il gioco vanta
aumentando il realismo della simulazione. Potete anche un’ampia e attiva comunità ed è possibile
impegnarvi in combattimenti giocatore contro creare contenuti personalizzati e condividerli su
giocatore (PvP) con varie impostazioni di difficoltà, War Thunder Live. Potete installare il gioco da
oppure partecipare alla modalità giocatore contro Flathub: prevede un utilizzo di una ventina di GB
ambiente (PvE), che comprende campagne del vostro spazio di archiviazione. LXP

LINUX PRO 220 41


WE COMPARE TONS OF STUFF SO YOU DON’T HAVE TO!

Panoramica Tante soluzioni provate per voi per farvi


scegliere sempre il meglio sul mercato

La forza dei container


Sicurezza, leggerezza, scalabilità, portabilità ed efficienza in configurazione
e installazione sono solo alcuni dei vantaggi di Docker. Ecco come sfruttarli!

ocker è una piattaforma Open tradizionali macchine virtuali. I container sono


I CRITERI
Abbiamo
D Source che consente di creare,
distribuire e gestire applicazioni
leggeri e possono essere avviati rapidamente,
consentendo una distribuzione rapida e
raccolto alcune in ambienti virtualizzati chiamati container. scalabile delle applicazioni. L’utilizzo di Docker
applicazioni che Questi ultimi sono un modo per impacchettare ha semplificato lo sviluppo, la distribuzione
beneficiano un’applicazione e tutte le sue dipendenze e l’ampliamento delle applicazioni, fornendo
maggiormente in un’unità standardizzata, garantendo che un’infrastruttura flessibile e portatile.
dell’isolamento, funzioni in modo coerente e affidabile in È diventato uno degli strumenti chiave
della portabilità, diversi ambienti di esecuzione. La tecnologia nell’ambito dello sviluppo di app e
della scalabilità Docker si basa sul concetto di virtualizzazione nell’implementazione di architetture basate
e della gestione a livello di sistema operativo, che consente di su microservizi. Orientarsi però tra i molti
semplificata isolare le applicazioni e i servizi in esecuzione container disponibili non è facile: ecco allora
delle risorse che all’interno dei container, fornendo allo stesso un’imbarcata dei migliori per portare
Docker porta. tempo una maggiore efficienza rispetto alle più efficienza nel vostro sistema!

42 LINUX PRO 220


Tante funzioni Python sotto
in poco spazio pieno controllo

usyBox è un ottimo strumento per avere ython è un linguaggio di programmazione ad alto livello,
B distribuzioni efficienti dal punto di vista dello spazio.
Offre una vasta gamma di utilità di base per i
P interpretato e versatile, noto per la sua sintassi leggibile
e le numerose librerie disponibili. Come per altri
sistemi operativi Unix-like. Grazie alla sua compattezza, linguaggi, installarlo come container Docker offre vantaggi
personalizzabilità e compatibilità, è ampiamente utilizzato in termini di portabilità, isolamento, riproducibilità, scalabilità
in sistemi embedded e distribuzioni Linux leggere. e gestione semplificata delle applicazioni.

INFORMAZIONI INFORMAZIONI
BUSYBOX SCC
Web: https://hub.docker.com/_/busybox Web: https://hub.docker.com/_/python
Stelle su Dockerhub: oltre 3.000 Stelle su Dockerhub: oltre 8.000

Server Web più


facili e sicuri
Implementazioni perfette
in pochissimo tempo
a versione containerizzata del popolare server Web
L NGINX, noto per le sue prestazioni elevate, la
scalabilità e la gestione efficiente delle richieste. Il La pagina di NGINX su hub.docker.com offre una serie di utili istruzioni
per l’utilizzo ottimale dell’immagine, semplificandolo ulteriormente
container NGINX consente di configurare e avviare facilmente
una sua istanza all’interno di un ambiente Docker. Una volta
avviato il contenitore, è possibile definire le configurazioni l’hosting di contenuto statico potete generare una nuova
specifiche del server Web, come i file di configurazione, i siti immagine con un semplice Dockerfile:
virtuali, i proxy inversi, i certificati SSL e altro ancora. FROM nginx
Utilizzando questo container, si può implementare velocemente COPY static-html-directory /usr/share/nginx/html
un server Web per l’hosting di siti statici o l’instradamento del Mettete questo file nella stessa directory dei contenuti (static-
traffico verso diverse applicazioni backend oppure si può usare html-directory), eseguite docker build -t contenuto e poi
NGINX come proxy inverso per migliorare le prestazioni e la avviate il container:
sicurezza delle applicazioni. Per questo è ampiamente utilizzato $ docker run --name some-nginx -d contenuto
in scenari di produzione e sviluppo per l’esecuzione di
applicazioni Web, la distribuzione di contenuti statici, il INFORMAZIONI
bilanciamento del carico e la gestione del traffico Web.
All’indirizzo https://hub.docker.com/_/nginx trovate una serie NGINX
di utili istruzioni per l’utilizzo ottimale dell’immagine che vi Web: https://hub.docker.com/_/nginx
faciliteranno ulteriormente il lavoro. Per esempio, per fare Stelle su Dockerhub: oltre 10.000

LINUX PRO 220 43


Panoramica

Sicurezza dalla Dati ad alte


community prestazioni

rowdSec è un software Open Source per la difesa edis è un sistema di memorizzazione dei dati ad
C attiva contro gli attacchi informatici e le intrusioni.
Con un approccio basato sulla community, rileva
R alte prestazioni che supporta una vasta gamma di
strutture dati consentendo una maggiore
e mitiga le minacce in tempo reale utilizzando una vasta base flessibilità nella loro organizzazione e gestione. È
di dati condivisa. È molto flessibile e può essere integrato con ampiamente utilizzato come database cache, sistema di
diversi servizi. Non fatevi ingannare dal numero di stelle ridotto! messaggistica, registro di eventi e per altre applicazioni.

INFORMAZIONI INFORMAZIONI
CROWDSEC REDIS
Web: https://hub.docker.com/search?q=CrowdSec Web: https://hub.docker.com/_/redis/tags
Stelle su Dockerhub: oltre 40 Stelle su Dockerhub: oltre 10.000

Gestire meglio
i propri container
Docker diventa molto più facile da
usare con l’interfaccia di Portainer
ortainer è uno strumento fondamentale per
P l’utilizzo di Docker, offrendo un’interfaccia Web
user-friendly che semplifica il processo di gestione
dei container, delle immagini, delle reti e dei volumi. Questo Portainer è la piattaforma di gestione dei container più diffusa al mondo e facilita ogni
progetto Open Source è infatti la piattaforma più diffusa al fase del lavoro in Docker anche a chi ha meno esperienza
mondo per gestire i contenitori. Semplificando il
deployment, l’uso e il monitoraggio degli ambienti Docker, li accesso. Supporta inoltre l’utilizzo di template e stack, che
rende accessibili anche agli utenti con meno esperienza. sono configurazioni predefinite per il deployment dei
Creare, avviare, fermare, riavviare ed eliminare i container è container. Portainer fornisce infine funzionalità di
molto facilitato dalla sua interfaccia intuitiva, che fornisce monitoraggio e logging, consentendo agli utenti di
anche informazioni dettagliate su quelli in esecuzione. visualizzare i log dei container, l’utilizzo delle risorse e le
Portainer permette inoltre di cercare, scaricare e caricare metriche delle prestazioni, facilitando il troubleshooting e
immagini Docker da registri pubblici o privati, oltre che di dando un quadro preciso dello stato degli ambienti Docker.
realizzare immagini personalizzate e gestirne i repository.
Le funzioni per la gestione di reti e volumi includono la INFORMAZIONI
creazione e la configurazione delle reti per la comunicazione
tra i container e l’uso dello storage dei dati persistente. Il PORTAINER
programma consente anche agli amministratori di creare e Web: https://hub.docker.com/u/portainer
gestire più account utente con diversi livelli di permessi di Stelle su Dockerhub: Oltre 10.000

44 LINUX PRO 220


La forza dei container

Media server
semplificato
Coerenza su più piattaforme,
aggiornamenti e immediatezza
on il container Docker Jellyfin ottenete un’immagine
C preconfigurata per eseguire questo software per
media server Open Source. Fornisce una piattaforma Creare una piattaforma di streaming personalizzata per l’accesso e la fruizione della
per l’organizzazione e lo streaming dei contenuti e l’accesso propria libreria multimediale non è mai stato così facile
alla libreria multimediale personale, compresi film,
programmi TV, musica e foto. Utilizzando il container Docker coerente su diverse piattaforme, rendendo più semplice la
di Jellyfin, potete facilmente gestirlo come media server self- gestione e la migrazione del media server, se necessario.
hosted e il contenitore include tutte le dipendenze e le Inoltre, permette di semplificare gli aggiornamenti e la
configurazioni necessarie per la sua esecuzione. Dopo averlo gestione delle versioni. Da Docker Hub è possibile prelevare
attivato, potrete accedere all’interfaccia Web di Jellyfin l’ultima immagine del contenitore, assicurandosi così
tramite il browser. Da qui potrete aggiungere librerie l’accesso alle sue funzionalità più recenti, alle correzioni di
multimediali e personalizzare le impostazioni del software in bug e alle patch di sicurezza.
base alle vostre preferenze. L’interfaccia Web consente di
trasmettere contenuti a vari dispositivi, tra cui smart TV,
streaming box, device mobili e browser. L’uso del container
INFORMAZIONI
offre diversi vantaggi, come l’isolamento dal sistema host JELLYFIN
sottostante, la distribuzione semplificata e la scalabilità. Web: https://hub.docker.com/r/jellyfin/jellyfin
Docker consente inoltre di eseguire Jellyfin in un ambiente Stelle su Dockerhub: Oltre 10.000

JavaScript per Cache super


app scalabili performante

ode.js è un popolare ambiente di runtime Open emcached è un sistema di memorizzazione cache


N Source progettato per eseguire codice JavaScript lato
server, consentendo agli sviluppatori di creare
M distribuito che migliora le prestazioni delle applicazioni
Web memorizzando temporaneamente i dati nella
applicazioni Web e servizi di rete scalabili ed efficienti. Le sue memoria principale. È spesso utilizzato in scenari in cui la
immagini Docker sono disponibili in diverse varianti, ognuna velocità di accesso ai dati è fondamentale, come siti ad alto
progettata per un caso d’uso specifico, e ne facilitano l’uso. traffico, applicazioni Web dinamiche e servizi di rete.

INFORMAZIONI INFORMAZIONI
NODE MEMCACHED
Web: https://hub.docker.com/_/node Web: https://hub.docker.com/_/memcached
Stelle su Dockerhub: oltre 10.000 Stelle su Dockerhub: oltre 2.000

LINUX PRO 220 45


Panoramica

Sicurezza Ottimizzare e
per gli accessi proteggere le app

uthelia è un software Open Source per raefik è un reverse proxy e load balancer per
A l’autenticazione e l’autorizzazione centralizzate,
che fornisce un’infrastruttura sicura per gestire
T applicazioni Web. Agisce come punto di ingresso per il
traffico, indirizzando le richieste ai server di backend
l’accesso agli applicativi e ai servizi. Supporta corretti in base alle regole di routing configurate. Si adatta
l’autenticazione a più fattori e l’autorizzazione basata dinamicamente all’infrastruttura e offre funzionalità avanzate
sui ruoli, offrendo un controllo granulare sull’accesso. come il bilanciamento del carico e il supporto SSL/TLS.

INFORMAZIONI INFORMAZIONI
AUTHELIA TRAEFIK
Web: https://hub.docker.com/r/authelia/authelia Web: https://hub.docker.com/_/traefik
Stelle su Dockerhub: oltre 100 Stelle su Dockerhub: oltre 3.000

Creare siti e blog


in WordPress
Un metodo più pratico per usare
il CMS più diffuso al mondo
icuramente i nostri lettori conosceranno il sistema
S di gestione dei contenuti (CMS) WordPress.
Questo strumento Open Source basato su PHP e
MySQL è ampiamente utilizzato per lo sviluppo di siti Web L’uso del contenitore Docker semplifica la distribuzione e la gestione dei siti e
e per il blogging a livello mondiale. Sfruttando il suo consente di avere più installazioni di WordPress sullo stesso host senza conflitti
container Docker è possibile configurare rapidamente un
ambiente WordPress autonomo con tutte le dipendenze e gli ambienti di sviluppo, test e produzione. Inoltre, fornisce
le configurazioni necessarie. Il contenitore include un modo efficiente per impacchettare e distribuire le
l’applicazione WordPress, il server Web (in genere Nginx o applicazioni WordPress, garantendo coerenza e
Apache) e il runtime PHP necessario. Eseguendo il riproducibilità. Sulla pagina Dockerhub di WordPress
container Docker potete accedere all’installazione di trovate dettagliate istruzioni per l’utilizzo dell’immagine e
WordPress tramite il browser e da qui è possibile istruzioni per aggiungere le librerie ed estensioni che
completare il processo di configurazione del sistema di possono esservi utili.
gestione dei contenuti, compresa l’impostazione della
connessione al database, l’impostazione di temi e plug-in INFORMAZIONI
e la personalizzazione dei contenuti e dell’aspetto del sito
Web. La containerizzazione di WordPress consente di WORDPRESS
avere più installazioni del CMS in esecuzione sullo stesso Web: https://hub.docker.com/_/wordpress
host senza rischio di conflitti, il che la renda molto utile per Stelle su Dockerhub: oltre 5.000

46 LINUX PRO 220


La forza dei container

Gestire database
relazionali
Il popolare MariaDB diventa ancora
più potente con i container
ariaDB è un sistema di gestione di database
M relazionali (RDBMS) Open Source. È un fork del
popolare database MySQL, creato nel 2009 dopo Le istruzioni per l’utilizzo di questa immagine sono così dettagliate da eccedere
l’acquisizione di quest’ultimo da parte di Oracle Corporation. lo spazio su Dockerhub e vi aiutano a gestire ogni aspetto di MariaDB
Mantiene un alto grado di compatibilità con MySQL, quindi
le applicazioni e i sistemi già sviluppati per questo database all’indirizzo https://bit.ly/3NP0Ej4. Uno dei vantaggi di
possono essere facilmente migrati a MariaDB. Quest’ultimo utilizzarlo è il poter scalare orizzontalmente il numero di istanze
introduce inoltre una serie di miglioramenti delle prestazioni di MariaDB in base alle esigenze di carico dell’applicazione.
rispetto a MySQL, inclusi ottimizzazioni del motore di È infatti possibile avviare più container MariaDB in esecuzione
archiviazione e delle query e nuove funzionalità per la gestione simultanea, distribuendo il carico di lavoro tra di essi. Ciò aiuta a
della cache e dell’indicizzazione, che ne migliorano le gestire il traffico elevato, a migliorare le prestazioni e a
prestazioni. MariaDB include anche una serie di nuove garantire l’affidabilità dell’applicazione.
funzionalità rispetto a MySQL. Può essere utilizzato su varie
piattaforme oltre a Linux e anche con cloud provider come
Amazon Web Services (AWS) e Microsoft Azure. La sua
INFORMAZIONI
community è infine molto attiva e può darvi una mano in MARIADB
svariate circostanze. Oltre che sulla sua pagina di Dockerhub, Web: https://hub.docker.com/_/mariadb
trovate istruzioni sull’utilizzo del container di MariaDB Stelle su Dockerhub: oltre 5.000

Prestazioni in Monitorare i propri


tempo reale container Docker

etdata è un software per il monitoraggio in tempo ozzle è un’applicazione per la visualizzazione dei log
N reale delle prestazioni di sistema. Raccoglie
automaticamente dati sulle risorse del computer
D dei container Docker in tempo reale in un’interfaccia
Web. Consente di monitorarli facilmente senza dover
(come CPU, memoria, disco e rete) e li presenta in modo accedere direttamente alla console o ai file di log. Supporta
chiaro con grafici e visualizzazioni interattive. Aiuta a anche la ricerca dei log e la possibilità di visualizzare insieme
identificare rapidamente i problemi e ottimizzare le risorse. quelli di più container in un’unica finestra. LXP

INFORMAZIONI INFORMAZIONI
NETDATA DOZZLE
Web: https://hub.docker.com/r/netdata/netdata Web: https://hub.docker.com/r/amir20/dozzle
Stelle su Dockerhub: oltre 400 Stelle su Dockerhub: oltre 100

LINUX PRO 220 47


SPECIALE

IN EDICOLA
DAL 2 AGOSTO

LA GUIDA ALL’IA CHE TI RIVELA UN MONDO


DI POSSIBILITÀ GRAZIE A PIÙ
DI 50 PROGETTI PENSATI PER TE
Scansiona il QR Code

Acquistala su www.sprea.it/IA
versione digitale disponibile dal 30 luglio
Tutorial
I nostri esperti offrono i loro consigli di programmazione e di amministrazione del sistema

LA GUIDA
DI RIFERIMENTO TUTORIAL
Esiste sempre qualcosa di
nuovo da imparare in campo
Elaborazione grafica dalla riga
informatico, soprattutto in un di comando
mondo dinamico come quello di Uno strumento ricco di opzioni
Linux e dell’Open Source. Ogni ci permette di applicare mille
numero di Linux Pro presenta modifiche ai nostri file grafici
una sezione dedicata a tutorial
con la velocità e la comodità
realizzati da esperti in moltissimi
settori: programmazione, del terminale pag. 50
sicurezza, amministrazione di
sistema, networking. Troverete ChatGPT nel vostro terminale
informazioni utili sia che siate Accedere alla potenza
dei veterani di Linux sia degli dell’Intelligenza Artificiale senza
utenti alle prime armi.
bisogno di dover aprire un browser
Studieremo con cura anche le
applicazioni più diffuse sia in è comodo e ci sono diversi modi
ambito lavorativo che desktop. per farlo facilmente! pag. 54
Il nostro scopo è quello di fornire
in ogni numero il giusto Classificare le immagini
mix di argomenti, ma se avete
suggerimenti su temi particolari
con l’IA
che vorreste vedere trattati, Basta una scheda da pochi euro per
scriveteci via e-mail all’indirizzo addestrare un modello in grado di
tutorial@linuxpro.it riconoscere diversi tipi frutta e verdura
dalle loro foto pag. 58
COME
RAPPRESENTIAMO Metasploitable3:
pronti all’attacco?
LE LINEE DI CODICE Incrementiamo le nostre skill da
Si presenta spesso penetration tester e scoviamo le
la necessità vulnerabilità per un futuro attacco...
di riportare le linee di codice simulato! pag. 66
di un programma.
Per favorirne la lettura
evidenzieremo le singole linee
in questo modo:
begin
mniWordWrap.Checked := not
ACCADEMIA DEL CODICE
end
Quando una riga di codice supera
Creare un gioco Trucchi per il
la lunghezza della colonna per una raccolta vostro CSS
la riporteremo su più righe
utilizzando la notazione Integrare il proprio codice Anche per chi ha
seguente: in una struttura già creata già familiarità con il
printf("Vi preghiamo di inserire non è semplice, ma è linguaggio, c’è sempre
una password."); fondamentale pag. 70 qualche chicca pag. 74

LINUX PRO 220 49


Tutorial

CLI

Elaborazione grafica
dalla riga di comando
Uno strumento ricco di opzioni ci permette di applicare mille modifiche
ai nostri file grafici con la velocità e la comodità del terminale
utti noi conosciamo una serie sterminata
T di programmi con interfaccia grafica
(GUI) per l'elaborazione di immagini che
fanno meraviglie. A volte, però, chi è abituato
a lavorare dalla riga di comando preferisce
non allontanarsi dalla sua comodità neanche
per questo tipo di operazione. Lavorare da
terminale può essere più veloce ed efficiente
rispetto all'utilizzo di strumenti grafici, poiché
non è necessario avviare un'applicazione e
navigare nell'interfaccia utente. Offre inoltre
un controllo preciso sulle operazioni di modifica,
consentendo di specificare opzioni, parametri
e sequenze di comandi per ottenere In alto la foto gerbere.jpg. In basso l'esito del comando magick
esattamente risultati desiderati e apre la porta gerbere.jpg -blur 0x2 gerbere_blur.jpg. Potete ottenere lo stesso
all'elaborazione batch di molteplici file e alla risultato usando il comando convert al posto di magick
manipolazione di immagini ad alta risoluzione
senza problemi di prestazioni. ImageMagick (vedi box Potenza dalla riga di
comando). Tra i molti strumenti che propone, c'è
La magia di ImageMagick magick che consente di convertire le immagini
Un programma molto popolare nel mondo Linux e di ridimensionarle, sfocarle, ritagliarle,
per l'elaborazione delle immagini è sfumarle, scrivervi sopra, capovolgerle, unirle,

TANTA POTENZA DAL VOSTRO TERMINALE

ImageMagick è una potente Oltre all'interfaccia a riga in script o incorporati in


suite software Open Source di comando, ImageMagick applicazioni software più
per l'editing, la offre binding per diversi ampie, garantendo
manipolazione e la linguaggi, tra cui Python, flessibilità e
conversione delle immagini. Ruby, PHP e C++, programmabilità.
Oltre a magick, fornisce consentendo agli ImageMagick è
un insieme completo di sviluppatori di incorporare ampiamente utilizzato
strumenti e librerie a riga le sue funzionalità nelle in vari settori, tra
di comando che proprie applicazioni. I suoi cui lo sviluppo Web, la
permettono di eseguire strumenti a riga di comando progettazione grafica,
un'ampia gamma di e le sue librerie possono la ricerca scientifica
operazioni sulle immagini. essere facilmente integrati e l'automazione.

50 LINUX PRO 220


ricampionarle e altro ancora. Il comando
magick è stato introdotto con la versione 7 di
ImageMagick, rilasciata il 31 marzo 2019. Prima
di questa edizione, lo strumento principale a riga
di comando per la manipolazione e la
conversione delle immagini era convert.
Quest'ultimo fa parte di ImageMagick fin dalla
sua nascita ed è ancora incluso nelle ultime
versioni del software. Può essere utilizzato per
un'ampia gamma di operazioni di manipolazione
delle immagini, ma le sue prestazioni quando si A sinistra l'immagine spring.jpg. A destra il dettaglio spring1.jpg ottenuto in un battibaleno
tratta di file di grandi dimensioni o di operazioni con il comando magick spring.jpg -crop 400x300+100+50 spring1.jpg
complesse non sono pari a quelle di magick, che
è generalmente più veloce ed efficiente. Inoltre, richiesto. Dopo l'installazione, aprite il terminale
quest'ultimo presenta alcune caratteristiche per iniziare a lavorare con le immagini. TIP
aggiuntive, come il supporto per un maggior
numero di formati di immagine e una migliore 20 comandi da ricordare Uno spazio dei
gestione dei profili di colore. Quindi, sia che Partiamo allora con una carrellata di comandi colori (o spazio
di colore o spazio
usiate ImageMagick da anni sia che lo installiate utili per iniziare a usare subito magick.
colore) è la
ora, magick è lo strumento migliore. Se però Per esempio, per convertire un'immagine
combinazione
avete una versione non recente del programma in un formato specifico basta usare di un modello di
(ancora presente in molte distribuzioni) che per magick input.jpg output.png colore e di una
qualsiasi motivo non desiderate aggiornare, che converte l'immagine input.jpg nel formato sua funzione
potete usare il comando convert al posto di PNG e la salva come output.png. Quest'ultima di mappatura.
magick per molti esempi di questo articolo. operazione sarà fatta da tutti i comandi quindi Un modello di
non la ripeteremo. Per ridimensionare un file colore, invece,
Installare il software si usa invece l'operatore -resize . Per esempio è un modello
Prima di tutto verificate se avete installato magick input.jpg -resize 800x600 output.jpg matematico
astratto che
ImageMagick nel vostro computer, per esempio ridimensiona input.jpg a una larghezza di 800
permette di
in Ubuntu potete farlo con: pixel e un'altezza di 600 pixel. Si può anche
rappresentare
dpkg -l | grep imagemagick applicare un effetto di sfocatura con -blur , i colori in forma
Se ImageMagick è installato, potete anche come per esempio in numerica,
verificarne la versione eseguendo il comando: magick input.jpg -blur 0x8 output.jpg tipicamente
convert --version che applica un effetto di sfocatura gaussiana utilizzando tre
Ricordatevi che per utilizzare magick avete con un raggio di 8 su input.jpg prima di o quattro valori
bisogno della versione 7 o successiva, altrimenti rinominarlo e salvarlo. -rotate permette o componenti
userete convert. Se ImageMagick non è di ruotare un'immagine del numero dei gradi cromatiche. I
presente nella vostra macchina, potete specificati. Il comando modelli più diffusi
sono RGB e
installarlo con il seguente comando magick input.jpg -rotate 90 output.jpg
CMYK.
sudo apt install imagemagick ruota per esempio l'immagine di 90 gradi in
e inserendo la vostra password quando senso antiorario. Con -crop si può applicare
un effetto di ritaglio specificando le dimensioni
dell'area da ritagliare e la posizione di inizio
dell'operazione. Per esempio il comando
magick input.jpg -crop 400x300+100+50 output.jpg
ritaglia un'area rettangolare di 400 x 300 pixel,
iniziando dalla posizione (100, 50)
sull'immagine. Si può anche cambiare lo spazio
dei colori con -colorspace . Per esempio
magick input.jpg -colorspace Gray output.jpg
converte l'immagine input.jpg in scala di grigi

COLORI SOTTO CONTROLLO


“Si può anche cambiare facilmente
lo spazio dei colori con l'opzione
A partire dalla foto del fiore per ottenere questo risultato basta il
-colorspace. Con -list colorspace potete
comando magick ranuncolo.jpg -fill black -pointsize 100 -annotate
+100+100 "Aggiungere scritte è facilissimo!" ranuncolo-w.jpg vedere i vari spazi disponibili”
LINUX PRO 220 51
Tutorial

prima di salvarla rinominata. Con il comando


TIP -list colorspace potete vedere i vari spazi dei
colori disponibili. -annotate seguito da una
ImageMagick
fornisce API per
posizione e dal testo desiderato permette di
diversi linguaggi, aggiungere testo a un'immagine. Per impostare la
tra cui C, C++, dimensione dei caratteri del testo in punti si usa
Python, Ruby, -pointsize mentre il colore si definisce con -fill
Perl, PHP e seguito dal nome della tinta in inglese, un colore
molti altri. Le esadecimale o una specifica numerica RGB,
API consentono RGBA, HSL, HSLA, CMYK o CMYKA (trovate una
agli sviluppatori lista dei colori e altre indicazioni su questo tema
di integrare le all'indirizzo https://bit.ly/44GM5Ue).
funzionalità di
magick input.jpg -fill white -pointsize 24 -annotate
ImageMagick
+100+100 "vostra annotazione" output.jpg
nelle proprie
applicazioni e di aggiunge, per esempio, un testo bianco con
automatizzare dimensione dei caratteri di 24 punti all'immagine
il processo di input.jpg, posizionandolo alle coordinate (100, 100)
manipolazione ossia spostato di 100 pixel verso destra e
delle immagini, altrettanti verso il basso rispetto all'angolo in alto
interagendo a sinistra dell'immagine. Sempre in tema di colore è
con le librerie di utile imparare a usare il prefisso xc: . Seguito da un
ImageMagick nel nome o da una specifica di colore, permette di
loro linguaggio
creare una tinta in modo dinamico, senza dover fare
preferito.
riferimento a un file o a un colore predefinito.
Per esempio, xc:red crea un colore rosso e
xc:#FF0000 fa la stessa operazione specificando
il codice esadecimale RGB. Si può anche usare xc:
per creare un'immagine con uno sfondo trasparente
con xc:none . Prima però dobbiamo definirne le
dimensioni con -size . Qui per esempio il comando
magick -size 800x600 xc:none output.png
Si possono cambiare luminosità e contrasto come nella seconda
crea un'immagine vuota con dimensioni 800 x immagine con -brightness e -contrast mentre per avere la terza foto
600 pixel e sfondo trasparente. Un altro comando in toni di grigio abbiamo usato -colorspace Gray
utile è -composite che consente di applicare
un effetto di fusione tra due immagini come in: creare un'anteprima (thumbnail) di un'immagine,
magick input.jpg overlay.png -composite output.jpg specificandone le dimensioni come in:
In questo esempio l'immagine overlay.png viene magick input.jpg -thumbnail 200x200 output.jpg
sovrapposta su input.jpg utilizzando la fusione alfa. Questo comando crea un'anteprima di input.jpg
Per unire più immagini in un'unica immagine con dimensioni massime di 200 x 200 pixel.
in verticale o in orizzontale potete sfruttare Si può anche lavorare su luminosità e contrasto
-append o +append . La prima unisce le immagini dell'immagine con -brightness e -contrast .
dall'alto verso il basso creando un'unica immagine Potete usare sia valori positivi per aumentarli
più lunga, mentre la seconda le affianca da sinistra sia negativi per diminuirli. Per esempio con:
a destra. Per esempio magick input.jpg -brightness-contrast -20x20 output11.jpg
magick immagine1.jpg immagine2.jpg +append output.jpg riducete di 20 la luminosità e aumentate di 20 il
unisce immagine1.jpg e immagine2.jpg contrasto con il risultato che vedete qui in alto.
orizzontalmente. Si può usare magick anche per Potete anche creare dei gradienti da usare
per esempio come sfondo. Il comando
$ magick -size 256x256 radial-gradient:pink-blue
gradiente.png
crea un'immagine con un gradiente radiale che va
dal rosa al blu nelle dimensioni specificate come
nella foto a fianco. Se volete un gradiente lineare
usate invece -linear_gradient come nell'esempio
magick -size 256x256 gradient:pink-blue lineare.png
che vedete nella foto di sinistra. Questa carrellata
di comandi offre solo un'anteprima delle numerose
possibilità offerte da ImageMagick e di come
funziona il suo utilizzo. Per proseguire nelle vostre
sperimentazioni, all'indirizzo https://bit.
Si possono creare gradienti lineari e radiali usando le opzioni radial- ly/3DhOd9w trovate un elenco commentato (in
gradient e -linear_gradient inglese) delle sue opzioni della riga di comando.

52 LINUX PRO 220


Elaborazione grafica dalla riga di comando

IMAGEMAGIK E LE GIF ANIMATE


Alcuni formati di immagini, come serie di immagini. -loop determina il numero di volte
le GIF animate, contengono più di un Per esempio con il comando che l'animazione verrà ripetuta.
fotogramma. È possibile specificare magick convert -delay 100 -loop 0 Impostare il valore su 0 significa che
a ImageMagick quali leggere frame*.png animazione.gif verrà riprodotta in loop all'infinito.
aggiungendo al nome del file si utilizza l'opzione convert di Anche alle animazioni si può
dell'immagine l'intervallo di ImageMagick per combinare una applicare una serie di opzioni. Per
fotogrammi racchiuso tra parentesi serie di immagini chiamate frame1. esempio, si può utilizzare l'opzione
quadre. Se si vuole solo il primo, png, frame2.png, ecc. in un'unica -colors per specificare il numero
per esempio, si può usare: animazione GIF chiamata di colori da utilizzare. -colors 256
magick 'images.gif[0]' image.png animazione.gif. Il flag -delay limiterà l'animazione a una tavolozza
Se ne può selezionare più di una, specifica la durata della di 256 colori. Si può anche sfruttare
mettendo l'intervallo nella parentesi visualizzazione di ciascun l'opzione -compress per specificare
quadre, come per esempio 0-3 per fotogramma in centesimi di secondo. il tipo di compressione da applicare
ottenere le prime quattro. Potete In questo esempio, viene impostato all'animazione GIF oppure -resize
anche usare il programma per creare un ritardo di 100 centesimi di per ridimensionarla a un certo
un'animazione GIF utilizzando da una secondo tra ciascun frame. Il flag numero di pixel.

Ci sono istruzioni dettagliate per tutto e, anche -draw "text 20,55 'LINUX PRO'" disegna il testo
se non sempre sembrano mirate a essere "LINUX PRO" nelle coordinate (20, 55)
facilmente fruibili da utenti di ogni livello, possono dell'immagine, sovrapponendolo al testo precedente
offrirvi molti spunti interessanti. ma leggermente spostato. Il risultato
è un'immagine PNG con il testo "LINUX PRO"
Comandi con più opzioni ed elaborazione sovrapposto a uno sfondo trasparente, con un
dei file in batch effetto di sfocatura e colori di riempimento e tratto
Come già avrete potuto intuire dai precedenti specifici. Il testo appare due volte, creando un
esempi, uno dei grandi punti di forza del effetto di ombreggiatura o rilievo. In un solo
programma è la possibilità di combinare in un comando! Un altro aspetto molto pratico di
comando una serie di opzioni per ottenere in un ImageMagick è la possibilità di lavorare velocemente
battibaleno elaborazioni molto complesse oppure in batch, cioè su gruppi di immagini. Per elaborare
risultati che richiederebbero molto tempo tutti i file di un determinato formato in una directory,
in un'applicazione con interfaccia grafica. possiamo per esempio usare un comando come:
Per esempio con magick *.jpg -resize 800x600 output_%03d.jpg
magick -size 450x100 canvas:none -font Bookman- Ridimensiona tutti i file JPG presenti nella directory
DemiItalic -pointsize 72 \ corrente a una dimensione di 800 x 600 pixel. I file
-draw "text 25,60 \'LINUX PRO\'" -channel RGBA di output verranno rinominati come output_001.jpg,
-blur 0x6 -fill darkred -stroke magenta \ output_002.jpg, ecc., con un numero a tre cifre. Si
-draw "text 20,55 \'LINUX PRO\'" lp.png possono anche elaborare tutti i file in una directory
si crea una scritta come quella riportata qui sotto. e salvarli in una diversa come per esempio in:
Qui vengono usati prima di tutto -size per magick input/*.png -resize 500x500 output/%f_resized.png
specificare le dimensioni dell'immagine e Questo comando ridimensiona tutti i file PNG nella
-canvas:none per creare un canvas trasparente directory input/ a una dimensione di 500x500
per la scritta. Si definiscono poi il carattere con pixel e li salva nella directory output/ con lo
-font e le sue dimensioni con -pointsize . -draw stesso nome di file seguito da _resized.png.
è seguito dalle coordinate (25, 60) del testo per il Naturalmente, come abbiamo già visto in
corpo della scritta. -channel RGBA specifica che precedenza, si possono anche applicare azioni
le operazioni successive devono essere applicate a un elenco specifico di file, come in
a tutti e quattro i canali (rosso, verde, blu e alfa) magick file1.jpg file2.jpg file3.jpg -rotate 90
dell'immagine. -blur 0x6 applica poi un effetto output_%02d.jpg
di sfocatura all'immagine con un raggio di 6 pixel, Questo comando ruota le immagini file1.jpg, file2.
-fill darkred imposta il colore di riempimento per jpg e file3.jpg di 90 gradi in senso orario e le salva
le operazioni successive a "darkred" (rosso scuro) come output_01.jpg, output_02.jpg, ecc., con un
e -stroke magenta imposta il colore del tratto numero a due cifre. Combinando le moltissime
per le operazioni successive su magenta. opzioni della riga di comando disponibili e
sfruttando l'elaborazione in batch, con
ImageMagick abbiamo possibilità praticamente
infinite per intervenire sulle nostre immagini
dal terminale. Provate a sperimentare! LXP

LINUX PRO 220 53


Tutorial

IA

ChatGPT nel
vostro terminale
Accedere alla potenza dell'Intelligenza Artificiale senza bisogno di dover aprire
un browser è comodo e ci sono diversi modi per farlo facilmente!
rmai molti di noi si sono abituati a usare
O ChatGPT per risolvere al volo piccoli
dubbi, a volte anche di programmazione.
Può però capitare di volerlo consultare anche
quando si lavora al terminale, senza per questo
dover aprire il browser interrompendo il flusso
di lavoro. Possiamo ottenere questo risultato
usando Python, oppure Node.js o infine uno
strumento dedicato come chatGPT-shell-cli
o ShellGPT. Con qualsiasi di queste scelte,
avremo il pieno controllo senza lasciare la
riga di comando.

Intelligenza artificiale in Python


Per la prima soluzione, iniziate aprendo il
terminale e verificando se Python 3 è installato
nel vostro sistema con: Per utilizzare ChatGPT dalla riga di comando in Python
python3 --version (e in Node.js come vedremo) vi serve la libreria openai
In caso contrario, potete installarlo utilizzando
il seguente comando: di classi per le risorse API che si inizializzano
sudo apt-get install python3 dinamicamente dalle risposte API, il che rende il
Per proseguire vi serve la libreria openai, che programma compatibile con un'ampia gamma di
fornisce l'accesso all'API OpenAI da applicazioni versioni dell'API OpenAI. Potete installarla con pip:
scritte in Python. Include un insieme predefinito pip3 install openai
Create quindi un file di testo, per esempio
chatgpt_script.py, e apritelo con un editor.
Incollate quindi al suo interno il seguente codice:
import openai
openai.api_key = 'LA_VOSTRA_CHIAVE_API'

def chat_with_gpt(prompt):
response = openai.Completion.create(
engine='text-davinci-003',
prompt=prompt,
max_tokens=100,
temperature=0.7,
n=1,
stop=None,
Per tutte le soluzioni presentate in questo articolo serve la chiave API di
OpenAI. Una volta creato l'account gratuito andate in USER, selezionate temperature=0.7,
API keys e fate click su Create new secret key top_p=1,

54 LINUX PRO 220


frequency_penalty=0,
presence_penalty=0
)

if response.choices:
return response.choices[0].text.strip()
else:
return None

while True:
user_input = input("Utente: ")
response = chat_with_gpt(user_input)
print("ChatGPT: " + response)
Ricordatevi di sostituire LA_VOSTRA_CHIAVE_
API con la vostra chiave API di OpenAI.
Per ottenerla basta registrarsi gratuitamente
sul sito di OpenAI (https://bit.ly/3XRxRxL).
Una volta creato l'account, o se lo avete già, npm init -y Se volete imparare
a sfruttare appieno
andate in USER, selezionate API keys e fate Creerete così un file package.json che terrà le potenzialità
click su Create new secret key. Salvate il file traccia delle dipendenze del vostro progetto. dell'API OpenAI,
chatgpt_script.py. Tornate al terminale ed Installate la libreria openai per JavaScript con: un'ottima palestra è
entrate nella stessa directory in cui avete npm install openai OpenAI Cookbook
salvato lo script. Per iniziare a dialogare con Create un file JavaScript, per esempio chatgpt. (https://bit.
ly/44LseU0), che
ChatGPT eseguite poi il seguente comando: js, apritelo con il vostro editor di testo preferito condivide esempi
python3 chatgpt_script.py e incollatevi il seguente codice: di codice per
Siete pronti per scrivere il vostro primo prompt const openai = require('openai'); realizzare compiti
per l'IA nel vostro terminale! comuni con essa
openai.apiKey = 'INSERIRE_LA_VOSTRA_API_KEY';
La procedura per Node.js
Si può anche interagire con ChatGPT attraverso async function chatWithGPT(prompt) {
Node.js. Prima di tutto, come per Python, const response = await openai.Completion.create({
assicuratevi di averlo installato sul sistema. engine: 'text-davinci-003',
Potete farlo aprendo il terminale ed eseguendo prompt: prompt,
il seguente comando: maxTokens: 100,
node --version temperature: 0.7,
Se Node.js non è presente, potete installarlo n: 1,
seguendo le istruzioni ufficiali su https://nodejs. stop: null,
org. Create quindi una nuova cartella per il vostro topP: 1,
progetto e posizionatevi al suo interno con il frequencyPenalty: 0,
terminale. Inizializzate un nuovo progetto con: presencePenalty: 0

SE OPEN AI API DICE CHE NON AVETE PIÙ CREDITI


Durante alcuni dei nostri test con spenderete nulla ora). Rigenerate
chatGPT-shell-cli è successo che la chiave API e inseritela dal
ChatGPT non rispondesse ai nostri terminale con il seguente comando:
prompt mostrando il seguente export OPENAI_KEY=la_vostra_chiave
messaggio d'errore: In base a quando e come vi siete
Your request to Open AI API failed: registrati potreste avere dei crediti
invalid_request_error gratuiti su OpenAI. In ogni caso
Billing hard limit has been reached è facile tenere sotto controllo
Per risolvere il problema basta le proprie spese. Nel pannello
cambiare le impostazioni del proprio Organization che vedete nella Soft limit mettete per quale spesa
account OpenAI. Andate all'indirizzo schermata qui a sinistra fate click volete essere avvisati, per esempio
https://bit.ly/3pOo2UL, loggatevi su Usage limits. Nella casella Hard un dollaro. Fate click su Save.
nel vostro account e fate click su limit mettete il massimo che In questo modo, quando e se
Setup paid account. Inserite i dati autorizzate il programma ad raggiungete questa soglia di
della vostra carta di credito e addebitarvi ogni mese, per utilizzo ogni mese, vi viene inviata
completate la registrazione (non esempio 10 dollari, e nella casella subito un'email di notifica.

LINUX PRO 220 55


Tutorial

});
});

const response = await chatWithGPT(user_input);


console.log('ChatGPT: ' + response);
}
}

runChat().catch(console.error);
Ricordatevi di sostituire INSERIRE_LA_
VOSTRA_API_KEY con la vostra chiave API
di OpenAI che potete ottenere come descritto
nel paragrafo dedicato a Python. Salvate il file
chatgpt.js e aprite il terminale nella stessa
cartella. Avviate il dialogo con ChatGPT con:
node chatgpt.js

Potete trovare ulteriori dettagli sulla versione JavaScript dell'API Usare chatGPT-shell-cli
OpenAI su https://bit.ly/44xAPtK e la relativa documentazione Questa soluzione Open Source (https://bit.
TIP all'indirizzo https://bit.ly/3K0nEco ly/3K0zVOa) offre un semplice e leggero script
L'API di ChatGPT di shell che vi consente di utilizzare ChatGPT e
è un'interfaccia }); DALL-E dal terminale senza installare Python o
fornita da OpenAI Node.js. Utilizza il modello ufficiale gpt-3.5-turbo
che consente if (response.choices && response.choices.length > 0) { con l'endpoint dell'API OpenAI /chat/completions .
agli sviluppatori return response.choices[0].text.trim(); Permette anche di utilizzare il più recente modello
di interagire
} else { gpt-4, se si ha l'accesso. Lo script supporta l'uso
con il modello
return null; di tutti gli altri modelli OpenAI con l'endpoint
di ChatGPT
utilizzando } completions e l'endpoint images/generations
richieste } per la generazione di immagini. Se utilizzate
POST HTTP ArchLinux, potete installare il pacchetto AUR con:
a un endpoint. async function runChat() { paru -S chatgpt-shell-cli
Usandola si può const readline = require('readline'); Altrimenti potete utilizzare il comando:
inviare testo di const rl = readline.createInterface({ curl -sS https://raw.githubusercontent.com/0xacx/
input al modello input: process.stdin, chatGPT-shell-cli/main/install.sh | sudo -E bash
di ChatGPT output: process.stdout Dovete fornire quindi la vostra chiave API di
e ricevere le
}); OpenAI, scaricata come spiegato nella sezione
risposte generate
su Python di questo articolo, quando vi viene
dal modello.
while (true) { richiesto. Se la richiesta non avviene, come è
const user_input = await new Promise((resolve) => { capitato a noi in Fedora, potete usare il comando
rl.question('User: ', (input) => { export OPENAI_KEY=VOSTRA_CHIAVE_API
resolve(input); per inserirla. Sulla pagina GitHub del progetto

Un esempio del dialogo con ChatGPT usando chatGPT-shell-cli. Come al solito, potete dare i vostri prompt anche in italiano, ricevendo
le risposte nella nostra lingua, anche se i dati di addestramento in inglese sono più estesi

56 LINUX PRO 220


ChatGPT nel vostro terminale

ci sono anche le istruzioni per l'installazione


manuale. Con chatGPT-shell-cli installato,
tutto quello che dovete fare per interagire con
ChatGPT dalla riga di comando come fareste
normalmente dal browser è usare il comando
chatgpt . Come al solito, potete dare i vostri
prompt anche in italiano, anche se i dati di
addestramento in inglese sono più estesi.
È anche possibile visualizzare la cronologia
delle chat digitando history e ottenere un elenco
dei modelli disponibili in OpenAI API, scrivendo
models . Un'opzione molto interessante di questo
programma è che vi permette di utilizzare
facilmente ChatGPT per generare comandi
che potete eseguire sul vostro sistema Linux.
Lo script vi fornisce la soluzione e vi chiede
sempre se volete eseguire il comando. Se uno
di essi modifica il filesystem o scarica file Se avete anche un Mac e usate iTerm, potete persino vedere l'immagine direttamente
esterni, mostra un avviso prima dell'esecuzione. nel terminale: speriamo sia presto possibile farlo anche in Linux!

Giochi di ruolo e immagini consente, dalla stessa sessione del terminale


Uno dei modi più pratici per dare un contesto che usiamo per ChatGPT, di accedere anche al TIP
a ChatGPT, in modo da ottenere risposte più programma di generazione di immagini di OpenAI
Un endpoint è un
mirate, è assegnare al modello un ruolo preciso. DALL-E e farci creare quello che vogliamo dalla
URL specifico
Per esempio, possiamo usare un prompt come: riga di comando. Per generare immagini, avviate che rappresenta
“Sei un esperto di marketing sui social media un prompt con image come in: una funzionalità
a livello internazionale. Dammi dei consigli per image: un bel gatto calico o un servizio
promuovere sui social media il mio nuovo blog Vi verrà fornito il link con cui aprire l'immagine disponibile
di programmazione”. Questo approccio da gioco in un browser. Se avete anche un computer attraverso
di ruolo può anche essere divertente, dato con macOS e usate iTerm, potete persino l'API. Quando
che possiamo persino dirgli di impersonare visualizzare l'immagine direttamente nel un'applicazione
un personaggio famoso, per esempio facendoci terminale: speriamo sia presto possibile farlo client desidera
dare degli spunti per un racconto da Stephen anche in Linux! utilizzare una
determinata
King. Anche questo aspetto di ChatGPT è
funzionalità
facilmente accessibile da chatGPT-shell-cli ShellGPT per programmare meglio dell'API, invia una
usando un prompt iniziale. Quest'ultimo Un altro progetto interessante per utilizzare richiesta HTTP
va inviato a ogni richiesta insieme a quello ChatGPT dal terminale è ShellGPT (https:// all'endpoint
che volete chiedere, in modo che il modello github.com/TheR1D/shell_gpt). Si presenta corrispondente,
OpenAI "rimanga nel personaggio". come uno strumento di produttività alimentato specificando
Per impostare un prompt iniziale personalizzato dai modelli GPT di OpenAI ed è specificamente il metodo di
per la chat, utilizzate -i o --init-prompt prima mirato agli sviluppatori. Il suo obiettivo è quello richiesta (come
di esso, come per esempio in: di farvi sfruttare le capacità dell'Intelligenza GET, POST, PUT
chatgpt -i "Sei Stephen King. Rispondimi facendo Artificiale per generare comandi di shell, o DELETE) e,
se necessario, i
riferimento ai tuoi romanzi e racconti" snippet di codice, commenti e documentazione
dati aggiuntivi
Si può anche impostare un prompt iniziale da un e anche come parziale sostituto delle ricerche nel corpo della
file con --init-prompt-from-file , per esempio con: su Google. ShellGPT è multipiattaforma richiesta.
chatgpt --init-prompt-from-file mioprompt.txt e supporta tutti i principali sistemi operativi,
La vera chicca di chatGPT-shell-cli è però che ci compresi Linux, macOS e Windows con tutte le
principali shell, come PowerShell, CMD, Bash,
Zsh, Fish e molte altre. Tra i suoi parametri ha,
per esempio, --shell per trovare ed eseguire
facilmente i comandi di shell, mentre si può
eseguire direttamente il comando ricevuto
usando il parametro --execute (o -se ). ShellGPT
è anche consapevole del sistema operativo e di
$SHELL che state utilizzando e fornirà comandi
di shell mirati. Per esempio, se gli chiedete di
aggiornare il vostro sistema, vi restituirà un
comando basato sul vostro OS. Uno strumento
mirato ma potente a cui vale sicuramente la
ShellGPT è pensato per gli sviluppatori e mira a farvi sfruttare l'IA per generare pena di dare un'occhiata, soprattutto se lavorate
comandi di shell, snippet di codice, commenti e documentazione con il codice. LXP

LINUX PRO 220 57


Tutorial

EDGE AI
Crediti: MJRoBot (Marcelo Rovai)
mjrobot.org

Classificare le
immagini con l’IA
Basta una scheda da pochi euro per addestrare un modello
in grado di riconoscere diversi tipi di frutta e verdura dalle loro foto
iamo sempre più testimoni di una La scheda XIAO ESP32S3 Sense
COSA SERVE
XIAO
S vera e propria rivoluzione basata
sull’Intelligenza Artificiale e l’Edge
Seeed Studio ha lanciato una scheda
di sviluppo economica, la XIAO ESP32S3 Sense
ESP32S3 AI (vedi box Efficienza e velocità con l’Edge (https://bit.ly/3rsMPOw), che integra un
Sense di AI) ha un potenziale di impatto molto elevato. sensore per videocamera, un microfono digitale
Seeed Studio Tra le tecnologie emergenti che sfrutta, un posto di e uno slot per schede SD. Combinando
Arduino IDE rilievo va all’Edge Computer Vision. È l’applicazione la potenza di calcolo del machine learning
Edge Impulse di tecniche e algoritmi di computer vision all’edge e la capacità di fotografare, questa scheda
Studio computing, un modello di elaborazione distribuita di sviluppo è un ottimo strumento per iniziare
Codice: che porta il calcolo e il trattamento dei dati più con il TinyML ossia l’esecuzione di modelli
https://bit. vicino alla fonte, riducendo la latenza e l’utilizzo della di apprendimento automatico su dispositivi
ly/3JXnFy6 larghezza di banda. Sfrutta in questo modo edge con risorse computazionali limitate.
dispositivi come telecamere, sensori o server edge Questa scheda dal costo di circa 14 € offre una
per l’analisi di immagini e video in tempo reale o serie di interessanti caratteristiche:
quasi. Quando si parla di Machine Learning (ML) - Potente scheda MCU: integra il processore
applicato alla visione, d’altro canto, la prima cosa Xtensa ESP32S3 a 32 bit, dual-core, con
che viene in mente è la classificazione delle frequenza di funzionamento fino a 240 MHz,
immagini, una sorta di equivalente di un programma dotato di porte di sviluppo multiple, con
“Ciao mondo!” nell’apprendimento automatico. In supporto per Arduino e MicroPython;
questo progetto vedremo come classificare le - Funzionalità avanzate: sensore videocamera
immagini con codice sviluppato con Arduino IDE ed OV2640 staccabile con risoluzione 1600*1200,
Edge Impulse Studio con una scheda accessibile e compatibile con l’OV5640, che integra un
adatta all’edge computing. microfono digitale aggiuntivo;
- Gestione elaborata dei consumi:
la capacità di gestione della carica della batteria
al litio offre quattro modelli di assorbimento
PULSANTE RESET PULSANTE AVVIO
energetico, che consentono la modalità
di sospensione profonda con un consumo
di energia fino a un minimo di 14μ.A;
- Molta memoria: dispone di 8 MB di PSRAM
LED CARICA LED UTENTE
e 8 MB di FLASH e supporta uno slot per schede
SD per una memoria FAT esterna da 32 GB;
- Ottime funzioni di comunicazione: supporta
Wi-Fi 2,4 GHz e BLE e ha un raggio di oltre 100
m quando è collegata all’antenna U.FL;
- Design compatto: 21 x 17,5 mm, adatto
CONNETTORE ANTENNA CONNETTORE B2B
a progetti con ingombro limitato, come
WI-FI/BLUETOOTH (SOLO PER SENSE) i dispositivi indossabili.
Nella prossima pagina è riportata nel dettaglio
La XIAO ESP32S3 Sense permette di collegare un’antenna la disposizione dei pin della scheda. Per
per Wi-Fi e Bluetooth e offre il supporto per schede SD maggiori dettagli, consultate la pagina https://

58 LINUX PRO 220


bit.ly/3JYffpQ. Per installare la scheda in
Arduino IDE, all’interno dell’ambiente di
sviluppo integrato, andate in File > Preferences
e inserite l’URL https://raw.githubusercontent.
com/espressif/arduino-esp32/gh-pages/
package_esp32_dev_index.json nel campo
Additional Boards Manager URLs. Quindi aprite
Board Manager. Andate su Tools > Board >
Boards Manager... e digitate esp32. Selezionate
e installate il pacchetto più aggiornato. In Tools,
scegliete la scheda (XIAO ESP32S3) e, ultimo
ma non meno importante, selezionate la porta
a cui è collegato l’ESP32S3. Ecco fatto!
Il dispositivo dovrebbe essere pronto.
Eseguiamo quindi qualche test.

Testare la scheda con lo sketch Blink


La XIAO ESP32S3 Sense ha un LED integrato che
è collegato al pin GPIO21. Si può quindi eseguire lo
sketch Blink (vedi Tip a pag. 59) così com’è
(utilizzando la costante LED_BUILTIN di Arduino) o
modificandolo come segue: Qui trovate nel dettaglio la disposizione dei pin della scheda XIAO ESP32S3 Sense utilizzata
#define LED_BUILT IN 21 nell’ambito di questo progetto

void setup() { delay(1000); //Attendere 1 secondo


pinMode(LED_BUILT IN, OUTPUT); // Impostare il }
pin come output Si noti che i pin funzionano con logica invertita:
} LOW per accendere e HIGH per spegnere.

// Ricordate che i pin funzionano con logica invertita Connettere il modulo Sense e testare
// LOW per accendere e HIGH per spegnere il microfono
Al momento dell’acquisto, la scheda di
void loop() { espansione è separata da quella principale,
digitalWrite(LED_BUILT IN, LOW); //Accendere ma la sua installazione è molto semplice. Dovete
delay(1000); //Attendere 1 secondo allineare il connettore della scheda di
digitalWrite(LED_BUILT IN, HIGH); //Spegnere espansione con quello B2B della XIAO

EFFICIENZA E VELOCITÀ CON L’EDGE AI


Con il termine Edge AI, o Edge costante trasmissione di dati ai l’automazione industriale
Artificial Intelligence, si intende server cloud, con conseguenti o i sistemi di monitoraggio
l’implementazione di algoritmi tempi di risposta più rapidi e sanitario. L’Edge AI offre anche dei
e modelli di Intelligenza Artificiale requisiti di larghezza di banda vantaggi dal punto di vista di
direttamente sui dispositivi edge, ridotti. L’Edge AI sfrutta inoltre privacy e sicurezza. Consentendo
come smartphone, device IoT tecniche di apprendimento l’elaborazione e l’analisi dei dati a
(Internet of Things o Internet delle automatico, come l’apprendimento livello locale, come abbiamo visto
cose), sensori o server edge. profondo e le reti neurali, per prima, riduce infatti la necessità di
Invece di affidarsi all’elaborazione consentire un processo decisionale trasmettere dati sensibili o privati a
basata sul cloud, l’Edge AI porta il e di inferenza intelligente server esterni. È anche conveniente
trattamento e l’analisi dei dati più direttamente sui dispositivi edge. sotto il profilo dei costi perché
vicino alla fonte o al “bordo” del Ciò permette di ottenere analisi e richiede meno larghezza di banda
sistema, dove i dati vengono azioni immediate sulla base dei dati e quindi meno costi di rete. La sua
generati. Il concetto di lavorare in generati dai dispositivi, senza dover continua crescita è stimolata anche
questo modo nasce dall’esigenza di ricorrere a un’infrastruttura cloud dalla sempre maggior potenza dei
un’analisi in tempo reale o quasi, di centralizzata, il che offre vantaggi dispositivi edge. Naturalmente non
una latenza ridotta, di una maggiore sostanziali. La possibilità di tutto può essere demandato a
privacy e di una miglior efficienza elaborare i dati e prendere decisioni dispositivi decentralizzati, però i
nell’elaborazione dei dati. in tempo reale o quasi è tempi di crescita della tecnologia
Eseguendo le attività di IA fondamentale, per esempio, per le suggeriscono che si tratta di un
localmente sui dispositivi edge, applicazioni che richiedono risposte fenomeno decisamente duraturo
infatti, si riduce la necessità di una immediate, come i veicoli autonomi, e molto pratico per i coder.

LINUX PRO 220 59


Tutorial

Testare la videocamera e il Wi-Fi


Per testare la videocamera, è necessario
scaricare la cartella take_photos_command
da GitHub (https://bit.ly/3rsmLmC). Contiene
uno sketch (.ino) e due file .h con i dettagli della
videocamera. Eseguite il codice take_photos_
command.ino. Aprite il Serial Monitor e inviate
il comando capture per catturare e salvare
l’immagine sulla scheda SD. Verificate che sul
monitor seriale sia selezionata l’opzione [Both
NL & CR]. A pagina 60 è possibile vedere
un esempio di foto scattata con la scheda.
Uno dei punti di forza della XIAO ESP32S3
è la sua capacità di connessione Wi-Fi. Proviamo
quindi a testarla effettuando una scansione
delle reti Wi-Fi intorno a essa. È possibile farlo
Per il montaggio del modulo Sense dovete allineare il connettore della
eseguendo uno degli esempi di codice sulla
scheda di espansione con quello B2B della XIAO ESP32S3 scheda. Andate agli esempi di Arduino IDE e
e premere con forza fino a sentire un “clic” cercate WiFI ==> WiFIScan. Sul monitor seriale
si dovrebbero vedere le reti Wi-Fi (SSID e RSSI)
ESP32S3, premere con forza e quando sentite nel raggio d’azione del dispositivo. Verifichiamo
un “clic”, l’installazione è completa. Come ora la capacità della scheda di comportarsi
anticipato nell’apertura dell’articolo, la scheda di come un server Wi-Fi. Ospiteremo sul
espansione, ovvero la parte “sense” del dispositivo una semplice pagina che invia
dispositivo, è dotata di una videocamera comandi per accendere e spegnere il LED
OV2640 da 1600x1200, di uno slot per schede integrato della XIAO. Come in precedenza,
SD e di un microfono digitale. Per testare andate su GitHub per scaricare la cartella con lo
quest’ultimo iniziamo con il rilevamento dei sketch SimpleWiFiServer (https://bit.
suoni. Andate al progetto GitHub (https://bit. ly/3Oo6MPL). Prima di eseguirlo, è necessario
ly/3PUzrwG) e scaricate lo sketch inserire le proprie credenziali di rete:
XIAOEsp2s3_Mic_Test. Eseguite il codice con const char* ssid = "Le vostre credenziali";
Arduino IDE. Quando produce un suono, potete const char* password = "Le vostre credenziali";
verificarlo sul plotter seriale. Salvate i suoni Potete monitorare il funzionamento del vostro
registrati (file audio in formato .wav) su una server con il Serial Monitor. Copiate l’indirizzo
scheda microSD. Utilizzate poi il lettore di IP e inseritelo nel browser. Verrà visualizzata
schede SD integrato per salvare i file audio .wav. una pagina con collegamenti che consentono di
A tal fine, è necessario abilitare la PSRAM del accendere e spegnere il LED integrato della XIAO.
TIP dispositivo XIAO. Per iniziare, inserite la scheda
L’ESP32-S3 SD nella XIAO come mostrato nella foto in basso Fare streaming video su Web
ha solo poche in questa pagina (la scheda SD deve essere Ora che sapete che potete inviare comandi dalla
centinaia di formattata in FAT32). Scaricate lo sketch Wav_ pagina Web al vostro dispositivo, facciamo
kilobyte di RAM Record, che potete trovare su GitHub (https:// l’operazione inversa. Prendiamo l’immagine
interna sul chip bit.ly/3K1Xq9x). Per eseguire questo codice
MCU. Per alcuni è necessario utilizzare la funzione PSRAM
scopi può essere del chip ESP-32, quindi attivatela prima di
insufficiente, per caricarlo andando in Tools>PSRAM: “OPI
cui l’ESP32-S3
PSRAM”>OPI PSRAM. Eseguite il codice
può utilizzare
fino a 16 MB
Wav_Record.ino. Questo programma viene
di PSRAM lanciato solamente una volta dopo che l’utente
(Psuedostatic ha acceso il monitor seriale, registrando per
RAM) esterna 20 secondi e salvando il file così generato sulla
collegata in scheda SD come arduino_rec.wav. Quando
parallelo al chip il simbolo “.” viene riprodotto ripetutamente
flash SPI. La a intervalli di un secondo nel monitor seriale,
memoria esterna l’esecuzione del programma è terminata
è incorporata ed è possibile riprodurre il file audio registrato
nella mappa
con l’aiuto di un lettore di schede. La qualità
di memoria
e, con alcune
del suono è eccellente. La spiegazione del
limitazioni, è funzionamento del codice va oltre lo scopo
utilizzabile come di questo tutorial, ma è possibile trovarne
la RAM interna. descrizione (in inglese) nella pagina wiki Inserite la scheda SD formattata in FAT32 nella XIAO come mostrato
della scheda (https://bit.ly/3OeCejh). in questa immagine

60 LINUX PRO 220


Classificare le immagini con l’IA

LAVORARE CON I DATI SU KAGGLE


Kaggle è una piattaforma online educativi, per fare pratica nello data science, apprendimento
dedicata alla data science e sviluppo di modelli o come base per automatico e discipline correlate.
all’apprendimento automatico. esplorare nuovi approcci analitici,
Fondata nel 2010, si è affermata come viene fatto in questo articolo
come un’importante comunità in cui con il dataset relativo a frutta e
ricercatori e appassionati si verdura. Un’altra caratteristica chiave
riuniscono per collaborare, competere di Kaggle è che offre la possibilità di
e condividere conoscenze al fine di creare e condividere notebook
risolvere problemi complessi nel interattivi, chiamati kernel, che
campo dell’analisi dei dati. Su Kaggle, consentono agli utenti di scrivere e
gli utenti possono partecipare a condividere codice, eseguire analisi
competizioni di data science, che dei dati e sviluppare modelli. Sono
mettono alla prova le loro abilità nel basati sulla tecnologia Jupyter
risolvere specifici problemi utilizzando Notebook, che combina testo, codice Inoltre, la piattaforma ospita una
tecniche avanzate di analisi dei dati eseguibile e output in un’unica comunità attiva di oltre 14 milioni di
e apprendimento automatico. Sono visualizzazione. Ciò promuove la data scientist, che partecipa a
spesso sponsorizzate da aziende o collaborazione, l’apprendimento e la discussioni nei forum, collabora su
organizzazioni che offrono premi in condivisione di approcci efficaci tra i progetti e fornisce supporto
denaro o opportunità di lavoro per le membri della comunità. Kaggle offre reciproco. La piattaforma risulta
soluzioni migliori. La piattaforma offre anche risorse educative, tra cui quindi uno strumento molto utile per
anche un vasto catalogo di dataset tutorial, corsi e materiale didattico (in chi vuole avvicinarsi
pubblici provenienti da diverse fonti e inglese) per aiutare gli utenti a all’apprendimento automatico o
ambiti, che potete utilizzare per scopi migliorare le proprie competenze in approfondire le proprie conoscenze.

catturata dalla videocamera e trasmettiamola Ecco fatto! Gestire ciò che viene “visto” dalla
a una pagina Web. Scaricate da GitHub la videocamera può essere importante quando TIP
cartella che contiene il codice: XIAO-ESP32S3- la si posiziona per acquisire un set di dati per
Lo sketch Blink
Streeming_Video.ino (https://bit.ly/3Qef8L9). un progetto di machine learning (per esempio,
è un semplice
Ricordate che, come prima, la cartella non utilizzando il codice take_phots_commands. programma
contiene solo il file .ino, ma anche un paio di file ino). Naturalmente si possono fare entrambe comunemente
.h, necessari per gestire la videocamera. Inserite le cose contemporaneamente: mostrare ciò utilizzato come
le vostre credenziali ed eseguite lo sketch. che la videocamera vede sulla pagina e inviare punto di partenza
Sul monitor seriale potrete trovare l’indirizzo un comando per catturare e salvare l’immagine per testare
della pagina da inserire nel vostro browser, sulla scheda SD. A tale scopo, è possibile schede Arduino
che visualizzerà qualcosa di simile a: utilizzare il codice Camera_HTTP_Server_STA, o altri micro
... scaricabile da GitHub (https://bit.ly/3NQOTrc). controllori.
Li istruisce
WiFi connected Il programma eseguirà le seguenti operazioni:
ad accendere e
Camera Stream Ready! Go to: http://192.168.4.119 - Imposta la videocamera sulla modalità
spegnere un LED
Aprite la pagina sul vostro browser e aspettate di output in JPEG; (diodo emettitore
qualche secondo per avviare lo streaming. - Crea una pagina Web. L’indirizzo corretto verrà di luce) a intervalli
visualizzato sul Serial Monitor; specifici.
- Se la condizione è server.on ( "/capture" , Di solito, il LED
HTTP_GET , serverCapture ), il programma è collegato a
scatta una foto e la invia al Web; un pin specifico
- Potete ruotare l’immagine sulla pagina del micro
Web utilizzando il pulsante ROTATE; controllore.
- Il comando capture visualizza solo l’anteprima
dell’immagine sulla pagina Web, mostrandone
le dimensioni su Serial Monitor;
- Il comando save salva un’immagine sulla
scheda SD, mostrandola anche sul Web;
- Le immagini salvate seguiranno una
denominazione sequenziale (image1.jpg,
image2.jpg, ecc.).
Questo programma si può utilizzare per
Il comando save salverà un’immagine sulla scheda SD, mostrandola
l’acquisizione di un dataset di foto per un
anche sul Web. Le immagini salvate seguiranno una denominazione progetto di classificazione delle immagini.
sequenziale (image1.jpg, image2.jpg, ecc.) Esaminate il codice: sarà più facile capire come

LINUX PRO 220 61


Tutorial

Un esempio di foto scattata con la scheda. Possiamo programmarla con il codice presentato nel corpo dell’articolo per acquisire un dataset fotografico
da utilizzare per un progetto di classificazione delle immagini

funziona la videocamera. Questo codice è stato Sense. Per l’addestramento, dobbiamo trovare
sviluppato dall’autore dell’articolo sulla base dei dati (in realtà, moltissimi dati!). Prima
dell’ottimo tutorial di Rui Santos ESP32-CAM di tutto, però, abbiamo bisogno di un obiettivo,
Take Photo and Display in Web Server, che ossia di decidere cosa vogliamo classificare.
può essere un’interessante lettura integrativa Utilizzando il TinyML ci focalizzeremo sulla
(https://bit.ly/3JXM4U3). classificazione a tre categorie, a causa delle
limitazioni legate alla memoria di questa
Frutta contro verdura: un progetto situazione. Qui distingueremo le mele dalle
di classificazione di immagini TinyML banane e dalle patate, ma potete provare altre
Ora che abbiamo una videocamera incorporata categorie. Occorre quindi trovare un set di dati
in funzione, è il momento di provare la specifico che includa immagini di queste
classificazione delle immagini. A scopo categorie. Su Kaggle è disponibile un dataset
comparativo, replicheremo lo stesso progetto per il riconoscimento di immagini di frutta e
di classificazione delle immagini sviluppato per verdura (https://bit.ly/3NQvRkH). Contiene
essere utilizzato con una vecchia ESP2-CAM immagini dei seguenti alimenti:
(https://bit.ly/3O9XqXv). Lo scopo di quello Frutti: banana, mela, pera, uva, arancia, kiwi,
nuovo consiste nell’addestrare un modello e anguria, melograno, ananas, mango.
procedere con l’inferenza sulla XIAO ESP32S3 Verdure: cetriolo, carota, peperoncino, cipolla,
patata, limone, pomodoro, ravanello,
barbabietola, cavolo, lattuga, spinaci, soia,
COS’È IL TRANSFER LEARNING cavolfiore, peperone, rapa, mais, mais dolce,
patata dolce, paprika, jalepeño, zenzero, aglio,
Il Transfer Learning (apprendimento per trasferimento) piselli, melanzana. Ogni categoria è suddivisa in
è una tecnica di apprendimento automatico che prevede lo addestramento (100 immagini), test (10
sfruttamento delle conoscenze acquisite dall’addestramento immagini) e validazione (10 immagini). Scaricate
di un modello su un compito e la sua applicazione a un incarico il set di dati dal sito di Kaggle sul vostro
diverso ma correlato. Invece di addestrare un modello da zero computer. Opzionalmente, potete aggiungere
per un nuovo task, l’apprendimento per trasferimento ci permette alcune foto nuove di banane, mele e patate dalla
di partire da un modello pre-addestrato che ha appreso le vostra cucina di casa, utilizzando, per esempio,
rappresentazioni delle caratteristiche da un dataset molto ampio. lo sketch discusso nella precedente sezione di
Si tratta infatti di caratteristiche generali che sono utili per più questo articolo.
compiti e catturano pattern, texture, forme o concetti comuni
che possono essere applicati in vari domini. Le loro Addestrare il modello con Edge Impulse
rappresentazioni sono usate come punto di partenza per il nuovo Per l’addestramento del nostro modello
compito, mentre gli strati finali del modello pre-addestrato utilizzeremo Edge Impulse, una piattaforma
vengono in genere sostituiti o messi a punto per adattarsi al task di sviluppo all’avanguardia per l’apprendimento
specifico. In questo modo l’apprendimento per trasferimento automatico sui dispositivi edge. Create un
riduce le risorse computazionali e il tempo necessario per account gratuito se non ne avete già uno e poi
l’addestramento e può migliorare le prestazioni dei modelli in aprite un nuovo progetto. Quindi, nella sezione
scenari in cui i dati etichettati per il compito target sono limitati. Upload data, caricate dal vostro computer i file
delle categorie scelte. A questo punto dovreste

62 LINUX PRO 220


Classificare le immagini con l’IA

avere il vostro set di dati di addestramento,


suddiviso in tre classi come nell’immagine
in questa pagina. È possibile caricare altri dati
per ulteriori test del modello o dividere i dati
di training. Un Impulse prende i dati grezzi
(in questo caso, le immagini), estrae le
caratteristiche (ridimensiona le immagini)
e poi utilizza un blocco di apprendimento per
classificare i nuovi dati. Come abbiamo già
accennato, la classificazione delle immagini
è l’uso più comune del Deep Learning, ma per
svolgere questo compito è necessario utilizzare
molti dati. Abbiamo circa 90 foto per ogni
categoria e non sono sufficienti. Avremo Caricate dal vostro computer i file delle categorie scelte per avere in
bisogno di migliaia di immagini per insegnare al Edge Impulse i dati per estrarne le caratteristiche e poi utilizzare un
modello a distinguere una mela da una banana, blocco di apprendimento per classificare quelli nuovi
ma possiamo risolvere questo problema
riallenando un modello precedentemente sarebbero tre volte più grandi. Lavorare con
addestrato con moltissimi dati. Questa tecnica la scala di grigi aiuta a ridurre la quantità
si chiama Transfer Learning (o TL, vedi box di memoria finale necessaria per l’inferenza.
Cos’è il Transfer Learning). Utilizzandola, Non dimenticate di salvare i parametri. In questo
possiamo perfezionare un modello di modo si generano le caratteristiche da utilizzare
classificazione delle immagini pre-addestrato in per l’addestramento. Nel 2007, Google
base ai nostri dati, ottenendo buoni risultati ha introdotto MobileNetV1 (https://bit.
anche con insiemi di immagini relativamente ly/43qNkWv), una famiglia di reti neurali
piccoli come nel nostro caso. Quindi, partendo per la visione computerizzata di uso generale,
dalle immagini grezze, le ridimensioneremo (96 progettata per i dispositivi mobili e in grado di
x 96 pixel) e le passeremo al nostro blocco di supportare la classificazione, il rilevamento e
apprendimento per trasferimento. altro ancora. Le MobileNet sono modelli piccoli,
a bassa latenza e a basso consumo,
Pre-elaborazione e training parametrizzati per soddisfare i vincoli di risorse
Oltre a ridimensionare le immagini, dovremmo dei vari casi d’uso. Sebbene l’architettura
convertirle in scala di grigi per mantenere MobileNet di base sia già di dimensioni ridotte e
l’effettiva profondità di colore RGB. In questo abbia una bassa latenza, spesso un caso d’uso o
modo, ognuno dei nostri campioni di dati avrà un’applicazione specifica può richiedere che il
una dimensione di 9,216 caratteristiche (96 x modello sia più piccolo e più veloce. MobileNet
96 x 1). Mantenendo l’RGB, queste dimensioni introduce un semplice parametro alfa, chiamato

SVILUPPO PER I DISPOSITIVI EDGE CON EDGE IMPULSE


Edge Impulse è una piattaforma del rumore. La piattaforma offre un prestazioni dei modelli implementati
all’avanguardia che facilita lo ambiente di addestramento intuitivo sui dispositivi edge e di raccogliere
sviluppo e l’implementazione di in cui si possono creare e addestrare dati per ulteriori miglioramenti
modelli di Intelligenza Artificiale su modelli di machine learning
dispositivi edge. La piattaforma è utilizzando diversi algoritmi, come
stata progettata per aiutare gli reti neurali e alberi decisionali. Una
sviluppatori a sfruttare al massimo il volta addestrato, il modello può
potenziale dell’apprendimento essere ottimizzato e valutato
automatico di questi device, attraverso gli strumenti integrati
consentendo loro di eseguire e successivamente può essere
l’elaborazione dei dati e le inferenze implementato direttamente sui
in tempo reale o quasi. Il punto di dispositivi edge supportati. Edge
forza di Edge Impulse è la sua Impulse offre supporto per una vasta
gamma completa di funzionalità che gamma di strumenti, con istruzioni
copre l’intero ciclo di sviluppo e librerie pronte all’uso per diversi e iterazioni future. Il progetto non
dei modelli di IA. Vi potete facilmente microcontrollori e soluzioni IoT è Open Source, ma è gratuito per
raccogliere e preparare i dati di input popolari. Inoltre, la piattaforma i singoli sviluppatori che vogliono
necessari per l’addestramento del fornisce funzionalità avanzate di sperimentare con i dispositivi edge.
modello, utilizzando strumenti per monitoraggio e analisi in tempo Offre loro le proprie funzioni di base
l’etichettatura dei dati e l’eliminazione reale, che permettono di valutare le e l’accesso alla community.

LINUX PRO 220 63


Tutorial

implementa una politica di data augmentation


sui vostri dati:
# Implementa la policy di data augmentation

def augment_image(image, label):


# Ruota l'immagine in modo casuale
image = tf.image.random_flip_left_right(image)
# Aumenta le dimensioni dell'immagine, quindi
ritaglia casualmente fino
# alle dimensioni originali
resize_factor = random.uniform(1, 1.2)
new_height = math.floor(resize_factor * INPUT_
SHAPE[0])
new_width = math.floor(resize_factor * INPUT_
SHAPE[1])
image = tf.image.resize_with_crop_or_pad(image,
new_height, new_width)
image = tf.image.random_crop(image,
size=INPUT_SHAPE)
# Varia la luminosità dell'immagine
image = tf.image.random_brightness(image, max_
delta=0.2)
return image, label
L’esposizione a queste variazioni durante
l’addestramento può aiutare a evitare che
il modello si affidi a delle scorciatoie
“memorizzando” indizi superficiali nei dati di
training, il che significa che può riflettere meglio
i modelli profondi alla base del dataset. Lo strato
Con il modello addestrato, se si scatta una foto con la videocamera, il risultato della finale del nostro modello avrà 16 neuroni con un
classificazione appare sul Serial Monitor 10% di dropout per prevenire l’overfitting (vedi
Tip a pag. 63). Il risultato dell’addestramento
non è eccezionale. Il modello ha raggiunto circa
moltiplicatore di larghezza, per costruire questi il 77% di accuratezza, ma la quantità di RAM
modelli più piccoli e meno onerosi dal punto di che si prevede di utilizzare durante l’inferenza
vista computazionale. Il ruolo del moltiplicatore è relativamente bassa (circa 60 KByte), il che
TIP di larghezza alfa è quello di assottigliare è molto positivo.
uniformemente la rete a ogni livello. Edge
MobileNet è
un’architettura
Impulse Studio ha a disposizione MobileNet V1 Fare il deployment
di rete neurale (immagini 96 x 96) e V2 (immagini 96 x 96 e Il modello addestrato verrà distribuito come
convoluzionale 160 x 160), con diversi valori di alfa (da 0,05 a libreria Arduino.zip. Aprite ArduinoIDE e, in
Open Source. 1,0). Per esempio, si otterrà la massima Sketch, andate su Include Library e aggiungete
Ottimizzata per accuratezza con immagini V2, 160x160 e alfa = .ZIP Library. Selezionate il file scaricato da Edge
l’esecuzione su 1,0. Naturalmente c’è un prezzo da pagare. Più Impulse Studio e il gioco è fatto! Nella scheda
dispositivi mobili alta è l’accuratezza, più memoria (circa 1,3 MB Examples di Arduino IDE, dovreste trovare un
ed embedded, è di RAM e 2,6 MB di ROM) sarà necessaria per codice sketch sotto il nome del vostro progetto.
stata sviluppata eseguire il modello e ciò implica una maggiore Aprite l’esempio Static Buffer: potrete vedere
da Google latenza. Il minor footprint si otterrà con che la prima riga di codice richiama una libreria
Research
MobileNet V1 e alfa = 0,10 (circa 53,2 K di RAM con tutto il necessario per eseguire l’inferenza
come soluzione
efficiente per
e 101 K di ROM). Per questo primo passaggio, sul vostro dispositivo:
l’elaborazione manterremo questo design (MobileNet V1 #include <XIAO-ESP32S3-CAM-Fruits-vs-Veggies_
di immagini su e alfa = 1,0). Un’altra tecnica importante da inferencing.h>
dispositivi con utilizzare con il Deep Learning è il data Si tratta di un codice generico (un template), che
limitazioni di augmentation, un metodo che può aiutare a prende solo un campione di dati grezzi (memorizzati
potenza e risorse migliorare l’accuratezza dei modelli nella variabile features = {} ) ed esegue il
di calcolo. Offre di apprendimento automatico creando dati classificatore, facendo l’inferenza. Il risultato viene
un buon equilibrio artificiali aggiuntivi. Un sistema di data visualizzato sul Serial Monitor. Dobbiamo ottenere il
tra efficienza augmentation apporta piccole modifiche casuali campione (immagine) dalla videocamera e pre-
computazionale
ai dati di addestramento durante il processo di elaborarlo (ridimensionandolo a 96 x 96,
e accuratezza
nei compiti di
training (per esempio capovolgendo, ritagliando convertendolo in scala di grigi e appiattendolo).
classificazione. o ruotando le immagini). In questa sezione è Questo sarà il tensore di ingresso del nostro
possibile vedere come Edge Impulse modello. Il tensore di uscita sarà un vettore con tre

64 LINUX PRO 220


Classificare le immagini con l’IA

valori (label), che mostra le probabilità di ciascuna


delle classi. Tornando al progetto (scheda Image), UN BUON POTENZIALE
copiate uno dei campioni di dati grezzi. 9.216
caratteristiche saranno trasferite negli appunti. “La scheda è in grado di gestire molte
Questo è il tensore di input (un’immagine appiattita
di 96 x 96 x 1), in questo caso le banane. Passate attività di post-elaborazione, anche se la
questo tensore di input a:
features[] = {0xb2d77b, 0xb5d687, 0xd8e8c0, 0xeaecba, latenza limita alcune applicazioni”
0xc2cf67, ...}
Si noti che Edge Impulse ha incluso nel suo SDK
(Software Development Kit) la libreria ESP NN effettivamente in grado di gestire un modello così
(https://github.com/espressif/esp-nn), grande eseguendo un semplice test di inferenza
che contiene funzioni NN (Neural Network) con lo sketch Static Buffer. Il risultato è positivo! Il
ottimizzate per vari chip Espressif. Al momento di problema non è la memoria, ma la latenza. Si noti
andare in stampa, l’ESP NN non funziona che con un test reale, la XIAO ha impiegato quasi
con l’ESP32S3 (Arduino IDE). Se, compilando 2,5 secondi per eseguire l’inferenza (rispetto ai
il codice, si ottiene un errore sarà necessario precedenti 318 ms).
risolvere il problema. Edge Impulse consiglia
di disattivare l’accelerazione ESP NN. Per farlo, Uso opzionale dell’accelerazione ESP-NN
individuate ei_classifier_config.h nella cartella delle Anche se Edge Impulse non ha rilasciato il suo
librerie Arduino esportate (/scr/edge-impulse-sdk/ SDK per ESP32S3, che utilizza l’acceleratore,
classifier/). Individuate la riga grazie all’ottimo lavoro fatto da Dmitry Maslov
#define EI_CLASSIFIER_TFLITE_ENABLE_ESP_NN 1.} (https://bit.ly/3XZ9aiT) possiamo avere ESP NN
e sostituite 1 con 0. Ora, quando eseguite con le ottimizzazioni dell’assemblaggio ripristinate
l’inferenza, dovreste ottenere, come risultato, e corrette per ESP32-S3. Questa soluzione non è
il punteggio più alto per “banana”. ancora ufficiale, in quanto Edge Impulse la
Il dispositivo gestisce l’inferenza, scoprendo includerà nell’EI SDK solamente una volta risolti
che l’immagine in ingresso è una banana. tutti i conflitti con altre schede. Per ora funziona
Si noti inoltre che il tempo di inferenza è stato solo con la versione non-EON. Pertanto, è
di circa 317 ms, con un risultato massimo di 3 necessario eseguire nuovamente il deployment
fps tentando di classificare le immagini da un del modello se il compilatore EON era abilitato
video. Si tratta di un risultato migliore rispetto quando si è generata la libreria. Nel frattempo,
a quello del CAM ESP32 (525 ms di latenza). potete scaricare una versione preliminare dalla
Ora dobbiamo incorporare la videocamera e pagina GitHub del progetto (https://bit.
classificare le immagini in tempo reale. ly/3DbXdwP), decomprimerla e sostituire la TIP
Andate su Arduino IDE Examples e scaricate cartella ESP NN con questa in: src/edge-impulse- Il dropout è
dal vostro progetto lo sketch esp32_camera. sdk/porting/espressif/ESP-NN, nella cartella una tecnica di
Dovreste modificare le righe da 32 a 75, che delle librerie di Arduino. Compilate quindi lo regolarizzazione
definiscono il modello e i pin della videocamera, sketch. Potrebbe essere utile riavviare l’IDE dopo che aiuta a
con i dati relativi al vostro modello. Lo sketch aver sostituito la cartella. Facendo un’inferenza prevenire
modificato xiao_esp32s3_camera può essere con MobilinetV2 96x96 0.35 e avendo come l’overfitting,
scaricato da GitHub (https://bit.ly/3PWNJx5). input immagini RGB, la latenza viene ridotta da che è quando
Si noti che è possibile mantenere i pin come file 2.383 ms a 219 ms, ossia più di dieci volte! Nei un modello di
.h, come abbiamo fatto nelle sezioni precedenti. nostri test, questa opzione funziona con machine learning
si adatta molto
Caricate il codice sulla vostra XIAO ESP32S3 MobileNet V2 ma non con V1. Quindi abbiamo
bene ai dati di
Sense e sarete pronti per iniziare a classificare addestrato di nuovo il modello, utilizzando la addestramento
frutta e verdura! Potete controllare i risultati versione ridotta di MobileNet V2, con un’alfa di ma ha una scarsa
sul Serial Monitor. 0,05. Si noti che la latenza stimata per un capacità di
Arduino Portenta (o Nicla), con un clock di 480 generalizzazione
Testare il modello (inferenza) MHz, è di 45 ms. Facendo il deployment del su nuovi dati
Scattando una foto con la videocamera, il modello e applicando la correzione, sostituendo di test. Il
risultato della classificazione appare sul Serial la cartella ESP-NN, come spiegato prima, si dropout esclude
Monitor. Passiamo ora all’altra dimensione del ottiene un’inferenza di soli 135 ms, ricordando casualmente
modello. Selezioniamo un MobilinetV2 96 x 96 che la XIAO funziona con la metà del clock alcuni nodi
durante
0,35, con immagini RGB in input. Anche con un utilizzato dal Portenta/Nicla. In conclusione, il
l’addestramento
modello più grande, l’accuratezza non è buona e, progetto dimostra il potenziale del TinyML con la per rendere
cosa peggiore, la quantità di memoria XIAO ESP32S3 Sense. La memoria non è un il modello più
necessaria per eseguire il modello aumenta di problema: il dispositivo è in grado di gestire robusto e meno
cinque volte e la latenza di sette volte. Quindi, molte attività di post-elaborazione, compresa la dipendente da
per migliorare il nostro modello, avremo comunicazione. Tuttavia è necessario considerare caratteristiche
probabilmente bisogno di più immagini per che l’elevata latenza (senza acceleratore ESP NN) specifiche.
l’addestramento. Intanto verifichiamo se la XIAO è limita alcune applicazioni. LXP

LINUX PRO 220 65


Tutorial

SICUREZZA

Metasploitable3:
pronti all'attacco?
Incrementiamo le nostre skill da penetration tester
e scoviamo le vulnerabilità per un futuro attacco... simulato!
etasploitable3 è una macchina virtuale il profilo meramente “addestrativo”
M realizzata da Rapid7 per consentire ai
propri potenziali clienti di provare appieno
(rimpinguando significativamente il nostro
bagaglio di conoscenze da pentester in erba), sia
le funzionalità di uno dei suoi prodotti di punta per quanto concerne il test vero e proprio.
(Metasploit, che non a caso utilizzeremo spesso In sintesi, abbiamo:
nel prosieguo), e che si presta altrettanto bene • Apprezzato i tempi – non immediati! – connessi
a un utilizzo addestrativo per chi, come noi, con l’operazione di scanning delle porte TCP
desidera affinare le proprie skill di pentester in e di fingerprinting dei servizi ivi presenti;
erba. Per metterla alla prova abbiamo realizzato • Sfruttato tale conoscenza per organizzare la
un piccolo ambiente di test, connettendo a scansione in una modalità che ottimizzasse la
Metasploitable3 una seconda macchina virtuale risorsa tempo (cruciale in una verifica di sicurezza,
basata sulla distribuzione Kali Linux, in modo da a cui in genere è associato un orizzonte temporale
disporre di una console d’attacco connessa al prestabilito e difficilmente modificabile),
nostro target (come da schema in figura #1). suddividendo l’operazione in due fasi (una prima
per individuare le porte aperte tra le 65.535
La scansione delle porte possibili, e una seconda – più approfondita –
Il primo step del nostro penetration test è stato diretta alle sole porte TCP risultate
quello di enumerare i servizi disponibili su effettivamente aperte, per identificare la versione
Metasploitable3, con lo scopo di raccogliere tutte del relativo servizio);
quelle informazioni (con particolare riferimento • Compreso la differenza – sia in termini tecnici, sia
alla tipologia e alla versione del sistema operativo per quanto concerne il grado di attendibilità e i tempi
e dei software che erogano i servizi in questione) di esecuzione – tra una scansione TCP (che abbiamo
che ci saranno necessarie per individuare e definito un protocollo connection oriented e
sfruttare le vulnerabilità che affliggono la VM. reliable, ovvero orientato alla connessione e
Armati di nmap (figura #2) – uno dei più noti (se affidabile) e una scansione UDP (che invece è
Figura 1
Lo schema di rete non il più noto) port scanner in ambito security, definito connectionless e unreliable, ovvero non
delle macchine peraltro disponibile nativamente in Kali Linux orientato alla connessione e non affidabile);
coinvolte nel – ci siamo lanciati, a più riprese, nella scansione • Acquisito un elenco di porte TCP e UDP risultate
penetration test dei servizi TCP e UDP. Questa attività ci ha aperte in Metasploitable3 (Figura #4), da sfruttare
che vedremo in
consentito di ottenere diversi risultati, sia sotto nel prosieguo del nostro pentest;
queste pagine
• Confermato quanto già sapevamo in merito
al sistema operativo della VM target, che è
rappresentato da Windows Server 2008 R2.
In altri termini, siamo adesso pronti a passare
a una fase successiva della nostra verifica di
sicurezza, quella in cui proviamo a individuare
– e a sfruttare a nostro vantaggio, al fine di
“misurarne” la gravità – eventuali vulnerabilità
presenti nel sistema target e nei servizi da questo
offerti. In quest’ottica, avendo a disposizione il già

66 LINUX PRO 220


citato elenco di porte ottenuto durante le
scansioni delle puntate precedenti, non abbiamo
che l’imbarazzo della scelta: ci è sufficiente
selezionarne una e iniziare la nostra verifica.
Nel caso specifico, trattandosi – come abbiamo
rilevato grazie a nmap – di un sistema Windows,
abbiamo deciso di partire da un servizio piuttosto
inusuale negli ambienti Microsoft: stiamo
parlando, ovviamente, del servizio SSH,
tipicamente associato a sistemi Unix/Linux.

Secure shell
Il perché è presto detto: SSH (acronimo di Secure
Shell) è il protocollo diventato, negli anni, lo
standard “de facto” per l’amministrazione remota
dei sistemi Unix e Linux. Grazie alle sue
caratteristiche di sicurezza, è in grado di stabilire predecessori – completamente insicuri – come Figura 2
una connessione sicura e privata tra due per esempio telnet o rlogin), SSH non è uno L’help di nmap
ci può fornire una
endpoint, utilizzabile (tra l’altro) proprio per strumento da prendere alla leggera. L’accesso alla
prima indicazione
accedere alla shell di una macchina remota porta 22 dovrebbe essere sempre soggetto a una di quanto questo
rimanendo comodamente seduti alla propria. Il serie di controlli e limitazioni: aprendo la porta tool sia versatile e
protocollo è infatti progettato per garantire la esclusivamente sull’interfaccia del server potente
riservatezza, l’integrità e l’autenticazione dei dati connessa alla subnet “di management”, in modo
trasmessi mediante il ricorso combinato ad da renderla non visibile dalla rete “di produzione”
algoritmi crittografici di natura simmetrica e utilizzata per fruire in via ordinaria dei servizi della
asimmetrica: insomma, esattamente ciò di cui ha macchina); viceversa qualsiasi malintenzionato –
bisogno un sistemista che desideri amministrare o peggio pentester autorizzato, come nel nostro
la propria macchina da remoto! Sviluppato caso – potrebbe cercare di sfruttarla per
secondo una logica client/server, SSH è individuare una via d’accesso al sistema. La
generalmente associato alla porta 22/TCP, situazione che ci mostra la scansione coincide
che poi è esattamente quella in cui la nostra proprio con lo scenario appena descritto, che
scansione lo ha rilevato. andrebbe invece assolutamente evitato: per
quanto ne sappiamo, al momento, la porta 22 è
SSH e pentest tranquillamente esposta al pari delle altre (come
Nonostante le caratteristiche di sicurezza che
abbiamo appena decantato (e sebbene si tratti di
un protocollo notevolmente più robusto dei suoi

Rete
Internet 211.100.1.2 Target

Backbone
211.100.1.1 Server FTP
212.100.1.3

Router
212.100.1.1

210.100.1.2
212.100.1.2
Pentester Server Web
210.100.1.1

Figura 3
All’URL https://www.short.tips/url/palestrahj trovate
le istruzioni per creare una vostra palestra virtuale

LINUX PRO 220 67


Tutorial

Figura 4
L’elenco delle porte che abbiamo rilevato essere aperte
su Metasploitable, sino a questo momento

la 80 su cui fluisce il traffico Web, tanto per


intenderci), e non risulta né “nascosta” in una rete
di management (come si conviene a un servizio
di natura esclusivamente amministrativa, non
pensato per la fruizione al pubblico ma piuttosto
per la gestione dei soli amministratori), né filtrata
da un meccanismo a bordo della macchina stessa
(come un firewall host based, che al momento
però non sembra presente, anche perché siamo
riusciti a scansionare con successo la porta
stessa).
Figura 6
Prime verifiche L’output di searchsploit, con evidenziato l’unico script che potrebbe
tornarci utile nel corso del nostro pentest
Anche se gli elementi raccolti lasciano supporre
che si tratti potenzialmente di una buona preda,
non è detto che sia effettivamente così: esiste In questo modo non ci aspettiamo di certo di
la possibilità che l’amministratore di riuscire a effettuare il login sulla macchina, ma
Metasploitable3 abbia limitato l’utilizzo di SSH piuttosto di avere la conferma della piena fruibilità
al solo comparto tecnico, magari impostando del servizio SSH anche dalla nostra console
l’obbligo di utilizzare un certificato per la d’attacco (Figura #5).
connessione al servizio. Piuttosto che continuare
a interrogarci sulle scelte dell’amministratore, Di nuovo nmap!
Figura 5 tuttavia, è molto più semplice effettuare una Assodato questo concetto, possiamo passare
Il nostro tentativo di verifica diretta: cominciamo con il collegarci al a tool che testino il servizio in maniera più
accesso via SSH è servizio. Apriamo il terminale sulla nostra console specifica. Iniziamo da… nmap. Il nostro port
piuttosto velleitario Kali Linux che utilizziamo come piattaforma scanner, che tanto utile si è rivelato nelle fasi
(ci sono ben poche
probabilità che sul
di pentest e digitiamo il comando iniziali di questa verifica di sicurezza, dispone
sistema sia anche # ssh prova@metasploitable3 infatti di un potente motore di scripting (Nmap
solo definito un dove: Scripting Engine, NSE), in grado di ampliarne in
utente di nome • prova costituisce uno username di test; maniera rilevante la portata, sino a trasformarlo
prova!), ma utile
• metasploitable3 è il nome mnemonico che in un piccolo vulnerabiility scanner. In altre
a verificare la
presenza di un abbiamo assegnato alla macchina target, come parole, prima di avviare una ricerca manuale di
servizio SSH sulla da istruzioni del già citato box “Configurazione di eventuali vulnerabilità associate con il servizio in
macchina target rete”; e proviamo a inserire password casuali. esecuzione sulla porta 22, può essere una buona
idea lanciare una scansione “avanzata” con nmap,
in modo che il tool ci possa mostrare quanto
meno le falle più evidenti (i cosiddetti low-
hanging fruit), risparmiandoci di conseguenza
l’effort per la loro rilevazione manuale.
Il comando da eseguire è:
# sudo nmap -sS -sV -p 22 –script=safe
metasploitable3
dove l’argomento –script=safe chiede al tool
di eseguire sulla porta 22 tutti gli script NSE
ricadenti nella categoria safe, ovvero quelli
progettati per evitare il rischio di crash ai servizi
testati. Il risultato di questa scansione, tuttavia,

68 LINUX PRO 220


Metasploitable3: pronti all'attacco?

non è particolarmente entusiasmante: per quanto


corposo, l’output della scansione non evidenzia
informazioni di interesse, limitandosi
a confermare quanto già sappiamo sulla versione
del servizio in esecuzione sull’host remoto
(OpenSSH 7.1). Né va meglio se, invece, proviamo
a eseguire contro il medesimo obiettivo un’altra
categoria di script, vuln, pensati per testare
la presenza di vulnerabilità specifiche.

Provare con OpenSSH 7.1


Giunti a questo punto non ci resta che effettuare
un’indagine più approfondita sul servizio in
esecuzione nella macchina Metasploitable3,
sfruttando l’unico indizio concreto che siamo
riusciti a raccogliere: stiamo parlando ovviamente
della versione del servizio, ovvero OpenSSH 7.1.
OpenSSH è un software dalle pregevoli qualità:
libero – innanzitutto – gratuito, diffuso e
affidabile. Nella sua storia, tuttavia, è stato
bersagliato da vulnerabilità piuttosto frequenti, lasciare fuori risultati importanti (come nel caso Figura 7
sebbene il ciclo di patching degli sviluppatori di un’ipotetica vulnerabilità corretta nella Il CVE che lo
abbia sempre funzionato egregiamente, versione 8.0, l’intestazione della riga potrebbe script cerca
di sfruttare
rilasciando tempestivamente i correttivi per le essere la seguente OpenSSH < 8.0, che non per eseguire
falle via via individuate. È proprio questo il punto: rientrerebbe nell’output di grep. Meglio optare l’enumerazione
siamo sicuri che Metasploitable3 non utilizzi una per un primo esame manuale, che in questo caso degli utenti SSH
versione datata di OpenSSH, magari affetta da ci mostra come searchsploit non disponga di
una vulnerabilità risolta solamente con una alcun “killer exploit” per la versione di OpenSSH
release più recente? in uso. Avremmo potuto sperare in un exploit in
grado di fornirci un accesso non privilegiato alla
Sfruttare ExploitDB macchina ma purtroppo l’output della nostra
Per rispondere a questa domanda faremo ricorso ricerca non ci ha fornito nulla del genere. L’unica
a ExploitDB, un database pubblico vulnerabilità che sembra poter essere utilizzata
(https://exploit-db.com) messo a disposizione nel corso della nostra verifica di sicurezza è
gratuitamente da Offensive Security, una della quella che abbiamo evidenziato in figura #7,
società di sicurezza più importanti del panorama relativa all’enumerazione degli utenti (user
mondiale (per intenderci: è a lei che dobbiamo enumeration), per la quale peraltro è disponibile
lo sviluppo della distribuzione Kali Linux!). del codice ad hoc (linux/remote/45939.py, come
Il database, pensato proprio per un utilizzo testimoniato dalla colonna Path). Lungi dal
da parte di pentester ed esperti di sicurezza, mandare in esecuzione questo script senza
consente di correlare i CVE corrispondenti a una conoscerne scopi e dettagli!
o più vulnerabilità ai software che ne sono affetti,
e rappresenta pertanto uno strumento Lo script finale
imprescindibile per chi, come noi, voglia misurarsi Si tratta di un codice non troppo complesso,
in una verifica di sicurezza. La distribuzione Kali giacché composto da poche righe di cui – grazie
installata sulla nostra postazione di attacco, alla leggibilità generalmente associata a Python
peraltro, dispone di una copia locale del database e ai commenti dell’autore – non è assolutamente
di ExploitDB, che può essere interrogata difficile intuire quanto meno la logica… ma
attraverso il comando searchsploit . Utilizzando qualora le vostre skill relative a questo linguaggio
questo tool possiamo, per esempio, visualizzare di programmazione non siano sufficienti, i
tutte le occorrenze di OpenSSH all’interno del commenti posti nell’intestazione forniscono
db, al fine di verificare se nella versione 7.1 sia un’indicazione oggettiva della vulnerabilità
presente una qualche vulnerabilità da sfruttare sfruttata dallo script. Si tratta della CVE-2018-
nel prosieguo della nostra verifica di sicurezza. 15473 (Figura #7 qui sopra), grazie alla quale un
Il comando da eseguire è: attaccante può enumerare gli utenti locali
# searchsploit OpenSSH presenti nei sistemi che utilizzano i servizi
e restituisce l’elenco mostrato in figura #6. OpenSSH sino alla ver. 7.7, a causa di un errore
Si tratta di un output lungo, che possiamo filtrare nel modo in cui questa gestisce le autenticazioni
ulteriormente utilizzando grep (in pipe con fallite. Non si tratta di una di quelle vulnerabilità
searchsploit, per esempio con il comando che ogni pentester sogna di trovare, eppure può
searchsploit OpenSSH | grep 7 ), ma si tratta risultare piuttosto utile nel corso della nostra
di una pratica che potrebbe, potenzialmente, verifica di sicurezza. LXP

LINUX PRO 220 69


Accademia del Codice

GODOT
Crediti: Michael Alexsander
https://fosstodon.org/@Yeldham

Creare un gioco
per una raccolta
Il processo di integrare il proprio codice in una struttura già creata non
è semplice, ma è la chiave per poter collaborare a progetti condivisi
ibrerama (https://librerama.codeberg. creare il vostro titolo arcade per Librerama.
L page/) è una raccolta di minigiochi
arcade molto piccoli e veloci (detti
La raccolta è infatti stata sviluppata con questo
popolare motore di gioco (https://godotengine.
nanogame, ossia nanogiochi). Quando org), che è in grado di caricare file di pacchetti
vi giocate il vostro obiettivo principale è di dati esterni (.pck) in fase di esecuzione.
accumulare il punteggio più alto possibile È quindi sufficiente creare un progetto in Godot
vincendone il maggior numero che potete prima opportunamente configurato ed esportarne un
di subire un game over, mentre aumentano file .pck perché il gioco venga eseguito.
progressivamente sia la velocità sia la difficoltà Creando un nanogioco vostro e integrandolo in
delle sfide. Potete trovare i dettagli di Librerama Librerama potrete non solo avere la
a pag. 37. È multipiattaforma, con binari soddisfazione di averlo fatto, ma anche capire
disponibili per GNU/Linux, Android, *BSD, nel dettaglio quali sono le modalità per
macOS e Windows. Si può inoltre giocare collaborare a un progetto strutturato e il tipo di
direttamente nel browser. Il suo codice è regole che permettono di coordinare progetti
software libero sotto licenza GPL v3+ e anche con tanti autori. Saper programmare, infatti, è
tutti gli asset utilizzati hanno licenze Open solo la prima parte di poter lavorare in squadra.
Source compatibili. Se avete una conoscenza di Capire e saper mettere in pratica le convenzioni
base del motore di gioco Godot Engine, potete e le regole legate alla struttura del progetto è
altrettanto importante, così come prestare la
corretta attenzione a elementi "secondari"
come la gestione dei bus audio e le metodologie
di traduzione ed esportazione del gioco. Questo
progetto può essere una vera palestra anche
per chi vuole in futuro lavorare
professionalmente come programmatore
in team strutturati.

Le basi del progetto


Prima di tutto, è necessario scaricare il modello
Nanogame Template (https://bit.ly/3JPmfFO).
Questo repository contiene un progetto Godot
che è stato adattato per creare nanogiochi, con
anche i file di base, nonché un debugger per
aiutarvi a testare i vostri titoli. Non modificate
la struttura dei file; a causa del modo in cui
Godot carica i file .pck e di come i percorsi delle
dipendenze sono memorizzati all'interno delle
Librerama è una raccolta di veloci minigiochi arcade Open Source e potete risorse, le posizioni dei file devono rimanere
creare il vostro con le istruzioni in questo articolo invariate. Anche le impostazioni del progetto

70 LINUX PRO 220


non devono essere modificate. Aprite il progetto
utilizzando una versione stabile di Godot Engine SEGNALI E METODI
e aprite la scena main.tscn che si trova nel
percorso community_nanogames/codice_uuid_ In Godot Engine, un segnale è un meccanismo utilizzato per
del_gioco. Questa scena, come suggerisce il la comunicazione asincrona tra oggetti all'interno di un gioco
nome, è quella principale del nanogioco e quella (o di un'applicazione). I segnali consentono agli oggetti
che viene aperta quando viene caricato da di notificare e scambiare informazioni in modo flessibile
Librerama. Tutto ciò che il nanogame deve fare e decentralizzato, senza dipendere da una comunicazione
deve trovarsi qui. La root della scena principale diretta o una dipendenza rigida tra di essi. Quando un oggetto
contiene lo script principale (main.gd), genera un segnale, sta effettivamente emettendo una notifica
che include un segnale e due metodi: o un avviso che può essere ricevuto da altri oggetti interessati.
Segnale ended : quando viene emesso dal Gli oggetti che desiderano ascoltare un segnale si collegano a
nanogioco, dice a Librerama che il giocatore esso tramite un metodo definito come slot. Quando il segnale
ha raggiunto lo stato finale, indicando anche viene emesso, tutti i collegamenti (slot) associati a quel segnale
se ha vinto o meno, a seconda che l'argomento vengono attivati e i relativi metodi vengono eseguiti. I segnali
has_won sia true o false . Deve essere utilizzato in Godot Engine possono essere personalizzati e definiti
quando il giocatore vince o perde il nanogioco, all'interno delle classi degli oggetti. Per esempio, un oggetto
emettendo il segnale e fornendo l'argomento Player potrebbe definire un segnale PlayerDied per notificare
che lo riflette. Si noti che se il nanogioco è di quando il giocatore muore. Gli altri oggetti, come il sistema di
tipo Survival, non sarà necessario emettere il punti o l'interfaccia utente, possono quindi collegarsi a quel
segnale quando l'utente vince, perché viene segnale e fare azioni appropriate quando il giocatore muore.
fatto automaticamente. Un metodo è invece una funzione o un blocco di codice che
Metodo nanogame_prepare() : viene richiamato definisce un comportamento specifico per un oggetto. I metodi
quando la scena principale del nanogioco viene sono utilizzati per implementare la logica e le funzionalità degli
istanziata. Fornisce due informazioni: difficulty , oggetti. Sono scritti all'interno delle classi degli oggetti e
che indica il livello di difficoltà corrente del vengono richiamati per eseguire azioni specifiche in risposta
giocatore (da 1 a 3), e debug_code , che mostra a eventi o input degli utenti, oppure in modo programmatico.
il codice di debug corrente impostato nel I metodi possono accettare parametri, che rappresentano dati
Nanogame Debugger (di cui parleremo più di input necessari per la loro esecuzione. Possono anche
avanti). Va usato per dire al nanogioco come restituire valori come risultato del loro lavoro.
comportarsi in funzione degli argomenti forniti
e, se necessario, per memorizzarne i valori.
Metodo nanogame_start() : viene richiamato di direzione;
quando la schermata di avvio (quella che mostra ACTION : controllato dal tasto azione (Invio/
al giocatore l'input del nanogioco e il suo inizio) Barra spaziatrice sulla tastiera);
è terminata e al giocatore viene dato il controllo NAVIGATION_ACTION : viene controllato sia
effettivo del videogame. Va utilizzato se il dai tasti di direzione sia da quelli di azione;
nanogioco ha componenti che devono attivarsi DRAG_DROP : si controlla toccando lo schermo
solo quando il giocatore ne ha il pieno controllo, su dispositivi tattili, il mouse su desktop
per esempio la generazione dei nemici. o il joystick quando si usa un joypad.
È importante sottolineare che, a eccezione inputModifier : se Librerama viene riprodotto
di nanogame_start() , tutti gli altri elementi devono in un dispositivo tattile e il tipo di input del
essere presenti nello script, altrimenti nanogioco è di tipo NAVIGATION , è possibile TIP
Librerama non potrà riprodurre il nanogioco. impostare un modificatore per mostrare solo Godot Engine
i controlli pertinenti. I modificatori sono: è un motore
Gestire i metadati NONE : non è impostato alcun modificatore; di gioco Open
All'interno del modello troverete anche un altro HORIZONTAL : si utilizzano solo i tasti Source con un
file, chiamato "nanogame.json". Contiene di navigazione destro e sinistro; editor intuitivo
i metadati del nanogioco, che sono i seguenti: VERTICAL : si utilizzano solo i tasti e potente. Offre
name : il nome del nanogioco. di navigazione in alto e in basso; funzionalità per
lo sviluppo di
kickoff : il messaggio che viene mostrato nella timer : il tipo di timer del nanogioco. Questi sono:
giochi 2D e 3D,
schermata di avvio, fornendo un comando di base OBJECTIVE : se il giocatore non riesce a
un linguaggio
come suggerimento. I comandi sono scritti raggiungere la vittoria prima che il timer di scripting,
in lettere maiuscole e terminano con un punto raggiunga lo 0, perde; un sistema di
esclamativo. Per esempio: "ATTACCA!", SURVIVAL : se il giocatore non raggiunge animazione,
"COLPISCI!", "SCHIVA!". lo stato di sconfitta prima che il timer fisica, gestione
description : la descrizione del nanogioco. raggiunga lo 0, vince; delle risorse e
author : l'autore del nanogioco (cioè voi!). tags : i tag del nanogioco. Aiutano il giocatore altro ancora.
input : il tipo di input del nanogioco. Questo sarà il a cercare nanogiochi specifici e dovrebbero Si può usare
modo in cui il nanogioco verrà controllato, ovvero contenere gli elementi e i temi coinvolti. anche per creare
altri tipi di
uno dei seguenti: Devono essere impostati come segue:
applicazioni.
NAVIGATION : si controlla premendo i tasti "Car,Explosions,Future,GameJam". Non

LINUX PRO 220 71


Accademia del Codice

è necessario aggiungere un tag se la parola },


TIP compare già nel nome del nanogioco, poiché {
la ricerca tiene conto anche di questo. "name": "Secondo Esempio",
Se volete licenseCode : la licenza del codice complessivo "author": "Bob",
imparare a usare del nanogioco. Qui si imposta la licenza del "license": "GPL_3_LATER",
Godot engine
codice scritto da voi, che deve essere "source": "https://other_example.org"
potete trovare
una serie di aiuti
compatibile anche con quelli di qualsiasi codice }
all'indirizzo di terze parti presente al suo interno (in caso di ]
https://bit. copyleft). Le opzioni disponibili si trovano
ly/3ro1Xg1. all'indirizzo https://bit.ly/3XTV2HB. Ottenere l'input del giocatore
Qui infatti c'è licenseAssets : la licenza delle risorse complessive A un nanogame si deve naturalmente poter
la presentazione del nanogioco. È qui che si imposta la licenza giocare, ma non si possono impostare i suoi
della relativa degli asset creati, come per esempio le controlli come si vuole. Tutti i nanogiochi
documentazione immagini e i file audio. devono seguire una serie di controlli specifici
oltre al source : il collegamento a dove si trova il che dipendono dal tipo di input impostato nei
collegamento alla
nanogioco. Nel caso in cui sia Open Source, loro metadati. L'input del giocatore può essere
pagina "Guide
e risorse" che
il link deve rimandare al suo repository. ottenuto tramite l'insieme di metodi is_action_*()
elenca dei video thirdParty : i componenti di terze parti del di Godot, controllando la seguente lista di azioni,
tutorial creati nanogioco. Qui devono essere elencati tutti già presente nel modello:
dalla comunità. gli elementi che non sono stati realizzati nanogame_action : l'input dell'azione (Invio/Barra
da voi. Ognuno deve avere le seguenti proprietà: spaziatrice sulla tastiera);
name : il nome dell'asset (non come viene nanogame_left : l'input della direzione sinistra;
chiamato nei vostri file, ma il suo nome nanogame_right : l'input della direzione destra;
originale); nanogame_up : l'input della direzione verso l'alto;
author : l'autore originale (non voi, in questo nanogame_down : l'input della direzione verso il basso.
caso); Gli input dello schermo (o del mouse sul
license : la licenza di terze parti; desktop) possono essere letti controllando
source : il collegamento a dove trovarlo. gli eventi su nodi come Area2D , utilizzando il
I metadati delle terze parti devono essere scritti metodo _input_event() . Ricordatevi di controllare
come segue: sempre il mouse, poiché gli eventi tattili
"thirdParty": [ vengono automaticamente tradotti per esso.
{ Dovreste sempre rimanere in ascolto di questi
"name": "Primo esempio", eventi di azione, in quanto assicurano che il
"author": "Alice", vostro nanogioco obbedisca al set di controlli
"license": "CC_BY_SA_4", corrente e rimanga coerente con gli altri. Un
"source": "https://esempio.org" altro aspetto importante è ricevere gli input del
giocatore solo quando è consentito. I momenti
in cui l'input dovrebbe essere ignorato sono la
I FILE PORTABLE OBJECT schermata di inizio partita e le interruzioni per la
vittoria o la sconfitta. È molto facile evitare
I file .po (Portable Object) sono un diffuso formato utilizzato questi momenti, programmando l'input
per la localizzazione e la traduzione di software in diverse all'interno del metodo _unhandled_input() (di cui si
lingue. Un file .po contiene una serie di coppie di stringhe: può fare l'override) in quanto non solo gli eventi
quella originale (solitamente in inglese) e la sua traduzione vengono forniti solo quando sono consentiti, ma
nella lingua di destinazione. Queste stringhe rappresentano quelli che non sono dello stesso tipo del vostro
le frasi, i messaggi o gli elementi di testo presenti nel nanogioco vengono ignorati. Se per qualche
software che devono essere tradotti. I file .po sono motivo questo non è possibile, ricordatevi di
tipicamente utilizzati in combinazione con strumenti di elaborare gli eventi solo dopo che il metodo
gestione delle traduzioni come GNU gettext, che consentono nanogame_start() è stato richiamato e prima di
agli sviluppatori di estrarre le stringhe di testo che devono emettere il segnale ended .
essere tradotte dal codice sorgente dell'applicazione e di
generare i file .po corrispondenti. I traduttori possono quindi L'icona del nanogioco e i bus audio
utilizzare questi file per inserire le traduzioni appropriate per L'icona del vostro nanogioco è la prima
ogni stringa. Un esempio di coppia di stringhe in un file .po è: rappresentazione visiva che il giocatore ne
msgid "Hello" vedrà e, in quanto tale, deve rispecchiare il tema
msgstr "Ciao" del nanogame. Nel template troverete un'icona
Dove "Hello" è la stringa originale e "Ciao" è la traduzione in di riferimento, denominata "icon.png", che
italiano. I file .po possono contenere anche altre informazioni, ha le dimensioni corrette su cui basare la vostra.
come i metadati sulla lingua di destinazione, suggerimenti Deve essere precisamente di 128 x 128 pixel
di traduzione e commenti per aiutare i traduttori o fornire e avere una spaziatura di 16 pixel tra i bordi.
istruzioni agli sviluppatori. Si noti che Librerama accetta anche i file SVG
come icone, ma devono comunque rispettare

72 LINUX PRO 220


Creare un gioco per una raccolta

le dimensioni e i nomi corretti (in questo caso,


"icon.svg"). Librerama dispone di opzioni per
definire il livello di volume di diversi tipi di audio:
Master, Music ed Effects. È importante
che anche l'audio del nanogioco lo faccia.
Fortunatamente, è molto facile da
implementare, perché il modello viene fornito
con i bus audio già creati quindi si tratta solo di
assegnare alla proprietà bus dei nodi
AudioStreamPlayer* il bus corretto:
- Music: la melodia di sottofondo e jingle;
- Effects: gli effetti sonori generali, come quelli
riprodotti quando si colpisce qualcosa,
ci si muove, si urta un ostacolo, ecc.
Non si devono impostare le proprietà del bus
direttamente su Master. Tutte le sorgenti audio
devono essere riprodotte su uno degli altri due bus.

Il Nanogame Debugger
Una parte essenziale della realizzazione non solo
di un nanogioco, ma di qualsiasi videogame, I vari elementi
è il testing con relativo debugging. Il modello necessario che questa directory abbia come nome del Nanogame
di Librerama viene fornito con il Nanogame un codice UUID, in modo da non entrare Debugger,
Debugger, a cui si può accedere semplicemente in conflitto con altri nanogiochi della comunità che integrato nel
modello fornito,
eseguendo il progetto. Dopo averlo fatto, il giocatore potrebbe aver caricato sul proprio vi permettono di
vedrete apparire la schermata riportata nella dispositivo. Esistono numerosi modi testare e trovare
parte superiore di questa pagina. I numeri che per generarli, uno dei quali è il motore di ricerca sul eventuali problemi
vi compaiono corrispondono a: Web DuckDuckGo, cercando il termine "UUID". È
1) Il timer, che include il suo tipo (arancione molto importante ricordare che è necessario
per OBJECTIVE e verde per SURVIVAL ), rinominare la directory utilizzando
il tempo rimanente e un pulsante di blocco il motore Godot stesso. In caso contrario, TIP
per evitare che diminuisca. il motore comunicherà di non essere in grado
Un codice UUID
2) La difficoltà e la velocità attuali, che possono di trovare le dipendenze dei file.
(Universally
essere modificate e bloccate, in modo
Unique
che vincere o perdere non le influenzi. Tradurre ed esportare il nanogioco Identifier) è un
3) I pulsanti di avvio/arresto e di pausa. Si usano Le traduzioni sono effettuate tramite file .po. identificatore
per controllare lo stato attivo del nanogioco. (vedi box I file Portable Object nella pagina standardizzato
4) L'area di selezione dei nanogiochi, che include accanto per maggiori informazioni su questo che viene
il pulsante di scelta dei file, il nome del formato). Questi file devono contenere la utilizzato per
nanogioco corrente e il pulsante di ricarica, utile traduzione dei metadati del nanogioco, oltre a rappresentare
quando si apportano piccole modifiche. tutto il testo che appare al suo interno. Devono in modo univoco
5) Il setter del codice di debug può essere usato essere memorizzati in una directory denominata un'entità o
un oggetto
per passare un valore intero al nanogioco, "translations", creata all'interno della cartella
nel contesto
che può agire in modo diverso in base al valore UUID. Una volta completato il nanogioco, è il
dei sistemi
stesso e alla programmazione del nanogame. momento di esportare il file .pck! Andate alla informatici.
6) L'area miscellanea. Contiene il pulsante finestra di dialogo Export, fate click sulla Gli UUID sono
di attivazione dei riferimenti, che disattiva preimpostazione Android, quindi fate click su progettati
i riferimenti di visibilità degli elementi dell'HUD Export PCK/Zip, selezionate la posizione in cui per essere
di Librerama (in modo da evitare di posizionare volete esportare il file e dategli un nome che globalmente
elementi importanti sotto di essi) e il pulsante finisca con l'estensione .pck. Non preoccupatevi unici, cioè
di attivazione del "nascondimento" automatico, del preset Android: i file del pacchetto sono improbabili da
che cela l'interfaccia quando si gioca a un multipiattaforma e potranno essere caricati su duplicare anche
in sistemi diversi.
nanogioco e quando il mouse non è sopra di essa. tutti i dispositivi che eseguono Librerama. Una
Si tratta
Per iniziare a testare il vostro nanogame, fate volta terminata l'esportazione, il gioco è pronto!
di stringhe
click sul pulsante di selezione dei file, che vi È sufficiente inserirlo nella directory community_ alfanumeriche
porterà alla finestra di dialogo, quindi navigate nanogames di Librerama all'interno di quella dei composte da 32
nelle directory fino a trovare il file nanogame. dati utente del giocatore, e Librerama sarà in cifre esadecimali,
json, selezionatelo e, se il nanogioco non grado di leggerlo all'avvio. Ora potete giocarci suddivise in
contiene errori, sarà pronto per la prova. da soli o, ancora meglio, condividerlo con altri! cinque gruppi
Avrete già notato che i file dei nanogiochi sono Avete inoltre un'idea più precisa di che cosa separati
memorizzati in una directory denominata comporta creare un videogioco all'interno da trattini.
"codice_uuid_del_gioco". Questo perché è di un sistema predefinito. LXP

LINUX PRO 220 73


Accademia del Codice

PROGRAMMAZIONE
Crediti: Kenton de Jong

Trucchi per il vostro


arsenale CSS
Anche per chi ha già familiarità con questo diffusissimo linguaggio,
c’è sempre qualche chicca per facilitare il lavoro
algrado i suoi quasi 27 anni di vita (la versione all’immagine di sfondo e potrebbe funzionare, ma è
M originale, chiamata CSS1, è stata pubblicata
come specifica ufficiale nel dicembre 1996),
preferibile utilizzare il tradizionale <img> .
<div title="Questa è una pessima idea"
il CSS (Cascading Style Sheets) è ancora il linguaggio style="background-image: url(/path/to/bad/idea.jpg"></
principe per descrivere l’aspetto e il layout dei div>
documenti HTML (HyperText Markup Language). Come si fa, però, a inserire <img> di varie larghezze
Chi lavora sul Web tipicamente conosce il CSS: dato e altezze in un riquadro fisso?
però che è in continua evoluzione e che ci sono tanti img {
TIP piccoli trucchi per sfruttarlo al meglio, vale sempre la width: 20%;
Uno screen pena di approfondire alcuni suoi aspetti che possono height: 100px;
reader (lettore sfuggire anche agli sviluppatori che lo usano da anni. object-fit: cover;
dello schermo) }
è un software Sfruttare Object-Fit e Filter: Drop-Shadow() Simile a background-size , object-fit ridimensiona
progettato
Una situazione che capita spesso è che un cliente invii l’immagine per una determinata dimensione. Si
per aiutare
una serie di immagini di dimensioni diverse e voglia può usare cover , che ritaglia l’immagine per
le persone
non vedenti o che le mettiate in una griglia perfetta. È ovviamente coprire l’intera area, oppure contain che la
ipovedenti a possibile ritagliare l’immagine con un software di ridimensiona e mantiene il suo rapporto originale.
interagire con terze parti (o tramite uno script lato server) o Probabilmente avrete già usato text-shadow e
i computer. utilizzare un’immagine di sfondo. L’uso di un’immagine quasi sicuramente conoscete già box-shadow .
Converte il testo di sfondo è una soluzione semplice, ma in questo Entrambi esistono da molto tempo, anche se box-
e i contenuti modo si perde qualcosa di molto importante: shadow non è più popolare come una volta, da
visivi presenti l’accessibilità! Gli screen reader si basano sull’alt-text quando il design ha iniziato a preferire scritte più
sullo schermo in per indicare agli utenti il contenuto di un’immagine e piatte senza effetti realistici. Spesso i progetti
output audio o
quelle di sfondo non hanno un testo alternativo. hanno lo stesso text-shadow e box-shadow e gli
Braille.
Teoricamente potreste aggiungere un “titolo” sviluppatori devono fare così:
:root { --shadow: 5px 5px 5px #000; }
p { text-shadow: var(--shadow); }
img { box-shadow: var(--shadow); }
Non è complicato, ma nello spirito di semplificare
il CSS possiamo usare drop-shadow() per combinare
le due cose, applicando un text-shadow al testo e un
box-shadow alle immagini:
:root { --shadow: 5px 5px 5px #000; }
p, img { filter: drop-shadow(var(--shadow)); }
C’è una leggera differenza nelle ombre, ma non è
troppo evidente se c’è un colore di sfondo. C’è però
un’altra avvertenza: drop-shadow aggiunge un’ombra
Object-fit ridimensiona l’immagine per una determinata dimensione.
intorno alle parti solide dei PNG trasparenti, mentre
Cover la ritaglia per coprire l’intera area, mentre contain mantiene il suo box-shadow la mette intorno all’intera immagine.
rapporto originale Dovete quindi sceglierli in base all’effetto desiderato.

74 LINUX PRO 220


Dimensioni dei caratteri responsive
Le dimensioni dei caratteri responsive possono
essere delicate da gestire. Se usate Avada per
costruire siti WordPress potete sfruttare il suo stile
incorporato per i caratteri responsivi. Altrimenti
potete usare il CSS personalizzato. Avada ha delle
variabili CSS integrate come --body_typography-font-
size , ma non è necessario utilizzarle in questo caso.
Invece, possiamo usare:
body { font-size: min(18px, 4.2vw) }
Così si imposta la dimensione del carattere del corpo
a 18px o a 4,2vw (che è il 4,2% della larghezza del
viewport), a seconda di cosa sia più piccolo. Se
si usa Avada, si può fare invece in questo modo:
:root {
--body_typography-font-size: font-size: min(var(--
body_typography-font-size), 4.2vw) Drop-shadow aggiunge un’ombra intorno alle parti solide dei PNG trasparenti, mentre box-shadow
} la mette intorno all’intera immagine. Dovete quindi scegliere quale usare in base all’effetto desiderato
Per l’altezza delle righe, si possono usare anche
numeri senza unità, come segue: :where() ha una specificità pari a zero, che rende
p{ più facile la sovrascrittura, mentre :is() ha quella
font-size: 18px; degli elementi aggiunti. Nell’esempio precedente,
line-height: 1.25; :where(ul, ol) ha una specificità di zero, mentre
} :is(ul, ol) la avrebbe pari a uno, perché elementi come
In questo caso, la modifica della dimensione dei ul e ol hanno una specificità di uno. In questo caso
caratteri non causerà problemi con l’altezza delle non si tratta di una grande differenza, ma può essere
righe. Se la dimensione del carattere è 18px * 1,25 significativa in scenari più complessi. Un’altra utile
l’altezza della riga è 22,5px, ma se la dimensione funzione del CSS è :not() . Immaginate di dover creare
del carattere è 14,752px * 1,25 l’altezza della riga lo stile di un modulo e di volere che tutti i campi siano
è 18,44px. a tutta larghezza. Potreste fare così:
input, textarea, select { width: 100%; }
Usare :where(), :is(), :not() Ma poi avreste anche caselle di controllo e pulsanti
Un problema comune è quello di avere un elenco di opzione a tutta larghezza. Si potrebbe essere
di elementi non ordinati con un margine in fondo tentati di procedere in questo modo: TIP
per separarlo da quello successivo e anche una lista input[type="text"], input[type="tel"], input[type="email"],
L’alt-text (testo
di elementi non ordinati all’interno dell’elenco input[type="url"], input[type="number"],
alternativo)
originale. Si può risolvere il problema del margine con: input[type="blahblahblah"], textarea, select { width:
è un attributo
ul { margin-bottom: 20px; } 100%; } utilizzato
ul ul { margin-bottom: 0; } Ma è inelegante. Con :not() si può invece fare così: nell’elemento
Ma cosa succede quando avete anche un elenco input:not([type="checkbox"], [type="radio"]), textarea, HTML <img>
ordinato? Improvvisamente il CSS diventa: select { width: 100%; } per fornire una
ul, ol { margin-bottom: 20px; } descrizione
ul ul, ul ol, Scrollare con scroll-behavior testuale di
ol ul, ol ol { margin-bottom: 0; } Riconoscete questo codice o una sua variante? un’immagine.
Con il selettore :where() , invece, si può fare così: jQuery('a[href*="#"]').click(function() { Viene usato
per scopi di
:where(ul, ol) { margin-bottom: 20px; } var href = jQuery(this).attr('href');
accessibilità
:where(ul, ol) :where(ul, ol) { margin-bottom: 0; } $el = jQuery(href);
Web e per fornire
:where() è molto simile a :is() , con la sola differenza if ($el.length) informazioni
della specificità (vedi box nella prossima pagina). $('html,body').animate({scrollTop: $el.offset() sull’immagine se
non è possibile
caricarla o
visualizzarla.
Il testo
alternativo viene
utilizzato al posto
dell’immagine
anche quando gli
utenti adottano
uno screen
reader per
navigare
nel Web.
Con :not() potete creare lo stile di un modulo e con tutti i campi a tutta larghezza tranne le caselle di controllo e pulsanti di opzione

LINUX PRO 220 75


Accademia del Codice

.top},'slow');
TIP }
});
jQuery è una
È codice jQuery per passare un’ancora della pagina.
popolare libreria
Al suo posto si può aggiungere questo stile CSS:
JavaScript
utilizzata per html {
semplificare scroll-behavior: smooth;
l’interazione }
con gli elementi In questo modo, se si fa click su un link con
HTML, la gestione un’ancora, si passa a quella parte del sito.
degli eventi e la
comunicazione Istruzioni condizionali: lo stile @supports e le
con i server. query media
Fornisce una
CSS non offre istruzioni condizionali simili a quelle
sintassi concisa
presenti in linguaggi di programmazione come Qui è usata una query media per adattare il layout di una pagina Web
e intuitiva
per eseguire JavaScript o PHP. Tuttavia fornisce alcune quando la larghezza dello schermo è inferiore a 768 pixel
operazioni funzionalità per l’applicazione di stili condizionali
comuni in modo in base a determinate condizioni. Lo stile
efficiente. @supports , per esempio, è una regola condizionale @supports (background-image: url('example.jpg') &&
Tuttavia, con che consente di applicare stili specifici solo se border-radius: 10px) {
l’avanzare delle determinate funzionalità CSS sono supportate /* Stili da applicare se il browser supporta le proprietà
tecnologie Web, dal browser in uso. Consente così di scrivere codice specificate */
l’uso di jQuery è CSS che tiene conto delle capacità del navigatore background-image: url('example.jpg');
diminuito a favore
e fornisce una migliore esperienza utente. border-radius: 10px;
di approcci più
La sua sintassi generale è la seguente: }
leggeri
e nativi come @supports (condizione) { Ci sono anche le classiche media query che
JavaScript puro /* Stili da applicare se la condizione è vera */ consentono di adattare in modo dinamico il layout
o framework } e l’aspetto del sito in base alle dimensioni dello
JavaScript La condizione specifica una o più proprietà CSS schermo, alla risoluzione, all’orientamento e ad altre
moderni. o valori che devono essere supportati dal caratteristiche specifiche del dispositivo. La sintassi
browser. Se viene soddisfatta, cioè il browser generale di una media query è la seguente:
supporta tutte le proprietà o i valori specificati, gli @media condizione {
stili all’interno delle parentesi graffe vengono /* Stili da applicare se la condizione è vera */
applicati. Per esempio, supponiamo di voler }
applicare uno stile di sfondo a un elemento solo La condizione specifica le caratteristiche del
se il browser supporta le proprietà CSS dispositivo o del viewport in cui si vogliono applicare
background-image e border-radius . Possiamo gli stili. Per esempio, si potrebbe impostare
usare la regola @supports in questo modo: una media query per applicare stili diversi quando la

I PRINCIPI DELLA SPECIFICITÀ


La specificità in CSS determina quale Quando ci sono più regole che si quindi prevale. Nell’esempio riportato
regola di stile viene applicata a un applicano allo stesso elemento, viene qui sotto, se si applica il selettore
elemento quando a esso si applicano seguito un processo per determinare p#id.classe a un elemento <p> con
più regole. È un concetto che definisce quale avrà la precedenza: un ID di “id” e una classe di “classe”,
l’ordine di precedenza delle regole Regole inline: hanno la precedenza il colore del testo sarà blu perché
CSS in base alla loro selettività. Ogni più alta. Vengono applicate la regola con l’ID ha una specificità
selettore ha un valore di specificità direttamente agli elementi tramite più alta rispetto alle altre due.
associato a esso e la specificità viene l’attributo style nell’HTML.
calcolata assegnando punti a ciascun Specificità: le regole con una
suo componente. Per esempio: specificità più elevata vengono
Selettore di elemento: 1 punto applicate. Per esempio, una regola
(per esempio div , p , span ). con un selettore di ID ( #id ) avrà una
Selettore di classe, di attributo, specificità maggiore rispetto a una
selettore pseudo-classe: 10 punti con un selettore di classe ( .classe ).
( .classe , [attributo] , :hover ). Ordine: se le regole hanno la stessa
Selettore di ID: 100 punti (per es. #id ). specificità, l’ordine in cui appaiono
Regola inline: 1000 punti nel codice CSS determina quale
(per esempio style="..." ). regola viene applicata per ultima e

76 LINUX PRO 220


Trucchi per il vostro arsenale CSS

larghezza dello schermo è inferiore a 600 pixel:


@media (max-width: 600px) {
/* Stili da applicare quando la larghezza è inferiore
a 600px */
}
All’interno di una media query è possibile specificare
tutte le regole CSS desiderate, che si applicheranno
solo se la condizione è soddisfatta. Si possono
utilizzare le stesse proprietà e i valori CSS standard
per personalizzare l’aspetto e il layout del contenuto.
Le media query sono particolarmente utili per
rendere i siti responsivi, consentendo loro
di adattarsi in modo ottimale a diverse dimensioni
di schermo e dispositivi. Possono essere utilizzate
per definire layout a colonna singola o multipla,
modificare la dimensione del testo, nascondere
o mostrare elementi specifici e molto altro ancora.
In questo esempio,
Per esempio, si può utilizzare una media query il valore massimo. Quando la larghezza dello
tutti gli elementi
per adattare il layout di una pagina Web quando schermo è piccola, la dimensione del testo sarà con la classe
la larghezza dello schermo è inferiore a 768 pixel: almeno di 2 rem mentre quando è ampia sarà al “box” in HTML
@media (max-width: 768px) { massimo di 4 rem, adattandosi automaticamente in condivideranno uno
.container { modo fluido tra questi valori in base alla larghezza stile comune definito
nella regola .box.
width: 100%; effettiva dello schermo. Successivamente, a
} seconda della classe
Usare le classi in HTML assegnata, ogni
.sidebar { Un altro metodo è utilizzare le classi in HTML elemento avrà uno
stile specifico
display: none; per applicare stili condizionali. Si possono infatti
} definire classi specifiche nel codice HTML
} e applicare stili differenti a elementi selezionati
In questo caso, la classe .container occupa utilizzando CSS. Le classi possono essere
l’intera larghezza dello schermo e la classe dinamicamente modificate attraverso scripting
.sidebar viene nascosta quando lo schermo o aggiunte manualmente nel codice HTML
è largo meno di 768 pixel. a seconda delle condizioni desiderate.
Per esempio, potreste usare questo codice in HTML
Usare la funzione clamp() <div class="box primary">Contenuto principale</div>
Usando questa funzione potete definire un valore <div class="box secondary">Contenuto secondario</div>
che rientra in un intervallo specifico. È utile per e questo invece in CSS:
creare regole flessibili per le dimensioni di elementi .box {
come larghezza, altezza, dimensione del testo e altre /* Stili comuni per tutti gli elementi con classe "box" */
proprietà. La sua sintassi generale è: padding: 10px;
clamp(min, preferito, max) border: 1px solid black;
Qui min rappresenta il valore minimo consentito, }
preferito quello che si desidera applicare, mentre
max è il valore massimo accettato. La funzione .primary {
clamp() restituisce il valore preferito se rientra /* Stili specifici per l'elemento con classe "primary" */
tra min e max. Se il valore preferito è inferiore background-color: lightblue;
a min, viene utilizzato min, mentre se è superiore }
a max è usato max. In questo modo, clamp()
consente di definire un intervallo flessibile con un .secondary {
valore preferito che sarà applicato quando /* Stili specifici per l'elemento con classe "secondary"
possibile, ma che verrà adattato se necessario per */
rientrare nell’intervallo specificato. Per esempio, background-color: lightgray;
per definire la dimensione del testo in base alla }
larghezza dello schermo si può usare:
h1 { In questo modo, tutti gli elementi con la classe
font-size: clamp(2rem, 5vw, 4rem); box condivideranno uno stile comune definito
} nella regola .box . Successivamente, a seconda
La dimensione del testo all’interno degli elementi della classe assegnata, ogni elemento avrà uno
h1 varierà in base alla larghezza dello schermo. stile specifico. Per esempio, l’elemento con
2rem rappresenta il valore minimo, 5vw è quello la classe primary avrà uno sfondo di colore
preferito basato sulla larghezza dello schermo lightblue, mentre all’elemento con la classe
(5% della larghezza del viewport) e 4rem indica secondary verrà assegnato lightgray. LXP

LINUX PRO 220 77


L’eco dei LUG

L’eco dei LUG


ABRUZZO IGLUG - Napoli e provincia LUG Rieti
I LUG AnxaLUG - Lanciano www.iglug.org https://rieti.ils.org
www.anxalug.org IRLUG - Irpinia LUGRoma 3
I LUG
rappresentano Il Pinguino - Teramo www.irlug.it www.lugroma3.org
da sempre il Non disponibile LUG-Ischia TorLUG - Università Tor Vergata - Roma
punto di OpenLUG - L’Aquila www.lug-ischia.org http://lug.uniroma2.it/
riferimento per Non disponibile LUG Acropoli
chiunque voglia www.linux.it/~ciccios/lugagropoli.htm LIGURIA
Pescara LUG
conoscere Neapolis Hacklab GE.P LUG - Genova
www.pescaralug.org
GNU/Linux.
Pollinux LUG - Pollutri www.officina99.org/hacklab.html https://geplug.altervista.org/
Ogni mese
dedicheremo Non disponibile Genova LUG
loro questo SSVLUG - San Salvo, Vasto, Termoli EMILIA ROMAGNA www.genovalug.altervista.org
spazio per la www.ssvlug.org Borgotaro LUG - Val Taro Govonis GNU/LUG - Savona
comunicazione TeateLUG - Chieti
http://btlug.it/ www.govonis.org
di nuovi progetti ERLUG TLug-TSL - Tigullio Ligure
Non disponibile
e appuntamenti. http://erlug.linux.it
TeLUG - Teramo http://tlug.linux.it/
Se hai qualcosa
Ferrara LUG
da segnalarci www.telug.it
www.ferrara.linux.it LOMBARDIA
scrivi a User Group Valle Roveto
ecodeilug@ FoLUG - Forlì BGLug - Bergamo e provincia
http://linuxvalley-os4.blogspot.com/
linuxpro.it http://folug.linux.it www.bglug.it
BASILICATA ImoLUG - Imola BGLug Valle Seriana - Valle Seriana
Basilicata LUG - Potenza e Matera www.imolug.org http://bglugvs.web3king.com/
www.baslug.org PANLUG - Vignola BrigX - Monza e Brianza
PLUG Non disponibile http://brigx.it
www.pignolalug.it PLUG - Parma GL-Como - Como
http://parma.linux.it www.gl-como.it
CALABRIA RELug - Reggio Emilia e provincia GLUX - Lecco e provincia
http://relug.linux.it
Bit01 www.lecco.linux.it
RiminiLug
www.associazionebit01.it GULLP - Gruppo Utenti Linux
www.riminilug.it Lonate Pozzolo
Bogomips - Bisignano
S.P.R.I.Te www.gullp.it
www.blug.it
http://sprite.csr.unibo.it HackLabCormano
CSLUG - Cosenza
UIELinux - Valle del Rubicone http://hacklabcormano.it
http://cslug.linux.it
www.uielinux.org LIFO - Varese
CzLug
Non disponibile www.lifolab.org
FRIULI VENEZIA GIULIA
HackLab Catanzaro LIFOS - Cinisello Balsamo
GOLUG - Gorizia
http://hacklab.cz www.lifos.org
www.golug.it
HackLab Cosenza Linux Var - Varese
LUG Pordenone
https://hlcs.it www.linuxvar.it
www.pnlug.it
Piana LUG - Piana di Gioia Tauro Lug8 - Gottolengo e Bassa Bresciana
LugTrieste
Non disponibile http://lugotto.linux.it
http://trieste.linux.it
SpixLug - Spezzano Albanese LugBS - Brescia e provincia
Non disponibile LAZIO http://lugbs.linux.it/
Verdebinario GioveLUG - Terracina Lug Castegnato - Castegnato
www.verdebinario.org www.giovelug.org www.kenparker.eu/LugCastegnato
Latina LUG LUG Legnano
CAMPANIA www.llg.it https://luglegnano.wordpress.com
GLUS LUG Privernum Volsca - Priverno (LT) LugMan - Mantova e provincia
www.liberarete.it/glus Non disponibile www.lugman.org

78 LINUX PRO 220


L’eco dei LUG

LugOB - Cologne e ovest bresciano PLUGS - Sassari L.U.G.A.R - Arezzo


www.lugob.org Non disponibile Non disponibile
Lugotto - Gottolengo (BS) PtLug - Pistoia e provincia
http://lugotto.linux.it SICILIA www.ptlug.org
POuL - Milano cLUG - Caltanissetta SLUG - Siena e provincia
www.poul.org Non disponibile www.siena.linux.it

TiLug - Pavia FreakNet MediaLab - Catania


TRENTINO ALTO ADIGE
http://pavia.linux.it www.freaknet.org
LinuxTrent - Trento
VIMELUG - Linux User Group Vimercate Free Circle
http://linuxtrent.it
http://vimelug.org www.thefreecircle.org
LugBz - Bolzano
Leonforte LUG www.lugbz.org
MARCHE
http://leonforte.linux.it
CMlug
LUG Catania UMBRIA
Non disponibile
www.catania.linux.it OrvietoLUG
FanoLUG
LUGSR - Siracusa www.orvietolug.it
www.fanolug.org
www.siracusa.linux.it LUG Perugia
GLM - Macerata www.perugiagnulug.org
MELUG - Messina
Non disponibile
Non disponibile
PDP Free Software VALLE D’AOSTA
Norp LUG - Noto, Pachino, Rosolini
https://pdp.linux.it SLAG - Aosta
Non disponibile
Non disponibile
MOLISE Poetry FreakNe
FrenterLUG - Larino http://poetry.freaknet.org VENETO
Non disponibile VPLUG Linux Planet - 0421ug - Provincia di Venezia
Provincia Caltanisetta www.0421ug.org
PIEMONTE
www.vplug.it BLUG - Belluno
BiLUG - Provincia di Biella
SputniX - Palermo http://belluno.linux.it
http://www.bilug.it GrappaLUG - Bassano del Grappa
www.sputnix.it
Gallug - Galliate https://grappalug.org/
www.gallug.it LegnagoLUG
TOSCANA
GLugTo Non disponibile
ACROS - Area di Versilia, Lucca,
www.glugto.org Linux Ludus - Villafranca (VR)
Massa Carrara
IvLug - Ivrea Linux User Group www.linuxludus.it
www.lug-acros.org
www.ivlug.it LugAnegA
Elbalinux
Linox Novara www.luganega.org
Non disponibile MontelLUG - Montebelluna
www.linoxnovara.org
ElsaGLUG - Val d’Elsa www.montellug.it
www.elsaglug.org FSUG Padova
PUGLIA
FLUG - Firenze www.fsugpadova.org
BriLUG - Brindisi
www.firenze.linux.it TVLUG - Treviso
Non disponibile
GOLEM - Empoli, Valdelsa www.tvlug.it
MurgiaLug - Santeramo in Colle
VELug - Venezia
Non disponibile http://golem.linux.it
www.velug.it
ManfredoniaLug - Manfredonia G.U.L.LI - Livorno
AViLUG Schio
https://www.manfredonialug.it www.livorno.linux.it
Non disponibile
SaLUG! - Salento GULP Pisa
Linux User Group Vicenza - LugVicenza
http://salug.it www.gulp.linux.it https://lugvi.it/
GuruAtWork - Grosseto e provincia
SARDEGNA www.guruatwork.com NAZIONALI
GNUraghe - Oristano Lucca LUG Gentoo Channel Italia
www.gnuraghe.org http://luccalug.it www.gechi.it

LINUX PRO 220 79


In edicola il 15 dei mesi pari

NEL PROSSIMO NUMERO Hai un argomento da proporci?


Scrivi a redazione@linuxpro.it

Browser
blindato
Lasciate meno tracce possibile usando Mullvad come
programma di navigazione: free, Open e sicuro!

Il prezzo dell’abbonamento è calcolato in modo etico perché sia un si dichiara pienamente disponibile a valutare – e se del caso regolare – le eventuali spettanze di
servizio utile e non in concorrenza sleale con la distribuzione in edicola. 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 GDPR Reg. UE 679/2016 e del
Arretrati: si acquistano on-line su www.sprea.it/arretrati Codice Privacy d.lgs. 196/03 cosi come modificato dalle disposizioni di adeguamento alla Legge Ita-
abbonamenti@sprea.it Tel 02 87168197 (lun-ven / 9:00-13:00 e 14:00-18:00) liana D.Lgs 101/2018. Nel vigore del GDPR Reg. UE 679/2016 e del Codice Privacy d.lgs. 196/03 cosi
329 3922420 come modificato dalle disposizioni di adeguamento alla Legge Italiana D.Lgs 101/2018. artt. 24 e
25, è Sprea S.p.A. (di seguito anche “Sprea”), con sede legale in Via Torino, 51 Cernusco sul Naviglio
(MI). Sprea S.p.a. tratta i dati identificativi e particolari eventualmente raccolti nell’esercizio della
Bimestrale - prezzo di copertina 7,90 € FOREIGN RIGHTS prestazione contrattuale. La stessa La informa che i Suoi dati eventualmente da Lei trasmessi alla
Sprea S.p.a., verranno raccolti, trattati e conservati nel rispetto del decreto legislativo ora enunciato
www.linuxpro.it- redazione@linuxpro.it Paolo Cionti: Tel. 02 92432253 - paolocionti@sprea.it e nel pieno rispetto dell’art. 32 GDPR Reg. UE 679/2016 per le finalità di trattamento previste per
La Divisione Informatica di Sprea edita anche: adempiere agli obblighi precontrattuali, contrattuali e fiscali derivanti da rapporti con Lei in essere,
WIN MAGAZINE - UBUNTU FACILE SERVIZI CENTRALIZZATI per le finalità amministrative e di contabilità, (con base giuridica contrattuale), per le finalità deri-
vanti da obblighi di legge ed esercizio di difesa in giudizio, nonché per le finalità di promozione e
APP JOURNAL - HACKER JOURNAL Art director: Silvia Taietti informazione commerciale la cui unica base giuridica è basata sul consenso libero e incondizionato
Grafici: Alessandro Bisquola, Nicole Bombelli, Tamara Bombelli, Nicolò Digiuni, dell’interessato, nonché per le altre finalità previste dalla privacy policy consultabile sul sito www.
Business Unit Manager: Massimiliano Zagaglia sprea.it, connesse all’azienda.
Marcella Gavinelli, Luca Patrian Si informa che, tenuto conto delle finalità del trattamento come sopra illustrate, il conferimento
Coordinamento: Chiara Civilla, Tiziana Rosato, Roberta Tempesta, Silvia Vitali dei dati necessari alle finalità è libero ma il loro mancato, parziale o inesatto conferimento potrà
Cover: Luca Patrian Amministrazione: Erika Colombo (responsabile), Silvia Biolcati, Irene Citino, avere, come conseguenza, l’impossibilità di svolgere l’attività e gli adempimenti precontrattuali e
contrattuali come previsti dal contratto di vendita e /o fornitura di prodotti e servizi.
Realizzazione editoriale a cura di: Dehive Sas di Andrea Orchesi Desirée Conti, Sara Palestra- amministrazione@sprea.it La avvisiamo, inoltre, che i Suoi dati potranno essere comunicati e/o trattati (sempre nel rispetto
Ufficio Legale: Francesca Sigismondi della legge), anche all’estero, da società e/o persone che prestano servizi in favore della Sprea che
sono state nominate responsabili del trattamento ai sensi dell’art- 28 GDPR Reg. UE 679/2016. Si
Sprea S.p.A. specifica che non sono effettuati trasferimenti dei dati al di fuori dell’Unione Europea. Si specifica
Sede Legale: Via Torino, 51 20063 Cernusco Sul Naviglio (Mi) - Italia Linux Pro, pubblicazione registrata al Tribunale di Milano il 08.02.2003 che Sprea S.p.a non effettua trattamento automatizzato di informazione e dati che produca effetti
PI 12770820152- Iscrizione camera Commercio 00746350149 con il numero 74. ISSN: 1722-6163 giuridici che Lal riguardano o che incida in modo analogo significativamente sulla Sua persona.
In ogni momento Lei potrà chiedere la l’accesso ai sui dati, la rettifica dei suoi dati, la cancellazione
Per informazioni, potete contattarci allo 02 87168197 Autorizzazione ROC n° 6282 del 29/08/2001 dei suoi dati, la limitazione al trattamento e la portabilità dei suoi dati, nonché poi esercitare la
facoltà di opposizione al trattamento dei Suoi dati ovvero esercitare tutti i diritti previsti dagli artt.
Direttore responsabile: Luca Sprea 15, 16, 17, 18, 20, 21 del GDPR Reg. UE 679/2016 e ss. Modifiche di adeguamento legislativo del
CDA: Luca Sprea (Presidente), Alessandro Agnoli (Amministratore Delegato), D.Lgs. 196/03, così come modificato dal D.Lgs 101/2018, mediante comunicazione scritta alla Sprea
Giulia Spreafico (Divisione digital), Stefano Pernarella e/o direttamente al personale Incaricato preposto al trattamento dei dati.
Distributore per l’Italia: Press-Di Distribuzione stampa e multimedia s.r.l. 20090 Segrate Lei potrà altresì esercitare i propri diritti rivolgendosi al Garante della Privacy, con Sede in Piazza
Venezia n. 11 – 00187 Roma, Centralino telefonico: (+39) 06.696771,Fax: (+39) 06.69677.3785.
ADVERTISING, SPECIAL PROJECTS & EVENTS Distributore per l’Estero: SO.DI.P S.p.A. Via Bettola, 18 - 20092 Cinisello Balsamo (MI)
Per informazioni di carattere generale è possibile inviare una e-mail a: garante@gpdp.it @pec.it.
Segreteria: Emanuela Mapelli - Tel. 02 92432244 - emanuelamapelli@sprea.it Sprea S.p.a. La informa che Lei ha il diritto, ai sensi dell’art. 7 GDPR Reg. UE 679/2016 di revocare il
Tel. +390266030400 - Fax +390266030269 - sies@sodip.it - www.sodip.it consenso al trattamento dei suoi dati in qualsiasi momento.
La lettura della presente informativa deve intendersi quale presa visione dell’Informativa ex art. 13
SERVIZIO QUALITÀ EDICOLANTI E DL D.Lgs. 196/03 e 13 GDPR Reg. UE 679/2016e l’invio dei Suoi dati personali alla Sprea varrà quale
Stampa: Arti Grafiche Boccia S.p.A. Via Tiberio Claudio Felice, 7- 84131 Salerno consenso espresso al trattamento dei dati personali secondo quanto sopra specificato.
Sonia Lancellotti, Luca Majocchi : Tel. 02 92432295 L’invio di materiale (testi, fotografie, disegni, etc.) alla Sprea S.p.A. deve intendersi quale espressa
distribuzione@sprea.it 351 5582739 Copyright: Sprea S.p.A. autorizzazione alla loro libera utilizzazione da parte di Sprea S.p.A. Per qualsiasi fine e a titolo gra-
tuito, e comunque, a titolo di esempio, alla pubblicazione gratuita su qualsiasi supporto cartaceo
ABBONAMENTI E ARRETRATI Informativa su diritti e privacy
e non, su qualsiasi pubblicazione (anche non della Sprea S.p.A.), in qualsiasi canale di vendita e
Paese del mondo.
Abbonamenti: si sottoscrivono on-line su www.sprea.it/linuxpro La Sprea S.p.A. è titolare esclusiva della testata Linux Pro e di tutti i diritti di pubblicazione e diffusio-
abbonamenti@sprea.it Tel 02 87168197 (lun-ven / 9:00-13:00 e 14:00-18:00) ne in Italia. L’utilizzo da parte di terzi di testi, fotografie e disegni, anche parziale, è vietato. L’Editore Il materiale inviato alla redazione non potrà essere restituito.

colophon linux NO DIRITTI.indd 1 19/07/23 16:41


SPECIALE

IN EDICOLA
DAL 10 AGOSTO

UN VOLUME DA COLLEZIONE DEDICATO


A UNO DEI PERSONAGGI PIÙ ICONICI
DELLA STORIA DEI VIDEOGIOCHI
Scansiona il QR Code

Acquistala su www.sprea.it/supermario
versione digitale disponibile dal 7 agosto
Salerno che guarda il mare, sognando il futuro e determinandone
una città che accoglie, una cultura le condizioni ogni giorno.
che include. Perché il futuro si immagina e si costruisce
In questa Nostra Città nasciamo noi, nel presente.
60 anni fa, con una identità forte per aprirci Vogliamo condividere i nostri primi 60 anni
e non per chiuderci. a Salerno, orgogliosi della nostra storia,
Guardando il mare, con i nostri occhi,
della nostra tradizione e con il gusto
abbiamo costruito grazie a tutte le nostre
della sfida del futuro.
Persone un sogno, un’idea, un’Azienda,
una Comunità che vede la Fabbrica Quel futuro che è dentro di noi
a colori, fatta di Persone, Progetti, Idee e e che vedremo solo domani,
azioni, in una posizione geografica e che farà di noi un’Azienda dinamica,
che la rende centrale tra Europa aperta ed inclusiva, con una serie
e Mediterraneo. di progetti per celebrare e condividere
Nella nostra città, guardando al Mondo, i nostri primi 60 anni.

www.artigraficheboccia.com

tel: +39089303311
info@artigraficheboccia.com*

Potrebbero piacerti anche