Blog de Ludovic Bonnet (MCPD / MCTS)

.Net Développeur passioné !

Ludovic BONNET

Ingénieur en développement sur les technologies .Net/Java au sein de la société Neotic basé sur Montpellier !

Mon Curriculum Vitae

mcpd

mcts

RecentComments

Comment RSS
SaveMe sur WP7

Bonjour à tous,

Voici la description du logiciel social SaveMe développé pour WP7, évidemment gratuit ! SaveMe vous permet d'envoyer des SOS d'alerte à vos contacts par de multiples moyens de communications modernes au moment où vous en avez le plus besoin :euh: .

L'application utilise plusieurs moyens de communication comme l'envoi de SMS, mail, appel, nabaztag, GTalk (Jabber) ou encore l'utilisation de logiciels sociaux connus tels que Facebook ou encore Twitter pour envoyer une alerte SOS.

Cette alerte contient votre adresse exacte géolocalisée ainsi qu'un lien vers une carte Bing, tout ceci récupéré grâce à votre GPS intégré en faisant du reverse geocoding. L'application vous permet également de lancer une alerte sonore afin de vous localiser précisément (ex : dans une avalanche lorsque les secours sont proche de vous) ou encore d'afficher une carte Bing de votre localisation actuelle afin de guider les secours.

L'application a été développé pour tirer un maximum parti de la puissance de votre Windows Phone 7 :
- utilisation des tuiles dynamiques permettant de lancer plus rapidement un SOS d'alerte.
- Des choosers permettant de récupérer l'adresse mail de vos contacts ou encore leurs numéros de téléphone afin d'éviter aux utilisateurs de retaper ces informations
- Des launchers permettant de lancer des appels, l'envoi de SMS ou mail
- du GPS intégré au smartphone
- des cartes Bing
- du player Audio pour lancer une alerte sonore
- du vibreur du téléphone
- de l'application bar
- plein d'autres fonctionnalités !

N'hésitez plus, sortez en sécurité grâce à SaveMe :) !

Lien vers le market : http://www.windowsphone.com/fr-FR/apps [...] -c09ff6dc0b70
PS : n'hésitez pas à tester, faire vos retours et likez !

Posted: May 13 2012, 14:38 by ludovicb | Comments (40) RSS comment feed |
  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under:
[Général] Les évolutions du Framework .Net

Le Framework .Net comporte actuellement 6 versions principales dont voici les détails :

1.0 : Naissance du Framework .Net en Janvier 2002 (v1.0.3705) basé sur une CLR (Common Language Runtime) avec du code managé. L’intérêt d’une CLR est d’assurer un fonctionnement identique sur toutes les machines. Le développeur écrit son code dans un langage .Net, celui-ci est ensuite compilé dans un exécutable ou DLL en CIL (Common Intermediate Language). Au lancement du point d’entrée du code, le code CIL est alors compilé en code binaire natif par le compilateur JIT (Just-In-Time) et executé dans la CLR.

1.1 : Version sortie en avril 2003 (v1.1.4322) apportant de nombreuses corrections et améliorant stabilité/performance. Réelle lancement de la plateforme .Net auprès des développeurs. Cette version intègre en natif ASP.Net, le Compact Framework (sous ensemble du CLR tournant sur des périphériques mobiles) et ADO.Net apportant une solution de connexion aux bases de données.

2.0 : Version réellement stabilisée et utilisée par de nombreux produits (v2.0.50757.42) sorti en novembre 2005. Mises à jour en version 2.0 d’ADO.Net, ASP.Net et Winforms. Au niveau du langage, apport de la généricité des classes, méthode anonymes, des types nullables ou encore la globalisation des applications ainsi que l’ajout de la possibilité des classes partielles séparant l’implémentation dans plusieurs fichiers.

3.0 : Le cœur du Framework n’ayant pas été changé, la version du noyau reste en V2.0.50757.42 pour la sortie de cette version 3.0 en novembre 2006. Cependant de nouvelles technologies ont été inclues en natif dans le Framework .Net :

- WPF (Windows Presentation Foundation) permettant d’apporter un moteur de rendu graphique vectoriel afin de remplacer la technologie WinForm

- WCF (Windows Communication Foundation) apporte une solution unifiée d’échanges et de création de services

