Firefox 3.5 disponible ce soir (30 juin) à 18h

juin 30th, 2009

Les responsables de Mozilla ont annoncés hier que la  nouvelle version de Firefox, la 3.5 (initialement nommée 3.1) sera disponible à partir d’aujourd’hui et plus particulièrement vers 18h pour la France.

Comme toujours cette nouvelle version sera disponible via le site internet de Mozilla ou via le système de mise à jour automatique.

Voici une liste des nouveautés :

  • gestion de la vie privée,
  • amélioration de la vitesse de chargement,
  • amélioration de la vistesse d’exécution du javascript grace au nouveau moteur traceMonkey,
  • géolocalisation,
  • prise en charge de certaines nouvelles balises HTML 5 (audio, vidéo, API drag n’drop, …)
  • prise en charge de nouvelles clause CSS (text-shadow, word-wrap, …)
  • nouvelles fonctionnalités DOM (propriété localStorage, multi-threading, objet NodeIterator, …)
  • support natif du format JSON
  • requete XmlHttpRequest cross-site autorisé (si supporté par le serveur)

Vous pouez retrouver l’ensemble des modifications sur le site des developpeurs Mozilla : https://developer.mozilla.org/en/Firefox_3.5_for_developers

Mise à jour (le 30 juin 2009 à 17h30) :

Il est officiellement possible de télécharger firefox 3.5 sur le site officiel de mozilla : http://fr.www.mozilla.com/fr/

VN:F [1.0.8_357]
Rating: 0.0/5 (0 votes cast)

developpement

Wordpress 2.8 prévu pour le 10 juin

juin 9th, 2009

Si tout va bien la version 2.8 de Wordpress devrait être disponible le 10 juin 2009 (soit demain ;) ).

C’est en tout cas ce qu’annonce le site de l’association Wordpresse francophone.

Au niveau des nouveautés, on retrouve :

  • un nouveau look pour l’interface d’administration
  • le dashboard devient personnalisable
  • installation des thèmes simplifiés via un module de recherche et d’installation des thèmes depuis l’interface d’administration
  • la possibilité de supprimer un thème depuis l’interface d’administration
  • un nouvel éditeur de fichiers (pour modifier le code des templates par exemple) basé sur CodePress
  • documentation des API accessible directement depuis l’interface d’administration
  • et bien d’autres ….

En conclusion cette mise à jour de Wordpress s’annonce prometteuse et j’ai hate de pouvoir opérer la mise a jour de ma plateforme. En attendant demain, vous pouvez toujours tester la RC1 de Wordpress 2.8 en la téléchargeant sur le site officiel.

VN:F [1.0.8_357]
Rating: 0.0/5 (0 votes cast)

General, developpement , , ,

Désactiver le bip du haut parleur interne de votre PC

mai 12th, 2009

Même avec le son coupé sous Windows, votre PC peut générer des bips provenant du haut parleur interne. Ces bips peuvent être entendu par exemple lorsqu’une alerte Windows est générée (confirmation de suppression, plus rien à supprimer dans un champ de saisie, …). Ces bips sont générés par le service Windows beep.

Si comme moi vous en avez marre d’entendre ces bips, voici la marche à suivre.

Tapez dans une fenêtre MS-Dos (démarrer>exécuter>cmd) les commandes suivantes :

net stop beep
sc config beep start= disabled

Et voila, vous ne serez plus importuné par les bips :).

VN:F [1.0.8_357]
Rating: 5.0/5 (5 votes cast)

Non classé

Google met à disposition des développeurs une API Google Analytics

avril 23rd, 2009

Depuis le 21 Avril 2009, Google a mis à notre disposition une API Google Analytics (Cf. post sur le blog de google).

Cette API permet d’interroger le service Google Analytics afin de pouvoir extraire les données de consultations qui y sont stockées. Celle-ci est encore en version beta mais c’est une excellente nouvelle car ce type de fonctionnalité était attendue depuis très longtemps.

Google met à disposition 3 modes d’accès différents pour s’interfacer avec le service Analytics :

  • en requête HTTP
  • en JAVA
  • en Javascript

requête HTTP

