giovedì 14 maggio 2015

A.S. 2014/15 - Esercitazioni di laboratorio per la materia SISTEMI E RETI/2 [slide]

ESERCITAZIONE 9
Realizzare un sistema che permetta il controllo (bidirezionale) dell'hardware da una qualsiasi postazione remota.
Es. comando di un sistema di irrigazione a tre zone da remoto, leggiamo i sensori di umidità del terreno, sensore pioggia

OBIETTIVI DISCIPLINARI
- gestione delle sessioni
- accesso ai file tramite php

PROCEDIMENTO / SPECIFICHE INIZIALI
realizzare la relazione tecnica già nelle fasi iniziali del progetto
. nel sistema avremo due applicazioni in esecuzione. La prima, scritta in bash si occuperà di controllare l'hardware, l'altra applicazione scritta in php ci permetterà di comunicare con il mondo esterno attraverso il cloud.
. l'applicazione php sarà composta da tre file: index.php, lib_funzioni.php, controllo.php
. la comunicazione tra script bash e php avverrà tramite file di testo comandi.ini
. in ogni pagina del sito deve essere chiamata la funzione utente validate, che controlla se la $_SESSION["userid"] è nulla o vuota, in questo caso non deve essere concesso di proseguire nella pagina e redirezionare sulla pagina di login e visualizzare eventualmente un messaggio di errore

GRIGLIA DI VALUTAZIONE FASE1:
[1 punto] - relazione: premesse teoriche/specifiche sulle sessioni ed accesso ai file
[2 punti] - relazione: diagramma di flusso sulla funzione autenticazione tramite db su file
[1 punti] - utilizzare una libreria di funzioni creata su file separato
[2 punti] - la pagina index, letto lo stato precedente tramite le variabili get, post e di sessione, deve gestire l'autenticazione, la visualizzazione di eventuali messaggi di errore, il form di login, la ridirezione alla pagina di controllo e il logout;
[2 punti] - la pagina controllo.php serve per solo controllare l'impianto di irrigazione, quindi, dovrà interagire con il programma bash tramite la scrittura di comandi nel file di testo comandi.ini. Inoltre, verifica se l'utente è autorizzato all'accesso ad esempio utilizzando una variabile di sessione. Prevedere un link ad index.php o un form con pulsante per il logout.
[1 punto] - [opzionale] script bash che legge i comandi presenti nel file "comandi.ini" e interagisce con l'hardware collegato alla RaspberryPI
[0,5 punti] - convenzioni di scrittura codice
[0,5 punti] - relazione: collaudo

GRIGLIA DI VALUTAZIONE FASE2:
realizzare uno script bash che in base ai comandi presenti nel file di testo "comandi.ini" accederà o spegnerà i tre led presenti sulla nostra RaspberryPI, prima bisogna realizzare il diagramma di flusso e definire il protocollo di comunicazione. 

RIFERIMENTI / LINK
- http://php.net/manual/it/book.session.php
http://php.net/manual/it/book.filesystem.php
http://www.html.it/articoli/sessioni-php-cosa-sono-come-si-usano-1/
http://elinux.org/RPi_Low-level_peripherals
http://it.wikipedia.org/wiki/Relè

-------------------------------------------------------------------------------------------------------------
ESERCITAZIONE 8
PHP Command Line Interface

OBIETTIVI DISCIPLINARI
- php da linea di comando

PROCEDIMENTO / SPECIFICHE INIZIALI
- Installazione di php5-cli
apt-get install php5-cli
echo '#!/usr/bin/php -q' > hello.php
echo '<?php echo "Ciao Mondo\n\n" ?>' >> hello.php
chmod +x hello.php
./hello.php
php hello.php

RIFERIMENTI / LINK
http://php.net/features.commandline

-------------------------------------------------------------------------------------------------------------
ESERCITAZIONE 7 (Datafile server upload, data import export)
Importazione sul server di un database di utenti per una successiva amministrazione tramite applicazione web

OBIETTIVI DISCIPLINARI
- upload di file sul server
- importazione ed esportazione di dati tra applicazioni

