18 avr. 2013

Beautiful Code : qu'est-ce que du "beau" code ?

Alors que l'année a démarrée en fanfare sur ce blog, avec presque autant d'articles publiés en 3 mois que sur toute l'année dernière, l'activité s'est tassée au mois d'avril. Il y a une raison derrière ça : je suis actuellement pris par trois projets différents, chacun nécessitant nécessitant de ma part une implication assez forte.

Le premier projet viens de se terminer : j'ai donné aujourd'hui même une petite présentation aux élèves de l'école Polytech Marseille (anciennement l'ESIL) - je remercie d'ailleurs les personnes qui ont mis en place ce rendez vous avec les étudiants, et en particulier M. Tisserand et M. Durand.

Le sujet de cette présentation ? La beauté du code.

Lire la suite...

04 sept. 2012

Modification du générateur de parseurs Coco/R

Cet article est une mise à jour d'un ancien article qui avait disparu de ce blog pour de mystérieuses raisons. Avant sa disparition, il est resté en lignes environ un mois, donc il est probable que peu d'entre vous ait eu le temps de le lire. Vous pouvez maintenant en profiter.

Coco/R, développé par Hanspeter Mössenböck, Markus Löberbauer et Albrecht Wöß de l'Université de Linz est un générateur de compilateurs LL(1). Il permet, avec un seul fichier, de créer un couple scanner/parser intégrable en C++, C#, Java et bien d'autres langages encore. L'intérêt du compilateur généré est qu'il est complètement orienté objet : il ne s'agit pas d'un code procédural qu'il faut tenter d'encapsuler au mieux, comme celui qui pourrait être généré par flex+bison. Le code source généré souffre de quelques problèmes - mais au regard du service rendu, on laissera ceux-ci de coté pour l'instant.

Cet article traite d'une modification que j'ai du effectuer dans le code du générateur lui-même, afin de traiter un cas qui n'était pas prévu par les développeurs. Je me suis basé sur la version C++ datée de Novembre 2010 (la dernière version du code source est disponible sur la page web de Coco/R).

Lire la suite...

11 mar. 2012

Optimisation : de la prédiction des branchements

Ne me demandez pas pourquoi j'écris aujourd'hui sur un sujet qui semble si éloigné de mon domaine de prédilection, l'architecture logicielle et le code haut niveau (je vous rassure, ce n'est pas mon seul domaine de compétence). Je n'en ai pas la moindre idée. C'est peut-être le fait d'avoir ce manuel d'optimisation des processeurs Intel sur mon étagère, bien en face de mes yeux. Ou parce que c'est un sujet dont nous avons discuté récemment au travail. Ou parce que ça traînait dans ma tête depuis un petit moment déjà. Ou parce que j'ai lu récemment sur #AltDevBlogADay un post sur un sujet proche.

Quoi qu'il en soit, aujourd'hui je voulais vous parler des branchements que vous ajoutez dans votre code.

Un petit warning avant de continuer : comprendre ce billet pourra nécessiter de votre part une petite mise à niveau sur certains concepts, et notamment sur l'assembleur x86. Connaître le processus de compilation lié à votre langage sera un plus, et avoir une expérience en lien avec le code assembleur généré par le compilateur va probablement vous aider. Enfin, des connaissances sur l'architecture des processeurs (et notamment sur l'architecture des processeurs x86) va probablement simplifier un peu les détails de ce billet.

Lire la suite...

13 oct. 2011

Vérifier si une fenêtre est recouverte par d'autre fenêtres (Win32 API)

Ce code, très court, vérifie si une fenêtre contrôlée par un HWND est couverte par une ou plusieurs autres fenêtres de la même application.

Lire la suite...

08 fév. 2011

Code source de jeux vidéo

Non, ce n'est pas un post qui va vous dire de télécharger tel ou tel jeu sous un prétexte quelconque - et surtout pas sous couvert d'une idéologie ou le libertarisme serait imposé ; chacun fait ce qu'il veut, après tout - c'est ça la liberté. Ce post a pour mission de recenser quelques jeux dont le code source est libre, parce que je suis en train d'en étudier certains afin d'en extraire ce qu'on nomme avec un amour révérencieux du cliché la substantifique moelle.

Nottez quand même que la plupart de ces jeux ne proposent que leur code - pour pouvoir jouer à ces jeux, il faudra quand même l'acheter afin de pouvoir installer les données du jeu. C'est normal : bien souvent, la réalisation de modèles 3D, des textures, des sprites et autres musique a nécessité plus de temps que le développement du code lui même. Il serait injuste de proffiter de tout ce temps sans en remercier d'une manière ou d'une autre les développeurs (il n'y a qu'à voir ce qui se passe actuellement avec Lugaru HD pour voir que tous ne partagent pas ma vision).

Mise à jour: ajout d'Alien Swarm (merci Dri) et Allegiance (merci Hydroxid Acid).

Lire la suite...

31 janv. 2011

[Code source] carray-0.3.0 (mise à jour)

carray est un petit utilitaire qui permet de générer un tableau C à partir d'un fichier quelconque. Je vous livre le code source de ce petit programme (ridiculement petit d'ailleurs), parce que je ne sais pas quoi en faire d'autre. Si vous avez des idées d'amélioration, n'hésitez pas !

Mise à jour: version 0.3.0 en téléchargement (prise en compte de la remarque de gilles sur EOF ; cf. son commentaire ci-dessous) Mise à jour: version 0.2.0 en téléchargement

Lire la suite...

[Code source] preview de ekogen 0.5

Non, [ekogen 0.5] n'est pas encore sorti - ça ne saurait tarder ceci-dit. Mais puisque j'ai écrit deux posts sur le sujet sur gamedev.net, il me semblait logique de faire profiter mes lecteurs francophones de mes réflexions sur le sujet. Voici donc une version réécrite des deux posts de GD.net - en français, avec des explications en plus.

Lire la suite...

19 janv. 2011

[Code source] ekogen v0.4

La librairie de chiffrement basée sur OpenSLL présentée dans un billet récent évolue et deviens plus utilisable. La version 0.4 est disponible en téléchargement sur developpez.com (ainsi que sur ce blog, attachée à ce billet).

Lire la suite...

10 janv. 2011

Une librairie de chiffrement/déchiffrement avec OpenSSL

De temps en temps, des idées de design appliqués à un problème particulier me traversent l'esprit. De temps en temps, je les implémente, histoire de voir ce que ça donne. De temps en temps, je suis content de ce que j'obtiens, parce le résultat me parait clair, simple à utiliser et suffisamment efficace pour pouvoir être utilisé dans le cadre d'un projet commercial. Le code que je vais vous présenter aujourd'hui atteint au moins la moitié de ce troisième état - comprendre : j'en suis assez content, mais il est perfectible. Du coup, je vous en présente ici les grandes lignes.

Aujourd'hui : une encapsulation des moteurs de chiffrement Blowfish et RSA de la librairie open source OpenSSL.

Le code lié à cet article a déjà été publié sur developez.com, donc si vous êtes un fidèle de ce forum, vous avez peut être déjà jeté un coup d'oeil dessus. Je vais continuer à maintenir les deux repository (ici et sur DVP), mais les annonces de nouvelles version se feront principalement sur DVP (pour des raisons évidentes : ce blog n'est pas un système de news). Vous pouvez aussi vous abonner à la toute nouvelle newsletter AL&D, et je promet de vous tenir au courant par ce biais des évolutions dans ce code.

Lire la suite...