Lanalisi e le scelte nello sviluppo di un plugin

Post on 29-Jan-2018

511 views 0 download

Transcript of Lanalisi e le scelte nello sviluppo di un plugin

L'analisi e le scelte nello sviluppo di un pluginScelta degli strumenti e delle metodologie per migliorare i tempi e la qualità del software. Conoscere le potenzialità che TYPO3 ci offre sia con le modalità di sviluppo classico (tslib_pibase), sia con lo sviluppo MVC (ExtBase).

Federico Bernardin <federico@bernardin.it>

T3Camp ItaliaL’evento italiano dedicato a

Bologna 27/28 Ottobre 2011

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

About me

About me

Mi occupo di progettazione e dello sviluppo di siti web con TYPO3 dal 2004, ho all’attivo alcuni plugin, tra cui xflextemplate, da Aprile 2010 sono TYPO3 Certified Integrator.

Sono libero professionista e mi occupo di consulenza informatica.

In particolare seguo i progetti web per l’agenzia Pallino & Co. di Padova, dove coordino il team di sviluppatori su

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Obiettivi

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Obiettivi

Possibilità di riportarmi ad una versione precedente alle ultime modifiche.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Obiettivi

Possibilità di riportarmi ad una versione precedente alle ultime modifiche.

Possibilità di lavoro in team, dove più persone modificano lo stesso file (non le stesse righe).

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Obiettivi

Possibilità di riportarmi ad una versione precedente alle ultime modifiche.

Possibilità di lavoro in team, dove più persone modificano lo stesso file (non le stesse righe).

Comodità nella scrittura del codice, aiuto nella scrittura delle funzioni.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Obiettivi

Possibilità di riportarmi ad una versione precedente alle ultime modifiche.

Possibilità di lavoro in team, dove più persone modificano lo stesso file (non le stesse righe).

Comodità nella scrittura del codice, aiuto nella scrittura delle funzioni.

Sistemi di controllo della sintassi.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Obiettivi

Possibilità di riportarmi ad una versione precedente alle ultime modifiche.

Possibilità di lavoro in team, dove più persone modificano lo stesso file (non le stesse righe).

Comodità nella scrittura del codice, aiuto nella scrittura delle funzioni.

Sistemi di controllo della sintassi.

Integrazione con FTP o gestione di cartelle remote.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Obiettivi

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Obiettivi

Processo di controllo della pubblicazione e dello sviluppo mediante task control, features e milestone.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Obiettivi

Processo di controllo della pubblicazione e dello sviluppo mediante task control, features e milestone.

Aiuto nell'analisi del plugin.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Obiettivi

Processo di controllo della pubblicazione e dello sviluppo mediante task control, features e milestone.

Aiuto nell'analisi del plugin.

Sistemi di refactoring.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Obiettivi

Processo di controllo della pubblicazione e dello sviluppo mediante task control, features e milestone.

Aiuto nell'analisi del plugin.

Sistemi di refactoring.

Sistemi di test e controllo.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Obiettivi

Processo di controllo della pubblicazione e dello sviluppo mediante task control, features e milestone.

Aiuto nell'analisi del plugin.

Sistemi di refactoring.

Sistemi di test e controllo.

Utilizzo delle funzioni integrate in TYPO3.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Analisi e briefing

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Analisi e briefing

La prima operazione e forse la più complessa e delicata è la raccolta delle informazioni per sviluppare un’estensione effettivamente attinente alle richieste del cliente.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Analisi e briefing

La prima operazione e forse la più complessa e delicata è la raccolta delle informazioni per sviluppare un’estensione effettivamente attinente alle richieste del cliente.

Errori in questa fase si ripercuotono poi in maniera altamente traumatica sulla fase di sviluppo, richiedendo a volte la necessità di un refactoring dell’applicazione.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Strumenti

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Strumenti

IDE (Integrated Development Environment) è l’applicazione con cui lavoriamo principalmente durante lo sviluppo e che ci deve fornite tutte le funzioni di cui abbiamo bisogno durante la scrittura del codice.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Strumenti

IDE (Integrated Development Environment) è l’applicazione con cui lavoriamo principalmente durante lo sviluppo e che ci deve fornite tutte le funzioni di cui abbiamo bisogno durante la scrittura del codice.

Sistema di versioning. Questa applicazione ci deve dare tutte le funzioni per poter gestire il versionamento del codice, soprattutto in una modalità multi utente.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Strumenti

IDE (Integrated Development Environment) è l’applicazione con cui lavoriamo principalmente durante lo sviluppo e che ci deve fornite tutte le funzioni di cui abbiamo bisogno durante la scrittura del codice.

Sistema di versioning. Questa applicazione ci deve dare tutte le funzioni per poter gestire il versionamento del codice, soprattutto in una modalità multi utente.

