Tutoriel Boost Graph Library

Boost, c’est le bien, et la BGL ne fait pas exception à la règle. BGL permet d’utiliser des algorithmes de graphes précodés en l’adaptant à nos besoins via les templates, et économise beaucoup de temps de développement et de debug.
C’est bien beau, mais encore faut-il que les puissants concepts utilisés pour faire fonctionner la librairie soient bien documentés. Or, la documentation de la BGL est tout simplement ignoble :
Read the rest of this entry »

, , ,

9 Comments

(Petit) Clône de client telnet en Haskell

Bonjour,

L’autre nuit, muni de café, j’ai souhaité m’amuser avec Haskell. J’ai alors consulté le chapitre sur le réseau en Haskell de Real World Haskell et… j’ai écrit un (très petit) clône de client telnet… qui fait 41 lignes. Le seul soucis étant que dans toute application de ce genre, on doit partager habilement la lecture des entrées de l’utilisateur, et l’affichage de ce que l’on nous envoie. Ceci mis à part, tout cela fonctionne très bien !

Haskell

Read the rest of this entry »

, ,

5 Comments

CipherSaber – Chiffrement en kit

Sabre laser de chiffrement

Au détour d’une naviguation web fortuite mais bienheureuse, je suis tombé sur CipherSaber. Vous savez, c’est ce genre de moment où on tombe sur une initiative sympa, facile à suivre et qui fait sens. Bref, j’ai accroché tout de suite, alors j’ai laissé tomber ce que j’étais en train de faire et y ai consacré mes heures suivantes.
CipherSaber, c’est la reprise du concept selon lequel il faut en savoir faire un minimum, tout seul, comme un grand. A l’instar des Jedis dans l’univers Star Wars qui vont réaliser eux-même leur sabre laser (vous comprenez maintenant le nom du projet), on nous propose de réaliser nous-même notre petit logiciel de chiffrement. Read the rest of this entry »

, , , , ,

3 Comments

Haskell Platform, ou comment se mettre à Haskell sans soucis !

Bonjour à tous,

Cela fait quelques temps maintenant que la communauté Haskell a sorti Haskell Platform. Il s’agit d’un « paquet » qui regroupe :
- le compilateur haskell GHC, un debugger, un profiler, etc
- les bibliothèques les plus populaires et les plus utilisées, fournies d’office
- tout un tas d’outils auxiliaires, comme haddock, qui permet de générer de la documentation depuis les commentaires du code source.

Il existe des paquets pour déjà quelques distributions Linux, sachant que ce sera bientôt prêt pour Debian et Ubuntu également. Les installeurs Windows et Mac sont très simples également.

Bref, plus aucune raison de ne pas essayer Haskell :)

,

1 Comment

Préprocesseur et énumérations : la suite.

Cet article fait suite à mon premier article intitulé « Faire un peu joujou avec le préprocesseur »
(disponible ici : http://www.coder-studio.com/blog/preproc/ ).

Pour rappel, nous en sommes restés à un système de macro qui permettait d’automatiser la création
d’un opérateur « < <" pour iostream, capable d'afficher le nom d'une énumération.

Read the rest of this entry »

, , ,

4 Comments

Faire un peu joujou avec le préprocesseur…

Ça faisait un bail que je n’écrivais pas sur Coder-Studio…
Chose réparée :)

