domenica 30 dicembre 2007

Press any key

Ecco una bella figura dell'Italiota di turno...  che crede che il "press any key" significhi premere il tasto "any"...

Leggere il thread per credere

http://www.hwupgrade.it/forum/showthread.php?t=1263518

giovedì 13 dicembre 2007

10 Things Every Java Programmer Should Know About Ruby

Sul sito Ruby-doc sono riportate le slides di Jim Weirich alla Open Source Conference del 2005 riguardo a ruby.

Sono molto interessanti e utili, la lettura non porta via più di 10 minuti...

Il link è questo

Il blog di Weirich è questo

Compile Time? Runtime? Anytime!

Una delle prime domande che mi viene posta quando parlo di Ruby a qualcuno è 'come viene compilato il codice?"

In parte rispondo con la pagina 400 del libro 'Pragmatic Ruby Programming 2nd edition' di Dave Thomas (che consiglio vivamente di acquistare)

"The important thing to remember about Ruby is that there isn’t a big difference between
'compile time' and 'run time'. It’s all the same. You can add code to a running process.
You can redefine methods on the fly, change their scope from public to private, and
soon. You can even alter basic types, such as Class and Object.
Once you get used to this flexibility, it is hard to go back to a static language such as
C++ or even to a half-static language such as Java.
But then, why would you want to do that?"

Il grande vantaggio di Ruby è la possibilità di modificare e aggiungere metodi a runtime. Come è possibile questo?

Cominciamo col dire che, similmente a SmallTalk, per ruby ogni cosa è un oggetto con i suoi metodi, dal numero alla stringa, non come avviene in Java dove, ad esempio, abbiamo i tipi primitivi privi di metodi.

In un linguaggio OO standard gli oggetti vengono identificati dalla classe che ha istanziato l'oggetto stesso, as esempio un oggetto di tipo String in java sarà istanziato da una classe String. In ruby il tipo degli oggetti viene identificato in base ai metodi che possiedono. Ecco che grazie a questo abbiamo librerie come ActiveRecord (lo strato ORM di Rails) che senza scrivere quasi una riga di codice e senza scrivere metodi di accesso ai campi di una tabella ti permette di interrogare il database. Tutto viene fatto in automatico, a runtime.

mercoledì 12 dicembre 2007

Imparare a fare i test con Rails

Stiamo finalmente affrontando lo sviluppo con i test (Piero dirà: Era ora!!!). Una buona guida si trova QUI.

Da una certa soddisfazione vedere che il codice che scrivi è più robusto e che può essere sottoposto a stress per vedere come si comporta e scoprire che si comporta bene!

venerdì 7 dicembre 2007

Rails 2

Sto aggiornando le ruby gems sul mio mac e ho appena avuto una sorpresa: Rails 2!

La mia applicazione che sto sviluppando non lamenta di warning, ora farò la prova del nove :D

Zuccherini sintattici in Ruby

Quando qualcuno inizia a programmare in Ruby si porta dietro degli orrori sintattici provenieneti da altri linguaggi. Ad esempio:

if element == nil then
puts 'Youppppy!'
end

in Ruby posso utilizzare il metodo nil? implementato in ogni oggetto ed eliminare il then che non è obbligatorio. Quindi il nostro codice diventerà:

if element.nil?
puts 'Youppppy!'
end

per sintetizzare ancora, posso utilizzare lo stile condiviso con Perl, ovvero posso mettere la condizione dopo l'espressione da eseguire:

puts 'Youppppy!' if element == nil

che può essere ancora più accorciato in

puts 'Youppppy!' unless element


Un altro esempio che possiamo fare di come ruby sia molto compatto è con le iterazioni.
se volessi iterare l'array

pagine_interessanti = [1,2,5,7,19,45,99,167,98]


in uno linguaggio come il C dovrei fare

int pagine_interessanti[] = {1,2,5,7,19,45,99,167,98}
for (count = 1; count <= sizeof(pagine_interessanti), count++){
printf("Ho trovato interessante la pagina %dn",pagine_interessanti[count]);
}


in Ruby tutto diventa più semplice!

pagine_interessanti = [1,2,5,7,19,45,99,167,98]
for pagina in pagine_interessanti do
puts "Ho trovato interessante la pagina #{pagina}n"
end


il ciclo può diventare

pagine_interessanti = [1,2,5,7,19,45,99,167,98]
pagine_interessanti.each |pagina|
puts "Ho trovato interessante la pagina #{pagina}n"
end


...accorciando...


pagine_interessanti = [1,2,5,7,19,45,99,167,98]
pagine_interessanti.each{|pagina| puts "Ho trovato interessante la pagina #{pagina}n"}


oppure

[1,2,5,7,19,45,99,167,98].each{|pagina| puts "Ho trovato interessante la pagina #{pagina}n"}


come direbbe il buon Zio Ben di SpiderMan "Un grande potere impone grandi responsabilità”...
quindi anche se abbiamo a disposizione una sintassi molto compatta e malleabile bisogna fare attenzione a scrivere codice che sia comprensibile agli altri componenti del nostro team.

lunedì 12 novembre 2007

Entre dos Aguas

Venerdì sera sono stato al concerto di Paco de Lucia al Teatro del Verme a Milano. Devo dire che non pensavo potesse essere così piacevole. Non conoscevo molto bene l'artista, se non per ascolto indiretto (mio fratello possiede alcuni cd).

Paco, secondo molti, è il miglior chitarrista di flamenco al mondo, nei suoi pezzi si ascoltano molte melodie jazz che incantano con il movimento incredibilmente veloce e preciso delle dita e delle mani.

Le prossime date saranno ad Amburgo e Londra.

AgileDay 2007