C’est la méthode de base pour interroger le service Analytics. On accède aux données en interrogeant des urls fournies par google. Que ce soit via les API Java ou Javascript la méthode d’accès aux données reste la même : des appels en HTTP vers les urls google. Google fourni en réponse des appels un flux XML contenant les données qui correspondent à la requête (nombre de visiteurs sur un période, nombre de pages vues, ….).

C’est ce protocole qu’il faudra employer pour s’interfacer avec le service Analytics pour tout autre langage que Java et Javascript (ie: PHP, Python, …).

Vous trouverez plus d’informations à l’adresse : http://code.google.com/intl/fr/apis/analytics/docs/gdata/1.0/gdataProtocol.html

API Java

Google met à disposition des développeurs Java un ensemble de classes masquant la “tuyauterie” d’appel ainsi que le traitement du flux XML en retour.

Vous trouverez plus d’informations à l’adresse : http://code.google.com/intl/fr/apis/analytics/docs/gdata/1.0/gdataJava.html

API javascript

Comme pour le langage Java, Google met à disposition des développeurs Javascript une bibliothèque de fonctions  masquant la “tuyauterie” d’appel ainsi que le traitement du flux XML en retour.

Vous trouverez plus d’informations à l’adresse : http://code.google.com/intl/fr/apis/analytics/docs/gdata/1.0/gdataJavascript.html

Il faut noter que pour toutes les méthodes d’accès, il faut respecter les pré-requis suivants:

  • disposer d’un compte Google Analytics,
  • utiliser l’API d’authentification Google avant de pouvoir effectuer une requête (documentation sur l’api d’authentification ici)
  • Respecter la règle de quota mise en place par google : pas plus de 10 000 requêtes par 24h et moins de 100 requêtes toutes les 10 secondes. Au delà, vous le service Analytics retourne une erreur HTTP 503 (Service Unavailable)

Je vous reparle très rapidement de cette API dès que j’aurais eu le temps de jouer un peu avec ;)

VN:F [1.0.8_357]
Rating: 3.3/5 (3 votes cast)

developpement ,

Evolution de l’homme

avril 9th, 2009

Comme toujours ce billet parle d’informatique mais pas pour présenter un sujet technique ;).

Je veux seulement vous faire partager cette image présentant l’évolution de l’homme à travers les âges que je trouve vraiment géniale et bien trouvée.

evolution_homme.jpg

VN:F [1.0.8_357]
Rating: 3.0/5 (2 votes cast)

Non classé

Comment simuler une IP étrangère sur internet

mars 23rd, 2009

Je travaille actuellement sur un projet utilisant la géolicalisation (cf mon post extension ezPublish ezGeolocalization).

Or je suis rapidement tombé sur un problème : Comment tester mon module de géolocalisation depuis mon poste de développement ?

Ce qui se traduit aussi par comment simuler une IP étrangère pour faire croire à mon serveur web que je suis un internaute étranger.

La solution qui vient tout de suite à l’esprit est d’utiliser un proxy étranger. Mais comment mettre en oeuvre et configurer cela.

après quelques recherches sur internet pas vraiment fructeuses je me suis tourné vers les forums informatiques. Au final il y a peut de sujets sur la question et la plupart ne donnent pas de réponses concrètes. De plus les sujets dérivent assez rapidement. En effet la question génère rapidement de la suspicion de la part des intervenants des forums.

Heureusement un collègue (merci MaNu) ma présenté le site Unblock & Bypass : http://unblockbypass.com/.

Ce site vous permet de naviguer et d’afficher n’importe quel site dans son interface. Ce site étant basé en Allemagne vous apparaissez donc comme un internaute Allemand pour votre serveur.

Grâce à ce site j’ai pu tester mon module de géolocalisation.

