Creazione di un download manager in Java

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Creazione di un download manager in Java"

Transcript

1 34 Creazione di un download manager in Java Se ci si è collegati a Internet con una connessione telefonica, probabilmente si è sperimentata l interruzione di un download, con la necessità di ricominciare da zero. Le disconnessioni della linea o i crash del computer possono interrompere un download. Tuttavia, anche con una connessione ad alta velocità si possono verificare interruzioni della trasmissione. Come minimo, il riavvio di un download può far perdere tempo ed essere un esperienza frustrante. Un fatto a volte sottovalutato è che molti download interrotti si possono riprendere. Ciò consente di riavviare il download dal punto in cui si è interrotto invece di iniziare di nuovo. Nel presente capitolo si sviluppa uno strumento dal nome Download Manager che gestisce i download da Internet e semplicemente riprende i download interrotti. Consente inoltre di fermare e riprendere un download e di gestire download multipli contemporaneamente. Al centro dell utilità del Download Manager si trova la capacità di sfruttare lo scaricamento di parti specifiche di un file. In uno scenario di download classico, un intero file viene scaricato dall inizio alla fine. Se la trasmissione del file viene interrotta per qualche motivo, si perde l avanzamento verso il completamento del download. Il Download Manager, tuttavia, può riprendere dal punto in cui si è verificata un interruzione e scaricare solo la parte restante del file. Non tutti i download vengono creati allo stesso modo e alcuni non possono semplicemente essere ripresi. I dettagli sui file che non possono essere ripresi sono spiegati nel prossimo paragrafo. Non solo il Download Manager è un utility utile, ma illustra anche in modo eccellente la potenza e la concisione delle API incorporate di Java, in particolare per l interfacciamento a Internet. Poiché Internet è stata una delle forze dietro la

2 40 Capitolo 34 creazione di Java, non sorprende che le capacità di rete di Java siano insuperabili. Per esempio, il tentativo di creare il Download Manager in un altro linguaggio, quale C++, comporterebbe molti più problemi e lavoro I download da Internet Per capire e apprezzare il Download Manager è necessario capire come funzionano i download da Internet. Nella loro forma più semplice i download da Internet sono semplicemente transazioni client/server. Il client, il browser, richiede di scaricare un file da un server su Internet. Il server risponde inviando il file richiesto al browser. Affinché i client possano comunicare con i server, devono avere un protocollo definito. I protocolli più utilizzati per scaricare file sono File Transfer Protocol (FTP, protocollo di trasferimento di file) e Hypertext Transfer Protocol (HTTP, protocollo di trasferimento di ipertesti). Solitamente FTP è associato allo scambio di file tra computer, mentre HTTP è associato specificatamente al trasferimento di pagine web e dei relativi file (grafiche, suoni e così via). Nel tempo, con la crescita di popolarità del World Wide Web, HTTP è diventato il protocollo dominante per lo scaricamento di file da Internet, ma FTP non è completamente estinto. Per motivi di spazio il Download Manager sviluppato nel presente capitolo supporta solo download HTTP. Tuttavia l aggiunta di supporto per FTP è un ottimo esercizio per l estensione del codice. I download HTTP ha due forme: riprendibile (HTTP 1.1) e non riprendibile (HTTP 1.0). La differenza tra le due forme sta nel modo in cui è possibile richiedere i file dai server. Con il vecchio HTTP 1.0, un client può richiedere solo che un server invii un file, mentre con HTTP 1.1 un client può richiedere che un server invii un file completo o solo una parte specifica di un file. Si tratta della caratteristica su cui è creato il Download Manager Una panoramica sul Download Manager Il Download Manager utilizza una semplice ma efficace interfaccia GUI realizzata con le librerie Swing di Java. La finestra del Download Manager è mostrata nella Figura L utilizzo di Swing fornisce all interfaccia un aspetto moderno. La GUI mantiene un elenco di download gestiti. Ogni download nell elenco indica l URL, le dimensioni del file in byte, l avanzamento come percentuale verso il completamento e lo stato corrente. I download si possono trovare in uno degli stati indicati di seguito: Downloading (in scaricamento), Paused (in pausa), Complete (completo), Error (errore) o Cancelled (annullato). La GUI dispone inoltre di controlli per aggiungere download all elenco e per modificare lo stato di ogni download nell elenco. Quando si seleziona un download nell elenco, secondo lo stato corrente può essere messo fermato, ripreso, annullato o eliminato dall elenco. Il Download Manager è suddiviso in classi per la separazione naturale dei componenti funzionali: Download, DownloadsTableModel, ProgressRenderer e DownloadManager. La classe DownloadManager è responsabile dell interfaccia GUI e utilizza le classi DownloadsTableModel e ProgressRenderer per la visua-

3 Creazione di un download manager in Java 41 lizzazione dell elenco di download correnti. La classe Download rappresenta un download gestito ed è responsabile dello scaricamento di un file. Nei paragrafi di seguito si esamina in dettaglio ogni classe, evidenziandone il funzionamento e spiegandone il rapporto con le altre. Figura 34.1 L interfaccia GUI del Download Manager La classe Download La classe Download è il cavallo da tiro del Download Manager. Lo scopo primario è scaricare un file e salvarne i contenuti nel disco. Ogni volta che si aggiunge un nuovo download al Download Manager, viene creato un nuovo oggetto Download per gestirlo. Il Download Manager è in grado di scaricare più file contemporaneamente. Per farlo è necessario che ogni download sia eseguito in modo indipendente. È inoltre necessario che ogni singolo download gestisca il proprio stato in modo che possa essere riflesso nella GUI. Ciò si ottiene con la classe Download. Il codice completo per Download è mostrato di seguito. Si noti che estende Observable e implementa Runnable. Ogni parte si esamina in dettaglio nei paragrafi successivi. PARTE IV import java.io.*; import java.net.*; import java.util.*; // Questa classe scarica un file da un URL. class Download extends Observable implements Runnable { // Dimensioni max del buffer di download. private static final int MAX_BUFFER_SIZE = 1024; // Questi sono i nomi degli stati.

