Progettazione e implementazione di un'applicazione per la navigazione in ambito urbano per la piattaforma Android

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Progettazione e implementazione di un'applicazione per la navigazione in ambito urbano per la piattaforma Android"

Transcript

1 POLITECNICO DI MILANO Facoltà di Ingegneria Corso di laurea in Ingegneria Informatica Dipartimento di Elettronica e Informazione Anno Accademico 2007/2008 Elaborato di tesi Progettazione e implementazione di un'applicazione per la navigazione in ambito urbano per la piattaforma Android Autori: Marcello Maggioni matricola: Alberto Magni matricola: Relatore: Correlatore: prof. Antonio Capone ing. Luca Dell'Anna 1

2 Indice 1Introduzione Descrizione del problema Obiettivi prefissi Scelte Tecnologiche Soluzioni preesistenti Organizzazione del Documento...9 2Android: il sistema operativo La struttura del sistema operativo [14] Lo sviluppo di un'applicazione per Android Il plugin per Eclipse e l'emulatore Un progetto Android per Eclipse Programmare in Android [16] Altri elementi utilizzati nel progetto L'applicazione L'architettura dell'applicazione Il modello della rete dei servizi pubblici OpenStreetMap [23] Il Database La struttura del modello La comunicazione con il Database L'algoritmo di calcolo del percorso consigliato Introduzione La modellizzazione delle stazioni La scelta del mezzo e del percorso L'individuazione dei malfunzionamenti Interfaccia grafica ed Esempio di utilizzo L'inserimento dei dati La presentazione del percorso Conclusioni e possibili sviluppi Note Bibliografia

3 Indice delle Figure 1: Struttura del sistema Operativo Android : La perspective DDMS : L'emulatore del sistema operativo Android : La struttura di un progetto Android in Eclipse : Il ciclo di vita di un'activity : La struttura del Modello : La comunicazione con il DataBase : Sequence diagram della costruzione del modello : La classe Node e le sue sottoclassi : Esempio di percorso : La schermata di Input : La scelta fra diverse opzioni : L'utilizzo del dispositivo GPS : Esempio di Elenco Scambi : Partenza e Destinazione di Esempio : La mappa e le stazioni

4 1 Introduzione In questo capitolo introduttivo viene esposto l'ambito all'interno del quale il progetto si inserisce. Si descrivono quindi i problemi che il lavoro svolto intende risolvere o semplificare. Verranno discusse e motivate le scelte implementative effettuate descrivendo le possibilità tra le quali ci si è mossi. Si confronteranno quindi gli obiettivi fissati con altri progetti in sviluppo o già in circolazione mettendone in evidenza limiti e pregi 1.1 Descrizione del problema I centri ad alta densità abitativa sono particolarmente interessati da problemi legati all'elevato numero di mezzi di trasporto privati in circolazione. In alcune fasce orarie la velocità media delle automobili nel traffico cittadino è decisamente bassa. Una tale situazione comporta costi, non solo economici, e disagi molto elevati per la collettività: alti valori degli inquinanti, cattiva qualità di vita, sprechi di risorse energetiche, dispendio di tempo e denaro. I problemi esposti sono così gravi che le molte amministrazioni comunali delle città più grandi d'europa (Milano, Londra, Stoccolma) hanno deciso di introdurre una tassa per accedere al centro cittadino con i mezzi di trasporto privati. Per disincentivare l'utilizzo dell'automobile il pedaggio è stato stato fissato a valori decisamente elevati (a Londra si raggiungono 25 per singolo accesso per mezzi particolarmente inquinanti)[1]. Purtroppo soluzioni di questo tipo non sono radicali né definitive. In particolare la città di Milano non ha risolto i suoi gravi problemi di inquinamento in quanto l'area a traffico limitato ha una superficie ridotta, il che rende in pratica impossibile conseguire gli obiettivi prefissati in fase di studio. Una soluzione definitiva e duratura ai problemi del traffico può invece giungere da un utilizzo più intenso ed esteso dei mezzi pubblici, da incentivare verso tutti i possibili fruitori. Ai frequentatori saltuari di una grande città spesso risulta difficile orientarsi nella rete del trasporto urbano, e ciò è un freno a ricorrervi. Ancora più difficoltà incontra un turista che intende visitare una città del tutto ignota. Può anche presentarsi il caso di cittadini che devono recarsi in quartieri che conoscono poco. Le mappe cartacee, quando sono disponibili, non sempre sono efficaci in quanto non riportano la completa e aggiornata rappresentazione né delle linee né degli orari. Questi ultimi sono difficili da reperire se non ci si trova già alla stazione o fermata di partenza. Gravi disagi per i viaggiatori derivano dal blocco totale di una linea dei mezzi pubblici in seguito a scioperi improvvisi (particolarmente frequenti in Italia) o a malfunzionamenti dei mezzi. 4

5 Inconvenienti di questo tipo sono decisamente fastidiosi in quanto costringono il viaggiatore a riconsiderare per intero il proprio itinerario. L'obiettivo è quindi quello di rendere il ricorso ai mezzi pubblici più amichevole proponendo semplici soluzioni a problemi quali la determinazione del percorso più veloce fra località tenendo conto degli orari e degli eventuali scioperi o malfunzionamenti. 1.2 Obiettivi prefissi Lo scopo è quindi quello di realizzare un software che permetta di rendere più semplice l'utilizzo dei mezzi pubblici. Si vuole aiutare l'utente che non conosce in modo approfondito la rete delle linee urbane di una città a raggiungere una determinata destinazione. Verrà quindi elaborato un percorso da seguire tenendo conto degli orari dei mezzi che si intendono utilizzare e di eventuali problemi riguardo a guasti o a scioperi. Alla luce dei problemi descritti, per essere realmente utile e innovativa l'applicazione che si vuole realizzare deve presentare determinate caratteristiche. Deve poter essere consultabile in qualsiasi momento; in particolare quando si è in viaggio o in movimento, permettendo, in questo modo, di orientarsi in una città che non si conosce. Deve contenere informazioni riguardo la completa struttura delle linee dei diversi mezzi pubblici di cui una città è dotata. In particolare devono essere note le posizioni di tutte le fermate. Questo è un problema non semplice da risolvere in quanto spesso le linee di superficie subiscono modifiche non solo negli orari ma anche nella posizione delle fermate. L'ideale sarebbe quindi quello di possedere una fonte di informazioni sempre aggiornata. Questi dati sono di vitale importanza per realizzare sistema in grado di elaborare un percorso per raggiungere una località prestabilita. Per differenziarsi realmente da una semplice guida stradale, devono inoltre essere disponibili orari e segnalazioni di guasti o scioperi in tempo reale. É necessario anche tenere conto di quale orario consultare: festivo o feriale, estivo o invernale. L'affidabilità di questo tipo di informazioni è di fondamentale importanza in quanto su di esse si basa l'elaborazione del percorso. Ovviamente essi devono essere tenute costantemente aggiornatei in relazione a eventuali cambiamenti. La presentazione di una mappa interattiva è molto utile per poter determinare e visualizzare in modo preciso e veloce le località di partenza, arrivo e gli eventuali 5

6 scambi da effettuare tra le differenti linee. 1.3 Scelte Tecnologiche Dall'esposizione degli obiettivi che il progetto si propone di raggiungere risulta evidente che il miglior supporto per l'applicazione in sviluppo è uno smart-phone, ovvero un telefono portatile che possiede un proprio sistema operativo con funzionalità quali la navigazione in rete e la semplice gestione di file e contatti. Spesso dispositivi di questo tipo sono dotati di tastiera e di touch-screen che permettono una fruizione davvero immediata delle sue potenzialità. Grazie all'evoluzione tecnologica dell'hardware sono oggi disponibili modelli dotati di sistemi operativi con prestazioni tali da far considerare questi dispositivi assimilabili a computer invece che a semplici telefonini. L'accessibilità di questo tipo di prodotti è aumentata di molto nel corso degli anni, portando a un grande aumento delle vendite negli ultimi anni [2],[3] e permettendo una diffusione capillare del prodotto e delle loro applicazioni. Un dispositivo hardware che ha trovato grande diffusione fra gli smartphone è il rilevatore di coordinate geografiche GPS. Esso è stato introdotto per ottenere la posizione del telefono sulla superficie terreste. Questa integrazione, e la possibilità di accedere in modo veloce alla rete, ha permesso la nascita di un nuovo tipo di applicazioni software: i servizi Location-Based [4]. Essi si prefiggono l'obiettivo di fornire servizi rispondendo a tre semplici domande: Dove mi trovo?, A che cosa sono vicino? e Dove posso andare da qui?. Il mercato dei sistemi operativi per dispositivi mobili è molto variegato e scenario di grande concorrenza. a oggi 1 quelli esposti di seguito sono i software più diffusi [5]: Il sistema operativo Symbian possiede la maggioranza relativa del mercato con il 46% delle vendite. Esso è controllato per intero dalla multinazionale finlandese Nokia, la quale ha acquistato la proprietà della Symbian Ltd nel giugno del 2008 con l'obiettivo di fondare una società di software open-source [6]. Symbian è stato uno dei primi sistemi operativi per smart-phone e nel corso degli anni sono state rilasciate numerose versioni, il che ha permesso una larga diffusione su differenti modelli di dispositivi. Dato il suo grande successo e la sua diffusione Symbian è stato più volte oggetto di attacco da parte di virus informatici; questo problema può essere risolto permettendo l'installazione solo di software autenticato e protetto. Il linguaggio di 1 Ci si riferisce al terzo quadrimestre del

7 programmazione utilizzato per lo sviluppo di software in Symbian è il C++. Creare applicazioni su questo sistema operativo è però piuttosto complicato. Sono difficile realizzazione anche compiti banali. Questo è dovuto all'architettura di vecchia concezione sulla quale il software si basa. IPhone OS è il sistema rilasciato da Apple per supportare prodotti quali IPhone e Ipod Touch. Esso stato progettato in layer, come un normale sistema operativo, e con l'obiettivo di essere molto leggero; adatto a essere eseguito su un dispositivo mobile [7]. La principale limitazione del software riguarda la portabilità, esso infatti è stato studiato appositamente per l'hardware Apple. L'azienda ha rilasciato nel marzo del 2008 un tool di sviluppo per applicazioni chiamato iphone SDK 2, che permette la programmazione di software per sfruttare le potenzialità del sistema operativo. La distribuzione del prodotto sviluppato non può però avvenire in modo libero: è infatti necessario far approvare il proprio lavoro da Apple e ottenere l'autorizzazione a distribuirlo. L'azienda canadese RIM ha concentrato le proprie ricerche nello sviluppo di un sistema operativo per il dispositivo BlackBerry. Gli sforzi si sono stati diretti allo sviluppo di soluzioni wireless (per rendere semplice e funzionale il collegamento alla rete) e applicazioni per le attività di lavoro. Windows Mobile è il sistema operativo per cellulari rilasciato da Microsoft. Esso è una derivazione del sistema Windows 32 per PC. Una delle caratteristiche fondamentali del prodotto è la sua portabilità: esso infatti è disponibile per innumerevoli hardware, sia smart-phone che computer palmari. Anche Microsoft ha rilasciato un tool di sviluppo che permette la realizzazione da parte di terzi. Questo è disponibile in abbinamento all'editor di Windows Visual Studio. Di recente introduzione è il sistema operativo Android. Esso è sviluppato da una società chiamata Open Handset Alliance che è guidata dal leader dei motori di ricerca Google. La distribuzione del software sul mercato non è ancora avvenuta a livello mondiale ma da tempo è disponibile in rete un SDK (Software Development Kit) che permette lo sviluppo di applicazioni per l'architettura. Le funzionalità che vengono messe a disposizione sono davvero notevoli: possibilità di usufruire di mappe; 2 7

8 sensore GPS, fotocamera e di database integrato. Molto interessante è il fatto che il progetto ha come obiettivo rendere semplice e intuitiva la scrittura di codice. A questo si aggiunge la possibilità di accedere al codice sorgente sia del sistema operativo che di quello di ogni altra applicazione distribuita. Queste premesse fanno pensare che in futuro Android si assicurerà una fetta considerevole del mercato. Riteniamo quindi questa la soluzione migliore per lo sviluppo del software cercato. 1.4 Soluzioni preesistenti I navigatori satellitari per automobili che aiutano gli automobilisti nella guida fornendo informazioni riguardo la posizione del veicolo e il tragitto da seguire sono molto diffusi. Questo non vale per dispositivi che facilitano l'utilizzo dei mezzi pubblici indicando le linee ideali per raggiungere una località. Lo stato dell'arte in questo campo è rappresentato dal prodotto Discover Cities [8] della società statunitense NAVTEQ. Si tratta di un'applicazione software che fornisce informazioni riguardo la struttura urbanistica delle principali città americane ed europee. Essa si propone come un supporto ai programmatori che intendono sviluppare applicazioni location-based in ambito cittadino. Discover Cities permette di elaborare percorsi molto dettagliati accompagnando l'utente curva dopo curva anche sui mezzi pubblici e fornendogli orari e informazioni. A questo si aggiunge la disponibilità ottenere dati e indicazioni su come raggiungere i principali luoghi di interesse e le attrazioni di un città, funzionalità molto utile per i turisti. All'interno del progetto GoogleMap l'azienda californiana ha promosso, dal dicembre 2005, il progetto Transit [9]. Esso è un'applicazione web che permette di pianificare i propri spostamenti in ambito urbano in modo estremamente semplice. Il progetto è stato realizzato in associazione con le aziende di trasporto pubblico locale, disponendo così di informazioni dettagliate e sempre aggiornate sulle stazioni e sugli orari. Oltre che nella versione web, è disponibile anche su smart-phone e molti sono i sistemi operativi supportati. Anche per la piattaforma Android, quella scelta per lo sviluppo del progetto, è stata sviluppata un'applicazione simile a quella descritta. Essa prende il nome di Metroid [10] e ha come obiettivo quello di pianificare viaggi urbani sfruttando le linee pubbliche. Il suoi sviluppatori hanno anche partecipato al concorso indetto da Google denominato Android Challenge. A nostro giudizio Metroid, ancora in fase di sviluppo, ha notevoli margini di 8

