Les blogs pour faire de la veille technologique en .NET

Les équipes de MCNEXT espèrent que ce blog vous permet d’améliorer toujours un peu plus vos connaissances des technologies Microsoft. Il existe néanmoins d’autres blogs qui valent le détour sur ce sujet. En l’occurrence, je vais vous parler des blogs que je consulte régulièrement – via leur flux RSS – pour me tenir au courant des dernières avancées en matière de développement en .NET.

Les auteurs de ces différents blogs, lorsqu’ils ne travaillent pas pour Microsoft, sont généralement des MVPs reconnus par la communauté pour leur expertise technique et leurs capacités à partager leurs connaissances. Par ailleurs ils ont tous un point commun : c’est un vrai plaisir de les lire.

Croyez bien que c’est tout à fait involontaire de ma part, mais tous ces blogs sont en anglais. J’espère donc que vous maîtrisez la langue de Shakespeare.

Scott Guthrie est le directeur de toute la stack web chez Microsoft, et même plus encore. Son blog lui sert à annoncer régulièrement les nouveautés dans le monde d’ASP.NET et d’Azure. Ses articles sont généralement pointus mais très bien expliqués, et il en publie de nouveaux à intervalle très régulier. Je lui reprocherais juste un côté un peu « corporate », et le fait que les sujets ont tendance à s’entrechoquer. En fonction de vos affinités, tout ne vous intéressera pas, mais cela reste néanmoins une source d’information incontournable si vous êtes du métier.

Scott Hanselman est le pendant plus « geek » de Scott Guthrie. Lui aussi travaille pour la stack web, à un degré de hiérarchie moindre, et lui aussi publie très régulièrement de nouveaux articles. Mais il est par ailleurs très drôle, a un don pour savoir mettre en avant des connaissances vraiment utiles, et il n’hésite pas à parler de sujets très variés tout en réunissant à les connecter au monde du développement informatique. A lire absolument : ses réflexions sur sa condition de diabétique de niveau 1 et l’état de la technologie dans ce domaine.

Ayende Rahien, de son vrai nom Oren Eini, est une sommité dans le monde Microsoft. Spécialiste du développement .NET, il publie au minimum un article par jour, et ceux-ci sont souvent passionnants. Il a la particularité de publier des articles à suivre sous forme de feuilleton, autour d’un sujet bien précis : NHibernate, le développement de son propre moteur de stockage de données (VORON), ou plus récemment le fonctionnement de Lucene.NET. Au fil des ans il est devenu de plus en plus pointu, et j’avoue avoir parfois du mal à suivre lorsqu’il explique les algorithmes à l’œuvre dans certains produits que commercialise sa société (Hibernating Rhinos), mais c’est aussi un très bon moyen de se remuer les méninges.

Rick Strahl est aussi un auteur très prolifique. Il n’est d’ailleurs pas rare de tomber sur son blog au détour d’une recherche depuis Google sur le monde ASP.NET. Cette technologie est sa grande spécialité et ses articles sont une vraie mine d’or en matière de bonnes pratiques, astuces diverses et solutions aux nombreux problèmes auxquels il a pu lui-même été confronté. Un gros défaut cependant : ce salaud habite à Hawaï.

Jeff Atwood et son blog Coding Horror. Jeff Atwood n’est autre que l’un des fondateurs de Stackoverflow que je ne vous ferai pas l’insulte de présenter. Son blog est moins technique et parle d’avantage de choses comme la motivation, comment recruter les bons collaborateurs, comment s’organiser, et c’est tout aussi passionnant, surtout sous sa plume.

K. Scott Allen est un vieux briscard du monde .NET qui partage ses astuces et réflexions en matière de développement informatique. Ses connaissances épousent tout un pan de la galaxie .NET, et il est n’est pas avare en exemples de code que vous passerez de nombreuses heures à étudier.

