Archive

Posts Tagged ‘.Net’

Tablet low cost Android et le mode développeur ….

Vous avez acheté une tablette Android Low cost récente (Android 4.2, 4.3 ou 4.4) pour vos dev (Xamarin .Net pour moi, mais c’est valable pour d’autres technos aussi), et vous avez un coup de stress car vous ne trouvez pas les "options pour les développeurs" dans la config …

Pas la peine de pester contre l’hypermarché où vous l’avez acheté (enfin … si, mais pour d’autres raisons), c’est normal : elles ne sont plus accessibles directement (pour éviter que Mr Lambda ou Mme Michu fasse n’importe quoi ?!? ).

Pour y accéder :

  • ouvrez la partie configuration d’Android,
  • sélectionnez "A propos de la tablette"  (About tablet), la partie droit de l’appli affiche les informations de version
  • tapez 7 fois sur le "Numéro de BUILD" pour activer le mode développeur (ma tablette en Android KitKat 4.4, m’affiche un compte a rebours a partir du la 4e ou 5e touch)
  • Sélectionnez le menu "Options pour les développeurs" qui est maintenant visible au dessus du menu "A Propos de la tablette".
  • En haut à droite de l’écran, une checkbox est sur "Non", touchez la pour passer à "Oui", la tablette vous demande confirmation pour "Activer les paramètres de développement" … confirmez.
  • Vous pouvez maintenant cocher l’option "Debogage USB" ou activer les autres options qui vous sont nécessaires.

A vos devs !

 

ps : si vous ne voyez pas la tablette dans vos environnements de dev, reportez vous à ces 2 billets :

Xamarin.Forms et les ressources graphiques embarquées – Tip & Tricks & Warning

Lors de la création d’une solution Xamarin.Forms ( 3 projets spécifiques à chaque plateforme mobile, et un projet commun) , la gestion des images et des ressources embarquées (Embedded Resources) est un peu déroutante (même les forums Xamarin ne sont pas d’une aide énorme :( et témoigne d’un certain flou sur ce sujet).

Dans tout projets mobiles, il a des ressource graphiques (image, icône, vidéo, audio) qui doivent être insérées dans votre projet.

Quand on fait du spécifique , on ne se pose pas de question. Avec les Xamarin.Forms, il y a plusieurs possibilités et plusieurs manières de gérer les ressources, avec des variations sur leur utilisation dans le code.

La première question à se poser :

  • Est ce un élément spécifique à une plateforme mobile ? Ex : l’image de splashscreen d’une application Windows Phone
    ==> l’élément doit être placé dans le projet propre à la plateforme , et les différent option de compilation spécifique utilisé (Content pour Windows Phone, Android Resource, Bundle pour Android) …
  • Est ce un élément commun utilisé par la partie Xamaring.Forms de l’application ? ex : des images qui compose les écrans, …
    ==> l’élément doit être placé dans le projet commun ( le projet PCL ou le Shared Project) et l’option de compilation positionné à "Embedded Resource"

Ensuite, l’utilisation de cette ressource embarquée (Embedded Resource) passe par l’utilisation de son nom de ressource. Or, dans ce le cas de Xamarin pour Visual Studio, il n’est pas possible de connaître dans l’IDE le nom de la ressource.

Un petit coup de JustDecompile permet de comprendre la règle de nommage des ressources embarquées (dans le cas d’un projet Portable)  :

  • NomDuProjet.Folder1.Folder2.NomDuFichier

 

XaraminFormsResourcesWithPCLProject

Ainsi pour une image appelée ( SplashScreen_720x1280.JPG), placée à la racine du projet "MonProjetDemoXF", son nom de ressource sera "MonProjetDemoXF.SplashScreen_720x1280.JPG", et pour une images "Logo.JPG" placé dans le dossier "Images" du même projet, son nom de ressource sera "MonProjetDemoXF.Images.Logo.JPG"

 

La création d’une view Image utilisant cette image se fera avec le bout de code suivant :

    new Image() {
         Source = ImageSource.FromResource("MonProjetDemoXF.SplashScreen_720x1280.jpg")
            }

 

MAIS ATTENTION : il s’agit de la règle générale (prendre le nom du projet en préfixe et les sous dossiers). Dans le cas d’un projet commun de type "Portable Class Library", le cas présenté ci avant est exact. Lors de la compilation, le projet PCL génère sa propre assembly et les règles de nommage découle de cette assembly.

MAIS dans le cas d’un "shared project", il n’y a pas de compilation du shared project en tant que tel (pas d’assembly généré), mais une fusion des sources du ‘shared project’ avec les sources du projet le référençant, puis la compilation du résultat de cette ‘fusion’. Ce comportement implique que le nom du projet utilisé pour générer le nom de la ressource est celui du projet référenceur. Or, les projets mobiles ont des noms différents pour chaque plateforme : "MonProjet.WinPhone", "MonProjet.iOS" et "MonProjet.Android", ce qui implique que la ressource issue du ‘shared project’ a un nom différent pour chaque plateforme !!!

De plus, les noms des sous dossiers ne sont pas repris dans le nom de la ressources !!

XaraminFormsResourcesWithSharedProject

 

Voilà : à l’usage on verra quelle solution est la plus performante, mais en terme de réutilisabilité et de testabilité le projet PCL permet d’éliminer les aléas de nommages des ressources.

Xamarin 3 Rocks ! (quand même :) ).

 

