Christophe Le Bot

  • Navigation rapide
Pratique de la conception numérique

Derniers commentaires

  • Une excellente thèse sur Simile Exhibit
    • Olivier Rossel | Bonjour. Malgre les annees, avez vous toujours en memoire vos usages d’Exhibit? Je serais ravi d’en discuter avec vous. Cordialement, Olivier Rossel.
  • Utiliser le planificateur de tâches OVH (crontab) avec PHP
    • Max | Bonjour, comme faire pour appeler une version de PHP qui n’est plus proposée par défaut dans le manager ? J’essaie de lancer un cron avec php 5.3 mais le log affiche No such file...
    • Christophe | @absolument Merci pour ces précisions. Je n’ai pas mis en place de tâches cron récemment, mais j’ai reçu quelques notifications étranges d’OVH il y a quelques...
  • Récupérer le dernier auto-incrément MySQL avec PHP
    • Thy | Sujet toujours *très* utile en 2015 ! Je réponds à Serge tsimba qui récupère un « Resource id ». (Et à tous ceux qui ont le même souci mais qui ne le disent pas) :)...
  • Régler l’heure de serveurs virtuels sous Debian
    • Ares_XL | Il semble que sur Débian la commande « tzconfig &ra quo; soit dépréciée et remplacée par : « dpkg-reconfigure tzdata » elle donne accès à une...
 

Archives
mai 2007

Zend Framework dans les starting-blocks

Logo Zend Framework

Le Zend Framework passe en RC1 (release candidate 1). C’est donc la dernière étape avant sa sortie officielle prévue cet été (peut-être fin juin, disent certains).

Son arrivée dans l’arène bien encombrée des frameworks PHP a déclenché des débats passionnés, avec des clans résolument contre (« ce n’est pas un framework ! ») et des clans qui ne jurent que par lui (« il est soutenu par Zend et IBM autour du langage le plus populaire du web ! »). Je ne parle même pas des allergiques au PHP qui trouvent stupide de construire un framework autour d’un langage aussi immature…

Bref, chacun se fera son avis. Pour ma part, je trouve le projet très pertinent.

C’est vrai que Zend Framework n’est pas aussi complet que Symfony (un très beau projet, je vous conseille de l’étudier !). On peut effectivement le voir comme une bibliothèque d’objets respectant les principes classiques de l’architecture MVC (Modèle Vue Contrôleur). Dans ce cas, je pourrais aussi bien dire que prototype n’est pas un framework Javascript mais une collection de classes. C’est étrange, mais personne n’y songe…

On peut aussi se demander pourquoi ce framework n’est pas intégré directement dans PHP, suivi d’un bon ménage pour éliminer une myriade de fonctions inutiles. En cela, PHP est plus proche de Perl (36 façons de faire une chose) que de Python (1 seule façon de faire un chose). Mais il est difficile de mettre une croix sur ce qui a fait le succès de PHP : sa facilité de prise en main et son approche procédurale. PHP atteindra difficilement la beauté théorique d’une usine à gaz Java ou l’efficacité pragmatique d’un projet Ruby, mais il est partout.

Donc, considérons que le Zend Framework est un framework PHP léger. Quels sont ses avantages ? Pour moi, ils dépassent clairement le cadre purement technique, ce qui en fait déjà une solution incontournable :

  • Il a été créé à l’initiative de Zend, the PHP company (comme elle le dit si bien), pour des applications professionnelles lourdes.
  • Il est soutenu par des acteurs puissants (IBM en tête) qui garantissent sa pérennité.
  • Il utilise le langage le plus répandu sur les serveurs web.
  • Il repose sur les avancées majeures en programmation objet de la version 5 de PHP (il était temps…).
  • Il fonctionne par simple inclusion, donc sur toutes les offres d’hébergement existantes (serveurs mutualisés, notamment).
  • Il donne enfin un cadre de travail aux développeurs PHP (réputés comme les cancres de la programmation).
  • Comme tout framework, il réduit le temps de développement par la mise en facteur des bonnes pratiques et une meilleure définition de l’architecture.
  • Il offre une documentation complète, à jour et claire, un atout essentiel pour son adoption en entreprise.
  • Il bénéficie de l’élan autour d’Eclipse, grâce au développement parallèle de PDT (PHP Development Tools).

