-
Windows Embedded, c’est tout une famille de systèmes d’exploitations et d’outils à destination des fabricants de systèmes embarqués, notamment les industriels: c’est une plateforme qui va des capteurs aux serveurs, et qui peut servir dans tous les équipements de l’usine.
Pour découvrir et démontrer tout ça, le groupe Windows Embedded organise un évènement Mercredi 16 Décembre 2009, dans les locaux de Microsoft à Issy-Les-Moulineaux. La journée sera divisée en 2 parties:
- Matin: Sessions Microsoft et Partenaires
- Embarquez Windows XP Pro FES et Windows 7 FES dans vos systèmes industriels
- Découvrez Windows Embedded Standard 2011
- Mise en Œuvre du temps-réel sous Windows Embedded CE pour le développement d'équipements industriels: enjeux et solutions
- XPE et Windows Embedded Standard 2009 en temps-réel: c’est possible!
- Après-midi: 2 workshops techniques
- Lab1: Découvrez comment générer une image Windows Embedded CE 6.0 R3 sur une carte TI OMAP 3530, en démontrant ses capacités temps-réel
- Lab2: Découvrez comment générer une image Windows Embedded Standard 2009 incluant l’extension temps-réel RTX
L’invitation sur le site Windows Embedded en Français
-
Le principe de localisation d’un widget est d’une simplicité enfantine : le widget est découpé en un certain nombre de fichiers, et de dossiers, dont par exemple le dossier « js » qui contient les javascripts, le dossier « css » qui contient les feuilles de style, etc.
Pour localiser un widget, il suffit, à la racine de ce widget, de créer un dossier pour la langue de votre choix (fr, dans mon cas) et de reprendre, par un simple copier/coller les dossiers et les fichiers que vous voulez localiser : une image valant mille mots…

Une fois encore, bien entendu, il faut que les ressources portent le même nom ! On peut stocker les chaines de caractères dans des ressources Javascript par exemple :
<p><script type="text/javascript">document.write(maChaine);</script></p>
<img alt="flag" src="img/flag.png"/>
- Dans mon fichier Javascript par défaut (contenu dans le dossier js) :
var maChaine = "Hello, world!";
- Et dans mon fichier Javascript Français (contenu dans le dossier fr/js) :
var maChaine = "Bonjour, monde!";
Vous voilà donc armé avec les outils pour localiser simplement votre application ou votre Widget :) Alors n’hésitez pas à viser un maximum de pays !
-
Avec le découpage en région de Marketplace et les règles associées à la validation des applications, il devient nécessaire pour le développeur d’applications ou de widgets de se poser la question de la traduction, ou plus généralement de la localisation de ses applications.
Les règles de localisation de Marketplace :
http://developer.windowsphone.com/resources/fr-FR/MarketplaceMarketValidationGuidelines.pdf
La localisation, c’est la pratique qui consiste à adapter son application au contexte régional : il s’agit bien-sûr de la langue, mais éventuellement aussi des ressources images, et dans les cas les plus extrêmes, d’une adaptation des fonctionnalités ou du contenu en fonction des lois en vigueur dans le marché visé.
La localisation (localization dans la langue de Shakespeare) n’est pas à confondre avec la géolocalisation (geolocation), l’acte de situer des éléments dans un repère géographique J Pour ceux que ce dernier sujet intéresse : cette série de billets est faite pour vous :
En l’occurrence ici, parlons de la localisation d’applications dans le sens, donner à son application le support de plusieurs locales :)
La première question qu’on se pose quand on localise une application est bien entendue celle de la langue : Comment faire pour changer toutes ces chaines de caractères et ces images en fonction de la langue de l’utilisateur ? En fait il y a plusieurs choses à connaitre :
Les règles pour localiser les WinForms
Cette partie est très simple, car quasiment les mêmes règles s’appliquent pour le framework .NET « de bureau » et le Compact Framework :)
Vous pouvez trouver un article sur MSDN sur le sujet, ainsi qu’un article du MVP Thomas Lebrun
La méthode est la suivante : il faut commencer par créer son interface dans la langue « par défaut » c’est-à-dire celle qui sera utilisée quand aucune locale spécifique ne sera détectée. Il suffit de le faire comme à l’accoutumée, avec le designer Visual Studio.
Une fois que cette interface est définie, il reste à la traduire ! D’abord il faut indiquer que le formulaire va exister dans plusieurs langues : c’est le but de la propriété « Localizable » du formulaire, qu’il faut mettre à la valeur « true ».

