Archives de l'auteur

Bit.ly: Une API simple pour raccourcir les URLs

J’utilise Twitter depuis maintenant quelques temps et j’ai vu à travers ce service l’utilité d’accéder à un outil de simplification d’URL.
Lorsque l’on écrit des commentaires, il est vraiment intéressant de ne pas occuper l’espace avec des liens trop longs mais plutôt avec une explication concrète autour…

Bit.ly est beaucoup utilisé sur Twitter, j’ai donc cherché les différentes possibilité offertes par ce WebService. A travers un compte utilisateur gratuit créé sur le site, vous avez ensuite accès à une API (Interface de Programmation) de type REST (Representational State Transfer).
Le projet associé à ce service est hébergé sur Google Code et disponible à l’URL: http://code.google.com/p/bitly-api/

Ce type d’architecture est très répandu sur le web et utilisé pour diverses applications (Recherche, Récupération d’informations comme la météo, …). Elle permet d’apporter des services supplémentaires sur un site qui sont de plus en plus demandés.

Pour Bit.ly le fonctionnement est le suivant:

  • Pour chaque requête, une connexion à votre compte utilisateur gratuit est requis avec login et Api Key
  • Différents formats de communications sont possibles (JSon, XML)
  • Des librairies implémentant la communication avec ce service sont disponibles dans plusieurs languages (PHP, JavaScript, ActionScript, …)
  • Les 5 commandes possibles sont décrites sur la page du projet sur Google Code

Pour chaque lien créé à travers ce service, des statistiques de clic sont générées ce qui permet d’assurer un suivi assez précis de ses liens.

Si vous devez implémenter un système de commentaire sur votre site, j’espère que cette présentation vous aidera à l’améliorer. D’autres services du même type existe comme Goo.gl mais l’utilisation très répandu et la simplicité m’ont fait choisir Bit.ly.

PHPUnit et le développement piloté par les tests

J’ai récemment trouvé deux articles en épurant mes différents abonnements RSS de cette fin d’année qui présentent l’utilisation de PHPUnit.

Cet outil permet de mettre en place des tests unitaires pour PHP de la même façon que JUnit pour Java. Ces tests, une fois développés permettent de garantir le fonctionnement de tout le code après chaque modification. En effet, ils sont écrits suite aux spécifications fonctionnelles et technique du produit et décrivent précisément tous les comportements attendus des objets PHP. Ils sont ensuite exécutés à chaque commit sur le système de versioning ou part un système d’intégration continu (Cruise Control, Trac Bitten, Hudson, …)

Ce genre de technique ne peut être mis en place que lorsque le développement est réalisé dans un cadre strict de génie logiciel (Design Patterns, Single Responsability, Interface Segregation, …). Julien Pauli, contributeur sur le site Développez.com a récemment écrit deux articles sur le sujet.

Le premier présente le concept de tests unitaires et son implémentation à travers PHPUnit, il est disponible à l’adresse http://julien-pauli.developpez.com/tutoriels/php/phpunit-tdd/. Il est très complet et m’a permis de bien appréhender l’utilité de ces tests pour la fiabilisation des applications web.

Le second est séparé en deux parties. Une introduction bien détaillée, expliquant les principes élémentaires du développement objet et du principe SOLID (ca ne fait jamais de mal de se refaire une petite lecture dessus). La deuxième partie est un exemple concret de mise en place de scripts de tests PHPUnit sur la fonctionnalité panier d’un site marchand. Cet article est disponible à l’adresse : http://julien-pauli.developpez.com/tutoriels/php/phpunit-avance/

Si comme moi vous êtes en quête d’amélioration de vos développements (utilisation du debugger xdebug, mise en place de tests unitaires, …), je vous conseille vivement la lecture de ces deux articles!

XSLTProcessor: Utiliser des fonctions PHP pour des traitements avancés