9 miglioramento. Infatti nella base di dati utilizzata non sono mantenute informazioni sulla posizione delle fermate dei mezzi. É quindi reso difficile capire quale fermata è la più comoda per giungere in una determinata località. Oltre al semplice elenco degli scambi da effettuare, sarebbe stata molto utile l'integrazione di una mappa della città, in modo da visualizzare chiaramente destinazione e partenza. D'altro canto la semplicità con la quale sono mantenuti i dati utilizzati permette una facile estensione del progetto a nuove città. 1.5 Organizzazione del Documento La presente relazione è stata suddivisa in tre capitoli principali. 2.Android: il sistema operativo Il capitolo espone in modo dettagliato le caratteristiche principali del sistema operativo sul quale l'applicazione viene sviluppata. Viene qui messo in luce il carattere fortemente innovativo di Android, appositamente studiato per lo sviluppo di software in modo semplice e veloce. Viene poi descritta la modalità con la quale può essere realizzato un progetto Android utilizzando un apposito plugin per l'editor Eclipse. Infine sono evidenziate le componenti principali dell'sdk distribuito da Google. 3.L'applicazione Viene qui presentato il software realizzato nel corso del progetto. La trattazione inizia descrivendo l'architettura globale dell'applicazione e addentrandosi poi nei particolari. Sono esposte e giustificare le scelte implementative effettuate considerando i problemi incontrati nello sviluppo. Una volta descritta la modalità di recupero dei dati necessari all'esecuzione è presentato l'utilizzo che ne è fatto nella costruzione del modello della rete dei mezzi pubblici. Segue quindi l'algoritmo per il calcolo del percorso per il raggiungimento della destinazione prefissata. Sono qui esposte le semplificazioni introdotte e i criteri utilizzati per elaborare un algoritmo semplice ma che fornisca risultati affidabili e realistici. Infine è descritta l'interfaccia grafica con cui l'utente viene in contatto. Il capitolo si conclude con un esempio di utilizzo del software prodotto descrivendo nei particolari ogni fase dell'utilizzo. 4.Conclusioni e possibili sviluppi In questo capitolo sono esposte considerazioni circa il raggiungimento degli obiettivi prefissati, la qualità del percorso proposto e la funzionalità del software. Infine sono presentate eventuali soluzioni per ampliare il progetto rimuovendo alcune semplificazioni introdotte. 9

10 2 Android: il sistema operativo Android è un sistema operativo progettato per dispositivi mobili sviluppato inizialmente da Google e successivamente da Open Handset Alliance (OHA). Questa è un'alleanza di aziende composta fra le altre da: Google, Intel, HTC, Motorola, Samsung, LG, Nvidia, Qualcomm e T-Mobile, che ha il fine di sviluppare applicazioni e hardware per smartphone. Il sistema operativo è stata annunciato il 5 novembre 2007 e rilasciato il 12 novembre. La prima versione commerciale di un cellulare fornito del sistema operativo Android è stata rilasciata il 22 ottobre del 2008 negli Stati Uniti, sotto il nome di T-Mobile G1 3. L'hardware del telefono è stato realizzato dalla compagnia di Taiwan High Tech Computer (HTC). La caratteristica che rende particolarmente interessante Android è il fatto che è stato rilasciato sotto licenze open-source [11] : Apache 2.0 [12] e GPLv2 [13]. É quindi disponibile in rete anche il codice sorgente del sistema operativo 4, il quale può essere modificato e redistribuito a piacere. Questa scelta è stata presa in quanto Android è pensato per rendere facile lo sviluppo libero di applicazioni che sfruttino appieno le funzionalità. 2.1 La struttura del sistema operativo [14] Come i sistemi operativi per calcolatori fissi, anche Android è organizzato secondo il paradigma a pila. Uno schema della sua struttura è rappresentato nella figura seguente

11 1: Struttura del sistema Operativo Android Applications: la versione base di Android non presenta solamente il sistema operativo ma anche applicazioni base di frequente utilizzo come un browser, un client di posta elettronica, un'agenda per la gestione dei contatti eccetera. a esse possono essere aggiunti altri programmi non appartenenti alla distribuzione ufficiale. La filosofia della OHA riguardo lo sviluppo di nuove applicazioni può essere riassunto con la frase: All applications are created equal. Ovvero: non c'è differenza fra i prodotti ufficiali e quelli da sviluppare in modo indipendente. Tutti si basano sulle stesse librerie e hanno pari privilegi nell'accesso alle risorse messe a disposizione dal sistema operativo. Application Framework: questo livello dello stack è necessario per rendere disponibili i servizi del sistema operativo alle applicazioni al livello superiore. Come detto in precedenza queste API (Application Programming Interface) sono comuni sia alle applicazioni ufficiali che a quelle sviluppate in modo indipendente. L'obiettivo fondamentale che si è cercato di raggiungere nella progettazione di questo livello è il riuso del codice. Ovvero ogni applicazione può rendere disponibile alle altre servizi 11

12 specifici permettendo così la progettazione in modo semplice di servizi nuovi basati su quelli preesistenti. Gli elementi più importanti del framework sono: View System: ovvero l'insieme di oggetti grafici che permettono la costruzione dell'interfaccia con l'utente 5. Content Providers: un content provider è un elemento che permette la condivisione di dati fra applicazioni. La gestione dei dati memorizzati è lasciata all'implementazione del singolo provider mentre tutti devono implementare interfacce comuni per permettere l'esecuzione di query e l'inserimento di dati a ogni applicazione. Resource Managers : permettono l'accesso a tutti gli oggetti non costituiti da codice sorgente, quali immagini, file di configurazione dell'interfaccia, stringhe eccetera. Notification Managers : permettono alle applicazioni di presentare all'utente notifiche di eventi asincroni che avvengono in background. Activity Managers: gestiscono il life-cycle delle activity, le quali sono oggetti che rappresentano una singola operazione che l'utente può eseguire. Le activity, essendo la base di ogni programma sviluppato in Android, verranno descritte in modo approfondito in seguito. Libraries: le funzionalità messe a disposizione dall'application framework sono implementate da una serie di librerie scritte in C/C++; le più importanti sono: Un'implementazione della libreria standard C (libc) specificatamente implementata per i sistemi Linux di tipo embedded. Librerie per la gestione di materiale multimediale basate su PacketVideo's OpenCORE. WebKit: libreria per web browsing. SQLite: libreria di piccole dimensioni per la gestione di un database relazionale. Gestione della grafica 2D e 3D attraverso la libreria OpenGL. Android Runtime: oltre a ulteriori librerie è presente in questo sottoinsieme la Dalvik Virtual Machine, ovvero una macchina virtuale all'interno della quale sono eseguite le applicazioni. Essa esegue classi java che sono state compilate in uno specifico bytecode chiamato dex. Linux Kernel: Android è stato sviluppato a partire dalla versione 2.6 del kernel Linux. 5 Per una collezione di esempi di view consultare l'indirizzo: 12

13 Esso ha la funzione di astrarre dal livello hardware e fornire i servizi base di qualsiasi calcolatore, ovvero gestione della memoria, dei processi e del collegamento alla rete. 2.2 Lo sviluppo di un'applicazione per Android Il linguaggio di programmazione scelto dagli sviluppatori della OHA per la realizzazione di applicazioni in Android è Java. Questa scelta è particolarmente significativa in quanto Java è il linguaggio più diffuso al mondo [15]. L'obiettivo della Open Handset Alliance è quindi quello di rendere accessibile al maggior numero di programmatori la possibilità di realizzare software per Android. È da leggere in quest'ottica la scelta di Google di indire nel maggio del 2008 un concorso (Android Developer Challenge) volto a premiare le applicazioni più innovative. Le semplificazioni introdotte permettono al programmatore di concentrarsi sulla sua applicazione tralasciando le problematiche riguardanti l'interazione con l'hardware, gestite dal sistema operativo Il plugin per Eclipse e l'emulatore La realizzazione di applicazioni per Android è possibile attraverso il Software Development Kit (SDK), ovvero l'insieme di tutte le classi Java necessarie allo sviluppo. La ricerca da parte della OHA della massima semplicità nella realizzazione di nuove applicazioni ha portato alla realizzazione di una IDE (Integrated Development Environment) apposita per Android. Essa consiste in un'estensione della IDE preesistente Eclipse attraverso un plugin. Anche la scelta di Eclipse non è casuale in quanto esso è uno degli ambienti di sviluppo gratuiti più diffusi per la programmazione in java. Il plugin ADT (Android Developement Tools) non è parte integrante dell'sdk ma è estremamente utile in fase di sviluppo. Esso, ad esempio, aggiunge a Eclipse la perspective chiamata DDMS (Dalvik Debug Monitor Service) che permette di lanciare l'emulatore in modalità di debug e avere una visione di insieme sui processi attivi, l'occupazione della memoria e le prestazioni della CPU. Vi sono anche view per il controllo dei dati sul file-system dell'emulatore, dello heap e dei singoli thread di ogni processo. Di grande importanza per la rilevazione degli errori è la view chiamata LogCat la quale presenta allo sviluppatore messaggi di log inviati dall'emulatore. Attraverso la classe Log è possibile programmare l'invio di messaggi con il fine di verificare lo stato dell'applicazione e quindi determinare eventuali errori. 13

14 2: La perspective DDMS Le applicazioni sviluppate con il plugin possono essere testate in modo realistico attraverso un emulatore: un telefonino virtuale eseguito sul computer. L'emulatore, come si vede nella figura nella pagina seguente, presenta la riproduzione di un telefonino a fianco di una di una tastiera con la quale è possibile interagire con l'emulatore. Tutti i bottoni visibili sono funzionanti e hanno un effetto sull'emulatore. L'unico limite dell'emulatore consiste nel fatto che non può effettuare vere telefonate. Si possono anche simulare eventi esterni come l'arrivo di un SMS, di una chiamata o il cambiamento della posizione nel mondo del telefono. La presenza del dispositivo GPS è molto importante per applicazioni di tipo location-based. Se non si usa il plugin di Eclipse è possibile comandare l'emulatore attraverso comandi telnet inviati alla porta sulla quale è in esecuzione l'emulatore Nel caso in figura il comando per connettersi è il seguente: telnet localhost

15 3: L'emulatore del sistema operativo Android 15

16 2.2.2 Un progetto Android per Eclipse 4: La struttura di un progetto Android in Eclipse La struttura di un progetto Android sviluppato con il plugin di Eclipse è qui riportata nell'immagine a fianco. Nella cartella src sono contenute tutte le classi java utilizzate per lo sviluppo del progetto. Molto interessante è la cartella chiamata res. In essa sono contenute tutte le risorse non costituite da codice sorgente utilizzate dall'applicazione. Esse sono suddivise in cartelle: Drawable raccoglie tutti gli elementi che possono essere utilizzati come icone o in generale disegnati sullo schermo. Sono accettati tre tipi di oggetti: immagini (di solito in formato png o jpg), definizioni di colori attraverso file xml e immagini di tipo NinePatch (file png a cui è associato un xml che ne definisce proprietà riguardanti la deformazione che può subire). Layout contiene tutti i file per la definizione delle interfacce utente delle differenti activity specificate in formato xml. Ogni file contiene la definizione di una schermata o di una parte di essa. Essi sono associati alla corrispondente activity attraverso l'invocazione del metodo Activity.setContentView() il quale prende come parametro un riferimento all'xml desiderato. Attraverso l'utilizzo dei tag propri di xml è possibile creare una struttura ad albero che rappresenta l'interfaccia grafica. a ogni elemento proprio di un'interfaccia corrisponde un tag. Ad esempio esistono i tag <TextView> e <Button> ma anche elementi che ne raggruppano di altri al loro interno come <LinearLayout>, ordinandoli secondo un criterio prestabilito. Per l'elenco completo degli elementi che possono essere utilizzati nella definizione di un layout e dei corrispondenti tag xml consultare l'indirizzo: Values raccoglie valori semplici che sono utilizzati da molti elementi all'interno dell'applicazione. Si possono inserire tre tipi di oggetti: stringhe definizioni di colori e di misure di lunghezza. Se si usa il plugin di Eclipse tutte le classi sviluppate e tutte le risorse saranno 16

17 automaticamente raccolte in un singolo file di estensione.apk (Android PacKage). Esso sarà l'unico file necessario per l'installazione dell'applicazione su un emulatore come quello descritto in precedenza. Questa soluzione rende estremamente semplice la condivisione di programmi. Prima di essere inseriti nel file.apk tutte le risorse utilizzate dall'utente e inserite nella cartella rsc verranno prima compilate dal compilatore aapt (Android Asset Packaging Tool) in file binari. Ancora una volta ADT si rivela estremamente comodo in quanto invoca in modo automatico il tool in fase di deploy dell'applicazione. L'ultimo file rimasto da descrivere è quello chiamato AndroidManifest.xml. Esso deve essere specificato in ogni programma e fornisce informazioni di carattere generale. Per esempio devono qui essere dichiarati le Activity e i Service utilizzati, i permessi che devono essere garantiti all'applicazione per l'esecuzione dei suoi compiti, oppure riferimenti a librerie necessarie per specifiche funzionalità. Sono qui definiti anche gli IntentFilter spiegati nello specifico nei paragrafi successivi. 17

