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...

mercredi 14 mars 2007

Démon pour khtml2png

Une fois qu'on a un outils pour faire les vignettes de site, il devient utile de pouvoir automatiser le travail. Pour ceci, il existe un démon pour khtml2png. Malheureusement (encore une fois), cet outil ne correspondait pas exactement à mes besoins. Donc je l'ai partiellement réécrit (mais rien d'extraordinaire).

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).