Les liens de la semaine – Édition #113

Développement

.NET

ASP.NET 5

Technologie

Web

Science et autres

Extraire les données HTML de son compte Koodo avec NodeJS et CasperJS

Mon billet de la semaine dernière n’était pas un hasard. À temps perdu, j’ai travaillé sur un projet qui me trottait en tête depuis que je suis client du service prépayé de Koodo. Ce projet consiste à utiliser CasperJS afin d’aller y extraire les données d’utilisation de mon forfait prépayé.

La principale motivation de ceci est de me permettre d’avoir accès à mes statistiques d’utilisation autrement que par le site web de Koodo. Ce point est plus une question de préférence qu’un irritant. Il faut savoir que Koodo offre une application iOS pour ses clients afin de consulter les informations de leur compte. Cependant, elle n’est pas accessible pour les clients du prépayé.

De plus, en archivant les données de mon côté, l’objectif sera de développer mes propres statistiques d’utilisations. C’est vraiment plus cette raison qui me motive dans ce projet.

Bienvenue à FrenchCoding.KoodoJS!

Avant tout, je dois dire que j’ai manqué d’inspiration pour ce nom de projet. C’est tout ce qui m’est venu en tête!

KoodoJS est fabriqué avec quatre composants bien distincts:

  • Utilisation de CasperJS et PhantomJS pour aller récupérer les données d’utilisation de mon compte (koodo.js)
  • NodeJS, afin de récupérer les fichiers JSON générés par le script CasperJS et les déposer dans la base de données. (koodoWatch.js)
  • MongoDB, pour stocker les données.
  • Powershell et les tâches automatisées Windows pour exécuter le script CasperJS à intervalles réguliers. (casper-koodo.ps1)

Le fonctionnement de tout cela est bien simple. La tâche automatisée exécute CasperJS à intervalles réguliers afin de produire un fichier JSON avec les données provenant du site de Koodo. Ensuite, une application NodeJS attend le fichier nouvellement créé et l’insère dans une base de données MongoDB.

C’est tout! Pour l’instant… :)

Plans pour l’avenir

Vous en conviendrez probablement avec moi. Après la lecture de mon code source, KoodoJS fait un peu brouillon. Il s’agit de la première étape de quelque chose qui a un peu de potentiel.

Dans les changements que je veux apporter à KoodoJS, il y a ceux-ci:

  • Raffiner un peu le code en place
  • Rendre un API accessible par le web. Actuellement, c’est bien, mais les données sont enregistrées sur mon ordinateur personnel. Pas pratique!
  • Produire des statistiques sur l’historique de consommation. Par exemple:
    • Analyse du rythme de consommation des données et des minutes.
    • Graphiques des statistiques d’utilisation
    • Prévision de coûts pour le forfait prépayé selon l’historique de consommation

Ressources supplémentaires

Les liens de la semaine – Édition #89

Développement

.NET

Technologie

Web

  • GifMe.io, un outil à garder à proximité si vous aimez autant que moi les fichiers gif.

Science et autres

Les liens de la semaine – Édition #56

Développement

Code JavaScript intéressant de la semaineUn raytracer implémenté en seulement 35 lignes de JavaScript.

.NET

Web

Technologie

Science et autres

Une introduction au développement node.js sous Windows

Node.js, aussi appelé simplement Node, est une plateforme de développement permettant l’exécution de JavaScript du côté serveur. La principale spécificité de Node est qu’il utilise un modèle d’exécution asynchrone basé sur les événements. Cette façon de faire le développement est tirée directement du modèle de développement que propose JavaScript.

Ce qui permet à Node.js de vivre du côté serveur est l’engin JavaScript utilisé par Google Chrome, V8. C’est aussi par cette façon que Node.js tient une très grande partie de sa rapidité d’exécution.

À vue d’oiseau, Node offre les avantages suivants :

  • Permets l’exécution du JavaScript du côté serveur (évidemment!)
  • Supporté sur Windows, Linux et les grandes plateformes d’hébergement dans les nuages comme Azure.
  • Possède une communauté forte qui maintient une collection de librairies activement développées sur npm.

Un exemple

Il est possible d’illustrer un exemple de l’exécution événementielle de Node à l’aide du code suivant :