Il periodo delle conferenze e degli eventi non termina. Venerdì 23 novembre si terrà a Bologna l'AgileDay. Alla conferenza diverse persone provenienti dal panorama IT italiano e internazionale parleranno delle metodologie agili e di come hanno infulenzato il loro modo di programmare.

Ci vediamo a Bologna!

www.agileday.it 

mercoledì 31 ottobre 2007

Cambio di felino

Due giorni fa ho installato Leopard (MacOs 10.5) sul mio MacBook Pro. Devo dire che gli ingenieri di cupertino hanno fatto veramente un bel lavoro, anche se il sistema non è un balzo epocale come vuol far credere l'ottimo ufficio di marketing di apple.

Le prestazioni, già eccellenti, sono migliorate moltissimo grazie al Kernel completamente a 64bit (alla faccia di windows). Per quanto riguarda la GUI Leopard ha raggiunto il traguardo che Tiger non aveva raggiunto: uniformità dell'interfaccia. Ad esempio il Finder (quello che per gli utenti windows sarebbe explorer, si quello che si apre quando cliccate su 'Risorse del Computer') è identico a iTunes.

Per tutti gli aspetti positivi potete andare sul sito di Apple dedicato a MacOs X.  Ottima l'idea di includere già nell'installazione di default (senza quindi installare Xcode) Ruby On Rails, il che evita gli scleri ai tempi di tiger durante l'installazione. Unica nota negativa: è incluso Rails alla versione 1.2.3, e gem update (per installare la versione 1.2.5) fallisce per via della gem fastthead. Ho risolto tutto dopo una mezzora rimovendo le gemme in conflitto e re-installandole.

Di ritorno dal Rails to Italy

Rieccomi qui, dopo due giorni di Rails To Italy all'università di Pisa.Rails to Italy è stata la prima conferenza italiana improntata su Ruby On Rails, il framework per lo sviluppo agile di siti internet e applicazioni web.

Sono stati toccati diversi argomenti, da piccoli e fantastici plugins (Widgets e inPlaceGlobalize) al futuro del Web semantico (Web 2.0.... o 3.0?). In oltre è stata un occasione per rincontrare amici e conoscenti del mondo agile (da Torino a Bologna passando per Milano).

Federico ha presentato, suscitando diverso interesse tra il pubblico, il progetto Wikimaps (sviluppato da lui e Max), è tempo di far crescere questo progetto!

La conferenza nel complesso è stata veramente ben organizzata, magliette, cartellette, buffet, social dinner (peccato non esserci stato) hanno contornato i numerosi key-speaker tra cui Zed Shaw (autore del server Mongrel) e Thomas Fuchs (autore di Script.aculo.us).

giovedì 25 ottobre 2007

Alcune pagine che i web-designer dovrebbero leggere...

Papà Google mette a disposizione diverse pagine di linee guida per addetti ai lavori.
In particolare in questa pagina si parla di design, contenuto e qualità.

Un buon suggerimento che viene dato è di provare il proprio sito con Lynx, un browser testuale ideale per testare il funzionamento al 'minimo sindacale' di un sito.

Qui altre pagine utili.

giovedì 18 ottobre 2007

PNG Alpha Channel e IE6

Come noto, il vecchio catorcio di IE6 ha diversi problemi nell'interpretazione del canale alpha (ovvero la trasparenza) delle immagini PNG (Portable Network Graphics). Infatti spesso le immagini create con i più costosi programmi di grafica come Photoshop vengono renderizzate con uno sfondo nero o azzurrino a seconda della codifica dell'immagine.

La soliuzione?

Aprire le immagini con GIMP e salvarle di nuovo in PNG e la trasparenza torna a posto pure su IE6.