Kraig Brockschmidt est l’auteur du très bon livre Programming Windows Store Apps With HTML CSS and JavaScript, disponible gratuitement au téléchargement chez Microsoft Press, dont la seconde édition vient juste de sortir. Ce grand spécialiste de WinJS profite de son blog pour distiller des connaissances de base sur son sujet de prédilection, ou aborder des aspects qui ne trouvaient par leur place dans l’ebook.

Troy Hunt est une découverte récente pour ma part. Spécialiste d’Azure et de sécurité informatique (en particulier autour de la stack web .NET), Troy publie très régulièrement des articles longs et très détaillés. Il a par exemple abordé les bonnes pratiques à appliquer en matière de mot de passe informatique, de quelle manière selon lui une grande compagnie américaine s’est faite pirater sa base de comptes clients. Dans un billet plus récent, il explique avec brio comment fonctionne le bug qui frappe actuellement OpenSSL, pourquoi il faut s’en émouvoir, comment s’en protéger, et quels impacts celui-ci peut avoir sur un système informatique. A lire absolument.

[SPC14] SPC332 // Overview of Yammer app development

Mardi 04/03/2014 à 9h00

Speaker
Brian Lyttle – Support Escalation Engineer @ Microsoft

// Résumé
Session avec pas mal de potentiel sur l’intégration de Yammer dans ses applications avec OpenGraph notamment.
Le pauvre speaker semble malade et un peu marqué ce qui n’aide pas à bien comprendre la session (vous étonnez pas si je passe du coq à l’âne dans mes notes, j’ai dû sauter des passages).
Les APIs peuvent être utilisées de plusieurs manières différentes (embed ou js custom/api REST).
Les démos ne sont pas transcendantes mais le message est passé comme quoi on peut créer des apps qui utilisent Yammer comme service social.
On peut noter un SDK .NET à venir pour Yammer.
Cela reste un overview, j’aurais aimé rentrer dans un cas plus concret, plus en détails.
// Yammer platform
Il y a les feeds et les APIs REST.
Il explique que les feeds, les conversations se font autour d’objets (dans Dynamics ou dans Office 365).
On parle de suivre

// Activity stream posts
Les posts se décomposent en 3. L’acteur, l’action et l’objet sur lequel se fait le post.
Ex : Sacks —> update —> objet

// Yammer internals
Les networks sont des conteneurs des users et des groupes.
Un network « interne » ou home network, est associé à un ou plusieurs noms de domaines.
Les networks « externes » ou external networks sont indépendants du nom de domaine.
Dans Yammer, il y a le concept de « Guest Collaboration » permettant à un réseau d’inviter des personnes externes au réseau (voire qui ne sont pas sur Yammer visiblement).
Avec l’autre concept de « External Network Collaboration », on permet à un externe d’accéder à un network interne.

// Users
Les utilisateurs appartiennent toujours à un réseau de base « Home network ».
Il peut avoir 4 statuts : Pending, Active, Suspended, Deleted.
Ils peuvent parfois donc venir d’un réseau externe.
Les invités (guests) ont un accès direct à un réseau.

// External network
Les réseaux externes ne sont pas des accueils pour les applications ou les users.
Il y a un jeu avec des jetons (tokens) en OAuth pour l’authentification.

// Yammer security model
Que ce soit Freemium ou Enterprise, il y a les users, les admin, et les verified admin avec des niveaux de permissions d’accès différents à chaque niveau. Le verified admin est vraiment l’administrateur ultime qui a tous le adroits.

// Open Graph
Pour rappel, c’est ce qui permet de considérer une page comme étant un objet avec des propriétés comme l’URL, une photo, un abstrait etc.
C’est ce qui permet sur les outils de réseaux sociaux de mettre l’URL de la page dans un outil qui détecte les informations et crée une vignette pour celle-ci.

// Yammer APIs
Il y a la partie embed avec de l’authentification simple.
Puis l’API REST ainsi que le modèle objet Javascript (Javascript API) qui nécessite de créer des enregistrements d’applications chez Yammer et d’implémenter les autorisations dans son application.

