Tag: nerd

Kodi 18.1 Leia su LibreELEC

kodi_18.1

Questo è lo spettacolare splash screen della nuova versione 18.1 Leia di Kodi (che gira su un sistema LibreELEC sul mio HTPC Asrock ION 330). La versione, al momento della scrittura di questo articolo, è già avanzata alla versione 18.3 (il nome in codice è ancora Leia, ma sono stati introdotte alcune migliorie minori). Questa versione di Kodi è dedicata alla Principessa Leia di Guerre Stellari interpretata dalla indimenticabile Carrie Fisher.

Permanent link to this article: http://www.andrea.rustichelli.name/kodi-18-1-leia-su-libreelec/

Linux Mint 19.1

Ormai sono più di 3 anni che utilizzo abitualmente Linux Mint sul mio portatile.
Mi sono fatto prendere da un demone interiore e ho deciso di provare ad installare un nuovo sistema operativo… la scelta è caduta su:

  • Linux Mint (la nuova versione 19.1)
  • Ubuntu (la versione 18 e qualcosa… sia la LTS sia quella più “aggiornata”)
  • Debian (la versione 9.8 sia con Gnome sia con Cinnamon)
  • Fedora (con sostanziale passaggio da “casa” Debian a “casa” Red Hat)

Li ho provati prima in un ambiente virtuale grazie a VirtualBox. Volevo provare Debian e testare anche il Desktop Engine Gnome 3, ma l’ho trovato troppo semplicistico e troppo lontano dalla mia idea di desktop. Fedora era un passaggio troppo grande… vorrebbe dire passare al lato oscuro della forza. Ubuntu… beh lasciamo stare… proprio non ce la faccio ad utilizzare un SO con un nome così aberrante.

Sono tornato sulla nuova edizione di Linux Mint 19.1 (nome in codice “Tessa”) con Cinnamon come Desktop Engine. Però non riuscivo ad installarla perché ad un certo punto dell’installazione compariva il messaggio di errore:

PCIe bus error severity=corrected type= physical layer (eccetera eccetera eccetera)

Come soluzione ho dovuto modificare i parametri in fase di boot con il comando “c” e ho aggiunto il parametro pci=nomsi. In questo modo l’installazione è terminata senza nessun problema. Ovviamente però è necessario rendere definitiva la modifica modificando opportunamente il file grub presente nella cartella /etc/default/grub nel seguente modo:

GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash pci=nomsi”

e poi è necessario ricordarsi poi di lanciare il comando
sudo update-grub

Finalmente mi posso godere il mio nuovo sistema Linux Mint 19.1 “Tessa”

Permanent link to this article: http://www.andrea.rustichelli.name/linux-mint-19-1/

Dove mi trovo? Un aiuto inaspettato dal Python

A volte capita di svegliarsi dopo una serata intensa e non sapere dove ci si trova. A questo viene in aiuto il sito geoPlugin che offre molti servizi legati alla geo localizzazione. In particolare ho trovato simpatico il servizio che, data la latitudine e la longitudine, fornisce, tramite un oggetto json, l’elenco di alcune località vicine a noi e con informazioni utili come ad esempio la distanza in miglia e kilometri e la direzione.

Questo è un esempio di url da lanciare per avere un’idea dell’output che viene prodotto:

http://www.geoplugin.net/extras/nearby.gp?lat=44.6983&lon=10.6312&format=json

Il passo successivo è stato quello di scrivere un programma in python per gestire l’output. Questo programma non prevede la modifica delle coordinate geografiche in input, se non modificando il sorgente del programma prima della sua esecuzione, però è solamente un primo passo verso qualcosa di più evoluto (ad esempio un bot Telegram).

Infatti ho trovato delle difficoltà nella formattazione corretta del tracciato json di output e della sua successiva gestione tramite la libreria json di python. Ho risolto questo problema convertendo l’output in formato UTF-8.

Molto utile anche l’utilizzo del ciclo for per la lettura dei dati json e degli elementi in esso contenuti.

Riporto di seguito il codice funzionante… andrebbe migliorato… ma funziona.

Permanent link to this article: http://www.andrea.rustichelli.name/dove-mi-trovo-un-aiuto-inaspettato-dal-python/

MusicBrainz Picard

Picard è un programma cross-platform scritto in Pyton per taggare i file musicali attingendo le informazioni dal sito MusicBrainz.

