Aller au contenu | Aller au menu | Aller à la recherche
Depuis quelques mois, on voit fleurir une multitude de clones de Lightbox. Personnellement, mon choix s'est porté sur FancyBox qui fonctionne bien et possède un code nettement plus propre que la moyenne.
J'ai cependant rencontré un souci en l'utilisant en conjonction avec le CSS Reset d'Eric Meyer : les légendes étaient trop hautes.

Le problème vient de l'alignement vertical appliqué sur la balise "td" par le CSS Reset. Pour annuler son effet, il suffit d'ajouter les lignes suivantes dans le fichier fancy.css :
#fancy_title td {
vertical-align: middle;
} jeudi 24 juillet 2008 à 19h17 - Développement Web 2 0
Il arrive parfois d'avoir besoin de copier une base de données vers un autre serveur. Il est possible de faire facilement cette opération en utilisant l'outil mysqldump en ligne de commande :
mysqldump table_source | mysql --host=hote -C table_cible
Il est également possible de créer la copie sur le même serveur en omettant l'option --host :
mysqldump table_source | mysql -C table_cible
J'ai découvert cette astuce aujourd'hui en lisant la documentation de l'outil mysqldump. Voilà encore une preuve que RTFM est probablement le meilleur adage pour un développeur.
jeudi 3 juillet 2008 à 14h38 - Développement Web 1 0
Les interfaces d'administration des applications web sont souvent tristes à pleurer. Dans le cadre de mon projet-top-secret-du-moment (TM), je cherche à éviter ce syndrome. J'ai déjà quelques idées de ce à quoi ressemblera l'interface mais si vous avez des exemples d'interfaces particulièrement bien ficelées je suis preneur.
lundi 21 mai 2007 à 18h55 - Développement Web 7 0
Ma société, accueille en ce moment 2 stagiaires. L'un deux a de grosses lacunes en programmation. C'est un autre aspect de son profil qui m'intéressait quand je l'ai choisi mais l'accomplissement de sa tâche nécessite une bonne dose de programmation. Ce garçon, fort sympathique au demeurant, manque énormément d'autonomie et de méthode de travail. Je passe mon temps à lui dire de lire la documentation.
Il n'est malheureusement pas le premier que je vois préférer des tutoriaux plus ou moins mal ficelés mais rédigés dans la langue de Molière Lorie à la documentation officielle pourtant forcément plus complète et plus à jour mais en anglais. L'un de mes professeurs disait qu'un informaticien ne parlant pas anglais est handicapé. Je partage totalement ce point de vue. Quand on voit la différence tant en quantité qu'en qualité des informations disponibles en français et en anglais, cela est une évidence.
À force, mon stagiaire a tout de même fini par prendre l'habitude de regarder la documentation pour éviter de se prendre un RTFM bien senti suite à une question saugrenue. Cette après-midi, il devait réaliser une requête SQL un peu tordue. Je précise que nous utilisons exclusivement MySQL comme SGBD. Ne réussissant pas trouver de réponse à son problème dans la documentation, il sollicite mon aide. Surpris par ce qu'il me dit y avoir lu, je vérifie la page qu'il consulte. Il regardait la documentation de PostgreSQL ! Voyant ma surprise, il me balbutie que ce n'est pas exactement la bonne documentation mais que ça doit fonctionner pareil ... en gros.
lundi 14 mai 2007 à 17h19 - Développement Web 16 0
Pour stocker des valeurs monétaires dans une base de données, on a généralement le réflexe d'utiliser un champ de type FLOAT. Ce n'est cependant pas une bonne idée, en tout cas avec MySQL.
En effet, la documentation indique que MySQL arrondit les valeurs lors du stockage ce qui veux dire que la valeur récupérée n'est pas forcément exactement celle stockée ce qui est très gênant dans le cas de valeurs monétaires.
MySQL performs rounding when storing values, so if you insert 999.00009 into a FLOAT(7,4) column, the approximate result is 999.0001.
Il est préférable d'utiliser un champ de type DECIMAL comme préconisé dans la documentation de MySQL :
The DECIMAL and NUMERIC data types are used to store exact numeric data values. In MySQL, NUMERIC is implemented as DECIMAL. These types are used to store values for which it is important to preserve exact precision, for example with monetary data.
vendredi 16 février 2007 à 14h23 - Développement Web 2 0
En faisant du rangement chez moi, j'ai récemment retrouvé ce vestige de ma découverte du web.