PROCEDIMENTO / SPECIFICHE INIZIALI
realizzare la relazione tecnica già nelle fasi iniziali del progetto
. creazione su file separato di una libreria di funzioni
. diagramma di flusso della funzione che importa i dai dati e li visualizza come tabella html.
. opzionale [per ogni record  aggiungere un pulsante per l'eliminazione dell'account corrispondente all'utente, o uno per la creazione di account]
. opzionale [prevedere un pulsante per la creazione di tutti gli account in un unico passaggio]
. Importazione dei dati sul server:
  * scegliere il formato dei dati in ingresso (database utenti): csv, campi a larghezza fissa o xml
  * importazione dei dati: tramite textarea, fileupload o tramite webservice
  * a seguito della pressione del pulsante "submit" l'applicazione dovrà importare i dati e visualizzarli all'interno di una tabella
  * i campi del database utente potrebbero essere: nome, cognome, userid, password
FASE1: nella pagina html sarà presente una textarea per l'inserimento dell'intero database; usiamo un separatore per delimitare i vari campi dei record; il database dovrà contenere più record; i dati elaborati verranno visualizzati come tabella html.
Scrivere una funzione che ha come parametro l'intero database e restituisce una stringa con la tabella html contenente il database.
FASE2: controlliamo la validità dei dati inseriti. Qualsiasi dato inserito deve essere gestito senza terminazioni anomale del programma. Visualizzare eventuali messaggi di errore. Utilizzare le funzioni presenti in un file separato.
FASE3: scrittura di log relativi alle operazioni eseguite. Ad ogni importazione di dati visualizzare anche il file di log aggiornato contenente le seguenti informazioni: data, ora, user, loglevel, description. La funzione log va aggiunta alla libreria di funzioni.

GRIGLIA DI VALUTAZIONE FASE1:
[2 punto] - relazione: premesse teoriche/specifiche
[3 punti] - relazione: diagramma di flusso sulla funzione dbToTable()
[1 punti] - libreria di funzioni
[2 punti] - funzione dbToTable()
[1 punti] - convenzioni di scrittura codice
[1 punti] - relazione: collaudo


RIFERIMENTI / LINK
http://www.w3schools.com/tags/tag_textarea.asp http://www.w3.org/TR/html401/interact/forms.html#h-17.7 http://www.w3schools.com/php/php_file_upload.asp
http://it.wikipedia.org/wiki/Web_service

-------------------------------------------------------------------------------------------------------------
ESERCITAZIONE 6 (Login, backup e downlad)
Creare un applicazione php che dopo aver autenticato l'utente esegua uno script di backup della propria hompage, ne permetta il successivo download.

OBIETTIVI  DISCIPLINARI
- funzione isset
- metodo post
- array, funzione explode
- comando tar della shell
- inclusione di file tramite i comando require e include 
- utilizzo delle funzioni utente

PROCEDIMENTO / SPECIFICHE INIZIALI .
realizzare la relazione tecnica già nelle fasi iniziali del progetto
. diagramma di flusso della funzione autenticazione (lettura da file del database).
. creazione su file separato di una libreria di funzioni
. il passaggio dei dati avviene con il metodo post
. Login -> autenticazione  nella pagina php tramite costante e utente singolo, più utenti, database su file di testo (explode), file xml, database relazionale
. esecuzione dello script shell per il backup, tar
. download del backup -> link al file creato, redirect ad un'altra pagina php che usa come mime type octetstream.
FASE1: autenticazione tramite costante e utente singolo
FASE2: file separato di una libreria di funzioniautenticazione tramite database su file con relativo D.F.;

RIFERIMENTI / LINK
http://php.net/manual/it/function.explode.php
http://php.net/manual/it/language.functions.php
http://php.net/manual/it/function.file.php
http://php.net/manual/it/reserved.variables.post.php
http://php.net/manual/it/function.exec.php
http://php.net/manual/it/function.shell-exec.php
http://php.net/manual/it/function.header.php
http://php.net/manual/it/function.require.php
http://php.net/manual/it/function.include.php

-------------------------------------------------------------------------------------------------------------
ESERCITAZIONE 5 (Homepage)
Realizzazione di una homepage che permetta un accesso rapido agli esercizi svolti

OBIETTIVI DISCIPLINARI
- tabelle html (tag table, td, tr) e fogli di stile

PROCEDIMENTO / SPECIFICHE INIZIALI
- creare nella propria home directory il file index.htm, che diventerà la homepage personale dell'alunno;
- organizzazione dei file presenti nella home directory all'interno di cartelle (es1, es2,...) una per ogni esercizio assegnato, il nome del file gli esercizi dovrà essere index.html o index.php
- la pagina html conterrà una tabella con i link, e una breve descrizione, alle pagine dei vari esercizi svolti ad oggi (dovrà essere aggiornata anche per i futuri esercizi). Saranno presenti anche i link alla homepage del corso e della classe;
- l'aspetto grafico della pagina andrà controllato tramite un foglio di stile esterno, nel quale andrà impostato il colore "DarkBlue" per tutti i testi presenti nel body e il font "small verdana"
- all'interno della pagina personalizzare lo stile generale precedentemente impostato e utilizzando l'attributo classe visualizzare le righe pari e dispari della tabella con un colore di sfondo differente

RIFERIMENTI / APPROFONDIMENTI
http://www.w3.org/TR/html401/struct/tables.html http://www.w3schools.com/tags/tag_table.asp http://www.w3schools.com/tags/tag_tr.asp http://www.w3schools.com/tags/tag_td.asp http://www.diodati.org/w3c/css2/cover.html#minitoc http://www.w3schools.com/css/css_selectors.asp http://logica.uniroma3.it/csginfo/fondamenti/0506/lezioni/HTML/html-3-2.htm http://www.w3.org/TR/2011/REC-CSS2-20110607/

-------------------------------------------------------------------------------------------------------------
ESERCITAZIONE 4 (Calendario)
Applicazione web per la visualizzazione di una porzione di calendario in base ad una determinata data fornita dall'utente.

OBIETTIVI DISCIPLINARI
- Le funzioni per la manipolazione di data e ora - i cicli for

PROCEDIMENTO / SPECIFICHE INIZIALI
- creare nella propria home directory la cartella "es4" con all'interno i file index.htm e calendario.php
- la pagina html conterrà un form per l'inserimento della data
- la pagina php in base alla data inserita visualizzerà la settimana del calendario contenente la data medesima ed evidenziandola
- l'esercizio si dovrà completare attraverso step intermedi che andranno documentati all'interno del file .html, nella cartella dovranno essere presenti vari file .php relativi agli step individuati per la risoluzione del problema. Ecco alcuni step suggeriti:
. visualizzare la data inviati dalla pagina html tramite il form
. creare una tabella formata da 7 righe e più colonne
. evidenziare una sola riga della tabella scelta a piacere
. estrarre dalla data il mese e visualizzarlo nel formato esteso ("Ottobre") come caption della tabella
. estrarre della data il giorno della settimana in formato numerico
- rispettare le convenzioni di scrittura del codice spiegate in classe

RIFERIMENTI / LINK
http://php.net/manual/it/ref.datetime.php

-------------------------------------------------------------------------------------------------------------
ESERCITAZIONE 3
Applicazione web che dopo aver chiesto all'utente nome e orario, visualizzi un messaggio conseguente. Es. buongiorno Mario, buona notte Mario, ecc.

OBIETTIVI DISCIPLINARI
- Il costrutto if, else, elseif, in php
- i diagrammi di flusso PROCEDIMENTO / SPECIFICHE INIZIALI
- creare nella propria home directory la cartella "es3" con all'interno i file index.htm e ora.php
- la pagina html conterrà un form per l'inserimento dell'ora e del nome
- la pagina php in base all'ora inserita visualizzerà un messaggio del tipo: "Buongiorno Mario Rossi", "Buon pomeriggio Mario Rossi" oppure "Buonanotte  Mario Rossi"
- realizzare il diagramma di flusso relativo alla pagina php, è possibile usare il programma online https://www.draw.io/
- il codice della pagina php dovrà essere perfettamente corrispondente al diagramma di flusso precedentemente realizzato
- eventuale gestione dell'orario inserito dall'utente in più formati, es. 8.30 o 12:23
- il codice php dovrà gestire le situazioni non valide e non previste

RIFERIMENTI / LINK
http://it2.php.net/manual/it/control-structures.if.php http://it.wikipedia.org/wiki/Diagramma_di_flusso https://www.draw.io/

-------------------------------------------------------------------------------------------------------------
ESERCITAZIONE 2
Creazione di semplici pagine PHP in grado di visualizzare i dati provenienti da un form html

OBIETTIVI  DISCIPLINARI
- i tag form html, usare correttamente l'attributo action
- il tag input per creare una casella di testo e un pulsante di "submit"
- passaggio di parametri tramite querystring, metodo get
- le variabili in php
- le variabili globali predefinite di Php
- comando echo per la generazione di output html

PROCEDIMENTO / SPECIFICHE INIZIALI
- creare una pagina html contenente un modulo da inviare ad una pagina php:
. chiudere correttamente ogni tag html
. indentare con due spazi i tag nidificati
. provare a visualizzare caratteri speciali (<,>, è, ...)
. usare il tag form con l'attributo action contenente all'interno due caselle di testo e il pulsante invio
- realizzare una pagina html con all'interno un modulo web (form metodo post) che richiama una pagina php
- realizzare una pagina php che sia in grado di visualizzare i dati provenienti dal form della pagina chiamante

RIFERIMENTI / LINK
http://www.w3schools.com/html/html_forms.asp
http://www.w3schools.com/tags/tag_input.asp
http://php.net/manual/it/language.variables.php
http://php.net/manual/it/reserved.variables.php
http://php.net/manual/it/reserved.variables.get.php
http://it.wikipedia.org/wiki/Query_string
http://it2.php.net/manual/it/function.echo.php

-------------------------------------------------------------------------------------------------------------
ESERCITAZIONE 1bis
Configurazione dell'ambiente di lavoro per lo sviluppo di applicazioni web su server Linux 

OBIETTIVI DISCIPLINARI
- Installazione piattaforma LAMP (comando apt-get)
- Introduzione ai server web, alle pagine html e al protocollo http
- Introduzione a PHP e creazione di una semplice pagina di prova

PROCEDIMENTO / SPECIFICHE INIZIALI
1) Installare su macchina virtuale la piattaforma LAMP
sudo apt-get update && apt-get upgrade
sudo addgroup --system www-data
sudo adduser www-data www-data
sudo apt-get install -y lighttpd
sudo netstat -na
sudo apt-get install -y php5-cgi
sudo apt-get clean
sudo lighty-enable-mod cgi
sudo lighty-enable-mod fastcgi
sudo /etc/init.d/lighttpd force-reload
sudo service lighttpd restart
sudo pico /etc/lighttpd/lighttpd.conf
# Add the following to the end of the file:
# fastcgi.server = ( ".php" => (("bin-path" => "/usr/bin/php-cgi", "socket" => "/tmp/php.socket")) )
# cgi.assign = (".py" => "/usr/bin/python",".pl" => "/usr/bin/perl")
# server.error-handler-404 = "/index.html"
#modificare il file /etc/lighttpd/lighttpd.conf
#modificare il file /etc/php5/cgi/php.ini sudo pico /var/www/phpinfo.php 
#add:  <?php phpinfo(); ?>
# modifica di php.ini: mem file size upload
# Install my web site (hello.php, hello.py, hello.pl)