Come prima cosa è necessario installare il programma; da Linux Mint è possibile installarlo tramite riga di comando, tramite gestore delle applicazioni o, a partire dalla versione 18.3, anche tramite Flathub.

Una volta aperto Picard è possibile aggiungere un singolo file o una cartella… in questo caso ho caricato l’album Ok Computer dei Radiohead.

E’ possibile premere il pulsante Raggruppa per chiedere al programma di raggruppare i file (e quindi le canzoni) per Album. A questo punto è possibile premere il pulsante Analizza; in questo modo Picard trova (o meglio prova a trovare) le informazioni delle canzoni su Musicbrainz.

A questo punto, se l’analisi va a buon fine, l’album viene visualizzato nella parte destra della finestra (e contestualmente viene eliminato dalla parte sinistra) con l’icona del CD in colore giallo oro per confermare che l’analisi è andata a buon fine. Espandendo il CD è possibile vedere le canzoni che sono state etichettate con i TAG ricevuti dal portale Musicbrainz.

L’utilità di questo TAG è opinabile… aggiunge informazioni utili soprattutto se le canzoni vengono gestite con programmi, come ad esempio Kodi, che permettono di avere una gestione molto complessa e precisa dei file musicali presenti sul proprio computer.

Come ultima cosa è necessario selezionare il CD e premere il tasto Salva in modo da salvare le informazioni sui file di origine. L’operazione viene confermata dall’icona a forma di segno di spunta verde davanti ad ogni file salvato con successo.

Permanent link to this article: http://www.andrea.rustichelli.name/musicbrainz-picard/

Installare Retropie su SD per Raspberry

Formattare la scheda SD con il filesystem Fat32 con il programma GParted.
Ho scaricato la versione 4.3 di Retropie per Raspberry pi 3 dal sito ufficiale.
Decomprimere il file in modo da ottenere l’immagine del programma; si crea un file in formato .IMG da circa 2,2 GB. In alternativa è possibile usare il comando:

gzip -dv retropie-4.3-rpi2_rpi3.img.gz 

Con il comando il file di origine .GZ viene cancellato a meno che non venga utilizzato l’apposita opzione per conservare il file compresso.
Per comodità ho posizionato il file .img sulla Scrivania e l’ho rinominato semplicemente in retropie.img. Poi è necessario aprire la console e digitare il seguente comando:

sudo dd if=retropie.img of=/deb/sdb

per copiare l’immagine nella scheda SD che, in questo caso, è collegata al pc tramite un lettore di schede USB,dove if indica il file di input e of il file di output. Armarsi di pazienza e attendere il termine dell’operazione.

Al termine dell’operazione è possibile scollegare il lettore di schede SD e installare la scheda nell’apposito slot del Raspberry per far partire l’installazione.

Una delle funzionalità in assoluto più comode di Retropie, è la possibilità di potersi collegare direttamente tramite protocollo SSH, e questo significa che è possibile caricare i file e le ROM in Retropie senza dover sempre spostare la scheda SD ma collegandosi direttamente tramite rete. Retropie in generale è molto più configurabile rispetto a Recalbox.

Una volta partito Retropie è necessario andare nel menù di configurazione per collegarlo alla rete WiFi e successivamente per attivare il protocollo SSH.

Andare su Linux e selezionare File – Connetti al server… e inserire i seguenti parametri di login per poter collegarsi direttamente a Retropie da Linux e poter accedere al file system per copiare, ad esempio, le varie ROM con i giochi. Nel mio caso l’indirizzo IP di Retropie era 192.168.1.102, sulla porta 22 con nome utente pi e password di default (che però adesso non ricordo).

Facendo ripartire Retropie è possibile iniziare a giocare…

Permanent link to this article: http://www.andrea.rustichelli.name/installare-retropie-su-sd-per-raspberry/

Installare Recalbox su SD per Raspberry

Formattare la scheda SD con il filesystem Fat32 con il programma GParted. Ho scaricato la versione 17.12.02 di Recalbox dal sito ufficiale.
Aprire il terminale ed eseguire il comando
unxz recalbox.img.xz
per creare il file in formato .img da poco più di 2 GB.
Eseguire il comando
sudo dd if=recalbox.img of=/dev/sdb
per copiare l’immagine nella scheda SD che, in questo caso, è collegata al pc tramite un lettore di schede USB.
Al termine dell’operazione è possibile scollegare il lettore di schede SD e installare la schede nell’apposito slot del Raspberry per far partire l’installazione.

