Archives mensuelles : février 2013

Introduction à Git

Lorsque vous vous initiez à la programmation, l’un des premiers concepts que devez apprendre est celui de la gestion de votre code source. Plus précisément, vous apprenez à versionner les modifications que vous faites à celui-ci. À l’époque où nous nous trouvons, il y a deux philosophies qui s’offrent à vous lorsque qu’il est temps de faire la gestion de votre code source.

La première est ce que j’ai nommé la voie classique. C’est à dire le système de gestion centralisé.

Ce système est très populaire et son principal représentant est Subversion. Son fonctionnement est dit centralisé car vos changements sont toujours comparés à une copie de votre code présent sur un serveur central. Sa popularité est principalement liée au fait de la facilité de compréhension du workflow d’utilisation de celui ci.

L’alternative à ce concept est celui du système de gestion de version décentralisée. Celui-ci propose une façon de travaillée qui, comme le nom le dit, est décentralisée. C’est-à-dire que chaque contributeur au dépôt de code travaille de façon asynchrone des autres.

Dans ce domaine, il y a deux principaux prétendant au titre : Git et Mercurial. Ceux-ci offrent des fonctionnalités similaires offrant, pour chacun, des pour et des contres. Néanmoins, il est que Git a été popularisé par le service en ligne Github.

Comme le dit l’expression tirée de mon propre livre : une fois que vous en avez vu un, vous les avez tous vus. Alors, ce billet va se concentrer uniquement sur Git.

Introduction à Git

Git a été développé en 2005 par Linus Torvalds lui-même en réponse au fait que le système de gestion de sources BitKeeper ne fût plus disponible en utilisation gratuite.

Si vous désirez en savoir plus sur l’historique de Git et le contexte dans lequel il a été créé, je vous conseille d’aller consulter la page Wikipédia qui lui est dédié.

J’ai mentionné, en introduction, que Git est un système décentralisé. Cela signifie que tous les contributeurs à un projet ont une copie du repository sur leur poste de travail. Cette philosophie de travail fait en sorte que chaque contributeur a la responsabilité d’évaluer les changements qui ont été apportés au repository principal et de faire la gestion des conflits de version, s’il y en a.

Comment ça marche?

L’utilisation de git se résume à quelques commandes. Il a certains outils graphiques qui permettent de l’utiliser sans avoir à recourir à la ligne de commande. Toutefois, quoi de mieux que d’écrire pour retenir quelque chose?

Minimum pour être fonctionnel, il faut savoir la définition de certaines commandes pouvant être exécutées dans Git. Pour cela, je recommande d’aller directement à la source et d’aller lire la documentation officielle de Git.

Une fois familier avec le concept, il y a ce billet qui décrit une façon assez simple et concrète pour utiliser Git dans le cadre du développement d’un application.

Il ne faut pas oublier de mentionner que vous pouvez vous initier à Git grâce à un tutoriel en ligne accessible ici : http://try.github.com/.

Les outils

Près de cinq cent mots sans aborder le sujet de son utilisation, dans le concret? Pour un développeur utilisant Windows, il y a quelques possibilités afin de vous permettre d’utiliser Git.

#1 – Git, directement au métal

Cette possibilité implique que vous connaissez les commandes git par coeur et que vous êtes confortable a travailler en ligne de commande en tout temps. De plus, vous pouvez oublier l’intégration de celui-ci à l’IDE de votre choix.

Même si cela est l’option #1, ce ne serait pas mon premier choix.

#2 – Github for Windows

Jusqu’à tout récemment, Github for Windows est devenu le choix de préférence pour utiliser Github à partir de votre poste Windows.

Si vous ne l’avez pas d’installé, vous ne le regretterez pas. De plus, à son installation, votre poste de travail sera pleinement configuré pour être en mesure d’utiliser Git à partir de la ligne de commande. Une pierre deux coups!

#3 – Git dans Visual Studio

L’annonce de la disponibilité d’une extension, développée par Microsoft, à Visual Studio 2012 a été faite dans la semaine du 4 février passée.

