Sur la route d'Oxiane digressions diverses

LeBlog OXiane

22 juin
2011

Adobe peaufine Edge

Alors que certains voient dans les animations CSS3 la mort de Flash, son éditeur Adobe sort une nouvelle vidéo de son prochain produit qui fait … de l’animation CSS3 !

Edge sera à mon avis le produit de référence dans l’animation web, son seul éventuel futur concurrent à ma connaissance étant le produit Animator de Sencha qui est disponible en version beta.

Une interface qui fait penser à un enfant de Flash et de After Effects, on peut imaginer que les outils de productivité seront au rendez-vous.

Soyez les premiers à essayer Edge !

Alain Boudard

aboudard

21 juin
2011

News HTML5

Il est toujours intéressant de lire le http://blog.whatwg.org/ !
Aujourd’hui quelques news que je trouve assez sympatiques dans la spec HTML5 et son API :

La méthode send() de l’objet WebSocket va prendre en argument les types ArrayBuffer et Blob. Whaoh, ça n’a l’air de rien comme ça, mais vous allez pouvoir envoyer des données binaires via les WebSocket ! Côté réception, on nous dit qu’il sera possible de spécifier le type d’objet souhaité grâce à l’attribut binaryType.

On peut rapprocher ceci de l’API Level 2 d’Ajax qui permet déjà de transférer des fichiers, et dont l’utilisation a grandement simplifié les formulaires !

Application cache permet désormais de mettre en cache les ressources issues d’une requête Cross-Origin via une connection HTTP sécurisée. Plus d’informations sur les CORS ici.

L’objet EventSource supporte désormais également le cross-origin ! Alors là, double WHOAH ! Je pensais faire un petit article sur l’utilisation des WebSockets et des EventSource, c’est définitivement un sujet très chaud. Imaginez donc du push server entre domaines authentifiés, différents serveurs … etc.

Dernier point, qui mérite sans doute d’y jeter un oeil pour toujours plus de Mickey sur nos pages … non je plaisante, ce sont les WebVTT ! Non ce n’est pas de la DH sur le Web, mais l’utilisation de pistes texte pour incrustation dans la vidéo HTML … tout un programme ! La encore l’API bouge, autour visiblement des services de découverte et des futurs fournisseurs de contenus.

Alain Boudard

aboudard

17 juin
2011

Formulaires HTML5 validation et pseudo éléments

On connait bien maintenant l’API de validation de formulaire HTML5, très simple à mettre en oeuvre avec un simple attribut :

(la tête du suspect) >> Mais une question revient dans les présentations HTML5 que je peux donner : « comment » customiser ces éléments d’interface ? Sommes nous voués à ne pas utiliser ces fonctionnalités pour cause de sale tronche ? (webdesignistiquement parlant).

La réponse est loin d’être évidente et en tout cas très loin d’être cross-browser !
Il existe aujourd’hui une solution sur Webkit qui augure de ce que nous pourrons faire.

::-webkit-validation-bubble-message {
    color: ;
    background: none;
    background-color: ;
    border-color: ;
}

::-webkit-validation-bubble-top-outer-arrow {
    border-bottom-color: ;
}

::-webkit-validation-bubble-top-inner-arrow {
    border-bottom-color: ;
}

Le principe est simple, ces éléments de structure sont déclarés en tant que pseudo éléments, et ils ont donc un sélecteur associé. Le rendu est loin d’être parfait, je constate que la flèche ne répond pas correctement sur un Chrome 11.

On peut noter ici l’évolution récente de la notation des pseudo éléments CSS, la notation ::.
D’après la documentation officielle, je cite :

cette notation :: est introduite par le présent document dans le but d’établir une discrimination entre les pseudo-classes et les pseudo-éléments. Pour des raisons de compatibilité avec les feuilles de styles existantes, les Agents Utilisateurs doivent aussi accepter la notation précédente avec un seul deux-points. Cependant cette compatibilité n’est pas requise pour les nouveaux pseudo-élémentsp introduits dans CSS level 3.

Côté Firefox, rien à l’horizon, ou si la possibilité de modifier le message d’erreur lui même, sans avoir à passer par cette méthode : « setCustomValidity ».

Des heures d’amusement pour les designers !

Alain Boudard

aboudard

17 juin
2011

Le Shiv HTML5 chez Adobe

