La sempre maggiore diffusione di device diversificati (PC, Notebook, Tablet, Smartphone, ecc.) su piattaforme diverse, rilancia l'utilizzo delle Web Application come strumento per raggiungere il maggior numero di potenziali clienti con il minimo sforzo. Le capacità avanzate dei nuovi device e le ultime tecnologie ci consentono però di evolvere il concetto classico di applicazione Web in una declinazione più veloce, più responsiva, più accattivante: vediamo come.
Grazie a Team Foundation Build è possibile adottare pratiche di integrazione continua nel proprio progetto. In questa presentazione viene introdotta la struttura di tfs build assieme alle tecniche base per effettuare una customizzazione della build.
Webcast - Introduzione a Visual Studio OnlineDavide Benvegnù
Visual Studio Online è uno strumento che fornisce molte funzionalità per l'ALM (Application Lifecycle management) e ad ogni release diventa sempre più completo, funzionale e davvero utile. Si tratta di una piattaforma completa e gratuita di strumenti per lo sviluppo e servizi utili per creare applicazioni multi-piattaforma, progettata per soddisfare i più alti requistiti a livello di disponibilità, scalabilità e complessità di sviluppo.
In questo webcast introduttivo, primo di una serie, vedremo quali sono le caratteristiche di questo strumento, impareremo come utilizzarlo per gestire il lavoro di ogni giorno e prenderemo confidenza con le sue funzionalità. Andremo infine alla scoperta delle nuove feature aggiunte alla suite.
Alessandro Forte e Michele Aponte, co-fondatori di DotNetCampania, intervengono sul confronto tra i due pattern MVP e MVC per lo sviluppo di applicazioni Web.
Grazie a Team Foundation Build è possibile adottare pratiche di integrazione continua nel proprio progetto. In questa presentazione viene introdotta la struttura di tfs build assieme alle tecniche base per effettuare una customizzazione della build.
Webcast - Introduzione a Visual Studio OnlineDavide Benvegnù
Visual Studio Online è uno strumento che fornisce molte funzionalità per l'ALM (Application Lifecycle management) e ad ogni release diventa sempre più completo, funzionale e davvero utile. Si tratta di una piattaforma completa e gratuita di strumenti per lo sviluppo e servizi utili per creare applicazioni multi-piattaforma, progettata per soddisfare i più alti requistiti a livello di disponibilità, scalabilità e complessità di sviluppo.
In questo webcast introduttivo, primo di una serie, vedremo quali sono le caratteristiche di questo strumento, impareremo come utilizzarlo per gestire il lavoro di ogni giorno e prenderemo confidenza con le sue funzionalità. Andremo infine alla scoperta delle nuove feature aggiunte alla suite.
Alessandro Forte e Michele Aponte, co-fondatori di DotNetCampania, intervengono sul confronto tra i due pattern MVP e MVC per lo sviluppo di applicazioni Web.
XeDotNet meeting del 5 Marzo 2013
In questa sessione vedremo come Knockout.js permetta di scrivere codice JavaScript in modo pulito e organizzato, semplificando la scrittura del codice e la sua manutenzione. Come lo si utilizza KO? Quali vantaggi ci offre? Quali librerie ci vengono in aiuto? Quali sarebbe meglio evitare?
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVMCodemotion
"Realizzare applicazioni cross-platform con Xamarin e il pattern MVVM" by Matteo Pagani.
Xamarin è una delle tecnologie più interessanti quando si parla di sviluppo cross-platform, in quanto permette di riutilizzare le proprie conoscenze di C# per realizzare applicazioni con le stesse feature e performance di un'applicazione nativa. Usare Xamarin, però, non significa solamente poter realizzare app Android e iOS in C#, ma anche e soprattutto non dover scrivere e mantenere codebase completamente diverse. In questa sessione vedremo come poter massimizzare il riutilizzo di codice tra le diverse versioni della nostra applicazioni, aiutandoci con il pattern MVVM.
Slide e riferimenti al codice del Meetup del 28/02/2019 del Vue JS Milano dove parlo di creazione di componenti, passaggio di parametri, computed properties
Presentazione sull'evoluzione di Struts, primo framework web MVC in ambito Java e sul merger con WebWork, effettuata durante la (prima!) tappa di Torino della prima edizione di JavaDay '06.
Con l'avvento su scala globale di HTML5 le tecnologie web si sono evolute cercando di offrire all'utente una migliore esperienza applicativa sempre più simile a quella desktop. Sul piano tecnico questo viene realizzato spostando la logica di presentazione sul browser client facendo leva su Javascript e CSS3. In questa sessione vedremo come KnockoutJS, un presentation framework Javascript basato sul pattern Model-View-ViewModel, permette di sviluppare Rich Internet Application (RIA) analizzando le sue caratteristiche implementative e mostrando esempi di casi reali anche in ambito mobile.
HTML5 Single Page Application è il nuovo hype tecnologico: tutti ne parlano, il web ne è pervaso, da GMail a Facebook e Twitter, dal desktop al mobile, dagli Appennini alle Ande.
In questa sessione ci occuperemo di tutti quegli aspetti di organizzazione di una solution in termini di codebase, unit testing e processo di build, presentando alcuni strumenti che stanno emergendo fra quelli disponibili.
Demo: http://www.communitydays.it/events/2014-Roma/web02/
Javascript avanzato: sfruttare al massimo il webRoberto Messora
Javascript è uno dei linguaggi più sottovalutati e più incompresi dell'intero panorama dei linguaggi di programmazione, eppure è anche uno dei più utilizzati.
Da una parte le molteplici e differenti declinazioni degli strumenti di navigazione web, dall'altra l'infelice scelta storica di usare il termine "script", hanno contribuito alla creazione del mito di un linguaggio poco rigoroso, al servizio di ogni sorta di trucco o pezza di codice.
La verità invece racconta di un linguaggio dinamico ad oggetti a tutti gli effetti, con caratteristiche molto interessanti, seppur con qualche difetto, ma soprattutto un linguaggio che, sull'onda di HTML5, rivestirà se possibile ancora più importanza nell'immediato futuro.
In questa sessione verranno presentati aspetti poco conosciuti, ma molto importanti, di Javascript (scoping, hoisting, closures, ecc.), verranno presentati alcuni design patterns che permettono di strutturare in maniera intelligente le nostre librerie applicative in funzione della manutenibilità e delle performance, senza tralasciare, ove possibile, uno sguardo ad alcuni framework come jQuery o KnockoutJS.
XeDotNet meeting del 5 Marzo 2013
In questa sessione vedremo come Knockout.js permetta di scrivere codice JavaScript in modo pulito e organizzato, semplificando la scrittura del codice e la sua manutenzione. Come lo si utilizza KO? Quali vantaggi ci offre? Quali librerie ci vengono in aiuto? Quali sarebbe meglio evitare?
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVMCodemotion
"Realizzare applicazioni cross-platform con Xamarin e il pattern MVVM" by Matteo Pagani.
Xamarin è una delle tecnologie più interessanti quando si parla di sviluppo cross-platform, in quanto permette di riutilizzare le proprie conoscenze di C# per realizzare applicazioni con le stesse feature e performance di un'applicazione nativa. Usare Xamarin, però, non significa solamente poter realizzare app Android e iOS in C#, ma anche e soprattutto non dover scrivere e mantenere codebase completamente diverse. In questa sessione vedremo come poter massimizzare il riutilizzo di codice tra le diverse versioni della nostra applicazioni, aiutandoci con il pattern MVVM.
Slide e riferimenti al codice del Meetup del 28/02/2019 del Vue JS Milano dove parlo di creazione di componenti, passaggio di parametri, computed properties
Presentazione sull'evoluzione di Struts, primo framework web MVC in ambito Java e sul merger con WebWork, effettuata durante la (prima!) tappa di Torino della prima edizione di JavaDay '06.
Con l'avvento su scala globale di HTML5 le tecnologie web si sono evolute cercando di offrire all'utente una migliore esperienza applicativa sempre più simile a quella desktop. Sul piano tecnico questo viene realizzato spostando la logica di presentazione sul browser client facendo leva su Javascript e CSS3. In questa sessione vedremo come KnockoutJS, un presentation framework Javascript basato sul pattern Model-View-ViewModel, permette di sviluppare Rich Internet Application (RIA) analizzando le sue caratteristiche implementative e mostrando esempi di casi reali anche in ambito mobile.
HTML5 Single Page Application è il nuovo hype tecnologico: tutti ne parlano, il web ne è pervaso, da GMail a Facebook e Twitter, dal desktop al mobile, dagli Appennini alle Ande.
In questa sessione ci occuperemo di tutti quegli aspetti di organizzazione di una solution in termini di codebase, unit testing e processo di build, presentando alcuni strumenti che stanno emergendo fra quelli disponibili.
Demo: http://www.communitydays.it/events/2014-Roma/web02/
Javascript avanzato: sfruttare al massimo il webRoberto Messora
Javascript è uno dei linguaggi più sottovalutati e più incompresi dell'intero panorama dei linguaggi di programmazione, eppure è anche uno dei più utilizzati.
Da una parte le molteplici e differenti declinazioni degli strumenti di navigazione web, dall'altra l'infelice scelta storica di usare il termine "script", hanno contribuito alla creazione del mito di un linguaggio poco rigoroso, al servizio di ogni sorta di trucco o pezza di codice.
La verità invece racconta di un linguaggio dinamico ad oggetti a tutti gli effetti, con caratteristiche molto interessanti, seppur con qualche difetto, ma soprattutto un linguaggio che, sull'onda di HTML5, rivestirà se possibile ancora più importanza nell'immediato futuro.
In questa sessione verranno presentati aspetti poco conosciuti, ma molto importanti, di Javascript (scoping, hoisting, closures, ecc.), verranno presentati alcuni design patterns che permettono di strutturare in maniera intelligente le nostre librerie applicative in funzione della manutenibilità e delle performance, senza tralasciare, ove possibile, uno sguardo ad alcuni framework come jQuery o KnockoutJS.
Abbiamo sdoganato JavaScript a tutti i livelli: è diventato un linguaggio di programmazione di prima classe e ne abbiamo cominciato a conoscere i segreti e le caratteristiche. Ma non basta, le applicazioni web client si fanno sempre più complesse e non è pensabile fare debug solo a colpi di F5 e Firebug. In questa sessione vi svelerò un segreto: anche in Javascript è possibile fare Unit Testing, darò alcune indicazioni su come organizzare la codebase in modo da farlo con intelligenza.
Sviluppare un'applicazione web basata su ASP.NET Core nel mondo reale con Visual Studio Code
Codice della demo:
https://github.com/robymes/JoinTheExpert-WebDay
PASS Virtual Chapter - SQL Server Continuous IntegrationAlessandro Alpi
Build automatizzate, esecuzione di unit test, creazione di un pacchetto nuget, ecco cosa serve per essere pronti con SQL Server e la continuous integration
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...Alessandro Alpi
In questa serie di slide vedremo come creare i build step su Visual Studio Team Services sfruttando gli add-on forniti da Red Gate, come DLM Automation 2: Build.
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...Codemotion
Realizzare un’unica piattaforma che garantisce Omni-channel, Zero-downtime, Functional-decomposition e Auto-scaling è possibile? Vi raccontiamo un caso reale di come, utilizzando Zuul, Eureka, SpringBoot, Docker abbiamo realizzato i desideri del cliente e attuato questa trasformazione.
Continuous Integration con Visual Studio OnlineDavide Benvegnù
Più velocemente il nostro software viene deployato, più velocemente possiamo renderlo disponibile ai nostri clienti ed avere feedback a riguardo.
Vedremo come deployare in modo semplice una nostra applicazione (anche sul cloud di Microsoft Azure) utilizzando gli strumenti che Visual Studio e Visual Studio Online ci mettono a disposizione.
Presentazione alla Google Dev Fest Mediterranean 2016 di Catania con presentazione sulle metodologie di utilizzo di microservices e sui sistemi per monitorare le infrastrutture
1. Template designed by
Rich client application:
MVC4 + MVVM = Knockout.js
Giorgio Di Nardo
giorgio.dinardo@domusdotnet.org
http://blogs.ugidotnet.org/akelitz/
@akelitz
3. GIORGIO DI NARDO
Lavoro presso Proge-software come Senior Consultant
Sono tra i fondatori di DomusDotNet
Sono Microsoft Certified Trainer
chi sono
4. MVC4 + MVVM = Knockout.js: cioè?
Knockout.js: quando, perché e come
datemi un punto d'appoggio e solleverò il mondo:
estendere KO
unit testing lato-client? si può!
tutto qui!?
agenda agile
5. MVC4 + MVVM = Knockout.js: cioè?
Knockout.js: quando, perché e come
datemi un punto d'appoggio e solleverò il mondo:
estendere KO
unit testing lato-client? si può!
tutto qui!?
agenda agile
6. Pattern architetturale
Model = dati
View = interfaccia
Controller = interazione
Separation-of-Concerns
Dependency Injection
Convention-over-
Configuration
MVC4 = Model View Controller “in salsa” Model2
Client
Utente
(browser)
Server
Controller
View
Model
7. Pattern di presentation
della famiglia MV*
Separation-of-Concerns
Rompere il legame forte
tra i dati (Model) e la loro
rappresentazione (View)
per mezzo di un terzo
soggetto (ViewModel)
MVVM = Model-View-ViewModel
Si definiscono e si idratano
i dati (Model) da
visualizzare
Si veicolano i dati
attraverso il ViewModel
verso la View utilizzando un
meccanismo di data-bind
che permetta la gestione
bidirezionale degli
aggiornamenti dei dati stessi
Si definiscono delle
operazioni nel ViewModel
per gestire gli eventi
8. Model: i dati gestiti dall’applicazione rappresentati sotto
forma di oggetto o array Javascript
View: la pagina HTML contenente i vari elementi di
markup
ViewModel: un oggetto Javascript che espone i dati
(Model) in un formato «comodo» per l’interfaccia (View) e
contiene le operazioni per rispondere agli eventi da questa
generati
MVVM in HTML
9. Libreria in Javascript puro per semplificare la creazione in
HTML di applicazioni basate su MVVM
Caratteristiche principali:
Binding dichiarativo dei dati nel markup HTML
Gestione delle dipendenze con aggiornamento automatico nelle due direzioni
Facilità di estensione delle funzionalità di base
Compatibile con la maggior parte dei browser (IE 6+, Firefox
2+, Chrome, …)
Non sostituisce ma si integra con jQuery
Knockout.js: cosa è?
10. MVC4 + MVVM = Knockout.js: cioè?
Knockout.js: quando, perché e come
datemi un punto d'appoggio e solleverò il mondo:
estendere KO
unit testing lato-client? si può!
tutto qui!?
agenda agile
11. In tutti i casi in cui l’interazione del sistema con l’utente
non sia banale e richieda la definizione di una logica di UI
strutturata…
… in particolare nelle Rich Internet Application (RIA)
Knockout.js: quando usarlo?
12. Aiuta ad aumentare la SoC del progetto anche nella parte
storicamente più propensa allo «spaghetti code»
Consente di gestire in maniera più strutturata e
manutenibile gli elementi e gli eventi del DOM
Semplifica enormemente i problemi di Unit testing della
parte client della nostra applicazione
….
Knockout.js: perchè usarlo?
13. Si creano gli oggetti ViewModel e si definiscono al loro
interno le proprietà observable contenenti i dati da
mostrare e le funzioni associate ai comandi scatenabili
dalla View
Si aggiungono gli attributi data-bind al markup della
pagina HTML
Si attiva il binding con una chiamata al metodo
ko.applyBinding
Knockout.js: come usarlo?
15. MVC4 + MVVM = Knockout.js: cioè?
Knockout.js: quando, perché e come
datemi un punto d'appoggio e solleverò il mondo:
estendere KO
unit testing lato-client? si può!
tutto qui!?
agenda agile
16. Knockout garantisce out-of-the-box le funzioni per leggere
e scrivere e per notificare le variazioni ai
subscriber, però…
… e possibile estendere il meccanismo degli observable
in maniera semplice scrivendo poco righe di codice…
… oppure sfruttare i plugin e gli extender disponibili ad
esempio su NuGet
Estendere Knockout.js
18. MVC4 + MVVM = Knockout.js: cioè?
Knockout.js: quando, perché e come
datemi un punto d'appoggio e solleverò il mondo:
estendere KO
unit testing lato-client? si può!
tutto qui!?
agenda agile
19. Parte dello sviluppo software che si occupa della verifica
delle corrispondenza tra il funzionamento del codice e i
requisiti
Target (unit, integration, system) e Scope
(functional, performance, scalability, acceptant, …)
Consente di migliorare la qualità del proprio
codice, ridurre il peso della manutenzione ma anche
(TDD) migliorarne il design
Testing, Unit testing e TDD
20. Testare piccoli frammenti di codice («unit»), tipicamente
metodi
Testare i soli endpoint pubblici
Testare in maniera isolata rispetto al resto
dell’applicazione
Ottenere il risultato positivo/negativo dei test in maniera
automatizzata
Pilastri dello Unit testing
21. Utilizzare lo Unit testing per guidare lo sviluppo della
propria applicazione
Scrivere il codice strettamente necessario a passare i test
Red/Green cycle
Utilizzabile sia per i nuovi sviluppi che per il bug fixing
Attenzione al refactoring!
Test Driven Development
22. Arrange: predisporre l’ambiente per il test
Act: effettuare la chiamata al codice oggetto del test
Assert: verificare che ciò che ci si aspettava si è verificato
(e ciò che non ci si aspettava non si è verificato)
Verificare un comportamento alla volta (single assertion
rule)
Arrange, Act, Assert
23. Framework di test della famiglia jQuery
Sintassi di Asserting semplice ed immediata
Interfaccia chiara
Possibilità di dividere i test in moduli
Possibilità di preparare e ripulire l’ambiente di test in
maniera centralizzata
qUnit
25. MVC4 + MVVM = Knockout.js: cioè?
Knockout.js: quando, perché e come
datemi un punto d'appoggio e solleverò il mondo:
estendere KO
unit testing lato-client? si può!
tutto qui!?
agenda agile
26. Fornito di un motore di templating del markup HTML
Corredato da Plugin (mapping, …) ed Extender
(validation, ...)
Disegnato per integrarsi al meglio con altri framework
Javascript: Durandal.js, Require.js, ...
Pilastro per costruzione delle Single Page Application
No! Knockout.js è anche…
28. Grazie a tutti per la partecipazione
Riceverete il link per il download a slide e demo via email nei
prossimi giorni
Per contattarmi
giorgio.dinardo@domusdotnet.org
Grazie