4 42 Capitolo 34 public static final String STATUSES[] = { Downloading, Paused, Complete, Cancelled, Error ; // Questi sono i codici degli stati. public static final int DOWNLOADING = 0; public static final int PAUSED = 1; public static final int COMPLETE = 2; public static final int CANCELLED = 3; public static final int ERROR = 4; private URL url; // URL di download private int size; // dimensioni del download in byte private int downloaded; // numero di byte scaricati private int status; // stato corrente del download // Costruttore per Download. public Download(URL url) { this.url = url; size = -1; downloaded = 0; status = DOWNLOADING; // Inizia il download. download(); // Otiene l URL del download. public String geturl() { return url.tostring(); // Otiene le dimensioni del download. public int getsize() { return size; // Ottiene l avanzamento del download. public float getprogress() { return ((float) downloaded / size) * 100; // Ottiene lo stato del download. public int getstatus() { return status; // Ferma il download. public void pause() { status = PAUSED; statechanged();

5 Creazione di un download manager in Java 43 // Riprende il download. public void resume() { status = DOWNLOADING; statechanged(); download(); // Annulla il download. public void cancel() { status = CANCELLED; statechanged(); // Contrassegna il download come con errore. private void error() { status = ERROR; statechanged(); // Avvia o riprende il download. private void download() { Thread thread = new Thread(this); thread.start(); // Ottiene la parte di nome di file dell URL. private String getfilename(url url) { String filename = url.getfile(); return filename.substring(filename.lastindexof( / ) + 1); // Scarica il file. public void run() { RandomAccessFile file = null; InputStream stream = null; PARTE IV try { // Apre connessione verso l URL. HttpURLConnection connection = (HttpURLConnection) url.openconnection(); // Specifica la parte di file da scaricare. connection.setrequestproperty( Range, bytes= + downloaded + - ); // Si connette al server. connection.connect(); // Verifica che il codice di risposta sia nell intervallo 200.

6 44 Capitolo 34 if (connection.getresponsecode() / 100!= 2) { error(); // Controlla la validità della lunghezza dei contenuti. int contentlength = connection.getcontentlength(); if (contentlength < 1) { error(); /* Imposta le dimensioni per il download se non sono già impostate. */ if (size == -1) { size = contentlength; statechanged(); // Apre il file e ne cerca la fine. file = new RandomAccessFile(getFileName(url), rw ); file.seek(downloaded); stream = connection.getinputstream(); while (status == DOWNLOADING) { /* Dimensiona il buffer secondo la quantità di file restata da scaricare. */ byte buffer[]; if (size - downloaded > MAX_BUFFER_SIZE) { buffer = new byte[max_buffer_size]; else { buffer = new byte[size - downloaded]; // Legge dal server nel buffer. int read = stream.read(buffer); if (read == -1) break; // Scrive il buffer nel file. file.write(buffer, 0, read); downloaded += read; statechanged(); /* Cambia lo stato in completo se questo punto è stato raggiunto perché è finito il download. */ if (status == DOWNLOADING) { status = COMPLETE;

7 Creazione di un download manager in Java 45 statechanged(); catch (Exception e) { error(); finally { // Chiude il file. if (file!= null) { try { file.close(); catch (Exception e) { // Chiude la connessine al server. if (stream!= null) { try { stream.close(); catch (Exception e) { // Segnala agli osservatori che lo stato del download è cambiato. private void statechanged() { setchanged(); notifyobservers(); Le variabili di Download Download inizia dichiarando numerose variabili static final che specificano le diverse costanti utilizzate dalla classe, quindi sono dichiarate quattro variabili di istanza. La variabile url contiene l URL Internet per il file da scaricare, la variabile size contiene le dimensioni del file da scaricare in byte; la variabile downloaded contiene il numero di byte scaricati e la variabile status indica lo stato corrente del download. PARTE IV Il costruttore di Download Al costruttore di Download si passa un riferimento all URL da scaricare sotto forma di un oggetto URL, assegnato alla variabile di istanza url. Si impostano quindi le variabili di istanza restanti sui relativi stati iniziali e si chiama il metodo download(). Si noti che size è impostata su -1 a indicare che non sono ancora presenti le dimensioni. Il metodo download() Il metodo download() crea un nuovo oggetto Thread, passando ad esso un riferimento all istanza di Download chiamante. Come detto in precedenza, è necessario che ogni download sia eseguito in modo indipendente. Affinché la classe

8 46 Capitolo 34 Download agisca da sola, deve essere eseguita nel proprio thread. Java dispone di un eccellente supporto incorporato per i thread e ne facilita l utilizzo. Per utilizzare i thread, la classe Download implementa semplicemente l interfaccia Runnable ridefinendo il metodo run(). Quando il metodo download() ha creato una nuova istanza di Thread, passando al costruttore la classe Download Runnable, chiama il metodo start() del thread. La chiamata al metodo start() fa in modo che sia eseguito il metodo run() dell istanza Runnable (della classe Download). Il metodo run() Quando viene eseguito il metodo run(), inizia il download effettivo. A causa delle dimensioni e dell importanza di tale metodo, viene esaminato in dettaglio. Il metodo run() inizia con le righe mostrate di seguito: RandomAccessFile file = null; InputStream stream = null; try { // Apre connessione verso l URL. HttpURLConnection connection = (HttpURLConnection) url.openconnection(); run() imposta le variabili per il flusso di rete da cui vengono letti i contenuti del download e imposta il file in cui si scrivono i contenuti del download. Quindi apre una connessione verso l URL del download chiamando url.openconnection(). Poiché è noto che il Download Manager supporta solo download HTTP, la connessione viene convertita nel tipo HttpURLConnection. La conversione della connessione in HttpURLConnection consente di sfruttare le funzioni di connessione specifiche per HTTP quali il metodo getresponsecode(). Si noti che la chiamata a url.openconnection() non crea una connessione verso il server dell URL; crea semplicemente una nuova istanza URLConnection associata all URL che in seguito verrà utilizzato per la connessione al server. Dopo la creazione di HttpURLConnection, si imposta la proprietà di richiesta della connessione chiamando connection.setrequestproperty(), come mostrato di seguito: // Specifica la parte di file da scaricare. connection.setrequestproperty( Range, bytes= + downloaded + - ); L impostazione delle proprietà di richiesta consente di inviare informazioni extra sulla richiesta al server da cui proviene il download. In questo caso si imposta la proprietà Range. È molto importante, poiché la proprietà Range specifica l intervallo di byte richiesti per il download dal server. Normalmente vengono scaricati tutti i byte del file in una sola volta. Tuttavia, se un download è stato interrotto o fermato, si devono recuperare solo i byte restanti del download. L impostazione della proprietà Range è la base del funzionamento del Download Manager.

9 Creazione di un download manager in Java 47 La proprietà Range è specificata come di seguito: byte iniziale-byte finale Per esempio, Tuttavia il byte finale dell intervallo è opzionale. Se il byte finale è assente, l intervallo termina alla fine del file. Il metodo run() non specifica mai il byte finale perché i download devono essere eseguiti fino allo scaricamento dell intero intervallo, se non vengono messi in pausa o interrotti. Le righe successive sono mostrate di seguito: // Si connette al server. connection.connect(); // Verifica che il codice di risposta sia nell intervallo 200. if (connection.getresponsecode() / 100!= 2) { error(); // Controlla la validità della lunghezza dei contenuti. int contentlength = connection.getcontentlength(); if (contentlength < 1) { error(); Viene chiamato il metodo connection.connect() per effettuare la connessione al server di download. Quindi si controlla il codice di risposta restituito dal server. Il protocollo HTTP ha un elenco di codici di risposta che indicano la risposta di un server a una richiesta. I codici di risposta HTTP sono organizzati in intervalli numerici di cento in cento e l intervallo 200 indica il successo. Si controlla che codice di risposta del server sia nell intervallo 200 chiamando connection.getresponsecode() e dividendolo per 100. Se il valore della divisione è 2, la connessione è stata effettuata con successo. Quindi run() ottiene la lunghezza del contenuto chiamando connection.get- ContentLength(). La lunghezza del contenuto rappresenta il numero di byte nel rile richiesto. Se la lunghezza del contenuto è minore di 1, viene chiamato il metodo error(), che aggiorna lo stato del download su ERROR, quindi chiama state- Changed(). Il metodo statechanged() è descritto in dettaglio più avanti. Dopo avere ottenuto la lunghezza del contenuto, il codice di seguito controlla se è già stato assegnato alla variabile size: PARTE IV /* Imposta le dimensioni per il download se non sono già impostate. */ if (size == -1) { size = contentlength; statechanged();

10 48 Capitolo 34 Come si può osservare, invece di assegnare la lunghezza del contenuto alla variabile size in modo incondizionato, viene assegnata solo se non ha già un valore. Il motivo è che la lunghezza del contenuto riflette il numero di byte che il server invierà. Se si specifica un elemento diverso da un inizio di intervallo basato su 0, la lunghezza del contenuto rappresenta solo una parte delle dimensioni del file. La variabile size deve essere impostata sulle dimensioni complete del file di download. Le righe di codice successive mostrate di seguito creano un nuovo RandomAccessFile utilizzando la parte di nome di file dell URL del download recuperato con una chiamata al metodo getfilename(): // Apre il file e ne cerca la fine. file = new RandomAccessFile(getFileName(url), rw ); file.seek(downloaded); Il RandomAccessFile viene aperto in modalità rw, che specifica che è possibile leggere il file e scrivere in esso. Quando il file è aperto, run() cerca la fine del file chiamando il metodo file.seek(), passando la variabile downloaded. Ciò indica al file di posizionarsi sul numero di byte scaricati, in altre parole alla fine. È necessario posizionare il file alla fine nel caso in cui un download sia stato ripreso. Se si riprende un download, i byte scaricati vengono aggiunti alla fine del file e non sovrascrivono i byte scaricati in precedenza. Dopo la preparazione del file di output, si ottiene un gestore del flusso di rete verso il server aperto chiamando connection.getinputstream(), come mostrato di seguito: stream = connection.getinputstream(); Inizia quindi il centro dell azione con un ciclo while: while (status == DOWNLOADING) { /* Dimensiona il buffer secondo la quantità di file restata da scaricare. */ byte buffer[]; if (size - downloaded > MAX_BUFFER_SIZE) { buffer = new byte[max_buffer_size]; else { buffer = new byte[size - downloaded]; // Legge dal server nel buffer. int read = stream.read(buffer); if (read == -1) break; // Scrive il buffer nel file. file.write(buffer, 0, read); downloaded += read; statechanged();

11 Creazione di un download manager in Java 49 Il ciclo viene impostato per essere eseguito fino a quando la variabile status è diversa da DOWNLOADING. Nel ciclo si crea un array di buffer byte per contenere i byte da scaricare. Il buffer è dimensionato secondo la quantità di download restante per il completamento. Se si deve scaricare una quantità di byte maggiore di MAX_BUFFER_SIZE, per dimensionare il buffer si utilizza MAX_BUFFER_ SIZE, altrimenti il buffer viene dimensionato sul numero di byte ancora da scaricare. Quando il buffer è stato dimensionato correttamente, ha luogo il download con una chiamata a stream.read(). La chiamata legge byte dal server e li inserisce nel buffer, restituendo il conteggio dei byte effettivamente letti. Se il numero di byte letti è uguale a -1, il download è completo e si esce dal ciclo, altrimenti il download non è terminato e i byte letti vengono scritti su disco con una chiamata a file.write(). Quindi si aggiorna la variabile downloaded, in modo da riflettere il numero di byte scaricati. Infine, all interno del ciclo, si chiama il metodo state- Changed(). Ulteriori dettagli più avanti. Dopo l uscita dal ciclo, il codice di seguito controlla perché si è usciti dal ciclo: /* Cambia lo stato in completo se questo punto è stato raggiunto perché è finito il download. */ if (status == DOWNLOADING) { status = COMPLETE; statechanged(); Se lo stato del download è ancora DOWNLOADING, significa che si è usciti dal ciclo perché il download è stato completato, altrimenti si è usciti dal ciclo perché è cambiato lo stato del download in un valore diverso da DOWNLOADING. Il metodo run() finisce con i blocchi catch e finally mostrati di seguito: catch (Exception e) { error(); finally { // Chiude il file. if (file!= null) { try { file.close(); catch (Exception e) { // Chiude la connessine al server. if (stream!= null) { try { stream.close(); catch (Exception e) { PARTE IV Se durante il processo di scaricamento viene lanciata un eccezione, il blocco catch rileva l eccezione e chiama il metodo error(). Il blocco finally garantisce che

12 50 Capitolo 34 se le connessioni file e stream sono state aperte, vengano chiuse, che sia stata lanciata un eccezione o no. Come esercizio, si può provare a modificare il codice in modo da utilizzare la nuova dichiarazione try con risorse per gestire tali risorse. Il metodo statechanged() Affinché il Download Manager visualizzi informazioni aggiornate sui download che gestisce, deve sapere quando cambiano le informazioni su un download. Per gestire tale situazione si utilizza lo schema di design Observer. Lo schema Observer è analogo a una mailing list di annunci in cui le persone si registrano per ricevere annunci. Ogni volta che esiste un nuovo annuncio, tutte le persone nell elenco ricevono un messaggio con l annuncio. Nel caso dello schema Observer esiste una classe osservata presso cui le classi osservatrici possono registrarsi per ricevere notifiche di modifiche. La classe Download utilizza lo schema Observer estendendo la classe di utility incorporata Observable di Java. L estensione della classe Observable consente alle classi che implementano l interfaccia Observer di Java di registrarsi presso la classe Download per ricevere notifiche di modifiche. Ogni volta che la classe Download deve notificare un cambiamento agli Observer registrati, viene chiamato il metodo statechanged(). Il metodo statechanged() chiama prima il metodo setchanged() della classe Observable per contrassegnare la classe come modificata. Quindi il metodo statechanged() chiama il metodo notifyobservers() di Observable, che trasmette la notifica di cambiamento agli Observer registrati. Metodi di azione e accessori La classe Download dispone di numerosi metodi di azione e accessori per controllare un download e ottenere dati da esso. Ogni metodo di azione pause(), resume() e cancel() fa semplicemente ciò che implica il nome: ferma, riprende o annulla il download, rispettivamente. Analogamente, il metodo error() contrassegna il download come con un errore. I metodi accessori geturl(), getsize(), getprogress() e getstatus() restituiscono i rispettivi valori correnti La classe ProgressRenderer La classe ProgressRenderer è una piccola classe di utility utilizzata per visualizzare l avanzamento corrente di un download elencato nell istanza JTable Downloads della GUI. Normalmente un istanza JTable visualizza i dati di ogni cella come testo. Tuttavia, spesso è particolarmente utile visualizzare i dati di una cella in modo diverso dal testo. Nel caso del Download Manager si desidera visualizzare ogni cella della colonna Progress della tabella come una barra di avanzamento. La classe ProgressRenderer mostrata di seguito lo rende possibile. Si noti che estende JProgressBar e implementa TableCellRenderer. import java.awt.*; import javax.swing.*; import javax.swing.table.*; // Questa classe visualizza una JProgressBar in una cella in tabella.

13 Creazione di un download manager in Java 51 class ProgressRenderer extends JProgressBar implements TableCellRenderer { // Costruttore per ProgressRenderer. public ProgressRenderer(int min, int max) { super(min, max); /* Restituisce questa JProgressBar come visualizzatore per la cella di tabella data. */ public Component gettablecellrenderercomponent( JTable table, Object value, boolean isselected, boolean hasfocus, int row, int column) { // Imposta il valore di completamento in percentuale di JProgressBar. setvalue((int) ((Float) value).floatvalue()); return this; La classe ProgressRenderer sfrutta il fatto che la classe JTable di Swing ha un sistema di rendering in grado di accettare plug-in per la visualizzazione di celle di tabella. Per inserire tale sistema di rendering, la classe ProgressRenderer deve implementare l interfaccia TableCellRenderer di Swing. Quindi è necessario registrare un istanza di ProgressRenderer presso un istanza di JTable; in tal modo indica all istanza JTable quali celle deve visualizzare con il plug-in. L implementazione dell interfaccia TableCellRenderer richiede che la classe ridefinisca il metodo gettablecellrenderercomponent(), chiamato ogni volta che un istanza JTable deve visualizzare una cella per cui la classe è stata registrata. Al metodo si passano numerose variabili, ma in questo caso si utilizza solo la variabile value, che contiene i dati per la cella da visualizzare e viene passata al metodo setvalue() di JProgressBar. Il metodo gettablecellrenderercomponent() termina restituendo un riferimento alla relativa classe. Funziona perché la classe ProgressRenderer è una sottoclasse di JProgressBar, discendente della classe AWT Component. PARTE IV 34.6 La classe DownloadsTableModel La classe DownloadsTableModel contiene l elenco di download del Download Manager ed è l origine di dati che supporta l istanza di JTable Downloads della GUI. La classe DownloadsTableModel è mostrata di seguito. Si noti che estende AbstractTableModel e implementa l interfaccia Observer. import java.util.*; import javax.swing.*; import javax.swing.table.*;

14 52 Capitolo 34 // Questa classe gestisce i dati della tabella di download. class DownloadsTableModel extends AbstractTableModel implements Observer { // Questi sono i nomi delle colonne della tabella. private static final String[] columnnames = { URL, Size, Progress, Status ; // Queste sono le classi per i valori di ogni colonna. private static final Class[] columnclasses = {String.class, String.class, JProgressBar.class, String.class; // L elenco di download della tabella. private ArrayList<Download> downloadlist = new ArrayList<Download>(); // Aggiunge un nuovo download alla tabella. public void adddownload(download download) { // Si registra per essere avvisto quando cambia il download. download.addobserver(this); downloadlist.add(download); 1); // Invia alla tabella notifica di inserimento di riga. firetablerowsinserted(getrowcount() - 1, getrowcount()- // Ottiene un download per la riga specificata. public Download getdownload(int row) { return downloadlist.get(row); // Elimina un download dall elenco. public void cleardownload(int row) { downloadlist.remove(row); // Invia alla tabella notifica di eliminazione di riga. firetablerowsdeleted(row, row); // Ottiene conteggio di colonne della tabella. public int getcolumncount() { return columnnames.length; // Ottiene il nome di una colonna. public String getcolumnname(int col) {

15 Creazione di un download manager in Java 53 return columnnames[col]; // Ottiene la classe di una colonna. public Class<?> getcolumnclass(int col) { return columnclasses[col]; // Ottiene conteggio di righe della tabella. public int getrowcount() { return downloadlist.size(); // Ottiene valore per una combinazione specifica di riga e di colonna. public Object getvalueat(int row, int col) { Download download = downloadlist.get(row); switch (col) { case 0: // URL return download.geturl(); case 1: // Dimensioni int size = download.getsize(); return (size == -1)? : Integer.toString(size); case 2: // Avanzamento return new Float(download.getProgress()); case 3: // Stato return Download.STATUSES[download.getStatus()]; return ; /* Update viene chiamato quando un Download informa i suoi osservatori di modifiche */ public void update(observable o, Object arg) { int index = downloadlist.indexof(o); PARTE IV // Invia alla tabella notifica di aggiornamento di riga. firetablerowsupdated(index, index); In sostanza la classe DownloadsTableModel è una classe di utility utilizzata dall istanza JTable Downloads per gestire i dati nella tabella. Quando si inizializza l istanza JTable, si passa un istanza DownloadsTableModel. JTable chiama quindi numerosi metodi sull istanza DownloadsTableModel per la compilazione della tabella. Il metodo getcolumncount() viene chiamato per recuperare il numero di colonne nella tabella. Analogamente, getrowcount() è utilizzato per recuperare il numero di righe nella tabella. Il metodo getcolumnname() restituisce il nome di una colonna dato l ID. Il metodo getdownload() prende un ID

16 54 Capitolo 34 di riga e restituisce l oggetto Download associato dall elenco. Gli altri metodi della classe DownloadsTableModel, più complessi, sono descritti in dettaglio nei paragrafi successivi. Il metodo adddownload() Il metodo adddownload(), mostrato di seguito, aggiunge un nuovo oggetto Download all elenco di download gestiti, quindi aggiunge una riga nella tabella: // Aggiunge un nuovo download alla tabella. public void adddownload(download download) { // Si registra per essere avvisto quando cambia il download. download.addobserver(this); downloadlist.add(download); // Invia alla tabella notifica di inserimento di riga. firetablerowsinserted(getrowcount() - 1, getrowcount() - 1); Il metodo si registra presso il nuovo Download come Observer interessato a ricevere notifiche di cambiamenti. Quindi il Download viene aggiunto all elenco interno di download gestiti. Infine viene inviata una notifica di evento di inserimento di riga nella tabella per indicare alla tabella che è stata aggiunta una nuova riga. Il metodo cleardownload() Il metodo cleardownload(), mostrato di seguito, elimina un Download dall elenco di download gestiti: // Elimina un download dall elenco. public void cleardownload(int row) { downloadlist.remove(row); // Invia alla tabella notifica di eliminazione di riga. firetablerowsdeleted(row, row); Dopo avere eliminato il Download dall elenco interno, viene inviata una notifica di eliminazione di riga di tabella per indicare alla tabella che è stata eliminata una riga. Il metodo getcolumnclass() Il metodo getcolumnclass(), mostrato di seguito, restituisce il tipo di classe per i dati visualizzati nella colonna specificata: // Ottiene la classe di una colonna. public Class<?> getcolumnclass(int col) { return columnclasses[col];

17 Creazione di un download manager in Java 55 Tutte le colonne sono visualizzate come testo (vale a dire oggetti String) ad eccezione della colonna Progress, visualizzata come barra di avanzamento (un oggetto di tipo JProgressBar). Il metodo getvalueat() Il metodo getvalueat(), mostrato di seguito, viene chiamato per ottenere il valore corrente da visualizzare per ogni cella della tabella: // Ottiene valore per una combinazione specifica di riga e di colonna. public Object getvalueat(int row, int col) { Download download = downloadlist.get(row); switch (col) { case 0: // URL return download.geturl(); case 1: // Dimensioni int size = download.getsize(); return (size == -1)? : Integer.toString(size); case 2: // Avanzamento return new Float(download.getProgress()); case 3: // Stato return Download.STATUSES[download.getStatus()]; return ; Il metodo prima cerca il Download corrispondente alla riga specificata, quindi si utilizza la colonna specificata per determinare quale valore delle proprietà di Download restituire. Il metodo update() Il metodo update() è mostrato di seguito. Adempie al contratto con l interfaccia Observer consentendo alla classe DownloadsTableModel di ricevere notifiche dagli oggetti Download quando cambiano. PARTE IV /* Update viene chiamato quando un Download informa i suoi osservatori di modifiche */ public void update(observable o, Object arg) { int index = downloadlist.indexof(o); // Invia alla tabella notifica di aggiornamento di riga. firetablerowsupdated(index, index); Al metodo si passa un riferimento al Download cambiato, sotto forma di oggetto Observable. Quindi si cerca un indice verso tale download nell elenco dei download e si utilizza tale indice per inviare una notifica di evento di aggiornamento di riga di tabella, che indica alla tabella che la riga data è stata modificata. La tabella visualizza la riga con l indice dato, riflettendo i nuovi valori.

18 56 Capitolo La classe DownloadManager Gettate le basi con la spiegazione di tutte le classi helper del Download Manager, è possibile esaminare la classe DownloadManager, responsabile della creazione e dell esecuzione della GUI del Download Manager. La classe dispone di un metodo main(), il primo dichiarato durante l esecuzione. Il metodo main() crea una nuova istanza della classe DownloadManager e chiama il relativo metodo show(), che la visualizza. La classe DownloadManager è mostrata di seguito. Si noti che estende JFrame e implementa Observer. I paragrafi di seguito la esaminano in dettaglio. import java.awt.*; import java.awt.event.*; import java.net.*; import java.util.*; import javax.swing.*; import javax.swing.event.*; // Il Download Manager. public class DownloadManager extends JFrame implements Observer { // Aggiunge i campi di testo per i download. private JTextField addtextfield; // Il modello di dati della tabella di download. private DownloadsTableModel tablemodel; // Tabella che elenca i download. private JTable table; // Questi sono i pulsanti per la gestione del download selezionato. private JButton pausebutton, resumebutton; private JButton cancelbutton, clearbutton; // Download selezionato. private Download selecteddownload; // Flag per sapere se la selezione di tabella deve essere annullata. private boolean clearing; // Costruttore per Download Manager. public DownloadManager() { // Imposta titolo dell applicazione. settitle( Download Manager );

19 Creazione di un download manager in Java 57 // Imposta dimensioni della finestra. setsize(640, 480); // Gestisce eventi di chiusura della finestra. addwindowlistener(new WindowAdapter() { public void windowclosing(windowevent e) { actionexit(); ); // Imposta il menu di file. JMenuBar menubar = new JMenuBar(); JMenu filemenu = new JMenu( File ); filemenu.setmnemonic(keyevent.vk_f); JMenuItem fileexitmenuitem = new JMenuItem( Exit, KeyEvent.VK_X); fileexitmenuitem.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { actionexit(); ); filemenu.add(fileexitmenuitem); menubar.add(filemenu); setjmenubar(menubar); // Imposta pannello di aggiunta. JPanel addpanel = new JPanel(); addtextfield = new JTextField(30); addpanel.add(addtextfield); JButton addbutton = new JButton( Add Download ); addbutton.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { actionadd(); ); addpanel.add(addbutton); PARTE IV // Imposta tabella di download. tablemodel = new DownloadsTableModel(); table = new JTable(tableModel); table.getselectionmodel().addlistselectionlistener(new ListSelectionListener() { public void valuechanged(listselectionevent e) { tableselectionchanged(); ); // Consente di selezionare una sola riga per volta. table.setselectionmode(listselectionmodel.single_selec- TION);

20 58 Capitolo 34 // Imposta ProgressBar come visualizzatore per colonna di avanzamento. ProgressRenderer renderer = new ProgressRenderer(0, 100); renderer.setstringpainted(true); // mostra testo avanzamento table.setdefaultrenderer(jprogressbar.class, renderer); // Imposta altezza riga di tabella sufficiente per contenere JProgressBar. table.setrowheight( (int) renderer.getpreferredsize().getheight()); // Imposta pannello di download. JPanel downloadspanel = new JPanel(); downloadspanel.setborder( BorderFactory.createTitledBorder( Downloads )); downloadspanel.setlayout(new BorderLayout()); downloadspanel.add(new JScrollPane(table), BorderLayout.CENTER); // Imposta pannello di pulsanti. JPanel buttonspanel = new JPanel(); pausebutton = new JButton( Pause ); pausebutton.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { actionpause(); ); pausebutton.setenabled(false); buttonspanel.add(pausebutton); resumebutton = new JButton( Resume ); resumebutton.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { actionresume(); ); resumebutton.setenabled(false); buttonspanel.add(resumebutton); cancelbutton = new JButton( Cancel ); cancelbutton.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { actioncancel(); ); cancelbutton.setenabled(false); buttonspanel.add(cancelbutton); clearbutton = new JButton( Clear ); clearbutton.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { actionclear();

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

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0 Prodotto Inaz Download Manager Release 1.3.0 Tipo release COMPLETA RIEPILOGO ARGOMENTI 1. Introduzione... 2 2. Architettura... 3 3. Configurazione... 4 3.1 Parametri di connessione a Internet... 4 3.2

Dettagli

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Autore: Prof. Agostino Sorbara ITIS "M. M.

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

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA5 B1 Gestione eventi 1 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti AWT o Swing Programmazione ad eventi 2 1 Introduzione Le interfacce create

Dettagli

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it MODELLO CLIENT/SERVER Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it POSSIBILI STRUTTURE DEL SISTEMA INFORMATIVO La struttura di un sistema informativo

Dettagli

MANUALE UTENTE Fiscali Free

MANUALE UTENTE Fiscali Free MANUALE UTENTE Fiscali Free Le informazioni contenute in questa pubblicazione sono soggette a modifiche da parte della ComputerNetRimini. Il software descritto in questa pubblicazione viene rilasciato

Dettagli

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo Creazione di moduli Creazione di moduli Che cos'è un modulo? Un elenco di domande accompagnato da aree in cui è possibile scrivere le risposte, selezionare opzioni. Il modulo di un sito Web viene utilizzato

Dettagli

DENUNCE EDILCONNECT GUIDA COMPILAZIONE

DENUNCE EDILCONNECT GUIDA COMPILAZIONE Cassa Edile Como e Lecco DENUNCE EDILCONNECT GUIDA COMPILAZIONE COMPILAZIONE DA FILE PAGHE Guida per i consulenti e le imprese che compilano la denuncia utilizzando il file di esportazione dei software

Dettagli

Java Applet. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010

Java Applet. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010 Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it Java Applet 1 Application VS Applet Una

Dettagli

Hub-PA Versione 1.0.6 Manuale utente

Hub-PA Versione 1.0.6 Manuale utente Hub-PA Versione 1.0.6 Manuale utente (Giugno 2014) Hub-PA è la porta d ingresso al servizio di fatturazione elettronica verso la Pubblica Amministrazione (PA) a disposizione di ogni fornitore. Questo manuale

Dettagli

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine. ESERCIZIARIO Risposte ai quesiti: 2.1 Non sono necessarie modifiche. Il nuovo protocollo utilizzerà i servizi forniti da uno dei protocolli di livello trasporto. 2.2 Il server deve essere sempre in esecuzione

Dettagli

Software Servizi Web UOGA

Software Servizi Web UOGA Manuale Operativo Utente Software Servizi Web UOGA S.p.A. Informatica e Servizi Interbancari Sammarinesi Strada Caiese, 3 47891 Dogana Tel. 0549 979611 Fax 0549 979699 e-mail: info@isis.sm Identificatore

Dettagli

ALTRO. v 2.4.0 (Aprile 2015)

ALTRO. v 2.4.0 (Aprile 2015) ALTRO v 2.4.0 (Aprile 2015) Contenuto 60 60 60 61 61 62 64 64 65 66 67 67 69 69 70 70 71 73 73 Panoramica menù Altro Informazioni Assistenza Sistema Notifiche Meteo Configurazioni Modifica Utente Gestione

Dettagli

Corso basi di dati Installazione e gestione di PWS

Corso basi di dati Installazione e gestione di PWS Corso basi di dati Installazione e gestione di PWS Gianluca Di Tomassi Email: ditomass@dia.uniroma3.it Università di Roma Tre Cosa è PWS? Il Personal Web Server altro non è che una versione ridotta del

Dettagli

L interfaccia grafica in Java

L interfaccia grafica in Java L interfaccia grafica in Java Java possiede due package per la creazione di interfacce grafiche java.awt javax.swing AWT (Abstract Widget Toolkit) presente già in Java 1.0, migliorato in Java 1.1. Invariato

Dettagli

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0 11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0 PAG. 2 DI 38 INDICE 1. PREMESSA 3 2. SCARICO DEL SOFTWARE 4 2.1 AMBIENTE WINDOWS 5 2.2 AMBIENTE MACINTOSH 6 2.3 AMBIENTE

Dettagli

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti.

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti. SH.MedicalStudio Presentazione SH.MedicalStudio è un software per la gestione degli studi medici. Consente di gestire un archivio Pazienti, con tutti i documenti necessari ad avere un quadro clinico completo

Dettagli

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress. ESERCIZIARIO Risposte ai quesiti: 10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress. 10.2. Un numero intero in Java è compreso nell'intervallo ( 2 31 ) e (2 31

Dettagli

Registratori di Cassa

Registratori di Cassa modulo Registratori di Cassa Interfacciamento con Registratore di Cassa RCH Nucleo@light GDO BREVE GUIDA ( su logiche di funzionamento e modalità d uso ) www.impresa24.ilsole24ore.com 1 Sommario Introduzione...

Dettagli

appunti delle lezioni Architetture client/server: applicazioni client

appunti delle lezioni Architetture client/server: applicazioni client Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture client/server: applicazioni client 1 Architetture client/server: un esempio World wide web è un esempio particolarmente

Dettagli

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica Consiglio regionale della Toscana Regole per il corretto funzionamento della posta elettronica A cura dell Ufficio Informatica Maggio 2006 Indice 1. Regole di utilizzo della posta elettronica... 3 2. Controllo

Dettagli

1) GESTIONE DELLE POSTAZIONI REMOTE

1) GESTIONE DELLE POSTAZIONI REMOTE IMPORTAZIONE ESPORTAZIONE DATI VIA FTP Per FTP ( FILE TRANSFER PROTOCOL) si intende il protocollo di internet che permette di trasferire documenti di qualsiasi tipo tra siti differenti. Per l utilizzo

Dettagli

1. Le macro in Access 2000/2003

1. Le macro in Access 2000/2003 LIBRERIA WEB 1. Le macro in Access 2000/2003 Per creare una macro, si deve aprire l elenco delle macro dalla finestra principale del database: facendo clic su Nuovo, si presenta la griglia che permette

Dettagli

ALTRO. v 2.5.0 (Maggio 2015)

ALTRO. v 2.5.0 (Maggio 2015) ALTRO v 2.5.0 (Maggio 2015) Contenuto 3 3 4 4 5 5 6 8 8 9 10 11 12 13 14 14 14 15 17 18 Panoramica menù Altro Informazioni Assistenza Sistema Notifiche Geolocalizzazione Meteo Configurazioni Modifica Utente

Dettagli

Manuale per la configurazione di AziendaSoft in rete

Manuale per la configurazione di AziendaSoft in rete Manuale per la configurazione di AziendaSoft in rete Data del manuale: 7/5/2013 Aggiornamento del manuale: 2.0 del 10/2/2014 Immagini tratte da Windows 7 Versione di AziendaSoft 7 Sommario 1. Premessa...

Dettagli

Programmazione Java: Interfacce grafiche (GUI)

Programmazione Java: Interfacce grafiche (GUI) Programmazione Java: Interfacce grafiche (GUI) romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp ( 1 ) (GUI) Interfacce grafiche Rendere facili le cose semplici e possibili le cose difficili

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

MANUALE D USO DELL E-COMMERCE. Versione avanzata

MANUALE D USO DELL E-COMMERCE. Versione avanzata MANUALE D USO DELL E-COMMERCE Versione avanzata Versione SW. 2 Rev. 0.2 Sommario 1 Personalizzare i contenuti del sito... 3 1.1 Inserimento logo e slogan azienda... 3 1.2 Modificare i dati dell Azienda...

Dettagli

Invio SMS. DM Board ICS Invio SMS

Invio SMS. DM Board ICS Invio SMS Invio SMS In questo programma proveremo ad inviare un SMS ad ogni pressione di uno dei 2 tasti della DM Board ICS. Per prima cosa creiamo un nuovo progetto premendo sul pulsante (Create new project): dove

Dettagli

Il seguente Syllabus è relativo al Modulo 7, Reti informatiche, e fornisce i fondamenti per il test di tipo pratico relativo a questo modulo

Il seguente Syllabus è relativo al Modulo 7, Reti informatiche, e fornisce i fondamenti per il test di tipo pratico relativo a questo modulo Modulo 7 Reti informatiche Il seguente Syllabus è relativo al Modulo 7, Reti informatiche, e fornisce i fondamenti per il test di tipo pratico relativo a questo modulo Scopi del modulo Modulo 7 Reti informatiche,

Dettagli

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli CODICE Le fonti in cui si possono trovare tutorial o esempi di progetti utilizzati con Arduino si trovano nel sito ufficiale di Arduino, oppure nei forum di domotica e robotica. Il codice utilizzato per

Dettagli

Grafico della parabola

Grafico della parabola Grafico della parabola Il grafico matematico è un disegno che mostra l andamento di una funzione f(x) al variare della variabile x. Per tracciare un grafico sul video del computer, si deve scegliere un

Dettagli

per immagini guida avanzata Organizzazione e controllo dei dati Geometra Luigi Amato Guida Avanzata per immagini excel 2000 1

per immagini guida avanzata Organizzazione e controllo dei dati Geometra Luigi Amato Guida Avanzata per immagini excel 2000 1 Organizzazione e controllo dei dati Geometra Luigi Amato Guida Avanzata per immagini excel 2000 1 Il raggruppamento e la struttura dei dati sono due funzioni di gestione dati di Excel, molto simili tra

Dettagli

Manuale di KSystemLog. Nicolas Ternisien

Manuale di KSystemLog. Nicolas Ternisien Nicolas Ternisien 2 Indice 1 Usare KSystemLog 5 1.1 Introduzione......................................... 5 1.1.1 Cos è KSystemLog?................................ 5 1.1.2 Funzionalità.....................................

Dettagli

Soluzione dell esercizio del 2 Febbraio 2004

Soluzione dell esercizio del 2 Febbraio 2004 Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo

Dettagli

Installazione del software Fiery per Windows e Macintosh

Installazione del software Fiery per Windows e Macintosh 13 Installazione del software Fiery per Windows e Macintosh Il CD del Software per l utente comprende le utilità di installazione di Fiery Link. Il software di utilità Fiery è supportato in Windows 95/98,

Dettagli

A destra è delimitata dalla barra di scorrimento verticale, mentre in basso troviamo una riga complessa.

A destra è delimitata dalla barra di scorrimento verticale, mentre in basso troviamo una riga complessa. La finestra di Excel è molto complessa e al primo posto avvio potrebbe disorientare l utente. Analizziamone i componenti dall alto verso il basso. La prima barra è la barra del titolo, dove troviamo indicato

Dettagli

FOXWave 1.0.0 Gestione gare ARDF IZ1FAL Secco Marco Sezione ARI BIELLA

FOXWave 1.0.0 Gestione gare ARDF IZ1FAL Secco Marco Sezione ARI BIELLA FOXWave 1.0.0 Gestione gare ARDF IZ1FAL Secco Marco Sezione ARI BIELLA Redatto da IZ1FAL Secco Marco Pagina 1 di 15 INDICE 1 1- INSTALLAZIONE... 3 1-1 Scaricare i pacchetti aggiornati... 3 1-2 Startup

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

GUIDA UTENTE MONEY TRANSFER MANAGER

GUIDA UTENTE MONEY TRANSFER MANAGER GUIDA UTENTE MONEY TRANSFER MANAGER (vers. 1.0.2) GUIDA UTENTE MONEY TRANSFER MANAGER (vers. 1.0.2)... 1 Installazione... 2 Prima esecuzione... 5 Login... 7 Funzionalità... 8 Anagrafica... 9 Registrazione

Dettagli

Telematica II 17. Esercitazione/Laboratorio 6

Telematica II 17. Esercitazione/Laboratorio 6 Multitasking e Multithreading Telematica II 17. Esercitazione/Laboratorio 6 Multitasking si riferisce all abilità di un computer di eseguire processi (jobs) multipli in maniera concorrente si ricorda che

Dettagli

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE 1/6 MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE Per prima cosa si ringrazia per aver scelto ImmobiPhone e per aver dato fiducia al suo autore. Il presente documento istruisce l'utilizzatore sull'uso del programma

Dettagli

1 ACCESSO AL NET@PORTAL... 3 2 CARICAMENTO DELLE RICHIESTE/PRESTAZIONI... 4 3 MONITORAGGIO DELLE RICHIESTE... 8 4 DOWNLOAD ESITI...

1 ACCESSO AL NET@PORTAL... 3 2 CARICAMENTO DELLE RICHIESTE/PRESTAZIONI... 4 3 MONITORAGGIO DELLE RICHIESTE... 8 4 DOWNLOAD ESITI... MANUALE UTENTE NET@PORTAL ADEGUAMENTO DEL. 185/08 Sommario 1 ACCESSO AL NET@PORTAL... 3 2 CARICAMENTO DELLE RICHIESTE/PRESTAZIONI... 4 2.1 CREAZIONE DEL FILE CSV PER IL CARICAMENTO MASSIVO DELLE RICHIESTE...

Dettagli

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito)

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito) Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito) Le seguenti istruzioni sono relative all installazione di IBM SPSS Modeler Text Analytics versione 15 mediante un licenza

Dettagli

Java threads (2) Programmazione Concorrente

Java threads (2) Programmazione Concorrente Java threads (2) emanuele lattanzi isti information science and technology institute 1/28 Programmazione Concorrente Utilizzo corretto dei thread in Java emanuele lattanzi isti information science and

Dettagli

Appunti di Informatica www.mimmocorrado.it 1

Appunti di Informatica www.mimmocorrado.it 1 Installare Java Il programma può essere scaricato dal seguente indirizzo: http://www.java.com/it/download/windows_ie.jsp?locale=it&host=www.java.com Per installare la JDK è necessario: 1. scaricare il

Dettagli

Lo scenario: la definizione di Internet

Lo scenario: la definizione di Internet 1 Lo scenario: la definizione di Internet INTERNET E UN INSIEME DI RETI DI COMPUTER INTERCONNESSE TRA LORO SIA FISICAMENTE (LINEE DI COMUNICAZIONE) SIA LOGICAMENTE (PROTOCOLLI DI COMUNICAZIONE SPECIALIZZATI)

Dettagli

Aggiornamenti Sistema Addendum per l utente

Aggiornamenti Sistema Addendum per l utente Aggiornamenti Sistema Addendum per l utente Aggiornamenti Sistema è un servizio del server di stampa che consente di tenere il software di sistema sul proprio server di stampa sempre aggiornato con gli

Dettagli

GUARINI PATRIMONIO CULTURALE VERSIONE MSDE/SQL SERVER MANUALE DI INSTALLAZIONE GUARINI PATRIMONIO CULTURALE VERSIONE MSDE/SQL SERVER

GUARINI PATRIMONIO CULTURALE VERSIONE MSDE/SQL SERVER MANUALE DI INSTALLAZIONE GUARINI PATRIMONIO CULTURALE VERSIONE MSDE/SQL SERVER MANUALE DI INSTALLAZIONE GUARINI PATRIMONIO CULTURALE SOMMARIO 1. Installazione guarini patrimonio culturale MSDE... 3 1.1 INSTALLAZIONE MOTORE MSDE...4 1.2 INSTALLAZIONE DATABASE GUARINI PATRIMONIO CULTURALE

Dettagli

Centro Acquisti per la Pubblica Amministrazione EmPULIA. Linee guida per gli Enti Aderenti. Procedure Negoziate: Richiesta di Preventivo. Versione 2.

Centro Acquisti per la Pubblica Amministrazione EmPULIA. Linee guida per gli Enti Aderenti. Procedure Negoziate: Richiesta di Preventivo. Versione 2. Centro Acquisti per la Pubblica Amministrazione EmPULIA Linee guida per gli Enti Aderenti Procedure Negoziate: Richiesta di Preventivo Versione 2.4 PROCEDURE NEGOZIATE - Richiesta di Preventivo E la funzione

Dettagli

Database Manager Guida utente DMAN-IT-01/09/10

Database Manager Guida utente DMAN-IT-01/09/10 Database Manager Guida utente DMAN-IT-01/09/10 Le informazioni contenute in questo manuale di documentazione non sono contrattuali e possono essere modificate senza preavviso. La fornitura del software

Dettagli

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

LA GESTIONE DELLE VISITE CLIENTI VIA WEB LA GESTIONE DELLE VISITE CLIENTI VIA WEB L applicazione realizzata ha lo scopo di consentire agli agenti l inserimento via web dei dati relativi alle visite effettuate alla clientela. I requisiti informatici

Dettagli

Manuale di istruzioni sulle maschere per il calcolo del punteggio e del voto (unico) degli studenti che sostengono la Prova nazionale 2011

Manuale di istruzioni sulle maschere per il calcolo del punteggio e del voto (unico) degli studenti che sostengono la Prova nazionale 2011 Manuale di istruzioni sulle maschere per il calcolo del punteggio e del voto (unico) degli studenti che sostengono la Prova nazionale 2011 (CLASSI NON CAMPIONE) Prova nazionale 2010 11 1 A.S. 2010 11 Pubblicato

Dettagli

Portale tirocini. Manuale utente Per la gestione del Progetto Formativo

Portale tirocini. Manuale utente Per la gestione del Progetto Formativo GESTIONE PROGETTO FORMATIVO Pag. 1 di 38 Portale tirocini Manuale utente Per la gestione del Progetto Formativo GESTIONE PROGETTO FORMATIVO Pag. 2 di 38 INDICE 1. INTRODUZIONE... 3 2. ACCESSO AL SISTEMA...

Dettagli

Corso Eclipse. Prerequisiti. 1 Introduzione

Corso Eclipse. Prerequisiti. 1 Introduzione Corso Eclipse 1 Introduzione 1 Prerequisiti Uso elementare del pc Esecuzione ricerche su Internet Esecuzione download Conoscenza elementare della programmazione 2 1 Cos è Eclipse Eclipse è un IDE (Integrated

Dettagli

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008) Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008) Introduzione a Java: primo programma, installazione dell ambiente di sviluppo, compilazione ed esecuzione 1 Introduzione Java è un linguaggio

Dettagli

Modulo 3 - Elaborazione Testi 3.5 Stampa unione

Modulo 3 - Elaborazione Testi 3.5 Stampa unione Università degli Studi dell Aquila Corso ECDL programma START Modulo 3 - Elaborazione Testi 3.5 Stampa unione Maria Maddalena Fornari Stampa Unione Processo che permette di unire dati provenienti da tipi

Dettagli

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti) (Esercizi Tratti da Temi d esame degli ordinamenti precedenti) Esercizio 1 L'agenzia viaggi GV - Grandi Viaggi vi commissiona l'implementazione della funzione AssegnaVolo. Tale funzione riceve due liste

Dettagli

Sistema Banca dati e Repertorio dei dispositivi medici Notifiche multiple di DM simili

Sistema Banca dati e Repertorio dei dispositivi medici Notifiche multiple di DM simili Sistema Banca dati e Repertorio dei dispositivi medici Notifiche multiple di DM simili Questa presentazione intende illustrare brevemente la nuova funzionalità (Notifiche multiple di DM simili) predisposta

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Grafica: Thread versione 1.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

Dettagli

SOMMARIO... 3 INTRODUZIONE...

SOMMARIO... 3 INTRODUZIONE... Sommario SOMMARIO... 3 INTRODUZIONE... 4 INTRODUZIONE ALLE FUNZIONALITÀ DEL PROGRAMMA INTRAWEB... 4 STRUTTURA DEL MANUALE... 4 INSTALLAZIONE INRAWEB VER. 11.0.0.0... 5 1 GESTIONE INTRAWEB VER 11.0.0.0...

Dettagli

Capitolo 3 Guida operativa del programma TQ Sistema

Capitolo 3 Guida operativa del programma TQ Sistema Capitolo 3 Guida operativa del programma TQ Sistema Panoramica delle funzionalità Questa guida contiene le informazioni necessarie per utilizzare il pacchetto TQ Sistema in modo veloce ed efficiente, mediante

Dettagli

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

Dettagli

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro,

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro, EXCEL PER WINDOWS95 1.Introduzione ai fogli elettronici I fogli elettronici sono delle applicazioni che permettono di sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area

Dettagli

Procedura SMS. Manuale Utente

Procedura SMS. Manuale Utente Procedura SMS Manuale Utente INDICE: 1 ACCESSO... 4 1.1 Messaggio di benvenuto... 4 2 UTENTI...4 2.1 Gestione utenti (utente di Livello 2)... 4 2.1.1 Creazione nuovo utente... 4 2.1.2 Modifica dati utente...

Dettagli

METODI per effettuare previsioni con analisi di tipo WHAT-IF

METODI per effettuare previsioni con analisi di tipo WHAT-IF METODI per effettuare previsioni con analisi di tipo WHAT-IF 1. TABELLA DATI Una tabella di dati è un intervallo che mostra come la modifica di alcuni valori nelle formule ne influenza i risultati. Le

Dettagli

Manuale d'uso del Connection Manager

Manuale d'uso del Connection Manager Manuale d'uso del Connection Manager Edizione 1.0 2 Indice Informazioni sull'applicazione Gestione connessioni 3 Operazioni preliminari 3 Aprire l'applicazione Gestione connessioni 3 Visualizzare lo stato

Dettagli

Prova di informatica & Laboratorio di Informatica di Base

Prova di informatica & Laboratorio di Informatica di Base Prova di informatica & Laboratorio di Informatica di Base Prof. Orlando De Pietro Programma L' hardware Computer multiutente e personal computer Architettura convenzionale di un calcolatore L unità centrale

Dettagli

GESTIONE DEI PROCESSI

GESTIONE DEI PROCESSI Sistemi Operativi GESTIONE DEI PROCESSI Processi Concetto di Processo Scheduling di Processi Operazioni su Processi Processi Cooperanti Concetto di Thread Modelli Multithread I thread in Java Concetto

Dettagli

Manuale Utente MyFastPage

Manuale Utente MyFastPage Manuale MyFastPage Utente Elenco dei contenuti 1. Cosa è MyVoice Home?... 4 1.1. Introduzione... 5 2. Utilizzo del servizio... 6 2.1. Accesso... 6 2.2. Disconnessione... 7 2.3. Configurazione base Profilo

Dettagli

Manuale NetSupport v.10.70.6 Liceo G. Cotta Marco Bolzon

Manuale NetSupport v.10.70.6 Liceo G. Cotta Marco Bolzon NOTE PRELIMINARI: 1. La versione analizzata è quella del laboratorio beta della sede S. Davide di Porto, ma il programma è presente anche nel laboratorio alfa (Porto) e nel laboratorio di informatica della

Dettagli

Console di Amministrazione Centralizzata Guida Rapida

Console di Amministrazione Centralizzata Guida Rapida Console di Amministrazione Centralizzata Contenuti 1. Panoramica... 2 Licensing... 2 Panoramica... 2 2. Configurazione... 3 3. Utilizzo... 4 Gestione dei computer... 4 Visualizzazione dei computer... 4

Dettagli

Programmazione a Oggetti Lezione 10. Ereditarieta

Programmazione a Oggetti Lezione 10. Ereditarieta Programmazione a Oggetti Lezione 10 Ereditarieta Sommario Come definire sottoclassi Costruttori Abstract Classes Final Ereditarietà: promemoria Strumento tipico dell OOP per riusare il codice e creare

Dettagli

Compilatore risorse display grafico LCD serie IEC-line

Compilatore risorse display grafico LCD serie IEC-line Compilatore risorse display grafico LCD serie IEC-line aggiornamento: 22-11-2012 IEC-line by OVERDIGIT overdigit.com 1. Il display grafico LCD I PLC della serie IPC-line possono disporre opzionalmente

Dettagli

TERMINALE. Creazione e gestione di una postazione terminale di Eureka

TERMINALE. Creazione e gestione di una postazione terminale di Eureka TERMINALE Creazione e gestione di una postazione terminale di Eureka Febbraio 2011 2 Creazione e gestione di una postazione terminale di Eureka INDICE POSTAZIONE TERMINALE EUREKA REQUISITI INSTALLAZIONE

Dettagli

L amministratore di dominio

L amministratore di dominio L amministratore di dominio Netbuilder consente ai suoi clienti di gestire autonomamente le caselle del proprio dominio nel rispetto dei vincoli contrattuali. Ciò è reso possibile dall esistenza di un

Dettagli

Introduzione. Installare EMAS Logo Generator

Introduzione. Installare EMAS Logo Generator EMAS Logo Generator Indice Introduzione... 3 Installare EMAS Logo Generator... 3 Disinstallare EMAS Logo Generator... 4 Schermata iniziale... 5 Creare il Logo... 7 Impostazioni... 7 Colore...8 Lingua del

Dettagli

Il calendario di Windows Vista

Il calendario di Windows Vista Il calendario di Windows Vista Una delle novità introdotte in Windows Vista è il Calendario di Windows, un programma utilissimo per la gestione degli appuntamenti, delle ricorrenze e delle attività lavorative

Dettagli

SendMedMalattia v. 1.0. Manuale d uso

SendMedMalattia v. 1.0. Manuale d uso 2 SendMedMalattia v. 1.0 Pagina 1 di 25 I n d i c e 1) Introduzione...3 2) Installazione...4 3) Prima dell avvio di SendMedMalattia...9 4) Primo Avvio: Inserimento dei dati del Medico di famiglia...11

