<?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?page=backend" rel="self" type="application/rss+xml" />




<item xml:lang="fr">
		<title>Onduleur EATON</title>
		<link>https://tech.gamuza.fr/Onduleur-EATON.html</link>
		<guid isPermaLink="true">https://tech.gamuza.fr/Onduleur-EATON.html</guid>
		<dc:date>2025-02-19T15:10:03Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Christophe</dc:creator>



		<description>
&lt;p&gt;Liste de tutos : https://doc.ubuntu-fr.org/nut https://community.jeedom.com/t/mise-en-place-onduleur-eaton-ellipse-eco-avec-retour-info-et-script-de-fermeture/93435 https://forum-debian.fr/wiki/Configurer_et_surveiller_un_onduleur_avec_NUT&lt;/p&gt;


-
&lt;a href="https://tech.gamuza.fr/-configuration-d-un-serveur-debian-.html" rel="directory"&gt;Debian&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;h2 class=&#034;spip&#034;&gt;Liste de tutos : &lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a href=&#034;https://doc.ubuntu-fr.org/nut&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://doc.ubuntu-fr.org/nut&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://community.jeedom.com/t/mise-en-place-onduleur-eaton-ellipse-eco-avec-retour-info-et-script-de-fermeture/93435&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://community.jeedom.com/t/mise-en-place-onduleur-eaton-ellipse-eco-avec-retour-info-et-script-de-fermeture/93435&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://forum-debian.fr/wiki/Configurer_et_surveiller_un_onduleur_avec_NUT&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://forum-debian.fr/wiki/Configurer_et_surveiller_un_onduleur_avec_NUT&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>DDEV - Configuration pour utiliser mariadb de l'h&#244;te</title>
		<link>https://tech.gamuza.fr/Configuration-pour-utiliser-mariadb-de-l-hote.html</link>
		<guid isPermaLink="true">https://tech.gamuza.fr/Configuration-pour-utiliser-mariadb-de-l-hote.html</guid>
		<dc:date>2024-11-15T08:30:23Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Christophe</dc:creator>


		<dc:subject>DDEV</dc:subject>
		<dc:subject>tutoriel</dc:subject>

		<description>
&lt;p&gt;# Configuration pour utiliser mariadb de l'h&#244;te &lt;br class='autobr' /&gt;
## 1. Configuration de DDEV &lt;br class='autobr' /&gt;
Il faut ajouter un fichier &#224; la racine de son sous dossier .ddev (de son projet) : docker-compose.override.yaml services : db : extra_hosts : - &#034;host.docker.internal:host-gateway&#034; environment : - MYSQL_HOST=host.docker.internal &lt;br class='autobr' /&gt;
Apres avoir red&#233;marr&#233; ddev, si vous vous connectez dans le conteneur db, vous pourrez voir que la commande suivante fonctionne ping host.docker.internal Pour (&#8230;)&lt;/p&gt;


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