Du 17 au 19 avril 2009, a eu lieu la finale de Cod’INSA, un concours de programmation inter-INSA,
qui s’est déroulée à l’INSA de Toulouse (plus d’infos sur http://codinsa.insa-lyon.fr pour les intéressés).
Faisant partie des organisateurs, j’ai eu à faire l’interfaçage C++/Java (oui parce qu’il y en a qui veulent
participer en Java…allez comprendre :p [/troll]). J’y ai découvert les joies de GCJ et de CNI, ce qui
pourra peut-être être l’objet d’un autre article, selon ma motivation…

Bref, tout ça pour dire qu’il m’a fallu interfacer une librairie écrite en C avec du Java, et qu’il a fallu
automatiser un peu le boulot pour la partie concernant les énumérations.

Dans cet article, je vais illustrer une méthode pour faciliter l’affichage des valeurs des énumérations.
En gros, le but, c’est que si l’on a :

MonEnumeration e = E_VAL_1;
std::cout < < e << std::endl;

il s’affiche alors à l’écran « E_VAL_1″.

Read the rest of this entry »

, ,

8 Comments

GTK+ en Haskell

Bonjour,

M’étant mis à Haskell depuis quelques temps (principalement grâce au désormais fameux Real World Haskell), je me suis dis qu’il était temps que je regarde un peu du côté des bibliothèques pour interfaces utilisateurs. Hé bien, je n’ai pas été déçu. Il y a notamment Gtk2Hs qui fournit un bon binding de GTK+, compatible avec Glade (le designer) et qui permet donc de charger des interfaces depuis du XML.

Gtk2Hs en action

Read the rest of this entry »

, , ,

3 Comments

Robot wifi terminé

Voici deux nouvelles vidéos de notre projet de robot wifi que nous venons de terminer. On peut encore l’améliorer, mais avons atteint notre but initial et développé toutes les fonctionnalités que nous souhaitions implémenter :)
Vous pouvez retrouver plus d’info sur notre robot sur mon site.

2 Comments

Challenge Tower Bloxx

Certains d’entre vous connaissent probablement le jeu Tower Bloxx sur téléphone portable. Pour résumer, le jeu consiste à construire une petite agglomération en plaçant des immeubles sur une grille carrée de taille n x n. Chaque immeuble est créé en empilant un à un les étages à l’aide d’une grue qui balance d’un bout à l’autre de l’écran. A chaque fois qu’un étage est ajouté, des habitants viennent peupler l’immeuble. Plus les étages sont alignés, plus l’immeuble abrite d’habitants et moins l’immeuble balance pour placer de nouveaux étages. Il existe plusieurs types d’immeubles (m), avec un nombre de points et une population croissants : résidentiel (bleu), commercial (rouge), industriel (vert) et hôtel de luxe (jaune). Les règles de placement des immeubles sont les suivantes :

  • Un immeuble bleu peut être placé partout.
  • Un immeuble rouge doit posséder au moins un immeuble bleu dans son voisinage.
  • Un immeuble vert doit posséder au moins un immeuble bleu et rouge dans son voisinage.
  • Un immeuble jaune doit posséder au moins un immeuble bleu, rouge et vert dans son voisinage.

On considère ici un voisinage en 4-connexités. Dans le jeu original, il est possible de détruire des tours voisines afin de placer davantage de tours de plus grande importance (loophole). Dans un souci de simplicité, j’ignore ici cette possibilité. L’image ci-dessous donne un exemple d’agglomération qui respecte les règles énoncées précédemment.

Exemple d'agglomération

Exemple d'agglomération

Read the rest of this entry »

, , ,

3 Comments

Détournement de Nabaztag et reverse engineering

Nabaztag

Nabaztag

J’ai reçu à Noël dernier une jolie petite bestiole. Un bon gadget de geek :) Le Nabaztag.

Très bonne idée à la base, le concept est intéressant, c’est typiquement le genre de truc qui m’intéresse. Sauf … que ce Nabaztag est finalement un peu trop inutile à mon goût et surtout bien trop contrôlé par la société qui le vend, à savoir la société Violet. Déjà, qu’est-ce que cette petite bestiole ? Il s’agit en fait d’un terminal connecté à Internet en wifi par lui même et qui peut interagir à la fois avec du contenu sur Internet et avec l’utilisateur. Il est alors possible de lire la météo, suivre ses emails, écouter la radio, écouter des podcast, lire des flux en streaming, suivre des flux RSS, etc. Notre ami lapin clignote de partout et bouge les oreilles dans tous les sens et peut même lire des puces RFID. Bref une bonne idée dans l’absolu, mais finalement ce lapin m’a plus énervé que servi pour l’instant. J’écoute beaucoup de webradio sur Internet, on peut charger des radios sans problème … sauf que notre ami lapin lit comme un abruti les trames METADATA (titres des musiques entre autres) des flux http des radios. Du coup on a droit à des gros parasites aléatoires dans la musique, parce que le lapin essaye de faire lire du texte au lieu du flux mp3… ahah bien joué !

Read the rest of this entry »

, , , , ,

12 Comments