quando un’immagine vale piu’ di 1000 parolechi sono • riccardo govoni - [email protected]...
TRANSCRIPT
![Page 1: Quando un’immagine vale piu’ di 1000 paroleChi sono • Riccardo Govoni - battlehorse@gmail.com • 5+ anni di esperienza su Java e Linux • autore per OnJava.com , Javaworld.com](https://reader033.vdocuments.fr/reader033/viewer/2022050222/5f678da84ef9ad415f0fbb28/html5/thumbnails/1.jpg)
Quando un’immaginevale piu’ di 1000 parole
Riccardo GovoniLinux day - 27/10/2007 - Imola
![Page 2: Quando un’immagine vale piu’ di 1000 paroleChi sono • Riccardo Govoni - battlehorse@gmail.com • 5+ anni di esperienza su Java e Linux • autore per OnJava.com , Javaworld.com](https://reader033.vdocuments.fr/reader033/viewer/2022050222/5f678da84ef9ad415f0fbb28/html5/thumbnails/2.jpg)
Chi sono
• Riccardo Govoni - [email protected]
• 5+ anni di esperienza su Java e Linux
• autore per OnJava.com , Javaworld.com , DevX.com
• certificato SCJP
• Google Software Engineer (quasi)
• http://www.battlehorse.net
![Page 3: Quando un’immagine vale piu’ di 1000 paroleChi sono • Riccardo Govoni - battlehorse@gmail.com • 5+ anni di esperienza su Java e Linux • autore per OnJava.com , Javaworld.com](https://reader033.vdocuments.fr/reader033/viewer/2022050222/5f678da84ef9ad415f0fbb28/html5/thumbnails/3.jpg)
Obiettivo
• risparmiare tempo!
• aka:
• dato un problema o dominio da analizzare, ottenere il piu’ in fretta possibile il maggior numero di informazioni
• quindi:
• perche’ non usare un’immagine?
• Il cervello interpreta le immagini molto piu’ facilmente del testo.
![Page 4: Quando un’immagine vale piu’ di 1000 paroleChi sono • Riccardo Govoni - battlehorse@gmail.com • 5+ anni di esperienza su Java e Linux • autore per OnJava.com , Javaworld.com](https://reader033.vdocuments.fr/reader033/viewer/2022050222/5f678da84ef9ad415f0fbb28/html5/thumbnails/4.jpg)
Obiettivo (2)
![Page 5: Quando un’immagine vale piu’ di 1000 paroleChi sono • Riccardo Govoni - battlehorse@gmail.com • 5+ anni di esperienza su Java e Linux • autore per OnJava.com , Javaworld.com](https://reader033.vdocuments.fr/reader033/viewer/2022050222/5f678da84ef9ad415f0fbb28/html5/thumbnails/5.jpg)
Considerazioni
• Parleremo principalmente di situazioni collegate allo sviluppo software
• ... ma l’approccio e’ generale
• costruire rappresentazioni grafiche complete upfront e’ costoso
• e’ piu’ conveniente usare soluzioni quick-and-dirty adattate ad una specifica porzione del problema
![Page 6: Quando un’immagine vale piu’ di 1000 paroleChi sono • Riccardo Govoni - battlehorse@gmail.com • 5+ anni di esperienza su Java e Linux • autore per OnJava.com , Javaworld.com](https://reader033.vdocuments.fr/reader033/viewer/2022050222/5f678da84ef9ad415f0fbb28/html5/thumbnails/6.jpg)
Agenda
• Ruby
• GraphViz Dot
• Esempi & Demos
• Extras ( JUNG , DSM e altre sigle )
![Page 7: Quando un’immagine vale piu’ di 1000 paroleChi sono • Riccardo Govoni - battlehorse@gmail.com • 5+ anni di esperienza su Java e Linux • autore per OnJava.com , Javaworld.com](https://reader033.vdocuments.fr/reader033/viewer/2022050222/5f678da84ef9ad415f0fbb28/html5/thumbnails/7.jpg)
Ruby
• Linguaggio di programmazione:
• Intepretato
• Dinamico
• Orientato agli Oggetti
• Yukihiro “Matz” Matsumoto , 1995
• Va di moda (aka potete usare Perl, Python etc... con gli stessi risultati )
![Page 8: Quando un’immagine vale piu’ di 1000 paroleChi sono • Riccardo Govoni - battlehorse@gmail.com • 5+ anni di esperienza su Java e Linux • autore per OnJava.com , Javaworld.com](https://reader033.vdocuments.fr/reader033/viewer/2022050222/5f678da84ef9ad415f0fbb28/html5/thumbnails/8.jpg)
Ruby (istantaneo)puts “Fruit Salad!”
ingredients = [] << “orange” << “apple” << “strawberry” << “blueberry” << “banana”
your_salad = ingredients.sort_by { |a| rand }[0..2]
puts your_salad
[“banana”,”strawberry”,”apple”]
my_salad = ingredients.sort_by { |a| rand }[0..2]
puts my_salad
[“apple”, “blueberry”,”orange”]
![Page 9: Quando un’immagine vale piu’ di 1000 paroleChi sono • Riccardo Govoni - battlehorse@gmail.com • 5+ anni di esperienza su Java e Linux • autore per OnJava.com , Javaworld.com](https://reader033.vdocuments.fr/reader033/viewer/2022050222/5f678da84ef9ad415f0fbb28/html5/thumbnails/9.jpg)
GraphViz
• Tool automatizzato per la generazione di grafi
• Utilizza input testuali e produce vari formati grafici ( png , svg ... )
• Sviluppato da AT&T , Common Public License
• http://www.graphviz.org
![Page 10: Quando un’immagine vale piu’ di 1000 paroleChi sono • Riccardo Govoni - battlehorse@gmail.com • 5+ anni di esperienza su Java e Linux • autore per OnJava.com , Javaworld.com](https://reader033.vdocuments.fr/reader033/viewer/2022050222/5f678da84ef9ad415f0fbb28/html5/thumbnails/10.jpg)
GraphViz (istantaneo)digraph G {
a -> b
a -> c
c -> d
c [shape=box,fillcolor=red,style=filled]
}
![Page 11: Quando un’immagine vale piu’ di 1000 paroleChi sono • Riccardo Govoni - battlehorse@gmail.com • 5+ anni di esperienza su Java e Linux • autore per OnJava.com , Javaworld.com](https://reader033.vdocuments.fr/reader033/viewer/2022050222/5f678da84ef9ad415f0fbb28/html5/thumbnails/11.jpg)
Esempi
• Sistemi di servizi distribuiti e asincroni
• Sistemi di dipendenze
• Social Networks
• Relazioni causa-effetto
• e molti altri ...
![Page 12: Quando un’immagine vale piu’ di 1000 paroleChi sono • Riccardo Govoni - battlehorse@gmail.com • 5+ anni di esperienza su Java e Linux • autore per OnJava.com , Javaworld.com](https://reader033.vdocuments.fr/reader033/viewer/2022050222/5f678da84ef9ad415f0fbb28/html5/thumbnails/12.jpg)
Servizi distribuiti e async
• SOA , Queue Networks , WebServices, Message Routing ... e che roba e’ ?
• Demo: Starbucks !
![Page 13: Quando un’immagine vale piu’ di 1000 paroleChi sono • Riccardo Govoni - battlehorse@gmail.com • 5+ anni di esperienza su Java e Linux • autore per OnJava.com , Javaworld.com](https://reader033.vdocuments.fr/reader033/viewer/2022050222/5f678da84ef9ad415f0fbb28/html5/thumbnails/13.jpg)
Starbucks
![Page 14: Quando un’immagine vale piu’ di 1000 paroleChi sono • Riccardo Govoni - battlehorse@gmail.com • 5+ anni di esperienza su Java e Linux • autore per OnJava.com , Javaworld.com](https://reader033.vdocuments.fr/reader033/viewer/2022050222/5f678da84ef9ad415f0fbb28/html5/thumbnails/14.jpg)
Starbucks: l’idea
• L’idea creativa e’ stata quella di:
• ottenere una pagina animata “gratis” sfruttando i tag di refresh di una pagina Html e rigenerando continuamente il grafo
![Page 15: Quando un’immagine vale piu’ di 1000 paroleChi sono • Riccardo Govoni - battlehorse@gmail.com • 5+ anni di esperienza su Java e Linux • autore per OnJava.com , Javaworld.com](https://reader033.vdocuments.fr/reader033/viewer/2022050222/5f678da84ef9ad415f0fbb28/html5/thumbnails/15.jpg)
Sistemi di dipendenze
• Dipendenze statiche in sorgenti
• C : #include <linux/socket.h>
• Java: import java.util.Map ;
![Page 16: Quando un’immagine vale piu’ di 1000 paroleChi sono • Riccardo Govoni - battlehorse@gmail.com • 5+ anni di esperienza su Java e Linux • autore per OnJava.com , Javaworld.com](https://reader033.vdocuments.fr/reader033/viewer/2022050222/5f678da84ef9ad415f0fbb28/html5/thumbnails/16.jpg)
Sistemi di dipendenze
• Makefiles & Builders :
• Makefile
• Ant
<target name="deploy"
depends="compile, test, package" />
![Page 17: Quando un’immagine vale piu’ di 1000 paroleChi sono • Riccardo Govoni - battlehorse@gmail.com • 5+ anni di esperienza su Java e Linux • autore per OnJava.com , Javaworld.com](https://reader033.vdocuments.fr/reader033/viewer/2022050222/5f678da84ef9ad415f0fbb28/html5/thumbnails/17.jpg)
Sistemi di dipendenze
• Ubuntu & Debian package repository
![Page 18: Quando un’immagine vale piu’ di 1000 paroleChi sono • Riccardo Govoni - battlehorse@gmail.com • 5+ anni di esperienza su Java e Linux • autore per OnJava.com , Javaworld.com](https://reader033.vdocuments.fr/reader033/viewer/2022050222/5f678da84ef9ad415f0fbb28/html5/thumbnails/18.jpg)
Ubuntu Rails deps.
![Page 19: Quando un’immagine vale piu’ di 1000 paroleChi sono • Riccardo Govoni - battlehorse@gmail.com • 5+ anni di esperienza su Java e Linux • autore per OnJava.com , Javaworld.com](https://reader033.vdocuments.fr/reader033/viewer/2022050222/5f678da84ef9ad415f0fbb28/html5/thumbnails/19.jpg)
Openoffice deps
![Page 20: Quando un’immagine vale piu’ di 1000 paroleChi sono • Riccardo Govoni - battlehorse@gmail.com • 5+ anni di esperienza su Java e Linux • autore per OnJava.com , Javaworld.com](https://reader033.vdocuments.fr/reader033/viewer/2022050222/5f678da84ef9ad415f0fbb28/html5/thumbnails/20.jpg)
Tomboy?
![Page 21: Quando un’immagine vale piu’ di 1000 paroleChi sono • Riccardo Govoni - battlehorse@gmail.com • 5+ anni di esperienza su Java e Linux • autore per OnJava.com , Javaworld.com](https://reader033.vdocuments.fr/reader033/viewer/2022050222/5f678da84ef9ad415f0fbb28/html5/thumbnails/21.jpg)
Ubuntu deps: l’idea
• L’idea creativa e’ stata quella di:
• usare un tool di “screen-scraping” (Hpricot) per estrarre informazioni dal web, in assenza di una rappresentazione completa del dominio di analisi in locale
![Page 22: Quando un’immagine vale piu’ di 1000 paroleChi sono • Riccardo Govoni - battlehorse@gmail.com • 5+ anni di esperienza su Java e Linux • autore per OnJava.com , Javaworld.com](https://reader033.vdocuments.fr/reader033/viewer/2022050222/5f678da84ef9ad415f0fbb28/html5/thumbnails/22.jpg)
socket.h deps
• Grafo delle dipendenze da socket.h in Linux Kernel 2.6.23
![Page 23: Quando un’immagine vale piu’ di 1000 paroleChi sono • Riccardo Govoni - battlehorse@gmail.com • 5+ anni di esperienza su Java e Linux • autore per OnJava.com , Javaworld.com](https://reader033.vdocuments.fr/reader033/viewer/2022050222/5f678da84ef9ad415f0fbb28/html5/thumbnails/23.jpg)
Social Networks
• ENRON
• scandalo finanziario nel 2001
• corpus di mail pubblico per effetto delle indagini giudiziarie
• http://www.cs.cmu.edu/~enron/
• 200.000 e-mails , 160 utenti
• buon dataset per studiare relazioni sociali
![Page 24: Quando un’immagine vale piu’ di 1000 paroleChi sono • Riccardo Govoni - battlehorse@gmail.com • 5+ anni di esperienza su Java e Linux • autore per OnJava.com , Javaworld.com](https://reader033.vdocuments.fr/reader033/viewer/2022050222/5f678da84ef9ad415f0fbb28/html5/thumbnails/24.jpg)
Enron Network
• Approccio all’analisi :
• Estrarre i campi From: e To: delle mail
• Assegnare peso maggiore ai destinatari piu’ gettonati
• Assegnare legami piu’ forti alle coppie di persone che si scambiano piu’ mail
• Demo!
![Page 25: Quando un’immagine vale piu’ di 1000 paroleChi sono • Riccardo Govoni - battlehorse@gmail.com • 5+ anni di esperienza su Java e Linux • autore per OnJava.com , Javaworld.com](https://reader033.vdocuments.fr/reader033/viewer/2022050222/5f678da84ef9ad415f0fbb28/html5/thumbnails/25.jpg)
Enron Network
![Page 26: Quando un’immagine vale piu’ di 1000 paroleChi sono • Riccardo Govoni - battlehorse@gmail.com • 5+ anni di esperienza su Java e Linux • autore per OnJava.com , Javaworld.com](https://reader033.vdocuments.fr/reader033/viewer/2022050222/5f678da84ef9ad415f0fbb28/html5/thumbnails/26.jpg)
Enron network• Una rappresentazione visuale puo’ fornire
nuovi strumenti di indagine
• Es. : algoritmi di clustering visuale
![Page 27: Quando un’immagine vale piu’ di 1000 paroleChi sono • Riccardo Govoni - battlehorse@gmail.com • 5+ anni di esperienza su Java e Linux • autore per OnJava.com , Javaworld.com](https://reader033.vdocuments.fr/reader033/viewer/2022050222/5f678da84ef9ad415f0fbb28/html5/thumbnails/27.jpg)
Enron: l’idea
• l’idea creativa e’ stata quella di :
• utilizzare informazioni visive (colore, spessore,vicinanza) per rappresentare in modo intuitivo diverse dimensioni del problema in analisi
![Page 28: Quando un’immagine vale piu’ di 1000 paroleChi sono • Riccardo Govoni - battlehorse@gmail.com • 5+ anni di esperienza su Java e Linux • autore per OnJava.com , Javaworld.com](https://reader033.vdocuments.fr/reader033/viewer/2022050222/5f678da84ef9ad415f0fbb28/html5/thumbnails/28.jpg)
Social Networks
• Altre idee:
![Page 29: Quando un’immagine vale piu’ di 1000 paroleChi sono • Riccardo Govoni - battlehorse@gmail.com • 5+ anni di esperienza su Java e Linux • autore per OnJava.com , Javaworld.com](https://reader033.vdocuments.fr/reader033/viewer/2022050222/5f678da84ef9ad415f0fbb28/html5/thumbnails/29.jpg)
Altre idee• Relazioni causa-effetto:
• parsing dei log di webserver associando URL richiesti con i rispettivi REFERER
• Si ottiene il grafo dei clickstream sul proprio sito: quali sono i path piu’ frequenti?
![Page 30: Quando un’immagine vale piu’ di 1000 paroleChi sono • Riccardo Govoni - battlehorse@gmail.com • 5+ anni di esperienza su Java e Linux • autore per OnJava.com , Javaworld.com](https://reader033.vdocuments.fr/reader033/viewer/2022050222/5f678da84ef9ad415f0fbb28/html5/thumbnails/30.jpg)
Altre idee
• Esistono tante e diverse forme di visualizzazione di uno stesso dominio
• Spesso l’idea nasce da problemi diversi da quello in analisi.
• Es. : Dependency Structure Matrix (DSM).
• Nasce da considerazioni algebriche, ma si applica anche al software
![Page 31: Quando un’immagine vale piu’ di 1000 paroleChi sono • Riccardo Govoni - battlehorse@gmail.com • 5+ anni di esperienza su Java e Linux • autore per OnJava.com , Javaworld.com](https://reader033.vdocuments.fr/reader033/viewer/2022050222/5f678da84ef9ad415f0fbb28/html5/thumbnails/31.jpg)
DSM
![Page 32: Quando un’immagine vale piu’ di 1000 paroleChi sono • Riccardo Govoni - battlehorse@gmail.com • 5+ anni di esperienza su Java e Linux • autore per OnJava.com , Javaworld.com](https://reader033.vdocuments.fr/reader033/viewer/2022050222/5f678da84ef9ad415f0fbb28/html5/thumbnails/32.jpg)
Quindi?
• Di solito, anche un piccolo software ricopre un dominio troppo ampio per tenerlo a mente
• Oppure si opera in campo distribuito e/o con visione parziale dei dati
• Un buon linguaggio di scripting e gli strumenti adatti possono venirci incontro, se usati in modo creativo!
![Page 33: Quando un’immagine vale piu’ di 1000 paroleChi sono • Riccardo Govoni - battlehorse@gmail.com • 5+ anni di esperienza su Java e Linux • autore per OnJava.com , Javaworld.com](https://reader033.vdocuments.fr/reader033/viewer/2022050222/5f678da84ef9ad415f0fbb28/html5/thumbnails/33.jpg)
Domande?
“Beware of bugs in the previous code; I have only proved it correct, not tried it.”
-- Don Knuth (creatore di TeX)