Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Linux Pro N.222 - Dicembre 2023 - Gennaio 2024
Linux Pro N.222 - Dicembre 2023 - Gennaio 2024
NEL
WEB
DVD le istruzioni
istruzion
zion
a pagina 4
Fedora 39 Workstation
onii
Clonezilla 3.1.1-27
FreeBSD13.2
Garuda Linux
PipeWalker
Ferdium 6.6.0
Furnace 0.6
NUOVO!ICARE
R
2 DVD DA SCOADICE Pagine Web ricche senza codice
CON IL C IN Ecco i plug-in Open più potenti per JavaScript
ALL’INTERNO ER TE
ES CLUS IVA P con cui fornire siti completi di ogni funzionalità
senza neanche dover saper programmare
IN EDICOLA
DAL
DAL 10 AGOSTO
Acquistala su www.sprea.it/giochi80
disponibile anche in versione digitale
LA TU ENDI T
Touché
2.0.1
FeedDeck 0
1.1.0
e molto
altro...
A APP
Da non perdere su questo numero...
Fai soldi con i regalia
noi il co mo
un tuo pro
E
getto parten
DI, SEGRAT
Personaliz
za l’app per per creare un itin ogle
gestire pag erario per
amenti rico i viaggi
1, S/NA -
rrenti sull
a carta di
08 Cover Story
ART. 1, COMMA
credito
Ecco la
004 N. 46)
nuova
8,4 di Fedora, versione
DI SIS GB
IN L. 27/02/2
la
OPER TEMI per tutti distro
E APAT IV
P! I
i gusti
03 (CONV.
La teleca
ecam
me
SPA - ABB.
SISTEMA era
ra conn ilil
DI SICU REZ
b acc
br
bra
ac ccc
cci
ccio
ciiioo
ci una sent ZA DAV VER
Costruis
ITALIANE
O
NUOVO! in remoto inella in grado SMART
oggetti
con Ardu
CON IL CODIC ARE ino o Ras
perry Pi
re
ALL’INTERNO E
ESCLUSIVA PERIN Pagine
TARIFFA
TE
Web ricch
ehouse
dei pacchet le
ti è semla gestione
plicissim
a
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
Sommario LINUX
LINUX PRO 222
PRO
Benvenuti nel duecentoventiduesimo numero di Linux Pro, la guida definitiva a Linux e al mondo Open Source
Cover story
ABBONATI ALLA
VERSIONE DIGITALE
E
SOLO PER PC E MAC
A SOLI 16,90 €
DURATA ABBONAMENTO 1 ANNO
∆ Firefox
2.13
Salix Xfce
21 14.0.1
Come creare una Web
app per programmare al minuto di un veterano ∆ GIOCHI 1.3.4d
∆ ProFTPD
DVD
principali è molto utile a chiunque ∆Codice
∆ RIVISTAd’esempio
28 Il messaggio si cela lavori su siti in JavaScript Raspberry
∆ Ardour3 3.2 ∆ Avogadro
Sysadmin
d’esempio Android
∆ Codice tutorial Ruby
www.linuxpro.it/abbonamenti
WEB
DVD
D le istruzioni
ionni
a pagina 4
Fedora 39 Workstation
Clonezilla 3.1.1-27
FreeBSD13.2
Garuda Linux
PipeWalker
Ferdium 6.6.0 CSS Programmare
da pro
i fogli
stile per
il Web
Furnace 0.6
NEL
WEB
DVD
D le istruzioni
PRO
a pagina
in 4
Debian 12
Fatdog64
A COSTO
L’unica guida libera al mondo dell’Open Source FeedDeck 1.1.0
Virtualizza
tutto, dal
Scopri i trucchi desktop all’ambiente
ZERO
SEGRATE
il tuo
cloud!
1, COMMA
e molto altro...
N. 46) ART.
Debian 12
8,8 GB è perfetta
L. 27/02/2004
DI SISTEMI
per business
OPERATIVI professionisti!e
2
(CONV. IN
E APP!
- D.L. 353/2003
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!
Bimestrale open ai tumori
- N.220
- 7,90 €
tempo dall’Intelligenza
trovati per
rivoluzione Artificiale,
della medicina ecco
Sistema
Si
operativo grazie a Linuxla
P.I. 10-08-2023 Distribuzioni
Dis
Agosto-Settembre
I segreti delle immutabili Programmazione
si
sicure: distro 100%
Speciale
20/07/2023
02:56:37
Speciale
Sfrutta le API di Maps pagando solo centesimi a Google esecuzione, si crea una nuova istanza dell’OS con a dei medici richiederebbe risorse elevatissime e
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
Pubblica il tuo sistema per creare un itinerario per i viaggi garantisce uno stato pulito e coerente del sistema senza dedicare una buona fetta della una rete di sicurezza. Se qualcosa va storto o non
a ogni aggiornamento, riducendo al minimo il conversazione a VirtualBox. Il software si è soddisfatti delle modifiche, si può facilmente Collaborazione tra medici e tecnici
Personalizza l’app per gestire pagamenti ricorrenti sulla carta di credito rischio di conflitti o problemi di compatibilità.
libero e gratuito di emulazione di sistemi operativi tornare allo snapshot precedente, ripristinando
Per insegnare all’Intelligenza Artificiale di Google
a interpretare con precisione le scansioni della
Inoltre, se si verificano inconvenienti durante il 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
Ecco la nuova versione 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
di Fedora, la distro 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,4 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.
per tutti i gusti 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
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! L telecamera
La telecam
t l era conn il br
braccio
bracc
bbracci
brac
rac
raccio
acci
ccio
cc
ciioo
ci 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
un ampio database. È stato inserito oltre un milione
grado di prevedere i fattori di rischio cardiovascolare
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
SISTEMA DI SICUREZZA DAVVERO SMART 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
Costruisci una sentinella in grado di raccogliere 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
oggetti in remoto con Arduino o Rasperry Pi 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 virtuale, come l’installazione di aggiornamenti, di della macchina virtuale. Infine abbiamo la
E Pagine Web ricche senza codice applicazioni non affidabili senza compromettere librerie.
sviluppo e librerie e Toolbox consente di
nuovo software o la modifica delle configurazioni gestione a riga di comando. Sempre con
I MECCANISMI DI ATTENZIONE NEL DEEP LEARNING
2 DVD DA SCARICAR la sicurezza generale della macchina. Questo organizzare
organizza strumenti
re gli strr di sviluppo per progetto 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
Ecco i plug-in Open più potenti per JavaScript 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 con cui fornire siti completi di ogni funzionalità 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
senza neanche dover saper programmare 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.222 - 7,90 €
Hardware Programmi
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
Arriva la Raspberry Pi 5! Flatpak sempre più facile 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
Più velocità e potenza per Con Warehouse la gestione 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
la scheda più amata dai maker dei pacchetti è semplicissima 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. 07-12-2023 Dicembre-Gennaio
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_LXP222_cover.indd 1 13/11/2023 15:57:53
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
Newsdesk
Più prestazioni, velocità
e hardware col kernel 6.6
Il nuovo kernel Linux porta
una serie di novità interessanti
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
NDI
FeedDeck
1.1.0
LA TUA AP
e molto altro...
P
Fai soldi con
un tuo progett
Ti regalia
noi il cod mo
SEGRATE
Sfrutta le o partendo
API di Maps dalla code
base che ti ice!
PRESS-DI,
Pubblica il pagando solo diamo
tuo centesimi
Personalizza sistema per creare
1, S/NA - DISTRIBUTORE:
a Google
l’app per gestire un itinerar
pagamenti io per i viaggi
ricorrenti sulla
carta di credito
1, COMMA
N. 46) ART.
Ecco la nuova
8,4 GB di Fedora versione
L. 27/02/2004
DI SISTE , la distro
OPER MI per tutti
ATIVI i gusti
(CONV. IN
E APP!
- D.L. 353/2003
La teleca
POST.
SISTEMA
mera ccon
onn
SPA - ABB.
DI SICUREZZ il bracci
brac
bbr
bracc
raac
aacc
cci
ccio
ccc
ccio
ci
io
Costruisc A DAVVERO
i una sentinella SMART
ITALIANE
oggetti in
NUOVO! remoto con in grado
di raccoglie
2 DVD DA SCARICARE Arduino re
o Rasperry
R.O.C. - POSTE
CON IL CODICE Pi
ALL’INTERNO
ESCLUSIVA PERIN Pagine
TE Web
TARIFFA
Ecco i plug-in ricche senza
con cui fornire Open più potenti codice
per JavaScri
Bimestrale
- N.222
- 7,90 €
senza neanche siti completi di pt
dover saper ogni funzionalità
programmare
Hardwa
re
P.I. 07-12-2023
Arriva la Raspber
Dicembre-Genn Più velocità ry Pi
e potenza 5! Program
13/11/2023
15:57:53
Questo pezzo introduttivo è scritto dai ragazzi di Fively (https://5ly.co) che si occupano di sviluppo di app. Se siete in difficoltà e vi serve
un’app sviluppata con tutti i crismi, potete chiedere loro un preventivo!
teatrale. Sebbene possano rimanere nascosti, Inoltre, oltre ai livelli front-end e back-end
TIP i loro ruoli fondamentali assicurano che lo spettacolo dell’applicazione, gli sviluppatori utilizzano
si svolga senza intoppi e il loro contributo non deve vari strumenti per ospitare l’app nel cloud
Michael Kunze
essere sottovalutato. I componenti chiave dello stack e realizzare tutte le integrazioni necessarie,
ha coniato
l’acronimo LAMP back-end includono: testare l’applicazione per eliminare tutti i bug
in un articolo e gestire efficacemente il progetto software.
per una rivista Linguaggi di programmazione
tedesca di Costituiscono l’essenza delle operazioni logiche Come scegliere lo stack
informatica nel di siti Web e applicazioni, colmando il divario Avventurarsi nello sviluppo Web è come
1998. Lo usava tra l’interfaccia utente e il database. Esempi navigare in un labirinto dinamico, in cui ogni
per indicare lo significativi sono JavaScript, PHP e Python. svolta, in particolare la scelta dello stack
stack software tecnologico, influenza il successo del viaggio.
Linux-Apache-
Framework Scegliere il giusto stack tecnologico per lo
mSQL/MySQL-
Come pilastri portanti, i framework standardizzano sviluppo Web è come individuare gli strumenti
Perl/PHP.
L’articolo mirava e accelerano lo sviluppo di applicazioni basate su migliori per un artigiano: devono essere precisi,
a dimostrare che linguaggi di programmazione specifici. Quelli più affidabili e adatti al capolavoro immaginato.
un pacchetto famosi, come Laravel, Django e Ruby on Rails, Queste sono alcune delle considerazioni più
di software seguono spesso il modello architettonico importanti che dovete fare quando scegliete
libero poteva MVC (Model-View-Controller). lo stack ideale per voi...
rappresentare
una valida Server Web Costo della tecnologia
alternativa Sono i guardiani che orchestrano e gestiscono Le opzioni Open Source potrebbero non
a quelli
le richieste dei clienti. Tra i leader del settore comportare costi diretti, ma le tecnologie
commerciali.
ci sono Apache, Nginx e IIS di Microsoft. proprietarie sì. Al di là delle spese iniziali, bisogna
considerare fattori a lungo termine come
Database l’hosting, la manutenzione e l’imprevedibilità
Per l’archiviazione e il recupero dei dati, dei costi delle tecnologie emergenti.
le applicazioni si appoggiano a database SQL D’altra parte, immergersi nelle tecnologie
o NoSQL. I leader in questo campo sono emergenti comporta dei rischi. Questi strumenti,
MongoDB, PostgreSQL e MySQL. spesso ancora agli inizi o in fase di beta testing,
NDI
FeedDeck
1.1.0
LA TUA AP
e molto altro...
P
Fai soldi con
un tuo progett
Ti regalia
noi il cod mo
SEGRATEE
Sfrutta le o partendo
API di Maps dalla code
base che ti ice!
PRESS-DI,
Pubblica il pagando solo diamo
tuo centesimi
Personalizza sistema per creare
1, S/NA - DISTRIBUTORE:
a Google
l’app per gestire un itinerar
pagamenti io per i viaggi
ricorrenti sulla
carta di credito
1, COMMA
N. 46) ART.
Ecco la nuova
8,4 GB di Fedora versione
L. 27/02/2004
DI SISTE , la distro
OPER MI per tutti
ATIVI i gusti
(CONV. IN
E APP!
- D.L. 353/2003
La teleca
POST.
SISTEMA
mera ccon
onn
SPA - ABB.
DI SICUREZZ il bracci
brac
bbr
bracc
raac
aacc
cci
ccio
ccc
ccio
ci
io
Costruisc A DAVVERO
i una sentinella SMART
ITALIANE
oggetti in
NUOVO! remoto con in grado
di raccoglie
2 DVD DA SCARICARE Arduino re
o Rasperry
R.O.C. - POSTE
CON IL CODICE Pi
ALL’INTERNO
ESCLUSIVA PERIN Pagine
TE Web
TARIFFA
Ecco i plug-in ricche senza
con cui fornire Open più potenti codice
per JavaScri
Bimestrale
- N.222
- 7,90 €
senza neanche siti completi di pt
dover saper ogni funzionalità
programmare
Hardwa
re
P.I. 07-12-2023
Arriva la Raspber
Dicembre-Genn Più velocità ry Pi
aio
e potenza 5! Program
13/11/2023
15:57:53
NDI
FeedDeck
1.1.0
LA TUA AP
e molto altro...
P
Fai soldi con
un tuo progett
Ti regalia
noi il cod mo
SEGRATE
Sfrutta le o partendo
API di Maps dalla code
base che ti ice!
PRESS-DI,
Pubblica il pagando solo diamo
tuo centesimi
Personalizza sistema per creare
1, S/NA - DISTRIBUTORE:
a Google
l’app per gestire un itinerar
pagamenti io per i viaggi
ricorrenti sulla
carta di credito
1, COMMA
N. 46) ART.
Ecco la nuova
8,4 GB di Fedora versione
L. 27/02/2004
DI SISTE , la distro
OPER MI per tutti
ATIVI i gusti
(CONV. IN
E APP!
- D.L. 353/2003
La teleca
POST.
SISTEMA
mera ccon
onn
SPA - ABB.
DI SICUREZZ il bracci
brac
bbr
bracc
raac
aacc
cci
ccio
ccc
ccio
ci
io
Costruisc A DAVVERO
i una sentinella SMART
ITALIANE
oggetti in
NUOVO! remoto con in grado
di raccoglie
2 DVD DA SCARICARE Arduino re
o Rasperry
R.O.C. - POSTE
CON IL CODICE Pi
ALL’INTERNO
ESCLUSIVA PERIN Pagine
TE Web
TARIFFA
Ecco i plug-in ricche senza
con cui fornire Open più potenti codice
per JavaScri
Bimestrale
- N.222
- 7,90 €
senza neanche siti completi di pt
dover saper ogni funzionalità
programmare
Hardwa
re
P.I. 07-12-2023
Arriva la Raspber
Dicembre-Genn Più velocità ry Pi
aio
la scheda e potenza 5! Program
13/11/2023
15:57:53
Se volete fare un passo avanti nella vostra crescita professionale, senza però tuffarvi in SDK specifici per il mondo
mobile, potreste provare React Native (https://reactnative.dev/ ). Permette di sviluppare in modo sufficientemente
intuitivo e di pubblicare per qualsiasi piattaforma, usando anche le funzioni native dei dispositivi
NDI
FeedDeck
1.1.0
LA TUA AP
e molto altro...
P
Fai soldi con
un tuo progett
Ti regalia
noi il cod mo
SEGRATEE
Sfrutta le o partendo
API di Maps dalla code
base che ti ice!
PRESS-DI,
Pubblica il pagando solo diamo
tuo centesimi
Personalizza sistema per creare
1, S/NA - DISTRIBUTORE:
a Google
l’app per gestire un itinerar
pagamenti io per i viaggi
ricorrenti sulla
carta di credito
1, COMMA
N. 46) ART.
Ecco la nuova
8,4 GB di Fedora versione
L. 27/02/2004
DI SISTE , la distro
OPER MI per tutti
ATIVI i gusti
(CONV. IN
E APP!
- D.L. 353/2003
La teleca
POST.
SISTEMA
mera ccon
onn
SPA - ABB.
DI SICUREZZ il bracci
brac
bbr
bracc
raac
aacc
cci
ccio
ccc
ccio
ci
io
Costruisc A DAVVERO
i una sentinella SMART
ITALIANE
oggetti in
NUOVO! remoto con in grado
di raccoglie
2 DVD DA SCARICARE Arduino re
o Rasperry
R.O.C. - POSTE
CON IL CODICE Pi
ALL’INTERNO
ESCLUSIVA PERIN Pagine
TE Web
TARIFFA
Ecco i plug-in ricche senza
con cui fornire Open più potenti codice
per JavaScri
Bimestrale
- N.222
- 7,90 €
senza neanche siti completi di pt
dover saper ogni funzionalità
programmare
Hardwa
re
P.I. 07-12-2023
Arriva la Raspber
Dicembre-Genn Più velocità ry Pi
e potenza 5! Program
13/11/2023
15:57:53
a prima cosa a cui pensare, quando si vuole deve gestire la richiesta. Questo processo è noto
L costruire un’applicazione Web robusta
e scalabile, è che è fondamentale disporre
come “instradamento” (routing) e consiste
nell’associare un modello di URL a una funzione
di un solido framework. Fornisce infatti un approccio o azione specifica dell’applicazione. Le route sono
strutturato e organizzato allo sviluppo, rendendo tipicamente costituite dai seguenti componenti:
più facile la gestione del codice e delle richieste, Metodo HTTP (GET, POST, PUT, DELETE, ecc.)
oltre all’accesso ai dati dai database. Qui useremo Definisce il tipo di azione che il client vuole eseguire.
PHP 8.2 come linguaggio, Slim 4 come framework Per esempio, una richiesta GET recupera dati,
per fornire i dati e MySQL per il lato database. mentre una richiesta POST li invia.
PHP 8.2 rimane un linguaggio di scripting lato Modello di URL
server ampiamente adottato, noto per la sua Specifica il percorso dell’URL, spesso con
versatilità, le sue prestazioni e i suoi continui segnaposto per percorsi dinamici. Per esempio,
miglioramenti. Del resto, se va bene per Facebook, /prodotti/:id potrebbe rappresentare un percorso
Wikipedia, Mailchimp, ecc. va bene anche per per visualizzare un prodotto specifico, dove :id è un
le vostre Web app! Grazie alle ultime caratteristiche segnaposto per l’identificatore univoco del prodotto.
e ai miglioramenti di PHP 8.2, gli sviluppatori Gestore/Controllore
possono scrivere codice più pulito ed efficiente. La funzione o il codice che viene eseguito quando la
Supporta un’ampia gamma di applicazioni e route viene abbinata. Elabora la richiesta, interagisce
framework, il che lo rende un’ottima scelta per lo con la logica dell’applicazione e restituisce una
sviluppo. Slim 4 è un framework leggero ma potente: risposta appropriata. Per esempio, in Slim, una
consente di creare rapidamente applicazioni Web definizione di route potrebbe essere simile a questa:
efficienti offrendo funzionalità essenziali come $app->get('/prodotti/:id', function ($request, $response,
il routing, il supporto per il middleware, l’iniezione $args) {
di dipendenze e la gestione degli errori. // Recupera informazioni sul prodotto in base all'ID
La sua semplicità e flessibilità lo rendono una scelta $productId = $args['id'];
eccellente per la creazione di API e applicazioni Web // Elabora la richiesta e genera una risposta
di piccole e medie dimensioni. MySQL è ovviamente // ...
un popolare sistema di gestione di database // Restituisce la risposta
relazionali noto per la sua affidabilità, le sue return $response->withJson(['prodotto' =>
prestazioni e la sua facilità d’uso. Offre solide $productData]);
capacità di archiviazione e recupero dei dati, });
che lo rendono adatto a vari tipi di applicazioni Web. In questo esempio, una richiesta GET a un URL
come /prodotti/123 attiverebbe questa route.
Flessibilità per i vostri percorsi Il segmento :id viene catturato e passato come
Il motivo numero uno per scegliere un framework argomento alla funzione handler, consentendo
come Slim è la comodità nella gestione dei percorsi, all’applicazione di recuperare le informazioni
o route. Nel contesto dello sviluppo Web, le route sul prodotto con l’ID 123 e di generare
si riferiscono ai percorsi o agli URL specificati una risposta appropriata.
all’interno di un’applicazione Web che corrispondono
a determinate azioni o operazioni. Definiscono Ordine e organizzazione nel filesystem
il modo in cui l’applicazione risponde alle diverse Con PHP 8.2 e Slim 4 potete organizzare le librerie
richieste HTTP effettuate dai client, come i browser in modo efficiente. Slim 4 segue i moderni standard
Web o le applicazioni mobili. Quando un client invia PHP, consentendo agli sviluppatori di utilizzare
una richiesta a un particolare URL (per esempio, Composer per la gestione delle dipendenze.
https://esempio.it/prodotti), il router Le librerie possono essere archiviate e gestite
dell’applicazione determina quale codice (controller) con questo strumento, garantendo un corretto
NDI
FeedDeck
1.1.0
LA TUA AP
e molto altro...
P
Fai soldi con
un tuo progett
Ti regalia
noi il cod mo
SEGRATEE
Sfrutta le o partendo
API di Maps dalla code
base che ti ice!
PRESS-DI,
Pubblica il pagando solo diamo
tuo centesimi
Personalizza sistema per creare
1, S/NA - DISTRIBUTORE:
a Google
l’app per gestire un itinerar
pagamenti io per i viaggi
ricorrenti sulla
carta di credito
1, COMMA
N. 46) ART.
Ecco la nuova
8,4 GB di Fedora versione
L. 27/02/2004
DI SISTE , la distro
OPER MI per tutti
ATIVI i gusti
(CONV. IN
E APP!
- D.L. 353/2003
La teleca
POST.
SISTEMA
mera ccon
onn
SPA - ABB.
DI SICUREZZ il bracci
brac
bbr
bracc
raac
aacc
cci
ccio
ccc
ccio
ci
io
Costruisc A DAVVERO
i una sentinella SMART
ITALIANE
oggetti in
NUOVO! remoto con in grado
di raccoglie
2 DVD DA SCARICARE Arduino re
o Rasperry
R.O.C. - POSTE
CON IL CODICE Pi
ALL’INTERNO
ESCLUSIVA PERIN Pagine
TE Web
TARIFFA
Ecco i plug-in ricche senza
con cui fornire Open più potenti codice
per JavaScri
Bimestrale
- N.222
- 7,90 €
senza neanche siti completi di pt
dover saper ogni funzionalità
programmare
Hardwa
re
P.I. 07-12-2023
Arriva la Raspber
Dicembre-Genn Più velocità ry Pi
aio
e potenza 5! Program
$app = AppFactory::create();
COP_001_LXP più amata per Flatpak sempre
222_cover.indd dai maker
1 Con Warehous più facile
dei pacchetti e la gestione
è semplicis
sima
13/11/2023
15:57:53
Sistema di traduzione
semplice con Node.js
Per offrire la vostra app al mondo dovete tradurla. Ecco come usare testi
in tutte le lingue se scegliete di sfruttare questo framework
crivere codice in inglese è fondamentale, npm install i18n
TIP S lo spieghiamo nel dettaglio nell’articolo
sulla vostra prima app, quella degli
Quindi, configurate i18n nella propria applicazione
e usatelo nelle vostre route:
“Io però ho già
itinerari. Naturalmente però questo non vuol i18n.configure({
la mia app, per
tradurla devo dire che dobbiamo creare app solo in inglese. locales: ['en', 'it'],
rivedere tutti Dato che la maggior parte delle app che vi defaultLocale: 'en',
i template”, mostreremo è in Node.js, qui vedremo come directory: __dirname + '/locales',
potreste l’implementazione di un sistema di localizzazione });
pensare. E noi per una Web app con JavaScript lato client
vi insegniamo e con questo framework lato server sia app.use(i18n.init);
un trucco: veramente semplice utilizzando i template EJS. app.set('view engine', 'ejs');
date in pasto La localizzazione consente di fornire contenuti
il codice dei
in più lingue in base alle preferenze dell’utente app.get('/', (req, res) => {
vostri template
senza dover cambiare una riga di codice. res.render('index', { i18n: res });
a una IA come
ChatGPT Anzitutto assicuratevi di avere un progetto Node. });
o Claude e js impostato con Express.js e EJS come motore A questo punto non vi serve altro che creare
chiedete loro di visualizzazione. Create quindi la struttura: template EJS che visualizzino contenuti
di trovare mkdir localization-app localizzati. Nei modelli EJS, utilizzate i18n.__()
tutti i testi che cd localization-app per tradurre il testo in base alla lingua preferita
secondo loro npm init dall’utente:
sono da tradurre npm install express ejs <h1><%= i18n.__('name') %></h1>
e non di codice Create poi una cartella per memorizzare i file <p><%= i18n.__('description') %></p>
e di fornirvi
di localizzazione. Al suo interno, si creeranno file
un JSON con
le traduzioni
JSON per ogni lingua supportata. Per esempio, Anche in PHP
e l’HTML con i create una cartella locales e aggiungete file JSON Potete fare una cosa analoga in PHP quando usate
tag già inseriti. come en.json e it.json per l’inglese e l’italiano: Slim e Twig. Installate anzitutto il pacchetto:
I risultati non /locales composer symfony/translation
sono sempre |--- en.json Create quindi una cartella per memorizzare i file di
perfetti ma |--- it.json traduzione. Per esempio, si può avere en_US.yaml
con qualche Ricordate che dovete aggiungere tutte le lingue, e it_IT.yaml per le traduzioni in inglese americano e
correzione vi inclusa quella di base che volete usare. Create italiano, rispettivamente. Create quindi il traduttore:
ritroverete quindi i file JSON di traduzione, di cui qui potete $container['translator'] = function ($container) {
con un lavoro
vedere un esempio: $translator = new Translator('en_US');
ottimale in
{ $translator->addLoader('yaml', new YamlFileLoader());
pochissimo
tempo! "name": "Nome", $translator->addResource('yaml', __DIR__ . '/
"description": "Descrizione." translations/en_US.yaml', 'en_US');
} return $translator;
Ogni file quindi deve includere per ogni termine };
usato nell’app un identificativo (per esempio E poi nel vostro template Twig:
“name”) e il testo per la lingua relativa (nel caso <h1>{{ description }}</h1>
dell’italiano, “nome”). Questo è un esempio di base ma è possibile
ampliarlo aggiungendo altre lingue, gestendo
Installare le librerie contenuti dinamici e implementando funzioni
Installate ora il pacchetto i18n, che serve a gestire come il rilevamento della lingua o la possibilità
l’internazionalizzazione e la localizzazione in Node.js. per gli utenti di modificare le proprie preferenze. LXP
Fatdog64 antiX 23
pfSense 2.7.0 Devuan GNU+Linux 5.0.0
Q4OS 5.2 Converseen 0.10.0.1
Peppermint OS 2023-07-01 AAAAXY
Tails 5.15.1 PlayOnLinux 4.3.4
Sniffnet Rare 1.10.3
NUOVO! NUOVO!
VERSIONE 2 DVD DA SCARICE
ARE
CON IL CODICIN
ALL’INTERNO TE
L’Open Source salva le vite!
L’O
L’Ope
Dagli strumenti open ai tumori trovati per
2 DVD DA SCARICE
ARE
CON IL CODICIN
ALL’INTERNO TE
Lavora da professionista con Git
Ecco come non sbagliare più nulla coi comandi giusti!
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
Pianificare gli
itinerari al meglio
Ecco come creare una Web app che permette agli utenti di programmare al minuto
tutti gli spostamenti sfruttando l'API di Google senza spendere un capitale
iccome anche le migliori app di viaggi, - Sistema di registrazione e gestione utenti;
S come Wonderlog, non offrono
un sistema di calcolo dei tempi
- Selezione del tipo di mezzo di locomozione
per ogni tappa (al momento ci si muove a piedi);
di un itinerario preciso, possiamo valutare - Eliminazione di una tappa.
di proporre la nostra! Abbiamo quindi creato L'app usa un front-end in HTML con JavaScript
per voi un'app con queste caratteristiche: e PHP lato server. Non usa database, come
- Possibilità di indicare l'ora di inizio del viaggio; vedrete spiegato in seguito. Cominciamo quindi
- Aggiunta di tappe con dati geografici presi col codice HTML del modulo che userete come
automaticamente tramite Google Places API; contenitore delle tappe:
- Possibilità di aggiungere una permanenza <div id="form-container">
per ogni tappa; <form id="trip-form" class="mb-10">
- Possibilità di spostare le tappe una volta create; <div class="row mb-6">
- Accessibilità degli itinerari salvati da qualsiasi <label class="col-lg-4 col-form-label
dispositivo; required fw-semibold fs-6">Orario di inizio</label>
- Visualizzazione di tempi e chilometraggio. <div class="col-lg-8">
Quello che invece non fa e che potete, o dovete, <div class="row">
aggiungere voi è: <div class="col-lg-4 fv-row
const baseItem = {
origin: origin ? origin : null,
destination: destination ? destination : null,
full_address: full_address ? full_address : null,
distance: {
time: 0,
space: 0,
meters: 0
},
delay: delay ? delay : 0
};
return baseItem;
}
Questa funzione crea una tappa: attenzione alla
filosofia corretta! Per l'utente, infatti, una tappa
è il campo in cui scrive l'indirizzo di arrivo L'intero itinerario è conservato in formato JSON. Ogni elemento del pacchetto contiene origine,
destinazione, indirizzo completo, permanenza e dati sulla distanza
mentre a noi serve un oggetto che contenga
origine (che nel caso della prima tappa è nulla)
e destinazione, oltre all'indirizzo testuale getGeolocationFromCache(step.destination);
completo da visualizzare, alla permanenza
e ai dati geospaziali, che aggiungeremo fra poco. if (!originGeolocation) {
Ora che sapete cosa fa prepStep , possiamo // Fetch geolocation for origin if not in cache
tornare a prepSteps , cioè la funzione che const fetchDeferred = fetchGeolocation(step.
si occupa di preparare tutte le tappe per destination)
la visualizzazione. Dopo aver predisposto .then(data => { TIP
le singole tappe, ecco cosa fa:
JSON è facile
const geolocationUpdated = await $. if (data.status === 'OK' && data.
da leggere e da
when(updateGeolocationCache()); candidates.length > 0) {
scrivere, il che lo
const distanceDataUpdated = await $. rende un formato
when(updateDistanceData()); const candidates = data.candidates; pratico da
Questa è la seconda parte dello script ed usare per i file di
è la più delicata. Quindi facciamo due cose: const coords = candidates[0]. configurazione e
- Ci assicuriamo di avere tutti i dati geometry.location; lo scambio di dati.
di geolocalizzazione di tutte le tappe; const address = candidates[0]. Supporta dati
- Calcoliamo le distanze fra le tappe. formatted_address; strutturati
Vediamo ora la parte di geolocalizzazione. const name = candidates[0].name; con oggetti e
array annidati,
steps[stepNumber].destination =
consentendo di
Usare Google Places per le distanze name;
creare gerarchie
Ci occupiamo della logica per risparmiare soldi steps[stepNumber].full_address = di dati complesse.
usando Google Places e di perché usiamo questo address; Infine è
servizio nel box relativo, qui invece vedremo passo indipendente
a passo come funziona il sistema: saveGeolocationToCache(name, dal linguaggio: è
function updateGeolocationCache() { coords, address); supportato dalla
const stepNumbers = Object.keys(steps); console.log("Writing actual location maggior parte
const totalSteps = stepNumbers.length; name to input with ID"); dei linguaggi di
let fetchedCount = 0; console.log(`step${stepNumber}- programmazione,
consentendo uno
const deferreds = []; address`);
scambio di dati
document.
senza soluzione
for (const stepNumber of stepNumbers) { getElementById(`step${stepNumber}-address`).value = di continuità
const step = steps[stepNumber]; name; tra piattaforme
if (step.destination) { diverse.
const originGeolocation = }
Le singole tappe
devono essere
eleganti e facili
da leggere ma con
tutte le informazioni
necessarie per
il viaggiatore!
La logica impiegata risulta simile a quella un numero negativo significa che sta usando
dei dati di geolocalizzazione: se il dato esiste i trasporti (in questo momento l'app usa solo
non lo richiediamo al server, se non esiste lo i dati per i pedoni). In questo modo è possibile
richiediamo. La differenza è che qui dobbiamo regolare la distanza fra due luoghi anche quando
assicurarci di avere due valori per ogni step: si viaggia in treno, per esempio.
la location di origine e quella di destinazione.
Visualizzare la tappa
Calcolare i tempi A questo punto abbiamo un pacchetto dati
Siamo quindi arrivati alla fine di prepSteps : i dati perfettamente organizzato, con tempi, distanze,
per creare le tappe sono quasi pronti, vanno solo indirizzi, ecc. Possiamo quindi disegnare tutti
calcolate le distanze: gli step necessari:
calculateArrivalTimes(startTime); function renderSteps(stepNumber, reformat_date) {
Il sistema è il seguente (all'interno di un loop
che fa scorrere tutti gli step dopo il primo): stepData = steps[stepNumber];
const step = steps[stepNumber];
const duration = step.distance.time; // Assuming step. if (stepNumber > 1) {
distance.time is in minutes
const meters = step.distance.meters; var arrivalTime = stepData["arrival_time"];
const previousStep = steps[stepNumber - 1]; var distance_travelled = stepData["distance_
const delay = step.delay; travelled"];
prepSteps(1, function () {
DATI ACCESSIBILI OVUNQUE
console.log("Rendering steps");
"Salvando i dati sul server in un file, for (let i = 1; i <= stepCount; i++) {
renderSteps(i, true);
anche senza database, potete rendere }
Salvare i dati
A questo punto abbiamo permesso agli utenti
di fare di tutto per creare il loro itinerario
ma manca ancora un pezzo fondamentale:
la possibilità di salvarlo.
<div class="mb-10">
<select id="saved-steps-dropdown" class="form-
select mb-5">
<option value="" disabled selected>Seleziona
un itinerario salvato</option>
</select>
IL MESSAGGIO
SI CELA TRA I PIXEL
Come nascondere informazioni testuali, audio, immagini e file binari
all’interno di uno o più video, anche compressi. Magia della steganografia!
a continua evoluzione personali, immagini, informazioni (figura 1), sono le proprietà che
L tecnologica ha imposto
lo sviluppo e
l’avanzamento di
medicali, dettagli bancari e
videoriprese pubbliche e/o private.
vanno sotto il nome di embedding
payload ed embedding efficiency.
L’embedding payload indica la
determinate tecnologie che hanno E la sicurezza? quantità di dati che possono essere
portato, in pochi anni, alla produzione Argomenti di ricerca fin dalla nascita nascosti all’interno del file cover
di dispositivi di storage sempre più delle comunicazioni digitali (sebbene mentre per embedding efficiency
capienti e, in proporzione, meno la steganografia non risulti essere si intende la capacità dell’algoritmo
costosi, a un netto miglioramento tanto recente, visto che di steganografia di nascondere
delle capacità delle videocamere storicamente risale a oltre 2.000 quante più informazioni sensibili
anche per le “entry-level” e a sensori anni fa), le tecniche per nascondere senza creare distorsioni apprezzabili
sempre più performanti a costi informazioni possono essere al file cover (impercettibilità).
contenuti. Lo scenario riportato utilizzate per mitigarne gli attacchi
ha incrementato esponenzialmente informatici, fornendo proprietà Un po’ di teoria
l’ammontare dei dati trasferiti via di sicurezza, privacy, confidenzialità Ulteriori caratteristiche richieste
rete o cavo e di riflesso negli appositi e integrità dei dati. I due aspetti alla video-steganografia, così
dispositivi di memorizzazione (hard più importanti di un algoritmo come a qualsiasi altro metodo
disk, flash USB, ecc.) tipicamente steganografico, che si tratti di steganografico, vedono la sicurezza
informazioni sensibili come dati un file testo, immagini, audio o video e la robustezza anche dal punto di
Figura 2 Dallo schema di codifica appare netta la distinzione tra quello che Figura 3 Le informazioni che si vogliono celare vengono incorporate
viene definito “raw domain” (dominio grezzo) e il “compressed domain” in uno o più fotogrammi del video
spaziale (Spatial Domain) oppure nel dominio e la trasmissione poiché è richiesto meno spazio
della frequenza (Transform Domain); fare per la loro archiviazione, il trasferimento via rete
riferimento alle omonime voci nei glossari. è più veloce e richiede meno larghezza di banda.
Prima dell’inclusione l’informazione da celare Con queste premesse le tecniche di
viene sottoposta a una pre-elaborazione per occultamento dati nel dominio compresso
l’eventuale applicazione di un algoritmo di hanno guadagnato inevitabilmente popolarità
cifratura e di un codice di correzione errori al negli ultimi tempi. Di contro, provocando
fine di garantirne la sicurezza e l’integrità dei la compressione, la rimozione di elementi
dati qualora il Cover Media subisse attacchi o ridondanti riduce lo spazio necessario a
“cadute di fotogrammi” durante la trasmissione. nascondere informazioni e in alcuni casi
La maggior parte dei metodi di steganografia può scendere nell’ordine dei byte o addirittura
video proposti utilizza tecniche Raw Domain rendere il video inadeguato a essere utilizzato
perché sono intuitivi nel principio di come carrier!
funzionamento e facili da implementare
in termini di codice da scrivere (figura 2) Un esempio applicativo
e (figura 3). Ma se da un lato c’è la facilità Le nozioni riportate sono solo una piccola parte
di implementazione dall’altro c’è il problema di un mondo dedicato alla video steganografia,
che trattasi di tecniche facilmente attaccabili sempre in evoluzione con nuove tecniche,
in particolare dai cosiddetti attacchi di migliorie di quelle conosciute riportate nelle
compressione. C’è in realtà anche un motivo varie pubblicazioni o presentate a convegni
più pratico che rende la video steganografia e conferenze. La scelta di un programma
raw domain meno utilizzabile; i video in forma è sempre non facile da attuare considerando
compressa sono preferiti per lo stoccaggio che trattasi anche di argomenti “di nicchia”
(sebbene molto studiati) e, anche se
principalmente Open Source, non si trovano
quasi mai nei repository delle distribuzioni
se non in casi specifici. Il programma OpenPuff
permette di raggiungere gli obiettivi indicati.
Noi l’abbiamo testato su distribuzione ROSA
Linux (https://www.rosalinux.ru/) e tutto
ciò che occorre fare, una volta effettuato il
download e decompresso il file zip, è entrare
nella cartella creata dalla decompressione
cd OpenPuff_release e lanciare il comando
wine ./OpenPuff.exe il quale non installerà nulla,
lancerà direttamente il programma (figura 4).
Lo script OpenPuff.sh verificherà, su
distribuzioni Debian/Ubuntu e derivate, la
presenza di Wine e procederà eventualmente
all’installazione per poi lanciare il programma.
Lo script Uninstall.sh, se lanciato, cancellerà
Figura 4 OpenPuff è per Windows ma utilizzarlo in Linux non tutta la cartella OpenPuff_release e rimuoverà
comporta alcun problema poiché è pienamente funzionante la cartella nascosta .wine nella home utente,
con WINE (https://www.winehq.org/) quindi attenzione perché in caso vi fossero
Altre funzionalità
Molto interessante la capacità di OpenPuff
di nascondere l’informazione segreta in più
file anche di natura diversa tra loro, per esempio
utilizzando due file PDF, un file MP3, due file
video, ecc. In sostanza “pezzi” (chunk)
dell’informazione complessiva verranno celati
nei due file video, un’altra certa quantità nei due
file PDF e così via. L’utente per poter recuperare
l’informazione dovrà essere in possesso di tutti
i file; un po’ come accade con gli archivi
compressi multipli, se non si hanno tutti i file
a partire dal numero 1 non è possibile
recuperare l’intero contenuto. OpenPuff oltre
che steganografico è anche un programma multi
Figura 5
crittografico; i dati vengono dapprima sottoposti Può sorprendere la bassa capacità di OpenPuff
a crittografia, fa seguito un’operazione di immagazzinamento dei file video, ma se si vuole consente di celare
scrambling quindi viene aggiunto del “rumore” avere maggiore sicurezza e più impercettibilità i dati all’interno di
casuale (whitening). A dispetto di questa va da sé che deve ridursi l’entità di ciò che andrà tipologie diverse di
cover media. In
apparente complessità, il suo uso è molto ad alterare il file e che potrebbe destare qualche ogni momento si
intuitivo e si riduce a 4 passi essenziali. sospetto. A titolo di esempio, in un file VOB di può conoscere la
Vediamoli in dettaglio. circa 40MB è possibile nascondere poco meno dimensione che i
Dalla schermata della figura 4 cliccate su Hide di 7KB impostando il massimo numero di bit ½ carrier dovranno
(50%) in Bit Selection Options. Al termine nascondere
nel pannello Steganography per entrare nella
sezione Data Hiding (figura 5). Nel riquadro (1) fate clic sul pulsante Hide Data in basso a
dovranno essere inserite le password tra loro destra indicando il percorso di salvataggio dove
non correlate necessarie alla crittografia e allo dovranno essere salvati i file stego.
scrambling. Nel riquadro di destra (2) occorre Per il recupero dalla schermata di figura 4
indicare i dati che si desiderano nascondere optate per Unhide nel pannello Steganography.
utilizzando il pulsante Browser. Nel rigo Size Occorre rispettare 3 regole fondamentali:
verrà riportata la dimensione che il/i file carrier inserire correttamente le password (A con A,
dovranno nascondere. Il totale del valore verrà B con B e C con C), rispettare l’ordine dei carrier
riportato nel riquadro (3) Carrier Selection in fase di implementazione (colonna Chain
nel rigo in basso Selected/Total dove occorre Order) aggiungendo i file stego uno dopo l’altro
aggiungere il o i carrier che dovranno farsi in base all’ordine di implementazione originale
carico di nascondere i dati. Se ne dovranno e infine rispettare l’esatta selezione in Bit
aggiungere in numero e tipologia tali da riuscire Selection Options ai valori originali per ogni
a coprire il totale da celare. Quando ciò accadrà singolo formato di file utilizzato come carrier e
il rigo Selected/Total diventerà verde infine indicando il percorso di salvataggio (figura
e sarà quindi possibile passare al riquadro 6). Nell’immagine di apertura dell’articolo vedete
(4) Bit Selection Options per la selezione il confronto tra 2 dei 4 file originali utilizzati dal
del numero di bit da utilizzarsi (tecnica LSB). programma e i rispettivi file stego. Essendo
dei video una fotografia non rende l’idea, gli
interessati non possono che provare la procedura
e constatare loro stessi il risultato.
Il software è sviluppato da un ingegnere italiano,
quindi si ha il manuale (anche) in questa lingua,
che suggeriamo di leggere poiché entra nel vivo
del principio di funzionamento del programma
e dal punto di vista della crittografia così come
su alcuni concetti di steganografia e steganalisi.
In più raccomandiamo di visitare il sito
di OpenPuff poiché presenta nella pagina
del software una vera e propria miniera di
informazioni, articoli, pubblicazioni, video, letture,
tesi e svariati esempi applicativi sull’argomento.
Figura 6 Con OpenPuff è possibile utilizzare un certo numero di carrier
con le immagini nei formati BMP, JPG, PCX, PNG e TGA, audio con
Per ulteriori approfondimenti potete visitare
supporto ad AIFF, MP3, NEXT/SUN e WAV, documenti PDF e file video ResearchGate (https://www.researchgate.net/)
(3GP, FLV, MP4, MPG, SWF, VOB) e cercare “video steganography”. LXP
Raspberry Pi 5
Un salto in velocità e potenza per la scheda più amata dai maker
Roboplant
Idroponica su Marte con simpatici robot
MewnBase
Un gatto esploratore in un ambiente stimolante
Fedora 39 Workstation
onii
Clonezilla 3.1.1-27
FreeBSD13.2
Garuda Linux
PipeWalker
Ferdium 6.6.0
Furnace 0.6
COPIA & VENDI JQuery Ha ancora senso usarlo? Scoprilo con noi! NEL
WEB
LA TUA APP
DVD
DVD
Ti regaliamo Clonezilla 3.1.1-27
FreeBSD13.2
le istruzioni
zioni
a pagina 4
Fedora 39 Workstation
onii
Fai soldi con un tuo progetto partendo dalla code base che ti diamo
L’unica guida libera al mondo dell’Open Source PRO
P RO Touché 2.0.10
FeedDeck 1.1.0
e molto altro...
CO
OPIA & VENDI
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
NUOVO!
ICARE
2 DVD DA SCAR CE Pagine Web ricche senza codice
codi
NUOVO! CON IL CODI IN
TARIFFA R.O.C. - POSTE ITALIA
ALL’INTERNO TE
Ecco i plug-in Open più potenti per JavaScript
RICARE
2 DVD DA SCADICE Pagine Web ricche senza codice ESCLUSIVA PER con cui fornire siti completi di ogni funzionalità
senza neanche dover saper programmare
CON IL CO IN Ecco i plug-in Open più potenti per JavaScript
ALL’INTERNO TE
ESCLUS IVA PER con cui fornire siti completi di ogni funzionalità Bimestrale - N.222 - 7,90 €
Hardware Programmi
Arriva la Raspberry Pi 5! Flatpak sempre più facile
senza neanche dover saper programmare Più velocità e potenza per Con Warehouse la gestione
la scheda più amata dai maker dei pacchetti è semplicissima
P.I. 07-12-2023 Dicembre-Gennaio
Raspberry Pi OS
La nuova edizione, denominata Bookworm, porta con sé Wayland,
PipeWire, Firefox e prestazioni migliorate
a nuova edizione di
IN BREVE
Modifiche
L Raspberry Pi OS, basata
sulla release Debian
strutturali sia di quest’anno Bookworm (che
sul fronte del prende il nome da un personaggio
sistema di di Toy Story 3), apporta una serie
visualizzazione di modifiche e miglioramenti.
sia su quello Il più importante è il passaggio
della gestione a Wayland da X11 come sistema
dell’audio. di visualizzazione. Wayland offre
In più, nuovi vantaggi in termini di prestazioni
plug-in e il combinando il display server
supporto per e il window manager in un’unica
una versione applicazione chiamata compositor,
ottimizzata semplificando il tracciamento delle
di Firefox. finestre e migliorando la sicurezza
grazie all’isolamento delle
applicazioni. Raspberry Pi OS Il desktop di Wayfire è praticamente uguale a quello di Bullseye ma sotto il cofano tutto
ora utilizza per default Wayland è cambiato a vantaggio di migliori prestazioni e funzionalità
con il compositor Wayfire per
Raspberry Pi 4 e 5. Le piattaforme precedenti ridotta, una superiore gestione dei dispositivi audio
passeranno a Wayfire in futuro, ma per Bluetooth e una maggiore compatibilità con Wayland.
ora continuano a usare X11 con Openbox. Gli utenti possono controllare PipeWire utilizzando
le applicazioni che in precedenza lavoravano con
Nuovi plug-in, audio e supporto per Firefox PulseAudio, mantenendo così le consuete funzionalità
Sono stati introdotti due nuovi plug-in: Power, di gestione del volume e del microfono. Infine, una
che monitora i problemi di alimentazione e fornisce versione di Mozilla Firefox ottimizzata per Raspberry
notifiche e informazioni, e GPU, che visualizza il carico Pi è ora ufficialmente supportata e offre una migliore
Arriva una versione della GPU in un grafico. Il primo è abilitato per esperienza di navigazione. Include il supporto del
di Firefox impostazione predefinita, mentre il secondo può codec V4L2 per un’efficiente decodifica hardware
ottimizzata per essere aggiunto tramite le impostazioni della barra h.264, che consente una riproduzione video HD più
Raspberry Pi, con
delle applicazioni. Anche il fronte audio è stato fluida sui vecchi modelli. È stato aggiunto il supporto
decodifica video
hardware, Widevine rinnovato. PulseAudio è stato infatti sostituito Widevine DRM per i servizi di streaming video
DRM e prestazioni dal più recente sistema audio PipeWire, che offre e Firefox su Raspberry Pi OS è ora compatibile
migliorate un migliore supporto audio per i video, una latenza con le telecamere CSI. LXP
VERDETTO
PRODUTTORE: Raspberry Pi
WEB: https://bit.ly/4714jl3
LICENZE: Varie
Tux N Mix
Tanti programmi di qualità per esprimere la vostra creatività con
musica, video e grafica da una distribuzione ancora tutta da scoprire
VERDETTO
PRODUTTORE: Il team di Tux N Mix
WEB: https://tuxnmix.org/
LICENZE: Varie
Da non perdere
Dosage Parallel Disk Usage (pdu) Flatseal FeedDeck Touché
Furnace Ferdium Floorp Mission Center PipeWalker Stendhal
GESTIONE TERAPIE MEDICHE
Dosage
Versione: v 1.1.0
Web: https://github.com/diegopvlk/Dosage
Parallel Disk
Usage (pdu)
Versione: v0.9.0
Web: https://crates.io/crates/parallel-disk-usage
er visualizzare l’utilizzo del disco rigido
P da parte dei file e delle directory
di solito si usa il comando du
(abbreviazione di “disk usage”). In caso di
directory molto grandi, però, può richiedere
parecchio tempo e comportare un carico
aggiuntivo sul vostro sistema. Pdu, scritto
in Rust, offre un’alternativa molto veloce curl https://sh.rustup.rs -sSf | sh Un’applicazione per
che propone anche un output grafico di facile Usate poi il seguente comando: visualizzare l’utilizzo
del disco rigido
lettura. Per utilizzarlo vi servirà Cargo, il gestore cargo install parallel-disk-usage --bin pdu da parte di file e
di pacchetti e sistema di compilazione per Rust, Basta quindi usare il comando pdu per farsi creare directory scritta in
analogo a pip per Python per questo linguaggio. in un battibaleno una rappresentazione della struttura Rust e molto veloce
Il modo più semplice per ottenerlo è installare di file e directory che mostra le loro dimensioni, le loro
l’attuale versione stabile di Rust utilizzando relazioni e un grafico a barre che vi aiuta a capire a
rustup in questo modo: colpo d’occhio come è distribuito il vostro spazio.
Flatseal
Versione: 2.1.0
Web: https://github.com/tchx84/Flatseal
icuramente il formato Flatpak è molto
S comodo da usare e offre praticità e
sicurezza al tempo stesso. Gestire i
permessi delle varie applicazioni non è però sempre
immediato ed è facile dimenticarsene o cliccare
distrattamente sugli avvisi di richieste di accesso.
Flatseal è un’utility grafica che consente di rivedere
e modificare facilmente i permessi delle applicazioni
Flatpak. Tutto quello che dovete fare è lanciarla, Un metodo pratico
selezionare un’applicazione, modificarne i permessi applicazioni o si esegue flatpak-override dal e veloce per
e riavviarla. Se qualcosa va storto e volete terminale e l’app ricorda anche l’ultima applicazione impostare
ripristinare le impostazioni precedenti, basta selezionata. Flatseal offre una buona i permessi delle
vostre applicazioni
premere il pulsante di reset. La nuova versione documentazione (https://bit.ly/46Z1FvL), anche Flatpak attraverso
dell’app include una grafica e delle prestazioni se in inglese. Potete scaricarlo da Flathub un’interfaccia
migliorate, grazie all’adozione di nuovi widget o compilarlo autonomamente con: grafica
e funzioni disponibili in Libadwaita 1.4, oltre a git clone https://github.com/tchx84/Flatseal.git
correzioni di bug. Ci sono anche miglioramenti alle cd Flatseal
funzionalità rispetto alle versioni precedenti. flatpak --user install org.gnome.
Non è più necessario riavviare Flatseal o intervenire {Platform,Sdk}//45
manualmente quando si verificano modifiche flatpak-builder --user --force-clean --install
esterne, per esempio, se si installano o disinstallano build com.github.tchx84.Flatseal.json
FeedDeck
Versione: v1.1.0
Web: https://github.com/feeddeck/feeddeck
GESTIONE GESTURE
Touché
Versione: 2.0.10
Web: https://github.com/JoseExposito/touche
COMPOSIZIONE CHIPTUNE
Furnace
Versione: v0.6
Web: https://bit.ly/3FnOc4K
on il temine chiptune ci si riferisce a un
C genere di musica elettronica basata sui
suoni dei vecchi computer e console di
gioco a 8 bit o 16 bit, generati o campionati dai chip
audio di queste macchine. I chiptune sono spesso
associati alla musica dei videogiochi degli anni
Ottanta e Novanta. Furnace consente di creare
questo tipo di musica con un’ampia scelta di
funzioni e chip sonori. Da NES, SNES e Sega Mega
Drive fino al VIC-20, c’è solo l’imbarazzo della scelta
e ogni chip è riprodotto con molti core di
emulazione, per cui il suono generato da Furnace anche se in inglese, che si rivela utilissima per Componete
è davvero fedele a quello dell’hardware reale. imparare a usare il programma in tempi brevi. musica elettronica
sfruttando i chip
L’applicazione utilizza un’interfaccia di tipo tracker Sono anche disponibili dei tutorial su YouTube audio di macchine
e offre molte funzioni, quindi per aiutarvi a muovere (https://bit.ly/3Q3s8S2), anche se non si basano retro in un’app ricca
i primi passi ha incluso una modalità di base che sulle versioni più aggiornate. Anche con tutto l’aiuto, di funzioni
nasconde diverse funzioni avanzate. In vostro aiuto l’app va studiata un po’, ma i risultati che potete
viene anche la documentazione ricca e dettagliata, ottenere se vi piace questo genere sono ottimi.
ORGANIZZAZIONE APP
Ferdium
Versione: 6.5.2
Web: https://github.com/ferdium/ferdium-app
olti dei nostri lettori probabilmente
M conoscono già Franz, un’applicazione
di messaggistica multi-protocollo che
consente agli utenti di accedere a diversi servizi
di chat e di social media in un’unica interfaccia.
Ferdium amplia il suo concetto offrendo molti più
servizi ed eliminando le limitazioni che Franz pone
ai clienti non premium. Inoltre, è compatibile con
il vostro account Franz esistente, quindi potete
continuare da lì se già lo utilizzate. Avete la cloud su tutti i vostri computer. È inoltre presente Ci sono molti
possibilità di aggiungerci di tutto, da Discord a una modalità orientata alla privacy che impedisce servizi disponibili e
potete facilmente
Gmail a Tweetdeck, di inserire lo stesso servizio alle notifiche di mostrare le informazioni, pur aggiungerne di nuovi
due o più volte per poter accedere a più account continuando ad avvertirvi di quel che succede. per avere sempre
e anche di integrare servizi personalizzati, se Ferdium permette infine di definire diversi spazi tutto sottomano
quello di cui avete bisogno non è già disponibile. di lavoro e avere sempre sottomano una lista
Ferdium offre anche alcuni extra interessanti, delle cose da fare integrata. Il programma offre
come la sospensione dei servizi non utilizzati anche ampie possibilità di personalizzazione
per risparmiare risorse ed evitare rallentamenti e potete configurarne sia l’aspetto sia le
del computer e la possibilità di utilizzare funzionalità senza toccare il codice. Le opzioni
l’applicazione con accesso anonimo, anche se di scaricamento sono numerose e potete averlo
creare un account permette di sincronizzarla sul in formato Flatpak, AppImage e Snap.
BROWSER
Floorp
Versione: v11.5.1
Web: https://github.com/Floorp-Projects/Floorp
MONITOR DI SISTEMA
Mission
Center
Versione: 0.3.3
Web: https://missioncenter.io
PUZZLE GAME
PipeWalker
Versione: 0.9.4
Web: https://sourceforge.net/projects/pipewalker
MORPG
Stendhal
Versione: 1.44
Web: https://bit.ly/3QlWFeY
JavaScript in un lampo
Utilizzare i giusti plug-in per jQuery può fornirvi soluzioni pronte all’uso per
semplificare le operazioni più comuni e aumentare la vostra produttività!
on questo plug-in potete permettere ai vostri n “news box” è un’area della pagina Web che mostra
C utenti di stampare facilmente parti specifiche
di una pagina, specificando un ID univoco per
U in modo aggiornato articoli di notizie, informazioni,
o altri contenuti rilevanti. Con questo plug-in basato
l’elemento HTML che volete rendere stampabile. Potete su jQuery e Bootstrap 4 potete crearne uno reattivo e pulito
escludere delle aree della pagina dalla stampa e trovate che consente di far scorrere verticalmente i contenuti HTML
altre opzioni utili su GitHub. con autoplay e supporto alla navigazione verticale.
INFORMAZIONI INFORMAZIONI
JQUERY.PRINT BOOTSTRAP NEWS BOX
Web: https://github.com/DoersGuild/jQuery.print Web: https://github.com/jqueryscript/jQuery-bootstrap
Versione: 1.6.2 Versione: dd0efe5
Caroselli
responsivi facili
Fate scorrere contenuti su tutti
i dispositivi con il minimo sforzo
lick è uno dei plug-in jQuery più utilizzati per
S la creazione di caroselli e slider interattivi, ossia
dei componenti che consentono di visualizzare
un insieme di immagini o contenuti in un formato a Slick offre molte opzioni per personalizzare l’aspetto e il comportamento del vostro
scorrimento orizzontale o verticale. Sono spesso utilizzati carosello, per esempio intervenendo sulla sua velocità e il numero di immagini
per evidenziare prodotti, testimonianze, gallerie
fotografiche e altro ancora. Slick offre un’ampia gamma direttamente a una specifica di esse. Potete anche
di opzioni di configurazione ed è altamente configurare il carosello per scorrere automaticamente le
personalizzabile. Vi permette di intervenire su vari immagini a un intervallo di tempo predefinito. Slick è anche
parametri per l’aspetto e il comportamento del vostro altamente adattabile per il design responsivo,
carosello, tra cui dimensioni delle immagini, il numero di permettendovi di creare caroselli che funzionano bene
quelle da visualizzare contemporaneamente e molto altro. su dispositivi desktop e mobili. Una soluzione rodata
Supporta il caricamento continuo delle “diapositive” nel tempo che rimane sempre molto valida e sfruttata.
in modo che il carosello sembri continuare all’infinito
e permette di scegliere tra diverse transizioni di INFORMAZIONI
scorrimento, per esempio con dissolvenza o a mosaico.
Consente inoltre di aggiungere pulsanti per la navigazione SLICK
tra le immagini e anche indicatori che rappresentano Web: https://kenwheeler.github.io/slick/
le diapositive e consentono agli utenti di passare Versione: 1.3.11
n plug-in facile da usare che permette di inserire on questo semplice plug-in sviluppato in Italia potete
U velocemente una finestra pop-up di selezione di
date nelle vostre pagine. Facile da personalizzare,
C inserire un quiz con domande e risposte, utilizzando
un file JSON che contiene tutti i dati e viene caricato
permette di scegliere data e ora oppure uno solo dei due via AJAX quando il plug-in viene inizializzato. Le risposte
elementi. Consente anche di evidenziare singole date dell’utente vengono salvate in un cookie. Richiede jQuery
o periodi e di aggiungere note e offre un tema scuro. 3 e Bootstrap 4 e utilizza Fontawesome 4.7.0 per le icone.
INFORMAZIONI INFORMAZIONI
DATE TIME PICKER JQUERY-QUIZ
Web: https://github.com/xdan/datetimepicker Web: https://github.com/Reload-Lab/jQuery-quiz
Versione: 24d7dd5 Versione: 2.1.0
Tutto per le
interfacce utente
Interazioni, widget ed effetti pronti
da usare e personalizzare
dottando jQuery UI potete ampliare le funzionalità
A di jQuery aggiungendo una vasta gamma di
componenti e interfacce utente personalizzabili
per la creazione di applicazioni Web interattive. Sul sito https://jqueryui.com trovate gli elementi a vostra disposizione suddivisi
Vi permette di integrare facilmente elementi come per categorie e potete vederne una demo interattiva facendo clic su di essi
finestre di dialogo, barre di avanzamento, menu, schede,
effetti di animazione, calendari, pulsanti, slider e molto degli elementi nelle varie categorie potete vederne
altro. Include inoltre interazioni come il drag and drop, una demo interattiva, il che è molto pratico per scegliere
il ridimensionamento, la selezione, ecc. L’insieme di cosa è più adatto ai vostri scopi vedendolo all’opera.
componenti che fornisce è molto completo e sono tutti jQuery UI è in modalità di sola manutenzione,
pronti all’uso e semplici da personalizzare sotto molti ma il progetto è attivamente curato e ampiamente
aspetti. jQuery UI offre infatti un sistema di temi che implementato: secondo il suo sito è utilizzato
consente di modificarne rapidamente l’aspetto e potete dal 73% dei 10 milioni di siti più popolari.
anche creare il vostro tema personalizzato. Sul sito
https://jqueryui.com trovate gli elementi a vostra INFORMAZIONI
disposizione suddivisi nelle categorie delle interazioni,
dei widget, degli effetti e delle utility. Queste ultime JQUERY UI
includono Widget factory, che semplifica la creazione Web: https://github.com/jquery/jquery-ui
di nuovi widget personalizzati. Cliccando su ciascuno Versione: 1.13.2
Pop-up e modali
di ogni tipo
Arricchite il vostro sito con
finestre leggere e interattive
agnific Popup è un plug-in lightbox
M personalizzabile che consente di creare finestre
pop-up o modali eleganti e visivamente Il progetto offre una buona documentazione (https://bit.ly/46GxAB8),
accattivanti per la visualizzazione di vari tipi di elementi, con informazioni dettagliate ed esempi per gli usi più comuni
come immagini, video, moduli o contenuti HTML in linea.
È responsivo, ossia è progettato per funzionare bene offre una buona documentazione (https://bit.
sia sui dispositivi desktop sia su quelli mobili, in quanto ly/46GxAB8), anche se in inglese, che fornisce
regola automaticamente le dimensioni e il layout delle informazioni dettagliate, esempi e opzioni di
finestre pop-up in base alle dimensioni dello schermo. configurazione per aiutarvi a iniziare a usare questo plug-
Potete usarlo per iframe o anche per intere pagine in in modo efficace. Trovate ulteriori esempi con codice
Web e offre una serie di opzioni di personalizzazione, su https://bit.ly/404pYWN e su CodePen (https://bit.
consentendovi di controllare l’aspetto, il comportamento ly/46LH2Dt). Un patrimonio che vale la pena di sfruttare.
e lo stile delle finestre pop-up per adattarle al design
del vostro sito. Magnific Popup è noto per la sua velocità
e le sue prestazioni, che lo rendono una scelta popolare
INFORMAZIONI
per migliorare l’esperienza dell’utente sui siti. Funziona MAGNIFIC POPUP
bene con diverse tecnologie di sviluppo Web, tra cui Web: https://github.com/dimsemenov/Magnific-Popup
HTML e CSS, oltre a JavaScript e jQuery. Il progetto Versione: 1.1.0
onsentire agli utenti di trovare la posizione fisica di iamo ormai tutti abituati a valutare la qualità di servizi
C un punto vendita è utilissimo per tutti i siti di attività
commerciali. Questo plug-in che utilizza l’API di
S di qualsiasi genere in stelle. Questo plug-in JQuery
per Bootstrap semplifica la loro integrazione nei siti e
Google Maps consente di implementare questa funzione supporta funzioni avanzate come il riempimento parziale delle
senza programmare. È sufficiente fornire dati KML, XML stelle. Utilizza lo styling CSS3 e offre icone vettoriali scalabili
o JSON con tutte le informazioni sulla posizione. per una visualizzazione coerente su tutti i dispositivi.
INFORMAZIONI INFORMAZIONI
JQUERY-STORE-LOCATOR-PLUG-IN BOOTSTRAP STAR RATING
Web: https://github.com/bjorn2404/jQuery-Store-Locator-Plug-in Web: https://github.com/kartik-v/bootstrap-star-rating
Versione: 3.2.0 Versione: 4.1.2
Strutture ad Completamenti
albero al volo automatici
er visualizzare facilmente una struttura ad albero ttima documentazione anche per questo progetto
P in HTML. Supporta la creazione degli alberi
a partire da dati JSON, il caricamento dei dati
O che consente di creare facilmente liste con
supporto per il completamento automatico che
tramite AJAX e il drag and drop. Offre un’ottima permettono di selezionare più elementi da un elenco
documentazione (in inglese) che include tutorial a discesa. Un’ampia serie di opzioni vi permette di
ed esempi ed è costantemente aggiornato. personalizzare velocemente la vostra implementazione.
INFORMAZIONI INFORMAZIONI
JQTREE MAGIC SUGGEST
Web: https://github.com/mbraak/jqTree Web: https://github.com/Magicsuggest/magicsuggest
Versione: 1.7.5 Versione: 2.1.6
Validare i dati
degli utenti
Una soluzione popolare per risultati
veloci e facili da personalizzare
on jQuery Validation Plug-in avete a disposizione
C una serie di strumenti per facilitare la convalida
dei dati nei moduli HTML. Questa libreria è infatti La documentazione del plug-in (https://bit.ly/3MdPH9k) è completa e ricca
progettata per semplificare la validazione dei dati immessi di esempi per sfruttarlo al meglio nei vostri siti
dagli utenti nei campi di input, nei menu a discesa e in altri
elementi. Esegue la validazione dei dati direttamente nel di campi che condividono regole di convalida comuni
browser dell’utente (lato client), senza la necessità di una e possono essere validati insieme. Localizzare i
richiesta al server, consentendovi di fornire un feedback messaggi di errore e le regole di convalida per diverse
immediato ai vostri visitatori. Per ciascun campo di input lingue è inoltre facile. La documentazione ufficiale,
potete definire regole di convalida personalizzate, come che integra vari esempi di utilizzo, è un valido supporto
la lunghezza minima o massima, il formato, l’obbligatorietà, per implementare rapidamente la convalida dei moduli
le espressioni regolari e altro ancora. Anche i messaggi con questo popolare plug-in.
di errore visualizzati agli utenti quando un campo non
soddisfa i criteri di convalida sono modificabili liberamente
e potete scegliere il modo in cui vengono visualizzati
INFORMAZIONI
all’utente. La libreria utilizza classi HTML per definire JQUERY VALIDATION
regole di convalida, semplificandone l’aggiunta a livello Web: https://github.com/jquery-validation/jquery-validation
di campo nei moduli. Si possono anche impostare gruppi Versione: 1.20.0
pesso sono le piccole cose che fanno ricordare na serie di opzioni di zoom avanzate facili da integrare
S i siti e avere a disposizione un facile menu per
l’inserimento di emoji nei campi testuali può rendere
U e personalizzabili. Al passaggio del mouse l’utente
passa dalla versione dell’immagine visualizzata a una
più personale l’esperienza dell’utente. Quest’ultimo dovrà più grande caricata dal suo URL. Potete forzarne le dimensioni
semplicemente fare clic sull’icona della faccina in alto a a una larghezza di pixel data, ingrandire fino a x volte
destra dell’area di testo per visualizzare il menu di selezione. la dimensione dell’originale e molto altro.
INFORMAZIONI INFORMAZIONI
EMOJI PICKER JQUERY-EXTENDED-MAG
Web: https://github.com/jmadler/emoji-picker Web: https://github.com/caleboleary/jQuery-Extended-Mag
Versione: 0.12.2 Versione: ca$bc3b
INQUADRA
IL QR CODE
E SCOPRI
TUTTI I TITOLI!
VERSIONE
SPECIALE
CALENDAR
IO CARTACE
O
LAVAGNETT +
A MAGNETI
CA
A SOLI
9,90 €
Chitarra
Appuntamento ore 17:00
1 alle poste
2
ma
PortarenoEnmni
3 dai
Riunione
di condominio
4 ore 19:30
LA GUIDA
DI RIFERIMENTO TUTORIAL
Esiste sempre qualcosa di
nuovo da imparare in campo
Creare un’app diario
informatico, soprattutto in un per i ristoranti
mondo dinamico come quello di Tutti mangiamo fuori e ci piace
Linux e dell’Open Source. Ogni ricordare dove siamo stati: ecco come
numero di Linux Pro presenta creare un’app per tenere traccia delle
una sezione dedicata a tutorial nostre uscite pag. 52
realizzati da esperti in moltissimi
settori: programmazione, Flatpak facili con
sicurezza, amministrazione di un’interfaccia grafica
sistema, networking. Troverete
Uno strumento efficiente e
informazioni utili sia che siate
dei veterani di Linux sia degli completo per gestire ogni aspetto
utenti alle prime armi. dei propri programmi, anche
Studieremo con cura anche le in gruppo, senza usare la riga
applicazioni più diffuse sia in di comando pag. 58
ambito lavorativo che desktop.
Il nostro scopo è quello di fornire Robot con braccio
in ogni numero il giusto mobile e telecamera
mix di argomenti, ma se avete Mobilità e un braccio con quattro
suggerimenti su temi particolari
gradi di libertà per questo robot
che vorreste vedere trattati,
controllato da PC e basato su
scriveteci via e-mail all’indirizzo
tutorial@linuxpro.it Arduino Nano RP2040 o Raspberry
Pi Pico W pag. 60
class _TWIG
{
public static function
render($template,$data,$response){
$template = $twig->load($template);
$content = $template->render($data);
$response->getBody()->write($content);
return $response;
}
}
Le prime due funzioni ( json_success e json_error )
si occupano di restituire in modo omogeneo
i risultati in JSON dell'API: usandole non dovrete Che ci piaccia o no, Google ha di fatto un monopolio sulle API di dati commerciali geolocalizzati. Possiamo
preoccuparvi di formare correttamente ogni vostra sfruttare però il loro lavoro, che è molto approfondito, pagando pochissimo grazie a caching e scraping
risposta. APIKey() , come è intuibile, restituisce
semplicemente la vostra chiave per l'API di Google simile a quello proposto, per poi creare il menu
e infine la classe _Twig vi permette di visualizzare a tendina con le opzioni. Dopodiché collega
le pagine HTML tramite Twig senza dover costruire un listener al menu:
ogni volta il relativo oggetto. dropdown.addEventListener('change', () => {
const selectedPlaceId = dropdown.value;
La logica dell'applicazione
Per quest'app, come anticipato, non vi porteremo $.ajax({
dall'inizio alla fine ma vi daremo tutto per costruire url: '/restaurant/exists/'+selectedPlaceId,
la vostra app ideale. Per farlo dobbiamo vedere come type: 'GET',
funzionano i singoli passaggi, a partire dalla prima data: { },
fase. Nella schermata iniziale quando l'utente clicca success: function(response) {
su Find Restaurant, una funzione findRestaurants() if (response.data) {
si occupa di recuperare l'elenco dei possibili ristoranti fetchRestaurantDataAndDisplayModal
tra cui l'utente può scegliere. Per motivi di spazio (selectedPlaceId);
ne vedremo solo gli aspetti salienti e il primo } else {
è la chiamata al vostro server: data from third party
const response = await fetch(`/api/ fetchLocationData
places?query=${restaurantName}`); (selectedPlaceId,function(data){
const data = await response.json();
fetchLocationDataAndDisplayModal (data);
const dropdown = document.
getElementById('restaurantDropdown'); })
dropdown.style.display = 'block'; }
dropdown.innerHTML = '<option value="">Select a },
restaurant</option>'; error: function(error) {
alert('Error checking restaurant existence: ' +
candidates = data.data.predictions; error.responseText);
}
candidates.forEach(candidate => { });
const option = document.createElement('option');
option.value = candidate.place_id; });
option.text = candidate.description; Questo è un punto chiave perché anzitutto lo script
dropdown.appendChild(option); verifica se il ristorante in oggetto è già stato creato
}); da un utente: se sì, avvia la funzione
La prima cosa che fa quindi è "chiamare a casa": fetchRestaurantDataAndDisplayModal() (che
il server si occupa di contattare l'API di Google dovrete creare voi) per mostrare semplicemente
e restituire un elenco di location con il nome il modulo per inserire i dati specifici forniti
STRUTTURARE IL DATABASE
Il database è ovviamente la spina rating FLOAT, caching, come chiave primaria.
dorsale della vostra applicazione. reviewsLink VARCHAR(255), Notate anche la nomenclatura:
La table principale nel caso di questa latitude FLOAT, non usiamo simboli e, se un campo
app è Restaurants e contiene tutti longitude FLOAT, ha un nome che combina due parole,
i ristoranti (non le visite ai ristoranti cuisines VARCHAR(1000), la seconda è in maiuscolo. L'uso
ma semplicemente un record per specialFeatures VARCHAR(1000), di una nomenclatura corretta nella
ogni location). Vediamo quindi category VARCHAR(255), creazione dei campi delle tabelle
insieme la struttura: michelinStars INT, del database migliora la chiarezza,
CREATE TABLE Restaurants ( closed BOOLEAN, la manutenibilità e l'efficienza del
id INT AUTO_INCREMENT PRIMARY country VARCHAR(255) database, riducendo la probabilità di
KEY, ); errori e facilitando la collaborazione
placeId VARCHAR(255) UNIQUE NOT Come vedete, abbiamo scelto di tra i membri del team. Un buon nome
NULL, usare campi che ci permettano di di campo funge infatti da
name VARCHAR(255) NOT NULL, inserire per esempio pacchetti JSON autodocumentazione, riducendo
address VARCHAR(255), (come per specialFeatures ) e usiamo la necessità di documentazione
website VARCHAR(255), il placeId di Google Places API, che esterna per spiegare lo scopo
menuLink VARCHAR(255), è legalmente salvabile senza limiti di di ogni campo.
dall'utente (cose come la data della visita, ecc.). il ristorante come segue:
In questo modo non facciamo chiamate aggiuntive, function addRestaurant($placeId){
e costose, all'API di Google! Se invece è nuovo:
fetchLocationData (selectedPlaceId,function(data){ $data = fetchPlaceDataDemo($placeId);
fetchLocationDataAndDisplayModal (data); $uuid = createRestaurant($placeId,$data);
}) $data['restaurant_uuid'] = $uuid;
Così con fetchLocationData() contattiamo return $data;
il server e gli diciamo di recuperare da Google
i dati della location, dopodiché li visualizziamo }
utilizzando una finestra modale. Ma cosa Questa funzione anzitutto prende i dati dall'API
fa il server in questo caso? di Google Places o dal servizio che preferite: per
$app->get('/restaurant/create/{place_id}', function questo nel codice trovate una funzione demo che
(Request $request, Response $response, $args) { restituisce sempre dati formattati correttamente, in
modo che possiate testare tutto voi. Naturalmente
$placeId = $args['place_id']; la sostituirete con la vostra funzione, magari usando
un servizio a bassissimo costo come Lambda per
$restaurantData = addRestaurant($placeId); minimizzare la spesa e anonimizzare la chiamate.
Dopodiché aggiunge il ristorante al database:
unset($restaurantData['rating']); function createRestaurant($place_id,$data){
unset($restaurantData['reviewsLink']);
unset($restaurantData['latitude']); global $pdo;
unset($restaurantData['longitude']);
$uuid = Uuid::uuid4(); // Version 4 (random) UUID
return json_success($response, $restaurantData); $data['uuid'] = $uuid->toString();
$data['placeId'] = $place_id;
});
La prima cosa che fa quindi è creare un record per if(isset($data['cuisines'])){
$data['cuisines'] = json_encode($data['cuisines']);
}
try {
$stmt = $pdo->prepare($sql);
$stmt->execute($data);
return $uuid;
} catch (PDOException $e) {
die("Error: " . $e->getMessage());
}
}
Questa funzione quindi crea un identificativo
unico, che useremo per transazioni interne
al posto del placeId, quindi normalizza gli array
in stringhe JSON, dopodiché inserisce un record.
Fate attenzione perché questa è una funzione
"cieca": non controlla se esiste già un ristorante
con lo stesso placeId. Il nostro consiglio è di creare Nel codice demo che trovate sul DVD digitale, le ricerche restituiranno sempre gli stessi dati di base.
tale verifica e applicarla prima, in modo da bloccare Usate il vostro sistema di recupero dati e l'utente potrà modificare le informazioni
l'inserimento duplicato.
data: JSON.stringify(formData),
Modifiche lato utente contentType: "application/json; charset=utf-8",
A questo punto mostrerete i dati all'utente dataType: "json",
nell'interfaccia. L'utente li modificherà o li success: function(response) {
approverà, in modo che non dovrete salvare const modal = $('#editModal');
in cache nulla, anche nel caso in cui usiate modal.hide();
direttamente Google Places API invece },
di un servizio di terze parti. Per salvare, l'utente error: function(error) {
premerà il pulsante e lo gestirete così: console.error("Error sending data: " + JSON.
$("#saveButton").on("click", function(e) { stringify(error));
e.preventDefault(); }
var name = $("#name").val(); });
... });
var restaurant_uuid = $("#restaurant_uuid").val(); E questo è tutto! Questa è naturalmente poi solo
l'ossatura: voi potrete aggiungere l'interfaccia
var formData = { grafica, una pagina per l'inserimento dei dati
name: name, delle visite come un giudizio, la data, ecc.,
... il sistema di registrazione, quello di traduzione
}; e via dicendo. Le informazioni che avete
acquisito però vi permetteranno di interagire
$.ajax({ con API di terze parti e di usarne i dati
type: "POST", per semplificare la vita dei vostri utenti
url: "restaurant/edit/"+restaurant_uuid, e per fornire loro informazioni affidabili. LXP
APPLICAZIONI
CASP
Crediti: https://aadhuniklabs.com/
TIP
La cinematica
diretta calcola
posizione e
orientamento
dell’end-effector
di un robot
in base alle
posizioni delle
giunture o
degli attuatori.
Risponde alla
domanda:
“Data una
configurazione
specifica delle
giunture o degli
attuatori del
robot, dove si La funzione Run del codice in C++ del blocco personalizzato elabora gli input, aggiorna vari parametri di controllo (tra cui le coordinate X, Y, Z,
troverà l’end- il flash del LED e il parcheggio) e gestisce lo stato generale del suo funzionamento
effector nello
spazio?”. mostrare il video in diretta ricevuto dalla disabilitazione, coordinate x, y e z, controllo
La cinematica telecamera. È inoltre configurato per della torsione e della ganascia) e gestisce lo
inversa, invece,
trasmettere i segnali della tastiera e del mouse; stato generale del funzionamento del blocco
calcola le
3) Il blocco di controllo RC. Si tratta di un blocco personalizzato. I suoi passaggi sono i seguenti:
posizioni delle
giunture o personalizzato che riceve i segnali della tastiera 1. La prima cosa che fa la funzione è controllare
degli attuatori e del mouse dal blocco di visualizzazione delle se è passato un certo intervallo di tempo
necessarie immagini e genera i segnali di controllo adatti (in questo caso, circa 10.000 unità di tempo).
per impostare a gestire il movimento del robot; Se non è ancora trascorso, la funzione
l’end-effector 4) I quattro blocchi degli assi del braccio restituisce che è in anticipo, ossia non esegue
in una posizione robotico che rappresentano i suoi quattro assi, i suoi compiti principali con una frequenza
desiderata nello compreso l’end-effector. I parametri di questi superiore a questo intervallo.
spazio. Risponde blocchi devono essere accuratamente regolati 2. Poi una funzione di elaborazione degli input
alla domanda:
per corrispondere alle rispettive dimensioni/ recupera i valori immessi dalla tastiera o dal
“Voglio che l’end-
parametri del braccio. Questi blocchi calcolano dispositivo di input e calcola le differenze nelle
effector si trovi in
una determinata la cinematica di avanzamento di ciascun asse; posizioni x, y e z rispetto al passo precedente.
posizione nello 5) Il blocco Robotic Arm Inverse Kinematics 3. Quindi il codice controlla se è stato premuto
spazio; quali che esegue la cinematica inversa per calcolare un particolare tasto (L) della tastiera. Se il tasto
devono essere l’angolo di ciascun asse; viene premuto e il LED non è stato acceso
le posizioni delle 6) Il blocco Robotic Arm Control. È un blocco in precedenza, il codice altera il suo stato.
giunture o degli personalizzato che genera i set point richiesti 4. La logica del parcheggio, se il valore en_out
attuatori per (x, y, z) e i segnali di controllo del braccio (lo stato di abilitazione) è maggiore di -2,
raggiungerla?”. robotico in base agli input della tastiera controlla se è stato premuto un tasto specifico
Entrambi i
e del mouse dell’utente; (P). Nel caso, imposta en_out a -1, indicando
concetti sono
7) I blocchi GPIO che si collegano al modello lo stato di parcheggio.
fondamentali per
programmare target tramite Wi-Fi. 5. Se il tasto P non è premuto (cioè non c’è uno
e controllare i stato di parcheggio), controlla se un altro tasto
robot. Logica del blocco personalizzato (E) è premuto. Se questo tasto è premuto
Il blocco personalizzato utilizzato nel progetto e non è stato premuto in precedenza, abilita
è CustomBlock 193083739. Le sue funzioni il controllo delle coordinate x, y e z.
chiave sono PreRun e Run. Il primo viene 6. In base alle condizioni precedenti, la funzione
richiamato prima dell’esecuzione primaria del aggiorna le coordinate x, y e z memorizzate
blocco. Inizializza vari parametri e memorizza in xyz_out.
alcuni valori iniziali. Per esempio, imposta i valori 7. Il controllo della torsione verifica se i tasti
iniziali di led_out e en_out per controllare T o Y sono premuti per regolare il sistema
il LED, xyz_out per rappresentare le coordinate di torsione, modificando il valore tw_out entro
x, y e z, tw_out per controllare la rotazione un intervallo compreso tra -90 e 90.
del braccio e jaw_out per gestire la ganascia. 8. Il controllo della ganascia verifica se i tasti
Memorizza anche la posizione iniziale del mouse J o K sono stati premuti per aprire o chiudere
e altre informazioni. La funzione Run elabora la ganascia regolando il valore jaw_out,
gli input, aggiorna vari parametri di controllo eventualmente con un controllo più fine quando
(tra cui LED, parcheggio, abilitazione/ viene premuto il tasto Maiusc.
WEB DESIGN
Sfruttare la potenza
di un veterano
jQuery ha ancora molte frecce al suo arco e capirne funzionamento e funzioni
principali è molto utile a chiunque lavori su siti in JavaScript
rima di jQuery, creato nel 2006 come selettori CSS. Consentono di creare oggetti jQuery
P progetto Open Source dallo sviluppatore
John Resig, c'era una mancanza di coerenza
che rappresentano gli elementi selezionati, i quali
possono poi essere manipolati, modificati o collegati
tra i diversi browser e la scrittura di JavaScript per a gestori di eventi. Tra le più usate ci sono:
interagire con il DOM (Document Object Model, una $(selettore) : seleziona elementi HTML
rappresentazione strutturata dei contenuti di una utilizzando un selettore CSS;
pagina Web) poteva essere complicata e laboriosa. $(elemento) : incapsula un elemento HTML
Questa libreria ha portato un'interfaccia semplice e esistente in un oggetto jQuery;
TIP unificata per selezionare elementi HTML, manipolare $(funzione) : esegue una funzione quando
Per ulteriori il DOM e gestire eventi, consentendo agli sviluppatori il documento è pronto.
informazioni Web di scrivere meno codice JavaScript e di farlo in Le funzioni di manipolazione del DOM
sulla gestione modo più efficace. Anche se oggi c'è molto altro sul permettono di modificarne facilmente
degli eventi mercato, jQuery ha ancora molte frecce al suo arco il contenuto, la struttura e gli attributi,
visitate https://
(vedi box Ancora attuale dopo 17 anni) e conoscere consentendo di apportare modifiche dinamiche
learn.jquery.
com/events/ e
le sue principali caratteristiche e comandi, oltre alla pagina senza dover scrivere molto codice
familiarizzate con ai suoi plug-in salvatempo presentati a pag. 44 JavaScript puro. Tra quelle indispensabili
i metodi disponibili di questa rivista, può essere utilissimo. per il vostro arsenale trovate:
su https://api. .html() : ottiene o imposta il contenuto HTML
jquery.com/ Selezionare elementi e manipolare il DOM degli elementi selezionati;
category/events/. jQuery offre pratiche funzioni per selezionare .text() : ottiene o imposta il testo contenuto
Per gli effetti elementi HTML all'interno di un documento negli elementi selezionati;
potete invece Web in base a determinati criteri, come per esempio .val() : ottiene o imposta il valore degli elementi
far riferimento di input;
a https://learn.
.attr() : ottiene o imposta gli attributi degli
jquery.com/
effects/ e https://
elementi selezionati;
api.jquery.com/ .addClass() : aggiunge una o più classi CSS
category/effects/. agli elementi;
Per approfondire .removeClass() : rimuove una o più classi
la vostra CSS dagli elementi;
conoscenza .append() : aggiunge contenuti alla fine degli
della libreria e elementi selezionati;
risolvere problemi .prepend() : aggiunge contenuti all'inizio degli
è preziosissima la elementi selezionati;
community, con
.remove() : rimuove gli elementi selezionati dal DOM.
cui potete entrare
in contatto con
i collegamenti Gestire eventi e creare animazioni
raccolti in https:// Altri metodi di jQuery molto utili sono quelli che
jquery.org/ Il blog di jQuery (https://blog.jquery.com) è il punto di riferimento per tutte
consentono di collegare gestori di eventi a elementi
support/ . le novità e gli aggiornamenti, mentre sui Forum (https://bit.ly/3QI78BC) HTML e di definire come l'applicazione deve
e Stack Overflow (https://bit.ly/45TC46h) potete trovare ampio supporto rispondere a determinati eventi, come clic del mouse,
WEB APP
e c'è una cosa che tutti dobbiamo fare l'aspetto fondamentale è la definizione di "pasto".
TIP S è mangiare e organizzare i pasti richiede
tempo. Non vogliamo spendere troppo,
Il pasto può essere di due tipi principali: generico
o specifico. Un pasto generico non include piatti
I diagrammi non vogliamo mangiare troppe volte le stesse cose o altro, è semplicemente una rappresentazione
servono
che fanno ingrassare, preferiamo un po' di varietà, astratta. Per esempio, potrebbe essere una cena
anche come
ecc. Perché allora non creare una Web app per fuori, ordinare a domicilio, ecc. In questo caso
documentazione
del progetto. permettere di pianificare i pasti in modo semplice il pasto non necessita alcuna specifica aggiuntiva
Forniscono e immediato? Questo è il progetto più breve e e non richiede di aggiungere piatti: l'utente lo
un punto di semplice fra quelli che vi proponiamo su questo usa semplicemente come segnaposto. Il pasto
riferimento per numero e si occupa esclusivamente di una cosa: con uno o più piatti invece include una serie di
gli sviluppatori prepararvi a creare qualsiasi app imparando parametri in più che dipendono dai piatti stessi
che potrebbero a panificarne perfettamente la struttura. (pasto leggero o pesante, tempo di preparazione,
essere nuovi al La progettazione del flusso logico mediante ecc.) e può essere composto da un singolo piatto
progetto o per la diagrammi è una fase cruciale del processo (e quindi il piatto coincide con il pasto) oppure da
manutenzione e
di sviluppo del software. Promuove una più piatti (che quindi sono "figli" del pasto). Queste
gli aggiornamenti
comprensione comune dell'applicazione, migliora considerazioni e molte altre sono essenziali per
futuri.
Inoltre sono la comunicazione e aiuta a costruire creare un flusso di lavoro ordinato, per evitare a un
perfettamente un'applicazione Web più organizzata, efficiente certo punto del lavoro di rendersi conto di essersi
leggibili anche da e resistente agli errori. I diagrammi forniscono dimenticati una casistica e dover potenzialmente
investitori e altre una rappresentazione visiva della logica tornare a ritoccare tutta la code base fin dall'inizio.
parti coinvolte dell'applicazione, rendendo più facile sia per gli
che non hanno sviluppatori sia per gli stakeholder capire come Un diagramma di flusso come base di lavoro
dimestichezza interagiscono i diversi componenti. In tutte queste situazioni, non dovete mai iniziare
con la lettura La visualizzazione del flusso aiuta a identificare a scrivere anche solo una riga di codice se
del codice. potenziali complessità, dipendenze e aree non avete creato un diagramma di flusso che
che potrebbero richiedere ulteriori chiarimenti. consideri tutti i potenziali percorsi e che spieghi
I diagrammi di flusso, inoltre, spesso rivelano come farete interagire l'utente a ogni passaggio.
potenziali casi limite o scenari che potrebbero non Per farlo noi abbiamo utilizzato draw.io (https://
essere immediatamente evidenti esaminando solo drawio.com), che è gratuito, estremamente
il codice o i requisiti. L'identificazione precoce flessibile e che vi permette di salvare e
dei casi limite aiuta a costruire un'applicazione condividere in vari modi, ma voi potete usare
più robusta e resistente. qualsiasi sistema con cui vi trovate a vostro agio.
Invece di vedere direttamente il codice quindi
Dall'idea al progetto finito vedremo i vari passaggi, partendo con l'ideale
In queste due pagine ci focalizzeremo quindi clic fatto dall'utente sul pulsante di aggiunta
su come preparare un progetto in modo di un pasto al calendario che avrete predisposto.
che la scrittura del codice sia poi fluida e semplice. La prima domanda da farsi è se l'utente vuole
Anzitutto per qualsiasi app dovete ragionare sugli aggiungere un pasto nuovo o sceglierne uno
aspetti fondamentali e per questo progetto esistente. Se decide di usarne uno esistente,
Creazione di un pasto
Se invece l'utente ha deciso di creare un pasto
nuovo, viene visualizzato il form del pasto: se
l'utente arriva dal percorso di creazione basandosi
su un pasto esistente, verranno anche visualizzati
i suoi parametri e un elenco dei piatti coinvolti.
A questo punto, il pasto include piatti o è un pasto
generico? Se è generico, l'utente deve solo
compilare i campi essenziali che abbiamo visto
prima e il percorso è finito. Se invece include
dei patti va aperta una nuova finestra oppure una
nuova area di inserimento dati in cui l'utente potrà
aggiungere il primo piatto. Anche qui modellerete
il percorso in base a cosa vuole fare l'utente. In questa fase del diagramma vedete come il flusso logico è pensato per riutilizzare il codice nel caso
Per semplificarlo, noi abbiamo considerato solo in cui un utente desideri creare un pasto partendo da uno esistente
Il codice
WEB APP lo trovi
nel DVD
virtuale!
er rimanere in tema con l'articolo di endpoint per l'API. Abbiamo quindi creato
TIP
Ne abbiamo già
P copertina, in queste pagine vedrete come
creare una Web app da vendere e trovate
la seguente struttura:
Directory app
parlato in questo tutto il codice sul DVD digitale. In questo caso La directory app è il punto in cui sono presenti
numero ma lo creerete un'app per tenere traccia dei pagamenti tutti i componenti. Come file, troverete:
ribadiamo per ricorrenti. Iscriversi a un servizio da pochi euro app.js: il file principale dell'applicazione;
completezza: al mese e poi dimenticarsene è un attimo, salvo functions.js: il file con le funzioni condivise;
cercate sempre poi vedere lievitare i costi mensili della carta .env: il file con tutte le password e le credenziali
di programmare di credito! Insieme creeremo quindi una Web app che non devono essere condivise con terzi
in inglese.
che permette di tenere traccia di questi pagamenti e non devono essere tracciate con git.
Vi garantisce
e che ha queste caratteristiche: Al suo interno ci sono due directory:
supporto
internazionale, - Aggiunta e modifica degli abbonamenti; Directory views
vi evita problemi - Visualizzazione su calendario; Qui troverete i template di tutte le pagine,
con caratteri - Visualizzazione come lista; sia il layout principale sia i contenuti che variano
accentati e vi - Sistema di avvisi per notificare gli utenti di pagina in pagina.
permette di un giorno prima del rinnovo di un abbonamento Directory public
vendere la vostra per permettere loro di disdire se vogliono; Questa è la directory accessibile sul Web.
app a un pubblico - Esportazione dei dati. Contiene tutti i file .js usati dai template
enorme! Per questa app useremo Node.js per il back-end e la directory asset che include fogli stile, ecc.
e sfrutteremo come template grafico Metronic
(vedi Tip a pagina 72). Composizione delle pagine
Per tutte le pagine userete una logica uniforme.
Struttura e progettazione Prenderete un layout di base che rappresenta
Per iniziare, manterremo la struttura molto il grosso della pagina. Userete poi un file
essenziale, visto che si tratta di una Web app di navigazione che viene aggiunto solo alla
che non richiede grandi calcoli lato server o tanti dashboard e infine avrete ovviamente i file
dei contenuti. Per renderizzare le pagine userete
express-ejs-layouts . Nel file app.js per visualizzare
ogni pagina userete una struttura di questo tipo:
// Route to display the calendar
app.get('/calendar', (req, res) => {
res.render('calendar', {
pageTitle: 'Calendar',
pageContent: 'calendar',
pageScript: '<script src="https://cdn.jsdelivr.net/
npm/fullcalendar@6.1.9/index.global.min.js"></
script><script src="calendar.js"></script>'
L'idea è quella di fornire non solo un elenco di abbonamenti sottoscritti });
ma anche una panoramica mensile e una annuale });
Il modulo di
aggiunta di un
abbonamento
è, come il
resto dell'app,
completamente
responsive.
Qui lo vedete su
due colonne ma su
dispositivi mobili lo
visualizzerete
su singola colonna
populateFolderDropdownSubscription(folders); } else {
}, alert('Failed to add subscription. Please try
error: function () { again.');
alert('Failed to fetch folders. Please try again }
TIP later.'); })
Che scegliate lo } .catch(error => {
stesso template }); alert('An error occurred. Please try again
che abbiamo later.');
usato noi o });
meno (Metronic,
}); });
https://
keenthemes.
com/metronic), il document.getElementById('addSubscriptionForm'). function populateTotals(folders, folder_id,
nostro consiglio addEventListener('submit', function (event) { subscriptions, currencyData) {
è di utilizzare event.preventDefault(); updateTotals(subscriptions, currencyData);
un modello per
il front-end. // Create a FormData object and populate it with the }
Ne trovate form data
tantissimi a const formData = new FormData(this); // 'this' refers Qui ci sono due elementi fondamentali.
prezzo molto to the form element Quando il documento è caricato, anzitutto, lo script
contenuto
fetchDataAndRender(populateTotals) recupera i dati
(facilmente entro
// Convert FormData to JSON per i totali e passa populateTotals come callback
i 50 euro) sul sito
ThemeForest const formDataJSON = {}; in modo che i dati vengano renderizzati una volta
(https:// formData.forEach((value, key) => { terminata la richiesta ( fetchDataAndRender è una
themeforest. formDataJSON[key] = value; funzione comune che vediamo dopo). Dopodiché
net/). Essendo }); c'è una richiesta AJAX che recupera l'elenco
fatti per siti Web di cartelle dal server. Quando la richiesta
e Web app, tutti // Send the data as JSON in the request body ha successo, viene richiamata la funzione
forniscono il fetch('/add_subscription', { populateFolderDropdownSubscription per popolare
codice sorgente, method: 'POST', l'elenco a discesa con le cartelle selezionabili
il che li rende
headers: { dall'utente se lo desidera. L'altro elemento è il
perfettamente
'Content-Type': 'application/json', codice che invia i dati presenti nel form al server
personalizzabili
in base alle }, sempre via AJAX. Quando l'utente preme sul
vostre esigenze body: JSON.stringify(formDataJSON), pulsante di invio del modulo, lo script impedisce
specifiche. }) l'invio al server dei dati tramite modulo per farlo
.then(response => { invece, appunto, via JavaScript. Crea un oggetto
updateTotals(subscriptions, currencyData);
const subscriptionId = getLastURLSegment();
populateFolderDropdown();
populateEditSubscriptionForm(subscriptionId);
// Fill the form fields with the subscription data Alla scoperta della dashboard
$('#description').val(data.description); La dashboard elenca tutti gli abbonamenti
$('#next_payment_date').val(formattedDate); e vi permette di modificarli, disattivarli e filtrare
$('#billing_cycle_span').val(data.billing_cycle_ l'elenco. Non analizzeremo l'HTML ma ne vedremo
span); giusto un frammento per capire come questa
$('#billing_cycle_length').val(data.billing_ pagina sia leggermente diversa dalle altre.
cycle_length); <div id="kt_app_toolbar" class="app-toolbar d-flex
$('#price').val(data.price); flex-column py-6">
$('#currency').val(data.currency); <%- include(navBar) %>
$('#auto_renew').prop('checked', data.auto_ <div class="app-toolbar-wrapper d-flex align-items-
renew); center flex-stack flex-wrap gap-2 py-4 w-100">
$('#tags').val(data.tags); All'inizio del contenuto, infatti, la dashboard
$('#folder').val(data.folder); ha una barra di navigazione che permette
$('#subscription_id').val(subscription_id); di scegliere quali abbonamenti vedere (attivi,
annullati, tutti). Per questo motivo, solo in
}, questa pagina mettiamo l'include che vedete
error: function () { e che viene gestito dalla route con:
alert('Error retrieving subscription data.'); navBar: 'navbar'
} Naturalmente navbar.ejs è il file in cui abbiamo
method: 'GET',
success: function (folders) {
folderList = folders; // Store the list of folders
$.ajax({
url: `/toggle_subscription/${subscriptionId}`,
method: 'POST',
success: function(response) {
// Subscription status toggled successfully
// Now, fetch the updated subscription data
fetchSubscriptionDataAndRenderTable();
},
error: function() {
alert('Failed to toggle the subscription status.');
}
});
}
Quando l'utente clicca sul pulsante relativo, viene
aggiornato il database e vengono ricaricati i dati.
Configurazione e opzioni
L'ultima parte lato client dell'app riguarda le
opzioni. Le funzioni JavaScript hanno quattro
scopi. La prima cambia la valuta principale
ma abbiamo scelto di non implementarla
per ora: al momento l'app di default usa l'euro
Fornite opzioni ai vostri utenti in modo che possano configurare l'app ma il codice per cambiare la valuta
TIP come preferiscono e li renderete felici!
è già presente nei file che abbiamo creato.
La progettazione La seconda è quella per le valute:
dell'interfaccia actionCell.append(toggleButton); function updateConversionRates() {
utente è un row.append(actionCell); const usdRate = $('#usd_rate').val();
processo const gbpRate = $('#gbp_rate').val();
continuo. Deve subscriptionsTable.append(row);
evolversi nel }); $.ajax({
tempo in base al } type: 'POST',
feedback degli
Questa funzione si occupa di quattro cose: url: '/update_currency_data',
utenti, alle loro
1) Calcolare la data dell'ultimo pagamento, perché data: {
esigenze e ai
progressi della non è memorizzata nel database; USD: usdRate,
tecnologia. 2) Calcolare le spese totali per ogni abbonamento; GBP: gbpRate,
Che progettiate 3) Disegnare la tabella; // Include other currency rates
una nuova app 4) Durante il disegno, aggiungere un pulsante },
basandovi su per attivare e disattivare un abbonamento success: function(response) {
questa o che e il relativo listener. // All good
modifichiate la Questo è il cuore del lato client della vostra app: },
nostra versione il rendering è velocissimo e cambia dinamicamente error: function(error) {
dell'app, iniziate
non appena, per esempio, filtrate per cartella // Handle error
conducendo
o disattivate un abbonamento. Per filtrare gli }
un'accurata
ricerca sugli abbonamenti in base alla cartella c'è un listener });
utenti per sul menu a tendina relativo: }
ottenere // Event listener for the folder filter dropdown Siccome gli utenti possono aggiungere
informazioni sulle folderFilter.addEventListener('change', function () { abbonamenti in varie valute, dobbiamo conoscere
loro preferenze var selectedFolderId = folderFilter.value; il cambio. Potreste usare API di conversione valute
e sul loro if(selectedFolderId == "all"){ ma hanno un prezzo e siccome questa versione
comportamento. selectedFolderId = false; dell'app è a singolo utente, come spiegato,
Questa ricerca } abbiamo scelto di lasciare all'utente la possibilità
costituisce la
di indicare i valori dei cambi per dollaro e sterlina.
base per decisioni
fetchDataAndRender(updateAll,selectedFolderId); Una funzione updateConversionRatesFields()
di progettazione
informate. }); avviata al caricamento della pagina si occupa
Vi permette Come vedete, se l'utente seleziona una cartella, di riempire i valori presi dal vostro database.
di capire chi tutti i dati vengono aggiornati sulla base della L'altro scopo del codice della pagina delle opzioni
sono i vostri cartella scelta. Se è stato scelto di vedere tutti è permettere di creare cartelle: non riportiamo
utenti, cosa i dati, viene semplicemente scaricato l'elenco qui il codice perché è un semplice listener su
cercano e come completo. Infine, l'ultimo pezzo di codice riguarda un dropdown. L'ultimo scopo invece è una cortesia
si aspettano di l'attivazione/annullamento di un abbonamento: ai vostri utenti: un pulsante per esportare i dati
interagire con function toggleSubscription(subscriptionId) { in formato CSV nel caso desiderassero gestire
la vostra UI.
// AJAX call to toggle the subscription status queste informazioni al di fuori dell'app:
function exportToCSV() {
$.ajax({
url: '/get_subscriptions',
method: 'GET',
success: function(data) {
const subscriptions = data;
subscriptions.forEach((subscription) => {
const row = [
subscription.subscription_name,
subscription.next_payment_date,
subscription.currency + subscription.
price,
`${subscription.billing_cycle_length}
${subscription.billing_cycle_span}`,
];
csvContent += row.join(',') + '\n';
});
Questo è l'aspetto
finale della vostra
// Create a CSV data URI Cosa vi serve per migliorarla Web app: non male
const encodedUri = encodeURI(csvContent); A questo punto avete in mano un'app fatta per un progetto
const link = document.createElement('a'); e finita che potete migliorare e proporre anche che potete mettere
link.setAttribute('href', encodedUri); in formato freemium. Quello che potete fare insieme in poco
tempo!
link.setAttribute('download', 'subscriptions. autonomamente è:
csv'); - Aggiungere il sistema di registrazione,
document.body.appendChild(link); che è essenziale per proporla. Potete farlo
link.click(); con Node.js oppure con PHP;
}, - Recuperare i cambi delle valute
error: function() { automaticamente;
alert('Error retrieving subscription data.'); - Acquistare la licenza del template grafico
} o creare un vostro pacchetto di asset.
}); Naturalmente potete poi aggiungere funzioni
} che trovate interessanti e che pensate possano
Questa chiamata AJAX recupera i dati, farvi raggiungere un pubblico più ampio e anche
dopodiché li formatta, crea un collegamento tradurre la vostra app, cosa che potete fare usando
per lo scaricamento e lo avvia. i nostri consigli dell'articolo di copertina. LXP
Chrome blindato
Crea tu l’estensione perfetta per la privacy e la sicurezza!
Il prezzo dell’abbonamento è calcolato in modo etico perché sia un chiara pienamente disponibile a valutare – e se del caso regolare – le eventuali spettanze di terzi per la
servizio utile e non in concorrenza sleale con la distribuzione in edicola. 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 Codice Privacy d.l-
Arretrati: si acquistano on-line su www.sprea.it/arretrati gs. 196/03 cosi come modificato dalle disposizioni di adeguamento alla Legge Italiana D.Lgs 101/2018.
abbonamenti@sprea.it Tel 02 87168197 (lun-ven / 9:00-13:00 e 14:00-18:00) Nel vigore del GDPR Reg. UE 679/2016 e del Codice Privacy d.lgs. 196/03 cosi come modificato dalle
329 3922420 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 prestazione contrattuale. La stes-
Bimestrale - prezzo di copertina 7,90 € FOREIGN RIGHTS sa La informa che i Suoi dati eventualmente da Lei trasmessi alla Sprea S.p.a., verranno raccolti, trat-
tati e conservati nel rispetto del decreto legislativo ora enunciato e nel pieno rispetto dell’art. 32 GDPR
www.linuxpro.it- redazione@linuxpro.it Paolo Cionti: Tel. 02 92432253 - paolocionti@sprea.it Reg. UE 679/2016 per le finalità di trattamento previste per adempiere agli obblighi precontrattuali,
La Divisione Informatica di Sprea edita anche: contrattuali e fiscali derivanti da rapporti con Lei in essere, per le finalità amministrative e di contabi-
SERVIZI CENTRALIZZATI lità, (con base giuridica contrattuale), per le finalità derivanti da obblighi di legge ed esercizio di difesa
WIN MAGAZINE - UBUNTU FACILE in giudizio, nonché per le finalità di promozione e informazione commerciale la cui unica base giuridica
APP JOURNAL - HACKER JOURNAL Art director: Silvia Taietti è basata sul consenso libero e incondizionato dell’interessato, nonché per le altre finalità previste dalla
Grafici: Alessandro Bisquola, Nicole Bombelli, Tamara Bombelli, Nicolò Digiuni, privacy policy consultabile sul sito www.sprea.it, connesse all’azienda.
Business Unit Manager: Massimiliano Zagaglia Si informa che, tenuto conto delle finalità del trattamento come sopra illustrate, il conferimento dei dati
Marcella Gavinelli, Luca Patrian necessari alle finalità è libero ma il loro mancato, parziale o inesatto conferimento potrà avere, come
Coordinamento: Chiara Civilla, Tiziana Rosato, Roberta Tempesta, Silvia Vitali conseguenza, l’impossibilità di svolgere l’attività e gli adempimenti precontrattuali e contrattuali come
Cover: Luca Patrian Amministrazione: Erika Colombo (responsabile), Silvia Biolcati, Irene Citino, previsti dal contratto di vendita e /o fornitura di prodotti e servizi.
La avvisiamo, inoltre, che i Suoi dati potranno essere comunicati e/o trattati (sempre nel rispetto della
Realizzazione editoriale a cura di: Dehive Sas di Andrea Orchesi Desirée Conti, Sara Palestra- amministrazione@sprea.it legge), anche all’estero, da società e/o persone che prestano servizi in favore della Sprea che sono state
Ufficio Legale: Francesca Sigismondi nominate responsabili del trattamento ai sensi dell’art- 28 GDPR Reg. UE 679/2016. Si specifica che non
sono effettuati trasferimenti dei dati al di fuori dell’Unione Europea. Si specifica che Sprea S.p.a non ef-
Sprea S.p.A. fettua trattamento automatizzato di informazione e dati che produca effetti giuridici che Lal riguardano
Sede Legale: Via Torino, 51 20063 Cernusco Sul Naviglio (Mi) - Italia Linux Pro, pubblicazione registrata al Tribunale di Milano il 08.02.2003 o che incida in modo analogo significativamente sulla Sua persona.
PI 12770820152- Iscrizione camera Commercio 00746350149 con il numero 74. ISSN: 1722-6163 In ogni momento Lei potrà chiedere la l’accesso ai sui dati, la rettifica dei suoi dati, la cancellazione dei
suoi dati, la limitazione al trattamento e la portabilità dei suoi dati, nonché poi esercitare la facoltà di
Per informazioni, potete contattarci allo 02 87168197 Autorizzazione ROC n° 6282 del 29/08/2001 opposizione al trattamento dei Suoi dati ovvero esercitare tutti i diritti previsti dagli artt. 15, 16, 17, 18,
20, 21 del GDPR Reg. UE 679/2016 e ss. Modifiche di adeguamento legislativo del D.Lgs. 196/03, così
Direttore responsabile: Luca Sprea come modificato dal D.Lgs 101/2018, mediante comunicazione scritta alla Sprea e/o direttamente al
CDA: Luca Sprea (Presidente), Alessandro Agnoli (Amministratore Delegato), personale Incaricato preposto al trattamento dei dati.
Giulia Spreafico (Divisione digital), Stefano Pernarella Lei potrà altresì esercitare i propri diritti rivolgendosi al Garante della Privacy, con Sede in Piazza
Distributore per l’Italia: Press-Di Distribuzione stampa e multimedia s.r.l. 20090 Segrate Venezia n. 11 – 00187 Roma, Centralino telefonico: (+39) 06.696771,Fax: (+39) 06.69677.3785. Per
informazioni di carattere generale è possibile inviare una e-mail a: garante@gpdp.it @pec.it.
ADVERTISING, SPECIAL PROJECTS & EVENTS Distributore per l’Estero: SO.DI.P S.p.A. Via Bettola, 18 - 20092 Cinisello Balsamo (MI)
Sprea S.p.a. La informa che Lei ha il diritto, ai sensi dell’art. 7 GDPR Reg. UE 679/2016 di revocare il
Segreteria: Emanuela Mapelli - Tel. 02 92432244 - emanuelamapelli@sprea.it consenso al trattamento dei suoi dati in qualsiasi momento.
Tel. +390266030400 - Fax +390266030269 - sies@sodip.it - www.sodip.it La lettura della presente informativa deve intendersi quale presa visione dell’Informativa ex art. 13 D.L-
gs. 196/03 e 13 GDPR Reg. UE 679/2016e l’invio dei Suoi dati personali alla Sprea varrà quale consenso
SERVIZIO QUALITÀ EDICOLANTI E DL espresso al trattamento dei dati personali secondo quanto sopra specificato.
Stampa: Arti Grafiche Boccia S.p.A. Via Tiberio Claudio Felice, 7- 84131 Salerno L’invio di materiale (testi, fotografie, disegni, etc.) alla Sprea S.p.A. deve intendersi quale espressa
Sonia Lancellotti, Luca Majocchi : Tel. 02 92432295 autorizzazione alla loro libera utilizzazione da parte di Sprea S.p.A. Per qualsiasi fine e a titolo gratuito,
distribuzione@sprea.it 351 5582739 Copyright: Sprea S.p.A. e comunque, a titolo di esempio, alla pubblicazione gratuita su qualsiasi supporto cartaceo e non, su
qualsiasi pubblicazione (anche non della Sprea S.p.A.), in qualsiasi canale di vendita e Paese del mondo.
ABBONAMENTI E ARRETRATI
Informativa su diritti e privacy
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 diffusione
abbonamenti@sprea.it Tel 02 87168197 (lun-ven / 9:00-13:00 e 14:00-18:00) in Italia. L’utilizzo da parte di terzi di testi, fotografie e disegni, anche parziale, è vietato. L’Editore si di- Il materiale inviato alla redazione non potrà essere restituito.
SPECIALE
IN EDICOLA
DAL 7 DICEMBRE
Acquistala su www.sprea.it/retrocomputer
versione digitale disponibile dal 4 dicembre
www.artigraficheboccia.com
tel: +39089303311
info@artigraficheboccia.com*