User:Cricap

Distributed Massive Battle

Introduzione

Il mio lavoro ha lo scopo di distribuire su più macchine una applicazione per la simulazione di agenti autonomi in ambito bellico. L’applicazione di partenza è un software di simulazione, in attiva fase di sviluppo in ISISLab, al quale ha lavorato Alberto Boccardo (User:Albboc) e sta lavorando Daniele Monaco (User:Danmon). Per quanto riguarda la distribuzione della simulazione, si è pensato di utilizzare una infrastruttura p2p che permettesse di alleggerire il carico di lavoro, non essendo quest’ultimo gestibile da un’unica macchina. Sono state prese in rassegna diverse possibili infrastrutture per la realizzazione dell’applicazione. Essendo il software di simulazione sviluppato in C++ si è cercato di utilizzare un framework sviluppato in questo stesso linguaggio. La prima valutazione è caduta sulla versione in C# di FreePastry. FreePastry è una implementazione open-source di Pastry scritta in Java e pensata per il rilascio su Internet. Come prima accennato esiste anche una versione scritta in C# realizzata da Microsft e denominata MSPastry; se quest’ultima era inizialmente free successivamente è stata venduta dalla azienda produttrice e non è stato possibile avvalerci di tali API. A questo punto sono state vagliate altre soluzioni come: SIENA e il servizio WSPEventRouter. Per vari motivi legati allo stato dell’arte nel caso di SIENA e della poca trasperenza del servizio nel secondo si è scelto di utilizzare FreePastry. L’utilizzo di un framework Java per distribuire una applicazione scritta in C++ ci ha imposto l’utilizzo di JNI (Java Native Interface).

Seminari

Secondo Seminario

Titolo del seminario : Distributed Massive Battle Abstract : Distributed Massive Battle è la versione distribuita di un Massive Simulation Environment, un particolare MMVE, che si propone di riprodurre fedelmente battaglie storiche. L’approccio adottato per realizzare la distribuzione della simulazione sfrutta il paradigma peer-to-peer. Ogni nodo dell’overlay network condivide memoria, banda e parte della propria potenza di calcolo con gli altri peer della rete. Nel seminario saranno presentate le scelte progettuali e le soluzioni adottate per la realizzazione del sistema. A conclusione, saranno mostrate le prestazioni del sistema distribuito confrontandole con la versione originale del SE. Materiale Seminario: Seminario_2

Presentazione Finale

Materiale Seminario: Presentazione_Finale

Software e librerie

  • Visual C++ 2008 Express Edition
  • OGRE SDK 1.4.7
  • PagedGeometry 1.04
  • Caelum 0.3.0
  • Editable Terrain Manager 2.2
  • Hydrax 0.4
  • OpenSteer 0.8.2
  • Eclipse 3.5.1
  • FreePastry 2.1
  • jdk 6.19

Altro

Abstract

I Massive Multiuser Virtual Environments (MMVEs) stanno rapidamente divenendo sempre più complessi sia per il numero di utenti che per la varietà delle interazioni. Nel seminario verrà presentato “Distributed Massive Battle” la versione distribuita di un Massive Simulation Environment, un particolare MMVE, che si propone di riprodurre fedelmente battaglie storiche come quella di Waterloo. Nella prima parte si accennerà a Pastry e Scribe necessari per implementare l’architettura P2P alla base della distribuzione ed a JNI (Java Native Interface) che viene utilizzato per la comunicazione tra il software di simulazione scritto in C++ e l’architettura P2P scritta in Java. Nella seconda parte viene illustrato come le tecnologie descritte in precedenza vengono utilizzate all’interno di Distributed Massive Battle.

News

  • 22/10 : E’ il mio compleanno e entro a far parte dell’ ISISLab
  • 15/11 : Ricerche su scribe, pastry, massive battle e articoli correlati
  • 09/12 : Ritorno in ISIS dopo aver completato gli esami 😀
  • 14/12 : Possibilità MSPastry scartata
  • 18/12 : Ho avuto molte difficoltà nella compilazione della versione C del Siena software che sembra incompleto
  • 21/12 :
    • Purtroppo anche il software SIENA è da scartare… Sono riuscito a compilare il progetto… ho contattato il prof. responsabile del progetto… la versione C del software sembra non aggiornata la loro attenzione si è spostata sulla implementazione Java.
    • Scelgo di utilizzare FreePastry
  • 08/01 : Primi esempi di utiilizzo di JNI funzionanti
  • 15/01 :
    • Separazione dell’interfaccia grafica dalla logica di massive battle
    • Generazione della dll
  • 22/01 :
    • Utilizzo di FreePastry
    • Realizzazione dell’architettura distribuita di FreePastry
  • 29/01 :
    • Timide interazioni con DistributedMassiveBattle
    • Evoluzione della distribuzione
  • 05/02 :
    • Utilizzo di Scribe
    • Creazione di metodi nativi più complessi
    • Simulazione funzionante ma con molte limitazioni
  • 08/02 : Realizzazione di una struttura dati efficienti per la gestione di blocchi e vehicles
  • 12/02 : Coordinazione tra i vari nodi di simulazione in maniera che siano rispettati i vincoli di aggiornamento
  • 16/02: Viene gestito l’evento di passaggio di un vehicle da un blocco ad un altro.
  • 10/02: Sto cercando di capire qual’è il set minimio di informazioni da inviare sulla rete per minimizzare il traffico dei dati.