18 2.2.3 Programmare in Android [16] Si presentano ora i concetti e i tipi di dato astratto fondamentali per lo sviluppo di un'applicazione Android. Activity [17] Ogni singola operazione che l'utente può svolgere è rappresentata da una Activity. La creazione di una nuova azione prevede la definizione di una nuova classe, la quale estende la classe Activity che si trova nel package android.app dell'sdk. La maggior parte delle Activity prevede un'interazione con l'utente. Si rende quindi necessaria la creazione di una interfaccia grafica e la sua associazione alla corrispondente Activity. La definizione della struttura dell'interfaccia è stata spiegata nel capitolo precedente. La Dalvik Virtual Machine mantiene in memoria una pila delle attività invocate dall'utente durante l'utilizzo dell'applicazione. Ogni volta che l'utente invoca una nuova schermata (ovvero un'attività) essa viene inserita sulla cima della pila. Sul fondo si troveranno invece le attività meno recenti, che non sono visualizzate attualmente sullo schermo. Questo meccanismo rende molto facile e veloce il browsing fra le differenti schermate. È quindi molto importante comprendere a fondo il cosiddetto life-cycle delle activity, ovvero la gestione degli stati nei quali esse si possono trovare. Tre sono le modalità principali nelle quali un'activity si può trovare: Running: l'activity è visualizzata sullo schermo e l'utente interagisce con essa. Paused: l'utente non può più interagire con l'attività ma il suo layout è ancora visibile (ad esempio sopra di esso appare una finestra di dialogo). Le activity in questo stato mantengono tutte le informazioni riguardanti il loro stato e possono essere terminate dalla DVM nel caso di scarsità di risorse. Stopped: quando l'utente passa da un'activity a un'altra, la prima è posta in stato di stop. Ciò significa che una nuova activity verrà posta sulla cima della pila. Le attività in stop sono le prime a essere terminate in caso di necessità di ulteriori risorse. La figura seguente mostra i passaggi di stato di activity. I rettangoli rappresentano le chiamate ai metodi di callback, ognuno dei quali svolge una funzione specifica nell'ambito del ciclo di vita dell'applicazione. 18

19 5: Il ciclo di vita di un'activity 19

20 Tutti i seguenti metodi possono essere oggetto di override da parte del programmatore, che può quindi adattarli alle proprie esigenze. oncreate(bundle): questo metodo è invocato dalla DVM quando l'activity viene creata per la prima volta ed è necessario alla sua inizializzazione. Le operazioni fondamentali che vengono svolte in questo metodo riguardano la definizione dell'interfaccia grafica attraverso un file.xml, l'associazione di ogni elemento dell'interfaccia alla corrispondente azione desiderata e l'inizializzazione delle strutture dati utilizzate quali liste e basi di dati. L'oggetto di tipo Bundle passato come parametro è necessario al passaggio di informazioni riguardanti lo stato dell'applicazione. onpause(): ogni volta che l'utente lascia un'activity la DVM invoca questo metodo nel quale il programmatore dovrà aver specificato operazioni riguardanti il salvataggio dello stato raggiunto dall'applicazione. onstart(): quando l'activity è visualizzata sullo schermo del telefono viene invocato questo metodo. onrestart(): metodo chiamato ogni volta che l'activity diventa visibile all'utente dopo che è stata posta nello stato paused. Subito dopo la terminazione del metodo viene invocato onstart(). onresume(): il metodo è chiamato subito prima che l'activity sia posta sulla cima della pila e che quindi si possibile per l'utente un'interazione. onstop(): quando un'activity viene oscurata da un'altra viene invocato questo metodo. ondestroy(): il metodo è lanciato subito prima della distruzione finale dell'activity. Nello schema si possono qui individuare 3 cicli: ciclo di vita: ricadono in questo insieme tutte le operazioni comprese fra le chiamate ai metodi oncreate(), nel quale si allocano tutte le risorse necessarie, e ondestroy(), nel quale le risorse sono rilasciate. ciclo di visibilità: compreso fra i metodi onstart() e onstop(). In questo periodo di tempo l'interfaccia dell'actitvity è sì visibile all'utente ma può non essere possibile l'interazione con essa a causa della presenza di altre activity in 20

21 primo piano. ciclo di vita in primo piano: in questo insieme sono comprese tutte le operazioni fra i metodi onresume() ed onpause(). L'Activity è qui completamente disponibile all'utente il quale può interagire con essa, ad esempio riempiendo dei form di input. Esistono due modi per lanciare un'activity. Essi si identificano nei due metodi startactivity(intent) e startactivityonresult(intent,int). Il primo permette il semplice lancio di un'activity identificata dall'oggetto di tipo Intent (spiegato nel paragrafo successivo). Il secondo metodo invece prevede che la classe invocata ritorni un risultato; esso sarà disponibile facendo override, nel chiamante, del metodo onactivityresult(int,int,result) che verrà invocato alla terminazione dell'attività chiamata. Intent [18] Questo tipo di dato rappresenta la descrizione astratta di un'operazione che può essere compiuta. Esso può essere utilizzato per lanciare nuove Activity o nuovi Service. In ogni istanza di un Intent è necessario specificare almeno due parametri: l'azione che si intende compiere ad esempio: ACTION_VIEW o ACTION_EDIT. I dati necessari all'esecuzione dell'azione identificati da un URI (Uniform Resource Identifier). La definizione di un Intent può avvenire quindi nel seguente modo: Intent intent = new Intent (Intent.ACTION_VIEW, content://contacts/1); Questo intent permetterà di visualizzare le informazioni caratteristiche del contatto identificato dal numero 1. Una volta creato l'oggetto è necessario avviare l'activity che possa effettivamente visualizzare queste informazioni. Questa operazione è possibile attraverso: startactivity(intent); L'associazione fra intent e activity avviene grazie alla definizione di un IntentFilter. Esso consiste in una dichiarazione di essere in grado di gestire una determinata richiesta e deve essere specificato nel file AndroidManifest.xml associato a ogni applicazione. L'utilizzo degli 21

22 IntentFilters è particolarmente utile in quanto permette di riutilizzare codice già scritto in precedenza per assolvere dei compiti semplici come ottenere informazioni riguardo un contatto dalla rubrica. È importante anche notare che il chiamante ignora completamente come il compito sia assolto, in quanto conosce solo l'interfaccia pubblicata dall'intentfilter. Service [19] Un Service è un componente dell'applicazione che viene eseguito in background per un periodo di tempo indefinito, e che non ha quindi interazione diretta con l'utente. É importante notare che il codice contenuto in una classe che estende Service è eseguito nel thread principale dell'applicazione. Nel caso in cui siano eseguite operazioni che utilizzano molto la CPU o la connessione a una rete è quindi consigliabile la creazione di un nuovo thread. Come per le activity anche nei Service sono presenti metodi di callback eseguiti in momenti specifici dell'esecuzione. Essi sono ad esempio oncreate(), ondestroy(), dal significato affine a quello specificato per la classe Activity. Vi sono due modi per avviare un service: All'invocazione del metodo Context.startService() una nuova istanza di un service è creata (con il metodo oncreate()) e lanciata ( con il metodo onstart(intent,int)). L'esecuzione prosegue fino alla chiamata del metodo Context.stopService(). Se il metodo Context.onBind() è invocato viene instaurata una connessione persistente a un o specifico servizio il quale, se non esiste già, può venir creato. In questo caso il metodo onstart() non è chiamato. Il chiamante otterrà così un identificativo del Service, cosa che gli permetterà di effettuare richieste. Un Service può essere al tempo stesso avviato con il metodo onstart() e oggetto di connessioni. Esso potrà essere terminato solo quando non ci saranno più connessioni attive e il metodo Context.stopService() non verrà chiamato. Content Provider [20] Gli oggetti di tipo ContentProvider hanno la funzione di garantire l'accesso a dati condivisi da più applicazioni. L'effettiva implementazione del salvataggio dei dati in memoria di massa non è specificato ed è lasciata al programmatore. Tutti i content 22

23 provider però devono implementare interfacce predefinite che specificano il modo col quale le query possono essere effettuate e la modalità di presentazione del risultato. I tipi di dati salvati possono essere di vario tipo 6 : contatti telefonici, file audio e video. Ogni ContentProvider fornisce un URI ai client che vogliono utilizzare i suoi dati; è attraverso questa stringa che è possibile effettuare richieste o inserire dati. Esempio: L'URI content://contacts/people/ permette di ottenere tutti gli elementi della tabella people; invece l'url content://contacts/people/10 ritorna la singola persona identificata dal codice 10. L'inserimento di dati invece avviene specificando oltre a un URI anche una mappa che fa corrispondere alle colonne della tabella relazionale i campi della riga da inserire Altri elementi utilizzati nel progetto Le Mappe Nel tipo di applicazione sviluppata in questo progetto è di fondamentale importanza la visualizzazione di una mappa per permettere all'utente di orientarsi all'interno della città. L'SDK di Android rende possibile l'integrazione di una mappa all'interno dell'applicazione. Per questo scopo è fornita una particolare sottoclasse di Activity chiamata MapActivity. Come per la sua superclasse sarà necessario specificarne il layout attraverso un file xml. Esso, oltre ai normali elementi grafici, conterrà un tag di nome <com.google.android.maps.mapview> che corrisponde a un oggetto della classe MapView, la quale rappresenta la mappa vera e propria. MapView fornisce accesso ai dati di Google Maps, per questo per utilizzarla è necessario possedere una chiave chiamata Maps API Key 7 propria per ogni sviluppatore, che la può usare in tutte le sue applicazioni. Attraverso il metodo ereditato dalla classe Activity findviewbyid() il programmatore può istanziare un oggetto MapView e lavorare su di esso. Molto utile è un classe di supporto chiamata MapController che permette di impostare alcuni parametri della mappa 6 Per consultare l'elenco dei tipi di dato astratti che rappresentano i dati memorizzati in un ContentProvider si veda:

24 quali le coordinate del centro e il livello di ingrandimento. Un oggetto di questo tipo si può ottenere a partire da MapView attraverso il metodo getcontroller(). Il GPS L'SDK di Android mette a disposizione alcune classi per permettere al programmatore di ottenere informazioni riguardanti la posizione attuale del telefono (e quindi del suo proprietario) nel mondo. Lo strumento a disposizione è il rilevatore GPS (Global Positioning System). Esso permette di ottenere le coordinate geografiche del luogo dove si trova il telefono sotto forma di latitudine e longitudine. Realizzare programmi che sfruttino questa potente funzionalità è molto facile nell'ambiente Android. La classe che permette di ottenere le due coordinate è chiamata LocationManager 8 ed è istanziabile nel seguente modo: LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVIC E); Per poter utilizzare questa funzionalità è necessario garantire un permesso particolare all'applicazione specificando nel file AndroidManifest.xml il seguente tag. <uses permission android:name="android.permission.access_fine_location" /> Una volta ottenuto l'oggetto lm da esso è possibile ottenere un'istanza della classe Location. Location loc=lm.getlastknownlocation (LocationManager.GPS_PROVIDER); Location rappresenta un preciso luogo geografico in un determinato momento. Attraverso i due metodi getlatitude() e getlongitude() è possibile ottenere le coordinate del luogo rappresentato. Questa funzionalità può essere testata sull'emulatore anche se non possiede una connessione alla rete GPS. Sarà necessario simulare il funzionamento di un LocationProvier. Ciò è possibile in molti modi: Sotto la voce Location Controls nella finestra Emulator Control della perspective DDMS fornita dal plugin ADT di Eclipse si specificano direttamente le coordinate del luogo desiderato, oppure si fa l'upload di file di formato KML o 8 24

25 GPX contenenti anche molte coordinate. Inviando attraverso un comando telenet direttamente le coordinate all'emulatore. Una volta stabilita la connessione eseguire il seguente comando: geo fix longitude latitude Il DataBase SQLite [21], [22] Un database SQLite è un DBMS relazionale di piccole dimensioni perfetto per essere utilizzato da un'applicazione per smart-phone. Esso non è un processo indipendente che si basa sul paradigma client-server come i normali DBMS quali MySQL (utilizzato in un altro ambito del progetto), ma una libreria parte integrante del programma realizzato. È quindi possibile accedere ai dati memorizzati attraverso semplici chiamate a metodi, molto più veloci rispetto alla comunicazione fra processi. Il database vero e proprio è memorizzato in un file il quale viene messo in lock ogni qualvolta una query viene eseguita. La classe dell'sdk che rappresenta un database SQLite si chiama: SQLiteDatabase. Essa mette a disposizione metodi quali query, delete e update che permettono una completa gestione del database. Di grande utilità è il tipo di dato astratto SQLiteOpenHelper. Esso gestisce le operazioni elementari da eseguire sul database. La classe si occupa ad esempio di aprire il database, o di crearlo se esso non esiste, e di organizzare le transizioni a seguito di upgrade (ad esempio un'aggiunta o una rimozione di una tabella). Due database SQLite sono utilizzati nell'applicazione sviluppata per gestire la memorizzazione delle località frequentate e per permettere il passaggio di parametri riguardanti il percorso generato da un'activity a un'altra. 25