Ensuite, il faut changer la propriété « Language » pour la mettre à la locale que l’on veut : par exemple, Français (France), qui correspond, selon la notation ISO, à fr-FR
Ceci étant fait, il ne reste plus qu’à traduire, directement dans le designer ! Changer sans vergogne le texte des boutons, des menus, etc.
Une fois ceci terminé, vous pouvez repasser la propriété « Language » à ((default)) pour vous apercevoir que les ressources ont bien été sauvegardées dans chaque langue : en fait, chaque chaine de caractère traduite est stockée dans un fichier ressource (de type .resx) associé au formulaire : si vous cliquez sur le « + » devant votre formulaire principale dans la vue « solution », vous verrez qu’une notation « standard » est adoptée :
- Form1.resx pour le formulaire par défaut
- Form1.fr-FR.resx pour le formulaire en Français

Mais quid des autres ressources ? Les textes dans les boites de messages par exemple ? C’est très simple, nous allons utiliser le même principe, mais à l’échelle de l’application.
Les règles pour les autres ressources
Pour stocker des chaines de caractère ou n’importe quelle autre ressource localisée, nous allons utiliser… un fichier ressources (avec l’extension .resx donc).
Pour ajouter un fichier de ce type au projet, il convient de cliquer à l’aide du bouton droit de la souris sur le projet, puis sur « Add New Item » et de choisir, dans la catégorie « General », le type « Resource file » : à le nommer, et cliquer sur Add.
Le fichier .resx apparait maintenant dans les fichiers du projet : reste à le remplir, en faisant bien soin au nommage des différents éléments : en effet, c’est par leur nom que nous utiliserons les ressources dans le code !
Une fois ces ressources créées, il reste à les traduire. Pour cela, nous allons tout simplement copier/coller le fichier de ressources, et le renommer, en utilisant la convention « classique » : imaginons que votre fichier s’appelle Resource1.resx, pour la langue par défaut, alors la copie de ce fichier devra s’appeler Resource1.fr-FR.resx (ou tout autre locale de votre choix !)

