mercoledì 18 giugno 2008

Wine 1.0

Il Wine team è felice di annunciare la versione 1.0 di Wine! Dopo 15 anni di sviluppo ora abbiamo la prima stable!
Su http://appdb.winehq.org c'è una bella listona degli applicativi funzionanti.
Mi aspetto che anche ReactOS faccia un bel salto in avanti...

martedì 17 giugno 2008

Rage live in Modena 2008


C'ero anch'io!
Fantastico... veramente grandi!
Cazzi vostri che ve lo siete persi! ahahahh

lunedì 2 giugno 2008

Energy saving computers

Sembra che il tema dell'anno, almeno per quanto riguarda il settore IT, sia il risparmio energetico; non si fa altro che parlare di server ad alta efficienza, CPU a basso consumo, addirittura qualcuno introduce il software che fa risparmiare energia (ho letto di un deframmentatore per windows che a detta dell'azienda che lo commercia, consente un risparmio energetico per grosse infrastrutture IT ottimizzando l'accesso al disco..).
Salvo poi vedere obbrobrietà tipo aziende che allestiscono "sale server" in cui stivare un mobile rack con 2 o 3 macchine server ultra-striminzite da 10k euro (di cui 3k solo per l'ingenierizzazione dei flussi di raffreddamento) e poi montare un mega impianto di climatizzazione... alla faccia del risparmio! Metti 3 server con tradizionali case tower sparsi per gli uffici sfruttando la climatizzazione degli uffici stessi, e valuta poi il risparmio energetico...
In ogni caso, interessante questo post sul formum di HWUpgrade: come dotarsi di un "mulo" da tenere acceso 24/7 selezionando componenti a basso costo-consumo-rumore.
E poi qualche componente:

Il futuro è nell'uso responsabile, intelligente ed efficiente dell'energia. Amen.

venerdì 30 maggio 2008

Il pattern "catena di montaggio"

Applicabilità:


quando a fronte di una sorgente di dati più o meno complessi, occorre effettuare una catena di operazioni condizionate dal contentuto degli eventi stessi, operazioni che possono anche essere condizionate l'una dall'altra rispettando però la sequenza temporale. La catena di montaggio può prevedere instradamento multiplo per il prodotto in elaborazione, ed inoltre in macchine che dispongono di più unità di elaborazione, ogni stazione di montaggio può lavore su un Thread separato utilizzando il meccanismo del pipelining.

Struttura:


il pattern è composto da un oggetto "costruttore della catena" il cui compito è quello di assemblare la catena di montaggio, un oggetto "catena di montaggio" il cui compito è quello di eseguire il ciclo di montaggio, ed una sequenza di oggetti implementanti l'interfaccia "stazione di montaggio", che effettuano le operazioni necessarie per assemblare la soluzione finale.

Implementazione:


Stazione di montaggio
Una stazione di montaggio è un thread che effettua operazioni su dati prelevati da un unico input (una coda FIFO sincronizzata) e che può, in funzione del contenuto del dato da elaborare, instradare in output su una o più code il prodotto della sua elaborazione verso altre stazioni.

Catena di montaggio
questo oggetto si occupa dell'instradamento del "semilavorato" all'interno delle stazioni, fornendo la struttura, il percorso ed i meccanismi di trasporto dei semilavorati.

Costruttore della catena
Ovviamente questo à l'oggetto più importante: ha il compito di costruire la catena di montaggio, cioè interpretare correttamente la configurazione richiesta e posizionare le specifiche stazioni nell'ordine corretto. In questa situazione si può utilizzare un Factory Method delegando quindi alle implementazioni della factory la logica di assemblamento della catena di montaggio.

Un esempio


Ho utilizzato questo pattern per un applicativo di monitoring di una rete: ogni sessione di monitoring ha le sue caratteristiche particolari, per cui viene costruita una catena di montaggio ad hoc in funzione di una configurazione presente in un database; al passaggio di un pacchetto di dati, viene effettuata una sequenza di operazioni:

  • Calcolo di una funzione di valorizzazione di una parte del pacchetto determinata dal valore dell'intestazione del pacchetto e da dati contenuti nel DB

  • Aggiornamento di una cella di una tabella, la cui posizione e contenuto vengono calcolati dalla prima stazione di montaggio

  • Trace su un file in funzione dell'intestazione del pacchetto

  • Entry in un report HTML o XML

  • Aggiornamento di un grafico


Utilizzando la costruzione "al volo" della stazione di montaggio ho semplificato drasticamente il codice di interpretazione degli eventi, rimosso gran parte delle istruzioni condizionali e, cosa più importante, ho la possibilità di estendere a piacere le operazioni da svolgere al variare della configurazione.
Inoltre, utilizzando una catena di montaggio "multilinea", dove cioè gli eventi vengono instradati verso direzioni diverse ad ogni stazione, sono riuscito ad ottenere la variazione di comportamento in funzione dell'evento in modo molto semplice.

lunedì 19 maggio 2008

Sun catame lo strument!


"Mag-nifico!". Un piccolo gioiello di liuteria!
Un meraviglioso basso 4 corde fretless, manico in acero e wenge, tastiera in palissandro, corpo in frassino con un meraviglioso colore "natural", 2 pickups Bartolini, elettronica attiva, ponte in ottone, meccaniche Hipshot.
Detto tutto? Bhe.. no... manca il "suona da dio!"