samedi 31 décembre 2011

comparaison frameworks #javascript : infographie

Sur ce site une infographie qui compare la popularité des différents framework javascript. Résultat : jQuery vainqueur par KO.

Free Web Resources
Javascript Frameworks and jQuery Infographic is brought to you by WebAppers.com

mercredi 28 décembre 2011

serveur documentaire en #coffeescript pour node.js

Il arrive parfois d'avoir besoin d'un petit serveur de document en complément d'une application métier lourde.

ci dessous un exmple de programme en coffescript (qui sera traduit en javascript) pour un moteur node.js



Le programme commence par récuperer les parametres de lancement
Pour chaque requete le serveur vérifie la présence du fichier dans son cache mémoire (ligne 24-29) . Si le fichier n'est pas en cache, il va le lire, l'envoyer puis le mettre dans son cache mémoire. Le programme est tout simple et il présente une alternative interressante à un serveur Tomcat ou apache.
Il suffit de déployer  un sous-répertoire de document  dans le répertoire d'installation.

Le point fort de ce serveur est sa simplicité (une vingtaine de ligne)  et sa robustesse.  Par sa conception et son moteur d'exécution il est capable d'encaisser une charge supérieure à un tomcat ou a un apache dans les mêmes conditions.
C'est un serveur qui ne coute pas cher à deployer ou à maintenir. Il offre plus de sécurité qu'un serveur apache pour le même usage: pas besoin de mettre des options de droit sur l'affichage de répertoire

Le programme est disponible sur https://github.com/germanlinux/Lemon-labs/tree/master/nodeJS
L'idée originale est de casimir Antunes. J'ai ajouté la gestion du cache inMemory et le controle de l'existence des fichiers.



vendredi 23 décembre 2011

5 tendances pour 2012 #nodejs #html5 #javascript


La fin d'année arrive avec son lot de prédiction, de tendance pour l'année 2012.
Je vais faire ici ma liste des 5 tendances qui vont  dominer ou non l'année qui arrive.
Par honnêteté je réaliserai l'an prochain à la même époque un bilan.

Tendance 1: De plus en plus de chose font se faire en javascript coté client. HTML5 annonce une mutation sur la manière de faire des applications. jQuery, Backbone , batman  seront les valeurs montantes. Les raisons de ce phénomène ?:
a) La fragmentation des postes clients (pc, tablettes, smartphone)
b) les couts de traitement coté serveur vous sont facturés cash (cloud computing, serveur , salle machine)

Tendance 2: amaigrissement des frameworks : c'est le corollaire du point 1. Les serveurs ne sont que des distributeurs  de données , en JSON si possible,  avec une simplification à l’extrême. Une application métier  sera l’agrégation de mini-services hétérogènes.

Tendance 3: Les entreprises vont continuer à investir dans les réseaux sociaux (Facebook pour ne pas le citer). Après les pages de groupe ou de fan, l'étape suivante est la création par les entreprises d'applications intégrées à Facebook. La force de Facebook n'est pas son contenu mais son architecture. C'est  une architecture ouverte qui permet à chacun de développer des applications qui viennent s'intégrer à Facebook (exemple ici avec Rails) .

Tendance 4: Virage de Twitter, l'usage que je préfère est le partage de lien. Il permet de savoir que telle ou telle personne   est en cours de lecture d'un document. Delicious remplissait ce role mais depuis peu , il se tourne vers la curation de contenu, dommage. L'autre usage de twitter est la recherche d'information en continu. 2012 sera une année charnière pour twitter qui doit dégager une logique économique ou etre mangé par un gros (Facebook , microsoft ou google)

Tendance 5: Les bases de données NoSQL. Les volumes de données explosent et les entreprises ne savent plus les analyser (moins de 10 % de données sont exploitées) . Les bases NOSQL ne vont pas résoudre ce problème mais ne font que le repousser.


Les conséquences de tout ca:

Croissance de javascript et HTML5 dans les systèmes d'information. Javascript va prendre pied sur le coté serveur avec la révolution de node.js. Node.js permet à un développeur moyen de programmer des services asynchrones repoussant très loin les limites: en temps de crise , l’intelligence remplace l'argent. Dans le monde JEE scalabilité est synonyme d'achat de serveur, c'est la fin d'une époque.

Seuls les framework qui  anticiperont ce mouvement vont tirer leur épingle du jeu: parmi ceux ci :Rails.

Posez vous cette question: c'est le framework qui est à votre service ou vous qui êtes à son service.


dimanche 18 décembre 2011

Le blues des frameworks MVC #node.js