// DEMO de la plate-forme
Il montre une page d’un site quelconque avec une galerie photos affichée.
Il va sur une autre page où il récupère les informations de son profil (nom, photo, email).
Il se déconnecte et voit qu’il a implémenté une authentification OAuth avec Yammer.
Il va sur Yammer, dans ses applications, il voit la liste des applications qu’il a autorisées. Il révoque l’accès à son appli et essaye sur son appli de se relogger. On voit alors qu’on lui demande une autorisation.
Sur son appli (en ASP.NET MVC) il upload une photo. On voit que sur l’affichage de la photo, il a implémenté un Yammer feed qui s’est attaché à l’objet correspondant à sa photo.
Retour sur le site Yammer, où il voit dans ses feeds qu’il a effectivement posté une photo.
Ça pour dire qu’il a pu en fait attacher un feed sur un objet OpenGraph.

// DEMO Visual Studio
Il a un projet Visual Studio avec un projet où une classe héritant de OAuth2Client. Il a implémenté les méthode nécessaire en renseignant les endpoint, clientID, les URLs de redirections, les objets client secret qu’il doit récupérer quand il enregistre son application.
Il doit aussi implémenté le GetUserData où il implémente la méthode de récupération de l’utilisateur courant avec ses informations de profils.
Ensuite il montre qu’il a toute une panoplie de classe qu’il peut utiliser pour récupérer les streams de son activité sur Yammer etc.

// Embed API
Il explique qu’il peut juste insérer le script Javascript stocké sur Yammer pour l’utiliser sur le page avec une méthode assez simple pour gérer la connexion.
Ensuite pour l’exemple, une méthode permet de récupèrer un feed de son choix afin de l’insérer dans une div identifiée par son ID.

// DEMO : Enregistrement d’une application
Pour une application à enregistrer donnée, on peut configurer des actions, des types de contenus.
Ceux-ci définissent des termes qui sont utilisés sur Yammer pour écrire dans le feed (typiquement Mike a posté une photo). Le verbe « a posté » est défini comme une action avec un identifiant. Et le terme « une photo » est défini comme un type de contenu avec également un identifiant.
Yammer peut générer un intitulé dans le feed qui correspond à vos actions d’applications.

// Enregistrer une App
Une app sur Yammer peut être enregistrée par tous les utilisateurs d’un réseau. Il est enregistré et lié à un home network puis publié dans l’annuaire des apps.
Il est important de renseigner le redirect URI qui correspond à l’URL vers laquelle est redirigé l’utilisateur après authentification.

// Exécuter des requêtes
Authorization : il faut récupérer l’autorisation en récupérant un Client ID et Secret, sorte de token d’accès pour l’utilisateur.
Avec ce token, on peut générer une requête HTTP en passant le token en paramètre ce qui permet d’assurer l’authentification.
On désérialise le json pour procéder au traitement de la réponse de la requête.

// Open Graph activity stories
Les objets sont des activités qui sont décrites et qui en json, sont composées d’un actor, d’une action, d’un objet (l’app) et d’un message.

// Essentials tools
HTTP Client : HTTPClient, RestSharp
Class to JSON mappings : JSON C# class Generator, JsonPack. Ces outils ont la limite de pas excellemment gérer les paramètres optionnels parfois non présents dans les réponses des requêtes.
Debugger : Fiddler est ton ami 🙂

// Yammer .NET SDK
Un SDK .NET va arriver pour attaquer Yammer.
Gestion d’authentification, modèle objet .NET, gestion des endpoints.

// Best practices
Bien enregistrer son app avec un compte qui n’est pas désactivable facilement.
Autoriser tout le monde à autoriser l’application.
Respecter les limites annoncées.
Utiliser les endpoints qui retournent du JSON.
Autoriser le HTTP Logging.

// Archiving Yammer Content
Il est possible d’exporter son contenu Yammer, même avec le eDiscovery de SharePoint.

