Master Quiz. Matteo Zignani. 18 agosto 2014



Documenti analoghi
Messaggi volatili. Matteo Zignani. 10 gennaio 2015

Dopo Natale puoi... Matteo Zignani. 20 dicembre 2013

Questua: aste online social

News sharing. Matteo Zignani. 21 dicembre 2013

Progetto Gennaio 2013: Social Chat Internazionale

Progetto Gennaio 2017

Progetto Febbraio Appello 1: Diffusione di tweets sul grafo di Twitter

Influenza da browser

Progetto Gennaio 2016

Portale tirocini. Manuale utente Per la gestione del Progetto Formativo

1. RETI INFORMATICHE CORSO DI LAUREA IN INGEGNERIA INFORMATICA SPECIFICHE DI PROGETTO A.A. 2013/ Lato client

Manuale Utente. Gestione Richieste supporto Data Warehouse. Della Ragioneria Generale dello Stato. Versione 1.0. Roma, Ottobre 2015

Università degli Studi di L Aquila. Facoltà di Ingegneria. Corso di Laurea in Ingegneria Elettronica Corso di Sistemi Informativi

Manuale Utente. Gestione Richieste supporto BDAP. Versione 1.0

Università Politecnica delle Marche. Progetto Didattico

Manuale Utente Albo Pretorio GA

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

Contagion: il tuo amico è il vero nemico...etchi

Software Servizi Web UOGA

Istruzione Operativa Richiesta di Offerta on-line in busta chiusa digitale

Database 1 biblioteca universitaria. Testo del quesito

MANUALE UTENTE Fiscali Free

RICHIESTE INTERVENTO

SPORTELLO UNICO DELLE ATTIVITÀ PRODUTTIVE MANUALE OPERATIVO FUNZIONI DI SCRIVANIA PER GLI UFFICI SUAP

Documentazione API web v 1.0

SMS API. Documentazione Tecnica YouSMS HTTP API. YouSMS Evet Limited

MANUALE UTENTE. In questo manuale verranno descritte tutte le sue funzioni. Il sistema OTRS è raggiungibile al seguente link:

Manuale Utente Amministrazione Trasparente GA

Light CRM. Documento Tecnico. Descrizione delle funzionalità del servizio

C.I.C. Centro Informazione e Consulenza. Guida all uso del registro elettronico

flusso delle informazioni... 2 password... 3 password/ inserimento di una nuova richiesta... 4 le condizioni di vendita... 6

STUDIUM.UniCT Tutorial per gli studenti

Sistema di gestione Certificato MANUALE PER L'UTENTE

Lezione 1 Introduzione

Manuale d uso. Fatturazione elettronica attiva

Manuale per i Fornitori

MANUALE UTENTE Profilo Azienda Partecipata. APPLICATIVO CAFWeb

Progettazione e realizzazione di un applicativo Web Annunci Immobiliari

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

1 ACCESSO AL 3 2 CARICAMENTO DELLE RICHIESTE/PRESTAZIONI MONITORAGGIO DELLE RICHIESTE DOWNLOAD ESITI...

Centro Acquisti per la Pubblica Amministrazione EmPULIA. Linee guida per gli Enti Aderenti. Procedure Negoziate: Richiesta di Preventivo. Versione 2.

GUIDA ALL UTILIZZO DEL PORTALE DELLA RETE DEI COMUNI OGLIO PO

DENUNCE EDILCONNECT GUIDA COMPILAZIONE

GESTIONE 770 TRASFERIMENTO DATI DA ARCHIVIO CONTABILE

Sviluppata da: Lo Russo - Porcelli Pag. 1 di 6 6FRSR utilizzare il DBMS Postgresql per imparare il linguaggio SQL.

Database. Si ringrazia Marco Bertini per le slides

Guida utente alla compilazione delle richieste di contributo on-line per le Associazioni dei Consumatori

Procedura SMS. Manuale Utente

Tipi di utente Pagina di Accesso BUW prevede due tipi di utente

Programma Gestione Presenze Manuale autorizzatore. Versione /08/2010. Area Sistemi Informatici - Università di Pisa

19. LA PROGRAMMAZIONE LATO SERVER