/ 
&lt;a href="https://tech.gamuza.fr/+-DDEV-336-+.html" rel="tag"&gt;DDEV&lt;/a&gt;, 
&lt;a href="https://tech.gamuza.fr/+-tutoriel-+.html" rel="tag"&gt;tutoriel&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;&lt;md&gt;&lt;br class='autobr' /&gt;
# Configuration pour utiliser mariadb de l'h&#244;te&lt;/p&gt;
&lt;p&gt;## 1. Configuration de DDEV&lt;/p&gt;
&lt;p&gt;Il faut ajouter un fichier &#224; la racine de son sous dossier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;.ddev&lt;/code&gt; (de son projet) : &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;docker-compose.override.yaml&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;yaml&#034; class='spip_code spip_code_block language-yaml' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;services: db: extra_hosts: - &#034;host.docker.internal:host-gateway&#034; environment: - MYSQL_HOST=host.docker.internal &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Apres avoir red&#233;marr&#233; ddev, si vous vous connectez dans le conteneur db, vous pourrez voir que la commande suivante fonctionne &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ping host.docker.internal&lt;/code&gt; Pour ce&lt;/p&gt;
&lt;p&gt;## 2. Configuration de mysql de l'h&#244;te.&lt;/p&gt;
&lt;p&gt;Il faut modifier votre instance de mysql/mariadb pour qu'elle &#233;coute toutes les ip et pas seulement localhost. Pour cela il faut changer dans la conf de mariadb &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;my.cnf&lt;/code&gt; la ligne : &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;bind-address = localhost&lt;/code&gt; par &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;bind-address = 0.0.0.0&lt;/code&gt; En terme de s&#233;cu, c'est un peu moins bien ;-)&lt;/p&gt;
&lt;p&gt;## 3. User mysql pour le spip&lt;/p&gt;
&lt;p&gt;Il faut que votre user mysql est comme nom d'h&#244;te &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;%&lt;/code&gt; et non &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;localhost&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;## 4. Configuration du spip&lt;/p&gt;
&lt;p&gt;Il faut changer dans le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;connect.php&lt;/code&gt; :&lt;/p&gt;
&lt;p&gt;* le nom d'host devient &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;host.docker.internal&lt;/code&gt;&lt;br class='autobr' /&gt;
* le port &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;3306&lt;/code&gt; (inchang&#233;)&lt;br class='autobr' /&gt;
* user -&gt; celui d&#233;fini dans l'&#233;tape 3&lt;br class='autobr' /&gt;
&lt;/md&gt;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>DDEV - Personnalisation de phpmyadmin</title>
		<link>https://tech.gamuza.fr/DDEV-Personnalisation-de-phpmyadmin.html</link>
		<guid isPermaLink="true">https://tech.gamuza.fr/DDEV-Personnalisation-de-phpmyadmin.html</guid>
		<dc:date>2024-11-15T08:25:21Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Christophe</dc:creator>


		<dc:subject>DDEV</dc:subject>
		<dc:subject>tutoriel</dc:subject>

		<description>
&lt;p&gt;Si vous souhaitez modifier la configuration de phpmyadmin, en utilisant un fichier config.user.inc.php &lt;br class='autobr' /&gt;
1. dans le fichier : docker-compose.phpmyadmin.yaml, ajouter dans la cl&#233; phpmyadmin :
&lt;br class='autobr' /&gt;
services : phpmyadmin : build : context : ./phpmyadmin &lt;br class='autobr' /&gt;
2. Il faut maintenant cr&#233;er le dossier phpmyadmin dans .ddev : mkdir phpmyadmin
&lt;br class='autobr' /&gt;
3. Ajouter dans ce dossier un fichier Dockerfile avec le contenu suivant : FROM phpmyadmin:5.2.0 COPY config.user.inc.php /etc/phpmyadmin/config.user.inc.php (&#8230;)&lt;/p&gt;


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

/ 
&lt;a href="https://tech.gamuza.fr/+-DDEV-336-+.html" rel="tag"&gt;DDEV&lt;/a&gt;, 
&lt;a href="https://tech.gamuza.fr/+-tutoriel-+.html" rel="tag"&gt;tutoriel&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Si vous souhaitez modifier la configuration de phpmyadmin, en utilisant un fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;config.user.inc.php&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;1. dans le fichier : &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;docker-compose.phpmyadmin.yaml&lt;/code&gt;, ajouter dans la cl&#233; phpmyadmin :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='4' class='spip_cadre spip_cadre_block' dir='ltr'&gt;services: phpmyadmin: build: context: ./phpmyadmin&lt;/textarea&gt;
&lt;p&gt;2. Il faut maintenant cr&#233;er le dossier phpmyadmin dans .&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ddev&lt;/code&gt; : &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mkdir phpmyadmin&lt;/code&gt;&lt;br class='autobr' /&gt;
3. Ajouter dans ce dossier un fichier &lt;strong&gt;Dockerfile&lt;/strong&gt; avec le contenu suivant :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre php class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;FROM phpmyadmin:5.2.0 COPY config.user.inc.php /etc/phpmyadmin/config.user.inc.php&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;4. Ajouter dans ce dossier votre fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;config.user.inc.php&lt;/code&gt; ex :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='3' class='spip_cadre spip_cadre_block' dir='ltr'&gt;&lt;?php $cfg['TablePrimaryKeyOrder'] = 'DESC'; $cfg['MaxNavigationItems'] = 100;&lt;/textarea&gt;
&lt;p&gt;5. Relancer &lt;strong&gt;ddev&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>One line pour mise &#224; jour Composer des sous-dossiers d'un r&#233;pertoire</title>
		<link>https://tech.gamuza.fr/One-line-pour-mise-a-jour-Composer-des-sous-dossiers-d-un-repertoire.html</link>
		<guid isPermaLink="true">https://tech.gamuza.fr/One-line-pour-mise-a-jour-Composer-des-sous-dossiers-d-un-repertoire.html</guid>
		<dc:date>2024-08-25T12:10:11Z</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;composer install&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;&lt;strong&gt;M&#233;thode&lt;/strong&gt; : &#034;boucler&#034; dans la liste des sous-dossiers pour faire le &lt;code class='bash spip_code spip_code_inline' dir='ltr'&gt;composer install&lt;/code&gt; dans chacun d'eux si il poss&#232;de un fichier &lt;strong&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;composer.json&lt;/code&gt;&lt;/strong&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;textarea readonly='readonly' cols='40' rows='4' class='spip_cadre spip_cadre_block' dir='ltr'&gt;for i in &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ls ./&lt;/code&gt;;do if [ -e $i/composer.json ]; then echo &#034;&#034;; echo $i; cd $i; composer install; cd ../; fi; done&lt;/textarea&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Utiliser une sous-requ&#234;te MySQL pour compter le nombre de liaisons sur un &#233;l&#233;ment</title>
		<link>https://tech.gamuza.fr/Utiliser-une-sous-requete-MySQL-pour-compter-le-nombre-de-liaisons-sur-un.html</link>
		<guid isPermaLink="true">https://tech.gamuza.fr/Utiliser-une-sous-requete-MySQL-pour-compter-le-nombre-de-liaisons-sur-un.html</guid>
		<dc:date>2024-07-13T00:05:42Z</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>MySQL</dc:subject>
		<dc:subject>COUNT</dc:subject>

		<description>&lt;p&gt;COUNT() qui permet de compter le nombre d'occurrences d'une valeur dans une table peut &#234;tre utilis&#233; en sous-requ&#234;te pour d&#233;nombrer, par exemple, le nombre de liaisons de l'&#233;l&#233;ment dans une autre table&lt;/p&gt;

-
&lt;a href="https://tech.gamuza.fr/-formations-.html" rel="directory"&gt;D&#233;veloppement web&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/+-mysql-+.html" rel="tag"&gt;MySQL&lt;/a&gt;, 
&lt;a href="https://tech.gamuza.fr/+-COUNT-+.html" rel="tag"&gt;COUNT&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;h2 class=&#034;spip&#034;&gt;Exemple en SPIP d'utilisation de &lt;strong&gt;COUNT()&lt;/strong&gt; en sous-requ&#234;te&lt;/h2&gt;
&lt;p&gt;La table &lt;strong&gt;spip_mots_liens&lt;/strong&gt; est utilis&#233;e pour stocker les liaisons des objets SPIP (articles, rubriques...) sur les mots cl&#233;s de la table &lt;strong&gt;spip_mots&lt;/strong&gt;.&lt;br class='autobr' /&gt;
On souhaite faire une liste des mots cl&#233;s du groupe 2 avec pour chacun le nombre de liaisons qu'il poss&#232;de :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='4' class='spip_cadre spip_cadre_block' dir='ltr'&gt;SELECT m.id_mot, m.titre, (SELECT COUNT(L.id_mot) FROM spip_mots_liens AS L WHERE L.id_mot = m.id_mot) AS nb FROM spip_mots AS m WHERE m.id_groupe=2 ORDER BY m.titre;&lt;/textarea&gt;
&lt;p&gt;on obtient un r&#233;sultat de la forme&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='4' class='spip_cadre spip_cadre_block' dir='ltr'&gt;| id_mot | titre | nb | | 122 | acceptability | 1 | |185 | adaptation | 1 | | 220 | agriculture | 1 |&lt;/textarea&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>One line pour conna&#238;tre la branche Git des repos dans les sous-dossiers d'un r&#233;pertoire</title>
		<link>https://tech.gamuza.fr/One-line-pour-connaitre-la-branche-Git-des-repos-dans-les-sous-dossiers-d-un.html</link>
		<guid isPermaLink="true">https://tech.gamuza.fr/One-line-pour-connaitre-la-branche-Git-des-repos-dans-les-sous-dossiers-d-un.html</guid>
		<dc:date>2024-03-29T16:38:48Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>clem</dc:creator>


		<dc:subject>script sh</dc:subject>

		<description>&lt;p&gt;Script bash mono-ligne (&#034;one line&#034;) pour faire un &lt;i&gt;git branch -a&lt;/i&gt; et r&#233;cup&#233;rer uniquement la branche active 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;

/ 
&lt;a href="https://tech.gamuza.fr/+-script-sh-+.html" rel="tag"&gt;script sh&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;on boucle dans les sous-dossiers d'un r&#233;pertoire et on joue un &lt;code class='bash spip_code spip_code_inline' dir='ltr'&gt;git branch -a&lt;/code&gt; : la branche active est pr&#233;fix&#233;e par une &lt;strong&gt;*&lt;/strong&gt; ce qui permet de n'afficher qu'elle via un &lt;code class='bash spip_code spip_code_inline' dir='ltr'&gt;|grep ...&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Ce qui donne donc :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='4' class='spip_cadre spip_cadre_block' dir='ltr'&gt;for i in &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ls ./&lt;/code&gt;;do echo &#034;&#034;; echo $i; cd $i; git branch -a |grep '*'; cd ../; done&lt;/textarea&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<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>
<item xml:lang="fr">
		<title>Compiler imagemagick pour ajouter les delegated </title>
		<link>https://tech.gamuza.fr/Compiler-imagemagick-pour-ajouter-les-delegated.html</link>
		<guid isPermaLink="true">https://tech.gamuza.fr/Compiler-imagemagick-pour-ajouter-les-delegated.html</guid>
		<dc:date>2023-09-14T08:33:18Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Christophe</dc:creator>


		<dc:subject>tutoriel</dc:subject>
		<dc:subject>Debian</dc:subject>
		<dc:subject>serveur</dc:subject>

		<description>&lt;p&gt;&lt;strong&gt;D&#233;pannage :&lt;/strong&gt; r&#233;solution d'un probl&#232;me dans l'utilisation de &lt;i&gt;convert&lt;/i&gt; pour la conversion des jpg en pdf&lt;/p&gt;

-
&lt;a href="https://tech.gamuza.fr/-configuration-d-un-serveur-debian-.html" rel="directory"&gt;Debian&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/+-debian-+.html" rel="tag"&gt;Debian&lt;/a&gt;, 
&lt;a href="https://tech.gamuza.fr/+-serveur-+.html" rel="tag"&gt;serveur&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;&lt;md&gt;&lt;br class='autobr' /&gt;
# tranformer une image (jpg) en pdf&lt;br class='autobr' /&gt;
Si la commande &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;convert toto.jpg toto.pdf&lt;/code&gt;&lt;br class='autobr' /&gt;
vous renvoie l'erreur : &lt;br class='autobr' /&gt;
&gt;ImageMagick : No decode delegate for this image format&lt;/p&gt;
&lt;p&gt;cela veut dire que imagemagick n'est pas compil&#233; avec les bons &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;delegates&lt;/code&gt;&lt;br class='autobr' /&gt;
la commande &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;convert -list configure | grep DELEGATES&lt;/code&gt; ne doit pas vous retourner &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;jpeg&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Pour r&#233;soudre ce probl&#232;me, il faut compiler le paquet &#224; la main :&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;sudo apt update sudo apt install build-essential sudo apt install -y libjpeg-dev wget https://www.imagemagick.org/download/ImageMagick.tar.gz tar xvzf ImageMagick.tar.gz cd ImageMagick-[version_number] ./configure --disable-shared sudo make sudo make install sudo make check &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/md&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Utiliser la commande &#034;gpg&#034; dans des scripts</title>
		<link>https://tech.gamuza.fr/Utiliser-la-commande-gpg-dans-des-scripts.html</link>
		<guid isPermaLink="true">https://tech.gamuza.fr/Utiliser-la-commande-gpg-dans-des-scripts.html</guid>
		<dc:date>2023-06-30T19:29:37Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>clem</dc:creator>



		<description>&lt;p&gt;&#034;gpg&#034; est la commande utilis&#233;e pour le chiffrage de fichiers avec GnuPG : quelques syntaxes de base pour utilisation dans des scripts bash d'automatisation de t&#226;ches&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;&lt;strong&gt;NB :&lt;/strong&gt; ici (dans le cadre d'automatisation avec des scripts bash) on envisage uniquement une utilisation de GnuPG avec &lt;strong&gt;chiffrement sym&#233;trique&lt;/strong&gt; = avec une phrase de passe et non pas le syst&#232;me &#034;classique&#034; cl&#233; priv&#233;e/publique.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Chiffrer un fichier avec un mot de passe :&lt;/h2&gt;
&lt;p&gt;Chiffrer &lt;strong&gt;le_fichier.txt&lt;/strong&gt; en &lt;strong&gt;le_fichier.txt.gpg&lt;/strong&gt; avec le mot de passe &lt;strong&gt;MonSuperPass_123&lt;/strong&gt; :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;gpg -c --yes --batch --passphrase=MonSuperPass+123 le_fichier.txt&lt;/textarea&gt;
&lt;p&gt;&lt;strong&gt;Explication des options :&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;strong&gt;c&lt;/strong&gt; : chiffrement sym&#233;trique (= utilisation d'une passe-phrase)&lt;/li&gt;&lt;li&gt; &lt;strong&gt;batch&lt;/strong&gt; : mode non interactif (= ne rien demander : cf option &#034;yes&#034;)&lt;/li&gt;&lt;li&gt; &lt;strong&gt;yes&lt;/strong&gt; : r&#233;pondre &#034;oui&#034; aux &#233;ventuelles questions&lt;/li&gt;&lt;/ul&gt;&lt;h2 class=&#034;spip&#034;&gt;D&#233;chiffrer un fichier avec son mot de passe :&lt;/h2&gt;
&lt;p&gt;D&#233;chiffrer &lt;strong&gt;le_fichier.txt.gpg&lt;/strong&gt; avec le mot de passe &lt;strong&gt;MonSuperPass_123&lt;/strong&gt; :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;gpg --batch --passphrase=MonSuperPass+123 le_fichier.txt.gpg&lt;/textarea&gt;
&lt;p&gt;cette commande va cr&#233;&#233; le fichier &lt;strong&gt;le_fichier.txt&lt;/strong&gt;&lt;br class='autobr' /&gt;
&lt;a id=&#034;oneline&#034;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;One line pour d&#233;chiffrer puis re-chiffrer un ensemble de fichiers :&lt;/h2&gt;
&lt;p&gt;On veut am&#233;liorer la s&#233;curit&#233; d'un ensemble de fichiers pr&#233;c&#233;demment chiffr&#233;s avec le mot de passe &lt;strong&gt;le_passe&lt;/strong&gt; en les re-chiffrant avec le mot de passe &lt;strong&gt;MonSuperPass_123&lt;/strong&gt;&lt;br class='manualbr' /&gt;(ces fichiers sont tous situ&#233;s dans le r&#233;pertoire o&#249; est lanc&#233; la commande)&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='7' class='spip_cadre spip_cadre_block' dir='ltr'&gt;for i in &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ls *.gpg&lt;/code&gt;;do echo $i;tmp=&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;echo $i | sed 's/.gpg/ /g'&lt;/code&gt;;gpg --batch --passphrase=le_passe $i &amp;&amp; gpg -c --yes --batch --passphrase=MonSuperPass_123 $tmp &amp;&amp; rm $tmp; done&lt;/textarea&gt;&lt;hr&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; Man page de la commande &lt;strong&gt;gpg&lt;/strong&gt; : &lt;a href=&#034;https://man.docs.euro-linux.com/EL%207/man-pages-fr/gpg.1.fr.html&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://man.docs.euro-linux.com/EL%207/man-pages-fr/gpg.1.fr.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt; Le manuel officiel de GnuPG : &lt;a href=&#034;https://www.gnupg.org/gph/fr/manual.html&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://www.gnupg.org/gph/fr/manual.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<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>



</channel>

</rss>
