SyntaxHighliter: Coloration syntaxique de code dans vos pages web

J’ai récemment découvert un outil de coloration syntaxique de code dans vos pages web (je l’ai d’ailleurs implémenté sur ce blog… ;-) ) appelé SyntaxHighlighter.

Il est vraiment très simple à mettre en place et je n’ai pas rencontré de problème lors de son installation. La page de démonstration présente le résultat sur du code HTML, la page décrivant les brushes montre la mise en forme proposée pour plus de 20 languages.
Je vous invite vivement à découvrir les possibilités de ce petit outil qui permet vraiment de rendre lisible facilement un bout de code…

Voici un exemple de code pour l’implémenter:

<script src="shCore.js" type="text/javascript"></script>
<script src="shBrushCss.js" type="text/javascript"></script>
<link href="shCore.css" rel="stylesheet" type="text/css">
<link href="shThemeDefault.css" rel="stylesheet" type="text/css">
...
<pre class="brush: xml;">
  <strong>Hello World</strong>
</pre>

Le site officiel de cette librairie: http://alexgorbatchev.com/wiki/SyntaxHighlighter

Statistiques gratuites sur l’utilisation des navigateurs

Le société Net Applications met à disposition des internautes des statistiques intéressantes sur l’utilisation des navigateurs. Elles sont mises à jour mensuellement et sont très complètes (Système d’exploitations, versions des navigateurs, pourcentage d’utilisation …).

Ces données se trouvent à l’adresse http://www.netmarketshare.com/ elles peuvent servir à mieux orienter les développements en fonction des besoins clients et de la cible visée.

Ce service gratuit me parait assez fiable, cependant faite moi savoir si vous avez d’autres sources de données du même type ou des remarques sur la fiabilité de celle-ci!

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/

MooTools Forge: Bibliothèque de PlugIns

La forge MooTools a été officiellement dévoilée cette semaine. Jusqu’à maintenant les utilisateur de MooTools devait faire face au web pour trouver des développement ou des bibliothèques déjà écrites à utiliser.

Avec l’ouverture de ce site, tous ces plugins vont être centralisés ce qui rendra la recherche plus facile et l’exhaustivité des résultats plus précise… De plus une charte de développement a été écrite pour que les scripts soient réalisés selon les mêmes règles. Les contenus seront donc tous valides et utilisable.

Cette forge va aussi être basée sur un système de partage car tous les contenus sont hébergés sur un système de contrôle de version, Git. Ce système permet à tout internaute de proposer un PlugIn simplement et de le rendre disponible aux yeux de tous après un simple commit.
Un système de démonstration a été implémenté ce qui permet de voir directement le rendu.

Je vous invite vivement à découvrir les premiers Diaporama déposés sur le site, certains sont saisissants.

Le site est disponible à l’adresse: http://mootools.net/forge/

Créer des Sprites CSS… Une idée pour alléger le chargement de vos pages web!

A travers de récentes recherches sur les possibilités de tester et d’améliorer les temps de chargement de mes pages web, j’ai découvert une présentation intéressante sur la création de Sprite CSS.

En effet cette technique consiste à regrouper plusieurs images d’interfaces à l’intérieur d’un Sprite comme présenté dans l’exemple ci-dessous réalisé par Google :

Exemple de sprite utilisé par Google sur son site

Il suffit ensuite d’utiliser les propriétés CSS de « background-img » et « background-position » pour pouvoir afficher la partie souhaité de l’image.

Les images chargées à travers CSS ne sont chargés qu’une fois alors que les images insérées en HTML sont chargées autant de fois que nécessaire. L’utilisation de Sprite permet donc de réduire considérablement le temps de chargement des interfaces car c’est ici leur principale utilité.

Vous trouverez l’article à l’adresse http://cssglobe.developpez.com/tutoriels/css/ameliorer-temps-chargement-images/#LI.

Il permet de bien se rappeler comment son calculées les coordonnées de position des images de fond CSS et sert de guide pour ne pas rater une étape dans la mise en place des Sprites.

Calendrier de l’avant web design et developpement

Noël approche et les enfants ouvrent depuis 13 jours maintenant les portes de leurs calendriers de l’avent… Jaloux de ces petits cadeaux avant l’heure, j’ai cherché un calendrier de l’avant spécifiquement réalisé pour moi!

J’en ai trouvé un, écrit pour une communauté d’acteurs internationaux du web design et développement web. Tous les jours un nouvel outil ou une nouvelle technique sont présentés. C’est maintenant la cinquième année durant laquelle ce calendrier est créé. Les archives sont aussi consultables sur le site!

Des articles intéressant écrit par des professionnels sérieux et conscient des problématique du web aujourd’hui. Je vous laisse le découvrir à l’adresse http://24ways.org/