Skip to content

39. Conclusione

Ricordiamo il lavoro svolto in questo documento:

Capitolo
Dossier
Contenuto
   
 
Presentazione del corso
 
Configurazione dell'ambiente di lavoro
[bases]
Nozioni di base sul linguaggio Python – strutture del linguaggio – tipi di dati – funzioni – output in console – stringhe di formattazione – conversione dei tipi – liste – dizionari – espressioni regolari
[strings]
Notazione delle stringhe – metodi della classe <str> – codifica/decodifica delle stringhe in UTF-8
[exceptions]
Gestione delle eccezioni
[fonctions]
Ambito delle variabili – Modalità di passaggio dei parametri – Utilizzo dei moduli – Il Python Path – Parametri con nome – Funzioni ricorsive
[fichiers]
Lettura/scrittura di un file di testo – gestione dei file codificati in UTF-8 – gestione dei file jSON
[impots/v01]
Versione 1 dell’esercizio pratico: calcolo dell’imposta sul reddito. L’applicazione è disponibile in 18 versioni – La versione 1 implementa una soluzione procedurale
[imports]
Gestione delle dipendenze di un’applicazione tramite importazione di moduli – viene presentato un metodo di gestione delle dipendenze – utilizzato in tutto il documento – gestione del Python Path
[impots/v02]
La versione 2 dell’applicazione riprende la versione 1 raggruppando tutte le costanti di configurazione in un unico file di configurazione
[impots/v03]
La versione 3 dell'applicazione riprende la versione 2 utilizzando funzioni incapsulate in un modulo – la gestione delle dipendenze avviene tramite configurazione – introduzione del file jSON per leggere i dati necessari al calcolo dell'imposta e scrivere i risultati dei calcoli
[classes/01]
Classi – ereditarietà – metodi e proprietà – getter / setter – costruttore – proprietà [__dict__]
[classes/02]
Presentazione delle classi [BaseEntity] e [MyException] utilizzate nel resto del documento – [BaseEntity] facilita le conversioni oggetto / dizionario
[troiscouches]
Architettura a livelli e programmazione tramite interfacce. Questo capitolo presenta i metodi di programmazione utilizzati nel resto del documento
[impots/v04]
Versione 4 dell’applicazione – questa versione implementa una soluzione con un’architettura a livelli, la programmazione tramite interfacce e l’utilizzo di classi derivate da [BaseEntity] e [MyException]
[databases/mysql]
Installazione di SGBD MySQL – connessione al database – creazione di una tabella – esecuzione di comandi SQL SELECT, UPDATE, DELETE, INSERT – transazione – query SQL configurate
[databases/postgresql]
Installazione di SGBD PostgreSQL – connessione al database – creazione di una tabella – esecuzione di comandi SQL SELECT, UPDATE, DELETE, INSERT – transazione – query SQL configurate
[databases/anysgbd]
Scrivere codice indipendente da SGBD
[databases/sqlalchemy]
L’ORM (Object Relational Mapper) SqlAlchemy – un ORM permette di lavorare in modo unificato con diversi SGBD - mappatura di classi / tabelle SQL – operazioni sulle classi e sulle immagini delle tabelle SQL
[impots/v05]
Versione 5 dell’applicazione per il calcolo delle imposte – Utilizzo dell’architettura a livelli della versione 04 e delORM SqlAlchemy per lavorare con SGBD MySQL e PostgreSQL
[inet]
Programmazione Internet – protocollo TCP / IP (Transfer Control Protocol / Internet Protocol) – protocolli HTTP (HyperText Transfer Protocol) – SMTP (Simple Mail Transfer Protocol) – POP (Post Office Protocol) – IMAP (Internet Message Access Protocol)
[flask]
Servizi web con il framework web Flask – visualizzazione di una pagina HTML – servizio web jSON – richieste GET e POST – gestione di una sessione web
[impots/http-servers/01]
[impots/http-clients/01]
Versione 6 dell’esercizio pratico - Creazione di un servizio web jSON per il calcolo delle imposte con un’architettura multistrato - Scrittura di un client web per questo server con un’architettura multistrato – programmazione client/server – utilizzo del modulo [requests]
[impots/http-servers/02]
[impots/http-clients/02]
Versione 7 dell'esercizio sull'applicazione – la versione 6 è stata migliorata: client e server sono multithread – utilità [Logger] per registrare gli scambi client/server – [SendMail] per inviare un'e-mail all'amministratore dell'applicazione
[impots/http-servers/03]
[impots/http-clients/03]
Versione 8 dell’esercizio pratico – la versione 7 è stata migliorata grazie all’uso di una sessione
[xml]
Gestione XML con il modulo [xmltodict]
[impots/http-servers/04]
[impots/http-clients/04]
Versione 9 dell’esercizio applicativo – la versione 8 è stata modificata per consentire lo scambio client/server in XML;
[impots/http-servers/05]
[impots/http-clients/05]
Versione 10 dell'esercizio pratico – invece di elaborare N contribuenti tramite N richieste GET, si utilizza un'unica richiesta POST con i N contribuenti nel corpo della richiesta POST
[impots/http-servers/06]
[impots/http-clients/06]
Versione 11 dell’esercizio applicativo – l’architettura client/server dell’applicazione viene modificata: il livello [métier] passa dal server al client
[impots/http-servers/07]
Versione 12 dell’esercizio pratico – questa versione implementa un server MVC (Model – View – Controller) che fornisce, a richiesta del client, indifferentemente jSON, XML e HTML. Questo capitolo implementa le versioni jSON e XML del server
[impots/http-clients/07]
Implementazione dei client jSON e XML del server MVC della versione 12
[impots/http-servers/07]
Implementazione del server HTML della versione 12 – utilizzo del framework CSS Bootstrap –
[impots/http-servers/08]
Versione 13 dell'esercizio pratico - Rifattorizzazione del codice della versione 12 – gestione della sessione con il modulo [flask_session] e un server Redis – utilizzo di password crittografate
[impots/http-servers/09]
[impots/http-clients/09]
Versione 14 dell'esercizio pratico – implementazione di URL con un token CSRF (Cross Site Request Forgery)
[impots/http-servers/10]
Versione 15 dell’esercizio pratico – rifattorizzazione del codice della versione 14 per gestire due tipi di azioni: ASV (Action Show View), che servono solo a visualizzare una vista senza modificare lo stato del server, ADS (Azione Do Something) che eseguono un’operazione che modifica lo stato del server – queste azioni terminano tutte con un reindirizzamento verso un’azione ASV – ciò consente di gestire correttamente gli aggiornamenti della pagina nel browser del client
[impots/http-servers/11]
Versione 16 dell’applicazione – gestione delle URL con prefisso
[impots/http-servers/12]
Versione 17 dell’applicazione – migrazione della versione 16 su un server Apache / Windows
[impots/http-servers/13]
Versione 18 dell'applicazione – corregge un'anomalia della versione 17

Le applicazioni client/server per il calcolo delle imposte hanno implementato la seguente architettura:

Image

Il livello [web] sopra indicato è stato implementato con un'architettura MVC:

Image

Il contenuto del documento è denso. Il lettore che lo seguirà fino in fondo avrà una buona visione della programmazione web MVC in Python / Flask e, oltre a ciò, una buona visione della programmazione web MVC in altri linguaggi.

È possibile trovare ulteriori informazioni sul framework Flask nel documento [https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world] dell’autore Miguel Grinberg. Ho letto alcuni passaggi del suo corso e li ho trovati molto didattici. L’autore presenta molti concetti non trattati in questo documento.