John's Technical Weblog

Bienvenue dans le monde merveilleux de WPF et des webservices Exchange

Les webservices Exchange – Préparer la connexion

laissez un commentaire »

Suite à l’article précédent où vous avez vu comment ajouter une référence à EWS je vais vous expliquer aujourd’hui comment vous y connecter.

Vous trouverez la classe ExchangeServiceBinding au sein du proxy généré par Visual Studio aux EWS. C’est cette classe qui contient les méthodes pour appeler les webservices. La suite de cet article parlera donc essentiellement de la manière de l’initialiser.

Etape 1, créer une instance

var esb = new ExchangeServiceBinding();

Etape 2, ajouter vos informations d’authentification

Afin de vous authentifier sur le serveur Exchange il faut fournir une instance de classe implémentant ICredentials. La méthode la plus commune est celle par login et mot de passe et celle que je vais montrer dans cet article. Je montrerai dans un prochain article comment vous authentifier sans ces derniers si vous êtes sur le même domaine que le serveur Exchange.

private static ICredentials GetCredentials()
{

var credential = new System.Net.NetworkCredential();
credential.UserName = « login »;
credential.Password = « password »;
credential.Domain = « domain »;
return credential;

}
. . .
esb.Credentials = GetCredentials();

Etape 3, configurer l’adresse du serveur Exchange

private const string ExchangeServerBaseAddress = « https://mu.lan »;
. . .
esb.Url = ExchangeServerBaseAddress + « /ews/exchange.asmx »;


Etape 4, configurer les connexions sécurisées si besoin

Vous avez pu constater que dans l’étape 3 j’utilise un point d’accès sécurisé en SSL. Ceci peut poser des problèmes si le certificat de votre serveur a été auto-signé ou n’a pas été reconnu par une autorité racine. Le Framework .NET vérifiant les certificats et rejetant la connexion si la validation échoue, un des moyen de circonvenir à cela est d’utiliser la ligne suivante qui valide tous les certificats et de l’insérer soit au début du flux d’exécution de votre application, soit dans le constructeur statique de la classe principale par exemple (attention à la sécurité quand même!).

ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true

Votre instance de ExchangeServiceBinding est désormais configurée pour se connecter sans encombres à EWS. Pour l’instant cependant, vous ne vous êtes toujours pas connecté à EWS. Dans le prochain post je vous montrerai comment créer un contact et donc comment faire vos premières opérations avec Exchange.

Rédigé par grogru

février 26, 2010 à 8:21

Les webservices Exchange – Ajouter une référence aux webservices Exchange.

laissez un commentaire »

Celà fait bien longtemps que je voulais écrire une série d’article sur l’utilisation des services Exchange (ou EWS pour Exchange Web Services) constatant le peu d’abondance de ressources francophones sur le sujet.

Je vais donc commencer doucement mais sûrement cette série avec un article qui pourrait paraître anodin mais qui ne l’est pas forcément pour tout le monde.

Afin de commencer à programmer en utilisant les webservices Exchange il faut en rajouter une référence. (Non sans blague !). Ajouter une référence à ces services n’est pas forcément très intuitive. Mes exemples vont utiliser la version asmx de ces services (il me semble qu’il est possible de les consommer avec WCF mais je n’ai jamais tenté l’aventure). Sous les versions 2008 et 2010 (version RC à l’heure où j’écris ces lignes) l’ajout d’une référence asmx se déroule en plusieurs étapes.

Etape 1, lancer l’assistant d’ajout de référence de service

step1

Etape 2, cliquer sur le bouton “avancé”

step2

Etape 3, dans la section “compatibilité” cliquez sur “ajouter une référence de service”

step3

Etape 4, dans la barre d’adresse entrez l’adresse de votre serveur exchange dont le type est le suivant https://nomdedomaine/ews/Services.wsdl. Il se peut qu’on vous demande alors votre login et mot de passe pour accéder au serveur ainsi qu’une demande d’acceptation du certificat ssl.

Pensez à donner un nom intelligible à votre référence de service et cliquez sur le bouton “Ajouter la référence”

step4

Une fois tout ceci fait vous devriez avoir votre référence de service

step5

Le prochain tutorial vous expliquera comment vous connecter au serveur Exchange en utilisant ces webservices.

Rédigé par grogru

février 21, 2010 à 10:38

Une absence prolongée prenant fin en ce premier jour des Techdays 2010

