Dur Comme Faire

Aller au contenu | Aller au menu | Aller à la recherche

Les cordonniers sont les plus mal chaussés

Abonné à la liste de diffusion que publie le groupe Nine Inch Nails, je viens de recevoir un mail. Jusque là rien qui ne vaille d'écrire un billet sur ce blog me direz-vous. En fait, ce n'est pas le contenu du mail lui même qui m'a interpellé mais la mention située toute à la fin :

If you have any questions please write to:
List Manager, Universal Music Companies
2220 Colorado Avenue, Santa Monica, CA 90404

Un list manager qui n'aurait pas d'adresse mail, c'est pas banal ça.

mercredi 27 avril 2005 à 13h04 - Nimportenawak 0   0

ApéroPHP Lillois de mai

Cette fois ça se passera le jeudi 19 mai au Barbitur'Hic, 26 rue Nicolas Leblanc à Lille, à partir de 20h00. Comme d'habitude, tout le monde est le bienvenu quelque soit le niveau de geekitude.

Pour s'inscrire, il faut aller sur le site d'AperoPHP.

mardi 26 avril 2005 à 19h23 - PHP 5   0

Vache maigre pour Longhorn ?

Sans cesse repoussé, le nouveau système d'exploitation de Microsoft, connu sous le nom de code Longhorn, devrait finalement sortir debut 2006. Seulement plus le temps passe et plus les nouveautés sont revues à la baisse.

En effet, le système de fichiers virtuels WinFS, une surcouche de NTFS à la Google Desktop Search, ne sera pas intégré à la première version du système d'exploitation. Quant à la tristement célèbre technologie NGSCB (ex-Palladium), elle ne sera implémentée que de manière très réduite et se limitera cryptage des données sur disque. Finalement des grandes nouveautés, seule Avalon, la nouvelle interface graphique en 3D, sera de la partie.

Je ne peux m'empêcher de m'interroger sur les causes de ces retards à répétition que l'on tente de camoufler en faisant fondre les fonctionnalités comme neige au soleil. La firme de Redmond a les moyens financiers d'engager les meilleurs codeurs du monde alors pourquoi semble-t-elle éprouver tant de difficultés à sortir son prochain système d'exploitation ? Les procès à répétition et la montée en puissance du Logiciel Libre forment peut-être un début de réponse.

mardi 26 avril 2005 à 12h36 - Général 3   0

Standards Web et initiation

Voici le commentaire d'un ami qui découvre XHTML après avoir un peu bidouillé du HTML il y a quelques années :

c'est plus simple quand c'est strict je trouve, au moins ça te force à coder proprement du début à la fin, la où du HTML pourrait te permettre quelques erreurs pour finalement te les faire payer plus loin

Je rencontre également ce genre de réflexions à chaque fois que je montre comment faire une mise en page avec CSS par rapport à une mise en page avec des tableaux. Pour les personnes qui doivent apprendre l'une ou l'autre de ces techniques choisissent invariablement celle utilisant CSS car elle est bien plus logique.

Cela renforce mon idée que les (derniers) défenseurs des mises en page avec des tableaux sont des personnes refusant de se remettre en question. C'est grave dans un métier comme le notre.

Mise à jour : Dans son commentaire, YoGi me fait judicieusement remarquer que mon billet n'est pas très clair. Il faut comprendre que l'ami en question, comme beaucoup de novices, amalgame tout ce qui est standards web (code valide, accessible, sémantique, mise en page avec CSS etc.) sous l'appellation XHTML tandis que tout ce qui est pratiques passéistes (code invalide, inaccessible, mise en page avec des tableaux etc.) est du HTML à ses yeux.

Bien entendu, il est parfaitement possible de faire du HTML propre comme du XHTML sale.

lundi 25 avril 2005 à 13h28 - Développement Web 10   0

L'hypocrisie ne connait pas les jours fériés

Pour couper court à la polémique concernant le fait que le lundi de la pencôte soit férié ou non, la SNCF a décidé que ses salariés ne le travaillerait pas mais en compensation travailleraient 1 minute et 52 secondes de plus chaque jour.

Apparemment choqué par cette décision, Nicolas Sarkozy a déclaré à l'émission Grand Jury La solidarité telle que je la vois, c'est les mêmes contraintes pour tout le monde. Quel bel exemple d'hypocrisie car cette mesure qu'il défend la main sur le coeur est profondément injuste. En effet, seuls les salariés vont contribuer à cette solidarité. Les revenus du capital, eux, en sont totalement exemptés.

Dans le même registre, là où certaines entreprises proposent de payer de leur poche le coût de cette journée afin de ne pas faire travailler leurs salariés, d'autres se veulent sympathiques en proposant d'échanger cette journée contre une journée de RTT. Effectivement, ainsi c'est moins contraignant, mais la journée de RTT prise à cette occasion est une journée de RTT en moins sur le contingent annuel. Bel exemple de poudre aux yeux encore une fois !

lundi 25 avril 2005 à 07h45 - Humeur 1   0

Le clochard des standards

