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();

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

R.Focardi Laboratorio di Ingegneria del Software 6. 1

R.Focardi Laboratorio di Ingegneria del Software 6. 1 Networking Java permette comunicazioni in rete basate sul concetto di socket, che permette di vedere la comunicazione in termini di flusso (stream), in modo analogo all input-output di file, usando Stream

Dettagli

Programmazione di rete in Java

Programmazione di rete in Java Programmazione di rete in Java Reti di calcolatori Una rete di calcolatori è un sistema che permette la condivisione di dati informativi e risorse (sia hardware sia software) tra diversi calcolatori. Lo

Dettagli

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); }

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); } import java.util.*; class coda * Questa classe contiene tutti i metodi per la gestione della coda * @author D'Ambrosio Giovanni Classe 4D I.T.I.S. Grottaminarda * @version 26/02/2010 * VETTORE DINAMICO

Dettagli

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

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client Versione 25.4.05 Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture client/server: applicazioni client 1 Architetture client/server: un esempio World wide web è un

Dettagli

! Programmazione strutturata ! TDA. ! Classi, incapsulamento, ! OO. ! Scambio messaggi, eredità, polimorfismo. ! OO in Java

! Programmazione strutturata ! TDA. ! Classi, incapsulamento, ! OO. ! Scambio messaggi, eredità, polimorfismo. ! OO in Java Riassunto Rassegna API - 1 Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@uniud.it Programmazione, lezione 17 3 maggio 2015! Programmazione

Dettagli

Le variabili. Olga Scotti

Le variabili. Olga Scotti Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.

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

INFORMATIVA FINANZIARIA

INFORMATIVA FINANZIARIA Capitolo 10 INFORMATIVA FINANZIARIA In questa sezione sono riportate le quotazioni e le informazioni relative ai titoli inseriti nella SELEZIONE PERSONALE attiva.tramite la funzione RICERCA TITOLI è possibile

Dettagli

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni Funzioni Le funzioni Con il termine funzione si intende, in generale, un operatore che, applicato a un insieme di operandi, consente di calcolare un risultato, come avviene anche per una funzione matematica

Dettagli

Talento LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) L'UTILIZZO DI ALTRI SERVIZI INTERNET. In questa lezione imparerete a:

Talento LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) L'UTILIZZO DI ALTRI SERVIZI INTERNET. In questa lezione imparerete a: Lab 4.1 Utilizzare FTP (File Tranfer Protocol) LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) In questa lezione imparerete a: Utilizzare altri servizi Internet, Collegarsi al servizio Telnet, Accedere

Dettagli

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

Lezione n 1! Introduzione"

Lezione n 1! Introduzione Lezione n 1! Introduzione" Corso sui linguaggi del web" Fondamentali del web" Fondamentali di una gestione FTP" Nomenclatura di base del linguaggio del web" Come funziona la rete internet?" Connessione"

Dettagli

Fondamenti di Informatica. Dichiarazione, creazione e gestione di array in Java

Fondamenti di Informatica. Dichiarazione, creazione e gestione di array in Java Fondamenti di Informatica Dichiarazione, creazione e gestione di array in Java Array in Java - creazione La creazione fa una inizializzazione implicita: num = new int[10]; con valore 0 per int e double,

Dettagli

FileMaker Server 12. Guida introduttiva

FileMaker Server 12. Guida introduttiva FileMaker Server 12 Guida introduttiva 2007 2012 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker e Bento sono marchi di FileMaker,

Dettagli

FIRESHOP.NET. Gestione Utility & Configurazioni. Rev. 2014.3.1 www.firesoft.it

FIRESHOP.NET. Gestione Utility & Configurazioni. Rev. 2014.3.1 www.firesoft.it FIRESHOP.NET Gestione Utility & Configurazioni Rev. 2014.3.1 www.firesoft.it Sommario SOMMARIO Introduzione... 4 Impostare i dati della propria azienda... 5 Aggiornare il programma... 6 Controllare l integrità

Dettagli

