<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="https://dascritch.net/feed/rss2/xslt" ?><rss version="2.0"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>da scritch net works - Mot-clé - cssr07</title>
	<link>https://dascritch.net/</link>
	<description>Ma vie et tous ses ridicules petits à-côtés : mes émissions “CPU” sur Radio FMR, les standards web, le code et ce qui me passe par la tête.</description>
	<language>fr</language>
	<pubDate>Tue, 09 Jun 2026 06:56:56 +0200</pubDate>
	<copyright>CC pour les textes</copyright>
	<docs>http://blogs.law.harvard.edu/tech/rss</docs>
	<generator>Dotclear</generator>

	<sy:updatePeriod>daily</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<sy:updateBase>2026-06-09T06:56:56+02:00</sy:updateBase>

	
	<item>
		<title>CSS reboot 2013</title>
		<link>https://dascritch.net/post/2013/05/10/CSS-reboot-2013</link>
		<guid isPermaLink="false">urn:md5:5b50ff495be10a61d0d66f288d50ea5f</guid>
		<dc:date>2013-05-10T07:46:00+02:00</dc:date>

    <dc:creator>Da Scritch</dc:creator>
        <dc:subject>Ma vie est une sitcom</dc:subject>
        
    <description>Ce blog méritait un sérieux coup de peinture		&lt;span class="tags"&gt;&lt;br /&gt;&lt;a href="https://dascritch.net/category/Ma-vie-est-une-sitcom"&gt;Ma vie est une sitcom&lt;/a&gt; &lt;/span&gt;
	</description>
    <content:encoded>
		&lt;p&gt;Ce blog méritait un sérieux coup de peinture&lt;span class="tags"&gt;&lt;br /&gt;
		&lt;a href="https://dascritch.net/category/Ma-vie-est-une-sitcom"&gt;
			Ma vie est une sitcom&lt;/a&gt;
				&lt;/span&gt;
		&lt;/p&gt;
		&lt;p&gt;
La précédente version de ce site a été “designée” en 2006. Oui oui, en 2006. Et j'étais parti d'un pari complètement stupide, moi qui n'y connaissais rien aux CSS, de passer dans un design liquide et que cela fonctionne sur MSIE6. J'étais même suffisament prétentieux pour &lt;a href=&quot;https://dascritch.net/tag/cssr07&quot;&gt;avoir participé au concours cssr07 à l'époque.&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src=&quot;https://dascritch.net/vrac/.blog2/sitcom/RipolineZeWeb1.png&quot; alt=&quot;RipolineZeWeb1.png&quot; title=&quot;RipolineZeWeb1.png, mai 2013&quot; class=&quot;l&quot; /&gt;
Yep ! C'est dire si ces temps sont lointains…&lt;br /&gt;
MSIE7 n'était encore qu'en béta, l'iPhone un projet super-secret, Firefox faisait 5% de PDM et WebKit n'existant que dans l'environnement KDE sous Linux.Et oui, j'annonçais &lt;cite&gt;Ripolinizing ze ouèb&lt;/cite&gt; car en même temps, je peignais mon appartement. Comme peut en témoigner mon ex-photo de bannière, prise au Nokia 5800.
&lt;/p&gt;

&lt;p&gt;
Sauf que voilà, Sud Web 2013 approche à très grands pas. Et même si les cordonniers sont les plus mal chaussés, ce site était devenu une honte. Je ne parle pas que du bleu layette que j'utilisais.
&lt;/p&gt;
&lt;p&gt;
Vous pouviez pas savoir combien je me faisais chambrer, rien que sur la couleur de fond, que pourtant je trouvais très reposante par rapport au blanc pur. J'ai cédé. Je suis faible.
&lt;/p&gt;
&lt;h3 class=&quot;cl&quot;&gt;Gloire à l'équipe Dotclear&lt;/h3&gt;
&lt;p&gt;
Même si le moteur de blog avance très peu (et il en a très peu besoin&amp;nbsp;: il est très bien conçu à la base), il y a eu un élément important qui m'a fait passer le pas, c'est &lt;strong&gt;le thème Ductile&lt;/strong&gt;. Il se montre très paramétrable, souple, est vraiment désigné en &lt;em&gt;responsive design&lt;/em&gt;, ce qui était le péché majeur de mon précédent style, qui ne pouvait s'afficher en-dessous de 540px de large. Le travail de &lt;a href=&quot;https://twitter.com/Kozlika&quot;&gt;Kozlika&lt;/a&gt;, &lt;a href=&quot;https://twitter.com/franckpaul&quot;&gt;Franck Paul&lt;/a&gt; et de tous les autres est une petite merveille.
&lt;/p&gt;
&lt;p&gt;
Le fait aussi d'écrire directement en XHTML1 la mise en forme de mes billets m'a évité bien des déconvenues. Y'en a forcément, mais elles sont franchement peu visibles.
&lt;/p&gt;
&lt;h3&gt;Mes petits travaux de finitions&lt;/h3&gt;
&lt;p&gt;
La première des choses à été de transformer le balisage du thème en HTML5, et de mettre un &lt;em&gt;breadcrumb&lt;/em&gt;. Malheureusement, j'ai copié et retordu le thème au lieu de l'étendre proprement, ce qui fait que je vais devoir refaire ces travaux si je souhaite les reverser.&lt;br /&gt;
J'ai mis mon datehumaine() qui permet d'afficher des dates relatives. Faudra que je le ré-écrive, cette version date de 2005. Il est même pas à jour par rapport à &lt;a href=&quot;http://dagence.pro&quot;&gt;dAgence&lt;/a&gt;.&lt;br /&gt;
J'ai remonté les annexes/pièces-jointes toutes en haut, afin que le podcast soit le premier élément lisible d'un billet d'émission. De même, le mini-sommaire des billets est désormais en haut “TL;DR”, ré-écrit en parti.
&lt;/p&gt;
&lt;p&gt;
Mais tout est loin d'être terminé, car j'ai passé ces deux jours de congés à être malade comme un chien. Notamment&amp;nbsp;:&lt;br /&gt;
Si les effets d'apparitions sont toujours là, je compte les switcher à du css3, ce qui sera nettement mieux&lt;br /&gt;
J'aimerais à terme refaire la une dans le style de l'application Google Flux sur Android, qui est super agréable à regarder.&lt;br /&gt;
Et surtout, j'ai supprimé les étiquettes en haut à droite du thème original sans le vouloir. Le restaurer va être compliqué
&lt;/p&gt;
&lt;p&gt;
En fait, je suis pas assez bon designer pour arriver à donner un look uniforme à ce blog, &lt;a href=&quot;http://dascritch.com&quot;&gt;à mon site corporate  dascritch.com&lt;/a&gt;, à &lt;a href=&quot;https://twitter.com/dascritch&quot;&gt;mon compte twitter&lt;/a&gt; et mes bannières &lt;a href=&quot;https://plus.google.com/u/0/104202051000932810138/posts&quot;&gt;Google+&lt;/a&gt; et &lt;a href=&quot;https://www.linkedin.com/in/dascritch&quot;&gt;LinkedIn&lt;/a&gt;. Bref, y'a du boulot.
&lt;/p&gt;
&lt;h3&gt;Y'a eu des pertes&lt;/h3&gt;
&lt;p&gt;
J'ai définitivement viré l'impressionnante liste de liens qui comportait 1200 références classés par type. Ça faisait super longtemps que je ne la tenais pas à jour.&lt;br /&gt;
J'ai aussi supprimé le lien vers mes archives. Tout ce qui a été écrit entre 1997 et 2004 est provisoirement caché. Il faut que je prenne le temps de conformer les 300 pages pour les rentrer dans Dotclear.&lt;br /&gt;
Il y a aussi toutes les chroniques qui comportent le logo du &lt;em&gt;Supplément Week-End&lt;/em&gt; à légèrement remettre en ordre&amp;nbsp;: réduire le logo de l'émission et échanger avec la couverture du livre, pour qu'elle soit lisible en mode listing.
&lt;/p&gt;
&lt;p&gt;
Mais ça y est, ENFIN, mon site est consultable sur téléphone.
&lt;/p&gt;</content:encoded>
    
    
    
      </item>
  
	<item>
		<title>Les sites des codeurs sont les plus mals codés</title>
		<link>https://dascritch.net/post/2011/04/15/Les-sites-des-codeurs-sont-les-plus-mals-cod%C3%A9s</link>
		<guid isPermaLink="false">urn:md5:8e79b69860d773f878d2ed9d43694452</guid>
		<dc:date>2011-04-15T13:47:00+02:00</dc:date>

    <dc:creator>Da Scritch</dc:creator>
        <dc:subject>Webdev</dc:subject>
        
    <description>Oh mince... y'a un accroc dans mon plan.		&lt;span class="tags"&gt;&lt;br /&gt;&lt;a href="https://dascritch.net/category/Webdev"&gt;Webdev&lt;/a&gt; &lt;/span&gt;
	</description>
    <content:encoded>
		&lt;p&gt;Oh mince... y'a un accroc dans mon plan.&lt;span class="tags"&gt;&lt;br /&gt;
		&lt;a href="https://dascritch.net/category/Webdev"&gt;
			Webdev&lt;/a&gt;
				&lt;/span&gt;
		&lt;/p&gt;
		&lt;p&gt;