En ce moment, mon livre de chevet est la traduction Française du classique de Jeffrey Zeldman : Design web : utiliser les standards : CSS et XHTML.

Hier soir, ma douce lisait à mes côtés quand elle remarqua la pochette et me demanda avec une naïveté aussi délicieuse que non feinte : pourquoi ils ont mis un clochard sur la pochette de ton livre ?.

jeudi 21 avril 2005 à 13h16 - Développement Web 2   0

Habemus ras-le-bolum

Après nous avoir passablement lobotomisés avec la mort du souverain poussif Jean-Paul II, voilà que nos chers médias se posent la question à la mode : le cardinal Ratzinger, Benoit XVI de son nom d'artiste, est-il conservateur ?

Implicitement cela sous-entend que Jean-Paul II ne l'était pas. Or, si on y regarde de plus près, le cardinal Ratzinger était un compagnon proche et fidèle de feu Jean-Paul II. Il s'oppose pêle-mêle à l'ordination de femmes prêtres, au mariage des prêtres, à la contraception, à l'avortement et condamne l'homosexualité.

A l'énoncé de ses positions tranchées et retrogrades (voire criminelles dans le cas du refus de la contraception dans un continent comme l'Afrique), il est clair que Benoit XVI est un pape conservateur mais en quoi cette ligne est-elle différente de celle de Jean-Paul II ? Ne prônait-il pas ces même principes ? Il faudrait voir à ne pas le laver de tous ses pêchés simplement parce qu'il est mort.

Enfin, pour terminer voici un extrait de la page d'accueil de Yahoo, qui montre à quel point l'Eglise est loin des préoccupations des hommes ou bien à quel point l'Homme est contradictoire, selon le point de vue.

mercredi 20 avril 2005 à 13h09 - Humeur 21   0

Opera comique

Je ne sais pas ce que prennent les créatifs d'Opera mais ils se sont lâchés pour annoncer la version 8 de leur navigateur.

mardi 19 avril 2005 à 13h24 - Général 8   0

MCM est également touchée

Le site de la chaine MCM est touché à son tour par l'affichage de messages d'erreur PHP.

lundi 18 avril 2005 à 13h20 - PHP 1   0

Problème de couleur de texte - Amélioration

Après quelques recherches sur Internet, j'ai découvert un article expliquant une manière de déterminer la luminosité d'une couleur. Je me suis donc empressé d'améliorer ma fonction qui permet de déterminer la couleur d'un texte en fonction de celle du fond.

Le principe est simple : on donne un poids différent à chacune des composantes de la couleur selon l'importance qu'elle a dans la perception que nous avons de la luminosité. La formule suivante retourne une valeur comprise entre 0 et 255. 0 étant la plus faible luminosité possible et 255 la plus forte.

luminosité = ((rouge x 299) + (vert x 587) + (bleu x 114))
                  / 1000

Ma fonction devient donc :

function couleurTexte($couleur)
{
    $rouge      = hexdec(substr($couleur, 1, 2));
    $vert       = hexdec(substr($couleur, 3, 2));
    $bleu       = hexdec(substr($couleur, 5, 2));
    $luminosite = (($rouge * 299) + ($vert * 587) + ($bleu * 114))
                      / 1000;
    return ($luminosite > 127) ? '#000000' : '#FFFFFF';
}

Tandis que mon plugin Smarty devient ceci :

<?php
/**
* Smarty plugin
* @package Smarty
* @subpackage plugins
*/
/**
* Smarty {text_color} function plugin
*
* Type:     function<br>
* Name:     text_color<br>
* Date:     April 15, 2005<br>
* Purpose:  determinate the text color depending on the
                 background color<br>
* Input:
*         - bkg   = color of the background
*         - light = color for the light text (optional,
                       white is default)
*         - dark  = color for the dark text (optional,
                        black is default)
*
* Examples:<br>
* <pre>
* {text_color bkg=#FF0000}
* {text_color bkg=#FF00DE light=#CCCCCC dark=#333333}
* </pre>
*
* @link http://smarty.php.net/manual/en/language.function.
         text_color.php {text_color}
*       (Smarty online manual)
* @author Jean-Marc Fontaine <jmf at durcommefaire dot net>
* @version  1.1
* @param array
* @param Smarty
* @return string
*/
function smarty_function_text_color($params, &$smarty)
{
    if (substr($params['bkg'], 0, 1) != '#') {
        return 'inherit';
    }
   
    $red          = hexdec(substr($params['bkg'], 1, 2));
    $green        = hexdec(substr($params['bkg'], 3, 2));
    $blue         = hexdec(substr($params['bkg'], 5, 2));
    $brightness   = (($red * 299) + ($green * 587) + ($blue * 114))
                         / 1000;
    $dark_color   = isset($params['dark']) ? $params['dark'] :
                                '#000000';
    $ligth_color  = isset($params['light']) ? $params['light'] :
                               '#FFFFFF';
    return ($brightness > 127) ? $dark_color : $ligth_color;
}
/* vim: set expandtab: */
?>