UPDATE: Sembra che a volte non funzioni :(

lunedì 8 ottobre 2007

Spostare un repository Subversion (SVN)

Questa mattina mi è capitato di dover spostare un Repository Subversion da un server ad un altro. L'operazione si è rivelata molto semplice:

Prima di tutto ho eseguito il dump del repository

piero@keplero:~$ svnadmin dump /path/to/repository > repository-name.dmp

dopo di che mi è bastato creare il nuovo repository sul server di destinazione

piero@galileo:~$ svnadmin create repository-name

in fine ho scompattato il dump nel file system

piero@galileo:~$ svnadmin load /new/path/to/repository-name < repository-name.dmp

E tutto è tornato operativo!

mercoledì 19 settembre 2007

Leggi di Murphy per programmatori classici

  1. Qualsiasi programma, quando funziona, è obsoleto
  2. Qualsiasi programma costa di più e ci mette di più
  3. Se un programma è utile, dovrà essere cambiato
  4. Se un programma è inutile, dovrà essere documentato
  5. Ogni programma si espanderà fino a occupare tutta la memoria disponibile
  6. Il valore di un programma è direttamente proporzionale all'ingombro del suo output
  7. La complessità di un programma si arresta solo dopo aver oltrepassato le capacità del programmatore

venerdì 14 settembre 2007

Rails To Italy

Il 26 e il 27 ottobre sarò a Pisa al Rails to Italy, la prima conferenza italiana su Ruby on Rails! Ci saranno diversi speaker, tra cui David Heinemeier Hansson in videoconferenza (il principale sviluppatore di Rails). Peccato che capiti nello stesso periodo del LinuxDay!

mercoledì 5 settembre 2007

Mac Os X Tips: Linux file sharing

Il metodo più semplice per condividere le home directory di una macchina linux e un mac è il protocollo AppleTalk. Basta installarlo e saranno condivise con il proprio username e password.Per installazione su Debian/Ubuntu: sudo apt-get install netatalkPoi su mac basterà premere: mela+k e digitare afp://indirizzo-ipTips by bimbomix

lunedì 3 settembre 2007

Maledetto PayPal

Un sito moderno non può metterci 7-10 giorni per resettare una password! Alla faccia della serietà...

sabato 25 agosto 2007

Full Immersion

Sono appena tornato dalla mia prima immersione subacquea dopo sette anni. Sette anni? Non mi sembra vero, ieri sera quando ho tirato fuori il mio Logbook ho letto la data della mia ultima immersione: 08 luglio 2000, in Toscana, tra l'Elba e la terraferma, 35 minuti per un massimo di 30 metri di profondità.
Ieri dopo aver noleggiato le bombole (ed essere ri-tornato dal negoziante perché la mia bombola perdeva, in mezzora di macchina è passata da 210atm a 180atm...) ho preparato tutto il necessario: GAV, muta semistagna, pinne, calzari e maschera in perfetto ordine.

Visualizzazione ingrandita della mappa
Oggi finalmente sono stato con amici ai Castelli di Cannero, nell'alto Lago Maggiore, dove per una mezzoretta ci siamo immersi nelle torbide acque lacustri. Siamo partiti con il gommone da Caldè, qualche chilometro dopo Laveno. Subito con il gommone in acqua abbiamo puntato la poppa a nord, per un primo tratto piuttosto mosso ma molto divertente, per poi virare verso nord-ovest raggiungendo la quasi la costa del Verbano, poco prima del confine Svizzero, trovando così i castelli di Cannero.

Ci siamo immersi per mezzora, circumnavigando uno grande scoglio fino ad una parete, che secondo l'ecoscandaglio scende fino a 80 metri. Abbiamo continuato a scendere la parete fino a 17 metri, trovando un paio di occhiali da sole da ciclista (che ci facevano li?), dopo un paio di persici visti dal mio compagno di immersione, e qualche mio problema di assetto, dato che non avevo mai fatto un immersione in acqua dolce, siamo risaliti, soddisfatti.

Spero di riuscire a riprendere questa passione con la quale sono cresciuto, che a qualcuno può far paura, ad altri può sembrare inutile, ma che in realtà è uno degli sport più divertenti che esistano, sopratutto per chi, come me, ama a stare a contatto con la natura, in un mondo dove l'uomo interagisce molto poco (anche se, quando lo fa, spesso distrugge).

venerdì 24 agosto 2007

Dynamic ActiveRecord

A volte in una applicazione, in fase di produzione, potrei non conoscere a priori i nomi e le tabelle che dovrò utilizzare.
Normalmente in SQL metterei in una variabile il nome della tabella e la innesterei all'interno della query.
Questo con rails è possibile, ma si perdono tutti i benefici derivanti da ActiveRecord (la classe che implementa il livello ORM del framework).

Come fare quindi se non conosco a priori il nome della tabella e di conseguenza non posso generare il modello in fase di sviluppo?

Una possibile soluzione è di utilizzare un semplice modello vuoto di appoggio

class DynTable < ActiveRecord::Base;
end


Quindi nel mio controller ora posso specificare la tabella da utilizzare:

my_table_name = "tests"
DynTable.set_table_name(my_table_name)


Il metodo set_table_name table_nameviene solitamente utilizzato all'interno del modello. Non potendo modificare a runtime il modello dall'interno (perchè di fatto i modelli in rails sono delle classi singleton), posso farlo dall'esterno.

Ora che il mio modello "punta" alla giusta tabella posso utilizzarlo per i miei scopi.

dyn_content = DynTable.find(:all)
DynTable.new
DynTable.delete
...


Spero che vi sia utile...
Ciao

martedì 7 agosto 2007

ActiveRecord troubles

Ho dovuto un po' sclerare su modello Rails inquando mi generava un errore piuttosto strambo quando eseguivo una find:

compile error
/usr/local/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/base.rb:1358: syntax error, unexpected tINTEGER
Object::1
^

Come ho risolto? All'interno della tabella avevo un campo integer di nome Type che mi mandava in panne la Find.

Rinominando quel campo, tutto è tornato a posto...

Che idiota... mai usare parole che hanno l'aria di 'riservate'!

venerdì 3 agosto 2007

Developer Abuse

Jacek, un partecipante dell'ESSAP, ha inviato oggi nella mailing list degli alunni della scuola estiva un link divertente ad alcuni filmati presenti su YouTube sull'extreme programming.

Questo mi ha dato modo di rivedere il filmato di una pubblicità di ThoughWorks molto divertente...

giovedì 2 agosto 2007

Open Source Word Processor for MacOS-X

Esistono diverse alternative valide a Microsoft Office in qualunque ambiente.

Il pacchetto più completo è il ben conosciuto OpenOffice (con il suo port NeoOffice), disponibile su qualunque piattaforma. Il principale problema di OO è la pesantezza (anche sul mio MacBook Pro ci mette qualche secondo a partire).  Che dire se dovo modificare qualche documento al volo?

Esistono almeno quattro alternative, due delle quali open source. Le prime due sono Apple Pages, fantastico, ma a pagamento, a Apple TextEditor (l'equivalente del blocco note di windows, solo che supporta DOC e RTF) che è in dotazione con il sistema operativo.

Per quanto riguarda le soluzioni open source esiste l'ottimo AbiWord (sembra che abbia solo un piccolo problema con le icone che vengono visualizzate male nelle barre degli strumenti), disponibile anche su Windows e ovviamente su Linux, e Bean basato sullo stesso motore di Apple TextEditor, quindi è velocissimo, anche se non molto completo.

Per scaricare Bean cliccare qui

Per scaricare AbiWord cliccare qui

Per scaricare NeoOffice cliccare qui 

Scribd

Oggi ho trovato un altro sito nel pieno spirito web 2.0: Scribd

Scribd è un archivio web per documentazione, una sorta di repository di file PDF, Word e simili.

Tutti i documenti sono visualizzabili nel browser (esattamente come accade con YouTube, Flickr o SlideShare) e possono essere scaricati in diversi formati.

L'indirizzo è www.scribd.com

mercoledì 25 luglio 2007

Emacs e Tetris

Su emacs è presente tetris come easter egg (o forse no?).E' sufficente digitare emacs da terminale, premere ESC+X e digitare "tetris" ... Buon divertimento

mercoledì 11 luglio 2007

Remote Pair Programming with Eclipse and XPairtise

My friend Andrea (bimbomix1) has suggested to me to use XPairtise.

What is XPairtise? It's a fantastic eclipse plugin for remote pair programming in a complete XP-style! The plugin concurs to share and modify the same code like a driver (who write the code) or navigator (who suggest the code). A comfortable perspective provide a chat session, a blackboard for notes and sketches, and a little project manager. Like in a true pair programming session, the navigator can't write code (the keyboard is locked by XPairtise) until the driver switch the role with the navigator (for example at the end of Pomodoro...).

Use the plugin with Skype (for talk between pairs) is very cool and useful, but Isn't a real substitution for the real pair programming.

You can get it here

domenica 8 luglio 2007

Trilogie

I produttori di film stanno perdendo la fantasia?

Ogni bel filmetto deve avere come minimo due sequel, e forse tre prequel.Tutto è partito con Guerre Stellari (si Guerre Stellari, non Star Wars, eccheccavolo lo chiamavamo così no?). In questo caso la trilogia era necessaria per raccontare tutta la storia. Poi venne Indiana Jones, tre storie staccate ma più che rispettabili, e Ritorno al Futuro.... e dopo?

A me vengono in mente i due sequel forzati di Matrix (una schifezza), i due sequel dei Pirati dei Caraibi (troppo incasinati e che non hanno nulla a che fare con il primo), e Bourne (il terzo capitolo uscirà il 3 agosto negli States).

Altre trilogie? Spiderman, Terminator, Die Hard, Rambo, Resident Evil, Mission Impossible, Jurassic Park, La storia infinita, The Cube, il Signore degli Anelli, molte delle quali si potevano pure evitare (Rambo? Resident Evil? Cube?... film da teledipendenti :D )

Speriamo che si fermino qui, che non arrivino tutti alle "esalogie" StarWars-like (si... ora si chiama star wars...)... o che non arrivino al decimo e forzato sequel di Star Trek (stanno preparando l'undicesimo)...

Quello che voglio dire è che è raro produrre film con sequel e prequel ben fatti (tipo Star Wars) senza cadere poi nella banalità (Alien la risurrezione e... Alien contro Predator)

lunedì 25 giugno 2007

Essap!

Essap LogoToday was the first day of the European Summer School Of Agile Programming! This is the second edition of the school. All member of the extreme programming user group of varese (like me) participate to school like tutor and assistant. We've collaborated to organize the technical part, like networking, and we've written the first iteration of Joob!, an application for search and find job opportunities. This application (written in Ruby on Rails) should be ended by the essap' students. Let's start with fun, let's start with essap!

giovedì 14 giugno 2007

flickr

Flickr è molto comodo, peccato che sia anche molto lento a volte.Ho appena aperto il mio account e ho caricato qualche foto.

L'indirizzo è http://www.flickr.com/photos/petecocoon

Una caratteristica carina del servizio di photo sharing di Yahoo è l'interfacciamento e l'invio di un post con foto su qualunque tipo di blog direttamente dalla propria pagina Flickr.

lunedì 11 giugno 2007

X11 over ssh

Per connettersi ad un host *nix ed utilizzare programmi che utilizzano X11 è possibile usare il classico client ssh di linux / bsd / mac.

Prima di tutto è necessario avviare il client X11 (su mac è presente sul dvd del sistema operativo).

Quando si avvia il client X11 si avrà a disposizione un terminale.

Ora sarà possibile avviare una sessione remota tramite protocollo SSH.

ssh -X utente@host

una volta inserita la password sarà possibile avviare qualunque applicazione da remoto e visualizzarla sul proprio terminale.

A me è partito l'intero KDE su mac :D

mercoledì 30 maggio 2007

Installare Pidgin 2 (ex. Gaim) su Mac

E' disponibile da qualche tempo il port di Pidgin su MacPort.

Prima è necessario installare MacPort.

Poi basta lanciare

"sudo port install pidgin"

e dopo aver scaricato e compilato qualche libreria ci ritroveremo Gaim (ups.. pidgin) installato.

E' possibile seguire lo stesso metodo per installare molte altre applicazioni open source.

martedì 29 maggio 2007

Luna e saturno

Martedì scorso (22-5) ho tirato fuori il mio telescopio e, dopo averlo spolverato per bene :D, l'ho puntato verso la luna piena per metà.

Il periodo per osservare meglio la luna è proprio questo (peccato per la pioggia), quando la Luna non è piena dato che non si viene "abbagliati" dalla troppa luce.

Intorno alle 21:30 ho intravisto un punto luminoso vicino lato oscurato della luna, ho giocato con la messa a fuoco, ed eccolo li! Saturno nel pieno della sua bellezza! Poco dopo è tramontato dietro la luna per sorgere un ora dopo circa. Una vista magnifica!

Peccato che non abbia ancora l'adattatore per la reflex...

giovedì 24 maggio 2007

Traduzioni fantastiche

Dalla traduzione in italiano di "Foundations of Ajax" ("Ajax la grande guida" in italiano) di Asleson & Shutta parlando del far notare i cambiamenti nella pagina dinamica con un flash giallo:

"Questa caratteristica ha portato alla creazione di funzionalità come la tecnica YFT(Yellow Fade Technique) composta da 37 segnali usata nell'applicazione poster Basecamp di Ajax"...

Intendeva forse l'applicazione "Basecamp" scritta da "37Signals" in Ajax tanto cara a coloro che programmano in Rails? :D

Per il resto il libro è carino, c'è anche una parte molto interessante sul Test Driven Development in JavaScript tramite JsUnit. Da approfondire, dato che il testing delle applicazioni Ajax a volte risulta complesso dal lato client.

sabato 19 maggio 2007

Mocks Aren't Stubs

Nella mailing list dell'XpUg di Varese è apparsa una interessante discussione sull'utilizzo dei mock objects.
Alla fine ne è saltato fuori questo paper presente sul sito di Martin Folwer
Mocks Aren't Stubs

Se siete interessati all'argomento, buona lettura.

lunedì 14 maggio 2007

Gnome & Torrent

Se nella vostra linux box usate Ubuntu 7.04, con Gnome, e volete scaricare più di un file via protocollo Torrent con il tool di default di Gnome, vi sarete accorti che questo non vi sarà possibile a causa dell'errore "98 Address alredy in use".

Questo è causato dal fatto che torrent cerca di usare una porta superiore alla 6881 nel caso questa non sia disponibile. Di default gnome non consente a torrent di usare queste porte.

La soluzione è molto banale:
avviare "Configuration Editor" ("gconf-editor" via shell)
aprire "apps > gnome-btdownload > settings" e modificare la chiave "max_port" portandola a un valore superiore a 6881 (ad esempio 6999).

Riavviate Gnome (è sufficente uscire e rientrare nella sessione).

Ora potete scaricare più file via Torrent.

giovedì 19 aprile 2007

Maledetti callcenter

Situazione: vorrei cambiare gestore adsl
Come posso fare? Siccome non mi sono chiare alcune problematiche relative al mio contratto con il vecchio fornitore vorrei parlare con qualcuno che mi dia delle risposte...

Sia il call center del 155 di libero (uno schifo di call center mal organizzato) che quello di telecom sono digitali, e mi risulta alquanto impossibile parlare con un operatore.

Perchè non trasferiamo un po di personale dall'area commerciale (quelli che ti chiamano negli orari più disparati per attivare linee con chissà quale vantaggio) all'area di assistenza (così potrebbero soddisfare il bisogno di molti di parlare con qualche operatore)?

domenica 15 aprile 2007

In attesa di Leopard

Peccato che l'uscita di Leopard (MacOs X 10.5) sia stata posticipata a ottobre, d'altronde è molto meglio avere un ottimo sistema dopo che un pessimo sistema prima.
Intanto gustatevi lo spot pubblicitario "Think different" doppiato in italiano da Dario Fo.

domenica 1 aprile 2007

Joy

No conceptIeri sera ho assistito al bellissimo concerto di Giovanni Allevi tenutosi al teatro Apollonio di Varese.
L'artista di Ascoli Piceno ha eseguito tutto l'album "Joy" (l'ultimo) e due pezzi di "no concept" ("come sei veramente", utilizzato da Spike Lee per lo spot della BMW, e "qui danza") per un totale di un'ora e venti di concerto indimenticabile.

In molti lo definiscono il "Mozart del 2000". Allevi mescola musica classica a caratteristiche della musica moderna e del Jazz (anche se completamente scritto e composto a tavolino), il tutto rigorosamente a pianoforte.
Chiunque non conosca l'artista, i suoi cd sono in vendita in ogni negozio di dischi.

giovedì 29 marzo 2007

Leopard Screenshot

In un recente post su ThinkSecret sono apparsi diversi screenshot del nuovo MacOs X, la gui, ora con interfaccia simil-iTunes è ancora più raffinata.

Leggi l'articolo 

Widget di traduzione impazzita

Da qualche tempo la mia widget di traduzione su dashboard è impazzita: non risponde correttamente alla selezione delle lingue e sopratutto non traduce.

Per risolvere questo problema è bastato chiudere la widget ed eliminare il file /Users/_NOMEUTENTE_/Library/Preferences/widget-com.apple.widget.translation.plist e riavviare la widget.

Ciao Piero

Spazio (ai) colori

I colori. Che cosa sarebbe la nostra vita senza?

Provate a immaginare un tramonto in scala di grigi, o ancor peggio in bianco e nero: non sarebbe così bello, non vedremmo le sfumature nel cielo. Niente di niente. Solo un mondo grigio!

Ma cosa sono i colori? Nel passato molti pensavano che fossero una proprietà fisica di un materiale, come se ogni cosa avesse una 'vernice' che identificasse il colore di un materiale. Forse ci viene da sorridere a pensare ad una definizione simile, ma è quanto di più preciso ci fosse fino al secolo scorso. Molti pensavano che il colore fosse qualche cosa di paranormale, come dei fantasmi che saltano fuori da un prisma che scompone un raggio di luce (tanto che lo "spettro" dei colori è rimasto nella nostra terminologia).

C'è chi dice che Newton e Goethe fossero in disputa proprio sotto questo aspetto, il primo era convinto che il colore fosse una proprietà della materia, il secondo, con una visione più filosofica, che fosse qualcosa che era nella nostra testa. Ebbene ebbe più ragione Goethe di Newton, ma non completamente.
Ogni corpo emette radiazioni di diverso tipo nella banda EM (elettromagnetica). La banda del visibile è compresa tra una radiazione con ampiezza d'onda compresa tra i 400nm e 700nm. A seconda che la luce emessa abbia una frequenza tendente ai 400nm o ai 700nm si avrà una colorazione tenente al rosso o al blu.

Quindi il colore di un fascio di luce è dato dalla sua frequenza (o meglio dalla somma delle sue frequenze). Parlando invece di oggetti, il suo colore è determinato dalle frequenze assorbite o riflesse dalla sua materia. In realtà è il nostro cervello che da un valore percettivo di "colore" alla luce che entra nel nostro occhio. Quindi il colore è una somma di concetti metafisici (la percezione) e fisici (la frequenza).

Quindi ora sorge un problema: come è possibile rappresentare digitalmente qualche cosa che di per se non esiste? In questo caso la bionica ci viene in aiuto: possiamo imitare quanto già accade in natura, in particolare nell'occhio umano.

Quando un fascio di luce raggiunge la nostra retina, viene scomposto nelle tre componenti principali del colore: il Rosso, il Verde e il Blu. Infatti esistono dei "sensori" chiamati coni che sono "tarati" ognuno per attivarsi a determinate frequenze di luce. Imitando a questo sistema si è arrivati alla rappresentazione RGB (Red, Green, Blue) del colore. Scomponendo nei tre colori primari della sintesi additiva (Rosso, Verde e Blu) è possibile ricavare qualunque colore visibile.

Ovviamente i nostri monitor sono limitati ma sono in grado di rappresentare molto bene una vasta gamma di frequenze: utilizzando 24bit per rappresentare un pixel, scomposto in RGB, è possibile rappresentare (2^8)^3 = 16 777 216 colori.
Possono sembrare tantissimi colori, ma il fatto che si tenti di discretizzare una misura continua, implica sempre un errore dovuto all'approssimazione.

Esistono altri sistemi di rappresentazione dello spazio colore: CMY(K) e HSL

Il sistema CMY si basa sui colori primari nella sintesi sottrattiva, ovvero il Ciano, il Magenta e il Giallo, mentre il sistema HSL non sulla descrizione del tristimolo (le tre frequenze che stimolano i colori), ma su una descrizione di Tonalità (H, Hue), di saturazione (pienezza, Saturation), e Luminosità

sabato 17 marzo 2007

I walk the line

I keep a close watch on this heart of mine
I keep my eyes wide open all the time
I keep the ends out for the tie that binds
Because you're mine, I walk the line

I find it very, very easy to be true
I find myself alone when each day is through
Yes, I'll admit that I'm a fool for you
Because you're mine, I walk the line

As sure as night is dark and day is light
I keep you on my mind both day and night
And happiness I've known proves that it's right
Because you're mine, I walk the line

You've got a way to keep me on your side
You give me cause for love that I can't hide
For you I know I'd even try to turn the tide
Because you're mine, I walk the line

I keep a close watch on this heart of mine
I keep my eyes wide open all the time
I keep the ends out for the tie that binds
Because you're mine, I walk the line

-
Thanks for all... Johnny!
-
Per chi non conoscesse Johnny Cash questa è una delle sue canzoni più famose, sarà perchè ha dato il nome al suo film biografico (da vedere assolutamente!), sarà perchè è proprio una bella canzone.
Ascoltare Johnny Cash vuol dire ascoltare la musica americana pura, molto più pura del suo contemporaneo Elvis. Johnny da risalto alle storie della gente, ai sentimenti e alla vita di tutti i giorni: perchè "Love is a burning thing" ("L'amore brucia l'anima"... che è il titolo del film in italiano)
-

Bellissimo anche il sito dedicato al film: www.walkthelinedvd.com
Ciao Piero

mercoledì 14 marzo 2007

Ripristino Grub tramite live-disto

Spesso succede che per qualche motivo strano (per esempio la re-installazione di windows in un sistema dual-boot) Grub (ovvero il boot loader utilizzato da llnux) venga sovrascritto da altro (il boot loader di windows).

Ripristinare grub è veramente molto semplice: mi occorre una qualunque distribuzione live o un linux boot disk.

Procederò come segue:

1) Avvio una distribuzione live

2) Entro in una shell con i privilegi di root (nel caso di x/k/ubuntu devo usare 'sudo -s' )

3) creo un mount-point per la mia partizione di boot di linux con 'mkdir /media/linuxdistro'

4) monto la partizione di linux da ripristinare nel mount-point appena creato con 'mount -t ext3 /dev/sda1 /media/linuxdistro' sostituendo 'ext3' con il vostro filesystem e 'sda1' con il device della vostra partizione (ad esempio 'hda2' se è la seconda partizione di un disco ide posizionato come master sul primo canale ide)