Guida Compilazione Piani di Studio on-line

Hub-PA Versione Manuale utente

Omnia Web Timesheet. Manuale utente

Direzione Centrale per le Politiche dell Immigrazione e dell Asilo

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

FPf per Windows 3.1. Guida all uso

Sistemi Informativi I Caso di studio con applicazione di UML

Il client deve stampare tutti gli eventuali errori che si possono verificare durante l esecuzione.

PROGRAMMA SVOLTO DI INFORMATICA ANNO SCOLASTICO 2013/2014. DOCENTE: Villani Chiara

OSSERVATORIO REGIONALE CONTRATTI PUBBLICI DI LAVORI, SERVIZI E FORNITURE

Gestione degli appelli e verbalizzazione degli esami online GUIDA DOCENTI. (versione 1.0 del )

SOMMARIO... 3 INTRODUZIONE...

ACCESSO AL SISTEMA HELIOS...

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

Cup HiWeb. Integrazione dei servizi del CUP Marche in applicativi di terze parti

COME CONFIGURARE UN CLIENT DI POSTA

MANUALE DI INTEGRAZIONE API SMSSmart (v 2.2)

VADEMECUM PER L ATTIVAZIONE DEL TIROCINIO (Studente e Azienda)

TFR On Line PREMESSA

Guida di Opzioni Fiery 1.3 (client)

Configurazione di Outlook Express

MICHELANGELO Piattaforma autorizzativa per la gestione di interventi riservata ai fornitori

filrbox Guida all uso dell interfaccia WEB Pag. 1 di 44

Manuale Affidamento Diretto Vers

Gestione Risorse Umane Web

Regione Campania Procedura di Registrazione degli Operatori Economici e Messaggi di Notifica.

Manuale Affidamento Diretto

Direzione Programmazione Sanitaria. Scarico Dati Sanità. Manuale Utente. Versione 1.0.0

REGISTRAZIONE ON LINE A CIAO IMPRESA

PSNET UC RUPAR PIEMONTE MANUALE OPERATIVO

CAMBIO DI GESTIONE DEGLI ESEMPLARI RICHIESTI DALLE BIBLIOTECHE

Access. P a r t e p r i m a

Esercizio data base "Biblioteca"

InitZero s.r.l. Via P. Calamandrei, Arezzo

FONDAMENTI DI INTELLIGENZA ARTIFICIALE-M

Sistema Banca dati e Repertorio dei dispositivi medici Notifiche multiple di DM simili

Guida alla Navigazione e Utilizzo dell Area Fattura PA

MANUALE PARCELLA FACILE PLUS INDICE

Dipartimento per le Libertà Civili e l Immigrazione

Manuale per l utilizzo dell applicazione Client per il controllo remoto di apparecchiature da laboratorio

Progetto di RHS MicroAODV per Reti di Sensori A.A. 2007/2008

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

Manuale Servizio NEWSLETTER

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

SERVIZIO TELEMATICO ENTRATEL. Applicazione Autentica-Apri Multifile

ISSA EUROPE PTSOFTWARE 2.0

SOFTWARE. Aprendo il SW la prima schermata che appare è la seguente:

SOMMARIO Gruppo 4 - All right reserved 1

Transcript:

UNIVESITÁ DEGLI STUDI DI MILANO LAUREA TRIENNALE IN COMUNICAZIONE DIGITALE PROGETTO LABORATORIO DI RETI DI CALCOLATORI Master Quiz Matteo Zignani 18 agosto 2014 1 PRESENTAZIONE DEL PROBLEMA Lo studente deve sviluppare un gioco-quiz che sfrutti la social network fra gli utenti registrati al servizio. In particolare ogni utente deve rispondere al maggior numero di domande generate ogni due minuti con la possibilità di chiedere la risposta giusta ai propri amici. Il servizio che lo studente deve implementare si basa su un architettura client/server. Il server deve gestire la rete sociale tra gli utenti iscritti, offrendo anche la registrazione di nuovi utenti, e offrire dei servizi per lo svolgimento del gioco. A tal fine, il server mette a disposizione diverse risorse richiedibili utilizzando il protocollo HTTP che permettono la gestione, la richiesta e la pubblicazione della richiesta stessa, secondo i vincoli specificati in seguito. Per agevolare la pubblicazione dei post su Facebook è stato creato un utente fittizio di nome Giovanni Algoritmo sul cui profilo è possibile postare gli stati. Lo studente deve sviluppare solamente la parte server dell architettura descritta. Per quanto riguarda il client si possono utilizzare per la fase di test: telnet (Linux e Mac), putty (Windows). Le funzionalità verranno testate dal docente con questi due strumenti. Il server DEVE essere MULTITHREAD. 2 API Nelle seguenti sottosezioni vengono descritti le componenti del server e le risorse che esso mette a disposizione. Gli esempi presentati di seguito sono da considerarsi come tali, pertanto nella costruzione delle richieste e delle risposte HTTP ci si deve rifare alla sintassi HTTP presentata sul libro di testo. 1