Il s'agit de la seconde édition de l'ouvrage de référence, à l'époque, sur l'HTML. Paru en 1996, il traite notamment des nouveautés de la version 3 d'HTML.
mercredi 31 janvier 2007 à 09h58 - Développement Web 8 0
La prochaine rencontre Blog en nord - Meet the bloggers Lille se déroulera le vendredi 9 février 2007 à Lille en deux temps :
Pour en savoir plus, rendez-vous sur l'annonce de la rencontre.
lundi 15 janvier 2007 à 13h48 - Développement Web 0 1
Afin de concilier aspect visuel et accessibilité, il est souvent nécessaire de remplacer un texte par une image. Il existe pour cela des quantités de méthodes avec chacune leurs avantages et leurs inconvénients.
Celle que je privilégie généralement est la méthode Phark Revisited car elle ne nécessite ni balisage inutile ni hack CSS. Le principe est tout simple : on donne au texte une hauteur et une largeur correspondant à la taille de l'image de remplacement puis on indente le texte à gauche avec une valeur énorme de manière à le faire sortir de l'écran.
<h1>Mon blog</h1>
h1 { background: url(mon_blog.jpg); height: 100px; text-indent: -9999em; width: 350px; }
Voir l'exemple.
Il est même possible de rendre l'élément cliquable comme si c'était une image en procédant ainsi :
[html] <h1><a href="#" title="Retourner à l'accueil">Mon blog</a></h1>
[css]
h1 {
background: url(mon_blog.jpg);
height: 100px;
width: 350px;
}
h1 a {
display: block;
height: 100px;
text-indent: -9999em;
width: 350px;
}
Voir l'exemple.
Le seul problème est que lorsqu'on clique le lien, les pointillés apparaissent autour de l'élément sont bien plus étendus sur la gauche qu'on pourrait s'y attendre comme le montre la capture d'écran suivante.

Heureusement il existe une parade simple à cela. Il suffit de donner la valeur "hidden" à la propriété overflow. L'exemple complet devient donc :
[html] <h1><a href="#" title="Retourner à l'accueil">Mon blog</a></h1>
[css]
h1 {
background: url(mon_blog.jpg);
height: 100px;
width: 350px;
}
h1 a {
display: block;
height: 100px;
overflow: hidden;
text-indent: -9999em;
width: 350px;
}
Voir l'exemple.
Et voici le résultat :

dimanche 14 janvier 2007 à 19h10 - Développement Web 7 0
Après quelques mois d'attente pour l'un et plus de 5 ans pour l'autre, voici que les nouvelles versions majeures des deux principaux navigateurs web sont disponibles. A noter que l'annonce officielle de la sortie de Firefox 2.0 devrait se faire dans la journée mais la version finale est disponible au téléchargement depuis hier soir.
J'ai donc décidé ce matin d'installer Internet Explorer 7. Je télécharge l'installateur de 15,8 Mo ce qui semble beaucoup quand on compare aux 5,4 Mo de Firefox soit dit en passant. Je lance l'installation.
Je patiente un peu puis me dis que je vais en profiter pour mettre également à jour Firefox. Je recherche le lien de téléchargement, ce qui me prend un minute environ. Je télécharge l'installateur, le lance, parcours les différents écrans. L'installation proprement dite se fait. Je lance la version de Firefox fraichement installée. Je fais un rapide tour, tout semble fonctionner.
Je reviens vers Internet Explorer 7 qui s'installe toujours ! Il faudra encore plusieurs minutes avant qu'il n'est terminé. Cerise sur le gâteau, je serais obligé de redémarrer mon ordinateur avant de pouvoir l'utiliser.
Faisons un rapide comparatif de la mise à jour de ces deux navigateurs :
Internet Explorer
Firefox
Au final, ma seconde impression d'Internet Explorer 7 n'est pas meilleure que la première. Espérons que ça changera par la suite.
mardi 24 octobre 2006 à 11h38 - Développement Web 14 0
Si vous suivez un peu l'actualité des langages de programmation en liaison avec internet, vous ne pouvez pas avoir manqué Ruby et son framework emblématique Ruby on Rails.
Beaucoup de développeurs PHP se laissent tenter par la simplicité de prise en main. On vante sa conception intelligente, les possibilités qu'il offre. Aux yeux de certains il est vu comme le remplacant de PHP à plus ou moins long terme.
Pourtant il semble que les créateurs du site officiel de RoR n'aient pas choisi d'utiliser ce framework ni même Ruby mais bien PHP comme le prouve cet easter egg. Celui-ci ne fonctionne que si la page appellée est en PHP. Avoir le module PHP installé sur le serveur n'est pas suffisant.
Note : Ceci n'est pas un troll contre RoR ou Ruby car je ne les connais pas assez pour avoir un avis. Simplement je trouve la situation amusante.
jeudi 12 octobre 2006 à 10h00 - Développement Web 8 0
Alors que Microsoft annonce l'arrivée d'Internet Explorer 7 pour ce mois-ci, j'ai eu envie de tester son rendu avec un site que je suis en train de réaliser.
Le site a été conçu à l'aide de Firefox. Une fois la mise en page effectuée et le code HTML et CSS validé, j'ai vérifié qu'il passait bien sur les principaux navigateurs. Les navigateurs modernes n'ont posé aucun problème. Internet Explorer 6 et 5.5 ont demandé quelques menues adaptations notamment pour contourner le Doubled Float-Margin Bug.
Internet Explorer 7 en revanche affiche un rendu catastrophique. Que ce soit avec ou sans les adaptations pour Internet Explorer 6 et 5.5. Cela veux donc dire que non seulement il ne rend pas correctement ma mise en page valide et qui passe sur les navigateurs dignes de ce nom mais en plus il a des bugs différents, et en l'occurence pires, que les versions précédentes. Franchement, ce n'est pas rassurant.
Voici le rendu sous Internet Explorer 6. Il correspond à ce qui est attendu :

