Répondre au problème d’affichage des contrôles Xamarin.Forms sur les applications UWP

Lorsque vous développez des applications Windows 10 (UWP) par l’intermédiaire de Xamarin.Forms et que vous compilez en release ou que vous publiez vos applications sur le store l’option « Compiler avec la chaîne de l’outil du code natif » (ou « Compile with .NET Native tool chain » en anglais) est activée afin d’améliorer les performances de votre application. Lorsque cette option -obligatoire pour la publication sur le store- est active, il peut arriver que Xamarin.Forms ne parvienne pas à charger les éléments de certaines assemblies, en particulier les classes de rendu. Vous pouvez par exemple être confronté à une carte qui ne s’affiche pas sur l’application publiée ou à une levée d’exceptions lors de l’instanciation de la carte si vous êtes en release dans Visual Studio.

L’article « Adding a Universal Windows Platform (UWP) App » de la documentation officielle Xamarin détaille la solution de contournement :

Target Invocation Exception » when using « Compile with .NET Native tool chain »
If your UWP app is referencing multiple assemblies (for example third party control libraries, or your application itself is split into multiple PCLs), Xamarin.Forms may be unable to load objects from those assemblies (such as custom renderers).

This might occur when using the Compile with .NET Native tool chain which is an option for UWP apps in the Properties > Build > General window for the project.

You can fix this by using a UWP-specific overload of the Forms.Init call in App.xaml.cs as shown in the code below (you should replace ClassInOtherAssembly with an actual class your code references):

// you'll need to add `using System.Reflection;`
List assembliesToInclude = new List();

//Now, add in all the assemblies your app uses
assembliesToInclude.Add(typeof (ClassInOtherAssembly).GetTypeInfo().Assembly);

//Also do this for all your other 3rd party libraries

Xamarin.Forms.Forms.Init(e, assembliesToInclude);
// replaces Xamarin.Forms.Forms.Init(e);
Add a reference to each assembly that is referenced by the app.

Dependency Services and .NET Native Compilation
Release builds using .NET Native compilation can fail to resolve dependency services that are defined outside the main app executable (such as in a separate project or library).

Use the DependencyService.Register() method to manually register dependency service classes. Based on the example above, add the register method like this:

Xamarin.Forms.Forms.Init(e, assembliesToInclude);
Xamarin.Forms.DependencyService.Register(); // add this

Pour continuer sur l’exemple de la carte, la classe à cibler est Xamarin.Forms.Maps.UWP.MapRenderer et non Xamarin.Forms.Maps.Map. La solution qui fonctionne est donc la suivante :

using System.Reflection;

var rendererAssemblies = new []
{
    typeof(Xamarin.Forms.Maps.UWP.MapRenderer).GetTypeInfo().Assembly
};

Xamarin.Forms.Forms.Init(e, rendererAssemblies);

Source : Forums Xamarin

Vous trouverez plus d’informations sur les articles MSDN « Compilation d’applications avec .NET Native » et « Prise en main de .NET Native »

Facebooktwitterlinkedinmail

Retour sur mes premiers mois en tant qu’employé Microsoft

Carte de visite

Suite à mes deux stages au sein de la branche Consulting de Microsoft, j’ai eu la chance d’intégrer l’entreprise en tant qu’employé « permanent ». Lorsque j’étais stagiaire, ma tâche principale était de développer les applications internes, mais depuis que j’ai intégré ma nouvelle équipe il est beaucoup plus complexe d’expliquer ce que je fais au quotidien car mes tâches sont beaucoup plus variées.

En général, je commence par dire que je travaille au support, les gens s’imaginent alors que je passe mes journées au téléphone derrière mon PC pour expliquer comment brancher des câbles. J’affine en expliquant que mon poste est Responsable Technique de Compte et là c’est souvent plus flou : « donc tu fais de la technique ? de la gestion de projet ? tu gères des hommes ? un budget ? »

Pour être plus précis, sur mon contrat de travail il est bien mentionné « Responsable Technique de Compte » et ce qui au niveau des outils RH de Microsoft se traduit par « Technical Account Manager » (TAM). Mais que fait le TAM ? Le Responsable Technique de Compte est une personne qui gère les contrats de Support Microsoft Premier (support « premium » à destination des entreprises) ainsi que les services délivrés chez le client qui y sont rattachés.

Je distingue volontairement la gestion de services et la gestion de projet car le support intervient généralement en phase de production et plus rarement en période de projet au sens classique du terme, mais ce n’est pas pour autant que le TAM n’aura pas à prendre les dimensions que l’on retrouve habituellement en mode « projet ».

Au final, le TAM est chargé de s’assurer que tout se passe pour le mieux sur les environnements de production de ses clients, et ce, toutes technologies confondues. Le TAM intervient donc aussi bien sur des questions réseau que système, virtualisation, cloud, base de données ou développement en proposant les services nécessaires pour assurer la qualité et la protection des infrastructures et applications informatiques.

