La trousse à outils du développeur HTML5

Le monde du web est en pleine effervescence avec la mise au point en parallèle des normes HTML5, CSS3 et ECMAScript 6. Dans le même temps, les développements web se font plus diverses, intégrant maintenant des notions telles que le responsive design, la mobilité, ou l’hypermedia.

Les frontières bougeant rapidement, il devient parfois difficile de suivre l’actualité et de se former efficacement sur les nouveautés et sur l’utilisation des nouveaux outils, à moins d’avoir le courage d’aller lire le document de normalisation.

C’est pourquoi je vous propose aujourd’hui une liste de ressources qui vous permettront de vous tenir à jour, et peut-être de découvrir de quoi sera fait le monde HTML5 de demain.

Les sites web pour se documenter

Que vous vouliez vérifier la syntaxe d’une fonction JavaScript ou simplement apprendre à utiliser de nouvelles fonctionnalités, le web est maintenant riche de ressources qui vous permettront de creuser en profondeur aussi bien les anciens sujets que les toutes dernières nouveautés de la norme HTML5.

  • W3Schools, qu’on ne présente plus tant il a permis de mettre le pied à l’étrier de toute une génération de développeurs web. Le site propose toute une section consacrée à HTML5, qui parle essentiellement des éléments de la norme qui sont d’ores et déjà stabilisés. Pour l’anecdote, contrairement à ce que croient beaucoup de développeurs, le site W3Schools n’est en aucun cas associé au W3C, l’organisme qui régit la norme HTML5. Il s’agit d’une entité totalement indépendante.
  • Mozilla Developper Network (MDN), un effort de la fondation Mozilla, bien connue pour son navigateur Firefox. Ce site propose une documentation riche et très complète sur tout ce qui touche au HTML5, y compris ses aspects toujours en cours de normalisation. De nombreux tutoriaux permettent de mettre directement les mains dans le cambouis, avec des exemples de code clairs et pédagogiques, ce qui est toujours appréciable. MDN a par ailleurs le bon goût de ne pas se limiter aux fonctionnalités supportées par Firefox, mais au contraire de proposer pour chacune d’entre elles un tableau établissant quel navigateur les supporte, et les éventuels cas particuliers (fonctionnalité supportée partiellement).
  • HTML5 Rocks, un site supporté par Google qui propose des articles sur différents sujets autour du HTML5. Le site est conçu sur un principe de communauté ouverte où chacun est libre de proposer de nouveaux articles ou de corriger les articles plus anciens, par le biais d’un repo GitHub. On trouve quelques belles plumes sur ce site, comme Paul Irish ou Paul Lewis.

Les sites pour juger la compatibilité