Le concept du framework MVC  (modele vue controleur)  date du début des années 80 , bien avant le temps d'Internet ou de Java/JEE.
mvc 2

Jusqu’à maintenant les choses étaient simples. Un bon gros serveur MVC générant des vues pour le client.
La carrière de l'informaticien était toute tracée: Le MVC serveur tu maitriseras. Hélas des elements sont venus parasiter ce bel édifice.

  • La montée en puissance du javascript.

Boosté par les gars de google ou de microsoft , le moteur d'exécution javascript est celui qui a gagné le plus en performance.

  • Le javascript est le seul langage supporté par tous les navigateurs.
  • La segmentation du poste client
Le PC est maintenant en concurrence directe avec les smatphones ou les tablettes. Le concepteur se retrouve devant une fragmentation du matériel et il doit gérer tous les cas de figure (clavier / ecran tactile)
ET cela même au niveau des applications métiers

 Il n'est donc  plus réaliste d'avoir tout le traitement de la vue préparé au niveau du serveur. Le framework se trouve réduit à un distributeur de données en ... JSON.  

  • Plusieurs frameworks et non plus un seul framework

Certains traitements sont déportés sur le client mais sans pouvoir êtres terminés.
Prenons l'exemple d'un export CSV pris en charge par du javascript sur le poste client:
A)  Le client recoit de la donnée en JSON
B)  Le client retravaille les données et fabrique un export CSV
C) Le client NE POURRA pas enregistrer son travail sur son poste local (pour des raisons de sécurité, le navigateur refuse de dialoguer avec le système de fichier local) .

La solution est d'envoyer le fichier CSV vers un serveur qui se chargera de retourner le fichier reçu avec la bonne entete. Ce serveur joue le rôle d'un miroir qui se contente de renvoyer ce qu'il reçoit du client. Pour cela une dizaine de lignes suffit, nul besoin d'un framework embarquant plusieurs milliers de ligne de code.

Ainsi l'architecture applicative ne sera pas composée d'un gros serveur MVC mais de plusieurs composants hétérogènes de taille réduite.

On ne peut plus parler de modèle MVC. Sur ce site http://blog.nodejitsu.com/scaling-isomorphic-javascript-code  Charlie Robbins  liste les differents modèles induits par l'utilisation de framework client (backbone.js , batman.js etc ) et introduit la notion de RVP : Resource-View-Presenter




C'est pour ça que les frameworks  'classiques' vont devoir s'adapter ou disparaître. A ce jour seul Rails avec les versions > 3.0 a pris le parti de se mettre en retrait sa partie serveur pour mettre en avant la partie cliente.



lundi 28 novembre 2011

LemonNode.js nouvel SSO en javascript

J'ai initialisé le projet lemon:node.js sur la forge github (lien ici ) .


Le dessin ci dessous illustre l'aspect novateur de cette solution :
Plus besoin d'infrastructure dédiée, chaque application est responsable du  SSO. Le SSO fait partie de l'application et n'est plus un composant tiers.
Tout ce ci est possible grace à plusieurs facteurs :


Le serveur de javascript  node.js : Il est léger, terriblement efficace. Il s'installe infdifferement sur des serveurs unices ou windows. Il facilite la programmation asynchrone non bloquante.


Le langage coffeescript: il permet de générer du javascript à partir d'un langage projet du python ou du ruby.
Lemon:node.js c'est une centaine de ligne de code à comparer au millier de ligne de code d'un lemonldap (ou lemnladap::ng)

Tout est parti de cet article :
A HTTP Proxy Server in 20 Lines of node.js Code . Dans ce,  post  Peteris Krumin explique comment réaliser un proxy web en 20 lignes de javascript. En ajoutant quelques lignes de plus cela est devenu un reverse-proxy.

Je vais tacher maintenant de completer le projet avec de la documentation.


Comment utiliser lemon:node.js :

Les prérequis sont :
L'installation de node.js
L'installation de npm : le gestionnaire de module pour node
Le module api_request

Coffeescript  n'est utilise que pour modifier le source. Le projet contient les sources coffee et le javascript généré.









mardi 22 novembre 2011

Le prochain défi du SSO ( signle sign on): faire simple

Le principe du SSO date maintenant d'une bonne dizaine d'année. j'ai travaillé sur lemonldap puis le projet lemonldap::NG (NG pour Nouvelle Gendarmerie et non pas Next Generation)  a pris la suite. Mais depuis, il n'y a rien de vraiment innovant dans ce domaine. La gestion d'identité devait etre un élément stratégique pour les editeurs , les frameworks , les entreprises et les fournisseurs d'identité. Tout ça est retombé comme un soufflet à la guimauve. Chacun compte ses pertes sur le champ de bataille. Que reste-t-il de tout ca ?

