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

Annunci

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