- WF (Windows Worflow Foundation) facilite la création de Workflow au sein des applications .Net

- WCS (Windows CardSpace) amène une solution d’authentification unifiée sur internet.

De nouveaux sucres syntaxiques ont également été ajoutés au langage :

- Le mot clé var permet de pas indiquer directement le type même si la variable est fortement typée implicitement par le compilateur : var str = « aaa »; marchera alors qu’ensuite str = 5 ; ne compilera pas car le type de str est désormais string. A noter que Visual Studio, au survol de str retrouve bien le type string. La vérification du type est donc faite directement à la compilation.

- Ajout des expressions lambda permettant d’éviter l’utilisation des delegates : garfield  = cats.Find(c => c.LastName == « Garfield ») ;

- Les méthodes d’extension ont été ajoutées afin d’enrichir des classes sealed : public static string Hide(this string s) { return « ****** » ; } vient enrichir la classe string car précédé par le mot clé this avec une nouvelle méthode Hide, pour l’utiliser comme d’habitude «password ».Hide() ;

- Les initialiseurs d’objets : new Cat() { Color= « White »,Age=1} ;) ou de collections : new List<int> () { 0,1,2,3,5}

- Les Types anonymes : var test = new { Country= « France », ZipCode= « 34 »} ;

- Les propriétés automatiques créant automatiquement la variable sous-jacente : public string Name { get; set; }

Des exemples sur http://www.csharpfr.com/tutoriaux/NOUVEAUTES-SYNTAXIQUES-CSHARP_777.aspx

3.5 : En novembre 2007, apparaît le Framework 3.5 restant en version V2.0.50757 mais avec un nouveau build mineur V2.0.50757.1378 assurant une grande compatibilité avec les versions inférieures. Le principal apport à cette version est Linq (Language Integrated Query) permettant avec un langage unique de requêter différentes sources de données (Linq to Object, Linq to DataSet, Linq to XML, Linq ot SQL) : var queryCats = from c in cats where c.Year > 4 orderby c.Year select new { c.Name, c.Year };

L’ajout de ASP.Net Ajax est également apparu au sein de cette version ainsi qu’Entity Framework véritable ORM (Object-Relational Mapping) de Microsoft, introduction des méthodes partielles permettant de séparer la déclaration de l’implémentation d’une méthode et intégration d’un nouveau namespace permettant l’interopérabilité et l’exécution de WPF au sein des projets en Windows Forms.

4.0 : Version sortie en avril 2010 sous le numéro 4.0.30319 intégrant de nouvelles technologies telles que MEF, ou le Parallélisme avec TPL. De nouveaux éléments syntaxiques ont été ajoutés tels que les paramètres optionnels (avec valeur par défaut) : public int Multiply(int x = 1, int y = 2, int z = 3) { return x*y*z ; } peut être appelé tel que Multiply(),Multiply(1), Multiply(1,2), Multiply(1,2,3). Les paramètres nommés ont également été introduits et permettent de préciser pour un paramètre directement sa valeur : Multiply(1,2, z :3), Multiply(z :3,y :2,x :1) ou Multiply(1, z :3).

Une introduction importante du mot clé dynamic permettant de gérer les langages dynamiques où les objets sont dynamiquement typés au runtime : dynamic calc = GetCalculator(); calc.Sum(1, 1); permet de compiler et de vérifier uniquement au runtime si la méthode Sum existe sur le futur type remplaçant de dynamic. Application des mécanismes de co-variance et contre-variance sur les interfaces génériques. Voici un exemple de co-variance :

Public class Person {} public class Employe : Person {}

IList<Employe> listEmp = new List<Employe>() { new Employe(« Mary »), new Employe(« Grace ») } ;

En .Net 4.0 est alors possible : IList<Person> listPerson = listEmp.ToList<Person>() ; alors qu’auparavant ce n’était pas le cas (impossible de convertir implicitement le type IList<Employe> en IList<Person>).

 

Voici pour le tour d’ensemble des versions. On peut également voir les ajouts de nouvelles briques au Framework .Net sur le schéma suivant :

clip_image002

Pour plus d’informations sur les changements au cœur des versions, http://msdn.microsoft.com/fr-fr/library/t357fb32%28v=VS.90%29.aspx, http://msdn.microsoft.com/fr-fr/netframework/bb880957 ou encore http://msdn.microsoft.com/en-us/library/ms171868.aspx.