26 3 L'applicazione Questo capitolo ha il fine di descrivere in modo approfondito le caratteristiche fondamentali dell'applicazione sviluppata in questo progetto. Verranno quindi presi in considerazione elementi quali la costruzione del modello della rete dei mezzi pubblici cittadini; l'elaborazione dell'algoritmo di calcolo del percorso più veloce e la presentazione del risultato all'utente. Insieme alle soluzioni implementate verranno presentati anche le problematiche affrontate durante lo sviluppo e come queste sono state superate giungendo alla soluzione realizzata. 3.1 L'architettura dell'applicazione L'applicazione è stata strutturata a livelli. Ognuno di essi raggruppa tipi di dato astratto che hanno funzionalità e scopi simili. Una classe appartenente a un dato livello può comunicare solamente con quelle appartenenti ai livelli contigui. Questa architettura ha diversi vantaggi, apprezzabili soprattutto in fase di sviluppo e testing. Infatti è possibile cambiare l'effettiva implementazione delle classi di un dato livello se si mantiene l'interfaccia che esse presentano agli altri. Questo è evidente per la comunicazione con il database remoto. L'applicazione non è infatti legata al particolare tipo di database usato ma può essere estesa in modo semplice come descritto nel capitolo dedicato. Per quanto riguarda il debugging esso può essere condotto in modo più semplice analizzando un livello per volta. La seguente tabella presenta la struttura dell'architettura. Livello Presentazione Modello della rete dei mezzi pubblici e Algoritmo Rappresentazione del database Elaborazione delle query e Connessione con il Database Classi Principali LocationsInsertion, StopList, Map, Error, RowEntry, EntryView, PlacesOverlays, StopsOverlays, LocalDataBase MetroLines,TramLines,Station,Node,MetroNode, TramNode, Problem, Path, PathCreator DBInterface; RemoteDB SQLQueryUtil, ToSql Le classi in corsivo nel livello Presentazione estendono un'activity. 26

27 3.2 Il modello della rete dei servizi pubblici Per realizzare un algoritmo che computa un percorso fra due luoghi di una città è necessario possedere una struttura completa della rete dei mezzi pubblici. Dovranno quindi essere note le posizioni geografiche di tutte le fermate e il loro numero d'ordine nelle linee che le utilizzano. Uno dei problemi maggiori incontrati durante la progettazione e lo sviluppo è stato proprio ottenere queste informazioni. Con riferimento a Milano, la città utilizzata come esempio, parte di questi dati sono disponibili sul sito dell'azienda locale dei trasporti pubblici: Nel sito è contenuto l'intero elenco delle linee dei mezzi pubblici, le corrispondenti fermate e gli orari. É stato però deciso di non utilizzare questa fonte per molti motivi: L'ATM non mette a disposizione le coordinate geografiche in latitudine e longitudine delle stazioni. Questi dati sono però fondamentali per la determinazione delle distanze. Ovviamente l'accesso al database di back-end dell'applicazione web è precluso ai normali utenti. Recuperare le informazioni di cui si ha bisogno da un sito internet attraverso il parsing di una risposta HTML non è un modo corretto di procedere. La controindicazione più grave riguarda eventuali modifiche che il sito può subire in fase di manutenzione. Queste comporterebbero a una completa riprogettazione del parser. L'ipotesi di utilizzare il sito ATM è stata per questi motivi scartata. Si è quindi cercata un'altra fonte per recuperare i dati necessari, in particolare le coordinate delle stazioni e delle fermate. Si è quindi rivolta l'attenzione a un progetto open-source: OpenStreetMap OpenStreetMap [23] Il progetto OpenStreetMap ha lo scopo di realizzare mappe del mondo attraverso la libera collaborazione di volontari. Per quanto riguarda il recupero di informazioni sulle fermate dei mezzi, quello che interessa non sono le mappe in sé ma piuttosto gli elementi topologici che le compongono. Tutte le cartine di OpenStreetMap sono costruite a partire dai dati contenuti in un database chiamato OSM Database. È possibile interrogare la base di dati effettuando una richiesta HTTP e ottenendo una risposta in formato testuale. I parametri della query da 27

28 inoltrare al database devono essere tutti inseriti nell'url. Un esempio di indirizzo che permette di ottenere informazioni riguardo le stazioni della metropolitana in una zona centrale di Milano è il seguente: [bbox= , , , ] Nell'URL si possono individuare due elementi fondamentali: node: questa parola chiave permette di specificare l'elemento topologico che si intende ricercare nel database. In questo caso vengo cercate stazioni della metropolitana: verrà quindi inserita la parola chiave subway. L'elenco completo degli elementi che possono essere recuperati dal database è consultabile all'indirizzo: bbox: questo predicato è necessario a definire un rettangolo di superficie terrestre nel quale effettuare la ricerca. Esso dovrà essere specificato nella forma: [bbox=left,bottom,right,top], dove i left e right sono gli estremi della latitudine, mentre bottom e top sono gli estremi della longitudine. La risposta dal server è in formato xml; in cui il tag <node> identifica un singolo elemento topografico. Quello riportato di seguito è un passaggio della risposta fornita alla richiesta descritta in precedenza. <node id=' ' lat=' ' lon=' ' user='ilrobi' osmxapi:users='bh3u4m,edom,ilrobi' timestamp=' T13:58:30Z' > <tag k='name' v='mm3 Zara'/> <tag k='railway' v='station'/> </node> Come si nota <node> contiene molte informazioni riguardo la stazione come le coordinate, il nome, la linea e l'identificativo dell'utente di OpenStreetMap che ha inserito il dato. Questa struttura del file xml presenta però molti problemi a essere analizzata da un parser. Non è specificata la linea alla quale la stazione appartiene. Nel caso di esempio essa è stata inserita nel nome, ma questa non è una convenzione: è stata semplicemente la scelta dell'utente. Non esiste infatti un tag xml che identifica la linea. Pur avendo specificato nell'url la variabile subway vengono incluse nella risposta 28

29 stazioni diverse da quelle della metropolitana. Non è possibile stabilire un ordinamento delle stazioni; non vi è presente infatti nessuna informazione riguardo la posizione della fermata all'interno della linea. In definitiva l'insieme dei tag messi a disposizione per la specifica dei luoghi rilevanti è a nostro giudizio insufficiente per effettuare un'analisi programmatica dei file xml forniti. Per questa ragione è stata scartata l'ipotesi di utilizzare OpenStreetMap come database. Per risolvere il problema del reperimento di informazioni è stato deciso di creare un database costruito appositamente per le nostre esigenze. Esso non conterrà l'insieme di tutte le linee di tram o metropolitana ma solo una piccola parte. Le tratte coperte saranno però complete, ovvero da esso sarà possibile costruire il modello. Oltre alle informazioni topologiche su fermate e stazioni esso conterrà dati riguardo gli orari dei mezzi e eventuali interruzioni sulle linee Il Database Il database è di tipo relazionale ed è stato realizzato utilizzando la tecnologia MySql. La base di dati è composta di molte tabelle, ognuna delle quali rappresenta un particolare insieme elementi per la costruzione del modello. Qui di seguito è riportato il codice SQL che definisce la strutture delle tabelle. Metro Stops e Tram Stops Queste due tabelle sono simili fra loro in quanto rappresentano e mantengono in memoria le informazioni riguardanti rispettivamente le stazioni della metropolitana e le fermate del tram. create table metro_stops ( stop_name varchar(28) not null, line tinyint not null, stop_number smallint not null, latitude real not null, longitude real not null, terminal boolean not null, branch boolean not null, primary key (stop_name,line)); 29

30 create table tram_stops ( stop_name varchar(28) not null, line tinyint not null, stop_number smallint not null, latitude real not null, longitude real not null, terminal boolean not null, primary key (stop_name,line)); Oltre al nome e alla linea a cui appartiene la fermata sono memorizzati il numero della fermata all'interno della linea, le coordinate geografiche in latitudine longitudine, un flag per segnalare se la fermata è un capolinea e uno per indicare la presenza in quella stazione di diramazioni della linea. La chiave è composta dai due campi stop_name e line. Due aspetti sono da evidenziare riguardo questa scelta di salvataggio dei dati. Il primo riguarda le stazioni comuni a più linee. Per ognuna di essa saranno presenti nel database tante entry quante sono le linee che usano quella fermata. Ognuna di queste si distinguerà dalle altre solo per il campo line. Il secondo aspetto riguarda la numerazione delle fermate in corrispondenza di biforcazioni di una linea (cosa che a Milano avviene per due tratte della metropolitana). In questi casi la numerazione continua in modo progressivo aggiungendo al numero computato nella maniera normale una cifra in più. Essa sarà 0 per la prima biforcazione (la quale è scelta in modo arbitrario), 1 per la seconda, 2 per la terza e così via. Questa scelta permette di mantenere un ordine crescente nella numerazione delle fermate. 30

31 Time Table La tabella Time Table memorizza per ogni fermata del tram gli orari dei passaggi. Il database non rispecchia il reale orario dei tram in quanto esso è stato realizzato a puro scopo dimostrativo. create table time_table( stop_name varchar(28) not null, line tinyint not null, summer boolean not null, working_day boolean not null, hour_of_day tinyint not null, minutes varchar(50) not null, primary key (stop_name, line,summer,working_day), foreign key (stop_name,line) references tram_stops(stop_name,line) on update cascade on delete cascade); I due campi stop_name e line sono necessari per individuare in modo univoco la fermata alla quale ci si riferisce. I due flag summer e working_day servono a discriminare fra orario estivo ed invernale e fra giorno festivo e feriale. hour_of_day identifica l'ora all'interno della quale si intende prendere il tram. In corrispondenza di ogni ora è salvata una stringa al cui interno sono salvati i minuti dei passaggi sotto forma di interi separati da virgole. Effettuando una query a questa tabella si otterranno quindi i minuti dei passaggi del tram per l'ora desiderata. 31

32 Metro Problem e Tram Problem Queste due tabelle della base di dati memorizzano le informazioni riguardanti eventuali problemi sulle linee di tram e metro. create table metro_problem( first_stop_name varchar(28) not null, last_stop_name varchar(28) not null, line tinyint not null, start_date date not null, end_date date not null, start_time time not null, end_time time not null, description varchar(100), primary key (line,start_date,first_stop_name,last_stop_name), foreign key (first_stop_name, line) references metro_stops(stop_name,line) on update cascade on delete cascade, foreign key (last_stop_name, line) references metro_stops(stop_name,line) on update cascade on delete cascade) Per poter individuare in modo preciso i differenti problemi che possono verificarsi sono qui memorizzate la prima e l'ultima stazione in cui l'inconveniente si verifica (in caso di uno sciopero saranno i due capolinea). Vi sono poi i riferimenti alle date e agli orari di inizio di fine presunta del malfunzionamento o dello sciopero. 32

33 Per simulare in modo realistico la presenza di un sito remoto dal quale tutte le informazioni sopra riportate sono recuperate è stata creata un'applicazione web che funge da interfaccia al database. Non è quindi possibile effettuare delle query direttamente alla base di dati; esse verranno inoltrate dall'applicazione sullo smart-phone alla web-application la quale le interpreterà e le inoltrerà al server MySql fornendo poi il risultato. Questo è stato realizzato utilizzando la tecnologia Servlet di Java [24]. Una servlet è un oggetto eseguibile da un application-server che svolge una specifica funzione a seguito di una richiesta. Nell'applicazione server qui sviluppata la classe QuerySrv, estendendo HTTPServlet, avrà il compito di interpretare le richieste del client e interrogare il database. La richiesta HTTP proveniente dal client dovrà contente i parametri per poter effettuare la richiesta SQL. Essi sono 4 e corrispondono ai campi di una query SQL: select, from, where e order by. La classe di supporto DBUtil avrà il compito di effettuare la richiesta vera e propria. Il collegamento fra la business-logic e i dati è permesso dalle classi dell'api JDBC (Java DataBase Connectivity) [25]. Viene ora presentata la procedura utilizzata per accedere e interrogare il server MySql. La classe JDBC che permette l'accesso al database è chiamata Connection. Per ottenerne un'istanza è necessario possedere un account sul server MySql (ovvero un username ed una password) e conoscere la porta sulla quale esso è in ascolto. Il tipo di dato astratto Statement rappresenta un'istruzione in codice Sql che viene inoltrata al database a cui si è connessi. É possibile ottenere un oggetto di questo tipo invocando il metodo connection.createstatement() una volta avvenuto il collegamento con il server. L'istruzione da eseguire verrà specificata attraverso il metodo statement.execute() o statement.executequery() sotto forma di String a partire dai dati forniti in input dall'utente attraverso l'oggetto request. Il risultato delle query effettuate sarà del tipo ResultSet. Esso verrà quindi scansionato per ottenerne una String. Per identificare i campi delle differenti colonne in fase di lettura essi sono divisi fra di loro da un simbolo separatore convenzionale. La stringa testuale così elaborata sarà quindi la risposta alla richiesta effettuata. La risposta arriverà quindi al client in formato testuale in modo che se ne possa effettuare il parsing in modo semplice. 33

34 3.2.3 La struttura del modello La classe fondamentale per la costruzione del modello si chiama Station. Essa eredita dalla classe dell'sdk Location contenuta nel package android.location descritta in precedenza. Questo permette di riutilizzare attributi e metodi della superclasse senza re implementarne di nuovi. In particolare verranno utilizzati i metodi set e get degli attributi double latitude e longitude; e il metodo float distanceto(location dest). Esso ritorna la distanza in metri fra la località che lo implementa e quella passata come parametro. Si rivelerà molto utile nella elaborazione del percorso più breve. La classe Station aggiunge quindi a questi attributi variabili per la memorizzazione dei dati ricavati dalla lettura del database. Essi sono: private String name; private int line; private int number; private boolean terminal; private boolean branch; Una volta rappresentate le stazioni è necessario costruire un modello per le linee dei diversi tipi di mezzi pubblici. A questo scopo sono state introdotte le due classi MetroLines e TramLines. Esse possiedono gli attributi tram_stops e metro_stops i quali sono del tipo ArrayList<Station>. Queste due liste conterranno quindi tutte le istanze della classe Station utili per la determinazione del percorso da compiere. È da notare che le due liste contengono tutte le stazioni (o della metropolitana o dei tram), non vi è quindi distinzione fra le differenti linee. Inoltre l'ordine con il quale le stazioni sono raccolte non rispecchia la successione delle fermate su una linea; ma l'ordinamento alfabetico. La struttura sopra descritta è riassunta nel seguente schema UML. 34

