Les liens de la semaine – Édition #30

Développement

Web

.NET

Technologie

Autres

Intégration de la révision SVN à son projet Visual Studio 2012

Vous connaissez la pyramide des besoins de Maslow? Comme le dit Wikipédia, il s’agit de la représentation, sous la forme d’une pyramide, de la hiérarchie des besoins. Selon la théorie, vous devez satisfaire les besoins des paliers du bas afin de pouvoir penser au niveau suivant.

Il est important de pouvoir combler ses besoins primaires afin de progresser. L’analogie de la pyramide a permis de définir beaucoup d’aspects de la psychologie de l’humain. Dans beaucoup de cas, vu que l’acte du développement logiciel est aussi fait par des humains, je crois que la même analogie s’applique pour le développement.

Confiance

Le lien de confiance entre un programmeur et son gestionnaire de code source est primordial.

Elle doit faire foi de tout.

Êtes-vous déjà retrouvé dans une situation où vous devez mettre à jour une application en production et de réaliser que ce qui est en ligne n’est pas à jour avec vos changements? Ou même que vous l’avez appris une fois vos changements en production, car votre application est maintenant hors d’usage? Douloureux, n’est-ce pas?

C’est à ce moment que vous devez retourner en arrière et tenter de deviner ce qui s’est passé.

Laisser un indice

Lorsque vous êtes un développeur ASP.NET, comme moi, il n’y a pas beaucoup de mécanismes naturels vous permettant de déterminer la version de votre application. Tout ce que vous avez à portée de main est la taille du fichier DLL principal de votre application web et la date de mise à jour de celle-ci.

Ces données ne vont pas très bien lorsque vous n’êtes pas le seul programmeur sur un projet. Il est très difficile de déterminer ce que contient votre application et qui l’a mis à jour.

C’est à cet instant précis que doit intervenir votre gestionnaire de code source, car il est possible d’extraire la version associée aux changements que vous avez en main, de les incruster à votre projet et de les consulter à partir de votre application.

Dans ce cas-ci, le sujet sera abordé en utilisant SVN. Toutefois, sachez qu’il est possible de le faire avec n’importe quel gestionnaire de code source.

La recette

Premièrement, si vous êtes du type visuel, le projet que j’ai utilisé afin de préparer cet article est accessible ici : https://github.com/pparadis/FrenchCoding.SVNVersionLogger/. La magie va s’opérer uniquement lorsque la solution sera intégrée à un repository Subversion.

Ce que je désire accomplir est de pouvoir enregistrer la révision SVN du moment au moment où le projet sera compilé. Cela sera possible en tirant profit de l’événement précompilation mis à notre disposition. La solution que j’ai trouvée à mon goût assume que vous avez déjà à portée de main une installation de TortoiseSVN. Que vous l’utilisiez ou non, il y a un seul exécutable (SubWCRev.exe) et cinq librairies qui vous seront nécessaires.

SubWCRev.exe permet l’analyse d’un repository SVN et de permettre d’y inscrire certaines informations dans un fichier texte en se basant sur un gabarit qui lui sera fourni. Par exemple, dans le cas qui nous intéresse, nous allons utiliser la valeur $WCREV$ afin de récupérer la révision du jeu de changements que nous avons en main.

Pour arriver à faire cela, voici les étapes :

  1. Copier les fichiers nécessaires pour le fonctionnement de SubWCRev.exe dans votre solution. Moi j’ai utilisé le répertoire /lib/tortoisesvn.
  2. Accéder au panneau de configuration des Build Events et inscrire la ligne suivante dans la boîte de texte Pre-Build event command line$(ProjectDir)lib\tortoise\SubWCRev.exe $(SolutionDir) $(ProjectDir)version.tmpl $(ProjectDir)version.txt.
  3. Compilez votre projet.

Note : L’étape #2 assume que, dans votre projet, il y a un fichier nommé version.tmpl qui contiendra le fichier gabarit pour générer le fichier final.

Au final

Lorsque le projet sera compilé, un fichier version.txt sera créé et mis à jour. Le contenu du fichier sera le suivant : 0-1.0.16-2013/05/05 14:54:37 .