2.1 FORMATO DELLA RICHIESTA Il server riconosce come valide le richieste che seguono il protocollo HTTP. In particolare il server riconosce solo richieste con metodo di accesso di tipo GET. Per questo motivo lo studente NON deve implementare un server HTTP completo ma un suo piccolo sottoinsieme. Un esempio di possibile richiesta valida può essere: GET <URL Risorsa con eventuali parametri> HTTP/1.0 user-agent: Mozilla 5.0 Il server deve verificare la validità della riga di intestazione e ignorare tutti i campi settati nella definizione dell header. Una volta rilevata la stringa vuota di terminazione della richiesta, il server deve eseguire l operazione richiesta dall URL e rispondere secondo il formato HTTP. Si noti che l URL della riga di intestazione della richiesta deve seguire la sintassi specifica di un URL (vedi slide corso). Se la richiesta è andata a buon fine, il formato della risposta è: <messaggio> dove < messag g io > è un messaggio testuale che dipende dalla risorsa invocata. In caso di errore il formato della risposta sarà: HTTP/1.0 400 ERRORE <messaggio> Anche in questo caso < messag g io > contiene un messaggio di errore dipendente dalla risorsa invocata. Vincoli imposti sulle richieste: Tutte le seguenti risorse, parametri e valori sono case-sensitive. L ordine dei parametri nella richiesta non ha importanza 2.2 CREAZIONE DI UN NUOVO UTENTE Al momento dell avvio il server non contiene alcun utente. Per inserire un nuovo utente, il server mette a disposizione la risorsa ag g iung iutente. Tale risorsa accetta come unico parametro valido nomeutente, che indica il nome dell utente che si vuole inserire. Un possibile esempio di richiesta valida è: GET /aggiungiutente?nomeutente=mario HTTP/1.0 user-agent: Mozilla 5.0 2

Utente mario inserito con successo. Browser: Mozilla 5.0 Possibili errori da gestire sono l inserimento di un utente già esistente. 2.3 AGGIUNGERE UNA RELAZIONE DI AMICIZIA Un utente può aggiungere un amico alla sua cerchia utilizzando la risorsa ag g iung i Amico. La risorsa aggiungiamico accetta come unici parametri validi nomeu t ent e e nome Ami co, il primo indica l utente che vuole creare l amicizia, mentre il secondo indica il nome (stringa) dell utente verso cui creare una relazione di amicizia. L arco che viene creato è non orientato e non necessita che l utente destinatario della richiesta accetti la creazione. Un possibile esempio di richiesta valida è il seguente: GET /aggiungiamico?nomeamico=ambrogio&nomeutente=mario HTTP/1.0 user-agent: Mozilla 5.0 Amicizia con ambrogio creata con successo Possibili errori da gestire sono l assenza del nodo di destinazione/sorgente della richiesta o la richiesta di creazione di una relazione che già esiste. 2.4 LISTA DEGLI AMICI Un utente può visualizzare i propri amici utilizzando la risorsa vedi Amici. La risorsa necessita dell argomento nomeu t ent e: l utente che richiede la lista degli amici. Nel corpo della risposta, ved i Ami ci restituisce un array JSON contenente una serie di oggetti JSON che rappresentano gli amici. Ogni oggetto JSON è costituito da un campo: idutente contenente il nome utente (stringa) dell amico. Un possibile esempio di richiesta valida è il seguente: GET /vediamici?nomeutente=mario HTTP/1.0 user-agent: Mozilla 5.0 3

