<?xml
version="1.0" encoding="utf-8"?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:atom="http://www.w3.org/2005/Atom"
>

<channel xml:lang="fr">
	<title>Tech de Gamuza</title>
	<link>https://tech.gamuza.fr/</link>
	
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>
	<atom:link href="https://tech.gamuza.fr/spip.php?id_auteur=1&amp;page=backend" rel="self" type="application/rss+xml" />




<pre>Erreur d’exécution plugins/spipr-dist/inclure/rss-item.html</pre>
<pre>Erreur d’exécution plugins/spipr-dist/inclure/rss-item.html</pre>
<pre>Erreur d’exécution plugins/spipr-dist/inclure/rss-item.html</pre>
<pre>Erreur d’exécution plugins/spipr-dist/inclure/rss-item.html</pre>
<item xml:lang="fr">
		<title>Utiliser PHP_codeSniffer : les bases</title>
		<link>https://tech.gamuza.fr/Utiliser-PHP_codeSniffer-les-bases.html</link>
		<guid isPermaLink="true">https://tech.gamuza.fr/Utiliser-PHP_codeSniffer-les-bases.html</guid>
		<dc:date>2024-03-01T11:52:45Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>clem</dc:creator>



		<description>
&lt;p&gt;Usage : quelques exemples de commandes Tester un fichier php seul : phpcs dossier/fichier_truc.php &lt;br class='autobr' /&gt;
Tester un dossier complet : par ex &#224; la racine d'un r&#233;pertoire de plugin (/ !\ attention ! lancer phpcs sur un gros dossier avec beaucoup de fichiers (php / css / js) sans faire de restrictions via la configuration peut entra&#238;ner une GROSSE charge pour votre processeur !) phpcs dossier/ devrait retourner tout un tas d'erreurs &#224; corriger, pour &#224; peu pr&#232;s tous les types de fichiers (js, css, (&#8230;)&lt;/p&gt;


