La nouvelle version 9.2 de Postgresql supporte nativement le format JSON.
Le lien de cette page est ici.
Postgresql stocke des données au format JSON mais peut aussi convertir à la volée des données dans ce format.
Encore une contribution de plus pour Javascript.
Python, Ruby, javascript, node.js, cloud ,NoSQL bref que des bonnes choses
Contacter le robot germanlinux: german.eric AT gmail.com
mercredi 21 novembre 2012
lundi 19 novembre 2012
Les moteurs de node.js
Les moteurs de Node : Un V8 et.. un réacteur.
Article écrit dans le cadre de la série: Node pour les 'pas tout à fait' nuls.Le moteur V8.
Node n'a pas été écrit à partir de
rien. Au contraire c'est un assemblage léger autour du moteur
d'exécution javascript le plus répandu au monde : le moteur javascript 'V8' de google chrome.
Vous avez sur le site de liz Stinson
des très bons articles sur l'architecture des navigateurs et de V8.
Ce moteur est utilisé chaque fois que
votre navigateur Chrome a besoin d’exécuter du javascript.
La relation entre Node.js et Chrome est un des facteurs du dynamisme du projet : les utilisateurs de Node poussent toujours plus loin l'usage de V8, ce qui profite directement au navigateur Chrome et réciproquement toutes les améliorations du V8 profitent à la communauté Node.js.
Le réacteur.
Le V8 fournit la coquille de la machine virtuelle mais pas le mécanisme utilisé par Node.
Node est basé sur un modèle de traitement appelé : Event Model. La traduction n'est trop parlante: modèle évènementiel.
Ce dispositif est avant tout un modèle de conception (design pattern), le reactor pattern.
L'idée de base est la suivante: node va lire la suite des instructions contenue dans votre programme javascript. Il va insérer dans une boucle des agents chargés de guetter des évènements.Quand un évènement survient , l'agent chargé de le surveiller va déclencher QUAND SON TOUR viendra, une série d'action en rapport avec l’évènement à traiter (la fonction de rappel ou callback).
Aussi, plus le nombre d’évènement à surveiller augmente, plus le nombre d'agent de surveillance va augmenter et plus le parcours de la boucle sera long.
Les Entrées-Sorties non-bloquantes.
Un réacteur fonctionnera parfaitement que s'il arrive à faire le tour de ses agents dans un temps raisonnable et qu'aucun agent ne monopolise son attention. Les fonctions d’entrées-sorties (disque ou réseau) sont les opérations qui génèrent le plus de temps de latence.
| Comparaison des vitesses RAM et E/S |
Aussi , il ne faut pas que le système attende l'achèvement d'une telle fonction pour continuer sa ronde. Le principe des E/S non bloquantes est simple: je lance une opération sur le réseau ou le disque et je charge un observateur de m'avertir de la conclusion de l'opération, pendant ce temps, je passe à l'opération suivante.
Ainsi la ligne d'appel d'une opération non bloquante sera de la forme:
res.on('data', function(d) {
process.stdout.write(d);
});
Le système va charger un agent de surveiller l'arrivée de l’évènement 'data' et dans ce cas, de lancer la procédure de rappel (callback ) associée.
Pour des fonctions plus simples, l’évènement peut implicitement correspondre à la fin de l'opération:
fs.readFile('/etc/passwd', function (err, data) {
... } )
Cette ligne déclenche la demande de lecture du fichier, puis une fois l'acquisition réalisée, appellera la fonction de rappel.
Ce mode de fonctionnement est la mise en oeuvre d'une forme de programmation particulière: la programmation asynchrone.(A détailler dans un article).
La communauté.
Node est issu du cerveau génial de Ryan Dahl
qui est un ovni dans la planète du Net.
Ryan Dahl , le créateur de Node.js a complété le moteur V8 de Chrome pour lui permettre de réaliser des opérations qui ne sont pas
prévues en javascript pour un navigateur. On peut citer par exemple l'accès au système de
fichier : cette fonction est interdite pour un navigateur.
L'aventure a commencé en 2008 et connait depuis une progression vertigineuse.
- En 2009 : Node c'est 8000 lignes de C/C++ et 2000 lignes de Javascript, 14 contributeurs.
- En 2010 : Node c'est 11000 lignes of C/C++ et 6000 lignes de JavaScript, 63 contributeurs.
En 2012: 17 881 librairies javascript.
Cette communauté est fédérée autour d'un référentiel des librairies pour Node : npm (Node Packaged Modules)
Licences.
Enfin pour terminer, Node.js est sous licence MIT, le moteur V8 sous licence BSD. Ces licences vous garantissent le caractère 'libre' de Node.js sans aucune restriction.
A venir: qui utilise Node et pour quoi faire
dimanche 18 novembre 2012
Node.js pour les pas-tout-a-fait nuls
Cet article est destiné à faire le
point sur Node.js avec un certain recul vis à vis des réactions
positives ou négatives engendrées par ce phénomène.
Node.js : c'est quoi ?
Node est une machine virtuelle capable
d'exécuter des programmes javascript.
Node.js désigne l 'environnement (la galaxie) de Node (sans l'extension .js). Node est un programme
(exécutable) écrit en C++ et compilé. Node n'est pas en
javascript. Node est un programme qui va recevoir en entrée des
fichiers sources de javascript, il va interpréter (traduire) en
langage machine les instructions javascript et va les exécuter.
Node est donc un interpréteur de
javascript. Il joue le même rôle que la JVM pour les projets
java (Machine Virtuelle Java) mais pour le javascript !
![]() |
| Le résultat de la commande file sur le fichier node |
Pourquoi le terme de machine virtuelle ?
Tout d'abord définissons le notion de
portabilité
La portabilité d'un programme qualifie
le niveau d'indépendance d'un programme vis à vis de la machine
physique (système) qui l'accueille. Ainsi un programme dit
'portable' fonctionnera sur des systèmes différents, en l'état,
sans changement de code majeur.
Pour assurer la portabilité d'un
programme (javascript, java ou autre ) il est possible d'avoir deux
approches :
La compilation adaptée.
La première approche consiste à
recompiler les sources du programme en fonction des systèmes
cibles : c'est le dispositif adopté pour les programmes en C ou
C++. La contrainte forte est de pouvoir disposer des codes sources du
programme et d'un compilateur. Cette solution n'est pas satisfaisante pour les langages interprétés.
L'utilisation d'un composant intermédiaire : la machine virtuelle.
La deuxième méthode consiste
utiliser un composant qui va servir de médiateur entre le code (les
instructions du programmes) et le système d'accueil : c'est le
rôle de l’interpréteur appelé dans ce cas 'machine virtuelle'.
Ainsi , il y aura une machine virtuelle adaptée à chaque
environnement. Ces machines virtuelles prennent en charge l’interprétation des instructions d'un programme et leurs traductions
adaptées au système de la machine physique hôte. Ces machines
virtuelles masquent les disparités des environnements d'accueil.
Elles prennent à leur charge la gestion des écarts de comportement,
de matériel , d'appel de fonction système etc..
Remarque : Une machine
virtuelle est couramment 'fabriquée' à partir de la méthode 1
(compilation adaptée) d'un projet 'modèle'.
Ainsi le programme Node va lire des
fichiers qui contiennent des instructions 'javascript' et exécutera chaque instruction javascript en les traduisant par des instructions
machines et des appels de fonction.
Il existe des machines virtuelles Node
pour les systèmes les plus usités : Microsoft, Ubuntu , MacOS
etc.
![]() |
| La liste de architectures supportées par Node |
Un programme javascript s'exécutera et se comportera de la même façon sur tous ces environnements: le javascript est donc portable.
Le javascript est le seul langage de
programmation normalisé (standard ECMA-262) à pourvoir s’exécuter nativement dans un
navigateur. Avec Node.js , il s’exécute à présent sur le serveur
ou d'une manière générale en dehors du navigateur.
La suite à venir: mettre un V8 dans ses programmes, la licence Node.js etc..
Question bonus: Pourquoi les programmes java passent par une phase de pré-compilation (bytecode) ?
vendredi 16 novembre 2012
qsview: accéder instantanément à google street view
Sur ce site : http://www.qsview.com/ , il est possible d'afficher directement une image à partir de google street view
Vous disposez des contrôles suivants:
Avec une possibilité d'exporter les images sans les boutons de contrôle.
Vous disposez des contrôles suivants:
Avec une possibilité d'exporter les images sans les boutons de contrôle.
samedi 10 novembre 2012
Un système d'exploitation en javascript
Sur le site https://blog.netbsd.org/tnf/entry/kernel_drivers_compiled_to_javascript l'auteur explique comment il utilise javascript pour emuler un microkernel NetBSD.
En clair: comment disposer dans son navigateur EN LOCAL d'un véritable système d'exploitation.
La démo est ici:http://ftp.netbsd.org/pub/NetBSD/misc/pooka/rump.js/
L'écran se présente comme ceci:
La commande help donne le résultat suivant:
Ici , nous sommes en présence non pas d'un webos (Système d'exploitation DISTANT sur le web) mais bien d'un OS_in_web : un OS (operatic system) dans le navigateur.
Pour quels usages ? : Un bureau hybride : je récupère mon bureau distant ,(webos) je me déconnecte et je peux continuer à travailler sans réseau , à la prochaine connexion je synchronise le tout.
En clair: comment disposer dans son navigateur EN LOCAL d'un véritable système d'exploitation.
La démo est ici:http://ftp.netbsd.org/pub/NetBSD/misc/pooka/rump.js/
L'écran se présente comme ceci:
La commande help donne le résultat suivant:
Ici , nous sommes en présence non pas d'un webos (Système d'exploitation DISTANT sur le web) mais bien d'un OS_in_web : un OS (operatic system) dans le navigateur.
Pour quels usages ? : Un bureau hybride : je récupère mon bureau distant ,(webos) je me déconnecte et je peux continuer à travailler sans réseau , à la prochaine connexion je synchronise le tout.
lundi 5 novembre 2012
Le contenu de la circulaire du Premier Ministre sur l'usage du logiciel libre dans l'administration
Dans une circulaire du 19/09/12 le Premier Ministre donne des orientations pour l'usage des logiciels libres dans l'administration.
Cette circulaire est accompagnée par une note de 18 pages de la DISIC :Direction interministérielle des systèmes d'information et de communication.
Cette note reprend les origines du logiciel libre avec ses 4 libertés fondamentales :
- La liberté d'utiliser un logiciel
- La liberté d'étudier le fonctionnement d'un logiciel
- La liberté de copier un logiciel
- La liberté de modifier un logiciel
Avec comme conséquences:
- Un auto-entretient des logiciels
- Une évolution dictée par le besoin de l'utilisateur
- Une communauté qui conserve le contrôle du logiciel
- Une émulation des acteurs
La licence la plus connue est la GPL.
Un logiciel libre n'est pas forcement gratuit: le coût de licence peut être remplacé avantageusement par un coût de formation ou d'adaptation.
Le choix du logiciel libre est un choix raisonné pour des motifs de coûts et de la meilleure maîtrise du SI par les équipes.
Toutefois , il faut être vigilant à un bon usage du logiciel libre en tenant compte des critères suivants:
- La taille de la communauté
- Le modèle économique adossé: une vraie communauté ou un éditeur
L'administration doit faire chercher dans la limite du possible à reverser du code dans les communautés.
Le document liste les cadres favorables à l'utilisation du logiciel libre dont ces deux points importants:
- Dans le cadre de la virtualisation (en raison du mode de licence à l'usage CPU)
- Dans le cadre du développement Agile (opportuniste) .
.
Comment favoriser l'usage du logiciel libre dans l'administration ?.
La note revient sur la mise en commun des efforts et afin d'éviter l'éparpillement, sur la nécessité d'un cadre de convergence des projets et des versions (souches).Les mesures prônées sont par exemple:
- Création et maintient d'un catalogue des projets
- Animation d'un réseaux d'expert sur les thèmes communs comme :
- La Bureautique (MIMO)
- Le socle système (MIMOS)
- La gestion de parc (MIMOG)
- Et les bases de données (MIMDB)
mardi 16 octobre 2012
Vive le web 0.2
Lors d'un screencast, j'ai utilisé le terme web 0.2 au lieu de web 2.0.
Sommes nous vraiment entré dans une version 2 du web ?
Pour ma part j'ai de plus en plus le sentiment que l'on est encore dans la préhistoire du web.
La révolution de l’hébergement des infrastructures et des plateformes dans un Elastic Cloud et l'avènement de langages DSL vont nous propulser à la vitesse du son dans une nouvelle forme du web
Un web où le développeur sera au centre de l'univers.
J'exposais il y a maintenant 3 ans dans cet article :convergences des supports web 2.0
les évolutions d'un wiki. C'était en avance de phase la description des systèmes de curation ou de yahoo Pipes.
Il y a encore du chemin à faire avant de disposer d'un système viral de publication. A partir d'une console de publication, le message serait diffusé sur d'autres medias qui eux mêmes se comporteraient comme une caisse de résonance.
Inscription à :
Articles (Atom)

.png)







