HTML5 et FBML

Sur un projet personnel, j’ai voulu intégrer  facebook connect pour simplifier l’authentification. Mais ce n’a pas  été simple pour moi parce qu’étonnement(!) IE s’est avéré incompatible. Car j’ai utilisé HTML5 et les namespaces ne sont pas autohrisés sur l’élément html et cela ne fonctionnait pas avec IE8. Ceci étant un bug connu, après avoir recherché un peu sur google, j’ai décidé de hacker le javascript de facebook pour utiliser le FBML sans faire de FBML. Le but était d’utiliser des balises span au lieu de <fb:login-button>

Voici ma solution:

<script src="http://connect.facebook.net/en_US/all.js"
        type="text/javascript"></script>
<script>
<script type="text/javascript">
    FB.XFBML._getDomElements = function (a, e, d) {
        var c = e + '-' + d;    
        switch (FB.Dom.getBrowserType()) {
             case 'ie':
                return document.querySelectorAll('.'+c);    
             default: 
                return a.getElementsByClassName(c);    
        }
    };
</script>
// maintenant on peut utiliser un span au lieu de fb:login-button
partout dans notre page html

<span class="fb-login-button" id="fb_button" v="2" 
perms="user_about_me,user_hometown,user_location,email" 
onlogin="onConnect()">Connexion avec Facebook</span>
// la classe fb-login-button correspond à la balise fb:login-button,
ceci est valable pour toutes les balises FBML

J’espère que ça va servir à quelqu’un d’autre.

Publié dans fbml, hack, html, html5, javascript | Laisser un commentaire

Scala 2.9 et applyDynamic

Scala est un langage jeune mais très puissant et concise avec son approche multi-paradigm objet et fonctionnel. D’après moi, une fonctionnalité manquante du scala était de pouvoir appeler une méthode dynamiquement pendant l’éxecution de l’application avec son nom en lui passant une liste d’argument. Beaucoup de développeurs orienté-objets sont contres à cette approche qui existe dans PHP avec les méthodes magic et dans ActionScript 3 avec la classe Proxy mais ayant fait du Java, de l’AS3 et de PHP, je suis persuadé par l’utilité de cette approche.

Example d’appele de méthode dynamique avec ActionScript 3

dynamic class MyProxy extends Proxy {
flash_proxy override function callProperty(name:*, ...rest):*
{
  // code d'appel dynamqiue
}

Désormais, avec la version 2.9 qui va sortir bientôt, cela va devenir possible avec scala

Voici une petite démonstration:

Ici j’ai utilisé le mixin-compositing qui permet d’ajouter un comportement avec les traits directement aux instances. Rien ne nous empêche d’implémenter le trait Dynamic directement dans notre classe Hello

Je m’intéresse particulièrement au trait Dynamic dans scala, car ce mécanisme va permettre de traiter les objets de type JSON avec une syntaxe plus égalante. Avec ce mécanisme, on peut implémenter le concept de Dynamic Finder qui marche très bien dans Groovy/Grails/GORM. Si vous voulez analyser des donnés dynamiques tels que celles provenants du graph API de facebook, du twitter, ce mécanisme couplé à la console scala, peut offrir un très bon environnement de test. Cerise sur le gâteau, avec mongodb vous pouvez stocker vos documents JSON sans aucun mapping entre JSON-Scala-MongoDB.

La réponse du développeur de l’API casbah, driver officiel mongodb pour scala, à ma question sur le sujet sur google groups, supporte le succès à venir du Dynamic dans scala,

Voici ma question:

Hello
I’m wondering if scala 2.9 Dynamic class will be supported in casbah to be able to browse mongo object with a syntaxe like user.adress.zip ?

Et sa réponse:

There are definitely plans to do exactly that.  In fact, there was some discussion of that very feature over dinner with some of the N.E. Scala symposium attendees this weekend.

The next major release of Casbah will be version 2.1; it is pegged to MongoDB 1.8 and Java Driver 2.5 however so it may supersede Scala 2.9.

As soon as a Release Candidate of Scala 2.9 is available we will add support for Dynamic.

Je suis très impatient pour la sortie 2.9 du scala et de la version 2.1 de casbah.

Publié dans as3, dynamic, gorm, grails, groovy, php, scala | 8 commentaires

Prémiers pas avec scala

Cela fait quelque mois que j’essaie d’apprendre le language scala et aujourd’hui, je souhaite partager mon exppérience et mes retours les différents aspects de la programmation avec scala.

Q’est ce que c’est scala ?

Selon wikipedia:

Scala est un langage de programmation multi-paradigme conçu à l’École polytechnique fédérale de Lausanne (EPFL) pour exprimer les modèles de programmation courants dans une forme concise et élégante. Son nom vient de l’anglais Scalable language qui signifie à peu près « langage adaptable » ou « langage qui peut être mis à l’échelle ». Il peut en effet être vu comme un métalangage.Scala intègre les paradigmes de programmation orientée objet et de programmation fonctionnelle, avec un typage statique. .Il est prévu pour être compilé en bytecode Java (exécutable sur la JVM), ou .Net.

 

Comme dans mon travail, je ne développe pas avec scala, malheuresement, je me suis dis que ça serait une bonne idée de développer une application à la maison, de préférence web afin d’apprendre ce langage. Donc, j’ai commencé par télécharger la dernière version en date (2.8.1) de scala. C’est en même temps que j’ai connu le framework web lift qui est basé sur scala. Ce dernier était utilisé par foursquare.com (4sq) pour des raison de performance et de sécurité. Donc, je suis parti avec ce framework, et en plus, avec la base de donnée mongodb qui est aussi utilisé par 4sq. D’ailleurs , je souhaite vous en parler  aussi dans pas longtemps.

Au début, afin de créer mon environnement de développement, avec les reflexes d’un développeur java, je suis parti à la recherche d’un plugin scala pour eclipse, mais actuellement il est très instable même si récemment la société de Martin Odersky, le cérateur du language Java a prise en charge son développement, aujourd’hui il est déconseillé d’utiliser eclipse pour la programmation avec scala. Après un peu de recherche, je suis tombé sur la version opensource du fameux  outil Intellij IDE avec le plugin scala. Je l’utilise depuis presques deux mois, et appart quelques racourcis sympa d’eclipse, rien ne me manque dans Intellij en terme de fonctionnaité, d’assistance au codage.

Après tout, voici la déscription de mon environnement de développement:

  • Machine virtuel d’Ubuntu 10.10 desktop dans Windows 7
  • Intellij IDE  avec le plugin scala qui  inclut le support de débuggage
  • Scala 2.8.1
  • Maven 3.0.x (j’ai essayé sbt mais pour l’instant je continue avec maven)
  • JRebel for Scala (payant pour Java, gratuit pour Scala :) )