35 6: La struttura del Modello 35

36 3.2.4 La comunicazione con il Database La classe che mette a disposizione i metodi per la comunicazione con il database è chiamata ToSql. Essa implementa l'interfaccia DBInterface la quale contiene tutti i metodi pubblici indispensabili per il recupero delle informazioni necessarie. I metodi della classe ToSql non possono essere chiamati direttamente dalle classi di livello più alto. Al loro posto devono essere invocati quelli di RemoteDB, che implementa anch'esso l'interfaccia DBInterface. Questo è stato fatto in quanto non si è voluto legare il funzionamento dei livelli superiori dell'applicazione a una specifica implementazione del collegamento con il database. Infatti se si decidesse di sostituire la classe ToSql si dovrebbe cambiare solo una riga di codice nella classe RemoteDB mentre le classi ai livelli superiori rimarrebbero invariate. Nel costruttore delle classi che compongono il modello quali TramLines e MetroLines vi sarà quindi un'invocazione di un metodo di RemoteDB che chiamerà a sua volta ToSql per ottenere le informazioni richieste. In ogni metodo di RemoteDB è presente un'invocazione del corrispondente in ToSql. Per evitare la creazione di oggetti di tipo RemoteDB che risulterebbero inutili ai fini pratici questa classe implementa il pattern architetturale chiamato Singleton [26]. Il quale prevede di nascondere il costruttore di una classe e rendere pubblico solo il metodo getinstance() che ritorna un nuovo oggetto o fornire un riferimento a quello già esistente. Viene qui di seguito descritta la procedura, implementata dalla classe ToSql, con la quale è possibile effettuare richieste a un server attraverso il protocollo HTTP. Ciò è garantito dalle classi del package dell'sdk org.apache.http. La classe DefaultHttpClient identifica un generico client HTTP. È attraverso di essa che possono quindi essere inoltrate le richieste ed ottenere le risposte. Il tipo HttpPost identifica una request inoltrata al metodo POST del protocollo, mentre HttpResponse rappresenta ovviamente la risposta ritornata. Una volta inizializzati gli oggetti di tipo DefaultHttpClient e HttpPost è necessario inserire nella richiesta i dati di input, ovvero i parametri della query. A questo scopo si utilizza la classe NameValuePair, una mappa che fa corrispondere due stringhe fra loro: ovvero il nome ed il valore di un parametro. É possibile ora inoltrare la richiesta che verrà elaborata dalla servlet descritta in precedenza. Il metodo per fare ciò è: http_client.execute(request). L'oggetto 36

37 HttpResponse ritornato è quindi trasformato in una String ed è pronto per essere analizzato. 37

38 7: La comunicazione con il DataBase 38

39 Per meglio visualizzare il procedimento di costruzione del modello della rete dei mezzi pubblici e mettere in evidenza la suddivisione in livelli viene presentato il seguente sequence diagam. 8: Sequence diagram della costruzione del modello 39

40 3.3 L'algoritmo di calcolo del percorso consigliato Introduzione L'algoritmo di calcolo del percorso è la parte del programma che genera l'itinerario attraverso le linee di metro e tram per raggiungere punto prestabilito dall'utente. L'algoritmo è contenuto nella classe PathCreator e il percorso viene generato attraverso il metodo: PathCreator.generatePath(double from_x, double from_y, double to_x, double to_y). generatepath() prende in input le coordinate x (longitudine) e y (latitudine) rispettivamente di origine e destinazione e ritorna una lista delle stazioni di snodo che l'utente deve attraversare per raggiungere una destinazione. Vengono qui definite stazioni snodo quelle in cui si incrociano più linee di mezzi pubblici. Esse permettono quindi di cambiare linea in modo da utilizzare la migliore per raggiungere il punto desiderato La modellizzazione delle stazioni Per rappresentare nel modo migliore una stazione di snodo l'algoritmo utilizza la classe Node. Essa permette di gestire la relazione tra le differenti linee che attraversano una stazione di scambio. In particolare sono mantenuti riferimenti, sotto forma di array, ai numeri delle linee che si incrociano e al numero d'ordine della stazione all'interno della linea. La classe Node è estesa da MetroNode e TramNode; le quali identificano rispettivamente uno snodo per la metropolitana e per il tram. Questa struttura introdotta semplifica il calcolo dei percorsi racchiudendo l'interconnessione tra le varie linee dei mezzi in un'unica classe. Si rende così semplice ottenere informazioni riguardanti la presenza o meno di una linea in una determinata stazione, il fatto che che ci sia una deviazione e il numero d'ordine. 40

41 9: La classe Node e le sue sottoclassi Ecco una generale spiegazione su ogni metodo delle classi: getstations() ritorna un ArrayList<Station> contenente una Station per ogni linea presente in quel nodo. getstation(int line) ritorna l'oggetto Station relativo alla linea passata come parametro. getstationnumber(int line) ritorna il numero della stazione rappresentata dall'oggetto Node sulla linea line. addstation(station st) aggiunge una linea a un nodo. Come parametro viene fornito un oggetto di tipo Station che rappresenta la stazione sulla linea. Questo metodo è oggetto di override nella classe MetroNode in quando le linee della metropolitana possiedono delle biforcazioni e si deve quindi gestire in modo corretto il numero d'ordine. hasline(int line) ritorna un boolean che identifica la presenza o meno di una linea sul nodo sulla quale è chiamato. La classe MetroNode inoltre ha due metodi in più: isdeviation(int line) ritorna un boolean indicante se il MetroNode è o meno una biforcazione di linea sulla linea passata come parametro. Per esempio, con 41

42 riferimento a Milano, la città presa in considerazione, Cascina Gobba è una biforcazione sulla linea della metro 2 e una chiamata a gobba_node.isdeviation(2) ritornerebbe true. getbranch(int line) ritorna un intero: il numero del ramo in cui la stazione si trova sulla linea passata come parametro. Se la stazione non si trova su alcun ramo verrà ritornato il valore 0. Come esempio la stazione di Cologno Nord si trova sul ramo 1 della linea 2, quindi una ipotetica chiamata a cologno_node.getbranch(2) ritornerebbe 1. Entrambe le sottoclassi MetroNode e TramNode hanno poi un attributo public, chiamato LINES_NUMBER di tipo int, che specifica il numero di linee totali rispettivamente sul sistema delle metro e sul sistema dei tram considerato La scelta del mezzo e del percorso I mezzi a disposizione dell'utente sono due: Metropolitana e Tram. L'algoritmo tende sempre e comunque di preferire il mezzo che riduce al minimo il percorso a piedi dell'utente. Esso è calcolato in base alla distanza che separa il viaggiatore dalla fermata più vicina l'ultima fermata dalla destinazione. L'algoritmo supporta anche la generazione di percorsi misti, ossia con cambio di mezzo da tram a metro o viceversa. Si introduce qui una semplificazione che prevede che sia possibile effettuare un solo cambio di mezzo, in quanto cambiare più volte può essere oneroso per l'utente. Il criterio che l'algoritmo segue per la generazione dei percorsi misti è il medesimo seguito per i percorsi semplici, ossia la riduzione al minimo del percorso a piedi dell'utente. Per esempio, se la destinazione si trova vicino a una stazione della metropolitana e l'utente è vicino a una fermata del tram allora verrà generato un percorso misto che prevederà il tram come primo mezzo e terminerà con la metro. Questo sempre che la differenza di distanza tra la stazione terminale di tram e metro sia sufficientemente ampia, altrimenti viene scelto un percorso semplice. Come già indicato, il percorso viene calcolato dal metodo generatepath(double from_x, double from_y, double to_x, double to_y), che ritorna al chiamante un ArrayList<Station> contenente tutti i punti di scambio da effettuare sulla rete di trasporto. 42

43 Ad esempio, se il percorso comporta la partenza dalla stazione di San Babila linea 1 e l'arrivo a Centrale FS linea 3 sulla rete metropolitana l'arraylist ritornato conterrà gli oggetti Station rappresentanti le stazioni di partenza e arrivo (San Babila L1 e Centrale FS L3) rispettivamente come primo e ultimo elemento della lista, e poi tutte le stazioni di scambio tra una linea e l'altra che, nel caso descritto sarebbe semplicemente Duomo. 10: Esempio di percorso Nell'ArrayList vengono anche specificati i passaggi attraverso determinate diramazioni (come ad esempio Cascina Gobba) che, anche se non sono stazioni di partenza, arrivo o di scambio, vengono comunque inserite all'interno del percorso per rendere chiari eventuali scambi da effettuare. La metodo generatepath() non è il principale attore del calcolo del percorso. Esso si occupa principalmente di trovare le stazioni più vicine e di decidere quale mezzo adottare per raggiungere la destinazione in base al criterio del percorso a piedi più breve. Il calcolo vero e proprio viene delegato a due metodi privati: getnearestmetro(location l) e getnearesttram(location l). Essi prendono in input la posizione di partenza o destinazione dell'utente e ritornano un oggetto di tipo Node che rappresenta la fermata del tram o della metropolitana più vicina. In mancanza di informazioni riguardanti il tragitto che è possibile effettuare a piedi per determinare la distanza viene utilizzato il metodo di Location distanceto(location l) ereditato dalle classi Metro e TramStation e descritto in precedenza (3.2.3). Il lavoro di generazione del percorso vero e proprio è lasciato quindi a due metodi privati : 43

44 metropathcalculation(metronode metro_start, MetroNode metro_end) e trampathcalculation(tramnode tram_start, TramNode tram_end) i quali ritornano un oggetto del tipo Path. Esso è semplicemente un contenitore per il percorso generato da PathCreator e viene usato solo internamente alla classe stessa. La classe Path contiene al suo interno tre attributi di tipo public: ArrayList<Station> path: una lista contenente le stazioni del percorso. E' ciò che, a fine computazione, viene ritornato al chiamante di generatepath(); int cost: il costo del percorso in numero di stazioni; int original_line: questo valore indica, nel caso di percorso ancora incompleto, la linea da cui viene raggiunta la prima stazione del percorso. Se il percorso è completo allora questo valore è 0. I metodi metropathcalculation() e trampathcalculation() generano il percorso in maniera ricorsiva richiamandosi continuamente fino al raggiungimento della destinazione. A ogni chiamata il metodo controlla se la stazione di destinazione sta sulla stessa linea di quella di partenza. Questo è il caso base e il percorso generato comprende, banalmente, la stazione di partenza ed arrivo. Quando ciò non avviene vengono raccolte tutte le stazioni di snodo (stazioni in cui sono presenti più di una linea di metro, come Centrale FS o Duomo) e, per ognuna di esse viene richiamato il metodo di calcolo del percorso, impostando come punto di arrivo sempre la destinazione e come punto di partenza la stazione di snodo che si sta considerando. A questo punto il metodo si ripete fino a che non viene trovata una stazione di snodo che ha la stessa linea della stazione di arrivo. Visto che il metodo viene chiamato più volte (una volta per ogni stazione di snodo nel caso in cui il percorso non sia banale) i percorsi generati saranno più d'uno. In base al costo (il criterio adottato è il più semplice, ovvero il numero di stazioni percorse) viene selezionato il percorso più breve e ritornato. Per quanto riguarda i percorsi misti vengono di fatto calcolati due percorsi differenti chiamando quindi una volta la metropathcalculation() e una volta trampathcalculation(). Le due funzioni vengono chiamate per creare due percorsi, uno di metro e uno di tram, per 44

45 raggiungere prima, dalla stazione di partenza, un punto di raccordo e poi, dal punto di raccordo, la destinazione. Il punto di raccordo tra le due tipologie di mezzi differenti viene calcolato attraverso la ricerca di due nodi vicini dai quali è possibile passare facilmente da un mezzo all'altro. Ovviamente viene considerato che la distanza in più che il passaggio da un mezzo all'altro può comportare può rendere sconveniente l'utilizzo di un percorso misto, per questa ragione viene considerato un percorso misto solo se ci sono due nodi di passaggio tra tram e metro sufficientemente vicini. Nel calcolo del punto di raccordo viene usato il metodo privato findnearest(collection<metronode>, Collection<TramNode>) che prende in input due liste di nodi, rispettivamente di tram e metro e ritorna la coppia di nodi più vicini nelle due liste. Le liste passate alla funzione sono rispettivamente la lista composta da tutte le stazioni della metro e delle stazioni del tram presenti sulle linee della stazione dalla quale il tram parte o arriva (a seconda che il percorso misto preveda la partenza o l'arrivo col tram) L'individuazione dei malfunzionamenti Le reti pubbliche possono essere soggette a malfunzionamenti di varia natura. L'applicazione si assume il compito di individuare eventuali problemi sulle linee. Essi sono recuperati dalla base di dati remota come e sono organizzati nel modo descritto nel capitolo Nel caso in cui il percorso migliore non si disponibile il software si fa carico di elaborare un percorso alternativo. L'individuazione di guasti o scioperi è delegata al metodo private hasproblem(path path). La funzione viene chiamato ogni volta che è generato un percorso dai metodi di generazione precedentemente presentati. Il percorso elaborato ricevuto in ingresso è quindi suddiviso in tratti in relazione al mezzo e alla linea utilizzati. Su ognuno di essi è invocato il metodo del livello sottostante di comunicazione con il database getproblem(). Esso riceve in ingresso la prima e l'ultima fermata del tratto che si intende percorrere su una determinata linea e l'ora attuale. La query effettuata al database tiene conto di questi elementi per valutare la presenza o meno di inconvenienti. In particolare si verifica che non ci siano problemi su tutte le stazioni del percorso nell'orario indicato. Nel caso si riscontrino malfunzionamenti o scioperi viene ritornato un oggetto del tipo Problem. Esso conterrà il 45