var net = require('net');
var server = net.createServer(function(c) {
console.log('Serveur connecté');
c.on('end', function() {
console.log('Serveur déconnecté');
});
c.write('Hello !\r\n');
c.pipe(c);
});
server.listen(8124, function() {
console.log('Serveur démarré');
});

view raw
node.js
hosted with ❤ by GitHub

Cet exemple de code fait les choses suivantes

  • Écoute sur le port 8124 pour une connexion entrante
  • Lorsque le serveur est initialisé, il sera écrit « Serveur démarré » dans la console.
  • Une fois une connexion entrante faite, il sera écrit « Serveur connecté » dans la console et le client recevra le message « Hello ! »
  • Ensuite, tout ce que le client va taper lui sera immédiatement retourné jusqu’à la fin de la connexion.
  • À la fin de la connexion, il sera écrit « Serveur déconnecté » dans la console.

Installation

La façon la plus simple d’installer Node.js est de passer par Chocolatey. Si vous ne connaissez pas Chocolatey, il s’agit d’un gestionnaire d’application fonctionnant sur le même principe que Nuget pour les développeurs .NET ou apt-get pour les gens issus du monde Linux.

Pour vous donner une idée de ce que Chocolatey peut faire, vous pouvez aller jeter un coup d’oeil au billet que j’ai dédié à Chocolatey, il y a quelques semaines.

Alors donc, l’installation de Node.js se fait par la ligne de commande suivante : cinst nodejs ou cinst nodejs.install.

La première option vous configure Node.js sans passer par le fichier MSI fourni par l’équipe de développement. Cette approche est, comme je dirais, assez au métal. Elle est pratique si vous êtes du genre à tout contrôler ce qui se passe sur votre ordinateur.

L’avenue nodejs.install, vous configurera tout ce que vous avez besoin dans un dossier sous Program Files et ajoutera les raccourcis nécessaires à la variable PATH.

Si vous préférez la première voie, l’exécutable de Node.js sera situé sous C:\Chocolatey\lib\nodejs.commandline.0.10.20\tools. Cependant, un raccourci globalement accessible à partir de la ligne de commande sous C:\Chocolatey\bin.

Dans tous les cas, il vous suffira donc de taper la commande node pour démarrer une instance et démarrer l’exécution de votre application Node.js.

npm

Le développement avec Node.js ne serait pas une expérience entière s’il n’y avait pas la possibilité d’ajouter des fonctionnalités facilement à son projet. Après tout, on ne veut pas réécrire la roue à tous les coups. C’est à ce moment qu’entre en jeu la commande npm. C’est ce qu’il vous permettra de faire la gestion des librairies faisant partie de votre projet en ligne de commande.

D’ailleurs, si vous venez du monde .NET, sachez que npm est basé sur la même idée générale que NuGet.

Avec npm, l’installation d’une librairie se fait à l’aide de la commande npm install. Vous pouvez aussi avoir une idée des librairies qui sont à votre disposition à l’aide du site web de npm.

Et ensuite?

Une fois que Node.js sera installé sur votre ordinateur et que vous savez comment installer des librairies avec l’aide de npm, vous pouvez passer à la partie la plus intéressante. C’est-à-dire de programmer quelque chose avec Node.js.

Les possibilités de développement sont assez vastes avec Node.js. Voici un exemple de ce qui est disponible sur npm :

  • express, un framework de développement web minimaliste. Similaire à Sinatra pour Ruby.
  • Request, pour vous permettre de faire facilement des requêtes HTTP.
  • grunt, permet l’automatisation de certaines tâches reliées au développement web.
  • async, offre 20 fonctions ayant un aspect relié à la programmation fonctionnelle (map, filter, each, etc.).
  • commander, pour faciliter la gestion de votre application en ligne de commande.

Et il y a des centaines d’exemples similaires sur lesquels vous pourriez vous inspirer pour votre projet. Il suffit de laisser aller sa créativité.

Ceci étant dit, ce n’est pas tout. Node.js n’est pas uniquement relié au développement d’applications web et ligne de commande. Il est même possible de faire de la robotique avec un module Arduino. Vous trouverez plus d’informations sur http://nodebots.io/.