domenica, gennaio 30, 2011

Tutti pazzi per.. la roccia!

...ho visto cose che voi "normali" non potreste immaginarvi: amici "in fiamme" ai bastioni delle placche di Oriana, pile frontali balenare nel buio...

Ma peeeeerché?

Perché chi si avvicina alla roccia impazzisce completamente? Questa è una bella domanda, notare che mentre ve la scrivo sono appeso allo stipite della porta dello studio.. sapete com'è.. bisogna tenersi in allenamento per "alzare il grado" (alcolico)!

Così, mentre pensavo ad una mia amica che invece gli stipiti delle porte li usa più "razionalmente".. per allenarsi con la progressione laterale, mi sono chiesto: "Cosa c'è di magico nell'arrampicata che fa impazzire tutti?".. saranno i posti splendidi, la sfida con sé stessi e la propria mente, voglia di sfidare le proprie paure mantenendo i nervi saldi anche quando l'ultimo rinvio sta a 8m di distanza, sarà la voglia di migliorarsi, di mostrare "cosa si sa fare"... o forse sarà la merenda valdostana ad attirarci tutti? (Non fatico a crederci.. ho già l'acquolina in bocca.. gnam gnam!!!)

Siamo a metà via, sono già le 17 (come al solito torneremo con le frontali accese), fa freddo, rischiamo di sfracellarci contro qualche cengia accuminata lasciando tra gli alpinisti l'unico tipo di traccia che NON vorremmo lasciare, il corpo deve arrivare sempre al limite delle sue capacità (vogliamo migliorare o no?), non abbiamo pranzato, ci mettiamo in situazioni pericolose di nostra volontà.. MA PEEEEEEEEEEEERCHE'?

Insisto.. la "merenda valdostana" è la risposta: una giornata intensa.. tutti assieme, affrontando delle piccole sfide.. in compagnia, ridendo, scherzando, sclerando, soffrendo.. eppur vivendo fino all'ultimo respiro ogni attimo tra amici in un posto splendido. Si respira serenità, amicizia, correttezza, profonda fiducia reciproca.. affidiamo le nostre vite l'un l'altro con fiducia...
Tienimi tesooo.. tienimiii.. posso? Mi lascio? Sicurooo? Guarda che sto per calarmi!
E dopo aver affrontato assieme mille e uno pericoli.. vinello rosso e fetta di salame alla rozza, all'alpina, perché non c'è nulla di meglio se non stare con degli amici, stanchi ma contenti, a condividere anche gli ultimi istanti (magari del tramonto) in mezzo ad una montagna, lontani da tutto...

...nel nostro mondo!

domenica, maggio 03, 2009

Disegno? Una questione di allenamento!

Saper disegnare sicuramente richiede capacità e talento.. io non penso di averli, però ho scoperto l'acqua calda: le capacità si costruiscono con l'allenamento, il talento può essere innato.. ma può anche essere costruito con l'esperienza.
Non ci credete? Bé non sono mai stato bravo a disegnare, nonostante io scolpissi e dipingessi con l'areografo (e qualche volta sulle magliette)...

E ADESSO???

Non so disegnare nemmeno ora, però comincio a stendere la grafite sulla carta in maniera quasi accettabile per un principiante. Un esempio? Eccolo:

mercoledì, marzo 04, 2009

E se dovessi programmare in C ANSI.. ma OO?

Oramai é sempre più raro trovarsi in questa situazione esistendo svariate soluzioni sia open che commerciali per lo sviluppo e la compilazione di codice C++ anche per architetture embedded. Ogni tanto però capita ancora di avere questa esigenza.. in quei casi?

La risposta viene da molto lontano nel tempo, molti di voi avranno sentito parlare del documento OOC, in cui si descrivono le tecniche per programmare in uno stile OO utilizzando l'ANSI C. Questo documento esiste da molti anni.. e quando lo scoprii (nel 2002 se non ricordo male) mi entusiasmò! In questi giorni però la stessa domanda mi é stata riproposta da un curioso molto in gamba.. e perché non fornirla a tutti sul blog? Ma di più.. dato che non ho mai nulla da fare (ironico ovviamente), perché non scrivere un esempio semplice semplice di tool costruito con le macro di preprocessore? E' un giocattolino senza esplicito supporto per l'ereditarietà, il polimorfismo e quant'altro.. però é simpatico e chi vuole può usarlo/estenderlo per gioco. Eccovelo in sole 50 righe di macro con un esempio semplice semplice.

Vediamo un esempio di dichiarazione di classe:

// La classe:
CLASS_BEGIN(CheckedInt)
ATTRIBUTE(CheckedInt,int,version);
METHOD(CheckedInt,void,setValue,unsigned long val);
METHOD(CheckedInt,unsigned long,getValue);
STATIC_METHOD(CheckedInt,unsigned long,max_val);
CLASS_END(CheckedInt)

// La struttura rappresentante un'istanza:
CLASS_INSTANCE_BEGIN(CheckedInt)
ATTRIBUTE(CheckedInt,unsigned long,value);
ATTRIBUTE(CheckedInt,unsigned long,not_value);
CLASS_INSTANCE_END(CheckedInt)

// Definizione di costruttore e distruttore:
CLASS_ALLOCATORS(CheckedInt,unsigned long val);
Lineare no? E l'implementazione? Eccola:

// Metodo d'istanza:
METHOD_IMPL_BEGIN(CheckedInt,void,setValue,unsigned long val)
this->value = val;
this->not_value = ~val;
METHOD_IMPL_END(CheckedInt)

// Caso statico:
STATIC_METHOD_IMPL_BEGIN(CheckedInt,unsigned long,max_val)
return 0xFFFFFFFE;
STATIC_METHOD_IMPL_END(CheckedInt)

//...

// Inizializzazione della struttura statica:
CLASS_INIT( CheckedInt,1,
CheckedInt_setValue,
CheckedInt_getValue,
CheckedInt_max_val);

// Costruttore:
CONSTRUCTOR_BEGIN(CheckedInt,unsigned long val)
this->value = val;
this->not_value = ~val;
CONSTRUCTOR_END(CheckedInt)

// Distruttore:
DESTRUCTOR_BEGIN(CheckedInt)
// Rilascio risorse.
DESTRUCTOR_END(CheckedInt)
Usiamo la nostra classe ora!

// Istanzio:
CheckedInt *ckdInt = CheckedInt_new(10);

// Chiamo un po:
printf("A checked value: %d\n", CALL(ckdInt,getValue));
CALL(ckdInt,setValue,42);
printf("A checked value: %d\n", CALL(ckdInt,getValue));

// Accedo agli attributi direttamente:
printf("I'm a bad boy! ;)\n");
ckdInt->not_value = 0;
printf("A checked value: %d\n", CALL(ckdInt,getValue));

// Uso il distruttore:
CheckedInt_free(ckdInt);
Ok, probabilmente molti di voi diranno "Tra C++, Java, C#, cicici e tututu sicuramente questo non mi serve!", sono perfettamente d'accordo con voi... ma ogni sfizio è sfizio!!! ;)

sabato, novembre 29, 2008

C#: Perdita di eleganza?

La prima volta che incontrai sulla mia strada il linguaggio C# fu nel 2003, era ancora un linguaggino molto molto MOLTO Java-style, quasi clone, con alcune features in più come boxing e unboxing, property, delegate, eventi e qualcosina d'altro.

Oggi, alla release 3.5 del .NET framework, assistiamo ad una evoluzione del linguaggio a dir poco sconvolgente! Lo dico in senso positivo da un certo punto di vista, in senso negativo da un altro:

Lati positivi dell'evoluzione del linguaggio C#
  1. Aggiunte features che permettono di modellare il software in maniera più flessibile, vedasi generics con constraints;
  2. Aggiunte features che semplificano la realizzazione di pattern comuni in maniera meno verbosa, vedasi iteratori e delegate.. anche se già dalla prima versione;
  3. Aggiunti strumenti per la cooperazione tra sviluppatori, vedasi classi e metodi parziali.
Lati negativi dell'evoluzione del linguaggio C#
  1. Metodi estesi, non hanno ancora un corrispettivo nell'esperienza comune (pattern che li vedano come strumento da utilizzare realmente);
  2. Metodi partial: si tratta in fondo di metodi virtual non puri ma senza codice (solo più efficienti.. ma i compilatori d'oggi risolvono anche quel problema!);
  3. generics: ancora problemi con i vincoli, da aggiungere features in questo caso:
    class Classe where T: operator > {...}
Insomma.. butto il sassolino: trovo che l'entropia di C# stia aumentando, portando ai problemi di utilizzo di ADA e Haskel! Voi che ne dite?

mercoledì, novembre 12, 2008

Nasce OpenTVF

Ragazzi.. nasce OGGI OpenTVF su sourceforge.. andate a dare un occhio! ;) Se qualcuno è interessato a collaborare con lo sviluppo di OpenTVF... é sempre ben accetto! :D

A BREVE... metterò su sourceforge anche altri progetti che per troppo tempo ho tenuto nel cassetto.. se poi qualche interessato mi darà una mano a renderli qualcosa di più appetibile per l'utente finale.. MEGLIO!

A prestisismo.. HAPPY CODING!!! ;)

mercoledì, novembre 05, 2008

Drago Magnus

Come avrete notato la DeA ha buttato fuori una quintalata di raccolte/enciclopedie/corsi/ecc ecc in fascicoli a partie da quest'estate; tra le tante ce n'é una intitolatea semplicemente "Draghi" che propone delle miniature, a detta loro da collezionare e basta.. ma io trovo che siano più divertenti da dipingere! Voi che ne dite? ;)

Vi prometto che la metterò anche su Picasa così che sia scaricabile in dimensioni originali.. solo che prima vorrei scattare qualche foto un po' più "ambientalizzata" e contestualizzata, con altre miniature (che ho già dipinto) in maniera da simulare una piccola bataglia "nani VS drago magnus".

P.S.: Chi di voi si ricorda chi è il drago magnus? Indizio: anche se nella foto non si vede, lo scudo l'ho dipinto di bianco con una croce rossa! ;)

mercoledì, ottobre 22, 2008

Diamante condannato

Diamante condannato


Una preziosa pietra,
rara tra coproliti,
risplende affannosa
nell’olimpo tra miti.

Non solo per natura
le doti son innate,
elogio di bravura
per sfide affrontate.

Diamante condannato,
solitario viaggio,
sogno decapitato
d’unione col raggio.

Onnipotente,
un dio “fato” eleva valorosi
che esternano spontaneamente.