Après mon lancement dans la programmation scala, j’ai appris une chose, qui n’est pas toute nouvelle avec d’autre language comme Ruby, mais peu appliqué dans le domain de Java. Ce sont les REPL ou read-eval-print loop.

Ce genre d’outils permettent de tester, d’évaluer rapidement une expression dans une console. Je dois vous dire que cela m’a changé ma manière de programmer. Par example, pour extraire des données depuis mongodb, j’ai utilisé leur API officiel casbah, et comme ce n’est pas du SQL,  mais un DSL scala, pour extraire la donnée, la transformer avec des map, des list, des seq dans scala, ou début j’avais beaucoup de difficulté pour tester ma requête je perdais un peu de temps à chaque fois que je modifier ma requête, même si j’ai utilisé Jrebel. Depuis que j’ai découvert scala console, l’outil de REPL de scala, tout est alllé plus vite.

Il y a plusieurs manière de lancer scala console, mais dans le context de mon projet, afin d’avoir mes classes scala ainsi que les dépendances du projet dans le classpath, je suis passé par maven avec la commande

mvn scala:console

Voici un hello world dans la console scala:


Dans cette console, on peut définir des classes, des fonctions, des traits,  céer une connexion à la base de donnée, faire des requêtes et les faire évaluer en temps réel.

Si vous voulez gouter à scala tout de suite sans installer quoi que ce soit, je vois conseille d’aller à cette address où vous pouvez utiliser une console scala depuis votre navigateur avec des exemples très intéressants.

Moi qui est dévenu un fan de la console javascript de chrome, je trouve un réel intéret dans les REPL en générale, et celui de scala marche vraiement bien.

 

 

Publié dans java, maven, REPL, scala | 2 commentaires

println(« Hello, world! »)

Bonjour,

Depuis un moment, je voulais créer un blog personnel afin de partager mes idées dans le domaine de développement logiciel et de pouvoir échanger avec le communeauté. Je suis attiré plutôt par le monde open source, et mes langages favoris sont Java et Scala que je  suis en train d’apprendre.

Je m’appelle Ilyas Stéphane Türkben, j’ai 27 ans, je suis français d’origine turque. J’ai terminé une formation d’ingénieur d’informatique à Mâcon en France et actuellement je travaille en tant qu’ingénieur de développement, en Suisse dans le canton de valais. Jusqu’à présent j’ai principalement travaillé avec les technologies suivantes: Java, Flex, PHP et JavaScript et en ce moment je suis plutôt attiré par le langage scala et par la base de données NoSQL MongoDB. Dans les prochaines jours, je vais essayer de partager mes retours sur ces nouvelles technologies.

J’espère à très bientôt avec un article sur, hmm,  Scala

Amusez-vous bien  :)

Publié dans Uncategorized | 4 commentaires