Java ed RMI

maggio 8, 2007

Questa non è una piccola guida, piuttosto è un consiglio.

Se dovete sviluppare un’applicazione Java con la tecnologia RMI ed utilizzate Eclipse, allora vi consiglio di scaricare l’RMI Plug-in.
Si tratta di un plug-in utilissimo che vi permette di far partire semplicemente l’RMIRegistry e vi evita le inevitabili grane con le security.policy.

Non mi dilungo oltre, il sito fornisce ottime dimostrazioni sull’utilizzo, demo e tutorials.

[La Vida Es Un Carnaval]

Digg! | | | del.icio.us | ste-site – visit my website

Annunci

Un pensiero e una piccola guida – gestire i campi blob in MySQL con CS

aprile 12, 2007

In questi giorni sto lavorando parecchio sul versante tesi. In realtà combino poco dal punto di vista pratico ma sto sperimentando molto (tra poco racconterò qualcosa) e mi sto informando parecchio. In particolare sto cercando di immaginare un mondo taggato fisicamente con gli RFID tag. Una sorta di web2.1, il web2.0 fisico (se ne parla un po’ in questo periodo, c’è anche un video in giro in questi giorni, se lo trovo lo posto) in cui non si condividono notizie, commenti, post…presenti sul web ma si condividono commenti, giudizi, pensieri…sul mondo fisico, su oggetti fisici. Per ora è un pensiero un po’ nebuloso, se avrò tempo di metterlo su carta sul blog ve ne parlerò.

blobIntanto vi racconto un po’ dei campi BLOB (non il fluido mortale) in un database MySQL.
Per prima cosa, cosa sono i cambi BLOB.

(da Wikipedia)
A binary large object, also known as a blob, is a collection of binary data stored as a single entity in a database management system. Blobs are typically images, audio or other multimedia objects, though sometimes binary executable code is stored as a blob.

In sostanza all’interno di un campo di tipo blob di un database sarà possibile memorizzare un intero file in formato binario. In questo modo si hanno notevoli vantaggi. Il più importante tra tutti è legato alla necessità di spostare i dati memorizzati. Con questo tipo di campi sarà sufficiente effettuare il dump del DB per spostare tutti i file.

Veniamo ora ad un esempio di utilizzo combinato MySQL – C#.
Per prima cosa sarà necessario creare il database, per il nostro esempio sarà sufficiente una singola tabella blob con un campo file di tipo LONGBLOB in cui si memorizzerà il file in formato binario, un campo extension di tipo TEXT in cui verrà memorizzata l’estensione del file e infine un campo file_size per memorizzare la dimensione del file.

Per dialogare con il DB sarà invece necessario scaricare il Connector/NET, scompattarlo ed importarlo nel proprio progetto con la chiamata:

using MySql.Data;

dopo aver aggiunto la libreria tra le reference.

Vediamo ora come inserire e come andare a leggere in/da un campo blob.

Inserimento:
Dopo aver aperto la connessione col DB ecco il codice necessario per inserire un nuovo file:

//prendo il file e creo un array di byte
fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
FileSize = (UInt32)fs.Length;

rawData = new byte[FileSize];
fs.Read(rawData, 0, (int)FileSize);
fs.Close();

//apro la connessione
conn.Open();

//preparo la query e la eseguo
SQL = “INSERT INTO `file`(file,extension,file_size) VALUES (?file,?extension,?file_size)”;

cmd.Connection = conn;
cmd.CommandText = SQL;
cmd.Parameters.Add(“?file”, rawData);
cmd.Parameters.Add(“?extension”, ext);
cmd.Parameters.Add(“?fileSize”, FileSize);

cmd.ExecuteNonQuery();

conn.Close();

Dove il file e l’estensione sono passati dall’esterno. Ad esempio da un componente OpenFileDialog.
Il passaggio un po’ più delicato è indubbiamente rappresentato dalla creazione di uno stream partendo dal file. Questo flusso di dati viene poi letto e memorizzato all’interno di un array di byte.

Lettura:
Passiamo ora alla lettura di un file.

//faccio la select
SQL = “SELECT file,extension,file_size FROM file WHERE ID=’5′”;
//connessione
conn.Open();
cmd.Connection = conn;
cmd.CommandText = SQL;

//preparo ed eseguo la query
myData = cmd.ExecuteReader();

myData.Read();

Extension = myData.GetString(“extension”);
FileSize = myData.GetUInt32(myData.GetOrdinal(“file_size”));
rawData = new byte[FileSize];

myData.GetBytes(myData.GetOrdinal(“file”), 0, rawData, 0, (int)FileSize);

//creo lo stream ed il file
fs = new FileStream(@”C:\newfile.”+extension, FileMode.OpenOrCreate, FileAccess.Write);
fs.Write(rawData, 0, (int)FileSize);
fs.Close();

