Archive pour la catégorie ‘Webdesign’

Update pour Firefox 1.0 PR

samedi 2 octobre 2004 | Webdesign

Mozilla Firefox Update

Pas très clair mais ça a le mérite d'être une bonne idée et de marcher.

L'icône n'est pas apparue chez moi, mais en personnalisant la barre d'icônes il est possible de la rajouter puis de cliquer dessus volontairement pour vérifier les mises à jour disponibles. Autre solution encore plus manuelle : Télécharger le patch au format XPI proposé par la fondation Mozilla.

Voir aussi : Important Security Update for Firefox Available et BlogZiNet : Mise à jour de sécurité de Firefox 1.0 PR.

JavaScript : Readonly dynamique

mardi 28 septembre 2004 | Webdesign

JavaScript

Contrairement à d'autres attributs de la balise <input> en (X)HTML, l'attribut readonly (qui grise le champ pour l'utilisateur) ne peut être modifié dynamiquement en JavaScript de la manière la plus simple :

objet.readonly=false;

Ceci provient principalement du fait que cet attribut modifie le comportement de la balise par sa seule présence. Dans les premières versions de HTML il suffisait de le placer, sans valeur :

<input type="text" name="nom" value="arf" readonly>

Désormais, en XHTML, il est obligatoire de lui associer une valeur, par défaut readonly :

<input type="text" name="nom" value="arf" readonly="readonly" />

Il faudra donc contourner ce premier réflexe par l'utilisation de removeAttribute, qui va retirer readonly. En ajoutant quelques parades pour le support de JavaScript de plusieurs générations de navigateurs :

function inputenable(id,state) {
 var divObj = null;
  if (document.getElementById) {
  divObj = document.getElementById(id);
 } else if(document.all) {
  divObj = document.all(id);
 } else if (document.layers) {
  divObj = document.layers[id];
 }
 if(state && divObj) {
  divObj.removeAttribute("readonly");
 } else if(divObj) {
  divObj.setAttribute("readonly","readonly");
 }
}

Appelé de la manière suivante :

inputenable(id,false); ou inputenable(id,true);

id est l'ID de l'élément dans le document à "readonlyser", et le booléen son état (true : readonly, false : read/write). Par exemple avec une checkbox qui active un textfield :

<input type="text" id="foo" /> <input type="checkbox" onclick="inputenable('foo',this.checked);" />

Mozilla Thunderbird 0.8 fr

samedi 25 septembre 2004 | Webdesign

Mozilla Thunderbird

Mozilla Thunderbird 0.8 en français est disponible sur FrenchMozilla.

Outre quelques améliorations de rapidité, des corrections de bugs, l'ajout du support des RSS, il faut noter l'arrivée tant attendue de la Boîte globale, qui reflète le mode dont Outlook Express classe les e-mails reçus : dans un seul dossier par défaut; contrairement à Thunderbird qui jusqu'à présent disposait d'un dossier spécifique pour chaque boîte. Mais finalement on s'y habitue... Par contre il serait bien de pouvoir combiner les corbeilles, brouillons et modèles car l'affichage est vite surchargé avec plusieurs comptes mail.

Donc pour résumer, l'activation de la Boîte globale se fait via le menu Outils, Paramètres des Comptes, Paramètres serveur, bouton Avancés, onglet POP. C'est bien caché, trop même. Plus d'infos dans la FAQ en anglais.

Autre nouveauté très pratique, la recherche rapide dans la liste des mails ou dans le corps de message :

Thunderbird Search

Voir aussi les Release notes.

Une faille, deux failles, trois failles... un gouffre

vendredi 24 septembre 2004 | Webdesign

Des messages exploitent une faille d'Internet Explorer pour infecter les internautes

Une faille d'Internet Explorer serait actuellement exploitée par des polluposteurs pour installer une porte dérobée chez les internautes qui décident de se désabonner de leurs listes d'envoi.

Depuis hier, des polluposteurs auraient largement diffusé des messages non sollicités contenant un lien suspect (click here to remove) pour se désabonner de leurs listes d'envoi. Cette pratique en apparence louable, et exigée par la loi américaine Can-Spam, cache toutefois un piège car les internautes qui cliquent sur le lien en question chargent une page Web exploitant une faille d'Internet Explorer pour télécharger et installer une porte dérobée. Selon F-Secure, celle-ci pourrait ensuite être utilisée pour transformer les PC en machines à expédier du pourriel.

La faille du «glisser-déposer» (drag and drop) d'Internet Explorer, découverte le 19 août dernier, n'a pas encore été corrigée par Microsoft; elle serait ainsi utilisée pour télécharger et installer, à l'insu des internautes, le module Agent.ce, une porte dérobée contenue dans le fichier «windows-update32.exe».

Le lien contenu dans les pourriels serait également utilisé pour confirmer la validité des adresses de courriel, ce qui permet d'augmenter leur valeur lors de la revente à d'autres polluposteurs.

Vu sur Branchez-vous. Alors bien sûr ensuite on lit des choses comme Quand le web prend un coup de vieux (Courrier International) avec quelques passages croustillants :

Alors que 80 % du trafic actuel du courrier électronique est encombré par les spams, et que les virus et les vers prolifèrent sur la Toile, l’enjeu de la rénovation de l'architecture du web est de parvenir à construire un réseau plus accessible et plus sécurisé".

Ont-ils seulement réalisé qu'un réseau ne se gère pas seulement côté hardware mais qu'il est bien plus vulnérable aux mauvaises conceptions côté software ? La pollution du traffic par le spam ne serait pas si intense si IE et OE ne l'accueillaient pas à bras ouverts.

Bien entendu, niveau soft, il est toujours recommandé de se tourner vers un navigateur alternatif. A lui seul, Firefox a mis le feu ces derniers jours et SpreadFirefox affichera certainement un score approchant les 2 millions de téléchargements en 10 jours. Espérons que l'engouement sera toujours le même lors de la sortie de la version 1.0 finale.

Que les partisans soient désormais rassurés : ils n'ont pas prêché dans le vide. Mais il reste du travail - Thunderbird a un peu été mis de côté -, même si les statistiques de certains sites sont prometteuses comme le signale Tristan Nitot. L'inertie est acquise et le premier avantage aujourd'hui sera une meilleure prise en compte des navigateurs alternatifs par les sites généralistes qui exigeaient jusqu'à présent un accès via Internet Explorer.

Get Firefox!

Au passage, Jesse Ruderman a publié un graphique intéressant qui montre l'évolution du nombre de bugs à corriger et de bugs corrigés avant la sortie de la version finale de Firefox. Les courbes se rapprochent, ça se réchauffe.

Dotclear a un petit fumet de gruyère

lundi 20 septembre 2004 | Webdesign

Gruyère

Dotclear est touché par une faille de sécurité, dans toutes ses versions. Il est recommandé à tous ceux qui utilisent ce très bon script de le mettre à jour vers la version 1.2 RC2 ou d'appliquer un correctif car toutes les versions sont touchées.

Toutes les infos sont dans l'annonce sur le forum Dotclear. Quoiqu'il en soit, le must est toujours de faire un dump régulier de la db pour pouvoir tout récupérer au cas où.

Allez Olivier on te pardonne :)