Sistema di gestione del processo con task, bugs, features, con integrazione del processo di versionamento e pubblicazioni delle modifiche.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Strumenti

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Strumenti

Sistema di test e controlli, per poter ridurre il carico di lavoro in caso di modifiche al codice.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Strumenti

Sistema di test e controlli, per poter ridurre il carico di lavoro in caso di modifiche al codice.

Sistema di pubblicazione mediante protocollo FTP dell’applicazione su server remoti.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Subversion definizione e vantaggi

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Subversion definizione e vantaggi

Subversion è un’applicazione server per la gestione multi utente del versionamento.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Subversion definizione e vantaggi

Subversion è un’applicazione server per la gestione multi utente del versionamento.

SVN garantisce la possibilità di riportarsi ad una qualsiasi versione salvata precedentemente o confrontare due revisioni.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Subversion definizione e vantaggi

Subversion è un’applicazione server per la gestione multi utente del versionamento.

SVN garantisce la possibilità di riportarsi ad una qualsiasi versione salvata precedentemente o confrontare due revisioni.

SVN garantisce la possibilità di effettuare la fusione (merge) del codice, magari sviluppato da persone diverse.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Subversion definizione e vantaggi

Subversion è un’applicazione server per la gestione multi utente del versionamento.

SVN garantisce la possibilità di riportarsi ad una qualsiasi versione salvata precedentemente o confrontare due revisioni.

SVN garantisce la possibilità di effettuare la fusione (merge) del codice, magari sviluppato da persone diverse.

SVN permette di creare delle patch che permettono l’aggiornamento del codice da una revisione a quella attuale.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

SVN: un esempio

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

SVN: un esempio

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

SVN: un esempio

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Eclipse-Aptana definizione e vantaggi

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Eclipse-Aptana definizione e vantaggi

Eclipse è uno strumento inizialmente sviluppato da IBM per JAVA. Oggi è un IDE ottimizzato per l’uso di svariati linguaggi, come ad esempio PHP.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Eclipse-Aptana definizione e vantaggi

Eclipse è uno strumento inizialmente sviluppato da IBM per JAVA. Oggi è un IDE ottimizzato per l’uso di svariati linguaggi, come ad esempio PHP.

Aptana è un plugin di Eclipse che permette di utilizzare FTP, e di avere un editor PHP integrato con SVN e Mylyn plugin.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Eclipse-Aptana definizione e vantaggi

Eclipse è uno strumento inizialmente sviluppato da IBM per JAVA. Oggi è un IDE ottimizzato per l’uso di svariati linguaggi, come ad esempio PHP.

Aptana è un plugin di Eclipse che permette di utilizzare FTP, e di avere un editor PHP integrato con SVN e Mylyn plugin.

Aptana e il suo editor PHP (PDT) permettono la gestione del template e dell’autocomplete, rendendo meno gravoso la scrittura del codice da parte dell’utente.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Eclipse-Aptana definizione e vantaggi

Eclipse è uno strumento inizialmente sviluppato da IBM per JAVA. Oggi è un IDE ottimizzato per l’uso di svariati linguaggi, come ad esempio PHP.

Aptana è un plugin di Eclipse che permette di utilizzare FTP, e di avere un editor PHP integrato con SVN e Mylyn plugin.

Aptana e il suo editor PHP (PDT) permettono la gestione del template e dell’autocomplete, rendendo meno gravoso la scrittura del codice da parte dell’utente.

Aptana (Eclipse) possiede moltissimi plugin che estendono le funzionalità base come ad esempio il debugger e la gestione del refactoring.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Eclipse-Aptana: diamogli un occhio

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Eclipse-Aptana: diamogli un occhio

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

TYPO3 Forge definizione e vantaggi

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

TYPO3 Forge definizione e vantaggi

Forge raggiungibile all’indirizzo http://forge.typo3.org è un servizio che l’associazione mette a disposizione per poter avere un ambiente dove sviluppare e mantenere le proprie estensioni pubbliche.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

TYPO3 Forge definizione e vantaggi

Forge raggiungibile all’indirizzo http://forge.typo3.org è un servizio che l’associazione mette a disposizione per poter avere un ambiente dove sviluppare e mantenere le proprie estensioni pubbliche.

Forge si basa su Redmine un application project framework per la gestione dei progetti scritto in ruby on rails.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

TYPO3 Forge definizione e vantaggi

Forge raggiungibile all’indirizzo http://forge.typo3.org è un servizio che l’associazione mette a disposizione per poter avere un ambiente dove sviluppare e mantenere le proprie estensioni pubbliche.

Forge si basa su Redmine un application project framework per la gestione dei progetti scritto in ruby on rails.

Automaticamente viene creato un’ambiente pronto per mantenere le nostre estensioni con un repository svn compreso.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

