Mercoled狸 25 luglio, abbiamo avuto il piacere di ospitare alcuni speaker delle community Data Science e Python.
PROGRAMMA
Data Science - Michele Vitali
Sentiment Analysis & Machine Learning - Alessandro Cucci
Git for Data Science - Luca Fontanili
Introduction to Data Visualization - Sergey Antopolsky - (in English)
5. DataAnalysis&MachineLearning
5
DataAnalysis&MachineLearning
2.5 +29%Quintillion bytes of
data/every day
90% dei dati esistenti 竪
stato creato solo negli
ultimi due anni.
Grow rate data
from 2012 to 2020
Nuovi dispositivi, sensori e
tecnologie accelereranno il
tasso di crescita dei dati.
Data In the World
Qual 竪 lattuale stato
dei dati
nel mondo?
Sistemi artificiali e Data Center
I progressi tecnologici in ambito computazionale e
della potenza di calcolo, stanno spingendo i leader
della trasformazione digitale ad investire sempre pi湛 in
infrastrutture, Storage flash e strumenti di gestione dei
dati.
10. La comunit di Data Science, Machine Learning e
Artificial Intelligence a Parma:
Meet up
Events
About us
11. Interagire con altre comunit
E tutto ci嘆 che ci viene in mente ...
About us
12. Pics by Anna Marzo Photography
Evento DS&AI Parma
@FabLab. Marzo 18
13. Telegram Channel:
Data Science and Artificial
Intelligence in Parma
https://t.me/joinchat/G1YIUB
A4t85VXTZzIwqIOw
Contatti
Facebook Page:
Data Science and Artificial
Intelligence in Parma
@DSAIinParma
14. Unisciti a noi e aiutaci a:
Organizzare eventi
Gestire Social Media
Essere in contatto con la community
Be part of the community
19. Data scientist
la figura responsabile della raccolta, analisi ed
interpretazione dei dati. Si pone tra scienza,
matematica, statistica e decodifica dei fenomeni
emergenti, reali e non, o simulati.
21. Some cases - Data Visualization
Accurat for Corriere della Sera
A series of experimental data
visualizations for the weekly
cultural supplement of the
largest Italian newspaper
26. Un progetto in solitaria
Il flusso di sviluppo 竪 semplice:
Totale controllo delle modifiche apportate ai singoli file
Nessun rischio di modifiche concorrenti
Manca comunque qualcosa:
Nessuna traccia delle versioni precedenti (se non con la famigerata
tecnica driver_new_YYYYMMDD_v2_last.py)
Nessuna possibilit di branch di sviluppo paralleli
27. Aumentiamo gli sviluppatori
Quando si 竪 in due
Rischio di modifiche concorrenti allo stesso file
Numero maggiore di modifiche ai singoli file, i.e. maggior rischio di
introduzione bug
"L'hai fatto tu o l'ho fatto io?"
Aumentiamo ancora:
Crescita esponenziale dei problemi precedentemente descritti
"Chi l'ha fatto?", "Chi l'ha tolto?"
29. 1 - Singolo sviluppatore: introduzione di bug
Il contesto:
Si vuole aggiungere una feature al nostro progetto
Necessario modificare alcuni file/classi gi funzionanti
Mancanza di test suite porta ad introduzione bug
Deploy della nuova versione
Bug
Il problema:
Come recupero le modifiche implementate?
30. 2 - Pi湛 sviluppatori: condivisione del codice
Il contesto:
2 o pi湛 sviluppatori sullo stesso progetto
Una macchina ognuno
Il problema:
Come possono avere tutti il codice sempre aggiornato alle ultime
modifiche? (Google Drive)
31. 3 - Pi湛 sviluppatori: sviluppo parallelo
Il contesto:
2 o pi湛 sviluppatori
Ognuno vuole sviluppare la nuova feature
Lo sviluppo non parte in concomitanza (casi reali)
Il problema:
Che versione del codice utilizzano?
Come si sincronizzano le modifiche?
33. Cosa 竪 Git
Versioning control system
Permette di tracciare modifiche apportate ai file (di un progetto)
Permette branch di sviluppo paralleli nel team
Permette a pi湛 persone di modificare concorrentemente lo stesso file senza conflitti
Un po' di info
Creato nel 2005 da Linus Torvalds
Utilizzato da Google, Facebook, Microsoft, Netflix etc
Sito ufficiale: https://git-scm.com/
Pro Git ebook (free)
34. Perch辿 Git
Distribuito: non 竪 necessario avere un server configurato, si pu嘆 avere la
potenza del versioning in locale
Semplice: 竪 sufficiente conoscere un numero esiguo di comandi per
poter utilizzare appieno le potenzialit di git
Veloce: poich辿 quasi tutte le operazioni sono performate localmente, si
minimizza la necessit di comunicare con il server
(https://git-scm.com/about/small-and-fast)
35. Soluzioni pratiche ai problemi noti
Vediamo l'utilizzo di git in pratica per risolvere i problemi fin qui descritti.
Per le dimostrazioni pratiche, scaricare il repository presente al link
https://github.com/lucafon/DS-AI-Parma
Aprire il terminale
Creare una cartella di destinazione
mkdir /path/to/destination/folder
Clonare il repository
git clone https://github.com/lucafon/DS-AI-Parma.git
36. 1 - Singolo sviluppatore: introduzione di bug
Con git, e i vari client anche embedded in alcuni IDE,
molto semplice recuperare lo storico delle modifiche
possibile eseguire multiple commit, arrivando a versioni stabili e prive di bug
In caso di introduzione di regressioni, si pu嘆 eseguire un rollback veloce alla versione
funzionante
In pratica:
Al link https://github.com/lucafon/DS-AI-Parma/blob/master/Git/driver.py 竪 possibile vedere le
modifiche apportate tra una commit e l'altra
possibile eseguire una "commit" (e "push") delle modifiche marcare l'evolversi del file
git commit -m "Descrizione modifiche apportate"
37. 2 - Pi湛 sviluppatori: condivisione del codice
possibile caricare su un repository remoto il codice, in questo modo:
Tutti gli sviluppatori possono accedere alla versione pi湛 aggiornata del codice con il minimo
sforzo
I file/le classi aggiornati sono disponibili al download immediatamente dopo il caricamento sul
repository
In pratica:
Lo sviluppatore A esegue una modifica, tutti gli altri sviluppatori possono eseguire una "fetch"
e una "pull" per scaricare le modifiche
git pull
38. 3 - Pi湛 sviluppatori: sviluppo parallelo
Ogni sviluppatore pu嘆 "staccare un branch", ovvero un ramo di sviluppo per
implementare e testare le modifiche indipendentemente
Non si disturba il lavoro degli altri sviluppatori
Si possono eseguire "merge" delle modifiche applicate sul proprio branch
In pratica:
Ogni sviluppatore apre un branch di sviluppo
git checkout -b branch_name
Sul proprio branch si pu嘆 agire indisturbatamente
41. Contribuire alla community
Per contribuire ad un progetto 竪 possibile eseguire un "fork"
Viene creata una copia locale nel proprio namespace per operare tranquillamente
Di solito si segue il flow
a. Fork del progetto
b. Creazione branch master
c. Applicare modifiche
d. Push delle modifiche sul proprio branch
e. Apertura Pull Request su GitHub
f. Merge della Pull Request
https://git-scm.com/book/en/v2/GitHub-Contributing-to-a-Project
42. nbdime
nbdime permette di vedere differenze e mergiare facilmente
Jupyter notebooks
Possibilit di integrare nbdime con git in modo da gestire
meglio i Jupyter notebooks
https://nbdime.readthedocs.io/en/stable/
Caffeina 竪 unagenzia digitale creativa indipendente.
Crediamo che il digitale sia un nuovo layer sul quale le aziende possono evolvere e costruire tutto quello che fanno nellorganizzazione.
E crediamo che rappresenti anche una rivoluzione che sta impattando e cambiando tutto sia nelle aziende che nelle vite delle persone.
Entro i prossimi 12 mesi, i partecipanti allo State of the Data Center hanno affermato che sono pi湛 propensi a implementare o prendere in considerazione l'implementazione di storage flash (70%), infrastruttura hyperconverged (56%), strumenti di gestione e orchestrazione di container Linux (51%), BYOD - Porta il tuo dispositivo (51%) e SDN (48%) e il software cloud OpenStack (48%).
I dati sono solo riassunti di migliaia di storie: raccontare alcune di quelle storie per rendere i dati significativi.