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
mars 2006

La théorie des graphes vulgarisée

Théorie des graphes

La théorie des graphes est très puissante pour modéliser les relations qui existent entre des entités. Purement théorique, son application à la programmation permet de concevoir des architectures à la fois robustes et souples.

Le seul problème, c’est de la maîtriser. Je vous conseille donc l’excellent site « Théorie des graphes » du Laboratoire Gilco, au contenu clair, précis et illustré.

Un fois ce savant cours ingurgité, la modélisation d’architectures relationnelles complexes sera un jeu d’enfants !

Théorie des graphes (document PDF)

TypeTester, l’assistant typographique rêvé des webdesigners

Typetester

L’idée est toute simple mais magistralement mise en pratique par Marko Dugonjic : TypeTester permet de comparer sur trois colonnes des blocs de textes en sélectionnant tous leurs attributs de styles : police, taille, couleur, interlignage, alignement, etc.

Quand vous avez trouvé le style adéquat pour votre site, TypeTester vous en donne le code CSS ! Et en plus, l’interface est tellement belle…

FavIcon Generator : en voilà une bonne idée !

DynamicDrive nous propose un outil en ligne très pratique : FavIcon Generator, un générateur d’icônes de favoris (les fameux fichiers favicon.ico). « Et à quoi ça sert ? ». Simplement à ajouter une image dans la barre d’adresse du navigateur et dans la liste des favoris (« Marque-pages » sous Firefox).

FeedValidator valide vos flux Atom et RSS

Un petit outil bien pratique pour vérifier la syntaxe de vos flux de syndication : FeedValidator. Le complément idéal des outils de validation déjà bien connus :

Faites tester vos sites grâce à UsabilityExchange

Ce n’est pas Cédric, mon ergonome préféré, qui me contredira : mettre en place un test efficace pour mesurer l’ergonomie et l’usage d’un site web coûte cher, parce que chaque service à tester est unique et donc le protocole de test spécifique.

Pourtant, les points communs sont nombreux d’un site à l’autre et l’internet permet de réunir des compétences et des testeurs de tout profil. Pourquoi ne pas profiter de cette nouvelle donne pour réaliser des tests plus facilement pour un coût maîtrisé ? C’est le service que propose le site UsabilityExchange.

La mise en place d’un test se fait par un formulaire en ligne qui définie la portée du test et le profil des testeurs. Tout se fait à distance : protocole de test, déroulement, clôture, résultats… et même paiement des testeurs qui restent sagement chez eux pour réaliser les tests !

Et que donnent les résultats ? A part de jolis graphiques et tableaux, on pourra bien sûr discuter le concept et notamment s’interroger sur le suivi des comportements d’un testeur qui n’est pas physiquement présent. Tracer ce qui se passe sur une interface ne suffit pas : l’attitude, les mouvements, les traits du visage, les hésitations, les grognements, les pertes de concentration, tous ces signes sont décisifs dans les résultats d’un test ergonomique.

Ceci dit, pour une validation basique d’un site, UsabilityExchange a au moins l’avantage d’éliminer les erreurs grossières pour un prix raisonnable.

Ease of use

La mode est aux « livres blancs » consacrés aux interfaces utilisateurs. Tout le monde semble découvrir les bienfaits de l’ergonomie et réclamer la simplicité d’usage. Il faut dire que les utilisateurs ont beaucoup grognés et insistés pour que les applications évoluent !

IBM nous propose sa version, joliment baptisée « Ease of use ».

Très pragmatique à défaut d’être simple, la documentation concernant l’interface utilisateur du projet Gnome a le mérite de poser tous les principes et définitions d’une classique interface 2D.

Tester le serveur DNS d’un domaine

Gérer des noms de domaines est une activité à hauts risques car il s’agit du point d’entrée de n’importe quel service internet. Comment être certain d’avoir des zones bien configurées ? La première chose, c’est bien sûr de vérifier votre serveur DNS et l’ensemble de ces enregistrements.

Mais en cas de mauvais foctionnement, un test à distance du domaine est une vraie bouée de secours. Voici deux outils très utiles :

Finalement, le plus gros risque reste d’oublier de renouveler le domaine. Et croyez-moi, quand on en gère beaucoup, ça arrive plus souvent qu’on ne le croit. Même Microsoft s’y est laissé prendre avec le domaine microsoft.com ! Inutile de vous précipiter, c’était il y a quelques années déjà…

Récupérer le dernier auto-incrément MySQL avec PHP