Link Interessanti

Bibliografia

  • Towards a Common API for Publish/Subscribe
    • Interessante e recente pubblicazione comparativa tra diversi middleware publish/subscribe system
  • Survey of Publish Subscribe Event Systems
    • Altro documento che valuta le caratteristiche di middleware tra cui Gryphon, Scribe, Bayeux, Siena, NaradaBrokering, XMessages, Echo, JMS.
  • Design and Evaluation of a Wide-Area Event Notification Service
    • Paper realizzato dagli autori di Siena
  • Extending The Siena Publish/Subscribe System
    • Documento in cui viene spiegato come può essere esteso Siena in maniera che supporti la gestione di tipi complessi
  • P. Morillo, J.M. Orduña, M. Fernández and J. Duato. Impoving the Performance of Distributed Virtual Environment System. IEEE, 2004
  • K. L. Morse. Interest management in large-scale distributed simulations. Technical Report CS-TR-96-27, University of California, Irvine, 1996.
  • S. Ratnasamy, P. Francis, M. Handley, R. Karp, and S. Schenker. A scalable content-addressable network. In Proceedings of the 2001 conference on Applications, technologies, architectures, and protocols for computer communications, pages 161-172. ACM Press, 2001.
  • I. Stoica, R. Morris, D. Karger, F. Kaashoek, and H. Balakrishnan. Chord: A scalable Peer-To-Peer lookup service for internet applications. In Roch Guerin, editor, Proceedings of SIGCOMM-01, volume 31, 4 of Computer Communication Review, pages 149-160, New York, August 27-31 2001. ACM Press.
  • B. Y. Zhao, J. D. Kubiatowicz, and A. D. Joseph. Tapestry: An infrastructure for fault-tolerant wide-area location and routing. Technical Report UCB/CSD-01-1141, UC Berkeley, April 2001.
  • A. Rowstron and P. Druschel. Pastry: scalable, decentraized object location and routing for large-scale peer-to-peer systems. In Proceedings of the 18th IFIP/ACM International Conference on Distributed Systems Platforms (Middleware), November 2001.
  • M. Castro, M. B. Jones, A. Kermarrec, A. Rowstron, M. Theimer, H. Wang, and A. Wolman. An evaluation of scalable application-level multicast built using peer-to-peer overlays. In Infocom’03, April 2003.
  • Y. K. Dalal and R. Metcalfe. Reverse path forwarding of broadcast packets. Communications of the ACM, 21(12) 1040-1048, 1978.
  • C. Reynolds. Flocks, herds and schools: a distributed behavioral model. In SIGGRAPH’87: Proceedings of the 14th Annual Conference on Computer Graphics and Interactive Techniques, ACM, New York, NY, USA, 1987.
  • C. Reynolds. Steering behaviors for autonomous characters. In Game Developers Conference, Miller Freeman Game Group, San Francisco, CA, USA, 1999.
  • G. Cordasco, R. De Chiara, U. Erra and V. Scarano. Some Considerations on the Design of a P2P Infrastructure for Massive Simulations. In: International Conference on Ultra Modern Telecommunication (ICUMT 2009). October 2009, St.-Petersburg, Russia.
  • A. Boccardo, R. De Chiara, and V. Scarano. Massive Battle: Coordinated Movement of Autonomous Agents in Proc. of the Workshop on 3D Advanced Media In Gaming And Simulation (3AMIGAS), 2009.
  • B. Knutsson, H. Lu, W. Xu, and B. Hopkins. Peer-to-Peer Support for Massively Multiplayer Games, in Twentythird AnnualJoint Conference of the IEEE Computer and Communications Societies (INFOCOM 2004), 2004, p. 107.
  • G. Cordasco, B. Cosenza, R. De Chiara, U. Erra, and V. Scarano, Experiences with Mesh-like computations using Prediction Binary Trees, Scalable Computing: Practice and Experience, Scientific international journal for parallel and distributed computing (SCPE), vol. 10, no. 2, pp. 173-187, June 2009.
  • P. Pietzuch, D. Eyers, S. Kounev, and B. Shand. Towards a common api for publish/subscribe. In DEBS ’07: Proceedings of the 2007 inaugural international conference on Distributed event-based systems, pages 152-157, New York, NY, USA, 2007.
  • M. Buckland, Programming Game AI by Example 2005.
  • D. Monaco. SteerUnit: un framework per lo Unit Testing di modelli comportamentali per simulazioni basate su agenti. Università degli Studi di Salerno, 2010.
  • A. Boccardo. Massive Battle: Simulazione di Combattimento e Movimento Coordinato di Agenti Autonomi. Università degli Studi di Salerno, 2008.
 