Cette orientation très professionnelle, tout en gardant la simplicité de PHP grâce à un framework léger, devrait décider un bon nombre de développeurs et d’architectes à considérer ce choix.

L’avenir me dira si j’ai vu juste…

Le côté obscur d’Internet – 1. L’erreur de Neuf Cegetel

Face à l’explosion des menaces en tous genres sur Internet (en augmentation de 1300% en 2006, les premiers mois de 2007 sont pires encore !), j’entame une série d’articles pour tenter d’y voir clair. Ce sera ma (petite) contribution pour rendre l’utilisateur mieux informé.

Pour commencer, rien ne vaut un exemple très démonstratif. Nous nous croyons tous assez malins pour éviter les pièges, mais il est extrêmement simple de tomber dans le panneau, surtout si nous sommes en confiance.

L’erreur de Neuf Cegetel

Neuf Cegetel propose à ses clients un espace pour gérer leur compte. Ce service est accessible à l’adresse espaceclient.neuf.fr, indiquée au dos des factures.

Jusque-là, rien de plus classique. Sauf que sur certaines factures, l’adresse indiquée comporte une erreur : à la place de espaceclient.neuf.fr, on lit espaceclientneuf.fr. Subtile différence que des petits malins ont exploitée !

L’exploitation de la faille

Le client qui entre l’adresse indiquée sur la facture, se sent parfaitement en confiance. Pourtant, le site qu’il voit n’appartient pas à Neuf Cegetel.

Espace client Neuf (le vrai)
Le vrai site.
Espace client Neuf (le faux)
Le faux site.

Vous allez me dire que les deux sites ne se ressemblent pas vraiment et qu’il est difficile de se laisser tromper. Oui, pour les clients qui utilisent souvent ce service, c’est évident. Mais combien d’autres ne vont le consulter qu’en cas de problème ? Pour ceux-là, impossible de repérer l’arnaque au premier coup d’oeil ! D’autant que les libellés de certains liens sont en parfaite adéquation : Mon compte, Ma facture, Service client, Assistance

Après avoir cliqué sur deux ou trois liens, l’utilisateur se rendra vite compte qu’il y a anguille sous roche et passera par le site officiel de Neuf Cegetel pour retrouver l’Espace client.

Ce petit jeu de cache-cache aurait pu être tout autre. Imaginez un faux site parfaitement identique au vrai. Vous souhaitez consulter votre facture, vous entrez votre identifiant et votre mot de passe… Scénario catastrophe !

Un détournement (presque) légal

Cependant, cet exemple n’est pas un cas de phishing. Ici, tout est légal (si ce n’est l’abus de confiance que Neuf Cegetel pourrait porter devant les tribunaux). N’importe qui peut déposer et exploiter le domaine espaceclientneuf.fr. Et donc profiter des erreurs de frappe.

Mais où est le profit ? Simplement dans les revenus tirés des liens sponsorisés, placés dans les pages du faux site. Avec quelques millions de clients Neuf Cegetel, les revenus peuvent s’avérer très juteux… sans rien faire d’autre qu’acheter un domaine.

Nous entrons dans l’univers très fructueux des domainers qui sera le sujet de mon prochain article…

Journée IHM à Toulouse le 18 juin 2007

Midi-Pyrénées Innovation organise, le 18 juin 2007 à la Cité de l’Espace, la Journée Technologique Interface Homme-Machine.

L’objectif est de sensibiliser les décideurs aux atouts de la conception d’interfaces homme-machine dans le développement de projets innovants. Au programme, un état des lieux du métier et de ses enjeux, des témoignages d’industriels et de chercheurs, des démonstrations d’applications interactives, sans oublier l’aspect formation et l’avenir des IHM.

Ce sera surtout l’occasion de découvrir le potentiel de la région Midi-Pyrénées en matière d’ergonomie et de conception d’IHM, avec des intervenants tels que :

Rendez-vous donc à la Cité de l’Espace le 18 juin. J’y serai, bien sûr…

Pour en savoir plus et s’inscrire : site web Midi-Pyrénées Innovation