Le principal problème avec lequel le développeur HTML5 doit composer, est la notion de compatibilité des navigateurs avec les fonctionnalités HTML5. De cette compatibilité va dépendre la nécessité d’utiliser ou non des polyfills, et d’appliquer les principes de graceful degradation et d’amélioration progressive.

  • Can I Use propose une matrice des fonctionnalités du monde HTML5, et des différents navigateurs du marché. Il vous permet donc d’un seul coup d’œil de savoir quel navigateur supporte quelles fonctionnalités. Ce site est rapidement devenu un incontournable, car nous sommes dans une période de transition où il est très important de faire attention à ce que les aspects de la norme HTML5 (ou de ses cousines CSS3 et ECMAScript 5) que nous souhaitons utiliser dans nos développements sont bien supportés par le parc de navigateurs visé. Dans ce domaine, Can I Use est la référence absolue. Il est très clair, facile à utiliser avec son moteur de recherche, et surtout il a le mérite d’être très régulièrement mis à jour, aussi bien avec de nouvelles fonctionnalités en cours de normalisation, qu’avec les nouvelles versions des navigateurs mises sur le marché.
  • QuirksMode est un bon complément à Can I Use. Le site existe depuis plus longtemps, et s’avère parfois plus précis pour expliquer comment sont supportées certaines vieilles fonctionnalités par de non moins anciens navigateurs. Le site est aussi très bavard pour qui s’intéresse à l’histoire du web. Par contre son interface commence à se faire vieillissante, et le site ne semble plus être mis à jour qu’épisodiquement.
  • Les matrices des fonctionnalités ECMAScript 5 et le futur ECMAScript 6 présentent les nouvelles fonctionnalités introduites dans ces deux normes du langage JavaScript, et indiquent quels navigateurs les supportent. Ces tableaux sont tout d’abord très utile d’un point de vue éducatif, car ils permettent de se faire une bonne idée des nouveautés du langage JavaScript. En terme de compatibilité, tous les nouveaux navigateurs supportent maintenant ECMAScript 5, mais il est intéressant de pouvoir déterminer lesquels ont commencé à supporter ECMAScript 6 (qui est toujours en cours de normalisation) et quelles nouvelles solutions cette norme va nous apporter.
  • Modernizr n’est pas à proprement parler un site, mais une librairie à la fois CSS et JavaScript, permettant de faire de la détection de fonctionnalités. Côté CSS, Modernizr ajoute automatiquement dans la balise <html> des classes qui vont indiquer si le navigateur courant supporte ou non, par exemple les coins arrondis (les classes borderradius et no-borderradius). Côté JavaScript, Modernizr propose une API permettant d’effectuer les mêmes tests, cette fois-ci déclarativement, pour s’en servir comme condition dans notre code. Tout cela permet d’appliquer les principes d’amélioration progressive dont nous avons parlé plus haut. Personnellement, j’évite généralement de charger cette librairie, en préférant en extraire simplement le morceau de code correspondant au test que j’ai besoin d’effectuer.

Les outils de développement

L’époque où l’on devait presser Ctrl+F5 toutes les 10 secondes est maintenant révolue. L’écosystème du développement web est maintenant riche de très nombreuses applications et plugins qui peuvent vous faire gagner un temps phénoménal.

  • Firebug a longtemps été un pionnier du débugage dans les navigateurs, mais aujourd’hui, ils disposent tous d’un tel outil. Quel que soit le choix que vous avez fait, il y a forcément une console qui accompagne votre navigateur préféré. De nos jours, elles permettent toutes, à minima, d’ausculter et de modifier à la volée le code HTML et styles CSS de la page, ainsi que de débuguer le code JavaScript (avec des points d’arrêt, des espions et l’accès à la stack) et d’afficher les requêtes HTTP. Firebug permet aussi d’examiner les cookies liés à la page courante. Chrome nécessitera pour se faire une autre extension : Edit this cookie.
  • YSlow est un très bon outil conçu par les développeurs web de Yahoo!, disponible sous forme de plugin pour la plupart des navigateurs (à l’exception notable d’Internet Explorer). Il vous permet de jauger la rapidité de rendu de vos pages web, et vous suggère différentes optimisations que vous pourriez effectuer afin d’améliorer votre score. Il dispose aussi d’outils complémentaires comme JSLint, un parser JavaScript permettant d’analyser votre code afin d’y décéler les mauvais usages, ou de Smush.it, un outil permettant d’optimiser la compression des images utilisées par votre site.
  • Autre très bonne extension pour Firefox, Tamper Data permet d’intercepter les formulaires POST et de les modifier à la volée. Très utile pour se retrouver plus rapidement en tête des highscores de votre jeu préféré. 🙂
  • Dans le même ordre d’idée, l’extension Postman pour Chrome permet de fabriquer vos propres requêtes HTTP, chose très utile pour tester des services REST.
  • Bien connu des développeurs web, racheté en 2012 par Telerik mais toujours gratuit, Fiddler est un outil de plus haut niveau que les consoles de développement. Il permet de sniffer le trafic HTTP qui circule sur votre machine, y compris sur la boucle Localhost, et de l’analyser, voire le modifier. C’est un incontournable, extrêmement complet (au point que je ne pense pas connaître les trois quart de ses fonctionnalités) qui se révèlera être votre meilleur ami lorsque vous aurez tôt ou tard besoin de débuguer au plus près les requêtes HTTP.
  • Encore plus haut niveau, WireShark (ex-Ethereal) est plutôt un outil pour administrateur réseau, mais il s’avère parfois nécessaire d’en arriver à cette extrémité lorsque le problème dépasse la seule couche applicative (où se trouve le protocole HTTP). Je vous souhaite d’avoir rarement à vous en servir car son utilisation est généralement synonyme d’un problème de réseau assez compliqué à résoudre pour un humble développeur web.
  • Il y a malheureusement encore beaucoup de vieilles versions d’Internet Explorer en circulation, ce qui implique la nécessité de tester nos sites web pour s’assurer de leur bon fonctionnement sur celles-ci. Pour se faire, vous pouvez utiliser les dernières versions de ce navigateur qui dispose d’émulateurs pour les versions antérieures. Malheureusement, ça ne marche pas toujours très bien. La meilleure alternative que j’ai pu trouver, en dehors de créer une machine virtuelle avec une vieille version de Windows (seule solution 100% fiable), est de passer par IETester, qui propose de reproduire le comportement des anciennes versions d’Internet Explorer, en réutilisant les moteurs originaux, gage de fidélité dans le comportement. Cet outil semble néanmoins sujet à de nombreux bugs, mais pour du débugage rapide c’est la meilleure solution que je connaisse.