TYPO3 Forge definizione e vantaggi

Forge raggiungibile all’indirizzo http://forge.typo3.org è un servizio che l’associazione mette a disposizione per poter avere un ambiente dove sviluppare e mantenere le proprie estensioni pubbliche.

Forge si basa su Redmine un application project framework per la gestione dei progetti scritto in ruby on rails.

Automaticamente viene creato un’ambiente pronto per mantenere le nostre estensioni con un repository svn compreso.

E’ possibile gestire nuove richieste per bug fixing, features e task.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

TYPO3 Forge definizione e vantaggi

Forge raggiungibile all’indirizzo http://forge.typo3.org è un servizio che l’associazione mette a disposizione per poter avere un ambiente dove sviluppare e mantenere le proprie estensioni pubbliche.

Forge si basa su Redmine un application project framework per la gestione dei progetti scritto in ruby on rails.

Automaticamente viene creato un’ambiente pronto per mantenere le nostre estensioni con un repository svn compreso.

E’ possibile gestire nuove richieste per bug fixing, features e task.

Il sistema si integra perfettamente con Eclipse potendo recuperare la lista delle segnalazioni da remoto tramite il plugin Mylyn.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

TYPO3 Forge

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

TYPO3 Forge

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

TYPO3 Forge

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

TYPO3 Forge

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

TYPO3 Forge

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

TYPO3 Forge

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

TYPO3 come framework

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

TYPO3 come framework

TYPO3 non è solo un CMS ma bensì un framework, fornendo una serie di librerie che aiutano a gestire le varie funzionalità, senza la necessità di scrivere ridondanti funzioni.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

TYPO3 come framework

TYPO3 non è solo un CMS ma bensì un framework, fornendo una serie di librerie che aiutano a gestire le varie funzionalità, senza la necessità di scrivere ridondanti funzioni.

L’estensione extdeveval, permette di aggiungere nella barra superiore di TYPO3 un’icona che permette di vedere le varie classi e funzioni che TYPO3 mette a disposizione per gli sviluppatori

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

TYPO3 come framework

TYPO3 non è solo un CMS ma bensì un framework, fornendo una serie di librerie che aiutano a gestire le varie funzionalità, senza la necessità di scrivere ridondanti funzioni.

L’estensione extdeveval, permette di aggiungere nella barra superiore di TYPO3 un’icona che permette di vedere le varie classi e funzioni che TYPO3 mette a disposizione per gli sviluppatori

Un’alternativa è andare ad api.typo3.org, dove potete trovare la lista completa delle funzioni all’interno del sistema.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

I test

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

I test

Una delle parti più complesse e importanti dello sviluppo di un plugin sono i test.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

I test

Una delle parti più complesse e importanti dello sviluppo di un plugin sono i test.

In genere in PHP esiste PHP Unit Test che fornisce una serie di librerie per poter effettuare dei test sul software realizzato.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

I test

Una delle parti più complesse e importanti dello sviluppo di un plugin sono i test.

In genere in PHP esiste PHP Unit Test che fornisce una serie di librerie per poter effettuare dei test sul software realizzato.

L’estensione PHP Unit (<phpunit>) di TYPO3 ci da la possibilità di testare e verificare i nostri test case.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

I test

Una delle parti più complesse e importanti dello sviluppo di un plugin sono i test.

In genere in PHP esiste PHP Unit Test che fornisce una serie di librerie per poter effettuare dei test sul software realizzato.

L’estensione PHP Unit (<phpunit>) di TYPO3 ci da la possibilità di testare e verificare i nostri test case.

I test diventano importanti nei casi in cui un piccolo refactor potrebbe modificare il comportamento del codice, riducendo fortemente i tempi di test.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Scelta del paradigma

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Scelta del paradigma

In TYPO3 abbiamo due soluzioni fondamentali (incorporate direttamente del sistema) per sviluppare il nostro plugin.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Scelta del paradigma

In TYPO3 abbiamo due soluzioni fondamentali (incorporate direttamente del sistema) per sviluppare il nostro plugin.

Effettuando l’extend della classe tslib_pibase possiamo sviluppare un plugin con il paradigma OOP (Object Oriented Programming). Questa classe ci fornisce una serie di funzionalità base utili per implementare la nostra estensione.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Scelta del paradigma

In TYPO3 abbiamo due soluzioni fondamentali (incorporate direttamente del sistema) per sviluppare il nostro plugin.

Effettuando l’extend della classe tslib_pibase possiamo sviluppare un plugin con il paradigma OOP (Object Oriented Programming). Questa classe ci fornisce una serie di funzionalità base utili per implementare la nostra estensione.

