Jul.14

Workflow Foundation: la galère des FaultHandler(s)

Ca fait un peu plus d’une petite semaine que je me suis lancé dans le Windows Workflow Foundation (WF et non WWF ^^), qui est pour moi, ma 1er partie de ma decouverte de .NET 3.0 🙂
Je suis entrain de terminer mon article ainsi qu’un Webcast sur une introduction à WF qui devrait être finalisé ce weekend…

En préparant mon Webcast je me suis heurté à un problème avec l’Activity FaultHandler ! Cette activité permet de recupérer les exceptions survenu dans l’execution de votre workflow…

Mon workflow possédait un CodeActivity qui été sensé travailler avec un XmlDocument representant la response d’un Webservice. Mais voila que dans certains cas mon code pouvait lever l’exception XmlException..
J’ai donc placé dans le « Fault View » du designer, un FaultHandler qui checké l’exception XmlException pour executer un CodeActivity qui ecrivait un petit message « Bug :-))) » ^_^

Mais lorsque je provoquais volontairement l’exception lors de l’execution de mon workflow, celle ci n’etait pas du tout géré par mon FaultHandler et on me renvoyait dans mon code sous VS2005 avec un petit message « XmlException was unhandled by user code » 🙁

A partir de là, grosse perte de temps à chercher dans tous les sens sur les peu de sites qui parle de WF…. La solution est en fait toute bête ^^
En effet, VisualStudio est prioritaire sur les FaultHandlers.. C’est à dire que quand votre Workflow est executé en mode debug sous VS2005, en cas d’exception ce n’est pas le FaultHandler qui repondra mais VS2005. Si maintenant vous executez votre application hors contexte VS2005, là vous aurez bien le FaultHandler qui prendra la main 🙂

Chose dîte, je retourne sur mon Webcast : Que du bonheur 😀

Dev,Workflow Foundation

May.31

MySudoku

Et voila, ce sur quoi je travaillé ces derniers temps MySudoku est enfin « releasé » et vient d’être publié sur SUPINFO Project comme projet chef d’oeuvre !

MySudoku est un petit jeu du Sudoku développé en C# sous .NET 2 qui reprend les « bases » de mes Sudoku’ Days (n°1n°2) 😉

Fonctionnalités :

  • Chargement/Enregistrement des grilles
  • Génération automatique de grille
  • Création manuelle de grille
  • Résolveur de grille de tout niveau
  • Fonctions de verification de grille
  • Capture et Impression de grille
  • Application Anglais/Francais
  • Programme d’installation (en francais uniquement) avec installation des codes sources.

Prérequis :

  • Framework .NET 2.0

Le programme d’installation : click here
Les codes sources : click here

C’est bon maintenant je rompe définitivement avec le sudoku 😀

Perso,Dev,.NET

May.25

Newsletter au Laboratoire Microsoft

Mon cher ami Benuts et moi même sommes fier de vous annoncer en exclusivité la sortie prochaine (fin de semaine?) de la Newsletter au Laboratoire Microsoft (www.labo-microsoft.com) !!! 😀

Benuts se sera occupé de faire la « template », en gros le design et la forme de la Newsletter (le coté visible) et moi comme à mon habitude, la partie background, soit non visible, bref le systeme de génération et d’envoi de la newsletter…

La 1er newsletter sera envoyé à plus de 30.000 destinataires (inscrit sur le site) en fin de semaine théoriquement…

Coté technologique, j’ai utilisé l’ASP.NET 2 pour faire l’application de génération et d’envoi ! J’attire votre attention sur le fait que maintenant, en ASP.NET 2, les classes pour le Mail ne se trouvent plus dans le namespace System.Web.Mail (enfin si, mais le compilo nous informe que cela est obsolete) mais sur le namespace System.Net.Mail !

On y trouve notamment, la classe SmtpClient pour l’envoi et surtout la classe MailMessage pour la génération de l’email. Les propriétés To, CC et Bcc sont maintenant des collections de la classe MailAddress !
De plus, la fonction SendAsync() de la classe SmtpClient fait son apparition, nous permettant d’envoyer le mail de facon asynchrone, donc de facon détaché au thread qui l’appel, bref, comme dirait Redo : QUE DU BONHEUR 😀 !

Pour les curieux : la bible MSDN sur le System.Net.Mail
Et biensûr le labo ICI !!!!

Have a nice night 🙂

Dev,.NET

May.19

Les collections génériques sous .NET 2.0

Résumé:
Dans cet article, nous allons voir les collections génériques introduites avec le nouveau framework .NET 2.0. C’est l’espace de noms (namespace) System.Collections.Generic qui contient les interfaces et classes qui définissent des collections génériques permettant aux utilisateurs de créer des collections fortement typées. Nous verrons dans cet article les différentes collections génériques proposées par le framework 2.0 (dictionnaires, listes, piles, etc…) à travers des explications claires accompagné d’exemple.

Sommaire:

Pour ceux qui serait intéressé :

Perso,Dev

May.12

Petit coucou furtif de GTK+