QuidMind sera présent à la conférence Innorobo à Lyon du 23 au 25 Mars 2011 – “du Servo au cerveau”

En partenariat avec Microsoft, QuidMind sera présent lors de la conférence Innorobo à Lyon du 23 au 25 Mars 2011. Venez y découvrir nos travaux de R&D sur la thématique du cloud dans un environnement robotique "Clorofeel, the social robot" basé sur les technologies Microsoft .Net, Windows Azure, AppFabric Service Bus, Windows Phone 7

Liens web :

Déployer votre propre Machine virtuelle dans Windows Azure (1/2)

Dans ce billet , un peu plus long que d’habitude, je vous propose de faire un point une des nouvelles fonctionnalités Azure annoncé lors de la PDC 2010 : l’hébergement de machine virtuelle directement dans les datacenters d’Azure.

Il y a 4 pré-requis :

  1. Avoir un abonnement Azure valide AVEC les fonctionnalités Beta (VM Rôle) d’activé
  2. Avoir une machine virtuelle basée sur Windows 2008 R2 64bits.
  3. Avoir les licences des logiciels à installer sur la machine virtuelle Sourire

Licences logicielles et Ressources Windows Azure :

L’ensemble des licences logicielles utilisée dans le cadre de cette article provienne de mon abonnement MSDN (Windows 2008 R2, Azure, Visual Studio 2010, …) : http://www.microsoft.com/visualstudio/en-us/products/2010-editions/ultimate ) . Les abonnement MSDN (Premium, Ultimate et Bizspark) incluent des ressources Azure pour le développement (http://msdn.microsoft.com/fr-fr/subscriptions/ee461076.aspx).

Pour l’activation des avantages Windows Azure de votre abonnement MSDN, je vous recommande la lecture de ce billet écrit par Marine Tranquard.

 

Fonctionnalités Bêta de Windows Azure

L’activation des fonctionnalités Béta de la PDC (VM Role, Windows Azure Connect, …) se fait en ligne sur le site d’administration de votre souscription Azure : https://windows.azure.com

  1. Sélectionner la panneau “Home”
  2. cliquez sur l’option “Beta Programs”
  3. Cliquez sur “Participate”

image

Une fois la demande de participation aux programmes Bêtas effectuée … il peut s’écouler plusieurs jours (voir semaines Triste ) avant que vous n’obteniez l’accord. Tout dépend des ressources disponibles pour ces Betas au sein des datacenters Azure. Donc n’attendez pas, faites la demande dès maintenant !

Au passage, notez l’Id de votre souscription Windows Azure, il vous sera utile par la suite.

 

Création de l’image Windows

Une image Windows pour Azure doit être basé obligatoirement sur une installation de Windows 2008 R2 64bits. L’image doit être créer au préalable sur une des vos serveurs HyperV (en effet l’hyperviseur de virtualisation utilisé dans les data center Azure dérive d’HyperV).