2) Esercizio Hello World in PHP - creare nella propria home directory la cartella "es1" con all'interno i file index.php - il contenuto della pagina php dovrà essere <?php phpinfo(); ?>
3)  installare la piattaforma LAMP su macchina virtuale - realizzare una semplice pagina php

RIFERIMENTI / APPROFONDIMENTI
http://php.net/
http://www.penguintutor.com/linux/light-webserver https://wiki.debian.org/LaMp http://lowendbox.com/blog/yes-you-can-run-18-static-sites-on-a-64mb-link-1-vps/
https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-debian

-------------------------------------------------------------------------------------------------------------
ESERCITAZIONE 1
Creazione di un account sul server Linux

OBIETTIVI DISCIPLINARI
- istruzioni per la gestione degli utenti

PROCEDIMENTO / SPECIFICHE INIZIALI
- Creare un'utenza per poter lavorare singolarmente sul server:
. il nome utente deve essere cognome.nome
. la homedirectory deve essere /var/www/classe/cognome.nome (es. /var/www/4F/rossi.mario)
 # per verificare la corretta creazione ci colleghiamo in remoto usando il software MobaXterm
cat /etc/passwd              # l'utente creato è stato aggiunto al database utenti
ls -l /var/www/classe     # la homedirectory è stata creata correttamente e le relative permission
login cognome.nome     # l'account è operativo
who                               # vediamo l'elenco di tutti gli utenti connessi al server
useradd rossi.mario -d /var/www/4F/rossi.mario -m #
oppure
useradd rossi.mario -b /var/www/4F -m
userdel rossi.mario    #in caso di errori
passwd rossi.mario

 RIFERIMENTI / APPROFONDIMENTI
http://www.pluto.it/files/ildp/guide/abs/system.html

-------------------------------------------------------------------------------------------------------------
Dati di pubblicazione iniziale 30 sett 2014

Nessun commento:

Posta un commento