Cette extension permet de faire la gestion de vos sources avec Git directement à partir de Visual Studio sans requérir à une librairie tierse. Avec cette extension-ci, vos sources ayant besoin d’être commitées ou même soumises au serveur master peut se faire directement à même Visual Studio.

Je l’utilise maintenant à temps plein depuis qu’elle est disponible sur le web et je n’ai arrêté depuis!

Liens de la semaine #20

Web

.NET

Développement

Sécurité

Technologie

Société

Mes premières expériences de développement avec WinRT et Windows 8

Pour un développeur, le principal attrait de Windows 8 est la possibilité de développer des applications de type WinRT. Ces applications sont celles qui utilisent la nouvelle approche visuelle des « Apps » que l’on peut voir sur le Windows Store.

Cette approche est à source même de la nouvelle identité que Microsoft veut donner à Windows. L’homogénéisation du visuel des applications permet de donner ce même ton uni à travers les différentes plateformes que supporte Windows. Les plateformes supportées passent de l’ordinateur de bureau, à la tablette en passant par le téléphone intelligent.

Du côté développement, WinRT prend en charge le développement avec un éventail large de langages de programmation. Il est possible de développer sur cette plateforme avec C++, VB.NET, C#, JavaScript et même TypeScript.

Là où l’aventure débute est au moment que j’ai su qu’il était possible de développer des applications WinRT en HTML5/JavaScript. Il est vrai que je proviens d’un monde C#. Toutefois, le web reste mon principal univers. L’idée est donc d’évaluer ce que représentent l’effort et la facilité de développement d’applications Windows Store en utilisant cette combinaison.

À première vue, l’idée de concevoir une application Windows 8 en écrivant du HTML 5 et du JavaScript m’a paru saugrenue. Toutefois, après quelques minutes de lecture, on peut apprendre que les engins qui propulsent ces applications sont ceux qui alimentent la plus récente version d’Internet Explorer. Ce qui est à comprendre de cela est que l’application Windows RT va se comporter dans le même cadre que celle qui s’exécute sur une page web.

Mon initiation au monde du développement Windows RT s’est accomplie grâce à ces guides, disponibles sur le site MSDN. Vous passerez à travers toutes les étapes vous permettant de configurer votre environnement de travail et de développer vos premières lignes de code. D’ailleurs, vous pouvez suivre où j’en suis rendu à travers mon repository Github.

Définitions

Windows RT : Le nom de code donné à la version de Windows pouvant s’exécuter sur la plateforme ARM.

WinRT : Aussi appelé Windows Runtime. Est le nom de code donné aux applications nouveau genre pour Windows 8. Elles sont aussi associées au terme « Windows Store apps ».

Impressions

Dans le passé, j’ai contribué à des projets d’applications s’exécutant sur Windows avec .NET. Pour être honnête, l’expérience a été assez linéaire et beaucoup trop drabe à mon goût.

À ma grande surprise, l’expérience de développement fut très agréable. Voire même très rafraîchissante.

Ayant décidé de prendre le penchant HTML5/JavaScript des applications Windows 8, j’avais quelques réserves quant à la qualité de l’intégration de l’API WinRT. Cette impression se base sur le fait que, habituellement, cette combinaison est typiquement réservée au développement web et non au développement d’applications bureau ou mobile.

Il faut savoir que cela aussi concorde avec les avancées qui ont été mises de l’avant  dans Visual Studio 2012. L’outillage entourant le développement JavaScript a été beaucoup amélioré. Il est même possible d’avoir un Intellisense décent et même de pouvoir utiliser des breakpoint à travers son JavaScript.

L’autre facteur que j’ai apprécié en étant néophyte, les guides d’introduction et les bonnes pratiques au développement Windows 8 sur MSDN sont assez bien conçus. Toutefois, la documentation de l’API fait un peu d’anémie côté exemples d’utilisation et souvent une priorité est donnée au C# sur les bouts de codes.

Conclusion

