This is a short presentation I gave back in 2008 at the UgiAlt.Net conference in Milan about inversion of control and dependency injection principles. Examples use Castle project's Windsor container.
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.
Actions on Google e Alexa skills per .NET loversLorenzo Giudici
Evento #Aperitech 05/11/2019 organizzato da Codemotion.
Ospite: la community di Milano Chatbots con 5 talk per illustrare lo stato dell'arte dei chatbot e dei voicebot.
1° Talk tecnico:
"Google Home", "Alexa", "Skills", "Smart speaker"… ne sentiremo parlare (tanto) anche nel 2020 e noi sviluppatori .NET possiamo cavalcare l'onda perchè abbiamo tutti gli strumenti e le competenze necessarie.
VIDEO: https://youtu.be/tboHO_mj2uM
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.
Actions on Google e Alexa skills per .NET loversLorenzo Giudici
Evento #Aperitech 05/11/2019 organizzato da Codemotion.
Ospite: la community di Milano Chatbots con 5 talk per illustrare lo stato dell'arte dei chatbot e dei voicebot.
1° Talk tecnico:
"Google Home", "Alexa", "Skills", "Smart speaker"… ne sentiremo parlare (tanto) anche nel 2020 e noi sviluppatori .NET possiamo cavalcare l'onda perchè abbiamo tutti gli strumenti e le competenze necessarie.
VIDEO: https://youtu.be/tboHO_mj2uM
Intelligenza artificiale nel mondo front-end - CodeGen2021Michele Aponte
Le applicazioni dell'intelligenza artificiale sono tantissime e ci permettono di andare a risolvere specifici problemi per dare valore alle nostre soluzioni: proviamo a immaginare una nuova User eXperience per le nostre applicazioni business che vada oltre pagine e forms e che sfrutti nuove tipologie di interazioni rese possibili dalle applicazioni della IA.
Dependency injection questa sconosciutaAndrea Dottor
L'uscita di ASP.NET Core ha portato a una maggiore diffusione dell'utilizzo della DI (Dependency Injection) ma spesso senza che lo sviluppatore sappia la sua reale utilità o potenzialità.
Dependency Injection, uno dei design pattern della programmazione OOP. Una best-practice dello sviluppo che può portare alla semplificazione del codice scritto, facilitare il disacoppiamento, e migliorare la testabilità.
In questa sessione vedremo cos'è la DI e come utilizzarla intelligentemente all'interno dei nostri progetti.
Slide dell'evento "XE One Day - Good code" tenuto il 15.09.2018.
Il codice è disponibile alla pagina dell'evento https://www.xedotnet.org/eventi/one-day-good-code/
DotNetCampus - Continuous Integration con Sql ServerAlessandro Alpi
Continuous Integration con SQL Server. Come automatizzare i processi di build e di test su database SQL Server. Come includere SQL Server nei processi di Application Lifecycle Management (Database Lifecycle Management).
ARCHITETTURA DI UN'APPLICAZIONE SCALABILEDotNetCampus
Questa sessione tratterà delle implementazioni di architetture robuste e scalabili, in scenari di sviluppo applicativi rientranti nella tipologia dei Software as a Service. In particolare vedremo come accopiare le feature e le necessità del SaaS con servizi propri presenti su Azure; con focus su web, servizi mobili, data, e notification.
Introduction to Blazor and WebAssembly in Christmas sauce. In this session we will see how to create a small demonstration application to send Christmas greetings.
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!DotNetCampus
AppStudio e' un ambiente RAD web based per lo sviluppo di Universal App (Windows Phone 8.1 e Windows 8.1) per la visualizzazioni di sorgenti dati. In questa sessione vedremo come sia facile realizzare da zero un'app che acceda a sorgenti remote e come sia, infine, possibile personalizzare il codice sorgente per poter implementare le proprie personalizzazioni.
Sviluppo di soluzioni embedded moderne con .NET Micro Framework by Lorenzo Ma...Codemotion
In questo Talk verrà presentata una tra le più moderne e produttive piattaforme di sviluppo embedded attualmente esistenti: il .NET Micro Framework di Microsoft (.NETMF).
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaAndrea Dottor
Sfrutta le tue abilità come sviluppatore web per creare app mobile per Windows Phone, iOS ed Android utilizzando una unica code-base (composta da codice HTML, CSS e JavaScript) e lavora direttamente in Visual Studio. Questo è ora possibile grazie all'estensione "Multi-Device Hybrid Apps for Visual Studio" ed all'uso di Apache Cordova. Un unico IDE ed un singolo progetto per sviluppare per le più diffuse piattaforme mobile.
In questa sessione scopriremo i vantaggi di questa combinazione e daremo risposta ad alcune domande: Quali vantaggi abbiamo dall'utilizzare Visual Studio? Perchè e quando sviluppare un'app ibrida? ...
Inversion of Control and Dependency InjectionDinesh Sharma
This document discusses inversion of control (IoC) and dependency injection (DI). It defines IoC as inverting control of object flow compared to procedural programming. DI reduces coupling between components by injecting dependencies rather than hard-coding them. The benefits are more flexible, reusable, and testable code. The document provides examples of implementing DI in a .NET web API project using the Unity IoC container. It registers dependencies and creates a custom IDependencyResolver to resolve them.
This presentation goes through what Inversion of Control is, which IOC patterns that exists, which of the patterns you should use and when you should use them.
Intelligenza artificiale nel mondo front-end - CodeGen2021Michele Aponte
Le applicazioni dell'intelligenza artificiale sono tantissime e ci permettono di andare a risolvere specifici problemi per dare valore alle nostre soluzioni: proviamo a immaginare una nuova User eXperience per le nostre applicazioni business che vada oltre pagine e forms e che sfrutti nuove tipologie di interazioni rese possibili dalle applicazioni della IA.
Dependency injection questa sconosciutaAndrea Dottor
L'uscita di ASP.NET Core ha portato a una maggiore diffusione dell'utilizzo della DI (Dependency Injection) ma spesso senza che lo sviluppatore sappia la sua reale utilità o potenzialità.
Dependency Injection, uno dei design pattern della programmazione OOP. Una best-practice dello sviluppo che può portare alla semplificazione del codice scritto, facilitare il disacoppiamento, e migliorare la testabilità.
In questa sessione vedremo cos'è la DI e come utilizzarla intelligentemente all'interno dei nostri progetti.
Slide dell'evento "XE One Day - Good code" tenuto il 15.09.2018.
Il codice è disponibile alla pagina dell'evento https://www.xedotnet.org/eventi/one-day-good-code/
DotNetCampus - Continuous Integration con Sql ServerAlessandro Alpi
Continuous Integration con SQL Server. Come automatizzare i processi di build e di test su database SQL Server. Come includere SQL Server nei processi di Application Lifecycle Management (Database Lifecycle Management).
ARCHITETTURA DI UN'APPLICAZIONE SCALABILEDotNetCampus
Questa sessione tratterà delle implementazioni di architetture robuste e scalabili, in scenari di sviluppo applicativi rientranti nella tipologia dei Software as a Service. In particolare vedremo come accopiare le feature e le necessità del SaaS con servizi propri presenti su Azure; con focus su web, servizi mobili, data, e notification.
Introduction to Blazor and WebAssembly in Christmas sauce. In this session we will see how to create a small demonstration application to send Christmas greetings.
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!DotNetCampus
AppStudio e' un ambiente RAD web based per lo sviluppo di Universal App (Windows Phone 8.1 e Windows 8.1) per la visualizzazioni di sorgenti dati. In questa sessione vedremo come sia facile realizzare da zero un'app che acceda a sorgenti remote e come sia, infine, possibile personalizzare il codice sorgente per poter implementare le proprie personalizzazioni.
Sviluppo di soluzioni embedded moderne con .NET Micro Framework by Lorenzo Ma...Codemotion
In questo Talk verrà presentata una tra le più moderne e produttive piattaforme di sviluppo embedded attualmente esistenti: il .NET Micro Framework di Microsoft (.NETMF).
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaAndrea Dottor
Sfrutta le tue abilità come sviluppatore web per creare app mobile per Windows Phone, iOS ed Android utilizzando una unica code-base (composta da codice HTML, CSS e JavaScript) e lavora direttamente in Visual Studio. Questo è ora possibile grazie all'estensione "Multi-Device Hybrid Apps for Visual Studio" ed all'uso di Apache Cordova. Un unico IDE ed un singolo progetto per sviluppare per le più diffuse piattaforme mobile.
In questa sessione scopriremo i vantaggi di questa combinazione e daremo risposta ad alcune domande: Quali vantaggi abbiamo dall'utilizzare Visual Studio? Perchè e quando sviluppare un'app ibrida? ...
Inversion of Control and Dependency InjectionDinesh Sharma
This document discusses inversion of control (IoC) and dependency injection (DI). It defines IoC as inverting control of object flow compared to procedural programming. DI reduces coupling between components by injecting dependencies rather than hard-coding them. The benefits are more flexible, reusable, and testable code. The document provides examples of implementing DI in a .NET web API project using the Unity IoC container. It registers dependencies and creates a custom IDependencyResolver to resolve them.
This presentation goes through what Inversion of Control is, which IOC patterns that exists, which of the patterns you should use and when you should use them.
This document describes hash maps and hash tables. It provides examples of using a hash function to map keys to indexes in an array, which can store key-value pairs. It discusses concepts like collisions, load factor, and different strategies for handling collisions like open addressing and closed addressing.
Nakov at Fuck Up Nights - July 2015 @ SofiaSvetlin Nakov
Svetlin Nakov developed a technical startup project to scan ID cards and extract data using OCR, but it failed for several reasons. The project aimed to scan an ID card, extract fields like name and ID number using image processing and Tesseract OCR, and auto-fill forms. However, Tesseract had poor accuracy and image processing proved complex. Additionally, the project struggled to find customers, lacked a business model, and had no marketing or sales strategy. As a result, the startup ultimately failed.
The document discusses Spring IOC and DAO. It provides an overview of Spring framework, Inversion of Control (IOC) and Dependency Injection in Spring. It also describes how Spring supports data access with JDBC Template and DAO implementations. The JDBC Template simplifies JDBC usage and avoids common errors by providing callback interfaces for writing and reading database operations. Spring DAO classes can extend support classes to get a JDBC or Hibernate template based on the persistence mechanism.
Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")Svetlin Nakov
"Следвай вдъхновението си!" е необикновен поучителен разказ за търсенето на истинското вдъхновение, за пътя на личностното и духовното израстване, за следването на мечтите, за успеха и неговата цена, за провалите и поуките по пътя, за поетите неправилни посоки и болезнените корекции на съдбата, за несломимия дух и доверието във вътрешната мъдрост, за непрестанното развитие и издигане на следващо ниво, за една безразсъдно смела амбиция довела до революция в ИТ образованието, за намирането на истинската мисия в живота, за автентичното лидерство, за ценностите и убежденията и тяхната еволюция, за вселенските закони и принципа "стъпка по стъпка", за намирането наподходящите за теб учения, вярвания, инструменти и методи, които работят конкретно за теб и те издигат на следващо ниво, за интуитивната преценка на хората, за ученето и усъвършенстването през целия живот, за откриването и следването на истинското призвание в живота, което всеки носи в себе си.
Професиите в ИТ индустрията: програмист, QA, админ, дизайнер, ИТ консултант, бизнес анализатор, специалист по дигитален маркетинг и други и как да придобием тези професии?
Светлин Наков @ УНСС
31 март 2016 г.
Как да станем софтуерни инженери и да стартираме ИТ бизнес?Svetlin Nakov
This document provides guidelines for becoming a software engineer or starting an IT business. It recommends defining your goals such as what technology or position to pursue. It also suggests finding resources like courses, tutorials, videos and books to learn skills. Additionally, it emphasizes the importance of practicing through real-world projects to gain experience. The document advises joining a developer community and participating in events. Finally, it notes that the best way to learn is by starting a job in the software industry.
Работа с Естествен Интелект – Личност – Време – 3 юли 2013 @ НЛП клубSvetlin Nakov
Семинар "Работа с Естествен Интелект – Личност – Време" – 3 юли 2013 @ НЛП клуб – http://nlpclub.devbg.org/2013/06/23/seminar-rabota-s-estestven-intelekt-lichnost-vreme-3-july-2013/
В провокативния стил на сократовата беседа и с богат илюстративен материал ще бъдат представени и дискутирани традиционни, но непопулярни концепции за индивидуалността (или липсата на такава) и персоните, 7-те основни схващания за Времето, 3-те житейски подхода за битовото му потребление и заключителна персонална схема за разпределение. В дискусионен стил ще се представят някои концепции за житейските стратегии и траектории, за мисловните структури, нагласи и капани, за похватите във втория етап на съблазняването и за влиянието на IT заниманията върху изброените теми.
Regular Expressions. Validation. Split. Matching, ...
------------------------------------------------------------
Test RegEx at:
http://www.regexr.com
------------------------------------------------------------
[0-9]+
------------------------------------------------------------
[A-Z][a-z]*
------------------------------------------------------------
\s+
------------------------------------------------------------
\S+
------------------------------------------------------------
\w+
------------------------------------------------------------
\W+
------------------------------------------------------------
\+\d{1,3}([ -]*[0-9]){6,}
+1-800-555-2468
+359 2 834-2334
+359888123456
(052) 343-434
------------------------------------------------------------
^\+\d{1,3}([ -]*[0-9]){6,}$
+359 2 123-456 is a match
+359 (888) 123-456 is a NOT match
------------------------------------------------------------
Simplified Email Extraction Pattern:
/[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,20}/gi
------------------------------------------------------------
var emailPattern =
/^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,20}$/i;
console.log(emailPattern.test("test@abv.bg"));
console.log(emailPattern.test("a.hills@gtx.de"));
console.log(emailPattern.test("invalid@@mail"));
console.log(emailPattern.test("err test@abv.bg"));
------------------------------------------------------------
var towns = "Sofia, Varna,Pleven, Veliko Tarnovo; Paris – London––Viena\n\n Пловдив|Каспичан";
console.log(towns.split(/\W+/)); // incorrect
console.log(towns.split(/\s*[.,|;\n\t–]+\s*/));
------------------------------------------------------------
var text = "I was born at 14-Jun-1980. Today is 14-Mar-2015. Next year starts at 1-Jan-2016 and ends at 31-Dec-2016.";
var dateRegex = /\d{1,2}-\w{3}-\d{4}/gm;
console.log(text.match(dateRegex));
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.
From its birth, the CQRS (along with event sourcing) has been very attractive for the entire developers community but nonetheless still an "hipster" approach to application architecture design, despite many benefit. But when IoT comes in play, it becomes very interesting to apply it in production grade systems. Let's show why...
Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...Mattia De Bernardi
Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamento al sistema di controllo TANGO, tramite l'ausilio del framework Apache Cordova
Presentazione alla Google Dev Fest Mediterranean 2016 di Catania con presentazione sulle metodologie di utilizzo di microservices e sui sistemi per monitorare le infrastrutture
Programma il futuro: una scelta open sourceMarco Ferrigno
Un'analisi tecnica dello strumento che avrà un grande impatto culturale sul futuro del nostro Paese: Programma Il Futuro. Nato da un'idea che ha visto coinvolti Il MIUR, il CINI – Consorzio Interuniversitario Nazionale per l’Informatica - e aziende IT intervenute come sponsor, l'iniziativa ha l’obiettivo di fornire alle scuole una serie di strumenti semplici, divertenti e facilmente accessibili per formare gli studenti ai concetti di base dell'informatica. Il fine ultimo è dunque la formazione sin dalla tenera età del pensiero computazionale. Scopriremo insieme al collega Mario Rossano (responsabile della progettazione software) il perchè di un approccio opensource ad un progetto ad elevata criticità per il sistema Paese.
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceMario Rossano
Slide di presentazione del progetto Programma Il Futuro (http://www.programmailfuturo.it) che mi ha visto come progettista del software in cooperazione con Marco Ferrigno che ha curato l'infrastruttura di rete.
Il progetto, ideato dal prof. Giorgio Ventre (Univ. "Federico II" di Napoli) ed il prof. Enrico Nardelli (Univ. di Roma "Tor Vergata") per il CINI (Consorzio Interuniversitario Nazionale per l'Informatica) ed il MIUR (Ministero dell'Istruzione, Università e Ricerca), fa parte de "La Buona Scuola", iniziativa promossa dal Ministro Giannini, in collegamento con il progetto internazionale Code.org tra i cui testimonial Barak Obama.
Il portale, che è il primo ad integrare la crittografia frattale FNA che ho sviluppato, ha come cuore il sistema di registrazione con profilazione capillare - a nodi - degli utenti, ed il bridge di comunicazione (un hack) verso il sistema di registrazione di code.org e di hourofcode.com.
Nelle slides i link ipertestuali verso pastebin.com dove sono riportate alcune parti del codice crittografico e del bridge in Perl.
Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...Mattia De Bernardi
Presentazione del lavoro di tesi circa lo sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamento al sistema di controllo TANGO, tramite l'ausilio del framework Apache Cordova
Similar to Dependency Injection and Inversion Of Control (20)
2. Comunemente DI - IoC
Principi comuni di disegno software
Alta coesione
Basso accoppiamento
…
Basso accoppiamento
Riduzione delle dipendenze tra componenti
software
Chi conosce chi?
Risoluzione dipendenze tra componenti
3. Voglio poter registrare le iscrizioni ad un
evento
Persistere i dettagli dell’iscritto
Comunicare se l’iscrizione è andata a buon fine
tramite mail
EmailService
SubscriptionService
PersonRepository
4. SubscriptionService conosce direttamente i dettagli di
EmailService e PersonRepository BAD
5. Il servizio conosce solo l’interfaccia dei componenti
che utilizza GOOD
6. Iniettare dipendenze dall’esterno rende più
onerosa l’istanziazione di componenti
Necessario conoscere tutte le dipendenze
7. Hollywood Principle
Don’t call us, we will call you!
Vorrei un’istanza di
SubscriptionService
8. Entità esterna all’applicazione
Configurabile
Conosce le dipendenze tra i componenti ed è
in grado di soddisfarle a runtime
IoC Container
Vorrei un’istanza di SubscriptionService
Istanza completa di tutte le dipendenze
9. Inversion of Control container open source
Stabile – production ready
Il container si occupa
Si configura il
Si richiede l’istanza di soddisfare le
container (xml, boo,
di un componente dipendenze e creare
C#)
l’istanza
11. Codice client
Molto meglio, eh?
Altri containers
StructureMap
Spring.Net
Autofac
…
12. Inversion of Control and Dependency
Injection: Working with Windsor Container
http://msdn.microsoft.com/en-
us/library/aa973811.aspx
Castle Project
http://www.castleproject.org/container/
StructureMap
http://structuremap.sourceforge.net