“Web 2.0″, Ajax, interfaces riches et prospective

J’ai toujours détesté le terme « web 2.0 ». Il ne signifie rien. Il englobe ce que chacun veut y mettre et ne sert qu’à convaincre les clients crédules de la nécessité d’une refonte de leurs services en ligne.

Les acteurs du web n’ont pas attendu la vague du « web 2.0 » (à quand le ressac ?) pour créer des communautés ou des applications en ligne (on remarquera au passage que les web applications sont devenues des SaaS, softwares as a service, c’est plus « tendance »).

Et que dire du contenu généré par les utilisateurs (le fameux User Generated Content si cher au « web 2.0 ») ? N’est-ce pas la fonction première du web que de permettre la diffusion rapide, massive et économique de contenu ? Depuis 1990 (et la première page web), les utilisateurs mettent en ligne du contenu.

J’ai eu la chance de concevoir des services « à la sauce web 2.0 » dès 1998 : sites communautaires, applications en ligne, outils de travail collaboratif… Et je n’étais pas le seul ! Mais il faut bien avouer que deux choses ont freiné leur expansion : les connexions bas débit et l’inviolabilité de la sphère privée.

Tout le monde peut comprendre qu’avec un modem RTC qui charge une page web en 55 secondes, il est impossible d’avoir des services tels que YouTube. Quant à la sphère privée, il a fallu une bonne dizaine d’années pour que l’internaute s’habitue à publier (donc rendre public) quelques bribes de sa vie personnelle (avec les excès que l’on connait aujourd’hui…).

Finalement, pour moi, le « web 2.0 », c’est :

  • un coup marketing de maître !
  • la généralisation du haut débit
  • l’ouverture de la sphère privée

C’est tout. Enfin presque… J’ai oublié le seul point réellement nouveau dans le « web 2.0 » : Ajax (Asynchronous JavaScript and XML), rendu possible grâce à l’implémentation de XMLHttpRequest dans Internet Explorer (merci Microsoft !).

Ajax change tout, à commencer par la notion de page web. Comme le fait très souvent remarquer Frédéric Cavazza, peut-on encore utiliser le terme de page web, alors que le contenu et la forme évoluent par petites touches au sein d’une seule page ? Netvibes en est un bon exemple.

Nous en sommes à l’ère des single page applications (SPA). Ses effets révolutionnent notre manière de voir et de concevoir le web. Les ergonomes sont obligés de revoir toutes leurs préconisations. Ajax change nos méthodes de production, les éditeurs de code HTML (comme Dreamweaver) ont disparu et font place à des environnements de développement lourd. Ajax bouscule les habitudes chèrement acquises des internautes (on ne touche plus au bouton « Page précédente » du navigateur pourtant si pratique !). Ajax perturbe l’économie du web en faussant la mesure d’audience.

Ajax finira peut-être par tuer le web, en imitant toujours mieux le comportement des applications classiques. Il rendra inutile le navigateur web et favorisera l’émergence des RIA (Rich Internet Applications), puis des RDA (Rich Desktop Applications). Finalement, Ajax entraînera un retour aux sources de l’informatique grand public : un système d’exploitation, des applications locales, des interfaces riches.

A la différence que tous leurs éléments intrinsèques seront connectés à internet et dépendront de lui : WebOS, RDA, Widgets, SaaS. Le web sera, quelques temps encore, un protocole d’échanges de données entre machines, avant de disparaître…

Le SIREN devient obligatoire sur les sites web

Depuis le 9 mai 2007, les entreprises françaises ont pour obligation de préciser leur numéro SIREN dans les mentions légales de leurs sites web (décret n° 2007-750 du 9 mai 2007).

Pour rappel, certaines informations étaient déjà obligatoires (dénomination sociale, numéro RCS et ville d’inscription, coordonnées du responsable de la publication, coordonnées de l’hébergeur, numéro de TVA intracommunautaire pour les sites e-commerce, etc.).

Comparatif de 4 CMS PHP sur 190 critères

Stéphane Bordage nous propose une analyse complète de 4 solutions de gestion de contenu open source fonctionnant avec PHP :

