Cerca nel blog

Loading

29 agosto 2008

Nuovo entrato


Buon giorno

Ragazzi oggi sono stato ufficialmente invitato a scrivere dei post (questo e il 1°)

Vi racconto un pò di me, io sono Fhandy (nickname), qualcuno di voi mi conosce gia, ho conosciuto l'Ing Frisigo (anche se già ci conoscevamo) e quando mi ha installato INTERNET. E lui di conseguenza mi ha fatto conoscere il blog, con i suoi (blogghisti).... (TOTO, TATA, THE REAL BOSS, SARA, lo stesso ING)....

il termine (Blogghisti) non esiste... pero fate finta di conoscerlo...

Per ora vi ringrazio,
quando volete ci sentiamo

Ciao a tutto il blog

23 agosto 2008

Vacanze finalmente

Domani e' un giorno da bollino perlomeno rosso sull'autostrade d'Italia a causa del primo grande contro-esodo, e noi, come al solito in contro-tendenza, partiremo domani per la nostra settimana di villeggiatura marinara.

Ho fatto il pieno di libri: ieri ho praticamento svaligiato la biblioteca, cosi' sapro' cosa fare sdraiato sul lettino in spiaggia. Ho persino messo un risponditore automatico alle email con un simpatico messaggio (provate se non ci credete!) perche', ho intenzione di (diciamo che sono stato caldamente invitato a) lasciare il mio povero portatile tutto nero a casa, per non cadere nella tentazione di usarlo nemmeno per un minuto. Io confido che sulla riviera Romagnola ci siano degli efficienti internet cafe, almeno per dare un'occhiata alla posta e magari lasciare un saluto a voi amici del blog!

Anche a voi, buone vacanze!

sizeof( struct ) fails? No but...

Many of you asked me why the interesting C/C++/ROOT lessons suddenly stopped, the answer is that I had to focus on so many other duties that I couldn't find a single minute to spare, sorry, to invest in spreading all around a bit of knowledge about my favorite programming language.

But here I am back again to tell you a funny thing I've just discovered about the behavior of compilers when allocating memory space for unions, structs and classes. Let me introduce you my real life example:

I have to read a binary file that is organized in big blocks each of them is divided (as often happens) in three pieces: a header, a data block and a final trailer. In the header several information are contained and of utmost importance the size of the data block that is variable. A proper reading of the trailer is assuring that the reading is done in the correct way. It seems so simple that I decided to implement it right away in the most straightforward way. So, I prepare a C struct containing all the fields in the header block and start looping on the input file, but I got immediately a problem reading the first trailer. Why?

To better understand the problem, I chopped down the program in several pieces and surprisingly enough I discovered that the issue was related to a strange behavior of the sizeof() function when applied to my header struct. Here below the example:

struct header_struct {

   int   first;
   int   second;
   short third;

};

Intuitively I would have said that the sizeof(header_struct) should be the sum of twice the sizeof(int) and the sizeof(short), that on my 32 bit computer is 2 * 4 + 2 = 10. But, if you don't trust me, try to compile the following code to see what happens:

#include <iostream>
#include <cassert>

using namespace std;

struct header_struct {

   int first;
   int second;
   short third;

};

int main() {

   // print out some sizeof
   cout << "Size of int " << sizeof( int ) << endl
        << "Size of short " << sizeof( short ) << endl
        << "Size of header_struct " << sizeof( header_struct ) << endl;

   // assert the expected size
   assert( sizeof( header_struct ) == 2 * sizeof( int ) + sizeof( short ));

   return 0;
}




First of all you will notice that the size of header_struct is 12 bytes and not 10 as expected and moreover the assertion is failing. But why? Is sizeof failing?

The reason is quite simple. The effective size of our structure is 10 bytes that unfortunately is not an integer multiple of 4 ( == 32 bits) that is the atomic access of the memory on a standard 32 bit computer. Since some operating systems / platforms don't allow memory accesses not occurring at 32-bit aligned position, the compiler is padding the user defined structure with empty holes in order to have each and every struct member aligned with a 32-bit word in the memory.

In order to reduce to the minimum possible the memory waste, the user should try to order the structure data member from the largest to the smaller, so that no holes in between members are needed, but an empty hole at the end my be required anyway. This is particularly important when the compiler has to allocate the memory for a consecutive set of structures (i.e. an array of header_struct).

While this packing is making the operating system life easier, the user life may be by far more complicated. Mainly because it's not always possible to have a struct size properly aligned and, in some cases, the structure is defined by somebody else who didn't think/know about packing. In this case the user can ask the compiler not to pack the structure and try to have not aligned access to the memory, to do so, one has to add the following single line of code:

#pragma pack(1)

This instruction is forcing the compiler to think that the operating system can perform access to the memory aligned every byte, making possible any kind of access. Then it is user responsibility to verify if his own platform / operating system is well behaving or not!


22 agosto 2008

Viaggio al centro della terra

Titolo: Viaggio al centrol della terra
Autore:
Verne, Jules
Ambientazione:
Dall'Islanda alla Sicilia passando dal centro della terra, nel prima meta' del 1800.
Giudizio:
Buono

Commento: Nessuno puo' negare la bellezza di un classico e questo e' sicuramente tra i migliori.

(ATTENZIONE: nel seguito viene rivelata parte della trama)

Finalmente un classico, e non uno a caso! In fondo sono un uomo di scienza da sempre affascinato a quei segreti che la scienza ancora non riesce a spiegare e che comunemente chiamiamo fantascienza. Jules Verne e' proprio come me, anzi decisamente meglio visto che in un certo senso prevedeva con decenni di anticipo cosa l'uomo avrebbe fatto nel futuro.