User:aleant

 

Balanced Graph Partitioning per simulazioni agent-based distribuite

Il Problema

k-way partitioning 

D-MASON permette di parallelizzare simulazioni basate su agenti adottando un approccio di space partitioning, che consente di bilanciare il carico di lavoro tra le risorse coinvolte nella computazione, limitando i costi della comunicazione. Ogni macchina eseguirà, quindi, la simulazione degli agenti che si trovano nello spazio assegnato ad essa. Comprensibilmente, questi possono migrare da una risorsa all’altra e quando ciò avviene le macchine hanno bisogno di comunicare informazioni circa gli agenti migrati o gli agenti che potrebbero migrare nel prossimo passo di simulazione.

Il problema, dunque, riguarda come partizionare in modo dinamico il campo Network di D-MASON, in modo tale che:

1. le componenti abbiano approssimativamente la stessa dimensione

2. il numero di connessioni e il volume di comunicazione tra vertici appartenenti a componenti differenti sia minimizzato.

Ciò è ben noto in letteratura come graph partitioning problem.

Il problema di computare una partizione ottimale di un supergrafo è NP-hard; ciò significa che soluzioni esatte sono ricavate in tempo ragionevole solo per grafi di piccole dimensioni. Tuttavia, le applicazioni di questo problema richiedono di partizionare grafi di dimensioni molto  maggiori e per questo motivo sono state sviluppate diverse soluzioni euristiche, basate su differenti approcci.

Gli algoritmi

Approccio multi-livello

METIS

Questo algoritmo computa le partizioni in tre fasi. Nella prima i vertici vengono collassati in modo da far diminuire la taglia del grafo di partenza; questa azione viene eseguita fino ad arrivare ad un grafo semplificato sul quale viene eseguito il partizionamento. Nell’ultima fase, il grafo viene riportato alla forma originaria, rifinendo ad ogni passo la qualità delle partizioni computate.

KaFFPa

KaFFPa, come METIS, usa un approccio multi-livello per il partizionamento; questi due algoritmi si differenziano, però, nell’ultima fase dove usano diverse tecniche di rifinizione delle partizioni generate.

Approccio distribuito

Ja-Be-Ja

A differenza degli algoritmi precedenti, Ja-be-ja nasce come algoritmo distribuito, senza richiedere nessuna conoscenza globale della topologia del grafo. Ogni nodo del grafo è un’unità di elaborazione e conserva informazioni riguardanti i suoi vicini e alcuni nodi selezionati a caso. Inizialmente, ad ogni nodo viene assegnata una partizione, facendo in modo che queste siano bilanciate. Ad ogni iterazione, i nodi scambiano le loro partizioni di appartenenza al fine di aumentare il numero di vicini che si trovano nella stessa partizione.

 Baseline

Random

Questo algoritmo assegna ogni vertice ad un componente casuale, fornendo sempre un ottimo bilanciamento. E’ usato come baseline nelle comparazioni effettuate.

Obiettivo

Studio e benchmark di algoritmi per il partizionamento bilanciato di grafi per simulazioni agent-based distribuite.

I test

Criteri di analisi

In modo da valutare quali siano l’euristiche che producano il partizionamento migliore per la risoluzione del problema sopra citato, sono state considerate le seguenti metriche:

– dimensione del taglio: numero totale di archi incidenti su vertici appartenenti a diversi componenti;

– numero di canali di comunicazione: indica il numero di archi nel supergrafo ottenuto considerando i nodi in ogni componente come un singolo vertice.

– sbilanciamento:  coefficiente di sbilanciamento della dimensione dei componenti della partizione.

Risultati