Maintenant mon intitulé de poste au sein de Microsoft n’est pas exactement « TAM », mais « TAM ADM ». Quelle différence me direz-vous ? Même si le TAM est censé adresser tout type de problématiques, il en existe quelques variantes chez Microsoft : le « TAM ADM » en est une. L’ajout du terme « ADM » qui signifie « Application Development Manager », ou « Responsable du Développement des Applications » en français, désigne un TAM spécialisé sur les questions liées à l’ingénierie logicielle.

Cependant, l’ADM doit aussi être capable d’adresser toutes les technologies au même titre que le TAM, c’est pour cela que le titre complet est « TAM ADM ». Pour ce qui est des clients, ils peuvent avoir seulement un TAM, un TAM et un ADM ou uniquement un ADM cela dépend des problématiques qu’ils souhaitent couvrir grâce à leur contrat de support.

Le Responsable Technique de Compte assure également l’envoi d’informations proactives (en avance de phase) et le suivi des incidents pour en accélérer la résolution constituant ainsi le point de contact privilégié du client auprès du support. Le support technique en lui-même est réalisé par des ingénieurs support et des ingénieurs de terrain spécialisés par technologie.

Mes explications sont probablement incomplètes tant le métier est vaste. D’ailleurs, même si les grandes lignes resteront identiques, une autre personne vous donnera probablement une vision différente de ce métier passionnant.

En plus des activités « habituelles » de mon métier, j’ai en charge le développement et la migration vers le cloud Azure d’outils internes avec des stagiaires (Julien et Valentin) dont j’assure également l’encadrement. Je contribue par ailleurs à la rédaction, à la traduction ou à la relecture de communications clients et de documents tels que le livre blanc « Migration vers Internet Explorer 11 et compatibilité des applications d’entreprise ».

La description qui m’avait été faite du poste était très claire, et en l’acceptant je me demandais si la technique n’allait pas me manquer. Aujourd’hui, je peux dire que ce métier me convient parfaitement car je suis libre de pouvoir pousser la partie technique à ma convenance tout en intervenant également sur d’autres types de sujets.

Facebooktwitterlinkedinmail

Faire de la vidéosurveillance avec un serveur NAS Synology, un raspberry PI et une vieille webcam

Il y a quelques semaines, j’ai récupéré une vieille webcam, une Logitech QuickCam E 3500 pour être précis. Dans un tout autre objectif, j’avais également acquis un serveur NAS Synology DS214+ il y a quelques mois. Or Synology propose également à ses clients d’utiliser leur serveur comme station de vidéosurveillance grâce à Surveillance Station. Je me suis donc mis en tête d’utiliser ma vielle webcam USB pour faire de la vidéosurveillance avec mon serveur NAS.

Synology, Raspberry PI et  Webcam

C’est là que les ennuis commencent : Surveillance Station est conçu pour fonctionner avec des caméras de surveillance connectés au réseau et non avec un webcam branchée en USB. En faisant quelques recherches sur le net, je suis rapidement tombé sur d’obscurs logiciels permettant de faire fonctionner certaines webcam sur certains serveur Synology. Inutile de préciser que cette solution ne m’enchantait pas vraiment. J’ai également trouvé un article qui propose de se servir d’un Raspberry PI comme intermédiaire. Or il s’avère que j’avais dans mes cartons un Raspberry PI Modèle B 512 Mo, j’ai donc tenté l’expérience.

Certains diront sûrement, faire du stream vidéo avec la puissance d’un Raspberry PI, ne sont-ils pas fous ? Que neni mes amis, cela fonctionne parfaitement et nous allons voir comment le mettre en place.

Installation et configuration du Raspberry PI

Etape obligatoire : Installation du système d’exploitation Raspbian
La première étape est télécharger l’image du système d’exploitaiton Raspbian (dérivé de Debian pour le Raspberry PI) pour le placer sur une carte SD à destination du Raspberry PI (tutoriel officiel en anglais ou tutoriel en français).
Vient ensuite le moment du premier lancement, il vous suffit pour cela de brancher un écran, un clavier, une webcam et une prise réseau sur votre Raspberry PI. Il vous faudra probablement brancher ces périphériques avant d’alimenter le Raspberry PI car le plug and play ne fonctionne pas toujours. Si comme moi, vous disposez d’un Raspberry PI avec seulement deux ports USB, il sera plus pratique d’utiliser Raspbian en ligne de commande plutôt que d’utiliser un concentrateur USB ou que d’échanger la souris et la webcam. D’autant plus que l’absence d’interface graphique permet d’obtenir de bien meilleures performances et que les commandes que nous allons utiliser exclusivement la ligne de commande par la suite.

Etape obligatoire : Mettre à jour le système
Pour mettre à jour le système d’exploitation il faut taper successivement les deux commandes suivantes :

sudo apt-get update
sudo apt-get upgrade

Etape optionnelle : Changer la configuration de votre Raspberry PI
Pour rappel vous pouvez à tout moment changer la configuration de votre Raspberry PI à tout moment grâce à la commande ci-dessous, même s’il vous faudra probablement redémarrer pour que les changements soient effectifs. Vous en aurez probablement besoin si comme moi vous devez passer le clavier en disposition française et de régler le fuseau horaire.

sudo raspi-config

Et pour redémarrer le Raspberry PI :

sudo reboot