Conclusion

Cette liste ne se veut pas exhaustive. Aussi, n’hésitez pas à partager vos propres recommandations dans les commentaires si le cœur vous en dit.

Power Query l’ETL « Power-User » dans l’ombre de SSIS

Power Query l’ETL « Power-User » dans l’ombre de SSIS

Comparatif Power Query / SSIS

Power Query atouts et faiblesses

Initialement lancé sous le nom de Data Explorer, le mini ETL  Power Query de la suite Power BI s’est amélioré et la version actuelle (2.9.3547.162) apporte quelques nouveautés.

Dans le cadre d’un projet Power BI dont les données sont récupérées d’une liste SharePoint, j’ai eu l’occasion d’utiliser ou essayer d’utiliser devrais-je dire, certaines de ces transformations.

La nouvelle version de Power Query propose beaucoup de nouvelles transformations, elles sont principalement accessibles via une fenêtre d’édition de formules d’où un script est généré.

Elles sont classées dans différentes catégories en fonction du type de transformation.

La première chose que nous remarquons, est que cette dernière ne donne pas beaucoup d’options et applique même parfois la transformation avec une valeur par défaut. Je pense à la transformation    Image       qui enlève les doublons en prenant comme référence la première colonne de la table.

Notons au passage que pour chaque transformation, une requête est générée en Langage M.

Du coup pour personnaliser une transformation il faudra être courageux et aller plonger dans la requête susnommée.

 

1)    Power Query : Dans les faits / Dans le M

Les transformations offertes sont multiples et comme annoncé plus haut, chacune d’elle génère du code en langage M.

Prenons comme exemple la transformation Image

Celle-ci permet de séparer une colonne en plusieurs en utilisant un délimiteur spécifique.

Dans notre cas nous utiliserons le caractère « Espace » comme délimiteur pour séparer une colonne (Created By1) contenant le nom et le prénom d’une personne dans deux colonnes distinctes.

Image

Image

Power Query nous propose plusieurs délimiteurs ainsi que la position à prendre en compte.

Image

Au final nous obtenons le résultat attendu d’une manière très simple.

Il faut l’avouer, la mise en œuvre des transformations fait partie des forces de Power Query.

Sauf que pour aller, plus loin il faudra regarder ce qui se cache derrière.

Et derrière se cache une requête écrite en M. En voici l’extrait correspondant à notre requête.

Image

Notons aussi qu’il est possible d’écrire des formules via un assistant, comme dans le cas de la construction d’une nouvelle colonne.

Contrairement à SSIS  avec le « derived column » par exemple où on a une fenêtre proposant la liste des fonctions disponibles avec une petite description, ici aucune aide n’est proposée.