I passi successivi consistono nel creare un ambiente funzionante utilizzando la vostra partizione di linux.

5) Monto il file system proc all'interno della partizione di linux con 'mount -t proc none /media/linuxdistro/proc'

6) Monto il file system dei device all'interno della partizione di linux con 'mount -o bind /dev /media/linuxdistro/dev'

7) Ora posso 'isolare' ed entrare nell'ambiente preparato con 'chroot /media/linuxdistro /bin/bash'

Ora posso utilizzare linux esattamente come se avessi avviato la macchina con la distribuzione installata sul mio pc, quindi posso re-installare grub

8) in ubuntu 'update-grub' in altre distro è 'grub-update' oppure è necessario entrare in grub (digitando 'grub' da shell ed eseguire l'installazione a mano)
9) riavvio la macchina con 'shutdown -r now' e avvio linux tramite grub

Spero di esservi stato utile

Ciao Piero

lunedì 5 marzo 2007

Mighty mouse BT (wireless) su linux

Far funzionare il Mighty Mouse bluetooth su linux è semplicissimo:
da linea di comando

hidd --connect xx:xx:xx:xx:xx:xx

con xx:xx:xx:xx:xx:xx uguale al mac address del vostro mouse

Ciao Piero

Artista di famiglia

Monumento alla fraternità dei popoliIl 31 marzo si inaugurerà la mostra dedicata a mio Zio Adriano Bozzolo, scultore famoso in Italia e in Europa, soprattutto in Svizzera, dove le sue opere sono molto apprezzate.