Les fournisseurs d'identité et les protocoles: les grands vainqueur sont les sites offrant des services d'authentification basés sur le protocole oauth : exit liberty alliance et SAML. Tous les grands sites comme facebook , twitter, google ont emboité le pas à ce protocole.

Les parefeux applicatifs: on reste sur des équipements en frontal à base d'apache ou de  tomcat  (rupture de flux) ou en service de redirection  (CAS).

Le service d'authentification: S'authentifier auprès d'un annuaire LDAP est cohérent dans la mesure où les équipements les plus hétérogènes peuvent dialoguer avec un service LDAP. En revanche , utiliser un annuaire LDAP comme stockage  d'habilitation est une solution  inadaptée.  Une base de données est plus performante pour cela , notament grace à la puissance du SQL.

Devoir utiliser deux systèmes (LDAP et base de données)  pour rendre le service du SSO est génant. Les administrateurs systèmes préfèrent ne gérer qu'un seul type d'équipement. C'est pour cette qu'un système de stockage NoSQL peut tirer son épingle du jeu.

La mise en place d'un SSO au sein d'une entité reste une opération compliquée, intrusive et structurante. Le SSO introduit un point de  fragilité dans les architectures.  Il faut des serveurs , le plus souvent doublés: tout cela coute cher  et rend  les applications interdépendantes.


Les SSO sont des constructions délicates et réservées aux experts. 
Illustration: machine de Rube Golberg

Est ce qu'il ne serait pas possible de faire des systèmes de SSO SIMPLE ? 


La réponse est : OUI

samedi 19 novembre 2011

Conférence sur coffeescript

Dans cette vidéo,  David Kinney de Redpoint Technologies présente les avantages de coffeescript.
J'ai réalisé le montage suivant à partir de sa présentation :
Dave met en parallèle la grosse bible : guide définitif de javascript et le petit fascicule sur les bons morceaux de javascript. C'est vrai qe javascript PLUS que tous les autres langages est une arme dangereuse à ne pas mettre en toutes les mains.


La preuve cette petite expérience:
Sur une console lancer  le calcul : '10' + '4'  puis '10' -'4'
Le résultat est là:


node
console.log('10' + '4')
104
console.log('10' - '4')
6



Surprenant !


Aussi coffeescript permet d'éviter la plupart des pièges de javascript tout en générant du javascript propre.

En plus il fournit des opérateurs qui simplifie la vie comme par exemple le '?'

Sa présentation se termine par l'intégration dans  rails 3.1 de coffeescript

La video :

CoffeeScript: A New Brew by David Kinney, Redpoint Technologies from ChicagoRuby on Vimeo.

samedi 5 novembre 2011

Livre électronique kindle

Je me suis laissé tenter par un livre électronique kindle d'Amazon.
Vendu au prix de 99 Euros sur le site d'amazon
Apres un jour d'utilisation et de test , je tire mon chapeau aux concepteurs , c'est un superbe appareil. Chaque kindle est muni d'une adresse mail. Je me suis rendu sur la librairie  Pramatic programmer chez qui j'avais  déja acheté une dizaine de livre au format PDF.
Sur leur site, j'ai demandé à télécharger mes ouvrages au format MOBI (kindle) . L'éditeur a proposé de me les envoyer directement sur mon appareil via son adresse mail. Quelques minutes après, mes bouquins étaient installés sur le kindle grâce au wifi. Ce matin j'ai acheté le journal via amazon. Là , la mise en page n'est pas parfaite: des mots sont collés. 
Le confort de lecture est très bon. 

