Progetto Java Programmazione 3

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Progetto Java Programmazione 3"

Transcript

1 Progetto Java Programmazione 3 Gioco On-Line: HeadKnock Scopo di tale progetto è di creare un gioco on-line che quindi permetta a più processi Client di interagire tra loro mediante un processo Server. Il linguaggio di programmazione scelto è: Java (versione 1.6). Studente: Colato Roberto

2 Indice Introduzione Pag. 01 Descrizione del progetto Pag. 03 Descrizione e schemi dell architettura Pag. 05 Descrizione e schemi del protocollo Pag. 07 Dettagli implementativi de client Pag. 08 Dettagli implementativi de server Pag. 09 Manuale Utente Pag. 10 Sorgenti o AppLock.java Pag. 11 o Audio.java Pag. 14 o BackgroundPanel.java Pag. 17 o Block.java Pag. 18 o ClientConfig.java Pag. 21 o Database.java Pag. 22 o Encrypter.java Pag. 25 o Game.java Pag. 26 o Instructions.java Pag. 32 o List.java Pag. 38 o Loading.java Pag. 41 o Lobby.java Pag. 42 o Login.java Pag. 49 o Matrix.java Pag. 56 o Menu.java Pag. 58 o MyTimer.java Pag. 65 o Planner.java Pag. 67 o Server.java Pag. 69 o ServerConfig.java Pag. 70 o ServerThread.java Pag. 71 o Table.java Pag. 78 o TopBar.java Pag. 81 o User.java Pag. 84 o UserSettings.java Pag. 86 Link Utili Pag. 87 2

3 Descrizione del progetto Headknock è un gioco di logica che consiste nel totalizzare il maggior punteggio entro il tempo limite, andando a completare degli schemi logici, obbiettivo principale è quello di permettere agli utenti di sfidarsi on-line, tuttavia nell applicazione sono presenti altre specifiche, come ad esempio una modalità di gioco off-line che permetterà all utente di migliorare le proprie abilità e di prendere confidenza con il gioco prima di cimentarsi in sfide on-line e di migliorare il proprio record personale, o semplicemente giocare una partita senza necessità di connettersi al server. Inoltre è presente un sistema che permette la creazione di account su cui si basa anche una classifica online consultabile direttamente dall applicazione previa autenticazione sul server con il proprio account anch esso creabile direttamente dall applicazione client. Il Server è progettato in modo tale da accettare le richieste di connessione dei Clients che saranno poi gestite singolarmente da Servet-Threads appositamente generati. Inoltre l applicazione lato Server si interfaccia con un Database MySQL in cui salve e legge informazioni utili che rispettivamente riceve ed invia ai client medianti gli specifici Server-Threads. Il Client interagisce con il Server-Thread assegnatogli mediante appositi comandi grafici, inoltre sono disponibili modalità di gioco e comandi che non necessitano di connessione al server e dunque possono essere eseguite dall utente senza essere necessariamente connessi al Server. Inoltre, sia l applicazione Client, che quella Server, sono progettate per gestire opportunamente errori ed eccezioni che potrebbero insorgere durante la connessione in modo da evitare stalli, crash e situazioni impreviste (ad esempio la disconnessione improvvisa di un client in un qualunque momento). Di seguito alcune schermate d esempio dell applicazione. 3

4 4

5 Descrizione e schemi dell architettura L'architettura del progetto prevede le seguenti fasi. Inizialmente il Client si connette al server principale. Il Server Principale (S) accetta la connessione su un nuovo socket diverso da quello di ascolto, fatto ciò crea un nuovo Thread (ST) a cui passerà il socket. Il Client, è ora pronto ad interagire con gli atri Client tramite il proprio Server Thread (ST). Di seguito due schemi che rendono meglio l idea dell architettura del progetto: 5

6 6

7 Descrizione e schemi del protocollo L'intero progetto è sviluppato utilizzando connessioni TCP poiché, si ritiene indispensabile che i dati siano trasmessi su un canale di comunicazione stabile e affidabile. Volendo dare uno schema al progetto possiamo prevede le seguenti fasi di schematizzazione: 7

8 Dettagli implementativi del Applicazione Client L applicazione Client è scritta in modo tale da permettere all utente di giocare sia in modalità off-line che in modalità on-line, inoltre nell applicazione è presente una guida che spiega i comandi e le logiche di gioco. La modalità off-line permette all utente giocare in locale e migliorare il proprio record personale. La modalità on-line necessita di una connessione al server, qualora questa non sia disponibile un messaggio ne darà notifica all utente. Una volta stabilita la connessione con il server verrà chiesto all utente di effettuare il login con il proprio account o in alternativa di crearne uno, inoltre è presente nella schermata di login un checkbox che se spuntato ricorderà username e password inserite per gli accessi successivi. Dopo che l utente si è autentificato sul server, verrà visualizzata una schermata di lobby da cui sarà possibile lanciare e giocare sfide, nonché consultare la classifica globale basata su un valore rango che varia a seconda dell abilità di gioco dell utente nelle partite online e al numero di partite giocate. Cliccando sull apposito tasto sfida nella schermata di lobby, l utente entra in modalità sfida, tale modalità resterà attiva finche non sarà creata una nuova sfida da giocare per l utente. Nelle creazione di una nuova sfida il server, previa consulto del database, associa 2 utenti (sfidanti) scelti casualmente tra quelli che hanno la modalità sfida attiva (anche gli utenti off-line possono avere la modalità sfida attiva). Per limitare il potenziale traffico inutile che alcuni utenti potrebbero intenzionalmente causare sul server lanciando una grossa quantità di sfide che poi non saranno giocate, il sistema implementa un meccanismo tale che non permette di entrare in modalità sfida finchè c è almeno una sfida in attesa di essere giocata. Schema UML Client: 8

9 Dettagli implementativi del Applicazione Server Il Server accetta le connessioni dai client che poi passa a specifici Server-Threads che gestiscono le richieste dei client ad essi connessi in un rapporto 1 a 1. L applicazione Server implementa dei meccanismi che permetto all utente di registrarsi con username univoci, autenticarsi, generare nuove sfide di gioco, nonché fornisce quando necessario i dati, che correttamente interpretati dall applicazione client, permettono l esecuzione di importanti funzioni relative alla modalità di gioco on-line, nonché la visualizzazione della schermata di lobby e della classifica. Il server gestisce opportunamente un DataBase MySQL per memorizzare informazioni relative agli utenti e alle sfide che quest ultimi intraprendono nella modalità di gioco on-line, inoltre le informazioni memorizzare permetto di stilare una classifica dei giocatori. Schema UML DataBase: Schema UML Server: 9

10 Manuale utente Client I applicazione Client è composta dalle seguenti classi: AppLock.java = Impedisce avvio multiplo dell applicazione sullo stesso dispositivo. Audio.java = Gestisce le componenti audio. BackgroundPanel.java = Consente la creazioni di pannelli con immagine come sfondo grafico. Block.java = Elemento base del campo di gioco. ClientConfig.java = Parametri di configurazione dell applicazione client. Encrypter.java = Consente di criptare stringhe. Game.java = Avvia e gestisce una partita di gioco sia on-line che off-line. Instructions.java = Contiene la guida con le istruzioni ed i comandi di gioco List.java = Usata per visualizzare la classifica di gioco in modalità on-line. Loading.java = Rappresenta una Pagina di caricamento (Prettamente Grafica) Lobby.java = Pannello con informazioni e comandi utili per la modalità on-line. Login.java = Schermata che permette all utente di registrarsi e o autenticarsi. Matrix.java = Oggetto composto da blocco utilizzato per creare il campo gi gioco. Menu.java = Interfaccia grafica con comandi iniziali dell applicazione client. MyTimer.java = Rappresentazione di un Timer, sia graficamente che funzionalmente. Planner.java = Crea lo schema grafico risolutivo per la specifica matrice di gioco. Table.java = Usata per ottenere una visualizzazione schematica delle informazioni. TopBar.java = Barra grafica con comandi di gestione Audio dell applicazione. User.java = Usata per facilitare la comunicazione tra client e server. UserSettings.java = Contiene le preferenze dell utente (Audio on/off, username, ecc). Server I applicazione Server è composta dalle seguenti classi: Database.java Encrypter.java Server.java ServerConfig.java ServerThread.java User.java = Classe che facilità l utilizzo del DataBase grazie a diversi metodi. = Consente di criptare stringhe. = Avvia l applicazione server, che si mette in attesa di nuove connessioni. = Parametri di configurazione dell applicazione server. = Gestisce la connessione con un client, servendone le richieste. = Usata per facilitare la comunicazione tra client e server. L applicazione è stata scritta utilizzando JDK 1.6, inoltre utilizza diverse risorse grafiche e multimediali, al fine di rendere più avvincente l esperienza di gioco. Di seguito i sorgenti che compongono l applicazione in ordine alfabetico, tuttavia è possibile fare rifermento all indice per una più rapida ricerca. 10

