Let There Be Code RSS 2.0
# Sunday, January 23, 2011

Si vous avez suivi l’actualité d’Azure, vous avez pu voir que Microsoft avait annoncé que les fonctionnalités d’IIS seraient disponible au niveau des Web Role. Nous pouvons donc configurer notre Web Role afin d’y définir les sites, répertoires virtuels ou encore les applications comme nous le souhaitons.

A l’ajout d’un projet Azure à notre solution Visual Studio, nous allons choisir de déployer un Web Role.

AddWebRole

Nous allons ajouter 2 sites web supplémentaires à notre solution.

Solution

Examinons maintenant le fichier ServiceDefinition.csdef de notre projet Azure :

<ServiceDefinition name="AzureProject" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
  <WebRole name="WebRoleSample">
    <Sites>
      <Site name="Web">
        <Bindings>
          <Binding name="Endpoint1" endpointName="Endpoint1" />
        </Bindings>
      </Site>
    </Sites>
    <Endpoints>
      <InputEndpoint name="Endpoint1" protocol="http" port="80" />
    </Endpoints>
    <Imports>
      <Import moduleName="Diagnostics" />
    </Imports>
  </WebRole>
</ServiceDefinition>

 

Dans ce fichier, on peut voir la définition de notre Web Role.

Il contient un site nommé “Web” disponible en http sur le port 80. Nous pouvons observer que l’élément xml Site possède comme élément parent “Sites”. Nous allons définir nos autres sites de cette manière :

<ServiceDefinition name="AzureProject" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
  <WebRole name="WebRoleSample">
    <Sites>
      <Site name="Web">
        <VirtualDirectory name="Images" physicalDirectory="../PremierSiteWeb/Img">
        </VirtualDirectory>
        <Bindings>
          <Binding name="Endpoint1" endpointName="Endpoint1" />
        </Bindings>
      </Site>
      <Site name="PremierSite" physicalDirectory="../PremierSiteWeb">
        <VirtualApplication name="SecondSite" physicalDirectory="../SecondSiteWeb">
        </VirtualApplication>
        <Bindings>
          <Binding name="Endpoint2" endpointName="Endpoint2"/>
        </Bindings>
      </Site>
    </Sites>
    <Endpoints>
      <InputEndpoint name="Endpoint1" protocol="http" port="80" />
      <InputEndpoint name="Endpoint2" protocol="http" port="81" />
    </Endpoints>
    <Imports>
      <Import moduleName="Diagnostics" />
    </Imports>
  </WebRole>
</ServiceDefinition>

 

Dans le premier, nous avons ajouté un répertoire virtuel “Images” qui pointe sur le répertoire “../PremierSiteWeb/Img”. Nous avons ensuite déployé le site PremierSiteWeb en http sur le port 81. Puis dans ce site, nous avons défini une application virtuelle qui pointe sur le projet SecondSiteWeb. Lorsque nous déployons localement notre web role (F5), 2 navigateurs s’ouvrent sur les 2 sites. Si nous ouvrons la console d’administration d’IIS, nous retrouvons les 2 sites, le répertoire virtuel, ainsi que l’application :

IIS

Ici mon IIS local possède déjà un site sur le port 80. Pour le déploiement local, Visual Studio a publié mes sites sur les ports 81 et 82.

Après avoir déployé notre Web Role sur Azure, nous pouvons nous connecter en remote desktop à notre VM Azure, accéder au serveur IIS et vérifier que nos 2 sites ont bien été déployés :

image

Sunday, January 23, 2011 1:36:27 PM (Romance Standard Time, UTC+01:00)  #    Voir Commentaires
Azure
# Thursday, December 09, 2010

Brian Harry a annoncé cette semaine la sortie des Service Packs 1 de Visual Studio et de Team Foundation Server 2010 en version Beta. Ils sont actuellement disponibles uniquement pour les abonnés MSDN, mais devraient être téléchargeable par tout le monde dans les jours qui suivent.

Vous pouvez retrouver plus de détails sur le contenu de ces Service Packs directement sur son blog. Il précise notamment que près de 1000 bugs ont été corrigés!! Ca fait rêver ;)

