22 octobre 2013

Bibliothèques JavaScript pour...

microjsLe problème majeur de HTML5, c'est la prise en charge de tous les navigateurs quand on écrit du code un peu alambiqué. Et l'absence de petits outils cruciaux en JavaScript. On peut bien sûr prendre un énorme framework, mais sur des petits projets j'aime pouvoir combiner de petites bibliothèques JavaScript.

Eh bien microjs est une mine d'or pour cela: un micro site pour des micro bibliothèques.

Par exemple, des bibliothèques pour gérer les événements custom quel que soit le navigateur.

10 octobre 2013

Elastislide et RequireJS

RequireJS peut être un peu laborieux à paramétrer pour les composants qui ne sont pas AMD. En général on trouve sur le Web de quoi s’aider, mais pour Elastislide je n’avais rien trouvé. Alors si vous êtes dans le même cas, voici la configuration à utiliser pour RequireJS:

requirejs.config(
{
paths: {
'jquery': 'vendor/jquery-1.9.1.min', // Cannot optimize because of shim below
'elastislide': 'vendor/bower_components/elastislide/js/jquery.elastislide',
'jquerypp.custom': 'vendor/bower_components/elastislide/js/jquerypp.custom',
'modernizr.custom.17475': 'vendor/bower_components/elastislide/js/modernizr.custom.17475'
},

shim: {
'jquery': {
exports: '$'
},
'jquerypp.custom': ['jquery'],
'elastislide': ['jquery', 'modernizr.custom.17475', 'jquerypp.custom']
}
}
);



Cette configuration suppose que vos scripts sont dans le répertoire /js, et que vous avez récupéré Elastislide via Bower. Sinon, ajustez les chemins.

25 septembre 2013

Quel framework MV* choisir ?

Votre application JavaScript doit être maintenable, et c’est donc naturellement que vous choisissez d’utiliser un framework MV* pour éviter le code spaghetti.

Sauf que des frameworks MV*, on en ramasse à la pelle. Pour ne citer que certains: AngularJS, Backbone.js, Knockout.js, ember.js. Alors lequel prendre?

Certains choisiront celui qui leur rend le développement le plus agréable. Pour cela, rendez-vous sur TodoMVC, qui montre l’implémentation d’une petite application avec chacun des frameworks MV*.

D’autres choisiront le plus populaire, en se disant qu’il sera probablement mieux maintenu et plus pérenne. Aujourd’hui si j’en compare 4, c’est AngularJS qui tire son épingle du jeu:

Mais attention, ce graphique ne montre que le nombre d’utilisation de ces mots clés dans les recherches, il serait hâtif d’en tirer des conclusions trop approfondies.

D’autres se baseront sur l’éditeur qui soutient: Google pour AngularJS, Microsoft pour Knockout.js

Dans tous les cas, TodoMVC est un bon point de départ puisqu’il donne aussi les liens pour apprendre le framework choisi, par exemple ici pour AngularJS.

Quel que soit votre choix, je vous souhaite une belle application maintenable. Car rappelez-vous:

Il faut toujours programmer comme si la personne qui maintiendra votre code est un psychopathe violent qui sait où vous habitez.

27 août 2013

Tests unitaires JavaScript avec QUnit

Vous venez de coder un gros module pour votre page HTML5, mais votre petit doigt vous dit qu’il suffira de pas grand chose pour le casser. D’autant plus que la nature dynamique de JavaScript et sa grande tolérance font que l’on voit les bugs et régressions un peu tard. Il est temps d’écrire des tests!

Et ça tombe bien: c’est simple.

Tout d’abord, on crée une petite page HTML fort simple:

<!DOCTYPE html>
<html>
<head>
    <title>Tests unitaires</title>
    <link rel="stylesheet" href="
http://code.jquery.com/qunit/qunit-git.css">
</head>
<body>
    <div id="qunit">
    </div>
    <div id="qunit-fixture">
    </div>
    <script src="
http://code.jquery.com/qunit/qunit-git.js"></script>
    <script src="unittests.js"></script>
</body>
</html>

Puis on ajoute dans le fichier unittests.js (c’est plus propre de séparer) nos tests. Faisons simple pour commencer:

test('Addition', function () {
    var resultat = 2 + 2;

    equal(4, resultat, 'JavaScript sait faire une addition');
});

Il n’y a plus qu’à exécuter la page:

image

Notez les nombres qui indiquent le nombre d’assertions dans votre test. Nous avons utilisé equals, mais il y en a d’autres: voir la liste ici.

Pour ajouter d’autres tests, il suffit d’ajouter d’autres appels à la méthode test. Et dans un prochain article, je vous montrerai comment tester du code asynchrone.

29 juin 2013

Il fait tweeter sa fenetre

Un peu par hasard, je suis tombé sur une vidéo qui a été filmée lors de ma présentation “Domotique et Windows Phone”. Ca fait un an déjà…

La vidéo fait partie d’un article de L’Informaticien, par Orianne Vatin, que je remercie pour sa couverture de l’événement.

30 mai 2013

Pourquoi je vais adorer Windows 8.1

Soyons clairs: j’adore Windows 8, mais à condition de le faire tourner sur une machine à écran tactile. Non, je ne considère pas la disparition du menu démarrer comme une horreur: il a juste été transformé en l’écran d’accueil qui offre bien plus de fonctionnalités et surtout y ajoute dynamisme et information en temps réel.

Bien sûr, je sais que tout le monde ne partage pas mon avis. Mais avant de râler sur Windows 8, il faudrait encore avoir pris 10 minutes pour apprendre à s’en servir.

Ceux qui pensaient qu’avec Windows 8.1 Microsoft ferait machine arrière en seront pour leurs frais. Par contre, parmi les améliorations annoncées de la version 8.1, voici celles qui me font vraiment plaisir:

  • Skydrive accessible en offline.
  • Internet Explorer 11, avec synchronisation des onglets entre toutes mes machines Windows 8.1.
  • Applications et paramètres synchronisés entre mes machines Windows 8.1 si j’utilise un compte Microsoft.
  • Pratiquement tout le panneau de configuration accessible en mode Metro.
  • Les applications ne sont plus ajoutées par défaut en tant que tuiles sur mon écran d’accueil (elles sont disponibles dans une catégorie “New” de la liste de toutes les applis, celle que l’on a en faisant un swipe depuis le bas de l’écran).
  • La taille de la vue snap est libre.
  • Des mini-tuiles, ce sera parfait pour les applis qui n’ont pas besoin d’une tuile dynamique (pas d’info pertinente, ou simplement “vieilles”).

Comble du bonheur, la version 8.1 est offerte aux possesseurs de la version 8. Reste plus qu’à attendre sa sortie…

05 avril 2013

Umbraco: un superbe produit mais une documentation abstruse

Après comparaison de divers CMS je me suis lancé dans l’utilisation d’Umbraco pour un projet client. Cela fait quelques semaines et je trouve Umbraco génial: la plupart des fonctionnalités s’implémentent sans même utiliser Visual Studio avec des outils comme ASP.NET MVC Razor et XSLT. Et pour les tâches complexe, on dégaine Visual Studio pour avoir accès a une magnifique API à la hauteur de tout ce que l’on peut trouver en .NET.

Là où le bât blesse, c’est la documentation. Je perds un temps fou à trouver la documentation adéquate pour les tâches ardues. Non pas que la documentation n’existe pas: on trouve le très bon site communautaire et l’équipe d’Umbraco a fait un réel effort de production de documentation. Non, le problème c’est que la documentation est mal catégorisée ou indexée, ce qui contraste avec la documentation de .NET à laquelle je suis habituée (qui pour le coup est exceptionnellement bien faite).

Dernier exemple en date: j’utilise la classe umbraco.cms.businesslogic.ApplicationBase mais il me dit qu’elle est “deprecated” et qu’il faut utiliser ApplicationStartupHandler à la place. Sauf qu’un petit tour sur le Web m’indique qu’en fait ApplicationStartupHandler est “deprecated” aussi (voir les commentaires de ce billet). En suivant les liens, j’arrive sur cette excellente documentation. Mais comme pour mes précédentes expériences la question est: pourquoi trouver cette documentation a-t-il nécessité tant d’effort?

Pour résumer: Umbraco est un superbe CMS, ultra flexible. Sa documentation est riche, mais elle est mal indexée.