La seule façon d’ajouter une formule ou une expression c’est de connaître celle-ci (un lien décrivant la liste des formules est disponible dans la partie référentielle).

Image

Chose non moins importante concernant la syntaxe des formules : elles sont sensibles à la casse.

Et c’est par un pur hasard que j’ai constaté cela, en essayant de mettre en place une formule avec IF. En mettant les mots clé en majuscules, nous avons une erreur pas très explicite il faut l’avouer.

Image

2)   Comparatif de certains composants entre Power Query et SSIS

Après un rapide tour des différentes transformations proposées dans Power Query, on se rend compte que la plupart de ces transformations sont disponibles dans SSIS mais de façon moins ergonomique.

Je prends comme exemple la transformation Image

Cette dernière est accessible sous SSIS via le composant « Flat File Source ».

De la même manière, la transformation    Image     présente dans l’interface de Power Query est disponible sous Intégration Services via  le composant « Aggregate ». 

En partant de ce constat, on s’aperçoit que Power Query fait abstraction des différents composants de SSIS qu’il faut mettre en place afin d’avoir accès à certaines transformations.

Il met ainsi à disposition ces transformations directement via l’interface.

Ci-dessous nous avons un tableau faisant l’analogie de certaines transformations entre Power Query et SSIS.

POWER QUERY

SSIS

Merge Merge Join
Unpivot Unpivot
Remove Duplicates Sort
Group By Group by (Aggregat)
Use First Row as Headers Column name in the First Data Row (Import Flat File)
Insert Custom Column Derived Column

Remarque :

Ce tableau n’a pas pour objectif l’exhaustivité mais juste pour exemple comparatif de quelques transformations.

3)   Possibilités offertes par Power Query

Les fonctionnalités de Power Query peuvent s’appliquer aussi bien sur les colonnes que sur les lignes d’une table.

Ainsi dans la suite nous classerons ces fonctionnalités en fonction des éléments sur lesquels ils s’appliquent.

a)     Réduction 

Dans cette section on trouve tout ce qui permet d’enlever une partie des lignes ou des colonnes de la table. Cette réduction peut se faire à plusieurs niveaux.

Image

 Image

Supprimer les n premières lignes de la table.

 Image Supprimer les colonnes sélectionnées de l’affichage et empêcher leur utilisation ultérieure.
 Image Supprimer les lignes alternées de la table en commençant par la première ligne à supprimer et en indiquant le nombre de lignes à supprimer et le nombre de lignes à conserver.
 Image Supprimer les lignes contenant des erreurs dans les colonnes actuellement sélectionnées.
 Image Supprimer toutes les lignes de la table dans lesquelles les valeurs dans les colonnes sélectionnées ont un doublon dans les valeurs antérieures. La ligne contenant la première occurrence d’un ensemble de valeurs n’est pas supprimée.
 Image Spécifier le nombre des premières lignes à conserver dans la table.
 Image Spécifier une plage de lignes commençant par une première ligne et incluant le nombre de lignes à conserver dans la table.

                                                                                                 

b)    Transformation

Les transformations disponibles ne sont pas encore nombreuses, mais la section reste prometteuse au vu de la facilité qu’elle apporte.

Image

 Image Une colonne de texte peut être divisée en plusieurs colonnes de deux façons :•            Par délimiteur•            Par nombre de caractères
Image Résumer les données par valeurs de ligne. Par exemple, avec les colonnes État, Ville et Population dans une table, on peut :

  • Effectuer un regroupement selon l’État et calculer le nombre de villes dans chaque État ou la somme de la population des villes pour obtenir la population de chaque État.
  • Effectuer un regroupement selon la ville et dénombrer les instances des noms de ville.
 Image Remplacer un élément dans la colonne par une autre valeur.
 Image
 Image Pour une valeur de texte, modifier le mode d’affichage des valeurs de la colonne :•            Minuscules•            MAJUSCULES•            Mettre en majuscules la première lettre de chaque mot•            SupprEspace•            Nettoyer•            JSON•            XML