Parmi les nouvelles fonctionnalités nous pouvons noter qu’il sera maintenant possible d’exécuter les tests unitaires en 3.5. Actuellement les tests unitaires s’exécutent obligatoirement en 4.0 et utilisent la compatibilité 3.5 pour tester des applications 3.5.

On peut également noter une grande nouveauté au niveau de l’Intellitrace, c’est le support tant attendu du 64 bits (et de Sharepoint également). Comme je le soulignais dans cet article sur le développement 64 bits, Microsoft continue ses efforts à ce sujet.

Du côté de Silverlight, les tools de la version 4.0 sont inclus dans ce service pack. Au passage, Scott Guthrie nous annonçait la semaine dernière les nouveautés de Silverlight 5 qui devrait être disponible en version béta au printemps 2011 (surement pour le MIX). Et dans Silverlight 5, côté développeur et testeur on notera le support du debug des expressions de binding et le support des tests d’interfaces automatisés (déjà disponible pour Silverlight 4 dans le Feature Pack 2 de Visual Studio 2010).

Et enfin, toujours du côté de Silverlight, ce Service Pack contient un outil d’analyse des performances spécifique à Silverlight.

Thursday, December 09, 2010 10:08:17 AM (Romance Standard Time, UTC+01:00)  #    Voir Commentaires
TFS | Visual Studio
# Monday, October 11, 2010

Si vous avez testé TFS 2010 Beta 2, alors vous avez peut être remarqué qu’il était possible d’éditer les étapes des work items de type Test Case directement depuis Visual Studio. A l’arrivée de la RTM, cette fonctionnalité a été supprimée. Actuellement la seule façon d’éditer les étapes des Test Cases est de le faire depuis MTM (Microsoft Test Manager). Voici à quoi ressemble l’onglet Steps depuis Visual Studio, remarquez le bouton “Open for edit” qui permet de lancer MTM :

 TestCase

Avec la beta 2, nous avions ceci :

image

Nous allons voir ci-dessous comment modifier l’interface des Test Case pour pouvoir modifier les steps comme dans la beta 2.

En cherchant un peu on peut voir que le contrôle utilisé pour afficher les étapes est le custom control TestStepBaseControl de l’assembly Microsoft.TeamFoundation.TestManagement.Controls. Pour le retrouver il suffit de regarder à cet endroit : C:\ProgramData\Microsoft\Team Foundation\Work Item Tracking\Custom Controls\10.0\TestStepsControl.wicc

Comme tout custom control de work item, TestStepBaseControl implémente l’interface IWorkItemControl. Ce contrôle implémente également l’interface IWorkItemControlFactory. Il doit ainsi implémenter la méthode Create, que l’on peut voir ci-dessous :

Create

Visual Studio et MTM se servent certainement de cette méthode pour obtenir une instance de ce contrôle. Comme nous pouvons le voir dans ce code, si le Host a la possibilité d’afficher un contrôle WPF alors il retourne une instance de type TestStepsCustomControl, sinon il renvoie l’instance courante, à savoir de type TestStepsBaseControl.

Le formulaire des work items de Visual Studio ne supportent que les contrôles WinForm. C’est pour cette raison que TestStepsBaseControl est un UserControl WinForm. Par contrôle, MTM est en WPF, ainsi TestStepsCustomControl est un UserControl WPF.

Pour utiliser le contrôle TestStepsCustomControl depuis Visual Studio, il suffit de créer de l’encapsuler dans un composant ElementHost, lui même encapsuler dans un User Control WinForm (le composant ElementHost permet d’hoster un contrôle WPF dans un contrôle WinForm).

  • On crée un projet de type WinForm Custom Control Library.
  • On ajoute les références Microsoft.TeamFoundation.TestManagement.Controls.dll et Microsoft.TeamFoundation.WorkItemTracking.Controls.dll.
  • On ajoute ensuite un User Control et on lui fait implémenter l’interface IWorkItemControl.
  • Dans le designer du user control, on ajoute un composant ElementHost
  • Dans le code du designer, on crée un champ de type Microsoft.TeamFoundation.TestManagement.Controls.TestStepsCustomControl
  • Puis on modifie le code de la méthode InitializeComponent, afin d’instancier le TestStepsCustomControl et de l’affecter à la propriété Child de l’objet ElementHost :

 

InitializeComponent

  • Il faut ensuite mapper les méthodes de l’interface IWorkItemControl sur le custom control :