myData.Close();
conn.Close();

In questo modo, dopo aver acquisito i byte, l’estensione e la dimensione del file sarà possibile salvarlo in un nuovo file in locale per, successivamente accedere al file stesso.

Prima di terminare vi segnalo un sito in cui potrete trovare le stringhe di connessione ai principali database.

[La Vida Es Un Carnaval]

Digg! | | | del.icio.us | ste-site – visit my website


Vi sono mancato?

marzo 27, 2007

Anche se rispondete di no, non mi offendo…

Due giorni senza post, era tanto che non accadeva. La verità è che sono impegnatissimo. Sabato progetto universitario, domenica a studiare (e stavo pure poco bene), lunedì tesi, oggi al Poli per progettare ancora e per cercare un professore (che non abbiamo trovato 😦 ) ed ora un po’ di pausa per rilassarmi, ma solo il tempo di scrivere questo post e girare un po’ su internet!

Questa mia assenza però è stata produttiva. Viste le difficoltà riscontrate in questi giorni in ambito programmativo, ho deciso che ogni tanto, quando riuscirò a trovare una soluzione a qualcosa che è poco documentato su internet, proporrò la mia soluzione che renderò disponibile per due motivi. Primo per aiutare chi si troverà nelle stesse condizioni, secondo per ricevere critiche, consigli e suggerimenti da chi ne sa di più. Sicuramente la soluzione da me proposta non sarà la migliore, quindi ogni commento (ovviamente costruttivo) sarà ben accetto.

Vorrei chiudere questo post con due segnalazioni.
Su webmasterpoint ho trovato alcune indicazioni di Tommaso Tessarolo su come realizzare una casa digitale. Mi sono immerso nella lettura di questo articolo perché…mi piace sognare. Non nascondo il fatto che una casa con tutte quei “giochini” tecnologici indicati nell’articolo sia tra i miei sogni, quindi in futuro…peccato che i costi non siano proprio per tutte le tasche.
La seconda segnalazione riguarda gli Youtube Video Awards, per chi non lo sapesse il famoso portale web2.0 per la condivisione di video auto-prodotti ha proposto questo concorso che ha visto premiati sette video per sette diverse categorie. Visto che la musica è una delle mie più grandi passioni vi riporto il video di TerraNaomi con la canzone Say It’s Possible premiata come Best Music Video.

Ed ecco il link al sito (ora non raggiungibile) al blog e allo spazio su myspace.

Il web2.0 comincia a dare i suoi frutti...

E ora torno a lavorare... :-(

[La Vida Es Un Carnaval]

Digg! | | | del.icio.us | ste-site - visit my website


RFID e tesi

gennaio 23, 2007

RFIDMi sono stati chiesti consigli e suggerimenti per lo sviluppo di applicazioni RFID in un commento. Visto che non ho mai approfondito l’argomento provo a dire qualcosa in più con questo post.

Prima cosa, ogni produttore di lettori/tag fornisce le proprie librerie per sviluppare applicazioni. Quindi la soluzione migliore per sviluppare qualcosa è cercare un rivenditore, acquistare un kit di sviluppo e cominciare a smanettare. I kit più semplici non dovrebbero avere prezzi elevatissimi ma mai al di sotto di qualche centinaia di euro. Io per la mia tesi non ho avuto problemi, pagava il Poli, ma se dovete sviluppare un’applicazione piccola piccola per voi allora le cose potrebbero cambiare.

Capitolo Java. Non ho trovato librerie Java, sul sito della Sun ho trovato questo, ma per i miei scopi mi sembrava troppo, quindi non ho approfondito la questione.

Io cosa ho acquistato. Mi sono affidato a, credo, l’unico rivenditore italiano di questi “aggeggini”, Softwork, e ho acquistato un kit con RFID reader-USB e alcuni tag passivi. L’installazione, l’utilizzo e la configurazione con il loro software è stata semplice, i problemi li ho trovati nel momento in cui dovevo sviluppare una mia applicazione (per due motivi: io non avevo mai sviluppato in ambiente Visual Studio e l’unico esempio disponibile era in VB6). Però una volta capito come funzionava in VB6 è stato semplice creare una piccola applicazione in C#. Come avrete capito vengono forniti delle dll (anzi per la precisione degli ocx) il cui utilizzo poi è abbastanza intuitivo (anche per chi non conosce VB o C#).

Ora la mia tesi può proseguire, magari in un altro post ne parlerò, vi dico solo che si tratterà di un software per l’e-learning innovativo destinato a musei, mostre…per aiutare i bambini nell’apprendimento.

Non mi sembra di avere altro da aggiungere, spero di aver aiutato chi mi aveva chiesto consigli e di poter essere d’aiuto ad altri.

[La Vida Es Un Carnaval]

Digg! | | | del.icio.us | ste-site – visit my website