mercredi 29 juin 2011

Microsoft mise sur HTML5 et javascript

Microsoft dévoile officiellement la nouvelle version de son OS : windows 8. Et surprise, cette dernière mouture fait la part belle aux applications HTML5 et surtout à javascript. Microsoft avait déjà introduit jquery à son framework .NET. La tendance se confirme et provoque des remous dans l'écosystème microsoft.
Les sociétés qui ont misé sur J2EE ou .NET commencent à se poser des questions. Et microsoft répond.
Article pcworld.

mardi 28 juin 2011

Fabriquer un 'gem' #ruby avec jeweler

Pour faire un gem ruby propre, l'utilitaire à utiliser est 'jeweler'

Jeweler: Craft the perfect RubyGem

Jeweler provides the noble ruby developer with two primary features:

* a library for managing and releasing RubyGem projects
* a scaffold generator for starting new RubyGem projects
La commande jeweler 'mon_gem'  (ici jsrdoc) va créer les dossiers et les fichiers suivants:



On constate la présence d'un répertoire 'test'  qui vous invite gentiment à écrire des tests... qui seront lancés par un rake test..

dimanche 26 juin 2011

Le trone de fer : A game of thrones

Je suis tombé sur la série : a game of thrones.

C'est de la très bonne qualité. Il n'y a pas beaucoup de magie, c'est très médiéval.

J'ai commandé le bouquin chez amazon:

Le classement de mes séries:

1) Dexter
2) Docteur House (en perte de vitesse)
3) Cold case
4) big bang théory
5) Game of thrones
6) Breaking bad
7) Mad men

samedi 25 juin 2011

Forcer l'installation d'extension #thunderbird ou #firefox

Cet article vous explique comment forcer l'installation d'un addons thunderbird ou firefox. Cette technique ne fonctionne que pour les  modules basiques et simples.
Qu'est ce qu'une extension , addons, plugin pour thunderbird ou Firefox ?. C'est une archive de type zip qui contient une série de fichier. Cette archive  est nommée par convention nom_du_addons.xpi. Un fichier de type xpi peut etre téléchargé sur sa machine: 'enregistrer la cible' . Le plugin ainsi rapatrié en local, doit etre installé dans thunderbird ou firefox. Le menu 'outils => modules'  de thunderbird sert à installer proprement un module. Mais  pour cela, le module (extension , addons, plugin) doit etre compatible avec votre version de thunderbird ou firefox. Chaque auteur de module doit re-tester son extension et signifier le bon fonctionnement de son module.  Ce travail n'est pas toujours fait.

Les informations de compatibilité sont stockées dans l'archive xpi, dans le fichier d'extension 'rdf' (souvent install.rdf). Dans ce fichier au format XML, un attribut 'MaxVersion'  bloque la compatibilité.

                   em:id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"
                   em:minVersion="1.5"
                   em:maxVersion="3.1.*" /> 
 


Pas besoin d'extraire l'archive pour  modifier cette zone. Un simple clic sur le fichier et votre gestionnaire d'archive va ouvrir dynamiquement le fichier.
Le install.rdf se modifie avec un simple éditeur, puis votre gestionnaire d'archive va re-inserer votre fichier. Vous obtenez un fichier XPI compatible. Mais cela ne va pas vous garantir que l'extension fonctionne vraiment avec votre version thunderbird ou firefox: à vous de tester.

Mes addons préférés  pour thunderbird sont :

  • Texcomplete : permet de définir des modèles de mail  ou de plaquer des formules pré-définies
  • Localfolder : ajoute des boites locales fictives  utilisées comme sauvegardes de votre boite mail.
  • Send filter : un filtre pour les messages envoyés, vous rangez dans des dossiers vos messages entrants ? , cet addons le  fait pour les messages sortants (besoin de sauvegarde) . 
Pour Firefox : Le seul et unique Firebug !

jeudi 23 juin 2011

Embellir son code #javascript

J'ai déposé sur lemon-labs 2 versions du programmes 'beautify' en javascript. Le programme d'origine n'est de moi mais de Einar Lielmanis disponible sur : http://jsbeautifier.org/.
J'ai modifier son programme pour qu'il se lance en ligne de commande avec le framework 'rhino' .
Cette plateforme permet de l'utiliser sur windows ou  Linux.

Rhino se télécharge depuis le site http://www.mozilla.org/rhino/

Rhino est une librairie Java (jar) , aussi son installation et son utilisation sont simples.

 Le programme javascript à lancer est beautifier.js en spécifiant le fichier javascript à embellir.   La sortie se fait sur le terminal. Le signe '>' redirige la sortie vers un fichier.


J'ai transformé le programme pour obtenir une version pour node.js.
(voir depot sur lemon-labs).
Le lancement du programme par node.js se fait par :
node beautifyNode.js    /onglet108.js

Node.js est à réserver pour un usage sous Linux.

mercredi 22 juin 2011

Fabriquer son propre jeu en #javascript avec RPG js

Sur ce site : RPG js. Vous avez la possibilité de télégarger un atelier pour fabriquer vos propres jeux de type RPG : Role Playing Game.

Vous avez les outils pour construire vos cartes, vos personnages, pour gérer les évenements et les combats.
Le wiki en francais est ici.
Vous pouvez par la suite inclure votre création dans vos pages.