Mes premiers pas avec le développement d’application Windows m’ont assez emballé pour me convaincre de pousser un peu plus loin mon petit projet d’application. Ce qui m’intéresse le plus est l’accessibilité de la plateforme de développement.

Après tout, j’ai déjà ma licence de Windows 8 et Visual Studio est à portée de main. Il ne faut pas oublier le 49$ de frais pour avoir accès au Windows Store en tant que développeur.

Ne vous en faites pas, je vous tiendrai au courant des avancements de ce projet prochainement à cette même antenne!

Liens de la semaine #19

Développement

Web

.NET

Technologie

Société

Javascript : Apprentissage de concept du prototypage

Je me suis levé ce matin avec une idée en tête. Cette idée est littéralement la première chose qui m’est venue en tête.

Il y a de cela un bon moment que j’ai laissé de côté la certaines notions avancées du langage de programmation Javascript. Force est d’admettre que la tendance au Javascript est loin de s’arrêter et progresse sans arrêt. C’est alors que je me suis dis qu’il est temps de prendre le taureau par les cornes et le maîtriser si on veut avancer.

C’est donc pour cette raison que je me suis dis qu’aujourd’hui serait une journée parfaite pour apprivoiser la bestiole qu’est le prototypage dans Javascript. Quoi de mieux que de l’écrire pour le retenir?

Allons y pour la théorie. Le code suivra par la suite, naturellement. D’accord? Oui? Allons-y!

Prototypes

Un prototype, avec Javascript, est ce qui permet de recréer le concept d’héritage dans un langage comme JavasScript qui n’a pas de notions de classes.

En premier lieu, un prototype est ce qui permet de recréer le concept d’héritage dans un langage comme JavasScript qui n’a pas de concept d’héritage. De plus, une fonction qui a des propriétés de créées sous la propriété prototype va transmettre ses fonctions à ses objets instanciés.

Un exemple de ceci est le suivant :

Une fonction x est créée et une fonction log a été associée en prototype. L’objet a ensuite accès à la fonction log comme si elle lui appartenait.

Ce simple bout de code introduit quelques concepts qui peuvent être nouveau lorsque vous provenez d’un monde orienté objet comme moi. C#, en occurence.

Il va de soi que l’objet x est une fonction. Elle agit aussi comme le constructeur de a. Par exemple, si on exécute a.constructor(), le résultat affiché à l’écran sera « constructor ».

Lorsqu’un objet est instancié comme l’est, il obtient en référence les fonctions et proprités du prototype de son objet constructeur. Une autre image pour ce concept est que l’objet construit obtient un pointeur vers le prototype du constructeur.

À ce moment là, Javascript met à notre disposition deux utilitaires permettant de déterminer où se situe notre objet dans la hiérarchie de prototypage.

  • isPrototypeOf : Détermine si un objet donné est le prototype d’un autre. Par exemple, exécuter x.prototype.isPrototypeOf(a) retourne true.
  • La propriété constructor : Retourne l’identité du constructeur d’un objet. Par exemple, exécuter a.constructor === x va retourner true.

Annexe 1 – Création d’objets

En lisant la définition annotée du standard ECMAScript, j’ai appris que je ne savais pas vraiment comment créer un objet. Lorsqu’on vient d’un monde statiquement typé comme C#, les objets s’instancient avec le mot clé new.

Depuis la version 5 du standard ECMAScript, il est possible de créer des objets à la main avec l’aide de la fonction Object.Create. Cette fonction permet de créer l’objets désiré en spécifiant son prototype et ses propriétés.

Conclusion

L’objectif que je m’étais fixé a été atteint. Je voulais apprendre et, finalement, bien saisir le concept de prototypage avec le langage de programmation JavaScript.

Cette question, pendant les deux premières journées où j’ai planché sur la question, a même été jusqu’à me réveiller la nuit et occuper mes rêves. J’avais une réelle intention d’aller jusqu’au bout. Je dois même avouer que c’est la première fois que je me donne autant pour un article.

Ce billet se veut comme la documentation de mes apprentissages sur le sujet. Espérant que cela puisse être utile à quelqu’un, un jour.