laissez un commentaire »

Bien le bonjour à tous.

Comme le titre de ce billet pouvait le laisser entendre, Grogru est de retour sur la blogosphère. Et pour ceux qui n’auraient pas suivi Grogru c’est moi.

Alors pourquoi une telle absence ? Plusieurs réponses sont possibles à cela mais une seule est valide. Alors non je ne suis pas devenu papa, non je ne me suis pas marié, non je ne suis pas mort (preuve en est). J’étais tout simplement bien occupé par mon nouveau travail et par mes activités extérieures. J’ai cependant réussi à stabiliser mon emploi du temps ce qui devrait me permettre de rebloguer.

Mais pour bloguer encore faut-il avoir des choses intéressantes et utiles à dire. Ce n’est généralement ni une tâche aisée pour moi de trouver une idée, ni facile de bien présenter le sujet. Or avec l’arrivée des nouveaux produits Microsoft cette année je vais avoir matière à écrire.

Je vais donc continuer ce blog par un retour sur cette première (et dernière journée en ce qui me concerne car je dois bosser les autres jours) des Techdays 2010. Et maintenant donc le vif du sujet.

Lors de la plénière nous avons eu le droit à un petit aperçu fort bien présenté de System Center, Visual Studio 2010, l’agilité avec les tests unitaires via ce dernier et pour finir azure, le tout sur une ambiance jeu télé à la “Qui veux gagner des millions téras” et finissant sur la musique de “Never AFK”.

En ce qui concerne System Center j’ai retenu deux choses :

  • Gestion du déplacement des machines virtuelles à chaud sans que les utilisateurs de ces dernières ne s’en rendent compte (exemple prit d’une copie d’un gros fichier lors du déplacement de cette VM)
  • Gestion des polices droits d’exécution sur les applications (exemple du blocage de Windows Live Messenger par un administrateur)

En ce qui concerne Visual Studio et l’agilité j’ai appris que nous ne faisions pas de tests et que nous étions fainéants et qu’il fallait vraiment remédier à cela. Mais en fait c’est pas une nouveauté ;-)

Et en ce qui concerne Azure les deux principales choses que je retiendrai sont le fait de pouvoir déployer des projets dans d’autres langages que ceux du monde .NET (tels que PHP dont l’exemple nous a été monté) et la “version Cloud” de SQL Server dénommée SQL Azure interrogeable par des applis hors du Cloud (exemple d’une application en VB6 interrogeant une base SQL Azure).

J’ai ensuite assisté à la session de Mitsuru Furuta et Thomas Lebrun sur les nouveautés de WPF 4. Ils nous ont donc parlé de l’unification des différentes technologies de présentation (touch, Surface, souris multiples, speech, intégrations améliorés dans Windows 7), de l’orientation métier des applications et de l’alignement progressif avec Silverlight.

Thomas nous a ensuite montré de nouvelles fonctionnalités graphiques et/ou d’animations :

  • TextFormattingMode permettant de corriger les problème de lisibilité des textes lors de l’utilisation de polices de petites tailles
  • ClearTypeHint permettant de spécifier au moteur le type de lissage à effectuer.
  • LayoutRounding permettant de corriger certains problèmes d’affichages étranges avec WPF.
  • EasingAnimation qui fonctionnent comme en Silverlight
  • VisualStateManager qui fonctionnent aussi comme en Silverlight
  • Et ma préférée les CachedComposition qui permet de mettre en cache le Bitmap d’un contrôle afin que le layout ne soit pas recalculé à chaque frame tout en restant interactif ce qui se traduit par un gain de performance. Le principal problème étant le crénelage lorsque l’on zoom sur le contrôle.

La partie suivante de cette présentation s’est articulé autours des contrôles et des outils intégrés dans WPF 4 :

  • DataGrid, Calendar, DatePicker.
  • Editeur de ressources, de binding, palette de couleurs.
  • Custom Speller Dictionary permettant de fournir un dictionnaire de mots correctement orthographiés.
  • Ajout du Binding de commandes (probablement ma préféré du lot) qui nous evite donc la création d’une classe intermédiaire comme avant.
  • Binding sur les types dynamiques
  • Binding dans les FlowDocument \o/

La fin de cette session portait sur les interactions avec Windows 7 :

  • JumpLists personnalisables avec le support de la prévisualisation, lancements d’executables etc…
  • Multitouch, Manipulation comme ce qui pouvais se trouver dans le sdk de Surface

