Pourquoi ce site ?

Ce site hébergé par Free me sert simplement à stocker des fichiers que je ne peux pas stocker sur mon blog. Je garde mon blog pour la simplicité d'éditer des pages rapidement, je ne veux pas maintenir un site, c'est trop chiant. J'utiliserai donc ce site pour stocker des pojets open source que je partagerai, dès que j'aurais trouvé comment les afficher proprement.

Notez que j'ai copié le style de mon blog. Je ne sais aps à qui il appartient, mais je l'ai trouvé sur Blogger, le code source de cette page inclut le nom de l'auteur Dan Cederholm et de son site

[Démo] L'interface IXmlSerializable

Télécharger la dernière version des sources
Consulter les sources

Je viens d'écrire un article sur ce sujet sur CodeProject. Certaine clase ne peuvent pas être sérialisées avec le XmlSerializer. Le but de cette démo est de montrer comment les sérialiser quand même, en implémentant l'interface IXmlSerializable. Le XmlSerializer va utiliser les méthodes ReadXml et WriteXml de cette interface pour substituer son comportement habituel.

[Projet] Dungeon Twister

Télécharger la dernière version des sources
Consulter les sources

Comme je suis fan de Dungeon Twister, j'ai décidé d'en faire un jeu vidéo. Comme d'hab, je le finirai sans doute jamais, mais qu'importe. je mets les sources ici, en open.

Je pense que la première version permettra de jouer par email, entre 2 joueurs humains, avec le jeu de base uniquement, sans contrôle de validité des actions. Et la dernière version, si jamais je vais aussi loin que ça intègrera une intelligence artificielle pour jouer contre l'ordinateur. Pour participer au projet contactez moi.

[Projet] Terminal

Télécharger la dernière version des sources
Consulter les sources

Dans mes activités quotidiennes de développeur en C# sur des techno RFID, je passe du temps à développer des applications qui utilisent des ports séries. Et souvent j'ai besoin d'envoyer encore et encore la même commande sur un port avec des caractères non imprimable, ce qui pose plein de problèmes avec un terminal de base. Tapper 0x01 revient a faire un ALT + 01, ça va, mais quand on est au dessus de 16, faut commencer à faire la conversion d'Hexa en décimal. Même comme ça, ça irait encore mais souvent on parle à un périphérique qui possède un time out, et du coup c'est la merde.

J'ai donc développé une petite appli de terminal qui permet de stocker des tas de commandes préconfigurées sous forme de fichiers XML, et de les envoyer sur un port lui aussi paramètrable bien sur. Il existe des tas de terminaux pour faire des tas de trucs, mais bien sur le mien est mieux (les autres sont de mauvaise foi) !

je mets les sources ici, en open. Attention, Le programme est sous controle de code source, n'hésitez pas à supprimer le lien vers la base de source.

[Démo] Property Grid

Télécharger la dernière version des sources
Consulter les sources

Pour ceux qui connaissent le contrôle PropertyGrid, pas la peine d'aller plus loin, téléchargez éventuellement la démo mais, pas besoin de lire la suite.

La PropertyGrid est un contrôle qui utilise la reflection (System.Reflection) du framework pour lister et afficher toutes les propriétés d'un objet. C'est cet objet qui affiche toutes les propriétés des controles dans Visual Studio. Il est extrêment puissant de base, mais vraiment ultime lorsqu'on commence à le maîtriser. Voici une petite démo de ce qu'on peut faire en tant qu'utilisateur averti (pas encore expert, je pense). J'ai utiliser beaucoup d'attributs, pour préciser à l'utilisateur à quoi servent chacune des propriétés. J'ai utiliser des modes d'affichages personnalisé des propriétés. J'ai aussi implémenté un ICustomTypeDescriptor.

Voici les mots clé sur lesquels chercher pour plus d'informations : PropertyGrid, ICustomTypeDescriptor, CategoryAttribute, FileNameEditor, FolderNameEditor, UITypeEditor, ExpandableObjectConverter, TypeConverter, PropertyDescriptorCollection, PropertyInfo. Ne les cherchez pas tous en même temps :)

Quelques liens :
Un très bon tutorial, mais pour celle du framework 1.1
Tout sur code project