Etape optionnelle : Utiliser le SSH
Si vous souhaitez libérer votre écran et votre clavier, vous pouvez activer le serveur SSH qui est normalement déjà installé sur Raspbian. Cette action permet de rendre le Raspberry PI accessible à distance sur votre réseau local. Vous pouvez très bien utiliser le serveur SSH avec la configuration par défaut s’il n’est accessible que sur votre réseau local, mais il est généralement recommandé de changer le numéro de port (choisissez un port qui ne vous gênera pas) et de choisir les utilisateurs qui ont le droit de se connecter à la machine (blocage du login root, restriction des IP, …), …

Si vous souhaitez modifier la configuration par défaut, il vous faudra taper la commande suivante

sudo nano /etc/ssh/sshd_config

Puis vous devrez redémarrer le serveur SSH à l’aide de la commande

sudo service ssh restart

Sinon le simple démarrage du service suffit

sudo service ssh start

Si vous disposez d’un ordinateur sous Windows, il vous faudra ensuite télécharger PuTTY si vous souhaitez accéder au Raspberry PI à distance (documentation sur ubuntu-fr ou tutoriel sur OpenClassrooms).

Installation et configuration de motion

Etape obligatoire : Installer et configurer motion
Une fois le Raspberry PI correctement configuré, on peut utiliser le logiciel de détection vidéo motion qui permet également de diffuser le flux vidéo par le protocole HTTP (streaming).

Pour cela il suffit de saisir la commande suivante :

sudo apt-get install motion

Il faut ensuite configurer motion par l’intermédiaire du fichier prévu à cet effet :

sudo nano /etc/motion/motion.conf

Dans le fichier il faudra configurer la taille de l’image renvoyée par votre caméra (pour ma part la résolution native de la Logitech QuickConnect E 3500 est de 640*480) :

height 480
width 640

Il faudra ensuite autoriser le logiciel à fonctionner en arrière plan (daemon) :

daemon on

Il faut ensuite paramétrer la capture vidéo, certains paramètres affectent le streaming, d’autres l’enregistrement sur le Raspberry PI. Etant donné le faible espace de stockage sur le Raspberry PI il est absurde de vouloir enregistrer les images, d’autant que le Surveillance Station se chargera de l’enregistrement sur le serveur NAS. Nous pouvons donc désactiver l’enregistrement :

output_normal off

Accès au streaming en dehors du localhsot :

webcam_localhost off

Port sur lequel on souhaite rendre le serveur accessible (vous pouvez le changer pour utiliser un port qui ne vous gênera pas)

webcam_port 8081

La dernière étape de modification dans le fichier de configuration est de définir la qualité et le nombre d’images par seconde. Attention, plus vous choisirez des chiffres élevés, plus la consommation de ressources sera importante :

webcam_quality 75
webcam_maxrate 12

Une fois le fichier enregistré, vous pouvez lancer motion avec la commande :

sudo motion

Etape optionnelle : Résolution du message d’erreur « pid file »
Un message vous indiquant que motion démarre devrait alors s’afficher. Si jamais vous obtenez le message d’erreur « Exit motion, cannot create process id file (pid file) /var/run/motion/motion.pid », il vous faudra créer le répertoire en question à l’aide des commandes :

sudo mkdir /var/run/motion
sudo chmod a+rwxt /var/run/motion

Etape optionnelle : Lancement automatique de motion au démarrage du Raspberry PI
Modifiez le fichier à l’aide de la commande suivante pour automatiser le lancement de motion au démarrage du Raspberry PI :

sudo nano /etc/default/motion

Configurez le paramètre comme ci-dessous :

start_motion_daemon=yes

Configuration du routeur/de la box et vérification du flux

Etape optionnelle : Configurer le Raspberry PI avec une IP locale statique
Il peut être intéressant d’attribuer une IP locale statique au Raspberry PI afin de ne pas avoir à modifier l’adresse qui permet d’accéder au flux vidéo qu’il diffuse. Pour se faire, vous devez configurer le serveur DHCP présent dans votre routeur ou votre box (référez-vous à la documentation de votre appareil).