Mapping

  • Il ne reste plus qu’à compiler
  • On copie la sortie dans le répertoire C:\ProgramData\Microsoft\Team Foundation\Work Item Tracking\Custom Controls\10.0
  • On crée un fichier TestStepsControl2.wicc comme ceci :

wicc

Le contrôle est maintenant déployé. La dernière étape consiste à éditer le formulaire du Work Item pour qu’il utilise notre nouveau contrôle. Le plus simple est d’utiliser les power tools. Après avoir installé les power tools de TFS, il suffit d’éditer le type de work item Test Case (Menu Tools>Process Editor>Work Item Type>Open WIT from Server). Dans l’onglet Layout, on retrouve le TabPage Steps, il suffit de modifier la propriété Type du contrôle utilisé pour afficher le champ Microsoft.VSTS.TCM.Steps :

WIDesigner

La manip est terminée. Il ne reste plus qu’à ouvrir un Test Case et vérifier que les étapes sont maintenant éditable depuis Visual Studio :

image

Et comme par magie, on peut maintenant éditer les étapes de nos Test Case depuis Visual Studio!!

Monday, October 11, 2010 2:34:41 PM (Romance Daylight Time, UTC+02:00)  #    Voir Commentaires
TFS | TFS SDK | Visual Studio
# Friday, October 08, 2010

TFS Membership Visualizer

Je vous l’ai présenté cette semaine, TFS Membership Visualizer est un petit outil qui permet de visualiser un graphe de dépendances des groupes TFS et de leurs membres.

Je me suis dit qu’il serait sympa de l’intégrer directement dans Visual Studio. J’ai donc développé une extension VS que vous pouvez télécharger directement depuis l’Extension Manager de Visual Studio 2010.

Vous pouvez également le télécharger sur le site des extensions de Visual Studio ou télécharger le code source sur le projet Codeplex associé.

(Vous remarquerez également l’arrivée de BOWIE dans l’extension manager :) )

Friday, October 08, 2010 10:48:02 AM (Romance Daylight Time, UTC+02:00)  #    Voir Commentaires
TFS | VS Extension
# Tuesday, October 05, 2010

 

Si vous suivez l’actualité de TFS via le blog de Brian Harry, alors vous remarquerez que je rebondis sur l’un de ses derniers posts, à savoir comment visualiser de manière synthétique les memberships des groupes TFS.

Peut être l’avez vous déjà constaté, la visualisation des membres des groupes de sécurité de TFS n’est pas très pratique. Des groupes sont définis au niveau du serveur TFS, au niveau de la collection ou encore ou niveau des projets. Il n’existe actuellement aucun moyen simple de visualiser les membres de ces groupes de manière synthétique. La seule solution est d’afficher chaque boite de dialogue de gestion des groupes à tous les niveaux (serveur, collection, projets).

Comme le suggère Brian Harry, il est tout à fait possible de développer un outil avec les API de TFS. C’est d’ailleurs ce que j’avais fait pendant mes congés d’été mais je n’avais pas encore eu le temps de poster.

Le code que je vous propose est tout simplement une application Windows qui va vous permettre de sélectionner les projets depuis un serveur TFS et de générer un graphe de dépendances entre les différents groupes et membres :

image

Une fois les projets sélectionnés il vous suffit de cliquer sur Generate Dependency Graph et Visual Studio s’ouvrira afin de vous présenter le graphe de dépendances :

image

Le graphe de dépendances est pour moi la meilleure des manières d’avoir une vue synthétique des memberships. Et on bénéficie en plus de tous les avantages de DGML, en terme de visualisation, navigation ou de sélection.

Pour l’instant je génère un DGML en utilisant Linq To XML et donc un XDocument. Cependant il existe également une API qui facilite la génération de DGML. A creuser pour la prochaine fois…

Tuesday, October 05, 2010 5:53:28 PM (Romance Daylight Time, UTC+02:00)  #    Voir Commentaires
TFS SDK
# Saturday, September 25, 2010

