martedì 30 gennaio 2007

From Genesis to Revelation

"From Genesis to Revelation" by Genesis is my preferred album at this time. I could continue to listen it without stew me!

This is the first album recorded in 1969 by the band of Phil Collins and Peter Gabriel. It's a complete album that would want to tell the human's history from the genesis (the bible first's book) to Revelation (the bible last's book, Revelation is the correct translation for apocalypse).

Genesis took cues from progressive, melody and classic rock. The unmistakable voice of Peter Gabriel gives a touch of class to the album, that today remains one of the Genesis' best sold album.

Bye Piero

Div trascinabile con gli Script.aculo.us

Un caratteristica interessante di Rails è che ha già impacchettati i famosi Script.aculo.us, script che consentono di creare pagine graficamente dinamiche. Ad esempio è possibile creare un div simile ad una finestra (cliccabile e trascinabile con il mouse) in poche righe di codice.

Nella view scriveremo

<%= javascript_include_tag "prototype" %>
<%= javascript_include_tag "scriptaculous" %>

per importare i Javascript necessari

Poi creeremo un Div e lo chiameremo "finestra"

  <div id="finestra">  clicca su di me per trascinarmi!  </div> 


Ora modifichiamo il css a lui appicato
#finestra {
position: absolute;
z-index: 70;
height: 400px;
width: 300px;
top: 20px;
right: 300px;
background-color: #FFFFDD;

}

Ora inseriamo uno script appena dopo <div id="finestra">
 <script type="text/javascript"> new Draggable('finestra'); </script> 

Il gioco è fatto, avremo un div che si comporterà come una finestra...

Referenze

Sito ufficiale di Ruby On Rails: www.rubyonrails.org

Sito ufficiale degli Script.aculo.us

Ciao Piero

Rails e Ajax

Realizzare applicazioni moderne, di forte impatto grafico, solitamente porterebbe via molto tempo. Oggi grazie ai tanti framework di sviluppo web agile che si stanno diffondendo è molto più semplice e veloce scrivere intere applicazioni ben fatte con un notevole risparmio di tempo e divertendosi. Esistono diversi framework: primo tra tutti Ruby On Rails, poi segue Nitro (sempre in ruby), e Django scritto in Phyton.

Rails supporta nativamente Ajax ed è molto semplice da utilizzare. Per eseguire una richiesta Ajax è sufficiente utilizzare gli appositi helpers.

Nell'html head della View scriveremo
<%= javascript_include_tag "prototype" %>


per importare le funzioni javascript necessarie.

Mentre per fare un link che aggiornerà un div via ajax scriveremo

<%= link_to_remote( "clicca qui", :update => "div_da_aggiornare", :url =>{ :action => :funzione_remota_da_chiamare }) %>
Rails provverderà a generare il codice javascript necessario per eseguire le richieste via Ajax.

Con questo comando verrà richiamato il controller corrente alla funzione "funzione_remota_da_chiamare" e l'output sarà inserito nell'apposito div chiamato "div_da_aggiornare".

il codice del controller remoto sarà simile a questo
def funzione_remota_da_chiamare
render :text => "Ciao Ciao"
end

Facile no?

Ciao Piero

Per approfondimenti onLamp - Ajax on Rails: OnLamp

sabato 27 gennaio 2007

Last.fm

Troppo bello.

Ne avevo già sentito parlare, più che altro mi ricordo che con Amarok era possibile utilizzare parte di quel servizio... poi stasera girovagando tra i blog di persone conosciute ho trovato questo post sul sito di Luca a proposito di Last.fm ... non c'è che dire... è stato molto convincente! (grazie Luca... e scusa se ti copio il Post!)

Last.fm è un ottima radio web e si adatta ai tuoi gusti! Basta scaricare il loro software (una decina di mega), creare un account su last.fm, e il gioco è fatto!

ciao Piero

giovedì 18 gennaio 2007

eXtreme Meeting n°8

Ieri ci siamo riuniti per l'ottavo incontro dell'XpUg.
Era tanto che non ci vedavamo: da prima delle ferie.
Tutti quanti avevamo voglia di ricominciare a lavorare: presenti Max, Federico, Andrea, Jacopo, Matteo, Davide e Mimmo.
Abbiamo cominciato con mezzo pomodoro a parlare della prossima Essap: alcuni di noi vi hanno partecipato e potrebbero ripartecipare quest'anno portando la propria esperienza di learning dopo un anno di eXtreme Programming. Inoltre quest'anno abbiamo l'opportunità di partecipare all'XP2007, che si terrà a Como, eventualmente presentando un poster con i nostri lavori (eXaminando?).
A metà pomodoro Matteo ci ha ricordato che non abbiamo fatto lo stand-up meeting, così ci siamo alzati e abbiamo ricominciato l'incontro da bravi membri di un team XP.