Dettagli

Network Services Location Manager. Guida per amministratori di rete

Network Services Location Manager. Guida per amministratori di rete apple Network Services Location Manager Guida per amministratori di rete Questo documento illustra le caratteristiche di Network Services Location Manager e spiega le configurazioni di rete per sfruttarne

Dettagli

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise Manuale Amministratore Legalmail Enterprise Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise Pagina 2 di 16 Manuale Amministratore Legalmail Enterprise Introduzione a Legalmail Enterprise...3

Dettagli

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Compito fondamentale di un S.O. è infatti la gestione dell

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

Il tuo manuale d'uso. LEXMARK X502N http://it.yourpdfguides.com/dref/1265819

Il tuo manuale d'uso. LEXMARK X502N http://it.yourpdfguides.com/dref/1265819 Può anche leggere le raccomandazioni fatte nel manuale d uso, nel manuale tecnico o nella guida di installazione di LEXMARK X502N. Troverà le risposte a tutte sue domande sul manuale d'uso (informazioni,

Dettagli

Esercitazione n 4. Obiettivi

Esercitazione n 4. Obiettivi Esercitazione n 4 Obiettivi Progettare e implementare per intero un componente software in Java Linguaggio Java: Classi astratte Utilizzo di costruttori e metodi di superclasse Polimorfismo Esempio guida:

Dettagli

per immagini guida avanzata Uso delle tabelle e dei grafici Pivot Geometra Luigi Amato Guida Avanzata per immagini excel 2000 1

per immagini guida avanzata Uso delle tabelle e dei grafici Pivot Geometra Luigi Amato Guida Avanzata per immagini excel 2000 1 Uso delle tabelle e dei grafici Pivot Geometra Luigi Amato Guida Avanzata per immagini excel 2000 1 Una tabella Pivot usa dati a due dimensioni per creare una tabella a tre dimensioni, cioè una tabella

Dettagli

Gestione Risorse Umane Web

Gestione Risorse Umane Web La gestione delle risorse umane Gestione Risorse Umane Web Generazione attestati di partecipazione ai corsi di formazione (Versione V03) Premessa... 2 Configurazione del sistema... 3 Estrattore dati...

Dettagli

Installazione di GFI WebMonitor

Installazione di GFI WebMonitor Installazione di GFI WebMonitor Requisiti di sistema di GFI WebMonitor Server Microsoft Windows 2000 (SP 3) o 2003. Microsoft ISA 2000 Server (non in modalità solo firewall) OPPURE Server Microsoft ISA

Dettagli

Esame di Informatica CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO. Facoltà di Scienze Motorie

Esame di Informatica CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO. Facoltà di Scienze Motorie Facoltà di Scienze Motorie CHE COS È UN FOGLIO ELETTRONICO Una tabella che contiene parole e numeri che possono essere elaborati applicando formule matematiche e funzioni statistiche. Esame di Informatica

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

Tabelle di riferimento Pulsanti Inserire documento Predisposizione doc Approvazione Doc Numerazione Doc Pubblicazione Albo Webservice

Tabelle di riferimento Pulsanti Inserire documento Predisposizione doc Approvazione Doc Numerazione Doc Pubblicazione Albo Webservice - Albo pretorio virtuale e gestione della consultazione documentale - Argomenti Tabelle di riferimento Pulsanti Inserire documento Predisposizione doc Approvazione Doc Numerazione Doc Pubblicazione Albo

Dettagli

Protocolli applicativi: FTP

Protocolli applicativi: FTP Protocolli applicativi: FTP FTP: File Transfer Protocol. Implementa un meccanismo per il trasferimento di file tra due host. Prevede l accesso interattivo al file system remoto; Prevede un autenticazione

Dettagli

EUTELIAF@X GUIDA ALLA CONFIGURAZIONE E ALL UTILIZZO

EUTELIAF@X GUIDA ALLA CONFIGURAZIONE E ALL UTILIZZO pag.1 EUTELIAF@X GUIDA ALLA CONFIGURAZIONE E ALL UTILIZZO pag.2 INDICE SCOPO...3 COME ATTIVARE EUTELIAF@X...3 COME CONFIGURARE EUTELIAF@X...4 COME UTILIZZARE LA RUBRICA EUTELIAF@X...7 COME UTILIZZARE LA

Dettagli

Gestione dell account AdWords di Google Guida pratica

Gestione dell account AdWords di Google Guida pratica Gestione dell account AdWords di Google Guida pratica Benvenuti in AdWords di Google Questa guida fornisce una panoramica del Centro di controllo gestionale AdWords, l interfaccia per la gestione e il

Dettagli

GUIDA ALL UTILIZZO DEL PORTALE DELLA RETE DEI COMUNI OGLIO PO

GUIDA ALL UTILIZZO DEL PORTALE DELLA RETE DEI COMUNI OGLIO PO GUIDA ALL UTILIZZO DEL PORTALE DELLA RETE DEI COMUNI OGLIO PO Il portale della Rete dei Comuni Oglio Po risponde all url: http://www.comuniogliopo.it Il portale è un contenitore per i siti comunali degli

Dettagli

5.3 TABELLE 5.3.1 RECORD 5.3.1.1 Inserire, eliminare record in una tabella Aggiungere record Eliminare record

5.3 TABELLE 5.3.1 RECORD 5.3.1.1 Inserire, eliminare record in una tabella Aggiungere record Eliminare record 5.3 TABELLE In un sistema di database relazionali le tabelle rappresentano la struttura di partenza, che resta poi fondamentale per tutte le fasi del lavoro di creazione e di gestione del database. 5.3.1

Dettagli

GUIDA UTENTE WEB PROFILES

GUIDA UTENTE WEB PROFILES GUIDA UTENTE WEB PROFILES GUIDA UTENTE WEB PROFILES... 1 Installazione... 2 Primo avvio e registrazione... 5 Utilizzo di web profiles... 6 Gestione dei profili... 8 Fasce orarie... 13 Log siti... 14 Pag.

Dettagli

Guida Software GestioneSpiaggia.it

Guida Software GestioneSpiaggia.it Caratteristiche Guida Software GestioneSpiaggia.it 1. Gestione prenotazioni articoli (ombrellone, cabina, ecc ) ed attrezzature (sdraio, lettino ecc ) 2. Visualizzazione grafica degli affitti sia giornaliera

Dettagli