Introduction au développement Surface
4/06/10
Le device
La table est équipée d’un processeur Intel Core 2 Duo, d’une carte graphique ATI X1650, de 2Go de RAM et enfin d’un disque dur SATA de 250Go. En terme d’affichage on dispose d’un écran de 61×46cm (utile pour certains calculs dans votre développement) et d’une résolution de 1024×768. En ce qui concerne le système d’exploitation il faut au minimum un Windows Vista SP1 avec les SDK adéquats.La table est assez honoreuse, il y a une version commerciale (11000€) et une version développeur (13000€).
Outis de développement
Le site officiel propose une page officielle pour retrouver l’ensemble des outils de développement.
La première chose à avoir est l’environnement de développement Visual Studio. Au départ j’avais commencé mon développement avec Visual Studio 2010 mais lors de mon premier déploiement sur le device, le shell a provoqué une exception non gérée je suis donc revenu sur Visual Studio 2008.
Il vous faudra également le SDK Surface ainsi que le simulateur compris dans le pack Microsoft Surface SDK 1.0 SP1 Workstation Edition. Vous pouvez avoir de nombreuses erreurs pendant cette installation :
- Si vous avez que Visual Studio 2010 installé.
- Si la résolution de votre écran est inférieure à 1280×980.
- Si vous voulez l’installer sur un système d’exploitation non supporté.
Une fois ce package installé vous allez pouvoir accéder :
- au simulateur Microsoft Surface.
- aux exemples livrés avec le SDK et la possibilité de les installer sur le simulateur.
- à l’outil permettant de générer des identytags (vous pouvez utiliser ce logiciel tiers comme alternative).
- et enfin aux differents outils pour configurer le simulateur.
Pour développer des interfaces graphiques sur cette plateforme il existe deux solutions ayant une utilisation différente. La première technologie pouvant être utilisé est Windows Presentation Foundation (WPF) pour les « business cases » et la seconde est XNA plus porté vers le développement de jeux vidéos.
La plupart des contrôles classiques sous WPF ont leur équivalence avec le SDK Surface permettant ainsi de récupérer l’évenement WM_TOUCH sur chacun des contrôles.
La reconnaissance tactile
Microsoft Surface dispose de son propre procédé de reconnaissance tactile qui repose sur la triangulation à partir de plusieurs caméras et de capteurs. Une fois la position récupérée il y a l’outil SurfaceInput livré avec le SDK qui permet de simuler l’événement WM_TOUCH sur cette position.
Il existe de nombreux contacts sur une table Surface :
- les doigts, comme vous devez vous en douter pour une reconnaissance tactile, la plupart des intéractions de l’utilisateur avec votre application va se faire avec ses doigts. Pour cela le SDK de Surface met à disposition tous les contrôles classiques prenant en compte ce contact.
- les tags, c’est une nouvelle façon d’intéragir avec l’application on peut facilement trouver des business cases pour ce type de contact. On différencie deux types de tag les ByteTags et les IdentityTags. Il existe une différence entre ces deux tags de part leur nombre de valeurs possibles. Sachant que les ByteTags proposent le moins de possibilités on peut donc l’utiliser pour reconnaître des objets alors que les IdentityTags peuvent avoir un très grand nombre de valeurs ce qui peut être utile pour une identification unique pour des utilisateurs.
- les blobs sont tous les autres contacts non reconnus comme doigt ou tag.
Vous pouvez à tout moment dans votre code connaître le type du contact courant grâce à l’énumération TagType.
Le simulateur
Le principal outil que vous allez utiliser c’est bien le simulateur Surface qui va émuler l’éxecution de votre application sur une table virtuelle. Vous avez plusieurs solutions pour intéragir avec votre application.
Voici la liste des actions possibles dans l’ordre d’arrivée dans le simulateur :
Dans l’onglet « Tools » :
- Contact selector : permet de sélectionner un ou plusieurs contacts afin de réaliser une action dessus.
- Finger : permet d’ajouter un contact de type « Finger » sur le simulateur. Pour ajouter plusieurs fingers il suffit de cliquer sur le bouton droit de la souris une fois placé afin de verrouiller sa position.
- Blob : permet d’ajouter un contact de type « Blob » sur le simulateur.
- ByteTag : permet d’ajouter un contact de type « ByteTag » sur le simulateur avec la valeur dans le champ texte associé.
- IdentityTag : permet d’ajouter un contact de type « IdentityTag » sur le simulateur avec les valeurs dans les champs textes associés (séries et value).
- Clear all places contacts : permet de supprimer tous les contacts placés.
- Show/Hide contacts : permet de masquer ou d’afficher les contacts placés.
Dans l’onglet « Record » : un onglet fort pratique avec un ensemble d’outils pour automatiser certaines tâches. Vous pouvez charger, jouer et enregistrer un scénario.
Les évènements
Avec l’apparition de ce SDK on a vu l’arrivée de nouveaux évènements que l’on peut récupérer qu’avec des contacts (tags, doigts, blobs, etc.):
- ContactChanged : invoqué lorsque les attributs d’un contact tracké changent.
- ContactDown : invoqué quand un contact est placé sur la Surface.
- ContactEnter : invoqué quand le contact est placé sur le conteneur.
- ContactHoldGesture : invoqué lorsque le contact est un doigt et que l’appui est prolongé.
- ContactLeave : invoqué si le contact est sortit du conteneur.
- ContactTapGesture : invoqué pour un clic sur l’élément.
- ContactUp : invoqué quand le conteneur disparait de l’élément.
- GotContactCapture : invoqué pour la capture d’un contact sur l’élément.
- LostContactCapture : invoqué pour la disparition d’un contact capturé.
Les contrôles ScatterView et ScatterViewItem
Le ScatterView est sans aucun doute le contrôle le plus utilisé dans une application Surface car il donne la possibilité sans aucune ligne de code de manipuler n’importe quel élément (ScatterViewItem) en l’agrandissant ou en le faisant pivoter. Il gère même les collisions et l’inertie par défaut même si on peut modifier certains paramètres pour le faire réagir différement.
Si vous ajouter des éléments en XAML dans votre ScatterView ils vont se placer aléatoirement sur votre écran. Durant le développement de ma dernière application Surface, j’ai voulu forcer les positions de mes contrôles au chargement de l’application pour surcharger ces positions aléatoires. Il suffit de modifier le point central (Center) et l’orientation (Orientation) du contrôle.
Comme je vous ai précisé, il gère tout pour vous et ce qui est intéressant et qu’il faut bien comprendre c’est qu’il gère les bordures. Par défaut il prendra votre plus gros contrôle pour qu’il puisse sortir mais sans disparaitre pour autant. Donc attention aux tailles de vos contrôles, un gros et un petit ScatterViewItem et vous risquez de voir disparaitre votre petit contrôle.
scatteViewItem.Center = new Point(200, 550); scatterViewItem.Orientation = -25;
Le contrôle TagVisualiser
Ce qui est intéressant aussi dans une application Surface c’est l’interaction que l’on peut mettre en place avec les tags. Pour pouvoir lire les tags vous n’aurez pas à développer un moteur de reconnaissance mais vous allez ENCORE utiliser un contrôle du framework nommé TagVisualiser. Il est là pour récuperer les tags et afficher un rendu graphique configuré au préalable.
Ce qui est assez contraignant c’est d’autoriser chaque tag que l’on veut utiliser en créant un TagVisualization et en lui configurant une valeur hexadécimale et une vue. Une fois que l’on a compris le fonctionnement on peut réaliser des rendus intéressants comme par exemple proproser un contour virtuel autour d’une carte réelle posée sur la table (la carte ayant bien entendu un tag au dos) avec plusieurs boutons pour réaliser une sorte de menu propre au tag.
foreach (var item in tags)
{
long hexValue = long.Parse(item.Value, System.Globalization.NumberStyles.HexNumber);
IdentityTagVisualizationDefinition def = new IdentityTagVisualizationDefinition();
def.Value = hexValue;
if (String.IsNullOrEmpty(item.Profil))
def.Source = new Uri("MyFirstView.xaml", UriKind.Relative);
else
def.Source = new Uri("MySecondView.xaml", UriKind.Relative);
TagVisualiser.Definitions.Add(def);
}
Vous avez ensuite un événement vous permettant d’insérer du code une fois que le tag autorisé est posé sur la table. Cet événement c’est le VisualizationAdded du contrôle TagVisualiser.
Une petite astuce si vous voulez avoir qu’un seul tag actif sur la table toujours dans l’événement VisualizationAdded. Suivant ce que vous souhaitez avoir soit le premier tag est le seul actif alors vous supprimer le tag courant et vous sortez de l’événement, soit vous voulez que le second tag dans ce cas là vous supprimer le premier TagVisualization dans les TagVisualizations actifs.
if (isFirstCardActive)
{
TagVisualiser.RemoveVisualization(tmp);
return;
}
else
TagVisualiser.RemoveVisualization(TagVisualiser.ActiveVisualizations[0]);
Liens
Piloter un hélico sur votre navigateur depuis votre iphone
15/03/10
Intro
Je m’excuse de mon inactivité ces temps-ci, je prépare mon départ de Toulouse (31) avec tout ce que cela entraine (déménagement, visites d’appartements, etc.) et mon installation dans ma nouvelle ville Villeneuve-Loubet (06). Je vais aussi commencer un nouveau stage dans une entreprise que je vous dévoilerai bientôt et qui sera une des plus grosses sources de ce blog.
Késaco ?
Aujourd’hui j’ai décidé de vous parler d’une application inutile mais techniquement intéressante. L’agence interactive new-yorkaise nous expose à une nouvelle expérience utilisateur qui va vous permettre de contrôler un hélicoptère depuis votre Iphone volant dans le site internet de l’agence. Vous allez vous ballader dans les locaux de l’agence avec les salariés entrain de travailler, c’est vraiment intéressant ce développement.
Comment faire pour tenter cette expérience ?
Je vous propose en premier lieu de vous rendre sur l’Apple Store et de faire une recherce de l’application Mobicopter. Une fois installée et lancée vous allez tomber sur le code de démarrage de l’hélicoptère, pour le connaître vous devez vous rendre sur le site client (au passage on peut voir un très beau splashscreen de chargement) et au second étage de l’agence et cliquer et l’engin. On vous donnera ainsi votre code d’accès, véritable clé d’accès de votre communication entre votre mobile et le site internet. Une fois identifié vous allez pouvoir piloter votre hélico avec un joystick virtuel.
C’est une expérience vraiment intéressante que je vous propose de tenter.


