Archives mensuelles : décembre 2012

Mes liens de la semaine #10

Science

  • Une visualisation, en trois dimensions utilisant WebGL, des astéroïdes de notre système solaire.
  • Il n’est pas très évident, selon les scientifiques, d’où provient notre tolérance au lactose. Chose certaine, la théorie de l’évolution est en lien avec cela.

Développement

  • Une réflexion sur la forme que prendra l’avenir du développement logiciel.
  • Rails is omakase est la description que fait David Heinemeier Hansson (DHH) du framework web Rails. Son point est que si vous désirez influencer la direction que prend un projet open source, vous allez devoir vous impliquer et faire valoir votre point.

Web

  • Rands In Repose célèbre sa sixième année de vie. Si vous ne le connaissiez pas, je vous le recommande très fortement. Ses livres sont très intéressants aussi.

Jeux vidéo

Sécurité

  • Un module destiné au serveur web Apache qui injecte du contenu malicieux à votre insu. La morale? N’installez pas de modules de gens que vous ne connaissez pas.
  • Un joli résumé (PDF), de l’Information-technology promotion agency Japonais, au sujet des pratiques recommandées pour la sécurisation de votre environnement web. À imprimer et distribuer comme de la propagande.

Je ne peux pas passer à côté de vous mentionner que le quatrième épisode de Charlie the Unicorn est maintenant disponible. Bonne année!

ASP.NET 4.5 – Présentation de certaines nouveautés

ASP.NET est sur le marché depuis le début de l’année 2002. Depuis toutes ces années, il est au centre de la stratégie web de Microsoft.

L’aventure a débuté en étant le digne successeur à ASP classique. À travers le temps, cette technologie a évolué en un Framework web solide basé sur .NET.

Depuis, mi 2012, la version 4.5 d’ASP.NET est accessible aux développeurs. Tel que le veut la tradition des numéros de version de .NET, celle-ci est basée sur .NET 4.5.

Il y a beaucoup de nouvelles fonctionnalités qui ont été ajoutées ou améliorées dans cette version. Notamment avec la venue du typage dynamique dans .NET et des appels de fonction asynchrone.

Sans tourner autour du sujet trop longtemps, en voici quelques-unes qui ont retenu mon attention. Il est aussi à mentionner que le sujet est beaucoup plus large que ce qui va être énuméré. ASP.NET 4.5 est une mise à jour importante du Framework.

ASP.NET Core

Modules et Handlers Async

Avec la venue de l’amélioration de la prise en charge de l’asynchronicité dans le langage C#, les API des Modules et des Handlers HTTP a été mis au goût du jour. Il est maintenant possible d’écrire ceux-ci afin que le Thread d’exécution ne soit pas dépendant de leur résultat d’exécution pour faire autre chose.

Par exemple, un HttpHandler async doit hériter de la classe HttpTaskAsyncHandler et dériver la méthode ProcessRequestAsync pour que la magie s’opère.

Inclusion de la librairie AntiXSS

AntiXSS est une librairie, développée par Microsoft, d’utilitaires permettant l’encodage d’entrée utilisateur à partir du web. Elle fait partie d’un grand ensemble appelé Microsoft Web Protection Library.

Il est possible d’utiliser directement les fonctionnalités publiques exposées par AntiXSS. Toutefois, la façon de faire la plus préconisée est de l’utiliser comme encodeur par défaut par ASP.NET. Cette technique permet, de façon transparente, à travers les différents API d’encodage d’ASP.NET. Dans ces API, il y a les fonctions HtmlFormUrlEncode et HtmlEncode, par exemple.

Support natif pour WebSocket

WebSocket est un protocole de communication web permettant un échange bidirectionnel de données sur une seule et même connexion TCP. Le protocole est maintenant largement supporté et implémenté par les principaux navigateurs. De plus, il est reconnu par l’IETF sous le joli nom de RFC 6455.

Le support pour WebSocket a maintenant été ajouté à .NET grâce à System.Net.WebSockets.WebSocket. De plus, il possède tout l’attirail d’outils vous permettant d’invoquer ses fonctions de façon asynchrone.

Bundling et minification

L’une des premières optimisations qui est à faire à votre site web est de réduire la quantité et le volume en kilooctets de fichiers JavaScript et CSS à télécharger. Pour faire cette compression et cette minification, il faut utiliser un outil automatisé pour y arriver. Pour les projets pré-.NET4.5, il fallait requérir à une librairie comme Cassette, par exemple.

Dans cette nouvelle version d’ASP.NET intègre le bundling et la minification sans librairie externe. Un guide d’utilisation détaillé se trouve sur le site asp.net. Cette technique fait même partie des projets par défaut ASP.NET MVC. Utilisez-la!

Hébergement

Prefetch

Prefetcher est un composant initialement destiné aux applications de type bureau. Il permet l’accélération du démarrage d’une application en analysant les tendances d’utilisation du disque dur. La principale technique utilisée est de regrouper les fichiers activement utilisés dans un seul répertoire pour accélérer leur accès.

Avec .NET 4.5 et Windows 8 / Windows Server 2012, prefetcher a été intégré et peut être activé pour vos application web ASP.NET. Cette fonctionnalité s’active en activant l’attribut enablePrefetchOptimization.

Forms

Model Binding

Le pendant Forms d’ASP.NET n’a pas été négligé. Il est possible d’associer un contrôle associé à une collection d’éléments (Ex : Gridview, Repeater, etc.) et de pouvoir accéder directement aux propriétés du type associé. Une image vaut mille mots :

typed_repeater

Encodage automatique de vos expressions en HTML

Vous pouvez maintenant faire en sorte que vos données texte soient automatiquement encodées en HTML en utilisant le deux-points dans vos expressions de databinding. Par exemple, <%#: Item.Name %>