Analizzando i risultati ottenuti dall’esecuzione dei diversi algoritmi, si evince che le performance delle soluzioni multi-livello sono comparabili sia in termini di dimensione del taglio, sia per numero di canali di comunicazione generati. Tuttavia, le prestazioni di Ja-Be-Ja sono peggiori di quelle dei suoi avversari; ciò può essere dovuto al basso numero di iterazioni effettuate.

In generale, tutti gli algoritmi producono partizioni abbastanza bilanciate. Su questo campo, quindi, nessuna strategia prevale sulle altre.

I risultati ottenuti nell’ambiente reale di simulazione sono consistenti con quelli analitici, sia in termini di dimensione del taglio sia nel numero di canali di comunicazione. In particolare, le performance delle simulazioni distribuite sono influenzate dalle metriche analitiche. Esiste, quindi, una correlazioni tra il tempo totale di simulazione e le prestazioni degli algoritmi (misurate in termini di dimensione del taglio, numero di canali di comunicazione e sbilanciamento), soprattutto per quanto riguarda la dimensione del taglio.

Dall’analisi è, inoltre, emerso che la qualità dello sbilanciamento tra le componenti non è legata direttamente alle performance reali: questo valore potrà, quindi, essere alterato in modo da comportare le diminuzione di altri parametri, quali dimensione del taglio e numero di canali di comunicazione, aventi diretto influsso sulle prestazioni.

Riferimenti

  1. Fatemeh Rahimian, Amir H. Payberah, Sarunas Girdzijauskas, Mark Jelasity, Seif Haridi, Ja-be-Ja: A Distributed Algorithm for Balanced Graph PartitioningOttobre 2012.
  2. George Karypis and Vipin Kumar, Multilevel k-way Hypergraph Partitioning1999.
  3. David Easley and Jon Kleinberg, Networks, Crowds, and Markets: Reasoning About a Highly Connected World – Overviewcap. 1, 2010.
  4. David Easley and Jon Kleinberg, Networks, Crowds, and Markets: Reasoning About a Highly Connected World – Graphscap. 2, 2010.
  5. Jim Demmel, Lectures 20 and 21, Graph Partitioning, Part 1, 1996.
  6. Jim Demmel, Lectures 23, Graph Partitioning, Part 2, 1996.
  7. B. Cosenza, G. Cordasco, R. De Chiara, V. Scarano. Distributed Load Balancing for Parallel Agent-based Simulations, 2011.
  8. Peter Sanders and Christian Schulz, Engineering Multilevel Graph Partitioning Algorithms, 2011.
  9. Implementazione dell’algoritmo Ja-be-ja.
  10. Graph Partitioning Archive.
  11. D. A. Bader, H. Meyerhenke, P. Sanders, and D. Wagner, editors. Graph Partitioning and Graph Clustering.
  12. B. W. Kernighan and S. Lin, An efficient heuristic procedure for partitioning graphs.
  13. C. M. Fiduccia and R. M. Mattheyses. A Linear-Time Heuristic for Improving Network Partitions.
                                                                                                                                 «Per aspera sic itur ad astra.» – Seneca, Hercules Furens.                                                                                                                                 email: aless.antelmi@gmail.com

User:marpel

Informazioni personali

Nome: Maria Angela Pellegrino Contatti: m.pellegrino27@studenti.unisa.it mariaangela.pellegrino@virgilio.it

Diario di bordo