A chacun de faire sa synthèse en fonction de ses besoins. Un très bon support de décision qui me fait découvrir encore une fois les vertus d’un Drupal que je sous-estimais.

Mise à jour : le dossier complet est disponible dans le numéro 720 du magazine Décision Informatique, paru le 21 mai 2007.

Mise à jour : suite aux réactions (étonnamment violentes) de la communauté Spip à propos des résultats, Stéphane Bordage a pris la sage décision de supprimer Spip de ce comparatif.

Encyclopedia of Life, un projet ambitieux et prometteur

Encyclopedia of Life

Encore une encyclopédie ! Encore un projet qui exploite la tendance « ecolo-citoyenne » ! Encore une référence en matière de préservation de la biodiversité et de la protection des espèces ! Et pourtant, l’Encyclopedia of Life (EOL) a toutes les chances d’atteindre ces objectifs.

A quoi sert EOL ? A répertorier les 1,8 million d’espèces vivantes, avec un soin du détail digne d’un maniaque. L’interface est particulièrement réussie, non seulement sur la forme mais surtout dans sa navigation intuitive et efficace.

Les fonctions sont aussi nombreuses qu’utiles :

  • Interface et contenu en plusieurs langues
  • Filtres et classification à facettes
  • Moteur de recherche
  • Cladogramme
  • Photographies
  • Vidéos
  • Graphiques
  • Cartes
  • Flux RSS
  • Discussion avec les experts
  • Articles scientifiques
  • Experts de référence
  • etc.

L’interface offre des outils de personnalisation, notamment un curseur pour définir son niveau d’expertise et ainsi adapter le contenu au lecteur.

EOL - Fiche de l’ours polaire
Un exemple de fiche EOL, ici celle de l’ours polaire.

Offrir autant d’informations (oui, j’ai oublié de dire que l’accès est gratuit !) demande des moyens conséquents. EOL se donne dix ans pour y parvenir, avec des fonds privés, la participation d’institutions scientifiques et chercheurs du monde entier et une équipe actuelle de 30 personnes.

Seule ombre au tableau : EOL n’est pas encore en ligne… et ne le sera sans doute pas avant fin 2008, le temps de développer l’interface et le contenu essentiel.

Source : L’Atelier

Utiliser les catégories pour gérer les tags sous WordPress

Logo WordPress

Incroyable mais vrai : WordPress ne gère pas les tags ! Ces petites étiquettes qui donnent du sens au contenu généré par les utilisateurs, sont dans tous les services estampillés « Web 2.0″… sauf dans WordPress. Les utilisateurs râlent depuis longtemps : c’est qu’ils les demandent, ces tags ! Et avec insistance ! Ils devaient être intégrés dans la prochaine version (la v.2.2 à paraître ces jours-ci) et ne le seront que dans la version 2.3. Les plus impatients ont déjà migré sur d’autres plates-formes…

Mais au fait, a-t-on vraiment besoin des tags dans WordPress ?

Non, car ce moteur de blog propose les catégories pour les gérer. Certains vont tout de suite me dire qu’il y a une grosse différence entre les deux et qu’il faut donc les deux. C’est vrai, il y a une telle différence que j’utilise les deux dans ce blog… en m’appuyant seulement sur les catégories.

Gérer les catégories comme un arbre sémantique

L’astuce consiste à utiliser la hiérarchie des catégories comme un arbre sémantique. Ensuite, il suffit de placer certains de ses noeuds dans l’interface. Pour illustrer le principe, je vais prendre l’exemple de ce blog qui utilise à la fois des thèmes et des tags.

Etape 1 : créer les racines

Pour commencer, je crée les catégories qui me serviront de racines :

  • Thèmes
    Pour gérer une classification hiérarchique.
  • Mots-clés
    Pour gérer les tags.

WordPress m’indique les identifiants des deux racines : 3 pour Thèmes et 4 pour Mot-clés. Ces identifiants sont importants pour placer les racines dans l’interface. Leur valeur dépend bien sûr de votre propre installation de WordPress. Mais n’allons pas trop vite…

Etape 2 : créer les thèmes