La fase di realizzazione. La fase di realizzazione (cont.) Traduzione in Java del diagramma degli use case

La fase di realizzazione. La fase di realizzazione (cont.) Traduzione in Java del diagramma degli use case Università degli Studi di Roma La Sapienza Corso di Laurea in Ingegneria dell Informazione Sede di Latina Corso di Laurea in Ingegneria dell Informazione Consorzio Nettuno La fase di realizzazione si occupa

Dettagli

MIB PER IL CONTROLLO DELLO STATO DI UN SERVER FTP

MIB PER IL CONTROLLO DELLO STATO DI UN SERVER FTP Università degli Studi di Pisa Facoltà di Scienze Matematiche,Fisiche e Naturali Corso di Laurea in Informatica Michela Chiucini MIB PER IL CONTROLLO DELLO STATO DI UN SERVER

Dettagli

Inizializzazione degli Host. BOOTP e DHCP

Inizializzazione degli Host. BOOTP e DHCP BOOTP e DHCP a.a. 2002/03 Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/~auletta/ Università degli studi di Salerno Laurea e Diploma in Informatica 1 Inizializzazione degli Host Un

Dettagli

Il modello client/server consente a due processi di condividere risorse e di cooperare per il raggiungimento di un obiettivo.

Il modello client/server consente a due processi di condividere risorse e di cooperare per il raggiungimento di un obiettivo. In una rete di ampie dimensioni, ciascuna sottorete (es. LAN, WAN) è connessa ad altre sottoreti tramite router. Internet è un insieme di reti connesse tra loro. Essenzialmente, in una rete alcune macchine

Dettagli

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof. Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record

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

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. - lezione 14 - Thread in Java

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. - lezione 14 - Thread in Java Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it - lezione 14 - Thread in Java 1 Cos è un

Dettagli

Guida. Vista Live. Controllo. Riproduzione su 24 ore. Ricerca avanz. Le icone includono: Mod. uscita. Icona. Un sensore di allarme.

Guida. Vista Live. Controllo. Riproduzione su 24 ore. Ricerca avanz. Le icone includono: Mod. uscita. Icona. Un sensore di allarme. Guida operatore del registratore TruVision Vista Live Sull immagine live dello schermo vengono visualizzati laa data e l ora corrente, il nome della telecamera e viene indicato se è in corso la registrazione.

Dettagli

Le formule possono essere scritte utilizzando un insieme di funzioni predefinite che Excel mette a disposizione, raggruppate per argomento.

Le formule possono essere scritte utilizzando un insieme di funzioni predefinite che Excel mette a disposizione, raggruppate per argomento. Excel: le funzioni Le formule possono essere scritte utilizzando un insieme di funzioni predefinite che Excel mette a disposizione, raggruppate per argomento. DEFINIZIONE: Le funzioni sono dei procedimenti

Dettagli

Abstract Data Type (ADT)

Abstract Data Type (ADT) Abstract Data Type Pag. 1/10 Abstract Data Type (ADT) Iniziamo la nostra trattazione presentando una nozione che ci accompagnerà lungo l intero corso di Laboratorio Algoritmi e Strutture Dati: il Tipo

Dettagli

Oggetti Lezione 3. aspetti generali e definizione di classi I

Oggetti Lezione 3. aspetti generali e definizione di classi I Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione

Dettagli

I.Stat Guida utente Versione 1.7 Dicembre 2010

I.Stat Guida utente Versione 1.7 Dicembre 2010 I.Stat Guida utente Versione 1.7 Dicembre 2010 1 Sommario INTRODUZIONE 3 I concetti principali di I.Stat 4 Organizzazione dei dati 4 Ricerca 5 GUIDA UTENTE 6 Per iniziare 6 Selezione della lingua 7 Individuazione

Dettagli

Laboratorio di Sistemi Fattoriale di un numero Jsp [Java]

Laboratorio di Sistemi Fattoriale di un numero Jsp [Java] Desideriamo realizzare una applicazione web che ci consenta di calcolare il fattoriale di un numero. L'esercizio in sé non particolarmente difficile, tuttavia esso ci consentirà di affrontare il problema