Pour conclure sur cette session je dirai que j’en suis très satisfait. Ayant eu a délaisser WPF plus que ce que j’aurai voulu ces derniers temps, je suis content de voir les améliorations et de voir que ce que j’ai appris sur Surface me sera utile avec l’api multitouch de Windows 7 et WPF 4.

Après une pause déjeûner fort courte et une recherche du stand de ma société j’ai pu assister à la session sur les nouveautés de C# 4. Cette session récapitulait et présentait les nouveaux concepts liés aux types dynamiques, aux paramètres nommés, à la co-variance et à la contra-variance ainsi qu’aux expressions.

Pour ce qui est des types dynamiques j’ai principalement pu noter les éléments suivants :

  • Conversion automatiques vers les types de retour attendus
  • Résolution des types, des propriétés, des méthodes
  • En C#, le mot clef dynamic est un alias vers le type DynamicObject
  • Introduction de l’ExpandoObject qui se comporte comme un objet en JavaScript

De nouvelles façon de passer des paramètres aux méthodes furent aussi présentés :

  • Les paramètres optionnels doivent toujours finir la signature des méthodes
  • Utiliser des paramètre nommés créer des dépendences sur les noms de ces derniers ce qui peut poser des problèmes en cas de refactoring.

A propos de la co-variance et de la contra-variance :

  • La co-variance et la contra-variance ne marche qu’avec les types génériques et les délégués
  • Une réécriture de la plupart des interfaces du framework de base ou la co-variance et la contra-variance avaient un sens a été faite (IEnumerable, IEnumerator, IQueryable, IComparer etc..)
  • Déclarer un type co-variant ou contra-variant se fait en jouant les les types de paramètres (exemple IMyGeneric<in T> ou bien IMyGeneric<out T>)

Cette session s’est terminé sur les expressions avec l’introduction succinte de leurs fonctionnalités (telle que la construction dynamique de lambdas par exemple) ainsi que sur le fait que Linq est désormais un sous-ensemble de la DLR.

S’en est suivi une session beaucoup plus “barbu” sur la programmation parallèle en C++. Session très interessante grâce à laquelle j’ai pu constater les points communs entre les Parallel Extensions et le code natif. Je ne détaillerai pas ici cette session car elle est hors sujet de ce blog mais j’essaierai de parler de la programmation multi-thread dans un autre billet de ce blog ou je soulignerai les liens entre le code natif et le code managé dans la gestion de cette dernière.

L’avant dernière session à laquelle j’ai pu assister est une session sur le futur de XAML :

  • Xaml a été déplacé dans System.Xaml.dll et est donc utilisable en temps que langage de sérialisation à part entière sans avoir à référencer les dll WPF dans les projets qui n’ont rien à voir avec ce dernier.
  • ValueSerializer pour générer des syntaxes raccourcies.
  • XamlReader et XamlWriter sont maintenant des classes abstraites dont dérivent les différents types de Reader/Writer Xaml (exemple XamlXmlWriter)
  • Convergence des différents types de parser Xaml, Xoml
  • Présentation des différents types de conversions à l’aide de Xaml (Binary, Object, Dom, Xml)

Une liste des améliorations de Xaml dont on nous as parlé :

  • Plus besoin de faire un import de mscorlib pour déclarer des types comme int, string etc…
  • x:TypeArguments support désormais les types génériques
  • Introduction de x:Reference pour le binding
  • Possibilité de passer des paramètres aux constructeurs des objets en Xaml grâce à x:Arguments ou x:FactoryMethod

Introduction d’un moteur de parcours/lecture/écriture de Xaml nommé XamlDOM (présent dans un toolkit du nom de Xaml Toolkit) :

  • Permet de générer du Xaml de manière plus concise
  • Supporte les requêtes Linq
  • Intégration avec FxCop (BaseXamlRule)

Et enfin présentation d’un nouveau moyen de localiser vos applications WPF/Silverlight avec x:Uid

Mistu nous as fait une démo ayant pour objet de sérialiser une Expression en Xaml et de l’évaluer. Une sorte de calculatrice assez inhabituelle dont le code est lisible en Xaml.