Permanent link to this article: http://www.andrea.rustichelli.name/%ef%bb%bfinstallare-recalbox-su-sd-per-raspberry/

Total Digital Experience

Ormai sappiamo tutti cos’è la “customer experience”… è una delle espressioni maggiormente utilizzate in organizzazione, marketing, gestione aziendale, organizzazione lean, ecc. ecc.
Ma ai nostri giorni la “customer experience” (è inutile affermare il contrario) deriva da una sempre maggiore informatizzazione dei processi e delle modalità di interazione tra il cliente e la società fornitrice del bene/servizio. Sia ben chiaro che la “customer experience” è anche altro… ma comunque poco altro rispetto all’informatica.

E come diceva un mio professore alla facoltà di ingegneria informatica:

“un programma o funziona o non funziona. E se un programma funziona… funziona per tutti.”

Questa frase mi ha sempre fatto riflettere, soprattutto quando si fanno interventi software volti a migliorare la “customer experience”. Trovo riduttivo infatti ricondurre uno sviluppo software al soddisfacimento dei bisogni o per aumentare la soddisfazione dei clienti. Se uno sviluppo software funziona, funziona sia per i clienti sia per i clienti interni (ovvero coloro che all’interno delle società si occupano delle attività oggetto di sviluppo). Proprio perché se uno sviluppo software viene fatto bene, con logica, con coerenza e con un obiettivo ben definito, i vantaggi non sono limitati al cliente “esterno”, ma si propagano (magari in modo ridotto) anche sui “worker” (ovvero coloro che agiscono il processo che ha beneficiato dell’intervento software). Ecco che in questo caso allora i “worker” diventano veramente clienti “interni” nel senso che anche loro beneficiano dell’intervento di evoluzione software.
Beh quindi a questo punto mi chiedo se abbia ancora senso parlare di “customer experience”. Secondo me i benefici dell’intervento devono essere riassunti in questo modo:”

“customer experience” (anche detta “internal customer experience”) + “worker experience” (anche detta “external customer experience”) = “total digital experience”

Proprio perchè l'”experience” migliora per tutti gli attori coinvolti nel processi oggetto di sviluppo e la natura dell’intervento è (ormai quasi sempre) puramente digitale.

Come ultima cosa, vorrei farvi notare come questo sia il post che, a livello mondiale, ha il maggior numero di ” (doppi apici).

Permanent link to this article: http://www.andrea.rustichelli.name/total-digital-experience/

Asrock Ion 330

E’ un po’ che volevo scrivere questo articolo per documentare l’acquisto e il successivo modding che ho fatto all’ASrock Ion 330. Ho comprato questo PC per utilizzarlo come HTPC attaccato alla mia televisione tramite cavo HDMI. Inizialmente ho usato Windows XP con sopra Media Portal e successivamente XBMC. Adesso lo utilizzo con LibreElec e Kodi come media player.

L’idea che avevo fin dall’inizio era quella di rimuovere il lettore DVD, inserire due dischi, uno per il sistema operativo e uno per contenere tutti i file multimediali da utilizzare sull’HTPC. Inoltre volevo installare una nuova ventola enorme, potente ma silenziosissima. Ecco la storia fotografica dall’unboxing fino all’assemblaggio finale del mio modding. In fondo all’articolo ho inserito anche la documentazione ufficiale in formato PDF.

Unboxing

Ecco come appare l’ASrock Ion 330. Nella parte frontale si trova il lettore DVD e il pulsante di accesione; mentre nella parte posteriore si trovano lo spinotto per l’alimentazione, le uscite audio tra cui una digitale, la porta per il cavo di rete (anche se è disponibile il modulo WiFi), 6 porte USB, pa porta HDMI, l’uscita video e l’eSata per i dischi esterni che supportano questo formato.

Lo smontaggio

Svitando le viti sul pannello posteriore è possibile togliere la parte superiore del case per avere pieno accesso al case e da lì iniziare a smontare tutti i componenti. Come detto l’idea era quella di togliere il lettore DVD in modo da fare arrivare l’aria della nuova ventola direttamente sui dischi e sui processori, aumentando il potere di raffreddamento dell’intero sistema e, al contempo, diminuire la rumorosità.