Reste à l’utiliser dans le code : pour cela nous allons utiliser la réflexion (c’est un terme technique du framework .NET, rien à voir avec le fait de se servir de son cerveau !) et une classe qu’on appelle le ResourceManager : voici comment c’est fait :
ResourceManager rm = new ResourceManager("DemoLMLocalisation.Resource1", typeof(Form1).Assembly);
MessageBox.Show(rm.GetString("LocalizedMessage"));
Dans ce code, on commence par initialiser le ResourceManager en lui donnant le nom de la ressource qu’on veut utiliser. Ensuite, on utiliser la méthode GetString, pour aller chercher la bonne ressource :) C’est aussi simple que 2 lignes de code !
La question qui tue : Est-ce possible de changer la langue de l’application en cours de route ?
Malheureusement, le .NET Compact Framework n’offre pas cette possibilité, qui dans le Framework .NET « de bureau » existe pourtant sous la forme de la propriété Thread.CurrentThread.CurrentCulture et Thread.CurrentThread.CurrentUICulture. Il faudrait trouver un autre moyen de le faire "programmatiquement", et ceci dépasse largement le cadre de ce simple article :)
-
Un super article de 8 pages écrit par un MSP, Christopher Maneu, est en couverture et en page 56 du Programmez n°125: de A à Z, le développement de Widgets, avec un cas concret: une application pour les services de Vélo à la Demande de Toulouse. Les Widgets, c’est cette petite tranche de web dans votre poche, ce nouveau modèle de développement d’application pour Windows Phone qui utilise les technos web (HTML, Javascript…)
En plus de ça, dans le même numéro, un article sur la techno MonoTouch, qui vous permet de développer en .NET des applications pour IPhone: serait-on en face d’une histoire Cross-Platform? Pas exactement, mais néanmoins une bonne ressource pour ceux à qui l’Objective-C file des boutons :)
Bref, ce numéro 125, il est bon pour la mobilité, mangez-en!
-
Dernier LiveMeeting de l’opération AppFab ce vendredi à 14h30! Autour de 2 thèmes plus ou moins liés:
La localisation d’une application, d’abord: c’est ce qui permet à une application de changer la langue de son interface en fonction de la locale du téléphone, et ainsi satisfaire simplement le critère Marketplace qui veut qu’une application doit obligatoirement utiliser la langue du marché visé. Visual Studio, le Framework .NET et les widgets offrent des moyens simples de gérer cette question rarement abordée et pourtant bien utile :)
En plus de ça (en bonus ;)) nous parlerons de géolocalisation: presque homonyme, le terme désigne pourtant une problématique totalement différente: comment se servir du GPS ? des coordonnées des tours cellulaires? Comment afficher une carte?
Début du LiveMeeting à 14h30 demain… Alors par ici l’inscription!
-
Le .NET MicroFramework est cette version ultra-light du .NET Fx qui tourne sans OS, sur des petits microprocesseurs 32 bits, même sans MMU, type ARM, BlackFin, etc. La sortie de la version 4.0 a été annoncée à la PDC (qui se déroule en ce moment à Los Angeles). Cette annonce aborde de nombreux sujets bien au delà de la technique, tous couverts par Colin Miller, le chef de l’équipe, dans un post sur le blog de l’équipe:
Cet été l’équipe du .NET MicroFramework a connu une réorganisation importante: en effet, le business model est passé à l’Open Source (en lieu et place du traditionnel licencing au runtime) et l’équipe à bougé du Startup Business Accelerator de Microsoft à la très prestigieuse division développeurs, responsable notamment des Frameworks et de Visual Studio (rien que ça!). Pour résumer:
- Les outils de dev sont gratuits
- Le code source est dispo sous licence Apache 2.0 (à l’exception de la stack TCP/IP et de la Crypto API, pour des raisons de protection de la propriété intellectuelle de nos partenaires)
En parallèle, pour gérer l’implication de la communauté, un site sera très prochainement lancé: http://www.netmf.com. Ce site aura pour vocation la centralisation du travail de la communauté ce qui nous permettra de continuer à limiter la fragmentation “classique” des produits qu’on peut observer dans l’open-source, et ainsi garantir aux gens qui utilisent déjà le .NET MicroFramework une continuité du produit
Enfin, bien évidemment, cette release apporte un tas de nouveautés “techniques” : Mises à jour du modèle objet pour HTTP et HTTPS, support du MultiTouch, du versioning des assemblies, passage du parser XML et de la gestion des collections en code natif pour améliorer les performances, support de l’API Time Sync, gestion améliorée des grands buffers et des grands écrans, des améliorations de performances, des nouvelles API pour le watchdog et le power management, etc, etc.
Personnellement, je suis convaincu que ce passage à l’OpenSource est la meilleure chose qui pouvait arriver au .NET MicroFramework et aux gens qui l’utilisent, et pour avoir rencontrer l’équipe à Redmond cet été, je peux vous assurer: ce produit à un bel avenir devant lui :)
-
En plus des annonces de la semaine dernière, l’équipe de Marketplace annonce aujourd’hui dans un post sur son blog la disponibiltié du client pour les téléphones Windows Mobile 6 et 6.1: Pour le récupérer rien de plus facile:
L’équipe en profite pour donner quelques chiffres… 800 applications sont déjà disponibles sur Marketplace, soit 3 fois plus qu’au lancement il y a un mois, et plus de 1000 développeurs et sociétés sont inscrites. et avec ce nouveau client on sait que c’est plus de 30 Millions de terminaux potentiellement touchés!
Pour continuer sur cette lancée positive, vous devriez bientôt voir une nouvelle campagne en ligne autour de Marketplace. D’autres nouveautés devraient continuer à voir le jour dans les semaines/mois qui viennent afin de rendre l’expérience Marketplace la meilleure possible… Alors profitez de ces opportunités, et n’oubliez pas qu’il reste encore quelques jours pour participer au concours AppFab09!
-
Les feedbacks à propos de Marketplace ont été nombreux, et souvent justifiés, et les oreilles Microsoftiennes ne sont pas complètement bouchées! Le 11 novembre, des fonctionnalités attendues par les utilisateurs et les développeurs, ont vu le jour:
- D’abord un nouveau modèle de sécurité, expliqué dans ce document: pour faire court, il s’agit d’implémenter l’association d’une clef de licence avec un téléphone.
- La possibilité de visiter le catalogue d’applications et faire ses achats depuis le Web: http://marketplace.windowsphone.com
- De nombreux bugfixes du coté du process d’enregistrement et de soumission des applications, qui en avait manifestement besoin :)
Une deuxième série de nouveautés devraient arriver dans le mois, incluant in client pour Windows Mobile 6.0 et 6.1 :)
-
Ceux d’entre vous qui ont eu la bonne idée de passer sous Windows 7 (ou de tester la RC, ou autre) ont peut-être eu la désagréable impression qu’on venait de casser quelque chose avec l’émulateur… le partage de connexion réseau. Pourquoi? parce qu’avec XP et Vista, c’était facile, il suffisait d’installer le driver de Virtual PC 2007 (c’est ce qui était suggéré, et c’était très facile). Oui mais voila, avec Windows 7, Virtual PC est intégré et donc il est impossible d’installer Virtual PC 2007, et donc son driver réseau. Deadlock, plus possible de partager sa connexion… Heureusement, un gars futé du nom de Brian Peek a trouvé la solution: Pour faire simple: on installe “manuellement” le driver manquant en l’extrayant de l’installer de Virtual PC 2007 SP1. Ce post est une traduction approximative de son post original
- Téléchargez Virtual PC 2007 SP1
- renommez l’exécutable, par exemple en “vpc.exe”
- Dans une ligne de commande (Démarrer –> tapez “cmd” puis Entrée), il faut taper les commandes suivantes:
- vpc.exe /c
- cd %temp%
- msiexec /a Virtual_PC_2007_Install.msi /qb TARGETDIR=c:\vpc
- Ce qui consiste à extraire le msi (l’installeur) du setup.exe, puis décompresser les fichiers contenu dans ce .msi vers C:\vpc
- Ensuite, il faut aller rajouter ce driver sous forme de service dans les propriétés de la carte réseau dont on veut partager la connexion:
- Dans le “Network and Sharing Center” (Centre Réseau et Partage):
- Cliquer sur “Change Adapter Settings” (Modifier les paramètres de la carte)