Concernant la conversion des pdf ou des epub vers mobi. Le service de mail peut aussi convertir un document (mette convertir dans l'objet) sinon j'utilise depuis longtemps le produit 'calibre' pour gérer tous mes bouquins, il intègre des convertisseurs.
Cette liseuse peut stocker 1400 livres avec une autonomie d'un mois. 
Il est possible de gérer directement son kindle en la branchant au port USB d'un PC. 
Le contenu des répertoire est le suivant: 





Le répertoire document contient vos livres, le répertoire système les collections.

Le fichier collections est au format json ! Normal, amazon est un sponsor très actif des nouvelles technologies comme javascript, node.js  et Ruby. 

mercredi 2 novembre 2011

Un nouveau job : les curateurs , curators

Il existe un nouveau type de site Internet : les sites de 'curation'.
Wikipédia nous donne la définition suivante:

La curation de contenu (de l'anglais content curation ou data curation) est une pratique qui consiste à sélectionner, éditorialiser et partager les contenus les plus pertinents du Web pour une requête ou un sujet donné. La curation est utilisée et revendiquée par des sites qui souhaitent donner une plus grande visibilité et une meilleure lisibilité à des contenus (textes, documents, images, vidéos, sons...) qu'ils jugent utiles aux internautes et dont le partage peut les aider ou les intéresser.
La curation de contenu s'inscrit dans la mouvance du Web sémantique, un écosystème plus organisé qui permettrait aux machines de traiter plus intelligemment les requêtes des internautes et d'afficher des pages de résultats plus pertinentes.


Je tente l'expérience depuis quelque temps avec le site scoopit.com.  

J'essaye , de faire le tri dans les sites sur les sujets qui m’intéressent.  Les voici en vrac :

 Ce système a été repris par delicious.com qui propose des 'stacks' ciblées sur un sujet.
Le travail de curation de contenu va prendre une importance stratégique pour  la communication d'une entreprise. On reviens aux premiers temps des moteurs de recherche où l’indexation se faisait à la main. 
Nous voici entré dans l'ère du web 3.0 , du web sémantique.


samedi 29 octobre 2011

Les evenements #Node.js et #cofffeescript

J'ai evoqué dans un  précedent post, l'importance des fonctions de retour  (callback) dans l'architecture d'une application asynchrone. Gérer une suite d'action asynchrone par un chainage de callback se révèle vite très difficile. Aussi , il existe un deuxième composant venant en complément des callback : les évènements.
Node.js fournit une librairie pour gérer les évènements : require ('event'). Les évènements sont le véritable centre nerveux d'une application asynchrone dans Node.js. Ils  émettrent  des signaux qui  associés à des callback, orientent et cadencent  le déroulement du programme.
Exemple:
Les opérations pour  interroger une  page WEB les suivantes:
1) Se connecter au serveur
2) Lancer la requête
3) Traiter les entêtes
4) Traiter le corps de la page
4) Se déconnecter

Pour ne pas bloquer le système entre chaque étape notamment celle qui attend la réponse du serveur, il est judicieux de programmer l'émission de signaux à des moments clés du cycle. Exemple 'j'ai reçu les entetes'  , 'j'ai  reçu les données de la page' et 'le serveur m'indique que c'est terminé'.  pour chacun de ces signaux, il sera nécessaire de les 'ecouter' et de réagir  en  lançant les actions associées (callback) .
Ce système est composé de deux parties: l'emetteur de signaux (evenement) et le recepteur (listener) qui attend les évenements et lance les actions (callback ) prévues.


Les API de base de node.js sont livrées avec une gestion d’évènement, en charge pour le developpeur de réaliser la partie qui va traiter ces évènements.
(Exemple API HTTP: documentation ici )



  Avec  ici un exemple de récepteur sur l’évènement 'data':


  res.on('data', function (chunk) {
    console.log('BODY: ' + chunk);
  });
Comment mettre en place son propre système d’évènement.

La partie réception et traitement est la plus facile en voici un exemple:


Deux récepteurs sont mis à l'écoute.

La partie émission des signaux.

Node.js fournit la libraire 'event' et voici un exemple en coffeescript qui fonctionne avec le programme précédent:


Il ne faut pas grand chose ! C'est la magie de coffeescript et la puissance de node.js.
Pourquoi la magie de coffesscript ?
Parce en javascript écrit à la main, dans les règles de l'art,  cela donne:


La premiere fonction sert à construire proprement des objets, sans effet de bord sur d'autres modules.
(copiée sur api_request )

Il est intéressant de voir que tous ces problèmes de constructeur sont pris en charge par coffescript comme le montre le javascript issu du programme coffee. 

Aussi, coffescript n'est pas un simple générateur de code. Il met en place les bonnes pratiques et vous économise des lignes de code.



mercredi 26 octobre 2011

Temporisation en coffeescript et javascript

Pour un néophyte ,il est surprenant de ne pas trouver un équivalant à wait ou sleep dans les instructions du javascript. ci dessus des exemples de timers en coffeescript:
Le bloc à base de while est à éviter. Il monopolisera les ressources durant son exécution.

L'instruction qui permet de simuler ce comportement est la fonction setTimeout. Sa premiere utilisation est délicate. En effet on est souvent tenté de lui passer en paramètre un appel à une fonction mais c'est une expression qui est attendue.
Dans l'exemple en coffeescript le symbole '->'  permet de définir des fonctions anonymes. '=>' est une variante à cette utilisation.