Liens :
Récapitulatif de mes découvertes de la semaine #2
14/02/10
Après une semaine riche en événements Techdays. Je viens poster mes découvertes de la semaine.
Je profite de mon passage à la fédération française de football cette semaine pour vous demandez de soutenir la candidature de la FRANCE pour l’EURO 2016. Pour faire simple vous devez cliquer là et je rajoute un encart sur mon blog, allez y cliquez.
Vrac
- Nous n’avions pas trop de nouvelles du projet Natal sur Xbox et bien il vient de faire une apparition dans le dernier épisode de Smallville.
- Les applications iPhone de l’AppStore désormais pré-visualisables dans votre navigateur.
- Des cours sur le référencement.
Méthodes de gestion de projet
- Le live de Claude Aubry sur les méthodes agiles est enfin dans les bacs et sur Amazon.
- Les différentes méthodes de conduites de projet.
Javascript
- Une documentation alternative pour jQuery 1.4.
- Créez votre framework Javascript.
Expérience utilisateur
- Les différents principes de la gestalt (psychologie des formes, source Wikipedia), et un second lien tout aussi intéressant.
- Un article sur la création de RIA (Rich Internet Application).
Astuce pour réinitialiser les id de vos tables SQL Server
14/02/10
Voici une petite astuce qui va vous permettre de réinitialiser vos id à la valeur que vous voulez. Sachez que le paramètre VALEUR_A_REINITIALISER aura pour valeur celle que vous souhaitez -1. C’est à dire que si vous voulez que votre premier id soit 1 vous attribuerez à VALEUR_A_REINITIALISER la valeur 0.
DBCC CHECKIDENT (‘VOTRE_TABLE’, RESEED, VALEUR_A_REINITIALISER)
Récapitulatif de mes découvertes de la semaine #1
31/01/10
Voilà un premier bilan de mes découvertes de la semaine partagées sur Twitter ou Facebook.
Vrac
- Playtv est un site gratuit permettant de regarder plusieurs chaines françaises gratuitement
- Avez vous vu la vidéo buzz d’un accident de bus à Lyon ? Voici son making of
- Dans le même style une vidéo virale contre le gaspillage de nourriture avec elle aussi son making of
- Backupify est un service pratique il permet d’historiser tous vos statuts sur les différents reseaux sociaux pour pouvoir garder une trace de votre activité
- Nexus by Google un nouveau blog sur le dernier téléphone made in Google
- Voici une vidéo de 50 jeux android présentés en 10 minutes
Technologie
- Brosho permet de récupérer les selecteurs CSS de vos éléments DOM et de les éditer en live
- Jsfiddle est un outil gratuit permettant d’éditer HTML, CSS et Javascript en live afin d’obtenir un resultat instantanné
- Un jeu Sudoku développé en Silverlight avec le pattern MVVM et sa démo
- Création d’un footer style Facebook en deux parties içi et là
- Sitepoint est la référence des technologies Web. On retrouve des résumés pour chaque propriété CSS, HTML et Javascript en résumant les fonctionnalités avec des exemples et l’indication des supports des différents navigateurs.
Nomao le moteur de recherche avec ses résultats en réalité augmentée
7/01/10
Connaissez vous la réalité augmentée ? C’est le procédé qui rend possible la superposition d’un modèle virtuel à la réalité que nous voyons et tout ceci en temps réel. Il permet de compléter notre perception du monde réel avec de nouveaux éléments fictifs.
Nomao est un moteur de recherche géocalisé qui classe les résultats de votre recherche sur un plan, vous cherchez des kébabs sur toulouse, hop ils sont localisés. Bon d’accord il a rien de nouveau de ce côté là, mais c’est depuis aujourd’hui que l’on peut télécharger une version mobile pour l’iphone qui va intégrer la réalité augmentée.
Voici l’image qui va vous permettre de comprendre, il vous indique les résultats de votre recherche en temps réel sur votre iphone.
L’application est disponible gratuitement sur le market.
Téléphone Android by Google, Nexus One
5/01/10
Vous avez sans aucun doute entendu parler ces dernières semaines de l’arrivée du « Google phone », l’éventuel iphone killer. Il est très en vogue actuellement présent sur de nombreux blogs US et français, je vais vous faire un point à ce sujet pour rassembler toutes les informations dans ce post. A noter que ce soir à 19 heures aura lieu pour l’édition 2010 du CES (Consumer Electronics Show) une conférence pour surement lancer ce terminal et avec probablement d’autres annonces alléchantes.
Des caractéristiques intéressantes :
- La dernière version Android v.2.1 (nom de code Flan) avec une interface personnalisée par Google .
- Le processeur chipset Qualcomm QSD 8250 (SnapDragon) cadencé à 1 GHz.
- Un écran AMOLED de 3,7 pouces au format WVGA.
- 512 Mo de RAM.
- Un appareil photo de 5 millions de pixels.
- Une prise casque 3,5mm, une prise miniUSB.
- Les capteurs traditionnels : magnétomètre et accéléromètre
Comment l’obtenir en France ?
- La première solution étant de le commander à partir de 06/01/10 sur une page dédiée par Google. Il est proposé en tant que téléphone nu au prix de 560$ (~390€) auquel se rajoute les prix de frais de port (~100$) et un risque de taxation à la douane, ce qui peut revenir un peu cher.
- La seconde solution a été annoncé le 04/01/10, Google aurait choisi SFR pour se diffuser en France, comme l’a fait Apple avec Orange, la firme de la Silicon Valley passerait par un chemin de commercialisation standard. A ce niveau là deux rumeurs sont présentes, la première que le téléphone serait accessible fin du premier trimestre 2010 en agence SFR et la seconde un achat directement sur la page dédiée de Google avec des prix SFR, affaire à suivre.
Voici plusieurs vidéos montrant la bête en utilisation.
Une vidéo avec l’interface française, on peut y voir une interface fluide et rapide.
Le benchmark NeoCore Android sur l’appareil donne un score de 26,7 FPS, un peu décevant.
Comparaison Iphone et Nexus.
Une liste de logiciels utiles pour Windows
3/01/10
Cette liste me permet lors de mes différents formatages ou réinstallations d’avoir un lien direct vers tous les logiciels que j’utilise. Jusqu’à présent cette liste utile n’était disponible qu’en local sur mon pc et mis à jour à chaque nouvelle découverte. Maintenant je vais la mettre à disposition de tous pour que vous aussi fassiez de nouvelles installations.
Les différents navigateurs existants sur le marché, ceci est important pour les développeurs web dans le but de tester leur site web sur plusieurs moteurs.
- Mozilla Firefox est depuis de nombreuse année mon navigateur par défaut.
- Google Chrome revient bien grâce à son moteur ultra rapide.
- Opera un autre navigateur complet.
- Safari le navigateur de la pomme porté sur Windows
- Maxthon dédicasse pour Imfloflo.
Les utilitaires pour supprimer virus, spyware ou encore fichiers temporaires.
- CCleaner supprime les fichiers inutiles, répare la base de registres, etc.
- Glary Utilities est un bon complément à CCleaner.
- Defragler est un défragmenteur gratuit et simple d’utilisation.
- Avast un antivirus gratuit pas forcément le plus performant.
- Spybot – Search & Destroy un outil de suppression de spyware et protection via fichier host.
Le souc.
- Macrium Reflect un outil pour faire des ghosts de vos disques dur.
- Allway Sync un outil de synchronisation entre un(des) dossier(s) et un disque dur externe.
- Recuva un logiciel de récupération de fichiers.
- Xplorer² un explorateur Windows avec d’enormes capacités.
- Paint.net un paint amélioré.
- Notepad++ un puissant bloc-notes qui permet un gain de temps considérable.
- Process Explorer un gestionnaire de tâches bien plus complet que celui par défaut.
- Clipx c’est surement le logiciel que j’utilise le plus souvent, il permet d’avoir un historique de vos copiés/collés.
- 7-ZIP l’équivalent de Winrar en opensource.
- TeraCopy et SuperCopier un gestionnaire de copie pour Windows qui apporte de nouvelles informations et gère la pause de la copie.
- Unlocker un logiciel très pratique pour supprimer un fichier récalcitrant. Il cible le processus qui le bloque lors d’une suppression.
- TrueCrypt un logiciel pour crypter un dossier.
- flvextract un outil permettant de récupérer le contenu d’un fichier flv.
C’est l’heure du DanceFloor.
- SongBirdUn gestionnaire de bibliothèque multimédia au look Itunes
- Spotify le logiciel permettant d’écouter la musique sur les serveurs spotify. Bientôt je vous ferai un test de Spotify premium.
Internet.
Prise de contrôle à distance.
- REALVNC et AutoIt me permettait de prendre le contrôle et d’automatiser la tâche grâce à AutoIt. Cependant il fallait ouvrir des ports sur le routeur pour utiliser RealVNC.
- TeamViewer est un très bon logiciel permettant de prendre la main sur un ordinateur, il nécessite aucune configuration sur le routeur. Agréable pour dépanner des amis.
Outils PDF.
- Cute PDF une imprimante virtuelle qui génère un fichier PDF de votre document.
- Foxit est un lecteur PDF très léger qui reste une bonne alternative à Acrobat.
Discuttons :
Outil pour gestion de la vidéo :
- Camstudio un outil opensource permettant la réalisation de screencast.
- XVID sont les codecs les plus connus actuellement et permettent une très bonne compression pour Camstudio.
- VLC est un lecteur vidéo très pratique et qui arrive à tout lire.
Faites tourner les CDs !! :
- Alcohol 52% est la version gratuite du logiciel Alcohol 120%.
- Imgburn est un logiciel gratuit pour graver des images de disque.
- Cdburner Xp Pro un très bon logiciel de gestion de gravue gratuit.
Au boulot !!! Deux logiciels que je juge indispensable :
- DbDesigner4Fork est un logiciel de création de base de données. Il permet de générer des scripts de création pour différentes bases de données.
- XMind est un logiciel de mindmapping, je vais revenir souvent sur ce sujet
Développement .NET :
- Reflector est un logiciel indispensable pour tout développeur .NET il permet de décompiler un projet écrit en .NET.
- SqlExpressProfiler l’équivalent du profiler SQL pour les versions EXPRESS. Utile pour voir les requêtes SQL éxecutées par vos requêtes LINQ.
- Kaxaml est un outil pour modifier rapidement le XAML, voir mon article.
C’est le moment de tweeter et de veiller :
- TweetDeck l’un des meilleurs clients Twitter. Cependant éxecuté sous Adobe AIR le pc a aussi besoin d’air.
- Seesmic revient bien mais les nouvelles fonctionnalités de TweetDeck le laisse un peu à la traine.
Ah enfin on se détend :
- Babaschess est un logiciel utilisant les serveurs FICS pour joueur aux echecs sur internet gratuitement, vous aurez un billet prochainement.
- Driver pour la manette XBOX360 Wireless
Bonne année à tous !
1/01/10
Avant toute chose je vous souhaite une excellente année à tous, que la santé, l’amour et la réussite vous accompagne dans tous vos projets. Et pour moi cette nouvelle année commence avec un tout nouveau projet : mon blog personnel.
Oui c’est une nouvelle résolution parmi tant d’autres d’ouvrir un espace qui m’appartient pour vous parler de choses que je découvre et que j’aime.
Et c’est pour marquer le coup que j’ai décidé de le lancer le 01/01/10, date facile à retenir. En espérant que vous suivrez ce blog et de vous faire apprécier votre moment de lecture.
Voilà la guideline de ce blog :
- Vie personnelle
- Coups de gueule
- DotNet
- ASP.NET
- Patterns
- Silverlight
- WPF
- Ergonomie
- Gestion de projets
- Agile
- Extreme Programming
- Scrum
- CMMI
- Agile
- Livre
- Marketing
- Mind Mapping
- Mobile
- Android
- Windows Mobile
- Outils
- Productivité
- Pyschologie
- Référencement
- Tests
- Hardware
- Software
- Web
- Javascript
Je vous souhaite encore une excellente année 2010.
La liste de tous les plugins jQuery
9/12/09
Ce site jquerylist.com est le LIEN à bookmarker si vous utilisez jQuery car il rassemble sur une seule et même page tous les plugins jQuery existants triés par catégorie, au programme :
- des plugins AJAX
- des plugins CSS
- des plugins pour créer des graphiques
- des plugins pour gérer l’upload des images
- des plugins pour de nouvelles animations et effets
C’est une alternative importante à la recherche de plugins disponible sur le site officiel qui était très fastidieuse. Ce que j’apprécie sur ce nouveau site, c’est que chaque plugin possède un screenshot de rendu permettant ainsi d’avoir une visualisation importante du résultat, ce qu’il manquait sur l’original.
uerylist.com est le LIEN à bookmarker si vous utilisez jQuery car il rassemble sur une seule et même page tous les plugins jQuery existants triés par catégorie, au programme :
-
des plugins AJAX
-
des plugins CSS
-
des plugins pour créer des graphiques
-
des plugins pour gérer l’upload des images
-
des plugins pour de nouvelles animations et effets
-
etc.
C’est une alternative importante à la recherche de plugins disponible sur le site officiel qui était très fastidieuse. Ce que j’apprécie sur ce nouveau site, c’est que chaque plugin possède un screenshot de rendu permettant ainsi d’avoir une visualisation importante du résultat, ce qu’il manquait sur l’origin