Pour résumer cette session on peux dire que Xaml est désormais un langage de sérialisation vraiment indépendant de WPF et donc utilisable dans divers types de projets. La création de sérialiseurs personalisés est assez triviale et permet donc de créer des raccourcis de notation un peu à la manière de {Binding Path=MyProperty} en WPF.

J’ai ensuite fini ma journée avec Coding4Fun qui m’a permis de bien rigoler et de me détendre en voyant :

  • un robot contrôlé par Silverlight 4 tenter de répérer les possesseurs d’Iphone dans la salle.
  • un tetris initialement développé sur Pocket PC jouable via des boutons tout moches dans la prévisualisation des programmes de Windows 7.
  • un device multi-touch custom communicant les informations de points par réseau via UDP à la manière bourrin et par system de fichiers (ce qui est encore plus bourrin à mon goût).

Bref une session techniquement amusante si je puis dire \o/.

Il est dommage que ces Techdays s’arretent pour moi en ce lundi 8 février, je me rattraperai avec les webcasts !

Rédigé par grogru

février 10, 2010 à 8:52

Windows 7 et le développement multi-touch

laissez un commentaire »

Aujourd’hui je vais vous présenter une astuce qui m’a été donnée par Roch Baduel pour pouvoir développer et tester des applications multi-touch pour Windows 7 même si l’on ne dispose pas d’un écran multipoint.

Tout d’abord il vous faudra télécharger et installer un driver multi-touch pour Windows 7. Rendez-vous dans la section téléchargement du projet MultiTouchVista sur CodePlex.

Une fois l’archive téléchargée et extraite allez dans le dossier Drivers de celle-ci et, selon la version du Windows 7 que vous avez installé, entrez dans le dossier correspondant (x32 pour les versions 32 bits de Windows 7 et x64 pour les versions 64 bits).

Il semble que pour installer le dit driver sur Windows 7 64 bits il faille activer les drivers auto-signés.

Lancez un terminal avec les droits administrateurs puis tappez :

BCDEDIT -set TESTSIGNING ON

Ensuite vous devrez redémarrer votre ordinateur.

Dans le dossier correspondant à votre version de Windows vous trouverez un script du nom de "Install driver". Lancez-le.

Un message d’avertissement apparaîtra pour vous prévenir que le fabriquant du driver est inconnu. Installez-le quand même.

driverwarning

Il faut maintenant installer le service de gestion du driver se nommant Multitouch.Driver.Service.exe se trouvant à la racine du dossier MultiTouchVista .

Lancez un "Visual Studio 2008 command prompt" avec les droits administrateurs puis naviguez jusqu’au dossier où se trouve le service et tappez :

InstallUtil Multitouch.Driver.Service.exe

Lancez le service en tappant :

net start "Multitouch driver"

A ce point du processus vous devriez avoir de gros points rouges s’affichant à l’écran tels que dans les captures d’écran ci-dessous et suivant votre/vos souris. A chaque point rouge correspond une souris.

Maintenant que vous avez installez les nécessaire vous pouvez lancez l’application Multitouch.Configuration.WPF se trouvant dans le dossier de MultiTouchVista.

Selectionnez "MultipleMice" sur le menu de gauche et cliquez sur le bouton "Configure device".

multitouchconfiguration

Une boite de dialogue s’ouvrira alors dans laquelle vous cocherez la seule checkbox qui s’y trouve.

multitouchconfigurationpopup

Félicitations vous pouvez maintenant utiliser, développer et tester des applications multi-touch sur Windows 7!

Rédigé par grogru

septembre 20, 2009 à 8:27

Publié dans Multi-touch, Tutorial, Windows 7

La Surface Academy c’est fini

laissez un commentaire »

Voici un article que j’aurai dû poster samedi dernier mais une pause s’imposais. En effet, la Surface Academy prit fin le 28 août. Les deux dernières semaines furent très intensives et j’avais besoin de récupération. C’est donc un bilan à tête reposée que je vais faire maintenant.

Travailler à Microsoft France fût probablement l’une des plus belles opportunités qui me furent offertes. J’ai passé deux mois très différents de ce que j’avais eu l’occasion de connaître lors de mes précédents stages. J’avais toujours eu l’habitude d’être entouré (au sens premier du terme) de développeurs et d’être très autonome sur les projets que j’avais a réaliser. Lors de la Surface Academy nous étions 5 profils très différents qui devions travailler ensemble dans un environnement de travail certes fabuleux mais entouré de personnes qui, pour la plupart, n’étais pas des développeurs.