- Puis sélectionner la connexion qu’on veut partager, click droit –> Properties (Propriétés)

- Cliquer ensuite sur “Install…” (Installer…), puis sélectionner Service cliquez sur “Add” (Ajouter) , “Have Disk…” (Disque fourni…)


- Naviguer vers le dossier C:\vpc\Program Files\Microsoft Virtual PC\Utility\VMNetSrv\ (et x64 pour les machines 64 bits)
- Sélectionner “Virtual Machine Network Services” Puis OK

- Et voila! maintenant, il est possible de partager sa connexion réseau, plus de message d’erreur!
Encore merci à Brian pour ce tip bien utile!
-
AppFab09 c’est le concours d’applications pour Windows Mobile de Microsoft France: le but, pousser les gens à publier rapidement leur appli sur Marketplace. A la clef, des lots pour les meilleurs applications (campagne de pub, netbook, smartphones…) mais aussi pour “exciter” un peu, un abonnement MSDN pour les 60 premiers développeurs à publier leur application…
Laissez moi redire (réécrire) ça calmement:
Les 60 premières applications publiées se verront offrir un abonnement MSDN. Je ne parle pas des 60 meilleures, mais des 60 premières. Les meilleures parmi ces 60 auront les lots sus-mentionnés. Tout cela bien entendu à condition de s’être inscrit sur le site http://www.appfab09.fr…
Comme j’ai accès à la base des inscrits à AppFab09, je sais qu’il y en a plusieurs centaines… alors où sont les applis? quand je pense que ça prend à peine une heure d’écrire un équivalent d’iFart, et qu’il n’y en a même pas sur le marché Français… pas de trimmer mp3 pour fabriquer des sonneries, pas d’appli velib, pas d’appli pour les horaires de bus, même pas une calculatrice ou un convertisseur de devises… autant de créneaux pour se faire offrir rapidos un abonnement MSDN Premium, qui pour info, vaut dans les 2600 euros.
Je rephrase: pour 75 euros, vous publiez une appli sur Marketplace dans le mois, vous avez 4 autres certifications offertes, et si vous êtes dans les 60 plus rapides, on vous offre un abonnement MSDN premium. Simple, non? Alors allez-y!!
-
Vendredi 30 octobre (à la fin de la semaine), à partir de 14h30, j’animerai un livemeeting sur l’utilisation de WebServices depuis une application Windows Mobile. Avec la révolution des applications sur téléphones mobiles, notre smartphone devient une boite à aller chercher des informations sur le net. On peut utiliser des sites web mobiles, mais le plus fun c’est quand même d’avoir une application dédiée, qui va chercher uniquement les informations nécessaires: ça permet de faire des interfaces riches, et de limiter l’impact sur le forfait data. On verra dans ce livemeeting comment à partir d’une application mobile consommer des webservices de type SOAP et REST, exemples à l’appui.
J’en profite pour rappeler que ce livemeeting fait partie de l’opération AppFab09 qui récompensera par des campagnes de pubs, des abonnements MSDN, plein d’autres lots les premiers développeurs à mettre leur application sur Marketplace!
Alors sans plus attendre, direction http://www.appfab09.fr!
-
C’est un atelier spécial du coach Windows Mobile qui est mis en ligne pour vous expliquer, de A à Z, le développement de Widget, ce nouveau modèle d’application pour Windows Mobile basé sur des technos web et une spec en draft du W3C. Cela couvre toute la création du widget, avec Visual Studio, Notepad, ou Expression Web, et l’utilisation des API.
L’auteur est Christopher Maneu, un MSP, et c’est à mon humble avis le plus bel atelier qu’on ait jamais vu dans les coachs MSDN.*
-
En plus d’un DBA et d’un développeur C++, doog.mobi recherche un développeur Windows Mobile: l’annonce, c’est par ici
Envoyez votre CV + Lettre de Motiv à l’adresse jobs [at] doog.mobi
Il s’agit bien entendu d’un CDI.
Je réitère le message que j’avais fait passé il y a quelque temps: si vous avez des offres ou que vous recherchez du boulot ou un stage, n’hésitez pas à me contacter, j’essaye de mettre les gens en relation, et parfois, ça marche :)
-
Dans le numéro d’Octobre, en plus de tout un dossier consacré au développement Windows 7, on retrouve en page 62 un article sur le .NET MicroFramework! Ecrit par Florent Santin et Julien Corioland. Avec un coach dédié au sujet sur MSDN qui arrive bientôt, et la version 4.0 annoncée pour cet automne (et déjà en béta!). C’est une techno trop méconnue du grand public alors qu’elle perce bien dans l’industrie: elle a quand même reçu l’an dernier un Editor’s Choice Award à la grand-messe des électroniciens hobbyistes: la Maker Faire d’Austin, TX!
-
Pas question d’avoir un téléphone qui ressemble à tous les autres! Le lancement des Windows Phones est aujourd’hui, et avec ça, une palanquée de services en lignes. MarketPlace fonctionne déjà, après une petite mise à jour, MyPhone est revenu en ligne, et en amélioré, et comme promis, Microsoft publie un générateur de thèmes, en Silverlight s’il-vous-plait! L’adresse? http://www.windowsphone.com/theme
En fait il n’y a que 2 téléphones sur la page d’accueil, mais les thèmes fonctionnent si vous avez la même résolution que les modèles présentés: en l’occurence, WVGA pour le HTC Imagio, avec lequel j’ai généré un thème pour mon Toshiba TG01 :) Faites vous plaisir!
J’en profite pour souligner qu’avant que Microsoft ne propose ce service, un développeur bien connu sur la communauté CodePPC, Benoit Thonnart, avait déjà fait un travail fantastique avec son générateur de thème: ThemeGenCE, qui fonctionne toujours très bien :)