Viaggio al centro della terra e' un classico che molti di noi hanno letto da ragazzini alle medie o al piu' alle superiori come dimostrato dal fatto che nella mia biblioteca e' classificato come appartenente alla categoria Narrativa per ragazzi, quando io l'avrei classificato: Evergreen per tutti. C'e' da aggiungere che la traduzione che ho appena letto e' stata scritta con un italiano dal sapore antico, che lo rende ancora piu' classico di quello che gia' e'.

Veniamo brevemente alla trama, visto che e' arcinota. Il libro e' un racconto in prima persona del giovane Axel, nipote di un illustre geologo tedesco di Amburgo. Lo zio professore viene in possesso di un antico manoscritto di Arne Saknussemm, un antico alchimista (inventato) che dice di aver trovato la via per raggiungere il centro del nostro pianeta, di aver percorso quel sentiero e di avervi fatto ritorno sano e salvo. Ovviamente questo e' uno stimolo irrefrenabile per lo scienziato tedesco che immediatamente prepara una spedizione per le desolate terre d'Islanda dove il percorso ha inizio. Pure se di malavoglia, anche Axel e' costretto a prendere parte alla missione insieme ad una guida Islandese, di nome Hans, fedele accompagnatore di mille disavventure.

Il viaggio e' molto articolato, pieno di peripezie, ma una serie estremamente fortunata di eventi fa si che nulla di veramente pericoloso possa davvero capitare ai tre esploratori. Nel sottosuolo fanno scoperte inimmaginabili, il cui culmine e' nella sterminata caverna che contiene un mare dalle dimensioni del mediterraneo e popolato da creature ritenute ormai estinte da millenni. Insomma un mondo antico all'interno del nostro mondo.

L'irrefrenabile curiosita' del professore vengono pero' arrestate da un ammasso di granito che sembra sbarrare il sentiero verso la loro meta finale. Nel tentativo di aprirsi un passaggio, fanno esplodere una carica di dinamite che pero' ha il solo effetto di causare una eruzione vulcanica che li trascina dalle viscere della terra fino alle ridenti spiagge dell'isola di Stromboli in Sicilia, dove finalmente riemergono alla luce del sole.

Stevia, go green!

Mercoledì 20 agosto, l’Office fédéral de la santé svizzero ha autorizzato la start up di Friburgo Storm a utilizzare, nelle sue bevande sportive, la stevia come edulcorante. Usata da tempo in America del Sud e Asia, questa piantina garantisce un potere edulcorante circa 300 volte maggiore dello zucchero, non fa venire la carie, è assimilabile dai diabetici e non contiene calorie (e non è sicuramente cancerogena, come invece si sospetta dei dolcificanti a base d'aspartame e robe simili). In Europa il suo utilizzo, nonostante auspicato da numerosi gruppi di diverso orientamento, è da sempre vietato senza apparenti ragioni.
Ma forse, ora, dopo questa decisione, qualcosa si puo' muovere. Anche in USA alcune compagnie stanno spingendo in questa direzione (il mercato americano del dolcificante non-zuccheroso vale 935 milioni di dollari), ma l'FDA non ha ancora dato segnali di aperture...

21 agosto 2008

Alta fedeltà


Titolo: Alta fedeltà
Autore: Hornby, Nick
Ambientazione: Camden, Londra, UK
Giudizio: Ottimo

Commento: erano anni che lo volevo leggere, tante volte ero stato lì lì per comprarlo, ma alla fine avevo sempre optato per altri titoli. Ma adesso non potevo più aspettare: è un libro da leggere nel fiore dei propri trent'anni, quando ci si può ancora immedesimare, se non in tutto, almeno in alcuni aspetti del protagonista, un trentacinquenne patito per la musica, meglio se indipendente e fuori dal main stream, che cerca di sbarcare il lunario gestendo un negozio di dischi per fanatici come lui e che viene improvvisamente lasciato dalla fidanzata.
Non è la prima rottura (e neanche la più scottante, come viene scientificamente provato nelle prime pagine del libro), ma a quest'età le domande che un simile evento scatena sono più pressanti, i pensieri più gravi, i sentimenti più profondi. Insomma, da un lato bisogna crescere, dall'altro bisogna rimanere sé stessi senza cedere a pressioni esterne. Insomma, bisogna decidersi a vivere!
Una piccola bibbia del moderno rapporto tra uomo e donna, tra banalità non sempre scontate e dimostrazioni quasi matematiche del perché di certe passioni e certi sentimenti.
Credo si possa dire che c'è pure il lieto fine, anche se in realtà il finale è solo uno dei tanti modi in cui possono andare le cose, forse neanche il più bello, sicuramente non il più brutto.

E io che l'ho letto appena dopo essere stato mollato, beh, l'ho trovato quasi consolatorio! :)

Prezzi carburanti in Svizzera (21 Agosto 08)

(Clicca su Aggiornamento prezzi carburanti per un aggiornamento sui prezzi)

Era da parecchio tempo ormai che non vi riportavo i prezzi dei carburanti oltre confine e finalmente ho una buona notizia da darvi: i prezzi dei carburanti stanno effettivamente scendendo, come d'altronde ha fatto il costo del petrolio greggio.

Ma veniamo alla famosa tabellina del risparmio. Per l'Italia mi riferisco ad un distributore Esso, praticamente incollato a casa mia, mentre per la Svizzera si tratta del distributore Shell appena oltre confine a Pedrinate.














In Italia In Svizzera

Benzina verde al litro € 1.469 CHF 1.929 = € 1.192
Gasolio al litro € 1.449 CHF 2.179 = € 1.347



In tanto colgo l'occasione per ringraziare pubblicamente alcuni dei nostri lettori, in particolare Roberto e Giuliano, per i loro aggiornamenti in tempo reale in altre zone di confine.