Quand un script ajoute un enregistrement dans une table MySQL, il est parfois utile d’en mettre d’autres à jour. Et pour cela, on peut avoir besoin de récupérer le dernier identifiant d’auto-increment. La fonction PHP mysql_insert_id() le fera très bien… sous certaines conditions.

Petit rappel sur les connexions MySQL

Avant de faire l’opération, voici un petit rappel du comportement des connexions MySQL ouvertes par PHP.

La plupart du temps, la connexion avec MySQL est établie par la fonction PHP mysql_connect(). Si un deuxième appel est fait avec les mêmes arguments, la première connexion sera à nouveau utilisée. Le paramètre new_link modifie ce comportement et permet à mysql_connect() d’ouvrir à chaque fois une nouvelle connexion, même si mysql_connect() a été appelée avec les mêmes paramètres.

Lorsque le script utilise une connexion persistante (par la fonction PHP mysql_pconnect()), le comportement est le même, à deux différences (importantes !) près :

  • Lors de la connexion, la fonction essaie de trouver une connexion persistante déjà ouverte, avec le même nom d’utilisateur et le même mot de passe. Dans ce cas, son identifiant est retourné sans ouvrir de nouvelle connexion.
  • La connexion au serveur MySQL n’est pas coupée à la fin du script. Le lien est conservé pour un prochain accès, même si on utilise la fonction mysql_close().

Au passage, notez que les connexions persitantes ne fonctionnent qu’avec PHP en version module.

Et l’auto-increment dans tout ça ?

L’auto-increment sera retourné par la fonction PHP mysql_insert_id(), mais il y a des risques de ne pas récupérer celui que vous attendez !

mysql_insert_id() retourne le dernier identifiant généré par un champ de type AUTO_INCREMENT, sur la connexion MySQL courante ou sur la connexion spécifiée par le paramètre link_identifier. Mais les surprises sont nombreuses :

  • Si votre colonne AUTO_INCREMENT est une colonne de type BIGINT, la valeur retournée par mysql_insert_id() sera incorrecte. À la place, il faut utiliser la fonction MySQL LAST_INSERT_ID() directement dans une requête SQL.
  • mysql_insert_id() ne fonctionne pas avec un REPLACE.
  • Si vous utilisez dans votre requête SQL un INSERT IGNORE en précisant un identifiant existant dans la table, l’enregistrement ne sera pas créé, ce qui est normal puisqu’il ne peut y avoir deux identifiants égaux. Par contre, mysql_insert_id() vous retournera l’auto-increment suivant, comme si l’enregistrement avait été ajouté !
  • Si vous faites des insertions multiples (par exemple, INSERT INTO table1 (champ1, champs2) SELECT champ1, champs2 FROM table2 WHERE champ1=2), mysql_insert_id() retournera l’identifiant du premier enregistrement ajouté !

J’arrête là le massacre car il y a bien d’autres cas. Pour s’en sortir, il faut privilégier la fonction MySQL LAST_INSERT_ID() (placée directement dans une requête SQL) et verrouiller la table :

mysql_query("LOCK TABLES table_exemple WRITE");
mysql_query("SET AUTOCOMMIT = 0");
mysql_query("INSERT INTO table_exemple (champ1, champ2) VALUES  ('toto1','toto2')");
$mysql_id = mysql_query("SELECT LAST_INSERT_ID()");
mysql_query("COMMIT");
mysql_query("UNLOCK TABLES");

Krugle, un moteur de recherche pour les développeurs

Krugle

Encore en phase de test, Krugle est un moteur de recherche dédié aux développeurs. « Et un moteur de plus ! » Oui, mais celui-là fait bien plus que de donner une liste d’adresses web : il plonge dans le cœur des applications.

Vous voulez connaître les paramètres d’une méthode de Tomcat ou l’utilisation d’une variable d’environnement dans Apache ? Krugle affiche la liste des scripts concernés et leur code source ! Vous pouvez placer des marqueurs sur le code et partager les résultats avec d’autres développeurs.

Pour financer ce service, Krugle mise dans un premier temps sur la publicité. la société devrait à terme proposer des services pour les entreprises grâce à l’indexation de leurs projets internes.

Truffle100

Existe-t-il encore des éditeurs de logiciels en France ? Il faut croire que oui. Le site Truffle100 en dresse la liste des 100 premiers.

Le palmarès 2005 est disponible au format PDF, accompagné d’un état des lieux fort honnête : la France est un acteur marginal sur le marché mondial ! Le graphique suivant, extrait du document, en est un bon exemple.

Truffle100 - Graphique CA

L’édition 2006 sera présentée lors de Capital-IT, le 26 avril 2006. Avec les mêmes constats, j’en ai peur…