[ {"idutente": "ambrogio"}, {"idutente": "michele"}, {"idutente": "marco"} ] Nell esempio michele, amico di mario, si è registrato con il browser Mozilla 5.0. Possibili errori sono costituiti dall errata sintassi della risorsa oppure da un nome utente non esistente. Un secondo insieme delle risorse disponibili riguarda la gestione del quiz e l interazione con gli amici per poter rispondere ad una domanda. Master Quiz implementa una modalità di quiz social in cui l utente che affronta una domanda può chiedere la risposta ad uno dei suoi amici entro un prefissato tempo. Le domande vengono generate e gestite in modo automatico dal server, non esistono amministratori che inseriscono manualmente domande o che decidono un eventuale scadenza anticipata della stessa. Il server estrae in modo casuale una domanda da una lista di domande/risposte memorizzate su un file e determina la data di scadenza. Le domande sono create in modo sequenziale e distanti una dall altra 2 minuti e valgono per tutti gli utenti iscritti. Ogni due minuti, il server quindi somministra un nuovo quiz con data di scadenza d s = d c + t dove d c è la data di creazione e t è un intero (numero di minuti) che viene passato come argomento alla classe che modella il server. Per esempio se il server viene creato alle ore 9:00 mediante java server 3 il primo quiz viene creato alle ore 9:02 e termina alle ore 9:05, il secondo inizierà alle ore 9:04 e terminerà alle ore 9:07, etc... Ad ogni domanda viene assegnato un identificatore univoco tra le domande disponibili, ciò significa che è possibile identificare in modo univoco qualsiasi domanda non scaduta. Una volta terminato il quiz è possibile riusare l id utilizzato verificandone dell univocità. Il server deve tenere traccia dei quiz validi ed chiudere i quiz che sono terminati assegnando un punto a tutti coloro che hanno risposto correttamente. 2.4.1 RICHIESTA RISPOSTA AD UN SINGOLO AMICO La risorsa r ichiediri spost a permette ad un utente di richiedere una risposta di una specifica domanda ad un solo amico. La risorsa richiede tre parametri: iddomanda specifica la domanda, nome Amico specifica l utente a cui chiedere la risposta e idutente è l utente che chiede la risposta all amico. Non è possibile richiedere una risposta di una stessa domanda a più amici e non è possibile richiedere una risposta ad utenti che non sono amici del richiedente. Un possibile esempio di richiesta valida è il seguente: GET /richiedirisposta?nomeutente=mario&nomeamico=michele&iddomanda=3 HTTP/1.0 host: localhost:8000 4

Richiesta inoltrata con successo Possibili errori possono essere causati dalla mancata presenza degli utenti oppure da un iddomanda non valido. 2.4.2 VISUALIZZA RICHIESTE DI RISPOSTA La risorsa vedirichieste permette ad un utente di vedere tutte le richieste che gli sono state inoltrate. La risorsa prevede un solo parametro denominato idutente, indicante l utente che vuole interrogare la risorsa. vedirichieste restituisce un array JSON contenente una serie di oggetti JSON che rappresentano gli amici. Ogni oggetto JSON è costituito da due campi: idutente contenente il nome utente (stringa) che ha inviato una richiesta e iddomanda, id della domanda oggetto della richiesta di aiuto. Un possibile esempio di richiesta valida è il seguente: GET /vedirichieste?idutente=mario HTTP/1.0 [ {"idutente": "ambrogio", "iddomanda": 3}, {"idutente": "michele", "iddomanda": 4} ] Possibili errori possono essere dovuti all assenza di idutente nella rete sociale. 2.4.3 QUIZ DISPONIBILI Un utente può verificare le domande ancora valide attraverso la risorsa g etqui z. La risorsa non prevede alcun parametro e restituisce un array JSON di oggetti JSON. Ogni oggetto contiene due campi: i d Domand a contenente l identificatore univoco della domanda e t est odomand a che contiene il testo della domanda. Un possibile esempio di richiesta valida è il seguente: GET /getquiz HTTP/1.0 5