Si vous n’avez pas hiberné cet été, alors vous savez que Microsoft va lancer d’ici 1 mois environ Windows Phone 7. Pour les développeurs c’’est une aubaine, puisque les applications WP7 sont développées en Silverlight ou en XNA. Si en plus de ne pas avoir hiberné cet été vous avez “surfer sur la vibe” du groupe “Développeurs” du plus grand réseau social alors vous savez surement que Microsoft a lancé en France un concours de développement d’applications pour WP7 et que toutes les applications du concours vous y sont présentées.

Pas mal de collègues de Bewise se sont donc lancés dans ce concours en proposant des applications toutes aussi différentes les unes que les autres. Je vous propose ici de vous les présenter si vous ne les avez pas déjà vu dans un ordre totalement désordonné!

Petite info supplémentaire : pour visualiser les vidéos présentent sur Facebook, il vous faudra tout d’abord “liker” le groupe Developpeurs. Vous pouvez ensuite “liker” les vidéos, afin d’apporter vos votes à ces applications.

La première application, Nova4Phone, c’est mon coup de coeur en terme de technicité et de performance. Nova4Phone, développé par David Catuhe, est un portage sur WP7 du moteur 3D Temps réel Nova de la société Vertice. Cette application met en évidence les possibilités de développement en XNA et les performances de ces nouveaux devices. Je vous laisse apprécier les 2 vidéos de présentation de Nova4Phone :

http://www.facebook.com/video/video.php?v=461276955395

http://www.facebook.com/video/video.php?v=1413141241316&oid=129459787073480

Nova4Phone

 

Voila pour les applications XNA proposées par Bewise et Vertice, les applications qui vont suivre sont toutes développées en Silverlight, mais ne sont pas moins intéressantes.

Si vous habitez Toulouse, l’application VeloToulouse proposée par Patrice Lamarche vous permettra de trouver en temps réel les stations de vélo de la ville de Toulouse, la disponibilité de vélos dans une station ou encore les emplacements disponible pour garer son vélo dans une station, détection de votre position via le GPS... Le tout s’interface bien évidemment avec Bing Maps. Pour voir la vidéo, rendez vous sur Facebook :

http://www.facebook.com/#!/video/video.php?v=435268853926

VeloToulouse 

 

Fan de Starcraft, vous désirez suivre les classements et les stats des joueurs à travers le monde, alors Sébastien Pertus l’a fait pour vous, l’application Starcraft 2 pour WP7 :

http://www.facebook.com/video/video.php?v=435240728926

Starcraft2 

 

Fan de rugby et du Stade Toulousain, Loïs Gaudebert a développer une application permettant de suivre l’actualité du Stade Toulousain. Le calendrier, les matchs, les joueurs, les résultats…

http://www.facebook.com/video/video.php?v=436392813926

StadeToulousain 

S’il vous arrive souvent de prêter CD, DVD ou autres produits auquel vous tenez mais que vous avez du mal à répertorier et surtout à récupérer, alors l’application Collecto proposée par David Catuhe devrait vous être d’une aide très importante :

http://www.facebook.com/video/video.php?v=431591263926

Collecto 

Envie de voyager et de découvrir Barcelone, Loïs Gaudebert a développer un guide de la ville de Barcelone. Cette application vous guidera dans Barcelone, vous fera découvrir les monuments ou endroits intéressants en fonction de vos préférences…

http://www.facebook.com/video/video.php?v=436692483926&ref=mf

GuideBarcelone

 

Et enfin pour terminer, Speak-O-Matic, application proposée par Guillaume Lacasa. Cette application vous génère des phrases diverses et variées. Personnellement je ne pense pas réussir un jour à placer une de ses phrases, bien que, après quelques bières, elles prennent un sens, donc sait-on jamais… J’ai cependant un coup de coeur pour la musique et la vidéo, qui nous montre le talent d’acteur de quelques Bewisiens :

http://www.facebook.com/video/video.php?v=430590738926

Speakomatic

Saturday, September 25, 2010 12:53:00 PM (Romance Daylight Time, UTC+02:00)  #    Voir Commentaires
WP7
# Monday, August 30, 2010

Les congés arrivent à leur fin pour pas mal de monde, il est donc temps de faire le bilan de l’été et de se remettre au travail!