La mostra si terrà al museo del castello di Masnago a Varese, dal 31 marzo al 27 maggio.

Per informazioni

Comune di Varese - Castello di Masnago

Adriano Bozzolo (Sito internet)

Caro zio, avessi un minimo della tua creatività!

Ciao Piero

lunedì 26 febbraio 2007

Pulizia Mighty Mouse

Dopo due mesi di utilizzo la sferetta per lo scrolling orizzontale e verticale del mio comodissimo Apple Mighty Mouse ha incominciato a non rispondere... sembra di essere tornati ai tempi dei mouse meccanici, quando non rispondevano al movimento. Cosa si faceva in quei casi? Si smontava il mouse e si pulivano le rotelline meccaniche interne al mouse.

In questo caso la pulizia è risultata semplicissima: ho girato il mouse, come suggerito sul sito di Apple, e ho fatto girare la rotellina per due minuti dapprima su un panno, poi, come suggerito su maccity, su un foglio di carta.

Il mouse è come nuovo...

Ciao Piero

giovedì 22 febbraio 2007

MacBook Pro - dopo due mesi

E' vero forse i computer Apple costano un po di più dei PC, ma si vive su un altro pianeta.
Nessun crash dovuto all'hardware o software (tranne un kernel panic... guarda caso, non per girare il coltello nella ferita, quando ho avviato windows emulato sotto parallels).
Il portatile è silenziosissimo, mi sono accorto dell'esistenza delle ventole (invisibili perchè poste dietro l'intercapedine tra le cerniere del monitor e la base) solo dopo un mese di lavoro!
Tutto leggerissimo in confronto al mio vecchio HP Pavilion zv5330ea, che se messi a paragone chiusi, il MacBookPro risulta spesso e pesante quasi un terzo.
Ottima la durata della batteria: due ore e mezza di lavoro, oppure più di tre ore a "riposo".
Tanto software a disposizione, e una facilità di utilizzo mai vista su un pc.
Il grosso vantaggio è che si ha a disposizione un sistema UNIX-like, quindi è possibile utilizzare la maggior parte dei software scritti per linux o simili.