Mes thèmes sont hiérarchiques. Je crée donc les thèmes principaux (Concevoir, Développer, Exploiter, Imaginer, Savoir) en les plaçant sous la catégorie Thèmes. Puis, viennent les thèmes secondaires placés chacun sous un thème principal. Rien de très compliqué, c’est du WordPress basique !

Thèmes sous WordPress
La liste de mes thèmes dans l’interface de WordPress.

Etape 3 : afficher les thèmes

Maintenant, il faut mettre les mains dans le cambouis. Je vais modifier le thème WordPress de mon blog pour afficher mes thèmes dans la partie latérale de mon blog. Par défaut, WordPress gère la navigation par catégories dans un fichier nommé sidebar.php. J’y ajoute le code suivant :

<ul>
<?php
wp_list_categories('title_li=&orderby=name&show_count=0&use_desc_for_title=1&child_of=3');
?>
</ul>

wp_list_categories est une fonction standard de WordPress pour afficher la liste des catégories. Grâce à ses options, je vais pouvoir placer la racine de mon arbre sémantique :

  • title_li=
    Indique que je ne souhaite pas afficher de titre avant la liste.
  • orderby=name
    Ordonne les catégories par nom.
  • use_desc_for_title=1
    Affiche les catégories sous leur catégorie mère.
  • child_of=3
    Limite la liste aux catégories appartenant à la catégorie 3 (donc Thèmes).

Etape 4 : créer les mots-clés

Les mots-clés sont créés sur le même principe. Je les saisie donc dans le gestionnaire de catégories de WordPress, sous la catégorie Mots-clés.

Mots-clés sous WordPress
La liste de mes mots-clés dans l’interface de WordPress.

Etape 5 : afficher les mots-clés… dans un joli tag cloud

Pour afficher les mots-clés, j’aurais pu me simplifier la vie en reprenant le même principe que pour les thèmes. Dans ce cas, le code suivant suffit :

<ul>
<?php
wp_list_categories('title_li=&orderby=name&show_count=0&hierarchical=0&child_of=4');
?>
</ul>

Mais présenter les mots-clés sous forme d’un tag cloud est quand-même plus « tendance ». Un tag cloud met en valeur les mots-clés (tags) les plus utilisés. Pour cela, inutile de réinventer la roue, j’utilise une extension WordPress très simple et efficace : Category Tagging.

Une fois installée et activée, je n’ai plus qu’à générer le tag cloud dans l’interface :

<ul>
<?php
// Affichage du tag cloud (via plugin Category Tagging)
if (function_exists ('cattag_tagcloud') ) {
echo cattag_tagcloud(1,5,1,'NAME_ASC','1,2,3,4,5,6,7,8,9','','<li><a rel="tag" href="%link%" title="%description%" class="tag-cloud-%size%">%title%</a></li>','Aucun mot-clé trouvé');
}
// Affichage simple
else {
wp_list_categories('title_li=&orderby=name&show_count=0&hierarchical=0&child_of=4');
} ?>
</ul>

A chacun de spécifier ses paramètres (voir le détail sur le site de Category Tagging). Le plus important est sans doute le 5e paramètre qui exclut des catégories. Je l’utilise ici pour ne pas afficher les catégories racines (Thèmes et Mots-clés), ainsi que les thèmes de premier niveau qui sont déjà dans l’interface.

Reste à définir les styles CSS pour afficher les mots-clés en fonction de leur utilisation. Pour moi, c’est le code suivant :

a.tag-cloud-1 {
	font-size:1em;
	color:#9B907F;
}
a.tag-cloud-2 {
	font-size:1.2em;
	color:#7C6E59;
}
a.tag-cloud-3 {
	font-size:1.4em;
	color:#7C6E59;
}
a.tag-cloud-4 {
	font-size:1.6em;
	color:#666;
}
a.tag-cloud-5 {
	font-size:1.8em;
	color:#444;
}

Inconvénients

Comme toute astuce, la solution n’est pas idéale. Il y a aussi des inconvénients :

  • L’ajout d’un tag n’est pas possible pendant la saisie d’un article. En effet, WordPress propose l’ajout de catégorie pendant la rédaction, mais il semble impossible d’ajouter une sous-catégorie. Si quelqu’un connait le truc, je suis preneur !
  • Il faut modifier le code du thème WordPress pour gérer la liste des catégories à ne pas afficher dans le tag cloud. C’est le cas quand j’ajoute ou supprime un thème principal… ce qui est très rare.

