Macros using do{}while(0);

Posted by on mai 04, 2007
Fără categorie / 3 Comments

If you ever had the chance to look in the Linux kernel sources, you might have seen macros defined like this:

#define foo(params) \
do{ \
//instructions \
}while(0)

This basicly means that the code is executed exactly once, so the first idea is that do{}while(0); is useless.
In fact, there are a number of reasons for writing the macros this way:

You can find more informations about this in the Kernelnewbies FAQ.

Why Java sends the parameters by value

Posted by on mai 02, 2007
Fără categorie / 1 Comment

Some students learn that parameter passing in Java is done by reference. In fact, Java only sends parameters by value, and those parameters are either primitive types or references, never actual objects. If you define a variable in Java which is not in a primitive type, you actually define a reference. So, when you write
Object a = new Object();
what happens is that a is a reference and its value is actually the address of the heap area containing the object.

Now, let’s say you have something like:

void aFunction(Object b)
{
b = "blah";
}
....................................................
Object a = new Object();//we define a as a new object
aFunction(a);//we call the function
System.out.println(a.toString());//NOT "blah"

What happens here is that the function aFunction receives a as an actual parameter, it copies the parameter’s value (which is an address, NOT the object you created with new) and then modifies the copy. Of course, a still has the unchanged value when aFunction returns.

Some people argue that this is passing by reference, because the object that a points to can be changed. This is true, however, as we’ve seen, the object is not passed as a parameter.

You can find a formal analysis of this subject here.

Zero-extent array members

Posted by on mai 01, 2007
Fără categorie / No Comments

Some compilers, such as GCC or IBM’s compiler have a C extension that allows for a zero-extent array members of a structure to be declared:

struct inode{
//other members
char data[0];
};

They are very useful if you have a structure for a variable-length object. Until they are allocated the zero-extent members will not take up any memmory. When you have to allocate memory for such a structure, you can do it this way:

struct inode *ind = (struct inode*) malloc(sizeof(struct inode) + size_of_the_array);

You have to keep in mind that this is a language extension. The C99 standard only allows flexible array members, which are defined as

char array[];

(without the 0) and behave somewhat differently. You can find out more about the subject in the GCC Manual.

New blog – Coder Tricks

Posted by on mai 01, 2007
Fără categorie / No Comments

With the help of some colleagues, I just launched a new blog. It’s called Coder Tricks and it will contain programming tricks that the teachers don’t usually bother to tell you in programming courses. Hope you like it!

If you wish to offer any kind of feedback, you’re more than welcomed to contact us at codertricks@strainu.ro.

Yet another contest

Posted by on aprilie 28, 2007
Fără categorie / No Comments

This time from Worse than failure (formerly known as The daily WTF). It’s called the Olympiad of Misguided Geeks (OMGWTF), and it has a very interesting concept to say the least. The jury is pretty impressive too.

Via Hardcode. I guess they’ll have two Andrei’s in the contest, huh? 🙂

Programming pays!…

Posted by on aprilie 23, 2007
Fără categorie / No Comments

… even in the romanian faculties.

Long time no posts on this blog. Now I’m back with an idea on how to win a black ipod Nano. IXIA has trown one in as a prize for their by-annual challenge. This time you have to make a Linux kernel module that implements the PITIX filesystem. Good luck to all of you!

Despre laptopuri şi politică

Posted by on martie 16, 2007
Fără categorie / 2 Comments

În mod excepţional, am decis să scriu acest post în română. Consider că nu am suficiente cunoştinţe de engleză care să-mi permită să exprim tot ceea ce doresc.

Cred că lumea a cam auzit de scandalul provocat de decizia lui Tăriceanu de a implica România în programul OLPC. Nu o să comentez motivele politice ale premierului, a făcut-o cu ironia-i îndoielnică însuşi CTP. Nu o să zăbovesc prea mult nici la zbieretele penibile ale altui „specialist” în IT, numitul Pambuccian, care pretinde că „A-i invata pe copii cu asa ceva poate sa-i faca pe cei care au avut sau au acces la un PC sa creada ca cineva face misto de ei, sau pe cei care n-au avut sa aiba o frustrare intensa fata de ceilalti” (frustrare pe care probabil că acum, fără nici un fel de calculator, n-o resimt) şi nici la scuzele idioate ale maghiarului de la Ministerul Comunicaţiilor, care se laudă cu informatizarea a – oh doamne, numerele astea îmi dau vertij 😛 – 500 (cinci sute) de case de maghiari dintr-un sat oarecare. N-o să vorbesc nici măcar despre meritele (neîndoielnice ale) proiectului – despre asta în alt post.

În schimb, o să vorbesc despre omul care de 2 ani se chinuie din răsputeri să aducă laptopul acesta în România, dl. prof. Adrian Petrescu. Dl. Petrescu a fost un susţinător al proiectului încă de la începutul său, considerând că este singura metodă prin care copiii săraci din România vor avea acces la calculatoare în acest deceniu.

Şi cum vorbele fără fapte nu valorează 2 bani (se aude pe la palate?), domnul profesor a început să se agite pentru a face cunoscut proiectul pe la diverse instituţii ale statului. De multe ori venea la cursul de Calculatoare Numerice pe care l-am avut cu dânsul supărat ţi obosit fiindcă fusese făcut să aştepte câte jumătate de zi pe holurile MEC pentru a fi primit până la urmă de un secretar de stat. A încercat apoi la parlament, fix la sus-numitul Pambuccian, care, din ce am auzit, ar făcut iniţial niscai promisiuni pentru ca mai apoi să se dea lovit.

La sfârşitul anului şcolar trecut s-a terminat cursul de Calculatoare Numerice, dar nu şi eforturile dlui. Petrescu şi am fost fericit să aud că în cele din urmă a reuşit să se facă auzit acolo unde trebuie. Sper ca în cele din urmă să ajungă să-şi vadă visul cu ochii ţi „calculatoarele-broască” (un nume destul de amuzant de altfel) să ajungă în mâinile copiilor din satele României.

P.S. Stilul „Corneliu Vadim Tudor” al acestui post este intenţionat.

Strainu Links v.1.0.2

Posted by on februarie 24, 2007
Fără categorie / No Comments

This plug-in allows you to put your link collection in any page or post. It’s very simple to use, all you have to do is insert < !−−slinks−−> in your page or post.

The new version solves some compatibility issues with WordPress 2.1. The plug-in can be downloaded from my site or from the official WordPress repository.

Layout change

Posted by on februarie 18, 2007
Fără categorie / No Comments

I have a new (green) layout on the main page. Now all my sites are green 😀 It’s nothing special, but it does seem better than the previous one. I also have some new homeworks (in a new language, Python) and projects. Enjoy!

Supercalculatorul Tera-10

Posted by on februarie 18, 2007
Fără categorie / No Comments

Descriere: Tera-10 este în 2007 al şaptelea cel mai puternic calculator din lume
Materie: Structura Sistemelor de Calcul, Informatică
Referat făcut la facultate.
Continue reading…