Un comparatif montre que dans certains cas, la nouvelle méthode améliore grandement la lisibilité du texte.

vendredi 15 avril 2005 à 17h52 - PHP 1   0

Mode d'emploi

Voici un extrait du mode d'emploi de gouttes pour les yeux :

Instiller la goutte de collyre dans le cul de sac conjonctival, en tirant légèrement la paupière inférieure vers le bas et en regardant vers le haut.

Limpide non ?

jeudi 14 avril 2005 à 12h39 - Nimportenawak 6   0

Problème de couleur de texte

Récemment, j'ai été confronté à un problème a priori simple. Dans une application PHP, les utilisateurs peuvent choisir une couleur à associer à un élement. Dans la liste des éléments, cette couleur est utilisée comme couleur de fond. Cela est très pratique car très visuel seulement cela peut poser un problème de lisibilité lorsque la couleur de fond est trop proche de celle du texte.

Il y a bien la solution de demander à l'utilisateur une couleur pour le texte en plus de la couleur de fond mais cela est contraignant, d'autant plus qu'il est facile d'automatiser cela.

Toute l'astuce tient dans un chiffre : 102. En effet, c'est la valeur décimale clé pour le canal vert de la couleur. Si la valeur est inférieure ou égale à 102, le texte doit être de couleur claire, sinon de couleur foncée. Cela peut se traduire ainsi en PHP :

function couleurTexte($couleur)
{
    $vert = hexdec(substr($couleur, 3, 2));
    return ($vert > 102) ? '#000000' : '#FFFFFF';
}

Cette fonction reçoit le code hexadécimal de la couleur de fond et retourne le code de la couleur du texte.

Enfin, pour les utilisateurs de Smarty, j'ai écrit ce petit plugin qui implémente cette fonctionnalité de manière un peu plus évoluée :

<?php
/**
* Smarty plugin
* @package Smarty
* @subpackage plugins
*/
/**
* Smarty {text_color} function plugin
*
* Type:     function<br>
* Name:     text_color<br>
* Date:     April 4, 2005<br>
* Purpose:  determinate the text color depending on the
                 background color<br>
* Input:
*         - bkg   = color of the background
*         - light = color for the light text (optional,
                       white is default)
*         - dark  = color for the dark text (optional,
                        black is default)
*
* Examples:<br>
* <pre>
* {text_color bkg=#FF0000}
* {text_color bkg=#FF00DE light=#CCCCCC dark=#333333}
* </pre>
*
* @link http://smarty.php.net/manual/en/language.function.
         text_color.php {text_color}
*       (Smarty online manual)
* @author Jean-Marc Fontaine <jmf at durcommefaire dot net>
* @version  1.0
* @param array
* @param Smarty
* @return string
*/
function smarty_function_text_color($params, &$smarty)
{
    if (substr($params['bkg'], 0, 1) != '#') {
        return 'inherit';
    }
   
    $green       = hexdec(substr($params['bkg'], 3, 2));
    $dark_color  = isset($params['dark']) ? $params['dark'] :
                                '#000000';
    $ligth_color = isset($params['light']) ? $params['light'] :
                               '#FFFFFF';
    return ($green > 102) ? $dark_color : $ligth_color;
}
/* vim: set expandtab: */
?>

mardi 12 avril 2005 à 13h45 - PHP 3   0

La citation du jour

In a world without fences, who needs Gates and Windows?

Via le Standblog : Firefox à l'éducation nationale

lundi 11 avril 2005 à 18h30 - Développement Web 2   0

M pas mal

Le dernier album de M contient des fichiers multimédia dont voici l'arborescence :

Dommage que les gens qui ont réalisé la partie multimédia aient oublié de supprimer les fichiers cachés que créé Mac OS X tels que .Trashes et .DS_Store. Le plus concasse est que la partie multimédia de ce disque est réservée à Windows.

samedi 9 avril 2005 à 17h57 - Nimportenawak 7   0

La série continue ...

La série des gros sites mal configurés s'allonge on dirait :

mercredi 6 avril 2005 à 08h34 - PHP 7   0

Une machine à laver intelligente ?

Ce soir dans "On a tout essayé", le célébrissime Jérôme Bonaldi a présenté une machine à laver qui a la particularité de possèder une assistance vocale. En clair, une voix féminine vous guide à chaque étape du processus.

La démonstration semble probante, la machine est notamment capable de vous prévenir au cas où elle détecterait une fuite d'eau. La question que je me pose c'est : mais pourquoi ne ferme-t-elle pas sa prise d'eau pour commencer ?. Ca serait sans doute plus utile à mon sens.

Ce qui a fini de me convaincre que cette nouveauté n'était que de la poudre au yeux, c'est quand la machine a dit "veuillez vous assurer que la machine est fermée et appuyez sur le bouton départ". Pourquoi vérifier ? Elle devrait quand même savoir si elle est fermée ou non il me semble !

lundi 4 avril 2005 à 19h54 - Nimportenawak 6   0

XHTML - CSS - DotClear - Technorati

Les billets de ce blog sont sous licence Creative Commons