Conclusion

Il a été mentionné, plus haut dans cet article, qu’il y a beaucoup plus que ce que j’ai énuméré dans ce billet. Par exemple, il a des changements au support HTML5 de l’éditeur de contenu qui n’ont pas été couvert dans cet article et qui vont probablement vous émerveiller.

Émerveiller, dans le sens que vous allez probablement vous demande pourquoi cela n’était pas là avant? À ce point-là, je vous le dis.

Les prochaines semaines et mois vont nous permettre d’explorer les nouvelles fonctionnalités offertes par cette mise à jour. Soyez vigilants!

Liens de la semaine #9

Je vous souhaite de passer un agréable temps des fêtes. Profitez de l’occasion pour décrocher de votre ordinateur et profiter du bon temps avec votre famille!

Développement

  • Intéressant : Firebase, une base de données destinée à une utilisation côté client. Est hébergée totalement dans le cloud.
  • Qu’est-ce qui se passe lorsqu’on vous oblige à utiliser MSBuild pour votre intégration continue. Amusante et très drôle prise de positions agencée d’images sur certains sujets associés au développement web.
  • De quelle façon vous vous y prenez pour lire du code? Une expérimentation avec une visualisation des interactions entre le sujet de test et le code en question.
  • Un bogue? À qui la responsabilité? Une belle histoire d’un développeur de longue date ayant même développé sur le jeu Stat Craft.

Web

.NET

  • this.Log(), une extension C# permettant le logging sans trop de friction et fonctionnant avec une majorité de frameworks de logging comme log4net, par exemple. Disponible sur NuGet, aussi.
  • La mise à jour ASP.NET and Web Tools 2012.2 arrive à grand pas. La Release Candidate a été dévoilée cette semaine.

Informatique

Science

Présentation des fonctionnalités de développement asynchrone avec .NET et C#

Qu’est-ce qu’une tâche asynchrone

L’un des grands concepts dans le monde du développement avec un grand D est le concept d’exécution synchrone et asynchrone de votre code.

En quelques mots, un code dit asynchrone signifie que son exécution est non bloquante et permet que le flot principal du programme continue de s’exécuter.

Précédemment, j’ai mentionné qu’il s’agissait d’un des grands concept du développement car il sous-entend d’autre concepts reliés à la programmation multithread. Parmi ces concepts, il y a l’attente active (Polling), les fonctions de rappel (callback), Threads et une panoplie d’algorithmes non-bloquants.

Asynchronicité et .NET 4.5

La version 4.5 de .NET apporte deux nouveaux mot clés : async et await.

Ils viennent remplacer la technique qui consistait à invoquer la fonction de démarrage de tâche, exécuter le code en question et déclarer un delegate de retour. Le tout pouvait être assez difficile à suivre dans une majorité de cas.

C’est alors que async et await viennent entrer en jeu lorsqu’il va venir être temps d’avoir des appels asynchrone dans son flux d’exécution. Un exemple typique ressemble à ceci (Tiré de MSDN mais simplifié):

Quelques points intéressants son à noter :

  • La fonction est async car le mot clé est présent dans la signature de celle-ci.
  • Le type de retour est Task<T>.
  • Un appel à une fonction GetStringAsync() avec un type de retour Task<T> est fait.
  • getStringTask est précédé mot clé await avant d’être invoqué.

Le point à retenir dans le scénario présenté est qu’il est facile de concevoir et de comprendre l’ordre d’exécution de celui-ci. Le code va exécuter client.GetStringAsync(« http://msdn.microsoft.com &raquo;) sans, toutefois, attendre son retour avant d’entreprendre l’exécution de GrosseEtLongueTache().

Il est aussi à noter que le type de retour doit être obligatoirement Task<T> avec votre type de retour. Si vous avez une fonction qui retourne rien du tout alors vous devez retourner simplement Task.

API utilisant async

Au moment d’écrire ce billet, il y a une dizaine d’API dans le framework qui exposent des fonctionnalités async. Un drôle de hazard (!) a fait en sorte que ce sont des fonctionnalités où vous devez attendre, dans bien des cas, un peu pour avoir le résultat de l’opération.

Dans le lot, il y a les classes suivantes :

Conclusion

Le bonheur de tout cela est que la conversion de votre code s’exécutant en mode synchrone en mode asynchrone est très simple. Le double avantage réside dans le fait que, dans certains cas, la performance perçue sera augmentée car votre thread principal ne sera pas toujours en attente de vos opérations plus longue à exécuter.

Si vous avez accès à .NET 4.5 et que vous avez accès à ces nouveaux APIs, n’attendez pas que le train passe devant vous et utilisez-les dès maintenant. Vous en ressentirez les effets assez rapidement.

Liens de la semaine #8

Sécurité

Technologie

  • 160 Mac Minis sur un seul rack.
  • Quatre talents à avoir lorsque tu es un développeur. Cela complémente bien mon billet au sujet de la qualité du code.
  • Un bot qui fait des achats au hasard chez Amazon afin d’en analyser les recommandations. Il est intéressant de voir les trouvailles qu’il se fait acheter.

Web

  • Une implémentation de Mario dans le background d’une page web.
  • Tu ne sais plus quel service jetable utiliser pour tes images temporaires? Voici LoremPixel!
  • La spécification pour HTML5 est finale! Il est maintenant temps de passer à l’écriture de HTML 5.1.

.NET

  • Un excellent guide d’introduction à ASP.NET MVC4 et KnockoutJS
  • ASP.NET and Web Tools 2012.2 a été annoncé. Un paquet d’ajustements plein de brillant juste pour toi. Ce qui est intéressant, c’est que la mise à jour se fait par NuGet directement.

Cerise sur le sundae

La terre, la nuit, vue de l’espace.