Posted: Nov 07 2011, 23:19 by ludovicb | Comments (23) RSS comment feed |
  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: Général | .NET 4.0
[Général] Reflector gratuit !

Sous ce titre volontairement accrocheur se cache une subtilité importante ! Tout utilisateur d’une version de Reflector 6.X peut prétendre à obtenir auprès de RedGate une licence à vie pour la version 6.8 de Reflector (ce qui est déjà très bien en soi) !

Les détails de cette offre ont été publiés par RedGate à cette endroit : http://www.red-gate.com/MessageBoard/viewtopic.php?t=13330

Cette demande de licence vous sera automatiquement proposé après mise à jour automatique du programme. Attention, la licence n’est utilisable que sur 5 ordinateurs. Pour ceux, qui n’ont pas de version 6 de Reflector sous la main, à vous d’en trouver une car apparemment ils n’en proposent pas au téléchargement.

Posted: May 23 2011, 22:37 by ludovicb | Comments (32) RSS comment feed |
  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: Général
Optimisation des performances Web côté client

Pendant les Techdays 2011, une session parlait des performances web côté client ainsi que les best practices à utiliser. Si vous ne l’avez pas vu, les slides sont disponibles ici : http://www.slideshare.net/nhoizey/mstechdays-cleveragenhoizeywebperf

Voici quelques liens complémentaires trouvés sur le net pleins de conseils et d’explications :

http://www.slideshare.net/mumme/best-practices-422667

http://developer.yahoo.com/performance/rules.html

http://www.slideshare.net/kaelig/optimisation-des-performances-dun-site-web

Ainsi que des bons exemples concrets d’applications en ASP.NET rédigés par Nicolas Esprit :

http://www.nicolasesprit.com/post/2010/09/15/ASPNET-Performance-Tips-1-Compresser-et-mettre-en-caches-les-images.aspx

http://www.nicolasesprit.com/post/2010/09/22/ASPNET-Performance-Tips-2-Minify-combiner-compresser-et-mettre-en-cache-des-fichiers-Javascript-et-CSS.aspx

http://www.nicolasesprit.com/post/2010/11/02/ASPNET-Performance-Tips-3-Combiner-des-fichiers-Javascript-et-CSS.aspx

Un rapide résumé des règles seraient :

- combiner les fichiers CSS et Javascript en un fichier

- rajouter une couche sur ce fichier en le minimisant, c’est à dire de supprimer les espaces, retours à la lignes, commentaires tels que le fait la librairie JQuery.

- ajouter des dates d’expiration et de cache pour les images de votre site internet

- compression gzip pour diminuer le poids des données à transférer

- éviter les redirections

- Utiliser des outils tels que Firebug onglet réseau afin d’analyser toutes les échanges réseaux initialisés par votre site lors d’une connexion

Posted: Mar 10 2011, 23:06 by ludovicb | Comments (88) RSS comment feed |
  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under:
VS2010 SP1 Disponible

Depuis le 8 mars 2011, le Service Pack 1 de Visual Studio 2010 est sorti pour les abonnés MSDN… bon tout le monde ni toutes les entreprises ne disposent d’un abonnement MSDN !

Heureusement Microsoft vient de mettre à disposition pour tous un lien de téléchargement que voici : http://www.microsoft.com/downloads/en/details.aspx?FamilyID=75568aa6-8107-475d-948a-ef22627e57a5&displaylang=en

Bonne installation Sourire

Posted: Mar 10 2011, 22:51 by ludovicb | Comments (21) RSS comment feed |
  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under:
Proxy / C#

Lorsque vous développez en entreprise, vous pouvez parfois vous retrouver derrière un proxy : “serveur informatique qui a pour fonction de relayer des requêtes entre un poste client et un serveur. Les proxys sont notamment utilisés pour assurer les fonctions de mémoire cache, logging, sécurité du réseau local ou encore filtrage des sites visités” .