-
&lt;a href="https://tech.gamuza.fr/-formations-.html" rel="directory"&gt;D&#233;veloppement web&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;h2 class=&#034;spip&#034;&gt;Usage : quelques exemples de commandes&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Tester un fichier php seul :&lt;/strong&gt;&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;phpcs dossier/fichier_truc.php&lt;/textarea&gt;
&lt;p&gt;&lt;strong&gt;Tester un dossier complet : par ex &#224; la racine d'un r&#233;pertoire de plugin&lt;/strong&gt;&lt;br class='autobr' /&gt;
(/ !\ attention ! lancer phpcs sur un gros dossier avec beaucoup de fichiers (php / css / js) sans faire de restrictions via la configuration peut entra&#238;ner une GROSSE charge pour votre processeur !)&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;phpcs dossier/&lt;/textarea&gt;
&lt;p&gt;devrait retourner tout un tas d'erreurs &#224; corriger, pour &#224; peu pr&#232;s tous les types de fichiers (js, css, php)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Restreindre la port&#233;e du scan aux fichiers PHP, exclure des dossiers :&lt;/strong&gt;&lt;br class='autobr' /&gt;
En ajoutant le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;phpcs.xml&lt;/code&gt; &#224; la racine du r&#233;pertoire avec le contenu propos&#233; dans momh.fr, on doit restreindre la d&#233;tection des erreurs aux fichiers .html et .php&lt;br class='autobr' /&gt;
Le contenu du fichier :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='12' class='spip_cadre spip_cadre_block' dir='ltr'&gt;&lt;?xml version=&#034;1.0&#034;?&gt; &lt;ruleset&gt; &lt;file&gt;./&lt;/file&gt; &lt;exclude-pattern&gt;**/*.js&lt;/exclude-pattern&gt; &lt;exclude-pattern&gt;**/*.css&lt;/exclude-pattern&gt; &lt;exclude-pattern&gt;**/*.scss&lt;/exclude-pattern&gt; &lt;exclude-pattern&gt;node_modules/*&lt;/exclude-pattern&gt; &lt;exclude-pattern&gt;vendor/*&lt;/exclude-pattern&gt; &lt;arg name=&#034;colors&#034;/&gt; &lt;rule ref=&#034;SPIP41&#034;/&gt; &lt;/ruleset&gt;&lt;/textarea&gt;
&lt;p&gt;&lt;strong&gt;Tester uniquement avec les coding-standard de SPIP :&lt;/strong&gt;&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;phpcs --standard=SPIP41 dossier/fichier_truc.php&lt;/textarea&gt;
&lt;p&gt;&lt;strong&gt;Ne pas afficher les warnings (uniquement les erreurs) :&lt;/strong&gt;&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;phpcs -n dossier/fichier_truc.php&lt;/textarea&gt;
&lt;p&gt;&lt;strong&gt;Colorer la sortie :&lt;/strong&gt;&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;phpcs --colors dossier/fichier_truc.php&lt;/textarea&gt;&lt;h2 class=&#034;spip&#034;&gt;Compl&#233;ments de configuration : l'option &#8212;config-set&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Utilisation de l'option &lt;strong&gt;&#8212;config-set&lt;/strong&gt; :&lt;/strong&gt;&lt;br class='autobr' /&gt;
par exemple si vous n'utilisez phpcs/phpcbf que pour les standards SPIP, pour &#233;viter d'ajouter l'option &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;--standard=SPIP41&lt;/code&gt; &#224; chaque appel de la commande, vous pouvez passer ce param&#232;tre en option par d&#233;faut avec :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;phpcs --config-set default_standard SPIP41&lt;/textarea&gt;
&lt;p&gt;NB : cela donne une configuration &#233;crite dans le fichier &lt;code class='bash spip_code spip_code_inline' dir='ltr'&gt;...Composer/vendor/squizlabs/php_codesniffer/CodeSniffer.conf&lt;/code&gt; qu'il est possible de bricoler directement aussi&lt;br class='autobr' /&gt;
La syntaxe de cette option est de la forme :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;phpcs --config-set cl&#233; valeur&lt;/textarea&gt;
&lt;p&gt;par ex pour avoir la coloration par d&#233;faut&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;phpcs --config-set colors 1&lt;/textarea&gt;
&lt;p&gt;La documentation pour les configurations possibles avec l'option &#8212;config-set : &lt;br class='autobr' /&gt;
&lt;a href=&#034;https://github.com/squizlabs/PHP_CodeSniffer/wiki/Configuration-Options&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://github.com/squizlabs/PHP_CodeSniffer/wiki/Configuration-Options&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Exemple de fichier de configuration CodeSniffer.conf pour colorer syst&#233;matiquement, utiliser les standards SPIP41 et ignorer les warnings :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='11' class='spip_cadre spip_cadre_block' dir='ltr'&gt;&lt;?php $phpCodeSnifferConfig = array ( 'installed_paths' =&gt; 'C:/Users/VOTRE_USER/AppData/Roaming/Composer/vendor/phpcompatibility/php-compatibility,C:/Users/VOTRE_USER/AppData/Roaming/Composer/vendor/spip/coding-standards/src', 'default_standard' =&gt; 'SPIP41', 'colors' =&gt; 1, 'show_warnings' =&gt; 0, ); ?&gt;&lt;/textarea&gt;&lt;h2 class=&#034;spip&#034;&gt;Sp&#233;cifique installation sous Windows :&lt;/h2&gt;
&lt;p&gt;Adaptations du post de &lt;a href=&#034;https://momh.fr/installer-globalement-php_codesniffer&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://momh.fr/installer-globalement-php_codesniffer&lt;/a&gt;&lt;br class='autobr' /&gt;
On suppose :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; l'utilisateur connect&#233; &#224; la session Windows est &lt;strong&gt;VOTRE_USER&lt;/strong&gt;&lt;/li&gt;&lt;li&gt; &lt;strong&gt;Composer&lt;/strong&gt; install&#233; sur la machine&lt;/li&gt;&lt;li&gt; on utilise &lt;strong&gt;Gitbash&lt;/strong&gt; comme interpr&#233;teur de commandes (cf &lt;a href=&#034;https://contrib.spip.net/SPIP-Cli#Specificites-d-installation-sous-Windows&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://contrib.spip.net/SPIP-Cli#Specificites-d-installation-sous-Windows&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;1/ Installation globale :&lt;/strong&gt;&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;composer global --dev require squizlabs/php_codesniffer composer global --dev require spip/coding-standards&lt;/textarea&gt; &lt;p&gt;Tester que c'est OK :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;phpcs --help phpcbf --help&lt;/textarea&gt;
&lt;p&gt;doivent retourner le Help avec toutes les options de la commande&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2/ D&#233;clarer le r&#233;pertoire des standards SPIP &#224; PHP_CodeSniffer :&lt;/strong&gt;&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='4' class='spip_cadre spip_cadre_block' dir='ltr'&gt;phpcs --config-set installed_paths C:/Users/VOTRE_USER/AppData/Roaming/Composer/vendor/phpcompatibility/php-compatibility,C:/Users/VOTRE_USER/AppData/Roaming/Composer/vendor/spip/coding-standards/src&lt;/textarea&gt;
&lt;p&gt;cette commande devrait retourner :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;Using config file: C:\Users\VOTRE_USER\AppData\Roaming\Composer\vendor\squizlabs\php_codesniffer\CodeSniffer.conf&lt;/textarea&gt;
&lt;p&gt;Pour tester que la config est OK la commande :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;phpcs -i&lt;/textarea&gt;
&lt;p&gt;devrait retourner quelque chose comme :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='3' class='spip_cadre spip_cadre_block' dir='ltr'&gt;The installed coding standards are MySource, PEAR, PSR1, PSR2, PSR12, Squiz, Zend, PHPCompatibility, SCS1, SPIP40 and SPIP41&lt;/textarea&gt;&lt;h2 class=&#034;spip&#034;&gt;R&#233;f&#233;rences :&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; pour l'installation le billet du blog momh.fr : &lt;a href=&#034;https://momh.fr/installer-globalement-php_codesniffer&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://momh.fr/installer-globalement-php_codesniffer&lt;/a&gt;&lt;/li&gt;&lt;li&gt; le Github de PHP_codeSniffer : &lt;a href=&#034;https://github.com/squizlabs/PHP_CodeSniffer&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://github.com/squizlabs/PHP_CodeSniffer&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<pre>Erreur d’exécution plugins/spipr-dist/inclure/rss-item.html</pre>
<item xml:lang="fr">
		<title>One line pour mise &#224; jour Git des sous-dossiers d'un r&#233;pertoire</title>
		<link>https://tech.gamuza.fr/One-line-pour-mise-a-jour-Git-des-sous-dossiers-d-un-repertoire.html</link>
		<guid isPermaLink="true">https://tech.gamuza.fr/One-line-pour-mise-a-jour-Git-des-sous-dossiers-d-un-repertoire.html</guid>
		<dc:date>2023-05-18T14:08:15Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>clem</dc:creator>



		<description>&lt;p&gt;Script bash mono-ligne (&#034;one line&#034;) pour faire un &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;git pull&lt;/code&gt; dans tous les sous-dossiers d'un r&#233;pertoire&lt;/p&gt;

-
&lt;a href="https://tech.gamuza.fr/-scripts-et-commandes-sh-.html" rel="directory"&gt;Scripts sh&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Si ce n'est qu'il faut &#034;boucler&#034; dans la liste des sous-dossiers pour faire le &lt;code class='bash spip_code spip_code_inline' dir='ltr'&gt;git pull&lt;/code&gt; dans chacun d'eux, la complication suppl&#233;mentaire est de v&#233;rifier qu'ils sont bien des dossiers &#034;Git&#034; (c'est &#224; dire qu'ils ont eux-m&#234;me un sous-dossier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;.git&lt;/code&gt;).&lt;br class='autobr' /&gt;
Afin de suivre le d&#233;roulement du processus on fait afficher chaque dossier mis &#224; jour.&lt;br class='autobr' /&gt;
Ce qui donne donc :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;for i in `ls ./`;do if [ -d $i/.git ]; then echo &#034;&#034;; echo $i; cd $i; git pull; cd ../; fi; done &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Windows 11 : restaurer les menus contextuels &#034;directs&#034;</title>
		<link>https://tech.gamuza.fr/Windows-11-restaurer-les-menus-contextuels-directs.html</link>
		<guid isPermaLink="true">https://tech.gamuza.fr/Windows-11-restaurer-les-menus-contextuels-directs.html</guid>
		<dc:date>2023-02-17T18:11:40Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>clem</dc:creator>


		<dc:subject>tutoriel</dc:subject>
		<dc:subject>Windows</dc:subject>
		<dc:subject>Window 11</dc:subject>
		<dc:subject>Regedit.exe</dc:subject>
		<dc:subject>registre</dc:subject>

		<description>&lt;p&gt;&lt;strong&gt;Tutoriel :&lt;/strong&gt; comment supprimer le menu contextuel en &#034;2 temps&#034; de Windows 11 et revenir &#224; un clic droit avec toutes les options.&lt;/p&gt;

-
&lt;a href="https://tech.gamuza.fr/-bricolages-Windows-.html" rel="directory"&gt;Windows&lt;/a&gt;

/ 
&lt;a href="https://tech.gamuza.fr/+-tutoriel-+.html" rel="tag"&gt;tutoriel&lt;/a&gt;, 
&lt;a href="https://tech.gamuza.fr/+-windows-+.html" rel="tag"&gt;Windows&lt;/a&gt;, 
&lt;a href="https://tech.gamuza.fr/+-Window-11-+.html" rel="tag"&gt;Window 11&lt;/a&gt;, 
&lt;a href="https://tech.gamuza.fr/+-Regedit-exe-+.html" rel="tag"&gt;Regedit.exe&lt;/a&gt;, 
&lt;a href="https://tech.gamuza.fr/+-registre-+.html" rel="tag"&gt;registre&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;h2 class=&#034;spip&#034;&gt;Contexte :&lt;/h2&gt;
&lt;p&gt;Comme &#224; chaque nouvelle version de Windows, Microsoft a d&#233;cid&#233; (une fois de plus...) avec &lt;strong&gt;Windows 11&lt;/strong&gt; que les utilisateurs sont des d&#233;c&#233;r&#233;br&#233;s auxquels il faut &#233;viter toute possibilit&#233; d'utiliser intelligemment leur ordinateur. &lt;br class='autobr' /&gt;
Pour cela les concepteurs de cette version 11 ont choisit que dans l'explorateur de fichier (outil ultra-central pour les utilisateurs un peu efficaces), le &lt;strong&gt;menu contextuel&lt;/strong&gt; qui s'ouvre au clic droit se pr&#233;sente en version minimaliste (en gros toutes les fonctions qui sont en g&#233;n&#233;ral inutiles car assur&#233;e par les raccourcis claviers &#034;de base&#034; : &#034;ouvrir&#034;, &#034;propri&#233;t&#233;s&#034; + des ic&#244;nes pour &#034;copier&#034;, &#034;coller&#034;...). Pour avoir acc&#232;s &#224; l'ensemble des choix il faut cliquer sur le dernier item &#034;Afficher plus d'options&#034; (ou passer le raccourci clavier Maj + F10).&lt;/p&gt;
&lt;p&gt;Le but de ce tuto est donc de se d&#233;barrasser de cette infantilisation forc&#233;e pour redonner de l'efficaciit&#233; &#224; votre OS...&lt;br class='autobr' /&gt;
Plusieurs m&#233;thodes sont possibles pour cette modification mais elle aboutissent toutes au m&#234;me r&#233;sultat : ajouter une cl&#233; de registre (vide) :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32&lt;/textarea&gt;
&lt;p&gt;Nous en verrons 2 ici.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;M&#233;thode 1 : utiliser l'interface graphique de Regedit&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; ouvrez une invite de commande avec le raccourci clavier &lt;strong&gt;Windows + R&lt;/strong&gt; puis appelez l'utilitaire d'&#233;dition du registre en saisissant &#034;regedit&#034; dans le champ &#034;Ouvrir&#034; propos&#233;.&lt;/li&gt;&lt;li&gt; dans l'&#233;diteur du registre ouvrez la &#034;ruche&#034; &lt;strong&gt;HKEY_CURRENT_USER&lt;/strong&gt; puis parcourez l'arborescence des cl&#233;s &lt;strong&gt;Software&lt;/strong&gt; &gt; &lt;strong&gt;Classes&lt;/strong&gt; &gt; &lt;strong&gt;CLSID&lt;/strong&gt;&lt;/li&gt;&lt;li&gt; cr&#233;ez une nouvelle cl&#233; avec clic droit sur &lt;strong&gt;CLSID&lt;/strong&gt; que vous nommez &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}&lt;/code&gt;&lt;/li&gt;&lt;li&gt; validez la avec &#034;Entr&#233;e&#034; et cr&#233;ez dedans une nouvelle cl&#233; nomm&#233;e &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;InprocServer32&lt;/code&gt;&lt;/li&gt;&lt;li&gt; validez avec &#034;Entr&#233;e&#034; : vous devriez avoir une valeur par d&#233;faut vide dedans :
&lt;div class='spip_document_267 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;77&#034; data-legende-lenx=&#034;xx&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://tech.gamuza.fr/IMG/jpg/registre_menu_contextuel_windows-11.jpg' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/jpeg&#034;&gt; &lt;img src='https://tech.gamuza.fr/local/cache-vignettes/L500xH120/registre_menu_contextuel_windows-11-0b349.jpg?1768434869' width='500' height='120' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-267 '&gt;&lt;strong&gt;Registre Windows 11 avec la cl&#233; de modification des menus contextuels cr&#233;&#233;e
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;/li&gt;&lt;li&gt; red&#233;marrez Windows : en principe le menu contextuel doit maintenant vous donner directement acc&#232;s &#224; la totalit&#233; des items !&lt;/li&gt;&lt;/ul&gt;&lt;h2 class=&#034;spip&#034;&gt;M&#233;thode 2 : utiliser une commande de modification du registre&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; plus rapide mais pour le m&#234;me r&#233;sultat, vous pouvez faire la cr&#233;ation de la cl&#233; de registre et de sa sous-cl&#233; en une commande.&lt;/li&gt;&lt;li&gt; ouvrez une fen&#234;tre de commande en mode administrateur avec le raccourci clavier &lt;strong&gt;Windows + S&lt;/strong&gt; puis &lt;strong&gt;cmd&lt;/strong&gt; dans la zone de recherche et enfin &lt;strong&gt;&#034;Executer en tant qu'administrateur&#034;&lt;/strong&gt;.&lt;/li&gt;&lt;li&gt; dans cette fen&#234;tre ex&#233;cutez (apr&#232;s un habile copier/coller) la commande suivante : &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;reg.exe add &#034;HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32&#034; /f /ve&lt;/textarea&gt;&lt;/li&gt;&lt;li&gt; vous devriez obtenir le retour &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;L'op&#233;ration a r&#233;ussi.&lt;/code&gt;&lt;/li&gt;&lt;li&gt; red&#233;marrez la machine&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Tests de nom de classe CSS</title>
		<link>https://tech.gamuza.fr/Tests-de-nom-de-classe-CSS.html</link>
		<guid isPermaLink="true">https://tech.gamuza.fr/Tests-de-nom-de-classe-CSS.html</guid>
		<dc:date>2022-12-14T19:01:39Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>clem</dc:creator>



		<description>
&lt;p&gt;Code : .test\.123 color : red ; &lt;br class='autobr' /&gt; .test#123 color : blue ; &lt;br class='autobr' /&gt; .test\@123 color : green ; &lt;br class='autobr' /&gt; .test\ test.123 test#123 test@123 test test123 test 123 _test123 -test123 123test &lt;br class='autobr' /&gt;
R&#233;sultat : .test\.123 color : red ;
&lt;br class='autobr' /&gt; .test\#123 color : blue ;
&lt;br class='autobr' /&gt; .test\@123 color : green ;
&lt;br class='autobr' /&gt; .test\ test.123 test#123 test@123 test test123 test 123 _test123 -test123 123test&lt;/p&gt;


-
&lt;a href="https://tech.gamuza.fr/-formations-.html" rel="directory"&gt;D&#233;veloppement web&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;h2 class=&#034;spip&#034;&gt;Code :&lt;/h2&gt;&lt;cadre class=&#034;HTML&#034;&gt;
&lt;div class=&#034;test.123&#034;&gt;test.123&lt;/div&gt;
&lt;div class=&#034;test#123&#034;&gt;test#123&lt;/div&gt;
&lt;div class=&#034;test@123&#034;&gt;test@123&lt;/div&gt;
&lt;div class=&#034;test&lt;123&#034;&gt;test&lt;123&lt;/div&gt;
&lt;div class=&#034;test--123&#034;&gt;test&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;123&lt;/div&gt; &lt;div class=&#034;test~123&#034;&gt;test~123&lt;/div&gt; &lt;div class=&#034;_test123&#034;&gt;_test123&lt;/div&gt; &lt;div class=&#034;-test123&#034;&gt;-test123&lt;/div&gt; &lt;div class=&#034;123test &#034;&gt;123test &lt;/div&gt; &lt;/cadre&gt; {{{R&#233;sultat:}}} &lt;html&gt;&lt;style type=&#034;text/css&#034;&gt; .test\.123 { color: red; } .test\#123 { color: blue; } .test\@123 { color: green; } .test\&lt;123 { color: brown; } .test123 { color: purple; } .test\~123 { color: tomato; } ._test123 { color: violet; } .-test123 { color: yellow; } .\31 23test { color: orange; } &lt;/style&gt; &lt;div class=&#034;test.123&#034;&gt;test.123&lt;/div&gt; &lt;div class=&#034;test#123&#034;&gt;test#123&lt;/div&gt; &lt;div class=&#034;test@123&#034;&gt;test@123&lt;/div&gt; &lt;div class=&#034;test&lt;123&#034;&gt;test&lt;123&lt;/div&gt; &lt;div class=&#034;test&lt;/code&gt;123&#034;&gt;test`123&lt;/div&gt;
&lt;div class=&#034;test~123&#034;&gt;test 123&lt;/div&gt;
&lt;div class=&#034;_test123&#034;&gt;_test123&lt;/div&gt;
&lt;div class=&#034;-test123&#034;&gt;-test123&lt;/div&gt;
&lt;div class=&#034;123test &#034;&gt;123test &lt;/div&gt;
&lt;/html&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>ZZZ : URL canonique</title>
		<link>https://tech.gamuza.fr/ZZZ-URL-canonique.html</link>
		<guid isPermaLink="true">https://tech.gamuza.fr/ZZZ-URL-canonique.html</guid>
		<dc:date>2022-11-30T10:40:27Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>clem</dc:creator>



		<description>&lt;p&gt;Cet article est une copie de sauvegarde de l'article original de Fil sur le d&#233;sormais disparu : &lt;a href=&#034;http://zzz.rezo.net/URL-canonique.html&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;http://zzz.rezo.net/URL-canonique.html&lt;/a&gt;&lt;/p&gt;

-
&lt;a href="https://tech.gamuza.fr/-formations-.html" rel="directory"&gt;D&#233;veloppement web&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Je demandais hier sur &lt;strong&gt;#spip&lt;/strong&gt; si quelqu'un connaissait un standard pour signaler l'URL canonique d'une page Web. S'koi ? Si on est en train de lire une page sur un site, on peut l'avoir abord&#233;e par plusieurs adresses :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='5' class='spip_cadre spip_cadre_block' dir='ltr'&gt;-&#160;http://monsite.tld/article12 -&#160;http://monsite.tld/Mon-titre-d-article -&#160;http://www.monsite.tld/article12.html?couleur=bleu -&#160;http://www.monsite.tld/article12.html?post=1 -&#160;http://www.monsite.tld/article12.html?PHPSESSID=a2c5fe78&lt;/textarea&gt;
&lt;p&gt;Tout &#231;a, ce sont des URLs valables, qui affichent bien le m&#234;me article. Mais si je veux mettre des gens (ou des robots) d'accord sur ce qu'est la &#171; vraie &#187; adresse de cet article, il faut que je l'annonce, d'une mani&#232;re ou d'une autre.&lt;/p&gt;
&lt;p&gt;Cette probl&#233;matique concerne au premier chef les moteurs de recherche et d'indexation (mais pas seulement). Or il se trouve que pas plus tard que la semaine derni&#232;re les trois poids lourds Google, Yahoo et Live (Microsoft) annon&#231;aient que leurs algorithmes allaient accepter qu'on leur parle de l'URL canonique d'une page.&lt;/p&gt;
&lt;p&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; &lt;a href=&#034;https://developers.google.com/search/blog/2009/02/specify-your-canonical&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://developers.google.com/search/blog/2009/02/specify-your-canonical&lt;/a&gt;
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; &lt;a href=&#034;https://moz.com/blog/canonical-url-tag-the-most-important-advancement-in-seo-practices-since-sitemaps&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://moz.com/blog/canonical-url-tag-the-most-important-advancement-in-seo-practices-since-sitemaps&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;C'est bien fait, et c'est simple &#224; mettre en &#339;uvre. En gros, pour toute page HTML qui peut avoir plusieurs adresses, on va indiquer laquelle est la principale, en ins&#233;rant dans son &lt;code class='html spip_code spip_code_inline' dir='ltr'&gt;&lt;head&gt;...&lt;/head&gt;&lt;/code&gt; une balise :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='3' class='spip_cadre spip_cadre_block' dir='ltr'&gt;&lt;link rel=&#034;canonical&#034; href=&#034;http://www.monsite.tld/URL-canonique&#034; /&gt;&lt;/textarea&gt;
&lt;p&gt;Les algorithmes qui le souhaitent sauront donc que la page &lt;code class='html spip_code spip_code_inline' dir='ltr'&gt;http://www.monsite.tld/article12&lt;/code&gt; qui mentionne ce lien doit en fait &#234;tre consid&#233;r&#233;e comme &#233;tant &#224; l'adresse canonique &lt;code class='html spip_code spip_code_inline' dir='ltr'&gt;http://www.monsite.tld/URL-canonique&lt;/code&gt;. Et feront leurs calculs (PageRank...) et affichages (r&#233;sultats de recherche...) en tenant compte de cette information.&lt;br class='autobr' /&gt;
* * *&lt;/p&gt;
&lt;p&gt;Autre exemple d'usage (qui &#233;tait celui qui avait suscit&#233; ma question) : lorsqu'on veut participer aux sites de partage de bookmarks type delicious.com, il importe que les diff&#233;rents partageurs se mettent d'accord sur une adresse unique, de mani&#232;re &#224; pouvoir discuter de la m&#234;me chose, m&#234;me s'ils l'ont vue dans un contexte diff&#233;rent. Le plugin SPIP Social Tags en tient compte.&lt;/p&gt;
&lt;p&gt;Dans le squelette SPIP article.html, il suffit d'indiquer dans la partie &lt;code class='html spip_code spip_code_inline' dir='ltr'&gt;&lt;head&gt;..&lt;/head&gt;&lt;/code&gt; le code suivant [1] :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;&lt;link rel=&#034;canonical&#034; href=&#034;[(#URL_ARTICLE|url_absolue)]&#034; /&gt;&lt;/textarea&gt;
&lt;p&gt;Pour que Google consid&#232;re qu'un (vieux) lien vers &lt;a href=&#034;http://monsite.tld/a1.html&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;http://monsite.tld/a1.html&lt;/a&gt;&lt;/code&gt; pointe en fait vers &lt;code class='html spip_code spip_code_inline' dir='ltr'&gt;http://www.monsite.tld/Titre-article&lt;/code&gt; (URL canonique de l'article si on a activ&#233; les URLs &#171; propres &#187;). Ou que SocialTags indique le nouvel URL dans delicious quand on clique sur l'icone, m&#234;me si le navigateur indique &lt;code class='html spip_code spip_code_inline' dir='ltr'&gt;http://www.monsite.tld/Titre-article?PHPSESSID=12345&lt;/code&gt;.&lt;/p&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div &lt;div class='rss_ps'&gt;&lt;h2 class=&#034;spip&#034;&gt;URL canonique et permalien&lt;/h2&gt;
&lt;p&gt;C'est bien gentil ces URLs canoniques, mais quelle est la diff&#233;rence avec le permalien ?&lt;/p&gt;
&lt;p&gt;L'id&#233;e du &#171; permalien &#187; d'un article, c'est d'avoir un lien qui r&#233;f&#233;rencera toujours cet article ; ainsi, sur un blog, on veut que les gens qui r&#233;f&#233;rencent un article ne fassent pas un lien vers la page d'accueil &#8212; alors que celle-ci va tourner au fur et &#224; mesure de l'ajout de nouveaux articles &#8212; mais plut&#244;t un lien vers une page pr&#233;cise qui affichera toujours l'article dans deux semaines, quand il ne sera plus sur la page d'accueil.&lt;/p&gt;
&lt;p&gt;Bien s&#251;r le permalien pointera en g&#233;n&#233;ral vers l'URL canonique de l'article, ce qui fait qu'en pratique, ces deux propri&#233;t&#233;s ont la m&#234;me valeur.&lt;/p&gt;
&lt;p&gt;Cependant, les deux notions ne sont pas identiques. On peut imaginer qu'un permalien nous redirige vers l'URL canonique, laquelle peut changer au cours du temps. Par exemple, lorsque SPIP sera rachet&#233; par la Mozilla Corp., l'URL canonique de l'article de l'article &#171; Est-ce que je peux... &#187;, qui est actuellement &lt;code class='html spip_code spip_code_inline' dir='ltr'&gt;http://www.spip.net/fr_article1475.html&lt;/code&gt;, deviendra (sur ordre du d&#233;partement marketing) &lt;code class='html spip_code spip_code_inline' dir='ltr'&gt;https://spip.mozcorp.world/Est-ce-que-je-peux.html&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;L'URL canonique de cet article aura donc chang&#233;. Mais &lt;code class='html spip_code spip_code_inline' dir='ltr'&gt;http://www.spip.net/fr_article1475.html&lt;/code&gt; est et restera un permalien : il affichera toujours le bon article (soit directement, soit en renvoyant le lecteur vers le site mozcorp.world).&lt;/p&gt;
&lt;p&gt;Autrement dit :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; un permalien (il peut y en avoir plusieurs pour un m&#234;me article) est un lien qui pointe toujours vers cet article (cette &#171; ressource &#187;, en jargon webique). On le code sous la forme &lt;code class='html spip_code spip_code_inline' dir='ltr'&gt;&lt;a rel=&#034;bookmark&#034; href=&#034;...&#034;&gt;&lt;/code&gt;. Tant qu'il permet de retrouver la ressource, f&#251;t-ce &#224; travers des modifications de formatage des URLs, des redirections et des changements de noms de domaine, c'est un permalien.&lt;/li&gt;&lt;li&gt; l'URL canonique d'une ressource quant &#224; elle est unique (mais pas forc&#233;ment permanente) : elle signale l'adresse &#171; standard &#187; o&#249; il faut aller chercher cette page, m&#234;me si on l'a trouv&#233;e ailleurs. On la r&#233;f&#233;rence &#224; l'int&#233;rieur de l'ent&#234;te de la page sous la forme &lt;code class='html spip_code spip_code_inline' dir='ltr'&gt;&lt;link rel=&#034;canonical&#034; href=&#034;...&#034; /&gt;&lt;/code&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>



</channel>

</rss>