dimanche 23 octobre 2011

Client HTTP asynchrone avec node et coffescript

Un des points forts de Node est de pouvoir programmer facilement des fonctions asynchrones.  Ci dessous un exemple de programmation d'un client HTTP. Cette fonction va interroger une base NoSQL en faisant varier la clé de 0 à 4.  Le programme est en coffeescript,  il utilise la librairie api_request. disponible ici sur github



L’exécution de programme montre bien l'aspect asynchrone des requêtes : La boucle 'for' est exécutée sans interruption (les lignes : début de fonction) , puis Node commence à envoyer les requêtes au serveur Nosql dans un ordre qui n'est pas celui de la boucle.  Il commence par la 'clé 4' . Avec une boucle plus grande (ex : 100) on retrouve cette 'clé 4' en première requête. Cette valeur peut changer sur une autre machine.  Pendant la boucle for , le gestionnaire d’évènement se contente de stocker les demandes, puis en   fonction de son cycle interne , profite des interruptions pour réaliser les requêtes. Avec une boucle de 100 requêtes, les 10 premières sont en vrac puis le système se régule. Dans un système asynchrone, la fonction appelée retourne un callback  (fonction de retour) et se termine. Ce callback sera appelé lors de la réalisation  de l’évènement associé.
 
Il existe des moyens pour enchaîner des actions synchrones  dans un univers asynchrone (ce n'est pas une aberration) . Le callback doit prévoir cet  enchainement d'action.

exemple :



La fonction de callback fait un appel récursif tout en incrémentant  la clé. A la réception de réponse du serveur, un évènement sera déclenché. La fonction callback associée à la réalisation de l'évènement sera appelé et cette fonction fournira l’enchaînement suivant. On utilise dans cet exemple des techniques de programmation fonctionnelle, ce n'est pas un hasard. Les fonctions callback se déclenchent dans un temps incertain et surtout avec des variables globales dans un état lui aussi incertain. La programmation fonctionnelle donne des modes de résolution pour ce type de problème avec des  variables partagée.





mercredi 19 octobre 2011

L'avenir de Ruby : conférence 2011 de Matz

Dans une conférence Ruby à la Nouvelle Orleans (octobre 2011), le créateur de Ruby :Yukihiro 'Matz' Matsumoto a dressé les perspectives d'avenir de Ruby.
lien ici  et ici.  Le titre de sa présentation 'ruby everywhere'. Matz travaille désormais chez Heroku 


 La société saleforces.com  finance Heroku et son PDG marc  Benioff  croit à l'avenir de Ruby comme langage du cloud 2.0.

A l'opposé sur le segment des gps, portables et tablettes , matz veut  mettre un Ruby minimaliste de partout. Le nom du projet est mruby. (m pour minimalist ?) , le concurrent direct est le langage 'lua' qui est présent dans des terminaux spécialisés mais aussi dans des projets de jeux. Il existe un projet Rhodes ruby qui est clairement destiné aux mobiles sous android.
Il rappelle ET C'EST IMPORTANT que Ruby est engagé dans un processus de standardisation et de normalisation . Des spécifications se portent garant de la bonne implémentation des machines virtuelles (rappel: Java n'est pas un langage normalisé).

Est ce que Ruby pourra absorber ou profiter de  la mouvance Node.js ? . A mon avis la démarche de  Rails est plus interressante : faire en sorte d'avoir une émulation plutot qu'une confrontation.









dimanche 16 octobre 2011

Node.js et le mode debug

Grace à firebug, il est aisé de faire des opérations de mise au point sur des scripts exécutés du coté client.
Ce système n'est pas utilisable sur des programmes  lancés coté serveur sur node.js . Il est fort heureusement possible de lancer un script en mode debug sur node.js.
Pour cela il suffit d'ajouter l'option suivante au lancement d'un script:
nodejs --debug-brk monscript.js


l'option --debug-brk provoque l’arrêt du script sur sa première instruction. Node vous retourne une adresse de connexion pour accéder aux  informations de debug

debugger listening on port 5858

Il est possible alors d'opter pour deux types d'outils. 

Le debug dans un terminal.

Pour cela, ouvrir un deuxième terminal et lancer la commande ndb. Cette commande est un module pour node qui s'installe par la commande npm install ndb

L'ecran ressemble à ceci 




Les commandes disponibles pour le debug sont celles qu'on retrouve sur des produits analogues (perl debug, ruby debug ) mais avec quelques limitations.
La commande 'l' ne permet pas de lister tout un programme.

