<?xml version="1.0" encoding="iso-8859-1"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>OnFaitDuWeb.com, </title>
		<link>http://www.onfaitduweb.com/</link>
		<description>Conception Web, applications sur mesure, Respect des standards, Open Source, Design, Web 2.0</description>
		<pubDate>Fri, 12 Mar 2010 00:00:00 -0500</pubDate>
		<generator>Quarnet</generator>
		<language>fr</language>
		<item>
			<title>.htaccess</title>
			<link>http://www.onfaitduweb.com/487--htaccess.html</link>
			<comments>http://www.onfaitduweb.com/487--htaccess.html#comments</comments>
			<pubDate>Fri, 12 Mar 2010 00:00:00 -0500</pubDate>
			<dc:creator>Guillaume Legault</dc:creator>
			<guid isPermaLink="false">http://www.onfaitduweb.com/487--htaccess.html</guid>
			<description>
Problème :Que faire si on a plus que 9 arguments à gérer dans une règle de réécriture ?Solution :On peut utiliser l'instruction RewriteMap avec le paramètre prg, qui lui apelle un script Perl.Exemple :Contenu du fichier .htaccess :RewriteMap manyargs prg:/home/projet/splitargs.plRewriteEngine OnRewriteRule ^/blog/(.*)$ /blog.php?$(manyargs:$1) [PT]Contenu du fichier splitargs.pl :#!/usr/bin/perl$|=1my $i=0;my @args = split !/!, $_;foreach my $args (@args) {  $i++;  $return .= "&amp;arg$i=$arg";}$return =~ s/^&amp;//;print $returnDiscussion :Cette règle permettra un nombre indéfini d'arguments d'apparaître dans l'URL et générera une requête avec ces arguments nommés séquentiellement.Cela peut s'avérer très utile dans le cas ou on a plus de 9 arguments à traiter. Le traitement des expressions régulières dans mod_rewrite est limité à 9 arguments tout simplement parce que le 10e argument ($10) serait indifférentiable du 1er ($1) suivi d'un "0".Je trouve étrange qu'on soit limité de la sorte... selon moi il aurait pu y avoir un moyen d'échapper les arguments à 2 chiffres. Mais bon, avec l'instruction RewriteMap et un simple script Perl, il est possible de pallier cette limitation!</description>
			<content:encoded>
				<![CDATA[ <p><h2>Problème :</h2><p>Que faire si on a plus que 9 arguments à gérer dans une règle de réécriture ?</p><p></p><h2><br/></h2><h2>Solution :</h2><p>On peut utiliser l'instruction <span style="font-style: italic;">RewriteMap</span> avec le paramètre <span style="font-style: italic;">prg</span>, qui lui apelle un script Perl.</p><p></p><h2><br/></h2><h2>Exemple :</h2><p>Contenu du fichier .htaccess :</p><pre style="background-color: rgb(187, 187, 187);">RewriteMap manyargs prg:/home/projet/splitargs.pl</pre><pre style="background-color: rgb(187, 187, 187);">RewriteEngine On</pre><pre style="background-color: rgb(187, 187, 187);">RewriteRule ^/blog/(.*)$ /blog.php?$(manyargs:$1) [PT]</pre><p>Contenu du fichier splitargs.pl :</p><pre style="background-color: rgb(187, 187, 187);">#!/usr/bin/perl</pre><pre style="background-color: rgb(187, 187, 187);">$|=1</pre><pre style="background-color: rgb(187, 187, 187);">my $i=0;</pre><pre style="background-color: rgb(187, 187, 187);">my @args = split !/!, $_;</pre><pre style="background-color: rgb(187, 187, 187);">foreach my $args (@args) {</pre><pre style="background-color: rgb(187, 187, 187);">  $i++;</pre><pre style="background-color: rgb(187, 187, 187);">  $return .= "&arg$i=$arg";</pre><pre style="background-color: rgb(187, 187, 187);">}</pre><pre style="background-color: rgb(187, 187, 187);">$return =~ s/^&//;</pre><pre style="background-color: rgb(187, 187, 187);">print $return</pre><h2><br/></h2><h2>Discussion :</h2><p>Cette règle permettra un nombre indéfini d'arguments d'apparaître dans l'URL et générera une requête avec ces arguments nommés séquentiellement.</p><p>Cela peut s'avérer très utile dans le cas ou on a plus de 9 arguments à traiter. Le traitement des expressions régulières dans mod_rewrite est limité à 9 arguments tout simplement parce que le 10e argument ($10) serait indifférentiable du 1er ($1) suivi d'un "0".</p><p>Je trouve étrange qu'on soit limité de la sorte... selon moi il aurait pu y avoir un moyen d'échapper les arguments à 2 chiffres. Mais bon, avec l'instruction RewriteMap et un simple script Perl, il est possible de pallier cette limitation!</p></p> ]]>
			</content:encoded>
		</item>
		<item>
			<title>Nouveau DRM pour Ubisoft</title>
			<link>http://www.onfaitduweb.com/486-nouveau-drm-pour-ubisoft.html</link>
			<comments>http://www.onfaitduweb.com/486-nouveau-drm-pour-ubisoft.html#comments</comments>
			<pubDate>Mon, 01 Mar 2010 00:00:00 -0500</pubDate>
			<dc:creator>Pierre Paul Lefebvre</dc:creator>
			<guid isPermaLink="false">http://www.onfaitduweb.com/486-nouveau-drm-pour-ubisoft.html</guid>
			<description>Ubisoft a présenté il y a environ un mois un nouveau système DRM. En résumé, un DRM(Digital Rights Management) est un système qui permet de vérifier que le jeu ou l'application ne sont pas une copie. Ces systèmes permettent en théorie de réduire le taux de piratage, mais en pratique, ils amènent beaucoup de problèmes chez les clients.Certains DRM étaient tellement restrictifs que beaucoup de clients qui avaient acheté des jeux légalement étant incapable de jouer avec leurs jeux nouvellement achetés. Le système avait des failles ou n'avait pas été testé assidument sur tous les systèmes d'exploitation. Un des systèmes qui avait été pointé particulièrement du doigt était Starforce parce qu'il simulait un lecteur CD-ROM pour faire ses tests de vérifications. Le lecteur CD-ROM virtuel est venu entrer en conflit avec certains lecteurs CD-ROM bien réel et rendait ces lecteurs complètement inutilisables. Le gamer devait donc tout simplement réinstaller Windows afin de pouvoir utiliser son lecteur. Le système a été piraté assez rapidement, au point tel que certaines personnes qui avaient acheté le jeu le pirataient afin d'éviter des problèmes.Le nouveau système de Ubisoft a décidé de s'y prendre d'une autre façon. Plutôt que d'installer des trucs bizarres et qui vont peut-être entrer en conflit avec certains ordinateurs, ils ont décidé d'obliger l'utilisateur d'avoir une connexion sur internet s'il voulait jouer. Le jeu utilisant ce DRM ferait des vérifications périodiquement pendant que vous jouez (dans le jargon, on appelle ça Phoning home). Ubisoft a poussé la chose un peu plus loin en gardant sur leur serveur votre partie enregistrée.Voici les principaux points négatifs soulevés :Vous devez toujours être en ligne... en d'autres mots, si votre connexion internet flanche, vous perdez votre progression dans le jeu. L'implémentation du jeu ici est cruciale. Les développeurs pourraient forcer le jeu à se fermer et vous perdriez votre progression, ou ils pourraient simplement vous donner un avertissement en attendant que votre connexion internet revienne. Vous pourriez perdre votre connexion à cause de votre ISP (Bell, Vidéotron, etc.) à cause de votre rooter ou simplement à cause d'un câble qui s'est fait manger par votre chien. Il deviendrait impossible de revendre votre jeu. Le jeu serait associé à votre compte Ubisoft, vous seriez donc obligé de vendre votre compte Ubisoft aussi, ce qui est impossible selon la condition d'utilisation (TOS) des comptes Ubisoft. Si les serveurs d'Ubisoft sont fermés pour réparation ou pour une mise à niveau, vous serez dans l'impossibilité de jouer, parce que les parties enregistrées sont sur leur serveur et l'authentification est impossible à faire.Possiblité de jouer sans CD/DVD, qui était le DRM par défaut de plusieurs jeux.Les bons côtés maintenant :Si tout fonctionne, on pourrait rêver à une diminution du prix des jeux parce qu'il y aurait moins de piratage, mais j'imagine que le prix va rester le même et les profits seront redistribués sur d'autres franchises et le développement de nouveaux jeux.Possiblité de jouer chez un ami avec votre personnage sans avoir à amené votre partie enregistrée. Le fait d'avoir votre partie sur leurs serveurs vous permet de jouer de n'importe ou, pourvu que le jeu soit installé. En théorie c'est une bonne idée, mais en pratique, si vous allez chez ami, c'est pas pour qu'il vous regarde jouer et si vous le faites, vous amenez votre ordinateur. Pourtant, Ubisoft met l'emphase sur ce "très" bon côté. Possiblité d'avoir des amis et de parler avec eux pendant que vous jouer, un peu comme fait Steam ou Battle.net entre autres.En en parlant avec Guillaume, nous avons trouvé des bons côtés qui malheureusement, n'ont pas été mentionnés par Ubisoft pour l'instant :Des marchants légendaires se promenant de joueur en joueur et vendant les items achetés/vendus par les autres joueurs. Nous aurions de vrais marchands itinérants! Des troupes ennemies légendaires se promenant aussi de joueur en joueur. Présentement les ennemis sont gérés au hasard ou reviennent toutes les X minutes.Rendre possible de switcher entre le jeu single player et multiplayer plus facilement et avec plus de transparence. Je vois particulièrement l'intérêt ici, vous êtes en train de jouer avec vos amis et tout à coup votre petit frère commence à télécharger un film en HD sur sa Xbox360, il serait possible de tomber en mode single player et continuer à jouer où vous étiez rendu. Le système d'authentification et d'enregistrement de partie demande beaucoup moins de bande passante qu'un jeu complètement en ligne.Avoir les bons cotés des MMO sans avoir les mauvais cotés : Système de vente aux enchères sans les serveurs trop lents par exemple. Avoir des émissaires ou des factions qui se promènent entre les joueurs, selon les missions accomplies et les choix faits par les joueurs, le monde diplomatique et ou physique du jeu pourrait changer. Par exemple, 60% des gens décident d'aider le scientifique fou et une ville complète disparaît de la carte pour tous les joueurs. Une ville se fait conquérir par le royaume ennemi parce que la majorité des joueurs ont décidé d'aider le royaume.Beaucoup de bonnes (et mauvaises!) idées peuvent ressortir avec un système qui oblige le joueur à avoir une connexion internet constante. Les implémentations de ces exemples se font au niveau du jeu et non pas au niveau du DRM, mais si le DRM oblige l'utilisateur à être connecté, les implémentations deviennent beaucoup plus faciles à réaliser. Personnellement, j'espère que le système fonctionnera et qu'il profitera des ouvertures qu'il apporte, mais j'ai bien peur que beaucoup de pirates s'amuseront à faire planter les serveurs de Ubisoft pour les obliger à le retirer. Si les serveurs ne tiennent pas le coup devant les pirates, les gens vont commencer à poursuivre Ubisoft parce que les biens qu'ils ont achetés sont inutilisables.</description>
			<content:encoded>
				<![CDATA[ <p>Ubisoft a présenté il y a environ un mois un nouveau système DRM. En résumé, un DRM(Digital Rights Management) est un système qui permet de vérifier que le jeu ou l'application ne sont pas une copie. Ces systèmes permettent en théorie de réduire le taux de piratage, mais en pratique, ils amènent beaucoup de problèmes chez les clients.<br/><br/>Certains DRM étaient tellement restrictifs que beaucoup de clients qui avaient acheté des jeux légalement étant incapable de jouer avec leurs jeux nouvellement achetés. Le système avait des failles ou n'avait pas été testé assidument sur tous les systèmes d'exploitation. Un des systèmes qui avait été pointé particulièrement du doigt était <a href="http://fr.wikipedia.org/wiki/Starforce">Starforce</a> parce qu'il simulait un lecteur CD-ROM pour faire ses tests de vérifications. Le lecteur CD-ROM virtuel est venu entrer en conflit avec certains lecteurs CD-ROM bien réel et rendait ces lecteurs complètement inutilisables. Le gamer devait donc tout simplement réinstaller Windows afin de pouvoir utiliser son lecteur. Le système a été piraté assez rapidement, au point tel que certaines personnes qui avaient acheté le jeu le pirataient afin d'éviter des problèmes.<br/><br/>Le nouveau système de Ubisoft a décidé de s'y prendre d'une autre façon. Plutôt que d'installer des trucs bizarres et qui vont peut-être entrer en conflit avec certains ordinateurs, ils ont décidé d'obliger l'utilisateur d'avoir une connexion sur internet s'il voulait jouer. Le jeu utilisant ce DRM ferait des vérifications périodiquement pendant que vous jouez (dans le jargon, on appelle ça Phoning home). Ubisoft a poussé la chose un peu plus loin en gardant sur leur serveur votre partie enregistrée.<br/><br/>Voici les principaux points négatifs soulevés :<ul><li>Vous devez toujours être en ligne... en d'autres mots, si votre connexion internet flanche, vous perdez votre progression dans le jeu. <br/>L'implémentation du jeu ici est cruciale. Les développeurs pourraient forcer le jeu à se fermer et vous perdriez votre progression, ou ils pourraient simplement vous donner un avertissement en attendant que votre connexion internet revienne. Vous pourriez perdre votre connexion à cause de votre ISP (Bell, Vidéotron, etc.) à cause de votre rooter ou simplement à cause d'un câble qui s'est fait manger par votre chien. </li>
<li>Il deviendrait impossible de revendre votre jeu. Le jeu serait associé à votre compte Ubisoft, vous seriez donc obligé de vendre votre compte Ubisoft aussi, ce qui est impossible selon la condition d'utilisation (TOS) des comptes Ubisoft.</li>
<li> Si les serveurs d'Ubisoft sont fermés pour réparation ou pour une mise à niveau, vous serez dans l'impossibilité de jouer, parce que les parties enregistrées sont sur leur serveur et l'authentification est impossible à faire.</li>
<li>Possiblité de jouer sans CD/DVD, qui était le DRM par défaut de plusieurs jeux.</li>
</ul><p>Les bons côtés maintenant :<ul><li>Si tout fonctionne, on pourrait rêver à une diminution du prix des jeux parce qu'il y aurait moins de piratage, mais j'imagine que le prix va rester le même et les profits seront redistribués sur d'autres franchises et le développement de nouveaux jeux.</li>
<li>Possiblité de jouer chez un ami avec votre personnage sans avoir à amené votre partie enregistrée. Le fait d'avoir votre partie sur leurs serveurs vous permet de jouer de n'importe ou, pourvu que le jeu soit installé. En théorie c'est une bonne idée, mais en pratique, si vous allez chez ami, c'est pas pour qu'il vous regarde jouer et si vous le faites, vous amenez votre ordinateur. Pourtant, Ubisoft met l'emphase sur ce "très" bon côté.</li>
<li> Possiblité d'avoir des amis et de parler avec eux pendant que vous jouer, un peu comme fait Steam ou Battle.net entre autres.</li>
</ul><p>En en parlant avec Guillaume, nous avons trouvé des bons côtés qui malheureusement, n'ont pas été mentionnés par Ubisoft pour l'instant :<ul><li>Des marchants légendaires se promenant de joueur en joueur et vendant les items achetés/vendus par les autres joueurs. Nous aurions de vrais marchands itinérants!</li>
<li> Des troupes ennemies légendaires se promenant aussi de joueur en joueur. Présentement les ennemis sont gérés au hasard ou reviennent toutes les X minutes.</li>
<li>Rendre possible de switcher entre le jeu single player et multiplayer plus facilement et avec plus de transparence. Je vois particulièrement l'intérêt ici, vous êtes en train de jouer avec vos amis et tout à coup votre petit frère commence à télécharger un film en HD sur sa Xbox360, il serait possible de tomber en mode single player et continuer à jouer où vous étiez rendu. Le système d'authentification et d'enregistrement de partie demande beaucoup moins de bande passante qu'un jeu complètement en ligne.</li>
<li>Avoir les bons cotés des MMO sans avoir les mauvais cotés : Système de vente aux enchères sans les serveurs trop lents par exemple.</li>
<li> Avoir des émissaires ou des factions qui se promènent entre les joueurs, selon les missions accomplies et les choix faits par les joueurs, le monde diplomatique et ou physique du jeu pourrait changer. Par exemple, 60% des gens décident d'aider le scientifique fou et une ville complète disparaît de la carte pour tous les joueurs. Une ville se fait conquérir par le royaume ennemi parce que la majorité des joueurs ont décidé d'aider le royaume.</li>
</ul><p>Beaucoup de bonnes (et mauvaises!) idées peuvent ressortir avec un système qui oblige le joueur à avoir une connexion internet constante. Les implémentations de ces exemples se font au niveau du jeu et non pas au niveau du DRM, mais si le DRM oblige l'utilisateur à être connecté, les implémentations deviennent beaucoup plus faciles à réaliser. Personnellement, j'espère que le système fonctionnera et qu'il profitera des ouvertures qu'il apporte, mais j'ai bien peur que beaucoup de pirates s'amuseront à faire planter les serveurs de Ubisoft pour les obliger à le retirer. Si les serveurs ne tiennent pas le coup devant les pirates, les gens vont commencer à poursuivre Ubisoft parce que les biens qu'ils ont achetés sont inutilisables.</p> ]]>
			</content:encoded>
		</item>
		<item>
			<title>Quelques bases du URL Rewrite</title>
			<link>http://www.onfaitduweb.com/485-quelques-bases-du-url-rewrite.html</link>
			<comments>http://www.onfaitduweb.com/485-quelques-bases-du-url-rewrite.html#comments</comments>
			<pubDate>Tue, 23 Feb 2010 00:00:00 -0500</pubDate>
			<dc:creator>François Viens</dc:creator>
			<guid isPermaLink="false">http://www.onfaitduweb.com/485-quelques-bases-du-url-rewrite.html</guid>
			<description>Pour des questions SEO, il est intéressant de maîtriser certaines techniques de réécriture d'adresses sous Apache avec les fichiers .htaccess. Si l'adresse ne change pas dans la barre d'adresse du navigateur, on parle de redirection interne. Si l'adresse change, on parle de redirection externe, souvent des redirections retournant le code HTTP 301 indiquant que la ressource est déménagée à la nouvelle adresse de façon permanente. Les redirections internes sont les plus complexes à comprendre car intangibles, elles permettent de créer une structure complètement virtuelle pour un site Web qui lui serait généré à partir du même fichier PHP. Wordpress en est un bon exemple!Il faut garder en tête que le mod_rewrite est appelé chaque fois qu'une demande HTTP est faite sur un fichier. Il faut donc être concis et s'assurer des limites de notre fichier .htaccess pour éviter des comportements incompréhensibles. Le plus complexe dans le URL Rewriting c'est les expressions régulières. Plusieurs règles de base peuvent être mises en place sans trop de connaissance en expressions régulières mais la science des URL Rewriting prend toute son ampleur lorsqu'on y ajoute un peu de "pattern matching"!Le texte ci-dessous représente principalement une traduction des passages les plus intéressants des 2 sources citées à la fin de l'article.Contenu de base du fichier .htaccessUn fichier .htaccess de réécriture d'adresse de base devrait contenir ces lignes. La ligne Options +FollowSymlinks n'est que très rarement utile car elle permet de suivre les liens symboliques à l'intérieur des bornes définies par le &lt;Directory&gt; de votre serveur Apache. En contrepartie, chez certains hébergeurs, la présence de cette ligne donnera une erreur interne de serveur (500). La solution la plus simple est de laisser la ligne si le serveur ne retourne pas d'erreur, s'assurant que d'éventuels besoins seront comblés automatiquement ou de commenter la ligne si le serveur retourne une erreur. Pour faire un commentaire dans un fichier .htaccess, ajoutez simplement un # en début de ligne.Options +FollowSymLinks RewriteEngine OnRewriteBase /Dans le cas où votre projet est dans un sous-répertoire, il faut ajuster le RewriteBase en conséquence pour que les règles commencent à l'intérieur de ce répertoire.FlagsMais qu'est-ce que c'est ces lettres entre crochets []? C'est des "flags" indiquant certaines instructions supplémentaires au moteur de réécriture d'adresse d'Apache. En voici une liste des principaux "flags" :     R=code : Indique une redirection. Le code est le code HTTP que vous désirez retourner. Souvent le code 301 est utilisé pour indiquer que l'adresse demandée n'existe plus et a été remplacée par la nouvelle adresse. Si aucun code n'est spécifié, le code 302 sera retourné, celui-ci indiquant qu'il s'agit d'une redirection temporaire.    L : Indique que si cette règle est respectée, ne pas tenter d'autres règles, arrêter immédiatement avec celle-ci. Très utile pour permettre de mettre les règles les plus précises en début de fichier allant vers les moins précises et arrêter le traitement aussitôt qu'une règle correspond à l'adresse demandée.    NC : Fait en sorte que la règle ne doive pas nécessairement respecter la case (majuscule, minuscule)            QSA : Permet de conserver les paramètres d'une adresse et d'en ajouter d'autres. Par exemple, avec la règle suivante RewriteRule fr/nouvelles.html$ nouvelle.php?lang=fr , si l'URL demandé est fr/nouvelles.html?page=2 , nouvelle.php n'aura pas accès à la valeur du paramètre page, seulement la valeur de lang. Si au contraire on ajoute [QSA], les paramètres lang et page seront disponibles dans le fichier PHP.    S=num : Permet de sauter les "num" prochaines règles si la règle en cours est respectée. Permet de faire une sorte de IF ELSE bouetteux... la dernière règle du premier S étant S=X, X étant le nombre de régles à sauter dans la portion "else".    (if)    RewriteRule ... [S=2]       RewriteRule ...       RewriteRule ... [S=1]    (else)       RewriteRule ...    (endif)    Lecture normale des règles suivantes...        NE : Permet d'éviter d'escaper des caractères spéciaux lors d'une redirection ce qui arrive automatiquement sinon. Ainsi, RewriteRule /test/(.*) /page?q=repertoire\%3d$1 [R,NE] redirigera '/test/bobo' sur l'URL suivante '/page?q=repertoire=bobo'.    N : Permet de relancer le traitement des règles de réécriture, mais pas avec l'URL de départ mais plutôt avec l'URL transformé par les premiers passages... À éviter, risque de boucles infinies.    F : Permet de forcer le retour d'une erreur HTTP 403 : Forbidden sur une page ou un ensemble de page respectant une RewriteConds    B : Apache traduit les caractères "url escapés" en caractère standard. La règle RewriteRule ^(.*)$ index.php?show=$1 réécrira /C++ vers index.php?show=/C++ mais va également réécrire /C%2b%2b vers index.php?show=/C++ car les + auront été "dé-escapés"! L'utilisation du flags B vous assurera que /C%2b%2b deviendra index.php?show=/C%2b%2b et /C++ restera index.php?show=/C++.    C : Permet de lier une règle avec la règle suivante et ainsi de suite si le C est présent sur les règles suivantes. Si la règle est respectée, le traitement continue de façon normal et le flag est ignoré. Si la règle n'est pas respectée, toutes les règles liées à celle-ci ne seront pas considérées.    CO=NAME:VAL:DOMAIN[:LIFETIME[:PATH[:SECURE[:HTTPONLY]]]]' : Permet de créer un cookie! Il s'agit d'une fonctionnalité intéressante mais rarement utilisée... Le prochain développeur à travailler sur votre projet risque de chercher l'emplacement de la création du cookie longtemps dans le code! NAME est le nom du cookie, VAL sa valeur, DOMAIN le domaine ".test.com" sur lequel le cookie doit être actif, LIFETIME la durée de vie en minute, PATH le répertoire où le cookie est effectif, SECURE "true" ou "1" fait en sorte que le cookie est effectif seulement sous https, HTTPONLY "true" ou "1" fait en sorte que le cookie n'est pas manipulable par du javascript.    NON COUVERT ICI : DPI, E=VAR:VAL, G, H=Content Handler, NS, P, PT, TForcer la présence des wwwBien que les www. ne sont pas du tout nécessaires pour qu'une page Web fonctionne, les internautes néophytes sont tout de même habitués à leur présence. Le plus important à retenir est que www. agit de façon similaire à un sous-domaine (site.domain.com). D'avoir du contenu accessible avec et sans les www. peut causer un problème de dupplication de contenu ce qui n'est pas idéal pour les moteurs de recherche. Une façon d'éviter est de regarder combien de pages sont présentes dans les index des moteurs de recherche avec et sans les www. (site:domain.com). S'il y a plus de pages avec www., forcez la présence du www., sinon, retirez les www. . Dans les 2 cas, faisant des redirections retournant le code HTTP 301 (déplacement permanent), les adresses fautives seront éventuellement remplacées dans les index des moteurs de recherche.Options +FollowSymLinksRewriteEngine OnRewriteBase /RewriteCond %{HTTP_HOST} !^www\.domain.com$ [NC]RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]Retirer les wwwIl est parfois préférable de se départir des www pour rendre les adresses plus courtes. En tant que tel, les www. n'ajoute aucune valeur. Si un site n'est pas déjà bien référencé dans les moteurs de recherche, il peut être intéressant de forcer le retrait des www.Options +FollowSymLinksRewriteEngine OnRewriteBase /RewriteCond %{HTTP_HOST} !^domain\.com$ [NC]RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]Forcer la présence du www sans "hardcoder" le domaineIl peut parfois arriver que plusieurs domaines soient effectifs sur un même compte d'hébergement, bien que c'est en gérale une mauvaise pratique que le même contenu puisse être accessible à partir de différents noms de domaine. Dans un tel cas, plutôt que d'inscrire le nom de domaine dans la règle forçant la présence du www., une règle générale peut être mise en place :Options +FollowSymLinksRewriteEngine OnRewriteBase /RewriteCond %{HTTP_HOST} !^www\.[a-z-0-9]+\.[a-z]{2,6} [NC]RewriteCond %{HTTP_HOST} ([a-z-]+\.[a-z0-9]{2,6})$     [NC]RewriteRule ^/(.*)$ http://%1/$1 [R=301,L]Arrêter des loops de redirectionsBien que non recommandé, il peut arriver que nos règles créées des boucles infinies de redirections sur le serveur. Partant du principe que chaque appel HTTP fait une requête au fichier .htaccess, vous pouvez altérer ce fichier avec le code suivant pour arrêter la boucle.RewriteCond %{ENV:REDIRECT_STATUS} 200RewriteRule .* - [L]Déjouer la cache des navigateursTrop souvent on doit dire "Avez vous vidé votre cache?"... Une façon de régler ce problème est d'utiliser une règle de réécriture d'adresse permettant de conserver toujours le même nom de fichier pour les feuilles de styles et les fichiers javascript sur le disque mais d'ajouter un numéro de version dans le nom de fichier dans le HTML. Ainsi /skin/js/script-VERSION.js pointe vers /skin/js/script.js et /skin/css/styles-VERSION.css vers /skin/css/styles.cssRewriteRule ^skin/(js|css)/([a-z]+)-([0-9]+)\.(js|css)$ /skin/$1/$2.$4 [L]Retirer le Query_StringIl est très fréquent de voir des sites pour lesquels page.html et page.html?param=bobo affiche le même contenu... Ceci peut causer des problèmes de contenu duppliquer et nuire au référencement de votre site Web. Une façon de régler le problème est de se départir du QUERY_STRING et il suffit simplement d'ajouter un ? à la fin de votre règle.RewriteRule bobo.html$ bobo.php? [R=301,L]Documents sauvegardés en base de donnéesVous pouvez simuler la présence d'un document PDF ou Word ou autres dans un répertoire donné et utiliser cette règle pour appeler un script en charge de servir le document en provenance de la base de données /getdoc.phpRewriteRule ^docs/(.+)$  /getdoc.php?file=$1.pdf [L,NC,QSA]Afficher par défaut dans la langue du visiteur (navigateur)Il arrive très souvent qu'on doive afficher le contenu d'un site multilangue dans la langue du navigateur du visiteur par défaut. Une façon d'y parvenir est d'utiliser le "flag" ENV permettant d'assigner une variable d'environnement.RewriteCond %{HTTP:Accept-Language} ^.*(es|fr|en).*$ [NC]RewriteRule ^(.*)$ - [env=prefer-language:%1]On est fermé! Permettre de bloquer l'accès à un fichier à une période donnée de la journée.Concept à utiliser que si nécessaire... Rendre indisponible du contenu de votre site à une certaine heure pourrait faire en sorte que ce contenu soit retiré des index des moteurs de recherche si ceux ci visitent votre site à cette heure.Options +FollowSymLinksRewriteEngine OnRewriteBase /# S'il est 17h, on fermeRewriteCond %{TIME_HOUR} ^17$RewriteRule ^.*$ - [F,L]Changer les underscore (_) par des tirets (-)Pour des raisons SEO, les tirets sont plus efficaces que les underscores car ils permettent de séparer une chaîne de caractères en plusieurs mots, plutôt que d'être considéré comme un seul mot. Pour cette raison, l'utilisation de underscrore dans les URL est généralement à éviter. La régle suivante fonctionne pour des URL présentant jusqu'à 5 underscores...Options +FollowSymLinksRewriteEngine OnRewriteBase / RewriteRule !\.(html|php)$ - [S=4] # on skip les 4 règles suivantes si ce n'est pas un appel à du HTML ou PHPRewriteRule ^([^_]*)_([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4-$5 [E=uscor:Yes]RewriteRule ^([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4 [E=uscor:Yes]RewriteRule ^([^_]*)_([^_]*)_(.*)$ $1-$2-$3 [E=uscor:Yes]RewriteRule ^([^_]*)_(.*)$ $1-$2 [E=uscor:Yes] RewriteCond %{ENV:uscor} ^Yes$RewriteRule (.*) http://domain.com/$1 [R=301,L]Réduire le vol de bande passanteIl n'est pas rare de voir des sites faire référence directement à une image, une animation flash ou autre mais de façon intégrée à leur contenu. Le résultat est que vous fournissez la bande passante pour le média transmis.RewriteEngine OnRewriteBase /RewriteCond %{HTTP_REFERER} !^$RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain.com/.*$ [NC]RewriteRule \.(gif|jpg|swf|flv|png)$ /dev/null [R=302,L]Redirection pour une adresse IP préciseIl arrive souvent qu'on doive ajouter une règle dans un fichier .htaccess et il peut être tentant de la faire directement sur le serveur... Bien entendu, dans certains cas, une erreur de manipulation peut causer des problèmes! C'est pourquoi il peut être intéressant de tester une règle en spécifiant notre adresse IP dans une condition préalable... Ainsi, seulement les requêtes en provenance de cette adresse IP seront considérées.RewriteCond %{REMOTE_ADDR} ^1\.1\.1\.1$RewriteRule ^$ http://www.domain.com/testderedirectionjustepourmoi.html? [L]Contrôle du comportement du HTTPSJe trouve pratique qu'une section sécurisée d'un site ne soit pas simplement sur https://www.lesite.com... Par exemple, dans le cas de paiement en ligne pour une boutique, l'utilisation d'un sous-domaine secure.lesite.com, lui étant disponible seulement sous HTTPS me paraît un scénario beaucoup plus sympathique... Les règles suivantes permettent d'avoir un contrôle sur une zone bien précise pour le HTTPS et s'assurent que cette zone n'est disponible qu'avec HTTPSRewriteCond %{HTTPS} !=onRewriteCond %{HTTP_HOST} secure.lesite.com(.*)$RewriteRule ^(.*)$ https://secure.lesite.com/$1 [R=301,L]RewriteCond %{HTTPS} =onRewriteCond %{HTTP_HOST} !^secure.lesite.comRewriteRule ^(.*)$ https://secure.lesite.com/$1 [R=301,L]Page 404Le fichier .htaccess peut également servir à définir une page d'erreur 404 par défaut.ErrorDocument 404 404.htmlSources    Mod_rewrite Rewriteflags    Mod_rewrite Tips and tricks</description>
			<content:encoded>
				<![CDATA[ <p><p>Pour des questions SEO, il est intéressant de maîtriser certaines techniques de réécriture d'adresses sous Apache avec les fichiers .htaccess. Si l'adresse ne change pas dans la barre d'adresse du navigateur, on parle de redirection interne. Si l'adresse change, on parle de redirection externe, souvent des redirections retournant le code HTTP 301 indiquant que la ressource est déménagée à la nouvelle adresse de façon permanente. Les redirections internes sont les plus complexes à comprendre car intangibles, elles permettent de créer une structure complètement virtuelle pour un site Web qui lui serait généré à partir du même fichier PHP. Wordpress en est un bon exemple!</p><p>Il faut garder en tête que le mod_rewrite est appelé chaque fois qu'une demande HTTP est faite sur un fichier. Il faut donc être concis et s'assurer des limites de notre fichier .htaccess pour éviter des comportements incompréhensibles. Le plus complexe dans le URL Rewriting c'est les expressions régulières. Plusieurs règles de base peuvent être mises en place sans trop de connaissance en expressions régulières mais la science des URL Rewriting prend toute son ampleur lorsqu'on y ajoute un peu de "pattern matching"!</p><p>Le texte ci-dessous représente principalement une traduction des passages les plus intéressants des 2 sources citées à la fin de l'article.</p><h4>Contenu de base du fichier .htaccess</h4><p>Un fichier .htaccess de réécriture d'adresse de base devrait contenir ces lignes. La ligne Options +FollowSymlinks n'est que très rarement utile car elle permet de suivre les liens symboliques à l'intérieur des bornes définies par le <Directory> de votre serveur Apache. En contrepartie, chez certains hébergeurs, la présence de cette ligne donnera une erreur interne de serveur (500). La solution la plus simple est de laisser la ligne si le serveur ne retourne pas d'erreur, s'assurant que d'éventuels besoins seront comblés automatiquement ou de commenter la ligne si le serveur retourne une erreur. Pour faire un commentaire dans un fichier .htaccess, ajoutez simplement un # en début de ligne.</p><pre>Options +FollowSymLinks<br/> <br/>RewriteEngine On<br/>RewriteBase /</pre><p>Dans le cas où votre projet est dans un sous-répertoire, il faut ajuster le RewriteBase en conséquence pour que les règles commencent à l'intérieur de ce répertoire.</p><h4>Flags</h4><p>Mais qu'est-ce que c'est ces lettres entre crochets []? C'est des "flags" indiquant certaines instructions supplémentaires au moteur de réécriture d'adresse d'Apache. En voici une liste des principaux "flags" : </p><ul>    <li>R=code : Indique une redirection. Le code est le code HTTP que vous désirez retourner. Souvent le code 301 est utilisé pour indiquer que l'adresse demandée n'existe plus et a été remplacée par la nouvelle adresse. Si aucun code n'est spécifié, le code 302 sera retourné, celui-ci indiquant qu'il s'agit d'une redirection temporaire.</li>
    <li>L : Indique que si cette règle est respectée, ne pas tenter d'autres règles, arrêter immédiatement avec celle-ci. Très utile pour permettre de mettre les règles les plus précises en début de fichier allant vers les moins précises et arrêter le traitement aussitôt qu'une règle correspond à l'adresse demandée.</li>
    <li>NC : Fait en sorte que la règle ne doive pas nécessairement respecter la case (majuscule, minuscule)</li>
            <li>QSA : Permet de conserver les paramètres d'une adresse et d'en ajouter d'autres. Par exemple, avec la règle suivante RewriteRule fr/nouvelles.html$ nouvelle.php?lang=fr , si l'URL demandé est fr/nouvelles.html?page=2 , nouvelle.php n'aura pas accès à la valeur du paramètre page, seulement la valeur de lang. Si au contraire on ajoute [QSA], les paramètres lang et page seront disponibles dans le fichier PHP.</li>
    <li>S=num : Permet de sauter les "num" prochaines règles si la règle en cours est respectée. Permet de faire une sorte de IF ELSE bouetteux... la dernière règle du premier S étant S=X, X étant le nombre de régles à sauter dans la portion "else".<br/>    (<em>if</em>)<br/>    RewriteRule ... [S=2]<br/>       RewriteRule ...<br/>       RewriteRule ... [S=1]<br/>    (<em>else</em>)<br/>       RewriteRule ...<br/>    (<em>endif</em>)<br/>    Lecture normale des règles suivantes...    </li>
    <li>NE : Permet d'éviter d'escaper des caractères spéciaux lors d'une redirection ce qui arrive automatiquement sinon. Ainsi, RewriteRule /test/(.*) /page?q=repertoire\%3d$1 [R,NE] redirigera '/test/bobo' sur l'URL suivante '/page?q=repertoire=bobo'.</li>
    <li>N : Permet de relancer le traitement des règles de réécriture, mais pas avec l'URL de départ mais plutôt avec l'URL transformé par les premiers passages... À éviter, risque de boucles infinies.</li>
    <li>F : Permet de forcer le retour d'une erreur HTTP 403 : Forbidden sur une page ou un ensemble de page respectant une RewriteConds</li>
    <li>B : Apache traduit les caractères "url escapés" en caractère standard. La règle RewriteRule ^(.*)$ index.php?show=$1 réécrira /C++ vers index.php?show=/C++ mais va également réécrire /C%2b%2b vers index.php?show=/C++ car les + auront été "dé-escapés"! L'utilisation du flags B vous assurera que /C%2b%2b deviendra index.php?show=/C%2b%2b et /C++ restera index.php?show=/C++.</li>
    <li>C : Permet de lier une règle avec la règle suivante et ainsi de suite si le C est présent sur les règles suivantes. Si la règle est respectée, le traitement continue de façon normal et le flag est ignoré. Si la règle n'est pas respectée, toutes les règles liées à celle-ci ne seront pas considérées.</li>
    <li>CO=NAME:VAL:DOMAIN[:LIFETIME[:PATH[:SECURE[:HTTPONLY]]]]' : Permet de créer un cookie! Il s'agit d'une fonctionnalité intéressante mais rarement utilisée... Le prochain développeur à travailler sur votre projet risque de chercher l'emplacement de la création du cookie longtemps dans le code! NAME est le nom du cookie, VAL sa valeur, DOMAIN le domaine ".test.com" sur lequel le cookie doit être actif, LIFETIME la durée de vie en minute, PATH le répertoire où le cookie est effectif, SECURE "true" ou "1" fait en sorte que le cookie est effectif seulement sous https, HTTPONLY "true" ou "1" fait en sorte que le cookie n'est pas manipulable par du javascript.</li>
    <li>NON COUVERT ICI : DPI, E=VAR:VAL, G, H=Content Handler, NS, P, PT, T</li>
</ul><p><h4>Forcer la présence des www</h4><p>Bien que les www. ne sont pas du tout nécessaires pour qu'une page Web fonctionne, les internautes néophytes sont tout de même habitués à leur présence. Le plus important à retenir est que www. agit de façon similaire à un sous-domaine (site.domain.com). D'avoir du contenu accessible avec et sans les www. peut causer un problème de dupplication de contenu ce qui n'est pas idéal pour les moteurs de recherche. Une façon d'éviter est de regarder combien de pages sont présentes dans les index des moteurs de recherche avec et sans les www. (site:domain.com). S'il y a plus de pages avec www., forcez la présence du www., sinon, retirez les www. . Dans les 2 cas, faisant des redirections retournant le code HTTP 301 (déplacement permanent), les adresses fautives seront éventuellement remplacées dans les index des moteurs de recherche.</p><pre>Options +FollowSymLinks<br/>RewriteEngine On<br/>RewriteBase /<br/>RewriteCond %{HTTP_HOST} !^www\.domain.com$ [NC]<br/>RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]</pre><h4>Retirer les www</h4><p>Il est parfois préférable de se départir des www pour rendre les adresses plus courtes. En tant que tel, les www. n'ajoute aucune valeur. Si un site n'est pas déjà bien référencé dans les moteurs de recherche, il peut être intéressant de forcer le retrait des www.</p><pre>Options +FollowSymLinks<br/>RewriteEngine On<br/>RewriteBase /<br/>RewriteCond %{HTTP_HOST} !^domain\.com$ [NC]<br/>RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]</pre><h4>Forcer la présence du www sans "hardcoder" le domaine</h4><p>Il peut parfois arriver que plusieurs domaines soient effectifs sur un même compte d'hébergement, bien que c'est en gérale une mauvaise pratique que le même contenu puisse être accessible à partir de différents noms de domaine. Dans un tel cas, plutôt que d'inscrire le nom de domaine dans la règle forçant la présence du www., une règle générale peut être mise en place :</p><pre>Options +FollowSymLinks<br/>RewriteEngine On<br/>RewriteBase /<br/>RewriteCond %{HTTP_HOST} !^www\.[a-z-0-9]+\.[a-z]{2,6} [NC]<br/>RewriteCond %{HTTP_HOST} ([a-z-]+\.[a-z0-9]{2,6})$     [NC]<br/>RewriteRule ^/(.*)$ http://%1/$1 [R=301,L]</pre><h4>Arrêter des loops de redirections</h4><p>Bien que non recommandé, il peut arriver que nos règles créées des boucles infinies de redirections sur le serveur. Partant du principe que chaque appel HTTP fait une requête au fichier .htaccess, vous pouvez altérer ce fichier avec le code suivant pour arrêter la boucle.</p><pre>RewriteCond %{ENV:REDIRECT_STATUS} 200<br/>RewriteRule .* - [L]</pre><h4>Déjouer la cache des navigateurs</h4><p>Trop souvent on doit dire "Avez vous vidé votre cache?"... Une façon de régler ce problème est d'utiliser une règle de réécriture d'adresse permettant de conserver toujours le même nom de fichier pour les feuilles de styles et les fichiers javascript sur le disque mais d'ajouter un numéro de version dans le nom de fichier dans le HTML. Ainsi <code>/skin/js/script-VERSION.js pointe vers /skin/js/script.js et /skin/css/styles-VERSION.css vers /skin/css/styles.css</code></p><pre>RewriteRule ^skin/(js|css)/([a-z]+)-([0-9]+)\.(js|css)$ /skin/$1/$2.$4 [L]</pre><h4>Retirer le Query_String</h4><p>Il est très fréquent de voir des sites pour lesquels page.html et page.html?param=bobo affiche le même contenu... Ceci peut causer des problèmes de contenu duppliquer et nuire au référencement de votre site Web. Une façon de régler le problème est de se départir du QUERY_STRING et il suffit simplement d'ajouter un ? à la fin de votre règle.</p><pre>RewriteRule bobo.html$ bobo.php? [R=301,L]</pre><h4>Documents sauvegardés en base de données</h4><p>Vous pouvez simuler la présence d'un document PDF ou Word ou autres dans un répertoire donné et utiliser cette règle pour appeler un script en charge de servir le document en provenance de la base de données <code>/getdoc.php</code></p><pre>RewriteRule ^docs/(.+)$  /getdoc.php?file=$1.pdf [L,NC,QSA]</pre><h4>Afficher par défaut dans la langue du visiteur (navigateur)</h4><p>Il arrive très souvent qu'on doive afficher le contenu d'un site multilangue dans la langue du navigateur du visiteur par défaut. Une façon d'y parvenir est d'utiliser le "flag" ENV permettant d'assigner une variable d'environnement.</p><pre>RewriteCond %{HTTP:Accept-Language} ^.*(es|fr|en).*$ [NC]<br/>RewriteRule ^(.*)$ - [env=prefer-language:%1]</pre><h4>On est fermé! Permettre de bloquer l'accès à un fichier à une période donnée de la journée.</h4><p>Concept à utiliser que si nécessaire... Rendre indisponible du contenu de votre site à une certaine heure pourrait faire en sorte que ce contenu soit retiré des index des moteurs de recherche si ceux ci visitent votre site à cette heure.</p><pre>Options +FollowSymLinks<br/>RewriteEngine On<br/>RewriteBase /<br/># S'il est 17h, on ferme<br/>RewriteCond %{TIME_HOUR} ^17$<br/>RewriteRule ^.*$ - [F,L]<br/></pre><h4>Changer les underscore (_) par des tirets (-)</h4><p>Pour des raisons SEO, les tirets sont plus efficaces que les underscores car ils permettent de séparer une chaîne de caractères en plusieurs mots, plutôt que d'être considéré comme un seul mot. Pour cette raison, l'utilisation de underscrore dans les URL est généralement à éviter. La régle suivante fonctionne pour des URL présentant jusqu'à 5 underscores...</p><pre>Options +FollowSymLinks<br/>RewriteEngine On<br/>RewriteBase /<br/> <br/>RewriteRule !\.(html|php)$ - [S=4] # on skip les 4 règles suivantes si ce n'est pas un appel à du HTML ou PHP<br/>RewriteRule ^([^_]*)_([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4-$5 [E=uscor:Yes]<br/>RewriteRule ^([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4 [E=uscor:Yes]<br/>RewriteRule ^([^_]*)_([^_]*)_(.*)$ $1-$2-$3 [E=uscor:Yes]<br/>RewriteRule ^([^_]*)_(.*)$ $1-$2 [E=uscor:Yes]<br/> <br/>RewriteCond %{ENV:uscor} ^Yes$<br/>RewriteRule (.*) http://domain.com/$1 [R=301,L]</pre><h4>Réduire le vol de bande passante</h4><p>Il n'est pas rare de voir des sites faire référence directement à une image, une animation flash ou autre mais de façon intégrée à leur contenu. Le résultat est que vous fournissez la bande passante pour le média transmis.</p><pre>RewriteEngine On<br/>RewriteBase /<br/>RewriteCond %{HTTP_REFERER} !^$<br/>RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain.com/.*$ [NC]<br/>RewriteRule \.(gif|jpg|swf|flv|png)$ /dev/null [R=302,L]</pre><h4>Redirection pour une adresse IP précise</h4><p>Il arrive souvent qu'on doive ajouter une règle dans un fichier .htaccess et il peut être tentant de la faire directement sur le serveur... Bien entendu, dans certains cas, une erreur de manipulation peut causer des problèmes! C'est pourquoi il peut être intéressant de tester une règle en spécifiant notre adresse IP dans une condition préalable... Ainsi, seulement les requêtes en provenance de cette adresse IP seront considérées.</p><pre>RewriteCond %{REMOTE_ADDR} ^1\.1\.1\.1$<br/>RewriteRule ^$ http://www.domain.com/testderedirectionjustepourmoi.html? [L]</pre><h4>Contrôle du comportement du HTTPS</h4><p>Je trouve pratique qu'une section sécurisée d'un site ne soit pas simplement sur https://www.lesite.com... Par exemple, dans le cas de paiement en ligne pour une boutique, l'utilisation d'un sous-domaine secure.lesite.com, lui étant disponible seulement sous HTTPS me paraît un scénario beaucoup plus sympathique... Les règles suivantes permettent d'avoir un contrôle sur une zone bien précise pour le HTTPS et s'assurent que cette zone n'est disponible qu'avec HTTPS</p><pre>RewriteCond %{HTTPS} !=on<br/>RewriteCond %{HTTP_HOST} secure.lesite.com(.*)$<br/>RewriteRule ^(.*)$ https://secure.lesite.com/$1 [R=301,L]<br/><br/>RewriteCond %{HTTPS} =on<br/>RewriteCond %{HTTP_HOST} !^secure.lesite.com<br/>RewriteRule ^(.*)$ https://secure.lesite.com/$1 [R=301,L]<br/></pre><h4>Page 404</h4><p>Le fichier .htaccess peut également servir à définir une page d'erreur 404 par défaut.</p><pre>ErrorDocument 404 404.html</pre><h4>Sources</h4><ul>    <li><a href="http://httpd.apache.orghttp://www.onfaitduweb.com/docs/2.2/mod/mod_rewrite.html#rewriteflags">Mod_rewrite Rewriteflags</a></li>
    <li><a href="http://www.askapache.com/htaccess/mod_rewrite-tips-and-tricks.html">Mod_rewrite Tips and tricks</a></li>
</ul><p></p> ]]>
			</content:encoded>
		</item>
		<item>
			<title>Des petites modifications qui ont beaucoup d'impact.</title>
			<link>http://www.onfaitduweb.com/484-des-petites-modifications-qui-ont-beaucoup-d-impact-.html</link>
			<comments>http://www.onfaitduweb.com/484-des-petites-modifications-qui-ont-beaucoup-d-impact-.html#comments</comments>
			<pubDate>Thu, 28 Jan 2010 00:00:00 -0500</pubDate>
			<dc:creator>Pierre Paul Lefebvre</dc:creator>
			<guid isPermaLink="false">http://www.onfaitduweb.com/484-des-petites-modifications-qui-ont-beaucoup-d-impact-.html</guid>
			<description>
Parfois les gens ne réalisent pas qu'un petit changement, aussi stupide qu'il semble être, peut devenir très compliqué et peut amener des bogues avec des conséquences graves. Le groupe Crédit Suisse a récemment fait un petit changement à leur interface leur permettant de faire des transferts d'action en lot. La petite modification était d'ajouter une flèche en haut et en bas, pour pouvoir modifier certains paramètres d'un lot. Une fois les flèches pesées, une instruction était envoyée pour annuler le dernier lot et envoyer le nouveau avec les nouvelles instructions.Le programmeur n'avait pas pensé que l'utilisateur double-cliquerait sur les flèches plutôt que de faire de simples cliques. Le programme envoyait donc les instructions en double et parfois les serveurs recevaient des demandes d'annulation de lot pour des lots qui n'étaient même pas encore arrivés.Le groupe Crédit Suisse a écopé d'une amende de 150 000$ par le NYSE (New York Stock Exchange) pour ne pas avoir supervisé adéquatement le développement de leur application.C'est un double-clique qui coute cher...Source : Ars Technica</description>
			<content:encoded>
				<![CDATA[ <p>Parfois les gens ne réalisent pas qu'un petit changement, aussi stupide qu'il semble être, peut devenir très compliqué et peut amener des bogues avec des conséquences graves. <br/><br/>Le groupe <a href="http://en.wikipedia.org/wiki/Credit_Suisse">Crédit Suisse</a> a récemment fait un petit changement à leur interface leur permettant de faire des transferts d'action en lot. <br/><br/>La petite modification était d'ajouter une flèche en haut et en bas, pour pouvoir modifier certains paramètres d'un lot. <br/><br/>Une fois les flèches pesées, une instruction était envoyée pour annuler le dernier lot et envoyer le nouveau avec les nouvelles instructions.<br/><br/>Le programmeur n'avait pas pensé que l'utilisateur double-cliquerait sur les flèches plutôt que de faire de simples cliques. Le programme envoyait donc les instructions en double et parfois les serveurs recevaient des demandes d'annulation de lot pour des lots qui n'étaient même pas encore arrivés.<br/><br/>Le groupe <a href="http://en.wikipedia.org/wiki/Credit_Suisse">Crédit Suisse</a> a écopé d'une amende de 150 000$ par le <a href="http://en.wikipedia.org/wiki/New_York_Stock_Exchange">NYSE</a> (New York Stock Exchange) pour ne pas avoir supervisé adéquatement le développement de leur application.<br/><br/>C'est un double-clique qui coute cher...<br/><br/>Source : <a href="http://arstechnica.com/business/news/2010/01/how-a-stray-mouse-click-choked-the-nyse-cost-a-bank-150k.ars?utm_source=rss&utm_medium=rss&utm_campaign=rss">Ars Technica</a><br/></p> ]]>
			</content:encoded>
		</item>
		<item>
			<title>Les contribuables économisent grâce à Google Transit</title>
			<link>http://www.onfaitduweb.com/483-les-contribuables-economisent-grace-a-google-transit.html</link>
			<comments>http://www.onfaitduweb.com/483-les-contribuables-economisent-grace-a-google-transit.html#comments</comments>
			<pubDate>Mon, 25 Jan 2010 00:00:00 -0500</pubDate>
			<dc:creator>Luc Plamondon</dc:creator>
			<guid isPermaLink="false">http://www.onfaitduweb.com/483-les-contribuables-economisent-grace-a-google-transit.html</guid>
			<description>Quelle surprise ai-je eue quand j'ai découvert que je pouvais demander à Google Maps de me suggérer un itinéraire en transport en commun. Ici même, à Longueuil! Il suffit, quand vous entrez votre point de départ et votre point d'arrivée sur Google Maps / Itinéraire, de sélectionner l'option "En transport en commun". Vous obtenez les directions pour vous rendre à l'arrêt à pied, la ligne d'autobus à prendre, son trajet et les heures des prochains passages.Le système marche même mieux que celui du site du Réseau de transport de Longueuil (RTL). Pour obtenir le trajet du bureau jusqu'au Terminus Longueuil, j'ai entré l'adresse du bureau et le mot "Terminus Longueuil", puis un seul clic a suffi pour obtenir l'heure du prochain départ. Sur le calculateur de trajet de la RTL, j'ai passé par 2 pages pour entrer l'adresse du bureau, puis par 3 pages pour trouver le Terminus Longueuil dans la liste des lieux jugés intéressants par les administrateurs de la RTL. Au total, c'est 8 pages qu'il faut visiter pour obtenir l'heure du prochain départ!!!Je m'étais dit qu'un jour je devrais me plaindre au RTL de l'ergonomie de leur site. Mais au final, je sais bien que c'est moi qui va devoir débourser s'ils touchent au site: de la poche gauche en tant qu'acheteur de la passe mensuelle, et de la poche droite en tant que contribuable de ma Ville. Maintenant, c'est réglé. Google s'en charge... et ne charge rien. </description>
			<content:encoded>
				<![CDATA[ <p>Quelle surprise ai-je eue quand j'ai découvert que je pouvais demander à Google Maps de me suggérer un itinéraire en transport en commun. Ici même, à Longueuil! Il suffit, quand vous entrez votre point de départ et votre point d'arrivée sur <a href="http://maps.google.ca/maps">Google Maps</a> / Itinéraire, de sélectionner l'option "En transport en commun". Vous obtenez les directions pour vous rendre à l'arrêt à pied, la ligne d'autobus à prendre, son trajet et les heures des prochains passages.<br/><br/>Le système marche même mieux que celui du site du Réseau de transport de Longueuil (RTL). Pour obtenir le trajet du bureau jusqu'au Terminus Longueuil, j'ai entré l'adresse du bureau et le mot "Terminus Longueuil", puis un seul clic a suffi pour obtenir l'heure du prochain départ. Sur le <a href="http://www.rtl-longueuil.qc.ca/w1/itineraire.wcs">calculateur de trajet de la RTL</a>, j'ai passé par 2 pages pour entrer l'adresse du bureau, puis par 3 pages pour trouver le Terminus Longueuil dans la liste des lieux jugés intéressants par les administrateurs de la RTL. Au total, c'est 8 pages qu'il faut visiter pour obtenir l'heure du prochain départ!!!<br/><br/>Je m'étais dit qu'un jour je devrais me plaindre au RTL de l'ergonomie de leur site. Mais au final, je sais bien que c'est moi qui va devoir débourser s'ils touchent au site: de la poche gauche en tant qu'acheteur de la passe mensuelle, et de la poche droite en tant que contribuable de ma Ville. Maintenant, c'est réglé. Google s'en charge... et ne charge rien. </p> ]]>
			</content:encoded>
		</item>
		<item>
			<title>Le Cégep de Saint-Laurent met en ligne le système de gestion des inscriptions de Quiboweb</title>
			<link>http://www.onfaitduweb.com/482-le-cegep-de-saint-laurent-met-en-ligne-le-systeme-de-gestion-des-inscriptions-de-quiboweb.html</link>
			<comments>http://www.onfaitduweb.com/482-le-cegep-de-saint-laurent-met-en-ligne-le-systeme-de-gestion-des-inscriptions-de-quiboweb.html#comments</comments>
			<pubDate>Thu, 14 Jan 2010 00:00:00 -0500</pubDate>
			<dc:creator>Luc Plamondon</dc:creator>
			<guid isPermaLink="false">http://www.onfaitduweb.com/482-le-cegep-de-saint-laurent-met-en-ligne-le-systeme-de-gestion-des-inscriptions-de-quiboweb.html</guid>
			<description>C'est toujours un plaisir quand nos clients sont satisfaits et le disent. Le Cégep de Saint-Laurent a récemment mis en ligne le système de gestion d'inscriptions que nous avons développé et voici ce qu'en dit sur son blogue Marc-Olivier Ouellet, le maître d'oeuvre du projet au Cégep:"Le module d’inscription de Quiboweb fonctionne tel que promis.  Il offre des fonctionnalités uniques au cégep de Saint-Laurent, à faire envier les autres cégeps.  Le module permet de gérer quasiment de A à Z le processus d’inscription pour les ateliers de perfectionnement et les formations aux municipalités (ATPA), y compris le traitement pour les tarifs réduits admissibles pour Emploi-Québec, le paiement en ligne, la génération de PDFs spéciaux, le publipostage, etc.  Donc un gros merci à l’équipe de Quiboweb [...]"</description>
			<content:encoded>
				<![CDATA[ <p><p>C'est toujours un plaisir quand nos clients sont satisfaits et le disent. Le Cégep de Saint-Laurent a récemment mis en ligne le système de gestion d'inscriptions que nous avons développé et voici ce qu'en dit sur son blogue <a href="http://www.marc-olivier.ca/section/blogue/2009/12/site-de-la-formation-continue/">Marc-Olivier Ouellet</a>, le maître d'oeuvre du projet au Cégep:</p><p><em>"Le module d’inscription de Quiboweb fonctionne tel que promis.  Il offre des fonctionnalités uniques au cégep de Saint-Laurent, à faire envier les autres cégeps.  Le module permet de gérer quasiment de A à Z le processus d’inscription pour les ateliers de perfectionnement et les formations aux municipalités (ATPA), y compris le traitement pour les tarifs réduits admissibles pour Emploi-Québec, le paiement en ligne, la génération de PDFs spéciaux, le publipostage, etc.  Donc un gros merci à l’équipe de Quiboweb [...]"</em></p></p> ]]>
			</content:encoded>
		</item>
		<item>
			<title>L'Ordre des informaticiens du Québec</title>
			<link>http://www.onfaitduweb.com/481-l-ordre-des-informaticiens-du-quebec.html</link>
			<comments>http://www.onfaitduweb.com/481-l-ordre-des-informaticiens-du-quebec.html#comments</comments>
			<pubDate>Thu, 07 Jan 2010 00:00:00 -0500</pubDate>
			<dc:creator>Luc Plamondon</dc:creator>
			<guid isPermaLink="false">http://www.onfaitduweb.com/481-l-ordre-des-informaticiens-du-quebec.html</guid>
			<description>Dans le cadre de son objectif de valorisation des TI, le Réseau Action TI remet à l'ordre du jour cette question: devrait-on créer un ordre des informaticiens?Je ne pense pas que ce soit LA façon de faire.Les différents ordres professionnels ont été créés dans le but de protéger le public. Les actes mettant directement en cause la sécurité du public, comme signer des plans d'édifice ou prescrire des médicaments, sont réservés aux membres de l'Ordre des architectes ou du Collège des médecins. Est-ce vraiment pour protéger le public que les informaticiens réclament un ordre?Je crois plutôt que c'est pour le titre. À mon avis, un titre officiel n'aura pas l'influence espérée. Il existe un ordre des conseillers en ressources humaines et en relations industrielles agréés et cela ne change rien à ma perception de la valeur de ces professionnels. De plus, comme le montre un sondage mené sur LinkedIn, plus les répondants sont âgés, plus ils sont contre la création d'un ordre. Je dirais que c'est parce que les jeunes veulent compenser leur manque d'expérience aux yeux des employeurs et qu'à l'inverse, les gens d'expérience voient bien que dans l'industrie, ce ne sont pas le titre ni les diplômes qui font la réputation. De plus, le titre ne vient pas gratuitement. Il faut d'abord payer chaque année une cotisation qui est typiquement d'au moins 200 $. Ensuite, avec le titre vient l'obligation de respecter un code d'éthique dans son travail de tous les jours. Par exemple, si votre employeur vous demande de mentir à votre client, vous devrez lui tenir tête même si vous risquez votre emploi. Si vous contrevenez à votre code d'éthique, plus question de refiler la responsabilité à la compagnie qui vous emploie: vous serez poursuivi personnellement, vous aurez une amende à payer, vous serez blâmé publiquement et vous serez possiblement privé de votre titre.Je pense plutôt que ce que nous voulons, en tant qu'informaticiens au Québec, c'est une association forte qui utilisera la force du nombre pour défendre nos intérêts, faire des interventions dans les médias pour valoriser la profession et offrir des services à ses membres. Les ingénieurs ont la leur: le Réseau des ingénieurs sert ouvertement les intérêts des ingénieurs, et non les intérêts du public, et il le fait sans exiger de cotisation car il se finance avec la publicité des entreprises désireuses de rejoindre ce bassin de 50000 membres financièrement à l'aise. Les informaticiens ont quelque chose qui s'en rapproche, le Réseau Action TI, et si l'adhésion était gratuite nous excéderions peut-être les 50000 membres!Voir les résultats du sondage mené sur LinkedIn, avec une discussion:http://www.linkedin.com/osview/canvas?_ch_page_id=1&amp;_ch_panel_id=1&amp;_ch_app_id=7231830&amp;_applicationId=1900&amp;_ownerId=0&amp;appParams={%22uri%22:%22/answers/show/68256%22}Participer à un des nombreux fils de discussion:http://hr4us.wordpress.com/2010/01/04/synthese-et-analyse-de-etes-vous-pour-ou-contre-un-ordre-des-ti-au-quebec-premiere-partie/Remplir le sondage du Réseau Action TI sur la valorisation de la profession (attention, les questions sont orientées pro-ordre!):http://www.actionti.com/sondageprofession</description>
			<content:encoded>
				<![CDATA[ <p>Dans le cadre de son objectif de valorisation des TI, le <a href="http://www.actionti.com">Réseau Action TI</a> remet à l'ordre du jour cette question: devrait-on créer un ordre des informaticiens?<br/><br/>Je ne pense pas que ce soit LA façon de faire.<br/><br/>Les différents ordres professionnels ont été créés dans le but de protéger le public. Les actes mettant directement en cause la sécurité du public, comme signer des plans d'édifice ou prescrire des médicaments, sont réservés aux membres de l'Ordre des architectes ou du Collège des médecins. Est-ce vraiment pour protéger le public que les informaticiens réclament un ordre?<br/><br/>Je crois plutôt que c'est pour le titre. À mon avis, un titre officiel n'aura pas l'influence espérée. Il existe un ordre des conseillers en ressources humaines et en relations industrielles agréés et cela ne change rien à ma perception de la valeur de ces professionnels. De plus, comme le montre un sondage mené sur LinkedIn, plus les répondants sont âgés, plus ils sont contre la création d'un ordre. Je dirais que c'est parce que les jeunes veulent compenser leur manque d'expérience aux yeux des employeurs et qu'à l'inverse, les gens d'expérience voient bien que dans l'industrie, ce ne sont pas le titre ni les diplômes qui font la réputation. <br/><br/>De plus, le titre ne vient pas gratuitement. Il faut d'abord payer chaque année une cotisation qui est typiquement d'au moins 200 $. Ensuite, avec le titre vient l'obligation de respecter un code d'éthique dans son travail de tous les jours. Par exemple, si votre employeur vous demande de mentir à votre client, vous devrez lui tenir tête même si vous risquez votre emploi. Si vous contrevenez à votre code d'éthique, plus question de refiler la responsabilité à la compagnie qui vous emploie: vous serez poursuivi personnellement, vous aurez une amende à payer, vous serez blâmé publiquement et vous serez possiblement privé de votre titre.<br/><br/>Je pense plutôt que ce que nous voulons, en tant qu'informaticiens au Québec, c'est une association forte qui utilisera la force du nombre pour défendre nos intérêts, faire des interventions dans les médias pour valoriser la profession et offrir des services à ses membres. Les ingénieurs ont la leur: le <a href="http://www.reseauiq.qc.ca">Réseau des ingénieurs</a> sert ouvertement les intérêts des ingénieurs, et non les intérêts du public, et il le fait sans exiger de cotisation car il se finance avec la publicité des entreprises désireuses de rejoindre ce bassin de 50000 membres financièrement à l'aise. Les informaticiens ont quelque chose qui s'en rapproche, le Réseau Action TI, et si l'adhésion était gratuite nous excéderions peut-être les 50000 membres!<br/><br/>Voir les résultats du sondage mené sur LinkedIn, avec une discussion:<br/><a href="http://www.linkedin.com/osview/canvas?_ch_page_id=1&_ch_panel_id=1&_ch_app_id=7231830&_applicationId=1900&_ownerId=0&appParams=%7B%22uri%22:%22%5C/answers%5C/show%5C/68256%22%7D">http://www.linkedin.com/osview/canvas?_ch_page_id=1&_ch_panel_id=1&_ch_app_id=7231830&_applicationId=1900&_ownerId=0&appParams={%22uri%22:%22/answers/show/68256%22}</a><br/><br/>Participer à un des nombreux fils de discussion:<br/><a href="http://hr4us.wordpress.com/2010/01/04/synthese-et-analyse-de-etes-vous-pour-ou-contre-un-ordre-des-ti-au-quebec-premiere-partie/">http://hr4us.wordpress.com/2010/01/04/synthese-et-analyse-de-etes-vous-pour-ou-contre-un-ordre-des-ti-au-quebec-premiere-partie/</a><br/><br/>Remplir le sondage du Réseau Action TI sur la valorisation de la profession (attention, les questions sont orientées pro-ordre!):<br/><a href="http://www.actionti.com/sondageprofession">http://www.actionti.com/sondageprofession</a></p> ]]>
			</content:encoded>
		</item>
		<item>
			<title>Des concepts de validation de formulaires bien pensés</title>
			<link>http://www.onfaitduweb.com/480-des-concepts-de-validation-de-formulaires-bien-penses.html</link>
			<comments>http://www.onfaitduweb.com/480-des-concepts-de-validation-de-formulaires-bien-penses.html#comments</comments>
			<pubDate>Tue, 22 Dec 2009 00:00:00 -0500</pubDate>
			<dc:creator>Marie-Andrée Lacroix</dc:creator>
			<guid isPermaLink="false">http://www.onfaitduweb.com/480-des-concepts-de-validation-de-formulaires-bien-penses.html</guid>
			<description>
Je n'ai pas pu m'empêcher de bloguer sur ce sujet qui me tient tant à coeur. La validation, c'est très important! Voici quelques exemples qui, à mon avis, sont efficaces et vraiment bien faits.https://secure.livestream.com/myaccount/loginIl y a un indicateur (assez évident merci) qui valide au fur et à mesure. Notez que le bouton submit est innactif tant et aussi longtemps que les champs ne sont pas remplis correctement. Winner!http://www.bigcartel.com/signup/diamondLes erreurs sont affichées en rose en haut. Les labels erronés deviennent rose. L'essentiel quoi.http://gowalla.com/users/newLook original! Les champs erronés et valides sont différenciés de façon clair.http://www.launchmind.com/signup/Intéressant. Étant donné que le formulaire est long, le message d'erreur s'affiche en bas, en-dessous du bouton « create account ». J'aime l'idée.http://www.popscreen.com/joinOn peut facilement différencier le champs valide et celui qui ne l'est pas. De plus, on a une petite note qui donne de l'information supplémentaire sur le champs actif. Bien pensé.http://thumbslap.com/signup/Classique, mais assez évident.https://wwws.mint.com/login.event?task=SJ'aime le fait que la validation se fait au fur et à mesure. Il est facile de savoir ce qui est bon de ce qui ne l'est pas. Thumbs up!https://www.squarespace.com/process/CreateSquarespaceAccountUn formulaire horizontal... c'est la première fois que j'en vois un. Pas mauvais comme validation.https://secure.wufoo.com/signup/1/Classique, mais original en même temps. Vive l'évidence!</description>
			<content:encoded>
				<![CDATA[ <p><p>Je n'ai pas pu m'empêcher de bloguer sur ce sujet qui me tient tant à coeur. <span style="font-weight: bold;">La validation, c'est très important! </span>Voici quelques exemples qui, à mon avis, sont efficaces et vraiment bien faits.</p><p><img src="http://www.onfaitduweb.com/docs/uploaded/1261522377.jpg"><br/><a href="https://secure.livestream.com/myaccount/login">https://secure.livestream.com/myaccount/login</a><br/>Il y a un indicateur (assez évident merci) qui valide au fur et à mesure. Notez que le bouton submit est innactif tant et aussi longtemps que les champs ne sont pas remplis correctement. Winner!</p><p><img src="http://www.onfaitduweb.com/docs/uploaded/1261522408.jpg"><br/><a href="http://www.bigcartel.com/signup/diamond">http://www.bigcartel.com/signup/diamond</a><br/>Les erreurs sont affichées en rose en haut. Les labels erronés deviennent rose. L'essentiel quoi.</p><p><img src="http://www.onfaitduweb.com/docs/uploaded/1261522442.jpg"><br/><a href="http://gowalla.com/users/new">http://gowalla.com/users/new</a><br/>Look original! Les champs erronés et valides sont différenciés de façon clair.</p><p><img src="http://www.onfaitduweb.com/docs/uploaded/1261522467.jpg"><br/><a href="http://www.launchmind.com/signup/">http://www.launchmind.com/signup/</a><br/>Intéressant. Étant donné que le formulaire est long, le message d'erreur s'affiche en bas, en-dessous du bouton « create account ». J'aime l'idée.</p><p><img src="http://www.onfaitduweb.com/docs/uploaded/1261522498.jpg"><br/><a href="http://www.popscreen.com/join">http://www.popscreen.com/join</a><br/>On peut facilement différencier le champs valide et celui qui ne l'est pas. De plus, on a une petite note qui donne de l'information supplémentaire sur le champs actif. Bien pensé.</p><p><img src="http://www.onfaitduweb.com/docs/uploaded/1261522529.jpg"><br/><a href="http://thumbslap.com/signup/">http://thumbslap.com/signup/</a><br/>Classique, mais assez évident.</p><p><img src="http://www.onfaitduweb.com/docs/uploaded/1261522540.jpg"><br/><a href="https://wwws.mint.com/login.event?task=S">https://wwws.mint.com/login.event?task=S</a><br/>J'aime le fait que la validation se fait au fur et à mesure. Il est facile de savoir ce qui est bon de ce qui ne l'est pas. Thumbs up!</p><p><img src="http://www.onfaitduweb.com/docs/uploaded/1261522573.jpg"><br/><a href="https://www.squarespace.com/process/CreateSquarespaceAccount">https://www.squarespace.com/process/CreateSquarespaceAccount</a><br/>Un formulaire horizontal... c'est la première fois que j'en vois un. Pas mauvais comme validation.</p><p><img src="http://www.onfaitduweb.com/docs/uploaded/1261522597.jpg"><br/><a href="https://secure.wufoo.com/signup/1/">https://secure.wufoo.com/signup/1/</a><br/>Classique, mais original en même temps. Vive l'évidence!</p></p> ]]>
			</content:encoded>
		</item>
		<item>
			<title>Créer une newsletter : respectez les règles!</title>
			<link>http://www.onfaitduweb.com/479-creer-une-newsletter-respectez-les-regles-.html</link>
			<comments>http://www.onfaitduweb.com/479-creer-une-newsletter-respectez-les-regles-.html#comments</comments>
			<pubDate>Mon, 21 Dec 2009 00:00:00 -0500</pubDate>
			<dc:creator>Marie-Andrée Lacroix</dc:creator>
			<guid isPermaLink="false">http://www.onfaitduweb.com/479-creer-une-newsletter-respectez-les-regles-.html</guid>
			<description>
Une newsletter est destinée à plusieurs boites de messagerie différentes (hotmail, yahoo, gmail, outlook, thunderbird...) et chacune réagit différemment. La simplicité et l'accessibilité est de mise! Voici quelques règles à suivre pour maximiser la compatibilité:- Ne pas excéder 600 pixels de large- Ne pas dépasser 30 Ko- Insérer le code à l'intérieur de la balise BODY (oublier le reste)- Intégrer complètement en tableaux (aucun div!)- Déclarer le CSS à l'interieur du code (CSS inline)- Lier toutes les images (et autres médias) en liens absolus- Utiliser les entités HTML- Valider le code (Validator du W3C)- Supprimer les espaces inutiles et les commentairesConseils éclairsIl semble y avoir des problèmes de compatibilité avec la couleur de background déclaré dans le HTML, BODY ou un DIV. Je vous recommande donc de créer un tableau 100% avec un BGCOLOR.Il semble aussi avoir des troubles avec les BORDER dans hotmail. Vous pouvez toujours créer des bordures artificielles à l'aide de TR et TD en spécifiant une couleur de fond et un width ou un height.Privilégiez les IMG au lieu des BACKGROUND-IMAGE. Vous constaterez que hotmail et outlook sont capricieux sur ce point.Quelques liens très utiles sur le sujet :http://www.email-standards.org/http://www.campaignmonitor.com/css/http://www.xavierfrenette.com/articles/css-support-in-webmail/ </description>
			<content:encoded>
				<![CDATA[ <p><p>Une newsletter est destinée à plusieurs boites de messagerie différentes (hotmail, yahoo, gmail, outlook, thunderbird...) et chacune réagit différemment. <span style="font-weight: bold;">La simplicité et l'accessibilité est de mise!</span> Voici quelques règles à suivre pour maximiser la compatibilité:</p><p>- Ne pas excéder 600 pixels de large</p><p>- Ne pas dépasser 30 Ko</p><p>- Insérer le code à l'intérieur de la balise BODY (oublier le reste)</p><p>- Intégrer complètement en tableaux (aucun div!)</p><p>- Déclarer le CSS à l'interieur du code (CSS inline)</p><p><img src="http://www.onfaitduweb.com/docs/uploaded/1261444976.jpg"></p><p>- Lier toutes les images (et autres médias) en liens absolus</p><p><img src="http://www.onfaitduweb.com/docs/uploaded/1261444986.jpg"></p><p>- Utiliser les entités HTML</p><p><img src="http://www.onfaitduweb.com/docs/uploaded/1261444993.jpg"></p><p>- Valider le code (<a href="http://validator.w3.org/">Validator du W3C</a>)</p><p>- Supprimer les espaces inutiles et les commentaires</p><p></p><br/><h2>Conseils éclairs</h2><p>Il semble y avoir des problèmes de compatibilité avec la couleur de background déclaré dans le HTML, BODY ou un DIV. Je vous recommande donc de créer un tableau 100% avec un BGCOLOR.</p><p><img src="http://www.onfaitduweb.com/docs/uploaded/1261445011.jpg"></p><p>Il semble aussi avoir des troubles avec les BORDER dans hotmail. Vous pouvez toujours créer des bordures artificielles à l'aide de TR et TD en spécifiant une couleur de fond et un width ou un height.</p><p>Privilégiez les IMG au lieu des BACKGROUND-IMAGE. Vous constaterez que hotmail et outlook sont capricieux sur ce point.</p><p>Quelques liens très utiles sur le sujet :<br/><a href="http://www.email-standards.org/">http://www.email-standards.org/</a><br/><a href="http://www.campaignmonitor.com/css/">http://www.campaignmonitor.com/css/</a><br/><a href="http://www.xavierfrenette.com/articles/css-support-in-webmail/%20">http://www.xavierfrenette.com/articles/css-support-in-webmail/<br/> </a></p></p> ]]>
			</content:encoded>
		</item>
		<item>
			<title>Mise au point sur les splash pages (Page tunnel)</title>
			<link>http://www.onfaitduweb.com/478-mise-au-point-sur-les-splash-pages-page-tunnel-.html</link>
			<comments>http://www.onfaitduweb.com/478-mise-au-point-sur-les-splash-pages-page-tunnel-.html#comments</comments>
			<pubDate>Tue, 08 Dec 2009 00:00:00 -0500</pubDate>
			<dc:creator>Marie-Andrée Lacroix</dc:creator>
			<guid isPermaLink="false">http://www.onfaitduweb.com/478-mise-au-point-sur-les-splash-pages-page-tunnel-.html</guid>
			<description>
Il y a 20 ans, fumer était « in » et bien vue. Maintenant, tout le monde sait que fumer n'est pas bon. Autrefois, avoir une splash page (ou page tunnel, page d'entrée, page d'introduction) était à la mode. Maintenant, il est prouvé que ce genre de pratique n'est pas recommandé (sauf pour certains cas précis). Pourquoi faire cette analogie? Parce qu'il existe encore des gens qui veulent des splash pages pour les mauvaises raisons.Une splash page peut être utile. En voici quelques exemple :1- Afficher une mise en garde2- Afficher un message important ou une nouveauté3- Choisir une langue et/ou un pays4- Choisir une version et/ou une préférence5- Présenter une image très artistique6- Afficher un mode d'emploiEn dehors de ces exemples, une splash page peut s'avérer dommageable.La splash page n'a pas très bonne réputation parce qu'elle...... offre habituellement très peu de contenu textuel et un accès limité aux autres pages du site. Par conséquent, elle diminue considérablement le référencement.... retarde d'une page l'accès à l'information. Elle oblige à cliquer pour accéder à la page d'accueil (la page la plus importante). Il y a donc un clic de trop. Let’s get to the point!... peut être longue à télécharger et du même coup, faire fuir le visiteur.... nuit à la liberté de l'usager. Il doit obligatoirement passer par cette page.... n'est pas toujours appréciée des visiteurs. La visite débute donc avec une note négative.... présente souvent une animation flash que les visiteurs s'empressent de skipper!En conclusion, une splash page devrait être évitée à moins d'avoir une bonne raison.</description>
			<content:encoded>
				<![CDATA[ <p><p>Il y a 20 ans, fumer était « in » et bien vue. Maintenant, tout le monde sait que fumer n'est pas bon. Autrefois, avoir une splash page (ou page tunnel, page d'entrée, page d'introduction) était à la mode. Maintenant, il est prouvé que ce genre de pratique n'est pas recommandé (sauf pour certains cas précis). Pourquoi faire cette analogie? Parce qu'il existe encore des gens qui veulent des splash pages <b>pour les mauvaises raisons.</b></p><p>Une splash page peut être utile. En voici quelques exemple :</p><br/><h2>1- Afficher une mise en garde</h2><br/><img src="http://www.onfaitduweb.com/docs/uploaded/1260312181.jpg"><br/><br/><h2>2- Afficher un message important ou une nouveauté</h2><br/><img src="http://www.onfaitduweb.com/docs/uploaded/1260312190.jpg"><br/><br/><h2>3- Choisir une langue et/ou un pays</h2><br/><img src="http://www.onfaitduweb.com/docs/uploaded/1260312215.jpg"><br/><br/><h2>4- Choisir une version et/ou une préférence</h2><br/><img src="http://www.onfaitduweb.com/docs/uploaded/1260312227.jpg"><br/><br/><h2>5- Présenter une image très artistique</h2><br/><img src="http://www.onfaitduweb.com/docs/uploaded/1260312240.jpg"><br/><br/><h2>6- Afficher un mode d'emploi</h2><br/><img src="http://www.onfaitduweb.com/docs/uploaded/1260312274.jpg"><br/><br/><h2>En dehors de ces exemples, une splash page peut s'avérer dommageable.</h2><p>La splash page n'a pas très bonne réputation parce qu'elle...</p><p>... offre habituellement très peu de contenu textuel et un accès limité aux autres pages du site. Par conséquent, elle <font style="font-weight: bold;" size="4">diminue considérablement le référencement.</font></p><p>... <font size="4"><span style="font-weight: bold;">retarde d'une page l'accès à l'information.</span></font> Elle oblige à cliquer pour accéder à la page d'accueil (la page la plus importante). Il y a donc un clic de trop. <i>Let’s get to the point!</i></p><p>... peut être<font size="4"><span style="font-weight: bold;"> longue à télécharger</span></font> et du même coup, faire fuir le visiteur.</p><p>... <font style="font-weight: bold;" size="4">nuit à la liberté de l'usager.</font> Il doit obligatoirement passer par cette page.</p><p>... <font style="font-weight: bold;" size="4">n'est pas toujours appréciée</font> des visiteurs. La visite débute donc avec une note négative.</p><p>... présente souvent une animation flash que les visiteurs <font size="4"><span style="font-weight: bold;">s'empressent de skipper</span></font>!</p><p><font size="4"><span style="font-weight: bold;">En conclusion, une splash page devrait être évitée à moins d'avoir une bonne raison.</span></font></p><br/></p> ]]>
			</content:encoded>
		</item>
	</channel>
</rss>