Alors que Adobe peaufine sa suite CS5.5 avec de nouvelle fonctionnalités, l’une d’elles nous intéresse particulièrement et mérite peut être un peu d’explication : la gestion du shiv.

Le shiv, pour certains, c’est le second de Pat Morita dans O’Hara, Shaver de son vrai pseudonyme …

Pour nous, le shiv, c’est simplement un petit bout de code pour améliorer la rétro-compatibilité de nos sites web. En effet, les versions anciennes d’Internet Explorer ne sont pas très à l’aise avec le HTML5. Mais le plus grave, c’est qu’elles ne reconnaissent même pas les « nouveaux » éléments ! Et que le style ne peut donc pas s’appliquer (et par conséquent, on oublie également toute manipulation de DOM…).

Le shiv a une histoire courte mais déjà complexe, difficile par exemple, quand on est pas anglophone, de comprendre le passage du terme original « shim » au « shiv » … Techniquement, on apprend qu’une poignée de gars a bossé sur le problème, et qu’ils nous ont fourni une mini API simple à utiliser, un simple script à embarquer et nous pouvons designer nos pages avec les nouveaux éléments HTML5 !


Attention, ce script ne sert en aucun cas à permettre à IE de gérer les API HTML5 ! Les fonctionnalités qui manquent dans le moteur javascript ou dans le moteur de rendu CSS ne vont pas apparaitre ainsi. Il faudra pour ça utiliser un plugin javascript pour « simuler » ce qui manque.

Désormais, donc, le shiv est embarqué nativement dans les templates Dreamweaver HTML5, et c’est tant mieux, car cet outil a souvent un public de développeur « non-geek », qui n’ont pas spécialement envie de connaitre le nom du dernier contributeur de la spec non-encore finalisée d’un langage de balises ;)

Voilà encore une raison de se lancer dans le web sémantique et joli et tout rose grâce à Sjoerd Visscher !

Alain Boudard

aboudard

15 juin
2011

NoSQL vs relationnel ou NoSQL + relationnel

Commençons par clarifier les choses, le NoSQL ce n’est ni un langage, ni un standard, ni de l’anti SQL, ni de l’anti base de données, ni “Not Only SQL”.
Lancé en juin 2009, le NoSQL est un mouvement dont le but est de proposer une alternative au langage SQL et au modèle relationnel des bases traditionnels.
Le NoSQL n’a pas pour vocation de remplacer le modèle relationnel mais plutôt de compléter ses fonctionnalités ou de s’adresser à des applications différentes.

Les bases relationnelles c’est robuste, elles ont fait leur preuve alors pourquoi le NoSQL ?

Le NoSQL est issu du travail des grands acteurs d’internet (Google, Amazon, Facebook, LinkedIn, …) en écho aux nouvelles architectures que sont le cloud computing et les sites communautaires.

Sa génèse est liée au théorème de CAP formulé par Eric Brewer (UC Berkeley) en 2000 (keynote) et démontré par  Seth Gilbert et Nancy Lynch (MIT) en 2002 (white paper).
Ce théorème énonce qu’il est impossible, sur un système informatique de calcul distribué, de garantir en même temps les trois contraintes suivantes :

  • Coherence (Cohérence) : Tous les clients voient la même chose, même en présence de mises à jour.
  • Availibility (Disponibilité) : Tous les clients obtiendront une réponse à leur requête.
  • Partition Tolerance (Partitionabilité) : Les propriétés du système sont maintenues même lorsque celui-ci est partitionné.

En réponse à ce théorème les architectes en place décidèrent de sacrifier la cohérence au profit de la disponibilité et de l’évolutivité. Cette décision, motivée par des besoins croissant en terme de charge et de volumétrie, engendra  la mise au point de systèmes de bases de données non relationnels. Aucun d’entre eux ne supportant le langage SQL le terme « NoSQL » fût choisi pour les qualifier.

En se détachant du caractère ACID des transactions, les systèmes NoSQL se sont donc dégagées de deux entraves que connaissent les bases relationnelles :

  • L’évolutivité horizontale : Le déploiement d’une base NoSQL sur de multiples machines ainsi que l’ajout d’une nouvelle machine au sein du réseau distribué sont facilités.
  • La flexibilité : Une base NoSQL peut en effet croître sans contrainte, sa structure organisationnelle n’est pas liée à un schéma relationnel difficile à modifier.

