19/09/2010

[RegEx] Vérifier une expression régulière

Alors c'est vraiment low level, je viens d'y passer une petite demi-heure pour dépanner un collègue qui souhaite paufiner une expression régulière à la ligne de commande donc je prends un quart d'heure de plus pour le mettre en ligne si ça peux aider quelqu'un. C'est simplement une fonction IsMatch dans une procédure Try. Rien de mystérieux...




using System.Text.RegularExpression;

namespace RegExWPF
{
   public partial class MainWindow : Window
   {
      public MainWindow()
      {
         InitializeComponent();
      }

      private void button1_Click(object sender, RoutedEventArgs e)
      {
         if (textBox1.Text != "" && textBox2.Text != "")
         {
            try
            {
               Regex expression = new Regex(textBox1.Text);
               if (expression.IsMatch(textBox2.Text))
               {
                  label1.Content = "Le texte correspond à l'expression régulière";
                  label1.Foreground = Brushes.Green;
               }

               else
               {
                  label1.Content = "Le texte ne correspond pas à l'expression régulière";
                  label1.Foreground = Brushes.Red;
               }

            }

            catch (Exception)
            {
               Error test = new Error();
               test.ShowDialog();
            }
         }

         else
         {
            Clear error = new Clear();
            error.ShowDialog();
         }

      }
   }
}

15/09/2010

[Livre] MCTS 70-502 Windows Presentation Foundation

Dans la série des livres préparant aux certifications microsoft. Voici Windows Presentation Foundation (WPF).






Livre est bien évidemment complet sur le sujet :

- Windows Application
- Navigation Application
- XBAP
- Images
- DataBinding
- Styles, Triggers
- Impressions
- Déploiement

et autres...

Pour ma part, je l'ai trouvé beaucoup plus accessible que le livre préparant à la 70-536. Peut-être dans la mesure où la technologie WPF sert à concevoir l'IHM (C'est de suite plus parlant quand on voit et l'on peut tester !) ou bien parce que cela faisait plus d'un an que j'ai découvert et pratiqué la technologie WPF et le XAML (Extensible Application Markup Language).

J'ai trouvé un peu dommage que l'auteur du livre ne fasse aucune référence à la suite Expression et plus particulièrement à Blend.
Je me vois mal calculer mes points de la courbe de béziers à chaque fois que je souhaite affiner une animation. (Les courbes polynomiales paramétriques, j'ai arrêté!).

La technologie WPF est indispensable avant de se lancer dans silverlight (qui va posséder dans le courant du mois prochain une certification dédiée).




Maintenant lu, c'est révision à fond avant de passer la certification (dans les prochaines semaines, j'espère).

28/08/2010

[.NET] Authentification, MD5 d'un string

Pour raisons évidentes de sécurité, il n'est pas possible de stocker les mots de passe de nos clients en "clair" dans une base de données.

Voilà comment faire pour stocker les mots de passe avec un Hash MD5.



Partons du principe que cette authentification est basé sur pattern n-tiers (DAL, Business, IHM) et que la table et la DAL ont déjà été créé.

Vous commencez par créer votre classe de gestion du Hash dans Business:

using System.Security.Cryptography;

public class MD5CryptGest
{
   public string Get_A_MD5_Hash_from_String (string text)
   {
      //Instanciation d'un d'un service de Hash MD5;
      MD5 svc = new MD5CryptoServiceProvider ();

      //Convertion de la chaîne de caractères en Bytes
      UnicodeEncoding encode = new UnicodeEncoding();
      bytes[] buffer = encode.GetBytes(text);

      //Création du Hash en Bytes puis convertionen String
      bytes[] hash = svc.ComputeHash(buffer);
      string result = Convert.ToBase64String(hash);
      
      return result;

   }
}

Ensuite toujours dans Business, vous créer votre gestion de l'authentification avec un requête Linq (N'oubliez pas de rajouter la référence System.Data.Entity):

using DAL;

public class Authentification
{
   //Constructeur pour instancier ma connexion
   public Authentification()
   {
      connection = new MaBaseEntities();
   }
 
   private MaBaseEntities connection;

   private string authentification(string ID, string password)
   {
      //Requête LinQ
      MD5CryptGest crrypting = new MD5CryptGest();
      MaTable check =  (from user in connection.MaTable
                        where user.userID.equals(ID)
                        select user).FirstOrDefault();
   }

   //Vérification que les informations correspondent
   try
   {
      if (check.userID == ID && check.password == crypting.Get_A_MD5_Hash_from_String(password))
      {
         return "Access granted";
      }

      else
      {
         return "Access denied";
      }

      catch (Exception)
      {
         return "UserID not found";
      }
   }
}

Pour finir on passe dans le code behind de l'IHM :

private void Button_Click(object sender, RoutedEventArgs e)
{
   Authentification AuthEntity = new Authentification ();
   MessageBox.Show(AuthEntity.authentification(textboxID.text, textboxPassword.text));
}

Voilà voilà, c'est fini !

Le code est certainement perfectible alors correction, pistes de réflexion, encouragements, n'hésitez pas à poster vos commentaires.


04/08/2010

[XAML] Contrôle Ribbon pour WPF

Bonjour à tous,

Fraichement sortie par microsoft, voici un lien où télécharger les contrôles Ribbon pour vos applications WPF/Silverlight.



ici

Une fois le fichier installé, il suffit de cliquer depuis Visual Studio 2010 ou 2008 avec sp1 sur Tools > Choose Toolbox Item... il ne vous reste plus qu'à choisir les controles du Ribbon pour les avoir disponibles dans la Toolbox.



01/08/2010

[Livre] MCTS 70-536 : Application Development Foundation

Voilà le dernier le livre que j'ai lu :
"MCTS 70-536 Self Paced Training Kit: Application Development Foundation" écrit par Tony Northrup





C'est bien évidemment un minimum lorsque l'on souhaite appréhender la technologie .NET avec des bases solides.

Au programme entre autres dans le désordre:

- Input/Output
- Collections
- Sécurité
- Thread
- Sérialisation
- Globalisation
- Mails
- Graphique
- Domaine d'application
- Installer

etc...

Comme je le disais précédemment une bonne base.

Les exemples sont systématiquement donnés en VB.NET & C#.

En revanche, il faut déjà avoir des connaissances en Programmation Orienté Objet.

A mon avis ce livre reste, même si c'est rebutant (+ de 1000 pages), indispensable. Donc http://tinyurl.com/2f4z9rj

Pour info l'exam 70-536 n'est un pré-requis que pour les certifications sur le framework 2.0  et 3.5. Il n'est pas nécessaire pour effectuer les certifications sur le framework 4.0.