Ah !! On ne peut pas dire en ce moment que les posts coulent à flot 🙂 Mais bon, étant en pleine periode de rendu de projets, chaque minute est compté et je pense que mes camarades de supinfo me comprendrons (enfin certain… ^^).

Ceci dit, attaquons-nous au vif du sujet : Gtk+ ! Le nom vous dit s’en doute quelque chose, pour les ignorants c’est une librairie permettant la conception d’interface graphique depuis son programme C, c++, perl, python, …(même c#, enfin la c’est Gtk# ^^) et ce sur plusieurs plateformes (windows, linux, bsd, etc…).

Bon jusque la je ne vous apprends rien et vous vous demandez surtout pourquoi je parle de ca ?? Bah, tout simplement parce que, bien que je ne connaissais pas tout cette librairie, j’ai dû passer mon dimanche avec elle pour lui ecrire de jolis mots 😀

Plus serieusement, Gtk+ est une excellente librairie et surtout super simple a prendre en main ! La logique est super bien pensé et bien que le C soit un langage procédural, on a rééllement l’impréssion de developper dans un langage orienté objet/evenementielle !

Mais bon, je ne suis pas trop fan du C/C++ (productivité oblige ^^) et donc ne risque de developper réélement en Gtk, mais une histoire d’un jour sa ne s’oublie pas ^_^

Pour les intéressés: Ma petite introduction à GTK+

Perso,Dev

Apr.26

My Sudoku Day n° 2

Allez 2ème et dernier jour de Sudoku pour moi ^^ J’ai en effet un peu ameiloré mon programme de Sudoku, et je vous presente la version final 1.1 ^^

Les nouveautés sont simples :

  • Possibilité de charger une grille depuis un fichier
  • Possibilité d’enregistrer la solution
  • Changement d’unité de mesure du temps ^^

Ce qui m’a permis de tester mon programme sur d’autre grille parce que jusque la je n’ai fait que resoudre une seule grille et en plus comme me dit Kevin : c’est du niveau Facile !!

Donc j’ai directement attaqué par une grille non pas du niveau facile, ni moyen, ni difficile (ca serai trop facile ^^) mais en niveau diabolique carrement ! Mon fichier TXT ressemble à ca :

J’execute mon petit programme « sudokusolver.exe diabolique.txt« , qui me ressout la grille (marre des screenshots, donc on fera sans), me demande de l’enregistrer où je dis « oui », et me créé le fichier :

C’est pas beau ca ?? 😀

Tu remarquera une fois de plus mon ti kevin qu’il me l’a resolu en 0 seconde, c’est pourquoi j’ai du changer d’unité de temps et donc pour etre exate il l’a résolu en 50ms (et 10ms pour la grille facile du 20minutes d’hier) !! Amuse toi a me preparer autant de grille que tu veux, je t’attends demain 🙂

Le code de la nouvelle version du programme console ICI (ps: le moteur n’a pas été modifié, seulement le programme console pour gérer le chargement et l’enregistrement des grilles)

Pour finir, vive le sudoku ^^

Perso,Dev

Apr.25

My Sudoku Day

Le sudoku n’est plus à presenter… Dire que certain ont fait des millions en créant des programmes capables de générer des grilles.. (ca aurait dû Netastate sur ce marché ^^).

Bref toujours est-il que bon nombre de personne s’eclatent ou plutôt se prennent la tête (hein chérie :-)) sur ce genre de casse tête !

Personnellement, j’ai fait mon 1er sudoku ce matin dans le train 🙂 (c’est bien Seb ^^) ! Et j’en suis venu à une conclusion : quitte a se prendre la tête autant se prendre la tête une bonne fois pour toute !!! C’est alors que je me suis mis en tête, a mon arrivée a Supinfo ce matin, de faire un résolveur de Sudoku : c’est ma journée Sudoku 😀

Plusieurs méthodes existent pour resoudre ce genre de problème ! Personnellement j’ai utilisé la méthode du BackTracking (kesako ici) qui consiste a placer les chiffres dès qu’ils sont possibles et de revenir en arrière quand ca ne l’est plus !

Avant :

Après :

Mon petit Kévin remarquera la vitesse de résolution pour cette grille : 0secondes ^^ Tu sais bien que je suis trop rapide pour toi 😀 (j’entends encore « ouai il pu ton algo, c’est de la m**** » ^^)

Bon biensur, dans l’état actuel, c’est assez galère pour entrer la grille dans le programme car elle est directement inscrite en dur dans le code mais vous remarquerez que mon application se compose de 2 fichiers :

  • Moteur.cs : contenant tout le moteur de résolution du sudoku et donc exploitable depuis n’importe qu’elle application (faudait refaire une belle interface graphique, XAML kevin ?? ^^ ou appli web !)
  • Program.cs : programme console qui exploite le moteur avec un exemple d’une grille trouvé dans le 20 minutes de ce matin.

Sur ceux je vous souhaite a tous une bonne soirée, et a bientôt 🙂

Sans oublier les sources :

Perso,Dev