Le debug dans un navigateur

Au lieu de lancer ndb, il est possible d'utiliser node-inspector. Ce programme se lance comme ndb  mais il retourne une url. cette url est à saisir dans un navigateur (si possible chrome) afin d'obtenir l'écran suivant:


Ce produit est très intéressant car en plus de la mise au point , il permet de faire de l’introspection sur le librairies au coeur de node.  Une liste déroulante propose de debugger votre script mais aussi de faire du pas à pas sur node lui-même.
Node_inspector est un module node, il s'installe donc par la commande npm install node-inspector.
( tip: avec l'option -g ,  npm  installe les modules dans un répertoire partagé ex: /usr/local et non pas dans le répertoire utilisateur) 




samedi 15 octobre 2011

Bref, j'ai mis à jour ma version d'ubuntu

bref , hier soir  j'allume ma machine et elle affiche ce message : voulez mettre à jour votre distribution avec la dernière version d'ubuntu (la 11.10) ?

Bref , je réponds oui , pourquoi pas ?.
Bref la fenêtre suivante s'ouvre :


Bref le temps restant passe de 1 seconde à 4 heures , puis à 7h  puis retombe à 4h pour telecharger 1691 mises à jour

Bref  , je vais me coucher en laissant la machine allumée.

Bref au petit matin l'écran est bloqué sur une boite de dialogue concernant le plugin flash
Bref, il reste une heure pour terminer l'installation
Après 1h 30, la machine redémarre et je n'ai plus de touchpad .
Bref , je pense que je tiens la bonne excuse pour acheter un macbook Air
Bref, je redémarre la machine, tout fonctionne  et j'ai un portable  remis à neuf qui marche encore mieux qu'avant

Bref, j'ai  mis à jour ma version d'ubuntu
Et je ne le regrette pas.




samedi 8 octobre 2011

Une tasse de coffeescript

Coffeescript est un nouveau langage de programmation qui génère du javascript. Le site officiel est ici.

 Ce langage est remarquable, il fait parti des DSL (domain specific language). Son auteur Jeremy Ashkenas a démarré en utilisant un livre très connu des hackers : Comment ecrire son propre langage de programmation.
La première version de coffeescript était en Ruby, un langage très adapté pour les DSL. Les versions suivantes  de coffescript sont en  coffeesript...
Coffeescript utilise la bombe du moment 'node.js' comme interpréteur.


Le programme javascript généré peut s’exécuter dans un navigateur ou sur une instance de node. La syntaxe de coffeescript est un mélange de Ruby et de Python dont il reprend les principes d'indentation.
Un script coffeescript par convention prendra l’extension '.coffee'
La génération du javascript se fait par la commande coffee -c monscript.coffee. On obtiendra ainsi  un  programme monscript.js. Ce programme répond à tous les critères de qualité des outils comme jslint.
Sans l'option '-c' le script est  traduit et exécuté directement  par node.js

Le framework Ruby on Rails dans sa dernière version intègre ce générateur de code.
Il suffit de placer un script avec l'extension coffee dans le répertoire javascript pour qu'il soit compilé et rendu disponible à l'application.

Ici j'utilise jquery via coffeescript :

$ ->
   alert "mon premier script avec coffeescript" 


Après un temps d'adaptation de quelques jours, j'ai du mal maintenant à écrire directement du javascript. D'autant qu'il se charge du sale boulot: déclaration des variables locales, closures etc.
La simple ligne : puts = console.log permet d'utiliser la notation classique puts "mon message" comme en Ruby.
J'ai profité du site www.scoop.it pour rassembler des liens sur le sujet : lien de curation ici.





vendredi 7 octobre 2011

Soirée rails france paris.rb

Mardi soir direction le café 'rubis'  rue du Maine pour une soirée organisée par rubis ou rails france. Nous sommes une bonne quarantaine à nous retrouver dans une salle trop petite. Le rétroprojecteur a fait faux bond, aussi  au lieu d'ajourner la soirée, une présentation est improvisée sur un mac book Air. Il s'agit du projet sproutcore.

C'est un framework javascript qui peut s'interfacer facilement avec Rails.
Ce projet se veut plus complet et intégré que backbone.js. Ce type de produit sert à développer des applications pour clients riches, pas pour faire des sites web classiques.

La présentation est là : (suivre le lien).

La soirée m'a permis d'admirer la maquette du nouveau site rails France avec une page 404 prometteuse
 
Tout de même une bonne soirée

mardi 27 septembre 2011

Rails 3.1 plus qu'une nouvelle version

La sortie de la version 3.1 de Ruby on Rails est un évènement qui marquera le web 2.0. C'est le premier framework qui se met au service des  composants qualifiés à tort de secondaires: Le javascript et le CSS.
La force de  Rails 3.1 est d'arriver à fédérer les meilleurs produits tout en restant dans son rôle de cadriciel.

Les éléments forts sont:
a) Utilisation de node.js pour proposer le facilitateur de javascript  coffeescript. On peut imaginer les montages a faire entre rails et node.js
b) Jquery est mis en avant. C'est tout le  javascript et le css (avec le générateur Sass ) qui vont bénéficier d'un nouveau traitement par le biais des assets. Il suffit d'ajouter son script dans un répertoire dédié pour qu'il soit ajouté et compressé avec jquery.
c) Le middleware : le lien entre la requête http et le langage est réalisé par le système Rack. Ruby est à ce jour le seul langage à proposer une boite à outil de ce type.