Un’alternativa più nuova è sicuramente l’utilizzo di un paradigma MVC (model view controller). L’associazione ha creato un’estensione (<extbase>) che permette di utilizzare il paradigma MVC dentro la nostra estensione.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Scelta del paradigma

In TYPO3 abbiamo due soluzioni fondamentali (incorporate direttamente del sistema) per sviluppare il nostro plugin.

Effettuando l’extend della classe tslib_pibase possiamo sviluppare un plugin con il paradigma OOP (Object Oriented Programming). Questa classe ci fornisce una serie di funzionalità base utili per implementare la nostra estensione.

Un’alternativa più nuova è sicuramente l’utilizzo di un paradigma MVC (model view controller). L’associazione ha creato un’estensione (<extbase>) che permette di utilizzare il paradigma MVC dentro la nostra estensione.

Extbase è nata per permettere di creare applicazioni MVC FLOW3-compatibili.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Documentazione

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Documentazione

Lo sviluppo di un’estensione deve essere sempre accompagnata da documentazione che descrive il funzionamento tecnico del codice e soprattutto di documentazione di utilizzo.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Documentazione

Lo sviluppo di un’estensione deve essere sempre accompagnata da documentazione che descrive il funzionamento tecnico del codice e soprattutto di documentazione di utilizzo.

Tramite il sito typo3.org è possibile scaricare l’estensione (<doc_template>) che contiene il manuale che dovrebbe essere poi usato per scrivere la documentazione di utilizzo della nostra estensione.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Documentazione

Lo sviluppo di un’estensione deve essere sempre accompagnata da documentazione che descrive il funzionamento tecnico del codice e soprattutto di documentazione di utilizzo.

Tramite il sito typo3.org è possibile scaricare l’estensione (<doc_template>) che contiene il manuale che dovrebbe essere poi usato per scrivere la documentazione di utilizzo della nostra estensione.

Un’estensione senza manuale è un’estensione inutile e nel futuro potrebbero essere eliminate le estensioni senza manuale d’uso.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Documentazione

Lo sviluppo di un’estensione deve essere sempre accompagnata da documentazione che descrive il funzionamento tecnico del codice e soprattutto di documentazione di utilizzo.

Tramite il sito typo3.org è possibile scaricare l’estensione (<doc_template>) che contiene il manuale che dovrebbe essere poi usato per scrivere la documentazione di utilizzo della nostra estensione.

Un’estensione senza manuale è un’estensione inutile e nel futuro potrebbero essere eliminate le estensioni senza manuale d’uso.

Il manuale dovrebbe essere scritto, anche in minima parte, ancor prima di scrivere il codice

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Alcuni consigli

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Alcuni consigli

Fare un’analisi molto dettagliata, non lasciando troppe incognite che richiedano poi un rifacimento dell’analisi.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Alcuni consigli

Fare un’analisi molto dettagliata, non lasciando troppe incognite che richiedano poi un rifacimento dell’analisi.

Stabilire sulla base dell’applicazione il paradigma da usare: OOP come tslib_pibase oppure MVC con extbase, valutando attentamente i pro e i contro.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Alcuni consigli

Fare un’analisi molto dettagliata, non lasciando troppe incognite che richiedano poi un rifacimento dell’analisi.

Stabilire sulla base dell’applicazione il paradigma da usare: OOP come tslib_pibase oppure MVC con extbase, valutando attentamente i pro e i contro.

Cercare sempre sul TER se esistono estensioni già sviluppate ed affidabili che possano essere usate estendendole così da evitare di scrivere codice.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Alcuni consigli

Fare un’analisi molto dettagliata, non lasciando troppe incognite che richiedano poi un rifacimento dell’analisi.

Stabilire sulla base dell’applicazione il paradigma da usare: OOP come tslib_pibase oppure MVC con extbase, valutando attentamente i pro e i contro.

Cercare sempre sul TER se esistono estensioni già sviluppate ed affidabili che possano essere usate estendendole così da evitare di scrivere codice.

Creare il codice in modo che possano essere usate le unit test per effettuare i test dell’applicazione.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Alcuni consigli

Fare un’analisi molto dettagliata, non lasciando troppe incognite che richiedano poi un rifacimento dell’analisi.

Stabilire sulla base dell’applicazione il paradigma da usare: OOP come tslib_pibase oppure MVC con extbase, valutando attentamente i pro e i contro.

Cercare sempre sul TER se esistono estensioni già sviluppate ed affidabili che possano essere usate estendendole così da evitare di scrivere codice.

Creare il codice in modo che possano essere usate le unit test per effettuare i test dell’applicazione.

Inserire i commenti javadoc per essere poi usati da applicazioni di analisi dei commenti.

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

T3Camp ItaliaL’evento italiano dedicato a

FLOW3Federico Bernardin

Buon sviluppo a tuttisia in OOP che in MVC!!