Si vous avez configuré votre proxy sous Internet Explorer alors vos applications WPF / Silverlight lancées depuis votre poste l’utiliseront. Si vous développez un site ASP.Net et que vous l’exécutez au travers de Visual Studio, le proxy sera également utilisé. Le problème vient alors lorsque vous allez déployez au sein de IIS votre site internet. Si votre serveur IIS, n’utilise pas votre compte courant d’utilisateur mais un compte dédié pour fonctionner, il se pourrait alors que le proxy ne soit pas configuré pour ce compte !

Il faut alors indiquez lors de vos appels Web côté code, les informations du proxy. Nous allons prendre quelques exemples pour éclairer la situation notamment avec une simple WebRequest :

HttpWebRequest httpWRequest = (HttpWebRequest)WebRequest.Create("http://www.google.fr");
int portproxy = 8080; 
WebProxy proxy = new WebProxy(&quot;nomduproxy&quot;, portproxy); 
proxy.Credentials = new NetworkCredential(“login”,”password”); httpWRequest.Proxy = proxy; 
HttpWebResponse httpWResponse = (HttpWebResponse)httpWRequest.GetResponse(); 

Les Credentials ne sont pas obligatoires et dépendront si votre proxy requière une authentification !

Le proxy est dans ce cas là, très simple à configurer mais la difficulté est tout autre lorsque vous souhaitez maintenant utiliser des méthodes XML qui iront chercher sur Internet des informations tels que des schémas XSD. Les méthodes XML ne contiennent pas de propriété Proxy à passer. Il faut utiliser une classe dérivant de XmlResolver où il faut implémenter la méthode GetEntity(Uri absoluteUri, string role, Type ofObjectToReturn) où vous pourrez créer votre proxy ! Voici un exemple :

    public class XmlProxyUrlResolver : XmlResolver
    {
        public override object GetEntity(Uri absoluteUri, string role, Type ofObjectToReturn)
        {
            WebRequest request = WebRequest.Create(absoluteUri);
            request.Proxy = new WebProxy("adresseproxy", 8080);
            return request.GetResponse().GetResponseStream();
        }
    }

Il vous faut maintenant l’utiliser lors de vos appels XML sur Internet :

private bool TestValidSchemaXSD()
{
    List<string> listErrors = new List<string>();
    XmlReader reader = null;

    string xmlToValidatePath = "file.xml";
    string xsdPath = "file.xsd";

    try
    {
        XmlResolver xmlResolver = new XmlProxyUrlResolver();

        // Création d'une instance du schéma
        XmlSchemaSet sc = new XmlSchemaSet();
        sc.XmlResolver = xmlResolver;
        sc.Add(null, xsdPath);

        // Application des paramètres de valisation
        XmlReaderSettings settings = new XmlReaderSettings();

        // Ici nous utilisons un schéma XSD pour valider le fichier xml
        settings.ValidationType = ValidationType.Schema;
        settings.Schemas = sc;

        //settings.XmlResolver = xmlResolver;

        // Si une erreur est trouvée, on utilise un délégué pour la récupérer
        settings.ValidationEventHandler += delegate(object o, ValidationEventArgs vea)
        {
            listErrors.Add("Erreur : " + vea.Message);
        };

        // Création du parseur du fichier XML
        reader = XmlReader.Create(xmlToValidatePath, settings);

        // On parse le fichier jusqu'à la fin
        while (reader.Read()) ;
    }
    catch (Exception e)
    {
        listErrors.Add("Erreur : " + e.Message);
    }
    finally
    {
        if (reader != null)// Ne pas oublier de fermer le reader
        {
            reader.Close();
        }
    }

    if (listErrors.Count > 0)
    {
        return false;
    }

    return true;
}
Posted: Feb 25 2011, 23:55 by ludovicb | Comments (36) RSS comment feed |
  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under:
WP7 : quittez proprement votre application

Pour quitter par programmation votre application WP7, il n’existe pas 50 manières. Vous pouvez ajoutez une référence à la DLL Microsoft.XNA.Framework.Game et ensuite utiliser la méthode Game.Exit().

Cependant, le "Windows Phone 7 Application Certification Requirements" indique qu’au sein d’une application Winform, vous ne pouvez utiliser cette DLL sinon lors de la publication de votre application WP7 sur le market, celle-ci ne passera pas les tests de validation.

Vous pouvez alors utiliser la technique suivante en levant une exception puis en la traitant avec un cas particulier, voici un exemple :

