Mind...

Aller au contenu | Aller au menu | Aller à la recherche

jeudi 16 août 2007

Templates en C

En C++, il existe un mécanisme extrêmement pratique pour généré du code générique : les templates. Une fonction templatée est une fonction dont le code comporte un trou qui sera remplacé à la compilation par le nom d'un type, ou une valeur... Par exemple :

template <class T> 
T read(const char *buffer) 
{
    T val;
    memcpy(&val, buffer, sizeof(T));
    return val;
} 

Cette fonction lit un objet de type T sur un buffer. L'intérêt de cette fonction est très compréhensible : quel que soit le type qu'on fournit à la fonction, elle va fonctionner, en adaptant la taille à lire au type. C'est donc beaucoup plus rapide que d'écrire une fonction pour chaque type... et l'utilisation est également très simple :

read<int>(const char* buffer) // lit un entier sur le buffer
read<double>(const char* buffer) // lit un double sur le buffer
read<MaClass>(const char* buffer) // lit un objet de type "MaClass"

Mais cette syntaxe n'est qu'un sucre syntaxique, car en fait, on peut également faire des templates en C...

Lire la suite...

samedi 10 mars 2007

A croire que certains le font exprès !

Depuis trois jours, je travaille sur la mise ne place d'un outil permettant de faire des aperçus graphiques de site web (des vignettes façon Exalead par exemple). C'est une fonctionnalité très à la mode... et c'est aussi un bon moyen d'avoir un aperçu d'un site. Donc dans ce cadre, j'ai commencé à travailler sur khtml2png. Malheureusement, comme il ne correspondait pas exactement à mes besoins, j'ai commencé à en modifier le code source... et j'ai eu quelques surprises !

Lire la suite...

Your local checkout of plat/al has been disabled for security reasons. It appears that several critical flaws known in the plat/al codebase have not been patched in your working copy. These flaws are listed below:
  • 2009-10-19 e10bc2ef Prevents auth-groupex from leaking data to third-party attackers.
  • 2008-12-21 a25cdc91 Fixes a SQL injection in geoloc.inc.php.
Please have a look at the SECURITY and core/SECURITY files in any recent plat/al checkout to get more details on which commits did fix those flaws.

Note: you can re-enable your working copy by typing make in the root directory of your checkout (usually in ~/dev/platal).