Dettagli

Istruzioni per l uso Guida software

Istruzioni per l uso Guida software Istruzioni per l uso Guida software Leggere subito Manuali per questa stampante...8 Preparazione per la stampa Installazione rapida...9 Conferma del metodo di connessione...11 Connessione di rete...11

Dettagli

Test di comunicazione tra due LOGO! 0BA7: Master - Master

Test di comunicazione tra due LOGO! 0BA7: Master - Master Industry Test di comunicazione tra due LOGO! 0BA7: Master - Master Dispositivi utilizzati: - 2 LOGO! 0BA7 (6ED1 052-1MD00-0AB7) - Scalance X-208 LOGO! 0BA7 Client IP: 192.168.0.1 LOGO! 0BA7 Server IP:

Dettagli

Introduzione alle applicazioni di rete

Introduzione alle applicazioni di rete Introduzione alle applicazioni di rete Definizioni base Modelli client-server e peer-to-peer Socket API Scelta del tipo di servizio Indirizzamento dei processi Identificazione di un servizio Concorrenza

Dettagli

MANUALE GESTIONE DELLE UTENZE - PORTALE ARGO (VERS. 2.1.0)

MANUALE GESTIONE DELLE UTENZE - PORTALE ARGO (VERS. 2.1.0) Indice generale PREMESSA... 2 ACCESSO... 2 GESTIONE DELLE UTENZE... 3 DATI DELLA SCUOLA... 6 UTENTI...7 LISTA UTENTI... 8 CREA NUOVO UTENTE...8 ABILITAZIONI UTENTE...9 ORARI D'ACCESSO... 11 DETTAGLIO UTENTE...

Dettagli

Internet Internet è universalmente nota come la Rete delle reti: un insieme smisurato di computer collegati tra loro per scambiarsi dati e servizi.

Internet Internet è universalmente nota come la Rete delle reti: un insieme smisurato di computer collegati tra loro per scambiarsi dati e servizi. Internet Internet è universalmente nota come la Rete delle reti: un insieme smisurato di computer collegati tra loro per scambiarsi dati e servizi. Internet: la rete delle reti Alberto Ferrari Connessioni

Dettagli

SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO

SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO CLSMS SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO Sommario e introduzione CLSMS SOMMARIO INSTALLAZIONE E CONFIGURAZIONE... 3 Parametri di configurazione... 4 Attivazione Software...

Dettagli

Concetto di Funzione e Procedura METODI in Java

Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile

Dettagli

esercizi Esercizi / problemi

esercizi Esercizi / problemi Sistemi informativi applicati (reti di calcolatori): esercizi 1 Esercizi / problemi 1. Creare un applicazione che calcoli la media aritmetica dei seguenti valori interi: 35, 117, 23 e ne visualizzi il

Dettagli

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

Dettagli

Le Reti Informatiche

Le Reti Informatiche Le Reti Informatiche modulo 10 Prof. Salvatore Rosta www.byteman.it s.rosta@byteman.it 1 Nomenclatura: 1 La rappresentazione di uno schema richiede una serie di abbreviazioni per i vari componenti. Seguiremo

Dettagli

SMS API. Documentazione Tecnica YouSMS SOAP API. YouSMS Evet Limited 2015 http://www.yousms.it

SMS API. Documentazione Tecnica YouSMS SOAP API. YouSMS Evet Limited 2015 http://www.yousms.it SMS API Documentazione Tecnica YouSMS SOAP API YouSMS Evet Limited 2015 http://www.yousms.it INDICE DEI CONTENUTI Introduzione... 2 Autenticazione & Sicurezza... 2 Username e Password... 2 Connessione

Dettagli

WINDOWS - Comandi rapidi da tastiera più utilizzati.

WINDOWS - Comandi rapidi da tastiera più utilizzati. WINDOWS - Comandi rapidi da tastiera più utilizzati. La prima colonna indica il tasto da premere singolarmente e poi rilasciare. La seconda e terza colonna rappresenta la combinazione dei i tasti da premere