J’ai eu souvent l’occasion d’utiliser XSL pour gérer des templates d’affichages.
En effet j’ai eu beaucoup l’habitude de travailler avec des contenus XML pour leur structure simple à exploiter. Ce type de contenu permet, à mon sens, une séparation plus simple entre traitement et affichage qu’avec une base de données.

Cependant les feuilles de style XSL sont assez limitées dans les traitements car même si elles permettent des boucles et des calculs simples, toutes les informations utiles doivent être stockées dans le XML pour être exploitées directement par le XSL.
Cette exhaustivité d’information est assez rare et plus particulièrement dans l’affichage des médias. XSL ne permet pas, contrairement à PHP, de tester l’existence d’un fichier, de redimensionner une image ou de lire des meta-données associées à un fichier.

Pour réaliser ces traitements plus avancés, le processeur XSLT associé à PHP (XSLTProcessor inclut dans le module php_xsl) permet l’appel de fonction PHP à travers XSL.

Pour cela il faut créer une feuille de style XSL en ajoutant l’espace de nom XML PHP dans l’en-tête:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl" >
...
</xsl:stylesheet >

Pour activer l’utilisation de ce nouvel espace de nom, il faut lors de la construction de l’objet XSLTProcessor appelé l’instruction suivante:

$oXSL = new XSLTProcessor( DOMDocument::load( "chemin-vers-mon-fichier" ) );
$oXSL->registerPHPFunctions();

Afin d’être utilisées dans la feuille XSL, les fonctions PHP doivent être déclarées en amont de la construction de l’objet XSLTProcessor. Voici un exemple d’appel à une fonction écrite en procédural:

function AfficherTexte( $sText )
{
   return $sText;
}
...
<xsl:value-of select="php:function('AfficherTexte', $myText)" />

Voici un autre exemple d’utilisation avec une fonction statique:

class Text
{
   public static function Afficher( $sText )
   {
      return $sText;
   }
}
...
<xsl:value-of select="php:function('Text::Afficher', $myText)" />

Un composant pour compresser les fichiers JS et CSS

Etant toujours en quête de l’allègement des pages web, j’ai récemment trouvé un outil permettant de compresser les codes JavaScript et CSS. Cette librairie appelée « Minify » est hébergée sur Google Code par Steve Clay et Ryan Grove et est basé sur JSMin, programme développé par Douglas Crockford en C.

Plusieurs classes PHP permettent de compresser les fichiers JS, ou les fichiers CSS assez simplement.
Pour ma part, je vais coupler l’utilisation de ce code avec Phing pour alléger le poids des fichiers à transférer lors de l’affichage des pages web que j’aurais créé. Dans un futur post, je présenterais différents processus Phing dont celui-ci…

Plusieurs exemples d’utilisation sont disponibles pour une meilleure compression en fonction de plusieurs cas concret. Ils sont décrit à l’adresse http://code.google.com/p/minify/wiki/CookBook.

Vous trouverez les sources (sous licence BSD) à l’adresse suivante: http://code.google.com/p/minify/

TinySlider: Un diaporama JavaScript dégradable sans FrameWork

J’ai récemment découvert ce script permettant d’implémenter un diaporama multi contenus (texte, images, …) sans FrameWork.

Sa légéreté (1,5Ko) en fait un outil intéressant pour être intégré rapidement sans contraintes. Il est paramétrable (navigation précédent / suivant, pagination, défilement automatique, …) et peu être retravaillé graphiquement très facilement.

En dehors de ces avantages, TinySlider permet surtout un affichage propre du contenu quand JavaScript est désactivé (voir la démonstration). L’auteur a apporté un soin particulier à respecter cette compatibilité qui est souvent trop oublié par les développeurs JavaScript. Les moteurs de recherche ne voient pas la page avec JavaScript, il est donc important de leur afficher un contenu approprié.

Vous pourrez trouver une présentation du script à l’adresse: http://www.leigeber.com/2009/12/slideshow-script/