I test unitari sono sempre più utilizzati per verificare la correttezza del codice che scriviamo.
Ci si trova però a volte di fronte a codice scritto in maniera poco "disaccoppiata". Questo può impedirci di sostituire a runtime dei Dependent-on Object con dei Mock Object o degli Stub. Nel talk descriverò un plugin scritto per symfony (ma utilizzabile anche in altri ambiti) che permette di sostituire delle classi a runtime ridefinendole e configurandole all'interno dei test, creando un ambiente che isola il codice da verificare.
Il talk prevederà degli esempi pratici di utilizzo dello strumento descritto.
I test unitari sono sempre più utilizzati per verificare la correttezza del codice che scriviamo.
Ci si trova però a volte di fronte a codice scritto in maniera poco "disaccoppiata". Questo può impedirci di sostituire a runtime dei Dependent-on Object con dei Mock Object o degli Stub. Nel talk descriverò un plugin scritto per symfony (ma utilizzabile anche in altri ambiti) che permette di sostituire delle classi a runtime ridefinendole e configurandole all'interno dei test, creando un ambiente che isola il codice da verificare.
Il talk prevederà degli esempi pratici di utilizzo dello strumento descritto.
Slides to understand and present Advanced .net topics with c# language. Topics like delegates, Indexer, Reflection API, Attributes, Collections in c#, File and I/O manipulation etc. are described with examples too.
Here i am sharing the details of collections classes in C# for learining similar kind of c# interview question you can refer this link http://skillgun.com/csharp/interview-questions-and-answers
Il buon programmatore - consigli pratici per una vita feliceAndrea Dottor
Lavorando come consulente mi sono trovato spesso di fronte a problematiche (a volte banali), ma che erano la causa di gravi problemi di performance dell'appliccazione realizzata, oppure più banali, ma che rendevano il codice meno manutenibile e gestibile, specialmente lavorando in team. Vedere che nel tempo, persone/realtà diverse, commettono gli stessi errori mi ha fatto pensare a questa sessione...dove intendo elencare i problemi più comuni, che per causa di tempo o scarsa conoscenza, vengono commessi, e proporre delle soluzioni semplici da poter applicare fin da subito. (ASP.NET, ma non solo)
Xamarin.Forms is a framework for building cross-platform applications that share most of the UI codebase among the UWP, iOS and Android platforms. Due to the higher level of abstraction compared to Xamarin.Native, Xamarin.Forms applications may suffer from memory leaks and slow rendering times at the expense of the final user experience. In the session, we will explore the mechanisms used by Xamarin.Forms to translate abstract UI components into native ones, highlight with demos what are the main bottlenecks met by developer, how to solve them and get close to native performances.
Prepariamoci al cambiamento. ASP.NET MVC e ASP.NET Web API saranno unificati in un unico framework chiamato ASP.NET MVC 6, e questo è solo la prima di una serie di novità che stanno per arrivare.
Tutto si semplifica. Le performance migliorano. Un altro salto tecnologico in avanti portato da ASP.NET 5.
In questa sessione, infatti, vedremo tutte le novità che ASP.NET MVC 6 porta con se, e cercheremo di andare in dettaglio in modo da capire cosa voglia dire realizzare (da zero) o migrare (un'applicazione essitente) a questa nuova versione
50 minuti per svelare la tigre, il cavallo e sapere che esiste il delfino.
La nuova versione di Java implementa caratteristiche che da tempo erano attese
nello standard del linguaggio: Metadata, Generic Types, AutoBoxing e
Unboxing dei tipi primitivi, Static import, gestione dinamica dei Loop e delle
Enumeration.
Per Java 6: gestione di SystemTray e motori di scripting.
Vediamo di cosa si tratta e di come poter utilizzare queste nuove feature all'interno dei nostri programmi
Abstract:
* Introduzione a Seam ;
* Ciclo di vita di Seam;
* Component and context;
* Absolute Inversion of Control;
* Rapid Seam development (con esempio di start-up su eclipse o se si preferisce a linea di comando);
* Differenze sostanziali con la versione 3.0 / Ajax and Javascript remoting
This is an old presentation I've given for a Lunch&Learn in my previous job. In this presentation I'm trying to explain the concept of Inversion of Control, It's advantages and how Test Driven Development forces you to embrace this approach. When the dependencies becomes many the need for a framework arise, those frameworks are usually called IoC. Than quickly I intruduce the difference in Dynamic Languages as Ruby.
Slides to understand and present Advanced .net topics with c# language. Topics like delegates, Indexer, Reflection API, Attributes, Collections in c#, File and I/O manipulation etc. are described with examples too.
Here i am sharing the details of collections classes in C# for learining similar kind of c# interview question you can refer this link http://skillgun.com/csharp/interview-questions-and-answers
Il buon programmatore - consigli pratici per una vita feliceAndrea Dottor
Lavorando come consulente mi sono trovato spesso di fronte a problematiche (a volte banali), ma che erano la causa di gravi problemi di performance dell'appliccazione realizzata, oppure più banali, ma che rendevano il codice meno manutenibile e gestibile, specialmente lavorando in team. Vedere che nel tempo, persone/realtà diverse, commettono gli stessi errori mi ha fatto pensare a questa sessione...dove intendo elencare i problemi più comuni, che per causa di tempo o scarsa conoscenza, vengono commessi, e proporre delle soluzioni semplici da poter applicare fin da subito. (ASP.NET, ma non solo)
Xamarin.Forms is a framework for building cross-platform applications that share most of the UI codebase among the UWP, iOS and Android platforms. Due to the higher level of abstraction compared to Xamarin.Native, Xamarin.Forms applications may suffer from memory leaks and slow rendering times at the expense of the final user experience. In the session, we will explore the mechanisms used by Xamarin.Forms to translate abstract UI components into native ones, highlight with demos what are the main bottlenecks met by developer, how to solve them and get close to native performances.
Prepariamoci al cambiamento. ASP.NET MVC e ASP.NET Web API saranno unificati in un unico framework chiamato ASP.NET MVC 6, e questo è solo la prima di una serie di novità che stanno per arrivare.
Tutto si semplifica. Le performance migliorano. Un altro salto tecnologico in avanti portato da ASP.NET 5.
In questa sessione, infatti, vedremo tutte le novità che ASP.NET MVC 6 porta con se, e cercheremo di andare in dettaglio in modo da capire cosa voglia dire realizzare (da zero) o migrare (un'applicazione essitente) a questa nuova versione
50 minuti per svelare la tigre, il cavallo e sapere che esiste il delfino.
La nuova versione di Java implementa caratteristiche che da tempo erano attese
nello standard del linguaggio: Metadata, Generic Types, AutoBoxing e
Unboxing dei tipi primitivi, Static import, gestione dinamica dei Loop e delle
Enumeration.
Per Java 6: gestione di SystemTray e motori di scripting.
Vediamo di cosa si tratta e di come poter utilizzare queste nuove feature all'interno dei nostri programmi
Abstract:
* Introduzione a Seam ;
* Ciclo di vita di Seam;
* Component and context;
* Absolute Inversion of Control;
* Rapid Seam development (con esempio di start-up su eclipse o se si preferisce a linea di comando);
* Differenze sostanziali con la versione 3.0 / Ajax and Javascript remoting
This is an old presentation I've given for a Lunch&Learn in my previous job. In this presentation I'm trying to explain the concept of Inversion of Control, It's advantages and how Test Driven Development forces you to embrace this approach. When the dependencies becomes many the need for a framework arise, those frameworks are usually called IoC. Than quickly I intruduce the difference in Dynamic Languages as Ruby.
Presentazione: uno studio sull'efficacia di checker automatici per la moderni...Idriss Riouak
Uno studio sull'efficacia del checker Clang Tidy in particolare sull'efficacia del modulo "modernize". Il test è stato applicato sulla Parma Polyhedra Library.
Una panoramica sulle diverse possibilità offerte da Spring per applicazioni RIA realizzate in Flex: Spring sul server per l'implementazione di un backend con serializzazione nativa AMF3 con Spring BlazeDS integration, Spring sul client con Spring ActionScript e Spring come usato dallo streaming server opensource Red5 per la realizzazione di applicazioni video. Presentazione tenuta allo Spring Framework Meeting di Settembre 2009 a Cagliari.
Similar to Deep diving C# 4 (Raffaele Rialdi) (20)
Creare una community dal basso ed arrivare ad un'azienda milionaria - Emanue...DotNetMarche
Come è nata l'esperienza della community romana di Host e come siamo riusciti ad essere riconosciuti da Airbnb. Cosa stiamo imparando, cosa funziona, gli errori da non fare.
Metriche per Zombie Communities: come "iniettare vita" in tribù di morti vive...DotNetMarche
4 iscritti al meetup. Nessun commento al post. 1 solo speaker (che poi è tuo cugino). Se sai di cosa sto parlando allora significa che conosci la stretta allo stomaco che si prova quando la tua comminity è silenziosa quanto un cimitero. Ma è davvero la fine? Oppure un community leader può diventare il Dottor Frankenstein di turno e ribaltare la situazione? In questo talk vedremo come basarci sulle metriche per analizzare cosa non sta funzionando nella tua tribù e alcuni consigli azionabili per "resuscitare" l'entusiasmo dei suoi membri.
Vedremo come sfruttare le potenzialità di WPF per realizzare applicazioni diverse dalle classiche LOB (Line of Business applications), basandosi su 3D e Natural User Interface.
Cos'è la UI Composition e che problemi può risolvere
Perchè MVVM e WPF sono importanti per la UI Composition
Il concetto di 'region' e 'UI Injection'
Analisi del toolkit PRISM di Microsoft e cosa comporta realizzarsene uno in proprio.
Cos'è la UI Composition e che problemi può risolvere
Perchè MVVM e WPF sono importanti per la UI Composition
Il concetto di 'region' e 'UI Injection'
Analisi del toolkit PRISM di Microsoft e cosa comporta realizzarsene uno in proprio.
In questa sessione verranno analizzate alcune pagine ASP.NET che verranno sottoposte a refactoring per aumentarne la modularità e comprensibilità del codice, nonchè favorire la testabilità delle funzioni core.
Si presenteranno techiche e strumenti che è possibile utilizzare in modo da avere un approccio più razionale ed 'ordinato' nella stesura del codice. Le pratiche ed i concetti illustrati sono di carattere generale, quindi liberamente applicabili ad ogni tipologia di applicazione.
In questa sessione a quattro mani introdurremo alcuni dei refactorings più comuni e più facilmente applicabili nell'utilizzo quotidiano, e vedremo come risolverli in maniera facile, veloce ed indolore utilizzando ReSharper e pochi colpi di tastiera.
Incidentalmente, inseriremo nel mentre un pò di patterns e di Test-Driven Development, perchè "se non è testato, allora non funziona"
"It's all about simplicity": perchè le applicazioni basate su Javascript sono spesso complesse, farraginose e difficilmente manutenibili quando è possibile renderle semplici, eleganti e funzionali?
In questa sessione a quattro mani vedremo per prima cosa come sfruttare Javascript al meglio, utilizzando i prototipi, i namespaces, gli oggetti, gli eventi, le chiusure e le altre mille funzionalità di un linguaggio di programmazione troppo spesso sottovalutato.
Ci soffermeremo poi su jQuery per analizzare il suo contributo nel semplificare task normalmente tediosi come la manipolazione del DOM, la gestione degli eventi, la programmazione asincrona (AJAX) e le problematiche di compatibilità cross-browser.
In questa sessione 'hands-on' suddivisa in tre parti, vedremo come, codice alla mano, è possibile realizzare applicazioni business tramite Silverlight, cercando inoltre di renderle compatibili con WPF (Windows Presentation Foundation) in modo da riutilizzare ciò che è stato sviluppato
Ci focalizzeremo su questioni come:
- architettura del progetto
- realizzazione di interfacce utente
- interazione con il Data Layer e servizi in generale
- multitargetting Silverlight / WPF
-integrazione dell'applicazione principale con moduli / plugin, tramite pattern MVP e MVC (per semplificare il porting su WPF)
- modularità ed inversione di controllo
Asp.NET MVC è un nuovo framework per lo sviluppo di applicazioni web alternativo al modello webform. Questo consente di utilizzare il pattern MVC per lo sviluppo di applicazioni Asp.NET, permettendo quindi una miglior separazione delle responsabilità che a sua volta porta ad una maggior manutenibilità, riusabilità e facilità nel testing.
La sessione illustrerà i motivi che hanno portato alla nascita di Asp.NET MVC e le sue caratteristiche fondamentali.
Agenda:
- Storia dei framework MS per lo sviluppo web
- Introduzione a Asp.NET MVC
- Vantaggi di Asp.NET MVC
- Il pattern MVC
- Hello MVC: DEMO
- Componenti di MVC: Routing, Controller, Model, View
Nello sviluppo software il termine “test” assume molti significati;
le tipologie di test sono infatti numerose, ma tutte hanno un unico scopo: provare che il software realizzato sia attinente alle specifiche e non presenti bug.
Tra tutti i test, quelli unitari rappresentano senza dubbio la categoria più interessante per lo sviluppatore, dato che sono dedicati alla verifica di piccole porzioni di
codice e sono spesso scritti nello stesso linguaggio usato per realizzare il software.
Agenda:
- Introduzione ai concetti base del testing
- Test unitari
- Librerie xUnit ed automazione dei test
- Alcuni pattern standard per test unitari
Un altro building block del Framework 3.0 si chiama CardSpace ed ha l'ambizione di risolvere uno dei problemi più ricorrenti della quasi totalità delle applicazioni sia internet sia intranet: l'autenticazione utente.
I problemi correlati all'autenticazione sono di diversa natura: da una parte la difficoltà dell'utente nel gestire elenchi di username e password, dall'altra la sempre crescente necessità di evitare l'hacking delle password, o ancora la tipologia di informazioni che un utente vuole rivelare di sé a seconda del contesto, fino ad essere anche un semplice utente anonimo; ed infine la necessità di contemplare autorità di autenticazioni differenti a seconda del contesto.
Se nel passato Passport ha fallito la sua missione, CardSpace affronta in modo totalmente differente il problema rendendosi fruibile cross-browser e cross-platform per costruire un sistema universale di identificazione nel pieno rispetto della privacy.
1. Deep diving C# 4.0 Raffaele Rialdi Twitter: @raffaeler Email:malta@vevy.com Articoli e codice: http://www.iamraf.net Blog:http://blogs.ugidotnet.org/raffaele Profilo MVP:https://mvp.support.microsoft.com/profile/raffaele
2. Quando e come si decide di evolvere un linguaggio Quando si osserva l'adozione su larga scala di un pattern Pattern iterator => C# 2.0 introduce "yield" Filtri su tipi enumerabili => C# 3.0 introduce Linq Metodi helper statici => C# 3.0 introduce gli extension method L'introduzione di uno statement semplifica uno scenario Le novità sono sempre "opt-in" cioè non è obbligatorio usarle
3. Problemi ricorrenti di oggi in C# Uso spinto di reflection Performance povere anche perché non esiste un meccanismo di Cache built-in Ricerca di una soluzione di scripting nelle applicazioni Forse ricordate "VBA for Application"... Quantità industriale di cast durante l'uso di oggetti COM Lo spostamento verso la programmazione dichiarativa
4.
5. Optional e named parameters Negli object model COM viene spesso indicato il valore di default di un parametro Altrettanto spesso ci sono metodi con un numero molto elevato di parametri Optional e named parameters mettono la parola fine Non era mai stata inserita prima perché complica notevolmente la risoluzione degli overload Oggi il driver di queste novità è l'interop e quindi il "costo" è giustificato
6. "ref" optional per i metodi COM Il modificatore ref può essere omesso su metodi e proprietà dei tipi COM solo sui tipi COM: per il compilatore sono un caso speciale Sarebbe stato impossibile chiedere a tutti i produttori di oggetti COM di ricreare le loro PIA il compilatore permette il "trucco" se sulla dichiarazione del Type esiste l'attributo [ComImport] MyCOMObject app = new MyCOMObject(); object m = string.Empty; app.MyMethod(ref m, ref m, ref m, ref m); MyCOMObject app = new MyCOMObject(); app.MyMethod(m, m, m, m);
7. Demo: Office Named parameters Optional parameters Omissione modificatore ref
10. In una operazione di conversione o regola di compilazione ...La Covarianza permette ad un metodo di avere un tipo di ritorno più basso nella gerarchia di derivazione rispetto a quello definito La Controvarianza permette ad un metodo di avere parametri che siano in una gerarchia più alta rispetto a quello definito Classe con gerarchia più bassa Classe con gerarchia più alta
13. DLR Il CLR ha fornito fin'ora un type system di tipo statico e indipendente dai linguaggi Il supporto ai tipi dinamici via Reflection è povero e poco performante. Il DLR è una sorta di "API" sopra il CLR che permette di spostare il controllo sui tipi (binding) al runtime Il DLR è un normale assembly che usa il CLR in modo da supportare i tipi dinamici, tipici dei linguaggi dinamici Iron Python, Iron Ruby, etc. Il CLR classico non è stato modificato per supportare DLR Con il DLR oggi abbiamo queste novità: Expression Trees v2 Dynamic Dispatch Call Site Caching
15. DLR: perché e perché oggi? Non è solo un revival del "late binding"! Il motivo per l'introduzione di questa API è l'interoperabilità semplifica l'interazione con componenti COM Office ma non solo I cast che sono necessari oggi non rendono più sicuro il codice perché c'è sempre la possibilità in un InvalidCastException a runtime. Quindi dynamic non impoverisce la stabilità in questi scenari. semplifica il mix con altri linguaggi Python, Ruby, Javascript semplifica l'uso di DOM che fanno uso di late binding Html e XML privi di schema Esempio: Silverlight V4
16. I Binders Object Binder Per default si comporta in modo analogo del binder statico Javascript Binder (HTML Dom) Python Binder Ruby Binder COM Binder (pensato per Office) Custom Binder
17. Come avviene una call Una CallSite per ogni operazione dinamica La CallSite è l'entità che caratterizza la chiamata parametri, nome, tutto il contesto La CallSite viene inizializzata in modo Lazy La prima volta viene calcolata Le volte successive viene presa da una cache Impatto in perf solo sul primo run È come bruciare una e2prom e poi usarla Possiamo definire la CallSite come un gateway tra CLR e DLR
18. Oggetti dinamicamente tipizzati Calculator calc = GetCalculator(); int sum = calc.Add(10, 20); object calc = GetCalculator(); TypecalcType = calc.GetType(); object res = calcType.InvokeMember("Add", BindingFlags.InvokeMethod, null, newobject[] { 10, 20 }); int sum = Convert.ToInt32(res); ScriptObject calc = GetCalculator(); object res = calc.Invoke("Add", 10, 20); int sum = Convert.ToInt32(res); Tipizzazione statica di un dynamic dynamic calc = GetCalculator(); int sum = calc.Add(10, 20); Invocazione dinamica del metodo Conversionedinamica
19. Scenari d'uso per il DLRReflection Il binder CLR usato dal DLR usa reflection in modo "intelligente" Reflection.Emit viene usato per generare IL a partire dalle Expression v2 Tutto quello che viene fatto dopo è identico (jitting, etc.) Reflection 'classica' è molto più lenta no cache il clr sa già quali overload esistono e come fare il dispatch in più si possono aggiungere altri binder che risolvono per python, ruby, com, etc. etc.
20. Scenari d'uso per il DLR Manipolazione di object che vengono da "qualche parte" Plugin/Addins Usando oggetti COM Usando object model privi di schema (DOM XML, HTML) Quando è possibile, prediligere lo static binding Strong typing significa robustezza del codice Performance
22. PIAPrimary Interop Assembly Le PIA sono gli assembly wrapper primari che permettono di accedere in modo 'semplice' agli oggetti COM Creati a partire dalla type library Necessitano di strong name e di essere registrate in GAC Deploy complesso Se l'object model è grosso (Office) le PIA hanno dimensioni enormi rapportate all'applicazione che le usa Il versioning è un problema Se sviluppo con le PIA di Office 2007, non funziona sulla 2003
23. "no PIA" per COM "no PIA" è una feature che permette di eseguire l'embedding in un assembly del codice di una PIA Depoly di PIA di Office 2007 = 6.5MB Deploy di PIA di Office 2010 = 6.5MB+ Questa versione non funzionerà con Office 2003 Per risolvere questo problema nel CLR 4.0 è stato introdotto il "Type Embedding" (o "No PIA") e la "Type Equivalence" i compilatori hanno un nuovo switch /link per fare l'embedding del solo codice usato di una PIA Si basa su un nuovo attributo, [TypeIdentifier] che grazie al [Guid] già usato in COM, permette di dire al CLR che due tipi sono "Equivalenti"
24. Type Embedding (No PIA) Vengono creati nuovi tipi, copie parziali dei tipi completi presenti nella PIA Invece di una reference alla PIA, avremo un namespace con il codice della PIA all'interno del nostro assembly Nei metadati le VTable hanno degli speciali marker ("_VtblGap1_10") che informano il CLR quanti elementi della VTable sono da saltare il numero 1 è l'indice, il numero 10 è il numero di elementi da saltare
25. Come avviene l'Embedding L'embedding riguarda solo i metadati No codice IL, classi o metodi statici Solo interfacce con attributi ComImport e Guid, delegate, struct semplici, enum Solo i tipi in assembly marcati con: [assembly:Guid(...)] e [assembly:ImportedFromTypeLib(...)]
26. Type Equivalence La Type Equivalence è una diretta conseguenza della possibilità di eseguire l'embedding Assembly A interface ITask { // ... } embedding embedding interface ITask { // ... } interface ITask { // ... } Assembly X Assembly Y type equivalenti
27. E se ...(Type Embedding & Equivalence) Ignoriamo COM Facciamo finta di referenziare una type library che non c'è Eseguiamo l'embedding dell'assembly più scomodo che ci sia: il classico "Common.dll" Contiene tipicamente le interfacce condivise in una architettura Scopriamo nella demo cosa succede
28. Evoluzione di C# DLR2 Script hosting Compiler as a Service Async ??? .NET 4.0 DLR Expression trees v2 Call site caching Dynamic dispatch .NET 3.5 LINQ Language features Expression trees Silverlight .NET 2.0 Generics Fast delegates Dynamic methods .NET 1.0 GC Reflection JIT BCL Code generation Verifier sandbox
29. Cosa arriverà ... Async "Syntactic Sugar" per esecuzione asincrona Compiler as a service Eval di codice a runtime Expression v2 usabili da codice Evoluzione delle expression di Linq MultiStatement E magari che possano essere ricavate senza costruire il tree a mano VB e C# allineati