Les standards du web ça déchire sa race en vrai

samedi 18 septembre 2004 | Webdesign

Tous les moyens sont bons pour promouvoir les standards :

ojourdui je vé vous lépar 2 firefox, traduir part "renar ki te brule ton PC" !!!! firefox nike ca race coman ca péte ! Déja, va choper le sur ce sit (wesh wesh ta vu cé en céfran com mèm).
[...]
aprè, tu clik sur l'icon ki déchir sa mèr, une planèt avec un renar !!!!! le truc tro tro tro stylé. regar la fenetr coman el inspir la confiansse ... tu tap l'adress en o, genre ce sit, et boum tu tombes sur ce sit ! mais cai mieu que exploreur, parce ke si tu fé CTRL + T (koi ta pa compri ? t'appui sur ctrl et pui T en mem tan) et MAGIIIK ta un onglay ki s'ouvre ! le truk TRO PUISSANN !!!!
[...]

La suite sur http://sexystandards.skyblog.com/. Je ne sais pas de quel mousquetaire provient cette oeuvre magistrale de second degré, mais c'est assurément bien pensé et bien dit :

un blog sur lé standar du web et lé nouvelle teknologies ki von bien, passke lé standar du oueb ca déchire sa race en vrai

On s'y croirait. C'est donc un des rares skyblogs à démontrer son utilité. Fais tourner ! En attendant, j'ai honte... je vais être google-référencé pour des mots abominables.

Dear God, please make stop the skyblogs.

mysql_fetch_row vs mysql_fetch_array

samedi 28 août 2004 | Webdesign

MySQL

Choisir entre les deux fonctions PHP mysql_fetch_row() et mysql_fetch_array() peut sembler anodin, mais c'est une question souvent posée et qui a déjà donné lieu à de nombreux débats.

A première vue les descriptions de la documentation PHP peuvent indiquer une piste :

  • mysql_fetch_array : Retourne une ligne de résultat MySQL sous la forme d'un tableau associatif, d'un tableau indexé, ou les deux
  • mysql_fetch_row : Retourne une ligne de résultat MySQL sous la forme d'un tableau

On peut constater que la première méthode nécessite plus de traitement car elle renvoie un tableau associatif, c'est à dire en utilisant les noms des champs comme indices. Généralement on peut apercevoir ceci :

$result=mysql_query('SELECT nom_du_champ1,nom_du_champ2 FROM table');
while($array=mysql_fetch_array($result)) {
  /* utilisation de $array['nom_du_champ1']... ; */
}

Déjà, le fait d'associer les noms des champs dans le tableau nécessite un investissement en ressources plus important. Des indices sous forme de chaînes de caractères seront plus longs à traiter que des simples valeurs numériques.

La seconde méthode est donc plus légère. Principalement car elle ne retourne qu'un tableau indexé numériquement. Mais comment l'utiliser de la meilleure manière ? L'inconvénient est de devoir s'y retrouver entre cette indexation numérique et les noms habituels des champs, spécialement lorsque la structure de la table peut changer au cours du temps (ajout, modification ou suppression de champs). Néanmoins on peut contourner cette limitation de deux façons :

  • Pour s'affranchir d'une potentielle modification des champs, de leur ordre dans la table : spécifier clairement dans la requête (ici SELECT) les champs à prendre en compte. Au-delà de l'aspect pratique cela est conseillé pour obtenir de meilleures performances, surtout lorsque la table contient beaucoup de champs différents qui ne seront pas forcément utiles.
  • Pour s'affranchir du nom des colonnes : utiliser l'élément de langage list() qui permet de rassembler les variables sous forme de tableau, pour les assigner en une seule ligne.
$result=mysql_query('SELECT nom_du_champ1,nom_du_champ2 FROM table');
while(list($champ1,$champ2)=mysql_fetch_array($result)) {
  /* utilisation de $champ1, $champ2... ; */
}

Pourtant, il est précisé dans la doc que :

Il est important de souligner que mysql_fetch_array() n'est PAS significativement plus lente que mysql_fetch_row(), tandis qu'elle ajoute un confort d'utilisation important.

A cela il faut rajouter que 3 cas de figure se présentent alors, avec l'ajout de la fonction mysql_fetch_assoc(), classés du plus rapide au plus lent :

  1. mysql_fetch_row() : tableau d'indices numériques ($array[1])
  2. mysql_fetch_assoc() : tableau associatif ($array['nom_du_champ'])
  3. mysql_fetch_array() : tableau d'indices numériques + tableau associatif

En gros, mysql_fetch_array effectue le travail des deux premières simultanément. Donc tant qu'à choisir, autant le faire entre row et assoc. Il existe de surcroît deux outsiders :

Là encore il s'agit d'une optimisation au niveau atomique. Il est inutile de reprendre tous vos scripts pour remplacer l'une ou l'autre fonction. Rien n'empêchera la totalité de la boucle de prendre du temps si la requête est mal constituée. Ceci fera l'objet d'un prochain sujet de discussion :)

PHP comme langage générique

jeudi 19 août 2004 | Webdesign

PHP ROX

Un article du Linuxjournal : PHP as a General-Purpose Language propose d'utiliser PHP dans d'autres domaines que celui où il exhibe ses biceps : le web.

Car PHP possède toutes les caractéristiques d'un langage généraliste qui peut être utile dans un bon nombre d'environnements. Dans cet article, Marco Tabini illustre la façon de procéder pour utiliser la version en ligne de commande et effectuer des opérations complexes dans le shell, comme manipuler des fichiers, lire et parser des documents XML (ici un feed RSS), gérer des tâches avec cron...

Cookies are delicious delicacies

lundi 26 juillet 2004 | Webdesign

Cookies

Fin de la mythique phrase "Cookies are delicious delicacies" décrivant les cookies dans les options de Firefox. Ils sont désormais des - traduction rapide et approximative - morceaux d'information stockés par des sites web sur votre ordinateur. Ils sont utilisés pour mémoriser des informations de login (identification) et d'autres données.

Exit la gastronomie donc, et les petites jokes émiettées au hasard. C'est désormais au très grand public que le projet s'adresse :

<blake2> how times have changed. I guess we really are shipping something.

Aide-mémoire d'éléPHPant

lundi 19 juillet 2004 | Webdesign

Elephant PHP

Quelques toutes petites fonctions aide-mémoire PHP, qui me sont utiles depuis quelques années :

function getmicrotime() {
 $mtime=microtime();
 $mtime=explode(' ',$mtime);
 $mtime=$mtime[1] + $mtime[0];
 return $mtime;
}

Renvoie un temps local du serveur en microsecondes, pratique pour effectuer des benchs sur des scripts (récupérer le temps au début, à la fin et faire une soustraction)

function checkemail($email) {
return eregi('^[_a-z0-9-]+(\.[_a-z0-9-]*)*@[a-z0-9-]+(\.[a-z0-9-]+)+$', $email);
}

Renvoie true si la syntaxe de l'e-mail passé en argument est correcte

A noter aussi que PHP 5 a enfin été released.

Quelques découvertes en vrac, en plus des principales annoncées, concernant l'utilisation de PHP en ligne de commande :

  • Sous win, php.exe a une icône (woawoaw).
  • Il est toujours possible d'exécuter un script localement sans serveur web grâce à la commande php.exe -f script.php (simple rappel car cela est très utile pour ceux qui veulent coder en vitesse des petits outils sans vouloir se plonger dans le C).
  • Par contre php.exe ne dispose plus de l'option -q (Quiet-mode, qui supprime la sortie des headers HTTP, très utile avec l'option -f) car elle est implicite.
  • D'autres options à découvrir (-r, -B, -R, -F, -E, -H) en tapant php -? en ligne de commande.

Il paraît qu'il serait désormais possible de compiler le tout, mais pour l'instant cela dépendrait d'une application payante.

Enfin, la version CGI se nomme php-cgi.exe (auparavant php.exe) et la version CLI se trouve dans le répertoire racine (avant cli/php.exe). Un nouveau mode intéressant a également été introduit : php-win.exe. Qui est une CLI mais qui n'ouvre pas de console (comme php-gtk).

Voir aussi les nouvelles fonctions introduites.