Dettagli

Strumenti 3D per SMART Notebook 11.1. Manuale dell'utente

Strumenti 3D per SMART Notebook 11.1. Manuale dell'utente Strumenti 3D per SMART Notebook 11.1 Manuale dell'utente Registrazione del prodotto Se si registra il prodotto SMART, si verrà informati delle nuove funzionalità e aggiornamenti software disponibili. Registrazione

Dettagli

Classi ed Oggetti in JAVA

Classi ed Oggetti in JAVA Classi ed Oggetti in JAVA Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA Uff. 0577233606 rigutini@dii.unisi.it www.dii.unisi.it/~rigutini/

Dettagli

UML: Class Diagram. Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it

UML: Class Diagram. Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it UML: Class Diagram Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Università di Catania Class Diagram Forniscono una vista strutturale

Dettagli

Analisi dei requisiti e casi d uso

Analisi dei requisiti e casi d uso Analisi dei requisiti e casi d uso Indice 1 Introduzione 2 1.1 Terminologia........................... 2 2 Modello della Web Application 5 3 Struttura della web Application 6 4 Casi di utilizzo della Web

Dettagli

Informatica per la comunicazione" - lezione 9 -

Informatica per la comunicazione - lezione 9 - Informatica per la comunicazione" - lezione 9 - Protocolli di livello intermedio:" TCP/IP" IP: Internet Protocol" E il protocollo che viene seguito per trasmettere un pacchetto da un host a un altro, in

Dettagli

Programmazione Java: Variabili membro, Metodi La parola chiave final

Programmazione Java: Variabili membro, Metodi La parola chiave final Programmazione Java: Variabili membro, Metodi La parola chiave final romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap Definire una classe» Variabili membro» Metodi La parola chiave

Dettagli

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad

Dettagli

Porta di Accesso versione 5.0.12

Porta di Accesso versione 5.0.12 Pag. 1 di 22 Controlli da effettuare in seguito al verificarsi di ERRORE 10 nell utilizzo di XML SAIA Porta di Accesso versione 5.0.12 Pag. 2 di 22 INDICE 1. INTRODUZIONE... 3 2. VERIFICHE DA ESEGUIRE...3

Dettagli

CATTURARE LO SCHERMO INTERO O LA FINESTRA ATTIVA

CATTURARE LO SCHERMO INTERO O LA FINESTRA ATTIVA CATTURARE LO SCHERMO INTERO O LA FINESTRA ATTIVA Supponiamo di voler eseguire una istantanea del nostro desktop, quella che in gergo si chiama Screenshot (da screen, schermo, e shot, scatto fotografico).

Dettagli

Arduino: Programmazione

Arduino: Programmazione Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite

Dettagli

NetMonitor. Micro guida all uso per la versione 1.2.0 di NetMonitor

NetMonitor. Micro guida all uso per la versione 1.2.0 di NetMonitor NetMonitor Micro guida all uso per la versione 1.2.0 di NetMonitor Cos è NetMonitor? NetMonitor è un piccolo software per il monitoraggio dei dispositivi in rete. Permette di avere una panoramica sui dispositivi

Dettagli

Gestione posta elettronica (versione 1.1)

