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


Programmatori nei guai

marzo 22, 2007

programmerLa notizia del programmatore sbadato, riportata da corriere.it qualche giorno fa, è stata già commentata da Napolux ma considerando il fatto che tra poco (spero molto poco) sarò catapultato nel mondo del lavoro e potrei ritrovarmi alle prese con dati sensibili, mi sono chiesto: “come la gestisco una situazione come questa?” Insomma, alla prima lezione di Ingegneria del Software, ci hanno raccontato di altri casi tragici di programmazione errata. Navicelle spaziali esplose, macchine mediche che emettono troppe onde nocive…e tutto per errori banali! Noi ci abbiamo anche riso sopra ma un piccolo errore può capitare anche ai migliori…

Senza andare in situazioni così tragiche, a voi lavoratori dell’IT è mai capitata una situazione in cui non sapevate come tornare indietro, e dovevate tornare indietro?! Siete riusciti a rimediare al vostro errore? Quali sono state le conseguenze?

Per la serie…io speriamo che me la cavo

[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


WEB 2.0, blog, wiki, you…domande e riflessioni

dicembre 18, 2006

rete

Spero di non addentrarmi in un campo troppo complesso e insidioso.
Sono alcuni giorni che medito su alcuni aspetti legati al mondo che ho cominciato a “frequentare” con questo blog, il web2.0, il wiki, la blogosfera…

In questi giorni poi mi sono ritrovato di fronte a reazioni discordanti su questo mondo.
I blogger sono sempre entusiasti di fronte alle nuove sfide, alle nuove esperienze che vivono ogni giorno sul web e sono pronti a difendere a spada tratta “il loro mondo”. L’esempio più lampante credo sia ben visibile a tutti, è legato all’articolo apparso su Nova24 la scorsa settimana, che ha scatenato (come indicato qui) le reazioni positive di decine di blogger.
D’altro canto si trovano voci fuori dal coro, che ogni tanto tornano alla carica con affermazioni che devono far pensare. Ai tempi dell’acquisizione di Youtube da parte di Google, ad esempio, si era sparso il timore di una nuova bolla pronta ad esplodere e a mandare in rovina migliaia di piccoli imprenditori che cercavano fortuna su Internet. In questi giorni alcuni dubbi sono riapparsi in contemporanea all’uscita del Time che, con una mossa a sorpresa indica come uomo dell’anno niente popò di meno che YOU con una copertina geniale. Le motivazioni?

…per aver preso le redini dei media globali, per aver fondato e aver dato forma alla nuova democrazia digitale, per aver lavorato gratis e aver battuto i professionisti al loro stesso gioco…

Insomma noi (mi ci metto anch’io nel mio piccolo) che possiamo attraverso questo strumento “mondiale”, che è la rete, possiamo…

…mettere insieme i piccoli contributi di milioni di persone, per renderli importanti…

Il redattore capo Richard Stengel afferma:

…Questi blog, questi video portano alla nostra attenzione eventi in un modo che è spesso più autentico e immediato dei media tradizionali. Una volta i giornalisti avevano una competenza esclusiva per portare le persone in luoghi che non avevano mai visto. Ma ora una madre a Baghdad con un videotelefono può farti vedere un attentato lungo la strada…

Ora io non penso di fornire un servizio così importante ma penso di appartenere ad una nicchia molto piccola che contribuisce con entusiasmo e tanta voglia alla distribuzione di notizie, di informazioni e giudizi.
Purtroppo (o per fortuna, le critiche fanno bene) continuo a trovare critiche al mondo dei blogger che mi lasciano perplesso ma che possono far riflettere. E’ di oggi ad esempio l’articolo – Blog: la banda (larga) degli insoliti ignoti – su CorriereEconomia di Margiocco che al termine di un interessante articolo sul web2.0, riflette sul fatto che la blogosfera sia composta in larga parte di dilettanti che si dilettano a scrivere su internet. E afferma che vi sono alcune perle sommerse da molta spazzatura e scrive che “gli autori a volte si scrivono addosso scopiazzandosi l’un l’altro e spesso prendendo spunto dal tanto detestato giornale”. Concordo pienamente quando fa una distinzione tra professionisti e dilettanti (e io mi metto in questa seconda categoria) ma penso che nessuno dei blogger che seguo costantemente (a parte i giornalisti veri) voglia andare a rubare il lavoro a chi non scrive per hobby ma per lavoro. Inoltre non ho mai trovato un’affermazione contro i giornali in nessun post presente nella blogosfera e penso che l’affermazione “…detestato giornale…” sia un po’ troppo forte. Nonostante ciò, è vero, anch’io lo faccio, si prende spunto per scrivere un post, da altri articoli, dai giornali, ma la rete è questo, serve per divulgare le notizie, per portare giudizi, commenti in tutto il mondo.
E da qui sorge un secondo problema che viene riportato su Il Giorno all’interno della rubrica il caffè, è necessaria una regolamentazione per la rete che non degeneri però nella censura.

Infine un ultima riflessione legata ad un piccolo esperimento fatto nelle scorse settimane. Ho creato un wikispace per organizzare e raccogliere le adesioni alla cena di Natale tra amici. Purtroppo alcuni hanno trovato difficoltà nel partecipare a questa iniziativa. Mi sono quindi chiesto: si parla di web3.0, ma hanno compreso tutti il web2.0? A riguardo vi rimando ad un divertente articolo di Cesare Lamanna “Il Web 2.0 è un angolo arrotondato” e ad un post apparso sul blog di Marco Camisani “Domande alla Blogosfera” in cui un laureando che sta studiando il fenomeno dei blog si domanda:

Esiste davvero il “Web 2.0” (intenso in senso lato) anche in Italia oppure siamo “quattro gatti” che discutono fra loro di opportunità e benefici senza però finalizzare?

Bhe se siete arrivati a leggere i miei pensieri (sinceramente ci sarebbe altro da dire ma lo rimando al futuro) vi dico solo:

[La Vida Es Un Carnaval]

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


purtroppo

dicembre 15, 2006

…non sono potuto andare alla conferenza sull’open source al Poli. Se qualcune è andato e vuole raccontare qualcosa commenti questo post oppure se vuole lasciare un messaggio più lungo me lo invii, lo pubblicherò a suo nome.

Non sono potuto andare perchè ero impegnato al laboratorio HOC per la tesi. Ieri è arrivato il kit per lo sviluppo di applicazioni RFID comprensivo di lettore USB, alcuni tag e CD con librerie, demo, documentazione…
Dopo un primo momento di “entusiasmo” legato anche al fatto che effettivamente, attraverso la loro applicazione il lettore comunicava col tag, sono caduto nello sconforto legato al fatto che la dll da usare per sviluppare non viene considerata valida da Visual Studio 2005. Ammetto che sto imparando ad usare questo ambiente di sviluppo a me sconosciuto (fino ad oggi ho sviluppato esclusivamente in Java) ma sto cominciando a capire qualcosa.

Riprendendo il titolo del post, purtroppo (ma non troppo) la tesi mi costringerà a mettere in secondo piano i progetti che avevo iniziato. In secondo piano però, quando potrò tornerò a lavorarci.

Buon week-end prenatalizio a tutti…

[La Vida Es Un Carnaval]

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


generatore di icone per il social sharing

dicembre 13, 2006

Come avevo annunciato, la creazione di una piccola applicazione che generasse il codice necessario per inserire le icone del social sharing (DEL.ICIO.US, Digg…) era quasi terminata. Oggi con questo post ho deciso di renderla disponibile.
La potete scaricare liberamente, il funzionamento è semplice, inserendo il titolo del post e cliccando su “crea” si genererà il codice da inserire. Se decidete di posticipare il post rispetto al momento in cui state generando il codice ricordate di cambiare la data.

Spero di riuscire a fare delle modifiche grafiche. Sicuramente troverete degli errori, se è così fatemelo sapere. Spero di riuscire a trovare anche il tempo per scrivere un piccolo tutorial (anche se l’applicazione è molto semplice). L’ultima cosa, lo trovate qui, e tra qualche giorno potrete scaricarlo anche dal mio sito.

Ho deciso di rilasciare questo prodotto sotto la “Creative Commons Attribuzione-Non commerciale-Condividi allo stesso modo 2.5 Italia License”.
Creative Commons License
Questo/a opera è pubblicato sotto una Licenza Creative Commons.

Vorrei segnalare inoltre un’iniziativa “simile” alla mia segnalata da Sapientone. Si tratta di un progetto di alexking che è volto alla creazione di un’icona universale per riunire tutti i servizi del social sharing.
social sharing

Dimenticavo, ciò che scaricate è un jar, se avete la JVM cliccando 2 volte su di esso dovreste far partire l’applicazione mentre estraendo con ad es. winRar potrete recuperare i sorgenti. Come ultimo passo penso che cercherò di realizzare un file .exe da questo jar ma non avendolo mai fatto devo cercare quale strumento sia migliore per farlo e se sia conveniente. Se qualcuno ha un modo da suggerirmi lo ringrazio anticipatamente.

[La Vida Es Un Carnaval]

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