84 resultados para Server
em AMS Tesi di Laurea - Alm@DL - Università di Bologna
Resumo:
La tesi riguarda la creazione di una architettura che ha lo scopo di far interagire attivamente un utente con una mappa digitale tramite browser web e un applicativo che calcola dei percorsi in base ad un algoritmo di ottimizzazione. Un ambito interessante, attuale e che avrà, molto probabilmente, notevoli sviluppi futuri. Basti pensare per esempio a come le persone interagiscono con le mappe digitali tramite i famosi Google Maps o Google Earth, Bing Maps e OpenStreetMap. Questa interazione è diventata talmente naturale che è ormai intuitivo ruotare la rotellina del mouse per zoomare oppure tenere premuto il tasto sinistro per trascinare la mappa. Spesso questi applicativi web offrono servizi per il calcolo di percorsi, o rilasciano anche delle API per interagire e personalizzare alcuni aspetti, anche se spesso in modo limitato per questioni di copyright. In questo contesto entrano in gioco associazioni, singoli individui e fondazioni che creano software e standard fruibili da chiunque per creare applicativi e architetture personalizzate senza vincoli di diritti troppo limitanti. In questa tesi viene mostrato un approccio che permette una personalizzazione molto dettagliata e un'alta interoperabilità con queste applicazioni specifiche. Ma tutti questi aspetti positivi sono fruibili, per ora, solo mediante supporto umano avente un bagaglio di esperienze tecniche adeguate.
Resumo:
Questa tesi descrive un sistema Client Server che ricava dagli smartphone, tramite modello crowdsourcing e crowdsensing, posizioni che successivamente verranno georeferenziate sulla mappa con lo scopo di favorire l'accessibilità urbana.
Resumo:
Lo scopo della tesi è quello di descrivere e mettere a confronto tre diversi linguaggi, e quindi approcci, alla programmazione server-side e di back-end, ovvero il linguaggio PHP, il linguaggio Python ed il linguaggio Javascript, utilizzato però per una programmazione “Server Side”, e quindi associato al framework NodeJS. Questo confronto si pone l’obiettivo di sottolineare le differenti caratteristiche di ogni linguaggio, gli scopi a cui esso maggiormente si addice e di fornire una sorta di guida per far in modo che si possa comprendere al meglio quale dei tre linguaggi maggiormente usati per la programmazione backend si conformi meglio all’obiettivo prepostosi.
Resumo:
Poiché nell’ultimo decennio i dispositivi mobile assumono un ruolo sempre più determinante nello svolgimento della vita stessa, nel corso del tempo si sono ricercate e sviluppate app per facilitare le più svariate operazioni quotidiane. Visto la vastità del mercato degli smartphone, nel tempo sono stati sviluppati vari sistemi operativi in grado di governare queste piattaforme. Per una azienda, tuttavia, gestire i costi di implementazione di una stessa app in ambienti differenti risulta più oneroso che gestire i costi di una sola in grado di operare nei diversi sistemi operativi. Quest’ultimo tipo di app viene comunemente denominato app multipiattaforma. Un modo per implementare questo genere di applicazioni vede come strumento di utilizzo Visual Studio, noto IDE. Nel caso specifico Visual Studio ha integrato il progetto Apache Cordova per le creazione di applicativi multipiattaforma. In questo elaborato di tesi tramite i due strumenti appena introdotti si sono sviluppate due differenti app, al fine di valutarne le performance in termini di tempo. La prima app propone la risoluzione di un noto problema di calcolo combinatorio conosciuto con il nome di Knapsack, ovvero il problema dello zaino. La seconda cerca invece di digitalizzare una semplice espressione matematica contenuta in un’immagine e di fornirne quindi il risultato. Dai dati ottenuti si possono operare confronti per determinare la validità dello strumento di sviluppo, mettendo in luce anche possibili evoluzioni di queste due app.
Resumo:
The aim of this thesis is to merge two of the emerging paradigms about web programming: RESTful Web Development and Service-Oriented Programming. REST is the main architectural paradigm about web applications, they are characterised by procedural structure which avoid the use of handshaking mechanisms. Even though REST has a standard structure to access the resources of the web applications, the backend side is usually not very modular if not complicated. Service-Oriented Programming, instead, has as one of the fundamental principles, the modularisation of the components. Service-Oriented Applications are characterised by separate modules that allow to simplify the devel- opment of the web applications. There are very few example of integration between these two technologies: it seems therefore reasonable to merge them. In this thesis the methodologies studied to reach this results are explored through an application that helps to handle documents and notes among several users, called MergeFly. The MergeFly practical case, once that all the specifics had been set, will be utilised in order to develop and handle HTTP requests through SOAP. In this document will be first defined the 1) characteristics of the application, 2) SOAP technology, partially introduced the 3) Jolie Language, 4) REST and finally a 5) Jolie-REST implementation will be offered through the MergeFly case. It is indeed implemented a token mechanism for authentication: it has been first discarded sessions and cookies algorithm of authentication in so far not into the pure RESTness theory, even if often used). In the final part the functionality and effectiveness of the results will be evaluated, judging the Jolie-REST duo.
Resumo:
Il lavoro svolto da Fabrizio Amici ha suscitato immediatamente il mio interesse in primo luogo perché quando si parla di virtualizzazione con vari fornitori e commerciali, questi la indicano come una soluzione che possa coprire a 360 gradi le esigenze di un Datacenter. Questo è vero nella misura in cui il progetto di virtualizzazione e consolidamento dei Server sia svolto sotto certi criteri progettuali. Per esperienza personale non ho trovato in letteratura lavori che potessero fornire indicazioni approfondite sui parametri da considerare per una corretta progettazione di sistemi di virtualizzazione, spesso ci si avvale di vari fornitori che accennano ad eventuali criticità. Un lavoro come quello proposto da Fabrizio va esattamente nella direzione di rispondere a quelle domande che nascono quando si affronta la tematica della virtualizzazione e soprattutto cerca di capire quali siano i limiti intrinseci della virtualizzazione. In particolare nei vari confronti che, con piacere, ho avuto con Fabrizio, il mio suggerimento è stato quello di esasperare il sistema che aveva assemblato, caricando i test sino ad osservarne i limiti. Dai vari test sono emerse sia conferme, sia inaspettati comportamenti del sistema che rendono ancora più chiaro che solo una prova sperimentale può essere il banco di prova di un sistema complesso. L'elemento che colpisce maggiormente analizzando i risultati è il diverso comportamento in funzione delle CPU utilizzate. I risultati indicano chiaramente che le prestazioni sono fortemente influenzate da come si distribuiscono i core nelle macchine virtuali. Dalla lettura dei risultati viene confermato che i sistemi virtualizzati devono essere progettati per non raggiungere il 70-80% della componente più critica (RAM, CPU) ma anche che sono fortemente sensibili alle disponibilità prestazionali dei sistemi al contorno (Rete, SAN/Dischi). L'approccio metodico sperimentale ed i risultati forniscono una serie di elementi che permettono di affrontare la tematica della virtualizzazione in un quadro generale più solido, offrendo fra l'altro spunti di ricerca ulteriori anche in previsione di nuove soluzioni che vari costruttori, sviluppatori e system integrator proporranno nei prossimi anni. Ing. Massimiliano Casali Esperto di Gestione ICT, Pubblica Amministrazione,Repubblica di San Marino
Resumo:
Nello sviluppo di sistemi informatici si sono affermate numerose tecnologie, che vanno utilizzate in modo combinato e, possibilmente sinergico. Da una parte, i sistemi di gestione di basi di dati relazionali consentono una gestione efficiente ed efficace di dati persistenti, condivisi e transazionali. Dall'altra, gli strumenti e i metodi orientati agli oggetti (linguaggi di programmazione, ma anche metodologie di analisi e progettazione) consentono uno sviluppo efficace della logica applicativa delle applicazioni. E’ utile in questo contesto spiegare che cosa s'intende per sistema informativo e sistema informatico. Sistema informativo: L'insieme di persone, risorse tecnologiche, procedure aziendali il cui compito è quello di produrre e conservare le informazioni che servono per operare nell'impresa e gestirla. Sistema informatico: L'insieme degli strumenti informatici utilizzati per il trattamento automatico delle informazioni, al fine di agevolare le funzioni del sistema informativo. Ovvero, il sistema informatico raccoglie, elabora, archivia, scambia informazione mediante l'uso delle tecnologie proprie dell'Informazione e della Comunicazione (ICT): calcolatori, periferiche, mezzi di comunicazione, programmi. Il sistema informatico è quindi un componente del sistema informativo. Le informazioni ottenute dall'elaborazione dei dati devono essere salvate da qualche parte, in modo tale da durare nel tempo dopo l'elaborazione. Per realizzare questo scopo viene in aiuto l'informatica. I dati sono materiale informativo grezzo, non (ancora) elaborato da chi lo riceve, e possono essere scoperti, ricercati, raccolti e prodotti. Sono la materia prima che abbiamo a disposizione o produciamo per costruire i nostri processi comunicativi. L'insieme dei dati è il tesoro di un'azienda e ne rappresenta la storia evolutiva. All'inizio di questa introduzione è stato accennato che nello sviluppo dei sistemi informatici si sono affermate diverse tecnologie e che, in particolare, l'uso di sistemi di gestione di basi di dati relazionali comporta una gestione efficace ed efficiente di dati persistenti. Per persistenza di dati in informatica si intende la caratteristica dei dati di sopravvivere all'esecuzione del programma che li ha creati. Se non fosse cosi, i dati verrebbero salvati solo in memoria RAM e sarebbero persi allo spegnimento del computer. Nella programmazione informatica, per persistenza si intende la possibilità di far sopravvivere strutture dati all'esecuzione di un programma singolo. Occorre il salvataggio in un dispositivo di memorizzazione non volatile, come per esempio su un file system o su un database. In questa tesi si è sviluppato un sistema che è in grado di gestire una base di dati gerarchica o relazionale consentendo l'importazione di dati descritti da una grammatica DTD. Nel capitolo 1 si vedranno più in dettaglio cosa di intende per Sistema Informativo, modello client-server e sicurezza dei dati. Nel capitolo 2 parleremo del linguaggio di programmazione Java, dei database e dei file XML. Nel capitolo 3 descriveremo un linguaggio di analisi e modellazione UML con esplicito riferimento al progetto sviluppato. Nel capitolo 4 descriveremo il progetto che è stato implementato e le tecnologie e tools utilizzati.
Resumo:
In questa Tesi forniamo una libreria di funzioni aritmetiche che operano in spazio logaritmico rispetto all'input. Partiamo con un'analisi dei campi in cui è necessario o conveniente porre dei limiti, in termini di spazio utilizzato, alla computazione di un determinato software. Vista la larga diffusione del Web, si ha a che fare con collezioni di dati enormi e che magari risiedono su server remoti: c'è quindi la necessità di scrivere programmi che operino su questi dati, pur non potendo questi dati entrare tutti insieme nella memoria di lavoro del programma stesso. In seguito studiamo le nozioni teoriche di Complessità, in particolare quelle legate allo spazio di calcolo, utilizzando un modello alternativo di Macchina di Turing: la Offline Turing Machine. Presentiamo quindi un nuovo “modello” di programmazione: la computazione bidirezionale, che riteniamo essere un buon modo di strutturare la computazione limitata in spazio. Forniamo poi una “guida al programmatore” per un linguaggio di recente introduzione, IntML, che permettere la realizzazione di programmi logspace mantenendo però il tradizionale stile di programmazione funzionale. Infine, per mostrare come IntML permetta concretamente di scrivere programmi limitati in spazio, realizziamo una libreria di funzioni aritmetiche che operano in spazio logaritmico. In particolare, mostriamo funzioni per calcolare divisione intera e resto sui naturali, e funzioni per confrontare, sommare e moltiplicare numeri espressi come parole binarie.
Resumo:
Il Progetto XCModel, che da dieci anni si sviluppa e si perfeziona col contributo di varie persone, consente la progettazione di scene 3D e la resa fotorealistica. Esso si appoggia sulle funzionalita' grafiche di X-Window in Linux: si tratta di un ambiente in costante evoluzione, dovuta sia alle continue innovazioni hardware che ai cambiamenti degli standard. XCModel e' composto da vari pacchetti, ognuno dei quali specializzato nel trattare un particolare aspetto della modellazione o della resa (curve, superfici, textures, luci, ...) e che si presentano come applicazioni dotate di una sofisticata interfaccia grafica. Tutte attingono alle funzioni della Libreria XTools, che fornisce numerose primitive grafiche facenti uso delle potenzialita' di X-Window. I recenti cambiamenti nelle specifiche di X-Org, ed in particolare la de- standardizzazione del backing-store, ha obbligato il team di XCModel ad una consistente riprogettazione di XTools e di tutti i pacchetti che su di esso s'appoggiano. S'e' colta l'occasione per un massiccio debugging e per modificare i pacchetti in base alle impressioni emerse nel corso degli anni da parte degli utilizzatori, primi tra tutti gli studenti del corso di Grafica tenuto dal Prof. Giulio Casciola, project-manager di XCModel: questa e' un'ulteriore testimonianza del continuo adattamento e dell'aggiornabilita' del Progetto! Nella fattispecie, ci si occupera' delle modifiche effettuate in particolare al pacchetto XCSurf, finalizzato alla creazione ed alla modifica di curve e superfici 3D da utilizzarsi successivamente per la creazione delle scene: tale pacchetto e' di fatto risultato il pie' avulso dalle specifiche di XTools, il che ha costretto ad un massiccio intervento al codice del programma, ma d'altro canto ha consentito una standardizzazione del pacchetto in linea con gli altri, in particolare ridisegnandone l'interfaccia. Nel primo capitolo si effettuera' una veloce panoramica dell'ambiente XCModel e delle problematiche emerse dai cambiamenti degli standard di X-Window. Il secondo capitolo affrontera' un'ampia analisi dell'hardware, del software e dei paradigmi che caratterizzano la grafica interattiva, e gli ambienti necessari per interagire con essa ed esaminando i vari obiettivi raggiungibili. Infine, il terzo capitolo analizzera' nel dettaglio le modifiche effettuate ai pacchetti di XCModel ed in particolare ad XCSurf per l'adattamento ai nuovi standard, nel rispetto delle politiche e delle linee guida dettate dalla grafica interattiva.
Resumo:
Il Cloud Storage è un modello di conservazione dati su computer in rete, dove i dati stessi sono memorizzati su molteplici server, reali e/o virtuali, generalmente ospitati presso strutture di terze parti o su server dedicati. Tramite questo modello è possibile accedere alle informazioni personali o aziendali, siano essi video, fotografie, musica, database o file in maniera “smaterializzata”, senza conoscere l’ubicazione fisica dei dati, da qualsiasi parte del mondo, con un qualsiasi dispositivo adeguato. I vantaggi di questa metodologia sono molteplici: infinita capacita’ di spazio di memoria, pagamento solo dell’effettiva quantità di memoria utilizzata, file accessibili da qualunque parte del mondo, manutenzione estremamente ridotta e maggiore sicurezza in quanto i file sono protetti da furto, fuoco o danni che potrebbero avvenire su computer locali. Google Cloud Storage cade in questa categoria: è un servizio per sviluppatori fornito da Google che permette di salvare e manipolare dati direttamente sull’infrastruttura di Google. In maggior dettaglio, Google Cloud Storage fornisce un’interfaccia di programmazione che fa uso di semplici richieste HTTP per eseguire operazioni sulla propria infrastruttura. Esempi di operazioni ammissibili sono: upload di un file, download di un file, eliminazione di un file, ottenere la lista dei file oppure la dimensione di un dato file. Ogniuna di queste richieste HTTP incapsula l’informazione sul metodo utilizzato (il tipo di richista, come GET, PUT, ...) e un’informazione di “portata” (la risorsa su cui effettuare la richiesta). Ne segue che diventa possibile la creazione di un’applicazione che, facendo uso di queste richieste HTTP, fornisce un servizio di Cloud Storage (in cui le applicazioni salvano dati in remoto generalmene attraverso dei server di terze parti). In questa tesi, dopo aver analizzato tutti i dettagli del servizio Google Cloud Storage, è stata implementata un’applicazione, chiamata iHD, che fa uso di quest’ultimo servizio per salvare, manipolare e condividere dati in remoto (nel “cloud”). Operazioni comuni di questa applicazione permettono di condividere cartelle tra più utenti iscritti al servizio, eseguire operazioni di upload e download di file, eliminare cartelle o file ed infine creare cartelle. L’esigenza di un’appliazione di questo tipo è nata da un forte incremento, sul merato della telefonia mobile, di dispositivi con tecnologie e con funzioni sempre più legate ad Internet ed alla connettività che esso offre. La tesi presenta anche una descrizione delle fasi di progettazione e implementazione riguardanti l’applicazione iHD. Nella fase di progettazione si sono analizzati tutti i requisiti funzionali e non funzionali dell’applicazione ed infine tutti i moduli da cui è composta quest’ultima. Infine, per quanto riguarda la fase di implementazione, la tesi presenta tutte le classi ed i rispettivi metodi presenti per ogni modulo, ed in alcuni casi anche come queste classi sono state effettivamente implementate nel linguaggio di programmazione utilizzato.
Resumo:
Progettazione ed implementazione di una piattaforma di cloud computing per erogare macchine virtuali, in particolare macchine utilizzate come proxy server da applicazioni VoIP