// Content Migration
Les messages ne peuvent pas être antidatés.
Les produits ne sont pas désignés de la même façon. L’implémentation n’est pas magique.
Le contenu Yammer peut être éphémère, contrairement aux outils qui sont fait pour durer dans le temps.

// Sample
http://www.sched.do / https://github.com/yammer/shed.do
C’est une appli d’événements type Doodle où on peut inviter des gens de Yammer dans la sélection d’invités.

// Resources
Yammer developer network : http://yammer.com/yammerdevelopersnetwork
Yammer Developers Home : https://developer.yammer.com
Data export API : http://success.yammer.com/integrations/data-export

Christian

Animations, transitions, et mise en place du charme de partage dans les applications Metro en HTML et Javascript

Dans cette série sur la réalisation de l’application Metro « Parle moi de… » en HTML et Javascript, nous avons vu :

Les animations et les transitions permettent de donner vie à l’application, et de donner un ressenti plus organique lors de la manipulation de l’application. C’est particulièrement important dans les applications tactiles car c’est un contexte dans lequel les applications peuvent paraître « cassées » lorsqu’elles ne sont pas assez réactives. Nous allons aborder dans ce webcast les différentes façon de gérer ces transitions et ces animations pour les applications Metro en HTML et Javascript. Une fois de plus, l’API WinJS fournie par Microsoft comporte tout une API qui va nous pouvoir nous aider. Si vous maîtrisez des librairies javascript comme jQuery, vous pourrez également les mettres à contribution, de la même façon que sur vos sites web. Une dernière façon de donner vie à vos écrans peut être d’utiliser directement les transitions CSS3.

Une autre façon de donner plus de vie à votre application est de permettre de partager son contenu. Pour ce faire, Windows propose le charme de partage. Grâce à ce charme, vos utilisateurs peuvent partager vos contenus vers d’autres applications, comme par exemple les applications de Contact (pour partager dans Facebook, Twitter, …), ou Courrier (pour envoyer ces informations par mail). Nous allons donc vous présenter comment implémenter le charme de partage dans votre application.

Dans le prochain épisode de cette série, nous verrons les étapes à respecter pour publier votre application dans le Windows Store.

Préférences et stockage local dans les applications Metro en HTML et Javascript

Dans cette série sur la réalisation de l’application Metro « Parle moi de… » en HTML et Javascript, nous avons vu

Parmis les charmes proposés dans Windows 8, nous avons le charme de paramètres. Il permet à l’utilisateur d’accéder aux paramètres de l’application, ainsi qu’aux paramètres du système. Dans vos applications Metro, les écrans de préférences et de paramétrage de l’application doivent être accessibles à travers le charme de paramètres (cela fait partie des points vérifiés lors de la certification dans le store). C’est également un bon endroit pour mettre votre fenêtre « A propos » si vous souhaitez en mettre une, ou pour mettre un lien sur l’aide. Dans les applications en HTML et Javascript, nous disposons d’un contrôle SettingsFlyout qui va nous permettre d’implémenter des écrans de préférence. Nous allons voir comment ajouter un lien dans le charme de paramètres, et comment réaliser un écran avec le contrôle SettingsFlyout.

Si vous proposez un écran de préférences, il faudra également stocker les choix de l’utilisateur pour pouvoir les réutiliser. Nous allonc donc également voir comment stocker ces préférences en local. Nous verrons aussi comment bénéficier du roaming, afin d’utiliser ces préférences sur les différents ordinateurs associés à un utilisateur.

Dans le prochain épisode, nous verrons comment ajouter des animations pour améliorer les transitions et le ressenti utilisateur, et comment implémenter le charme de partage.

Gestion des résolutions d’écran et des états visuels dans les applications Metro en HTML et Javascript

Dans cette série sur la réalisation de l’application Metro « Parle moi de… » en HTML et Javascript, nous avons vu

Nous allons maintenant voir la gestion des résolutions d’écran et des états visuels de l’application.

