In questa sessione andremo in dettaglio sul come poter migliorare le nostre applicazioni ASP.NET dal punto delle vista delle performance: Come capire dove interventire? Cosa possiamo migliorare? A cosa dobbiamo prestare attenzione? E nel caso di un'applicazione esistente, dove possiamo intervenire per migliorarla ulteriormente?
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.
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.
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? ...
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
FAST è una raccolta di tecnologie, basate su Web Components e su Web Standards moderni, che ci aiuta ad affrontare in modo efficiente alcune delle sfide più comuni nella progettazione e nello sviluppo di siti ed applicazioni Web.”
FAST ci aiuta a creare interfacce si adattano facilmente a qualunque Design System e che possono essere utilizzate con qualsiasi framework!
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.
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).
Windows azure - abbattere tempi e costi di sviluppoAndrea Dottor
In questa sessione vedremo come utilizzare Windows Azure per velocizzare e semplificare la realizzazione di applicazioni ASP.NET. Dallo sviluppo al deploy, passando per lo storage...andremo in dettaglio su varie funzionalità che ci faranno apprezzare ancora più la piattaforma Windows Azure.
This document discusses using a dependency injection container to configure NHibernate with a SOLID design approach. It introduces patterns like plug-in and optionality to split configuration tasks across assemblies and optionally enable/disable them. Configuration tasks implement interfaces to define their execution order and configuration logic. The container resolves and executes the tasks to configure NHibernate.
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.
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDDotNetCampus
La recente affermazione in ambito web delle applicazioni rich basate su HTML5 e Javascript è diventato sorgente di una serie di librerie innovative e di strumenti che, se usati correttamente, possono semplificare enormemente lo sviluppo. In questa sessione sarà illustrato come sfruttare Typescript, in concomitanza con Angular e Bootstrap per realizzare applicazioni che sfruttino al massimo le possibilità dei browser e diano un feedback il più possibile simile alle applicazioni desktop.
Slide Tesi di laurea:
Separazione dei ruoli tra Designer e Developer nello sviluppo di applicazioni Desktop: uso di WPF e del pattern Model-View-ViewModel
"Don't call us, we'll call you" - AngularJS meets Event-Driven ArchitectureLuca Milan
Slides del talk del 21 Marzo al 1° AngularJS Day ad Ancona. Come realizzare una dashboard per consultare in tempo reale l'andamento dei piloti in una gara del MotoGP. Tutte le variazioni saranno notificate al client evitando il polling continuo al server. L'architettura dell'applicazione seguirà il paradigma della Command-Query-Responsibility-Segregation (CQRS) in 'salsa' REST.
Demo su: http://angularjsday.azurewebsites.net/
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi StyleAntonio Musarra
Non sapete come realizzare un client SOAP in OSGi Style su Liferay 7?La risposta è il framework Apache CXF installato a bundle e poi OSGi Service Pattern.
A pattern language for microservices (#SFMicroservices)Chris Richardson
When architecting an application, you need to choose between the traditional monolithic architecture, or the more fashionable microservices architecture consisting of many smaller services. But rather than blindly picking the familiar or the fashionable, it’s important to remember what Fred Books said almost 30 years ago: there are no silver bullets in software. Every architectural decision has both benefits and drawbacks. Whether the benefits of one approach outweigh the drawbacks greatly depends upon the context of your particular project. Moreover, even if you adopt the microservices architecture, you must still make numerous other design decisions, each with their own trade-offs.
A software pattern is an ideal way of describing a solution to a problem in a given context along with its tradeoffs. In this presentation, we describe a pattern language for microservices. You will learn about patterns that will help you decide when and how to use microservices vs. a monolithic architecture. We will also describe patterns that solve various problems in a microservice architecture including inter-service communication, service registration and service discovery.
Developing microservices with aggregates (devnexus2017)Chris Richardson
The document discusses using domain-driven design aggregates and event sourcing to develop microservices architectures. It describes how aggregates partition domain models to allow microservices to own distinct capabilities. Event sourcing is presented as a way to implement event-driven architectures by persisting domain events rather than just the current state. Explicit sagas are proposed to orchestrate transactions across aggregates and microservices to maintain consistency in an eventually consistent way.
La community è uno dei punti di forza di Magento e l’elenco dei moduli disponibili permette di adattarlo a molte delle esigenze o specificità di qualunque E-Commerce.
In questo intervento si propone una carrellata di 20 moduli interessanti, alcuni dei quali probabilmente già conosciuti, altri probabilmente un po’ meno, cercando di coprire 20 diversi ambiti, dalle scontistiche alle spedizioni, dalle performance al marketing e così via.
Lo sviluppo del frontend negli ultimi anni ha raggiunto nuovi livelli di complessità, in seguito all’evoluzione di internet e alla sempre maggiore importanza dei motori di ricerca.
Oltre che di tutti gli aspetti grafici il frontend developer deve occuparsi anche di una serie di funzionalità e ottimizzazioni che nel mondo dell’eCommerce sono diventate fondamentali: Search Engine Optimization (SEO), social network integration e miglioramento delle prestazioni.
Nicola Della Marina nel suo intervento tratterà nel dettaglio i singoli argomenti, ed evidenzierà come sia fondamentale la loro interazione.
Lezione #4 di Paolo Gatti all'Università degli Studi di Teramo, Facoltà di Scienze della Comunicazione, avente come tema "SEO: Search Engine Optimization & Cloud computing".
Scopri le principali attività SEO da compiere quando si lancia un sito: keyword research, Ottimizzazione On Site, Ottimizzazione Off Site, Architettura delle Informazioni e altro ancora! Vienici a trovare su Marketing Freaks.
Quando si vuole lanciare un sito la SEO ha un ruolo fondamentale in quanto è meglio ottimizzare prima tutto e poi vivere di rendita invece di partire a caso e fare un lavoro oneroso ed enorme dopo.
Marketing Freaks vi propone una semplice guida per controllare che vengano implementate tutte le soluzioni SEO per il lancio di un nuovo sito. La guida può essere utile sia ai Web Master per fare un recap, ma soprattutto è indirizzata ai Manager/Responsabili di marketing.
Corso aggiornato su Google Anaytics a cura di DML. Tra le novità: il nuovo codice di monitoraggio Universal Analytics, Google Tag Manager, i nuovi obiettivi, la creazione di segmenti personalizzati.
Migliorare la SEO grazie al web semanticoKEA s.r.l.
Che cos'è il web semantico? Perché è rilevante ai fini dell'ottimizzazione dei siti? Quali vocabolari utilizzare per arricchire di contenuti semantici un sito di commercio elettronico? I motori di ricerca come utilizzano i contenuti semantici? Quali sono i vantaggi per acquirenti e venditori?
Checklist per il Setup Ottimale di un account Google Analytics. Scopri quali sono i principali parametri di configurazione di nuovo account Google Analytics per ottenere il massimo dal sistema di Analytics più famoso al mondo.
File originale: https://goo.gl/9C6hs7
Ormai tutti i browser mettono a disposizione strumenti per l'interfacciamento tramite plugin scritti sempre più spesso usando le classiche tecnologie web, quali Javascript e HTML.
In questa sessione verrà effettuata una prima presentazione della struttura di un plugin per Google Chrome e le funzionalità a cui è possibile accedere attraverso questo; verranno poi analizzate alcune funzioni specifiche fornite dalle API, infine vedremo la procedura di pubblicazione dell'applicazione
Manuel Toniato e Simone Caretta: Migliorare le performance di ricerca con Ela...Meet Magento Italy
Per un utente di un sito eCommerce la “buca” di ricerca è lo strumento preferenziale per l’inizio dell’esperienza di acquisto. Allo stesso tempo per il venditore può diventare un canale privilegiato per veicolare messaggi mirati. In questo talk Manuel e Simone analizzeranno la possibilità di integrare Magento con il motore di ricerca open source Elasticsearch (utilizzato fra gli altri da github, stackoverflow e mozilla). Ci mostreranno quali sono le peculiarità della soluzione rispetto a quelle offerte “out of the box” da Magento CE, parleranno brevemente dell’ecosistema di Elasticsearch, delle integrazioni disponibili e delle peculiarità rispetto ad altri full text search engine come Solr. Esamineranno, in particolare, una soluzione che utilizza Elasticsearch come engine per le collection Magento evidenziandone vantaggi e criticità.
Manuel Toniato e Simone Caretta: Migliorare le performance di ricerca con Ela...
Training Signal Webtrends
2. Signal
Con una sola riga di codice, generalmente collocata prima della chiusura del
body o nel footer del tuo sito, la piattaforma Signal fornisce un singolo punto
di integrazione per la gestione di tutti i servizi di marketing e di analisi digitali
sul sito.
L'interfaccia, di facile utilizzo, consente di aggiungere e rimuovere i tag in
pochi secondi.
3. Cos’è unTag
Un tag è uno snippet di JavaScript che invia informazioni a terze parti come
Webtrends.
Se non utilizzi una soluzione di gestione dei tag come Signal, devi aggiungere
questi snippet di JavaScript direttamente al codice sorgente del tuo sito.
Con Signal, invece, non hai più bisogno di gestire ogni snippet di JavaScript nel
tuo codice sorgente, ma puoi semplicemente indicare i tag da attivare e
specificare quando desideri attivarli nell'interfaccia.
4. Aggiungere una pagina
Con Signal, si ha la possibilità di taggare ogni pagina del vostro sito.
Attraverso l'uso di caratteri jolly , regex e l’uso di filtri di inclusione/esclusione, è possibile definire in
modo esplicito qualsiasi pagina o la raccolta di pagine da rendere attiva per la raccolta dati.
Per creare una pagina occorre:
1. Inserire il nome di pagina
2. Inserire l’URL
3. Inserire una breve descrizione
5. Definizione del pattern
• Se si omette http:// o https://, Signal abbinerà automaticamente a entrambi.
• I percorsi sono case sensitive
• Quando un singolo carattere jolly * viene posto dopo "/ " alla fine di un
pattern, agisce come un doppio jolly e corrisponderà a zero - a-molti
caratteri inclusi "/".
6. Esempi – URL pattern senza carattere *
Pattern: www.signalcart.com/
Matches:
http://www.signalcart.com/
https://www.signalcart.com/
http://www.signalcart.com
Does Not Match:
http://uat.signalcart.com/
http://www.singalcart.com/onlinetools/people/configure.html
Definizione del pattern
7. Esempi – URL pattern con carattere * alla fine
Pattern: wwwsignalcart.com*
Matches:
http://www.signalcart.com
https://www.signalcart.com
http://www.signalcart.com/
http://www.signalcart.com.uk
Does Not Match:
http://signalcart.com
http://uat.signalcart.com
http://www.SignalCart.com
Definizione del pattern
8. Esempi – URL pattern con carattere * in mezzo
Pattern: www.singalcart.com/*/configure.html
Matches:
http://www.signalcart.com/onlinetools/configure.html
http://www.signalcart.com/mobiletools/configure.html
Does Not Match:
http://www.signalcart.com/onlinetools/people/configure.html
http://www.signalcart.com/onlinetools/people/address/configure.html
Definizione del pattern
9. Esempi – URL pattern con carattere * seguito da /
Pattern: www.signalcart.com/*/
Matches:
http://www.signalcart.com/onlinetools
http://www.signalcart.com/onlinetools/
http://www.signalcart.com/mobiletools
http://www.signalcart.com/mobiletools/
Does Not Match:
http://www.signalcart.com/onlinetools/configure.html
http://www.signalcart.com/mobiletools/configure.html
Definizione del pattern
10. Esempi – URL pattern con doppio carattere * seguito da /
Pattern: www.signalcart.com/**/configure.html
Matches
http://www.signalcart.com/onlinetools/configure.html
http://www.signalcart.com/mobiletools/configure.html
http://www.signalcart.com/onlinetools/people/configure.html
http://www.signalcart.com/onlinetools/people/address/configure.html
Does Not Match:
http://signalcart.com/onlinetools/configure.html
http://www.signalcart.com/mobiletools/features.html
Definizione del pattern
11. Esempi – URL pattern terminato con il carattere *
Pattern: www.signalcart.com/*
Matches
http://www.signalcart.com
http://www.signalcart.com/
http://www.signalcart.com/onlinetools
http://www.signalcart.com/onlinetools/
http://www.signalcart.com/mobiletools/configure.html
Does Not Match:
http://uat.signalcart.com/
http://uat.signalcart.com/mobiletools/configure.html
Definizione del pattern
12. Esempi – URL pattern terminato con il doppio carattere *
Pattern: www.signalcart.com/**
Matches
http://www.signalcart.com/
http://www.signalcart.com/onlinetools
http://www.signalcart.com/onlinetools/
http://www.signalcart.com/mobiletools/configure.html
Does Not Match:
http://www.signalcart.com
http://uat.signalcart.com/mobiletools/configure.html
Definizione del pattern
13. Esempi – URL pattern terminato con la stringa {}
Pattern: www.signalcart.com/*/{}
Matches:
http://www.signalcart.com/onlinetools/
http://www.signalcart.com/onlinetools-sale/
Does Not Match:
http://www.signalcart.com
http://www.signalcart.com/
http://www.signalcart.com/onlinetools
Definizione del pattern
14. Ordine esecuzione
Signal rispetta, nell’esecuzione dei tag, librerie ecc ecc, il seguente ordine:
• Script Libraries
• Events Bindings & Data Binding Expressions
• Tags
Quindi le prime ad essere eseguite sono le librerie, successivamente gli eventi ed
infine i tags. In particolare quest’ultimi possono essere eseguiti non rispettando
l’ordinamento di assegnazione alla pagina essendo l’esecuzione asincrona
15. Data Binding Expression
Data Binding Expression ( DBE ) è un insieme di espressioni JavaScript che permette
di raccogliere i dati dalle pagine del sito per poi essere assegnati ai tag.
All’interno di Signal il valore dell’espressione viene recuperato attraverso la sintassi
[[<<nome DBE>>]]
Nelle slide successive alcuni esempi
16. Data Binding Expression
• Recuperare i dati dall’URL
• Recuperare i valori da un oggetto javascript
URL DBE Valore restituito
http://www.site.com/product.do?pid=3333&cat=9999 bt_parameter('pid') 3333
http://www.site.com/product.do?pid=3333&cat=9999 bt_parameter('cat') 9999
Codice Sorgente DBE Valore restituito
var firstVariable = "My FirstValue"; firstVariable "My FirstValue"
var secondVariable = "My SecondValue"; secondVariable "My SecondValue"
17. Data Binding Expression
• Recuperare i valori da un css
Codice DBE Valore restituito
<div id="productDetails">
<div class="title bold">Awesome
Aviators</div>
<div class="pid">39528</div>
<div class="price">$99.00</div>
jQuery('#productDetails .title').text() "Awesome Aviators"
jQuery('#productDetails .pid').text() "39528"
jQuery('#productDetails
title').text().replace('$','')
"99.00"
18. Data Binding Expression
• Recuperare i valori da un First Part Cookie
Codice DBE Valore restituito
country=US;ABtest=A;visitor_id
=337788;
bt_cookie('country') "US"
bt_cookie('ABtest') "A"
bt_cookie('visitor_id') "337788"
19. Data Binding Expression
• Recuperare i valori con funzioni JavaScript
Codice DBE Valore Restituito
var pageData = { "items" : [ {"sku" : "6066", "name" : "Waxy Candle"}, {"sku" : "4878",
"name" : "Shiny Gloss"}, {"sku" : "2992", "name" : "Fancy Pants"} ] };
(function(){ var skus = []; var items = pageData.items; for (var
i=0;i<items.length;i++) { products.push(items[i].sku);} products = products.join('|');
return products; })();
"6066|4878|2992"
<div id="productDetails"> <div class="pid">6066</div> <div class="name">Waxy
Candle</div> </div> <div id="productDetails"> <div class="pid">4878</div> <div
class="name">Shiny Gloss</div> </div> <div id="productDetails"> <div
class="pid">2992</div> <div class="name">Fancy Pants</div> </div>
(function(){ var skus = []; jQuery('#productDetails.pid').each(
skus.push(jQuery(this).text()); ) return skus.join('|'); })();
"6066|4878|2992"
var memberLevel = "silv555"
(function(){ var matchTable = []; 'none333' : 'Not a Member', 'silv555': 'Silver',
'gold666' : 'Gold', 'plat777' : 'Platinum'} return table[memberLevel]; })();
"Silver"
20. Esempio pratico – parametro query string
• Creare pagina
• Definire un DBE
Creare un nuovo tag che richiami il parametro passato in query string facendo l’append del meta.
<script>
var param = "[[param3]]";
var meta = document.createElement('meta');
meta.setAttribute('name', 'DCSext.testprismaparam');
meta.setAttribute('content', param);
document.getElementsByTagName('head')[0].appendChild(meta);
</script>
21. Event Bindings(Firing Rules) - dcsMultiTrack
• Un evento può essere triggerato quando un utente compie un'azione su una
pagina che interessa tracciare come ad esempio il click su di un pulsante/link
• Per creare un evento occorre quindi creare un nuovo «Event DataBinding» e
assegnare alla pagina il tag condizionato con «FiringRules» all’evento.
22. Ruoli standard• Administrator
• Cosa possono vedere: tutto
• Cosa possono modificare: utenti, siti, pagine, data and event bindings
• Cosa possono attivare/deattivare: tutto
• Data Developer
• Cosa possono vedere: tutto eccetto gli utenti
• Cosa possono modificare: pagine, data and event bindings
• Cosa possono attivare/deattivare: tutto
• Readonly
• Cosa possono vedere: tutto eccetto gli utenti
• Tag controbutor
• Cosa possono vedere: tutto eccetto gli utenti
• Cosa possono modificare: integrazioni inattive
• Tag Manager
• Cosa possono vedere: tutto eccetto gli utenti
• Cosa possono modificare: tags
• Cosa possono attivare/deattivare: tutto
23. Raggruppamenti Utenti (User Groups)
In alcuni casi, potrebbe essere necessario limitare l'accesso ad alcuni
siti/pagine per uno o più utenti.
In Signal, le funzionalità Group e Permissions (che vedremo), permettono agli
amministratori di creare i propri gruppi di utenti e di fornire a quei gruppi di
utenti l'accesso a siti/pagine/tags particolari.
24. Raggruppamenti di pagine (Page Groups)
Un gruppo di pagine, è essenzialmente un contenitore per le pagine che
desiderate raggruppare.
Questa funzionalità è utile, oltre che per dare una classificazione alle diverse
pagine dei siti, anche per poter dare l’accesso a determinate pagine definite
nel sito, ad un gruppo di utenti.
25. Raggruppamenti deiTags (Tag Groups)
UnTag Group è essenzialmente un contenitore per i tag che si desidera
raggruppare e deve essere creato prima di poter dare un gruppo di utenti
l'accesso a taleTag oTagGroup.
Questa funzionalità è utile, oltre che per dare una classificazione ai diversi tag
dei siti, anche per poter dare l’accesso a determinati tag definiti nel sito, ad un
gruppo di utenti.
26. Permessi Utente - Gruppi
In alcuni casi, potrebbe essere necessario limitare l'accesso ad
alcuni siti/pagine per uno o più utenti.
Signal, permette di agli amministratori, di creare gruppi di utenti e
di fornire a questi accessi con dei ruoli definiti tra:
• Nothing: Sia per “Page Groups” che “Tag Groups”. Gli utenti appartenenti
ad un particolare “User Groups” non possono vedere le pagine o i tag nel
sito.
• See: Sia per “Page Groups” che “Tag Groups”. Gli utenti possono vedere le
pagine e i tag nel sito appartenenti ai Page/Tag Groups ma non possono
editarli.
27. Permessi Utente - Gruppi
• Assign and activate tags: Per “Page Groups”. L’utente può assegnare una
pagina e attivare i tag ma non puo’ editarare gli attributi di pagina, i
Data/Event Bindings o assegnare Script Libraries.
• Edit attributes and bindings: Per “Page Groups”. Gli utenti che
appartengono ad un “User Group” con questo ruolo, hanno accesso completo
per editare gli attribute di pagina , data bindings, event bindings,
assegnazione dei tag, e script libraries. Non hanno accesso per editare, creare
e cancellare le pagine e modificare le URL di pagina.
• Edit: Per “Tag Groups”. Questo permette ad un “User Groups” di modificare
un tag.