Il prezzo maggiore è più che giustificato dalla semplicità, dalla qualità dei materiali, dal fatto che ogni piccola cosa è studiata (prendete ad esempio solo l'alimentatore, che oltre che essere bello da vedere è pure funzionale con l'attacco magnetico per evitare rotture di cavi o cadute di pc, cavo con spina intercambiabile e prolunga già nella confezione), e in ultimo dal fatto che se avete un pc chiamerete diverse volte un tecnico a farvelo sistemare... e i dindi partono, mentre con un mac.... bhe dite addio ai tecnici dei pc! (tnx to Max per l'idea)


Ciao Piero

Tent'anni di Apple :-)

mercoledì 21 febbraio 2007

Conferenze XP - Estate piena!

Estate tempo di vacanze? Non per tutti...
Dopo aver girato l'europa l'XP conference torna in Italia a Como. Come XPUG stiamo preparando un poster da esporre alla conferenza (ammesso che venga accettato).
XP2007 è una delle più importanti conferenze di extreme programming a livello internazionale e chiunque sarà presente potrà imparare molto dagli altri partecipanti e relatori.

Altra conferenza molto importante è l'Essap, che giunge alla sua seconda edizione, a villa Toepliz a Varese.

Essendo molto vicine sia nello spazio (Varese - Como distano una trentina di chilometri), che nel tempo (XP2007 18-22 Giugno, Essap 25-29 giugno) per molti sarà possibile partecipare ad entrambe le conferenze.

I siti con le scadenze alle iscrizioni e i dettagli sono
http://www.xp2007.org/
http://essap.dicom.uninsubria.it/

Ciao Piero

martedì 20 febbraio 2007

iTunes e linux

Se voglio ascoltare la musica archiviata sul mio server linux di casa attraverso iTunes su mac (ma anche su winzoz) senza spostare file via Samba o NSF posso utilizzare il protocollo proprietario di Apple DAAP (Digital Audio Access Protocol) che normalmente gira su ogni Mac.

Sotto linux esiste un deamon chiamato mt-daap (Multi Threaded DAAP) implementato sotto licenza GPL che può essere scaricato e installato da sourceforge.

Una volta installato (vengono richieste solo alcune librerie) si può modificare il file /etc/mt-daapd.conf indicando la root directory dei nostri file mp3 / m4a / mp4, e lanciare il server con "/etc/init.d/mt-daapd start"

In pochi passaggi posso ascoltarmi la mia musica sul mio Mac senza copiare nulla...

Troppo comodo :-)