Etape obligatoire : Vérifier le flux vidéo
Vous pourrez ensuite accéder au flux vidéo au ouvrant un navigateur et en saisissant l’IP locale de votre Raspberry PI associé au numéro de port que vous avez choisi au préalable (http://192.168.uvw.xyz:8081) comme le montre la capture ci-dessous. Personnellement, j’ai rencontré quelques difficultés avec Internet Explorer et Google Chrome, je vous conseille donc le navigateur web Mozilla Firefox qui fonctionne très bien pour toutes les actions présentées dans cet article.

Visualisation du flux de la webcam

Etape optionnelle : Inclure le flux vidéo dans une page HTML
Il est possible d’inclure ce flux dans une page HTML à l’aide du code suivant :

<img src="http://192.168.uvw.xyz:8081" />

Configuration du serveur NAS Synology DS214+

Etape optionnelle : Configuration de QuickConnect sur le serveur NAS Synology
QuickConnect est un service gratuit pour les détenteurs de serveur NAS Synology qui permet d’accéder à leur appareil partout dans le monde très facilement : pas de NAT, de redirection ou d’ouverture de ports, de certificat SSL ou de VPN à configurer. Ce service s’active facilement dans le Panneau de configuration du serveur NAS, rubrique QuickConnect. Il suffit ensuite de créer un compte sur MyDS et d’y associer l’appareil à l’adresse choisie.

Synology QuickConnect

Etape obligatoire : Installation de Surveillance Station
Il faut ensuite installer Surveillance Station à partir du Centre de paquets (rubrique Sécurité) du serveur NAS comme le montre la capture d’écran ci-dessous. Une fois cette application installée vous pourrez l’ouvrir (celle-ci s’ouvre dans un nouvel onglet).

Synology Centre de paquets

Etape obligatoire : Configuration de Surveillance Station
Pour finir il suffit d’ajouter la caméra dans Surveillance Station en spécifiant l’IP locale de votre Raspberry PI associé au numéro de port que vous avez choisi au préalable. Le nom de la caméra est totalement arbitraire et vous permet de l’identifier si vous en avez plusieurs. Dans la liste de choix de la marque, sélectionnez « Défini par l’utilisateur », pour le chemin source saisissez « / » puis testez la connexion. Vous verrez alors apparaître le flux de la webcam dans l’encart de droit comme le montre la capture d’écran ci-dessous. A partir de ce moment vous n’avez plus rien à faire, Surveillance Station enregistre automatiquement le flux vidéo et assure la rotation des fichiers de vidéosurveillance pour vous.

Synology Surveillance Station

Etape optionnelle: Configuration avancée de Surveillance Station
Si vous souhaitez modifier la configuration de Surveillance Station (rotation des fichiers, plages horaires de surveillance, …) vous pouvez le faire à tout moment en allant dans l’application Caméra IP, puis en sélectionnant la caméra concernée et en cliquant sur Modifier comme le montre la capture d’écran ci-dessous.

Synology Gestion de la caméra dans Surveillance Station

Nous venons de voir comment transformer une vieille webcam en objet connecté qui permet de faire de la vidéosurveillance avec un serveur NAS. Il existe bien entendu de nombreuses techniques et configurations différentes pour aboutir au même résultat, n’hésitez pas à poster vos conseils ou questions en commentaires.

Facebooktwitterlinkedinmail

Recrutement des jeunes diplômés chez Microsoft

Chez Microsoft, le recrutement des jeunes diplômés en CDI passe par un programme spécifique, le programme MACH (Microsoft Academy for College Hires). Celui-ci est ouvert aux jeunes diplômés BAC+5 depuis moins d’un an. Ce programme constitue un réservoir de talents pour Microsoft, il peut donc mener à différents types de postes et se décline en trois branches :

NB : Le système de recrutement change régulièrement, vous trouverez en fin d’article le retour d’expérience d’un candidat passé en milieu d’année 2016.

  • MACH Marketing (Chef de produit, Responsable Marketing, …)
  • MACH Vente (Commercial, …)
  • MACH Technique (Consultant, Responsable technique de compte, Ingénieur support, …)

Sauf cas particuliers, le programme MACH est l’unique point d’entrée chez Microsoft France pour les jeunes diplômés. Ce programme dure deux ans et présente de nombreux avantages : accompagnement et formation renforcés, objectifs réduits, participations à des événements particuliers, …

En mai 2015, j’ai personnellement tenté l’expérience en postulant pour le MACH Technique afin d’intégrer Microsoft France en tant qu’Application Developement Manager (ADM). Mais concrètement, comment fonctionne le recrutement des jeunes diplômés chez Microsoft ? Certains auront peut être la chance d’être contactés directement par Microsoft, mais tout commence normalement par la recherche des offres auxquelles on souhaite postuler sur le site étudiants ou le site carrières que ce soit pour un poste précis ou pour le Talent Group (offre permanente/réservoir de talents).

Les personnes dont les candidatures ont été retenues sont ensuite convoquées à un Assessment Center, session de recrutement collective sur une journée, avec trois ou quatre autres candidats. L’Assessment Center pour le MACH Technique comporte trois épreuves :

  1. Le jury de motivation est une épreuve individuelle qui se compose d’une première phase où l’on présente son parcours sans interaction avec les membres du jury et d’une seconde phase d’échange (Présentation : 10 minutes, Echange : 10-20 minutes).
  2. La négociation collective est une épreuve impliquant la répartition des candidats en deux équipes : l’une représentant un éditeur de solutions logicielles, l’autre un partenaire vendeur de ces solutions. Dans le scénario, le partenaire remonte à l’éditeur des problèmes rencontrés par l’un de ces clients sur un logiciel. L’objectif est de chercher à résoudre le problème du client en instaurant une relation gagnant-gagnant et surtout d’éviter de tomber dans le piège de la décharge de responsabilité et ne pas chercher à trouver un coupable (Préparation : 30 minutes, Négociation: 20 minutes, Retour jury: 10 minutes).
  3. L’étude de cas est une épreuve individuelle où le candidat représente Microsoft et doit apporter des réponses à une problématique client comme il le ferait pour son futur poste. Cette épreuve comporte une phase de préparation d’une heure sur un PC prêté pour réaliser une présentation PowerPoint qui est ensuite déroulée devant le jury avant que celui-ci ne commence à poser des questions comme le ferait un client (Préparation : 60 minutes, Présentation: 10-15 minutes, Questions-Réponses: 10 minutes).

Entre ces épreuves les candidats peuvent bien sûr échanger leurs impressions et le repas de midi se tient en compagnie d’un ancien MACH (qui ne prend pas part au jury) afin de répondre aux interrogations des participants sur les deux années qui composent ce programme jeunes diplômés.

A l’issue de la journée, le résultat de l’Assessment Center est dévoilé de façon individuelle à chaque personne. Les candidats retenus peuvent se voir proposer un poste immédiatement auquel cas ils passeront un ultime entretien avec un manager de managers (souvent le futur n+2) avant de signer le contrat en cas d’avis positif.

Retour d’expérience d’un autre candidat au programme MACH (mi-2016)

Étape 1 – Le début de l’aventure

Probablement l’étape la plus importante lorsqu’une personne postule au sein de Microsoft France. Les personnes qui souhaiteraient se lancer dans l’aventure sont invitées à se rendre à l’adresse suivante et à la garder précieusement dans leurs favoris: https://eu5.advorto.com/MicrosoftGraduatesFR/Login.aspx

Une note concernant l’enregistrement que vous effectuerez sur ce site, vous allez renseigner un e-mail et un mot de passe. Si jamais vous renseignez un e-mail Microsoft (ex: @outlook.com, @hotmail.fr, etc.), le mot de passe à inscrire n’est pas le mot de passe de votre e-mail, vous pouvez choisir n’importe quel mot de passe, il s’agit véritablement d’une étape d’inscription à part.

 

Étape 2 – Les informations lambdas

Renseigner les informations demandées, il s’agit des informations habituelles, nom, prénom, adresse, écoles, etc. Uploader votre CV. Une fois que vous aurez rempli ces informations, vous aurez directement accès à un questionnaire.

 

Étape 3 – Le test de personnalité partie 1

Le questionnaire consiste en une série de « questions ». Chaque question décrit une situation, et 5 choix vous sont proposés. Vous devez classer ces choix en fonction de ce que vous êtes le plus susceptibles de faire en face de la situation décrite. Il me semble que vous avez 8 situations présentées. Pas de limite de temps par question, mais une limite de temps global.

Ce premier questionnaire d’après ce que j’ai compris va être examiné par les ressources humaines, ils détermineront en fonction de votre CV et des réponses apportées si vous pouvez continuer l’aventure.

Pour vous donner une idée du type de question: votre manager vient de changer, comment allez-vous réagir?

– Vous lui sautez dans les bras et en faîtes votre meilleur ami.

– Vous lui serrez la main froidement, de toute manière l’ancien était meilleur.

 

Étape 4 – Le test de personnalité/éloquence partie 2

Cet entretien consiste à vous filmer pour répondre à des questions qui vont vous être posées. 8 questions, 45 secondes de préparation pour chacune, 2 minutes maximums pour y répondre.

Les questions ressemblent en partie à ce que vous aurez rencontré lors de la première série de questions format QCM.

 

Étape 5 – Entretien physique/téléphonique

Si vous avez réussi à convaincre les recruteurs, vous allez avoir un rendez-vous Skype ou en personne de proposer par une personne des ressources humaines. Cet entretien est presque le dernier. Faites-vous beau, et préparez-vous aux questions typiques d’entretien de ce genre. Exemple: Qu’apportez-vous à notre entreprise ?

 

Étape 6 – Les assessments, le défi, le big day

Félicitations, le grand jour est arrivé, vous avez réussi à passer les obstacles que Microsoft avez dressé devant vous. Maintenant il ne vous reste plus qu’une matinée/après-midi de défi à relever. Cette demi-journée ou journée selon l’organisateur, consiste à vous mettre en compétition face à d’autres candidats pour le poste que vous souhaitez intégrer. Les épreuves peuvent varier, voici ce que j’ai vécu:

 

Épreuve de groupe: Vous êtes 4 candidats dans une pièce, le jury vous observe (3 à 5 personnes + RH). Une question vous est donnée et vous devez travailler en groupe afin d’y répondre. Vous aurez 30 minutes pour cet exercice décomposé ainsi:

– 5 minutes de brainstorming avec vos camarades.

– 15 minutes pendant lesquels des informations supplémentaires à prendre en considération vous sont données.

– 5 minutes pour attribuer le rôle de chacun

– 5 minutes de restitutions pour argumenter vos choix face au jury

Le but de cette épreuve est d’observer vos capacités de travail de groupe, votre leadership, etc.

Jury de motivation personnelle: Seuls face au jury, vous avez 10 minutes pour vous présenter et donner vos motivations pour intégrer Microsoft. Ensuite 20 minutes de questions/réponses.

Study Case: Lors de votre convocation à l’assessment, vous recevrez également un study case, vous invitant à préparer un poweperpoint de maximum 6 slides afin de présenter un produit Microsoft désigné face à un client. Vous aurez environ 5 jours pour préparer vos slides qui seront à envoyer au recruteur quelques jours avant l’assessment.

Vous aurez rapidement les résultats après cette journée.

Nouvelle plateforme de recrutement à partir d’avril 2017

Les candidats sont invités à postuler à l’adresse https://microsoft.recsolu.com/external/jobs à partir du mois d’avril 2017.

Facebooktwitterlinkedinmail

Retour sur les TechDays 2015

TechDays 2015

Cette année, j’ai eu la chance de pouvoir passer trois jours aux Microsoft TechDays et je ne pouvais pas rater l’occasion de vous résumer cette aventure.

Nous avons commencé par une première journée axée développement :

Puis une deuxième journée sous le signe du Cloud avec :

  • 9h15 : « Cloud & Mobile, venez comme vous êtes »
  • 12h15 : « Quels services Azure pour mon application web ? » une excellente explication des possibilités d’Azure pour héberger un site web
  • 15h15 : « Application web hautement évolutives sur Azure »
  • 17h45 : « ASP.NET Web API & Azure API Management » (à voir) ou comment déployer des outils surpuissants en trois clics

Et enfin une dernière journée orientée Machine Learning :

  • 9h15 : « Vers une technologie invisible et une intelligence omniprésente ? » un tableau inquiétant de paysage technologie à venir
  • 11h00 : « Démystification du Machine Learning » (à voir), une présentation parfaite de ce principe novateur
  • 14h00 : « Comment déployer et gérer dans le cloud Azure les environnements de développement et de test en un clic ? »
  • 15h15 : « Malware Unchained » (à voir) aka la Coding4Fun des IT

Vous l’aurez compris, nous avons eu le droit à une très belle édition 2015 des Microsoft TechDays.

Facebooktwitterlinkedinmail

La transformation de configuration avec ASP.NET

Explorateur de fichiers - Web.configJe me suis récemment penché sur un sujet qui m’intéresse depuis longtemps : la transformation de configuration avec ASP.NET. Ce terme abstrait n’évoque peut être rien de familier au premier abord, mais vous y aviez sûrement déjà songé si vous ne vous en servez pas encore. Il s’agît tout simplement d’automatiser le changement de paramétrage suivant l’environnement de déploiement en se basant sur le fichier Web.config. Par défaut, Visual Studio propose deux profils (Debug et Release) ainsi que les fichiers Web.Debug.config et Web.Release.config qui les accompagnent, mais il possible d’en rajouter.

A quoi ça sert ?

Pour mieux comprendre prenons par un exemple un système de log. Si votre application est équipée d’un tel dispositif (et elle devrait l’être, si ce n’est pas encore le cas je vous recommande l’excellent log4net), il est fort probable que vous souhaitiez enregistrer d’avantage d’informations sur les environnements de développement et de test que sur ceux de productions. Vous utiliserez donc des niveaux de logs permettant de choisir le niveau d’information que vous souhaitez enregistrer. Mais gérer ce type de paramètre manuellement en fonction de l’environnement de publication serait vite contraignant et source d’erreur. C’est là qu’intervient la transformation de configuration avec ASP.NET.

Comment le mettre en place ?

Nous l’avons vu avant, les fichiers Web.Debug.config et Web.Release.config sont déjà créés par Visual Studio et placés sous la racine que représente le Web.config que vous avez déjà l’habitude d’utiliser. Ces fichiers sont tous trois des fichiers XML, mais les fichiers de Web.Deubg.config et Web.Release.config vont s’appuyer sur un référentiel XDT (XML Document Transform, sorte XSLT revisité par Microsoft) pour transformer le fichier Web.config d’origine.

Ce dernier ne sera donc pas automatiquement remplacé ou écrasé par un autre fichier mais bien transformé suivant les indications présentes dans les fichiers spécifiques. Autre particularité, votre application doit faire l’objet d’un déploiement pour que les fichiers Web.Deubg.config et Web.Release.config, une simple génération sur l’IIS Express de votre environnement de développement ne sera pas suffisante.

Concrètement si vous souhaitez modifier un couple clé-valeur présent dans les appSettings de votre Web.config lorsque votre applicaiton tourne en Release, vous pourriez utiliser le code ci-dessous dans votre fichier Web.Release.config. Celui-ci va rechercher la correspondance sur la clé d’un élément contenu dans les appSettings (attribut xdt:Locator= »Match(key) ») puis procéder à son remplacement complet (attribut xdt:Transform= »Replace »).

<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <appSettings>
    <add key="LogLevel" value="ERROR" xdt:Transform="Replace" xdt:Locator="Match(key)" />
  </appSettings>
  <system.web>
    <compilation xdt:Transform="RemoveAttributes(debug)" />
  </system.web>
</configuration>

J’ai bien dit vous « pourriez » car il existe plusieurs façons (plus ou moins adaptées suivant les cas d’utilisation) de transformer le Web.config. Tous les attributs de transformation sont listés sur le MSDN, libre à vous de rechercher et d’utiliser le plus adpté à vos besoins.

Fichiers Web.config

J’ai précédemment évoqué le fait que le IIS Express de votre environnement de développement n’appliquait pas les transformations peut importe le mode de génération choisi, il existe bien entendu des solutions de contournement, la plus simple étant de placer sa configuration de développement dans le Web.config qui lui est toujours pris en compte, laissant les autres configurations pour les cas où vous effectuerez une réelle publication.

Si vous souhaitez plus d’information sur la transformation de configuration avec ASP.NET, je vous invite à consulter la documentation officielle.

Pour une gestion plus complète du cycle de vie de l’application (ALM), vous pouvez envisager l’utilisation de Release Management pour Visual Studio.

Facebooktwitterlinkedinmail

Visual Studio 2013 – Chapitre 3 – Le retour des extensions

Suite à mon premier article sur les extensions de Visual Studio 2013, je souhaitais vous présenter deux extensions supplémentaires.

Assistant Visual Studio
La première est très récente puisqu’il s’agît de l’Assistant Visual Studio sorti en cette fin d’année 2014. Ce projet Microsoft 100% français a été réalisé par Pierre LAGARDE, Etienne MARGRAFF et Nicolas RIVIERE. Cette extension permet de visualiser des tutoriaux directement sur Visual Studio avec toutes les possibilités que cela offre (positionnement de la fenêtre dans l’IDE, interaction directe du tutoriel vers l’IDE via des boutons, …). L’assistant s’ouvre très facilement grâce au petit trombone présent dans la barre de menu Icone de l'Assistant Visual Studio
Assistant Visual Studio

Cette extension fonctionne avec les tutoriaux au format .mvax ; il s’agît en réalité d’archives comportant au moins un fichier HTML et éventuellement un fichier CSS et un fichier JSON. Plusieurs tutoriaux au format .mvax sont déjà proposés sur le OneDrive de l’équipe.

Pour ma part je vois déjà deux applications possibles à cette extension : la possibilité pour chacun de se former plus facilement avec des cours proposés par la communauté visualisés directement au sein de l’IDE et la possibilité pour les organismes de formation de préparer leurs séances de TP ou Workshops en ce basant sur l’extension pour guider les apprenants. Pour tout vous dire, j’espère même secrètement une intégration à la MVA (Microsoft Virtual Académie) avec la possibilité de télécharger directement les tutoriaux de la plateforme au format .mvax, mais soyons patients, nous verrons bien ce que cet outil nous réserve pour l’avenir.

Web Essentials

A l’heure où j’écris cet article Web Essentials couvre quatre versions de Visual Studio de la 2010 à la 2015. Cette extension a pour principal objectif de fournir des outils pour simplifier le développement web (HTML, CSS, LESS, SASS, JavaScript, CoffeeScript, …). Un certain nombre des fonctionnalités de cette extensions ont été intégrées directement à l’IDE (et donc retirées de l’extension), c’est notamment le cas du « Browser Link » (« Lien de navigateur » en français) qui a fait son apparition dans l’Update 4 de Visual Studio 2013 (cf. Changelog). Cette « nouveauté » peut d’ailleurs occasionner quelques problèmes de performances (merci à William pour l’info), mais il suffit de désactiver le « Browser Link » pour retrouver un fonctionnement normal (encadré en orange sur la capture d’écran ci-dessous).

Web Essentials - Visual Studio 2013 Update 4

Pour le reste, je vous laisse consulter la liste des fonctionnalités sur le site officiel ou télécharger directement l’extension !

Facebooktwitterlinkedinmail

Contenu multimédia & Responsive design

Si vous travaillez régulièrement sur des sites web utilisant du contenu multimédia (comprenez images et vidéos), vous avez obligatoirement été confronté à la problématique de redimensionnement des éléments que vous affichez. Et l’arrivée du responsive design n’a pas arrangé les choses.

Les images

La solution concernant les images est relativement simple puisqu’elle tient en une seule ligne de CSS grâce à la propriété « max-width » qui fixera la largeur maximale de l’élément concerné (en l’occurrence l’image) à la largeur de son parent (ci-dessous le paragraphe).

p img {
    max-width: 100%;
}

On pourrait songer à appliquer le même principe sur une vidéo et techniquement parlant ce n’est pas faux, malheureusement cela aura une incidence sur la présence d’éventuelles bords noirs supplémentaires sur la vidéo car la taille du lecteur ne sera plus adaptée au ratio de la vidéo affichée.

Les vidéos

Les plus ingénieux penseront immédiatement à une solution en JavaScript pour adapter dynamiquement la hauteur de la vidéo à la largeur occupée, mais il existe une technique full CSS relativement simple pour palier à ce problème : le padding ! En effet, si on créé un élément conteneur pour la vidéo est qu’on y applique un padding-bottom correspondant au ratio de la vidéo (56,25% pour du 16:9), on obtient une vidéo qui se comportera de façon parfaitement responsive.

.video-container {
    width: 100%;
    height: 0;
    padding-bottom: 56.25%;
    overflow: hidden;
    position: relative;
    background: #000000;
}

    .video-container iframe {
        width: 100%;
        height: 100%;
        position: absolute;
        top: 0;
        left: 0;
    }

L’exemple ci-dessus fonctionne pour les vidéos YouTube qui utilisent des iframes, mais on peut utiliser la même technique pour les sites qui incrustent leurs vidéos dans des balises de type « object » ou « embedded ».

Facebooktwitterlinkedinmail

Agile Tour 2014 – Strasbourg

Avant d’expliquer ce qu’est l’Agile Tour, il peut être intéressant d’effectuer une piqûre de rappel sur les méthodes agiles. Ces dernières trouvent leur fondement dans l’Agile Manifesto, il s’agît de méthodologies recensant différentes pratiques applicables pour la gestion de projet de développement informatique. La plus connue des méthodes agiles est probablement Scrum, il n’est d’ailleurs pas rare qu’une personne parle en réalité de Scrum lorsqu’elle évoque un projet avec une approche agile.

L’Agile Tour est une série d’événements à but non-lucratif ayant pour objectif de promouvoir les méthodes agiles auprès des professionnels impliqués dans des projets informatiques. Ces événements se déroulent chaque année d’Octobre à Décembre, tout autour du monde. En cette après-midi du jeudi 23 septembre 2014, il était donc possible d’assister gratuitement à plusieurs conférences sur le sujet pour ma part voici le programme que j’ai suivi :

  • 13h00 : Arrivée sur place
  • 13h30 : Les différentes conférences proposées nous ont été présentées par les speakers
  • 13h45 : Conférence « Outiller son processus et rester Agile ? C’est possible ! » par Etienne MARGRAFF très bien illustrée par l’histoire fictive de John un responsable de projet un peu fou qui souhaite créer un réseau social pour les chats.
  • 14h30 : Cédric LEBLOND présente « Ma stack d’outils agiles, tout un programme ! » avec de nombreux outils utiles dans un contexte Agile.
  • 15h30 : Petite pause autour d’un café
  • 16h00 : Une approche participative et collective (coding-dojo) très intéressante pour la conférence « Apprendre le TDD en coding-dojo » réalisée par Xavier NOPRE
  • 18h00 : Retour à la maison après une après-midi très enrichissante.

Vous l’aurez compris, j’ai grandement apprécié cette après-midi et je ne peux que vous encourager à y assister l’an prochain en espérant que cet événement perdure comme c’est le cas depuis 2008.

Facebooktwitterlinkedinmail

Après 6 mois chez Microsoft

MCS

Quelques jours après mon arrivée chez Microsoft pour mon stage de 4ème année j’avais écrit un article avec mes premières impressions, il en fallait bien un second pour dresser le bilan de ces 6 mois passés au de l’équipe de Resources Management de Microsoft Consulting Services.

Mais qu’ai-je donc fait pendant 6 mois chez Microsoft ?

La réponse est simple : j’ai travaillé sur l’amélioration des outils du Resources Management. J’ai donc eu à mener deux projets, la premier concerne la réalisation d’un outil de gestion et de recherche des compétences sombrement intitulé « MIS » pour « Missions & Skills ». Il s’agît d’une application web reposant sur les technologies ASP.NET et Entity Framework qui permet de matérialiser avec une grande précision et beaucoup de souplesse la connaissance des Resources Managers sur les compétences des 160 consultants de Microsoft France.

Microsoft - Missions & Skills (ASP.NET)

Microsoft – Missions & Skills (ASP.NET)

Le second projet était d’avantage orienté sur les ressources externes puisqu’il s’agît d’une application permettant aux Managers de Microsoft qui gèrent les projets clients d’effectuer des demandes de sous-traitance. Cet application également basée sur ASP.NET et Entity Framework se nomme « AskRM » pour « Ask Resources Management ».

Microsoft - AskRM (ASP.NET)

Microsoft – AskRM (ASP.NET)

Ce stage m’a donc donné l’occasion de découvrir une autre facette du web chez Microsoft : l’ASP.NET (avec Entity Framework), mais aussi d’approfondir mes connaissances sur le Framework .NET, LINQ, IIS, SQL Server, TFS et bien d’autres points…

J’ai également eu la chance d’être lauréat au concours interne « Build your app featuring Siena », avec l’application Microsoftee Perosnnal Assistant dont l’objectif était de regrouper des informations utiles aux employés de Microsoft (Météo, Cours de l’action MS, Actualité informatique, Veille technologie, Evénements, Horaires de navettes, …). Cette victoire m’a d’ailleurs permis de remporter un Lumia 930, que je vous recommande chaudement.

Certains m’ont également demandé : « Alors c’est comment Microsoft ? »

Je dirais simplement que c’est génial ! Le fait de travailler sur des technologies Microsoft est déjà un plaisir en soi car les outils proposés sont généralement simples à mettre en place, nécessitent peu de configuration et offrent énormément de possibilités donc pas de perte de temps sur l’installation de son environnement de projet, mais en travaillant chez Microsoft tout cela prend encore une dimension. Au delà de l’accès aux nombreux outils de la firme, les employés peuvent accéder à des logiciels développés par des tiers et à de nombreux équipements, les initiatives sont donc largement soutenues.

Les employés sont également au centre de toutes les attentions : les victoires sont célébrées tous niveaux hiérarchiques confondus, de nombreux services sont proposés quotidiennement (Restaurants d’entreprise, Cafétérias, Conciergerie, …).

Pour finir, j’ai eu la chance d’intégrer une équipe formidable avec des personnes réellement passionnées par leur métier et où régnait une très bonne ambiance.

C’est tout ça et bien plus Microsoft !

Facebooktwitterlinkedinmail