Les informations, qui sont séparées par un trait d’union, permettent de déterminer les informations suivantes :

  1. Est-ce qu’il y avait des informations qui n’avaient pas été soumises au serveur (1 ou 0)
  2. Le numéro de la révision en vigueur lorsque la compilation a eu lieu. Dans ce cas-ci, dans le numéro de version 1.0.16, le 16 est le numéro de révision SVN.
  3. La date de la compilation.

Notez que ces informations ont été inscrites dans un fichier texte brut afin d’être en mesure d’y accéder même lorsque l’application web est hors-ligne. Il est possible d’en générer un fichier AssemblyInfo.cs pour que votre DLL y contienne le numéro de version, par exemple.

Les liens de la semaine – Édition #29

Web

Développement

.NET

Technologie

Science et autres

Une introduction à la librairie JavaScript : Angular.js

L’un des aspects, du développement web, en plus forte progression, est le développement d’applications web côté client. Ce développement d’applications se fait à l’aide de librairies permettant, à différent niveau, d’automatiser et d’abstraire certains concepts liés au concept d’une page web.

Le monde du développement d’applications côté client est assez vaste. L’écosystème est dominé par quelques joueurs offrant des fonctionnalités permettant d’attaquer la mise en place de solutions de ce type de différentes façons.

Il faut aussi savoir que ces librairies se divisent en deux catégories : les librairies et les frameworks. Une librairie va s’intégrer dans votre projet et offrir certaines fonctionnalités. Le framework va proposer une architecture dans laquelle vous pourrez développer votre application.

Les joueurs les plus populaires, dans ce domaine, sont les suivants :

Par Google, pour la communauté

AngularJS est un framework open soutenu par une équipe de développement provenant de Google. Le projet est en place depuis déjà le 2009.

Le principal point de vente de ce projet est de faciliter le développement d’applications fonctionnant sur une seule page (en anglais on dit Single-page Application) en offrant un modèle de développement MVC. Il est aussi digne de mention qu’AngularJS est conçu autour du concept de faciliter la testabilité de votre logique d’affaires.

Sur une note moins sérieuse, j’ai trouvé amusants les noms de code que l’équipe de développement a donnés aux différentes versions d’AngularJS. Dans le lot, il y a des noms comme radioactive-gargletofu-animation et debilitating-awesomeness.

Comment ça marche?

Côté développement, AngularJS est directement mise en place à partir de votre HTML afin d’offrir ses fonctionnalités. Cela est possible à l’aide d’un système basé sur des attributs ajoutés à vos éléments de DOM. Ces attributs sont nommés directives et font en sorte que votre HTML sera compilé par la librairie au chargement initial de la page.

Cette fonctionnalité permet au développeur de construire son application en construisant son HTML comme seule référence afin d’en savoir la structure. Cela veut dire que vous n’avez pas besoin de recourir à des gabarits, englobés dans des balises <div>, afin de segmenter les fonctionnalités de votre application.

En plus de cela, vous pouvez ajouter des fonctionnalités à votre application assez facilement. Par exemple, l’ajout de l’attribut ng-click permet d’associer le traitement d’un clic à un élément de votre DOM.

Minimum fonctionnel

Une application, minimalement fonctionnelle, utilisant AngularJS aura les composantes suivantes :

Sur cet exemple, tiré de la documentation du projet, il est possible de cliquer sur un bouton qui incrémente un compteur affiché sur la page. Les éléments requis sont les suivants :

  • Ligne 1 : la directive ng-app.
  • Ligne 4 : le référencement de la librairie d’AngularJS.
  • Ligne 7 : la directive déclarant l’expression permettant l’incrémentation d’un compteur.
  • Ligne 10 : l’affichage du compteur.

Ce qu’il faut savoir, en vrac

Il faut savoir qu’AngularJS est un Framework de développement complet. Il vise à couvrir la totalité de vos besoins de développement côté client.

Ceci étant dit, il serait ambitieux de pouvoir couvrir l’entièreté de ses fonctionnalités sur un simple billet. La documentation développeur est très complète. Je vous invite, de tout mon cœur, à la consulter, car elle va vous donner un très bon aperçu de ce qu’il est possible de faire avec la librairie.

Afin de ne pas répéter ce que vous pouvez trouver ailleurs, je vous fais la liste des concepts importants à retenir pour vous initier. Du moins, ce sont les concepts qui m’ont permis de comprendre! À vous de savoir!