&lt;a href=&quot;http://dascritch.net/post/2007/07/25/Ooops-I-switched-again&quot;&gt;Contrairement à la dernière fois&lt;/a&gt;, cela s'appelle une transition à l'arrache.
&lt;/p&gt;
&lt;p&gt;
Le serveur qui héberge mon blog est en fait co-loué avec une bande de comparses. Cela nous permet d'avoir du dédié à un prix très intéressant, et je remercie Zorel de s'occuper de la gestion administrative et technique. Zorel est aussi un fin négociateur, et il l'a obtenu un bon rabais auprès de notre salle blanche &lt;del&gt;suite à une nuit de beuv&lt;/del&gt; pour un nouveau serveur. Je pensais qu'on restait dans la même Debian avec des numéros de versions anciens (mais avec les patches idoines de sécu), et donc on est parti faire des interviewes au &lt;a href=&quot;http://tgs-ohanami.fr&quot;&gt;TGS Ohanami&lt;/a&gt; innocemment ce week-end.&lt;br /&gt;
&lt;a href=&quot;https://dascritch.net/vrac/.blog2/webdev/1104-migrate-innocent-tgs.jpg&quot; rel=&quot;lightbox[oups]&quot; class=&quot;c&quot;&gt;&lt;img src=&quot;https://dascritch.net/vrac/.blog2/webdev/.1104-migrate-innocent-tgs_m.jpg&quot; alt=&quot;1104-migrate-innocent-tgs.jpg&quot; title=&quot;1104-migrate-innocent-tgs.jpg, avr. 2011&quot; /&gt;&lt;br /&gt;&lt;small&gt;Ça fait le con en costard devant un cameraman en marcel alors que le codeur aurait mieux fait de vérifier avant la version de son nouveau serveur (photo&amp;nbsp;: ©&amp;nbsp;Enflammée)&lt;/small&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h3&gt;Ouch, les textes ont disparus !&lt;/h3&gt;
&lt;p&gt;
Seulement, en début de semaine, il y a eu un hic au moment de changer effectivement de serveur&amp;nbsp;: on est passé à PHP version 5.3. &lt;a href=&quot;http://enflammee.net&quot;&gt;Le blog d'Enflammée&lt;/a&gt; était &lt;i&gt;clean&lt;/i&gt; (comprenez que c'était un &lt;a href=&quot;http://dotclear.net&quot;&gt;dotclear&lt;/a&gt; sans modifications) et donc est reparti sans un pet mais mon site perso s'est effondré. Il se trouve que &lt;a href=&quot;http://dascritch.net&quot;&gt;dascritch.net&lt;/a&gt; était depuis un temps certain architecturé avec un dotclear 2.0 version béta (eh oui, c'est pas bien du tout) qui a été greffé de force dans du code qui date parfois de 2001… Tant que cela marchait (et vu que mon code possédait suffisamment de blindage, remis à jour), et comme j'avais vraiment d'autres priorités (entres autres, &lt;a href=&quot;http://dagence.pro&quot;&gt;dAgence&lt;/a&gt;, écrit quasi de zéro), ça ne posait aucun problème. Et forcément, ça me pendant au nez. Le passage en &lt;a href=&quot;https://dascritch.net/tag/php&quot;&gt;PHP&lt;/a&gt; 5.3 a cassé bien des fonctions obsolètes (entres autres, &lt;a href=&quot;https://dascritch.net/tag/regex&quot;&gt;les fonctions regex&lt;/a&gt; &lt;code&gt;ereg&lt;/code&gt;, car oui, comme pour le &lt;a href=&quot;https://dascritch.net/tag/javascript&quot;&gt;javascript&lt;/a&gt;, les &lt;a href=&quot;http://dascritch.net/post/2007/08/06/Javascript-laccent-d-la-regex&quot;&gt;libs regex sont très différentes&lt;/a&gt;), ce qui a fait disparaitre les textes des billets (en fait, ils n'étaient plus affichés) et mis mon site en verrouillage par sécurité.
&lt;/p&gt;
&lt;p&gt;
Il était franchement temps de remettre tout ça d'équerre.
&lt;/p&gt;
&lt;p&gt;
Donc, je suis revenu au &lt;a href=&quot;http://dotclear.net&quot;&gt;Dotclear&lt;/a&gt; &lt;i&gt;vanilla&lt;/i&gt; (2.2.3), cette fois-ci intégrant les fonctions persos dans un plugin écrit dans les règles (qui reprend mes améliorations, notamment de sécurité). Ce qui permet de garder la souplesse des mises à jour, et aussi une unicité de gestion de l'aspect graphique. Mais cela m'a demandé deux jours, puisque je suis en pleine livraison entre deux clients, des demandes urgentes de devis, bref, j'ai pas franchement dormi ces deux dernières nuits.
&lt;/p&gt;
&lt;p&gt;
Du coup, plein de modifications sont apparues au grand jour… qui étaient prêtes à être déployées&amp;nbsp;! Cela faisait aussi 4 ans (eh&amp;nbsp;!) qu'en fait la version de mon blog vue à la maison n'utilisait plus la lib &lt;a href=&quot;https://dascritch.net/tag/javascript&quot;&gt;javascript&lt;/a&gt; mootools mais jquery (pour info, la version 1.0.3, chargée le 27 Octobre 2006... je sais, j'ai honte) Une partie du code tentait de gérer MsIE 5.5 (eh oui), et disposait d'un chargeur asynchrone maison de librairies javascript. Le truc plus vraiment nécessaire. La &lt;a href=&quot;https://dascritch.net/tag/css&quot;&gt;CSS&lt;/a&gt; avait aussi gagné un sacré nettoyage, pas forcément visible. Dans l'ensemble, pour moi, ça fait pas grand-chose de neuf. Pour vous, ça semblera nettement plus actuel que &lt;a href=&quot;https://dascritch.net/tag/cssr07&quot;&gt;la précédente version dite “cssr07”&lt;/a&gt;. Mais je compte néanmoins retravailler “graphiquement” mon header.
&lt;/p&gt;
&lt;h3&gt;Ça… on jette… ça… on jette…&lt;/h3&gt;
&lt;p&gt;
La colonne à droite de navigation (&lt;i&gt;sidebar&lt;/i&gt;) a aussi vécu un sacré nettoyage. Fini le double moteur de recherche (l'un envoyant les résultats Dotclear, l'autre ceux de Google). Fini aussi &lt;a href=&quot;http://dascritch.net/post/2009/01/09/Viadeo-has-been&quot;&gt;le lien vers Viadeo, je vous laisse deviner pourquoi&lt;/a&gt;. Le &lt;a href=&quot;http://dascritch.net/post/2004/11/25/76-delicious-via-rss&quot;&gt;résumé de del.icio.us&lt;/a&gt; a &lt;i&gt;provisoirement&lt;/i&gt; disparu. Il est &lt;a href=&quot;http://del.icio.us/dascritch&quot;&gt;toujours consultable sur le site d'origine&lt;/a&gt; Il risque de revenir, mais sous la forme d'une compilation mensuelle, tant que Yahoo le tue pas. Ce fut un crève-cœur car le développement de ce code m'avait permis de discuter avec &lt;a href=&quot;http://joshua.schachter.org/&quot;&gt;Joshua Schachter&lt;/a&gt;, notamment de micro-formats embarqués dans le &lt;a href=&quot;https://dascritch.net/tag/html&quot;&gt;html&lt;/a&gt; dès.... 2004&amp;nbsp;!
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://dascritch.net/post/2004/08/23/26-apres-le-vrac-les-favoris&quot;&gt;Disparue aussi ma liste de liens&lt;/a&gt;. les raisons sont multiples&amp;nbsp;: 
&lt;ul&gt;
&lt;li&gt;elle n'était plus à jour depuis que &lt;a href=&quot;http://dascritch.net/post/2004/08/23/26-apres-le-vrac-les-favoris&quot;&gt;le dernier plugin de Firefox capable d'exporter les bookmarks en format xml/XBel a disparu&lt;/a&gt;, lors de la sortie de Firefox&amp;nbsp;2.0. &lt;a href=&quot;http://dascritch.net/vrac/xbel.xml&quot;&gt;Le fichier master du site est toujours présent mais plus à jour depuis belle lurette&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;impossible de s'occuper de gérer les liens morts et tout le reste, même DMOZ n'y arrivait pas manuellement&lt;/li&gt;
&lt;li&gt;point de vue référencement, j'ai sacrément perdu en 6 mois, puisque cette rubrique me montrait comme un farmeur de liens...&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
Le plan d'adressage est en cours de simplification, puisque tout le rendu est un pur MVC de Dotclear, et pas un mix immonde entre deux blocs de librairies, dont un perso vraiment trop ancien. J'avais fait disparaitre la version mobile de mon site en 2009 (ça mérite un papier, car certaines choses y sont pleinement d'actu), je compte plutôt faire un style pour les téléphones et petites tablettes. Les vieux sites archivés vont rentrer dans Dotclear, quand j'aurais un peu de temps pour ça, ce qui justifiera la disparition de la recherche Google locale. Des pages statiques virent, notamment mon CV, intégralement chez &lt;a href=&quot;http://www.linkedin.com/in/dascritch&quot;&gt;LinkedIn&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
L'aspect général du site ne bouge pas dans l'immédiat, mais ça viendra. Un premier jet concerne déjà les écrans mobiles. 
&lt;/p&gt;
&lt;p&gt;Faut dire que je veux vous éviter le traumatisme de la perte de l'ancien style. Vous vous souveniez du look de mon blog entre 2003 et 2007&amp;nbsp;?
&lt;/p&gt;
&lt;p class=&quot;c&quot;&gt;
&lt;a href=&quot;https://dascritch.net/vrac/.blog2/webdev/707-csscolumns-1.png&quot; rel=&quot;lightbox[oups]&quot; title=&quot;dascritch.net en 2006&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://dascritch.net/vrac/.blog2/webdev/.707-csscolumns-1_m.jpg&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Moralité : &lt;a href=&quot;https://dascritch.net/post/2011/04/15/Les-sites-des-codeurs-sont-les-plus-mals-cod%C3%A9s#&quot;&gt;lire le titre&lt;/a&gt;.
&lt;/p&gt;</content:encoded>
    
    
    
      </item>
  
	<item>
		<title>Bookmark-moi cette page !</title>
		<link>https://dascritch.net/post/2008/05/28/Bookmark-moi-cette-page</link>
		<guid isPermaLink="false">urn:md5:69c74452010cb46796d9bf98e619061e</guid>
		<dc:date>2008-05-29T19:18:00+02:00</dc:date>

    <dc:creator>Da Scritch</dc:creator>
        <dc:subject>Webdev</dc:subject>
        
    <description>Avec des badges partout, ça fait franchement sapin de Noël, et comme qui dirait, on est hors-saison. Alors sérieux, s'abstenir.		&lt;span class="tags"&gt;&lt;br /&gt;&lt;a href="https://dascritch.net/category/Webdev"&gt;Webdev&lt;/a&gt; &lt;/span&gt;
	</description>
    <content:encoded>
		&lt;p&gt;Avec des badges partout, ça fait franchement sapin de Noël, et comme qui dirait, on est hors-saison. Alors sérieux, s'abstenir.&lt;span class="tags"&gt;&lt;br /&gt;
		&lt;a href="https://dascritch.net/category/Webdev"&gt;
			Webdev&lt;/a&gt;
				&lt;/span&gt;
		&lt;/p&gt;
		&lt;p&gt;
Comme tous les sites persos, à mes débuts, j'avais une page avec mes liens favoris (même qu'en fait, péché de jeunesse, &lt;a title=&quot;d'autres sites bd ? archives In~Digest&quot; href=&quot;http://dascritch.net/archiveweb.php/indigest/othsites.html&quot;&gt;c'était plusieurs pages dans une frame&lt;/a&gt;). Cette section &lt;a href=&quot;http://dascritch.net/lien.php/&quot;&gt;subsiste encore sous une autre incarnation&lt;/a&gt; &lt;a href=&quot;https://dascritch.net/post/2008/05/28/Bookmark-moi-cette-page#nb1&quot; name=&quot;in1&quot; class=&quot;up&quot;&gt;&lt;b&gt;[PS1]&lt;/b&gt;&lt;/a&gt;. Pour souligner que j'avais plein de liens que j'aimais bien et tous pleins d'amis virtuels que je kiffais trop, comme tous les blogs primitifs, j'avais mis des badges partout.
&lt;/p&gt;
&lt;p&gt;
&lt;h3&gt;On était en 1997.&lt;/h3&gt;
&lt;p&gt;
Depuis, y'a eu prescription.
&lt;/p&gt;
&lt;p&gt;
Pour la version 6 de ce blog, mitonnée pendant deux ans et arrivée l'été dernier, à donfe sur la &lt;i class=&quot;aide&quot; title=&quot;will-be-wanna-never-been ringard chébran new-wave&quot;&gt;two-point-zero vibe&lt;/i&gt;, j'avais dans l'idée de mettre plein de liens vers des bookmarkeurs sociaux. Vous vous souvenez, toutes ces startups &lt;i&gt;“e-web 2.0”&lt;/i&gt; &lt;a href=&quot;https://dascritch.net/post/2008/05/28/Bookmark-moi-cette-page#nb2&quot; name=&quot;in2&quot; class=&quot;up&quot;&gt;&lt;b&gt;[PS2]&lt;/b&gt;&lt;/a&gt; qui proposent du bookmarkage sociétal à tout-va&amp;nbsp;: &lt;a href=&quot;http://del.icio.us&quot;&gt;del.icio.us&lt;/a&gt; avec 2 “.”, &lt;a href=&quot;http://digg.com&quot;&gt;digg&lt;/a&gt; avec 2 “g”, &lt;a href=&quot;http://www.fuzz.fr/&quot;&gt;fuzz&lt;/a&gt; avec 2 “z” et un “RIP”, &lt;a href=&quot;http://chuuut.wordpress.com/2008/01/29/8/&quot;&gt;fesse-bouc&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; href=&quot;http://favorites.live.com&quot;&gt;microsoft® favorites™ live©&lt;/a&gt;,...
&lt;/p&gt;
&lt;p class=&quot;c&quot;&gt;
&lt;img src=&quot;https://dascritch.net/vrac/.blog2/webdev/805-SocialBookmarkingBadges.png&quot; alt=&quot;&quot; /&gt;
&lt;/p&gt;&lt;p&gt;
La véritable intention était surtout de parodier tous ces sites qui collent partout les badges “&lt;cite&gt;borkmark this&amp;nbsp;!!!!!!!!!&lt;/cite&gt;” car leur idée (oui, ils en ont une), c'est que forcément l'internaute va te marque-pager, et que comme leur compte BM2.0-&lt;i&gt;digg&lt;/i&gt;like est publique, ben tu vas gagner mécaniquement en &lt;i&gt;page-ranking&lt;/i&gt;, et forcément mieux que via ton presta &lt;i class=&quot;aide&quot; title=&quot;gros spammeur de liens tout pourris&quot;&gt;SEO-linkfarmer&lt;/i&gt; qui se fait régulièrement blacklister de Google. À condition de ne manquer aucun de ces sites qui ont tous &lt;i&gt;exactement&lt;/i&gt; la même fonction.
&lt;/p&gt;
&lt;p&gt;
Bref, ces gourous de l'andouillerie oueb confondaient &lt;i&gt;business-model&lt;/i&gt; publicitaire et clicodrome. L'occasion d'en rire était trop belle... en faisait tout comme eux.&lt;br /&gt;
Le problème, c'est qu'à galoper après l'échalote (recenser tous lese-bookm@rkers-2.0) ça faisait plein d'étiquettes bariolées, beaucoup de code à calculer côté serveur (en fait, totalement négligeable, mais quel intérêt pour un téléphone portable ou un robot de moteur de recherche de s'en encombrer le HTML&amp;nbsp;?). On en avait même fait une &lt;i&gt;private joke&lt;/i&gt; lors de la conception d'un site web aujourd'hui disparu.
&lt;/p&gt;
&lt;h3&gt;Fingers in the multiprise&lt;/h3&gt;
&lt;p&gt;
Puis j'ai découvert &lt;a href=&quot;http://addthis.com/&quot;&gt;AddThis&lt;/a&gt;.
&lt;/p&gt;
&lt;p class=&quot;c&quot;&gt;
&lt;script type=&quot;text/javascript&quot;&gt;addthis_pub  = 'dascritch';&lt;/script&gt;
&lt;a href=&quot;http://www.addthis.com/bookmark.php&quot; onmouseover=&quot;return addthis_open(this, '', 'http://dascritch.net/blog.php/post/2008/05/29/Bookmark-moi-cette-page', 'Bookmark-moi cette page ! - Da Scritch Net Works')&quot; onmouseout=&quot;addthis_close()&quot; onclick=&quot;return addthis_sendto()&quot;&gt;&lt;img src=&quot;http://dascritch.net/vrac/.blog2/webdev/805-addthis.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;script type=&quot;text/javascript&quot; src=&quot;http://s7.addthis.com/js/152/addthis_widget.js&quot;&gt;&lt;/script&gt;
&lt;/p&gt;
&lt;p&gt;
Et là, je me suis dit «&amp;nbsp;&lt;cite&gt;Pas con l'idée du popup menu avec la liste de liens sociaux, j'aurais pas à m'emmerder à faire toute la liste, et ça sera plus propre&lt;/cite&gt;&amp;nbsp;».&lt;br /&gt;
Fallait juste rentrer de force leur javascript bourré de &lt;code&gt;document.write&lt;/code&gt; avec &lt;a href=&quot;http://dascritch.net/blog.php/post/2007/08/22/Pour-quelques-Javascripts-de-plus&quot;&gt;mon système d'insertion dynamique&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Mais peut-être qu'au lieu de donner une immense liste de sites web de marque-pages sociétaux, il suffit juste de proposer dynamiquement celui/ceux au/x/quel/s est inscrit le visiteur. Et qu'il peut accéder directement via son navigateur.
&lt;/p&gt;
&lt;p&gt;
Ça tombe bien, un script a été proposé hier-matin sur &lt;a hreflang=&quot;en,xx-1337&quot; href=&quot;http://planet.mozilla.org/&quot;&gt;la Planet Mozilla&lt;/a&gt;, l'aggrégateur des blogs des développeurs de &lt;a href=&quot;http://mozilla.org&quot;&gt;la MoFo&lt;/a&gt;.&lt;br /&gt;
La merveille en question s'appelle &lt;a href=&quot;http://azarask.in/blog/post/socialhistoryjs/&quot;&gt;SocialHistory.js&lt;/a&gt;.
&lt;br /&gt;
Et là, l'esprit taquin se dit qu'il pourrait tout aussi bien utiliser cette bibliothèque pour se faire automatiquement tagger à l'insu du visiteur, mais ce serait une très très très mauvaise idée...
&lt;/p&gt;
&lt;p&gt;
Pourtant, étonnement, je ne vais pas l'installer.
&lt;/p&gt;
&lt;h3&gt;Goodbye and thank you for all the fish&lt;/h3&gt;
&lt;p&gt;
Cherchez bien le lien “AddThis” dans mon template, il n'y est pas. Son code côté serveur est toujours présent mais sert dans l'immédiat à mettre un (tiens, encore un...) badge militant pour le record du monde de bande passante.&lt;br /&gt;
Eh oui, tant de boulot pour finalement pas grand chose.
&lt;/p&gt;
&lt;p&gt;
La véritable raison de la suppression du lien &quot;Bookmark this&quot; dans mon site, c'est que personne ne s'en est servi en deux ans. Strictement personne&amp;nbsp;: zéro clic. Je veux bien croire que c'est sa position qui faisait que personne n'allait dessus, mais les liens qui l'entouraient dans la &lt;i&gt;sidebar&lt;/i&gt; sont très régulièrement cliqués, donc il y avait un désintérêt manifeste pour cette fonction bouffeuse de place et de ressource JS. 
Si des gens se servent d'un système de bookmark sociétal, en général, ils ont des bookmarks, des extensions de navigateurs, voire des &lt;i&gt;favlets&lt;/i&gt; &lt;a href=&quot;https://dascritch.net/post/2008/05/28/Bookmark-moi-cette-page#nb3&quot; name=&quot;in3&quot; class=&quot;up&quot;&gt;&lt;b&gt;[PS3]&lt;/b&gt;&lt;/a&gt;.&lt;br /&gt;
Et, pour être franc pour les e-web-eux-tiou-pouint-zero, je suis pas persuadé que mettre plein de badges “&lt;cite&gt;booste son PR&lt;/cite&gt;” &lt;a href=&quot;https://dascritch.net/post/2008/05/28/Bookmark-moi-cette-page#nb4&quot; name=&quot;in4&quot; class=&quot;up&quot;&gt;&lt;b&gt;[PS4]&lt;/b&gt;&lt;/a&gt;, j'ai plutôt l'impression que c'est le contenu qui prime.
&lt;/p&gt;
&lt;p&gt;
C'est peut-être joli, mais ça sert à rien de mettre des badges partout.
&lt;/p&gt;
&lt;p&gt;
Mais ça... On le savait depuis le début&amp;nbsp;!
&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;
&lt;b&gt;PS&lt;/b&gt; : Ne pas bookmarker ces liens&amp;nbsp;: c'est des renvois dans la même page&amp;nbsp;!
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://dascritch.net/post/2008/05/28/Bookmark-moi-cette-page#in1&quot; name=&quot;nb1&quot;&gt;↑ &lt;b&gt;une autre incarnation&lt;/b&gt; :&lt;/a&gt; Mais qui est menacée d'extinction quand je passerais à Firefox 3&amp;nbsp;: Le script la génère à partir de mes favoris exportés en &lt;abbr title=&quot;XML Bookmark Exchange Language&quot;&gt;XBEL&lt;/abbr&gt;, format &lt;abbr&gt;XML&lt;/abbr&gt; &lt;a href=&quot;http://pyxml.sourceforge.net/topics/xbel/&quot;&gt;ouvert et documenté&lt;/a&gt; toujours pas supporté par défaut par la MozFo. Dans la section blog, il y a une liste de favoris par catégorie. L'excellente extension &lt;a href=&quot;https://addons.mozilla.org/fr/firefox/addon/1989&quot;&gt;Bookmark Synchro&lt;/a&gt; de &lt;a hreflang=&quot;jp&quot; title=&quot;ファイルが見つかりません。 - not found&quot; href=&quot;http://cgi29.plala.or.jp/mozzarel/&quot;&gt;Torisugari&lt;/a&gt; n'est plus maintenue depuis un bail&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dascritch.net/post/2008/05/28/Bookmark-moi-cette-page#in2&quot; name=&quot;nb2&quot;&gt;↑ &lt;b&gt;e-web 2.0&lt;/b&gt; :&lt;/a&gt; Qui a dit &lt;a href=&quot;http://www.youtube.com/watch?v=zVhcvxlr2kY&quot;&gt;«&amp;nbsp;&lt;cite&gt;bingo&lt;/cite&gt;&amp;nbsp;» dans l'assistance&lt;/a&gt; ? Qui ?&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dascritch.net/post/2008/05/28/Bookmark-moi-cette-page#in3&quot; name=&quot;nb3&quot;&gt;↑ &lt;b&gt;&lt;i&gt;favlets&lt;/i&gt;&lt;/b&gt; :&lt;/a&gt; des bookmarks entrainant une action javascript. Une URL qui commence par &quot;&lt;code&gt;javascript:&lt;/code&gt;&quot;. &lt;a href=&quot;http://dascritch.net/blog.php/post/2007/08/22/Pour-quelques-Javascripts-de-plus&quot;&gt;OK, c'est pas propre&lt;/a&gt;, mais dans le contexte navigateur client, ça se justifie&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dascritch.net/post/2008/05/28/Bookmark-moi-cette-page#in4&quot; name=&quot;nb4&quot;&gt;↑ &lt;b&gt;“&lt;cite&gt;booste son PR&lt;/cite&gt;”&lt;/b&gt; :&lt;/a&gt; Véridiquement entendu dans une conférence de web-entreprenautes. Et c'est tout récent.&lt;/li&gt;
&lt;/ol&gt;</content:encoded>
    
    
    
      </item>
  
	<item>
		<title>Pardonnons à ce Flash qui nous agace tant</title>
		<link>https://dascritch.net/post/2007/10/19/Pardonnons-a-ce-Flash-qui-nous-agacent</link>
		<guid isPermaLink="false">urn:md5:17255af3e36afaf534532fe184dd36bc</guid>
		<dc:date>2007-10-19T16:50:00+02:00</dc:date>

    <dc:creator>Da Scritch</dc:creator>
        <dc:subject>Webdev</dc:subject>
        
    <description>Ne tirez plus sur l'ambulance ! Avant de crier que « Flash sapu saimal », apprenez à mieux l'intégrer dans votre HTML...		&lt;span class="tags"&gt;&lt;br /&gt;&lt;a href="https://dascritch.net/category/Webdev"&gt;Webdev&lt;/a&gt; &lt;/span&gt;
	</description>
    <content:encoded>
		&lt;p&gt;Ne tirez plus sur l'ambulance ! Avant de crier que « Flash sapu saimal », apprenez à mieux l'intégrer dans votre HTML...&lt;span class="tags"&gt;&lt;br /&gt;
		&lt;a href="https://dascritch.net/category/Webdev"&gt;
			Webdev&lt;/a&gt;
				&lt;/span&gt;
		&lt;/p&gt;
		&lt;p&gt;
&lt;img src=&quot;https://dascritch.net/vrac/.blog2/webdev/710-flash/710-flash128.png&quot; alt=&quot;&quot; class=&quot;l&quot; /&gt;
L'usage d'un élément en Flash dans un site n'est pas toujours pertinent, &lt;a title=&quot;Ballet perpétuel&quot; href=&quot;http://dascritch.net/blog.php/post/2007/10/15/Ballet-perpetuel&quot;&gt;les animations qu'on ne pourrait pas faire autrement&lt;/a&gt; sont relativement rares. Mais y'a des fois où on ne peut pas se passer d'un élément en Flash dans une page &lt;a href=&quot;http://dascritch.net/blog.php/tag/html&quot;&gt;HTML&lt;/a&gt;&amp;nbsp;: Pour y mettre de la &lt;a href=&quot;http://dascritch.net/blog.php/category/Vu&quot;&gt;vidéo&lt;/a&gt;, pouvoir &lt;a title=&quot;(tous mes billets en podcast en ont un)&quot; href=&quot;http://dascritch.net/blog.php/category/Radio&quot;&gt;lire un mp3&lt;/a&gt; à coup sûr, ou tout simplement parce qu'un client veut du Flash, et là, ça se discute pas&amp;nbsp;: «&amp;nbsp;&lt;cite&gt;Le Client a toujours raison&lt;/cite&gt;&amp;nbsp;».&lt;br /&gt;
Alors évidemment, le Flash™ «&amp;nbsp;&lt;cite&gt;sapu saimal&lt;/cite&gt;&amp;nbsp;» parce que c'est un format propriétaire tenu par Macromedia puis par Adobe, même s'il le format de fichier est documenté et qu'il existe un plugin alternatif &lt;i&gt;open-source&lt;/i&gt; qui peut lire les documents en &lt;code&gt;.swf&lt;/code&gt; (&lt;a href=&quot;http://www.gnu.org/software/gnash/&quot; hreflang=&quot;en&quot; title=&quot;Gnash (GNU project, Free Software Foundation)&quot;&gt;Gnash&lt;/a&gt;, mais dont les fonctions sont quand même limitées), mais aussi la plupart du temps, c'est l'inclusion d'un élément en Flash dans le HTML qui fait hurler «&amp;nbsp;&lt;cite&gt;cépa codex&amp;nbsp;!&lt;/cite&gt;&amp;nbsp;».
&lt;/p&gt;
&lt;p&gt;
Un des points très importants à noter, c'est que le Flash n'est pas indexé par Google, mais il se trouve que d'autres moteurs (dont &lt;a href=&quot;http://www.exalead.fr/&quot;&gt;Exalead&lt;/a&gt;) sont capable d'entrer dedans&amp;nbsp;&lt;a class=&quot;up&quot; href=&quot;https://dascritch.net/post/2007/10/19/Pardonnons-a-ce-Flash-qui-nous-agacent#nb1&quot; name=&quot;in1&quot;&gt;&lt;b&gt;[NB1]&lt;/b&gt;&lt;/a&gt; et de suivre les liens accessibles d'entrée...
&lt;/p&gt;
&lt;p&gt;
L'autre souci, c'est que le Flash est rendu indépendamment du navigateur web. Il interagit avec lui, avec &lt;a href=&quot;http://dascritch.net/blog.php/tag/dom&quot;&gt;l'arbre DOM&lt;/a&gt; du document HTML où il est inclu, mais ne tient absolument pas en compte les actions de navigation tels que avancer/reculer/marque-pager. Pour ce dernier, il serait possible d'utiliser dans l'&lt;strike&gt;&lt;abbr&gt;URL&lt;/abbr&gt;&lt;/strike&gt; &lt;abbr&gt;IRI&lt;/abbr&gt;&amp;nbsp;&lt;a class=&quot;up&quot; href=&quot;https://dascritch.net/post/2007/10/19/Pardonnons-a-ce-Flash-qui-nous-agacent#nb2&quot; name=&quot;in2&quot;&gt;&lt;b&gt;[NB2]&lt;/b&gt;&lt;/a&gt; la position d'ancre (&lt;a href=&quot;http://dascritch.net/blog.php/post/2007/09/17/RIP-URL-URI-IRI-INRI-W3C#nb2&quot; title=&quot;« RIP URL URI, IRI INRI W3C » § NB 2&quot;&gt;ce qui est après le &lt;code&gt;#&lt;/code&gt;&lt;/a&gt;) pour indiquer une position dans l'animation Flash (méthode déjà utilisée dans &lt;a hreflang=&quot;fr&quot; title=&quot; Ajax, navigation et accessibilité… (Alt-I.info)&quot; href=&quot;http://www.alti.info/post/2007/08/26/Ajax-navigation-et-accessibilite-onload-anchor-ancre-astuce-javascript&quot;&gt;certaines applications Ajax-like&lt;/a&gt;), mais dans la pratique, personne ne s'y est intéressé. D'où cette impression que le Flash n'a jamais été dans la partie du web, mais en-dehors de ses fonctions de base. Ce qui donne cette inimitable frustration totale que laissent les sites intégralement en Flash quand on veut en montrer une partie très particulière à un ami par mail&amp;nbsp;: Au lieu de donner directement une &lt;strike&gt;&lt;abbr&gt;URL&lt;/abbr&gt;&lt;/strike&gt; &lt;abbr&gt;IRI&lt;/abbr&gt; (Je m'y ferais jamais) d'une page web, éventuellement avec une ancre, on doit expliquer qu'à cette adresse, il faut attendre 4 secondes, cliquer sur le lapin bleu (celui qui galope de droite à gauche), puis aller sur le rectangle à droite et le déplacer de 183 pixels vers le bas&amp;nbsp;&lt;a class=&quot;up&quot; href=&quot;https://dascritch.net/post/2007/10/19/Pardonnons-a-ce-Flash-qui-nous-agacent#nb3&quot; name=&quot;in3&quot;&gt;&lt;b&gt;[NB3]&lt;/b&gt;&lt;/a&gt;. Le visiteur doit perdre du temps à comprendre une interface qu'il ne retrouvera sûrement que pour ce site.&lt;br /&gt;
“Immersif” soit, mais totalement frustrant.
&lt;/p&gt;&lt;p&gt;
Utiliser du Flash pour un élément de navigation, pour faire une galerie photo, ou pour faire un effet supplémentaire est souvent une erreur, qui rend le site moins utile, trop lourd&amp;nbsp;&lt;a class=&quot;up&quot; href=&quot;https://dascritch.net/post/2007/10/19/Pardonnons-a-ce-Flash-qui-nous-agacent#nb4&quot; name=&quot;in4&quot;&gt;&lt;b&gt;[NB4]&lt;/b&gt;&lt;/a&gt;, moins facile à visiter. Souvent, les intros en Flash sont considérées comme interminables et pénalisent l'expérience du visiteur du site plutôt que lui plaire. Je déteste &lt;a href=&quot;http://www.acbd.fr&quot; hreflang=&quot;fr&quot; title=&quot;Association des Critiques et Journalistes de Bande-Dessinnée&quot;&gt;le site de l'ACBD&lt;/a&gt; (dont je suis membre) rien que pour ça.
&lt;/p&gt;
&lt;p&gt;
À sa décharge, le plugin Flash est sans contestation possible le plus répandu et peut-être le plus universel. Il permet à coup sûr de lire un document sonore en chargement streamé, ainsi que la vidéo. Mais jusqu'à l'intégration toute récente du codec H264 (une version particulière du MPEG4), la qualité n'est pas franchement top, pour une consommation de ressources honnêtement peu justifiée.
&lt;/p&gt;
&lt;h3 id=&quot;pourquoipopulaire&quot;&gt;Pourquoi l'extension Flashblock est si populaire&lt;/h3&gt;
&lt;p&gt;
&lt;img src=&quot;https://dascritch.net/vrac/.blog2/webdev/710-flash/710-flash.png&quot; alt=&quot;&quot; class=&quot;l&quot; title=&quot;L'icône du placeover de Flashbock&quot; /&gt;
&lt;img src=&quot;https://dascritch.net/vrac/.blog2/webdev/710-flash/710-flashplay.png&quot; alt=&quot;&quot; class=&quot;l&quot; title=&quot;Le même placeover survolé&quot; /&gt;
Si vous allez sur le site du journal &lt;i&gt;Libération&lt;/i&gt; depuis plusieurs années, vous avez remarqué combien ils ont été très tolérants envers les pubs en Flash&amp;nbsp;: celle qui font du bruit (mention spéciale à la campagne Wanadoo qui faisait &lt;i&gt;Zdoing! Zdoing!&lt;/i&gt; avec la mention «&amp;nbsp;&lt;cite&gt;cliquez ici pour arrêter ce bruit&lt;/cite&gt;&amp;nbsp;»), voire pire, celles qui font de la vidéo.&lt;br /&gt;
En général ce genre de pub est extrêmement agaçant par le bruit généré, par très &lt;i&gt;work-safe&lt;/i&gt;, gourmant dans la puissance demandé à l'ordinateur. En ouvrant une dizaine d'onglets à partir de la une d'un site de news pour lire tranquillement des articles, il m'est souvent arrivé que ma machine soit complètement à genoux à cause des pubs en Flash, ou que je perde un temps monstre à chercher quel onglet je dois fermer pour arrêter ce p↯☭↹∞n de &lt;i&gt;Zdoing! Zdoing!&lt;/i&gt;.
&lt;/p&gt;
&lt;p&gt;
Dès que j'ai vu &lt;a hreflang=&quot;en&quot; title=&quot;Mozdev : Flashblock&quot; href=&quot;http://flashblock.mozdev.org/&quot;&gt;les prémices&lt;/a&gt; de &lt;a href=&quot;https://addons.mozilla.org/fr/firefox/addon/433&quot; hreflang=&quot;en&quot; title=&quot;Module Flashblock pour Firefox&quot;&gt;l'extension Flashblock&lt;/a&gt; pour &lt;i&gt;Firefox&lt;/i&gt;, je l'ai immédiatement installé. De suite, ce fut un soulagement. Pouvoir lire &lt;i&gt;Libération&lt;/i&gt; sans les pubs sonores, &lt;i&gt;CSO France&lt;/i&gt; sans les animations qui mettent à genoux ma petite machine (à l'époque un Pentium &lt;span class=&quot;serif&quot;&gt;IV&lt;/span&gt;)... un bonheur.&lt;br /&gt;
Flashblock ne bloque pas le chargement du Flash. En fait, il ne fait qu'en geler l'exécution, et le masquer par un &lt;i&gt;place-over&lt;/i&gt;.
&lt;/p&gt;&lt;p class=&quot;c&quot;&gt;
&lt;a href=&quot;https://dascritch.net/vrac/.blog2/webdev/710-flash/.710-flashblock-1_m.jpg&quot; rel=&quot;lightbox[flash]&quot; title=&quot;Le site de Libé vu avec FlashBlock : 4 pubs en flash et une popup bloquée. Pas de doute : bienvenue sur Liberation.fr&quot;&gt;&lt;img src=&quot;https://dascritch.net/vrac/.blog2/webdev/710-flash/.710-flashblock-1_s.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;https://dascritch.net/vrac/.blog2/webdev/710-flash/.710-flashblock-2_m.jpg&quot; rel=&quot;lightbox[flash]&quot; title=&quot;Le site de NRJaïlle vu avec Flashblock : 9 éléments flash bloqués. Waaah, ça farte !&quot;&gt;&lt;img src=&quot;https://dascritch.net/vrac/.blog2/webdev/710-flash/.710-flashblock-2_s.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Alors évidemment, ça fait râler les publicitaires, les annonceurs, les e-régies net-publicitaires.com, les web-@gency et autres flashmasters... Ceux-ci d'ailleurs vont pas tarder à trouver la méthode pour détecter que le plugin est installé pour vous interdire l'accès au site web support de leur pub si gainiale&amp;nbsp;&lt;a class=&quot;up&quot; href=&quot;https://dascritch.net/post/2007/10/19/Pardonnons-a-ce-Flash-qui-nous-agacent#nb5&quot; name=&quot;in1&quot;&gt;&lt;b&gt;[NB5]&lt;/b&gt;&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;
Mais très honnêtement, si la pub ne s'obligeait pas à venir squatter du temps de cerveau déjà occupé par des méthodes aussi irritantes, elle n'emploierait pas autant de pollueurs du web. Le fait qu'elle ne peut s'en empêcher a forcément rendu nécessaire ce genre d'application afin de lire tranquillement une page de texte sans être insupporté par des animations quelconques (les GIF clignotants sont déjà des plaies).
&lt;/p&gt;&lt;p&gt;
La cabale anti-Flash tient souvent de la réaction épidermique à des publicités trop ”pro-actives“.
&lt;/p&gt;
&lt;h3 id=&quot;embedvsobject&quot;&gt;Balises et balisons : La guéguerre entre Embed et Object&lt;/h3&gt;
&lt;p&gt;
&lt;img src=&quot;https://dascritch.net/vrac/.blog2/webdev/710-flash/710-Netscape-2.png&quot; alt=&quot;&quot; title=&quot;L'icône de Netscape 2. L'époque où les dinosaures régnaient sur le web&quot; class=&quot;l&quot; /&gt;
Historiquement, le langage HTML a été étendu par &lt;i&gt;Netscape&lt;/i&gt;, puis &lt;span class=&quot;aide&quot; title=&quot;étendu et englobé&quot;&gt;«&amp;nbsp;&lt;cite&gt;extend and embrance&lt;/cite&gt;&amp;nbsp;»&lt;/span&gt; par Microsoft. Chacun y allait de sa petite innovation. Par exemple, &lt;a hreflang=&quot;en&quot; title=&quot;Adam's Advanced HTML Guide- «layer» tag&quot; href=&quot;http://www.geocities.com/SiliconValley/Orchard/5212/layer.htm&quot;&gt;qui se souvient des balises &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;layer&lt;/span&gt;&amp;gt;&lt;/code&gt;&lt;/a&gt;&amp;nbsp;? c'était le pendant de chez Netscape aux &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;div&lt;/span&gt;&amp;gt;&lt;/code&gt; proposé par Microsoft. Idem pour &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;object&lt;/span&gt;&amp;gt;&lt;/code&gt;, qui fut la réponse du berger à la bergère aux &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;embed&lt;/span&gt;&amp;gt;&lt;/code&gt; de Netscape.&lt;br /&gt;
Mais &lt;cite class=&quot;aide&quot; title=&quot;« malheur aux vaincus » disait César à propos de ces incultes Barbares, ainsi appelés car non-latinistes&quot;&gt;væ victis&lt;/cite&gt;, ni les &lt;i&gt;layers&lt;/i&gt;, ni les &lt;i&gt;embed&lt;/i&gt; ne furent retenus par le &lt;abbr&gt;W3C&lt;/abbr&gt;. Ces deux propositions furent enterrés avec le reste du code de &lt;i&gt;Netscape Navigator&lt;/i&gt; (&lt;a title=&quot;La seconde guerre du web n'aura pas lieu&quot; href=&quot;http://dascritch.net/blog.php/post/2006/10/13/562-la-seconde-guerre-du-web-n-aura-pas-lieu&quot;&gt;qui venait de perdre la première guerre du web&lt;/a&gt;) par le projet Mozilla qui en hérita, pour justement être conforme W3C et tirer un trait sur les erreurs de programmation du passé.&lt;br /&gt;
Étonnement, &lt;a href=&quot;http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_4150&amp;amp;sliceId=1&quot;&gt;la doc en ligne écrite à l'époque de &lt;i&gt;Macromedia Flash&lt;/i&gt;&lt;/a&gt; n'a pas été mise à jour. On nous explique toujours qu'embarquer dans la balise &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;object&lt;/span&gt;&amp;gt;&lt;/code&gt; un élément &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;embed&lt;/span&gt;&amp;gt;&lt;/code&gt; est très utile pour rester compatible avec tous les navigateurs... Ahem... Non, sans rire, je doute qu'il reste suffisamment de &lt;i&gt;Netscape Navigator&lt;/i&gt; version 3 ou 4 justifiant d'utiliser encore cette balise. Et pourtant, pratiquement 95% des appels de Flash se font avec du code redondant qui n'est jamais interprété.
&lt;/p&gt;&lt;p&gt;
On y notera une des propriétés très intéressantes de la balise &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;object&lt;/span&gt;&amp;gt;&lt;/code&gt;&amp;nbsp;: le &lt;i&gt;fallback&lt;/i&gt;, qu'on pourrait rapprocher de la «&amp;nbsp;dégradation élégante&amp;nbsp;» qui m'est si chère en manipulation DOM. Si jamais l'interprétation des attributs de la balise &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;object&lt;/span&gt; /&amp;gt;&lt;/code&gt; échoue, le navigateur client va prendre le contenu entre les deux balises &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;object&lt;/span&gt;&amp;gt;&lt;/code&gt; et &lt;code&gt;&amp;lt;/&lt;span class=&quot;balise&quot;&gt;object&lt;/span&gt;&amp;gt;&lt;/code&gt; pour l'interpréter. Chaque balise &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;param&lt;/span&gt; /&amp;gt;&lt;/code&gt; est susceptible dans ses attributs d'apporter des précisions complémentaires pour le plugin et les autres balises sont exécutées telles quelles. Un comportement qu'on pourrait croire analogue à &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;noscript&lt;/span&gt;&amp;gt;&lt;/code&gt; ou &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;noframe&lt;/span&gt;&amp;gt;&lt;/code&gt;, sauf qu'on intégrerait le source du script (ou des frames) dans l'attribut de la balise, ce qui aurait été largement plus intelligent.
&lt;/p&gt;
&lt;h3 id=&quot;appletetiframe&quot;&gt;&lt;i&gt;&amp;lt;Applet&amp;gt;us dinosaurus&lt;/i&gt; et &lt;i&gt;&amp;lt;Iframe&amp;gt;us archeis&lt;/i&gt; ne sont pas dans un bateau...&lt;/h3&gt;
&lt;p&gt;
&lt;img src=&quot;https://dascritch.net/vrac/.blog2/webdev/710-flash/710-ie4-verrou.png&quot; alt=&quot;&quot; title=&quot;MSIE 4, quiand Microsoft crû verrouiller internet&quot; class=&quot;r&quot; /&gt;
Quitte à parler de fossiles pré-W3C...&lt;br /&gt;
En faisant de recherches pour ce billet, je suis tombé sur une vieille balise, cachée dans les strates de la préhistoire du W3C&amp;nbsp;: &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;applet&lt;/span&gt;&amp;gt;&lt;/code&gt;. La balise &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;applet&lt;/span&gt;&amp;gt;&lt;/code&gt; a été introduite par Sun Microsystems pour l'usage exclusif d'inclusion d'un programme en Java dans une page HTML. Cette balise fut complètement oubliée, et pour cause&amp;nbsp;: aucun mécanisme &lt;i&gt;codebase&lt;/i&gt; n'a été prévu pour signaler où chercher le plugin si celui-ci n'est pas présent dans le navigateur client. Une clause réellement indispensable et pénalisante à l'époque où le Java et le Flash n'étaient pas installés par défauts dans les systèmes d'exploitations (non non, ni dans &lt;i&gt;Microsoft Windows&lt;/i&gt; 98, ni ME, ni 2000). Il fallait prévoir le coup dans le mécanisme de &lt;i&gt;fallback&lt;/i&gt;.
&lt;/p&gt;
&lt;p&gt;
J'ai aussi déniché pour vous une autre balise potentiellement intéressante. &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;iframe&lt;/span&gt;&amp;gt;&lt;/code&gt; a un “avantage”&amp;nbsp;: sortir l'élément Flash du reste du HTML, ce qui fait que &lt;i class=&quot;aide&quot; title=&quot;Explorer l'Internet selon Microsoft&quot;&gt;MSIE&lt;/i&gt; n'est plus fautif vis-à-vis du brevet Eolas (lire plus bas). Néanmoins, cela génère plusieurs bugs&amp;nbsp;:
&lt;ul&gt;
&lt;li&gt;l'absence de gestion de &lt;i&gt;codebase&lt;/i&gt; et de &lt;i&gt;fallout&lt;/i&gt; en cas de plugin défaillant (absence du plugin, ou, cas récemment rencontré, version “archaïque”)&lt;/li&gt;
&lt;li&gt;l'absence de récupération de l'arbre DOM par le programme Flash (si ce dernier modifie la structure de l'ensemble de la page)&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
La balise &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;applet&lt;/span&gt;&amp;gt;&lt;/code&gt; est &lt;a href=&quot;http://www.w3.org/TR/1999/REC-html401-19991224/struct/objects.html#h-13.4&quot;&gt;dépréciée dans HTML4&lt;/a&gt;, les frames étant dépréciés dans le XHTML, leur usage n'est donc pas recommandé dans l'optique d'un internet moderne.
&lt;/p&gt;
&lt;h3 id=&quot;eolas&quot;&gt;La question Eolas&lt;/h3&gt;
&lt;p&gt;
Les “solutions” &lt;a href=&quot;http://dascritch.net/blog.php/tag/javascript&quot;&gt;Javascript&lt;/a&gt; par manipulation DOM pour inclure du Flash sont une fausse réponse à une question viciée&amp;nbsp;: celle de la compatibilité avec &lt;i&gt;MSIE&lt;/i&gt; suite, non pas à un bug, mais à un procès.&lt;br /&gt;
En 2004, Microsoft perd un procès qui met les bases mêmes du web en danger. &lt;a hreflang=&quot;en&quot; href=&quot;http://eolas.com/&quot; rel=&quot;nofollow&quot;&gt;Eolas&lt;/a&gt;, une officine &lt;i&gt;patent-troll&lt;/i&gt;&amp;nbsp;&lt;a class=&quot;up&quot; href=&quot;https://dascritch.net/post/2007/10/19/Pardonnons-a-ce-Flash-qui-nous-agacent#nb6&quot; name=&quot;in6&quot;&gt;&lt;b&gt;[NB6]&lt;/b&gt;&lt;/a&gt; arrive à faire croire qu'elle a le droit de taxer tout ceux qui osent mettre un contenu interactif dans une page web, le principe même du plugin devient problématique. Non seulement, &lt;a hreflang=&quot;en&quot; title=&quot;Web patent critics spotlight old technology&quot; href=&quot;http://www.news.com/Web-patent-critics-spotlight-old-technology/2100-1028_3-5100693.html&quot;&gt;il y a un &lt;i&gt;prior-art&lt;/i&gt; avéré à ce brevet&lt;/a&gt;, mais qui plus est on est dans un cas de brevet logiciel lequel n'aurait jamais dû être autorisé. Et les conséquences sont telles que pour une fois, tout le monde a... défendu Microsoft et hurlé contre Eolas (oui, tout le monde&amp;nbsp;: le &lt;abbr&gt;W3C&lt;/abbr&gt;, Adobe, Mozilla Foundation, Apple, Opera,... dont pas mal de multinationales en faveur des brevets logiciels&amp;nbsp;!&amp;nbsp;) au point que l'&lt;abbr&gt;EFF&lt;/abbr&gt; et d'autres organismes pro-open-source se sont lancé dans un vaste plan de recherche pour contrer le brevet Eolas, estimé comme totalement illégitime.
&lt;/p&gt;&lt;p&gt;
Peine et procès perdu&amp;nbsp;: Microsoft est condamné à payer plus d'un demi-milliard de dollars au maître-chanteur, et à brider le fonctionnement des plugins (&lt;a hreflang=&quot;en&quot; title=&quot;Activating ActiveX Controls&quot; href=&quot;http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/overview/activating_activex.asp&quot;&gt;dits «&amp;nbsp;&lt;i&gt;ActiveX controls&lt;/i&gt;&amp;nbsp;»&lt;/a&gt;) dans son navigateur.&lt;br /&gt;
&lt;img src=&quot;https://dascritch.net/vrac/.blog2/webdev/710-flash/710-MSIE-EolasInside.png&quot; alt=&quot;Internet Explorer : Press OK to continue to loading the content of this page.&quot; title=&quot;Le fameux PopUp Eolas™Inside ®&quot; class=&quot;r&quot; /&gt;
C'est ainsi qu'une mise à jour majeure a fait en sorte que TOUT plugin dans une page HTML (Flash, mais aussi &lt;i&gt;Windows Media&lt;/i&gt;, &lt;i&gt;Quicktime&lt;/i&gt;, PDF, &lt;i&gt;Microsoft Excel&lt;/i&gt;,...) dans les navigateurs de Microsoft doit désormais être “activé” par un clic. Soit un popup s'affiche à l'écran, soit une image prérendue figée doit être cliquée pour activer&amp;nbsp;&lt;a class=&quot;up&quot; href=&quot;https://dascritch.net/post/2007/10/19/Pardonnons-a-ce-Flash-qui-nous-agacent#nb7&quot; name=&quot;in7&quot;&gt;&lt;b&gt;[NB7]&lt;/b&gt;&lt;/a&gt; le plugin.&lt;br /&gt;
Dans les deux cas, ce comportement est ajouté par l'exécution obligatoire d'un script (très probablement un JScript ou un VBScript) hébergé en local dans &lt;i&gt;MSIE&lt;/i&gt;. Et il se trouve que ce petit bout peut faire bugguer de façon aléatoire pas mal d'applications Javascript (et Ajax), dont mon propre site. Microsoft a pallié par un pathétique cache-sexe le refus de l'&lt;abbr title=&quot;l'organisme de dépôt des brevets aux USA&quot;&gt;USPTO&lt;/abbr&gt; de reconnaître ses erreurs.
&lt;/p&gt;&lt;p&gt;
Très personnellement,  je reste étonné que ni Opera, ni la Mozilla Foundation, ni KDE (éditeur de &lt;i&gt;Konqueror&lt;/i&gt;), ni Apple (éditeur de &lt;i&gt;Safari&lt;/i&gt;) ne furent inquiétés. Seul Microsoft fut la cible de ce &lt;i&gt;patent-troll&lt;/i&gt;, très probablement à cause de sa forte rentabilité devant des tribunaux.&lt;br /&gt;
&lt;img src=&quot;https://dascritch.net/vrac/.blog2/webdev/710-flash/710-ies4lin.png&quot; alt=&quot;&quot; class=&quot;l&quot; /&gt;
Conséquence&amp;nbsp;: &lt;i&gt;MSIE&lt;/i&gt; est &lt;b&gt;l'unique navigateur affligé&lt;/b&gt; de ce comportement&amp;nbsp;&lt;a class=&quot;up&quot; href=&quot;https://dascritch.net/post/2007/10/19/Pardonnons-a-ce-Flash-qui-nous-agacent#nb8&quot; name=&quot;in8&quot;&gt;&lt;b&gt;[NB8]&lt;/b&gt;&lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;
Heureusement, toutes les tares ne sont pas éternelles&amp;nbsp;: Il se trouve que le mois dernier &lt;a hreflang=&quot;en&quot; title=&quot;Microsoft, Eolas settle big patent dispute (Updated)&quot; href=&quot;http://blog.seattlepi.nwsource.com/microsoft/archives/120899.asp?source=rss&quot;&gt;Microsoft a signé en catimini un accord avec Eolas&lt;/a&gt;, tandis que l'USPTO se prend actuellement des volées de bois vert de partout, l'EFF déterrant tout plein de cadavres concernant les brevets logiciels. On peut raisonnablement imaginer que bientôt &lt;i&gt;MSIE&lt;/i&gt; ne sera plus bridé par le problème, par le jeu d'une mise-à-jour.&lt;br /&gt;
Et que donc la solution Javascript est une réponse erronée à une question qui n'aurait jamais dû être posée.
&lt;/p&gt;
&lt;h3 id=&quot;javascriptpue&quot;&gt;La réponse Javascript, pourquoi pue-t-elle plus que le Flash&lt;/h3&gt;
&lt;p&gt;
&lt;a hreflang=&quot;en&quot; title=&quot;SWFObject: Javascript Flash Player detection and embed script&quot; href=&quot;http://blog.deconcept.com/swfobject/&quot;&gt;&lt;i&gt;SWFobject&lt;/i&gt;.js&lt;/a&gt; n'a qu'un seul objectif&amp;nbsp;: permettre à une animation en Flash de se lancer dès l'affichage de la page HTML dans &lt;i&gt;MSIE&lt;/i&gt;. Sans l'infâme popup, ni clic d'activation.&lt;br /&gt;
Voici le code HTML+Javascript qu'on devrait mettre dans un site pour inclure du Flash avec&amp;nbsp;:
&lt;/p&gt;
&lt;blockquote&gt;&lt;code&gt;
&amp;lt;&lt;span class=&quot;balise&quot;&gt;script&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;type&lt;/span&gt;=&quot;&lt;span class=&quot;param&quot;&gt;text/javascript&lt;/span&gt;&quot; &lt;span class=&quot;attr&quot;&gt;src&lt;/span&gt;=&quot;&lt;span class=&quot;param&quot;&gt;swfobject.js&lt;/span&gt;&quot;&amp;gt;&amp;lt;/&lt;span class=&quot;balise&quot;&gt;script&lt;/span&gt;&amp;gt;&lt;br /&gt;
&amp;lt;&lt;span class=&quot;balise&quot;&gt;div&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;id&lt;/span&gt;=&quot;&lt;span class=&quot;param&quot;&gt;contenuflash&lt;/span&gt;&quot;&amp;gt;&lt;br /&gt;
 &amp;nbsp; Ce texte est remplacé par l'animation flash.swf&lt;br /&gt;
&amp;lt;/&lt;span class=&quot;balise&quot;&gt;div&lt;/span&gt;&amp;gt;&lt;br /&gt;
&amp;lt;&lt;span class=&quot;balise&quot;&gt;script&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;type&lt;/span&gt;=&quot;&lt;span class=&quot;param&quot;&gt;text/javascript&lt;/span&gt;&quot;&amp;gt;&lt;br /&gt;&lt;span class=&quot;js&quot;&gt;
 &amp;nbsp; var so = new SWFObject(&quot;flash.swf&quot;, &quot;IdDuBlocDuSwf&quot;, &quot;LargeurEnPx&quot;, &quot;HauteurEnPx&quot;, &quot;version&quot;, &quot;CouleurDeFond&quot;);&lt;br /&gt;
 &amp;nbsp; so.addParam(&quot;quality&quot;, &quot;low&quot;);&lt;br /&gt;
 &amp;nbsp; so.addParam(&quot;wmode&quot;, &quot;transparent&quot;);&lt;br /&gt;
 &amp;nbsp; so.write(&quot;contenuflash&quot;);&lt;br /&gt;&lt;/span&gt;
&amp;lt;/&lt;span class=&quot;balise&quot;&gt;script&lt;/span&gt;&amp;gt;
&lt;/code&gt;&lt;/blockquote&gt;
&lt;p&gt;
Attendez... il faut une balise &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;noscript&lt;/span&gt;&amp;gt;&lt;/code&gt;. Parce que ok, &lt;i&gt;SWFobject&lt;/i&gt; gère l'absence du plugin Flash (et théoriquement des versions obsolètes), mais il faut aussi gérer l'absence de Javascript... On doit définir 2 fois (DEUX FOIS) la taille et l'aspect du document Flash. En plus, l'objet Flash devient invisible pour les moteurs de recherche comme Exalead. Et pour parfaire le massacre, on se retrouver à pénaliser ceux qui consultent les billets par un lecteur RSS. Ce dernier peut tout à fait être capable de gérer le Flash, mais à condition d'avoir la même référence que votre site, c'est à dire la bibliothèque JS et son insertion ésotérique. Car la méthode préconisée par l'auteur de &lt;i&gt;SWFobject&lt;/i&gt; est standard, soit, mais &lt;a href=&quot;http://dascritch.net/blog.php/post/2007/08/22/Pour-quelques-Javascripts-de-plus&quot;&gt;vraiment pas la bonne&lt;/a&gt; si jamais on a plus de deux bibliothèques à charger. Quant à son insertion de code Javascript au sein d'un document HTML, il relève vraiment de la préhistoire...
&lt;/p&gt;&lt;p&gt;
En fait, on est à la fois dans un souci concernant la gestion du plugin Flash, mais aussi du fonctionnement correct de Javascript&amp;nbsp;: Pour peu qu'un incident à l'interprétation d'un Javascript (notamment dans une exécution synchrone comme &lt;i&gt;SWFobject&lt;/i&gt; l'impose à ses utilisateurs), qu'une sécurité quelconque dans les paramètres du navigateur (ou de l'antivirus ou du proxy de votre entreprise, voire carrément de votre FAI paranoïaque), ou que vous ayez &lt;a href=&quot;http://dascritch.net/blog.php/post/2007/08/06/Javascript-laccent-d-la-regex#nb7&quot; title=&quot;« Javascript, l'accent d'la regex », § NB 7&quot;&gt;fâché votre marabout &lt;i&gt;regex&lt;/i&gt;&lt;/a&gt;, l'édifice s'effondre, et votre Flash n'est définitivement pas lancé&amp;nbsp;&lt;a class=&quot;up&quot; href=&quot;https://dascritch.net/post/2007/10/19/Pardonnons-a-ce-Flash-qui-nous-agacent#nb9&quot; name=&quot;in9&quot;&gt;&lt;b&gt;[NB9]&lt;/b&gt;&lt;/a&gt;. Car &lt;i&gt;SWFobject&lt;/i&gt; n'offre que le service minimum en terme de dégradation élégante, plombe de redondance le &lt;i&gt;fallback&lt;/i&gt;, et doit alourdir sauvagemment son code pour résoudre les problèmes de fuites &lt;strike&gt;urina&lt;/strike&gt; de mémoire de &lt;i&gt;MSIE&lt;/i&gt;. &lt;i&gt;SWFobject&lt;/i&gt;.js n'est qu'un bricolage de fortune, pas trop mal codé, certes, mais structurellement incomplet voire boiteux.
&lt;/p&gt;&lt;p&gt;
Tout ça pour éviter un clic (voir plusieurs, re-regardez la page de garde de &lt;a href=&quot;http://nrj.fr&quot; rel=&quot;nofollow&quot;&gt;nrj.fr&lt;/a&gt;) chez les gens utilisant &lt;i&gt;MSIE&lt;/i&gt;. S'il plante, pas de Flash, même sur les navigateurs qui ne sont pas concernés par le procès Eolas. Soit une très grande partie des navigateurs... Au lieu d'avoir le comportement considéré comme “normal” depuis deux ans avec &lt;I&gt;MSIE&lt;/i&gt;, on prend le risque de faire planter son site dans 100% des navigateurs modernes. Quel progrès&amp;nbsp;!&lt;br /&gt;
Le problème a l'air d'empoisonner beaucoup de monde,  puisque moi qui ne suis théoriquement même pas professionnel, j'ai déjà été sollicité six fois sur le sujet depuis début Août par des “amis” infographistes jouant aux &lt;i&gt;script-kiddies&lt;/i&gt;. J'aurais dû leur facturer mes services.
&lt;/p&gt;
&lt;h3 id=&quot;elegance&quot;&gt;Être propre dans le HTML, élégant dans sa structure&lt;/h3&gt;
&lt;p&gt;
 &lt;a href=&quot;http://validator.w3.org/check?uri=referer&quot; title=&quot;Cette page est strictement valide XHTML 1.0&quot;&gt;&lt;img src=&quot;https://dascritch.net/vrac/.blog2/webdev/710-flash/710-Valid-xhtml10.png&quot; alt=&quot;Valid xhtml 1.0&quot; class=&quot;l&quot; /&gt;&lt;/a&gt;
Alors, comment insérer proprement des éléments en Flash dans un site web, avec une dégradation élégante pour les moteurs de recherche et les personnes handicapés, dans un minimum de code, mais parfaitement valide W3C et susceptible d'être fonctionnel pour plusieurs années&amp;nbsp;?
&lt;/p&gt;
&lt;p&gt;
La solution est idiote. Puisqu'à relire attentivement la spécification de la balise &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;object&lt;/span&gt;&amp;gt;&lt;/code&gt;, on s'aperçoit qu'on avait la solution depuis le début. Si, si&amp;nbsp;! relisez le chapitre plus haut. Eeeeeeh oui...
&lt;/p&gt;&lt;p&gt;
Donc nous devrions plutôt écrire :
&lt;blockquote&gt;&lt;code&gt;
&amp;lt;&lt;span class=&quot;balise&quot;&gt;object&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;data&lt;/span&gt;=&quot;&lt;span class=&quot;param&quot;&gt;src.swf&lt;/span&gt;&quot; &lt;/code&gt;avec en paramètres la taille prévue de l'animation, son typemime...&lt;code&gt;&amp;gt;&lt;br /&gt;
 &amp;nbsp;  &amp;lt;&lt;span class=&quot;balise&quot;&gt;param&lt;/span&gt; &lt;/code&gt;les paramètres propre à l'animation&lt;code&gt;/&amp;gt;&lt;br /&gt;
 &amp;nbsp;  &lt;/code&gt;Texte de remplacement, description, éventuels liens internes qui doivent être suivis par les moteurs de recherche... voire une capture graphique pour respecter l'aspect du site&lt;code&gt;&lt;br /&gt;
&amp;lt;/&lt;span class=&quot;balise&quot;&gt;object&lt;/span&gt;&amp;gt;&lt;br /&gt;
&lt;/code&gt;&lt;/blockquote&gt;
&lt;p&gt;
MSIE vous cause réellement un souci&amp;nbsp;? Vous voulez vraiment faire l'économie d'un clic&amp;nbsp;? Il suffit de ne parler qu'à lui pour lui donner vos “solutions” sans polluer les autres. Les recettes existent sur le net (commentaires conditionnels, manip dom, le tout tient en une ligne), pas besoin que j'en usurpe la paternité.
&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;
Parce qu'il y a plein de [NB] dans mon billet qu'il faut bien les caser quelque part&amp;nbsp;:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://dascritch.net/post/2007/10/19/Pardonnons-a-ce-Flash-qui-nous-agacent#in1&quot; name=&quot;nb1&quot;&gt;&lt;b&gt;↑ entrer [dans le Flash]&lt;/b&gt; : &lt;/a&gt;
Dans le cas d'Exalead, vu que ce site repose sur &lt;a href=&quot;http://www.konqueror.org/&quot; hreflang=&quot;en&quot; title=&quot;Konqueror - Web Browser, File Manager - and more!&quot;&gt;le navigateur Konqueror&lt;/a&gt; pour faire ses captures d'écrans (User-Agent : «&amp;nbsp;Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.5 (like Gecko) (Exabot-Thumbnails)&amp;nbsp;»), je parie qu'ils utilisent Gnash, mais qu'ils se limitent aux liens immédiatement accessibles pour des raisons évidentes de performance et de sécurité.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dascritch.net/post/2007/10/19/Pardonnons-a-ce-Flash-qui-nous-agacent#in1&quot; name=&quot;nb1&quot;&gt;&lt;b&gt;↑ &lt;strike&gt;&lt;abbr&gt;URL&lt;/abbr&gt;&lt;/strike&gt; &lt;abbr&gt;IRI&lt;/abbr&gt;&lt;/b&gt; : &lt;/a&gt;
&lt;a title=&quot;RIP URL URI, IRI INRI W3C&quot; href=&quot;http://dascritch.net/blog.php/post/2007/09/17/RIP-URL-URI-IRI-INRI-W3C&quot;&gt;Comme déjà expliqué ici-même&lt;/a&gt;, le terme &lt;abbr title=&quot;Internationalized Resource Identifier&quot;&gt;IRI&lt;/abbr&gt; est recommandé à la place d'&lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt; ou d'&lt;abbr  title=&quot;Uniform Resource Identifiers&quot;&gt;URI&lt;/abbr&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dascritch.net/post/2007/10/19/Pardonnons-a-ce-Flash-qui-nous-agacent#in3&quot; name=&quot;nb3&quot;&gt;&lt;b&gt;↑ on doit expliquer [la navigation dans un Flash]&lt;/b&gt; : &lt;/a&gt;
Je plaisante à peine : je me serais bien passé de devoir donner un &lt;i&gt;modus operandi&lt;/i&gt; aussi compliqué dans &lt;a href=&quot;http://dascritch.net/blog.php/post/2007/10/15/Ballet-perpetuel&quot;&gt;mon billet «&amp;nbsp;&lt;b&gt;Ballet perpétuel&lt;/b&gt;&amp;nbsp;»&lt;/a&gt; pour expliquer comment accéder à la section “&lt;i&gt;cashmere knit&lt;/i&gt;”. Si un lien était faisable pour aller directement dans cette partie de l'animation, je serais mille fois plus content.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dascritch.net/post/2007/10/19/Pardonnons-a-ce-Flash-qui-nous-agacent#in4&quot; name=&quot;nb4&quot;&gt;&lt;b&gt;↑ [site] trop lourd&lt;/b&gt; : &lt;/a&gt;
Et bien souvent, difficilement maintenable. Mon camarade Xylpho a fait le tour des sites de photographes avec des galeries en Flash. Ceux-ci sont très rarement mis à jour à cause de la lourdeur de maintenance uniquement pour ajouter quelques photos. Quant à laisser le programme Flash générer dynamiquement la liste des photos, on imagine d'ici la lourdeur côté client et les risques pour le serveur.&lt;br /&gt;
Le projet &lt;i&gt;Lightbox&lt;/i&gt;.js et ses compatibles sont d'immenses progrès.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dascritch.net/post/2007/10/19/Pardonnons-a-ce-Flash-qui-nous-agacent#in5&quot; name=&quot;nb5&quot;&gt;&lt;b&gt;↑ interdire l'accès&lt;/b&gt; : &lt;/a&gt;
Ça demandera du Javascript et de détecter qu'une image est bien présente à l'IRI &lt;a href=&quot;chrome://flashblock/content/flash.png&quot;&gt;&lt;code&gt;chrome://flashblock/content/flash.png&lt;/code&gt;&lt;/a&gt; et &lt;a href=&quot;chrome://flashblock/content/flashplay.png&quot;&gt;[...]&lt;code&gt;flashplay.png&lt;/code&gt;&lt;/a&gt; ... ou conforter des comportements comme &lt;a href=&quot;http://whyfirefoxisblocked.com/&quot;&gt;«&amp;nbsp;Why Firefox is blocked&amp;nbsp;»&lt;/a&gt;. Politiquement, c'est une énorme erreur de communication.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dascritch.net/post/2007/10/19/Pardonnons-a-ce-Flash-qui-nous-agacent#in6&quot; name=&quot;nb6&quot;&gt;&lt;b&gt;↑ &lt;i&gt;patent-troll&lt;/i&gt;&lt;/b&gt; : &lt;/a&gt;
Un &lt;i&gt;patent-troll&lt;/i&gt; est une entreprise de taille ridicule (souvent réduite à un homme de paille, voire une boîte postale dans les îles Caïman) qui gère un important portefeuille de brevets, ici de l'Université de Californie, dans l'unique but de “valoriser” ces brevets devant un tribunal. Ces derniers n'ont souvent même pas été proposés à des industriels. Il n'y a donc aucun intérêt industriel ou technique derrière, juste un cabinet d'avocat qui pose des collets et récolte d'indécents dommages et intérêts si jamais quelqu'un a eu le malheur de “reproduire” en toute innocence un brevet dont il ignorait tout.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dascritch.net/post/2007/10/19/Pardonnons-a-ce-Flash-qui-nous-agacent#in7&quot; name=&quot;nb7&quot;&gt;&lt;b&gt;↑ cliquer pour activer&lt;/b&gt; : &lt;/a&gt;
Eh mais, attendez, c'est pas le comportement de base de FlashBlock&amp;nbsp;? Procès pour plagiat&amp;nbsp;! &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dascritch.net/post/2007/10/19/Pardonnons-a-ce-Flash-qui-nous-agacent#in8&quot; name=&quot;nb8&quot;&gt;&lt;b&gt;↑ l'unique navigateur&lt;/b&gt; : &lt;/a&gt;
Si on compte les versions 6+ et 7 ainsi que tous les faux navigateurs qui recarrossent le moteur de &lt;i&gt;MSIE&lt;/i&gt; comme &lt;i&gt;AvantBrowser&lt;/i&gt;, &lt;i&gt;AOL&lt;/i&gt; ou &lt;i&gt;Maxthon&lt;/i&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dascritch.net/post/2007/10/19/Pardonnons-a-ce-Flash-qui-nous-agacent#in9&quot; name=&quot;nb9&quot;&gt;&lt;b&gt;↑ défintivement pas lancé&lt;/b&gt; : &lt;/a&gt;
Par définitivement, je veux dire que même une interaction du surfeur est inactive. Il n'y a qu'un espace vide, sans rien, là où il suffisait juste d'un clic pour ceux qui gardent un navigateur obsolète.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
L'icône IE4Linux a été &lt;a href=&quot;http://lists.freedesktop.org/archives/tango-artists/2007-January/000889.html&quot;&gt;proposée par JesusDA&lt;/a&gt; pour le &lt;a href=&quot;http://tango.freedesktop.org/Tango_Desktop_Project&quot; hreflang=&quot;en&quot; title=&quot;Tango Desktop Project&quot;&gt;set d'icônes Tango&lt;/a&gt; à la demande de &lt;a href=&quot;http://freedesktop.org&quot; hreflang=&quot;en&quot; title=&quot;FreeDesktop.org&quot;&gt;FreeDesktop&lt;/a&gt;.
&lt;/p&gt;
&lt;!--
&amp;nbsp;&lt;a class=&quot;up&quot; href=&quot;https://dascritch.net/post/2007/10/19/Pardonnons-a-ce-Flash-qui-nous-agacent#nb1&quot; name=&quot;in1&quot;&gt;&lt;b&gt;[NB1]&lt;/b&gt;&lt;/a&gt;
&lt;li&gt;&lt;a href=&quot;https://dascritch.net/post/2007/10/19/Pardonnons-a-ce-Flash-qui-nous-agacent#in1&quot; name=&quot;nb1&quot;&gt;&lt;b&gt;↑ (reprise)&lt;/b&gt; : &lt;/a&gt;
--&gt;
&lt;style&gt;&lt;!--
code .balise {color:black;font-weight:bold}
code .attr { color : green }
code .param {color:red}
code .js {color:purple}
--&gt;&lt;/style&gt;</content:encoded>
    
    
    
      </item>
  
	<item>
		<title>Les coulisses du site en Septembre</title>
		<link>https://dascritch.net/post/2007/10/05/Les-coulisses-du-site-en-Septembre</link>
		<guid isPermaLink="false">urn:md5:6f41cfc9a5b150341d38e9bdf1f94b94</guid>
		<dc:date>2007-10-05T23:33:00+02:00</dc:date>

    <dc:creator>Da Scritch</dc:creator>
        <dc:subject>Webdev</dc:subject>
        
    <description>Making of, réjouissance, collection de spammeurs Français et objectif débile du mois.		&lt;span class="tags"&gt;&lt;br /&gt;&lt;a href="https://dascritch.net/category/Webdev"&gt;Webdev&lt;/a&gt; &lt;/span&gt;
	</description>
    <content:encoded>
		&lt;p&gt;Making of, réjouissance, collection de spammeurs Français et objectif débile du mois.&lt;span class="tags"&gt;&lt;br /&gt;
		&lt;a href="https://dascritch.net/category/Webdev"&gt;
			Webdev&lt;/a&gt;
				&lt;/span&gt;
		&lt;/p&gt;
		&lt;h3&gt;Objectif débile du mois&lt;/h3&gt;
&lt;p&gt;
Le site d'info satirique &lt;i&gt;The Register&lt;/i&gt; avait posé la question &lt;a href=&quot;http://www.theregister.co.uk/2007/09/28/reg_club/&quot; hreflang=&quot;en&quot;&gt;«&amp;nbsp;&lt;cite&gt;So, what's the first rule of Reg Club&amp;nbsp;?&lt;/cite&gt;&amp;nbsp;»&lt;/a&gt;. Et un lecteur a proposé&amp;nbsp;:
&lt;/p&gt;
&lt;blockquote&gt;
Thou shalt not quote Wikipedia and expect to be taken seriously.
&lt;/blockquote&gt;
&lt;p&gt;
Putain, les mecs de El Reg placent vraiment la barre très haut... OK, même pour moi qui adore mettre des liens absolument partout, pari relevé&amp;nbsp;: &lt;b&gt;Je ne citerai pas la Wikipédia en ce mois d'Octobre&lt;/b&gt;.&lt;br /&gt;
Hard core. Gasp.
&lt;/p&gt;
&lt;h3&gt;Making of de Septembre&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Allongement de la une du site, On cite les titres de7 billets (au lieu de 5). Bizarrement, la longueur varie presque pas.&lt;/li&gt;
&lt;li&gt;Ajout d'icône de catégorie, et explicitement &lt;a href=&quot;http://dascritch.net/blog.php/tags&quot;&gt;des tags&lt;/a&gt; dans le &lt;a href=&quot;http://dascritch.net/statique.php/aide/rss&quot;&gt;flux RSS&lt;/a&gt;. répétition de la description dans le contenu. Indirectement, ça permet de voir dans les logs d'&lt;a href=&quot;http://dascritch.net/blog.php/tag/apache&quot;&gt;Apache&lt;/a&gt; qui lit les flux et d'où...&lt;/li&gt;
&lt;li&gt;Différentiation de mes commentaires par dc2. M'en a fallu du temps.&lt;/li&gt;
&lt;li&gt;Un seul flux RSS était censé être indexé, le but étant d'éviter que les RSS de commentaires apparaissent dans les résultats de requêtes. Mais &lt;a hreflang=&quot;en&quot; title=&quot;Debunking the FUD around rel=nofollow (IncrediBILL's Random Rants)&quot; href=&quot;http://incredibill.blogspot.com/2007/10/debunking-fud-around-relnofollow.html&quot;&gt;&lt;code&gt;rel=&quot;nofollow&quot;&lt;/code&gt; ne suffit pas&lt;/a&gt; (alors est-ce utile&amp;nbsp;?), il a fallu filtrer aussi dans &lt;code&gt;robots.txt&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Modification de la structure du champ commentaire, hélas &lt;a href=&quot;http://dascritch.net/blog.php/post/2006/04/27/393-question-de-commentaire&quot;&gt;en cassant la construction proposée par Vric&lt;/a&gt;. Extention automatique de la zone texte en fonction de l'écriture. Toujours pas de capcha (ouf&amp;nbsp;!).&lt;/li&gt;
&lt;li&gt;Modifications dans le balisage des Flash, suite à la rédaction d'un billet à ce sujet&lt;/li&gt;
&lt;li&gt;Modifications des liens relatifs documentaires&lt;/li&gt;
&lt;li&gt;Modifications des bulles d'infos concernant les contextes de page (plier/déplier, lightbox,...)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Les soupirs de soulagement&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://ejohn.org/blog/future-of-firefox-and-javascript/&quot; hreflang=&quot;en&quot; title=&quot;The Future of Firefox and JavaScript (John Resig)&quot;&gt;Le futur de Firefox 3 et de Javascript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://go.theregister.com/feed/www.theregister.co.uk/2007/10/05/ms_ie7_sans_wga/&quot; hreflang=&quot;en&quot; title=&quot;MS drops nagware validation for IE7 installs&quot;&gt;Microsoft consent à installer MSIE7, même sur des Windows piratés&lt;/a&gt;. On peut considérer que MSIE6 a moins besoin de pourrir le code d'un site perso.&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Microsoft shouts 'Long Live XP'&quot; hreflang=&quot;en&quot; href=&quot;http://go.theregister.com/feed/www.theregister.co.uk/2007/09/28/microsoft_xp_deadline/&quot;&gt;Microsoft prolonge la vie de XP&lt;/a&gt;. Vista a trop refroidi les pros. Hélas, mes amis qui ne jurent que par la Fenêtre (et Clippy) devront y passer un jour.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Spammeurs Français du mois&lt;/h3&gt;
&lt;p&gt;
Ils m'ont écrit à une adresse qui n'était accessible que par une collecte strictement illégale, ce qui est techniquement un &lt;a href=&quot;http://dascritch.net/blog.php/tag/spam&quot;&gt;spam&lt;/a&gt; caractérisé. La désinscription semble aussi douteuse que l'inscription forcée. Les entreprises suivantes sont donc totalement hors-la-loi en France, et ne sont sûrement pas dignes de bonne foi&amp;nbsp;:
&lt;/p&gt;
&lt;table class=&quot;datas&quot;&gt;
&lt;thead&gt;&lt;td&gt;Entreprise/Site&lt;/td&gt;&lt;td&gt;Origine du spam&lt;/td&gt;&lt;td&gt;Technique&lt;/td&gt;&lt;td&gt;Sites publiés, complices&lt;/td&gt;&lt;td&gt;Activité supposée&lt;/td&gt;&lt;/thead&gt;
&lt;tr&gt;&lt;td&gt;Skibed.com&lt;/td&gt;&lt;td&gt;mailflip7.edt02.net (82.138.77.199)&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://spamnation.info/go/domain/edt02.net&quot;&gt;Edatis (spammeur avéré)&lt;/a&gt;&lt;/td&gt;&lt;td&gt;leadmailing3.com , 80.245.41.17&lt;/td&gt;&lt;td&gt;Location&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&quot;Karine SEBAG&quot; (rout.lcp-prod@laposte.net)&lt;/td&gt;&lt;td&gt;9 telecom (86.71.129.183)&lt;/td&gt;&lt;td&gt;Mail édité dans Word (Office 2003 non enregistré), logiciel de spam maison, obfuscation de l'adresse d'origine&lt;/td&gt;&lt;td&gt;vualatele.biz , lcproduction.eu&lt;/td&gt;&lt;td&gt;Vidéos amateurs&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Sexy-rencontres (champ-reduit.com)&lt;/td&gt;&lt;td&gt;smtp.cachet.fr (90.40.199.233)&lt;/td&gt;&lt;td&gt;Site suspect (c'est quoi ce formulaire ?) Obfuscation de l'adresse retour (@yahoo.com)&lt;/td&gt;&lt;td&gt;easyrencontre.com&lt;/td&gt;&lt;td&gt;Racolage&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;infos@cdmultimedia.fr&lt;/td&gt;&lt;td&gt;cdmultimedia.fr (62.161.36.106)&lt;/td&gt;&lt;td&gt;Eudora&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;Duplication (légale ?) de vidéo&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&quot;Adomos&quot; (edouard@marketmail.eu)&lt;/td&gt;&lt;td&gt;mailflip9.edt02.net (82.138.77.201)&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://spamnation.info/go/domain/edt02.net&quot;&gt;Edatis (spammeur avéré)&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;Manipulations financières douteuses&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&quot;Audrey PAGENEL&quot; (stim.ventes@laposte.net)&lt;/td&gt;&lt;td&gt;9 télécom (86.67.224.253)&lt;/td&gt;&lt;td&gt;Adobe GoLive 9, obfuscation de l'adresse d'origine&lt;/td&gt;&lt;td&gt;cine-cheque.fr (&lt;a href=&quot;http://dascritch.net/blog.php/post/2003/09/05/37-spam-enforcers&quot;&gt;récidiviste&lt;/a&gt;) , stop-mails.info , vualatele.biz&lt;/td&gt;&lt;td&gt;Achat de coupons&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;newsletter@lereso.fr&lt;/td&gt;&lt;td&gt;mail.ecipfinance.fr (62.193.248.100)&lt;/td&gt;&lt;td&gt;PHPMailer, phplist&lt;/td&gt;&lt;td&gt;lereso.fr , JC Berbach , ecipfinance.fr&lt;/td&gt;&lt;td&gt;Cosmétiques&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Sexy-boutique (champ-reduit.com)&lt;/td&gt;&lt;td&gt;smtp.cachet.fr (90.40.6.54)&lt;/td&gt;&lt;td&gt;Site suspect, obfuscation de l'adresse retour (@yahoo.com)&lt;/td&gt;&lt;td&gt;sexy-megastore.com&lt;/td&gt;&lt;td&gt;Racolage&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Unibet (champ-reduit.com)&lt;/td&gt;&lt;td&gt;smtp.cachet.fr (90.33.159.141)&lt;/td&gt;&lt;td&gt;Site suspect, obfuscation de l'adresse retour (@yahoo.com)&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;andrea-95@cegetel.net&lt;/td&gt;&lt;td&gt;Cegetel (86.75.23.183)&lt;/td&gt;&lt;td&gt;GOTO Software Sarbacane, obfuscation de l'adresse retour (@yahoo.fr)&lt;/td&gt;&lt;td&gt;les-plaisirs.com&lt;/td&gt;&lt;td&gt;Racolage&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&quot;FMC via Travelbed&quot; (emilie@travelbed.fr)&lt;/td&gt;&lt;td&gt;mailflip25.edt02.net (82.138.77.217)&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://spamnation.info/go/domain/edt02.net&quot;&gt;Edatis (spammeur avéré)&lt;/a&gt;&lt;/td&gt;&lt;td&gt;edt02.net&lt;/td&gt;&lt;td&gt;Prêts usuriers&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&quot;BOLLINI PARTNERS&quot; (maila.bus@laposte.net)&lt;/td&gt;&lt;td&gt;9 telecom (86.67.224.106)&lt;/td&gt;&lt;td&gt;Obfuscation de l'adresse d'origine&lt;/td&gt;&lt;td&gt;exploragent.fr&lt;/td&gt;&lt;td&gt;Revente d'un fichier de mail probablement illégal&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;
Honnêtement, je doute de l'efficacité de Signal Spam. Certains ont déjà été plusieurs fois signalé depuis l'ouverture de ce service, il n'y a eu aucun effet.
&lt;/p&gt;</content:encoded>
    
    
    
      </item>
  
	<item>
		<title>Javascript, l'accent d'la regex</title>
		<link>https://dascritch.net/post/2007/08/06/Javascript-laccent-d-la-regex</link>
		<guid isPermaLink="false">urn:md5:8699857d20052c29c35e2a4511204cc3</guid>
		<dc:date>2007-09-06T11:28:00+02:00</dc:date>

    <dc:creator>Da Scritch</dc:creator>
        <dc:subject>Webdev</dc:subject>
        
    <description>“Javascript comme un dialecte”, acte II. Entre le professeur Louis De Funès : « mmmmh les expressions régulières, mmmmmhhh... vous allez en bouffer... mmmmmhhhh »		&lt;span class="tags"&gt;&lt;br /&gt;&lt;a href="https://dascritch.net/category/Webdev"&gt;Webdev&lt;/a&gt; &lt;/span&gt;
	</description>
    <content:encoded>
		&lt;p&gt;“Javascript comme un dialecte”, acte II. Entre le professeur Louis De Funès : « mmmmh les expressions régulières, mmmmmhhh... vous allez en bouffer... mmmmmhhhh »&lt;span class="tags"&gt;&lt;br /&gt;
		&lt;a href="https://dascritch.net/category/Webdev"&gt;
			Webdev&lt;/a&gt;
				&lt;/span&gt;
		&lt;/p&gt;
		&lt;style&gt;&lt;!--