11 AppLock.java package myhawk.games; import java.io.file; import java.io.fileoutputstream; import java.nio.channels.filechannel; import java.nio.channels.filelock; import java.util.logging.level; import java.util.logging.logger; /*Classe con logica Singleton che genere un file lock usato per limitare l'esecuzione del blocco di codice che ne fa uso. *in tal modo non sarà possibile avviare contemporaneamente più blocchi di codice alla volta su uno stesso computer*/ public class AppLock { private static AppLock instance; //istanza di AppLock private File lock_file = null; //File di lock private FileLock lock = null; //lock private FileChannel lock_channel = null; //canale di lock private FileOutputStream lock_stream = null; //Stream di lock /*Costruttore PRIVATO che istanzia un nuovo oggetto AppLock*/ private AppLock() { /*Costruttore PRIVATO che istanzia un nuovo oggetto AppLock basato su una specifica key data in ingresso*/ private AppLock(String key) throws Exception { String tmp_dir = System.getProperty("java.io.tmpdir"); //ottiene path cartella temp del sistema if (!tmp_dir.endswith(system.getproperty("file.separator"))) { tmp_dir += System.getProperty("file.separator"); try { //Genero una stringa md5 che sarà usata come nome del file di lock Encrypter md = new Encrypter(ClientConfig.ENCRYPTION_MODE); String hash_text = md.encrypt(""); lock_file = new File(tmp_dir + hash_text + ".app_lock"); //creo il file di lock catch (Exception ex) { System.out.println("AppLock.AppLock() file fail"); // Se la creazione del file di lock md5 non è andata a buon fine provo a creare un file di lock a partire dalla key if (lock_file == null) { lock_file = new File(tmp_dir + key + ".app_lock"); lock_stream = new FileOutputStream(lock_file); String f_content = "Java AppLock Object\r\nLocked by key: " + key + "\r\n"; lock_stream.write(f_content.getbytes()); lock_channel = lock_stream.getchannel(); //avvio il lock sul canale lock = lock_channel.trylock(); 11

12 if (lock == null) { //se non è stato possibile creare il file di lock lancio l'eccezione throw new Exception("Can't create Lock"); /*Modulo PRIVATO che rilascia il lock in modo da permettere l'esecuzione di nuove applicazioni che lo richiedono */ private void release() throws Throwable { if (lock.isvalid()) { lock.release(); if (lock_stream!= null) { lock_stream.close(); if (lock_channel.isopen()) { lock_channel.close(); if (lock_file.exists()) { //Modulo sempre eseguito alla fine del codice per di rilasciare il lock protected void finalize() throws Throwable { this.release(); super.finalize(); /* Metodo che imposta l'appication lock, può essere chiamato 1 volta per applicazione, tutte le chiamate successive vengono ignorate*/ public static boolean setlock(string key) { if (instance!= null) { return true; try { instance = new AppLock(key); catch (Exception ex) { instance = null; Logger.getLogger(AppLock.class.getName()).log(Level.SEVERE, "Fail to set AppLoc", ex); return false; //Thread eseguito prima dello Shut Down della JVM Runtime.getRuntime().addShutdownHook(new Thread() public void run() { AppLock.releaseLock(); ); return true; 12

13 /*Modulo che rilascia il lock che non potrà più essere utilizzato in questa applicazione grazie alla logica Singleton*/ public static void releaselock() { try { if (instance == null) { throw new NoSuchFieldException("INSTATCE IS NULL"); instance.release(); catch (Throwable ex) { Logger.getLogger(AppLock.class.getName()).log(Level.SEVERE, "Fail to release", ex); 13

14 Audio.java package myhawk.games; import java.io.*; import java.net.url; import javax.sound.sampled.audiosystem; import javax.sound.sampled.clip; import javax.sound.sampled.lineevent; import javax.sound.sampled.linelistener; import javax.sound.sampled.lineunavailableexception; import javax.sound.sampled.unsupportedaudiofileexception; /*Classe che con una logica Singleton genere un oggetto capace di gestire l'audio in altri oggetti*/ public class Audio{ private Clip clip = null, clipbg = null; //Oggetto clip dedicato agli effetti sonori e oggetto clip dedicato alla musica di sottofondo private static Audio instance = null; //Usato per creare l'istanza necessaria alla logica Singleton private UserSettings user_settings = null; //Contiene le preferenze dell'utente (audio si/no) private URL url = null, urlbg = null; //conterrà il path dei file audio che saranno avviati grazie agli oggetti clip private boolean sound_status = false, music_status = false; //status effetti sonori e background music private int bg_music_index = 0; //indice della musica di sottofondo corrente private String[] bg_music = new String[] {"/audio/bg.wav","/audio/game.wav"; //musiche di sottofondo disponibili private Audio(){ //Costruttore PRIVATO che carica l'istanza dell'oggetto UserSettings da cui ricava le preferenze utente user_settings = UserSettings.getInstance(); sound_status = user_settings.issound(); music_status = user_settings.ismusic(); public static Audio getinstance(){ //Singleton, restituisce l'istanza dell'oggetto Audio e se non esiste ne crea uno if(instance == null){ instance = new Audio(); return instance; public void startsound(string path){ //Modulo che avvia un file audio ripetuto un unica volta instance.url = instance.getclass().getresource(path); try { instance.clip = AudioSystem.getClip(); catch (LineUnavailableException e) { e.printstacktrace(); try { instance.clip.open(audiosystem.getaudioinputstream(url)); catch (LineUnavailableException e) { e.printstacktrace(); 14

15 catch (UnsupportedAudioFileException e) { e.printstacktrace(); catch (IOException e) { e.printstacktrace(); instance.clip.addlinelistener(new LineListener(){ public void update(lineevent event) { if (event.gettype() == LineEvent.Type.STOP) { event.getline().close(); ); instance.clip.start(); //Listner che chiude il clip audio appena quest'ultimo termina public synchronized void startbgmusic(){ //Modulo che avvia un file audio ripetuto fino e alla ricezione di esplicita richiesta di stop instance.urlbg = instance.getclass().getresource(bg_music[bg_music_index]); try { instance.clipbg = AudioSystem.getClip(); catch (LineUnavailableException e) { e.printstacktrace(); try { instance.clipbg.open(audiosystem.getaudioinputstream(instance.urlbg)); catch (LineUnavailableException e) { e.printstacktrace(); catch (UnsupportedAudioFileException e) { e.printstacktrace(); catch (IOException e) { e.printstacktrace(); instance.clipbg.loop(-1); public void stopbgmusic(){ //modulo che stoppa e chiude il clipbg (background music) if(instance.clipbg.isrunning()){ instance.clipbg.stop(); instance.clipbg.close(); public void stopsound(){ //modulo che stoppa e chiude il clip (sound effects) if(instance.clip.isrunning()){ instance.clip.stop(); instance.clip.close(); 15

16 public boolean ismusicenabled() { return music_status; //ritona lo stato della musica di sottofondo public synchronized void setmusicstatus(boolean music_status) { //imposta lo stato della musica di sottofondo this.music_status = music_status; user_settings.setmusic(music_status); public boolean issoundenabled() { //ritorna lo stato degli effetti sonori return sound_status; public synchronized void setsoundstatus(boolean sound_status) { //imposta lo stato degli effetti sonori this.sound_status = sound_status; user_settings.setsound(sound_status); public void setbgmusicindex(int bg_music_index) { this.bg_music_index = bg_music_index; //imposta l'indice della BgMusic da selezionare 16

17 BackgroundPanel.java package myhawk.games; import java.awt.graphics; import java.awt.image; import javax.swing.jpanel; /*Classe che crea Oggetti ti tipo JPanel con metodo paint sovrascritto *in modo da permettere l'inserimento di immagini di background al pannello*/ public class BackgroundPanel extends JPanel { private static final long serialversionuid = L; private Image image; public BackgroundPanel(Image image){ this.image = //metodo che permette di disegnare uno sfondo al pannello che si ridimensiona con esso protected void paintcomponent(graphics g){ super.paintcomponent(g); //invoca metodo paintcomponent della classe JPanel if (image!= null) g.drawimage(image, 0,0,this.getWidth(),this.getHeight(),this); 17

18 Block.java package myhawk.games; import java.awt.color; import java.awt.cursor; import java.awt.event.mouseevent; import java.awt.event.mouselistener; import javax.swing.borderfactory; import javax.swing.imageicon; import javax.swing.jbutton; /*Classe Blocco che rappresenta l'elemento base del campo di gioco*/ public class Block implements MouseListener{ private JButton block; private Boolean status; private Audio audio = Audio.getInstance(); //elemento grafico del blocco che permette l'interazione dell'utente //status del blocco //oggetto Audio che gestisce l'audio del gioco public Block () { //Costruttore block = new JButton(new ImageIcon(getClass().getResource("/img/emptyblock.png"))); block.setname("empty BLOCK"); //Assegno il nome EMPTY BLOCK che sarà poi utile per la gestione del medesimo block.addmouselistener(this); //Uso di MouseListener per poter gestire sia il click destro che il sinistro del mouse block.setcontentareafilled(false); block.setcursor(cursor.getpredefinedcursor(cursor.hand_cursor)); block.setborder(borderfactory.creatematteborder(1, 1, 1, 1, Color.black)); /*Modulo che cambia lo stato, il nome e l'aspetto del blocco in base alle circostanze e al nome assegnato al bottone*/ public void changebuttonstatus(int e){ if(block.getname().equals("empty BLOCK")){ if(e==mouseevent.button1){ //click tasto sinistro mouse block.seticon(new ImageIcon(getClass().getResource("/img/fullblock_focused.png"))); block.setname("full BLOCK"); status = true; else if(e==mouseevent.button3){ //click tasto destro mouse block.seticon(new ImageIcon(getClass().getResource("/img/nofullblock_focused.png"))); block.setname("nofull BLOCK"); status = false; else{ block.seticon(new ImageIcon(getClass().getResource("/img/emptyblock_focused.png"))); block.setname("empty BLOCK"); status = null; 18

19 public void setsolved(){ //Modulo che imposta l'emento block come elemento risolto cambiando nome del bottone e grafica if(block.getname().equals("full BLOCK")){ block.seticon(new ImageIcon(getClass().getResource("/img/solvedfullblock.png"))); else if(block.getname().equals("nofull BLOCK")){ block.seticon(new ImageIcon(getClass().getResource("/img/solvednofullblock.png"))); block.setname("solved BLOCK"); public void resetstatus(){ //reset stato del blocco alle condizioni originali block.seticon(new ImageIcon(getClass().getResource("/img/emptyblock.png"))); block.setname("empty BLOCK"); status = null; public void setstatus(boolean status){ this.status=status; //permette di cambiare lo status del blocco public Boolean getstatus(){ return status; public JButton getbutton(){ return block; //restituisce lo stato del blocco //restituisce l'elemento di tipo JButton del public void mouseclicked(mouseevent arg0) //Modulo che cambia la grafica del Block al passaggio del mouse public void mouseentered(mouseevent e) { if(!block.getname().equals("solved BLOCK")){ if(block.getname().equals("empty BLOCK")){ block.seticon(new ImageIcon(getClass().getResource("/img/emptyblock_focused.png"))); else if(block.getname().equals("full BLOCK")){ block.seticon(new ImageIcon(getClass().getResource("/img/fullblock_focused.png"))); else if(block.getname().equals("nofull BLOCK")){ block.seticon(new ImageIcon(getClass().getResource("/img/nofullblock_focused.png"))); 19

20 @Override //Modulo che cambia la grafica del Block al passaggio del mouse public void mouseexited(mouseevent arg0) { if(!block.getname().equals("solved BLOCK")){ if(block.getname().equals("empty BLOCK")){ block.seticon(new ImageIcon(getClass().getResource("/img/emptyblock.png"))); else if(block.getname().equals("full BLOCK")){ block.seticon(new ImageIcon(getClass().getResource("/img/fullblock.png"))); else if(block.getname().equals("nofull BLOCK")){ block.seticon(new //mouse listener che invoca il modulo che cambia lo status del bottone qualora non fosse già risolto public void mousepressed(mouseevent e) { if(!block.getname().equals("solved BLOCK")){ this.changebuttonstatus(e.getbutton()); if(audio.issoundenabled()){ audio.startsound("/audio/block_change.wav"); else if(audio.issoundenabled()){ public void mousereleased(mouseevent arg0) { 20

21 ClientConfig.java package myhawk.games; /*Classe che contiene variabili che saranno usate globalmente negli oggetti che costituiscono l'applicazione Client*/ public class ClientConfig { public static final String SERVER_ADRESS = "xxx.xxx.xxx.xxx"; public static final int SERVER_PORT = xxxx; public static final int GAME_TIME = xxx; public static final int MARTIX_ROWS = x; public static final int MATRIX_COLUMNS = x; public static final String ENCRYPTION_MODE = "xxx"; public static final int LOGIN_ATTEMPS = x; //Indirizzo del server //Porta su cui il Server ha una ServerSocket aperta in ascolto //Durata in secondi di una partita //Numero di righe di cui è composta la matrice di gioco //Numero di colonne di cui è composta la matrice di gioco //Algoritmo di Crittografia scelto nel Client //Tentativi di Login a disposizione dell'utente 21

22 Database.java package myhawk.games; import java.sql.*; import java.util.arraylist; /*Classe usata per gestione del DB. Gestisce la connessione col Database e Fornisce i metodi per l'esecuzione delle query*/ public class Database { private String nomedb; // Nome del Database a cui connettersi private String nomeutente; // Nome utente utilizzato per la connessione al Database private String pwdutente; // Password usata per la connessione al Database private String errore; // Raccoglie informazioni riguardo l'ultima eccezione sollevata private Connection db; // La connessione col Database private boolean connesso; // Flag che indica se la connessione è attiva o meno public Database(String nomedb) { this(nomedb, "", ""); public Database(String nomedb, String nomeutente, String pwdutente) { this.nomedb = nomedb; this.nomeutente = nomeutente; this.pwdutente = pwdutente; connesso = false; errore = ""; public boolean connetti() { // Apre la connessione con il Database connesso = false; try { // Carico il driver JDBC per la connessione con il database MySQL Class.forName("com.mysql.jdbc.Driver"); if (!nomedb.equals("")) { // Controllo che il nome del Database non sia null if (nomeutente.equals("")) { // Controllo se il nome utente va usato o meno per la connessione // La connessione non richiede nome utente e password db = DriverManager.getConnection(jdbc:"+ ServerConfig.DATABASE_MS +"://"+ ServerConfig.DATABASE_HOST +"/" + nomedb); else{ if (pwdutente.equals("")) { // La connessione richiede nome utente, controllo se necessita anche della password // La connessione non necessita di password db = DriverManager.getConnection("jdbc:"+ ServerConfig.DATABASE_MS +"://"+ ServerConfig.DATABASE_HOST +"/" + nomedb + "?user=" + nomeutente); else{ // La connessione necessita della password db = DriverManager.getConnection("jdbc:"+ ServerConfig.DATABASE_MS +"://"+ ServerConfig.DATABASE_HOST + "/" + nomedb + "?user=" + nomeutente + "&password=" + pwdutente); connesso = true; // La connessione è avvenuta con successo 22

23 else{ System.out.println("Manca il nome del database!!"); System.out.println("Scrivere il nome del database da utilizzare all'interno del file \"config.xml\""); System.exit(0); catch (Exception e) { errore = e.getmessage(); e.printstacktrace(); if (!connesso) { System.out.println("Errore durante la connessione."); System.out.println( this.geterrore() ); System.exit(0); return connesso; /*Esegue una query di selezione dati sul Database * query: una stringa che rappresenta un'istruzione SQL di tipo SELECT da eseguire * colonne: il numero di colonne di cui sarà composta la tupla del risultato * ritorna un ArrayList contenente tutte le tuple del "rawtypes", "unchecked" ) public synchronized ArrayList eseguiquery(string query) { ArrayList v = null; String [] record; int colonne = 0; try { Statement stmt = db.createstatement(); // Creo lo Statement per l'esecuzione della query ResultSet rs = stmt.executequery(query); v = new ArrayList(); ResultSetMetaData rsmd = rs.getmetadata(); // Ottengo il ResultSet dell'esecuzione della query colonne = rsmd.getcolumncount(); while(rs.next()) { // Creo il vettore risultato scorrendo tutto il ResultSet record = new String[colonne]; for (int i=0; i<colonne; i++) record[i] = rs.getstring(i+1); v.add( (String[]) record.clone() ); rs.close(); // Chiudo il ResultSet stmt.close(); // Chiudo lo Statement catch (Exception e) { e.printstacktrace(); errore = e.getmessage(); try { if(db.isclosed()){ System.exit(1); //quando crasha il DB 23

24 catch (SQLException e1) { e1.printstacktrace(); return v; /*Esegue una query di aggiornamento sul Database * query: una stringa che rappresenta un'istuzione SQL di tipo UPDATE da eseguire * ritorna TRUE se l'esecuzione è andata a buon fine, FALSE se c'è stata public synchronized boolean eseguiaggiornamento(string query) { int numero = 0; boolean risultato = false; try { Statement stmt = db.createstatement(); numero = stmt.executeupdate(query); risultato = true; stmt.close(); catch (Exception e) { e.printstacktrace(); errore = e.getmessage(); risultato = false; try { if(db.isclosed()){ System.exit(1); catch (SQLException e1) { e1.printstacktrace(); return risultato; //quando crasha il DB // Chiude la connessione con il Database public void disconnetti() { try { db.close(); connesso = false; catch (Exception e) { e.printstacktrace(); public boolean isconnesso() { return connesso; // Ritorna TRUE se la connessione con il Database è attiva public String geterrore() { return errore; // Ritorna il messaggio d'errore dell'ultima eccezione sollevata 24

25 Encrypter.java package myhawk.games; import java.math.biginteger; import java.security.messagedigest; import java.security.nosuchalgorithmexception; /*Classe usata per creare oggetti Encrypter capaci di criptare stringhe in vari formati crittografici*/ public class Encrypter{ private MessageDigest mdenc = null; //oggetto di tipo MessageDigest utilizzato per predisporre l'algoritmo di crypt //costruttore che prende in ingresso la stringa contenente il nome dell'algoritmo crittografico che si vuole utilizzare public Encrypter(String algorithm){ try { mdenc = MessageDigest.getInstance(algorithm); //assegno a mdenc l'algoritmo scelto catch (NoSuchAlgorithmException e) { e.printstacktrace(); //modulo che restituisce crittografata la stringa che riceve in ingresso, //criptandola in base all'algoritmo con cui è stato inizializzato mdenc public String encrypt(string word){ mdenc.update(word.getbytes(), 0, word.length()); return new BigInteger(1, mdenc.digest()).tostring(16); // Encrypted Word String 25

26 Game.java package myhawk.games; import java.awt.dimension; import java.awt.gridbaglayout; import java.awt.gridlayout; import java.awt.event.mouseevent; import java.awt.event.mouselistener; import javax.swing.borderfactory; import javax.swing.boxlayout; import javax.swing.imageicon; import javax.swing.jbutton; import javax.swing.jlabel; import javax.swing.jpanel; /*Classe che utilizza tutti gli oggetti utili per generare e gestire una partita*/ public class Game extends JPanel implements MouseListener{ private static final long serialversionuid = L; private Matrix user_matrix, solution_matrix; private Planner planner; private int n, m, solved_rows=0, solved_columns=0, user_score=0, level=1, key; private MyTimer gametimer; private JPanel game_panel; private Audio audio = Audio.getInstance(); private boolean game_over = false; private Loading loading; //matrice dell'utente e matrice con la soluzione //piano di risoluzione della matrice utente //Timer che scandisce il tempo di gioco //Pannello di gioco //Audio usato per gestire l'audio dell'oggetto Game //boolean usato per determinare la fine della partita //Oggetto Loading usato per mostrare pagina di caricamento public Game(int n, int m){ //Creo ed Avvio Loading, per mostrate una pagina di caricamento in attesa che Game sia pronto loading = new Loading("Loading...",new ImageIcon(getClass().getResource("/img/ajax-loader.gif"))); loading.run(this); this.n=n; this.m=m; this.setlayout(new GridBagLayout()); this.setopaque(false); this.paint(); 26

27 private void paint(){ //Modulo invocato dal Costruttore di Game per Disegnare ed Inizializzare i vari elementi che lo compongono int i=0, j=0; game_panel = new JPanel(); game_panel.setlayout(new BoxLayout(game_Panel,BoxLayout.Y_AXIS)); game_panel.setopaque(false); //pannello che conterra elementi campo di gioco BackgroundPanel playground = new BackgroundPanel(new ImageIcon(getClass().getResource("/img/bggame.jpg")).getImage()); playground.setlayout(new GridLayout(n+1,m+1)); playground.setpreferredsize(new Dimension((m+1)*70,(n+1)*70)); playground.setborder(borderfactory.createemptyborder(5, 5, 5, 5)); user_matrix = new Matrix(n,m); solution_matrix = new Matrix(n,m); planner = new Planner(solution_Matrix.getRowsCount(),solution_Matrix.getColumnsCount()); //Sequanza di cicli For che costruiscono il campo da gioco su cui si svolgerà la partita playground.add(new JLabel(new ImageIcon(getClass().getResource("/img/space.png")))); //blocco vacante per allineamento grafico for(i=0; i<n; i++){ for(j=0; j<m; j++){ user_matrix.getelement(i, j).getbutton().addmouselistener(this); for(i=0;i<m;i++){ playground.add(planner.getplan()[i+n]); for(i=0; i<n; i++){ playground.add(planner.getplan()[i]); for(j=0; j<m; j++){ playground.add(user_matrix.getelement(i,j).getbutton()); gametimer = new MyTimer(); //Creo un istanza di oggetto MyTimer usata per gestire il tempo in Game game_panel.add(gametimer); //inserisco il Timer grafico al Pannello di gioco game_panel.add(playground); //inserisco il campo di gioco grafico al Pannello di gioco 27

Introduzione JDBC interfaccia java.sql driver caricare i driver

Introduzione JDBC interfaccia java.sql driver caricare i driver J D B C DISPENSE Introduzione JDBC (Java Database Connectivity) è un interfaccia completamente Java utilizzata per eseguire istruzioni SQL sui database. L'API JDBC si trova nel pacchetto java.sql; contiene

Dettagli

JDBC versione base. Le classi/interfacce principali di JDBC

JDBC versione base. Le classi/interfacce principali di JDBC JDBC versione base Java Database Connectivity è il package Java per l accesso a database relazionali il package contiene interfacce e classi astratte uno dei pregi è la completa indipendenza del codice

Dettagli

Laboratorio di reti II: Gestione di database lato server

Laboratorio di reti II: Gestione di database lato server Laboratorio di reti II: Gestione di database lato server Stefano Brocchi brocchi@dsi.unifi.it 23 marzo, 2009 Stefano Brocchi Laboratorio di reti II: Database 23 marzo, 2009 1 / 32 Uso di database lato

Dettagli

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity CORSO DI ALGORITMI E PROGRAMMAZIONE JDBC Java DataBase Connectivity Anno Accademico 2002-2003 Accesso remoto al DB Istruzioni SQL Rete DataBase Utente Host client Server di DataBase Host server Accesso

Dettagli

Finestra.java. static String nomicolonne[] = {"ind.","cognome","nome","telefono","e-mail"}; //nomi delle colonne della tabella

Finestra.java. static String nomicolonne[] = {ind.,cognome,nome,telefono,e-mail}; //nomi delle colonne della tabella import java.awt.*; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.awt.event.windowevent; import java.awt.event.windowlistener; import java.io.*; import java.util.*;

Dettagli

Alessandro De Luca. Lezione, 13 maggio 2015

Alessandro De Luca. Lezione, 13 maggio 2015 Basi Basi di di dati dati ee sistemi sistemi informativi informativi II mod.laboratorio mod.laboratorio Alessandro De Luca Università degli Studi di Napoli Federico II Lezione, Introduzione a Java Swing

Dettagli

JDBC di base. Le classi/interfacce principali di JDBC

JDBC di base. Le classi/interfacce principali di JDBC JDBC di base Java Database Connectivity è il package Java per l accesso a database relazionali il package contiene interfacce e classi astratte completa indipendenza del codice dal tipo di database o di

Dettagli

Esercitazione su JDBC

Esercitazione su JDBC Esercitazione su JDBC Basi di Dati L Ingegneria dei Processi Gestionali (Ilaria Bartolini - Roberto Cabras) come usare SQL (1) Le istruzioni SQL possono essere eseguite interattivamente Ese JDBC 2 come

Dettagli

Non si deve fare ALCUN riferimento alla parte specifica di JDBC.

Non si deve fare ALCUN riferimento alla parte specifica di JDBC. Un applicazione per la quale sia fondamentale l indipendenza dal Database può essere scritta in Java usando le specifiche. (Package java.sql) Non devono essere usate chiamate specifiche del database: Si

Dettagli

Manuale Progetto Placement

Manuale Progetto Placement Manuale Progetto Placement V. 5 del 20/06/2013 FUNZIONI PRINCIPALI: Fornire uno strumento per la gestione centralizzata di stage, alternanze e placement. Costruire un database contenente i curriculum degli

Dettagli

Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Polistena (RC)

Autore: Prof. Agostino Sorbara ITIS M. M. Milano Polistena (RC) In questa lezione introduciamo alcuni strumenti che Java rende disponibili per la creazione di interfacce utente a manipolazione diretta, dette anche WYSISYG (what you see is what you get), con un elevato

Dettagli

JDBC: Introduzione. Java Database Connectivity (JDBC): parte 1. Schema dei legami tra le classi principali. Principali classi/interfacce di JDBC

JDBC: Introduzione. Java Database Connectivity (JDBC): parte 1. Schema dei legami tra le classi principali. Principali classi/interfacce di JDBC JDBC: Introduzione Java Database Connectivity (JDBC): parte 1 Gianluca Moro DEIS - Università di Bologna gmoro@deis.unibo.it Java Database Connectivity è il package Java per l accesso a database relazionali

Dettagli

Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008

Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008 Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008 Avvertenze: e severamente vietato consultare libri e appunti; chiunque verrà trovato in possesso di

Dettagli

Compilazione rapporto di Audit in remoto

Compilazione rapporto di Audit in remoto Compilazione rapporto di Audit in remoto Installazione e manuale utente CSI S.p.A. V.le Lombardia 20-20021 Bollate (MI) Tel. 02.383301 Fax 02.3503940 E-mail: info@csi-spa.com Rev. 1.1 23/07/09 Indice Indice...

Dettagli

Si precisa in ogni caso che questa guida rapida non esime dalla lettura del Manuale utente presente nell ambiente del Servizio Telematico Doganale.

Si precisa in ogni caso che questa guida rapida non esime dalla lettura del Manuale utente presente nell ambiente del Servizio Telematico Doganale. GUIDA RAPIDA versione 25 febbraio 2010 SERVIIZIIO TELEMATIICO DOGANALE Avvertenze: Questa guida vuole costituire un piccolo aiuto per gli operatori che hanno già presentato richiesta di adesione al servizio

Dettagli

Gestione delle eccezioni in Java

Gestione delle eccezioni in Java Gestione delle eccezioni in Java - Introduzione al concetto di eccezioni E possibile definire un eccezione come un situazione imprevista che il flusso di un applicazione può incontrare. È possibile gestire

Dettagli

Chat. Si ha un server in ascolto sulla porta 4444. Quando un client richiede la connessione, il server risponde con: Connessione accettata.

Chat. Si ha un server in ascolto sulla porta 4444. Quando un client richiede la connessione, il server risponde con: Connessione accettata. Chat Si ha un server in ascolto sulla porta 4444 Quando un client richiede la connessione, il server risponde con: Connessione accettata. Nome: Il client deve rispondere con lo user name A questo punto

Dettagli

Guida all Utilizzo del Posto Operatore su PC

Guida all Utilizzo del Posto Operatore su PC Guida all Utilizzo del Posto Operatore su PC 1 Introduzione Indice Accesso all applicazione 3 Installazione di Vodafone Applicazione Centralino 3 Utilizzo dell Applicazione Centralino con accessi ad internet

Dettagli

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni server

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni server Versione 30.5.05 Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture client/: applicazioni 1 La logica dei socket Abbiamo visto che un applicazione client si connette

Dettagli

MySQL Server e Netbeans

MySQL Server e Netbeans Progettazione Applicazioni Web 09 MySQL Server e Netbeans Sommario INSTALLAZIONE DI MYSQL INSTALLAZIONE SU UN PC DI CUI SI HANNO I DIRITTI DI AMMINISTRATORE. INSTALLAZIONE SUI COMPUTER DALL AULA 5T. AVVIO

Dettagli

Sviluppo Applicazioni Mobile Lezione 12 JDBC. Dr. Paolo Casoto, Ph.D - 2012

Sviluppo Applicazioni Mobile Lezione 12 JDBC. Dr. Paolo Casoto, Ph.D - 2012 + Sviluppo Applicazioni Mobile Lezione 12 JDBC + Cosa vediamo nella lezione di oggi Oggi analizzeremo insieme una specifica tecnologia Java per l accesso e la manipolazione di basi di dati relazionali

Dettagli

JDBC. A. Bechini 2004. Accesso a DataD con Java

JDBC. A. Bechini 2004. Accesso a DataD con Java JDBC Accesso a DataD atabase ase con Java Utilizzo di DB da applicazioni esterne Un DB contiene e gestisce dati, importanti per varie operazioni supportate da applicazioni software Come può un applicazione

Dettagli

PROVA FINALE Ingegneria del software

PROVA FINALE Ingegneria del software PROVA FINALE Ingegneria del software Ing. Jody Marca jody.marca@polimi.it Laboratorio N 4 Cos è JDBC 2 JDBC significa Java Database Connectivity Standard definito da Sun MicroSystems per connettere programmi

Dettagli

JDBC. Dispense per il corso di Ingegneria del Web

JDBC. Dispense per il corso di Ingegneria del Web JDBC Dispense per il corso di Ingegneria del Web Revisione 05/11 Giuseppe Della Penna (giuseppe.dellapenna@di.univaq.it) Dipartimento di Informatica Università degli studi dell'aquila Java Database Connectivity:

Dettagli

Basi di Dati Esercitazione JDBC. Giugno 2007

Basi di Dati Esercitazione JDBC. Giugno 2007 Basi di Dati Esercitazione JDBC Giugno 2007 Esercizi Considerando il seguente schema: Fornitori (CodiceFornitore, Nome, Indirizzo, Citta) Prodotti (CodiceProdotto, Tipo, Marca, Modello) Catalogo (CodiceFornitore,

Dettagli

Eventi di azione. // con interfaccia per eventi di azione

Eventi di azione. // con interfaccia per eventi di azione Eventi di azione (Interfaces ActionListener, Classes ActionEvent) Sono generati quando si premono bottoni, si selezionano voci di menù, si preme invio mentre si scrive in un campo di testo. In awt sono

Dettagli

INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE

INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE La Gestione degli Eventi Ogni oggetto grafico è predisposto ad essere sollecitato in qualche modo dall utente (per esempio un pulsante può essere premuto).

Dettagli

Esercitazione sui Design Pattern

Esercitazione sui Design Pattern Esercitazione sui Design Pattern Pattern Creazionali Singleton Permette la creazione di una sola istanza della classe all interno dell applicazione Fornisce un metodo con cui ottenere l istanza Il costruttore

Dettagli

Protocollo di trasmissione Trova il Tuo Farmaco. Indice. Versione documento: 1.4 Data: 29/06/2011

Protocollo di trasmissione Trova il Tuo Farmaco. Indice. Versione documento: 1.4 Data: 29/06/2011 Protocollo di trasmissione Trova il Tuo Farmaco Versione documento: 1.4 Data: 29/06/2011 Indice Protocollo di trasmissione Trova il Tuo Farmaco...1 Requisiti...2 Finalità...2 Software...2 Documentazione...2

Dettagli

Interazioni col mondo: eventi

Interazioni col mondo: eventi Interazioni col mondo: eventi Le interazioni di una GUI con il mondo esterno sono segnalate tramite eventi: click del mouse, inserimento di testo, selezione/attivazione... Gli eventi che memorizzano queste

Dettagli

Struttura logica di un programma

Struttura logica di un programma Struttura logica di un programma Tutti i programmi per computer prevedono tre operazioni principali: l input di dati (cioè l inserimento delle informazioni da elaborare) il calcolo dei risultati cercati

Dettagli

Parte II: Reti di calcolatori Lezione 10

Parte II: Reti di calcolatori Lezione 10 Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Parte II: Reti di calcolatori Lezione 10 Giovedì 3-04-2014 1 Reti per la distribuzione

Dettagli

Guida all Utilizzo dell Applicazione Centralino

Guida all Utilizzo dell Applicazione Centralino Guida all Utilizzo dell Applicazione Centralino 1 Introduzione Indice Accesso all applicazione 3 Installazione di Vodafone Applicazione Centralino 3 Utilizzo dell Applicazione Centralino con accessi ad

Dettagli

Scope e visibilità per classi

Scope e visibilità per classi Scope e visibilità per classi Packages Classi interne nelle loro diverse forme Interne / statiche / locali Utilizzo congiunto con interfacce Implementazione di iteratori Gestione di eventi Packages Package:

Dettagli

Scheda 15 Accedere ai DataBase con JDBC

Scheda 15 Accedere ai DataBase con JDBC Scheda 15 Accedere ai DataBase con JDBC G IOVANNI PULITI Panoramica: che cosa è JDBC La API JDBC, introdotta per la prima volta con il JDK 1.0, è una API che permette di accedere a database relazionali

Dettagli

GUIDA ALL USO DELL AREA RISERVATA

GUIDA ALL USO DELL AREA RISERVATA GUA ALL USO DELL AREA RISERVATA Sommario PREMESSA... 2 1 Come accedere all Area Riservata... 3 2 del Pannello di gestione del sito web... 4 3 delle sezioni... 7 3.1 - Gestione Sito... 7 3.1.1 - AreaRiservata...

Dettagli

19. Introduzione al multi-threading

19. Introduzione al multi-threading 19. Introduzione al multi-threading Marco Faella Dip. Ing. Elettrica e Tecnologie dell'informazione Università di Napoli Federico II Corso di Linguaggi di Programmazione II I thread I thread, o processi

Dettagli

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica Esercitazioni di PROGETTAZIONE DEL SOFTWARE (Corsi di Laurea in Ingegneria Informatica ed Automatica ed Ingegneria

Dettagli

Connessioni di rete. Progetto di reti di Calcolatori e Sistemi Informatici - Stefano Millozzi. PdR_09010 - Stefano Millozzi

Connessioni di rete. Progetto di reti di Calcolatori e Sistemi Informatici - Stefano Millozzi. PdR_09010 - Stefano Millozzi Connessioni di rete Progetto di reti di Calcolatori e Sistemi Informatici - Stefano Millozzi 1 Socket orientato alla connessione o non orientato alla connessione 2 Socket in astratto 3 Socket modalità

Dettagli

2009. STR S.p.A. u.s. Tutti i diritti riservati

2009. STR S.p.A. u.s. Tutti i diritti riservati 2009. STR S.p.A. u.s. Tutti i diritti riservati Sommario COME INSTALLARE STR VISION CPM... 3 Concetti base dell installazione Azienda... 4 Avvio installazione... 4 Scelta del tipo Installazione... 5 INSTALLAZIONE

Dettagli

Gestione di eventi ed interfacce utente grafiche

Gestione di eventi ed interfacce utente grafiche Gestione di eventi ed interfacce utente grafiche Eventi Ogni volta che l utente esegue un azione un clic del mouse la pressione di un tasto sulla tastiera la modifica di una finestra la selezione di un

Dettagli

L interfaccia grafica con Java

L interfaccia grafica con Java L interfaccia grafica con Java 1/24 L interfaccia utente serve per la comunicazione tra utente e programma Distinguiamo le interfacce tra quelle a caratteri e quelle grafiche Le GUI (Graphical user interface)

Dettagli

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup Progetto Automi e Linguaggi Parser svliluppato con JLex e cup Sviluppato da Santoro Carlo Maurizio Matricola:0108/528 Sviluppo terminato il: 18/06/06 TRACCIA DEL PROGETTO Si costruisca, utilizzando la

Dettagli

Si precisa in ogni caso che questa guida rapida non esime dalla lettura del manuale utente presente nell ambiente del Servizio Telematico Doganale.

Si precisa in ogni caso che questa guida rapida non esime dalla lettura del manuale utente presente nell ambiente del Servizio Telematico Doganale. GUIDA RAPIDA versione 11 marzo 2008 SEERVIIZZIIO TTEELLEEMATTIICO M DOGANALLEE G Avvertenze: Questa guida vuole costituire un piccolo aiuto per gli operatori che hanno già presentato richiesta di adesione

Dettagli

ISTRUZIONI PER L UTILIZZO DEL SOFTWARE Moda.ROA. Raccolta Ordini Agenti

ISTRUZIONI PER L UTILIZZO DEL SOFTWARE Moda.ROA. Raccolta Ordini Agenti ISTRUZIONI PER L UTILIZZO DEL SOFTWARE Raccolta Ordini Agenti AVVIO PROGRAMMA Per avviare il programma fare click su Start>Tutti i programmi>modasystem>nomeazienda. Se il collegamento ad internet è attivo

Dettagli

ARGO DOC Argo Software S.r.l. e-mail: info@argosoft.it -

ARGO DOC Argo Software S.r.l. e-mail: info@argosoft.it - 1 ARGO DOC ARGO DOC è un sistema per la gestione documentale in formato elettronico che consente di conservare i propri documenti su un server Web accessibile via internet. Ciò significa che i documenti

Dettagli

Prova d Esame 07.04.2006 Compito A

Prova d Esame 07.04.2006 Compito A DOMANDA 1 (6 punti) Si analizzi il codice seguente e si scriva l output prodotto dai metodi main public class General { public static String s1 = "Ciao"; protected int n; public General() { n = 1; public

Dettagli

WGDESIGNER Manuale Utente

WGDESIGNER Manuale Utente WGDESIGNER Manuale Utente Pagina 1 SOMMARIO 1 Introduzione... 3 1.1 Requisiti hardware e software... 3 2 Configurazione... 3 3 Installazione... 4 3.1 Da Webgate Setup Manager... 4 3.2 Da pacchetto autoestraente...

Dettagli

Prova d Esame 07.04.2006 Compito B

Prova d Esame 07.04.2006 Compito B DOMANDA 1 (6 punti) Si analizzi il codice seguente e si scriva l output prodotto dai metodi main public class General { public static String s1 = "ciao"; protected int n; public General() { n = 3; public

Dettagli

UN CLONE IN CLIKE C-LIKE DI SEGUIVISIONE

UN CLONE IN CLIKE C-LIKE DI SEGUIVISIONE IDROID 86 LAB pagg 12-13 23-04-2007 14:57 Pagina 12 I-D01 LAB UN CLONE IN CLIKE C-LIKE DI SEGUIVISIONE PROGRAMMAZIONE Alcuni comportamenti predefiniti attivabili su I-Droid01 sono facilmente riproducibili

Dettagli

Indice generale. Il BACK-END...3 COME CONFIGURARE JOOMLA...4 Sito...4 Locale...5 Contenuti...5

Indice generale. Il BACK-END...3 COME CONFIGURARE JOOMLA...4 Sito...4 Locale...5 Contenuti...5 Guida a Joomla Indice generale Il BACK-END...3 COME CONFIGURARE JOOMLA...4 Sito...4 Locale...5 Contenuti...5 Il BACK-END La gestione di un sito Joomla ha luogo attraverso il pannello di amministrazione

Dettagli

PROGETTO - Ingegneria del Software. Università degli Studi di Milano Polo di Crema. Corso di laurea in Scienze Matematiche, Fisiche e Naturali

PROGETTO - Ingegneria del Software. Università degli Studi di Milano Polo di Crema. Corso di laurea in Scienze Matematiche, Fisiche e Naturali Università degli Studi di Milano Polo di Crema Corso di laurea in Scienze Matematiche, Fisiche e Naturali INFORMATICA Corso di Ingegneria del Software progetto IL SISTEMA CALENDAR Presentato al dott. Paolo

Dettagli

Raffaella Brighi, a.a. 2005/06. Eventi e listener. Corso di Laboratorio II. A.A. 2005-06

Raffaella Brighi, a.a. 2005/06. Eventi e listener. Corso di Laboratorio II. A.A. 2005-06 Raffaella Brighi, a.a. 2005/06 Eventi e listener Corso di Laboratorio II. A.A. 2005-06 Eventi e listener Un evento è un oggetto che rappresenta il verificarsi di un azione dell utente o del sistema(es

Dettagli

LIFE ECOMMERCE OFF LINE Istruzioni per l uso

LIFE ECOMMERCE OFF LINE Istruzioni per l uso LIFE ECOMMERCE OFF LINE Istruzioni per l uso Il programma è protetto da Password. Ad ogni avvio comparirà una finestra d autentificazione nella quale inserire il proprio Nome Utente e la Password. Il Nome

Dettagli

Manuale d uso. Applicazione client Postecert Firma Digitale per Postemailbox

Manuale d uso. Applicazione client Postecert Firma Digitale per Postemailbox per Postemailbox Documento pubblico Pagina 1 di 22 Indice INTRODUZIONE... 3 REQUISITI... 3 SOFTWARE... 3 HARDWARE... 3 INSTALLAZIONE... 3 AGGIORNAMENTI... 4 AVVIO DELL APPLICAZIONE... 4 UTILIZZO DELL APPLICAZIONE...

Dettagli

Applicazioni distribuite

Applicazioni distribuite Applicazioni distribuite Maurizio Cozzetto 1 agosto 2009 Un pò di teoria Ricordiamo che un'applicazione distribuita è un'applicazione composta da più programmi (almeno 2) posti in esecuzione su macchine

Dettagli

PROGETTI AGGIUNTIVI PER IL CORSO DI PROGETTO DI RETI E SISTEMI INFORMATICI

PROGETTI AGGIUNTIVI PER IL CORSO DI PROGETTO DI RETI E SISTEMI INFORMATICI PROGETTI AGGIUNTIVI PER IL CORSO DI PROGETTO DI RETI E SISTEMI INFORMATICI 1 Remote Administrator... 2 2 Sistema di Prenotazione Ricevimento studenti... 3 3 Remote Teaching... 4 4 Gioco online: UNO...

Dettagli

DBMS ed Applicazioni Motivazioni

DBMS ed Applicazioni Motivazioni DBMS ed Applicazioni Motivazioni Sin ora abbiamo visto SQL come linguaggio per interrogare DBMS da interfaccia interattiva Nella pratica, un efficace sfruttamento delle potenzialità dei DBMS deriva dalla

Dettagli

Software centralizzazione per DVR

Software centralizzazione per DVR Software centralizzazione per DVR Manuale installazione ed uso 2 INTRODUZIONE Il PSS (Pro Surveillance System) è un software per PC utilizzato per gestire DVR e/o telecamere serie VKD. Tramite esso è possibile

Dettagli

Caricamento della classe driver. Apertura della connessione. DriverManager.getConnection() Creazione di uno statement

Caricamento della classe driver. Apertura della connessione. DriverManager.getConnection() Creazione di uno statement JDBC Programmazione in Ambienti Distribuiti V 1.4 Marco Torchiano 2006 Uso di JDBC Caricamento della classe driver Class.forName() Apertura della connessione DriverManager.getConnection() Creazione di

Dettagli

Synchronized (ancora)

Synchronized (ancora) Synchronized (ancora) Riscriviamo l esempio di prima. Usiamo una struttura modulare, con una classe Notificatore che ha opportuni metodi. La classe ha due campi privati, la lista buftext e un suo thread.

Dettagli

NOTE TECNICHE DI CONFIGURAZIONE. Giugno 2009

NOTE TECNICHE DI CONFIGURAZIONE. Giugno 2009 NOTE TECNICHE DI CONFIGURAZIONE Giugno 2009 INDICE Configurazioni 3 Configurazioni Windows Firewall.. 3 Configurazioni Permessi DCOM. 4 Installazione Sql Server 2005 9 Prerequisiti Software 7 Installazione

Dettagli

NOMENCLATURA INTERFACCIA DI INTERNET EXPLORER PRINCIPALI PULSANTI DELLA BARRA DEGLI STREUMENTI

NOMENCLATURA INTERFACCIA DI INTERNET EXPLORER PRINCIPALI PULSANTI DELLA BARRA DEGLI STREUMENTI NOMENCLATURA INTERFACCIA DI INTERNET EXPLORER Pagina 6 PRINCIPALI PULSANTI DELLA BARRA DEGLI STREUMENTI Richiama la pagina visualizzata in precedenza Richiama la pagina visualizzata dopo quella attualmente

Dettagli

20 - Input/Output su File

20 - Input/Output su File 20 - Input/Output su File Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it

Dettagli

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS) 1 SQL Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS) a.a. 2014/2015 http://www.di.uniba.it/~lisi/courses/basi-dati/bd2014-15.htm Dott.ssa Francesca A. Lisi dott.ssa Francesca A.

Dettagli

Introduzione. 8- Programmazione di una base di dati attraverso JDBC ESEMPIO

Introduzione. 8- Programmazione di una base di dati attraverso JDBC ESEMPIO 8- Programmazione di una base di dati attraverso JDBC Introduzione ai differenti approcci - JDBC: Architettura e Programmazione Introduzione Nella pratica gli utenti finali accedono al contenuto di una

Dettagli

Java: la libreria delle classi

Java: la libreria delle classi Java: la libreria delle classi Applet anatomia di un applet cenni di html La libreria JDBC per l accesso ai database il package java.sql 213 Applet Un applet è una applicazione Java che ha una forma particolare

Dettagli

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Siti web centrati sui dati Architettura MVC-2: i JavaBeans Siti web centrati sui dati Architettura MVC-2: i JavaBeans 1 ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con

Dettagli

Organizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind()

Organizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind() Organizzazione della lezione Lezione 18 Remote Method Invocation - 6 Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli Studi di Salerno

Dettagli

L unico campo che deve essere valorizzato, altrimenti non sarà possibile creare l album, è Nome. Per facilitare la consultazione e la ricerca è

L unico campo che deve essere valorizzato, altrimenti non sarà possibile creare l album, è Nome. Per facilitare la consultazione e la ricerca è 1. Accesso alle gallerie fotografiche di Modellismo Più La prima operazione da fare per poter fruire a pieno delle funzionalità offerte dalle Gallerie fotografiche di Modellismo Più è quella di efettuare

Dettagli

Concetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio

Concetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica lezione del 30 maggio 2014 Introduzione Un programma diviso in sezioni distinte Un approccio alla

Dettagli

Gestione degli eventi in Java

Gestione degli eventi in Java Gestione degli eventi in Java package java.awt.event.* Il modello degli eventi I componenti dell awt generano eventi in seguito alle azioni dell utente movimento del mouse click pressione di un tasto etc.

Dettagli

LPR 2005/ 2006 Lezione n.9. Elementi di grafica per lo svolgimento del progetto Double Buffering Caricamento delle immagini Gestione degli eventi

LPR 2005/ 2006 Lezione n.9. Elementi di grafica per lo svolgimento del progetto Double Buffering Caricamento delle immagini Gestione degli eventi LPR 2005/ 2006 Lezione n.9 Elementi di grafica per lo svolgimento del progetto Double Buffering Caricamento delle immagini Gestione degli eventi JAVA 2D PROGRAMMING Schermo : Matrice rettangolare composta

Dettagli

Ver. 1.1. Manuale d uso e configurazione

Ver. 1.1. Manuale d uso e configurazione Ver. 1.1 Manuale d uso e configurazione Introduzione Questa applicazione consente di gestire le principali funzioni delle centrali Xpanel, Imx e Solo da un dispositivo mobile dotato di sistema operativo

Dettagli

Guida all'utilizzo di Alfred

Guida all'utilizzo di Alfred Guida all'utilizzo di Alfred 1. Inserimento delle informazioni sulla classe Al primo accesso, l'utente deve indicare il nome dell'istituto scolastico e della classe in cui verrà svolta la prova. Completato

Dettagli

Ricambi Esplosi Ordini vers. 1.0.1 settembre 2007

Ricambi Esplosi Ordini  vers. 1.0.1 settembre 2007 spa Sito Web di Consultazione Disegni Esplosi e Distinte Ricambi, Gestione Preventivi e Ordini Ricambi e Consultazione della Documentazione Tecnica Prodotti Esplosi Ricambi Ordini vers. 1.0.1 settembre

Dettagli

MetaTrader 4 Builder

MetaTrader 4 Builder X-Trade Brokers Dom Maklerski S.A. MetaTrader 4 Builder Tutorial 2010-08-05 1/24 Indice Installazione...3 Notifica Legale...8 Impostazioni iniziali/preferenze...8 Lingua...9 Cartella piattaforma...9 Problemi

Dettagli

Parte II: Reti di calcolatori Lezione 12

Parte II: Reti di calcolatori Lezione 12 Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15 Parte II: Reti di calcolatori Lezione 12 Giovedì 16-04-2015 1 Confronto architetture C/S e

Dettagli

GUIDA ALL USO DELL AREA RISERVATA

GUIDA ALL USO DELL AREA RISERVATA GUA ALL USO DELL AREA RISERVATA Copyright 2012 Wolters Kluwer Italia Srl 1 Sommario 1 Come accedere all Area Riservata... 4 2 del Pannello di gestione del sito web... 5 3 delle sezioni... 8 3.1 - Gestione

Dettagli

Manuale Utente PEC e Client di Posta tradizionale

Manuale Utente PEC e Client di Posta tradizionale 1. Manuale di configurazione per l utilizzo della Casella di Posta Certificata PEC tramite il client di posta tradizionale. Per poter accedere alla propria casella mail di Posta Elettronica Certificata

Dettagli

BARCODE. Gestione Codici a Barre. Release 4.90 Manuale Operativo

BARCODE. Gestione Codici a Barre. Release 4.90 Manuale Operativo Release 4.90 Manuale Operativo BARCODE Gestione Codici a Barre La gestione Barcode permette di importare i codici degli articoli letti da dispositivi d inserimento (penne ottiche e lettori Barcode) integrandosi

Dettagli

appunti delle lezioni Architetture client/server: applicazioni server

appunti delle lezioni Architetture client/server: applicazioni server Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture /: applicazioni 1 La logica dei Abbiamo visto che un applicazione si connette e comunica con un applicazione mediante

Dettagli

Lyra CRM WebAccess. Pag. 1 di 16

Lyra CRM WebAccess. Pag. 1 di 16 Lyra CRM WebAccess L applicativo Lyra CRM, Offer & Service Management opera normalmente in architettura client/server: il database di Lyra risiede su un Server aziendale a cui il PC client si connette

Dettagli

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

Dettagli

Introduzione... 2. Un software per l automazione di procedure statistiche su dati Pet... 2. Il Pre-Processing... 7. La fase di statistica...

Introduzione... 2. Un software per l automazione di procedure statistiche su dati Pet... 2. Il Pre-Processing... 7. La fase di statistica... Indice Introduzione... 2 Un software per l automazione di procedure statistiche su dati Pet... 2 Il Pre-Processing... 7 La fase di statistica... 12 Algoritmo di classificazione... 13 L interfaccia... 15

Dettagli

MODULO 5 Basi di dati (database)

MODULO 5 Basi di dati (database) MODULO 5 Basi di dati (database) I contenuti del modulo: questo modulo riguarda la conoscenza da parte del candidato dei concetti fondamentali sulle basi di dati e la sua capacità di utilizzarli. Il modulo

Dettagli

Laboratorio Progettazione Web PHP e MySQL - Lezione 9. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2011/2012

Laboratorio Progettazione Web PHP e MySQL - Lezione 9. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2011/2012 Laboratorio Progettazione Web PHP e MySQL - Lezione 9 Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2011/2012 Architettura di una applicazione Web Browser Web HTTP Server Web PHP Dati View Control

Dettagli

21/02/2013 MANUALE DI ISTRUZIONI DELL APPLICAZIONE SID GENERAZIONE CERTIFICATI VERSIONE 1.0

21/02/2013 MANUALE DI ISTRUZIONI DELL APPLICAZIONE SID GENERAZIONE CERTIFICATI VERSIONE 1.0 MANUALE DI ISTRUZIONI DELL APPLICAZIONE SID GENERAZIONE VERSIONE 1.0 PAG. 2 DI 39 INDICE 1. PREMESSA 4 2. INSTALLAZIONE 5 3. ESECUZIONE 6 4. STRUTTURA DELLE CARTELLE 7 5. CARATTERISTICHE GENERALI DELL

Dettagli

CTVClient. Dopo aver inserito correttamente i dati, verrà visualizzata la schermata del tabellone con i giorni e le ore.

CTVClient. Dopo aver inserito correttamente i dati, verrà visualizzata la schermata del tabellone con i giorni e le ore. CTVClient Il CTVClient è un programma per sistemi operativi Windows che permette la consultazione e la prenotazione delle ore dal tabellone elettronico del Circolo Tennis Valbisenzio. Per utilizzarlo è

Dettagli

Nexus Badge Pc Access Manuale Installazione/Uso

Nexus Badge Pc Access Manuale Installazione/Uso Nexus Badge Pc Access Manuale Installazione/Uso 1. Installazione 1.1 Autorun Una volta inserito il CD-ROM di installazione, la procedura guidata dovrebbe auto-avviarsi e caricare la seguente schermata:

Dettagli

Gestire le PEC MANUALE OPERATIVO. Versione 1

Gestire le PEC MANUALE OPERATIVO. Versione 1 Gestire le PEC MANUALE OPERATIVO Versione 1 Marzo 2014 1 INDICE GENERALE 1.0 Panoramica della sequenza dei lavori... 3 2.0 Spiegazione dei pulsanti operativi della pagina iniziale (cruscotto)... 8 3.0

Dettagli

GUIDA AL PRIMO AVVIO E MANUALE D USO

GUIDA AL PRIMO AVVIO E MANUALE D USO GUIDA AL PRIMO AVVIO E MANUALE D USO Informazioni preliminari Il primo avvio deve essere fatto sul Server (il pc sul quale dovrà risiedere il database). Verificare di aver installato MSDE sul Server prima

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA1 1.3 - Le strutture di controllo 1 Prerequisiti Istruzioni semplici Strutture di controllo Scittura di semplici applicazioni Java 2 1 Introduzione In molti casi le

Dettagli

L applicazione di MVC alla simulazione di ascensore I COMPONENTI DELLE INTERFACCE UTENTE GRAFICHE: PARTE II 1

L applicazione di MVC alla simulazione di ascensore I COMPONENTI DELLE INTERFACCE UTENTE GRAFICHE: PARTE II 1 I COMPONENTI DELLE INTERFACCE UTENTE GRAFICHE: PARTE II 1 3.13 (Caso di studio facoltativo) Pensare a oggetti: Modello-Vista-Controllore I design pattern descrivono strategie efficaci per costruire sistemi

Dettagli

Iniziativa Comunitaria Equal II Fase IT G2 CAM - 017 Futuro Remoto. Approfondimento SOFTWARE PER L ARCHIVIAZIONE

Iniziativa Comunitaria Equal II Fase IT G2 CAM - 017 Futuro Remoto. Approfondimento SOFTWARE PER L ARCHIVIAZIONE APPROFONDIMENTO ICT Iniziativa Comunitaria Equal II Fase IT G2 CAM - 017 Futuro Remoto Approfondimento SOFTWARE PER L ARCHIVIAZIONE ORGANISMO BILATERALE PER LA FORMAZIONE IN CAMPANIA INDICE SOFTWARE PER

Dettagli

PHP: Interfacce; Gestione errori ed eccezioni. Pasqualetti Veronica

PHP: Interfacce; Gestione errori ed eccezioni. Pasqualetti Veronica PHP: Interfacce; Gestione errori ed eccezioni i Pasqualetti Veronica Interfacce In PHP non si possono ereditare proprietà da più classi. 2 Per ovviare al problema si possono creare delle interfacce che

Dettagli

GUIDA DI INSTALLAZIONE E PRIMA CONFIGURAZIONE DI EDILCONNECT PER I CONSULENTI

GUIDA DI INSTALLAZIONE E PRIMA CONFIGURAZIONE DI EDILCONNECT PER I CONSULENTI 1 GUIDA DI INSTALLAZIONE E PRIMA CONFIGURAZIONE DI EDILCONNECT PER I CONSULENTI Introduzione Dal 24 ottobre è possibile per i consulenti effettuare l installazione e la configurazione del nuovo applicativo

Dettagli

Guida alla Prima Configurazione dei Servizi

Guida alla Prima Configurazione dei Servizi Guida alla Prima Configurazione dei Servizi Guida alla Prima Configurazione dei Servizi 1 Indice 1 Configurazione del Centralino-Numero di Servizio...3 1.1 A. Servizio Cortesia e Gestione Code...5 1.2

Dettagli

Quando si sa chiaramente come si deve comportare l applicazione si può analizzare una possibile soluzione applicativa.

Quando si sa chiaramente come si deve comportare l applicazione si può analizzare una possibile soluzione applicativa. Introduzione alla tecnologia JMX 1 Viene analizzata l architettura sottostante le Java Managment Extensions (JMX) mostrandone un utilizzo applicativo e analizzando altri possibili scenari d uso di Ivan

Dettagli

Activation In sintesi: è inutile avere attivi degli oggetti se non vengono utilizzati

Activation In sintesi: è inutile avere attivi degli oggetti se non vengono utilizzati Activation In generale i Sistemi ad oggetti distribuiti sono progettati per lavorare con oggetti persistenti. Dato che questi sistemi saranno composti da migliaia (forse milioni) di tali oggetti, sarebbe

Dettagli