Apple rulez!

Ciao Piero

lunedì 19 febbraio 2007

Chi ha detto che la matematica non è bella?

Che cos'è la bellezza? Possiamo dire che un quadro è bello, che un paesaggio è stupendo e sebbene questa sia una valutazione soggettiva è semplice spiegare ad un'altra persona perchè una tal cosa sia bella o un'altra non lo sia. Per esempio se una persona non capisce nulla di arte non potrà forse apprezzare completamente un affresco o un opera lirica, ma con il tempo e l'approfondimento nel campo comincerà ad apprezzare sempre più cose che alla prima impressione non riescono a suscitare ammirazione o interesse.
Stassa cosa si può dire di materie astratte come la matematica o forme non completamente conosciute di algebra. Siamo abituati a pensare alla matematica come una rottura di scatole da studiare a memoria alle superiori, ma in effetti non ci rendiamo conto che l'applichiamo in cose tutti i giorni. Proviamo a pensare solo a come sciegliamo una strada: devo andare da casa mia a casa di un amico lontano, quali sono i fattori per scegliere una strada rispetto ad un'altra?
Prima di tutto proviamo a definire la distanza tra due punti (partenza e destinazione). Ci hanno sempre fatto credere che la distanza tra due punti sia una linea retta che li collega (o l'ipotenusa di un triangolo retto posto su un sistema di assi cartesiani), ma è realmente così? Analizziamo i fatti. Proviamo ad andare da Varese a Como. Sicuramente la distanza coperta dalla vostra auto non sarà quella di una linea retta tra due punti. Tutt'altro! Ecco che la definizione a cui siamo abbituati di distanza non va più bene, dobbiamo aggiungere qualche cosa. Allora la distanza è la somma tra le distanze (nel senso conosciuto del termine) parziali delle strade tra un incrocio e l'altro. Neanche in questo la definizione può andare bene. Le strade non sono dritte. Una volta che abbiamo calcolato con esattezza le distanze parziali di ogni tratto di strada, tenendo conto delle caratteristiche topografiche del terreno (salite, curve discese... ecc), possiamo sapere quanto il nostro cammino sarà lungo. In questo caso abbiamo pesato ogni strada. Ma come abbiamo fatto a sapere se girare a destra o a sinistra? Qui inizia il divertimento.

Possiamo immaginare una mappa come a un grafo. Un grafo è un insieme di punti (vertici, nodi) nello spazio collegati tra di loro attraverso curve o linee (archi o lati). Se noi diamo un peso ad ogni arco possiamo applicare un algoritmo per calcolare i cammini minimi tra un punto e un altro. Uno di questi, forse il più famoso (o meglio quello che conosco :-) ) è l'algoritmo di Dijkstra. Applicando un algoritmo simile possiamo sapere quale sia la strada più corta tra un punto e un altro.