Pour moi l’été a très bien commencé, puisque j’ai été récompensé du titre MVP Visual Studio ALM par Microsoft. Ensuite, à part faire les fêtes de la Madeleine je me suis motivé à passer la certification 70-512 Administration de TFS 2010. Pas de grande surprise, tous les points sont abordés : installation et configuration de TFS, Lab Management, TFS Proxy, Build… Bref, tous les sujets annoncés sur Microsoft Learning sont abordés dans l’exam. Actuellement Microsoft ne fournit aucun cours ni bouquin pour le préparer. Toutefois une bonne connaissance de TFS, du guide d’installation et du guide d’administration suffisent.

L’été continue à être agité pour moi puisque je découvre actuellement XNA et Windows Phone 7. D’ailleurs à ce sujet, je vous conseille d’aller voir cette magnifique vidéo de Nova4Phone qui participe au concours WP7 (si vous aimez, “likez” et faites tourner la vidéo). Nova4Phone est le moteur 3D pour Windows Phone développé par David Catuhe, qui tourne sur un vrai device. La fluidité est époustouflante! Like, like, like!

Monday, August 30, 2010 9:36:20 AM (Romance Daylight Time, UTC+02:00)  #    Voir Commentaires
TFS
# Monday, July 05, 2010

Je viens de publier un nouvel article sur le développement 32bits et 64bits.

Avec l’arrivée du Framework 4.0 et de Visual Studio 2010, Microsoft a fait de gros effort sur le développement d’applications 64bits avec Visual Studio 2010. Patrice Lamarche nous livre dans ce billet l’un des changements majeur concernant la politique de compilation de vos projets UI avec Visual Studio 2010.

Au-delà de l’IDE, le Framework 4.0, et plus précisément la classe System.Environment, nous fournit des propriétés permettant de savoir si l’OS est en 32 ou 64bits, ou de récupérer le répertoire Program File (x86) ou encore le répertoire Windows\SYSWOW64…

Quelles sont les différences entre ces OS ? Comment des applications 32 bits et 64 bits cohabitent ? Comment les prendre en compte dans nos développements ?

Monday, July 05, 2010 8:23:06 AM (Romance Daylight Time, UTC+02:00)  #    Voir Commentaires
C# | Visual Studio

Je ne suis pas trop pour ce genre de post, mais mon ami et collègue Sebastien Pertus m’a passé la patate chaude, et je me dois donc de la renvoyer…

  1. Mon nom, Laut s'écrit avec un T et se prononce lo, pas Lote! Je suis du nord et dans le nord on ne dit pas moinsse...
  2. 95% des gens l'oublis, mais mon prénom, Benoît, s'écrit avec un accent circonflexe sur le i.
  3. Ben, BenBen, CorBen (Dallas), PtiBen, $uddenBen, Biniouze, Strogoff, Eole, Tic (de Tic et Tac) et dernièrement Dr House, sont quelques uns des surnoms que l’on pu me donner ces 15 dernières années.
  4. Je suis né à Monaco. Entendez par là la clinique Monaco à Valenciennes. Ville célèbre notamment pour son (ancien) maire, JL Borloo qui a fait venir Toyota pour fabriquer la Yaris (seul endroit dans le monde où elle est fabriquée) et qui est notamment à l'origine de la remontée du VAFC en ligue 1 (ancien club USVA).
  5. A 1 an je tombe 2 fois de suite de ma chaise haute (je voulais me balancer comme sur une balançoire), à 5ans ma sœur me casse le pouce en me lançant une boule de pétanque sur la main, à 11 ans je me fais renverser sur un passage piéton par une auto école. A 30 ans, à Bewise, accident de travail, je me fais une entorse en descendant les escaliers…
  6. Mon premier vrai concert en tant que spectateur : 1996, j'avais 16ans, ACDC pour la tournée Ballbreaker. Mon groupe mythique depuis l'age de 12 ans. Je peux dire que j'ai connu Bon Scott, chanteur mythique d'ACDC, mort le 19 février 1980, puisque je suis né 26 jours avant ce drame. J'aime beaucoup de style de musique : Hard Rock, Blues Rock, Heavy Metal, Death Metal, Power Metal, Trash Metal, Dark Metal Melodyc, Black Metal Symphonic Alcolic... Mais ça ne m'a pas empêché d'aller à des concerts de JJ Goldman, Mano Solo, les ogres de Barback ou encore Marcel et son orchestre.
  7. Guitariste aux cheveux longs, j'ai joué 8 ans dans un groupe de Metal. Une dizaine de concerts dans des bars et discothèques, une quinzaine de compos et une corde cassée à chaque début de concert. Je joue sur une guitare Ibanez et un gros Marshal 100W 2 corps!!
  8. Un jour, un grand sportif j'ai été. Gymnastique : je faisais tous les grand écarts possible (costal, facial, nasal...). Handball : j'ai participé aux sélections du nord. Cyclisme : à 17ans je faisais ma première traversée de la France, 1100km en 8jours de Valenciennes (Nord) à Pamiers (Ariège). A la même période je gravissais pour la première fois le Mont Ventoux et le Tourmalet. 
  9. Si je devais me comparer à une boisson, ça serait la bière : frais, pétillant, du caractère, doux et amer à la fois... Mes préférées : Triple de Bruges et Triple Karmeliet.
  10. J’habite Toulouse depuis 5 ans bientôt, mais je reste bien sur très attaché au Nord. Je suis notamment un grand supporter du VAFC que j’ai du voir pour la première fois au stade Nungesser à 10 ans. 8ème de ligue 1 en 2009-2010, pour les personnes qui ne le savent pas, Valenciennes est de retour en ligue 1 depuis 2005.