46 tratto bloccato e una descrizione del problema. Se, al contrario, tutto è funzionante getproblem() ritorna null. L'informazione sul problema così ottenuta viene poi usata per scegliere il percorso alternativo fra quelli disponibili. Al verificarsi di un inconveniente molto grave, e su più linee, che impedisce il raggiungimento della destinazione viene generata una ProblemOnEveryPathException. In questo caso l'utente viene informato dell'impossibilità di utilizzare i mezzi attraverso una finestra di pop-up. 46

47 3.4 Interfaccia grafica ed Esempio di utilizzo L'inserimento dei dati La prima parte schermata dell'interfaccia grafica, implementata dall'activity LocationsInsertion, è necessaria all'inserimento dei dati utili per il calcolo del percorso: ovvero la località di partenza e di destinazione. L'interfaccia è riportata nella figura seguente. 11: La schermata di Input Per l'inserimento della partenza sono a disposizione dell'utente due modalità di input: la specifica delle via dalla quale intende partire oppure l'utilizzo del dispositivo GSP. Con la prima possibilità l'utente deve inserire il nome della via e della città dalla quale intende partire. L'SDK di Android mette a disposizione nel package android.location la classe GeoCoder [27] che possiede metodi utili per la gestione degli indirizzi. In questo conteso con il verbo GeoCoding si intende il processo di ottenere le coordinare geografiche latitudine e longitudine a partire da un identificativo di una località. Mentre Reverse Goecoding è il procedimento opposto il quale parte dalle coordinate per ottenere un indirizzo. In questa Activity sono utilizzati entrambi. Ecco come: l'indirizzo fornito in input 47

48 dall'utente è convertito attraverso il metodo getfromlocationname(string,int). Esso, dati in input il nome della strada e il numero massimo di risultati che si intende ottenere, fornisce un ArrayList di Address. Questa classe identifica un indirizzo e contiene, oltre alle coordinate geografiche, il nome della via, città, provincia e nazione. Il metodo descritto può lavorare anche se riceve in ingresso una parte di un indirizzo; ovviamente non potrà ritornare un'unica località ma fornirà l'insieme che più si avvicina alla descrizione fornita. In questi casi, quando vi è un'incertezza sull'effettiva località, è mostrata all'utente una lista delle possibili scelte. Starà quindi a lui il compito di selezionare la desiderata. Se l'indirizzo dal quale si intende partire non è presente nemmeno nell'elenco sarà necessario aumentare la precisione della descrizione fornita. Un esempio dell'elenco fornito all'utente è riportato nella figura seguente: 12: La scelta fra diverse opzioni Per rendere più semplice e veloce l'input da parte dell'utente vengono mantenute in memoria e presentate in fase di inserimento le località richieste in precedenza. Questo è stato fatto utilizzando il database SQLite messo a disposizione dall'sdk di Android 9. Se invece ci si trova già nel luogo dal quale si vuole partire è possibile utilizzare il GPS 9 Esso è descritto nel capitolo: Altri elementi utilizzati nel progetto 48

49 (2.2.4). Il rilevatore calcolerà la posizione geografica fornendo le coordinate latitudine e longitudine. Con il processo di Reverse GeoCoding messo a disposizione dal metodo getfromlocation(double,double,int) è possibile ottenere un'istanza della classe Address che rappresenta il luogo nel quale ci si trova. Per notificare all'utente il successo dell'operazione è mostrato in output una finestra di pop-up con l'indirizzo ottenuto. 13: L'utilizzo del dispositivo GPS Una volta terminata con successo la fase di inserimento dell'indirizzo della partenza è ora necessario specificare la destinazione. Questo è possibile nella parte inferiore della schermata; dove è necessario inserire l'indirizzo. Nel caso di incertezza il comportamento è identico a quello del primo inserimento. Solo una volta completata la fase di input è possibile proseguire con l'utilizzo dell'applicazione. 49

Cross Software ltd Malta Pro.Sy.T Srl. Il gestionale come l'avete sempre sognato... Pag. 1

Cross Software ltd Malta Pro.Sy.T Srl. Il gestionale come l'avete sempre sognato... Pag. 1 Il gestionale come l'avete sempre sognato... Pag. 1 Le funzionalità di X-Cross La sofisticata tecnologia di CrossModel, oltre a permettere di lavorare in Internet come nel proprio ufficio e ad avere una

Dettagli

Talento LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) L'UTILIZZO DI ALTRI SERVIZI INTERNET. In questa lezione imparerete a:

Talento LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) L'UTILIZZO DI ALTRI SERVIZI INTERNET. In questa lezione imparerete a: Lab 4.1 Utilizzare FTP (File Tranfer Protocol) LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) In questa lezione imparerete a: Utilizzare altri servizi Internet, Collegarsi al servizio Telnet, Accedere

Dettagli

INFORMATIVA SUI COOKIE

INFORMATIVA SUI COOKIE INFORMATIVA SUI COOKIE I Cookie sono costituiti da porzioni di codice installate all'interno del browser che assistono il Titolare nell erogazione del servizio in base alle finalità descritte. Alcune delle

Dettagli

Ciclo di vita delle aevità Android Mobile Programming Prof. R. De Prisco

