TPSit Quinta
Saluti a tutti! Cosa faremo quest'anno in TPS?
Cos'è l'HTTP
L'uso dei Socket TCP in Java
L'uso dei Socket UDP in Java
XML e json per mettere a disposizione i propri dati al mondo
L'uso dei Web Service REST
La realizzazione di un'app Android
1) HTTP
Teoria vista in classe dell'HTTP (file sul cloud)
Funzionamento del protocollo HTTP: https://developer.mozilla.org/en-US/docs/Web/HTTP (o documento nel cloud)
Utilizzo degli strumenti di sviluppo dei browser, accessibili con il tasto F12, per accedere all'area Network e quindi studiare gli Header/Body del protocollo HTTP
Utilizzo del sito www.hurl.it (o simili) per lo studio dei parametri e degli header del protocollo HTTP
2) Socket
Esempio di un programma che usa un Socket Java per l'invio di numeri
Esempio di un programma che usa un Socket Java per l'invio di testo
L'indovino
Realizza un programma con i Socket che ha le seguenti caratteristiche:
Un client si connette al server. Il server genera per quel client un numero casuale e lo memorizza. L'utente usando il client poi cercherà di indovinare il numero. Il server risponde:
numero più alto,
numero più basso o
indovinato
confrontando il numero inviato con quello che ha generato. Se il numero inviato è corretto allora il server genererà per quel client un altro numero nel caso lo voglia indovinare. Il Client potrebbe essere simile all'immagine a lato e più client possono giocare insieme.
Riepilogo funzionalità:
Il client invia al server un numero scelto dall'utente. (2)
Il server genera un numero casuale e risponde se il numero ricevuto è più alto o più basso. Il client lo visualizza. (2)
Ad ogni connessione un client troverà sempre lo stesso numero da indovinare finché non l'avrà indovinato. (2)
Se il client indovina il server glielo comunica e lui lo mostra con un suono. (1)
Il client è grafico (1)
La grafica è colorata e ha delle immagini (1)
Il server è grafico e mostra qualche informazione del gioco (1)
L'oroscopo del giorno
Crea un server generatore di oroscopi e un client che chiede l'oroscopo. Il client si connette e invia un segno zodiacale a scelta dell'utente. Il server ricevuto il segno zodiacale "genera" un oroscopo e lo restituisce al client. Se un client chiede due volte un oroscopo per lo stesso segno, nello stesso giorno, il server restituisce il precedente.
Riepilogo funzionalità:
Il client invia al server un segno zodiacale scelto dall'utente. (2)
Il server genera un oroscopo casuale e risponde. Il client lo visualizza. (2)
Ad ogni connessione un client troverà sempre lo stesso oroscopo per un determinato segno. (2)
Quando il client riceve l'oroscopo emette un suono divertente. (1)
Il client è grafico (1)
La grafica è carina, colorata e ha delle immagini (1)
Il server è grafico e mostra qualche informazione del gioco (1)
Uso dei thread per modificare in modo asincrono la grafica, in modo da evitare che la grafica si blocchi
Utilizzo di GIT per pubblicare un progetto eclipse su github
Codice sorgente di una chat client/server con client multipli contemporanei e con il protocollo TCP
Codice sorgente di una trasmissione client/server tramite datagram/UDP
Il semaforo (datagram)
Realizza un server grafico che mostra un semaforo che diventa rosso, giallo o verde a seconda che riceva da un client un numero che diviso per 3 dia resto 0, 1 o 2. Ad esempio se riceve 30 si illumina il colore rosso.
Puoi modificare il codice d'esempio qui sopra.
Super Socket
Per tutti i dettagli guarda il documento condiviso.
Da presentare con un canovaccio simile a questo.
Valutazione:
Codice su github (1)
Documento con i requisiti (1)
Documento con il protocollo (1)
Il gioco utilizza i socket multi o datagram (1)
Il gioco funziona come previsto (4)
Il gioco ha qualcosa di originale rispetto a quanto descritto (2)
3) XML, json e Web Services
I servizi web sono utilizzati per fornire dei servizi ad applicazioni di ogni genere (pagine web, android, ecc...) e sono in genere "hostati" da un server web. Tramite il protocollo HTTP vengono scambiati i dati tra server e client.
I web services producono spesso dei dati xml che possono essere utilizzati in java (dom, jdom, sax, jaxb, ...) e javascript, php, ecc...
Un esempio di come utilizzare i web services in jaxb:
Elenco siti di web services:
Voli/Hotel (Skyscanner, Sabre, FlightXML)
Traduzione (yandex)
Mega collezione di web services (toddmotto)
Ce ne sono sicuramente tanti altri se cerchi su internet! :) (Ebay, amazon, ecc...)
Un po' di riferimenti:
Cos'è un restuful web service
Piccolo progetto da svolgere singolarmente:
Scegli un servizio web che ti interessa
Realizza un client grafico che permetta di fare delle ricerche utilizzando il servizio scelto tramite jaxb con qualche elaborazione (max 4pti)
Realizza una presentazione con: (3pti, ogni punto sotto vale 0,5)
Una prima pagina con il nome dell'applicazione e di chi ci ha lavorato
La descrizione del servizio web scelto, spiegando cosa fa e i parametri che si possono inviare
l'xml di partenza del servizio con evidenziato qualcosa di interessante
l'xsd generato e la spiegazione dei tag (qui un po' di documentazione su w3schools)
la classe jaxb generata
i requisiti/le attività dell'applicazione con i tempi di sviluppo (anche la presentazione è un'attività!)
Aggiungi qualcosa che ti ispira, personalizza in modo originale (2pti)
Variazioni ai punti precedenti possono essere discusse con i prof.
4) Realizzazione di un web service in PHP
Codice di base preparato dal professor Greco. Comprende una pagina html con un form, una pagina php che genera html, xml o json. Degli script per creare e popolare un database di prova.
Link ad alcuni database di prova di mysql (sakila e altri. E' possibile che per alcuni database debba essere aumentata la proprietà max_allowed_packet nel file di configurazione di mysql, my.ini)
Tutorial Json sul canale Biagio! :) Introduzione, Json e php, Json e PHP (parte 2).
Codifica/Decodifica in json da PHP
Codifica/Decodifica in json da Java
Tutorial di Mysqli per accedere al database da MySQL
Esercizio risolto di web service php che esegue un logaritmo con server in php e client in java.
Esempio di Web Service REST in Java (curiosità)
5) Android
Argomenti base di Android affrontati:
Activity
Toast
Intenti espliciti
Internazionalizzazione
Creazione di una versione landscape del layout
Salvataggio dati con Bundle e Shared Preferences
Evento onclick e modifica dei componenti grafici usando findViewById
Riferimenti:
Guida Android in pdf
Sito ufficiale di Android (Documentazione, tutorial, Android studio, ecc...)
Ottime guide e tutorial per quasi tutto quello che può servire su tutorials point
Progettino Android 1: Link alle specifiche, Link alla presentazione
6) Flutter
Flutter è un framework che consente di sviluppare applicazioni per windows, linux, apple, ios, android e web. Utilizza il linguaggio Dart.
Di seguito una presentazione che mostra gli elementi base di flutter.
7) I sistemi distribuiti
Cosa sono i sistemi distribuiti?
Sistemi Distribuiti
Scegli uno dei seguenti "sistemi distribuiti":
Scelte le coppie e il sistema con la formula ((il tuo numero in classe)%12+1) spiega:
Caratteristiche e funzionalità del tuo cloud
Identifica quali benefici e svantaggi puoi riconoscere nel tuo cloud tra le cose viste nella presentazione fino a pagina 10.
Infine consegna sul cloud il documento (word)
X) Varie
Json e XML
Accenni Javascript
XML
XML Schema
Oggetti Javascript (classless)
Json
MongoDB