Fori di ventilazione e frontale

Purtroppo, considerando le mie scarse abilitò manuali, ho fatto un lavoro molto “hard” per creare il foro nella parte alta del case. Nel supporto interno invece ho praticato facilmente il foro utilizzando il Dremel. Nella parte alta del case ho fatto un buco in modo da poterci alloggiare una ventola abbastanza grossa appoggiata su 4 piedini in silicone in modo da azzerare completamente il rumore dovuto alle vibrazioni. Infine ho dovuto praticare un altro foro piccolo per fare passare il cavo di alimentazione della ventola e poterlo collegare alla presa presente nella scheda madre.

Il riassemblaggio

Ora non resta che riassemblare il tutto.

Permanent link to this article: http://www.andrea.rustichelli.name/asrock-ion-330/

Sebastian Raschka – Machine Learning con Python

Libro interessante ma, per quanto mi riguarda, poco pratico.

Questo libro parla delle principali tecniche di machine learning, ovvero:

  • apprendimento con supervisione
  • apprendimento senza supervisione
  • apprendimento di rafforzamento

Dopo una ampia ed esaustiva introduzione teorica, si inizia a parlare in Python e le librerie utilizzate sono:

  • NumPy
  • SciPy
  • scikit-learn
  • matplotlib
  • pandas.

Permanent link to this article: http://www.andrea.rustichelli.name/sebastian-raschka-machine-learning-con-python/

La nascita del Vero Uomo 2.0

Se in epoche passate, dove l’informatica era una materia conosciuta da pochi eletti, il Vero Uomo utilizzava sistemi Unix, adesso, dove  l’informatica è diventata una sottocategoria dell’elettronica di consumo, il Vero Uomo 2.0 utilizza (anche) Windows. E il Mangiatore di Quiche che fine ha fatto? Esiste ancora? Si, il Mangiatore di Quiche esiste ancora e usa un qualsiasi prodotto della Mela o un Tablet (di qualsiasi marca) in quanto li considera entrambi soluzioni informatiche avanzate; non si accorge che stanno uccidendo la Vera Informatica.

L’informatica di consumo (che è quella che piace ai Mangiatori di Quiche) è diventata talmente modaiola, poco affascinante e quanto di più lontano dalla Vera Informatica ci possa essere, da rendere i sistemi Microsoft (e quindi, di conseguenza, i personal computer non iQualcosa) degni di un Vero Uomo 2.0.

I veri uomini sono i veri smanettoni e adesso che Windows sta morendo a causa della sua incapacità di rimanere uguale alle versioni che ne hanno determinato il successo i veri uomini sono quelli che usano sistemi operativi alternativi… ma sempre meno di nicchia.L’importante è che il Vero Uomo ne sappia di informatica e sia uno smanettone… comprare un pc da 2.000 € solo perché è costoso non aggiunge nessun valore alla persona che rimane, di conseguenza, un Mangiatore di Quiche. Perchè la verità è che sul nuovo portatile era installata una versione del nuovissimo Windows 10 e, piuttosto di imparare ad utilizzare questo “nuovo” sistema operativo, ho preferito imparare ad utilizzare Linux Mint per le attività di tutti i giorni. E devo ammettere che mi sto adattando molto bene e il divertimento e il piacere aumentano giorno dopo giorno.

E poi vuoi mettere la sensazione di potenza quando per spegnere un pc devi scrivere sulla riga di comando (preferibilmente la BASH Shell):

shutdown -h now

Permanent link to this article: http://www.andrea.rustichelli.name/la-nascita-del-vero-uomo-2-0-2/

Microsoft Service Agreement

Ero curioso di leggermi il Service Agreement di Microsoft dopo aver visto la puntata di South Park con la parodia di “The Human Cent iPad” e degli “Apple Terms” di Apple che vengono sempre accettati senza mai leggere veramente il loro contenuto.

Mi sono guardato i servizi legati a Windows Live ed è Interessante quello che c’è scritto al punto 3.3 delle condizioni:

