Mot-clé - Cplusplus

Fil des billets - Fil des commentaires

10 oct. 2011

Dangers et pièges des systèmes de suivi des références

On conçoit aisément qu'il est très difficile de bien concevoir une application ou une libraire : cela demande des connaissances pointues en design ainsi qu'une imagination débordante. Par contre, il est très facile de mal faire : il suffit de se laisser appeler par les sirènes des différents pièges qui, nonchalamment, s'installent sur notre route.

Ce billet traite de l'un de ces pièges : la notion de propriété des objets dans un programme.

Je sais, vous avez déjà lu cette introduction récemment...

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

21 déc. 2010

C++ et l'internationalisation

Ce billet avait été publié une première fois, mais contenait un grand nombre d'erreurs factuelles. Il a été corrigé et amélioré depuis, et le voici publié à nouveau.
Mise à jour du 27 déc. 2010 : certaines erreur de typographie ont été corrigées

Il vous est certainement connu que dans le standard, les classes de chaines de caractère - ainsi qu'en fait tout ce qui manipule des chaines de caractère - sont représentée par une classe template nommée std::basic_string<>. L'un des paramètres de cette classe template est le type des caractères stockés dans la chaine. Et bien évidemment, le standard défini deux types distinct de chaines de caractères : std::string, qui est un std::basic_string<char>, est utilisé pour stocker des chaines ASCII traditionnelles tandis que std::wstring (un type alias sur std::basic_string<wchar_t>) est utilisé pour représenter des chaines dont chaque caractère fait sizeof(wchar_t) bytes[1]. wchar_t est le type caractère large, et est généralement utilisé pour encoder des caractères utilisant le jeu de caractère Unicode.

Du coup, on se surprend à penser qu'il est aisé de transformer une chaine simple, de type std::string, en une chaine en caractères larges de type std::wstring : un simple coup d'algorithme standard du type std::copy, voir l'utilisation de std::basic_string<>::assign() et hop, c'est fini. Du coup, traiter l'internationalisation dans un programme C++ parait d'une simplicité enfantine.

Bien évidemment, si c'était aussi simple, on n'aurait pas besoin de personnes intelligentes au comité de normalisation du C++... Y-aurait-il anguille sous roche ?

Notes

[1] selon le standard C++, sizeof(char) == 1 byte ; il ne s'agit pas d'un octet, mais d'une unité de mesure définie par le texte du standard.

Lire la suite...

16 déc. 2010

De la vérification de son code...

Le billet précédent (C++ et internationalisation) a été provisoirement mis hors ligne. Il contient des erreurs graves qui nécessitent d'être corrigées avant de pouvoir être publié à nouveau sur ce blog.

Désolé si vous l'avez lu - oubliez ce qu'il contient pour l'instant. Lorsque la nouvelle version sera publiée, les erreurs auront été corrigées. En attendant, je vous présente mes excuses les plus humbles.

02 déc. 2010

Le futur standard C++ : apparté

Je sais que je ne devrais plus toucher au sujet, mais voilà qu'enfin, une personne du comité de normalisation du C++ a enfin compris ma détresse. De quoi est-ce que je parle ? Et bien, tout simplement d'un article assez ancien, paru sur ce blog, et qui a déjà connu plusieurs suites. Tout a commencé il y a quatre (courtes ?) années, par ce billet : Etude du C++ Technical Report 1 - reference_wrapper. Deux errata ont suivi : le premier paru quelques jours plus tard, donne une idée du noeud du problème : il y a un problème dans la norme C++. Le second fait état d'une conversation avec Pete Becker (l'éditeur du comité de normalisation C++ la personne chargée à l'heure actuelle de mettre à jour le document normatif), qui contredit un peu mon argumentaire précédent. Enfin, le dernier billet est une vérification de l'implémentation de std::tr1::reference_wrapper<> dans le Service Pack 1 de Visual Studio .Net 2008.

Il fallait une conclusion à tout ça, et j'espère que ce billet l'apportera enfin. Un élément nouveau est récemment venu apporter de l'eau à mon moulin.

Lire la suite...

01 sept. 2010

Le futur standard C++ : les fonctions lambda

Je me souviens de ces vertes années où, élève ingénieur, j'ai appris ce qu'étaient les fonctions lambda. La beauté de la chose m'avait alors complètement échappé, d'autant plus que programmant principalement en C et en C++, je n'en avais strictement aucun besoin. A noter que le caractère qui m'apparaissait particulièrement abscons de ces constructions était principalement du au fait qu'on étudiait alors le meilleur langage du monde, que des spécialistes énamourés ont surnommé "plein de parenthèses insipides".

10 ans après, la nouvelle tombe : mes langages de prédilection (à l'heure actuelle, C# et C++[1]) intègrent les fonctions lambda. Bon. OK. Il est temps d'y réfléchir sérieusement.

Notes

[1] Le draft le plus récent du language C++ est disponible en ligne ici N3126:

Lire la suite...

page 2 de 2 -