Non so se il nostro cervello lavori così, ma di certo eseguirà calcoli complessi (ragionamenti) simili, senza che noi ce ne accorgiamo.

Quando ogni giorno facciamo qualche cosa proviamo a pensare quella cosa in termini matematici, incominceremo a pensare più velocemente in cose semplici, vedremo la matematica come qualcosa di pratico e non solo qualcosa carta-penna-professore-verifica, incominceremo a capire la lingua con cui è stato scritto l'universo e a vedere le bellezze intrinseche della matematica.
Ora non mi rimane che superare gli esami di matematica e di algoritmi...  ricordandomi quanto ho scritto :-)
Referenze e approfondimenti

http://en.wikipedia.org/wiki/Shortest_path_problem - Algoritmo di cammino minimo (Inglese)
http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm - Algoritmo di cammino minimo di Dijkstra (Inglese)
http://it.wikipedia.org/wiki/Algoritmo_di_Dijkstra - Algoritmo di cammino minimo di Dijkstra

http://en.wikipedia.org/wiki/Distance - Distanza nel senso classico del termine e non (Inglese)
http://it.wikipedia.org/wiki/Grafo - Che cos'è un grafo

giovedì 15 febbraio 2007

Have you ever seen the rain?

Someone told me long ago
There's a calm before the storm,
I know!
It's been comin' for sometime.
When it's over so they say
It'll rain on a sunny day,
I know!
Shining down like water!

I wanna know: have you ever seen the rain?
I wanna know: have you ever seen the rain
Comin' down on a sunny day

Yesterday and days before
Sun is cold and rain is hot,
I know!
Been that way for all my time.
Till forever on it goes
Thru the circle fast and slow,
I know
It can't stop I wonder!

I wanna know, have you ever seen the rain?
I wanna know, have you ever seen the rain
Comin' down on a sunny day?

by Creedence Clearwater Revival

mercoledì 7 febbraio 2007

Linux caro linux

Trovo incredibile che tutto quel pò pò di AIGLX e Beryl (l'interfaccia 3D di linux) giri senza problemi sul mio Athlon XP 1800+ con 256 mb di ram e una ATI Radeon 7000 come scheda grafica con 32 mb di memoria video. Contrariamente il nuovo windows vista per funzionare richiede un bel pachidermico pc di ultima generazione...

Un problema di mal programmazione o un modo per mungere il mercato?

Bho

Ciao Piero

venerdì 2 febbraio 2007

Come complicarsi la vita

Chi non ha mai provato ad installare un'applicazione su mac non potrà capire...

Perchè Microsoft deve complicare sempre le cose?

Guida all'installazione di messenger su mac

Al massimo bastava dire di scaricare il file, fare doppio click sul file scaricato e copiare l'applicazione nella cartella desiderata...

Vabbhe la semplicità non è proprio di casa, anche quando si tratta di aggiornamenti di sistemi operativi:

Per l'aggiornamento di windows xp è necessario scegliere tra almeno 4 differenti versioni, per mac? una sola versione e senza scleri...
ciao Piero

Linguaggi Web Oriented, il migliore?

Un interessante articolo sull'argomento è stato pubblicato su CmsWire.com lo scorso novembre. L'articolo metteva a confronto tre linguaggi di programmazione / framework per lo sviluppo di applicazioni Web: Java, PHP e Ruby On Rails.

Nell'articolo venivano fatte delle valutazioni (alquanto soggettive, dato che non si riportano i dati, ma apparentemente fedeli alla realtà) su fattori importanti al fine di individuare quale fosse il migliore. Questi fattori sono la scalabilità, la velocità di sviluppo, gli strumenti di sviluppo e la manutenzione.

Ognuno dei linguaggi ha un proprio cavallo di battaglia: PHP è molto scalabile (ovviamente dipende molto da come è stato scritto il codice), JAVA ha ottimi strumenti di sviluppo, e Rails si distingue per la sua velocità di sviluppo e per la sua manutenzione.

Ovviamente la conclusione che si può trarre è che la scelta del linguaggio dipende dal dominio del problema, da notare però che Rails prende il massimo dei voti su due parametri di giudizio su quatto e gli linguaggi arrivano al massimo a uno su quattro :-)

Leggi l'articolo intero.

Ciao Piero

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