3.3. Quali operazioni effettua Microsoft sul contenuto dell’utente? Quando l’utente carica contenuto nei servizi, accetta che tale contenuto venga utilizzato, modificato, adattato, salvato, riprodotto, distribuito e visualizzato nella misura necessaria per proteggere se stesso e fornire, proteggere e migliorare i prodotti e i servizi Microsoft. Ad esempio, Microsoft potrà, occasionalmente, utilizzare mezzi automatici per isolare informazioni presenti in messaggi di posta elettronica, chat o foto allo scopo di consentire il rilevamento di posta indesiderata e malware o per migliorare i servizi con nuove funzionalità che ne semplifichino l’utilizzo. Durante l’elaborazione del contenuto, Microsoft eseguirà una procedura necessaria a garantire la riservatezza dei dati dell’utente.

Beh mi fa piacere sapere che Microsoft analizzerà il contenuto dei miei file per la mia sicurezza (non si sa mai che in un file che ho caricato ci sia una bomba o un batterio killer nocivo per la mia salute.
Ovviamente sono sicuro che clausole simili siano presenti in tutti i servizi in line (Google Drive, Dropbox, ecc), però è sempre piacevole sapere che le grandi Internet Company si occupino della nostra sicurezza personale.

Permanent link to this article: http://www.andrea.rustichelli.name/microsoft-service-agreement/

AA.VV. – Corso pratico di Arduino (3 moduli)

Giusto per curiosità ho acquistato tre libri editi da “Area 51 publishing” sul sistema Arduino e la possibilità di collegarci dispositivi di input/output e sulla relativa programmazione.

Per quanto riguarda il primo volume, dopo una introduzione veloce al sistema Arduino e all’utilizzo dell’IDE, il libro affronta i seguenti casi pratici:

  • far lampeggiare un LED
  • far lampeggiare 2 LED
  • leggere dati digitali da seriale
  • leggere dati analogici da seriale
  • accendere LED tramite pulsante
  • leggere segnali da fotoresistenza
  • accendere LED tramite fotoresistenza
  • LED RGB con regolazione manuale
  • comandare un servomotore
  • comandare un servo mediante potenziometro
  • comandare un servo mediante due pulsanti
  • LCD con Arduino
  • LCD e sensore di temperatura
  • comandare un motore passo passo
  • generare una melodia

alla fine del libro è presente un link dove poter scaricare tutti gli sketch presenti nel libro. Ogni sperimentazione è spiegata in modo non troppo approfondito ma permette ai neofiti di farsi un’idea sul funzionamento complessivo del sistema e rappresenta una buona base di partenza per ulteriori sviluppi o implementazioni. E’ presente anche una paginetta dedicata alla spiegazione dei colori utilizzati sulle resistenze per capire il valore della resistenza e la sua tolleranza.

Nel secondo libro, ovvero nel modulo intermedio, viene trattata la realizzazione di un modellino di auto radiocomandata gestita da Arduino con l’utilizzo di due motori elettrici comandati da remoto tramite un modulo bluetooth. Il progetto viene spiegato in modo approfondito e sono presenti molte pagine di codice ma non l’ho trovato particolarmente interessante.

Il terzo e ultimo volume, quello relativo agli argomenti più avanzati, è diviso in due sezioni (ogni sezione è lunga circa 20 pagine). Nella prima sezione vengono descritti in modo approfondito i vari sensori che possono essere collegati ad Arduino come i sensori di prossimità, le fotoresistenze, i sensori di temperatura e umidità. Nell’ultima parte viene presentato l’ambiente di sviluppo per App denominato App Inventor. Nel complesso nulla di che… il primo volume risulta di gran lunga il più interessante.

I 3 libri appena recensiti li ho acquistati in formato ePub… costano pochi euro e sono formati di una cinquantina di pagine ciascuno.

Permanent link to this article: http://www.andrea.rustichelli.name/aa-vv-corso-pratico-di-arduino-3-moduli/

Installare VirtualBox su Linux Mint

Non perdo tempo a spiegare cosa sia VirtualBox della Oracle .

Come prima cosa è necessario andare sul sito VirtualBox e scaricare l’ultima versione disponibile per il proprio sistema operativo. Alla data di questo articolo la versione disponibile è la 5.2.22. Ricordatevi di scaricare anche il VirtualBox Extension Pack per aggiungere funzionalità aggiuntive come il supporto USB 2.0 e 3.0, la crittografia dei dischi e il supporto alle schede Intel con tecnologia NVMe e PXE.

Per Linux Mint io ho scaricato la versione “All distrubutions” che scarica un file con estensione .run da eseguire da console. Il file ha estensione .run e occupa circa 68 MB, mentre il file con l’Extension Pack (unico per tutte le distribuzioni in quanto funziona com un plugin) occupa circa 20 MB.

Per eseguire l’installazione è necessario dare i permessi di esecuzione al file appena scaricato mediante il comando

chmod +x VirtualBox-5.2.22-126460-Linux_amd64.run

e successivamente digitare

sudo ./VirtualBox-5.2.22-126460-Linux_amd64.run

Quando VirtualBox è stato correttamente installato è necessario andare nel menù File – Preferenze – Estensioni e caricare l’Extensin Pack precedentemente scaricato.

Infine, come ultimo passo, è necessario dare accesso a VirtualBox al sottosisitema USB; per fare questo è necessario che l’utente che esegue VirtualBox appartenza al gruppo vboxuser. Per associare l’utente al gruppo è necessario aprire il terminale e digitare il seguente comando:

sudo usermod -aG vboxusers <USERNAME>

Dove, ovviamente USERNAME è il nome dell’utente che esegue VirtualBox.

Permanent link to this article: http://www.andrea.rustichelli.name/installare-virtualbox-su-linux-mint/

Roger… il primo bot per Telegram scritto in Python

Partiamo con il primo bot per Telegram scritto in python.

Come prima cosa utilizzare il bot BotFather di Telegram per creare un nuovo bot e copiare il codice di attivazione che dovrà essere inserito nel codice del programma.

Questo bot farà una cosa molto semplice, ovvero analizza il formato del messaggio digitato e non farà altro che riproporlo nel formato:

Roger... TESTO DIGITATO SU TELEGRAM... passo...

Oltre ad interagire direttamente all’interno di Telegram, il programma visualizzaerà anche i messaggi digitati all’interno della finestra dove lo script è in esecuzione.

Anticipo che Telegram può essere scaricato per qualsiasi piattaforma compreso iOS e Linux… in questo modo è possibile utilizzare dispositivi più comodi rispetto al solito smartphone.

Qui di seguito è riportato il testo funzionante di questo primo e semplice bot.

import time
import telepot
import json
from telepot.loop import MessageLoop

def handle(msg):
content_type, chat_type, chat_id = telepot.glance(msg)
print(content_type, chat_type, chat_id)

if content_type == 'text':
text = msg['text']
bot.sendMessage(chat_id, 'Roger... ' + text + '...passo...')
print(msg["from"] ["first_name"] + " ha scritto " + msg["text"])

bot = telepot.Bot('COPIARE_CODICE_ATTIVAZIONE_BOT')
MessageLoop(bot, handle).run_as_thread()
print('BOT in ascolto ...')
# Questo ciclo itera il programma (agisce come un processo sempre attivo)
while 1:
time.sleep(10)

Questa è una schermata tratta da Telegram (questa è la versione per linux)

e questo è lo stesso output che si può leggere nella console.

Permanent link to this article: http://www.andrea.rustichelli.name/roger-il-primo-bot-per-telegram-scritto-in-python/

Facciamo un salto nel passato ed evolviamoci a 3-tier

Giusto per capirci, l’architettura a 3 livelli o “3-tier architecture” non è proprio un paradigma dell’ultima ora. Possiamo dire che si è affermata sul finire del XX° millennio e nei primi anni 2000 con la grandissima diffusione di internet (e quindi di applicazioni di rete con accesso ad un database) e con l’affermarsi del paradigma di programmazione OOP ovvero Object Oriented Programming. Grazie soprattutto all’espansione continua e inarrestabile del linguaggio Java e del pattern MVC (Model View Controller) tutto è stato separato in 3 livelli diversi, ciascuno con la propria specificità.

In particolare, come si può vedere dai file allegati, già nella versione 5 e 6 del JBuilder (epico IDE della Borland per lo sviluppo di applicazioni Java) si parla di architetture a 3 livelli e sono citate tecnologie e “best practice” per programmare architetture in formato “3-tier”.  Se consideriamo che il JBuilder 5 e 6 risalgono all’anno 2001 direi che è facile capire come questa architettura sia tutt’altro che recente.

Lo schema dell’architettura è tratto dal sito https://security.stackexchange.com ed è stata rilasciata con copyleft e quindi riutilizzabile.

Permanent link to this article: http://www.andrea.rustichelli.name/facciamo-un-salto-nel-passato-ed-evolviamoci-a-3-tier/