private class QuitException : Exception { }
Dans votre code, où vous souhaitez quitter l’application, écrire :
throw new QuitException();
Et dans la classe App.xaml.cs de votre application, vous avez la méthode Application_UnhandledException 
chargé de capturer les exceptions non attrapées :

private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
{

if (e.ExceptionObject is QuitException)
{
    return;
}

if (System.Diagnostics.Debugger.IsAttached)
{
    // An unhandled exception has occurred; break into the debugger
    System.Diagnostics.Debugger.Break();
}

}

Posted: Dec 05 2010, 21:52 by ludovicb | Comments (31) RSS comment feed |
  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: WP7
Créer un composant graphique XAML par code

Parfois pour certains types d’applications, nous souhaitons pouvoir créer dynamiquement des contrôles graphiques par le biais du code au runtime de l’application.

image

En Silverlight et WPF où l’interface graphique est composée à partir du langage XAML, une nouvelle méthode statique est apparue au coeur du framework afin de pouvoir charger dynamiquement du XAML : XamlReader.Load(string xaml);

Cette méthode permet de passer une chaine représentant votre code XAML et de renvoyer un élément qu’il faut caster en (UIElement) et ajouter à votre arbre XAML où le code sera correcte.

ATTENTION : il faut pour chaque contrôle XAML envoyé à la méthode Load() charger les namespaces correspondant au contrôle XAML :

StringBuilder strBuilder = new StringBuilder();
strBuilder.Append("<ListBox xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"><……..></……..></ListBox>");

VotreControleXAML.Items.Add((UIElement)XamlReader.Load(strBuilder.ToString()));

Si vous avez une erreur du type “undeclared prefix [Line: 1 Position: 25]” ajoutez les namespaces à chaque contrôle !

Posted: Dec 05 2010, 14:29 by ludovicb | Comments (39) RSS comment feed |
  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: Général | Silverlight | WPF
Astuce Reflector : récupération code sources

Les développeurs .Net utilisent assez souvent Reflector pour analyser le code de DLL ou exécutable .Net dont ils n’ont pas les sources.

Mais savez-vous comment récupérer les sources que vous analysez ? Vous pouvez bien sûr reconstruire à la main entièrement votre projet en copiant chaque classe ouverte dans Reflector dans Visual Studio, mais ceci n’est pas envisageable pour les projets à plus grande échelle.

Il vous suffit tout simplement de réaliser un clic droit sur votre projet puis Export !

image

Je ne connais pas cependant à partir de quelle version de Reflector, cette option est disponible.

Si vous ne disposez pas de cette option ou vous ne me convient pas, regarder du côté des add-in Reflector tel que FileGenerator ou Reflector.FileDisassembler.

Posted: Dec 05 2010, 12:12 by ludovicb | Comments (31) RSS comment feed |
  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: Général
Silverlight 5 : les nouveautés

Lors de la dernière Professional Developer Conference (PDC pour les intimes) de Microsoft, beaucoup de voix (et de journalistes) se sont élevées pour indiquer que Microsoft changeait de cap et de technologie pour abandonner Silverlight au profit de l'HTML 5.

ms-silverlight-logo

Microsoft au travers de Scott Guthrie durant la Silverlight Firestarter a tenu à rassurer tous les développeurs Silverlight en annonçant la 5ème version de Silverlight.

Une première version bêta 1 de SL5 est annoncée pour le premier semestre 2011 tandis que la version finale est prévue pour le second semestre 2011.

Au menu de cette future version, nous avons pas moins de 40 nouvelles fonctionnalités dont voici quelques points importants :

- le support des navigateurs 64 bit

- l'accélération graphique notamment pour les vidéos H264

- meilleure gestion des DRM pour les droits d'auteur

- une intégration matérielle plus poussée afin d'améliorer les performances sur les applications 3D

- des fonctionnalités de lecture de média améliorés

- support de WS-Trust

- … plein d’autres !

Si vous voulez en savoir plus sur cette nouvelle version, n'hésitez pas à visiter : http://www.microsoft.com/silverlight/future/ et à regarder la keynote de Scott G. http://www.silverlight.net/news/events/firestarter/

So wait and see Sourire

Posted: Dec 03 2010, 19:07 by ludovicb | Comments (64) RSS comment feed |
  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: Silverlight