Slide dal primo Scala Treviso Meetup del 25/06/2015. Lo studio di un caso reale per valutare i pro ed i contro dell'uso di Scala nella pratica di tutti i giorni.
Understand the basics: what reactive programming is, how it works why you should use it. Check how RXSwift library achieves FRP and a declarative way programming!
You may have heard about reactive programming. Maybe even checked out RxSwift. But if you're not using it in your daily development, you're really missing out! Rx decimates the boilerplate code you'd have to write to do the same things in the traditional, imperative manner. And, in this day and age where the answer to supporting multiple platforms has given rise to using "lowest common denominator" cross-platform development technologies, Rx shifts the focus back to developers who want to stay true to their platform of choice, by unifying the patterns and operators used to write app code on any platform. Come see how reactive programming with RxSwift will change your life and make you richer than your wildest dreams.
Una PA agile, funzionale e serverless: si può fare! by Federico Feroldi and D...Codemotion
#Codemotion Rome 2018 - In questo talk raccontiamo il percorso del team che si è occupato della progettazione e dello sviluppo della piattaforma di messaggistica tra PA e cittadini a scala nazionale, prevista dal Piano Triennale per l'ICT della Pubblica Amministrazione. Quali sono state le difficoltà? Quali le vittorie? Cosa abbiamo imparato da questo percorso? La Pubblica Amministrazione è una macchina complessa, lenta, ma che, se gestita nel modo giusto può generare innovazione e tecnologia allo stato dell'arte.
Una PA agile, funzionale e serverless: si può fare! - Danilo Spinelli - Codem...Codemotion
In questo talk raccontiamo il percorso del team che si è occupato della progettazione e dello sviluppo della piattaforma di messaggistica tra PA e cittadini a scala nazionale, prevista dal Piano Triennale per l'ICT della Pubblica Amministrazione. Quali sono state le difficoltà? Quali le vittorie? Cosa abbiamo imparato da questo percorso? La Pubblica Amministrazione è una macchina complessa, lenta, ma che, se gestita nel modo giusto può generare innovazione e tecnologia allo stato dell'arte.
Una Pubblica Amministrazione Agile, Funzionale e Serverless: si può fare! - C...Federico Feroldi
In questo talk raccontiamo il percorso del team che si è occupato della progettazione e dello sviluppo della piattaforma di messaggistica tra PA e cittadini a scala nazionale, prevista dal Piano Triennale per l'ICT della Pubblica Amministrazione. Quali sono state le difficoltà? Quali le vittorie? Cosa abbiamo imparato da questo percorso? La Pubblica Amministrazione è una macchina complessa, lenta, ma che, se gestita nel modo giusto può generare innovazione e tecnologia allo stato dell'arte.
A very introductive presentation about reactive programming principles. Starting from synchronous standard programming, I try to present the needs that driven to reactive programming. Callbacks, Future, Promises, Observables and Actor model are the main issues. I also make an introduction to the Reactive Manifesto.
The presentation is took from the Software Engineering course I run in the bachelor-level informatics curriculum at the University of Padova.
Understand the basics: what reactive programming is, how it works why you should use it. Check how RXSwift library achieves FRP and a declarative way programming!
You may have heard about reactive programming. Maybe even checked out RxSwift. But if you're not using it in your daily development, you're really missing out! Rx decimates the boilerplate code you'd have to write to do the same things in the traditional, imperative manner. And, in this day and age where the answer to supporting multiple platforms has given rise to using "lowest common denominator" cross-platform development technologies, Rx shifts the focus back to developers who want to stay true to their platform of choice, by unifying the patterns and operators used to write app code on any platform. Come see how reactive programming with RxSwift will change your life and make you richer than your wildest dreams.
Una PA agile, funzionale e serverless: si può fare! by Federico Feroldi and D...Codemotion
#Codemotion Rome 2018 - In questo talk raccontiamo il percorso del team che si è occupato della progettazione e dello sviluppo della piattaforma di messaggistica tra PA e cittadini a scala nazionale, prevista dal Piano Triennale per l'ICT della Pubblica Amministrazione. Quali sono state le difficoltà? Quali le vittorie? Cosa abbiamo imparato da questo percorso? La Pubblica Amministrazione è una macchina complessa, lenta, ma che, se gestita nel modo giusto può generare innovazione e tecnologia allo stato dell'arte.
Una PA agile, funzionale e serverless: si può fare! - Danilo Spinelli - Codem...Codemotion
In questo talk raccontiamo il percorso del team che si è occupato della progettazione e dello sviluppo della piattaforma di messaggistica tra PA e cittadini a scala nazionale, prevista dal Piano Triennale per l'ICT della Pubblica Amministrazione. Quali sono state le difficoltà? Quali le vittorie? Cosa abbiamo imparato da questo percorso? La Pubblica Amministrazione è una macchina complessa, lenta, ma che, se gestita nel modo giusto può generare innovazione e tecnologia allo stato dell'arte.
Una Pubblica Amministrazione Agile, Funzionale e Serverless: si può fare! - C...Federico Feroldi
In questo talk raccontiamo il percorso del team che si è occupato della progettazione e dello sviluppo della piattaforma di messaggistica tra PA e cittadini a scala nazionale, prevista dal Piano Triennale per l'ICT della Pubblica Amministrazione. Quali sono state le difficoltà? Quali le vittorie? Cosa abbiamo imparato da questo percorso? La Pubblica Amministrazione è una macchina complessa, lenta, ma che, se gestita nel modo giusto può generare innovazione e tecnologia allo stato dell'arte.
A very introductive presentation about reactive programming principles. Starting from synchronous standard programming, I try to present the needs that driven to reactive programming. Callbacks, Future, Promises, Observables and Actor model are the main issues. I also make an introduction to the Reactive Manifesto.
The presentation is took from the Software Engineering course I run in the bachelor-level informatics curriculum at the University of Padova.
S. Pratillo, 30 Novembre - 1 Dicembre 2021 -
Webinar: Miglioramento continuo dei processi e servizi IT per la digital transformation
Titolo: La piattaforma di digital workspace a supporto della produzione statistica
Marco Arena - Perché nel 2015 parliamo ancora di C++? | Codemotion Milan 2015Codemotion
Un sacco di applicazioni che utilizziamo quotidianamente sono sviluppate in C++. Per esempio, se stai leggendo questo abstract in un browser, allora probabilmente stai usando un software scritto in C++. Nonostante la diffusione di tanti altri eccellenti linguaggi, perché il C++ è ancora così utilizzato? Sapevi che nel 2014 è stato il secondo linguaggio più amato della SO Developer Survey? Cosa offre in più rispetto ad altre tecnologie? Presenterò la mia visione, e anche alcuni “segreti” che rendono il C++ speciale ed evoluto.
This presentation talks about structural design patterns. In software engineering, structural design patterns are design patterns that ease the design by identifying a simple way to realize relationships between entities. In particular in the slides are described the following patterns:
- Decorator
- Proxy
- Facade
- Adapter
Design patterns are presented using examples in Java, Scala and Javascript.
The presentation is took from the Software Engineering course I run in the bachelor-level informatics curriculum at the University of Padova.
BigData & Graphs in Rome
OrientDB & Big Data:storie di vita vissuta
Da un caso di successo a un futuro che “spacca”
Un backstage di un caso di successo con un occhio critico ai problemi avuti, ma con la consapevolezza di un futuro brillante.
Il riassunto della nascita di una suite di business intelligence.
By Luca Bianconi
@LucaBianconi74
This presentation talks about the main features of UML activity diagrams. The slides contain information about which are the main components of activity diagrams, how to use them to represent business processes and software algorithms.
The presentation is took from the Software Engineering course I run in the bachelor-level informatics curriculum at the University of Padova.
Art Everywhere: progetto per workshop Google. Sviluppo di sistemi di pattern ...Francesco Cucari
Tesi di Laurea Triennale in Ingegneria Informatica.
Art Everywhere è un social network in cui gli artisti emergenti possono farsi conoscere e condividere le proprie opere d’arte. Il progetto di tesi è il frutto di un lavoro di gruppo svolto durante il
workshop "Google Technologies for Cloud and Web Development", in cui ciascun componente ha sviluppato una o più funzionalità.
L’obiettivo del mio progetto di tesi è quello di mostrare gli algoritmi usati per il trasferimento (upload/download) efficiente delle opere d’arte, cioè di immagini, e per la loro compressione, prevenendo una perdita significativa della qualità e ottenendo così un comportamento simile all’algoritmo di compressione immagini usato da Whatsapp.
Inoltre viene presentato il sistema realizzato per il riconoscimento di pattern, finalizzato ad individuare similarità tra le opere d’arte presenti nel database e con opere d’arte famose, in modo da individuare falsi d’autore e prevenire eventuali furti di proprietà intellettuale.
This presentation talks about the main features of UML class diagrams. The slides contain information about how to use sequence diagrams to represent components' interactions in a software system. UML 2.x featuers are also described, like frames.
The presentation is took from the Software Engineering course I run in the bachelor-level informatics curriculum at the University of Padova.
SYDAV (Digital Advanced Visualization) di Sygest è uno strumento unico nel suo genere perché consente, in un solo tool, di essere utilizzato sia nella fase di costruzione della macchina (montaggio) che nella fase di postvendita.
S. Pratillo, 30 Novembre - 1 Dicembre 2021 -
Webinar: Miglioramento continuo dei processi e servizi IT per la digital transformation
Titolo: La piattaforma di digital workspace a supporto della produzione statistica
Marco Arena - Perché nel 2015 parliamo ancora di C++? | Codemotion Milan 2015Codemotion
Un sacco di applicazioni che utilizziamo quotidianamente sono sviluppate in C++. Per esempio, se stai leggendo questo abstract in un browser, allora probabilmente stai usando un software scritto in C++. Nonostante la diffusione di tanti altri eccellenti linguaggi, perché il C++ è ancora così utilizzato? Sapevi che nel 2014 è stato il secondo linguaggio più amato della SO Developer Survey? Cosa offre in più rispetto ad altre tecnologie? Presenterò la mia visione, e anche alcuni “segreti” che rendono il C++ speciale ed evoluto.
This presentation talks about structural design patterns. In software engineering, structural design patterns are design patterns that ease the design by identifying a simple way to realize relationships between entities. In particular in the slides are described the following patterns:
- Decorator
- Proxy
- Facade
- Adapter
Design patterns are presented using examples in Java, Scala and Javascript.
The presentation is took from the Software Engineering course I run in the bachelor-level informatics curriculum at the University of Padova.
BigData & Graphs in Rome
OrientDB & Big Data:storie di vita vissuta
Da un caso di successo a un futuro che “spacca”
Un backstage di un caso di successo con un occhio critico ai problemi avuti, ma con la consapevolezza di un futuro brillante.
Il riassunto della nascita di una suite di business intelligence.
By Luca Bianconi
@LucaBianconi74
This presentation talks about the main features of UML activity diagrams. The slides contain information about which are the main components of activity diagrams, how to use them to represent business processes and software algorithms.
The presentation is took from the Software Engineering course I run in the bachelor-level informatics curriculum at the University of Padova.
Art Everywhere: progetto per workshop Google. Sviluppo di sistemi di pattern ...Francesco Cucari
Tesi di Laurea Triennale in Ingegneria Informatica.
Art Everywhere è un social network in cui gli artisti emergenti possono farsi conoscere e condividere le proprie opere d’arte. Il progetto di tesi è il frutto di un lavoro di gruppo svolto durante il
workshop "Google Technologies for Cloud and Web Development", in cui ciascun componente ha sviluppato una o più funzionalità.
L’obiettivo del mio progetto di tesi è quello di mostrare gli algoritmi usati per il trasferimento (upload/download) efficiente delle opere d’arte, cioè di immagini, e per la loro compressione, prevenendo una perdita significativa della qualità e ottenendo così un comportamento simile all’algoritmo di compressione immagini usato da Whatsapp.
Inoltre viene presentato il sistema realizzato per il riconoscimento di pattern, finalizzato ad individuare similarità tra le opere d’arte presenti nel database e con opere d’arte famose, in modo da individuare falsi d’autore e prevenire eventuali furti di proprietà intellettuale.
This presentation talks about the main features of UML class diagrams. The slides contain information about how to use sequence diagrams to represent components' interactions in a software system. UML 2.x featuers are also described, like frames.
The presentation is took from the Software Engineering course I run in the bachelor-level informatics curriculum at the University of Padova.
SYDAV (Digital Advanced Visualization) di Sygest è uno strumento unico nel suo genere perché consente, in un solo tool, di essere utilizzato sia nella fase di costruzione della macchina (montaggio) che nella fase di postvendita.
Panorama necto, la business intelligence collaborativa mr v02
Scala ed Rx in pratica
1. Scala ed Rx
in pratica
Michele Mauro
@michelemauro
Scala Treviso Meetup
25/06/2015
2. WARDA - Fashion Digitalization
Chi vi parla...
CTO @ Visionest
Scientist @ Warda
Risolvo problemi
3. WARDA è la piattaforma software che mette ordine
al MEDIA CHAOS mediante specifiche applicazioni che
coprono le esigenze in tutte le fasi dell’azienda
Style & ProductStyle & Product
Board
digital technology
Board
digital technologyVisual & RetailVisual & Retail
E-CommerceE-Commerce
Marketing & SocialMarketing & Social
4. WARDA - Fashion Digitalization
Di cosa vi parlo
Scala applicato ad un problema diverso
dalla “solita„ applicazione web o Big Data
https://www.flickr.com/photos/photosdavidgabrielfischer/13990127367
5. WARDA - Fashion Digitalization
Problema
Archivio storico
80k file
1.2TB
DAMHTTP
Velocemente
Senza intervento manuale
Tracciando quanto eseguito
6. WARDA - Fashion Digitalization
Prima analisi
Attraversamento di un albero
di dimensione e cardinalità
ignota
La visita restituisce un
risultato ed i nodi del livello
successivo
7. WARDA - Fashion Digitalization
Future[T]
Un Future[T] diventerà un valore in futuro
La sua elaborazione può iniziare in qualsiasi momento
Future#get blocca fino al completamento
Future#isCompleted è vero quando il valore è
disponibile
8. WARDA - Fashion Digitalization
“Velocemente„
Con Future[T] gestiamo le operazioni di lunga
durata; e non dobbiamo più preoccuparci della
concorrenza.
type ResultRest[R] =
(TreeResult[R], List[TreeAction[R]])
type FutureResultRest[R] =
Future[ResultRest[R]]
9. WARDA - Fashion Digitalization
Il tipo dei dati
Tipo di dato
Documentazione Lessico
Istruzione Materia prima
Uno dei vantaggi più accessibili di Scala è la facilità con
cui è possibile maneggiare, costruire, e descrivere tipi.
10. WARDA - Fashion Digitalization
“Velocemente„
def buildFuture(
arg: TreeAction[R],
subscriber: Subscriber[TreeEvent[R]]):
FutureResultRest[R]
def select[A](
fs: Seq[Future[A]])
(implicit ec: ExecutionContext):
Future[(Try[A], Seq[Future[A]])]
Grazie a Viktor Klang: https://gist.github.com/4488970
11. WARDA - Fashion Digitalization
“Velocemente„
● Il numero di thread è un facile parametro
sull'ExecutionContext
● La condizione di termine è che la coda sia vuota, cioè
che select() ritorni (Success[A], Seq())
12. WARDA - Fashion Digitalization
“Velocemente„
def run(current: Seq[FutureResultRest[R]],
subscriber: Subscriber[TreeEvent[R]]): Unit = {
select(current) onSuccess {
case (done: Try[ResultRest[R]],
rest: Seq[FutureResultRest[R]]) =>
val result = done.get
val remaining = rest ++ result._2.map({ action =>
subscriber.onNext(TreeActionQueue(action))
action
}).map(buildFuture(_, subscriber))
if (remaining.isEmpty)
executionContext.shutdown()
else run(remaining, subscriber)
}
}
13. WARDA - Fashion Digitalization
Il tipo dei dati
When Scala came out,
Static Typing was dead
Martin Odersky, Scala Italy Milan 08/05/2015
Image by Marco Firrincieli https://plus.google.com/photos/112206187111185023340/albums/6162489666224189969
14. WARDA - Fashion Digitalization
“Una traccia di quanto eseguito„
● Come contare e sommare risultati che arrivano
contemporaneamente da più thread?
● E nel frattempo annotare le operazioni eseguite?
15. WARDA - Fashion Digitalization
ReactiveX
“An API for asynchronous
programming with
observable streams„
Semantica standardizzata
e accuratamente definita
“The Observer pattern
done right„
reactivex.io
introtorx.com
17. WARDA - Fashion Digitalization
“Una traccia di quanto eseguito„
Il nostro esecutore è un Observable. Ne ricaviamo un
ConnectableObservable, in modo da poterci collegare
più Subscribers:
val walker = TreeWalker[SyncDone]
(config.threads).traverse(List(root)).publish
18. WARDA - Fashion Digitalization
“Una traccia di quanto eseguito„
walker.subscribe(_ match {
case TreeActionEnd(
TreeResult(source, SyncDone(...), _), _) =>
localLog.println(f"...")
case _ => Nil })
var files = 0L
doneResults.map(s => 1)
.sum.subscribe(files = _)
var bytes = 0L
doneResults.map(_.bytes)
.sum.subscribe(bytes = _)
19. WARDA - Fashion Digitalization
“Una traccia di quanto eseguito„
walker.connect
20. WARDA - Fashion Digitalization
Risultati
Problema risolto
Ottima interazione con Java
Codice riutilizzabile
Multithreading semplice
21. WARDA - Fashion Digitalization
Punti critici
Tempi di compilazione
Ecosistema giovane
Inversione della prospettiva