code .balise {color:black;font-weight:bold}
code .attr { color : green }
code .param {color:#2F4F4F}
code .js {color:red}
--&gt;&lt;/style&gt;
&lt;p&gt;&lt;a href=&quot;http://dascritch.net/blog.php/post/2007/07/05/818-javascript-comme-un-dialecte&quot;&gt;Dans un précédent article, j'avais glosé des difficultés à écrire des javascripts au comportement cohérent&lt;/a&gt; sur l'ensemble des “principaux” navigateurs web dans la gestion des &lt;a href=&quot;https://dascritch.net/blog.php/tag/dom&quot;&gt;arbres DOM&lt;/a&gt;. Cette fois-ci, c'est un autre souci qui a été pointé cet été par Bojan Zdrnja, information qui aura sûrement échappé à la plupart des webdev... à leurs tords.&lt;br /&gt;
Relevant de nouvelles méthodes d'infecter d'innocentes machines par des virus, ce chercheur en sécurité du &lt;a href=&quot;https://www.sans.org/&quot;&gt;SANS&lt;/a&gt; a isolé un specimen de Javascript infectieux découvert par Daniel Kluge et mis sous son microscope afin de comprendre pourquoi il est si méchant. Malgré qu'il soit écrit dans un langage théoriquement “ouvert” (car interprété) et même en ayant son code source sous les yeux, il est difficile à disséquer, obfusquant son ADN source afin de protéger ses patrons maffieux. Rapidement, notre expert remarque que ce malicieux code Javascript ne peut s'exécuter que dans Internet Explorer. Pourquoi&amp;nbsp;? Ce n'est pas la grammaire, ni l'arbre DOM, ni une extension propriétaire de Microsoft qui est en cause, mais... les expressions régulières.&lt;/p&gt;
&lt;p&gt;
Pour  “simplifier”, ces expressions rationnelles correspondent aux théories de Kurt Gödel &lt;a class=&quot;up&quot; href=&quot;https://dascritch.net/post/2007/08/06/Javascript-laccent-d-la-regex#nb1&quot; name=&quot;in1&quot;&gt;&lt;b&gt;[NB1]&lt;/b&gt;&lt;/a&gt;, mais &lt;a href=&quot;http://fr.wikipedia.org/wiki/Th%C3%A9orie_des_expressions_rationnelles&quot;&gt;appliqués à un alphabet&lt;/a&gt;. C'est &lt;abbr title=&quot;À mon humble avis&quot;&gt;ÀMHA&lt;/abbr&gt; la meilleure explication jamais trouvée pour pondre le code le plus imbitable pondu histoire de faire criser les collègues de l'&lt;i&gt;openspace&lt;/i&gt; &lt;a class=&quot;up&quot; href=&quot;https://dascritch.net/post/2007/08/06/Javascript-laccent-d-la-regex#nb2&quot; name=&quot;in2&quot;&gt;&lt;b&gt;[NB2]&lt;/b&gt;&lt;/a&gt;. Pourtant, je m'en sers pas mal, comme on peut le voir dans &lt;a href=&quot;https://dascritch.net/lien.php/Webediting/PHP&quot;&gt;mes marques-pages, section PHP&lt;/a&gt;. La lecture d'un regex tient à la fois du bénédictin décryptage de langue morte digne de Champollion mais aussi d'une pointe de mystère religieux dans la contemplation de l'arc-en-ciel de votre éditeur à coloration syntaxique, aux motifs ressemblants à une rosace romane &lt;a class=&quot;up&quot; href=&quot;https://dascritch.net/post/2007/08/06/Javascript-laccent-d-la-regex#nb3&quot; name=&quot;in3&quot;&gt;&lt;b&gt;[NB3]&lt;/b&gt;&lt;/a&gt;.&lt;br /&gt;
Objectivement, le regex est l'ultime solution thermonucléaire pour un question que vous ne vous êtes jamais posée.&lt;/p&gt;
&lt;p&gt;Pouf&amp;nbsp;! Pouf&amp;nbsp;! Je reprends...&lt;/p&gt;
&lt;h3&gt;Où le Javascript, c'est comme une Tour de Babel...&lt;/h3&gt;
&lt;p&gt;Donc, dans cette publication «&amp;nbsp;&lt;b&gt;&lt;a href=&quot;http://isc.sans.org/diary.html?storyid=3219&quot; title=&quot;Raising the bar: dynamic JavaScript obfuscation&quot;&gt;Raising the bar: dynamic JavaScript obfuscation&lt;/a&gt;&lt;/b&gt;&amp;nbsp;», Daniel Kluge et Bojan Zdrnja mettent en évidence plusieurs bugs, ou plutôt des différences comportementales dans les regex selon les navigateurs&amp;nbsp;! Le comportement peut se &lt;a href=&quot;http://handlers.sans.org/bzdrnja/test.html&quot;&gt;tester sur cette page&lt;/a&gt;. Le premier nombre de la popup d'alerte est à surveiller&amp;nbsp;: S'il indique une valeur de “&lt;code&gt;94&lt;/code&gt;”, c'est que l'interprétation de regex est correcte dans votre navigateur.
&lt;/p&gt;
&lt;p&gt;
Ainsi, &lt;b&gt;le moteur JScript de MSIE&lt;/b&gt; retourne “&lt;code&gt;98&lt;/code&gt;”, indépendamment de MSIE6 et MSIE7. Il considère qu'il peut faire précéder un nombre de plusieurs 0 sans que cela prête à conséquences...  ou presque puisque JScript peut considérer qu'un nombre précédé de zéro non significatifs est en fait une chaîne de caractères. C'est le cas dans certaines versions du langage de macro d'Excel.&lt;br /&gt;
&lt;b&gt;Safari (versions 2 et antérieures)&lt;/b&gt; retourne “&lt;code&gt;93&lt;/code&gt;”. En fait, il voit mal le commutateur «&amp;nbsp;&lt;code&gt;/g&lt;/code&gt;&amp;nbsp;», signifiant de répéter plusieurs fois l'opération. Ce qui est un bug (corrigé dans Safari 3) et qui fout potentiellement en l'air &lt;a href=&quot;http://dascritch.net/blog.php/post/2007/07/05/818-javascript-comme-un-dialecte&quot;&gt;mon soit-disant script universel déblatéré ici&lt;/a&gt;. Ce bug est propre au moteur d'Apple puisqu'aucune des versions de Konqueror que j'ai sous la main (KHTML est la base utilisée par Apple pour son WebKit) ne retourne cette valeur erronée.
&lt;/p&gt;&lt;p&gt;
Mais c'est surtout un élément très important&amp;nbsp;: Qu'un code supposé être universel peut subir des différences d'interprétation. Quelque chose à ne pas négliger quand il s'agit de “compresser/obfusquer” sa bibliothèque JS. Et une des raisons pour laquelle &lt;a href=&quot;http://dascritch.net/blog.php/post/2007/08/22/Tassons-les-Javascripts#chap-3&quot;&gt;je déconseille cette pratique&lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;
Contrairement à ce que l'on pourrait croire, les auteurs de ce virus jouent &lt;i&gt;intentionnellement&lt;/i&gt; sur ce bug&amp;nbsp;: La suite de leur infection ne fonctionne que sur MSIE, et les débuggueurs Javascripts travaillant plutôt avec un moteur Gecko (donc Firefox), toute personne qui tentera de comprendre leur code (pour justement le bloquer), aura encore plus de mal à le comprendre.
&lt;/p&gt;
&lt;p&gt;
Là où on ne s'en sort plus, c'est quand on se souvient que les regex furent créés à une époque où les ordinateurs avaient rarement des caractères accentués. De cette vénérable histoire, ils ont gardé l'héritage curieux de travailler parfaitement avec les 128 premières caractères de l'alphabet informatique. Et après&amp;nbsp;? Point de salut&amp;nbsp;: ISO-Latin (16 versions), MS-Dos page, Mac, et pire... Unicode (en UCS-2, UCS-4, UTF-7, UTF-8,...). Vous avez bien peu de chances d'être sûr de votre résultat... L'article Wikipédia a une &lt;a href=&quot;http://fr.wikipedia.org/wiki/Expression_rationnelle#Expressions_rationnelles_et_Unicode&quot;&gt;section qui résume bien le problème&lt;/a&gt; &lt;a class=&quot;up&quot; href=&quot;https://dascritch.net/post/2007/08/06/Javascript-laccent-d-la-regex#nb4&quot; name=&quot;in4&quot;&gt;&lt;b&gt;[NB4]&lt;/b&gt;&lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;
L'autre souci, et non le moindre, c'est que les regex sont extrêmement pratiques, souvent utilisés dans le cas de projets compliqués (import/export de &lt;a href=&quot;https://dascritch.net/blog.php/tag/xml&quot;&gt;xml&lt;/a&gt;, analyse de texte,...) et avec une syntaxe... vague. Car de leur très longue histoire, ils ont hérités d'une généalogie très compliquée. Personne n'a jamais normalisé le langage regex, mais chacun y est allé de sa petite touche. Donc un programme, une fonction, voire une formule en regex est susceptibles de différences subtiles suivant où il tourne.&lt;br /&gt;
Tout dépend qui a fourni la bibliothèque et qui s'en sert&amp;nbsp;: TCL, Python, Perl, Grep,... Ainsi  Microsoft utilise des dialectes très différents&amp;nbsp;; sa notation dans JScript du navigateur MSIE diffère sensiblement de celle de ses serveurs ASP.NET ou de C#. Certains sites (&lt;a href=&quot;http://www.regular-expressions.info/&quot; hreflang=&quot;en&quot;&gt;comme celui-ci&lt;/a&gt;) s'emploient à proposer des codes universels. Personnellement, la plupart du temps, j'utilise l'éditeur de remplacement de &lt;a href=&quot;http://www.kde-apps.org/content/show.php?content=9901&quot;&gt;&lt;i&gt;kwrite&lt;/i&gt;&lt;/a&gt; pour écrire et tester mes regex, mais ça ne fonctionne pas toujours. Arg.
&lt;/p&gt;

&lt;h3&gt;Transition PHP ? Prépare-toi à des nervousses breakdownes&lt;/h3&gt;
&lt;p&gt;
Quand j'ai refait le design de mon site dascritch.net, comme vous le savez, j'en ai profité pour changer complètement le code (moteur blog, mais aussi &lt;a href=&quot;https://dascritch.net/vrac.php&quot;&gt;présentation de fichiers&lt;/a&gt;, &lt;a href=&quot;https://dascritch.net/lien.php&quot;&gt;de liens&lt;/a&gt;, &lt;a href=&quot;https://dascritch.net/planet.php&quot;&gt;planet&lt;/a&gt;, et le reste...) mais aussi de serveur. Et c'est ainsi que je suis passé de PHP4.3 à PHP5. Mais là... surprise&amp;nbsp;! Entre les deux versions majeures de PHP, le moteur regex a changé... subtilement.
&lt;/p&gt;
&lt;p&gt;
Ainsi, dans ma &lt;a href=&quot;https://dascritch.net/planet.php&quot;&gt;planet&lt;/a&gt;, pour classer les flux &lt;a href=&quot;https://dascritch.net/blog.php/tag/rss&quot;&gt;rss&lt;/a&gt; en fonction de la date de chaque billet, je décodais la balise date, &lt;a hreflang=&quot;en|xx-g33k&quot; title=&quot;Date and Time Formats, propositions pour le W3C sur la norme ISO 8601&quot; href=&quot;http://www.w3.org/TR/NOTE-datetime&quot;&gt;écrite dans un format très spécifique&lt;/a&gt; (l'écriture d'une date dans un document &lt;a href=&quot;https://dascritch.net/blog.php/tag/rss&quot;&gt;RSS&lt;/a&gt; mérite un billet tellement que c'est le bazar).&lt;br /&gt;
Le code (basé sur magpieRSS) se présentait ainsi :
&lt;/p&gt;
&lt;blockquote&gt;&lt;code&gt;
&lt;span class=&quot;attr&quot;&gt;$regex_de_date&lt;/span&gt; = &quot;&lt;span class=&quot;param&quot;&gt;/(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(:(\d{2}))?(?:([-+])(\d{2}):?(\d{2})|(Z))?/&lt;/span&gt;&quot;;&lt;br /&gt;
if ( &lt;span class=&quot;js&quot;&gt;preg_match&lt;/span&gt;( $regex_de_date, $date_str, $blocules ) ) {&lt;br /&gt;
&lt;span class=&quot;js&quot;&gt;list&lt;/span&gt;( $annee, $mois, $jours, $heures, $minutes, $secondes) = 
			&lt;span class=&quot;js&quot;&gt;array&lt;/span&gt;( $blocules[1], $blocules[2], $blocules[3], $blocules[4], $blocules[5], $blocules[6]);&lt;br /&gt;
&lt;/code&gt;[...]&lt;code&gt;&lt;br /&gt;
}
&lt;/code&gt;&lt;/blockquote&gt;
&lt;p&gt;
Et ben, vous allez rire &lt;a class=&quot;up&quot; href=&quot;https://dascritch.net/post/2007/08/06/Javascript-laccent-d-la-regex#nb5&quot; name=&quot;in5&quot;&gt;&lt;b&gt;[NB5]&lt;/b&gt;&lt;/a&gt;, mais entre PHP4 et PHP5, le singleton &lt;code&gt;([-+])&lt;/code&gt; &lt;a class=&quot;up&quot; href=&quot;https://dascritch.net/post/2007/08/06/Javascript-laccent-d-la-regex#nb6&quot; name=&quot;in6&quot;&gt;&lt;b&gt;[NB6]&lt;/b&gt;&lt;/a&gt; est devenu “significatif”. Ce qui veut dire que dans mon tableau renvoyé par mon regex, les secondes n'étaient plus en  &lt;code&gt;$blocules[6]&lt;/code&gt; mais en &lt;code&gt;$blocules[7]&lt;/code&gt; si mon code est interprété par PHP5.
&lt;/p&gt;&lt;p&gt;
Visiblement, cela me semble être un bug d'interprétation de la bibliothèque &lt;abbr title=&quot;Perl-compatible regular expressions&quot;&gt;PCRE&lt;/abbr&gt; qui a été corrigé, mais ceux qui avaient été confrontés à lui s'étaient plus ou moins arrangé avec ce comportement irrationnel &lt;a class=&quot;up&quot; href=&quot;https://dascritch.net/post/2007/08/06/Javascript-laccent-d-la-regex#nb7&quot; name=&quot;in7&quot;&gt;&lt;b&gt;[NB7]&lt;/b&gt;&lt;/a&gt;.  Et donc des milliers de scripts, de programmes, d'applicatifs, de sites métiers,... sont basés dessus et vont avoir un comportement “incohérent” lors de leur passage à une infrastructure PHP5. C'est justement pour éviter la fronde des développeurs que Microsoft a instauré la compatibilité des &lt;strike&gt;bugs&lt;/strike&gt; features comme une religion sacro-sainte. Avec fanatisme, donc avec absurdité.
&lt;/p&gt;

&lt;h3&gt;Pour en revenir avec la sale bête&lt;/h3&gt;

&lt;p&gt;Dernier élément intéressant de l'étude du SANS&amp;nbsp;: la faille exploitée par le virus réside dans la méthode d'appel d'un logiciel tiers. Un problème qui a valu à Firefox &lt;a title=&quot;Mozilla Firefox 2.0.0.6 Released&quot;  hreflang=&quot;en&quot; href=&quot;http://www.mozillazine.org/talkback.html?article=22256&quot;&gt;deux version successives (les 2.0.0.5 et 2.0.0.6)&lt;/a&gt;, en fait dû à une &lt;a hreflang=&quot;en&quot;  href=&quot;http://www.kb.cert.org/vuls/id/403150&quot; title=&quot;Vulnerability Note VU#403150 : Microsoft Windows URI protocol handling vulnerability&quot;&gt;très mauvaise habitude de Microsoft Windows dans la gestion des URI&lt;/a&gt;. Ce qui ouvre la voie à de nouvelles méthodes d'attaques par document audio ou vidéo malformé. Ce que l'on appelle du “&lt;i&gt;fuzzing&lt;/i&gt;”, c'est-à-dire qu'on fait ouvrir des documents mals foutus exprès à un logiciel pour voir s'il plante. Rien de neuf sous le soleil, Windows Media Player était déjà connu pour être sensible à ce genre d'attaques, alors que MS Word et MS Excel sont plutôt bien écrits et très très bien testés de ce côté-là. La nouveauté, c'est que la moindre de ces applications de “lecture” est potentiellement victime d'erreurs de programmations. Des petites failles où le script décrit plus haut pourrait se nicher. Ou tout simplement de très mauvaise méthodes de programmation &lt;a title=&quot;Flash Sucks&quot; hreflang=&quot;en&quot; href=&quot;http://immike.net/blog/2007/07/31/flash-sucks/&quot;&gt;comme dans le plugin Flash&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;À noter que l'équipe Firefox a justement développé &lt;a hreflang=&quot;en&quot; title=&quot;jsfunfuzz in news and blogs&quot; href=&quot;http://www.squarefree.com/2007/08/03/jsfunfuzz-in-news-and-blogs/&quot;&gt;un outil de &lt;i&gt;fuzzing&lt;/i&gt;&lt;/a&gt; pour tester la solidité de leur moteur javascript. Présenté publiquement lors du même évènement (la Black Hat Convention à Las Vegas cet été), l'outil conçu à ces fins a été mis à la libre disposition de tous... les navigateurs. Et comme bien souvent l'interprétation d'un code source en Javascript est écrit en regex...&lt;/p&gt;
&lt;h3&gt;Une horreur de slash&lt;/h3&gt;
&lt;p&gt;
Ce qui est grave, c'est que ce n'est plus une extension qui est attaquable, mais l'implémentation dans la syntaxe de base d'un autre langage supposé lui aussi être quasi-universel. Sauf que les deux erreurs pointées le sont sur des règles de base qui sont uniformes partout ailleurs, et dont l'interprétation fantaisiste étonne les rédacteurs de l'article du SANS.&lt;br /&gt;
Un tel oubli chez deux importants constructeurs de navigateur montre qu'il y a encore des choses très importantes à tester dans les moteurs Javascripts. Alors que, contrairement aux DOM, les regex sont décrits avec précision dans la norme &lt;a hreflang=&quot;en&quot; title=&quot;ECMAScript Language Specification (pdf)&quot; href=&quot;http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf&quot;&gt;ECMA 262&lt;/a&gt;. La norme dont tous les moteurs Javascripts se targuent d'être parfaitement compatibles.
&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;http://dascritch.net/blog.php/post/2007/07/05/818-javascript-comme-un-dialecte&quot; title=&quot;Javascript comme un dialecte&quot;&gt;Encore une pierre de plus&lt;/a&gt; dans &lt;a href=&quot;http://ejohn.org/blog/javascript-as-a-language/&quot; hreflang=&quot;en&quot; title=&quot;Javascript azs a language&quot;&gt;le jardin de John Resig&lt;/a&gt;. Pas de quoi le démonter dans son inoxydable enthousiasme sur le Javascript, puisqu'il annonce &lt;a href=&quot;http://ejohn.org/blog/the-browser-scripting-revolution/&quot;&gt;l'arrivée les nouveaux moteurs ECMAScript&lt;/a&gt;. Enfin conformes&amp;nbsp;?
&lt;/p&gt;

&lt;hr /&gt;
&lt;p&gt;&lt;b&gt;Notes de bas de pages.&lt;/b&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://dascritch.net/post/2007/08/06/Javascript-laccent-d-la-regex#in1&quot; name=&quot;nb1&quot;&gt;&lt;b&gt;↑Kurt Gödel&lt;/b&gt; : &lt;/a&gt;
Malgré son patronyme, et le fait qu'Hitler aie changé la nationalité de ses compatriotes, tu noteras, chère Katell, que son nom se prononce avec une pointe d'accent Tchèque plutôt que Germanique. &lt;a href=&quot;http://dascritch.net/blog.php/post/2007/07/09/821-l-age-du-capitaine&quot;&gt;Ce que tu n'avais pas compris la première fois&lt;/a&gt;.
 &lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;https://dascritch.net/post/2007/08/06/Javascript-laccent-d-la-regex#in2&quot; name=&quot;nb2&quot;&gt;&lt;b&gt;↑&lt;/b&gt; : &lt;/a&gt; D'ailleurs, ce langage est tellement l33t que &lt;a href=&quot;http://www.pcre.org/pcre.txt&quot;&gt;la doc web de la lib PCRE&lt;/a&gt; est sciemment présentée comme si elle sortait sur un vieux terminal texte avec la commande &lt;code&gt;man&lt;/code&gt;. C'est vraiment du terrorisme social pour empêcher les petits jeunôts de se croire plus compétents que vous parce qu'ils sortent d'une formation quelconque... Hinhinhin...&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;https://dascritch.net/post/2007/08/06/Javascript-laccent-d-la-regex#in3&quot; name=&quot;nb3&quot;&gt;&lt;b&gt;↑ coloration syntaxique d'un regex&lt;/b&gt; : &lt;/a&gt;
Très honnêtement, si &lt;a href=&quot;http://www.vim.org/&quot; hreflang=&quot;en|xx-g33k&quot;&gt;&lt;i&gt;vim&lt;/i&gt;&lt;/a&gt; ne me proposait pas la coloration syntaxique, jamais j'aurais compris que le code en perl proposé dans le roman &lt;a href=&quot;http://www.cryptonomicon.com/&quot;&gt;«&amp;nbsp;&lt;i&gt;Le Cryptonomicon&lt;/i&gt;&amp;nbsp;»&lt;/a&gt; pour décoder du cryptage Enigma était erroné suite à un oubli d'un “/” dans une règle de substitution. Pour les curieux, page 227 du tome &lt;span class=&quot;serif&quot;&gt;II&lt;/span&gt;, «&amp;nbsp;&lt;i&gt;Le réseau Kinakuta&lt;/i&gt;&amp;nbsp;» de la première édition Francophone chez Payot SF.
&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;https://dascritch.net/post/2007/08/06/Javascript-laccent-d-la-regex#in4&quot; name=&quot;nb4&quot;&gt;&lt;b&gt;↑ référence Wikipédia&lt;/b&gt; : &lt;/a&gt; Pour ceux qui me liront plus tard, la &lt;a href=&quot;http://fr.wikipedia.org/w/index.php?title=Expression_rationnelle&amp;amp;oldid=19684798&quot;&gt;version de l'article au moment de l'écriture de ce billet&lt;/a&gt;.&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;https://dascritch.net/post/2007/08/06/Javascript-laccent-d-la-regex#in5&quot; name=&quot;nb5&quot;&gt;&lt;b&gt;↑ « vous allez rire »&lt;/b&gt; : &lt;/a&gt;humour geek au 0xFE degré, forcément.&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;https://dascritch.net/post/2007/08/06/Javascript-laccent-d-la-regex#in6&quot; name=&quot;nb6&quot;&gt;&lt;b&gt;↑ &lt;code&gt;([-+])&lt;/code&gt;&lt;/b&gt; : &lt;/a&gt; Ce bout de regex signifie qu'à cette position, il y a un caractère unique pouvant avoir la valeur “&lt;code&gt;+&lt;/code&gt;” ou “&lt;code&gt;-&lt;/code&gt;”. Et uniquement celles-ci. Si ça marche pas, la fonction regex est fausse, &lt;code&gt;preg_match()&lt;/code&gt; retourne la valeur &lt;code&gt;false&lt;/code&gt; et donc la partie suivante du script est ignorée. Ce bug me semble être lié &lt;a href=&quot;http://bugs.php.net/bug.php?id=40195&quot;&gt;à celui-ci&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;https://dascritch.net/post/2007/08/06/Javascript-laccent-d-la-regex#in7&quot; name=&quot;nb7&quot;&gt;&lt;b&gt;↑ « ceux qui [...] »&lt;/b&gt; : &lt;/a&gt;
ou plus probablement, ces développeurs perçoivent les regex comme de la sorcellerie. Ils ont chacun dû bidouiller au pif un code pioché dans un “Grand Albert” quelconque, formule magique se trouvait être fonctionnelle, et faute d'expertise, n'ont même pas relevé un comportement incohérent. Après tout, les gens qui invoquent pour eux des regex en égorgeant un coq noir par une nuit de pleine lune autour de braises de VT100 n'ont pas d'explication à donner. D'ailleurs, la syntaxe des rituels sacrés regex n'accorde aucune facilité de commentaires, qui pourraient briser l'invocation. Généralement, on évite soigneusement de provoquer leur ire par une question qu'ils pourraient trouver offensante. D'abord ça brise la magie, et ensuite si le sorcier voudou vous jette un œil noir, ça pourrait vous faire partir en sucette votre config Apache... Ugh.&lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;</content:encoded>
    
    
    
      </item>
  
	<item>
		<title>Dans les tréfonds du classement</title>
		<link>https://dascritch.net/post/2007/08/31/Dans-les-trefonds-du-classement</link>
		<guid isPermaLink="false">urn:md5:7d02e7f9c495f8a53ea7378e3679aac1</guid>
		<dc:date>2007-08-31T21:41:00+02:00</dc:date>

    <dc:creator>Da Scritch</dc:creator>
        <dc:subject>Webdev</dc:subject>
        
    <description>Plus exactement très très bas dans le CSSR07, quelque part à la 62ème place sur 72...		&lt;span class="tags"&gt;&lt;br /&gt;&lt;a href="https://dascritch.net/category/Webdev"&gt;Webdev&lt;/a&gt; &lt;/span&gt;
	</description>
    <content:encoded>
		&lt;p&gt;Plus exactement très très bas dans le CSSR07, quelque part à la 62ème place sur 72...&lt;span class="tags"&gt;&lt;br /&gt;
		&lt;a href="https://dascritch.net/category/Webdev"&gt;
			Webdev&lt;/a&gt;
				&lt;/span&gt;
		&lt;/p&gt;
		&lt;p&gt;
Et pour cause&amp;nbsp;! Pour me motiver à mettre en ligne la nouvelle version de DaScritch.Net au plus vite après deux années de développement extensif et cahoteux, j'ai osé m'inscrire au redoutable &lt;a href=&quot;http://forum.alsacreations.com/concours/cssr2007/&quot;&gt;Cascading Style Summer Refresh version 2007&lt;/a&gt;. Et j'étais, à quelques erreurs près de syntaxe, totalement valide &lt;a href=&quot;http://dascritch.net/blog.php/tag/html&quot;&gt;HTML&lt;/a&gt; même pour les invalides, parfaitement &lt;a href=&quot;http://dascritch.net/blog.php/tag/css&quot;&gt;CSS&lt;/a&gt;-aware, avec du &lt;a href=&quot;http://dascritch.net/blog.php/tag/javascript&quot;&gt;JS&lt;/a&gt;:&lt;a href=&quot;http://dascritch.net/blog.php/tag/dom&quot;&gt;DOM&lt;/a&gt; à tous les étages qui font croire que mon site est en Flash et en AJAX (eh eh eh&amp;nbsp;!).
&lt;p&gt;&lt;/p&gt;
Or, pour une fois chez &lt;a href=&quot;http://alsacreations.com&quot;&gt;Alsacréations&lt;/a&gt;, il ne s'agissait pas d'avoir forcément le site le plus conforme, le plus techniquement parfait mais.... le plus joli. Je vous laisse deviner comment je me suis fait ramasser&amp;nbsp;?
&lt;/p&gt;&lt;p class=&quot;c&quot;&gt;
&lt;b&gt;Couvert de ridicule le Da Scritch&amp;nbsp;!&lt;/b&gt;&lt;br /&gt;
&lt;a rel=&quot;lightbox[cssr07]&quot; title=&quot;avant (design circa 2003)&quot; href=&quot;http://dascritch.net/vrac/.blog2/webdev/.707-csscolumns-1_m.jpg&quot;&gt;&lt;img src=&quot;http://dascritch.net/vrac/.blog2/webdev/.707-csscolumns-1_s.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;a rel=&quot;lightbox[cssr07]&quot; title=&quot;après CSS Refresh 2007&quot; href=&quot;http://dascritch.net/vrac/.blog2/webdev/.707-csscolumns-2_m.jpg&quot;&gt;&lt;img src=&quot;http://dascritch.net/vrac/.blog2/webdev/.707-csscolumns-2_s.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;
Mais bon, indépendamment de &lt;a href=&quot;http://forum.alsacreations.com/concours/cssr2007/result.php&quot;&gt;ma note calamiteuse&lt;/a&gt;, de la &lt;a href=&quot;http://forum.alsacreations.com/concours/cssr2007/fiche.php?id=23&quot;&gt;quasi absence de commentaires&lt;/a&gt; et de l'été pourri, j'ai eu du plaisir.
&lt;/p&gt;&lt;p&gt;
Celui &lt;a href=&quot;http://forum.alsacreations.com/concours/cssr2007/fiche.php&quot;&gt;en consultant les “concurrents”&lt;/a&gt; de retrouver quelques amis (dont &lt;a href=&quot;http://hadrien.eu&quot;&gt;Hadrien&lt;/a&gt;), de voir des sites absolument superbes (tels que &lt;a href=&quot;http://www.dazonet.fr/&quot;&gt;DazoNet&lt;/a&gt;, &lt;a href=&quot;http://case.oncle-tom.net/&quot;&gt;la case de l'Oncle Tom&lt;/a&gt;, &lt;a href=&quot;http://itsartist.net/&quot;&gt;la galerie Its Art Ist&lt;/a&gt; ou encore du &lt;a href=&quot;http://le-studio-americain.com/&quot;&gt;Studio Américain&lt;/a&gt;), d'avoir beaucoup appris en scrutant les codes servis (et de ne pas être seul à &lt;a href=&quot;http://www.gotocss3.com/&quot;&gt;parier sur les CSS3&lt;/a&gt;) et enfin d'avoir découvert un &lt;a href=&quot;http://www.gougueule.com/spongestats&quot;&gt;outil de stat prometteur&lt;/a&gt;.&lt;br /&gt;
J'ai eu beaucoup de bonheur à découvrir, à échanger, et à &lt;span class=&quot;aide&quot; title=&quot;action de “marque-pager” chez les utilisateurs de l'édition anglophone du Panda Rouge&quot;&gt;&lt;i&gt;bookmark&lt;/i&gt;er&lt;/span&gt;.
&lt;/p&gt;&lt;p&gt;
Alors oui, se prendre une telle note rend humble, mais je m'en fous, Ce concours m'a rapporté 1/30&lt;sup&gt;ème&lt;/sup&gt; de ma fréquentation en Août, période très très très maigre, qui, même s'ils furent rares à rester plus de 3 minutes pour voir au moins deux pages, m'ont valus quelques compliments sur le moteur plutôt que sur la carrosserie. De quoi être satisfait des nuits blanches pour rendre copie dans les temps, malgré les imprévus qui rendent votre machine inutilisable pendant deux semaines.
&lt;br /&gt;
Il en restera de cette opération à marche forcée, &lt;a href=&quot;http://dascritch.net/blog.php/tag/cssr07&quot;&gt;des billets spécifiques au sujet dans lequel je documente mes écueils&lt;/a&gt;. Pas mal encore de polissage technique à faire et de choses à ajouter, régler, améliorer... Et pour confirmation, non, je ne suis pas infographiste de profession, juste développeur web en chambre.
&lt;/p&gt;</content:encoded>
    
    
    
      </item>
  
	<item>
		<title>Tassons les Javascripts</title>
		<link>https://dascritch.net/post/2007/08/22/Tassons-les-Javascripts</link>
		<guid isPermaLink="false">urn:md5:5417c204cffd556486f3401faba12ed2</guid>
		<dc:date>2007-08-30T18:43:00+02:00</dc:date>

    <dc:creator>Da Scritch</dc:creator>
        <dc:subject>Webdev</dc:subject>
        
    <description>au DocMartens™. Encore plus fort... Allez, encore&amp;nbsp;! Le gain est dérisoire, mais c'est si marrant&amp;nbsp;! Tassons&amp;nbsp;! Tassons&amp;nbsp;! Comme des gros bourrins...		&lt;span class="tags"&gt;&lt;br /&gt;&lt;a href="https://dascritch.net/category/Webdev"&gt;Webdev&lt;/a&gt; &lt;/span&gt;
	</description>
    <content:encoded>
		&lt;p&gt;au DocMartens™. Encore plus fort... Allez, encore&amp;nbsp;! Le gain est dérisoire, mais c'est si marrant&amp;nbsp;! Tassons&amp;nbsp;! Tassons&amp;nbsp;! Comme des gros bourrins...&lt;span class="tags"&gt;&lt;br /&gt;
		&lt;a href="https://dascritch.net/category/Webdev"&gt;
			Webdev&lt;/a&gt;
				&lt;/span&gt;
		&lt;/p&gt;
		&lt;p&gt;
&lt;a href=&quot;http://dascritch.net/blog.php/post/2007/08/22/Pour-quelques-Javascripts-de-plus&quot;&gt;Dans le dernier épisode de mes aventures en Javascript&lt;/a&gt;, on m'a plusieurs fois fait remarquer qu'on pourrait réduire les appels à un seul programme javascript en copiant collant toutes les bibliothèques utilisées en un seul document.
&lt;/p&gt;&lt;p&gt;
Un constat qui part d'un calcul logique&amp;nbsp;: Chaque appel d'url HTTP se fait en envoyant plusieurs paquets d'instantiation IP. Juste histoire de dire «&amp;nbsp;&lt;cite&gt;youhou&amp;nbsp;! je suis làààààà&amp;nbsp;!&lt;/cite&gt;&amp;nbsp;». Et c'est ce qui fait que 4 images de 200 octets seront plus longs à charger qu'un de 1200 &lt;a href=&quot;https://dascritch.net/post/2007/08/22/Tassons-les-Javascripts#nb1&quot; name=&quot;in1&quot; class=&quot;up&quot;&gt;&lt;b&gt;[NB1]&lt;/b&gt;&lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;
Oui mais ...
&lt;/p&gt;&lt;p&gt;
Oui mais ce genre de comptes d'apothicaire prête à sourire quand on a un style avec une dizaine d'images minimum à charger. Et pour ce qui est des lags pour cause de &lt;a href=&quot;http://dascritch.net/blog.php/post/2007/08/22/Pour-quelques-Javascripts-de-plus&quot;&gt;cascade de bibliothèques JS&lt;/a&gt;, la meilleure méthode semble être celle du chargement désynchronisé. De n'avoir qu'une petite bibliothèque d'initialisation avec le minimum &lt;a href=&quot;https://dascritch.net/post/2007/08/22/Tassons-les-Javascripts#nb2&quot; name=&quot;in2&quot; class=&quot;up&quot;&gt;&lt;b&gt;[NB2]&lt;/b&gt;&lt;/a&gt; qui en appelle de largement plus grosses.
&lt;/p&gt;&lt;p&gt;
Lesquelles peuvent à loisir être très lourdes. À titre d'exemple (&lt;a href=&quot;http://dascritch.net/blog.php/post/2007/08/22/Pour-quelques-Javascripts-de-plus&quot;&gt;en complément du précédent billet&lt;/a&gt;) et rien que pour rire, Apple envoie un gargantuesque 500&amp;nbsp;Ko pour les galeries photos de iWeb. Ça laggue un peu dans le tas&amp;nbsp;:
&lt;/p&gt;&lt;p class=&quot;c&quot;&gt;
&lt;img src=&quot;https://dascritch.net/vrac/.blog2/webdev/708-jsasynchrone.png&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
&lt;small&gt;À noter que dans ce tableau, les valeurs de temps indiquées correspondent pour un seul fichier. Le graph représente le cumul...&lt;/small&gt;
&lt;/p&gt;&lt;p&gt;
Notons qu'Apple utilise une méthode de chargement JS asynchrone, mais que ses bibliothèques sont complètes, le source est brut avec commentaires, indentation, etc... Vont-ils penser à réduire leur bande-passante&amp;nbsp;? Ou laisser cet excellent exercice pratique pour débuggage&amp;nbsp;?
&lt;/p&gt;&lt;p&gt;
L'autre inconvénient du programme unique tient dans les bugs à l'interprétation. Si jamais une seule erreur arrive, toute la suite du programme est ignorée. Et vu que &lt;a href=&quot;http://dascritch.net/blog.php/post/2007/07/05/818-javascript-comme-un-dialecte&quot;&gt;le Javascript comporte une multitude de dialectes&lt;/a&gt;, ça augmente les chances de plantages.
&lt;/p&gt;
&lt;h3&gt;
Réfléchir à réduire...
&lt;/h3&gt;
&lt;p&gt;
Donc, revenons à l'idée d'une seule et très grosse bibliothèque unique, réunissant un voire plusieurs &lt;i&gt;toolkits&lt;/i&gt; et ses extensions &lt;a href=&quot;https://dascritch.net/post/2007/08/22/Tassons-les-Javascripts#nb3&quot; name=&quot;in3&quot; class=&quot;up&quot;&gt;&lt;b&gt;[NB3]&lt;/b&gt;&lt;/a&gt; (Pourquoi pas, puisque c'est ce mode de distribution qui est proposé par &lt;a href=&quot;http://mootools.net&quot;&gt;mootools&lt;/a&gt;)... plus des routines de pub AJAX ou de liens sociétaux... &lt;br /&gt;
Néanmoins, il faut correctement maîtriser l'ordre d'appels, éviter les conflits (dans les espaces de nommages de variables, de fonction, les ordres d'appels d'évènements, voire carrément les méthodes &lt;code&gt;addevent&lt;/code&gt;).&lt;br /&gt;
L'autre souci, c'est que ce copier-coller rend difficile la gestion des versions (si une des bibliothèques vient de changer de version, il faut réinsérer manuellement dans le source la mise-à-jour). La meilleure méthode dans ce cas-là est de créer un script côté serveur (pourquoi pas en évènement de répertoire, via &lt;code&gt;bash&lt;/code&gt;, pour éviter d'éventuel trou de sécurité si le script est en accès public), qui aura pour instruction de construire le programme à livrer aux visiteurs.
&lt;/p&gt;
&lt;h3&gt;
Purger les caractères inutiles.
&lt;/h3&gt;
&lt;p&gt;
On peut aussi enlever tout commentaires, les lignes vides inutiles... Cela n'accélérera pas de façon visible l'interprétation du script, mais pourrait fortement alléger le poids, donc le temps de chargement.&lt;br /&gt;
Évidemment, il faut garder une version originale, voire carrément mieux, utiliser &lt;a href=&quot;http://fr.wikipedia.org/wiki/Logiciel_de_gestion_de_versions&quot;&gt;un système de versionning&lt;/a&gt;, mais à ce stade, autant l'appliquer à l'ensemble de votre serveur web&amp;nbsp;!
&lt;/p&gt;&lt;p&gt;
Et puis...&lt;br /&gt;
et puis on peut supprimer les espaces et tabulations inutiles, celles qui courbent et déhanchent si élégamment votre code source, ou peuplent de leur non-dit vos fins de lignes... quelle utilité sur un site web grand public&amp;nbsp;? Zou&amp;nbsp;! À la trappe...
&lt;/p&gt;&lt;p&gt;
Et puis... ces retours chariots, eux aussi ont peut les virer...&lt;br /&gt;
Et hop&amp;nbsp;! regex-ons comme à la Légion&amp;nbsp;: &lt;code&gt;s/[
]/g&lt;/code&gt;&lt;br /&gt;
Sauf que contrairement au C, au Pascal, au Java, les retours chariot ont parfois signification&amp;nbsp;: celle de séparer les instructions. Les “&amp;nbsp;&lt;code&gt;;&lt;/code&gt;&amp;nbsp;” en fin d'instruction ne sont pas obligatoires, et implicitement placées en fin de ligne après une instruction complète.
&lt;/p&gt;
&lt;p&gt;
Et si on songeait à exterminer toutes ces fonctions inutiles&amp;nbsp;? Par là, je parle de toutes les instructions de débuggage (comme &lt;code&gt;breakpoint&lt;/code&gt;) , voire de fonctions propres à votre dev. L'excellent compresseur de &lt;a href=&quot;http://dean.edwards.name/&quot; hreflang=&quot;en|xx-1337&quot;&gt;Dean Edwards&lt;/a&gt;, qui m'a été bien utile pour tous mes tests, supprime les lignes commençant par “&amp;nbsp;&lt;code&gt;;;;&lt;/code&gt;&amp;nbsp;”. Une méthode efficace, 100% compatible et pas prise de tête pour différencier dans le source le comportement de développement et celui d'exploitation.&lt;br /&gt;
Une bonne habitude à prendre.
&lt;/p&gt;
&lt;h3&gt;
Nom d'une lettre&amp;nbsp;!
&lt;/h3&gt;
&lt;p&gt;
Les fonctions, les variables, les objets régulièrement appelés, plutôt que leur donner des noms explicites, certains se lancent dans une réduction de taille de nommage à un voire deux octets&amp;nbsp;! Bien du plaisir pour mettre en place, mais surtout pour redécoder si le logiciel de substitution fait son travail de manière trop automatisé...
&lt;/p&gt;&lt;p&gt;
J'ai aussi vu l'usage de caractères de jeu étendu (&lt;a href=&quot;http://snook.ca/archives/html_and_css/unicode_for_css_class_names/&quot; hreflang=&quot;en&quot; title=&quot;Unicode for CSS Class Names&quot;&gt;mais cette fois-ci dans une CSS&lt;/a&gt;). Or là, on nage en eaux troubles&amp;nbsp;: la confusion du jeu de caractère selon les navigateurs. Car si le jeu par défaut du &lt;a href=&quot;http://dascritch.net/blog.php/tag/html&quot;&gt;HTML&lt;/a&gt; a tendance à être de plus en plus souvent fixé en UTF-8 par les concepteurs de sites, les Javascripts (par défaut dans la norme) et les &lt;a href=&quot;http://dascritch.net/blog.php/tag/css&quot;&gt;CSS&lt;/a&gt; (surtout avec Safari) ont tendance à revenir spontanément en jeu ISO-Latin.&lt;br /&gt;
Foutoir garanti.
&lt;/p&gt;&lt;p&gt;
Si vous vous amusez à ce petit jeu, la meilleure solution est d'à la fois indiquer au navigateur dans la balise HTML le jeu de caractères du script/style appelé dans la balise via l'attribut &lt;code&gt;charset=&quot;&quot;&lt;/code&gt;, et de le repréciser à nouveau dans le &lt;i&gt;header&lt;/i&gt;. En priant pour qu'un logiciel client (ai-je dit “&lt;cite&gt;MSIE &lt;/cite&gt;”&amp;nbsp;?) ne fasse par un &lt;i&gt;charset-sniffing&lt;/i&gt; foireux sur vos appels &lt;abbr&gt;JSON&lt;/abbr&gt;.
&lt;/p&gt;
&lt;h3&gt;
Jusqu'à quel point peut-on “compresser” un Javascript&amp;nbsp;?
&lt;/h3&gt;
&lt;p&gt;
Tout en revenant à l'excellent outil de compression en ligne de &lt;a href=&quot;http://dean.edwards.name/&quot; hreflang=&quot;en|xx-1337&quot;&gt;Dean Edwards&lt;/a&gt;, celui-ci propose une option “&lt;i&gt;packer&lt;/i&gt;”. Une fonction qui permet de faire une compression sommaire par règles de substitution, qui peut aussi faire office d'obfuscation. Un cryptage sommaire qui rendra difficile pour le premier script-kiddie ou webdesigner débutant venu de repomper votre source. Promis, je ne vise personne...&lt;br /&gt;
Je ne crois pas me tromper en écrivant que &lt;a href=&quot;http://www.google.com/search?q=eval%28function%28p%2Ca%2Cc%2Ck%2Ce%2Cr%29%7B&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;aq=t&amp;amp;rls=org.mozilla:en-US:official&amp;amp;client=firefox-a&quot;&gt;l'outil est très populaire&lt;/a&gt; probablement pour cette dernière raison.
&lt;/p&gt;&lt;p&gt;
En fait, il est idiot de croire qu'en cryptant de la sorte son Javascript, on va accélérer le chargement. C'est faux&amp;nbsp;: le navigateur perd du temps à décompresser le source originel puis à le ré-interpréter. Et ceci à chaque changement de page puisqu'il ne le garde pas en cache (un peu comme MSIE avec des Images appelés dynamiquement par JS ou CSS). Car bien évidemment, dans une navigation client, un programme JS n'est pas lié à un site, mais à un document HTML. Votre JS est donc susceptible de changer à chaque navigation, donc le navigateur va fort logiquement ne pas garder le &lt;i&gt;runtime&lt;/i&gt; de votre bibliothèque, et en initier une nouvelle à chaque page.
&lt;/p&gt;&lt;p&gt;
Autre souci, ces règles de substitution peuvent être sujettes à des bugs ésotériques, comme celui concernant &lt;a href=&quot;http://dascritch.net/blog.php/tag/regex&quot;&gt;les moteurs regex&lt;/a&gt;. Mais rien que ça, &lt;a title=&quot;Javascript, l'accent d'la regex&quot; href=&quot;http://dascritch.net/blog.php/post/2007/08/06/Javascript-laccent-d-la-regex&quot;&gt;y'a de quoi en faire un billet...&lt;/a&gt;
&lt;/p&gt;
&lt;h3&gt;
Conclusion
&lt;/h3&gt;
&lt;p&gt;
On peut&amp;nbsp;:
&lt;ul&gt;
&lt;li&gt;stripper les commentaires&lt;/li&gt;
&lt;li&gt;supprimer les indentations&lt;/li&gt;
&lt;li&gt;supprimer les retours chariots&lt;/li&gt;
&lt;li&gt;substituer les noms de variables, de fonction, les objets récurrents par des noms très courts&lt;/li&gt;
&lt;/ul&gt;
mais on peut éviter&amp;nbsp;:
&lt;ul&gt;
&lt;li&gt;d'utiliser des noms (variable, fonction, objet) avec des caractères non US-ASCII&lt;/li&gt;
&lt;li&gt;de compresser par substitution&lt;/li&gt;
&lt;li&gt;de tout coller dans une seule bibliothèque extrêmement lourde&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Le meilleur exemple à suivre est celui de Google&amp;nbsp;: Il suit très exactement toutes ces méthodes. N'allez pas dire que j'ai copié sur eux, je m'en suis rendu-compte après coup.&lt;br /&gt;
Une tel coïncidence, c'est que mon raisonnement ne doit pas être si foireux...
&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;
&lt;b&gt;Nota bene&lt;/b&gt;&amp;nbsp;:
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://dascritch.net/post/2007/08/22/Tassons-les-Javascripts#in1&quot; name=&quot;nb1&quot;&gt;&lt;b&gt;↑&lt;/b&gt; &lt;/a&gt; En plus du problème de la taille minimale de trame IP, mais ça, c'est un autre problème... élégamment résolu par &lt;a hreflang=&quot;en&quot; href=&quot;http://chiptune.com&quot;&gt;chiptune.com&lt;/a&gt;, un incroyable émulateur d'Amiga tout en Javascript et DOM&amp;nbsp;!&lt;br /&gt;
Pour afficher les textes dans les polices du Workbench, il ne charge pas une image par lettre, mais tout un alphabet en une seule image, laquelle est dupliquée pour chaque lettre avec une fenêtre de visibilité soigneusement calculée. Seul inconvénient, cette méthode ne marche que si les images sont en positionnement CSS fixé, voire absolu.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dascritch.net/post/2007/08/22/Tassons-les-Javascripts#in2&quot; name=&quot;nb2&quot;&gt;&lt;b&gt;↑&lt;/b&gt; fonctions minimales&amp;nbsp;:&lt;/a&gt; Dans ma boîte à outil basique, j'y mettrais le chargement par &lt;a href=&quot;http://dascritch.net/blog.php/tag/dom&quot;&gt;insertion DOM&lt;/a&gt;, la gestion des &lt;i&gt;cookies&lt;/i&gt;, &lt;i&gt;timeout&lt;/i&gt;, &lt;i&gt;addevent&lt;/i&gt; et &lt;i&gt;domready&lt;/i&gt;. Ces fonctions primitives sont très faciles à écrire.
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dascritch.net/post/2007/08/22/Tassons-les-Javascripts#in3&quot; name=&quot;nb3&quot;&gt;&lt;b&gt;↑&lt;/b&gt; &lt;/a&gt;
Parmi les pages intéressantes que j'ai trouvé, &lt;a hreflang=&quot;en&quot; href=&quot;http://www.alistercameron.com/2006/01/05/prototypejs-scriptaculous-in-one-file-under-50kb/&quot;&gt;Alister Cameron propose le pack prototype.js + scriptaculous.js&lt;/a&gt; (avec quelles extensions&amp;nbsp;?) packé en un seul fichier. Notez sa solution sur la gestion de &lt;i&gt;charset&lt;/i&gt; appelé.
&lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;</content:encoded>
    
    
    
      </item>
  
	<item>
		<title>Pas de livraison du Supplément Week-End aujourd'hui</title>
		<link>https://dascritch.net/post/2007/08/25/Journee-sans-Supplement</link>
		<guid isPermaLink="false">urn:md5:a194f36b392b4ca98d918a80bdaadd66</guid>
		<dc:date>2007-08-25T10:08:00+02:00</dc:date>

    <dc:creator>Da Scritch</dc:creator>
        <dc:subject>Vu</dc:subject>
        
    <description>Mais une petite vidéo programmée à la place pour vous faire patienter en attendant notre retour à la radio....		&lt;span class="tags"&gt;&lt;br /&gt;&lt;a href="https://dascritch.net/category/Vu"&gt;Vu&lt;/a&gt; &lt;/span&gt;
	</description>
    <content:encoded>
		&lt;p&gt;Mais une petite vidéo programmée à la place pour vous faire patienter en attendant notre retour à la radio....&lt;span class="tags"&gt;&lt;br /&gt;
		&lt;a href="https://dascritch.net/category/Vu"&gt;
			Vu&lt;/a&gt;
				&lt;/span&gt;
		&lt;/p&gt;
		&lt;p&gt;
Pas d'émission aujourd'hui pour cause de retransmission d'Universités d'Été d'Attac sur &lt;a href=&quot;http://www.radio-fmr.net&quot;&gt;Radio &amp;lt;FMR&amp;gt;&lt;/a&gt;. Étant donné que dans cette radio on fait dans la gaudriole, j'ai proposé qu'on passe plutôt celles du PS, mais comme, par équité, il fallait aussi diffuser celles de l'UMP, là, tout de suite, ça a jeté un froid.
&lt;/p&gt;&lt;p&gt;
Mais pas de panique, &lt;a href=&quot;http://dascritch.net/statique.php/swe/speciales&quot;&gt;la saison &lt;span class=&quot;serif&quot;&gt;IV&lt;/span&gt; du &lt;b&gt;Supplément Week-End&lt;/b&gt;&lt;/a&gt; est toute proche. On a même refait complètement le site, inclus &lt;a href=&quot;http://dascritch.net/archiveweb.php&quot;&gt;deux sites de mes anciennes émissions&lt;/a&gt;, et &lt;a href=&quot;http://forum.alsacreations.com/concours/cssr2007/fiche.php?id=23&quot;&gt;inscrits au CSSR (votez pour nous&amp;nbsp;!)&lt;/a&gt;. Pour vous allécher, je vous propose une petite vidéo exhumée ce matin en rangeant mon répertoire “conneries reçues par mail”. Un palliatif qui va ravir les fans de super-héros, de films d'action, de soap-opera hindi et de musiques kitch. Bref, tout l'essence du mélange improbable qu'attendent les auditeurs de &lt;a href=&quot;https://dascritch.net/radio.php&quot;&gt;notre Supplément Week-End&lt;/a&gt;&amp;nbsp;:
&lt;/p&gt;&lt;p class=&quot;c&quot;&gt;
&lt;object type=&quot;application/x-shockwave-flash&quot; data=&quot;https://dascritch.net/js/player_flv.swf&quot;
width=&quot;400&quot; height=&quot;300&quot;&gt;
&lt;param name=&quot;movie&quot; value=&quot;/js/player_flv.swf&quot; /&gt;
&lt;param name=&quot;FlashVars&quot; value=&quot;flv=/vrac/.blog2/vu/Indian%20Superman-Govinda.flv&amp;amp;width=400&amp;amp;height=300&amp;amp;margin=1&amp;amp;showvolume=1&amp;amp;showtime=1&quot; /&gt;
&lt;/object&gt;
&lt;br /&gt;
(source inconnue, auteur inconnu, D.R.)
&lt;/p&gt;&lt;p&gt;
Chérie, toi qui me lit dans le salon, faudrait quand même qu'on se dégage un moment dans nos emplois du temps de ministre pour regarder les trois DVD que nous a aimablement prétés Dusport... quand même...
&lt;/p&gt;</content:encoded>
    
    
      <enclosure url="/vrac/.blog2/vu/Indian%20Superman-Govinda.flv"
      length="8604317" type="video/x-flv" />
    
    
      </item>
  
	<item>
		<title>Pour quelques Javascripts de plus</title>
		<link>https://dascritch.net/post/2007/08/22/Pour-quelques-Javascripts-de-plus</link>
		<guid isPermaLink="false">urn:md5:222c8261e7aeb28ea8996a5f98b09168</guid>
		<dc:date>2007-08-22T18:27:00+02:00</dc:date>

    <dc:creator>Da Scritch</dc:creator>
        <dc:subject>Webdev</dc:subject>
        
    <description>C'est bien joli de mettre des effets partout... Mais si ça doit rendre un site très lent, la java en vaut-elle le lag ? Pendant la reconception de mon site, je me suis furieusement gratté la tête pour vous.		&lt;span class="tags"&gt;&lt;br /&gt;&lt;a href="https://dascritch.net/category/Webdev"&gt;Webdev&lt;/a&gt; &lt;/span&gt;
	</description>
    <content:encoded>
		&lt;p&gt;C'est bien joli de mettre des effets partout... Mais si ça doit rendre un site très lent, la java en vaut-elle le lag ? Pendant la reconception de mon site, je me suis furieusement gratté la tête pour vous.&lt;span class="tags"&gt;&lt;br /&gt;
		&lt;a href="https://dascritch.net/category/Webdev"&gt;
			Webdev&lt;/a&gt;
				&lt;/span&gt;
		&lt;/p&gt;
		&lt;p&gt;
Grâce à d'excellents &lt;i&gt;toolkits&lt;/i&gt; Javascript  &lt;a class=&quot;up&quot; href=&quot;https://dascritch.net/post/2007/08/22/Pour-quelques-Javascripts-de-plus#nb1&quot; name=&quot;in1&quot;&gt;&lt;b&gt;[NB1]&lt;/b&gt;&lt;/a&gt; et à la maturité des navigateurs web, il est possible de donner à un site web en &lt;a href=&quot;http://dascritch.net/blog.php/tag/html&quot;&gt;HTML&lt;/a&gt; des effets dignes de Flash. Des possibilités qui deviennent envisageables même pour un infographiste ou un intégrateur web, en en connaissant qu'un minimum.
&lt;/p&gt;
&lt;p&gt;
Mais ces bibliothèques peuvent être très lourdes, et leur temps de chargement côté surfeur pénalisent les sites, rendant parfois les navigateurs comateux pendant quelques secondes. Si vous ajoutez les dépendances entre ces scripts, vous pouvez vite atteindre plus de 3 appels (par exemple, sur mon ancien site&amp;nbsp;: &lt;a href=&quot;http://www.prototypejs.org/&quot;&gt;prototype.js&lt;/a&gt;, &lt;a href=&quot;http://script.aculo.us/&quot;&gt;scriptaculous.js&lt;/a&gt;, &lt;a href=&quot;http://wiki.script.aculo.us/scriptaculous/show/CombinationEffectsDemo&quot;&gt;effects.js&lt;/a&gt;, &lt;a href=&quot;http://kryogenix.org/code/browser/nicetitle/&quot;&gt;nicetitle.js&lt;/a&gt;, &lt;a href=&quot;http://www.huddletogether.com/projects/lightbox2/&quot;&gt;lightbox2.js&lt;/a&gt; ,... &lt;a href=&quot;http://dascritch.net/blog.php/post/2006/04/19/381-lightbox-v20-trop-joli&quot;&gt;hem hem&lt;/a&gt;)&lt;br /&gt;
Si vous ajoutez à la page un &lt;a href=&quot;http://dascritch.net/blog.php/tag/javascript&quot;&gt;Javascript&lt;/a&gt; pour un site sociétal (genre &lt;i&gt;&lt;a href=&quot;http://technorati.com/widgets/blogwidgets&quot;&gt;Technorati&lt;/a&gt;&lt;/i&gt;), une bannière de pub (&lt;i&gt;&lt;a href=&quot;https://www.google.com/adsense/static/fr/AdFormats.html&quot;&gt;Adsense&lt;/a&gt;&lt;/i&gt; ou autre) voire plus simplement un bête outil d'analyse trafic par mouchard JS (&lt;i&gt;&lt;a href=&quot;http://www.webtrends.com/Products/WebTrendsVisitorIntelligence.aspx&quot;&gt;WebTrends&lt;/a&gt;&lt;/i&gt;, &lt;i&gt;&lt;a href=&quot;http://www.google.com/analytics/feature_fast.html&quot;&gt;Google Analytics&lt;/a&gt;&lt;/i&gt;, &lt;i&gt;&lt;a href=&quot;http://www.xiti.com/fr/Technologies/MarquageTech.aspx&quot;&gt;Xiti&lt;/a&gt;&lt;/i&gt;), voire même puisque c'est à la mode des appels Ajax en pagaille... le temps de chargement de votre page devient tributaire d'un serveur tiers. Ce qui veut dire que si ce serveur devient moins réactif parce qu'on est aux heures de pointes, votre site donne une impression sensible de ralentissement, avec un &lt;i&gt;freeze&lt;/i&gt; très désagréable du navigateur. &lt;a title=&quot;How Much Are Ad Servers Slowing the Web? (slashdot)&quot; hreflang=&quot;en&quot; href=&quot;http://ask.slashdot.org/article.pl?sid=07/08/17/1617259&quot;&gt;Le problème touche tout le monde&lt;/a&gt;, frustrant car il ne dépend pas du &lt;a href=&quot;http://dascritch.net/blog.php/category/Webdev&quot;&gt;webdesign&lt;/a&gt;... ou plutôt si&amp;nbsp;: Il est possible en reconcevant votre code de supprimer ce méchant &lt;i&gt;lag&lt;/i&gt;.
&lt;/p&gt;&lt;p&gt;
Et je comptais bien &lt;a href=&quot;http://dascritch.net/blog.php/tag/cssr07&quot;&gt;le mettre en pratique en redesignant mon site&lt;/a&gt;.
&lt;/p&gt;
&lt;h3&gt;Au début des Temps, le Javascript et le HTML étaient mélangés&lt;/h3&gt;
&lt;p&gt;
C'est la méthode la plus ancestrale pour faire appeler un Javascript&amp;nbsp;: En l'attachant à un lien &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;a&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;href&lt;/span&gt;=&quot;&lt;span class=&quot;param&quot;&gt;javascript:&lt;span class=&quot;js&quot;&gt;code();&lt;/span&gt;&lt;/span&gt;&quot;&amp;gt;&lt;/code&gt;. L'avantage, c'est que la balise hyperlien donne une cohérence du &lt;abbr title=&quot;Interface Utilisateur Graphique (souris, boutons, hyperliens, etc...&quot;&gt;GUI&lt;/abbr&gt;. Le problème, c'est que les navigateurs qui n'ont pas Javascript (et à l'époque, ils étaient légion) n'ont que faire de ce lien.
&lt;/p&gt;&lt;p&gt;
Alors fut introduit la possibilité d'attacher un évènement à une balise. Ainsi, il était possible de créer des boutons qui créent une action &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;button&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;onclick&lt;/span&gt;=&quot;&lt;span class=&quot;js&quot;&gt;code();&lt;/span&gt;&quot;&amp;gt;&lt;/code&gt;. Mais ces actions n'avaient lieu que si une action utilisateur avait effectivement lieue...
&lt;/p&gt;&lt;p&gt;
Heureusement, fut introduit dans le langage HTML une balise où tout devint possible&amp;nbsp;: &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;script&lt;/span&gt;&amp;gt;&lt;/code&gt;&lt;br /&gt;
Contrairement à ce que l'on pourrait croire, &lt;a href=&quot;http://www.w3.org/TR/html4/interact/scripts.html#h-18.2.2&quot;&gt;cette balise n'est pas à l'usage exclusif de Javascript&lt;/a&gt;&amp;nbsp;: On peut y inclure du VBscript (pour IE), du Tcl, du Perl (sur moteur Mozilla), selon le code &lt;i&gt;type-mime&lt;/i&gt; spécifié dans l'attribut &lt;code&gt;&lt;span class=&quot;attr&quot;&gt;type&lt;/span&gt;=&quot;&quot;&lt;/code&gt; (par défaut, ça reste du Javascript).
&lt;/p&gt;&lt;p&gt;
Néanmoins, l'affichage de votre page web sera complètement paralysée tant que cette balise ne sera pas intégralement interprétée. Par exemple, &lt;a href=&quot;http://xaviermd.free.fr&quot;&gt;sur cette (vieille) page&lt;/a&gt;, la fonction &lt;code&gt;&lt;span class=&quot;js&quot;&gt;alert();&lt;/span&gt;&lt;/code&gt; bloque le &lt;i&gt;parser&lt;/i&gt; &lt;a class=&quot;up&quot; href=&quot;https://dascritch.net/post/2007/08/22/Pour-quelques-Javascripts-de-plus#nb2&quot; name=&quot;in2&quot;&gt;&lt;b&gt;[NB2]&lt;/b&gt;&lt;/a&gt;, qui attend que le petit script rende la main pour afficher le reste du document. Quand l'utilisateur a cliqué sur la boîte de dialogue, le navigateur voit la suite de la page, et donc la balise &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;style&lt;/span&gt;&amp;gt;&lt;/code&gt;. C'est très important&amp;nbsp;: cela signifie que votre page n'est pas complètement visible (même complètement chargée dans l'ordinateur du visiteur), puisqu'il faut que le navigateur termine d'interpréter votre Javascript avant de finir l'interprétation de votre document HTML.&lt;br /&gt;
Et pourquoi un tel comportement&amp;nbsp;? Car vous pourriez très bien y faire une construction “dynamique” (plus exactement “brutasse”) de HTML dans votre script via la fonction &lt;code&gt;&lt;span class=&quot;attr&quot;&gt;document&lt;/span&gt;.write();&lt;/code&gt;. Vous verrez que cette dernière  est infâmement fourbe.
&lt;/p&gt;
&lt;h3&gt;Et le Verbe fut &lt;code&gt;&amp;lt;script src&amp;#x200b;=&quot;&lt;/code&gt;...&lt;/h3&gt;
&lt;p&gt;
Cette méthode, qui est unanimement considérée comme la plus propre et la plus standard (&lt;a href=&quot;http://dascritch.net/blog.php/post/2007/07/28/Sortir-le-script-des-balises&quot;&gt;j'ai déjà expliqué pourquoi&lt;/a&gt;), permet d'utiliser des scripts globaux à l'ensemble ou une partie importante d'un site web. Idéalement, il est placé dans la section &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;head&lt;/span&gt;&amp;gt;&lt;/code&gt; du document HTML.
&lt;/p&gt;&lt;p&gt;
Néanmoins, elle a exactement le même impact côté client qu'un script embarqué&amp;nbsp;: Le navigateur arrêtera tout traitement de la page (et donc bloque son affichage), tant qu'il n'a pas intégralement reçu le programme Javascript et qu'il ai traité les fonctions appelées.&lt;br /&gt;
Alors qu'en temps normal la plupart des navigateurs modernes ouvrent 4 chargements en simultanée (en mode asynchrone), on passe dans un système digne de nos plus Vaillantes Administration où chacun attend son tour que le chiffre imprimé sur son ticket soit annoncé au haut-parleur&amp;nbsp;: Dans le cas de mon ancien site, ce n'est qu'une fois &lt;i&gt;prototype.js&lt;/i&gt; chargé et interprété en entier qu'on passe à &lt;i&gt;effects.js&lt;/i&gt;... et ainsi de suite jusqu'à &lt;i&gt;google-analytics.js&lt;/i&gt;, et enfin les images se chargent... mais par paquet de 4, sans s'attendre mutuellement.
&lt;/p&gt;&lt;p&gt;
À noter que &lt;a href=&quot;http://www.websiteoptimization.com/speed/tweak/defer/&quot;&gt;l'attribut &lt;code&gt;&lt;span class=&quot;attr&quot;&gt;defer&lt;/span&gt;&lt;/code&gt; dans la balise&lt;/a&gt; permet d'éviter cette attente. Si évidemment votre navigateur la supporte &lt;a class=&quot;up&quot; href=&quot;https://dascritch.net/post/2007/08/22/Pour-quelques-Javascripts-de-plus#nb3&quot; name=&quot;in3&quot;&gt;&lt;b&gt;[NB3]&lt;/b&gt;&lt;/a&gt;, et à condition de bannir tout &lt;code&gt;&lt;span class=&quot;attr&quot;&gt;document&lt;/span&gt;.write();&lt;/code&gt; et toute dépendance entre les scripts. Pour mon exemple, c'est loupé.
&lt;/p&gt;
&lt;h3&gt;&lt;code&gt;&amp;lt;script src&amp;#x200b;=&quot;&lt;/code&gt; juste à la Fin du HTML&lt;/h3&gt;
&lt;p&gt;
Durant sa période de béta-testing, Google Analytics fut victime d'une panne. Le serveur google-analytics.com hébergeant le programme &lt;i&gt;urchin.js&lt;/i&gt; étant indisponible, l'ensemble des pages de leurs &lt;strike&gt;clients&lt;/strike&gt; béta-testeurs furent inaccessibles pendant 24 heures. Le temps que le navigateur du visiteur attende le &lt;i&gt;timeout&lt;/i&gt; (en général, une bonne minute), tous les sites qui utilisaient ce service  ne furent que pages blanches... Car à ce moment-là, Saint Google avait décrété que son outil de confession devait être invoqué pieusement par le HTML dans la balise &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;head&lt;/span&gt;&amp;gt;&lt;/code&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.google.fr/support/analytics/bin/answer.py?answer=26785&amp;amp;topic=7199&amp;amp;amphl=fr&quot;&gt;Conscients de ce souci&lt;/a&gt;, G.A. recommanda alors de ne plus appeler leur script entre les balises &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;head&lt;/span&gt;&amp;gt;&lt;/code&gt;, mais &lt;a href=&quot;http://www.google.fr/support/analytics/bin/answer.py?answer=26908&amp;amp;hl=fr&quot;&gt;juste avant &lt;code&gt;&amp;lt;/&lt;span class=&quot;balise&quot;&gt;body&lt;/span&gt;&amp;gt;&lt;/code&gt;&lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;
Mais alors, se dit le lecteur, pourquoi pas entre &lt;code&gt;&amp;lt;/&lt;span class=&quot;balise&quot;&gt;body&lt;/span&gt;&amp;gt;&lt;/code&gt; et  &lt;code&gt;&amp;lt;/&lt;span class=&quot;balise&quot;&gt;html&lt;/span&gt;&amp;gt;&lt;/code&gt;&amp;nbsp;? Parce que le code ne serait plus valide. Ça peut pas. Pas bien. Faut pas. Saimal. Sapu.
&lt;/p&gt;&lt;p&gt;
Sauf que...&lt;br /&gt;
Sauf que la position idéale, si on va dans l'idée de faire un appel à un &lt;i&gt;.js&lt;/i&gt; unique, c'est à côté des &lt;a href=&quot;http://dascritch.net/blog.php/tag/css&quot;&gt;CSS&lt;/a&gt; &lt;a class=&quot;up&quot; href=&quot;https://dascritch.net/post/2007/08/22/Pour-quelques-Javascripts-de-plus#nb4&quot; name=&quot;in4&quot;&gt;&lt;b&gt;[NB4]&lt;/b&gt;&lt;/a&gt;, c'est-à-dire dans la balise &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;head&lt;/span&gt;&amp;gt;&lt;/code&gt;...
&lt;/p&gt;

&lt;h3&gt;Prenez mon &lt;code&gt;body&lt;/code&gt; et &lt;code&gt;onload&lt;/code&gt;ez-le&lt;/h3&gt;
&lt;p&gt;
Revenons au principe d'attacher une fonction JS à une balise HTML.&lt;br /&gt;
Et là, on s'est dit qu'il suffisait d'invoquer les éléments lourds non pas dans la fonction principale du &lt;i&gt;.js &lt;/i&gt;(équivalent au rôle de la section &lt;code&gt;&lt;span class=&quot;balise&quot;&gt;main&lt;/span&gt;();&lt;/code&gt; en C), mais lors de l'évènement &lt;code&gt;&lt;span class=&quot;js&quot;&gt;onload&lt;/span&gt;&lt;/code&gt; de la balise &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;body&lt;/span&gt;&amp;gt;&lt;/code&gt;.
Ce qui veut dire que soit on l'appelle dans le HTML par &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;body&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;onload&lt;/span&gt;=&quot;&lt;/code&gt; (je rappelle que cette méthode, c'est caca.), soit en liant une fonction en javascript :&lt;br /&gt;
&lt;code&gt;&lt;span class=&quot;attr&quot;&gt;window&lt;/span&gt;.onload = &lt;span class=&quot;balise&quot;&gt;function&lt;/span&gt; () {}&lt;/code&gt;
&lt;a class=&quot;up&quot; href=&quot;https://dascritch.net/post/2007/08/22/Pour-quelques-Javascripts-de-plus#nb5&quot; name=&quot;in5&quot;&gt;&lt;b&gt;[NB5]&lt;/b&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Néanmoins, l'évènement &lt;code&gt;onload&lt;/code&gt; est intrinsèquement lié au chargement complète de sa balise et de tous ses enfants. Ce qui veut dire que cet évènement l'a lieu &lt;i&gt;qu'après&lt;/i&gt; que &lt;u&gt;l'ensemble&lt;/u&gt; des éléments comme les images &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;img&lt;/span&gt; /&amp;gt;&lt;/code&gt;, les images décrites dans la/les CSS, les &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;object&lt;/span&gt; /&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;iframe&lt;/span&gt; /&amp;gt;&lt;/code&gt; et bien évidemment &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;script&lt;/span&gt; /&amp;gt;&lt;/code&gt; soient effectivement chargés.
&lt;/p&gt;&lt;p&gt;
Cette solution garanti qu'aucun blocage ne sera dû à l'absence quelconque de quoi que se soit, sinon.... du visiteur&amp;nbsp;! Car il est parfois utile de comptabiliser au plus vite votre visiteur&amp;nbsp;: pour gonfler vos statistiques de trafic “naturellement”, pour imprimer plus de pages de publicités vues, etc... Si possible, avant les deux secondes où il va s'apercevoir qu'il n'est pas sur le site qu'il attendait.&lt;a class=&quot;up&quot; href=&quot;https://dascritch.net/post/2007/08/22/Pour-quelques-Javascripts-de-plus#nb6&quot; name=&quot;in6&quot;&gt;&lt;b&gt;[NB6]&lt;/b&gt;&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;
&lt;i&gt;Time is money&lt;/i&gt;, et attendre &lt;code&gt;onload&lt;/code&gt; pourrait en faire perdre pas mal
&lt;/p&gt;
&lt;h3&gt;Un &lt;code&gt;&amp;lt;script src&amp;#x200b;=&quot;&quot; /&amp;gt;&lt;/code&gt; unique, avec le tentateur &lt;code&gt;document.write();&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;
En fait, le coup/coût idéal serait de n'avoir à faire appel qu'à une seule balise &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;script&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;src&lt;/span&gt;=&quot;&quot; /&amp;gt;&lt;/code&gt; dans son document HTML, laquelle appelle ses petites copines javascripteuses pour bricoler leurs petits effets. Lightbox, Nicetitle, Analytics, AdSense...&lt;br /&gt;
Ça simplifierait de plus le développement, puisqu'il suffit de modifier une unique adresse pour, par exemple, changer complètement de &lt;i&gt;toolkit&lt;/i&gt;. Une approche qui ressemble à celle de la création de CSS sur un site en ligne.
&lt;/p&gt;&lt;p&gt;
Or voilà exactement ce que je déteste&amp;nbsp;: du &lt;code&gt;&lt;span class=&quot;attr&quot;&gt;document&lt;/span&gt;.write();&lt;/code&gt; en vrac.&lt;br /&gt;
D'après vous, que se passe-t-il quand cette fonction est utilisée&amp;nbsp;? Le nouveau HTML est parsé, chargeant un Javascript qui est interprété, ralentissant d'autant l'affichage de votre page. Si vous tentez de retarder (avec la méthode &lt;code&gt;.onload&lt;/code&gt; ou un &lt;code&gt;setTimeout();&lt;/code&gt;) une fonction qui utilisera &lt;code&gt;&lt;span class=&quot;attr&quot;&gt;document&lt;/span&gt;.write();&lt;/code&gt;, vous n'êtes absolument pas sûr du résultat... pouvant même parfois effacer complètement votre document HTML... En clair&amp;nbsp;: c'est une &lt;b&gt;MAUVAISE SOLUTION&lt;/b&gt;.
&lt;/p&gt;&lt;p&gt;
À noter que &lt;a href=&quot;http://blogs.msdn.com/oldnewthing/archive/2006/06/05/617901.aspx&quot; hreflang=&quot;en&quot; title=&quot;Why can't you say &amp;amp;lt;/script&amp;amp;gt; in a script block?&quot;&gt;cette solution proposée par l'équipe IE était tellement bugguée&lt;/a&gt; (surtout que &lt;a href=&quot;http://dascritch.net/blog.php/post/2007/07/28/Sortir-le-script-des-balises&quot;&gt;la bonne réponse était CDATA&lt;/a&gt;), qu'elle a mené à &lt;a href=&quot;http://weblogs.mozillazine.org/gerv/archives/2006/06/scr_ipt.html&quot; title=&quot;“&amp;amp;lt;/scr” + “ipt&amp;amp;gt;” (hacking for christ)&quot; hreflang=&quot;en&quot;&gt;une suite intéressante de réponses dans le blog de Gervase Markham&lt;/a&gt; (de l'équipe Firefox). Ce qui m'a amené (et je suis pas le seul) à une solution évidente&amp;nbsp;:
&lt;/p&gt;
&lt;h3&gt;Un seul &lt;code&gt;src=&lt;/code&gt; et sur ce script je construirais mon DOM&lt;/h3&gt;
&lt;p&gt;
Or donc, appelé à deviser là-dessus, &lt;a href=&quot;http://weblogs.mozillazine.org/gerv/archives/2006/06/scr_ipt.html&quot; hreflang=&quot;en&quot;&gt;Alan Trick le biennommé propose dans les commentaires&lt;/a&gt; d'utiliser une construction via &lt;a href=&quot;http://dascritch.net/blog.php/tag/dom&quot;&gt;l'arbre DOM&lt;/a&gt; du document. Avantages&amp;nbsp;: Le &lt;i&gt;parser&lt;/i&gt; du navigateur n'a plus à attendre et continue pépèrement à montrer le HTML, le chargement du source externe se fait en asynchrone (et donc indépendemment des temps d'attente),... bref tout le monde il est content. Pour ceux qui ont besoin de dépendances, &lt;a href=&quot;http://en.design-noir.de/webdev/JS/loadScript/&quot;&gt;Dao/Design-Noir propose une chouette bibliothèque&lt;/a&gt; extrèmement légère (moins de 30 lignes&amp;nbsp;! pensez-donc&amp;nbsp;!) qui gère les listes d'attente et l'exécution de fonctions une fois la bibliothèque chargée... D'ailleurs, c'est comme ça qu'il colorise son code source.
&lt;/p&gt;
&lt;p&gt;
Une solution efficace, mais qui dans des cas rarissimes, vous vaudra de vous fritter avec la susceptibilité légendaire de MSIE. Rien que ce domaine vaut un autre chapitre, qui racontera comment j'ai appris plein de nouveaux gros-mots que blogguent ouvertement les développeurs de ASP.NET contre leurs collègues de IE.
&lt;/p&gt;
&lt;/p&gt;
Mais avant ça, il faudra que je vous cause comment encore optimiser votre Javascript&amp;nbsp;: En tassant son code au DocMartens™&amp;nbsp;!
&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;
Petits textes explicatifs avant de fermer le &amp;lt;/body&amp;gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://dascritch.net/post/2007/08/22/Pour-quelques-Javascripts-de-plus#in1&quot; name=&quot;nb1&quot;&gt;&lt;b&gt;↑ &lt;i&gt;Toolkit&lt;/i&gt;&lt;/b&gt;&lt;/a&gt; : Bibliothèque de fonction agissant comme de véritables environnements de développement. Ils étendent le langage, comble des déficiences, installent des fonctions primitives rébarbatives à ré-écrire à chaque fois. La mort du Bénédictin.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dascritch.net/post/2007/08/22/Pour-quelques-Javascripts-de-plus#in2&quot; name=&quot;nb2&quot;&gt;&lt;b&gt;↑ &lt;i&gt;Parser&lt;/i&gt;&lt;/b&gt;&lt;/a&gt; :
Logiciel qui &lt;a href=&quot;http://fr.wikipedia.org/wiki/Analyse_syntaxique&quot;&gt;analyse syntaxiquement&lt;/a&gt; un document texte afin d'exécuter le programme qu'il contient (Javascript, Basic,...), construire sa mise en forme (HTML, XML, OpenOffice,...), ou les macros d'aspect (CSS, les thèmes de Firefox, Word, OpenOffice,...). Généralement, c'est bourré de &lt;a href=&quot;http://dascritch.net/blog.php/tag/regex&quot;&gt;regex&lt;/a&gt;, voire écrit dans le plus incompréhensible des Perl parce que celui qui l'a écrit ne peut pas saquer son collègue en face...
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dascritch.net/post/2007/08/22/Pour-quelques-Javascripts-de-plus#in3&quot; name=&quot;nb3&quot;&gt;&lt;b&gt;↑ defer&lt;/b&gt;&lt;/a&gt; :
Même si elle est décrite dans la norme HTML4 par le W3C, cet attribut ne semble supporté que par MSIE. Pour une fois que l'équipe de Microsoft est en avance sur les autres pour appliquer les normes et standards, elle a dû sabrer le champagne. Je me demande si c'est arrivé une autre fois depuis 1998...
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dascritch.net/post/2007/08/22/Pour-quelques-Javascripts-de-plus#in4&quot; name=&quot;nb4&quot;&gt;&lt;b&gt;↑ les CSS&lt;/b&gt;&lt;/a&gt; :
Certains mécréants n'ont pas encore compris l'utilité de la CSS unique, choyée et bichonnée comme l'unique héritier mâle des nombreuses familles Chinoises... Faudrait que je parte en croisade aussi là-dessus.
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dascritch.net/post/2007/08/22/Pour-quelques-Javascripts-de-plus#in5&quot; name=&quot;nb5&quot;&gt;&lt;b&gt;↑ window.onload&lt;/b&gt;&lt;/a&gt; :
On peut écrire indifféremment &lt;code&gt;&lt;span class=&quot;attr&quot;&gt;window&lt;/span&gt;.onload&lt;/code&gt; ou &lt;code&gt;&lt;span class=&quot;attr&quot;&gt;document&lt;/span&gt;.onload&lt;/code&gt; ... les différences entre les deux éléments sont relativement minimes, et &lt;abbr&gt;àmha&lt;/abbr&gt; ne concernent que la présence de &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;frame&lt;/span&gt; /&amp;gt;&lt;/code&gt; dans votre code.
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dascritch.net/post/2007/08/22/Pour-quelques-Javascripts-de-plus#in6&quot; name=&quot;nb6&quot;&gt;&lt;b&gt;↑ mesure d'audience&lt;/b&gt;&lt;/a&gt; :
À ce sujet, I télé diffuse parfois un “&lt;i&gt;bumper&lt;/i&gt;” pour vanter leurs XX millions de télespectateurs mensuel... Un chiffre parfaitement juste car il s'agit de personnes restant &lt;i&gt;au moins une seconde&lt;/i&gt; sur leur chaîne. Le temps d'éternuer en zappant...&lt;br /&gt;
Questions chiffres, Bertrand Renard arrive à retenir ses télespectateurs autrement...
&lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;
&lt;style&gt;
code .balise {color:black;font-weight:bold}
code .attr { color : green }
code .param {color:#2F4F4F}
code .js {color:red}
&lt;/style&gt;</content:encoded>
    
    
    
      </item>
  
	<item>
		<title>Sortir le script des balises</title>
		<link>https://dascritch.net/post/2007/07/28/Sortir-le-script-des-balises</link>
		<guid isPermaLink="false">urn:md5:2ca58e75d8208ea93041ece9a7c0cc4c</guid>
		<dc:date>2007-08-15T23:30:00+02:00</dc:date>

    <dc:creator>Da Scritch</dc:creator>
        <dc:subject>Webdev</dc:subject>
        
    <description>Pourquoi Javascript ne doit plus polluer le HTML et comment faire. Une méthode de création de site qui va changer les relations entrer développeurs et webdesigners...		&lt;span class="tags"&gt;&lt;br /&gt;&lt;a href="https://dascritch.net/category/Webdev"&gt;Webdev&lt;/a&gt; &lt;/span&gt;
	</description>
    <content:encoded>
		&lt;p&gt;Pourquoi Javascript ne doit plus polluer le HTML et comment faire. Une méthode de création de site qui va changer les relations entrer développeurs et webdesigners...&lt;span class="tags"&gt;&lt;br /&gt;
		&lt;a href="https://dascritch.net/category/Webdev"&gt;
			Webdev&lt;/a&gt;
				&lt;/span&gt;
		&lt;/p&gt;
		&lt;style&gt;
code .balise {color:black;font-weight:bold}
code .attr { color : green }
code .param {color:red}
&lt;/style&gt;&lt;p&gt;
Javascript est un langage assez fabuleux&amp;nbsp;: Il est interprété sur tous les navigateurs (&lt;a href=&quot;http://dascritch.net/blog.php/post/2007/07/05/818-javascript-comme-un-dialecte&quot;&gt;avec de sérieuses nuances&lt;/a&gt;), il est relativement rapide à développer et à exécuter, et il permet des effets en manipulant le &lt;a href=&quot;http://dascritch.net/blog.php/tag/html&quot;&gt;HTML&lt;/a&gt;, l'&lt;a href=&quot;http://dascritch.net/blog.php/tag/dom&quot;&gt;arbre DOM du document&lt;/a&gt; ou les &lt;a href=&quot;http://dascritch.net/blog.php/tag/css&quot;&gt;CSS&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;Dans mon précédent design (conçu en 2003... ahem...), j'insérais dans mon document HTML des commandes Javascript pour chaque balise fonctionnelle, or certaines étaient liés à des groupes. Genre toutes les balises &lt;code&gt;&lt;span class=&quot;attr&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;param&quot;&gt;&quot;masqueur&quot;&lt;/span&gt;&lt;/code&gt; qui ont une action sur les balises &lt;code&gt;&lt;span class=&quot;param&quot;&gt;&quot;masquable&quot;&lt;/span&gt;&lt;/code&gt; correspondantes.&lt;br /&gt;
Ça donnait ceci :
&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
&lt;code&gt;
&amp;lt;&lt;span class=&quot;balise&quot;&gt;dt&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;param&quot;&gt;&quot;masqueur&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;id=&lt;/span&gt;&lt;span class=&quot;param&quot;&gt;&quot;bloc&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;onclick=&lt;/span&gt;&lt;span class=&quot;param&quot;&gt;&quot;flipflop('bloc')&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;title=&lt;/span&gt;&lt;span class=&quot;param&quot;&gt;&quot;cliquez pour afficher&quot;&lt;/span&gt;&amp;gt;Quelque chose à écrire!&amp;lt;/&lt;span class=&quot;balise&quot;&gt;dt&lt;/span&gt;&amp;gt;&lt;br /&gt;
&amp;lt;&lt;span class=&quot;balise&quot;&gt;dd&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;param&quot;&gt;&quot;masquable&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;id=&lt;/span&gt;&lt;span class=&quot;param&quot;&gt;&quot;bloc_m&quot;&lt;/span&gt;&amp;gt;Texte caché&amp;lt;/&lt;span class=&quot;balise&quot;&gt;dd&lt;/span&gt;&amp;gt;
&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
Ça devenait assez chiant à coder. Que faire&amp;nbsp;? Laisser le travail à PHP, en priant qu'on ne s'emmêle pas les pinceaux dans un code à étage multiple&amp;nbsp;? Une solution qui serait devenu difficile puisque mon CMS (Dotclear) introduisait un système de &lt;em&gt;template&lt;/em&gt;, rendant les inclusions PHP difficiles à gérer.&lt;/p&gt;
&lt;p&gt;
Exemple pratique&amp;nbsp;: Supposons que vous avez un blog de plus de 800 billets et 500 pages statiques, que dedans, vous utilisez des effets comme l'affichage de galerie d'images ou d'effets de cacher/décacher dynamiquement par javascript. Supposons que vous changez toute votre base, ou même plus simple, que vous changez tout simplement de bibliothèque d'effets Javascript. Vous vous voyez tout modifier puis revérifier&amp;nbsp;?
&lt;/p&gt;
&lt;p&gt;À la réflexion, ce genre de Javascript embarqué n'a rien à faire dans le balisage HTML&amp;nbsp;: il le rend lourd, pénible à maintenir, et n'a aucune utilité pour les logiciels clients qui n'utilisent pas Javascript (le panel est large&amp;nbsp;: des robots de moteurs de recherche, jusqu'aux lecteurs braille en passant par les téléphones mobiles qui en plus paient au kilo-octet). Sans compter qu'il génère des incompatibilités dans l'usage des comparateurs &lt;code&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/code&gt; et &lt;code&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/code&gt; ou de l'opérateur &lt;code&gt;&lt;strong&gt;&amp;amp;&amp;amp;&lt;/strong&gt;&lt;/code&gt;. Perso, je suis pas fan des &lt;a href=&quot;http://xml.coverpages.org/xml10-french.html#sec-cdata-sect&quot;&gt;&lt;code&gt;&amp;lt;![CDATA[&lt;/code&gt; ...&lt;code&gt;]]&amp;gt;&lt;/code&gt;&lt;/a&gt; dont j'ai jamais été fichu de retenir la syntaxe.&lt;/p&gt;
&lt;p&gt;
L'un des premiers effets réellement simples et réussis que j'ai vu d'insertion d'effet dynamiques en fonction du code HTML, c'est &lt;a href=&quot;http://www.huddletogether.com/projects/lightbox/&quot;&gt;Lightbox&lt;/a&gt;. Pour appeler Lightbox, il suffit d'entourer une balise &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;img&lt;/span&gt; /&amp;gt;&lt;/code&gt; affichant une image réduite, vers l'original de la même image. Sauf qu'on utilise l'attribut &lt;code&gt;&lt;span class=&quot;attr&quot;&gt;rel=&lt;/span&gt;&lt;/code&gt;. Si celui-ci comporte parmis ses paramètres le mot-clé &quot;&lt;code&gt;&lt;span class=&quot;param&quot;&gt;lightbox&lt;/span&gt;&lt;/code&gt;&quot;, le lien traditionnel est remplacé par le lancement du visionneur JS.
&lt;/p&gt;
&lt;p&gt;
Brillant.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Parce qu'il supprime tout appel Javascript du HTML,&lt;/li&gt;
&lt;li&gt;Que cet appel est construit par manipulation DOM du document HTML&lt;/li&gt;
&lt;li&gt;Que si Lightbox n'arrive pas à faire son travail, les balises HTML restent fonctionnelles, c'est ce qu'on appelle de la &lt;em&gt;dégradation élégante&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Qu'il utilise un attribut de la balise &lt;code&gt;&amp;lt;&lt;span class=&quot;balise&quot;&gt;a&lt;/span&gt; /&amp;gt;&amp;lt;/&lt;span class=&quot;balise&quot;&gt;a&lt;/span&gt;&amp;gt;&lt;/code&gt; conforme mais peu utilisé&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Lightbox a vite eu un panel très large d'utilisateurs. Mais il avait aussi l'inconvénient d'utiliser &lt;em&gt;Prototype.js&lt;/em&gt;, &lt;em&gt;Effects.js&lt;/em&gt; et &lt;em&gt;Scriptalicious.js&lt;/em&gt;. Ce qui rendait les appels de page très lourds, notamment sur les appels (j'en parlerais prochainement). Très vite, de nombreux clones sont apparus, améliorant ou étendant ses possibilités. Seuls ceux qui utilisent le même type d'appel simplifiés sont réellement utilisés, et à raison&amp;nbsp;: Tout autre méthode rend trop dépendant d'une bibliothèque qu'on pourrait être amené à changer.
&lt;/p&gt;
&lt;p&gt;
En en ayant compris le principe, il devenait très rapide de s'imposer de nouvelles techniques pour créer son site web. Puisque j'utilise des classes HTML de manière conjointe avec certaines fonctions Javascript, il suffisait de manipuler mes documents HTML par ma bibliothèque JS personnelle, à la volée par le navigateur du client. Faire en sorte que celle-ci s'initialise (une fois que le navigateur a complètement parsé le document, sinon ça peut péter), en lui faisant manipuler des classes d'éléments. Les paramètres des fonctions sont tout simplement lus par le nom de la balise. Ce qui nettoie radicalement mon HTML&amp;nbsp;:
&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
&lt;code&gt;
&amp;lt;&lt;span class=&quot;balise&quot;&gt;dt&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;param&quot;&gt;&quot;masqueur&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;id=&lt;/span&gt;&lt;span class=&quot;param&quot;&gt;&quot;bloc&quot;&lt;/span&gt;&amp;gt;Quelque chose à écrire!&amp;lt;/&lt;span class=&quot;balise&quot;&gt;dt&lt;/span&gt;&amp;gt;&lt;br /&gt;
&amp;lt;&lt;span class=&quot;balise&quot;&gt;dd&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;param&quot;&gt;&quot;masquee&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;id=&lt;/span&gt;&lt;span class=&quot;param&quot;&gt;&quot;bloc_m&quot;&lt;/span&gt;&amp;gt;Texte caché&amp;lt;/&lt;span class=&quot;balise&quot;&gt;dd&lt;/span&gt;&amp;gt;
&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
Et simplifie mes appels :
&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
&lt;code&gt;
&lt;span class=&quot;balise&quot;&gt;function&lt;/span&gt; flipflop() {&lt;br /&gt;
&amp;nbsp; &lt;span class=&quot;balise&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;objet&lt;/span&gt; = document.getElementById( &lt;em&gt;this&lt;/em&gt;.id+&lt;span class=&quot;param&quot;&gt;'_m'&lt;/span&gt; );&lt;br /&gt;
[etc...]&lt;br /&gt;
}
&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
Le gain de rapidité est évident. Puisque les “éléments superflus” d'animations sont produits si le navigateur client peut les lire. Et qu'on obtient à la fois une cohérence de développement, mais aussi d'aspect puisqu'une fonction hérite du coup de propriétés CSS, lui donnant un réel &lt;em&gt;look&amp;amp;feel&lt;/em&gt;. Le comportement des navigateurs n'est pas encore suffisament uniforme sur l'arbre DOM en Javascript, mais on arrive à des résultats absolument bluffants.&lt;br /&gt;
Mais attention&amp;nbsp;: Si une fonction Javascript n'est requise que par un seul document HTML, il vaut mieux l'y laisser pour ne pas alourdir sa propre bibliothèque JS, ce qui serait passer de Charybde en Scylla. Écrire un programme en Javascript &lt;a href=&quot;http://dascritch.net/blog.php/post/2007/07/05/818-javascript-comme-un-dialecte&quot;&gt;avec ses multiples dialectes&lt;/a&gt; n'a rien à voir avec une définition CSS... Mais plus les sites le feront, plus Microsoft &lt;a href=&quot;http://dascritch.net/blog.php/post/2006/10/13/562-la-seconde-guerre-du-web-n-aura-pas-lieu&quot;&gt;sera obligé d'y réfléchir&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Quelque chose qui rappelle exactement ce qui s'est passé quand on a séparé la forme du fond. Quand toute la présentation fut retirée du HTML (adieu &lt;code&gt;&lt;span class=&quot;attr&quot;&gt;color=&lt;/span&gt;&lt;/code&gt; de sinistre mémoire&amp;nbsp;!) et réuni en un seul endroit, le CSS. C'est peut-être ce qui manque encore à maîtriser&amp;nbsp;:&lt;br /&gt;
Sortir les comportement globaux d'effets du HTML pour que le Javascript s'en occupe tout seul.
&lt;/p&gt;</content:encoded>
    
    
    
      </item>
  
	<item>
		<title>Et voici les colonnes !</title>
		<link>https://dascritch.net/post/2007/07/19/828-et-voici-les-colonnes</link>
		<guid isPermaLink="false">urn:md5:8b54b1a18b6bb8b39e9f58c6e14f4da1</guid>
		<dc:date>2007-08-07T13:19:00+00:00</dc:date>

    <dc:creator>Da Scritch</dc:creator>
        <dc:subject>Webdev</dc:subject>
        
    <description>Quitte à changer le design du site, testons une des nouveautés offertes par les navigateurs en pointe. Elles sont belles mes colonnes ! Elles sont du dernier chic Gréco-Romain, mes colonnes ! Qui en veut des colonnes ?&lt;br /&gt;		&lt;span class="tags"&gt;&lt;br /&gt;&lt;a href="https://dascritch.net/category/Webdev"&gt;Webdev&lt;/a&gt; &lt;/span&gt;
	</description>
    <content:encoded>
		&lt;p&gt;Quitte à changer le design du site, testons une des nouveautés offertes par les navigateurs en pointe. Elles sont belles mes colonnes ! Elles sont du dernier chic Gréco-Romain, mes colonnes ! Qui en veut des colonnes ?&lt;br /&gt;&lt;span class="tags"&gt;&lt;br /&gt;
		&lt;a href="https://dascritch.net/category/Webdev"&gt;
			Webdev&lt;/a&gt;
				&lt;/span&gt;
		&lt;/p&gt;
		&lt;p&gt;
Comme vous avez pu le remarquer, &lt;a href=&quot;http://dascritch.net/blog.php/tag/cssr07&quot;&gt;le redesign de dascritch.net&lt;/a&gt; n'a pas consisté qu'en un bête changement de couleurs ou d'éléments de navigations. Aujourd'hui&amp;nbsp;: l'aménagement d'espace.
&lt;/p&gt;
&lt;p&gt;
Historiquement, les pages web sont écrites dans un langage de balise, appelé &lt;abbr title=&quot;Hypet Text Markup Language&quot;&gt;&lt;a href=&quot;http://dascritch.net/blog.php/tag/html&quot;&gt;HTML&lt;/a&gt;&lt;/abbr&gt;. Celui-ci dérive du &lt;abbr title=&quot;Standard Generalized Markup Language&quot;&gt;SGML&lt;/abbr&gt;, qui est en fait un système de &lt;abbr title=&quot;pré-mise en page&quot;&gt;PréAO&lt;/abbr&gt; comme Microsoft Word, T&lt;sub&gt;e&lt;/sub&gt;X et le &lt;abbr title=&quot;DeVice Independent formating&quot;&gt;DVI&lt;/abbr&gt;. De cet héritage, et avec l'arrivée des &lt;abbr title=&quot;Cascaded StyleSheets&quot;&gt;&lt;a href=&quot;http://dascritch.net/blog.php/tag/css&quot;&gt;CSS&lt;/a&gt;&lt;/abbr&gt;, la plupart des webdesigners ont inconsciemment retenu que la largeur de votre texte est considérée comme contrainte, mais que votre page s'allonge indéfiniment verticalement.&lt;br /&gt;
C'était sans compter sur l'arrivée des écrans larges dans la bureautique. Les ratios 16/9, 16/10 et autres “écrans cinémas” se sont popularisés par la lecture des DVD (ou des DivX, hein... soyons pas aveugles), et surtout l'impossibilité d'utiliser autrement Excel&lt;a class=&quot;up&quot; href=&quot;https://dascritch.net/post/2007/07/19/828-et-voici-les-colonnes#nb1&quot; name=&quot;in1&quot;&gt;[1]&lt;/a&gt; sur des tableaux très larges.
&lt;/p&gt;
&lt;p&gt;
Rien n'est plus agaçant que de lire des sites prévus pour des largeurs VGAesques&lt;a class=&quot;up&quot; href=&quot;https://dascritch.net/post/2007/07/19/828-et-voici-les-colonnes#nb2&quot; name=&quot;in2&quot;&gt;[2]&lt;/a&gt; à l'heure des écrans de 1300 pixels de large, en format cinémascope... La moitié de votre écran est occupé par du VIDE. Car on est arrivé à un paradoxe&amp;nbsp;: la plupart des sites web sont beaucoup plus long que large, alors que le rapport s'inverse pour les écrans.
&lt;/p&gt;
&lt;p&gt;
Voici donc ce que donne un design élastique (contraint horizontalement, ce que j'appelle “corset”), celui de mon ancien site. Notez le magnifique espace vide des deux côtés.
&lt;/p&gt;
&lt;p class=&quot;c&quot;&gt;
&lt;a href=&quot;https://dascritch.net/vrac/.blog2/webdev/707-csscolumns-1.png&quot; rel=&quot;lightbox[colonnes]&quot; title=&quot;Deux gros vides sur les côtés... Faut souffrir pour être belle.&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://dascritch.net/vrac/.blog2/webdev/.707-csscolumns-1_m.jpg&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
C'est ce qui a en partie motivé mon redesign de site&amp;nbsp;: j'ai décidé d'abandonner l'aspect “corset” du design élastique. Que diable&amp;nbsp;! Laissons le lecteur choisir la largeur qu'il veut&amp;nbsp;! Vive le design liquide&amp;nbsp;!
&lt;/p&gt;
&lt;p&gt;
Voici ce que donnait en design liquide la maquette de mon nouveau site (le texte est issu du même billet)&amp;nbsp;:
&lt;/p&gt;
&lt;p class=&quot;c&quot;&gt;
&lt;a href=&quot;https://dascritch.net/vrac/.blog2/webdev/707-csscolumns-3.png&quot; rel=&quot;lightbox[colonnes]&quot; title=&quot;Liquide, le texte remplit tout l'écran, voire surnage en haut&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://dascritch.net/vrac/.blog2/webdev/.707-csscolumns-3_m.jpg&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Rapidement, je fut confronté à un problème inhérent au design liquide&amp;nbsp;: selon l'étirement de la fenêtre du navigateur, les lignes de texte risquent d'atteindre des longueurs rendant leur lisibilité digne d'un marathon oculaire. Heureusement, en tant que lecteur très fervent des sites des développeurs des navigateurs, j'avais déjà apprécié &lt;a hreflang=&quot;en&quot; title=&quot;Gecko 1.8 For Web Developers: Columns (Robert O'Callahan, Mozilla hacker)&quot; href=&quot;http://weblogs.mozillazine.org/roc/archives/2005/03/gecko_18_for_we.html&quot;&gt;les tests de mise en colonne&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Dans les discussions en cours autour de la norme CSS&amp;nbsp;3 a été proposé le concept de la mise en colonne. Une idée que je trouve largement plus intéressante et utile que &lt;a hreflang=&quot;en&quot; title=&quot;possibilité pour un seul élément d'avoir plusieurs images en fond composité&quot; href=&quot;http://www.css3.info/preview/multiple-backgrounds/&quot;&gt;le multi-background&lt;/a&gt; ou &lt;a title=&quot;avoir un texte ou un bloc produisant une ombre sur le fond de la page&quot; hreflang=&quot;en&quot; href=&quot;http://www.css3.info/preview/text-shadow.html&quot;&gt;l'ombrage de texte&lt;/a&gt;, car celle-ci s'attaque directement à la lisibilité et à la mise-en-page, au lieu de se concentrer sur un aspect du décor. Sans toucher au &lt;a href=&quot;http://dascritch.net/blog.php/tag/html&quot;&gt;HTML&lt;/a&gt;, le navigateur décide tout seul quand les colonnes doivent apparaître et où les césures doivent être faites. Il s'agit encore d'un brouillon de norme, mais les développeurs en pointe l'ont déjà intégré dans leurs navigateurs.
&lt;/p&gt;
&lt;p class=&quot;c&quot;&gt;
&lt;a href=&quot;https://dascritch.net/vrac/.blog2/webdev/707-csscolumns-2.png&quot; rel=&quot;lightbox[colonnes]&quot; title=&quot;La mise en page actuelle, vue dans un navigateur moderne supportant les colonnes&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://dascritch.net/vrac/.blog2/webdev/.707-csscolumns-2_m.jpg&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Qu'elles sont pratiques ces colonnes&amp;nbsp;! Même primitives dans leur implémentation (nous n'avons pas encore le choix entre &lt;a href=&quot;http://patrick.lahaye.free.fr/r22.htm&quot;&gt;le style Dorique, Ionique ou Corinthienne&lt;/a&gt;), elles évitent de rendre la lecture essoufflante pour les muscles longitudinaux des globes oculaires, harassés par une suite de courses de fond 1500 pixels-haies, au point que le regard se perd dans des colonnes de une à deux lignes...
&lt;/p&gt;
&lt;p&gt;
J'avais le choix entre un nombre fixe de colonnes, ou un nombre variable. J'ai opté pour cette dernière possibilité, avec une largeur minimale, arbitrairement 540 pixels. Pourquoi 540px&amp;nbsp;? Tout simplement parce que c'était le gabarit largeur de mes articles dans mon précédent design, et la plus grande largeur des images incluses dans le texte de mes billets (je ne compte pas &lt;a href=&quot;http://dascritch.net/blog.php/post/2006/04/19/381-lightbox-v20-trop-joli&quot;&gt;les images &lt;em&gt;lightbox&lt;/em&gt;ées&lt;/a&gt;).&lt;br /&gt;
Étant donné que j'ai fixé la largeur de ma &lt;em class=&quot;aide&quot; title=&quot;colonne de navigation sur le côté droit&quot;&gt;sidebar&lt;/em&gt; à 220 pixels, la largeur minimale de mon site (pour laquelle il se comporte à nouveau comme design élastique) est de 760 pixels&lt;a class=&quot;up&quot; href=&quot;https://dascritch.net/post/2007/07/19/828-et-voici-les-colonnes#nb3&quot; name=&quot;in3&quot;&gt;[3]&lt;/a&gt;. Et la largeur minimale du &lt;em&gt;viewport&lt;/em&gt; où apparaissent les colonnes, de 220 (sidebar)+540×2(colonnes)+10=1310 pixels.
&lt;/p&gt;
&lt;p&gt;
Mais à quoi correspondent ces 10 pixels&amp;nbsp;? À l'espace inter-colonnes (en anglais&amp;nbsp;: &lt;em&gt;gap&lt;/em&gt;), actuellement vide, voire occupée par un trait vertical (en anglais&amp;nbsp;: &lt;em&gt;ruler&lt;/em&gt;) dans les navigateurs supportant cette fonction. Car il faut bien évidemment penser à séparer suffisamment les colonnes pour éviter que le texte ne se mélange. Or, et on sent que l'on est encore dans un brouillon de norme, tout le monde n'est pas encore exactement d'accord sur les comportement des règles entre colonnes.
&lt;/p&gt;
&lt;p&gt;
Si elles sont fichtrement bien pratique, ces colonnes ne sont pas encore la panacée. Parmi les inconvénients, je note&amp;nbsp;:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;L'impossibilité de faire couvrir plusieurs colonnes par un élément flottant&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;L'impossibilité de limiter la taille verticale au &lt;em&gt;viewport&lt;/em&gt;. Le lecteur doit remonter en haut de page après avoir atteint le bas de colonne&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;L'impossibilité d'aligner un texte verticalement par &lt;a href=&quot;http://dascritch.net/blog.php/tag/css&quot;&gt;CSS&lt;/a&gt;. Le seul moyen existant actuellement est de recourir aux tableaux, urk...&lt;/li&gt;
&lt;li&gt;Et les liquides étant incompressibles, le volume de texte reste constant, une très grande largeur réduit la longueur occupée, ce qui peut créer un vide en bas d'écran.&lt;/li&gt;
&lt;/ul&gt;
Je reste jaloux de ce que fait &lt;a hreflang=&quot;en&quot; href=&quot;http://iht.com/&quot;&gt;l'&lt;em&gt;International Herald Tribune&lt;/em&gt;&lt;/a&gt; sur ses articles de plusieurs pages &lt;a class=&quot;up&quot; href=&quot;https://dascritch.net/post/2007/07/19/828-et-voici-les-colonnes#nb4&quot; name=&quot;in4&quot;&gt;[4]&lt;/a&gt;, mais étant donné qu'on est dans de la &lt;a href=&quot;http://dascritch.net/blog.php/tag/dom&quot;&gt;manipulation DOM&lt;/a&gt; par &lt;a href=&quot;http://dascritch.net/blog.php/tag/javascript&quot;&gt;Javascript&lt;/a&gt; (&lt;a href=&quot;http://dascritch.net/blog.php/post/2007/07/05/818-javascript-comme-un-dialecte&quot;&gt;Ouïlle&amp;nbsp;!&lt;/a&gt;) et qu'en plus il faut prévoir les césures dans le HTML, on va s'en passer...
&lt;p&gt;
En attendant que ces propriétés soient enfin fixées, les navigateurs les ayant implémentées (Firefox version 1.5+ et &lt;a href=&quot;http://webkit.org/blog/?p=88&quot; hreflang=&quot;en&quot;&gt;Safari 3+&lt;/a&gt;) n'utilisent pas la syntaxe préconisée, mais préfixées par leur balisage “expérimental”&lt;a class=&quot;up&quot; href=&quot;https://dascritch.net/post/2007/07/19/828-et-voici-les-colonnes#nb5&quot; name=&quot;in5&quot;&gt;[5]&lt;/a&gt; . Donc toute propriété &lt;code&gt;column&lt;/code&gt; doit être répétée deux fois&amp;nbsp;: par &lt;code&gt;-moz-column&lt;/code&gt; et &lt;code&gt;-webkit-column&lt;/code&gt;. Et comme personne ne semble avoir implémenté le &lt;code&gt;page-break&lt;/code&gt;, &lt;a href=&quot;http://www.w3.org/TR/css3-multicol/#column5&quot; hreflang=&quot;en&quot;&gt;seule méthode CSS pour indiquer&lt;/a&gt; qu'un élément ne supporte pas d'être étalé entre plusieurs pages/colonnes, on a droit à quelques erreurs, surtout visibles dans les listes de billets.&lt;br /&gt;
Va falloir que je fasse du lobbying auprès de Daniel Glazman à ce sujet, puisqu'il fait partie du comité d'étude...
&lt;/p&gt;
&lt;p&gt;
En résumé, oui, les colonnes ça fait très prétentieux comme façade de votre site pavillonnaire, mais comme ça rend jaloux le voisin, moi je m'en prive pas.
&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;
Ces captures d'écrans n'auraient été possibles sans l'assistance technique de Vric et son fantastique écran 1600×1200. Ne reproduisez pas ces cascades chez vous si vous n'avez pas un écran 25”...
&lt;/p&gt;
&lt;p&gt;
Pour les webmestres qui ne jurent que par les maîtres : &lt;a hreflang=&quot;en&quot; href=&quot;http://www.alistapart.com/articles/css3multicolumn&quot;&gt;un article d'A List Apart&lt;/a&gt;, qui étonnement site exactement les mêmes références.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Notes de bas de page :&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;https://dascritch.net/post/2007/07/19/828-et-voici-les-colonnes#in1&quot; name=&quot;nb1&quot;&gt;&lt;strong&gt;NB 1&lt;/strong&gt; :&lt;/a&gt; Ouvrez votre tableur payant favori, faites de très larges colonnes, puis faites glisser l'ascenseur de défilement horizontal... À noter que le tableur d'OpenOffice dans sa version 2.0 a lui aussi adopté l'impossibilité de ne voir qu'une portion de colonne à gauche, rendant la navigation dans un grand tableur très pénible si votre écran fait une taille “raisonnable” pour des travaux de secrétariat.
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;https://dascritch.net/post/2007/07/19/828-et-voici-les-colonnes#in2&quot; name=&quot;nb2&quot;&gt;&lt;strong&gt;NB 2&lt;/strong&gt; :&lt;/a&gt; La norme d'affichage VGA a été créée en 1987. La Haute Résolution professionnelle de l'époque y autorisait un affichage de 640 pixels de large (comme le CGA, l'Atari ST et l'Amiga) pour 480 de haut, offrant enfin au PC des pixels carrés. Certains sites limitent encore leur largeur pour être intégralement affiché dans ces 640px. La plupart sont passés aux 800px voire au 1024, courant le risque d'avoir une barre de défilement horizontale sur des écrans de 800 pixels de large. Soit tout de même 1% des web-surfeurs, frange nettement plus significative que ceux qui vont sur les sites WAP si coûteux à développer.
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;https://dascritch.net/post/2007/07/19/828-et-voici-les-colonnes#in3&quot; name=&quot;nb3&quot;&gt;&lt;strong&gt;NB 3&lt;/strong&gt; :&lt;/a&gt; Soit la largeur d'un écran 800 par 600 pixels. Actuellement la plus petite taille significative dans mes stats de visite, mais surtout la résolution de mon écran de secours quand mon PC est squatté&amp;nbsp;!
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;https://dascritch.net/post/2007/07/19/828-et-voici-les-colonnes#in4&quot; name=&quot;nb4&quot;&gt;&lt;strong&gt;NB 4&lt;/strong&gt; :&lt;/a&gt; Cliquer sur un des articles de &lt;a hreflang=&quot;en&quot; href=&quot;http://iht.com/&quot;&gt;l'&lt;em&gt;International Herald Tribune&lt;/em&gt;&lt;/a&gt;, puis dans la boite de présentation, cliquer sur mode «3-Column Format».
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;https://dascritch.net/post/2007/07/19/828-et-voici-les-colonnes#in5&quot; name=&quot;nb5&quot;&gt;&lt;strong&gt;NB 5&lt;/strong&gt; :&lt;/a&gt; Notez que ces andouilles de Microsoft oublient de mettre un “&lt;code&gt;-&lt;/code&gt;” en préfixe de leur balises CSS “expérimentalement” propriétaires, commençant illico par “&lt;code&gt;mso-&lt;/code&gt;”. De toutes façons, on s'en fout, ils ont le CSS2 à apprendre avant de passer aux colonnes du CSS3.. Encore du &lt;em&gt;Microsoft-bashing&lt;/em&gt;, c'est le troisième dans ce billet... J'avoue que c'est pas très sain, mais depuis six mois, j'en bave tellement avec Internet Explorer que je n'ai pas trop envie d'être tendre.&lt;br /&gt;
IE7 ne connaît pas les colonnes. IE8 ne sera probablement pas CSS&amp;nbsp;3-&lt;em&gt;aware&lt;/em&gt;&amp;nbsp;; et étant donné le taux moyen de mise-à-jour des navigateurs Microsoft par leurs utilisateurs (comparé aux Maqueux et aux Firefoxistes), on aura très longtemps des &lt;abbr title=&quot;Explorer l'Internet selon MicroSoft&quot;&gt;MSIE&lt;/abbr&gt; aveugles aux colonnes.
&lt;/p&gt;</content:encoded>
    
    
    
      </item>
  
	<item>
		<title>Ooops ! I switched again...</title>
		<link>https://dascritch.net/post/2007/07/25/Ooops-I-switched-again</link>
		<guid isPermaLink="false">urn:md5:9487096bceb7cf8d20e4df68c26cd3ec</guid>
		<dc:date>2007-07-25T23:46:00+02:00</dc:date>

    <dc:creator>Da Scritch</dc:creator>
        <dc:subject>Webdev</dc:subject>
        
    <description>Et le serveur fut... déplacé !		&lt;span class="tags"&gt;&lt;br /&gt;&lt;a href="https://dascritch.net/category/Webdev"&gt;Webdev&lt;/a&gt; &lt;/span&gt;
	</description>
    <content:encoded>
		&lt;p&gt;Et le serveur fut... déplacé !&lt;span class="tags"&gt;&lt;br /&gt;
		&lt;a href="https://dascritch.net/category/Webdev"&gt;
			Webdev&lt;/a&gt;
				&lt;/span&gt;
		&lt;/p&gt;
		&lt;p&gt;Ayé...
&lt;/p&gt;
&lt;p&gt;Deux années de recherches, de code, de bidouillage intensifs...&lt;br /&gt;
Deux années de quadracapillicutation intensif, de report de bugs (normes mals implémentées), de noms d'oiseaux échangés sur les &lt;em class=&quot;aide&quot; title=&quot;pluriel du latin “forum”&quot;&gt;fora&lt;/em&gt; spécialisés...
&lt;/p&gt;
&lt;p&gt;
Aujourd'hui est un grand jour... de déménagement. Mon cœur a reçu sa première lettre chez ouam,&amp;nbsp;
mais c'est pas ça l'info principale de ce billet (eh... eeeuh ... si).&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;lightbox&quot; href=&quot;https://dascritch.net/vrac/.blog2/webdev/707-DC2-clafoutis-maori.jpg&quot; title=&quot;Powered with Dotclear generation 2&quot;&gt;&lt;img class=&quot;r&quot; alt=&quot;&quot; src=&quot;https://dascritch.net/vrac/.blog2/webdev/.707-DC2-clafoutis-maori_t.jpg&quot; /&gt;&lt;/a&gt;
J'ai le plaisir de vous annoncer par la présente que dascritch.net, mon site personnel, vient de passer à sa 6ème incarnation.
&lt;/p&gt;
&lt;p&gt;
Parmi les nouveautés visibles pour vous :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;un design mieux contrasté&lt;/li&gt;
&lt;li&gt;une mise en page liquide&lt;/li&gt;
&lt;li&gt;la taille des écritures zoomable à souhait (avec la barre du haut)&lt;/li&gt;
&lt;li&gt;des colonnes surgissantes &lt;em&gt;(where available)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;la page de &lt;a href=&quot;https://dascritch.net/radio.php&quot;&gt;l'émission &lt;em&gt;Supplément Week-End&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;l'inclusion de mes anciens sites (ceux d'&lt;a href=&quot;https://dascritch.net/archiveweb.php/indigest/&quot;&gt;&lt;em&gt;In-Digest&lt;/em&gt;&lt;/a&gt; et de &lt;a href=&quot;https://dascritch.net/archiveweb.php/zero/&quot;&gt;&lt;em&gt;Zérø&lt;/em&gt;&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;une &lt;a hreflang=&quot;fr&quot; href=&quot;https://dascritch.net/like/Britney_Spears&quot;&gt;page d'erreur&lt;/a&gt; plus explicite&lt;/li&gt;
&lt;li&gt;&lt;a hreflang=&quot;fr&quot; href=&quot;https://dascritch.net/search.php?cx=006494614859442274176%3Ap-l5af2gryu&amp;amp;cof=FORID%3A11&amp;amp;q=google#820&quot;&gt;un moteur de recherche&lt;/a&gt; âchement mieux (Google n'a qu'à bien se tenir)&lt;/li&gt;
&lt;li&gt;des éléments dynamiques (css, javascript, dom, touça...)&lt;/li&gt;
&lt;li&gt;mes suggestions web du jour dans mon rss&lt;/li&gt;
&lt;/ul&gt;
Et pour moi :&lt;ul&gt;
&lt;li&gt;du &lt;a hreflang=&quot;en&quot; href=&quot;http://www.cryptonomicon.com/&quot;&gt;code encore mieux fait&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;des barrières &lt;em&gt;antispam&lt;/em&gt; &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.yaronet.com/posts.php?sl=&amp;amp;s=101015&quot;&gt;gratinées&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;un &lt;em&gt;backend&lt;/em&gt; &lt;a hreflang=&quot;fr&quot; href=&quot;http://lesvieuxzincs.free.fr/comptoir_de_bar_1920.htm&quot;&gt;au top de la technologie moderne&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;un vrai &lt;a hreflang=&quot;fr&quot; href=&quot;http://villemin.gerard.free.fr/Wwwgvmm/Probabil/PileFace.htm&quot;&gt;outil de statistique&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;des années d'expériences &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.nutella.fr/&quot;&gt;qui feront toujours la différence&lt;/a&gt;...&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Normalement, toutes les anciennes adresses (même &lt;a href=&quot;https://dascritch.net/statique.php/aide/rss&quot;&gt;le flux rss/podcast&lt;/a&gt;) ne bougent pas. N'empêche que les transitions de serveur furent très chaotiques ce soir (les visiteurs ont parfois droit à l'ancien design, mais avec le contenu neuf). Pour les amateurs de technique, surveillez bien &lt;a hreflang=&quot;fr&quot; href=&quot;https://dascritch.net/blog.php/category/Webdev&quot;&gt;la catégorie Webdev&lt;/a&gt; et &lt;a href=&quot;http://dascritch.net/blog.php/tag/cssr07&quot;&gt;le tag CSSR&amp;nbsp;07&lt;/a&gt;, j'expliquerais les points qui m'ont tourmenté ces deux dernières années. Ça remplira ce blog en attendant la rentrée littéraire et passionnera mes futurs employeurs. Bon, reste à enlever les
échafaudages et à préparer le vernissage...
&lt;/p&gt;
&lt;p&gt;
Vous pouvez laissez en commentaires vos remarques, indications de bugs, suggestions et autres applaudissements...
&lt;/p&gt;
&lt;p&gt;
Ooouuuuuuuuuuuééééééééééé !!
&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;
Mercis doivent aller aux équipes Mozilla/(WebDevTB+Firebug), JQuery, MooTools, &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.kozlika.org/kozeries/post/2007/07/25/Aucune-negociation-possible?pub=1#c93703&quot;&gt;DcTeam()&lt;/a&gt;, Quanta...&lt;br /&gt;
Et à mes amis &lt;a href=&quot;http://ngxstudio.com&quot;&gt;Xylpho&lt;/a&gt;, &lt;a href=&quot;http://vric.free.fr/&quot;&gt;Vric&lt;/a&gt;, &lt;a href=&quot;http://zeubeubeu.net/&quot;&gt;ZeuBeuBeu&lt;/a&gt;, &lt;a href=&quot;http://callmepep.org/&quot;&gt;Pep&lt;/a&gt;, &lt;a href=&quot;http://champdepub.com/&quot;&gt;ChampDePub&lt;/a&gt;, &lt;a href=&quot;http://sveetch.net/&quot;&gt;Sveetch&lt;/a&gt;, &lt;a href=&quot;http://zorel.org/&quot;&gt;Zorel&lt;/a&gt;,...
&lt;/p&gt;
&lt;p&gt;
... sans oublier l'&lt;a href=&quot;http://graphein.wordpress.com/&quot;&gt;Enflammée de mon cœur&lt;/a&gt;
&lt;/p&gt;</content:encoded>
    
    
    
      </item>
  
	<item>
		<title>La fête à la nationale</title>
		<link>https://dascritch.net/post/2007/07/17/824-la-fete-a-la-nationale</link>
		<guid isPermaLink="false">urn:md5:c42799f4512c86c58eb8cca209faec64</guid>
		<dc:date>2007-07-17T16:46:00+00:00</dc:date>

    <dc:creator>Da Scritch</dc:creator>
        <dc:subject>Ma vie est une sitcom</dc:subject>
        
    <description>J'aurais bien aimé écrire que je suis parti en vacances, mais même pas...		&lt;span class="tags"&gt;&lt;br /&gt;&lt;a href="https://dascritch.net/category/Ma-vie-est-une-sitcom"&gt;Ma vie est une sitcom&lt;/a&gt; &lt;/span&gt;
	</description>
    <content:encoded>
		&lt;p&gt;J'aurais bien aimé écrire que je suis parti en vacances, mais même pas...&lt;span class="tags"&gt;&lt;br /&gt;
		&lt;a href="https://dascritch.net/category/Ma-vie-est-une-sitcom"&gt;
			Ma vie est une sitcom&lt;/a&gt;
				&lt;/span&gt;
		&lt;/p&gt;
		&lt;p&gt;
Le chantier qu'on devait faire avec un copain a pris du retard, ma mère a débarqué, mon pc se fait squatter, le pique-nique du 14 s'est fait mode Sarkozy (pas d'alcool), ma mère est repartie, je croule sous les retards sur &lt;a href=&quot;http://dascritch.net/blog.php/tag/cssr07&quot;&gt;mon nouveau site &lt;code&gt;dascritch.net&lt;/code&gt;&lt;/a&gt;, et franchement, j'en suis un peu à péter les plombs sur des problèmes de... hem... je me demande si c'est vraiment utile que je vous le dise,... “&lt;cite&gt;manipulations &lt;a href=&quot;http://dascritch.net/blog.php/tag/javascript&quot;&gt;javascript&lt;/a&gt; &lt;a href=&quot;http://dascritch.net/blog.php/tag/dom&quot;&gt;DOM&lt;/a&gt; peu codex en toolkits&lt;/cite&gt;” (vous êtes bien avancés, là).
&lt;/p&gt;&lt;p&gt;
Donc pas eu émission Samedi, pas eu de billet depuis près d'une semaine, mais pas de panique, je suis bien resté chez moi à préférer un radieux bronzage à la chaude et douce lumière &lt;strike&gt;de mon écran lcd&lt;/strike&gt; d'un tube cathodique par rapport aux rayons agressifs du soleil qui veut notre mort à tous (selon les derniers rapports, la couche d'ozone n'est pas encore correctement patchée).
&lt;/p&gt;&lt;p&gt;
J'en ai dépoussiéré mes pc &lt;a href=&quot;https://dascritch.net/post/2007/07/17/824-la-fete-a-la-nationale#nb&quot; name=&quot;it&quot; class=&quot;up&quot;&gt;[PS]&lt;/a&gt;...&lt;br /&gt;
Si ça continue comme ça, je vais finir par le faire, &lt;a href=&quot;http://dascritch.net/blog.php/2007/07/05/818-javascript-comme-un-dialecte&quot;&gt;ce ciment...&lt;/a&gt;
&lt;/p&gt;&lt;hr /&gt;
&lt;p&gt;
&lt;a href=&quot;https://dascritch.net/post/2007/07/17/824-la-fete-a-la-nationale#it&quot; name=&quot;nb&quot;&gt;&lt;b&gt;[PS]&lt;/b&gt;&lt;/a&gt; : Pensez à le faire avant qu'il fasse vraiment chaud... C'est que ça supporte mal les canicules, nos pétoires.
&lt;/p&gt;</content:encoded>
    
    
    
      </item>
  
	<item>
		<title>Javascript comme un dialecte</title>
		<link>https://dascritch.net/post/2007/07/05/818-javascript-comme-un-dialecte</link>
		<guid isPermaLink="false">urn:md5:77a9513d929a3a9eaaad1c088000c99f</guid>
		<dc:date>2007-07-05T10:23:00+00:00</dc:date>

    <dc:creator>Da Scritch</dc:creator>
        <dc:subject>Webdev</dc:subject>
        
    <description>Où il est question de la différence fondamentale entre le Bescherelle nouvelle édition et la collection complète des petits Littrés des langues régionales.		&lt;span class="tags"&gt;&lt;br /&gt;&lt;a href="https://dascritch.net/category/Webdev"&gt;Webdev&lt;/a&gt; &lt;/span&gt;
	</description>
    <content:encoded>
		&lt;p&gt;Où il est question de la différence fondamentale entre le Bescherelle nouvelle édition et la collection complète des petits Littrés des langues régionales.&lt;span class="tags"&gt;&lt;br /&gt;
		&lt;a href="https://dascritch.net/category/Webdev"&gt;
			Webdev&lt;/a&gt;
				&lt;/span&gt;
		&lt;/p&gt;
		&lt;p&gt;
J'ai lu hier un article du blog de John Resig, &lt;a hreflang=&quot;en,xx-g33k&quot; href=&quot;http://ejohn.org/blog/javascript-as-a-language/&quot;&gt;«&amp;nbsp;&lt;strong&gt;Javascript as a language&lt;/strong&gt;&amp;nbsp;»&lt;/a&gt;. J'étais en plein dans des soucis de &lt;a href=&quot;http://dascritch.net/blog.php/tag/javascript&quot;&gt;code Javacript&lt;/a&gt; sur &lt;a href=&quot;http://dascritch.net/blog.php/tag/cssr07&quot;&gt;la nouvelle version de dascritch.net&lt;/a&gt;, justement...
&lt;/p&gt;
&lt;p&gt;
Alors oui, Javascript 2 amène des nouveautés alléchantes, notamment sur les boucles itératives, ou encore le &lt;abbr title=&quot;Just In Time&quot;&gt;JIT&lt;/abbr&gt; (la compilation à la volée) qui va permettre d'accélérer les applications web... mais JS2 n'est implémenté que dans Firefox...3.&lt;br /&gt;
Seulement, dans son article, John Resig ne parle que des fonctions de base de Javascript, en occultant ce qui fait (à la louche) 60% de son usage actuel&amp;nbsp;: La manipulation d'un &lt;a href=&quot;http://dascritch.net/blog.php/tag/dom&quot;&gt;arbre DOM&lt;/a&gt; d'un &lt;a href=&quot;http://dascritch.net/blog.php/tag/html&quot;&gt;document HTML&lt;/a&gt; pour le rendre “dynamique”, comme les applications AJAX (exemple ultime&amp;nbsp;: Gmail) ou les XML enrichi (Firefox, Thunderbird,... ont leur interface en XML/XUL qui est programmée en javascript). Et c'est là que le bât blesse&amp;nbsp;: là, rien n'est standard.
&lt;/p&gt;
&lt;p&gt;
En fait, il y a tellement d'interprétations différentes du Javascript d'un &lt;a href=&quot;http://dascritch.net/blog.php/tag/html&quot;&gt;arbre DOM&lt;/a&gt; qu'aujourd'hui je peux certifier ceci&amp;nbsp;: Le Javascript est une collection de dialectes comme le fut à son époque de Basic. Et Microsoft dans les deux cas n'avait pas arrangé la situation.
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://ejohn.org/&quot;&gt;John Resig&lt;/a&gt; est très actif dans l'intégration de Javascript 2 dans Mozilla (Firefox) et l'auteur de la bibliothèque &lt;a href=&quot;http://jquery.com/&quot;&gt;Jquery.js&lt;/a&gt;&amp;nbsp;; il a beau être une pointure dans le domaine mais son enthousiasme ne peut nier la réalité, coder du Javascript reste un immonde foutoir. Firefox est le navigateur qui a le meilleur support Javascript et DOM, mais il est vrai que &lt;a href=&quot;http://fr.wikipedia.org/wiki/Brendan_Eich&quot;&gt;quand on a le créateur dans ses rangs&lt;/a&gt;, on peut difficilement être en-deça. &lt;br /&gt;
Safari ne peut en dire autant (quoique les bétas de la version 3 semblent enfin prometteurs), et à priori en codant dans KHTML, on est à 85% compatible à coup de sueurs froides.&lt;br /&gt;
Mais pour mettre à rude épreuve vos nerfs, MSIE est le pire de tous.
&lt;/p&gt;
&lt;p&gt;
Par exemple, soit dans votre HTML une &lt;code&gt;&amp;lt;balise title=&quot;&quot; /&amp;gt;&lt;/code&gt;, que vous associez en javascript à votre variable &lt;code&gt;balise&lt;/code&gt; . Si vous appelez &lt;code&gt;balise.title&lt;/code&gt;, vous vous attendez bien sûr que les navigateurs web répondent logiquement une chaîne de caractère vide. &lt;br /&gt;
Pourtant, si vous mettez &lt;code&gt;if (balise.title=='')&lt;/code&gt; , la conditionnelle sera fausse dans MSIE. Car cet abruti vous dira que &lt;code&gt;balise.title=='null'&lt;/code&gt;&amp;nbsp;! Au lieu de renvoyer une chaîne vide, cet incapable crée une chaîne non-vide pour dire qu'elle est vide. Résultat&amp;nbsp;: pour faire proprement votre test, il faudra ruser avec le support de MSIE d'une fonction proprio, par exemple &lt;code&gt;document.all&lt;/code&gt;&amp;nbsp;:&lt;br /&gt;
&lt;code&gt;if ((balise.title=='')||((balise.title=='null')&amp;amp;&amp;amp;(document.all)))&lt;/code&gt;&lt;br /&gt;
Je ne veux pas persifler, mais on a quand même fait mieux comme langage de programmation pour tester si une chaine de caractère est &lt;em&gt;vide&lt;/em&gt;.
&lt;/p&gt;
&lt;p&gt;
Maintenant, supposons que vous voulez récupérer le texte dans &lt;code&gt;&amp;lt;balise&amp;gt;texte &amp;lt;em&amp;gt;embarqué&amp;lt;/em&amp;gt;&amp;lt;/balise&amp;gt;&lt;/code&gt; sans le balisage. Vous avez la possibilité de récupérer comme suit (cliquez pour tester)&amp;nbsp;:&lt;span style=&quot;visibility: hidden; display: none;&quot; id=&quot;demojs&quot;&gt;&lt;code&gt;texte &lt;em&gt;embarqué&lt;/em&gt;&lt;/code&gt;&lt;/span&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
balise=document.getElementById('demojs').getElementsByTagName('code')[0];
&lt;/script&gt;
&lt;table class=&quot;datas&quot;&gt;
&lt;thead&gt;&lt;tr&gt;&lt;td&gt;fonction suffixiale javascript&lt;/td&gt;&lt;td&gt;résultat escompté&lt;/td&gt;&lt;td&gt;navigateurs supportés&lt;/td&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;javascript:alert(balise.innerHTML);&quot;&gt;&lt;code&gt;balise.innerHTML&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&quot;texte &amp;lt;em&amp;gt;embarqué&amp;lt;/em&amp;gt;&quot;&lt;/td&gt;&lt;td&gt;Compatible chez tout le monde, mais hélas, comporte les balises HTML embarquées&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;javascript:alert(balise.innerText);&quot;&gt;&lt;code&gt;balise.innerText&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&quot;texte embarqué&quot;&lt;/td&gt;&lt;td&gt;MSIE, Konqueror, Safari, mais pas Firefox&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;javascript:alert(balise.outerHTML);&quot;&gt;&lt;code&gt;balise.outerHTML&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&quot;&amp;lt;balise&amp;gt;texte &amp;lt;em&amp;gt;embarqué&amp;lt;/em&amp;gt;&amp;lt;/balise&amp;gt;&quot;&lt;/td&gt;&lt;td&gt;Exclusivement MSIE, avec tout le balisage dont on veux pas&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;javascript:alert(balise.textContent);&quot;&gt;&lt;code&gt;balise.textContent&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&quot;texte embarqué&quot;&lt;/td&gt;&lt;td&gt;Uniquement Firefox, mais Safari 3 va enfin le comprendre&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;
Donc si vous voulez faire un code “efficace” marchant “à coup sûr”, il va falloir utiliser &lt;code&gt;innerHTML&lt;/code&gt;, mais avec une regexp («&amp;nbsp;&lt;cite&gt;mmmmhhh les expressions régulières... mmmhhhh&lt;/cite&gt;&amp;nbsp;» comme dirait De Funès). Une soupe à la grimace genre ça (je garanti pas que ça marche... ah ben si, cliquez)&amp;nbsp;: &lt;a href=&quot;javascript:alert(balise.innerHTML.replace(/&lt;[^&lt;&gt;]+&gt;/g,''));&quot;&gt;&lt;code&gt;balise.innerHTML.replace(/&amp;lt;[^&amp;lt;&amp;gt;]+&amp;gt;/g,&quot;&quot;)&lt;/code&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Vous croyez en avoir fini&amp;nbsp;? Reste à trouver les versions de MSIE... car les comportements changent entre 5.5, 6, 6SP2 et 7&amp;nbsp;!&lt;br /&gt;
Si un &lt;a href=&quot;javascript:alert(document.all?true:false);&quot;&gt;&lt;code&gt;if (document.all)&lt;/code&gt;&lt;/a&gt; permet de démasquer MSIE et sa bande, le &lt;em&gt;User Agent sniffing&lt;/em&gt; ne marche pas sur des faux navigateurs (comme Avant Browser, PhaseOut ou Maxthon, &lt;a href=&quot;http://www.usenet-fr.net/fur/www/liste-browsers.html&quot;&gt;une bonne liste ici&lt;/a&gt;). Impossible d'être exactement sûr de la version du moteur MSIE utilisée sans un commentaire conditionnel, genre &lt;code&gt;&amp;lt;!--[if lt IE 7] --&amp;gt;&lt;/code&gt; niché dans le HTML, rendant illusoire l'idée de dissocier le code de la structure comme on a pu le faire avec le style.
&lt;/p&gt;
&lt;p&gt;
Pire que tout, MSIE 7 dans ses toutes premières bétas montrait des comportements très différents dans le Javascript et les manips DOM. Vous développez votre site aux petits oignons, mixant PHP5, sHTML, CSS, règles Apache, xHTML, DOM et Javascript. Votre site se charge, les Javascripts de votre page sont quasi complètement interprétées... jusqu'à ce qu'une fenêtre d'alerte arrive&amp;nbsp;: &lt;cite&gt;«&amp;nbsp;Internet Explorer ne peut afficher le site http://...&amp;nbsp;»&lt;/cite&gt;. Cliquer dessus efface votre page et mène à une page d'erreur.
&lt;/p&gt;
&lt;p&gt;
Coup de poignard dans le dos, ajoutant l'insulte à l'injure, cette page indique vaguement que MSIE n'arrive pas à contacter le site, ce qui est totalement faux. &lt;a href=&quot;http://support.microsoft.com/kb/926431/fr&quot;&gt;La réponse de la base d'information MS est risible&lt;/a&gt;.&lt;br /&gt;
Cette manie d'afficher un message bloquant (pour débugger) et mensonger (sur votre travail) a été backporté dans les MSIE6 SP2. super agréable.
&lt;/p&gt;
&lt;p&gt;
Un des exemples de comportement changeant radicalement, MSIE considère désormais que le SEUL endroit où l'on peut insérer dynamique une librairie javascript c'est dans le &amp;lt;HEAD&amp;gt; de votre HTML. C'est à la fois logique, mais pas trop. Ce souci sans aucune documentation existante m'a empêché d'avancer pendant un an,  surtout sans MS-Windows sous la main.
&lt;/p&gt;
&lt;p&gt;
Et là, j'ai encore un autre problème avec exactement les mes symptômes. Je peux délayer mes problèmes de programmation dans Dotclear2, mais que mon site ne soit pas lisible par 70% du marché alors que je cherche un emploi, ça non. Strictement impossible. Cela m'a tellement gâché la journée que je me suis passé les nerfs en ré-installant l'interphone. Si ça continue, je vais faire du ciment d'ici ce soir.
&lt;/p&gt;
&lt;p&gt;
Pour en revenir à John Resig, il a presque raison. Mais hélas, en l'absence de &lt;a href=&quot;http://www.w3.org/DOM/&quot;&gt;standard DOM parfaitement appliqué&lt;/a&gt;, tout comme le CSS2 et les extensions Microsoft, on est actuellement dans la même situation que le Basic du début des années 1980s&amp;nbsp;: la grammaire est identique pour tous, mais les mots varient suivant les dialectes.&lt;br /&gt;
Et rien que pour ça, j'en viens à regretter quand je faisais des pages WAP1.1, c'est dire&amp;nbsp;!
&lt;/p&gt;</content:encoded>
    
    
    
      </item>
  
	<item>
		<title>Regrets éternels HTML 2.0</title>
		<link>https://dascritch.net/post/2007/06/27/810-regrets-eternels-html-2-0</link>
		<guid isPermaLink="false">urn:md5:68fb26802eacf029e94e11e15b8b92a6</guid>
		<dc:date>2007-06-27T12:22:00+00:00</dc:date>

    <dc:creator>Da Scritch</dc:creator>
        <dc:subject>Webdev</dc:subject>
        
    <description>Les bonnes habitudes de code sont pour la vie.		&lt;span class="tags"&gt;&lt;br /&gt;&lt;a href="https://dascritch.net/category/Webdev"&gt;Webdev&lt;/a&gt; &lt;/span&gt;
	</description>
    <content:encoded>
		&lt;p&gt;Les bonnes habitudes de code sont pour la vie.&lt;span class="tags"&gt;&lt;br /&gt;
		&lt;a href="https://dascritch.net/category/Webdev"&gt;
			Webdev&lt;/a&gt;
				&lt;/span&gt;
		&lt;/p&gt;
		&lt;p&gt;Il fut un temps où tous les navigateurs utilisaient par défaut &lt;span style=&quot;font-face:times, sans serif&quot;&gt;la police Times&lt;/span&gt;. Je parle d'un temps que les moins de 20 ans ne peuvent pas connaître. Donc rituellement, toutes les pages voulant être plus lisibles, agréables et accueillantes commençaient invariablement leur &lt;code&gt;&amp;lt;BOD&lt;/code&gt;ies par &lt;code&gt;&amp;lt;FONT FACE=&quot;Helvetica,Arial&quot;&amp;gt;&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;Et là, vous me direz «&amp;nbsp;&lt;cite&gt;Hou&amp;nbsp;!&lt;/cite&gt;&amp;nbsp;» dans une longue exclamation sonore. Ce à quoi je m'insurgerai en hurlant «&amp;nbsp;&lt;cite&gt;Que celui qui n'a jamais pissé du code mal fagotté comme un camionneur bourré me jette son pot de chambre&lt;/cite&gt;&amp;nbsp;». À cette heure, le seul qui peut me pisser dessus, c'est bien le petit Jésus.&lt;/p&gt;

&lt;p&gt;Oui, j'avoue, j'ai pêché, mon code forniquait avec ces pratiques impies. Et heureusement que j'y mettais les guillemets... mais je fermais pas cette prime balise... Pourquoi fermer la &lt;code&gt;&amp;lt;FONT&amp;gt;&lt;/code&gt; initiatrice&amp;nbsp;? À cette héroïque époque, vous fermiez les balises &lt;code&gt;&amp;lt;P&amp;gt;&lt;/code&gt;, vous&amp;nbsp;?&lt;br /&gt;
Résultat, pour un site compilant tous mes travaux, il faut que je refiltre encore mes pages pour les supprimer&amp;nbsp;: Internet Explorer, dans la logique de l'époque, applique le style à tout le monde.&lt;/p&gt;

&lt;p&gt;Car à ce moment-là où les hommes étaient des hommes et les langages balisés s'écrivaient à la main avec des enluminures (le plaisir du RTF et du TeX artisanal), les canevas et mises-en-pages se faisaient de grandes &lt;code&gt;&amp;lt;TABLE&amp;gt;&lt;/code&gt; où festoyaient &lt;code&gt;&amp;lt;TR&amp;gt;&lt;/code&gt;s et &lt;code&gt;&amp;lt;TD&amp;gt;&lt;/code&gt;s dans un gigantesque banquet partouzard, il fallait définir les fond par des &lt;code&gt;BGCOLOR=&lt;/code&gt;, voire un &lt;code&gt;BACKGROUND= &lt;/code&gt;pour les grandes occasions, chaque changement de couleur par un &lt;code&gt;&amp;lt;FONT COLOR=&lt;/code&gt; ... On changeait le bord des images embarquées dans un lien par un &lt;code&gt;BORDER=&lt;/code&gt; tout en définissant systématiquement leur &lt;code&gt;WIDTH=&lt;/code&gt; et leur &lt;code&gt;HEIGHT=&lt;/code&gt; ... nos débits minitéliques nous faisait même fractionner les images dans des tableaux. Voire même les pages avec des &lt;code&gt;FRAMESET&lt;/code&gt; car à cette époque, point de PHP pour faciliter son boulot. Tout ce faisait au TextEditor, à la pogne, sans coloration syntaxique, sur un Amiga et fallait que le site tienne sur une disquette de 720Ko.&lt;/p&gt;

&lt;p&gt;Et maintenant&amp;nbsp;? Je m'en repends de mes pêchés originels de larmes de crocodiles en travaillant comme un bénédictin. J'essaie d'adapter mes anciens sites du millénaire passé pour qu'ils soient intégrés dans le nouveau. Leur style inséré dans celui de la navigation de mon nouveau design... Plus d'une centaine de pages à ré-adapter, nettoyer, rebaliser, relinker en tous sens, à grands renforts d'expressions régulières, d'éditeur et d'un peu de conversion à la volée (mais pas trop, vaut mieux tout effectuer à l'avance). Et toujours reprendre son courage à deux mains, parce qu'ils faut encore reprendre tous les sources pour corriger une inconsistance. Qu'à l'époque était le principe même d'écriture pour le web. Pauvre pêcheurs que nous étions.&lt;/p&gt;


&lt;p&gt;Tiens, un exemple d'inconsistance&amp;nbsp;: On trouvait normal que nos sites fassent des liens dans des ancres de page commençant par &lt;code&gt;&amp;lt;A NAME=&lt;/code&gt; ... mais ces ancres ne se terminaient &lt;strong&gt;jamais&lt;/strong&gt; pas un &lt;code&gt;&amp;lt;/A&amp;gt;&lt;/code&gt; . Alors pour aller vite j'ai tenté de faire des balises autofermantes, genre &lt;code&gt;&amp;lt;A NAME=&quot;lien&quot; /&amp;gt;&lt;/code&gt;... ben non, ça marche pas, c'est le chaos total. Les navigateurs placeront à leur guise un &lt;code&gt;&amp;lt;/A&amp;gt;&lt;/code&gt; fermant où ils veulent. Il a fallut remodifier encore chaque structure, en utilisant des dénominations plus modernes comme &lt;code&gt;&amp;lt;P ID=&lt;/code&gt;...&lt;/p&gt;


&lt;p&gt;Vous croyez que ces pratiques barbares d'un autre âge ont disparues&amp;nbsp;? Que nenni&amp;nbsp;! &lt;a rel=&quot;nofollow&quot; href=&quot;http://www.viadeo.com/recherche/profil/?memberId=0022dv3qa160ll2n&quot;&gt;Un “entrepreneur”&lt;/a&gt; a usurpé le nom d'&lt;a href=&quot;http://openweb.eu.org/&quot;&gt;&lt;b&gt;OpenWeb&lt;/b&gt;, célèbre groupe d'étude sur la conformance des sites web&lt;/a&gt;, tout en codant &lt;a href=&quot;http://openweb.fr/&quot; rel=&quot;nofollow&quot;&gt;son “site web institutionnel” avec des tableaux comme des gorets et avec une navigation en flash&lt;/a&gt;... ben... j'hurle... de rire en avance en pensant au pauvre hère qui va devoir tout remettre ça d'équerre...&lt;br /&gt;
10 ans de retard sur la technologie...&lt;br /&gt;
Une très bonne preuve de &lt;i&gt;savoir-faire&lt;/i&gt; en 2.0 ... HTML 2.0&lt;/p&gt;

&lt;p&gt;Très chers lecteurs, &lt;a href=&quot;http://xaviermd.free.fr/indigest/&quot;&gt;en cliquant sur ce lien&lt;/a&gt;, tu pourras admirer ma préhistoire du web (on savait pas encore vraiment écrire en HTML, moi je faisais juste de la radio). Si tu es &lt;a href=&quot;http://dascritch.net/archiveweb.php/indigest/index.html&quot;&gt;automatiquement redirigé sur dascritch.net&lt;/a&gt;, soit gentil... tente pas de faire valider la page, ça ne marchera pas.&lt;/p&gt;
&lt;p&gt;
&lt;code&gt;&amp;lt;/AMEN&amp;gt;&lt;/code&gt;
&lt;/p&gt;</content:encoded>
    
    
    
      </item>
  
	<item>
		<title>Question de commentaire</title>
		<link>https://dascritch.net/post/2006/04/27/393-question-de-commentaire</link>
		<guid isPermaLink="false">urn:md5:56e0d265961f9b9bde1f760b35b79b75</guid>
		<dc:date>2006-04-27T22:09:00+00:00</dc:date>

    <dc:creator>Da Scritch</dc:creator>
        <dc:subject>Webdev</dc:subject>
        
    <description>Teasing ! Et désormais, mes commentaires ne se cachent plus.		&lt;span class="tags"&gt;&lt;br /&gt;&lt;a href="https://dascritch.net/category/Webdev"&gt;Webdev&lt;/a&gt; &lt;/span&gt;
	</description>
    <content:encoded>
		&lt;p&gt;Teasing ! Et désormais, mes commentaires ne se cachent plus.&lt;span class="tags"&gt;&lt;br /&gt;
		&lt;a href="https://dascritch.net/category/Webdev"&gt;
			Webdev&lt;/a&gt;
				&lt;/span&gt;
		&lt;/p&gt;
		&lt;p&gt;
Vous l'avez remarqué si vous me lisez ailleurs que sur &lt;a href=&quot;http://dascritch.net/blog.php/2006/04/27/393-question-de-commentaire&quot;&gt;le site web lui-même&lt;/a&gt;, depuis (tôt) ce matin, &lt;a href=&quot;http://dascritch.net/blog.php/2006/04/27/393-question-de-commentaire#co&quot;&gt;les commentaires&lt;/a&gt; ne sont plus masqués par défaut. Fallait savoir qu'il faut cliquer pour afficher le formulaire. L'idée de base, c'était de cacher dynamiquement le superflu (j'en parlerais prochainement car la technique y est intéressante). Une fausse bonne idée, car ceux qui survolent mon site ne voient jamais ces fonctions. Donc finalement, je le retire.
&lt;/p&gt;&lt;p&gt;
En fait, c'est le fruit d'une longue et intéressante réflexion de &lt;a href=&quot;http://vric.free.fr/&quot;&gt;Vric&lt;/a&gt; (très bon pote qui officie actuellement sur &lt;a href=&quot;http://cuk.ch&quot;&gt;cuk.ch&lt;/a&gt;), sur comment les commentaires doivent être architecturés. Car pour ça, non seulement vaut mieux avoir un &lt;i class=&quot;aide&quot; title=&quot;utilisateur très confirmé&quot;&gt;power-user&lt;/i&gt; qui a bien compris des notions de base d'ergonomie, mais si en plus il est architecte, là, on s'incline avec respect... 
&lt;/p&gt;&lt;p&gt;
En fait, cela fait parti d'un très vaste mail sur l'ensemble de l'ergonomie du prochain design de son site perso. Paraît que l'actuel est un poil trop bleu ^o^, et puis le fait qu'il soit en largeur fixe, donc même pas d'un &lt;a href=&quot;http://pompage.net/pompe/designelastique/&quot; hreflang=&quot;fr&quot;&gt;design élastique&lt;/a&gt; ni même &lt;a href=&quot;http://www.maxdesign.com.au/presentation/liquid/&quot; hreflang=&quot;en&quot;&gt;liquide&lt;/a&gt; n'est pas agréable sur les très grands écrans... Mais bon, place à la voix du Maître, le mail est particulièrement long, et concerne des détails du futur design qu'il a vu mais que je ne veux pas dévoiler trop tôt. Néanmoins, ses remarques sur le formulaire de commentaire est particulièrement utile, et pas qu'à moi&amp;nbsp;:
&lt;/p&gt;&lt;p&gt;
&lt;dl class=&quot;mail&quot;&gt;
&lt;dt&gt;
De : Vric
&lt;/dt&gt;&lt;dd&gt;
&lt;p&gt;
Si je n'avais pas vu la zone concernée affichée par défaut dans iCab, j'aurais cru à un bug de design au lieu de deviner qu'il faut cliquer sur “Ajouter un commentaire”, car ça ne ressemble pas à un bouton mais au titre de l'article, qui lui n'est pas un bouton.
&lt;/p&gt;&lt;p&gt;
Soit on affiche par défaut, soit on met un bouton. Mais un bouton doit ressembler à un bouton, ou se trouver au même endroit que d'autres contrôles similaires, ou se repérer au 1er coup d'œil.
&lt;/p&gt;&lt;p&gt;
Or le rapport avec le fonctionnement de la colonne de navigation n'est pas évident quand la fenêtre est large et que les triangles de “Ajouter un commentaire” se trouvent donc super loin, ou plus simplement qu'on n'a pas encore essayé la colonne de navigation.
&lt;/p&gt;&lt;p&gt;
D'ailleurs, quelle est la pertinence de donner à la saisie de commentaire un statut que le reste de la maquette dédie à la navigation?
&lt;/p&gt;&lt;p&gt;
Ou alors, faire pareil avec le reste&amp;nbsp;: par cohérence, permettre de replier trackbacks et commentaires, voire aussi l'article.
&lt;/p&gt;&lt;p&gt;
Ce qui dévoile le vrai problème: replier pourrait éventuellement, peut-être, va savoir, plaire à quelques geeks, mais ça augmente surtout le risque que d'autres ratent des trucs sans le savoir.
&lt;/p&gt;&lt;p&gt;
Donc la zone de saisie de commentaire&amp;nbsp;:&lt;br /&gt;
soit on la voit par défaut (et on ne la masque que si on a compris qu'on pouvait),&lt;br /&gt;
soit le bouton qui la montre est évident,&lt;br /&gt;
soit TOUT est repliable, y compris le titre du blog et autres machins statiques, ce qui ne serait pas une si mauvaise idée sur un blog de geek.
&lt;/p&gt;&lt;p&gt;
Mais alors j'irais plus loin&amp;nbsp;: si on laisse le lecteur choisir ce qu'il voit, alors on doit aussi optimiser vraiment la surface verticale pour ce qu'il veut voir, et donc virer tout ce qui est statique hors de la zone de lecture, soit en le repliant, soit ici vers la colonne statique&amp;nbsp;:
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;les parties à lire, éventuellement repliables, sur toute la hauteur de la fenêtre (article, commentaires, trackbacks)&lt;/li&gt;
&lt;li&gt;tout les trucs statiques, éventuellement repliables, dans la colonne de nav (titre du blog, nav, logo, options, copyright, etc.)&lt;/li&gt;
&lt;li&gt;hybridations possibles: si tu veux garder la maquette avec des parties statiques haute et basse (ce qui me fait chier mais tout le monde le fait donc tu as bien le droit), leur repliage devrait se faire horizontalement vers la zone statique, ce qui est bêtement compliqué mais pas hors sujet sur ce site.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;
[...]
&lt;/p&gt;&lt;p&gt;
La disposition des champs de la zone commentaire est faible comme toujours. J'ai décrit il y a longtemps à &lt;a href=&quot;http://xylpho.servebeer.com&quot;&gt;Xylpho&lt;/a&gt; des dispositions à la fois plus intuitives et beaucoup plus optimales que ce que tout le monde fait.
&lt;/p&gt;&lt;p&gt;
Mais sympas les coins arrondis dans moz et le fond selon focus (tiens, encore une limitation d'iCab).
&lt;/p&gt;&lt;p&gt;
[...]
&lt;/p&gt;&lt;p&gt;
Remarques sur la zone “Ajouter un commentaire”&amp;nbsp;:
&lt;/p&gt;&lt;p&gt;
Les 2-points aux noms des champs seraient superflus si la disposition était logique.
&lt;/p&gt;&lt;p&gt;
Le titre du champ commentaire est superflu si on le place mieux.
&lt;/p&gt;&lt;p&gt;
Le petit champ de commentaire est chiant sans Omniweb (note pour Xavier&amp;nbsp;: Omniweb permet d'ouvrir tout champ de saisie comme fenêtre à taille et police libres, justement parce que la plupart des sites font chier).
&lt;/p&gt;&lt;p&gt;
Or les autres éléments gâchent plein de place verticale. Donc mettre le champ de commentaire à côté des autres éléments sur toute leur hauteur et l'élastiquer en largeur.
&lt;/p&gt;&lt;p&gt;
Mettre l'avertissement «&amp;nbsp;&lt;cite&gt;Le code HTML dans le commentaire&lt;/cite&gt;&amp;nbsp;» en tout petit et/ou en gris pour éviter qu'on le lise plus d'une fois (réduire visiblité et lisibilité&amp;nbsp;; si on se demande on fait l'effort de lire, si on sait déjà on n'est pas agressé à chaque fois par du texte inutile).
&lt;/p&gt;&lt;p class=&quot;c&quot;&gt;
&lt;a href=&quot;http://dascritch.net/vrac/.blog1/webdev/604-commentaire-1.png&quot; rel=&quot;lightbox[demo]&quot; title=&quot;le layout actuel&quot;&gt;&lt;img src=&quot;http://dascritch.net/vrac/.blog1/webdev/604-commentaire-1.TN__.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;
--- plus intuitif et confortable (sens de lecture et position des boutons) ---
(plus besoin d'aucun 2-points, idéal et optimal, je vais mettre un copyright dessus)
&lt;/p&gt;&lt;p class=&quot;c&quot;&gt;
&lt;a href=&quot;http://dascritch.net/vrac/.blog1/webdev/604-commentaire-2.png&quot; rel=&quot;lightbox[demo]&quot; title=&quot;le modèle de la prochaine version&quot; &gt;&lt;img src=&quot;http://dascritch.net/vrac/.blog1/webdev/604-commentaire-2.TN__.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;
J'ai d'autres idées de fignolage, mais elles relèvent de l'implémentation, alors je vais pas faire cadeau de tout, hein ;-)
&lt;/p&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/p&gt;&lt;p&gt;
Pas de panique, Vric, j'ai pris de très bonnes notes, et après quelques tests, oui, ça marche laaaaargement.
&lt;/p&gt;&lt;p&gt;
Ah oui, je suis noyé de (tentative) de spams toutes les 10 secondes. Soit je bannis certains mots ou séquences qui pourraient être utilisés en commentaire de manière légitime, soit je coupe &lt;a href=&quot;http://dascritch.net/blog.php/2006/04/27/393-question-de-commentaire#tb&quot;&gt;les trackbacks&lt;/a&gt;. J'ai choisi la dernière option, trop peu utilisée.
&lt;/p&gt;</content:encoded>
    
    
    
      </item>
    
</channel>
</rss>