jeudi 28 avril 2011

Nous sommes tous des mauvais programmeurs javascript

Le javascript a longtemps été le vilain petit canard de la programmation. Lancé en même temps que Java, son nom introduit dès le départ une ambiguïté java - javascript. Le choix a été dicté par le souhait des concepteurs de surfer dans le sillage de Java. Les fées n'ont pas été sympa avec lui: un mauvais nom, pas de norme, un moteur lent et des mauvaises habitudes de copier/coller.
Moi, le premier je prenais des morceaux de code javascript sur des sites au petit bonheur la chance. De fait, il y a beaucoup de personnes qui font du javascript SANS connaitre le javascript.

Heureusement les choses changent. Les moteurs javascript ont multiplié leur puissance par 1000 en moins de 5 ans. Le langage est normé. De bons programmeurs font des bons programmes javascripts (exemple jquery). Alors JAVA, Perl , Ruby ,Python ? non Javascript !. Les autres langages ne servent qu'a servir la soupe.
Ci dessous un document illustrant le bon usage du javascript:

Avec quelques bonnes pratiques:

  • Séparer la structure d'une page (HTML) et son comportement (JS)
  • Séparer la structure d'une page (HTML) et sa mise en forme (css)
  • Utiliser des vrais 'ID' (unique)
  • Utiliser  l'attribut 'class' pour le CSS
  • Privilégier les structures hiérarchiques du HTML (H1,H2 etc)  aux DIV
=> Pas de javascript dans le HTML
=> Éviter le css dans le HTML
=> Le CSS en tête de chargement

Et surtout : utiliser firebug !
 