Et voici le rendu sous Internet Explorer 7 :

Note : Je n'ai pas utilisé de hacks mais des commentaires conditionnels pour les adaptions pour Internet Explorer 6 et 5.5. Le problème d'affichage avec la version 7 ne peut donc pas venir de là.
mardi 10 octobre 2006 à 16h24 - Développement Web 15 1
Jeudi et vendredi, j'ai assisté à Paris Web 2006, un ensemble de conférences sur les standards et l'accessibilité dans le domaine du web.
Pour aller droit au but, je suis ravi d'avoir été à cet evênement. L'organisation était sans faille, ce qui est d'autant plus remarquable que c'était première édition. Les orateurs étaient de qualité et les sujets traités étaient très pertinents.
Voici un rapide compte-rendu de mes impressions concernant les conférences :
Jeudi
Vendredi
En plus des conférences, Paris Web 2006 m'a permis de revoir ou de rencontrer un certain nombre de personnes et c'est aussi ça l'esprit de ce genre de manifestation. L'apéritif ouvert à tous était également une excellente idée. J'avais rarement vu une telle concentration de geeks au mètre carré.
Pour conclure, Paris Web 2006 a été un véritable succès de mon point de vue et j'ai hâte de m'inscrire pour l'édition 2007 !
samedi 23 septembre 2006 à 13h08 - Développement Web 9 9
Dans le cadre des rencontres Blog en nord - Meet the blogger Lille, une conférence gratuite consacrée au référencement aura lieu à Lille le 29 septembre 2006 de 14 h à 17 h.
Les intervenants seront Olivier Andrieu du site Abondance et Sébastien Billard, auteur du blog Référencement, Design et Cie.
mardi 19 septembre 2006 à 14h32 - Développement Web 0 0
Il est parfois utile de pouvoir passer un nombre variable d'arguments à une fonction. Par exemple lorsqu'on veux transmettre une liste sans passer par un tableau.
Avec PHP cela se fait très simplement à l'aide de la fonction func_get_args() :
<?php
function test()
{
$arguments = func_get_args();
for ($i = 0, $taille = count($arguments); $i < $taille; $i++) {
echo $arguments[$i];
}
}
test('arg1', 'arg2', 'arg3');
?>
Aujourd'hui, j'ai eu besoin de le faire en Javascript. Après quelques recherches, j'ai trouvé que cela se fait ainsi :
<script>
function test() {
for(var i = 0; i < arguments.length; i++) {
alert(arguments[i]);
}
}
test('arg1', 'arg2', 'arg3');
</script> vendredi 7 juillet 2006 à 14h09 - Développement Web 2 0
Non contents d'éditer une série de logiciels en mode hébergé à succès et d'être à la base du plus que fameux framework Ruby on Rails, les gens de 37signals ont publié un livre : Getting Real. Disponible uniquement au format PDF pour 19 $, celui-ci explique comment concevoir une application Web.
Il ne s'agit pas de donner des conseils concernant le balisage HTML ou la programmation PHP mais de livrer un certain nombre de réflexions sur la conception et le développement d'une application Web.
Les auteurs nous livrent leur vision de ce que devrait être une application Web, principes qu'ils ont appliqués à leurs propres produits avec le succès que l'on sait. L'essence du livre pourrait être résumé ainsi : moins c'est mieux. L'ensemble du processus de réalisation est passé en revu sous cet éclairage a priori étonnant mais finalement plein de bon sens.
J'ai dévoré les 171 pages en 2 soirées. Je ne peux donc que vous conseiller de lire les chapîtres gratuits pour découvrir ce livre.
vendredi 12 mai 2006 à 19h41 - Développement Web 0 0
Le programme de Paris Web 2006 commence à se profiler. Cette manifestation en français se tiendra les 21 et 22 septembre prochain à Paris. Ce cycle de conférences a pour thème l'accessibilité, la qualité et le design pour le Web.
La liste des conférenciers est assez impressionante et devrait encore s'aggrandir :
Pour ma part j'y serai.
mardi 9 mai 2006 à 15h57 - Développement Web 4 1
Au fil des années, j'ai eu le loisir de tester un certain nombre d'hébergeurs dont OVH, 1and1, Ikoula, Nexen Services. Pour le moment, je n'ai jamais été totalement satisfait. Récemment, j'ai découvert TextDrive qui semblait être la perle que je cherchais désespérément. Malheureusement, si cet hébergeur propose beaucoup de services appréciables, il y a certains aspects qui me dérangent vraiment (gestion des sous-domaines, pas de gestion personnalisée des DNS).
Voici ce que j'attend d'un hébergeur :
Et voici les plus que j'apprécie :
Je fais donc appel à toi fidèle lecteur pour me faire découvrir l'hébergeur qui a su te convaincre de rester chez lui.
vendredi 14 avril 2006 à 11h46 - Développement Web 17 0
Ce matin nous avons été confronté à un problème surprenant au travail. Une requête SQL qui passe très bien sur 2 serveurs mais qui indique qu'un champ est inconnu dans une jointure sur un troisième.
Après observation, la seule chose qui parraissait un peu étrange dans la requête SQL était le fait que l'une des jointures ne se faisait pas dans l'ordre logique. Voici un exemple simplifié de la requête illustrant le problème :
SELECT * FROM `clients` AS c INNER JOIN `groupes` AS g ON g.id = s.id_groupe INNER JOIN `societes` AS s ON s.id = c.id_societe
En toute logique, il aurait fallu faire la jointure sur la table groupes après celle sur la table sociétés. Cependant cette requête passe parfaitement sur deux serveurs. Le second point étonnant est que ces fameux serveurs sont en version 4.1.12 tandis que celui qui pose problème est en 5.0.18. Rétablir l'ordre logique des jointures règle le problème.
Après quelques recherches, il s'avère que ce n'est pas un bug mais une nouvelle fonctionnalité. Afin de mieux coller au standard SQL:2003, MySQL a modifier sa gestion des jointures sur de nombreux points dont celui-ci. En attendant de modifier vos requêtes, vous pouvez rétablir le comportement de MySQL 4.0 en modifiant le mode SQL.
mercredi 12 avril 2006 à 14h47 - Développement Web 4 0
Oracle vient d'annoncer le rachat de Innobase Oy, la société Finlandaise qui développe le moteur de table InnoDB dans MySQL.
La société américaine annonce poursuivre sa volonté de s'impliquer plus dans le mouvement Open Source.
Espérons que ce beau discours ne cache pas un moyen de maîtriser voire supprimer le meilleur atout d'un concurrent, certes encore modeste mais au potentiel indéniable.
En effet, si pour la branche 3.x de MySQL, le moteur préconisé était MyISAM, les nouvelles fonctionnalités de MySQL (transactions, clés étrangères etc.) sont basées sur le moteur InnoDB.
mardi 11 octobre 2005 à 07h33 - Développement Web 1 1
© 2003-2008 Jean-Marc Fontaine - Tous droits réservés
XHTML - CSS - DotClear - Technorati
Les billets de ce blog sont sous licence Creative Commons