Raccomandata

maggio 9, 2007

Ragazzi cominciate a sudare, a casa potrebbe attendervi una sorpresina…

Roma – I 3636 utenti Internet italiani che secondo alcuni discografici avrebbero posto in condivisione illegalmente sulle piattaforme di sharing una certa quantità di materiale musicale, stanno ricevendo in questi giorni le raccomandate con cui i detentori del diritto d’autore chiedono la cancellazione dei file e il pagamento di alcune centinaia di euro a titolo di compensazione.
(fonte PI)

Trovate altre informazioni anche su webmasterpoint.

Per ora preferisco non esprimermi, ho dei dubbi su molti aspetti relativi a questa vicenda (modi, tempi e soggetti)…

 UPDATE: su PI i consigli di Adiconsum.

[La Vida Es Un Carnaval]

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


Ho una prof 2.0

aprile 17, 2007

Quando l’ho visto, la mia professoressa di statistica ha guadagnato immediatamente un sacco di punti. Dovete sapere che questa professoressa ha l’abitudine di pubblicare, fino allo scorso anno in un pdf, l’elenco delle lezioni e degli argomenti trattati a lezione. Da questo semestre invece, non è più un semplice pdf, ma ha creato un calendario condiviso con Google Calendar!! All’avanguardia la prof, l’ho prontamente incluso nel mio calendario in modo da restare sempre aggiornato.

Vorrei anche segnalare la nascita di un motore di ricerca intelligente, per ora in inglese. Si chiama Answer.com e la sua caratteristica è quella di fornire risposte fatte e finite su circa un milione di argomenti andando ad attingere aa oltre un centinaio di fonti enciclopediche attendibili e aggiornate. Se non bastasse, mette anche a disposizione un software scaricabile gratuitamente che passa sotto il nome di “Click Answer”, che permette di fare ricerche su ogni parola selezionata all’interno di un testo,Internet,Word o PDF che sia.
answer
Mi sembra un’idea interessante ed originale. Utile e affidabile. Da prendere in considerazione per ricerche scolastiche. Speriamo diventi disponibile anche in italiano!

[via ICTBlog]

[La Vida Es Un Carnaval]

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


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


Io certe cose non le capisco

aprile 4, 2007

Perché uno deve venire in università, piazzarsi in trifoglio con portatile e joypad e giocare a FIFA 07 occupando un intero banco da 4 posti che potrebbe essere più utile a chi deve realmente lavorare. Il risultato è telecronaca a tutto volume di Civoli e urla, grida, esclamazioni da stadio. Ieri per capire il codice che stavo scrivendo mi sono dovuto piazzare nelle orecchie le auricolari ed ascoltare un po’ di musica!

La cosa che non capisco è perché in università? Non possono starsene a casa? Io spendo 40€ di abbonamento mensile per venire a Milano, loro vengono gratis?

Misteri del soprannaturale!Pazienza, torno a lavorare, altrimenti mi dicono: “perché non te ne stai a casa a scrivere sul blog”? 😀

[La Vida Es Un Carnaval]

P.S. altra cosa che non capisco è: “perché se ci sono tante persone in pausa qui in trifoglio continua a cadere la connessione wireless?”

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


Ant+Joram

marzo 28, 2007

Ho deciso di aprire la rassegna di soluzioni informatiche con due strumenti che hanno accompagnato le mie ultime giornate programmative. Ho scelto di farlo perchè on-line si trova poca documentazione su questi strumenti (soprattutto in italiano).
Si tratta di Ant, un tool che permette la configurazione, il build ed il deployment di progetti Java Complessi e Joram, un’interfaccia rete-applicazioni JMS/SOAP orientata alla messaggistica.

Il primo è di semplice installazione e configurazione. Dopo aver scaricato il tool e scompattato si devono impostare:

  • la ANT_HOME: per far questo spostatevi nel Pannello di Controllo, cliccate su Sistema e nel pannello Avanzate cliccate su Variabili d’ambiente. Qui create una nuova variabile d’ambiente con nome ANT_HOME e valore il percorso in cui avete installato Ant.
  • il path: nella stessa finestra si seleziona il path e lo si modifica inserendo il percorso della directory bin di Ant.

Le prime problematiche le ho riscontrate al momento dell’installazione di Joram che risulta leggermente diversa in ambiente Linux o Windows. Io sviluppo in ambiente Windows, ho scaricato dal sito l’ultima versione del server. Ho scompattato (due volte) e salvato in C:\joram-4.*.

A questo punto le operazioni dovrete configurare la JORAM_HOME: per far questo spostatevi nel Pannello di Controllo, cliccate su Sistema e nel pannello Avanzate cliccate su Variabili d’ambiente. Qui create una nuova variabile d’ambiente con nome JORAM_HOME e valore il percorso in cui avete installato joram. Nel nostro caso C:\joram-4.*.
Successivamente per cominciare ad utilizzare gli esempi presenti in sample, da linea di comando dovrete spostarvi nella directory sample\src\joram e digitare

ANT COMPILE

per compilare i sorgenti

ANT RESET SINGLE SERVER

per avviare il server Joram.
Poi da una seconda shell digitate:

ANT e il nome dell’applicazione da avviare

Per conoscere il nome delle applicazioni presenti (non corrisponde al nome delle classi) dovete andare a leggere il file Build.xml che riporta il nome di ogni applicazione. Allo stesso modo, nel momento in cui vorrete creare una nuova applicazione che utilizza Joram dovrete semplicemente copiare il Package nella cartella sample\src rilanciare ANT COMPILE, riavviare il server (ANT RESET SINGLE_SERVER), modificare il file build.xml e lanciare l’applicazione digitando ANT e il nome. La modifica è semplice: per ogni applicazione da avviare dovrete inserire qualcosa di simile a questo:

<target name=”NOME PER LANCIARE L’APPLICAZIONE” depends=”init”
description=”–> Runs chat administration”>
<java classname=”PACKAGE.CLASSE CON IL MAIN”
failonerror=”no” fork=”yes”
dir=”${run.dir}”>
<classpath path=”${project.class.path}”/>
</java>
</target>

Per applicazioni più complesse vi rimando alla documentazione sul sito.

Spero di essere stato d’aiuto a qualcuno, sono alle prime armi con spiegazioni di questo tipo, spero di migliorare in futuro!

[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


Sfogo

marzo 21, 2007

Qualcuno sa come cazzo si installa Joram? 😦

[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