Le moteur pour exécuter du javascript en ligne de commande : spidermonkey.
ou node.js (mais c'est une autre histoire).
Le livre qui va avec tout ca:


Les produits dérivés :

Node.js : déja cité
  is an event-driven I/O framework for the V8 JavaScript engine on Unix-like platforms
 (c'est pas beau ca ?)
C'est un concentré de l'informatique de demain: faire des serveurs qui supportent des milliers de connexions critiques et  'longues' (ex : steaming, flux twitter, informatique embarquée) .

coffeesscript : lien ici
Langage à la Ruby pour écrire simplement du javascript.

Rails 3.1 qui embarque jquery dans sa pile de manière très propre : pas de javascript dans le HTML.

mercredi 27 avril 2011

Une platine vinyle hi-tech



Pour tous les nostalgiques amoureux du beau son, il existe un moyen de redonner une deuxième jeunesse à ses disques 33 tours sans faire le lourd achat d'une platine.

Sur cette vidéo, deux jeunes font une démonstration d'une platine construite en Lego.
La partie audio est constituée d'un cornet doublé de papier aluminium garant d'une sonorité 'chaude'. Bien sûr la lecture par une aiguille peut abimer 'légèrement' le disque.


Le matériel


La vidéo:



L'utilisation d'un microcontroleur Arduino pilotant un moteur pas-à-pas permettrait d'obtenir une vitesse stabilisée.

samedi 23 avril 2011

JEE et la bouilloire

La chose la plus intelligente que j'ai lue sur l'énergie nucléaire est ici (suivre ce lien).
L'article titre sur :
Nucléaire : le moyen le plus dangereux pour faire bouillir de l’eau
Tribune de Bernard Laponche, publiée dans Libération le 24/03/2011

Je met en parallèle avec cet article le dernier numéro des Dossiers pour la science.



Lien vers la revue ici.

L'année 2012 sera riche en découverte scientifique grâce au satellite Plank. Et tout ce qu'on sait faire pour produire du courant est de faire tourner une turbine avec de la vapeur (technologie d'avant 1900). Quel gaspillage!.
La france est leader des constructeurs de centrales nucléaires MINITEL.

En faisant une analogie avec l'informatique.

J'ai commencé à faire du Java au début des années 2000, à l'époque des premiers APPLETS.
Puis j'ai enchainé sur les premiers frameworks : struts et spring.
J'ai arreté là, lassé de passer plus de temps à écrire des fichiers de configuration XML que du code.
Avec le recul, je crois que JEE est le moyen le plus complexe de répondre 'hello world' à une requete simple (comme GET /). JEE est bien une espèce de bouilloire.
Et je transpire en pensant que dans leurs bouilloires nucléaires à vapeur, c'est peut etre une autre bouilloire JEE qui supervise l'ensemble.
Le web n'est pas forcement la meilleure solution pour développer des applications métiers et JEE n'est pas la meilleure façon de faire des applications WEB.

samedi 16 avril 2011

Gestion de livre ou ebook

Deux programmes à découvrir pour organiser ses livres

Calibre pour ebook.

Calibre est écrit en python (lien ici) . C'est l'outil de référence pour gérer ses livres au format numérique. Il est capable de convertir les fichiers de PDF en epub.


Alexandria.

Alexandria est un gestionnaire de livre 'papier' lien ici. Par un titre ou par un numéro ISNB, il est possible de d'ajouter automatiquement un ouvrage.
La plupart des grands sites de vente de livre offrent un service de recherche accessible par des programmes.
Alexandria est ecrit en Ruby.





Mes dernières lectures:

  • Lolita de Vladimir Vladimirovich Nabokov.



J'aime énormement le film éponyme de Stanley Kubrick, mais le film est très aseptisé par rapport au livre. C'est un livre assez 'perturbant' et difficile.
Rappel Stanley Kubrick est à la cinémathèque de Paris.

  • Deuxième livre:

L’Attrape-coeurs de J. D. Salinger


C'est un classique, étudié dans les écoles US. Après sa lecture, je n'avais pas envie de tuer John Lennon.(voir article sur wikipédia).

Et enfin, j'ai commencé:

  • Getting Started with Arduino




Et là c'est des heures de plaisir solitaire en perspective.
lien du site arduino.

dimanche 13 mars 2011

japon, images tsunami


Le site du New-York Times a mis en ligne un montage qui permet de voir le Japon avant et après le tsunami. Le dispositif est réalisé avec jquery.

Meme système sur abc: http://www.abc.net.au/news/events/japan-quake-2011/beforeafter.htm
Ce drame dépasse largement le simple cadre du Japon et nous concerne tous.

dimanche 6 mars 2011

Le cout des réunions



Les réunions ont un coût qui peut être visualisé par des petits appareils comme ceci



Il suffit de d'entrer le salaire horaire moyen , le nombre de participant et de lancer le décompte.
Ces petits gadgets sont de plus en plus utilisés dans les sociétés.

A ce coût direct, il faut ajouter les divers frais (trains, repas etc.) . La contrepartie de cette somme est le gain direct généré par cette réunion.


Une réunion c'est aussi un temps de préparation: ordre du jour, liste des points à traiter et un suivi de décision.
Les gars de 37 signals prônent l'utilisation d'un minutier pour obliger les participants à régler les problèmes dans le temps imparti. En plus, ils recommandent de ne pas hésiter à planifier des réunions courtes (ex : 15 minutes)

samedi 26 février 2011

Perl Dancer - Sinatra Ruby



En consultant les pages de compte rendu des Perl Mongueurs Paris , je suis tombé sur cette phrase:
Guillaume a installé Dancer sur sa machine. Compte tenu des dépendances, il a été obligé d'installer Moose et « la moitié de CPAN ». La recherche des dépendances n'est pas un problème lorsque l'on utilise CPAN.pm,


Quel est ce fameux Dancer ? . Une recherche après sur google, je tombe sur:
http://perldancer.org/ : Minimal-effort oriented web application framework for Perl (inspired by Ruby's Sinatra)
Sinatra Ruby est cadriciel qui permet d'écrire un application WEB en quelques lignes.

Le grand Confucius disait même: si tu veux connaitre Ruby, regarde le code source de Sinatra.

En effet parmi les étapes recommandées pour connaitre Ruby , la lecture du code source de Sinatra figure en bonne place.


Reading the Sinatra code is a good start. You might also want to read up on Rack, the HTTP interface Sinatra uses. Not necessarily for coding practices but just to understand how Sinatra fits in the whole stack.

#!/usr/bin/env perl

Avec dancer :

use Dancer;
get '/' => sub {
"Hello World!"
};
dance;
$ perl bin/app.pl &...
$ curl http://localhost:3000/
Hello world!


Avec Sinatra:

require 'sinatra'
get '/hi' do
"Hello World!"
end