Jusqu’à présent Jasper-report régnait en force sur les solutions de visualisation de données dans le monde du décisionnel opensource.
Une restitution Jasper-report est construite sur le serveur puis elle est envoyée au client.
Or, la visualisation est avant tout une affaire de client. C'est bien l'utilisateur via son navigateur qui doit pouvoir manipuler et enrichir les données. Aussi logiquement, le javascript prend toute son importance comme acteur majeur dans la chaîne des restitutions.
Plusieurs bibliothèques sont présentes sur ce domaine. Mais dans lot une librairie se dégage : d3.js
Comme jquery dans le domaine de la navigation d3.js prend le chemin de devenir le composant de référence.
(illustration tirée d'une présentation de d3.js lien ici)
Il est à la base du projet ndvd3.js .
Ou encore rickshaw
D'autres liens ici.
Python, Ruby, javascript, node.js, cloud ,NoSQL bref que des bonnes choses
Contacter le robot germanlinux: german.eric AT gmail.com
mercredi 12 décembre 2012
samedi 8 décembre 2012
La carte Hadoop pour ne pas se perdre dans le bigdata
J'ai assisté à une réunion du HUG_France : Hadoop user group. Un des conférenciers était Ted Dunning de la société MapR.
Pour clarifier les chose , j'ai fait cette carte d'Hadoop représentant les principaux composants.
L'état de l'art à ce jour:
Il est possible de stocker des gros volume de données structures ou non sur un système de fichier distribué. Il est possible de réaliser des opérations BATCH distribuées de sélection et de réduction sur ces données.
L'enjeu actuel est la recherche et le la restitution en temps réel dans ces gros volumes (Big Data).
Un contournement peut etre fait par des exports de données d'Hadoop vers des modes de stockage et de restitutions plus rapides: exemple mongodb.
Pour clarifier les chose , j'ai fait cette carte d'Hadoop représentant les principaux composants.
L'état de l'art à ce jour:
Il est possible de stocker des gros volume de données structures ou non sur un système de fichier distribué. Il est possible de réaliser des opérations BATCH distribuées de sélection et de réduction sur ces données.
L'enjeu actuel est la recherche et le la restitution en temps réel dans ces gros volumes (Big Data).
Un contournement peut etre fait par des exports de données d'Hadoop vers des modes de stockage et de restitutions plus rapides: exemple mongodb.
mardi 4 décembre 2012
Quand la démocratie s'inspire du logiciel libre
Légifrance a ouvert un espace de partage sur la forge github :https://github.com/legifrance
Cette diffusion trouve une suite dans l'article 'faire la loi ensemble' d Hubert Guillaud
Pour résumer: des communautés se réunissent autours des logiciels libres, elles orientent les développements: elles travaillent ensembles pour le meilleur: peut on appliquer ce dispositif à un système politique ?
Cette diffusion trouve une suite dans l'article 'faire la loi ensemble' d Hubert Guillaud
Pour résumer: des communautés se réunissent autours des logiciels libres, elles orientent les développements: elles travaillent ensembles pour le meilleur: peut on appliquer ce dispositif à un système politique ?
lundi 3 décembre 2012
Javascript: l'invité d'honneur de la conférence javaone 2012
La grande messe java organisée par oracle s'est déroulée au mois d'octobre 2012 à San Francisco. Cette année l'invité d'honneur de la javaone était le javascript...
Le rhinocéros est mort ! Oracle ne supportera plus le projet rhino qui permettait d'exécuter du javascript sur une JVM java.
Vive le rhinocéros teuton: Oracle a porté sur les fonts baptismaux le projet Nashorn (rhinocéros en allemand) . Ce projet reprend les grande lignes de Rhino. (sauf peut être les termes de la licence)
C'était aussi le nom d'un véhicule anti-char allemand de la 2eme gerre mondiale.
Quelle est la cible ? .
Oracle a fait la part belle à HTML5 et javascript pendant sa kermesse.
Les conférences consacrées à Nashorn ont mis en vedette une librairie : node.jar (pas en opensource à ce jour)
Cette librairie permet de faire tourner un programme javascript destiné à Node.js sur une JVM.
Le JSON aura à présent une place d'honneur dans le langage Java.
Rappel : JSON = (JavaScript Object Notation)
D'autres éléments de la galaxie Java ont été évoqués :
Concernant l'orientation Elastic Cloud de java, il faudra attendre la version 1.8 de l'an prochain.
Moi, j'étais déjà passé à Java 2 en 1998 (non pardon en java 1.2 ;-)) )
Cette ouvrage ne parlait du web qu'au travers des applets... , je dois bien être le plus vieux programmeur Java du quartier.
Ne parlons plus de javascript mais de Ecmascript c'est plus sur !
Les liens ici
http://www.developpez.com/actu/48326/JavaOne-2012-Oracle-presente-la-specification-JSR-353-l-API-Java-pour-la-manipulation-avec-souplesse-du-format-JSON/
http://pragprog.com/magazines/2012-11/the-javaone-snooze
http://www.developpez.com/actu/48218/JavaOne-2012-Oracle-sort-la-Preview-de-NetBeans-7-3-et-devoile-Easel-une-extension-pour-la-creation-des-clients-RESTful-JavaScript/
Nashorn.
Le rhinocéros est mort ! Oracle ne supportera plus le projet rhino qui permettait d'exécuter du javascript sur une JVM java.
Vive le rhinocéros teuton: Oracle a porté sur les fonts baptismaux le projet Nashorn (rhinocéros en allemand) . Ce projet reprend les grande lignes de Rhino. (sauf peut être les termes de la licence)
C'était aussi le nom d'un véhicule anti-char allemand de la 2eme gerre mondiale.
Quelle est la cible ? .
Oracle a fait la part belle à HTML5 et javascript pendant sa kermesse.
Les conférences consacrées à Nashorn ont mis en vedette une librairie : node.jar (pas en opensource à ce jour)
Cette librairie permet de faire tourner un programme javascript destiné à Node.js sur une JVM.
JSON
Le JSON aura à présent une place d'honneur dans le langage Java.
Rappel : JSON = (JavaScript Object Notation)
D'autres éléments de la galaxie Java ont été évoqués :
- Le langage SCALA.
- La machine virtuelle JRuby pour le langage Ruby.
Concernant l'orientation Elastic Cloud de java, il faudra attendre la version 1.8 de l'an prochain.
Moi, j'étais déjà passé à Java 2 en 1998 (non pardon en java 1.2 ;-)) )
Cette ouvrage ne parlait du web qu'au travers des applets... , je dois bien être le plus vieux programmeur Java du quartier.
Ne parlons plus de javascript mais de Ecmascript c'est plus sur !
Les liens ici
http://www.developpez.com/actu/48326/JavaOne-2012-Oracle-presente-la-specification-JSR-353-l-API-Java-pour-la-manipulation-avec-souplesse-du-format-JSON/
http://pragprog.com/magazines/2012-11/the-javaone-snooze
http://www.developpez.com/actu/48218/JavaOne-2012-Oracle-sort-la-Preview-de-NetBeans-7-3-et-devoile-Easel-une-extension-pour-la-creation-des-clients-RESTful-JavaScript/
dimanche 25 novembre 2012
Utilisation de la librairie async.js pour Node.js
Dans un environnement synchrone classique, les fonctions s’enchaînent les une a la suite des autres de manière linéaire.
Avec Node.js doté d'un système d'entrée-sortie non bloquant et asynchrone, les choses ne se déroulent pas toujours dans l'ordre souhaité.
Soit par exemple 3 fichiers: un petit , un moyen et un gros fichier.
Le programme ci-dessous en coffeescript va lire les 3 fichiers:
Le résultat d'exécution sera:
>coffee async1.coffee
traitement termine
Je termine de lire le petit fichier
Je termine de lire le moyen fichier
Je termine de lire le gros fichier
> coffee async2.coffee
traitement termine
Je termine de lire le gros fichier
Je termine de lire le moyen fichier
Je termine de lire le petit fichier
Chaque fonction appelle la fonction suivant dans sa dernière instruction. On se retrouve alors à devoir gérer des callbacks imbriqués dans des fonctions. Le programme perd en lisibilité.
Il existe une librairie très populaire dans la sphère de Node.js : async.js. qui prend en charge ce type de problème.
Ce module disponible par la commande npm install async. permet de gérer plus facilement l'ordre d’exécution des fonctions.
Avec Node.js doté d'un système d'entrée-sortie non bloquant et asynchrone, les choses ne se déroulent pas toujours dans l'ordre souhaité.
Soit par exemple 3 fichiers: un petit , un moyen et un gros fichier.
Le programme ci-dessous en coffeescript va lire les 3 fichiers:
Le résultat d'exécution sera:
>coffee async1.coffee
traitement termine
Je termine de lire le petit fichier
Je termine de lire le moyen fichier
Je termine de lire le gros fichier
Deux remarques:
Le display de la dernière ligne s'affiche en premier .
Les fonctions se terminent dans un ordre différent de leur appel: celle relative au fichier le plus petit , appelée en dernier se termine la première.
Tout cela est normal dans une logique asynchrone: Toutes ces appels de fonctions sont réalisés dans le même cycle d'exécution du moteur Node.js. Node.js n'attend pas la fin de l’exécution de la fonction pour passer à la suivante.
Pour enchaîner l’exécution des fonctions dans un ordre précis il faudrait re-ecrire le programme comme ceci:
Avec cette fois le résultat suivant:
> coffee async2.coffee
traitement termine
Je termine de lire le gros fichier
Je termine de lire le moyen fichier
Je termine de lire le petit fichier
Chaque fonction appelle la fonction suivant dans sa dernière instruction. On se retrouve alors à devoir gérer des callbacks imbriqués dans des fonctions. Le programme perd en lisibilité.
Il existe une librairie très populaire dans la sphère de Node.js : async.js. qui prend en charge ce type de problème.
Ce module disponible par la commande npm install async. permet de gérer plus facilement l'ordre d’exécution des fonctions.
Dans cet exemple, on utilise deux formes d'appel : le mode en série et parallèle.
Dans le mode en série (serial), async.js va attendre la fin de chaque fonction pour lancer la suivante.
remarque1 : async.js appelle vos fonctions en ajoutant une fonction de retour en paramètre ce parametre ne sert qu'a un usage interne à async.js
(midf = (callback)-> fs.readFile 'middle_file', (err,data) => ...)
remarque2: la méthode toString appliquée à une fonction permet de lister le source de la fonction
(console.log callback.toString() ...)
Dans le mode en série (serial), async.js va attendre la fin de chaque fonction pour lancer la suivante.
remarque1 : async.js appelle vos fonctions en ajoutant une fonction de retour en paramètre ce parametre ne sert qu'a un usage interne à async.js
(midf = (callback)-> fs.readFile 'middle_file', (err,data) => ...)
remarque2: la méthode toString appliquée à une fonction permet de lister le source de la fonction
(console.log callback.toString() ...)
samedi 24 novembre 2012
Qu'est ce qu'un websocket
Les websockets sont un nouveau mode d'échange d'information entre un client (navigateur) et un serveur, défini par la RFC 6455.
| Source http://fernetjs.com/wp-content/uploads/2012/11/cables21.jpg |
Le dialogue ente le client et le serveur commence par un échange HTTP ou HTTPS puis se continu en mode WS ou WSS (Web Socket et Web Socket Secure).
| source:http://warmcat.com/websocket-lifecycle.png |
Ce mode d'échange est Bidirectionnel : Le serveur peut pousser des informations au client (ce que ne permet pas directement le HTTP) . C'est le protocole d'avenir des applications web ou non web.
| http://websocket-sample.googlecode.com/svn/trunk/images/ws_vs_http.png |
Pour tester les websockets: avec Node.js , rien de bien compliqué:
npm install socket.io
D'autant que les websockets sont adaptées à un fonctionnement de gestion d’évènement asynchrone non bloquant (Comme Node.js)
Pour Ruby et Rails il existe un gem fournissant un serveur de websocket : em-websocket
En résumé: plus de souplesse , plus rapide moins verbeux, les websockets sont les invités privilégiés des smatphones ou des tablettes pour des applications interactives.
vendredi 23 novembre 2012
Comment enregistrer son terminal avec la commande script
Pour réaliser des screencasts , j'utilise Kazam , mais il y plus simple: la commande script
Et pour rejouer la session :
scriptreplay session1.time session1
Ce dispositif est plus léger qu'une vidéo et consomme moins de ressource.
Marcin Kulik a eu une idée géniale : proposer un système de partage pour ces enregistrements en mode console: c'est l'objet du site ascii.io
Pour simplifier cette tache , le site propose de telecharger une nouvelle commande asciiio
(installation de la commande :curl -sL get.ascii.io | bash)
Cette commande se charge de tout: enregistrement et publication sur le site de partage.
(mon essai en bas à droite)
Pour réaliser son site l'auteur a utilisé du python, du bash , du ruby et nodes.
Mes screencasts sont ici sur slideshare.
good hacking
![]() |
| La page de manuel de la commande script |
La syntaxe de lancement est la suivante:
script -t session1 2>session1.time
scriptreplay session1.time session1
Ce dispositif est plus léger qu'une vidéo et consomme moins de ressource.
Marcin Kulik a eu une idée géniale : proposer un système de partage pour ces enregistrements en mode console: c'est l'objet du site ascii.io
Pour simplifier cette tache , le site propose de telecharger une nouvelle commande asciiio
(installation de la commande :curl -sL get.ascii.io | bash)
Cette commande se charge de tout: enregistrement et publication sur le site de partage.
(mon essai en bas à droite)
Pour réaliser son site l'auteur a utilisé du python, du bash , du ruby et nodes.
Mes screencasts sont ici sur slideshare.
good hacking
Inscription à :
Articles (Atom)




.png)