arborescence d'un projet Rails
Sur cette copie d'écran, on notera l'apparition du répertoire assets qui contient trois dossiers: un pour le javascript , un pour le css et un pour les images. Les trois fonctionnent de manière identique et dans le même but: concaténer les fichiers en un seul pour réduire le nombre de connexion réseau nécessaires à l'obtention d'une page complète.

Utilisation du javascript.

Tout commence par la création d'une application Rails par la commande éponyme: 
rails mon_projet  . 
La commande rails s'est étoffée :
La  première page est activée en générant un controleur (ex: rails g controller commun index ) . 
Tout fonctionne : 


Et là, la magie commence, deux lignes de javascript déposé dans le répertoire assets et aussitôt Rails vous sert jquery.


Si on ne veut qu'une seule requete pour récupérer le javascript dans l'environnement de développement,  une petite modification des fichiers de configuration s'impose.

Ces lignes dans  le fichier environments/development.rb
précisent de :

 config.assets.compress = true                                    # compresser tout le contenu d'assets
  config.action_controller.perform_caching = tr         # Utiliser un cache serveur
  config.assets.js_compressor  = :uglifier                    # Utiliser uglifier comme minificateur de javascript  
  # Expands the lines which load the assets
  config.assets.debug = false                                      # enlever le mode debug

A la premiere requete :
Rails va compiler les programmes coffeescript s'ils existent. Il va ensuite assembler les fichiers javascript, les concaténer et les mettre en cache (nettoyage du cache : rake tmp:clear).

Avec comme résultat : 1 css et 1 javascript minifié
   

La version 3.0 était déjà une révolution: c'était la fusion de deux projets opensources majeurs (Rails et merb) , alors que le fork est le mode de vie normal d'un projet. La version 3.1 fait encore plus fort et réalise la synthèse de deux idées puissantes : les frameworks légers et agiles  pour le web et la reconnaissance du javascript (coté client et serveur).

jeudi 22 septembre 2011

Les planes spotters: observateurs d'avion

Je suis tombé par hasard sur un article sur une bien belle passion: photograpier ou prendre des notes sur les avions de ligne.
Définition de wikipédia: Un spotter est un passionné d'aviation parcourant les aéroports et aérodromes du monde entier, afin d'observer, répertorier, prendre des photos d'avions et/ou notes diverses (photos d'empennage, immatriculations, etc.)


Un site encore plus étonnant : http://www.flightradar24.com/ : se site permet de suivre les vols commerciaux en direct avec indication de l'altitude, de la destination de la vitesse etc.

Le clic sur un avion donne le détail:





Une des plus grosses bases de données des avions est ici : http://www.airliners.net/

mercredi 21 septembre 2011

La carte de France des emprunts toxiques par commune

Sur le site du journal Libération : la carte de france des emprunts toxiques (lien ici et ici )

Je suis curieux de voir les résultats pour ma commune de Villiers sur Marne... pas déçu ...en couleur rouge.

L'article de complet de Libération est là.

source: Libération du 20/09/2011

dimanche 18 septembre 2011

Le jour où j'ai failli acheter un macbook air

Mes projets de la rentrée : prendre un an de plus,  passer la cinquantaine et acheter un macbook Air.
Les deux premiers projets sont bien engagés (et terminé). Concernant le Macbook Air, j'avais repéré les lieux à la source même:

DSCN3101
 Après avoir fait le tour de quelques FNAC pour trouver le modèle souhaité (4 go,128 go , 11 pouces) , j'arrive au comptoir pour régler et là DAMNATION : j'ai oublié un papier .. m...
Retour à la maison les mains vides et je repasse au banc d'essai . Pourquoi acheter un apple ? , quelles applications ou usages incontournables.