Ce fût pour moi la chose la plus difficile à mon sens mais aussi l’aspect non-technique le plus intéressant du stage. Les brainstorming, les confrontations d’idées entre membres du groupes et personnes extérieures au groupe ont permis d’aboutir à quelque chose d’assez sympa à la fois visuellement, ergonomiquement et techniquement et ce malgré les hauts et les bas des relations entre nous cinq et du projet en lui-même.

Concernant les aspects technique j’ai évidemment beaucoup appris en WPF. J’ai aussi appris à utiliser Blend aussi (outil que j’avais plutôt tendance à fuir préférant écrire mon XAML à la main) et j’en suis somme toute très content. J’ai amélioré ma façon de concevoir des applications multi-touch et multi-utilisateurs.

Depuis la fin de ce stage il s’est passé beaucoup de choses. Niels et moi avons participé à la création d’un laboratoire Microsoft à Epitech avec d’autres étudiants intéressés. Nous devrions être en mesure de présenter un site internet orienté pour les développeurs .NET bientôt. Mon rôle dans ce laboratoire sera de rédiger des articles techniques, des dossiers, et de participer ou d’animer les présentations ou conférences que le laboratoire organiseras.

J’ai aussi trouvé un emploi chez MCNext à Paris. MCNext est un Gold Partner Microsoft et je vais donc pouvoir continuer dans un domaine qui me passionne.

Je garderai de ce stage un bon souvenir et je me souviendrai que c’est grâce à ce stage que j’ai réussi à me remettre en question et à améliorer ma communication et mes relations avec des personnes beaucoup moins ancrées dans la technique que moi. Je tiens aussi à remercier toutes les personnes qui fûrent présentes pour m’aider et travailler avec moi à Microsoft et qui me liraient.

Merci.

Rédigé par grogru

septembre 4, 2009 à 5:34

Publié dans Surface, Surface Academy, WPF

Comment concevoir une application Surface ?

laissez un commentaire »

Plus une application est facile et naturelle à utiliser, plus elle est difficile à concevoir et à développer. Derrière cette phrase se cache une réalité à laquelle sont confrontés à la fois les développeurs et les utilisateurs. Avoir l’interface la plus simple d’utilisation demande bien souvent beaucoup de temps et de ressources par rapport à ce qui est disponible. Inversement, utiliser une application à l’ergonomie désastreuse demande beaucoup de temps d’apprentissage et de formation ce qui est donc aussi coûteux en terme financier. Tout est donc toujours affaire de compromis entre les utilisateurs et les développeurs ce qui est bien plus souvent représenté par un compromis entre clients et fournisseurs.

Heureusement grâce aux outils fournis par le SDK de Microsoft Surface cette difficulté de développement est grandement atténuée. Le coût de développement d’une application bénéficiant d’une ergonomie naturelle est donc énormément réduit. Reste la difficulté de conception.

Dans le cadre du développement d’une application multi-utilisateurs et multi-touch comme dans Surface, la conception n’est pas beaucoup plus compliquée que dans celle d’une application Windows classique, c’est juste qu’elle est radicalement différente. Les problématiques d’interactions simultanées avec différents utilisateurs sont quasiment inexistantes avec des applications de bureaux standards, mais elles deviennent essentielles dans une application Surface. C’est ce changement qui est le plus difficile à intégrer, et c’est celui que nous avons réussi à surmonter la semaine passée.

Notre secret ?

Il n’y en pas en fait. Nous avons beaucoup échangé entre nous et avec d’autres. Le dialogue, les brainstormings, le côté ludique et amusant de s’imaginer l’application en fonctionnement en simulant les interactions sur une table basse ou un bureau aide à bien concevoir. Cela permet de couvrir tous les scenarii, et donc de poser les bases de l’architecture du logiciel.

Comment bien concevoir une application Surface alors ?

La réponse est : en échangeant beaucoup d’idées avec les autres.

Simple non ?

Rédigé par grogru

juillet 28, 2009 à 1:42

Publié dans Surface, Surface Academy

Quoi de neuf à la Surface Academy ?

avec 2 commentaires

Depuis notre arrivé à Issy-les-Moulineaux nous avions certes de magnifiques bureaux mais notre table Surface avait quant à elle subit quelques déboires pendant le déménagement. Microsoft a pu nous fournir une nouvelle table récemment et après avoir passé une semaine sans, nous étions heureux de pouvoir enfin tester nos applications ailleurs que dans le simulateur. Certains tests se sont bien passés et les applications marchaient comme prévu, d’autres en revanche nous ont obligés à les revoir.

