jeudi 20 novembre 2014

Comment créer un contrôle graphique WPF avec Blend.

Mon incompétence en termes d’IHM étant assez importante, j’ai suivi récemment une formation sur les outils de modélisation WPF, et je dois dire que cela m’a assez bien réconcilié avec le monde de l’interface graphique.

Cela a surtout démystifié pas mal d'aprioris que j’avais sur le sujet, et il est vrai que Microsoft a fait de très gros efforts pour permettre à tout un chacun de créer de jolies interfaces, même pour les amoureux des programmes en mode console comme moi.

Avec cet article, je vais tenter de vous montrer comment on peut facilement faire un contrôle graphique en partant d’une page blanche, et ce sans aucune compétence particulière en graphisme.

Cela permettra enfin aux programmeurs bas niveau que vous êtes de pouvoir discuter avec les petites nanas du service marketing  au sujet des animations et autres pouet pouet graphiques qu’elles aimeraient voir dans la prochaine version de votre logiciel :)

jeudi 9 octobre 2014

Vérifiez la validité d’un numéro de sécurité sociale avec SQL Server.

Lorsqu’on est en France et que l’on travaille dans les logiciels de gestion pour le domaine de la santé, les questions de comment remonter tous les numéros de sécurité sociale « non valide » d’une table d’identifiants ou comment vérifier la validité d’un NIRPP dans un trigger arrivent assez rapidement.

Or, le contrôle d’un NIR n’est pas si facile lorsque l’on veut couvrir un maximum de cas (numéro temporaire pour les étrangers, département d’outre-mer, corse, calcul de clé, …) .

Pour ceux qui veulent éviter de perde plusieurs heures (voir plusieurs jours) sur la meilleure solution à adopter pour ce problème très franco-français, je vais essayer de vous synthétiser ma solution pour que vous puissiez la réutiliser dans votre base de données grâce à une bonne vielle requête SQL.

mardi 2 septembre 2014

La transformation de données – Pierre angulaire de l’architecture SOLID.

Si la programmation est une activité déjà bien complexe lorsque l’on travaille seul, la difficulté est largement amplifiée quand le programme nécessite d’y travailler à plusieurs, car ce dernier cas nécessite en général une architecture divisée en modules à périmètre restreint pour permettre une bonne séparation des concepts.


Bien que ce type d’architecture soit souvent mis en œuvre, l’interdépendance entre les modules constitue rapidement le point faible qui oblige les développeurs à bafouer toutes bonnes pratiques de séparations pour arriver à leur fin.

Dans cet article,  je vais traiter d’une solution évoluée de « Transformation de données » pour garantir à votre architecture modulaire de rester le plus intègre possible au niveau des principes SOLID.

lundi 18 août 2014

Hazymail.NET, la résurrection du programme perdu.

Il y a quelques semaines, j'ai dû mettre en place un script qui doit envoyer un email à la fin de son traitement. Rien de plus normal me direz-vous ?

Le truc fun de l'histoire c'est qu'en cherchant sur le net, je suis tombé sur un très vieux soft que j'avais écrit en C++ en l'an de grâce 2006 nommé HazyMail.

Cet outil permettait d'envoyer des mails sans avoir besoin d'un serveur SMTP, ce qui est quand même bien pratique.

Je me suis donc empressé de l'utiliser, et j'ai pu constater quelques disfonctionnements, notamment sur la partie pièce jointe. Je me suis alors dis qu'il serait pas mal de lui donner un petit coup de jeune en le redéveloppant en .NET 2.0 histoire que celui-ci soit Cross plateforme !

lundi 19 mai 2014

Changement de nom de domaine pour MyTCPMON.

Le nom de domaine pour MyTCPMON est arrivé à expiration, et malheureusement je suis arrivé trop tard pour le renouveler. 

Comme personne ne l’a commandé entre temps, tout aurait pu aller pour le mieux, mais mon hébergeur semble me prendre pour un pigeon en demandant pas moins de 10 euros pour des « frais administratif de renouvellement tardif » !


samedi 29 juin 2013

Mes anciens articles de HACK

Dans les années 2000, alors que je n'avais qu'une vingtaine d'années, j'étais passionné par le hacking.

Si cette discipline m'a obligée à posséder de fortes compétences en réseaux, il est arrivé un moment où ma seule façon de progresser fût d'apprendre les arcanes de l'informatique, comprendre comment fonctionne précisément les choses pour entrer dans le cercle très fermé des "EL8" (comprendre élite).

Il faut savoir qu'en hacking, les personnes les plus respectées ne sont pas celles qui ont pénétré les plus gros serveurs, mis à genoux les plus gros systèmes ou volé les documents les mieux gardés de la planète, mais se sont celles qui trouvent et mettent en oeuvre les procédés et programmes qui permettent ces exploits.

Être un hacker consiste donc à étudier précisément un système afin de pouvoir détourner son utilisation originale pour le faire fonctionner à son avantage.

C'est dans ce sens que jadis j'avais écrit plusieurs articles techniques que je vais vous présenter ici.

jeudi 6 juin 2013

SortedSplitList - Un algorithme d'indexation d'objet en C#

En informatique, lorsque la spécification demande à traiter un très grand volume de données avec des performances proches du temps réel, le programmeur doit passer par des mécanismes d'indexation pour trier de manière pertinente les informations à manipuler. Or, si pour la plupart des logiciels, un grand nombre de données se compte en centaines de milliers d'objets, il y en a pour lesquels il est nécessaire d'en manipuler plusieurs dizaines de millions, nécessitant énormément de ressources mémoire.

En général ces gros logiciels sont installés sur des stations dédiées dimensionnées spécifiquement pour tenir la charge, c'est pourquoi les algorithmes privilégies les performances plutôt que l'optimisation de consommation mémoire. Sauf que lorsque un serveur nécessite de maintenir plusieurs dizaines d’indexes sur plusieurs dizaines de millions d'objets, la mémoire vive peut se retrouver rapidement saturée engendrant un écroulement des performances globales.

Cet article va traiter d'un algorithme d'indexation que j'ai mis au point pour pallier à ce problème en alliant performance et consommation mémoire lorsque l'on doit travailler avec plusieurs millions d'objets.

La bonne compréhension de cet article nécessite un bon niveau en programmation générale avec des connaissances en langage C#.

Get the English version of this article on CodeProject