Pourquoi changer de machine ?
 - Il est petit mais encore lourd
 - Je ne peux pas facilement brancher l'appareil photo
-  J'ai mis l'OS en vrac  (patch)

Pourquoi acheter un mac ?
- Pour frimer: tous les développeurs Ruby/Rails en ont un.
- Pour utiliser textmate (40€)
- Pour utiliser iphoto
- Pour brancher des périphériques de manière facile ex: clé 3G
- Pour le poids
- Parce qu'il est beau

Pourquoi ne pas acheter un mac AIR ?
- Il n'y a pas de sortie Ethernet (30 €)
- Il n'y a pas de prise VGA (30 €)
- Il est cher (> 1050 €)
- Le disque dur est plus petit que mon portable actuel

Après d'intenses réflexions, j'ai donné une deuxième chance à mon portable en remplaçant ma version d'ubuntu vieille de deux ans par la dernière mouture.


Et là miracle, je mesure le travail accompli par les développeurs, les contributeurs connus ou anonymes.
Toutes les fonctions de mon portable fonctionnent, j'ai un peu honte vis à vis de mon portable.  Le seul bémol reste mon envie de développer. Je ne suis pas sûr qu'un Mac me redonne le gout de pondre du code. Le Mac serait-il un ersatz au viagra dans sa catégorie ?

Aussi, prendre un Mac pour représente la solution de facilité et est un signe de capitulation voire de vieillesse.

Alors quelles bonnes résolutions :

a) Ecrire des articles sur node.js , javascript
b) Ecrire des articles sur rails 3.1
c) Ecrire du  code


Préparer ses munitions:
DSCN4149



mercredi 10 août 2011

LevelDB :un projet google pour une librairie key-value

Google vient de sortir un nouveau système de stockage intermédiaire: LevelDB. C'est une librairie de bas niveau destinée à des bases de données NOSQL  de type key-value. Le système encapsulant cette librairie écrite en 'C' est à développer. Un portage existe pour le système ANDROID. 
La documentation est ici.

Illustration : http://blog.nahurst.com/visual-guide-to-nosql-systems

Pour rappel le site ici qui recense toutes les bases de données nosql.



dimanche 17 juillet 2011

En attendant une invitation pour google+

J'attends comme un malheureux une invitation pour jouer avec google+. Pour passer le temps j'ai soudé quelques chutes de tube pour réaliser un porte-manteau aux couleurs de Google.


DSCN2821

DSCN2822

Avec google+ , la firme de mountain view ne prend pas un grand risque. Elle a mis fin prématurement à l'expérimentation de de googlewave. c'est une des rares entreprises à savoir reconnaitre ses erreurs et à rectifier le tir.

Une série d'article ici sur le site zdnet.:Google+ : vivement que les Cercles rentrent dans l'entreprise

L'autre offensive de google porte sur le poste travail passif avec chromeOS.
L'idée d'avoir un poste de travail qui ne sert qu'a se connecter sur un host est ancienne. Déjà dans les années 80 Bull proposait des terminaux passifs qui se connectaient sur des grappes bureautiques.  

samedi 16 juillet 2011

Un piscine sur les toits

Cet immeuble est un Casino à Singapour (Marina Bay Sands Casino)

Il est déjà d'une forme originale, mais le meilleur se trouve au 57 eme étage: la piscine





Swimming pool in the sky

Il est déconseillé de se plonger au dessus des barrières.

mardi 12 juillet 2011

Jquery et .NET

Dans le numéro de 01Business & Techno  juin 2011 : Le classement des formations les plus demandées.

La comparaison est intéressante :

Pour un développeur d'application JAVA, la formation la plus demandée est "Architectures JAVA EE, Spring Hibernate et JSF"

En revanche pour un développeur Microsoft .NET :  c'est les formations ... "jquery" qui sont les plus demandées (Et sur  le cloud Azure dans une moindre mesure )   

 L'ajout de jquery dans le framework .NET  a vraiment été une bonne idée.

Tintin historique. Hors-série Historia - Le point


Dans un hors-série 'HISTORIA', vous saurez tout sur le contexte historique des albums de Tintin. L'ouvrage se présente sous la forme d'une BD (reliure rigide).
Beaucoup d'illustration : des photo d'époque, des vignettes et des projets de fresques.
Cet ouvrage dresse la liste des événements marquants de la période et leurs traitements par Hergé.
L'origine des personnages de Tintin (Dupont, Dupond ,  Pr Tournesol)  est aussi expliquée.

Tout ça pour moins de 10 Euros.