Je ne rentrerai pas dans le détail de cette phase car il  n’y a pas de différence avec la création d’une VM classique dans Hyper-V. Je vous conseillerais néanmoins d’utiliser un disque différentiel qui vous permettra de télécharger une fois pour toute le disque de base  et ensuite uniquement des disques différentiés pour vos instances spécifiques.

Un seul point est important : votre disque VHD doit avoir une taille logique maximum de 66559Mo, sinon il sera refusé par Azure.

Dans le cas de ce billet, il aura donc :

  • un disque de .VHD de base (2008R2_EN_base.vhd) qui contient une installation fraiche de Windows 2008 R2 avec l’ensemble des mise à jours Windows Update.
  • un disque .VHD différentiel (SPECIFIQUE_Azure_DIFF_W2008R2_EN.vhd) qui contient les éléments spécifiques à déployer.

Astuces :

  • N’hésitez pas à activer le bureau a distance d’administration (Remote Desktop)
  • Activez la fonctionnalité “.Net Framework 3.5.1” dans vos VM de base car ce composant sera nécessaire par la suite :

feature .NET 3.5.1

 

“Azurification” de la VM

 

Une fois votre VM prête, il faut la préparer à tourner dans Azure en installant une couche logiciel d’intégration : les “Azure VM Role Integration Components”. Cette couche logicielle permettra à votre VM de remonter des statuts à l’infrastructure Azure, tout en permettant à Azure de gérer correctement les déploiements et mise en production de vos VM dans les datacenters.

Elle est fournit sous la forme d’un fichier .ISO (wavmroleic.iso) installé en même temps que le SDK Windows Azure 1.3 ( ) et se trouve dans le dossier C:\Program Files\Windows Azure SDK\v1.3\iso.

A l’aide d’Hyper-V, il faut connecter cette image iso à un des lecteur de dvd virtuel et installer les composants dans la VM. Si votre image de base est spécifique à Azure, vous pouvez y inclure ces composants.

connect iso vmrole integration

Lancer l’exécution du “waIntegrationComponents-x64.msi” dans votre VM (la fonctionnalité “.Net 3.5.1” est nécessaire).

waintegrationcomponents-x64 msi

icc - step 1

Saisissez le mot de passe Administrateur (ou Administrator) de votre VM. Il sera nécessaire pour le processus de préparation de la VM, puis cliquez sur le bouton “Install” pour que les éléments d’intégration s’installent dans votre VM.

 

icc - step 2icc - step 3

Acceptez l’installation des drivers “Microsoft Storage Controllers”, puis laisser l’installation se terminer. Il faudra redémarrer votre VM pour activer les nouveaux services et drivers.

icc - step 4icc - step 5

 

Préparation de la VM au téléchargement

 

Cette phase est destiné à rendre votre VM générique, c’est à dire à supprimer toutes informations liées à une configuration matérielle précise (nom de machine, configuration hardware, …).  L’image ainsi nettoyée pourra être déployée plusieurs fois, la configuration finale s’exécutera lors de son premier démarrage dans son nouvel environnement (qui sera un datacenter Azure).

L’outils utilisé pour ce nettoyage est “sysprep” (SYStem PREParation). Il n’est pas spécifique à Azure et est souvent employé par les administrateurs pour préconfigurer des images type de déploiement (plus de détail sur sysprep voir ici).

  • dans votre VM, lancer une ligne de commande en mode administrateur et exécuter c:\windows\system32\sysprep\sysprep.exe
  • Sélectionner les valeurs suivantes : “Enter System Out-of-Box Experience (OOBE)”, cochez “Generalize”, “Shutdown

    cmdline admincmdline system32 sysprep

    Cliquez sur le bouton “Ok” pour lancer la préparation de la VM.

syspreparing the VHD

Dès que la VM est préparer, sysprep effectue un arrêt de la VM.  NE RELANCER SURTOUT PAS LA VM car elle se reconfigurerait.

Les 2 fichiers .VHD sont maintenant paré pour un téléchargement vers Azure, mais … Azure n’est pas encore disposé à vous autoriser à envoyer ces fichiers…

 

Création d’un certificat personnel (.pfx)

 

Les envois des fichiers .Vhd sont signés et sécurisés par l’utilisation d’un certificat. Ce certificat permet d’autoriser l’utilisation de l’api de management d’Azure par l’outils d’upload des VHDs.