Windows 8, bien que résolument tactile, reste Windows. Il n’y a donc pas de résolution d’écran fixée. La résolution minimale supportée est de 1024 pixels, mais il est fréquent aujourd’hui de trouver des écrans en 1920px, y compris sur des portables, et on commence à voir apparaitre des écrans avec des résolutions beaucoup plus importantes.

Par ailleurs, une application Metro peut être dans différents états visuels, correspondant à l’ergonomie de cette nouvelle génération de Windows. L’application peut être affichée au format portrait ou paysage, mais elle peut aussi être en mode « snap », c’est à dire qu’elle est affichée côte à côte avec une autre application. On a dans ce cas une application « snappée » (avec un espace de 320 pixels), et une application « filled » qui occupe le reste de l’espace. Le fait de « snapper » des applications n’est accessible que si votre terminal est en orientation paysage, et que votre écran à une résolution d’au mois 1366 pixels.

Votre application Metro doit impérativement gérer ces différentes résolutions, ainsi que les états visuels (il n’est pas possible pour l’application de refuser de se « snapper »), sous peine d’être refusée dans le processus de certification dans le store.

Nous allons donc voir comment gérer ces paramètres en utilisant les mediaqueries de CSS3, ou à travers l’API javascript.

Dans le prochain épisode de cette série, nous verrons comment utiliser le charme de paramètres et comment stocker des données en local.

Multilangue dans les applications Metro en HTML et Javascript

Jusqu’ici, nous avons découvert comment mettre en place notre projet, puis comment tirer parti du charme de recherche et des contrôles comme la ListView pour notre application « Parle moi de… »

Dans ce 3e épisode, nous allons voir comment rendre notre application multilangue en Français et en Anglais.

Lorsqu’on souhaite tirer parti du multilangue dans une application Metro, il faut prendre différents aspects en compte. Nous allons évidemment vouloir traduire les textes utilisés. Nous allons aussi avoir besoin de changer certaines images selon la langue, à commencer par l’icone de notre application, l’écran de démarrage, le logo etc. Nous allons également avoir besoin de fournir des traductions pour les méta données de notre application comme par exemple son titre ou sa description, et déclarer les différentes langues gérées par notre application. Le but étant que les utilisateurs puissent avoir cette information lorsqu’ils consulteront notre application dans le magasin d’applications Windows.

Dans le prochain épisode, nous verrons comment gérer efficacement les différentes résolutions d’écran et comment gérer les différents états visuels de notre application.

Charme de recherche, ListView et Zoom sémantique dans les applications Metro en HTML et Javascript

Dans le précédent épisode de cette série, nous avons créé le projet pour l’application « Parle moi de… ». Dans ce second épisode, nous allons aborder différents aspects essentiels à notre application. Nous allons tout d’abord intégrer le charme de recherche, afin de pouvoir lancer des recherches depuis Windows.

Nous allons ensuite découvrir l’utilisation d’éléments de base des applications Metro en HTML comme l’utilisation des templates et du binding. Nous appliquerons ces concepts dans l’utilisation du contrôle de liste (ListView) pour afficher le résultat de la recherche. Ce contrôle est essentiel dans les applications de style Metro car il vous permet d’afficher une liste d’éléments sous la forme de tuiles. Dans les applications Metro en HTML et Javascript, ce contrôle ListView permet d’afficher les éléments soit sous la forme d’une grille (dans l’esprit de l’écran de démarrage Windows 8), soit sous la forme d’une liste (plus traditionnelle).

Pour terminer, nous approfondirons ces concepts en mettant en place le zoom sémantique à partir de la liste. Le but du zoom sémantique est de proposer une vue sémantiquement différente de la liste. L’utilisation typique est de fournir une vue des regroupements de données utilisés, et de permettre ainsi un système de « Jump-List » entre ces regroupements. En mode tactile, cette fonctionnalité est déclenchée par la gesture de zoom, d’où le terme de zoom sémantique.

 

Dans le prochain épisode, nous verrons les différentes étapes pour rendre notre application multilangue.