Per inquadrare il contesto in cui è stato sviluppato aCME ho letto l’articolo scritto da Delfina Malandrino, Ilaria Manno, Giuseppina Palmieri, Vittorio Scarano, Luca Tateo, Daniele Casola, Ivan Ferrante, Francesco Foresta in cui sono stati delineati gli scopi di aCME, i requisiti funzionali e trasversali e le sfide pedagogiche affrontate per l’integrazione di teorie dell’insegnamento e attività di insegnamento mobile. Articolo: 06937153-Journal-TLT-2014 Per approfondire lo studio della piattaforma aCME ho letto le tesi dei tre ragazzi che la hanno implementata: Ivan Ferrante ha spiegato l’architettura di aCME e le scelte che hanno valutato prima di giungere alle tecnologie usate in fase di sviluppo (Tesi Ivan Ferrante: https://mega.co.nz/#!9FwxgRCZ!I-w5iU-C75zK4v35LgWeaeflxN2W5REjUHmhz8k3-QQ); Francesco Foresta si è dedicato alla spiegazione di Vaadin e le valutazioni fatte prima di scegliere questo framework confrontandolo con RAP e ha presentato i tre web-bundle usati per gestire Administrator, Controller e Discusser (Tesi Francesco Foresta: https://mega.co.nz/#!hBZyRDgR!AzvejtRdkjoOteSbpcjEcnOiL7QT-OyiNJw2qT9HKCw); Daniele Casola ha spiegato il concetto di acmeTool, ha elencato i passi principali da seguire per creare un nuovo acmeTool e presentato il Wizard che hanno realizzato per aiutare i nuovi sviluppatori di aCME a implementare un nuovo acmeTool (Tesi Daniele Casola: https://mega.co.nz/#!1QxECTAQ!GMkoLWtQPzWDwTxLTWNUSnSCFuqKvEIIRNkwSCGgCoE). Per imparare il framework Vaadin sto leggendo il libro ufficiale: https://vaadin.com/book/-/page/preface.html.

Seminario 1

Nel primo seminario ho – descritto brevemente la piattaforma aCME Groupware, – introdotto gli aCME Tool che sono gli strumenti di lavoro, – implementato un esempio di Tool (HelloTool) per mostrare come il Wizard realizzato dagli sviluppatori di aCME Groupware semplifica il lavoro di sviluppo di un nuovo tool e ho mostrato come farne il deploy e integrarlo all’interno del sistema, – presentato l’oggetto di tesi: – gestione dei gruppi – memory tool in gruppo. Non ho mostrato dettagli implementativi, ma il mio obiettivo è stato quello di decidere e valutare politiche di implementazione. Per vedere il seminario fare click qui.

Seminario 2

Nel secondo seminario, che è anche stato quello conclusivo, ho – riepilogato velocemente il sistema aCME Groupware, – elencato le operazioni che permettono la gestione dei gruppi, – presentato alcune parti dell’implementazione di tali operazioni mostrando anche come si può usufruire di tale funzionalità a partire dall’interfaccia, – presentato il MemoryTool partendo dall’idea fino alla sua implementazione, – descritto alcune modifiche apportate all’interfaccia sia lato controller che lato discusser e al QuizTool per migliorarne l’usabilità. Per vedere il seminario fare click qui.

User:Lucvic

 

Tempi recenti

If you are looking for information about the course Informatica Legislativa e Scienze Sociali Computazionali (ILSSC) please visit its google site.

Laurea specialistica

Panoramica

Era una notte buia e tempestosa degli ultimi giorni di Aprile 2012 quando decisi di ritornare in ISISLab per lo svolgimento della tesi di Laurea Specialistica.
Questa volta mi occupo di D-MASON. Cos’è D-MASON? Una versione distribuita di MASON. Cos’è MASON? Una libreria in Java per la creazione di simulazioni multiagenti ad eventi discreti. Cosa è una libreria? Cosa è Java? Cosa è un agente? Che vuol dire ad eventi discreti?

Abstract

MASON permette di costruire simulazioni ad agenti, ed uno dei motivi per cui si crea ed esegue una simulazione è il monitoraggio di alcuni parametri. Un classico esempio è quello del formicaio: supponiamo di avere un terreno quadrato in cui c’è un formicaio, una fonte di cibo lontana dal formicaio, ed alcuni ostacoli tra il formicaio e il cibo. È risaputo che inizialmente le formiche vagano per il terreno alla ricerca del cibo. Quando una formica trova il cibo, torna verso il formicaio marcando con un speciale feromone la strada che porta dal formicaio al cibo, così che le altre formiche possano seguire lo stesso percorso. Supponiamo di aver realizzato questo tipo di simulazione (in effetti è proprio uno degli esempi resi disponibili da MASON) e di voler analizzare, a titolo di esempio:
  • Qual è la distanza media percorsa dalle formiche per raggiungere il cibo?
  • Qual è la quantità totale di cibo trasportato nel formicaio?
… e così via. Ovviamente siamo interessati non solo al valore istantantaneo di queste proprietà, ma vogliamo analizzarne l’andamento nel tempo, ad ogni passo della simulazione. La versione distribuita di MASON, sviluppata in ISISLab e ribattezzata D-MASON, attualmente non prevede nessuna funzionalità del genere, ed è su questo punto che attualmente verte la mia tesi.

Global Inspector

Il Global Inspector è la componente di D-MASON che ingloba il Global Viewer di D-MASON 1.0/1.5 e ne arricchisce le funzionalità includendo la possibilità di raccogliere, aggregare, visualizzare, tracciare su grafico o salvare su disco i parametri di una simulazione distribuita. Il suo utilizzo non penalizza la velocità di esecuzione della simulazione. Al ricercatore che scrive la simulazione distribuita e vuole utilizzare questo meccanismo è richiesto semplicemente di aggiornare la classe della simulazione in modo da definire quali dati raccogliere e quali funzioni di riduzione utilizzare per aggregarli.

Global Parameters

Il meccanismo dei parametri globali permette a qualsiasi cella della simulazione distribuita di avere dati riguardanti l’intera simulazione. Il meccanismo implementato segue la stessa logica di raccolta-riduzione del Global Inspector: prima di ogni passo di simulazione i dati di ogni singola cella vengono distribuiti alle altre celle in modo che ognuna possa applicare la funzione di distruzione (indicata dal ricercatore/sviluppatore della simulazione).

Laurea di primo livello

Panoramica

Il mio lavoro di tirocinio/tesi per la Laurea di primo livello ha riguardato l’implementazione all’interno di FireFly di moduli scritti in Flex e il miglioramento delle prestazioni e della scalabilità del sistema.

Seminari

  • 18/05/2007 – Adobe Flex 2, Building next-generation web experiences
    • Slide con note in formato pdf/zip
  • 15/02/2008 – FireFly 2: Tool grafici e scalabilità
    • Slide con note in formato pdf

Lavoro di tesi

Software utilizzati

  • [1] Adobe Flex 2 SDK
  • [2] Eclipse + Adobe Flex 2 Plugin (trial)
  • [3] FireBug, add-on per Mozilla FireFox
  • [4] InkScape, disegno vettoriale open-source
  • [5] JavaScript debugger, add-on per Mozilla FireFox
  • [6] Kile, LaTeX editor per KDE
  • [7] LiveHTTPHeader, add-on per Mozilla FireFox
  • [8] Umbrello UMD Modeller, tool di modellazione UML per KDE
  • [9] UMLet, tool di modellazione UML

Bibliografia

  • [10] Adobe. The history of Flash.
  • http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Book_Parts&file=cellrenderer_072_33.html Adobe. Working with item renderers.
  • [11] Adobe. Adobe Flex 2 – Technical overview. Technical report, Adobe, 2006.
  • [12] Jeremy Allaire. Macromedia Flash MX – A next-generation rich client. Technical report, Macromedia, March 2002.
  • [13] Jeff Atwood. JavaScript: The Lingua Franca of the Web, May 2007.
  • [14] Bogdan Brinzarea. AJAX whiteboard, 2006.
  • http://www.augitaly.com/flexgala/index.php?cmd=newsreader&id=12 Marco Casario. Flex 2 SDK o Data Service?, September 2006.
  • [15] Computer Literacy. Macromedia Flash version release history.
  • [16] Douglas Crockford. Introduzione a JSON.
  • Rosario de Chiara, Antonio Emilio di Matteo, Ilaria Manno, and Vittorio Scarano. CoFFEE: Cooperative Face2Face Educational Environment. In Third International Conference on Collaborative Computing: Networking, Applications and Worksharing (CollaborateCom2007), 2007.
  • Rosario de Chiara and Marco Volpe. FireFly: Lightweight AJAX System for F2F-CL. In E. Tomadaki and P. Scott, editors, Innovative Approaches for Learning and Knowledge Sharing, EC-TEL 2006 Workshops Proceedings, pages 59-66, March 2006.
  • [17] ECMA. ECMAScript for XML (E4X) Specification, 2 edition, December 2005.
  • David Flanagan. JavaScript: The Definitive Guide. O’Reilly, August 2006.
  • [18] Jesse James Garret. AJAX: A new approach to web applications, February 2005.
  • Susan C. Herring. Interactional Coherence in CMC. In Proocedings of the Thirty-Second Annual Hawaii International Conference on System Sciences, volume 2, June 1999.
  • Birgit R. Krogstie. The Potential of Instant Messaging for Informal Collaboration in Large-Scale Software Development. In Supporting the Social Side of Large Scale Software Development – CSCW workshop, 2006.
  • [19] Jim Ley. Don’t serve JSON as text/html, July 2006.
  • [20] Chris Loosley. Rich Internet Applications: Design, Measurement and Management Challenges. Technical report, Keynote Systems, 2006.
  • Kevin Lynch. La piattaforma Flash: Distribuire esperienze efficaci all’interno di browser, sistemi operativi e dispositivi. Technical report, Adobe, June 2005.
  • David Mosberger and Tai Jin. httperf: A tool for measauring web server performance. Performance evaluation review, 26(3):31-37, December 1998.
  • Robert Slagter, Margit Biemans, and Henri tere Hofte. Evolution in Use of Groupware: Facilitating Tailoring to the Extreme. In Proceedings of the Seventh International Workshop on Groupware (CRIWG), 2001.
  • Robert Slagter, Henri ter Hofte, and Oliber Stiemerling. Component-Based Groupware: An Introduction. In Proceedings of Component Based Groupware Workshop of CSCW2000, 2000.
  • Marc Smith, JJ Cadiz, and Byron Burkhalter. Conversation trees and threaded chats. In Proceedings of the 2000 ACM conference on Computer supported cooperative work (CSCW ’00), pages 97-105, New York, NY, USA, 2000. ACM Press.
  • Marco Volpe. FireFly: Un FrameWork leggero e modulare in Ajax per la cooperazione sincrona. Master’s thesis, Università degli Studi di Salerno, 2006.
  • [21] Rick Waldron. The Flash history, July 2002.
  • [22] Wikipedia. Rich Internet Applications.
  • [23] Wikipedia. SuperPaint.

Link utili

  • [24] Impara LaTeX (… e mettilo da parte), introduzione all’uso di LaTeX

Ipse dixit

  • «La tesi è come la lasagna: più ci metti e più ci trovi» ~ Rosario De Chiara
  • «Il superenalotto è una tassa sulla stupidità» ~ Rosario De Chiara

Contatti

  • E-mail: lvicidomini at unisa dot it
 

User:M3rc986


Umberto Mercogliano

Sono nato a Napoli il 18 settembre.

Seminari

  • Progettazine e sviluppo di un serious game in ambito giuridico 17/11/2008
    • Slide del seminario: [seminario.rar]

Il seminario è stato sviluppato in collaborazione con Cristiano Davino e Vincenzo Ferri.

Lavoro di Tesi

Un serious game in ambito giuridico: modello

Abstract

Il nostro obiettivo è stato quello di realizzare un serious game (un gioco di ruolo online), incentrato sulla simulazione di attività giuridiche, cioè sviluppare:

  • una piattaforma di gioco in grado di:
  • eseguire delle simulazioni gestendo il loro evolversi (scenari, interazioni giocatore-giocatore, giocatori-tutor, …);
  • monitorare e valutare la didattica dei giocatori;
  • gestire (acquisire, classificare, rendere disponibili, …), materiali didattici, documenti prodotti e relativo utilizzo.
  • partecipare contemporaneamente a diverse simulazioni.
  • un editor per la creazione di nuove simulazioni
  • Il lavoro è stato diviso in tre parti e portato a termine con la collaborazione di Cristiano Davino e Vincenzo Ferri.

    La piattaforma, inoltre, permette la creazione di esercitazioni da sottomettere ai player, di scambiare messaggi in modalità sincrona e asincrona, di rilasciare feedback per ogni risposta, relativa ad un’esercitazione, data da un utente. Inizialmente la piattaforma è stata sviluppata su un sistema operativo Microsoft Windows Xp. Successivamente è stato effettuato un porting su un sistema operativo Unix-Like.

    Bibliografia

    User:Armarl


    Tesi

    Il lavoro di tesi tratta il confronto tra i linguaggi di programmazione lua e java dal punto di vista dei tempi di esecuzione e della memoria utilizzata.

    Algoritmi Utilizzati

    1. Hello world: stampa 1000 volte la stringa "Ciao mondo";
    2. Attraversamento di array (tipi: int, double, float, ArrayList e Vector): crea ed attraversa un array di 1000 elementi;
    3. Numeri di Fibonacci;
    4. Accesso a file: legge due file di dimensioni 1.2 mega ciascuno e concatena le stringhe lette stampandole;
    5. Classe Account: test di ereditarietà;
    6. Whetstone: test di operazioni di tipo floating point;
    7. Dhrystone: test di operazioni su stringhe;
    8. Quicksort: algoritmo di ordinamento con chiamate ricorsive su un array di double di 100000 elementi;
    9. Algoritmo di Dijkstra: cammino minimo su un grafo di 1000 vertici e altrettanti archi;

    Conclusioni

    Il confronto fra le due macchine virtuali è stato effettuato a parità di condizioni e sulla stessa macchina; sono stati utilizzati gli stessi algoritmi con la medesima implementazione. In generale si può osservare che Lua risulta meno lento nelle applicazioni in cui non sono presenti molte operazioni aritmetiche. Infatti, negli algoritmi Whetstone, Dhrystone e nell’algoritmo di Dijkstra, che contengono molte operazioni di questo tipo, Lua impiega un tempo superiore rispetto a quello impiegato da Java; mentre, in algoritmi come il Quicksort che contiene più confronti ed assegnazioni che operazioni aritmetiche o algebriche Lua risulta più performante. Per quanto riguarda le risorse di memoria, Lua in genere è in grado di eseguire l’applicazione con un impiego di risorse inferiore rispetto a Java. Osservando infatti i risultati degli algoritmi utilizzati si può notare che le risorse di memoria impiegate da Lua sono sempre inferiori a quelle impiegate da Java ad eccezione degli algoritmi Quicksort e Dijkstra. Le prove quindi hanno evidenziato una propensione per Lua all’ottimizzazione delle risorse di memoria. L’utilizzo del compilatore Just in time LuaJit ha migliorato le prestazioni di Lua, anche se ha ribaltato la situazione negli algoritmi più semplici introducendo un overhead per il bootstrap del compilatore Just in Time. Anche l’utilizzo delle risorse di memoria da parte di Lua sono aumentate utilizzando LuaJit restando, comunque, inferiori alle risorse impiegate da Java. LuaJit ha migliorato notevolmente i tempi di esecuzione degli algoritmi Whetstone, Dhrystone, Quicksort, Dijkstra, Fibonacci Ricorsivo, Accesso a File; i tempi di esecuzione in questi algoritmi in media si sono ridotti di un terzo. L’aumento dell’impiego delle risorse di memoria riscontrato utilizzando LuaJIT risulta maggiore negli algoritmi più complessi come il whestone, dhrystone, dijkstra e quicksort.

    Seminari sostenuti

    23-11-2007 – Panoramica del linguaggio di programmazione Lua
    07-03-2008 – Lua vs Java
    27-06-2008 – Benchmark: Lua, Java e LuaJIT

    Bibliografia

    Lua
    Sito ufficiale Lua
    Wiki Lua
    LuaJIT
    The Benchmark Game
    Netlib
    Java Doc

    User:Salva3

    Antonio Salvati

    Lavoro di tesi

    Il nostro lavoro di tesi, svolto insieme a Luigi Bifulco, è stato quello di estendere un proxy web che fornisce servizi per la modifica e la personalizzazione di pagine web: il proxy SISI, rendendolo distribuito e quindi aumentandone le potenzialità. Abbiamo utilizzato un paradigma di calcolo distribuito: il Grid Computing.

    I sevizi offerti dal proxy sono servizi più o meno costosi che agiscono sulle pagine web, modificano codice HTML, immagini e fogli di stile CSS. in precedenza erano presenti sul proxy stesso come moduli di Apache, quindi un solo nodo si occupava di gestire e soddisfare tutte le richieste. Esportando i servizi su Grid abbiamo alleggerito il carico del proxy, che ora si occupa solo di smistare le richieste ai vari servizi distribuiti, in base al profilo dell’utente decide quali servizi invocare, in base al carico dei nodi sui quali è presente il servizio da invocare decide dove invocarlo.

    Lo strumento utilizzato per creare i nostri servizi distribuiti è stato Globus Toolkit, che implementa le specifiche WSRF (specifiche che standardizzando i Grid Services), mentre il proxy è diventato in pratica un client dei servizi che abbiamo realizzato, il suo compito infatti è divenuto quello di ricevere le richieste dai web browser e applicare i servizi effettuando chiamate remote a Grid Services e non più chiamando moduli propri sullo stesso nodo.

    Le maggiori problematiche affrontate e risolte sono state appunto quelle di mettere in comunicazione due sistemi molto differenti tra loro: da un lato un proxy in mod_perl basato su Apache Web Server e dall’altra Globus Toolkit, un’implementazione delle specifiche riguardanti il Grid Computing in Java. Ciò è stato possibile poiché la comunicazione lato Globus Toolkit prevedeva l’uso di messaggi SOAP, essendo i Grid Services un’estensione dei Web Services, e quindi ci è stato possibile invocare i servizi realizzati creando dei messaggi SOAP ad hoc per l’invocazione di Grid Services. Essendo i servizi ereditati scritti in mod_perl si è preferito tenere il codice Perl ed incorporarlo nei servizi Grid: in pratica i Grid Services realizzati utilizzano gli script Perl già esistenti. Ciò è stato fatto per mantenere i servizi identici nel loro comportamento ed evitare il rischio di trovare incongruenze tra i nuovi e i vecchi servizi. Inoltre l’invocazione dei suddetti script avviene per mezzo di un interprete Perl persistente, emulando così il comportamento di mod_perl ed evitando di appesantire il nodo per le troppe chiamate ad un interprete perl classico (che viene avviato per ogni invocazione di ogni script).

    Seminari