Christophe Le Bot

  • Navigation rapide
Pratique de la conception numérique

Derniers commentaires

  • Récupérer le dernier auto-incrément MySQL avec PHP
    • chanteur06 | salut , une question : comment je remplace ça svp? >> $id_resto_tmp = mysql_insert_id(); mysql_query(‘INSERT INTO users_restos SET id_user=\ ».$_SE...
    • franky | Je pense que c’est ton commit qui n’est pas bon… relis le code de la fin de l’article… A+ utile plus de 5 ans après…
  • Test d’interface : paiement d’amendes en ligne
    • loren | L’algorithme surpuissant imaginé par les grands cerveaux de cette administration élimine la 5eme case lorsque les 3 premiers chiffres entrés par le citoyen verbalisé sont égaux. Pour...
  • Simile Exhibit 2.0 officiellement en français
    • Christophe | Il n’y a rien à faire. Exhibit détecte la langue du navigateur et charge le fichier de traduction correspondant. Facile !
    • Cess | Bonjour, Je viens de m’embêter avec Exhibit à essayer de bidouiller un affichage en français et je viens de tomber sur votre post ! Comment fait-on pour installer Exhibit en français?
 

Archives de la catégorie
Qualité

Tel est pris qui croyait prendre

Internet fraud costs victims millions of dollars each year. Protect yourself with Escrow.com!

Mon petit doigt me dit que cette entreprise va avoir un peu de mal à développer son activité sur les marchés francophones… Pourtant, elle a des atouts indéniables :

Prix Escrow

Il reste comme un malaise, non ?

Sauvez les développeurs !

Mettre au point des sites web qui fonctionnent avec Internet Explorer 6 relève du défi ! Ce qui devait arriver, arrive : Save the developers!

Pour ma part, j’ai pu mesurer le temps passé à mettre au point une interface pour Internet Explorer 6 : 15 à 25% du temps de développement des interfaces web ! Sans parler de l’énervement au sein des équipes de développement…

Alors, s’il vous plaît, mettez à jour votre navigateur web ! Ce sera bénéfique pour tout le monde : les développeurs pourront concevoir des interfaces plus rapidement, les applications web seront plus stables et vous bénéficierez d’un outil efficace et adapté au web d’aujourd’hui.

Vous avez l’embarras du choix :

Téléchargez Internet Explorer

Si vous tenez à rester dans le giron de Microsoft, installez dès que possible Internet Explorer 7. Les améliorations sont notables, même si nous sommes encore loin d’un résultat idéal. Il paraît qu’Internet Explorer 8 sera enfin un navigateur digne de ce nom. J’attends de voir… Bref, vous l’aurez compris : ce n’est pas mon préféré.

Téléchargez Firefox

Firefox 2 est le navigateur web le plus utilisé par les développeurs, grâce à une interface intuitive et une multitude d’extensions. Seule ombre au tableau : sa gourmandise en terme de ressources mémoire. Mais Firefox 3 apportera un sérieux changement de ce côté. Incontournable et recommandé par les professionnels.

Téléchargez Opera

Opera, c’est LE navigateur web par excellence. Léger, rapide, complet, il a tout pour plaire, en particulier son support quasi parfait des normes du W3C. S’il reste marginal sur les ordinateurs, il est le roi du web mobile !

Téléchargez Safari

Proposé par Apple, Safari est le navigateur web par défaut de MacOS, mais il fonctionne aussi sous Windows. Un bon produit qui possède la magie Apple. Parfait pour l’utilisateur qui ne veut pas s’embarrasser de technique.

Quel que soit votre choix, le plus important est d’abandonner Internet Explorer 6 !

Cryptage MD5 réversible ? Indirectement, oui !

Le cryptage de mots de passe par MD5 est sans doute la mesure de sécurité la plus utilisée par les développeurs. Son intérêt : crypter une chaîne de caractères, sans avoir la possibilité mathématique de faire l’opération inverse. Enfin presque…

Depuis 2004, on sait que MD5 n’est plus très sûr. Cependant, casser cet algorithme n’est pas à la portée de tout le monde. Aucun risque pour vos bases de données utilisateurs ? C’est sans compter sur les bases de hash MD5. Leur but : stocker des chaînes de caractères et leur hash. Comme les utilisateurs entrent souvent des mots communs ou connus, il est très simple d’interroger ces bases pour obtenir la liste des chaînes de caractères compatibles avec un hash MD5. GData en est un exemple particulièrement efficace et complet.

Vous voulez connaître le mot de passe caché derrière le hash MD5 fe01ce2a7fbac8fafaed7c982a04e229 ? Le voici en 1/10e de seconde : demo. Et celui-ci, assez fréquent dans les bases mal paramétrées : 21232f297a57a5a743894a0e4a801fc3. C’est admin !

Il est temps de changer de méthode de cryptage…

Source : Nexen

Nouvel iMac, et toujours le même phénomène…

Le nouvel iMac d’Apple vient de sortir. Encore une fois, il suffit de voir ce produit Apple pour qu’immédiatement tout ce qui existait auparavant ait un petit air d’obsolescence…

Je ne vais pas m’étendre sur ses caractéristiques puisque des centaines d’autres sites l’ont déjà fait. J’en garde juste une image redoutable.

Comparaison iMac / Dell XPS 410
Comparaison iMac / Dell XPS 410 (photo Apple).

Ce que j’aime dans cette comparaison, c’est qu’Apple a fait l’effort de choisir une machine concurrente au « design soigné » qu’on pourrait qualifier de « belle » dans le monde PC. Pourtant, le fossé qui sépare Apple des autres constructeurs en matière de design et d’innovation est abyssal…

PHP4, PHP5, PHP6 : la saison des grandes migrations

Logo PHP

Avec un été aux allures d’automne, j’ai eu envie de présenter un flux migratoire d’exception. Nul discours écologique dans mes propos, puisqu’il est question de PHP, le langage le plus répandu pour créer des applications web. Entre la mort de PHP4, la gestation de PHP6 et PHP5 qui tarde à s’imposer, voici un point sur la situation, les enjeux… et les risques.

PHP4 en fin de course

C’est maintenant officiel, PHP4 ne sera plus supporté à partir du 1er janvier 2008. En soit, l’annonce ne choque pas puisque PHP5 a pris le relais depuis 3 ans. Mais, sur le terrain, la percée de la version actuelle de PHP est moins évidente. En cause, les nombreuses applications PHP4 encore exploitées en ligne qui freinent les hébergeurs dans l’adoption de PHP5.

Migrer de PHP4 à PHP5

Sachant que la migration de PHP4 vers PHP5 devient obligatoire, comment la réaliser en douceur dans le temps imparti (5 mois) ?

Premier point : s’informer et comprendre la nécessité de migrer. Le site Go PHP5 est là pour ça !

Go PHP5
L’initiative Go PHP5 pour promouvoir une migration rapide vers PHP5.

Ensuite, il faut mettre le nez dans l’existant et y apporter les corrections ou les évolutions nécessaires pour le rendre compatible avec PHP5. On s’aidera des ressources mises à disposition par le PHP Group :

Préparer l’arrivée de PHP6

Maintenant, quid de PHP6 ? Quitte à migrer cet automne, autant en profiter pour préparer son arrivée ! On sait maintenant à quoi ressemblera la nouvelle mouture PHP et ce qu’elle implique pour les développeurs.

A la lecture de Prepare for PHP 6, on remarque vite que PHP sera beaucoup moins permissif. On ne regrettera pas le Register Globals, ni le Safe Mode (même s’il peut gêner quelques hébergeurs à la traîne).

Bien sûr, l’abandon des Magic Quotes imposera de retoucher de nombreuses applications PHP4 pour éviter les injections de commandes (pour attaquer une base de données, par exemple). On me rétorquera que PHP5 les désactive par défaut… ce qui veut dire qu’on peut les activer pour éviter de « perdre » du temps à mettre en conformité son code ! Avec PHP6, point de salut, il faut s’y coller !

Parmi les fonctionnalités les plus attendues, les namespaces pour la programmation orientée objet, le support natif d’Unicode, l’accélérateur APC par défaut.

Le plus inattendu est sans doute goto pour spécifier où continuer l’exécution du code ! A oublier de suite en programmation orientée objet…

Après le discours, la pratique. Voilà une petite check-list (tirée du magazine Programmez, juin 2007) pour faciliter l’arrivée de PHP6 :

  • Ne pas utiliser register_globals, mais $_POST, $_GET, $_COOKIE et $_REQUEST
  • Ne pas utiliser $HTTP_POST_VARS et $HTTP_SERVER_VARS, mais $_POST et $_SERVER
  • Mettre les directives magic_quotes_* à off
  • Ne pas spécifier le passage par référence dans l’appel de fonction, mais dans le prototype
  • Ne pas utiliser la fonction __autoload() (pratique mais très gourmande)
  • Ne pas mettre une variable derrière un break, mais une constante, un nombre… ou rien
  • Désactiver le safe_mode
  • Ne pas utiliser la librairie GD1 pour traiter les images, mais la GD2
  • Utiliser l’UTF-8 ou l’UTF-16

Le dernier point est, selon moi, le plus critique. Le support d’Unicode (UTF-8 ou UTF-16) impose de convertir la chaîne complète du développement : fichiers de code source, fichiers de données, base de données, navigateur web, etc. Or le support d’Unicode est loin d’être un réflex dans les projets web. Quel webdesigner se préoccupe de déclarer le support de l’Unicode dans Dreamweaver ? La question qui suit est : pourquoi la majorité des outils propose encore l’ISO-8851 ou CP1252 par défaut ? Bref, ce point dépasse le cadre des évolutions de PHP, mais deviendra un vrai Capharnaüm s’il n’est pas traité dans son ensemble.

Une opportunité pour les entreprises… et leurs prestataires

Inutile de tourner autour du pot : la migration nécessaire de PHP4 vers PHP5 demandera d’ici la fin de l’année un certain travail aux équipes de développement PHP de tous bords. Pour le bien des entreprises, c’est certain. Elles verront leur système d’information évoluer et gagner en maturité. Pour leurs prestataires aussi qui sauront profiter de l’opportunité pour aller plus loin qu’une simple mise en conformité iso-fonctionnelle.

Simile Exhibit : la version française est (presque) disponible

Logo Simile

Simile (Semantic Interoperability of Metadata and Information in unLike Environments), initié par le MIT (Massachusetts Institute of Technology), développe des outils open source robustes et efficaces pour manipuler des données, le tout reposant sur les technologies du web sémantique.

Parmi ces outils, le framework Exhibit est l’un des plus démonstratifs. Il offre une interface riche pour trier, filtrer et consulter des données complexes, via une page web. Sa classification à facettes rend la sélection et la consultation de données très rapides.

Seul petit défaut : Exhibit ne parle actuellement que l’anglais, l’espagnol et le suédois. Pas pour longtemps puisque je viens de terminer la french version ! Elle sera intégrée dans la version stable (v.1.0) et la version 2.0 (bientôt disponible).

Pour valider ce travail, je fais appel à votre bonne volonté afin de tester quelques exemples et me remonter les erreurs et bogues que vous pourriez y trouver (via les commentaires). Une fois corrigée, la version française sera mise à disposition de tous sur le serveur de Simile.

Pour le moment, les exemples reprennent ceux du site officiel. Je n’ai pas traduit les fichiers de données puisqu’ils ne font pas partie d’Exhibit. Par contre, les éléments d’interface (actions, sélections, tris, filtres, copies, messages, aide…) devraient tous être en français. J’ajouterai sans doute un exemple utilisant toutes les options d’Exhibit avec un fichier de données en français. Ce sera plus simple !

Si vous avez déjà mis en place Exhibit sur vos sites, vous pouvez également tester la version française en modifiant (temporairement, bien sûr) le lien de la version Exhibit officielle :

<script src="http://static.simile.mit.edu/exhibit/api/exhibit-api.js?views=timeline" type="text/javascript"></script>

doit être remplacé par

<script src="http://demo.christophelebot.fr/simile-exhibit-fr/api/exhibit-api.js?views=timeline&bundle=false" type="text/javascript"></script>

Votre lien peut ne pas comporter de paramètre views. Par contre, il ne faut pas oublier le paramètre bundle (utile pour ce test seulement) qui permettra de basculer en français. Petit détail, votre navigateur doit être configuré pour afficher en priorité les contenus en français.

Liste des exemples à tester

Merci d’avance pour votre participation à ce test !

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…

Quand faire intervenir le designer ?

De l’article consacré aux difficultés de Dell, diffusé par Le Monde (Fragilisé, Dell se cherche un nouveau modèle, 3 mai 2007), je n’ai retenu qu’une phrase. Non pas que les objectifs de Michael Dell, de retour dans la galère le navire ne m’intéressent pas, mais parce qu’il y est question de design :

Des designers ont été recrutés et désormais un produit sera dessiné avant d’être conçu. Avant c’était le contraire.

Cet aveu est étonnant à double-titre :

  • Il me semblait que les machines Dell étaient réputées pour leur conception aboutie (fiabilité, silence, manipulation, installation, service clients). J’ai dû louper un épisode…
  • Je croyais que les grandes entreprises, américaines de surcroît, avaient compris depuis longtemps le rôle du designer. J’ai rêvé trop vite…

La situation

Comment en est-on arrivé là ? Le problème vient de l’incompréhension du mot design et du rôle du designer. Le design est trop souvent perçu comme synonyme exclusif d’apparence (ou d’aspect, de forme, d’esthétique, si vous préférez). D’où la tentation de limiter le coût du design à un peu de saupoudrage visuel, juste avant la mise en production.

Les responsables

A qui la faute ?

  • Aux designers, certainement, qui n’ont pas su expliquer leur métier, il est vrai très changeant (je suis bien placé pour le savoir, puisque j’ai géré et animé pendant 8 ans une association de promotion du design).
  • Aux managers parce qu’ils ne sont pas sensibilisés, ni formés aux atouts du design (le design devrait faire partie du programme MBA !).
  • Aux institutions et autres organismes de développement économique parce qu’ils n’ont pas les outils pour mesurer et expliquer l’efficacité du design (quoique sur ce point, les évolutions sont perceptibles ces derniers temps).
  • A notre système éducatif qui peine à sortir d’une ingénierie entièrement dévouée aux prouesses technologiques (condition nécessaire mais pas suffisante, pour reprendre le vocabulaire des « têtes bien pensantes »).

La réalité

« Bon finalement, le designer sert à quoi ? » Voici la définition qu’en donne l’École nationale supérieure de création industrielle (ENSCI – Les Ateliers) :

Au sein de l’équipe de conception, le designer veille à la cohérence structurelle du produit. Les solutions qu’il retient sont non seulement de nature à garantir le bon aspect de l’objet produit mais surtout sa parfaite organisation interne et la pertinence de son rapport à l’utilisateur.

Verner Panton disait :

Le travail du designer est de coordonner à tous les niveaux de production, d’étudier et de répondre aux exigences du consommateur, de dépasser les bases objectives et de trouver une cohésion claire et délibérée entre les facteurs pratiques et esthétiques.

La pratique

« C’est bien beau ces discours, mais moi, quand dois-je faire intervenir le designer ? » Tout au long du projet, et en particulier au début, quand les grandes orientations doivent être définies. Imaginez juste un instant un produit Apple dessiné après avoir été conçu…

Launchpad, un bon exemple de service collaboratif

Launchpad

Canonical, éditeur des solutions Ubuntu, nous propose Launchpad (version 1.0 beta), un service dédié aux développeurs open source, similaire à SourceForge.

Après une visite rapide, cet outil me laisse une impression très positive. Tout a été pensé pour faciliter le travail quotidien des développeurs et les fonctionnalités sont riches (code repositories, gestion de versions via CVS et Subversion, bugs tracker, support, gestion des traductions, etc.).

Hormis les produits développés par Canonical, Launchpad héberge quelques projets essentiels, comme Zope ou Creative Commons. J’y mettrai peut-être aussi les projets que j’ai dans mes cartons…

Il n’y a qu’un truc que je n’ai pas trouvé : la liste des projets hébergés. Cette fonction m’est très utile dans SourceForge pour suivre l’actualité des projets open source et trouver des perles rares.
Mise à jour : si, si, on peut avoir la liste de tous les projets. Merci Christian pour ton oeil de lynx !

Test d’interface : paiement d’amendes en ligne

La semaine dernière, j’ai reçu un joli papier (vert amende, bien sûr) me rappelant que la vitesse maximale autorisée sur autoroute est de 130 km/h. C’est agaçant (surtout pour un dépassement de 5 km/h sur une voie déserte) mais loin de moi l’idée de critiquer cette règle élémentaire de sécurité.

Vient l’heure de payer l’amende. Je ne suis pas un habitué du fait (c’est même une première), je fais donc l’effort de lire toutes les instructions. Ah tiens, on peut payer par internet ! Voilà l’occasion de tester une interface ! Ou comment prendre du plaisir à réaliser une tâche désagréable !

Un site dédié au paiement des amendes

Accueil amendes.gouv.fr
Page d’accueil du Service de télépaiement des amendes.

Le Ministère des Finances a mis en place un site dédié au paiement des amendes par carte bancaire. Pour protéger la transaction, la connexion entre le serveur et le navigateur web est cryptée (via SSL) et l’identité du service garantie par un certificat numérique.

Certificat SSL amendes.gouv.fr
Informations sur le certificat SSL.

Premier bémol : le certificat est émis par Verisign, entreprise privée américaine. Le Référentiel Général de Sécurité n’est donc pas encore en place.

L’accueil du service

La page d’accueil est des plus simples : un résumé pour expliquer le but du service, un lien pour y entrer et un autre pour quelques explications sur la sécurisation du site. Simple, clair (c’est vrai aussi qu’on n’arrive jamais sur ce site par hasard…), malgré un texte plutôt confus pour expliquer la transaction HTTPS.

Le code source est typique du web première génération : des textes en bitmap, des tableaux pour la mise en page, le tout généré par Dreamweaver (ses fonctions Javascript sont détectables entre mille) et FrontPage 6.0 (voir la balise META GENERATOR). Drôle de mélange, mais l’avantage est de rendre l’interface utilisable sous tous les navigateurs, même les plus anciens. On est loin du web 2.0, d’Ajax, du XHTML compliant, des CSS 2… mais aussi d’une interface accessible (au sens ergonomique).

Un petit tour du côté des requêtes m’indique que le service tourne sous Apache et que mes actions et leur traitement seront gérées par des scripts Java (le cookie de session trahit sa présence).

Saisie des informations

Saisie du numéro de l'amende
Saisie du numéro de l’amende.

Je passe à l’action. On me demande le numéro de l’avis d’amende et sa clé. Euh… il doit être tard, je ne vois rien de semblable sur le papier. J’ai bien un numéro d’avis de contravention mais pas d’avis d’amende. De plus, le formulaire web me propose 5 groupes de chiffres + la clé, la version papier n’a que 4 groupes de chiffres + la clé.

Heureusement, il y a une aide. Je fais abstraction du dictionnaire qui propose toutes les lettres de l’alphabet, alors que seules 8 lettres sont utiles… Les « pro » de la molette seront ravis ! Je clique donc sur « Où trouver mon numéro d’avis – Cliquez sur ce lien » (j’adore) et là, surprise ! Je vois bien les 4 cases de chiffres, comme sur mon papier. Je vois aussi à côté une version à 5 cases… Je sens que ça va être chaud.

Aide pour la saisie du numéro d'amende
Aide pour la saisie du numéro d’amende.

Survient le doute : vais-je pouvoir payer cette amende (pardon, contravention) en ligne ? Je tente le coup. Et j’ai bien fait : le premier groupe de chiffres détermine le type de contravention (forfaitaire, dans mon cas). Un petit Javascript élimine donc la cinquième case. Un autre se charge de déplacer le curseur de case en case. On tient le bon bout !

Informations liées à la contravention

Informations sur la contravention
Informations sur la contravention.

Le serveur fait son office et m’informe de mon avis de contravention. Cette page remplit son rôle, avec des textes concis et une fenêtre Questions / Réponses très utile.

Paiement de l’amende

Je passe au paiement. Une page me demande si je veux payer définitivement ou si je veux déposer une consigne (eh oui, si vous contestez la contravention, vous devez la payer avant de vous faire rembourser… éventuellement).

Paiement de l'amende (1)

Vient le formulaire tant attendu du paiement par carte bancaire. Là, on retrouve ses habitudes d’achat sur les sites e-commerce (adresse de livraison en moins…). Rien à dire, c’est bien fait.

Paiement de l'amende (2)

Je valide et j’obtiens un justificatif que je peux imprimer, sauvegarder, envoyer à une adresse e-mail ou recevoir par courrier. Dommage que ces options ne soient pas regroupées.

Paiement de l'amende (3)

La sauvegarde du justificatif sur ordinateur vaut vraiment le détour (un simple fichier texte contenant du code HTML illisible et sans aucun retour chariot). J’opte plutôt pour l’envoi par e-mail que j’obtiens aussitôt.

Conclusion

Ce petit jeu de cache-cache valait bien les 45 € que j’y ai laissés. Mais promis, je ne recommencerai pas.