Nous avons passé une bonne partie de ces derniers jours à réfléchir à notre sujet, à l’ergonomie, aux différentes manipulations possibles, à comment rendre tout cela le plus naturel possible pour l’utilisateur. Allant de brainstorming en brainstorming :
IMG_0058
Et de test en test :
IMG_0060 IMG_0062
Avec l’aide de Dick Lantim nous avons choisis de développer un jeu de cartes pour la table Surface et plus particulièrement un jeu de Poker.

Je pense que le bilan global de cette semaine est positif. Nous avons fait un choix quant à l’application à développer. Nous avons défini l’architecture globale du projet et nous savons que nous allons pouvoir réutiliser les composants que nous avions développés jusqu’alors.

Il ne reste plus qu’un mois maintenant et ça n’est pas le boulot qui va manquer !

Mais enfin bon après l’effort, le réconfort à la maison !

IMG_0047 IMG_0050 IMG_0051

Rédigé par grogru

juillet 26, 2009 à 9:00

Publié dans Surface, Surface Academy, WPF

Bilan des deux premières semaines à la Surface Academy

laissez un commentaire »

Après ce long week-end du 14 juillet au cours duquel nous avons eu le droit de faire le pont je reviens vous raconter comment se sont passées ces deux premières semaines à la Surface Academy.

On peux considérer que ces premiers jours ont été presque entièrement consacrés à mener différents tests sur Surface, WPF et surtout Blend en ce qui me concerne. Je commence à découvrir l’intéret de l’outil même si j’ai encore le reflexe d’aller modifier les valeurs qui m’interessent à la main dans le XAML. Quand on est habitué à developper sans prévisualiseur il est vrai que ca change! Parfois Blend génère du code étrange ou trop verbeux mais ca marche, c’est ce qu’on lui demande.

Je conseillerai quand même à tout les développeurs WPF de savoir tapper leurs XAML à la main sinon on peut avoir des surprises si l’on ne comprends pas ce que Blend génère. Il nous est arrivés plusieurs voir de voler au secours de notre chère designeuse car Blend oublie certaines choses comme retirer les dictionnaires de ressources de tout les endroits où ils sont utilisés (App.xaml par exemple) lorsque l’on supprime de l’arborescence.

Nous avons maintenant chacun nos tâches plus ou moins assignées. Ma première tâche va consister en la création d’un menu circulaire pour la Surface sous forme d’un style a appliquer sur les contrôles menus existants. C’est un exercice intéressant qui mèle des customs panels et de la modification de templates de contrôles existants (merci Blend!).

Je reviendrai vers vous pour vous signaler l’évolution de mon travail au cours des prochains jours.

A bientôt!

PS : Demain nous emménageons dans les nouveaux locaux à Issy-les-moulineaux et nous avons eu nos badges d’accès vendredi derniers (multipass!)

C’est beau non ? :-)

IMG_0049

Rédigé par grogru

juillet 14, 2009 à 8:14

Publié dans Surface Academy

Premier jour à Microsoft

laissez un commentaire »

Première journée chez Microsoft terminée. Les gens sont très sympa aussi bien mes collègues stagiaires que les employés qui nous ont prit en charge. Hier c’était une journee de formation sur l’architecture .net et plus particulièrement sur WPF animée par Dick Lantim. Après un repas bien consistant a la cantine on a pu découvrir les axes de recherches que nous allons devoir explorer pour choisir notre sujet. On a bien entendu pu jouer un peu avec la Surface :

Faire nos multipass :

Jeudi on nous prêteras des laptops pour bosser. Je vous en dirai plus sur notre sujet plus tard.

A bientôt.

Rédigé par grogru

juillet 2, 2009 à 6:15

Surface Academy

laissez un commentaire »

Il y a quelques temps Microsoft a proposé sur son site étudiants une offre de stage pour développer une application sur Microsoft Surface. Je m’étais porté candidat pour ce stage et j’ai eu aujourd’hui la bonne surprise de faire partie des cinq chanceux sélectionnés en France pour y participer.

Bref ce soir est une bonne soirée.

Rédigé par grogru

juin 24, 2009 à 8:04

Publié dans Surface