mardi 21 juin 2011

#javascript: quelques ressources.

Tout d'abord une série de TP sur ce qu'il est important de maitriser en javascript avant de faire du jquery. Le tout est suivi d'une série de 8 TP. L'objectif de ces manipulations est de construire un menu à base d'onglet.

Les TP et le source des fichiers est sur : github lemon-labs
La présentation est sur www.slideshare.net.



J'ai ajouter dans github lemon-labs un 'beautifier' de code javascript. Il remet en forme votre programme et s'assure qu'il sera conforme au validateur jslint.

Avant un beautifier et Après:

samedi 18 juin 2011

histoire des langages informatiques

J'ai pratiqué tous ces langages. Souvenirs ..souvenirs


Cloud applications Cloud applications

#Backbone.js: petit tutorial

L'intervention de  David Heinemeier Hansson à la Railsconf 2011 de Baltimore   évoquait un nouveau phénomène: l'apparition des MVC coté client. Ces MVC sont forcement en javascript, seul langage supporté par les navigateurs. Parmi les noms de MVC javascript, backbone.js est celui le plus cité.


Je me suis plongé pendant quelques jours sur la document de backbone , en particulier sur l'exemple de TODO List réalisé  par Jérôme Gravel-Niquet.

Reuven Lerner, éditorialiste  de la revue Linux Journal (US) a consacré deux series d'article sur le sujet (juin num 206 et juillet: num 207).
On   trouve ici et là  d'autres articles.



Conclusion : j'ai failli me noyer.



Les principes sont pourtant assez simples: La notion de modèle  recouvre l'accès aux données. Ces données sont récupérées par l'appel d'une URL  du serveur applicatif. La partie vue correspond à la partie visuelle: la portion de HTML.
La partie controleur est responsable de la gestion des 'routes'. Dans les applications massivement en AJAX, l'utilisateur voit plusieurs pages mais reste physiquement sur une page. Aussi le  developpeur peut utiliser les fragments d'url (/#monFragment) pour différentier artificiellement les pages pour la gestion des signets. Ce système fait appel aux 'routes' du controleur.

La partie controleur est réduite au minimum dans les petites applications javascript.

En revanche, le dialogue entre les couches est à  prendre en charge par le développeur. A ce dialogue s'ajoute les interractions avec jquery. Au final l'investissement initial n'est pas neutre.

La couche modèle.
Backbone propose une structure pour  définir et manipuler  des éléments  unitaires ou des collections d'élément.


Exemple :
    masuite.bind("add", function(v) {
    alert("Ahoy " + v.get("valeur") + "!");
    }); 
   var a= new UnElement({valeur:1});    
    var b= new UnElement({valeur:2});
    masuite.add(a);
    masuite.add(b,{silent:true});
 
Je commence par définir une fonction qui se déclenchera lors de chaque ajout d'un élément à une collection. L'option 'silent'  bloque la remontée de l'évènement.

La collection est la colonne vertébrale de votre application. L'utilisation de la librairie : underscore.js ajoute une vingtaine de méthodes supplémentaires dont le each , le tri, la comparaison entre deux états. La couche modèle est responsable des échanges de donnée avec le serveur.


La couche vue.

Il y aura en principe autant de vue que de portion d'affichage. Dans mon exemple, j'ai deux vues, une pour afficher l'élément unitaire de la suite, l'autre pour les informations relatives  à la suite de nombre (la collection).
Tout changement dans le modèle sera repercuté dans la vue.

Comment brancher le modèle à sa vue ? : les avis divergent. Doit on réferencer la vue dans le modèle , ou l'inverse ou les deux à la fois ?.
J'ai suivi l'exemple du TODOS liste.


Cela donne le code suivant:
 




Le html est très simple:


A chaque ajout d'un élément dans la collection toutes les vues se mettent à jour:


Cette application n'a pas besoin d'un vrai controleur.
Par comparaison j'ai réalisé cette application sans backbone.js , juste avec jquery.




La comparaison est sans appel : c'est plus compliqué et long à faire avec backbone.js. Mais en ajoutant des deux cotés des nouvelles fonctions, très vite je me suis rendu compte que l'ajout est plus simple à réaliser avec backbone.js.
Attention à l'ordre d'insertion des librairies javascript : jquery, underscore,backbone,mon_script.  
Les sources sont sur github.


vendredi 3 juin 2011

Livre en francais sur #postgresql

C'est rare et il faut donc en profiter.
L'éditeur est Pearson , l'auteur Gegory Smith.
Le lien est ici.
Le sujet du livre est axé sur la performance. La performance au sens large du terme, aussi une partie de l'ouvrage est consacré aux systèmes de fichier.


Le Sommaire



  • PostgreSQL et ses versions
  • Matériel pour la base de données
  • Tests de performance du matériel
  • Configuration des disques
  • La mémoire comme cache pour la base de données
  • Configuration du serveur
  • Maintenance
  • Tests de performance des bases de données
  • Index
  • Optimisation des requêtes
  • Activité et statistiques de la base de données
  • Supervision et tendances
  • Pool de connexions et cache de données
  • Montée en charge avec la réplication
  • Partition des données
  • Éviter les problèmes courants

La table des matières détaillée ici en PDF.