[ {"testodomanda": "Chi ha vinto il mondiale in Brasile?", "iddomanda": 3}, {"testodomanda": "Quanto è lungo il fiume Po?", "iddomanda": 4} ] 2.4.4 RISPONDI Un utente può risolvere un quiz mediante la risorsa r i spondidomanda. La risorsa riceve tre parametri: iddomanda, r i spost a e idutente; il primo rappresenta l id del quiz, il secondo la risposta e il terzo parametro indica l utente che fornisce la risposta. E possibile cambiare una risposta sino al termine del quiz invocando più volte la risorsa r i spondi sullo stesso id. Allo scadere del quiz, se la risposta è corretta viene assegnato un punto all utente. Un possibile esempio di richiesta valida è il seguente: GET /rispondidomanda?idutente=mario&iddomanda=3&risposta=germania HTTP/1.0 host: localhost:8000 Risposta ricevuta 2.4.5 PUNTEGGIO ATTUALE Un utente può richiedere il punteggio attuale attraverso la risorsa g etpunteg g io. La risorsa richiede solo i du t ent e come parametro necessario. La risorsa pubblica un messaggio sul profilo di un utente definito dall id 100007294060146. Il messaggio ha la forma Punteggio < i du t ent e >: < punt eg g i o >. Un possibile esempio di richiesta valida è il seguente: GET /getpunteggio?idutente=mario HTTP/1.0 host: localhost:8000 La risorsa, oltre alla pubblicazione sul profilo Facebook (vedi figura 2.1), deve inviare anche una risposta HTTP che comunica l avvenuta pubblicazione. Per esempio: Pubblicazione del punteggio avvenuta con successo 6

Figura 2.1: Esempio di pubblicazione. L access token da utilizzare per la pubblicazione è il seguente: CAADaUwpF1ZAEBAAVZCFkokQdiruOrt6dvDp5jrGd6CFb s41eugnjzlu9jdrth2cuieczu7qnzffozc0fbyrzajmaqufubgq5x jijqxgbfvprwt90gwyskiswrlzczbzctfza6p8bvylvkocne0unxql uqhwgtzbxrjfalszb6yhzbw6tornqcmmcmunz8jjmg73rzbq1gozbsapuvovyf1rv6i9 3 MODALITÀ DI CONSEGNA Il progetto è individuale e verranno presi provvedimenti nel caso ci sia il sospetto di una eventuale copiatura. In particolare non verranno ammessi alla discussione del progetto e quindi saranno automaticamente esclusi dall appello quei progetti con almeno un file con indice di similarità superiore al 70% (moss, tool di Stanford). Questo per non incentivare progetti scritti singolarmente ma frutto di brain-storming troppo di gruppo. Il linguaggio da utilizzare per lo sviluppo è Java. Il codice del progetto e i relativi jar delle librerie utilizzate devono essere inviati al docente in una directory compressa (zip o tar.gz) denominata progettosettembre2014. La mail deve avere come oggetto ProgettoSettembre2014 e contenere nel corpo nome, cognome e numero di matricola dello studente. Il materiale deve essere consegnato entro le 16:59:59 del 18 settembre 2014. Valgono tassativamente le seguenti regole: Il codice che non compila non verrà considerato I progetti consegnati dopo la data di consegna non saranno ritenuti validi Eventuali errori sintattici riscontrati nell implementazione del protocollo HTTP oppure nel formato JSON rendono il progetto insufficiente. Per essere considerato sufficiente e quindi ammissibile per la discussione, il progetto deve implementare correttamente tutte le funzioni precedentemente illustrate. Principali criteri di valutazione del codice: Gestione di possibili errori nell input da parte dell utente Modularità del codice e rispetto del paradigma ad oggetti Gestione oculata delle eccezioni 7

Uso appropriato dei commenti Gestione e risoluzione di eventuali problematiche legate alla concorrenza sia lato client sia lato server Per chiarimenti, dubbi potete contattare il docente all indirizzo matteo.zignani@unimi.it, specificando come oggetto obbligatorio ProgettoReti. Eventuali modifiche al testo del progetto saranno comunicate sulla pagina web del corso. 8