Luca Viscito
E-mail: luca[dot]viscito[at]gmail[dot]com
Attualmente: Iscritto al cdl magistrale in Informatica
Progetto MyUnisa
MyUnisa: Web Application di Social Networking
MyUnisa è un'applicazione web di social networking basata su servizio di geolocalizzazione wireless offerto dal Cisco Mobility Service Engine presente nell'Università degli studi di Salerno.
Il servizio di localizzazione si basa sull'infrastuttura wireless dell'ateneo, ed è in grado di rilevare con un raggio di errore di 10 metri la facoltà, l'edificio, il piano e la stanza relativa alla posizione di ogni dispositivo connesso alla rete e loggato a MyUnisa.
http://img31.imageshack.us/img31/4162/imguyn.png
Progetto realizzato in collaborazione con Eugenio Cuomo
Il mio lavoro di tesi ha riguardato principalmente lo sviluppo delle funzionalità lato-server e della comunicazione di MyUnisa con l'MSE.
Funzionalità principali
MyUnisa, oltre alle comuni di ambito Social Network quali:
- Stringere amicizia con le persone che si conoscono
- Cercare nuove persone nell'ateneo
- Definire un proprio profilo
- Possedere una bacheca personale
- Possibilità di lasciare messaggi sulla propria bacheca e su quella dei propri amici
- Visualizzare i messaggi più recenti pubblicati sulle bacheche di tutti i propri amici
- Possibilità di commentare i messaggi in bacheca
- Tener traccia di tutte le interazioni con i propri amici attraverso avvisi con messaggi di notifica.
offre funzionalità di localizzazione del proprio dispositivo e controllo delle zone dell'ateneo:
- Visualizzare in che punto dell'ateneo ci si trova
- Visualizzare tutte le zone dell'ateneo
- Condividere la propria posizione sulla bacheca personale, o su quella dei propri contatti
- Sapere la posizione di tutti i propri amici connessi
- Definire delle aree di interesse per una specifica zona del campus
- Visualizzare tutti gli amici che entrano in una area di interesse (check-in)
Architettura del Sistema
http://img535.imageshack.us/img535/7808/architetturaisis.png
Stato attuale e Testing
Chiunque volesse provare e testare l'applicazione può farlo al seguente indirizzo (accessibile solo dall'università) MyUnisa
Allo stato attuale per un corretto utilizzo dell'applicazione occorre:
- Possedere un account universitario valido, quindi con dominio @studenti.unisa.it, @unisa.it, @dia.unisa.it, ...
- Per ottenere informazioni sulla propria posizione è necessario essere connessi alla rete wireless di Ateneo (Studenti o Personale)
- In fase di registrazione è necessario specificare il proprio account universitario come indirizzo email, il quale sarà anche usato per l'accesso.
- Consigliamo di utilizzare i browser Google Chrome o Safari. Firefox e Internet Explorer non sono compatibili graficamente al 100%. Per quanto riguarda gli smartphone, viene visualzzato tutto correttamente da Samsung e HTC entrambi con Android OS. Segnalateci altri test.
- Se al primo accesso non viene resa disponibile la propria posizione, provare ad effettuare logout e successivo login (per problemi di rete o comunicazione con l'MSE)
Chiediamo a chiunque partecipi al test dell'applicazione, di inviarci feedback e segnalazioni in modo da modificare e correggere eventuali bug appena possibile
Software e Librerie
Java JDK 6 update 24 | http://www.oracle.com/technetwork/java/javase/downloads/index.html |
Eclipse EE IDE for Web Developersversion Helios Service Release 2 | http://www.eclipse.org/ |
Google Web Toolkit Plugin for Eclipse | http://code.google.com/intl/it-IT/webtoolkit/ |
Smart GWT - GWT API's for SmartClient | http://code.google.com/p/smartgwt/ |
Gwtupload - GwtUpload & JsUpload: File Upload Progress with pure javascript (Ajax) | http://code.google.com/p/gwtupload/ |
JavaMail - The JavaMail API provides a platform-independent and protocol-independent framework to build mail and messaging applications | http://www.oracle.com/technetwork/java/javamail/index.html |
MySql - "Il database open source più famoso al mondo" | http://www.mysql.it/ |
Jdom - JDOM is a Java API that provides the user with the ability to create and manipulate XML documents | http://www.jdom.org/ |
Axis Web Services Libraryversion 2-1.5.4 | http://axis.apache.org/axis/java/index.html |
Standalone Tomcat Appliance-Java Servlet and JSP Platform
version 11.1 |
http://www.turnkeylinux.org/tomcat |
Apache Tomcat - Web Application Server | http://tomcat.apache.org/index.html |
SWT - The Standard Widget Toolkit | http://www.eclipse.org/swt/ |
Cisco MSE - Mobility Services Engine | http://www.cisco.com/ |
Cisco Mobility Services Engine (MSE)
Il Mobility Services Engine di Cisco è una piattaforma che comunica con l' infrastruttura WLAN. Esso dispone di una potente interfaccia di programmazione applicativa aperta (API) che aggrega e supporta un'ampia gamma di servizi di mobility per reti wireless e fisse.
Context-Aware Mobility Solution
Le soluzioni ad un context-aware mobility devono fornire la capacità di catturare ed utilizzare in modo dinamico informazioni contestuali su risorse mobili per creare, modificare o ottimizzare un flusso di comunicazione nei processi di business. La rete utilizza i segnali per stabilire la posizione delle risorse o dei dispositivi mobili. Le tecniche di localizzazione e gli algoritmi che vengono utilizzati per effettuare il calcolo della posizione di un dispositivo dipendono da:
- Ambiente considerato
- Precisione necessaria
- Necessità di tracciare una risorsa in maniera continua
- Possibilità di acquisire informazioni su una risorsa solo quando questa è all' interno o fuori da una determinata zona
Tipicamente, in una soluzione di mobilità context-aware ci sono due tipi di sistema di tracciabilità della posizione:
- Active location tracking: Un dispositivo di misurazione rileva la potenza del segnale di un trasmettitore di pacchetti, e ne determina la sua posizione in base a tali misurazioni.
http://img233.imageshack.us/img233/8260/rssid.png
- Passive location tracking: E' una tecnologia che utilizza la comunicazione attraverso l'uso di onde radio per trasferire dati tra un lettore e un tag elettronico collegato ad un dispositivo o un oggetto.
http://img6.imageshack.us/img6/3388/ttdoa.png
GWT: Google Web Toolkit
E' un framework open source, sviluppato da Google. Permette di creare applicazioni Web con AJAX scrivendo le proprie pagine esclusivamente in linguaggio JAVA. GWT ha il compito di "tradurre" le proprie applicazioni scritte in linguaggio Java, producendo codice JavaScript e HTML. Molti dei servizi più famosi di Google (da Maps a Gmail) sono stati realizzati con questo framework.
Componenti principali di GWT:
http://img534.imageshack.us/img534/9053/gwt1.png
- JRE emulation libraryGWT: Contiene le implementazioni in linguaggio Javascript delle librerie Java standard maggiormente utilizzate (package java.lang.* e java.util.*).
- GWT Web UI class library: Contiene insieme di interfacce e classi che permettono di disegnare le pagine web (ad es. bottoni, text panel, label, immagini, ecc.).
- Compilatore GWT Java-to-JavaScript: Il compilatore GWT Java-to-JavaScript converte il codice Java in codice Javascript. Deve essere utilizzato quando si vuole eseguire l'applicazione in modalità "web mode".
- GWT Hosted Web Browser: Il GWT Hosted Web Browser permette di eseguire le applicazioni in modalità "hosted mode", ossia di eseguire il codice Java nella JVM senza convertire il codice in linguaggio JavaScript/HTML.
Guide
Di seguito vengono illustrate alcune guide e consigli utili che si sono rivelati preziosi per lo sviluppo della nostra applicazione.
Guida: Sviluppare applicazioni GWT con Eclipse e Tomcat
Questa guida illustra come configurare l'ambiente di sviluppo per applicazioni web GWT (Google Web Toolkit), utilizzando l'IDE Eclipse e l'application server Tomcat in modo da poter utilizzare servlet, pagine jsp e altro.
Utilizzando Tomcat anche per lo sviluppo, si evita di utilizzare il web server Jetty integrato nel plugin nativo di google per GWT (che a noi ha dato non pochi problemi). I passi da seguire sono i seguenti:
- Download di Tomcat: Innanzitutto bisogna scaricare la versione di tomcat dal sito ufficiale, noi stiamo utilizzando la versione 6 in quanto sul server a noi dedicato è presente questa versione. Non dovrebbero esserci problemi ad utilizzare anche tomcat 7 e quindi servlet 3.0.
- Configurazione di Eclipse: Dopo aver scaricato ed estratto tomcat, bisogna configurarlo per utilizzarlo con eclipse. Da Eclipse andare su: Window -> Preferences e dalla schermata che si aprirà sezionare Server -> Rintime Environment. Tramite il pulsante ADD, possiamo scegliere la versione dell'application server da installare. Nel nostro caso specifico abbiamo scelto “Apache Tomcat v6.0″. Confermiamo e indichiamo ad eclipse qual'è la cartella contenente i file di Tomcat.
- Creazione di una Web Application GWT: Creare una nuova web application tramite il plugin di Google, oppure utilizzare una già esistente ed segure queste configurazioni:
- Nelle proprietà del progetto selezionare Project Facets e configuare le opzioni seguenti - Dynamic Web Module -- > 2.4 - Java -- > 1.5 - JavaScript -- > 1.0 - Ora andare nella scheda Runtime di Project Facets e selezionare Tomcat - In Deployment Assembly eliminare la coppia di valori </WebContent> ed inserire al suo posto la cartella </war>
- Runtime configuration: Infine nella proprietà di runtime configuration del progetto:
- Selezionare la voce Web Application e poi la voce relativa al progetto creato - Selezionare Server e togliere la spunta all'opzione “Run built-in server”.
L'ultimo settaggio da effettuare è quello che riguarda il file web.xml comune per le servlet, dove bisogna indicare la pagina html creata dal plugin Google come welcome-file principale in modo che l'applicazione parta da quella pagina. Dopo aver effettuato questi passaggi si può compilare normalmente con GWT compile ed eseguire l'applicazione tramite il comando “Run on Server”. Impostando il progetto in modo da assegnarlo a Tomcat, il contenuto della cartella “war” viene deployato nell'application server quindi anche gli script javascript creati da GWT Compile. In questo modo le pagine html saranno gestite da Tomcat e non dall'application server Jetty interno a GWT.
Guida: Velocizzare la compilazione di GWT Compile
Il tempo di compilazione del codice Java da parte del compilatore di GWT è elevato se si parla di un progetto di medio grandi dimensioni, questo è dovuto dal fatto che le iterazioni (permutazioni) che GWT esegue servono per rendere il codice visualizzabile da tutti i browser in commercio. In fase di sviluppo aspettare sempre questo tempo di compilazione (che va dai 30 secondi fino a oltre 10 minuti a seconda dell'hardware) non è consigliabile. Un primo settaggio per diminuire questo tempo è quello di settare un unico browser (user-agent) di destinazione, in fase di ottimizzazione finale invece è chiaramente necessario rimuovere questa limitazione e compilare per tutti browser. Esempio, nel file xml di configurazione dell'applicazione GWT inserire una o più di queste righe:
<set-property name="user.agent" value="gecko1_8"/> per compilare solo per mozilla firefox
<set-property name="user.agent" value="safari" /> per Safari o Google Chrome
<set-property name="user.agent" value="ie8"/> per Internet Explorer
Un altro settaggio è quello di impostare un solo Locale, in modo da forzare la lingua della web-application:
<extend-property name="locale" values="it"/> per la lingua italiana indifferentemente dal paese
<extend-property name="locale" values="it_IT"/> per la lingua italiana solo in Italia.
Seminari
- 31/05/2011
"MyUnisa, quando la rete sociale si trasferisce nel tuo Ateneo"
Abstract: "In questo seminario verrà presentato l'idea di progetto riguardante un' applicazione web di Social Networking. L'applicazione include inoltre l'utilizzo delle tecnologie di localizzazione wi-fi offerte da Cisco Mobility Services Engine (MSE) presente nella nostra Università. Nella prima parte verrà illustrata una panoramica sul social networking e sull'infrastruttura di rete dell'Ateneo, mentre nella seconda verranno mostrate le tecnologie utilizzate e la struttura di base del progetto, discutendo infine sui possibili sviluppi futuri."
- 14/07/2011
“MyUnisa, La rete sociale che sa sempre dove ti trovi”
Abstract: In questo seminario verrà mostrato lo stato attuale del progetto MyUnisa, un'applicazione web di social networking basata su tecniche di geolocalizzazione. Verranno mostrati alcuni approfondimenti circa le tecnologie utilizzate per lo sviluppo, l'architettura software del sistema e i meccanismi di localizzazione e di comunicazione tra le varie componenti dell'applicazione.
- 23/09/2011
“MyUnisa, un Social Network Location-based”
Abstract: In questo seminario verranno mostrati ulteriori dettagli sullo sviluppo dell'applicazione. In particolare si descriverà l'utilizzo di JavaScript Native Interface per il Client, e la gestione degli utenti per il Server. Infine verrà mostrato lo stato attuale dell'applicazione.
- 19/10/2011 (Seminario Breve: Presentazione prova finale)
“MyUnisa, Social Network Location-based”