L'incontro è stato proficuo. Abbiamo inserito una nuova storia e l'abbiamo quasi completata (creazione dell'Home Page di eXaminando). Tutti sono andati avanti con le proprie storie. Siamo partiti con l'intento di mescolare le coppie per fare un buon pair-programming, cosa che purtroppo è stata fatta solo all'inizio... peccato! Jacopo alla fine ha riproposto di modificare la cadenza degli incontri da quindicinale a settimanale, la proposta è stata accettata.

Dopo un mese di astinenza di programmazione rails, è stato facile ricominciare: il codice era comprensibile ed è stato facile testarne l'effettivo funzionamento sulla mia nuova macchina grazie ai Test.
Ciao Piero

mercoledì 17 gennaio 2007

Usiamo il "Blind Carbon Copy"... please!

Tanti di noi ricevono e-mail da amici o conoscenti, che per condividere barzellette, filmati o cose molto divertienti inviano la stessa mail a una ventina di indirizzi.
Sarebbe buono se queste persone, anzichè utilizzare il campo "To:" per inserire gli indirizzi dei destinatari utilizzassero il campo "BCC:". In questo modo a chi riceverà la mail non apparirà la lista di tutti i destinatari.
Vantaggi? Un po' più di privacy e si evitano mail infette e di spam.

(Tnx to Alby per il suggerimento)...

Ciao Piero

domenica 14 gennaio 2007

Simulare tipi enumerativi in Java

In certi linguaggi, come ad esempio Java, non sono a disposizione i tipi enumerativi, ecco che allora posso sfruttare la potenza della programmazione ad oggetti per poter creare una classe che ne simula il funzionamento.

Per poter far ciò posso scrivere una classe autoreferenziante. Ad esempio:
class Edificio{
private Edificio(){}  /* Costruttore vuoto */

public static final Edificio Casa = new Edificio(); /* elemento del tipo Edificio*/
public static final Edificio Villa = new Edificio();

public static final Edificio Appartamento = new Edificio();

public static final Edificio Magazzino = new Edificio();

}

In questo modo potrò fare operazioni del tipo:
Edificio MioEdificio = Edificio.Casa();

oppure
Edificio MioEdificio = Edificio.Villa();

Potrebbe essere utile...

Ciao Piero

venerdì 12 gennaio 2007

When Darwin won't start

Installare MacOs X su una macchina x86 standard non è una cosa semplice e quando è possibile le performance del sistema non sono paragonabili con la stessa macchina con linux installato.

Contrariamente è possibile installare il kernel di MacOs X (Darwin e OpenDarwin) su una qualunque macchina x86. Prima di tutto è necessario scaricare e masterizzare la ISO del cd di installazione da opendarwin.org. Una volta masterizzata è possibile fare il boot da cd. Il processo di installazione partirà automaticamente, e non comporta molte conoscenze tecniche, se non un po di esperienza nell'installazione di un sistema Unix-like.

Se si sceglie di partizionare manualmente l'hard disk, per avere una macchina multi-boot con linux e con GRUB come boot loader, è molto importante scegliere Apple UFS (Unix File System) come file system sulla partizione di boot di Darwin. GRUB è in grado di leggere partizioni Apple UFS ma non le più avanzate HFS+ (se utilizzerete HFS+ non vi sarà possibile usare GRUB come bootloader inquanto non riuscirà a caricare Darwin).
Ammettendo che si sia installato Darwin sulla prima partizione del primo disco del canale IDE i comandi da impartire a GRUB per fare il boot di Darwin sono:
rootnoverify (hd0,0)

chainloader +1

boot

Questi comandi possono essere impartiti premendo "C" nella schermata di GRUB.

Se siete fortunati (o meglio... avete fatto tutto correttamente) vedrete la schermata di boot di darwin (identica a quella di MacOs X).

Se dopo una trentina di secondi non vedete comparire una shell, vuol dire che qualcosa è andato storto.

Resettate il sistema e ri-eseguite il boot da GRUB. Per qualche istante comparirà il bootloader di Apple, premete un tasto qualsiasi e potrete passare dei parametri di boot al kernel. Per esempio se digitate "-v", avrete un output verboso al boot, così potrete individuare più facilmente il problema.

Tante volte, leggendo sui vari forum, il problema risiede nel fatto che manca il parametro che identifica il disco di root. In questo caso potrete digitare
hd()mach_kernel rootdev=disk0s1

e tutto dovrebbe partire. Per salvare questa opzione dovrete poi modificare la chiave Kernel Flags del file XML
/Library/Preferences/SystemConfiguration/com.apple.Boot.plist

inserendo
rd=disk0s1

Ora avrete la soddisfazione di avere un po di mac sul vostro pc...
Ciao Piero