Attention toutefois cette technique présente quelques limitations : votre site doit être accessible sur internet (cette solution ne fonctionne pas pour les développements en local), vous ne pouvez apparaitre que comme client Allemand ce qui est assez limité.

    A noter, qu’il existe d’autres solutions telles que des logiciels qui modifient vos paramètres réseau ou encore l’extension firefox Foxy Proxy qui permet de passer par un proxy étranger. Mais je n’ai pas testé ces solutions.

    VN:F [1.0.8_357]
    Rating: 3.2/5 (5 votes cast)

    developpement

    Extension ezPublish ezGeolocalization

    mars 20th, 2009

    Je viens de mettre à disposition dans les contributions du site d’ezPublish ma toute dernière extension : ezgeolocalization.

    Celle comme son nom l’indique vous permet de géolocaliser les internautes à partir de leur IP. La géolocalisation est de plus en plus utilisée notamment pour proposer des contenus aux internautes en fonction de leur position géographique (par exemple les salles de cinéma proches de chez moi) ou alors pour protéger des contenus (par exemple j’ai l’exclusivité sur les actualités de la formule 1 mais seuls les internautes de france métropolitaine peuvent y accéder).

    J’ai donc développé une extension ezPublish proposant une solution de géolocalisation. L’extension utilise les bases de données de géolocalisation gratuites des pays et des villes fournies par la société Maxmind. Elle utilise de plus l’API virtualearth de microsoft afin de vous permettre d’afficher sur une carte interactive et dans le navigateur la position de la ville ou du pays de l’internaute comme présenté sur la capture d’écran :

    ezgeolocalization.jpeg

    J’ai préféré utiliser virtualearth plutot que googlemap tout simplement car l’API de microsoft (virtualearth) contrairement à celle de google ne nécessite pas de génération de clé d’authentification pour l’utiliser ce qui était un objectif capital pour pouvoir diffuser mon extension.

    Fonctionnalités de l’extension

    1. pour le front, des opérateurs de templates et une classe métier PHP afin de pouvoir géolocaliser un internaute via son IP
    2. une interface backoffice permettant d’effectuer les mises à jours manuelle des bases de données ainsi qu’une interface permettant de géolicaliser une IP
    3. un cron de mise à jour automatique de la base de géolocalisation des pays (la base des villes est trop grosse pour cela) à partir du site de Maxmind

    Vous pouvez télécharger cette extension à l’adresse suivante : http://agdeveloppement.e3b.org/ezpublish/ezgeolocalization.zip (22Mo).

    Installation

    1. décompresser l’archive zip et la copier dans le repertoire extension d’ezPublish
    2. décompresser le fichier /sql/dump_ezgeo.zip et exécuter le script SQL afin de créer les tables de géolocalisation
    3. activer l’extension dans le backoffice
    4. vider le cache d’ezPublish

    Ce n’est pour l’instant que la version 1 de cette extension et je travaille encore dessus afin de lui apporter de nouvelles fonctionnalités.

    N’hésitez pas à me laisser vos commentaires ils me seront très utiles pour faire évoluer ce projet.

    VN:F [1.0.8_357]
    Rating: 3.2/5 (6 votes cast)

    developpement, ezPublish ,

    Introspection en Flex ou ActionScript, utilisation de l’API de reflection

    février 27th, 2009

    Il est parfois utile d’avoir à déterminer les caractéristiques d’un objet (méthodes, attributs) ou bien de vouloir instancier de manière dynamique un objet à partir d’un code générique. Pour cela on utilise un mécanisme appelé l’introspection ou Reflection.

    Tous les languages de haut niveau proposent ce type de fonctionnement et Actionscript ne déroge pas à la règle. Il y a cependant certaines subtilités à connaitre afin de faire fonctionner l’introspection en ActionScript.

    L’utilisation de l’introspection en ActionScript passe par l’utilisation des fonctions disponibles dans le package flash.utils. Nous allons étudier par la suite deux de ces fonctions en détails, celle permettant de déterminer les caractéristiques d’un objet et celle permettant de faire des instanciation dynamique.

    Déterminer dynamiquement les caractéristiques d’un objet

    Pour déterminer de manière dynamique les caractéristiques d’un objet, il faut utiliser la fonction describeType dont voici la signature :

    function describeType(value:*):XML

    Cette fonction prend en paramètre tout type d’objet (* signifiant type indéfini) et retourne un XML décrivant la classe.

    Instancier dynamiquement un objet

    Pour intancier dynamiquement un objet il faut utiliser la méthode getDefinitionByName dont voici la signature :

    getDefinitionByName(name:String):Object

    Cette fonction retourne une référence de la classe (un pointeur) définie par la chaine de caractère passée en paramètre (le paramètre name).

    Prenons tout de suite un exemple. Si on veut instancier de manière dynamique un objet Flex Button le code sera le suivant :

    import mx.controls.*;
    try{
    var myClass:Class = getDefinitionByClassName(”mx.controls.Button”);
    }catch(error:Error){
    trace(error.message);
    }
    var myObject:* = new myClass();

    Avec ce code on retrouve dans la variable myObject une instance de la classe Flex Button. Ce code compile parfaitement mais malheureusement à ne fonctionne pas à l’execution et générer l’erreur 1065 (variable n’est pas définie). En effet dans ce code, le moteur flash n’embarque à aucun moment la définition de la classe Button car il n’existe aucune variable faisant référence à la classe Button. Pour que le code fonctionne il faut donc créer une variable “bidon” faisant référence à la classe Button pour que le moteur flash l’embarque.
    Le code devient donc :

    import mx.controls.*;
    try{
    // hack pour permettre à l’introspection de fonctionner
    var buttonBidon:Button;
    var myClass:Class = getDefinitionByClassName(”mx.controls.Button”);
    }catch(error:Error){
    trace(error.message);
    }
    var myObject:* = new myClass();

    Avec l’ajout de cette variable le code fonctionne parfaitement et la variable myObject devient utilisable.

    En conclusion, l’introspection est parfaitement fonctionnelle et utilisable en ActionScript. Elle nécessite cependant quelques astuces indispensable.

    VN:F [1.0.8_357]
    Rating: 3.7/5 (3 votes cast)

    developpement, flex ,

    Afficher le plan d’execution d’une requête MySql

    février 23rd, 2009

    Mysql offre la possibilité d’afficher à l’utilisateur le plan d’exécution pour une requête données. Pour cela, il suffit de précéder la requête à analyser de l’instruction EXPLAIN.

    Ainsi utilisé, MySql affiche en résultat à l’utilisateur un tableau permettant de détailler comment l’optimiseur de requête va exécuter celle-ci. C’est ce qu’on appelle le plan d’exécution. Le tableau affiché en résultat peu contenir de 1 à plusieurs lignes.

    Dans le cas d’une requête simple, ce tableau contiendra une ligne.

    Dans le cas d’une requête contenant deux instructions SELECT associées avec la clause UNION, le tableau contiendra trois lignes :

    • une ligne pour chaque exécution de l’instruction SELECT,
    • une ligne pour le résultat de l’instruction UNION

    Le tableau affiché contient les colonnes suivantes :

    • id : L’identifiant de l’instruction SELECT. Correspond au numéro de l’instruction SELECT au sein de la requête. Est utilisé dans le cas où l’optimiseur va effectuer plusieurs instructions SELECT (comme dans l’utilisation de la clause UNION par exemple),
    • select_type : le type d’instruction SELECT que l’optimiseur va exécuter. Les différents types sont :
      1. SIMPLE : exécution d’une instruction SELECT simple (par de select imbriqué ou de clause UNION)
      2. PRIMARY : SELECT principal dans une requête avec des instructions select imbriquées
      3. UNION : seconde ou dernière instruction SELECT d’une requête contenant la clause UNION
      4. DEPENDANT UNION : seconde ou dernière instruction SELECT d’une requête contenant la clause UNION qui dépend d’une requête externe
      5. UNION RESULT : le résultat de la clause UNION (après exécution de l’ensemble des instructions SELECT)
      6. SUBQUERY : première instruction SELECT dans une requête contenant des select imbriqués
      7. DERIVED : résultat de l’instruction SELECT d’une requête imbriquée dans la clause FROM
    • table : le nom de la table contenant les lignes retournées par la clause SELECT de la requête
    • type : le type de jointure utilisé sur la table dans la requête
    • possible_keys : cette colonne indique les index que MySQL peut utiliser pour trouver les lignes utiles dans la tables
    • key : cette colonne indique l’index que MySQL a décidé d’utiliser. La valeur de cette colonne vaut NULL si MySQL n’a pas utilisé d’index.
    • key_len : cette colonne indique la longueur de l’index que MySQL a décidé d’utiliser.
    • ref : cette colonne affiche qu’elles colonnes de la table ou constantes ont été comparées à l’index afin de trouver les lignes utiles dans la table
    • rows : cette colonne affiche le nombre de lignes de la table que MySQL devra exéminer pour exécuter cette partie de la requête
    • extra : cette colonne affiche des informations supplémentaires sur la manière utilisée par MySQL pour résoudre la requête

    L’utilisation du plan d’exécution est indispensable afin de comprendre comment MySQL exécute une requête et ainsi optimiser les performances. Cette instruction vous permet notamment d’identifier si la requête utilise des index ou pas.

    VN:F [1.0.8_357]
    Rating: 4.5/5 (4 votes cast)

    MySQL, developpement ,

    A la découverte de la librairie as3corelib pour Actionscript 3

    février 23rd, 2009

    Je vous ai déjà parlé de cette librairie dans l’article “Utiliser le cryptage MD5 en Actionscript 3” mais j’ai voulu approfondir la présentation de cette bibliothèque et de ses fonctionnalités.

    Cette librairie téléchargeable à l’adresse http://code.google.com/p/as3corelib/downloads/list propose un ensemble de classes permettant d’étendre les fonctionnalités du langage actionscript 3 utilisé dans Flash, Flex et Adobe AIR.

    Vous trouverez dans la suite de cet article la présentation de chaque package.

    Package com.adobe.air.logging

    Ce package fournit une unique classe FileTarget permettant de stocker dans un fichier sur le système local de l’utilisateur les logs applicatifs. Attention cette classe n’est utilisable qu’avec Adobe AIR.

    Package com.adobe.crypto

    Ce package fournit un ensemble de classes qui implémentent les algorithmes de cryptage usuels tels que HMAC, MD5, SHA1, SHA224, SHA256

    Package com.adobe.fileformats.vcard

    Ce package fournit un ensemble de classes qui permettent d’implémenter le système de données vCard en actionscript 3.
    Les classes Address, Email, Phone et VCard permettent de représenter en objets actionscript 3 le système vCard.
    La classe VCardParser permet de construire un objet VCard à partir de la version sérialisée d’une carte de visite.

    Package com.adobe.images

    Ce package fournit un ensemble de classes qui permettent d’encoder une image en Jpeg ou PNG à partir d’une instance de l’objet actionscript BitmapData.

    Package com.adobe.net

    Ce package fournit un ensemble de classes qui étendent les fonctionnalités natives d’interaction réseau de l’actionscript 3.

    Package com.adobe.net.proxies

    Ce package fournit une unique classe RFC2817Socket qui permet d’ouvrir une connection via un socket en passant via un proxy HTTP en accord avec la recommandation RFC 2817.

    Packages com.adobe.protocols.dict, com.adobe.protocols.dict.events, com.adobe.protocols.dict.util

    Ces packages fournissent un ensemble de classe afin d’implémenter le protocole DICT du côté client. DICT est un protocole de communication utilisé pour ‘implémenter les fonctions de dictionnaire.
    Ce procotole a été créé par le “DICT Development Group”.

    Ces classes permettent donc de se connecter à un serveur DICT, de l’interroger et de traiter les résultats.

    Vous trouverez plus d’information sur http://www.dict.org.

    Package com.adobe.serialization.json

    Ce package fournit tout un ensemble de classes pour traiter les structures de données au format JSON. Il est ainsi possible d’encoder ou de décoder des chaines au format JSON et d’extraire les données stockées dans ces chaines.

    Package com.adobe.utils

    Ce package fournit un ensemble de classes qui présentent des méthodes statiques pour manipuler les tableaux, les dates, les nombres entiers, les chaines de caractères, les documents XML, …
    La classe ArrayUtil par exemple permet de comparer deux tableaux actionscript (méthode arraysAreEqual), ou bien encore de déterminer si un tableau contient une certaine valeur (méthode arrayContainsValue).

    Voila un peu plus en détails cette librairie que je trouve presque indispensable pour les développeurs actionscript.

    VN:F [1.0.8_357]
    Rating: 5.0/5 (1 vote cast)

    flex , ,