Pour une valeur de type Date/heure, modifier le mode d’affichage des valeurs de la colonne :

•            Date

•            Heure

•            Jour

•            Mois

•            Année

•            Jour de la semaine

 Image Les noms d’en-tête de la table sont remplacés par les valeurs des cellules de la première ligne du tableau
 Image Transformer les colonnes sélectionnées en paires attribut-valeur.

c)     Création

Même constat que la section « Transformation », peu fourni, mais un travail agile peut être fait sur les colonnes.

 

Image

 ImageImage Insérer une nouvelle colonne après la dernière colonne de la table. Les valeurs dans la nouvelle colonne sont déterminées en sélectionnant le type de colonne à insérer :•            Personnalisé (vous définissez la formule qui calcule les nouvelles valeurs)•            Index
Image Crée une copie de la colonne sélectionnée à droite de la table. Le nom donné à la nouvelle colonne est Copie de <nom de la colonne>.

 

d)    Combinaison

Power Query permet de créer plusieurs venant de différentes sources, mais offre aussi la possibilité de les combiner afin d’enrichir son jeu de données.

Cette section en est l’illustration parfaite.

Image

Image Dans la grille Aperçu, créer une requête à partir de deux requêtes existantes. Un résultat de requête contient toutes les colonnes d’une table primaire, une colonne servant de colonne unique contenant un lien de navigation vers une table liée. Pour plus d’informations sur la fusion des requêtes.
Image Dans la grille Aperçu, créer une requête qui contient toutes les lignes d’une première requête suivie de toutes les lignes d’une deuxième requête.

4)  Nouveautés Power Query Décembre 2013 (Microsoft)

Beaucoup de nouveautés ont été introduites avec la mise à jour de Décembre.

Ci-dessous la description de ces nouveautés.

  • Power Query peut maintenant se connecter à plus de sources de données comme :
  • Sybase IQ
  • Exchange
  • Dynamics CRM Online
  • Quand vous sélectionnez plusieurs tables dans le panneau de navigation, Power Query détecte automatiquement les relations de base de données.
  • Le remplacement des requêtes partagées a été supprimé.
  • Vous pouvez maintenant partager votre requête à la volée.
  • De nouveaux boutons ont été ajoutés au ruban de l’éditeur de requête, à savoir Fill Down, Sort Ascending/Descending and Number Transformations.

5)   Références

Les Blogs

http://blogs.microsoft.fr/technet/power-query/feed

http://cwebbbi.wordpress.com/category/power-query/

http://devinknightsql.com/category/power-query/

Langage M (MSDN)

http://msdn.microsoft.com/en-us/library/dd285271.aspx

Descriptif des composants de Power Query

http://office.microsoft.com/en-us/excel-help/guide-to-power-query-context-menus-HA103993856.aspx?CTT=5&origin=HA104003813

Power Query UnPivot

http://office.microsoft.com/en-us/excel-help/unpivot-columns-HA104053356.aspx?CTT=5&origin=HA103993856

Power Query Liste des Formules

http://office.microsoft.com/en-us/excel-help/power-query-formula-categories-HA104122363.aspx?CTT=5&origin=HA104003813

Microsoft Power Query Preview for Excel Formula Language Specification

http://go.microsoft.com/fwlink/?LinkID=320633

 

Liste de mots clé  du langage M:

Ce tableau peut être bien utile au moment où on doute de l’existence d’une expression.

Comme le « switch » par exemple …. Il faudra faire sans.

Opérateurs unitaires NOT, IS
Constant expressions ERROR, FALSE, TRUE
Typage #BINARY, #DATE, #DATETIME, #DATETIMEZONE, #DURATION, #INFINITY, #NAN, #SECTIONS, #SHARED, #TABLE, #TIME
Opérateurs binaires AND, OR
Expressions conditionnelles IF, THEN, ELSE
Type assertion AS
Méta données META
Autre EACH, IN, LET, OTHERWISE, SECTION, SHARED, TRY

Cheikh SECK