Gestione posta elettronica (versione 1.1) Gestione posta elettronica (versione 1.1) Premessa La presente guida illustra le fasi da seguire per una corretta gestione della posta elettronica ai fini della protocollazione in entrata delle mail (o

Dettagli

Guida alla scansione su FTP

Guida alla scansione su FTP Guida alla scansione su FTP Per ottenere informazioni di base sulla rete e sulle funzionalità di rete avanzate della macchina Brother, consultare la uu Guida dell'utente in rete. Per ottenere informazioni

Dettagli

2. GESTIONE DOCUMENTI NON SBN

2. GESTIONE DOCUMENTI NON SBN Istituto centrale per il catalogo unico delle biblioteche italiane e per le informazioni bibliografiche APPLICATIVO SBN-UNIX IN ARCHITETTURA CLIENT/SERVER 2. GESTIONE DOCUMENTI NON SBN Manuale d uso (Versione

Dettagli

GUIDA RAPIDA emagister-agora Edizione BASIC

GUIDA RAPIDA emagister-agora Edizione BASIC GUIDA RAPIDA emagister-agora Edizione BASIC Introduzione a emagister-agora Interfaccia di emagister-agora Configurazione dell offerta didattica Richieste d informazioni Gestione delle richieste d informazioni

Dettagli

Introduzione ad Access

Introduzione ad Access Introduzione ad Access Luca Bortolussi Dipartimento di Matematica e Informatica Università degli studi di Trieste Access E un programma di gestione di database (DBMS) Access offre: un supporto transazionale

Dettagli

Invio di SMS con FOCUS 10

Invio di SMS con FOCUS 10 Sommario I Sommario 1 1 2 Attivazione del servizio 1 3 Server e-service 3 4 Scheda anagrafica 4 4.1 Occhiale... pronto 7 4.2 Fornitura... LAC pronta 9 4.3 Invio SMS... da Carico diretto 10 5 Videoscrittura

Dettagli

GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno

GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno La Vista CAS L ambiente di lavoro Le celle Assegnazione di una variabile o di una funzione / visualizzazione

Dettagli

Sottoprogrammi: astrazione procedurale

Sottoprogrammi: astrazione procedurale Sottoprogrammi: astrazione procedurale Incapsulamento di un segmento di programma presente = false; j = 0; while ( (j

Dettagli

Gestione dei File in C

Gestione dei File in C Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte

Dettagli

Appunti sugli Elaboratori di Testo. Introduzione. D. Gubiani. 19 Luglio 2005

Appunti sugli Elaboratori di Testo. Introduzione. D. Gubiani. 19 Luglio 2005 Appunti sugli Elaboratori di Testo D. Gubiani Università degli Studi G.D Annunzio di Chieti-Pescara 19 Luglio 2005 1 Cos è un elaboratore di testo? 2 3 Cos è un elaboratore di testo? Cos è un elaboratore

Dettagli

Ambienti supportati. Configurazione della stampante di rete. Stampa. Gestione della carta. Manutenzione. Risoluzione dei problemi.

Ambienti supportati. Configurazione della stampante di rete. Stampa. Gestione della carta. Manutenzione. Risoluzione dei problemi. I server di stampa vengono utilizzati per collegare le stampanti alle reti. In tal modo, più utenti possono accedere alle stampanti dalle proprie workstation, condividendo sofisticate e costose risorse.

Dettagli

J+... J+3 J+2 J+1 K+1 K+2 K+3 K+...

J+... J+3 J+2 J+1 K+1 K+2 K+3 K+... Setup delle ConnessioniTCP Una connessione TCP viene instaurata con le seguenti fasi, che formano il Three-Way Handshake (perchè formato da almeno 3 pacchetti trasmessi): 1) il server si predispone ad

Dettagli

Se il corso non si avvia

Se il corso non si avvia Se il corso non si avvia Ci sono quattro possibili motivi per cui questo corso potrebbe non avviarsi correttamente. 1. I popup Il corso parte all'interno di una finestra di popup attivata da questa finestra

Dettagli

Linguaggio C++ Uso ambiente Dev C++ con creazione di progetto con scelta Basic --> Empty Project

Linguaggio C++ Uso ambiente Dev C++ con creazione di progetto con scelta Basic --> Empty Project Linguaggio C++ Uso ambiente Dev C++ con creazione di progetto con scelta Basic --> Empty Project NB: E necessario: adoperare la sintassi più evoluta per le direttive di precompilazione 1, usando come contenitore

Dettagli

Controllare un nastro trasportatore fischertechnik con Arduino

Controllare un nastro trasportatore fischertechnik con Arduino TITOLO ESPERIENZA: Controllare un nastro trasportatore fischertechnik con Arduino PRODOTTI UTILIZZATI: OBIETTIVO: AUTORE: RINGRAZIAMENTI: Interfacciare e controllare un modello di nastro trasportatore

Dettagli

Posta Elettronica Certificata

Posta Elettronica Certificata Posta Elettronica Certificata Manuale di utilizzo del servizio Webmail di Telecom Italia Trust Technologies Documento ad uso pubblico Pag. 1 di 33 Indice degli argomenti 1 INTRODUZIONE... 3 1.1 Obiettivi...

Dettagli

Le Stringhe. Un introduzione operativa. Luigi Palopoli

Le Stringhe. Un introduzione operativa. Luigi Palopoli Le Stringhe p.1/19 Le Stringhe Un introduzione operativa Luigi Palopoli ReTiS Lab - Scuola Superiore S. Anna Viale Rinaldo Piaggio 34 Pontedera - Pisa Tel. 050-883444 Email: palopoli@sssup.it URL: http://feanor.sssup.it/

Dettagli

12.5 UDP (User Datagram Protocol)

12.5 UDP (User Datagram Protocol) CAPITOLO 12. SUITE DI PROTOCOLLI TCP/IP 88 12.5 UDP (User Datagram Protocol) L UDP (User Datagram Protocol) é uno dei due protocolli del livello di trasporto. Come l IP, é un protocollo inaffidabile, che

Dettagli

Documentazione Servizio SMS WEB. Versione 1.0

Documentazione Servizio SMS WEB. Versione 1.0 Documentazione Servizio SMS WEB Versione 1.0 1 Contenuti 1 INTRODUZIONE...5 1.1 MULTILANGUAGE...5 2 MESSAGGI...7 2.1 MESSAGGI...7 2.1.1 INVIO SINGOLO SMS...7 2.1.2 INVIO MULTIPLO SMS...9 2.1.3 INVIO MMS

Dettagli

Energy Studio Manager Manuale Utente USO DEL SOFTWARE

Energy Studio Manager Manuale Utente USO DEL SOFTWARE Energy Studio Manager Manuale Utente USO DEL SOFTWARE 1 ANALYSIS.EXE IL PROGRAMMA: Una volta aperto il programma e visualizzato uno strumento il programma apparirà come nell esempio seguente: Il programma

Dettagli

Data warehouse.stat Guida utente

Data warehouse.stat Guida utente Data warehouse.stat Guida utente Versione 3.0 Giugno 2013 1 Sommario INTRODUZIONE 3 I concetti principali 4 Organizzazione dei dati 4 Ricerca 5 Il browser 5 GUIDA UTENTE 6 Per iniziare 6 Selezione della

Dettagli

Altre opzioni Optralmage

Altre opzioni Optralmage di Personalizzazione delle impostazioni............ 2 Impostazione manuale delle informazioni sul fax......... 5 Creazione di destinazioni fax permanenti................ 7 Modifica delle impostazioni di

Dettagli

Rapida Introduzione all uso del Matlab Ottobre 2002

Rapida Introduzione all uso del Matlab Ottobre 2002 Rapida Introduzione all uso del Matlab Ottobre 2002 Tutti i tipi di dato utilizzati dal Matlab sono in forma di array. I vettori sono array monodimensionali, e così possono essere viste le serie temporali,

Dettagli

How to Develop Accessible Linux Applications

How to Develop Accessible Linux Applications How to Develop Accessible Linux Applications Sharon Snider Copyright 2002 IBM Corporation v1.1, 2002-05-03 Diario delle Revisioni Revisione v1.1 2002-05-03 Revisionato da: sds Convertito in DocBook XML

Dettagli

FileMaker Server 13. Guida di FileMaker Server

FileMaker Server 13. Guida di FileMaker Server FileMaker Server 13 Guida di FileMaker Server 2010-2013 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 Stati Uniti FileMaker e Bento sono

Dettagli

Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione Elementi di Informatica e Programmazione Le Reti di Calcolatori (parte 2) Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Docente: Daniela

Dettagli

Client di Posta Elettronica PECMailer

Client di Posta Elettronica PECMailer Client di Posta Elettronica PECMailer PECMailer è un semplice ma completo client di posta elettronica, ovvero un programma che consente di gestire la composizione, la trasmissione, la ricezione e l'organizzazione

Dettagli

1. FileZilla: installazione

1. FileZilla: installazione 1. FileZilla: installazione Dopo aver scaricato e salvato (sezione Download >Software Open Source > Internet/Reti > FileZilla_3.0.4.1_win32- setup.exe) l installer del nostro client FTP sul proprio computer

Dettagli

Guida rapida all uso di ECM Titanium

Guida rapida all uso di ECM Titanium Guida rapida all uso di ECM Titanium Introduzione Questa guida contiene una spiegazione semplificata del funzionamento del software per Chiputilizzare al meglio il Tuning ECM Titanium ed include tutte

Dettagli

Manuale Software. www.smsend.it

Manuale Software. www.smsend.it Manuale Software www.smsend.it 1 INTRODUZIONE 3 Multilanguage 4 PANNELLO DI CONTROLLO 5 Start page 6 Profilo 7 Ordini 8 Acquista Ricarica 9 Coupon AdWords 10 Pec e Domini 11 MESSAGGI 12 Invio singolo sms

Dettagli

explorer 2 Manuale dell Installatore e Technical Reference Ver. 2.2.6 del 14 Dicembre 2012

explorer 2 Manuale dell Installatore e Technical Reference Ver. 2.2.6 del 14 Dicembre 2012 explorer 2 Manuale dell Installatore e Technical Reference Ver. 2.2.6 del 14 Dicembre 2012 1 Indice 1. Descrizione del sistema e Requisiti hardware e software per l installazione... 4 1.1 Descrizione del

Dettagli

Procedura per il ripristino dei certificati del dispositivo USB

Procedura per il ripristino dei certificati del dispositivo USB Procedura per il ripristino dei certificati del dispositivo USB 30/04/2013 Sommario - Limitazioni di responsabilità e uso del manuale... 3 1 Glossario... 3 2 Presentazione... 4 3 Quando procedere al ripristino

Dettagli

CREAZIONE E INVIO OFFERTA DI APPALTO DA FORNITORE

CREAZIONE E INVIO OFFERTA DI APPALTO DA FORNITORE CREAZIONE E INVIO OFFERTA DI APPALTO DA FORNITORE 1 SOMMARIO 1 OBIETTIVI DEL DOCUMENTO...3 2 OFFERTA DEL FORNITORE...4 2.1 LOG ON...4 2.2 PAGINA INIZIALE...4 2.3 CREAZIONE OFFERTA...6 2.4 ACCESSO AL DOCUMENTALE...8

Dettagli

Boot Camp Guida all installazione e alla configurazione

Boot Camp Guida all installazione e alla configurazione Boot Camp Guida all installazione e alla configurazione Indice 4 Introduzione 5 Cosa ti occorre 6 Panoramica dell installazione 6 Passo 1: verifica la presenza di aggiornamenti. 6 Passo 2: apri Assistente

Dettagli

MODBUS-RTU per. Specifiche protocollo di comunicazione MODBUS-RTU per controllo in rete dispositivi serie. Expert NANO 2ZN

MODBUS-RTU per. Specifiche protocollo di comunicazione MODBUS-RTU per controllo in rete dispositivi serie. Expert NANO 2ZN per Expert NANO 2ZN Specifiche protocollo di comunicazione MODBUS-RTU per controllo in rete dispositivi serie Expert NANO 2ZN Nome documento: MODBUS-RTU_NANO_2ZN_01-12_ITA Software installato: NANO_2ZN.hex

Dettagli

Dati importati/esportati

Dati importati/esportati Dati importati/esportati Dati importati Al workspace MATLAB script Dati esportati file 1 File di testo (.txt) Spreadsheet Database Altro Elaborazione dati Grafici File di testo Relazioni Codice Database

Dettagli

Pila.h versione 6. class Pila { private: int marker; int * contenuto; public:

Pila.h versione 6. class Pila { private: int marker; int * contenuto; public: 1 Pila.h versione 6 struct Pila { private: int size; int defaultgrowthsize; int marker; int * contenuto; void cresci(int increment); public: Pila(int initialsize) ; Pila(); ~Pila() ; void copy(pila * to)

Dettagli

Alb@conference GO e Web Tools

Alb@conference GO e Web Tools Alb@conference GO e Web Tools Crea riunioni virtuali sempre più efficaci Strumenti Web di Alb@conference GO Guida Utente Avanzata Alb@conference GO Per partecipare ad un audioconferenza online con Alb@conference

Dettagli

CHE COS È DOCFLY FATTURAZIONE PA... 3 1.1 IL GESTIONALE WEB... 3 1.2 ACCESSO ALL INTERFACCIA WEB... 4 1.3 FUNZIONALITÀ DELL INTERFACCIA WEB...

CHE COS È DOCFLY FATTURAZIONE PA... 3 1.1 IL GESTIONALE WEB... 3 1.2 ACCESSO ALL INTERFACCIA WEB... 4 1.3 FUNZIONALITÀ DELL INTERFACCIA WEB... 1. CHE COS È DOCFLY FATTURAZIONE PA... 3 1.1 IL GESTIONALE WEB... 3 1.2 ACCESSO ALL INTERFACCIA WEB... 4 1.3 FUNZIONALITÀ DELL INTERFACCIA WEB... 5 1.3.1 CREAZIONE GUIDATA DELLA FATTURA IN FORMATO XML

Dettagli

Creare e ripristinare immagine di sistema con Windows 8

Creare e ripristinare immagine di sistema con Windows 8 Creare e ripristinare immagine di con Windows 8 La versione Pro di Windows 8 offre un interessante strumento per il backup del computer: la possibilità di creare un immagine completa del, ovvero la copia

Dettagli

Serduino - SERRA CON ARDUINO

Serduino - SERRA CON ARDUINO Serduino - SERRA CON ARDUINO 1 Componenti Facchini Riccardo (responsabile parte hardware) Guglielmetti Andrea (responsabile parte software) Laurenti Lorenzo (progettazione hardware) Rigolli Andrea (reparto

Dettagli

TeamViewer 8 Manuale Meeting

TeamViewer 8 Manuale Meeting TeamViewer 8 Manuale Meeting Rev 8.0-12/2012 TeamViewer GmbH Kuhnbergstraße 16 D-73037 Göppingen www.teamviewer.com Indice 1 Informazioni su TeamViewer... 5 1.1 Informazioni sul software... 5 1.2 Informazioni

Dettagli

SOGEAS - Manuale operatore

SOGEAS - Manuale operatore SOGEAS - Manuale operatore Accesso La home page del programma si trova all indirizzo: http://www.sogeas.net Per accedere, l operatore dovrà cliccare sulla voce Accedi in alto a destra ed apparirà la seguente

Dettagli

Creare una applicazione Winsock di base

Creare una applicazione Winsock di base Creare una applicazione Winsock di base Usiamo le API Winsock incluse in Creare un progetto per una Socket Windows (in Dev C++) Selezionare la file New Projects Selezionare Empty Project Salvare

Dettagli

I name server DNS. DNS: Domain Name System. Esempio di DNS. DNS: Root name server. DNS: queries ripetute

I name server DNS. DNS: Domain Name System. Esempio di DNS. DNS: Root name server. DNS: queries ripetute DNS: Domain Name System I name DNS Persone: identificatori: CF, nome, Numero di Passaporto Host e router Internet: Indirizzo IP ( bit) - usato per instradare i pacchetti nome, per es., massimotto.diiie.unisa.it

Dettagli

Il World Wide Web: nozioni introduttive

Il World Wide Web: nozioni introduttive Il World Wide Web: nozioni introduttive Dott. Nicole NOVIELLI novielli@di.uniba.it http://www.di.uniba.it/intint/people/nicole.html Cos è Internet! Acronimo di "interconnected networks" ("reti interconnesse")!

Dettagli