Je passe maintenant la main à JP.

Monday, July 05, 2010 6:02:00 AM (Romance Daylight Time, UTC+02:00)  #    Voir Commentaires
Fun
# Monday, May 17, 2010

image Avec un collègue nous nous sommes posés quelques questions sur le développement autour d’Office et surtout sur le déploiement des PIA (Primary Interop Assembly).

La problématique est la suivante : sur nos postes nous avons Office 2010 d’installé. Nous avons donc référencé, dans notre projet de manipulation de documents Office, les PIA d’Office 2010. Ces assemblies permettent aux applications .Net d’utiliser les fonctionnalités Office. Ceci signifie que lors du déploiement de l’application, il faut qu’Office et les PIA soient installés sur le poste client (ou sur le serveur si c’est une application web par exemple). Pour information, avec Office 2010, les PIA sont forcément installées, ce qui n’était pas le cas avec les anciennes versions. Elles ne sont d’ailleurs pas encore “redistribuable” en version 2010.

Nous venons de découvrir que sur le serveur c’est Office 2007 qui est installé, or le projet doit à terme fonctionner avec Office 2010…

Doit-on changer nos références? [Edit] Non. Lorsque l’on instancie une classe Application (pour Word par exemple), celle-ci est instanciée (en interne) en utilisant le ProgID “Word.Application” et non “Word.Application.14”. Ce ProgID est indépendant de la version d’Office installée et donc si les PIA 2007 sont installées, notre application fonctionnera.

La version installée sur le serveur est Office 2007 (version 12.0). Si nous avions référencé les PIA 12.0, après installation d’Office 2010 la redirection se ferait automatiquement. Office installe des assemblies de redirection de version dans le GAC (Policy.12.0.Microsoft.Office.Interop.XXX). Chaque assembly est accompagnée d’un fichier de configuration qui indique à la CLR que lorsque notre application lui demandera de charger une PIA 12.0, elle devra lui fournir la version 14.0.

 

Pour s’en assurer, il suffit d’ouvrir un Command Prompt et de se rendre dans le répertoire du GAC de l’assembly Policy comme indiqué ci-dessous :

image

Dans le répertoire Policy.12.0.Microsoft.Office.Interop.Word se trouvent une assembly et un fichier de config. Pour éditer le fichier de configuration il suffit depuis le command prompt de taper le nom de fichier. Ceci aura pour effet de l’ouvrir dans Visual Studio. Nous pouvons ainsi visualiser le fameux BindingRedirect de la version 12.0 vers la version 14.0 :

image

Les redirections d’Office 2003 vers 2010 sont également présentes dans le GAC.

Monday, May 17, 2010 5:18:41 PM (Romance Daylight Time, UTC+02:00)  #    Voir Commentaires
Framework .Net | VSTO
Archive
<February 2012>
SunMonTueWedThuFriSat
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910
About the author/Disclaimer

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2012
Benoît Laut
Sign In
All Content © 2012, Benoît Laut
DasBlog theme 'Business' created by Christoph De Baene (delarou)