Avantages

La solution n’est peut-être pas idéale, mais c’est un bon compromis :

  • On se passe d’un gestionnaire de tags. WordPress s’en trouve plus léger et plus stable.
  • Au niveau des articles, je peux afficher les thèmes et les mots-clés dans la même liste pour proposer un choix plus large aux lecteurs.
  • Si un mot-clé prend de l’importance, je peux le placer dans les thèmes sans toucher aux articles, ni aux outils de navigation. Pour faire la même chose avec un système de tags indépendant, il faut modifier chaque article…

Mise à jour. Thomas VdB voit deux autres avantages essentiels à utiliser les catégories comme arbre sémantique :

  • Les doublons disparaissent (comme Sémantique, sémantique et semantique qui sont habituellement considérés comme trois tags différents).
  • Le référencement est optimisé car l’adresse d’une page d’un tag décrit son contenu et facilite son indexation (par exemple, /category/mots-cles/web-semantique/).

Rue89 a choisi Drupal et explique pourquoi

Rue89

Dimanche 6 mai 2007, ce sera la fin du suspens : nous saurons tous à quoi ressemble… Rue89 ! Oui, c’est la date qu’a choisi cette équipe de journalistes passionnés et téméraires pour ouvrir un site d’information d’un nouveau genre. Rendez-vous donc dimanche à 18h (pas à 20h !).

Pour en diffuser le contenu, Rue89 a sélectionné Drupal, une plate-forme de gestion de contenu libre. Ce choix est argumenté dans un article du blog Rue89 :

Parce que nous avions pris la décision de démarrer le site au plus vite et de le faire évoluer au fur et à mesure des suggestions et critiques des utilisateurs, nous avons cherché une solution flexible et prête à l’emploi.

[…]

Nous avons opté pour la plateforme LAMP (Linux, Apache, MySQL, PHP) parce qu’elle est très largement répandue sur Internet, maîtrisée par de nombreux développeurs et qu’elle sert de base technologique à plusieurs outils de gestion de contenu Open Source performants et stables.

[…]

SPIP, bien que largement déployé, nous a paru dépassé et ne répondant pas à nos attentes en terme de fonctionnalités.

[…]

En matière de performance, Drupal apporte des résultats bien plus intéressants [que Joomla] à périmètre matériel constant.

Rue89 cite par ailleurs quelques études comparatives qui permettent d’y voir plus clair :

Les commentaires des lecteurs valent également de s’y attarder :

eZ Publish est bien une référence, mais une référence qui ne monte pas ! La faute a sa difficulté à monter en charge (cache PHP obligatoire) et à l’incapacité des développeurs à adapter le framework aux versions courantes de PHP/MySQL.

[…]

C’est un véritable plaisir que de développer sur ce framework [Drupal], notre équipe de dev est littéralement sous le charme !

Voilà beaucoup d’arguments solides en faveur de Drupal. Pour ma part, je l’avais testé sans être convaincu. C’était en 2001. La démonstration en ligne de la version actuelle m’a montré qu’il a beaucoup évolué depuis. Je le replace donc dans le peloton de tête des CMS LAMP (Content Management System sur plate-forme Linux, Apache, MySQL et PHP).

Il me reste à souhaiter bon vent à Rue89 qui aura déjà beaucoup à faire deux heures après son lancement !

Soirée spéciale “PHP pour l’entreprise” le 14 mai 2007 à Paris

L’Association française des utilisateurs de PHP (AFUP) organise le 14 mai 2007 une soirée spéciale PHP pour l’entreprise. Andi Gutmans (co-architecte de PHP et co-fondateur de Zend) sera présent pour faire le point sur les évolutions d’un des langages les plus utilisés dans les applications web. Ce sera surtout l’occasion de montrer les atouts du Zend Framework dont la version 1.0 est attendue en septembre 2007.

La soirée est gratuite, mais l’inscription obligatoire.

» Voir le communiqué de presse