sabato 7 giugno 2014

[AGGIORNAMENTO] Tesine

Come anticipato al lezione, per aver assegnata una tesina, che può essere individuale o di gruppo, dovete inviarmi un documento di specifiche di poche pagine che riporta cosa volete fare, come volete farlo e quali tecnologie utilizzerete (fra quelle viste a lezione) e aspettare che io vi dia l'OK prima di considerare le specifiche accettate. Per scrivere le specifiche utilizzate come riferimento lo schema che vi ho mostrato in aula.
Le specifiche che mi invierete devono essere congrue col numero di "sviluppatori" del team. Per tesine individuali è quindi sufficiente implementare le funzionalità di base, per tesine da fare in coppia (o al massimo in tre) dovrete inserire necessariamente delle funzionalità aggiuntive.
E' anche possibile proporre  altri argomenti. Se avete in mente una nuova applicazione o volete sviluppare una web-application a supporto di tesine di altri insegnamenti contattatemi che ne parliamo.
Di seguito tre possibili temi da sviluppare.

Sistema di raccolta scommesse: web application che permette a utenti registrati di effettuare scommesse on-line. Gli eventi su cui poter scommettere sono memorizzati a gruppi sul server come files xml, di cui dovrete definire uno schema o dtd, e vengono inviati al client in base alle richieste dell'utente (ad esempio l'utente potrebbe chiedere le quote relative alle partite della prossima giornata della Serie A o della Premier League o del prossimo turno di Champions League, etc...). Potreste utilizzare anche XSL per formattare sul client i dati che ricevete dal server come XML.
L'utente deve potersi registrare al sistema, ricaricare il suo credito, effettuare le scommesse sugli eventi selezionati (se ha credito sufficiente), visualizzare le scommesse finora inviate al sistema. Tutte le scommesse di ogni utente saranno quindi memorizzate sul database.
Potete sviluppare un sistema base che tratta solo scommesse di partite di calcio e che presenta un'interfaccia utente basilare o un sistema molto più complesso con interfaccia utente evoluta e che permetta di gestire diverse tipologie di eventi sportivi (Formula 1, corse di cavalli, etc...) e relative modalità di scommessa.

Piattaforma gioco multiutente: web application che permette qulcosa di simile al gioco on-line disponibile nella maggior parte dei videogochi per console. In pratica dovrete scrivere una pagina web in cui è rappresentato un mondo virtuale (che potrebbe essere semplicemente un rettangolo con all'interno delle figure geometriche) e che si aggiorna continuamente in base all'input dell'utente e a ciò che fanno gli altri giocatori.
La pagina web tramite AJAX dovrebbe ricevere dal server la posizione e le caratteristiche di tutti gli attori presenti nel mondo e a sua volta deve comunicare al server cosa sta facendo l'utente locale in modo che il server possa tenere aggiornato il suo modello del mondo e comunicarlo agli altri utenti.
Per il rendering della pagina dovrete far uso di CSS e Javascript/jQuery.
Non è necessario che gli utenti siano registrati, al caricamento della pagina potrebbe essere mostrato l'elenco dei giocatori già in gioco e un pulsante che ci permette di unirci al gioco (dopo aver scelto un nickname).
La complessità di questo progetto può variare enormemente in base alla complessità del mondo che volete modellizzare (nella versione base i giocatori potrebbero essere dei cerchietti colorati che si spostano sullo schermo guidati dagli utenti, in versioni più complesse potrebbero sparare, interagire, compiere varie azioni, essere renderizzati in maniera più complessa, etc...).

Piattaforma di file storing e sharing: web application che permette agli utenti registrati di memorizzare file di testo su un server, visualizzarli, rimuoverli, rinominarli e condividerli con altri utenti. Per fare l'upload di un file sul server potete utilizzare Apache common file uploads (basta cercare su google "file upload JSP" per trovare tutorial ed esempi da cui prendere indicazioni e le poche righe di codice necessarie).
La versione base dovrebbe permettere agli utenti di registrarsi, di caricare, visualizzare, rinominare e cancellare i propri files di visualizzare i files che gli altri utenti hanno deciso di condividere. Quando un'utente carica un file può decidere se e con quali utenti condividerlo. Conviene utilizzare un database per memorizzare non solo l'anagrafica e le password degli utenti ma anche per l'elenco dei files caricati e i privilegi di condivisione dei vari files.
Versioni più evolute del sistema potrebbero prevedere l'organizzazione dei files in cartelle con le relative funzioni (crea cartella, sposta file in cartella, elimina cartella) o potrebbe prevedere un livello più dettagliato di condivisione (ad esempio permettere ad altri utenti di cancellare il file) la gestione di altri tipi di files o quanto altro ritenete utile. L'interfaccia utente potete realizzarla in maniera essenziale o più elaborata (ad esempio come quella di dropbox).

mercoledì 4 giugno 2014

JSP handout, DB access note and new exercise set

Available for download the slides and sample code shown in class about JSP, notes (in italian) for a quick introduction do database access in java and sample JSP code on how to access a SQL database.
A final exercise set on servlet, JSP and DB access is also available.