Si vous ne posséder pas déjà un certificat de management, vous pouvez en générer un avec Visual Studio, ou avec l’outils makecert :

  • Ouvrez une session ligne de commande “Visual Studio command Prompt” en tant qu’administrateur (clic doit, “run as administrator”).
  • Positionnez vous dans le dossier où générer le certificat
  • Entrez la commande suivante :

makecert -sky exchange -r -n "CN=VMRole_Demo" -pe -a sha1 -len 2048 -ss My "VMRole_Demo.cer" (remplacez le CN et le nom du fichier .Cer par vos propre valeur.)

image

Makecert à enregistrer le nouveau certificat dans le ‘store’ personnel.

Il nous faut maintenant exporter ce certificat dans un format compréhensible par Azure : .pfx. Pour se faire, lancer la console d’administration des certificats (Menu démarrer, “Exécuter” et tapez “certmgr.msc”. Sélectionnez le dossier ‘Personnel\Certificats’ et vous devez y retrouver le certificat nouvellement créé. Faites un clic droit dessus, sélectionner ‘tout les taches’ (‘all tasks’) puis  ’exporter’ (‘export’).

export cert

Répondez aux question du wizard d’export ( YES, OUI pour exporter la clé privée, et spécifier un mot de passe).

imageimageimageimage

imageimageimage

 

Les outils Azure auront besoin du “thumbprint” (empreinte numérique) du certificat : double clic sur le certificat dans le gestionnaire de certificat, sélectionner l’onglet “details”. L’empreinte numérique se trouve dans la liste : recopier la valeur ( 20 paires hexadécimale) ! (merci le notepad Sourire ).

detail cert

Ce certificat doit maintenant être déclaré dans votre abonnement azure. Connectez vous à la console d’administration Azure (http://windows.azure.com). Dans la zone “certificates management” des “hosted services”, cliquez sur “Add Certificate”, sélectionnez l’abonnement concerné et le fichier .cer qui vient d’être créé, cliquez sur “Done”. Au bout de quelques secondes le certificat est listé par la console d’administration.

imagecert uploaded

 

L’api de management connait maintenant notre certificat, nous pouvons commencer à télécharger chacun de nos deux fichiers VHD (le VHD de base, et celui de notre vm finale)

Lancer une ligne de commande du Sdk Azure ( Menu démarrer, tous les programmes, Windows Azure SDK v1.3, Windows Azure SDK Command Prompt) puis positionner vous dans le dossier qui contient vos VMs.

Entrez la commande :

csupload Set-Connection "SubscriptionId=VOTREIDSUBSCRIPTIONAZURE; CertificateThumbprint=VOTREEMPREINTE"

(insérer votre Azure SubscriptionId et l’empreinte de votre certificat au bon endroit) afin de mettre à jour les informations de connexion à votre souscription azure. Cette information est mémorisée sur le poste.

cs-upload Set-Connection

 

Entrez maintenant la commande de téléchargement :

csupload Add-VMImage –LiteralPath IMAGEDEBASE.vhd –Location "North Central US" –Name IMAGEDEBASE.vhd

Bien entendu, remplacez ‘IMAGEDEBASE’ par le nom de votre fichier VHD. L’utilisation d’un datacenter US est fortement recommandé pendant la période Beta (seul certains datacenter Azure sont équipés pour supporter ces fonctionnalités durant cette période).

csupload va monter le fichier .vhd, l’analyser et le préparer à un téléchargement (réduction de taille, …) puis déclencher le téléchargement vers Azure.

csupload addvm step 1csupload addvm step 2

csupload addvm step 3

Une fois le premier VHD en cours de téléchargement (“Preparing: 100% complete…”), faites de même pour le 2e fichier VHD correspondant à la VM finale. Un seul téléchargement de chaque vhd est nécessaire, ils peuvent être lancés simultanément.

en vous connectant sur l’interface d’administration d’Azure, vous verrez que la plateforme Azure indique que 2 “VM Role image” sont en cours de création.

image

 

La partie préparation des VHD et téléchargement est maintenant terminé.

Je vous donne rendez vous dans quelques jours pour une 2e billet concernant la création et la configuration des Role Azure afin d’instancier une (ou plusieurs) VM dans Azure.

Suivre

Recevez les nouvelles publications par mail.