Au sujet de l’évolutivité, Adam Wiggins (Heroku) explique clairement dans ce post en quoi il est ardu de la  mettre en oeuvre sur une base relationnelle.

Ok, c’est très bien tout ça mais concrètement les bases NoSQL ça se présente comment ?

Actuellement il existe ~= 122 solutions NoSQL. Le site nosql-database.org maintient une liste à jour.
Ces différentes alternatives au SQL sont regroupés selon 6 types :

  • Associatif (clé-valeur) : Riak, Voldemort, Membase/Memcached
    Equivalent d’un gros HashMap ou Dictionary (cf Smalltalk pour les incultes :) ). Il n’y a pas de modèle de donnée et tout type de donnée peut-être associé à une clé.
  • Hiérarchique : GT.M
    Organise les données dans une structure sous forme d’arbre.
  • Orienté document : MongoDB, CouchDB, RavenDB, Lotus Notes
    Fonctionne comme le type Associatif sauf que la valeur est ici un objet structuré auto-décrit en XML ou Json. A partir d’une clé, de l’information très structurée peut donc être remontée simplement là où plusieurs jointures aurait été nécessaire dans le monde relationnel.
  • Orienté colonne : Cassandra, Hadoop/HBase, SimpleDB
    Possède un modèle de donnée similaire à celui des bases relationnelles cependant le nombre de colonne est dynamique. Pour une même table 2 enregistrements peuvent avoir un nombre de colonnes différent ce qui limitent les colonnes à NULL.
  • Orienté graphe : Neo4J, InfiniteGraph
    Utilise une structure de graphes comportant des noeuds, des arcs et des propriétés pour représenter et stocker l’information.
  • Orienté objet : GemStone/S, db4o
    Stocke les données sous formes d’objets tel qu’utilisés au sein de la programmation orientée objet. Le concept n’est pas nouveau mais ces bases sont désormais etiquettées NoSQL.

Certaines solutions misent sur la facilité de prise en main. CouchDB, par exemple, représente la donnée en JSON, fournit des services de requêtage, propose un mécanisme de réplication simple et peut être utilisée comme serveur d’application.
D’autres sont fondamentalement tournées vers la performance. HBase, Cassandra et Riak pour ne citer qu’elles.
Les bases orienté graphes, quant à elle, permettent de mettre en place des modélisations complexes inconcevables dans les bases relationnelles. Et les performances ne sont pas en reste, Neo4J est capable de lire 1000 niveaux de noeuds aux alentours d’1 ms.

Quel avenir pour le NoSQL ?

A première vue, le principal désavantage du NoSQL est sa jeunesse. Comparé aux sytèmes matures et connus que sont les bases relationnelles, il ne fait pas le poids.
Les outils de supervision ne sont pas très développés pour le moment et cela peut constituer un frein à une mise en production sur des applications critiques.
Le NoSQL a aussi une image de système à déployer uniquement sur des applications nécessitant d’être très performante et travaillant sur de gros volumes. Sorte de Rolls-Royce des bases de données que seules de grosses compagnies peuvent s’offrir.

Malgré cela, le NoSQL reste une technologie attrayante. D’une part elle apporte de l’agilité  au niveau du  développement et de la maintenance. D’autre part, elle remet au goût du jour des solutions qui avaient été éclipsées par l’avènement des bases relationnelles.
Il ne s’agit pas non plus de tout basculer vers le NoSQL mais plutôt de s’orienter vers des solutions hybrides en couplant une base relationnelle avec une base NoSQL. Comprendre comment est manipulée la donnée au sein du SI redevient l’enjeu primordial et implique de se pencher sur de nouveaux paradigmes tel l’Eventual Consistency.
Certaines entreprises ont franchi le pas « The Guardian » (post, slides) ou Twitter (slides) et leur retour d’expérience est très intéressant.

Jusqu’à quel point le challenger NoSQL pourra inquiéter le règne du  champion Relationnel, là est la question :)

Références :
http://www.julianbrowne.com/article/viewer/brewers-cap-theorem
http://www.slideshare.net/thobe/nosqleu-graph-databases-and-neo4j
http://highscalability.com/neo4j-graph-database-kicks-buttox
http://nosql.mypopescu.com/
http://www.slideshare.net/ksankar/nosql-4559402

Gaetan Le Brun

Gaëtan Le Brun