MagiCum S.r.l.
Progetto Inno-School
Area Sviluppo Web
Autore: Alessio Bernardo
Revisione: 1
Data: 23/05/13
Titolo: Sviluppo piattaforma e-learning e sviluppo siti web
File: Documentazione tecnica
Sito: http://inno-school.netsons.org/
INDICE
1.0 Introduzione
........................................................................................
2.0 Piattaforme e-learning
........................................................................................
3.0 Moodle
........................................................................................
4.0 Requisiti d’installazione
........................................................................................
4.1 hardware
........................................................................................
4.2 software
........................................................................................
5.0 DBMS MySQL
........................................................................................
6.0 Modello client-server
........................................................................................
6.1 Server iterativo
........................................................................................
6.1.1 Esempio server iterativo ........................................................................................
6.2 Server concorrente
........................................................................................
6.2.2 Esempio server concorrente ......................................................................................
6.3 Esempio client
........................................................................................
1
1
1
1
1
2
2
2
2
3
3
4
6
INDICE FIGURE
Figura 1
........................................................................................ 4
1.0 Introduzione
Questo progetto mira a rinnovare il metodo di insegnamento, a partire dalle scuole elementari fino ad
arrivare all’università.
Si tratta di un nuovo metodo di insegnamento, online.
Attraverso delle piattaforme è possibile caricare online lezioni, slaid, immagini, filmati, quiz riguardanti le
lezioni con possibilità di valutazione e molto altro ancora.
Tutto ciò porta sempre più ad un informatizzazione della scuola. Infatti se uno studente dovesse risultare
assente, potrà studiare la lezione da casa. Basta una connessione ad internet ed un Pc.
2.0 Piattaforme e-learning
Tutto ciò è possibile grazie alle cosiddette piattaforme e-learning.
Si tratta di piattaforme basate su database in grado di raccogliere e salvare dati, rendendoli disponibili in
ogni momento agli utenti registrati.
L’utente, una volta fatto il login, è in grado di accedere ai dati, alle lezioni, ai quiz. Inoltre esiste la possibilità
di creare dei forum o chat con i quali si può comunicare con gli altri utenti.
Ci sono varie piattaforme e-learning disponibili, come ad esempio moodle, cloudcourse (google),
macromedia authorware (adobe).
3.0 Moodle
Moodle consente una gestione stratificata della piattaforma con i ruoli (admin, docente, editor, tutor, cotutor, ecc.) e una ampia offerta delle attività previste per il corso (Forum, Diari, Blog, Quiz, Risorse,
Sondaggi, Compiti, Chat, Workshop, ecc.).
Consente a docenti e tutor valide possibilità di tracciamento delle attività degli allievi e crea in
automatico report dettagliati. Il suo punto di forza maggiore sta nello sviluppo più rapido e significativo di
tutte le altre piattaforme e-learning. Ciò è dovuto al fatto che la sua community è una delle più numerose e
partecipate a livello internazionale.
4.0 Requisiti di installazione
Per poter installare moodle su un Pc o su un server sono richiesti dei requisiti minimi, sia hardware, sia
software.
4.1 Hardware
Moodle necessita di circa 150 MB di spazio sul disco fisso, ma va considerato che è necessario ulteriore
spazio per l'upload del materiale da distribuire, e un minimo di 256 MB di memoria RAM. Stando alle linee
guida formulate dalla community, è consigliabile disporre di almeno 1 GB di memoria RAM, e tenere conto
che per ogni 50 utenti connessi il sistema può richiedere fino ad 1 GB di RAM.
1
4.2 Software
Moodle è compatibile con qualsiasi computer che supporti PHP (con sistemi operativi come Unix, Linux,
Windows, Mac OS X) e si integra con diversi tipi di database (anche se la soluzione ottimale è anch'essa
open: MySQL).
Inoltre si tratta di un software open source.
5.0 DBMS MySQL
Come accennato in precedenza il DBMS ottimale da utilizzare è MySQL.
Per poterlo utilizzare è necessario l’installazione di un web server come easyPHP o XAMPP. L’importante è
che supportino PHP5.
Prima di iniziare l’installazione della piattaforma è necessario quindi creare il database in MySQL, sul quale
poi opererà la nostra piattaforma e-learning (in questo caso moodle).
6.0 Modello client-server
Tutte le piattaforme e-learning sono basate sul modello client-server.
Il client (utente) accedendo al server, accede a tutte le informazioni contenute da esso. Dopodiché il client
si disconnette chiudendo la sessione.
La presenza di un server permette ad un certo numero di client di condividerne le risorse, lasciando che sia
il server a gestire gli accessi alle risorse per evitare conflitti di utilizzazione.
Figura 1
6.1 Server iterativo
I server iterativi sono quei server in grado di comunicare con un client alla volta. Viene usato il protocollo
UDP.
2
6.1.1 Esempio server iterativo
import java.io.*;
import java.net.*;
public class serverIterativo{
public static void main(String[] args) throws Exception{
StringBuffer revline;
int len;
String line;
ServerSocket listen_socket = new ServerSocket(6789);
System.out.println("in attesa sulla porta 6789");
while(true){
Socket conn = listen_socket.accept();
System.out.println("Ricevuta richiesta di servizio");
// preparazione degli stream di input e output
InputStream sin = conn.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(sin));
PrintStream out = new PrintStream(conn.getOutputStream());
//lettura riga
line = in.readLine();
if(line == null) {System.out.println("Ricevuta linee vuota");}
else{
//rovesciamento riga
len = line.length();
revline = new StringBuffer(len);
for(int i = len-1; i>=0;i--)
revline.insert(len-1-i,line.charAt(i));
//stampa linea rovesciata
out.println(revline);
System.out.println("Inviata risposta");
}
}
conn.close();
}
}
6.2 Server concorrente
Il server è in grado di soddisfare più richieste contemporaneamente ricevute da diversi client
3
6.2.2 Esempio server concorrente
import java.io.*;
import java.net.*;
public class server extends Thread {
public final static int DEFAULT_PORT = 6789;
protected int port;
protected ServerSocket listen_socket;
//Crea un ServerSocket che attende la connessione; inizia il thread
public server(int port) {
if (port == 0) port = DEFAULT_PORT;
this.port = port;
try {listen_socket = new ServerSocket(port);}
catch (IOException e) {fail(e, "Ex creating server socket");}
System.out.println("Server: listening on port" + port);
this.start();
}
//Body del thread del server. Aspetta ed accetta connessioni da
//client. Per ogni connessione, crea un oggetto Connection per
//gestire la comunicazione attraverso il nuovo socket.
public void run(){
try {
while(true) {
Socket client_socket = listen_socket.accept();
Connection c = new Connection(client_socket);
}
}
catch(Throwable t){};
//Fa partire il server, in attesa su una porta opzionalmente
// specificata
public static void main(String[] args) {
int port = 0;
if (args.length == 1) {
try {port = Integer.parseInt(args[0]);}
catch (NumberFormatException e) {port = 0;}
}
new server(port);
}
}// fine classe server
4
//La classe seguente e' il thread che gestisce tutta la comunicazione col
//client
class Connection extends Thread {
protected
protected
protected
protected
Socket client;
BufferedReader in;
InputStream sin;
PrintStream out;
//Inizializza gli stream e avvia il thread
public Connection(Socket client_socket) {
client = client_socket;
try {
sin = client.getInputStream();
in = new BufferedReader(new InputStreamReader(sin));
out = new PrintStream(client.getOutputStream());
}
catch (IOException e) {
try {client.close();}
catch (IOException e2){};
System.err.println("Ex. while getting socket streams:" + e);
return;
}
this.start();
}
//Legge una linea, la rovescia e la rimanda indietro
public void run() {
String line;
StringBuffer revline;
int len;
try {
for(int i=len-1;i>=0;i--) {
//Legge una linea
line = in.readLine();
if(line == null) break;
//la rovescia
len = line.length();
revline = new StringBuffer(len);
for(int i=len-1;i>=0;i--)
revline.insert(len-1-i,line.charAt(i));
//scrive la linea rovesciata
out.println(revline);
}
}
5
catch (IOException e){}
finally {try {client.close();}
catch (IOException e2){};}
}
6.3 Esempio client
import java.io.*;
import java.net.*;
public class client{
public static final int DEFAULT_PORT = 6789;
public static void usage(){
System.out.println("Usage: java client <hostname> [<port>]");
System.exit(0);
}
public static void main(String args[]){
int port = DEFAULT_PORT;
Socket s = null;
if((args.length != 1 ) && (args.length != 2 )) usage();
if(args.length == 1 ) port = DEFAULT_PORT;
else {
try {port = Integer.parseInt(args[1]);}
catch (NumberFormatException e) {usage();}
}
try{ //ESEGUE RICHIESTE E LE ELABORA
finally{ try{if(s!= null) s.close();}
catch(IOException e2){}
}
}
}
try{
s = new Socket(args[0],port);
InputStream sin = s.getInputStream();
BufferedReader fromServer = new BufferedReader(new InputStreamReader(sin));
OutputStream sout = s.getOutputStream();
PrintWriter toServer = new PrintWriter(new OutputStreamWriter(sout));
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Connected to " + s.getInetAddress() + ":"+s.getPort());
String line;
while(true){
6
System.out.print(">");
line = null;
line = in.readLine();
if(line.equals(""))break;
toServer.println(line);
toServer.flush();
line = fromServer.readLine();
if(line == null){
System.out.println("Connection closed by server");
break;
}
System.out.println(line);
}
}
catch (IOException e){System.err.println(e);}
7