Ciclo di vita delle aevità Android Mobile Programming Prof. R. De Prisco Ciclo di vita delle aevità Ogni AcHvity ha dei metodi standard A(vità non esiste 1. oncreate() 2. onstart() 3. onresume() A(vità in esecuzione 4. onpause() 5. onstop() 6. ondestroy() A(vità non esiste

Dettagli

DynDevice ECM. La Suite di applicazioni web per velocizzare, standardizzare e ottimizzare il flusso delle informazioni aziendali

DynDevice ECM. La Suite di applicazioni web per velocizzare, standardizzare e ottimizzare il flusso delle informazioni aziendali DynDevice ECM La Suite di applicazioni web per velocizzare, standardizzare e ottimizzare il flusso delle informazioni aziendali Presentazione DynDevice ECM Cos è DynDevice ICMS Le soluzioni di DynDevice

Dettagli

Privacy Policy del sito http://www.plastic-glass.com

Privacy Policy del sito http://www.plastic-glass.com Cos'è una PRIVACY POLICY Privacy Policy del sito http://www.plastic-glass.com Questo documento, concernente le politiche di riservatezza dei dati personali di chi gestisce il sito Internet http://www.plastic-glass.com

Dettagli

Simplex Gestione Hotel

Simplex Gestione Hotel Simplex Gestione Hotel Revisione documento 01-2012 Questo documento contiene le istruzioni per l'utilizzo del software Simplex Gestione Hotel. E' consentita la riproduzione e la distribuzione da parte

Dettagli

Guida Dell di base all'acquisto dei server

Guida Dell di base all'acquisto dei server Guida Dell di base all'acquisto dei server Per le piccole aziende che dispongono di più computer è opportuno investire in un server che aiuti a garantire la sicurezza e l'organizzazione dei dati, consentendo

Dettagli

Le Reti Informatiche

Le Reti Informatiche Le Reti Informatiche modulo 10 Prof. Salvatore Rosta www.byteman.it s.rosta@byteman.it 1 Nomenclatura: 1 La rappresentazione di uno schema richiede una serie di abbreviazioni per i vari componenti. Seguiremo

Dettagli

FileMaker Server 13. Guida introduttiva

FileMaker Server 13. Guida introduttiva FileMaker Server 13 Guida introduttiva 2007-2013 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 Stati Uniti FileMaker e Bento sono marchi

Dettagli

FIRESHOP.NET. Gestione Utility & Configurazioni. Rev. 2014.3.1 www.firesoft.it

FIRESHOP.NET. Gestione Utility & Configurazioni. Rev. 2014.3.1 www.firesoft.it FIRESHOP.NET Gestione Utility & Configurazioni Rev. 2014.3.1 www.firesoft.it Sommario SOMMARIO Introduzione... 4 Impostare i dati della propria azienda... 5 Aggiornare il programma... 6 Controllare l integrità

Dettagli

Documentazione Servizio SMS WEB. Versione 1.0

Documentazione Servizio SMS WEB. Versione 1.0 Documentazione Servizio SMS WEB Versione 1.0 1 Contenuti 1 INTRODUZIONE...5 1.1 MULTILANGUAGE...5 2 MESSAGGI...7 2.1 MESSAGGI...7 2.1.1 INVIO SINGOLO SMS...7 2.1.2 INVIO MULTIPLO SMS...9 2.1.3 INVIO MMS

Dettagli

HORIZON SQL CONFIGURAZIONE DI RETE

HORIZON SQL CONFIGURAZIONE DI RETE 1-1/9 HORIZON SQL CONFIGURAZIONE DI RETE 1 CARATTERISTICHE DI UN DATABASE SQL...1-2 Considerazioni generali... 1-2 Concetto di Server... 1-2 Concetto di Client... 1-2 Concetto di database SQL... 1-2 Vantaggi...

Dettagli

Sempre attenti ad ogni dettaglio Bosch Intelligent Video Analysis

Sempre attenti ad ogni dettaglio Bosch Intelligent Video Analysis Sempre attenti ad ogni dettaglio Bosch Intelligent Video Analysis 2 Intervento immediato con Bosch Intelligent Video Analysis Indipendentemente da quante telecamere il sistema utilizza, la sorveglianza

Dettagli

Introduzione ad Access

Introduzione ad Access Introduzione ad Access Luca Bortolussi Dipartimento di Matematica e Informatica Università degli studi di Trieste Access E un programma di gestione di database (DBMS) Access offre: un supporto transazionale

Dettagli

UML: Class Diagram. Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it

UML: Class Diagram. Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it UML: Class Diagram Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Università di Catania Class Diagram Forniscono una vista strutturale

Dettagli

Manuale Utente. S e m p l i c e m e n t e D a t i M i g l i o r i!

Manuale Utente. S e m p l i c e m e n t e D a t i M i g l i o r i! Manuale Utente S e m p l i c e m e n t e D a t i M i g l i o r i! INDICE INDICE... 3 INTRODUZIONE... 3 Riguardo questo manuale...3 Informazioni su VOLT 3 Destinatari 3 Software Richiesto 3 Novità su Volt...3

Dettagli

Introduzione al GIS (Geographic Information System)

Introduzione al GIS (Geographic Information System) Introduzione al GIS (Geographic Information System) Sommario 1. COS E IL GIS?... 3 2. CARATTERISTICHE DI UN GIS... 3 3. COMPONENTI DI UN GIS... 4 4. CONTENUTI DI UN GIS... 5 5. FASI OPERATIVE CARATTERIZZANTI

Dettagli

AUL22: FactoryTalk View SE Scoprite i vantaggi chiave di una soluzione SCADA integrata

AUL22: FactoryTalk View SE Scoprite i vantaggi chiave di una soluzione SCADA integrata AUL22: FactoryTalk View SE Scoprite i vantaggi chiave di una soluzione SCADA integrata Giampiero Carboni Davide Travaglia David Board Rev 5058-CO900C Interfaccia operatore a livello di sito FactoryTalk

Dettagli

GESTIONE DELLA E-MAIL

GESTIONE DELLA E-MAIL GESTIONE DELLA E-MAIL Esistono due metodologie, completamente diverse tra loro, in grado di consentire la gestione di più caselle di Posta Elettronica: 1. tramite un'interfaccia Web Mail; 2. tramite alcuni

Dettagli

Informatica per la comunicazione" - lezione 9 -

Informatica per la comunicazione - lezione 9 - Informatica per la comunicazione" - lezione 9 - Protocolli di livello intermedio:" TCP/IP" IP: Internet Protocol" E il protocollo che viene seguito per trasmettere un pacchetto da un host a un altro, in

Dettagli

Guida introduttiva. Installazione di Rosetta Stone

Guida introduttiva. Installazione di Rosetta Stone A Installazione di Rosetta Stone Windows: Inserire il CD-ROM dell'applicazione Rosetta Stone. Selezionare la lingua dell'interfaccia utente. 4 5 Seguire i suggerimenti per continuare l'installazione. Selezionare

Dettagli

Come difendersi dai VIRUS

Come difendersi dai VIRUS Come difendersi dai VIRUS DEFINIZIONE Un virus è un programma, cioè una serie di istruzioni, scritte in un linguaggio di programmazione, in passato era di solito di basso livello*, mentre con l'avvento

Dettagli

Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone. SQL: il DDL

Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone. SQL: il DDL Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone SQL: il DDL Parti del linguaggio SQL Definizione di basi di dati (Data Definition Language DDL) Linguaggio per modificare

Dettagli

iphone in azienda Guida alla configurazione per gli utenti

iphone in azienda Guida alla configurazione per gli utenti iphone in azienda Guida alla configurazione per gli utenti iphone è pronto per le aziende. Supporta Microsoft Exchange ActiveSync, così come servizi basati su standard, invio e ricezione di e-mail, calendari

Dettagli

FileMaker Server 13. Pubblicazione Web personalizzata con PHP

FileMaker Server 13. Pubblicazione Web personalizzata con PHP FileMaker Server 13 Pubblicazione Web personalizzata con PHP 2007-2013 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 Stati Uniti FileMaker

Dettagli

CA Process Automation

CA Process Automation CA Process Automation Glossario Release 04.2.00 La presente documentazione, che include il sistema di guida in linea integrato e materiale distribuibile elettronicamente (d'ora in avanti indicata come

Dettagli

FileMaker Server 12. Guida introduttiva

FileMaker Server 12. Guida introduttiva FileMaker Server 12 Guida introduttiva 2007 2012 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker e Bento sono marchi di FileMaker,

Dettagli

Manuale Software. www.smsend.it

Manuale Software. www.smsend.it Manuale Software www.smsend.it 1 INTRODUZIONE 3 Multilanguage 4 PANNELLO DI CONTROLLO 5 Start page 6 Profilo 7 Ordini 8 Acquista Ricarica 9 Coupon AdWords 10 Pec e Domini 11 MESSAGGI 12 Invio singolo sms

Dettagli

Internet Internet è universalmente nota come la Rete delle reti: un insieme smisurato di computer collegati tra loro per scambiarsi dati e servizi.

Internet Internet è universalmente nota come la Rete delle reti: un insieme smisurato di computer collegati tra loro per scambiarsi dati e servizi. Internet Internet è universalmente nota come la Rete delle reti: un insieme smisurato di computer collegati tra loro per scambiarsi dati e servizi. Internet: la rete delle reti Alberto Ferrari Connessioni

Dettagli

Analisi dei requisiti e casi d uso

Analisi dei requisiti e casi d uso Analisi dei requisiti e casi d uso Indice 1 Introduzione 2 1.1 Terminologia........................... 2 2 Modello della Web Application 5 3 Struttura della web Application 6 4 Casi di utilizzo della Web

Dettagli

Posta Elettronica. Claudio Cardinali claudio@csolution.it

Posta Elettronica. Claudio Cardinali claudio@csolution.it Posta Elettronica Claudio Cardinali claudio@csolution.it Posta Elettronica: WebMail Una Webmail è un'applicazione web che permette di gestire uno o più account di posta elettronica attraverso un Browser.

Dettagli

FileMaker Server 13. Guida di FileMaker Server

FileMaker Server 13. Guida di FileMaker Server FileMaker Server 13 Guida di FileMaker Server 2010-2013 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 Stati Uniti FileMaker e Bento sono

Dettagli

FASE DEBUGGING: Compiler Linker. controllando che la voce Genera le informazioni per il debug cioè. "Generate debugging information"

FASE DEBUGGING: Compiler Linker. controllando che la voce Genera le informazioni per il debug cioè. Generate debugging information FASE DEBUGGING: Prima della compilazione, si devono inserire 1 nel progetto informazioni per il debug cioè si devono visualizzare le opzioni di progetto seguendo il percorso: controllando che la voce Genera

Dettagli

Guida rapida Vodafone Internet Key K4607-Z. Progettata da Vodafone

Guida rapida Vodafone Internet Key K4607-Z. Progettata da Vodafone Guida rapida Vodafone Internet Key K4607-Z Progettata da Vodafone Benvenuti nel mondo della comunicazione in mobilità 1 Benvenuti 2 Impostazione della Vodafone Internet Key 4 Windows 7, Windows Vista,

Dettagli

Manuale - TeamViewer 6.0

Manuale - TeamViewer 6.0 Manuale - TeamViewer 6.0 Revision TeamViewer 6.0 9947c Indice Indice 1 Ambito di applicazione... 1 1.1 Informazioni su TeamViewer... 1 1.2 Le nuove funzionalità della Versione 6.0... 1 1.3 Funzioni delle

Dettagli

WEB Conference, mini howto

WEB Conference, mini howto Prerequisiti: WEB Conference, mini howto Per potersi collegare o creare una web conference è necessario: 1) Avere un pc con sistema operativo Windows XP o vista (windows 7 non e' ancora certificato ma

Dettagli

Mobile Messaging SMS. Copyright 2015 VOLA S.p.A.

Mobile Messaging SMS. Copyright 2015 VOLA S.p.A. Mobile Messaging SMS Copyright 2015 VOLA S.p.A. INDICE Mobile Messaging SMS. 2 SMS e sistemi aziendali.. 2 Creare campagne di mobile marketing con i servizi Vola SMS.. 3 VOLASMS per inviare SMS da web..

Dettagli

Applicazione: Share - Sistema per la gestione strutturata di documenti

Applicazione: Share - Sistema per la gestione strutturata di documenti Riusabilità del software - Catalogo delle applicazioni: Gestione Documentale Applicazione: Share - Sistema per la gestione strutturata di documenti Amministrazione: Regione Piemonte - Direzione Innovazione,

Dettagli

Il Concetto di Processo

Il Concetto di Processo Processi e Thread Il Concetto di Processo Il processo è un programma in esecuzione. È l unità di esecuzione all interno del S.O. Solitamente, l esecuzione di un processo è sequenziale (le istruzioni vengono

Dettagli

SIASFi: il sistema ed il suo sviluppo

SIASFi: il sistema ed il suo sviluppo SIASFI: IL SISTEMA ED IL SUO SVILUPPO 187 SIASFi: il sistema ed il suo sviluppo Antonio Ronca Il progetto SIASFi nasce dall esperienza maturata da parte dell Archivio di Stato di Firenze nella gestione

Dettagli

Applicazione: DoQui/Index - Motore di gestione dei contenuti digitali

Applicazione: DoQui/Index - Motore di gestione dei contenuti digitali Riusabilità del software - Catalogo delle applicazioni: Applicativo verticale Applicazione: DoQui/Index - Motore di gestione dei contenuti digitali Amministrazione: Regione Piemonte - Direzione Innovazione,

Dettagli

PROPOSTE SISTEMA DI CITIZEN RELATIONSHIP MANAGEMENT (CRM) REGIONALE

PROPOSTE SISTEMA DI CITIZEN RELATIONSHIP MANAGEMENT (CRM) REGIONALE PROPOSTE SISTEMA DI CITIZEN RELATIONSHIP MANAGEMENT (CRM) REGIONALE Versione 1.0 Via della Fisica 18/C Tel. 0971 476311 Fax 0971 476333 85100 POTENZA Via Castiglione,4 Tel. 051 7459619 Fax 051 7459619

Dettagli

Le funzionalità di un DBMS

Le funzionalità di un DBMS Le funzionalità di un DBMS Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: DBMS.pdf Sistemi Informativi L-A DBMS: principali funzionalità Le

Dettagli

SISSI IN RETE. Quick Reference guide guida di riferimento rapido

SISSI IN RETE. Quick Reference guide guida di riferimento rapido SISSI IN RETE Quick Reference guide guida di riferimento rapido Indice generale Sissi in rete...3 Introduzione...3 Architettura Software...3 Installazione di SISSI in rete...3 Utilizzo di SISSI in Rete...4

Dettagli

Web Conferencing Open Source

Web Conferencing Open Source Web Conferencing Open Source A cura di Giuseppe Maugeri g.maugeri@bembughi.org 1 Cos è BigBlueButton? Sistema di Web Conferencing Open Source Basato su più di quattordici componenti Open-Source. Fornisce

Dettagli

CHIAVETTA INTERNET ONDA MT503HSA

CHIAVETTA INTERNET ONDA MT503HSA CHIAVETTA INTERNET ONDA MT503HSA Manuale Utente Linux Debian, Fedora, Ubuntu www.ondacommunication.com Chiavet ta Internet MT503HSA Guida rapida sistema operativo LINUX V 1.1 33080, Roveredo in Piano (PN)

Dettagli

Rational Asset Manager, versione 7.1

Rational Asset Manager, versione 7.1 Rational Asset Manager, versione 7.1 Versione 7.1 Guida all installazione Rational Asset Manager, versione 7.1 Versione 7.1 Guida all installazione Note Prima di utilizzare queste informazioni e il prodotto

Dettagli

Energy Studio Manager Manuale Utente USO DEL SOFTWARE

Energy Studio Manager Manuale Utente USO DEL SOFTWARE Energy Studio Manager Manuale Utente USO DEL SOFTWARE 1 ANALYSIS.EXE IL PROGRAMMA: Una volta aperto il programma e visualizzato uno strumento il programma apparirà come nell esempio seguente: Il programma

Dettagli

MATRICE DELLE FUNZIONI DI DRAGON NATURALLYSPEAKING 12 CONFRONTO TRA EDIZIONI DEL PRODOTTO

MATRICE DELLE FUNZIONI DI DRAGON NATURALLYSPEAKING 12 CONFRONTO TRA EDIZIONI DEL PRODOTTO MATRICE DELLE FUNZIONI DI DRAGON NATURALLYSPEAKING 12 CONFRONTO TRA EDIZIONI DEL PRODOTTO Precisione del riconoscimento Velocità di riconoscimento Configurazione del sistema Correzione Regolazione della

Dettagli

UML Component and Deployment diagram

UML Component and Deployment diagram UML Component and Deployment diagram Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Università di Catania I diagrammi UML Classificazione

Dettagli

Introduzione alle applicazioni di rete

Introduzione alle applicazioni di rete Introduzione alle applicazioni di rete Definizioni base Modelli client-server e peer-to-peer Socket API Scelta del tipo di servizio Indirizzamento dei processi Identificazione di un servizio Concorrenza

Dettagli

Web Conferencing and Collaboration tool

Web Conferencing and Collaboration tool Web Conferencing and Collaboration tool La piattaforma Meetecho Piattaforma di Web Conferencing e Collaborazione on line in tempo reale Caratteristiche generali Soluzione client-server progettata per essere

Dettagli

UBUNTU SERVER. Installazione e configurazione di Ubuntu Server. M. Cesa 1

UBUNTU SERVER. Installazione e configurazione di Ubuntu Server. M. Cesa 1 UBUNTU SERVER Installazione e configurazione di Ubuntu Server M. Cesa 1 Ubuntu Server Scaricare la versione deisiderata dalla pagina ufficiale http://www.ubuntu.com/getubuntu/download-server Selezioniare

Dettagli

Il portafoglio VidyoConferencing. Tutto ciò di cui avete bisogno per realizzare videoconferenze HD di qualità, accessibili e a costi vantaggiosi

Il portafoglio VidyoConferencing. Tutto ciò di cui avete bisogno per realizzare videoconferenze HD di qualità, accessibili e a costi vantaggiosi Il portafoglio VidyoConferencing Tutto ciò di cui avete bisogno per realizzare videoconferenze HD di qualità, accessibili e a costi vantaggiosi La qualità HD di Vidyo mi permette di vedere e ascoltare

Dettagli

Università degli Studi di Parma. Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica

Università degli Studi di Parma. Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica Università degli Studi di Parma Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica A.A. 2007-08 CORSO DI INGEGNERIA DEL SOFTWARE Prof. Giulio Destri http://www.areasp.com (C) 2007 AreaSP for

Dettagli

Virtualizzazione e installazione Linux

Virtualizzazione e installazione Linux Virtualizzazione e installazione Linux Federico De Meo, Davide Quaglia, Simone Bronuzzi Lo scopo di questa esercitazione è quello di introdurre il concetto di virtualizzazione, di creare un ambiente virtuale

Dettagli

BlackBerry Q10 Smartphone. Versione: 10.1. Manuale utente

BlackBerry Q10 Smartphone. Versione: 10.1. Manuale utente BlackBerry Q10 Smartphone Versione: 10.1 Manuale utente Pubblicato: 15/10/2013 SWD-20131015110931200 Contenuti Introduzione... 9 BlackBerry 10: nuove applicazioni e funzionalità... 10 Introduzione... 14

Dettagli

Testi della Guida introduttiva a cura di Martin Ley. Revisione e controllo qualità: Cristina Bachmann, Heiko Bischoff, Marion Bröer, Sabine Pfeifer,

Testi della Guida introduttiva a cura di Martin Ley. Revisione e controllo qualità: Cristina Bachmann, Heiko Bischoff, Marion Bröer, Sabine Pfeifer, Guida Introduttiva Testi della Guida introduttiva a cura di Martin Ley. Revisione e controllo qualità: Cristina Bachmann, Heiko Bischoff, Marion Bröer, Sabine Pfeifer, Heike Schilling. Data di rilascio:

Dettagli

APPLICAZIONE WEB PER LA GESTIONE DELLE RICHIESTE DI ACQUISTO DEL MATERIALE INFORMATICO. Francesco Marchione e Dario Richichi

APPLICAZIONE WEB PER LA GESTIONE DELLE RICHIESTE DI ACQUISTO DEL MATERIALE INFORMATICO. Francesco Marchione e Dario Richichi APPLICAZIONE WEB PER LA GESTIONE DELLE RICHIESTE DI ACQUISTO DEL MATERIALE INFORMATICO Francesco Marchione e Dario Richichi Istituto Nazionale di Geofisica e Vulcanologia Sezione di Palermo Indice Introduzione...

Dettagli

RedDot Content Management Server Content Management Server Non sottovalutate il potenziale della comunicazione online: usatela! RedDot CMS vi permette di... Implementare, gestire ed estendere progetti

Dettagli

Ottimizzazione della gestione del data center con Microsoft System Center

Ottimizzazione della gestione del data center con Microsoft System Center Ottimizzazione della gestione del data center con Microsoft System Center Declinazione di responsabilità e informazioni sul copyright Le informazioni contenute nel presente documento rappresentano le conoscenze

Dettagli

Guida al nuovo sistema di posta. CloudMail UCSC. (rev.doc. 1.4)

Guida al nuovo sistema di posta. CloudMail UCSC. (rev.doc. 1.4) Guida al nuovo sistema di posta CloudMail UCSC (rev.doc. 1.4) L Università per poter migliorare l utilizzo del sistema di posta adeguandolo agli standard funzionali più diffusi ha previsto la migrazione

Dettagli

Introduzione a Puppy Linux: installazione su una chiavetta USB

Introduzione a Puppy Linux: installazione su una chiavetta USB Introduzione a Puppy Linux: installazione su una chiavetta USB Alex Gotev 1 Contenuti Che cos'è Puppy Linux? Come posso averlo? Come si avvia? Che programmi include? Installazione su Chiavetta USB Domande

Dettagli

12.5 UDP (User Datagram Protocol)

12.5 UDP (User Datagram Protocol) CAPITOLO 12. SUITE DI PROTOCOLLI TCP/IP 88 12.5 UDP (User Datagram Protocol) L UDP (User Datagram Protocol) é uno dei due protocolli del livello di trasporto. Come l IP, é un protocollo inaffidabile, che

Dettagli

Posta Elettronica Certificata

Posta Elettronica Certificata Posta Elettronica Certificata Manuale di utilizzo del servizio Webmail di Telecom Italia Trust Technologies Documento ad uso pubblico Pag. 1 di 33 Indice degli argomenti 1 INTRODUZIONE... 3 1.1 Obiettivi...

Dettagli

Guida all utilizzo del dispositivo USB

Guida all utilizzo del dispositivo USB Guida all utilizzo del dispositivo USB 30/04/2013 Sommario - Limitazioni di responsabilità e uso del manuale... 3 1. Glossario... 3 2. Guida all utilizzo del dispositivo USB... 4 2.1 Funzionamento del

Dettagli

Procedura per il ripristino dei certificati del dispositivo USB

Procedura per il ripristino dei certificati del dispositivo USB Procedura per il ripristino dei certificati del dispositivo USB 30/04/2013 Sommario - Limitazioni di responsabilità e uso del manuale... 3 1 Glossario... 3 2 Presentazione... 4 3 Quando procedere al ripristino

Dettagli

Acronis Backup & Recovery 10 Advanced Server Virtual Edition. Guida introduttiva

Acronis Backup & Recovery 10 Advanced Server Virtual Edition. Guida introduttiva Acronis Backup & Recovery 10 Advanced Server Virtual Edition Guida introduttiva Questo documento descrive come installare e iniziare a utilizzare Acronis Backup & Recovery 10 Advanced Server Virtual Edition.

Dettagli

Installazione di GFI Network Server Monitor

Installazione di GFI Network Server Monitor Installazione di GFI Network Server Monitor Requisiti di sistema I computer che eseguono GFI Network Server Monitor richiedono: i sistemi operativi Windows 2000 (SP4 o superiore), 2003 o XP Pro Windows

Dettagli

MANUALE Gest-L VERSIONE 3.2.3

MANUALE Gest-L VERSIONE 3.2.3 MANUALE Gest-L VERSIONE 3.2.3 Installazione GEST-L 4 Versione per Mac - Download da www.system-i.it 4 Versione per Mac - Download da Mac App Store 4 Versione per Windows 4 Prima apertura del programma

Dettagli

COPERTURA WI-FI (aree chiamate HOT SPOT)

COPERTURA WI-FI (aree chiamate HOT SPOT) Wi-Fi Amantea Il Comune di Amantea offre a cittadini e turisti la connessione gratuita tramite tecnologia wi-fi. Il progetto inserisce Amantea nella rete wi-fi Guglielmo ( www.guglielmo.biz), già attivo

Dettagli

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN)

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN) Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN) System Overview di Mattia Bargellini 1 CAPITOLO 1 1.1 Introduzione Il seguente progetto intende estendere

Dettagli

TeamViewer 8 Manuale Meeting

TeamViewer 8 Manuale Meeting TeamViewer 8 Manuale Meeting Rev 8.0-12/2012 TeamViewer GmbH Kuhnbergstraße 16 D-73037 Göppingen www.teamviewer.com Indice 1 Informazioni su TeamViewer... 5 1.1 Informazioni sul software... 5 1.2 Informazioni

Dettagli

PCC - Pixia Centro Comunicazioni GUIDA PER L UTILIZZO

PCC - Pixia Centro Comunicazioni GUIDA PER L UTILIZZO PCC - Pixia Centro Comunicazioni GUIDA PER L UTILIZZO Informazioni generali Il programma permette l'invio di SMS, usufruendo di un servizio, a pagamento, disponibile via internet. Gli SMS possono essere

Dettagli

Sistema di telecomunicazione per le piccole e medie imprese.

Sistema di telecomunicazione per le piccole e medie imprese. Sistema di telecomunicazione per le piccole e medie imprese. Sistema di telecomunicazione Promelit ipecs MG. Descrizione del Sistema: L azienda di oggi deve saper anche essere estesa : non confinata in

Dettagli

Configurazioni Mobile Connect

Configurazioni Mobile Connect Mailconnect Mail.2 L EVOLUZIONE DELLA POSTA ELETTRONICA Configurazioni Mobile Connect iphone MOBILE CONNECT CONFIGURAZIONE MOBILE CONNECT PER IPHONE CONFIGURAZIONE IMAP PER IPHONE RUBRICA CONTATTI E IPHONE

Dettagli

PRIVACY POLICY MARE Premessa Principi base della privacy policy di Mare Informativa ai sensi dell art. 13, d. lgs 196/2003

PRIVACY POLICY MARE Premessa Principi base della privacy policy di Mare Informativa ai sensi dell art. 13, d. lgs 196/2003 PRIVACY POLICY MARE Premessa Mare Srl I.S. (nel seguito, anche: Mare oppure la società ) è particolarmente attenta e sensibile alla tutela della riservatezza e dei diritti fondamentali delle persone e

Dettagli

Software 2. Classificazione del software. Software di sistema

Software 2. Classificazione del software. Software di sistema Software 2 Insieme di istruzioni e programmi che consentono il funzionamento del computer Il software indica all hardware quali sono le operazioni da eseguire per svolgere determinati compiti Valore spesso

Dettagli

AGGIORNAMENTO PROTOCOLLO VERSIONE 3.9.0

AGGIORNAMENTO PROTOCOLLO VERSIONE 3.9.0 AGGIORNAMENTO PROTOCOLLO VERSIONE 3.9.0 Con questo aggiornamento sono state implementate una serie di funzionalità concernenti il tema della dematerializzazione e della gestione informatica dei documenti,

Dettagli

GUIDA ALLE BEST PRACTICE PER MOBILE DEVICE MANAGEMENT E MOBILE SECURITY

GUIDA ALLE BEST PRACTICE PER MOBILE DEVICE MANAGEMENT E MOBILE SECURITY GUIDA ALLE BEST PRACTICE PER MOBILE DEVICE MANAGEMENT E MOBILE SECURITY Con Kaspersky, adesso è possibile. www.kaspersky.it/business Be Ready for What's Next SOMMARIO Pagina 1. APERTI 24 ORE SU 24...2

Dettagli

How to Develop Accessible Linux Applications

How to Develop Accessible Linux Applications How to Develop Accessible Linux Applications Sharon Snider Copyright 2002 IBM Corporation v1.1, 2002-05-03 Diario delle Revisioni Revisione v1.1 2002-05-03 Revisionato da: sds Convertito in DocBook XML

Dettagli

Firewall. Generalità. Un firewall può essere sia un apparato hardware sia un programma software.

Firewall. Generalità. Un firewall può essere sia un apparato hardware sia un programma software. Generalità Definizione Un firewall è un sistema che protegge i computer connessi in rete da attacchi intenzionali mirati a compromettere il funzionamento del sistema, alterare i dati ivi memorizzati, accedere

Dettagli

MEGA Process. Manuale introduttivo

MEGA Process. Manuale introduttivo MEGA Process Manuale introduttivo MEGA 2009 SP4 1ª edizione (giugno 2010) Le informazioni contenute nel presente documento possono essere modificate senza preavviso e non costituiscono in alcun modo un

Dettagli

I.Stat Guida utente Versione 1.7 Dicembre 2010

I.Stat Guida utente Versione 1.7 Dicembre 2010 I.Stat Guida utente Versione 1.7 Dicembre 2010 1 Sommario INTRODUZIONE 3 I concetti principali di I.Stat 4 Organizzazione dei dati 4 Ricerca 5 GUIDA UTENTE 6 Per iniziare 6 Selezione della lingua 7 Individuazione

Dettagli

L evoluzione del software per l azienda moderna. Gestirsi / Capirsi / Migliorarsi

L evoluzione del software per l azienda moderna. Gestirsi / Capirsi / Migliorarsi IL GESTIONALE DEL FUTURO L evoluzione del software per l azienda moderna Gestirsi / Capirsi / Migliorarsi IL MERCATO ITALIANO L Italia è rappresentata da un numero elevato di piccole e medie aziende che

Dettagli

Boot Camp Guida di installazione e configurazione

Boot Camp Guida di installazione e configurazione Boot Camp Guida di installazione e configurazione Indice 3 Introduzione 4 Panoramica dell'installazione 4 Passo 1: Verificare la presenza di aggiornamenti 4 Passo 2: Per preparare il Mac per Windows 4

Dettagli

SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO

SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO CLSMS SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO Sommario e introduzione CLSMS SOMMARIO INSTALLAZIONE E CONFIGURAZIONE... 3 Parametri di configurazione... 4 Attivazione Software...

Dettagli

Agilent OpenLAB Chromatography Data System (CDS)

Agilent OpenLAB Chromatography Data System (CDS) Agilent OpenLAB Chromatography Data System (CDS) EZChrom Edition e ChemStation Edition Requisiti hardware e software Agilent Technologies Informazioni legali Agilent Technologies, Inc. 2013 Nessuna parte

Dettagli

Introduzione a MySQL

Introduzione a MySQL Introduzione a MySQL Cinzia Cappiello Alessandro Raffio Politecnico di Milano Prima di iniziare qualche dettaglio su MySQL MySQL è un sistema di gestione di basi di dati relazionali (RDBMS) composto da

Dettagli

Gestione posta elettronica (versione 1.1)

Gestione posta elettronica (versione 1.1) Gestione posta elettronica (versione 1.1) Premessa La presente guida illustra le fasi da seguire per una corretta gestione della posta elettronica ai fini della protocollazione in entrata delle mail (o

Dettagli

Delorme InReach SE & Explorer Comunicatore Satellitare, l SOS nel palmo della tua mano

Delorme InReach SE & Explorer Comunicatore Satellitare, l SOS nel palmo della tua mano Delorme InReach SE & Explorer Comunicatore Satellitare, l SOS nel palmo della tua mano Guida Rapida caratteristiche 1. Introduzione InReach SE è il comunicatore satellitare che consente di digitare, inviare/ricevere

Dettagli

Windows Mail Outlook Express 6 Microsoft Outlook 2003 Microsoft Outlook 2007 Thunderbird Opera Mail Mac Mail

Windows Mail Outlook Express 6 Microsoft Outlook 2003 Microsoft Outlook 2007 Thunderbird Opera Mail Mac Mail Configurare un programma di posta con l account PEC di Il Titolare di una nuova casella PEC può accedere al sistema sia tramite Web (Webmail i ), sia configurando il proprio account ii nel programma di

Dettagli

Dev C++ Prerequisiti. Note di utilizzo. Utilizzo di Windows Effettuare il download da Internet Compilazione di un programma

Dev C++ Prerequisiti. Note di utilizzo. Utilizzo di Windows Effettuare il download da Internet Compilazione di un programma Dev C++ Note di utilizzo 1 Prerequisiti Utilizzo di Windows Effettuare il download da Internet Compilazione di un programma 2 1 Introduzione Lo scopo di queste note è quello di diffondere la conoscenza

Dettagli

Dispense di Informatica Anno Scolastico 2008/2009 Classe 3APS. Dal Problema all'algoritmo

Dispense di Informatica Anno Scolastico 2008/2009 Classe 3APS. Dal Problema all'algoritmo stituto Tecnico Statale Commerciale Dante Alighieri Cerignola (FG) Dispense di nformatica Anno Scolastico 2008/2009 Classe 3APS Dal Problema all'algoritmo Pr.: 001 Ver.:1.0 Autore: prof. Michele Salvemini

Dettagli

Alb@conference GO e Web Tools

Alb@conference GO e Web Tools Alb@conference GO e Web Tools Crea riunioni virtuali sempre più efficaci Strumenti Web di Alb@conference GO Guida Utente Avanzata Alb@conference GO Per partecipare ad un audioconferenza online con Alb@conference

Dettagli

GESTIRE LA BIBLIOGRAFIA

GESTIRE LA BIBLIOGRAFIA GESTIRE LA BIBLIOGRAFIA STRUMENTI DI GESTIONE BIBLIOGRAFICA I software di gestione bibliografica permettono di raccogliere, catalogare e organizzare diverse tipologie di materiali, prendere appunti, formattare

Dettagli

Web conferencing e collaborazione in tempo reale su Internet: la piattaforma Meetecho

Web conferencing e collaborazione in tempo reale su Internet: la piattaforma Meetecho Web conferencing e collaborazione in tempo reale su Internet: la piattaforma Meetecho Tobia Castaldi Alessandro Amirante Lorenzo Miniero Simon Pietro Romano Giorgio Ventre 02/10/2009 GARR 2009 "Network

Dettagli

Seagate Access per Personal Cloud Manuale utente

Seagate Access per Personal Cloud Manuale utente Seagate Access per Personal Cloud Manuale utente 2015 Seagate Technology LLC. Tutti i diritti riservati. Seagate, Seagate Technology, il logo Wave e FreeAgent sono marchi depositati o marchi registrati

Dettagli