<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Darklg Blog | Intégration, développement web, WordPress, SEO, Productivité & caféine</title>
	<atom:link href="https://darklg.me/feed/" rel="self" type="application/rss+xml" />
	<link>https://darklg.me</link>
	<description>Intégration, développement web, WordPress, SEO, Productivité &#38; caféine</description>
	<lastBuildDate>Tue, 13 Jan 2026 10:24:00 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>Configurer son compte sur le plugin TinyPNG pour WordPress</title>
		<link>https://darklg.me/configurer-son-compte-sur-le-plugin-tinypng-pour-wordpress/</link>
					<comments>https://darklg.me/configurer-son-compte-sur-le-plugin-tinypng-pour-wordpress/#respond</comments>
		
		<dc:creator><![CDATA[Darklg]]></dc:creator>
		<pubDate>Tue, 13 Jan 2026 10:03:45 +0000</pubDate>
				<category><![CDATA[Wordpress & CMS]]></category>
		<category><![CDATA[performances]]></category>
		<guid isPermaLink="false">https://darklg.me/?p=6748</guid>

					<description><![CDATA[Le plugin TinyPNG permet d’optimiser le poids des images transférées sur un site WordPress, mais &#8230; <hr /><p>&copy; 2026 Darklg Blog - <a href="https://darklg.me/configurer-son-compte-sur-le-plugin-tinypng-pour-wordpress/">Configurer son compte sur le plugin TinyPNG pour WordPress</a></p>]]></description>
										<content:encoded><![CDATA[
<p>Le plugin TinyPNG permet d’optimiser le poids des images transférées sur un site WordPress, mais il nécessite une connexion à un compte, afin de pouvoir obtenir des crédits gratuits de conversion d’image ou acheter des crédits supplémentaires.</p>



<h2 class="wp-block-heading">Etape 1 : Remplir les réglages</h2>



<p>Tout d&rsquo;abord, accédez à la page de configuration du plugin :</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="1960" height="858" src="https://darklg.me/wp-content/uploads/2026/01/1-remplir-reglages.png?x99415" alt="1 Remplir Reglages" class="wp-image-6749" srcset="https://darklg.me/wp-content/uploads/2026/01/1-remplir-reglages.png 1960w, https://darklg.me/wp-content/uploads/2026/01/1-remplir-reglages-300x131.png 300w, https://darklg.me/wp-content/uploads/2026/01/1-remplir-reglages-500x219.png 500w, https://darklg.me/wp-content/uploads/2026/01/1-remplir-reglages-150x66.png 150w, https://darklg.me/wp-content/uploads/2026/01/1-remplir-reglages-768x336.png 768w, https://darklg.me/wp-content/uploads/2026/01/1-remplir-reglages-1536x672.png 1536w, https://darklg.me/wp-content/uploads/2026/01/1-remplir-reglages-1024x448.png 1024w" sizes="(max-width: 1960px) 100vw, 1960px" /></figure>



<p>Saisissez votre nom et mail et validez, ou alors la clé d&rsquo;API qu&rsquo;on vous a fournie. Si vous avez une clé d&rsquo;API, le reste du tutoriel n&rsquo;est pas utile, félicitations !</p>



<figure class="wp-block-image size-full"><img decoding="async" width="1628" height="424" src="https://darklg.me/wp-content/uploads/2026/01/2-cliquer-activation.png?x99415" alt="2 Cliquer Activation" class="wp-image-6751" srcset="https://darklg.me/wp-content/uploads/2026/01/2-cliquer-activation.png 1628w, https://darklg.me/wp-content/uploads/2026/01/2-cliquer-activation-300x78.png 300w, https://darklg.me/wp-content/uploads/2026/01/2-cliquer-activation-500x130.png 500w, https://darklg.me/wp-content/uploads/2026/01/2-cliquer-activation-150x39.png 150w, https://darklg.me/wp-content/uploads/2026/01/2-cliquer-activation-768x200.png 768w, https://darklg.me/wp-content/uploads/2026/01/2-cliquer-activation-1536x400.png 1536w, https://darklg.me/wp-content/uploads/2026/01/2-cliquer-activation-1024x267.png 1024w" sizes="(max-width: 1628px) 100vw, 1628px" /></figure>



<h2 class="wp-block-heading">Etape 2 : valider votre compte</h2>



<p>Un e-mail a été envoyé sur votre compte, allez vérifier dans votre boite mail, et vous devriez avoir un mail du genre :</p>



<figure class="wp-block-image size-full"><img decoding="async" width="1220" height="1130" src="https://darklg.me/wp-content/uploads/2026/01/3-activer-mail.png?x99415" alt="3 Activer Mail" class="wp-image-6750" srcset="https://darklg.me/wp-content/uploads/2026/01/3-activer-mail.png 1220w, https://darklg.me/wp-content/uploads/2026/01/3-activer-mail-300x278.png 300w, https://darklg.me/wp-content/uploads/2026/01/3-activer-mail-500x463.png 500w, https://darklg.me/wp-content/uploads/2026/01/3-activer-mail-150x139.png 150w, https://darklg.me/wp-content/uploads/2026/01/3-activer-mail-768x711.png 768w, https://darklg.me/wp-content/uploads/2026/01/3-activer-mail-1024x948.png 1024w" sizes="(max-width: 1220px) 100vw, 1220px" /></figure>



<p>Cliquez sur le bouton principal pour activer votre compte (activate your account). Vous arriverez sur une page du site TinyPNG que vous pourrez fermer.</p>



<h2 class="wp-block-heading">Etape 3 : c’est terminé !</h2>



<p>Si vous retourner sur la page de configuration du plugin TinyPNG sur WordPress et que vous rechargez la page, vous aurez normalement un message vous informant que tout est bon !</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1656" height="726" src="https://darklg.me/wp-content/uploads/2026/01/4-activation-confirmee.png?x99415" alt="4 Activation Confirmee" class="wp-image-6752" srcset="https://darklg.me/wp-content/uploads/2026/01/4-activation-confirmee.png 1656w, https://darklg.me/wp-content/uploads/2026/01/4-activation-confirmee-300x132.png 300w, https://darklg.me/wp-content/uploads/2026/01/4-activation-confirmee-500x219.png 500w, https://darklg.me/wp-content/uploads/2026/01/4-activation-confirmee-150x66.png 150w, https://darklg.me/wp-content/uploads/2026/01/4-activation-confirmee-768x337.png 768w, https://darklg.me/wp-content/uploads/2026/01/4-activation-confirmee-1536x673.png 1536w, https://darklg.me/wp-content/uploads/2026/01/4-activation-confirmee-1024x449.png 1024w" sizes="auto, (max-width: 1656px) 100vw, 1656px" /></figure>
<hr /><p>&copy; 2026 Darklg Blog - <a href="https://darklg.me/configurer-son-compte-sur-le-plugin-tinypng-pour-wordpress/">Configurer son compte sur le plugin TinyPNG pour WordPress</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://darklg.me/configurer-son-compte-sur-le-plugin-tinypng-pour-wordpress/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Utiliser le plugin Redirection sur WordPress</title>
		<link>https://darklg.me/utiliser-le-plugin-redirection-sur-wordpress/</link>
					<comments>https://darklg.me/utiliser-le-plugin-redirection-sur-wordpress/#respond</comments>
		
		<dc:creator><![CDATA[Darklg]]></dc:creator>
		<pubDate>Thu, 18 Dec 2025 10:20:56 +0000</pubDate>
				<category><![CDATA[Wordpress & CMS]]></category>
		<category><![CDATA[redirection]]></category>
		<guid isPermaLink="false">https://darklg.me/?p=6731&#038;nocache=1766049556</guid>

					<description><![CDATA[Voici les actions principales à connaître pour utiliser le plugin Redirection. Trouver les 404 prioritaires &#8230; <hr /><p>&copy; 2026 Darklg Blog - <a href="https://darklg.me/utiliser-le-plugin-redirection-sur-wordpress/">Utiliser le plugin Redirection sur WordPress</a></p>]]></description>
										<content:encoded><![CDATA[
<p><br>Voici les actions principales à connaître pour utiliser le plugin Redirection.</p>



<h2 class="wp-block-heading">Trouver les 404 prioritaires</h2>



<p>On commence par aller à la liste des erreurs 404. Dans la recherche, on va taper le mot « bot » et dans le sélecteur qui suit, sélectionner « Rechercher l&rsquo;agent utilisateur ».</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1814" height="818" src="https://darklg.me/wp-content/uploads/2025/12/redirection-filtrer.png?x99415" alt="Redirection Filtrer" class="wp-image-6738" srcset="https://darklg.me/wp-content/uploads/2025/12/redirection-filtrer.png 1814w, https://darklg.me/wp-content/uploads/2025/12/redirection-filtrer-300x135.png 300w, https://darklg.me/wp-content/uploads/2025/12/redirection-filtrer-500x225.png 500w, https://darklg.me/wp-content/uploads/2025/12/redirection-filtrer-150x68.png 150w, https://darklg.me/wp-content/uploads/2025/12/redirection-filtrer-768x346.png 768w, https://darklg.me/wp-content/uploads/2025/12/redirection-filtrer-1536x693.png 1536w, https://darklg.me/wp-content/uploads/2025/12/redirection-filtrer-1024x462.png 1024w" sizes="auto, (max-width: 1814px) 100vw, 1814px" /></figure>



<p>La liste filtrée contient majoritairement des visites de Bots.</p>



<p>On va désormais les « Grouper par URL » afin de voir les pages les plus accédées.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1814" height="720" src="https://darklg.me/wp-content/uploads/2025/12/redirection-ordonner.png?x99415" alt="Redirection Ordonner" class="wp-image-6740" style="aspect-ratio:2.5253664036076664" srcset="https://darklg.me/wp-content/uploads/2025/12/redirection-ordonner.png 1814w, https://darklg.me/wp-content/uploads/2025/12/redirection-ordonner-300x119.png 300w, https://darklg.me/wp-content/uploads/2025/12/redirection-ordonner-500x198.png 500w, https://darklg.me/wp-content/uploads/2025/12/redirection-ordonner-150x60.png 150w, https://darklg.me/wp-content/uploads/2025/12/redirection-ordonner-768x305.png 768w, https://darklg.me/wp-content/uploads/2025/12/redirection-ordonner-1536x610.png 1536w, https://darklg.me/wp-content/uploads/2025/12/redirection-ordonner-1024x406.png 1024w" sizes="auto, (max-width: 1814px) 100vw, 1814px" /></figure>



<p>On voit ici que la 404 la plus fréquente est la page /ancienne-url-produit, que les bots ont tenté de crawler 7 fois. Au survol sur la ligne, on peut cliquer sur « Ajouter une redirection »</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1806" height="401" src="https://darklg.me/wp-content/uploads/2025/12/redirection-liste-filtree.png?x99415" alt="Redirection Liste Filtree" class="wp-image-6739" style="object-fit:cover" srcset="https://darklg.me/wp-content/uploads/2025/12/redirection-liste-filtree.png 1806w, https://darklg.me/wp-content/uploads/2025/12/redirection-liste-filtree-300x67.png 300w, https://darklg.me/wp-content/uploads/2025/12/redirection-liste-filtree-500x111.png 500w, https://darklg.me/wp-content/uploads/2025/12/redirection-liste-filtree-150x33.png 150w, https://darklg.me/wp-content/uploads/2025/12/redirection-liste-filtree-768x171.png 768w, https://darklg.me/wp-content/uploads/2025/12/redirection-liste-filtree-1536x341.png 1536w, https://darklg.me/wp-content/uploads/2025/12/redirection-liste-filtree-1024x227.png 1024w" sizes="auto, (max-width: 1806px) 100vw, 1806px" /></figure>



<h2 class="wp-block-heading">Créer la redirection</h2>



<p>Une popin vient de s&rsquo;ouvrir, il faut désormais remplir l&rsquo;URL Cible, qui doit commencer par un / comme l&rsquo;ancienne URL. (On retire ce qui concerne le nom de domaine si c’est le même site)</p>



<p>Il faut également cocher la case de suppression des journaux pour retirer cette URL de la liste au dessus.</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="1216" height="416" src="https://darklg.me/wp-content/uploads/2025/12/redirection-creer.png?x99415" alt="Redirection Creer" class="wp-image-6737" style="width:825px;height:auto" srcset="https://darklg.me/wp-content/uploads/2025/12/redirection-creer.png 1216w, https://darklg.me/wp-content/uploads/2025/12/redirection-creer-300x103.png 300w, https://darklg.me/wp-content/uploads/2025/12/redirection-creer-500x171.png 500w, https://darklg.me/wp-content/uploads/2025/12/redirection-creer-150x51.png 150w, https://darklg.me/wp-content/uploads/2025/12/redirection-creer-768x263.png 768w, https://darklg.me/wp-content/uploads/2025/12/redirection-creer-1024x350.png 1024w" sizes="auto, (max-width: 1216px) 100vw, 1216px" /></figure>



<p></p>
<hr /><p>&copy; 2026 Darklg Blog - <a href="https://darklg.me/utiliser-le-plugin-redirection-sur-wordpress/">Utiliser le plugin Redirection sur WordPress</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://darklg.me/utiliser-le-plugin-redirection-sur-wordpress/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Trouver les plus grosses tables d&#8217;une base de données MySQL</title>
		<link>https://darklg.me/trouver-les-plus-grosses-tables-dune-base-de-donnees-mysql/</link>
					<comments>https://darklg.me/trouver-les-plus-grosses-tables-dune-base-de-donnees-mysql/#respond</comments>
		
		<dc:creator><![CDATA[Darklg]]></dc:creator>
		<pubDate>Sun, 11 Jul 2021 19:27:48 +0000</pubDate>
				<category><![CDATA[Développement PHP / MySQL]]></category>
		<category><![CDATA[mysql]]></category>
		<guid isPermaLink="false">https://darklg.me/?p=6697&#038;nocache=1626031377</guid>

					<description><![CDATA[Voici un snippet tout simple que j&#8217;utilise pour trouver quelle est la plus grosse table &#8230; <hr /><p>&copy; 2026 Darklg Blog - <a href="https://darklg.me/trouver-les-plus-grosses-tables-dune-base-de-donnees-mysql/">Trouver les plus grosses tables d&rsquo;une base de données MySQL</a></p>]]></description>
										<content:encoded><![CDATA[
<p>Voici un snippet tout simple que j&rsquo;utilise pour trouver quelle est la plus grosse table sur une base de données, par exemple pour alléger un backup ou un export.</p>



<div style="height: 250px; position:relative; margin-bottom: 50px;" class="wp-block-simple-code-block-ace"><pre class="wp-block-simple-code-block-ace" style="position:absolute;top:0;right:0;bottom:0;left:0" data-mode="mysql" data-theme="monokai" data-fontsize="14" data-lines="Infinity" data-showlines="true" data-copy="false">SELECT 
    table_schema AS `Base`,
    table_name AS `Table`, 
    round(((data_length + index_length) / 1024 / 1024), 2) `t_size` 
FROM information_schema.TABLES 
WHERE TABLE_SCHEMA='MABASE'
ORDER BY t_size DESC</pre></div>



<p>Si vous jouez comme moi avec une seule instance qui héberge toutes vos bases (par exemple une instance locale), vous pouvez faire sauter le <code>Where</code> et chercher dans toutes vos bases.</p>
<hr /><p>&copy; 2026 Darklg Blog - <a href="https://darklg.me/trouver-les-plus-grosses-tables-dune-base-de-donnees-mysql/">Trouver les plus grosses tables d&rsquo;une base de données MySQL</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://darklg.me/trouver-les-plus-grosses-tables-dune-base-de-donnees-mysql/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Notes sur les Mac M1 / Apple Silicon</title>
		<link>https://darklg.me/notes-sur-les-mac-m1-apple-silicon/</link>
					<comments>https://darklg.me/notes-sur-les-mac-m1-apple-silicon/#comments</comments>
		
		<dc:creator><![CDATA[Darklg]]></dc:creator>
		<pubDate>Fri, 16 Apr 2021 08:32:55 +0000</pubDate>
				<category><![CDATA[notes]]></category>
		<guid isPermaLink="false">https://darklg.me/?p=6681&#038;nocache=1618560914</guid>

					<description><![CDATA[J&#8217;en parle très souvent sur Twitter, donc autant tout compiler ici : j&#8217;ai acheté un &#8230; <hr /><p>&copy; 2026 Darklg Blog - <a href="https://darklg.me/notes-sur-les-mac-m1-apple-silicon/">Notes sur les Mac M1 / Apple Silicon</a></p>]]></description>
										<content:encoded><![CDATA[
<p>J&rsquo;en parle très souvent sur Twitter, donc autant tout compiler ici : j&rsquo;ai acheté un Macbook Air m1 d&rsquo;entrée de gamme pour bosser en déplacement, et pour m&rsquo;éviter de débrancher mon fidèle Macbook Pro 15&Prime; avec tous ses câbles si je veux bosser sur un coin de table.</p>



<h2 class="wp-block-heading">Développement</h2>



<ul class="wp-block-list"><li>Si vous utilisez <strong>Brew</strong>, attention : le dossier d’installation change, ça n&rsquo;est plus <code>/usr/local</code> mais <code>/opt/homebrew</code>.</li><li><strong>Docker</strong> : Je n&rsquo;ai pas rencontré de souci avec la <a href="https://www.docker.com/blog/released-docker-desktop-for-mac-apple-silicon/" data-type="URL" data-id="https://www.docker.com/blog/released-docker-desktop-for-mac-apple-silicon/" target="_blank" rel="noreferrer noopener">release officielle de la version m1</a>. Il faut faire attention à trouver des images compatibles arm64/v8, sinon vous êtes partis pour une descente aux enfers. Je ne suis pas un expert en Docker, mais sans cache, mes scripts étaient 10 à 15x plus lents à s&rsquo;exécuter par rapport à un environnement natif. C’est assez similaire à la version Intel donc. Edit du 09/10/2022 : Un réglage de <a href="https://www.docker.com/blog/speed-boost-achievement-unlocked-on-docker-desktop-4-6-for-mac/" data-type="URL" data-id="https://www.docker.com/blog/speed-boost-achievement-unlocked-on-docker-desktop-4-6-for-mac/" target="_blank" rel="noreferrer noopener">Docker améliore énormément les perfs.</a></li><li><strong>Xcode</strong> : la réinstallation de ce macbook m&rsquo;a pris 7h. 6h pour télécharger (avé la fibre) et installer correctement Xcode, 1h pour <a href="https://darklg.me/installer-rapidement-ses-logiciels-sur-macos/" data-type="URL" data-id="https://darklg.me/installer-rapidement-ses-logiciels-sur-macos/">lancer les dotfiles.</a> ça a peut-être changé depuis février 2021, mais pour moi ça a ramé, planté, etc. Et vu que Xcode est nécessaire pour pas mal de softs en ligne de commande, vous êtes prévenu-e-s.</li><li>J&rsquo;ai installé Apache / PHP / MySQL en natif <strong>via brew</strong>. En moyenne mes scripts sont <strong>2x plus rapides</strong> que sur mon Macbook Pro 15&Prime; de 2018. Processeur ? SSD ? Peu importe, c’est fabuleux.</li></ul>



<h2 class="wp-block-heading">Usage Général</h2>



<ul class="wp-block-list"><li>Si une application n’est pas compatible, que ça soit en ligne de commande ou via un logiciel classique, <strong>la traduction avec Rosetta 2 prendra un moment la première fois</strong>. Dans les faits, ça semble avoir planté pendant 30 secondes, puis l&rsquo;app se lance. Les fois suivantes le lancement a une durée classique.</li><li>Certaines apps qui ne sont pas compatibles &#8211; ou pas entièrement &#8211; brûlent la batterie : <strong>Spotify / Dropbox / Chrome / etc</strong>.  Celles qui sont compatibles ont par contre un <strong>lancement instantané,</strong> et apparaissent rarement dans les « apps à haute consommation d&rsquo;énergie ». Notamment Sketch</li><li>Pour les habitué-e-s d’iOS, ça ne vous surprendra pas : <strong>Safari est ultra réactif,</strong> c’est instantané, c’est une merveille, c’est génial.</li><li>Les apps iPhone/iPad disponibles c’est très pratique et marrant, même si le rendu n’est <strong>pas toujours fameux</strong> ( pensez à un site mobile qu&rsquo;on a étiré sans faire de version Desktop )</li><li>La <strong>batterie tient au grand minimum 5h</strong> sans se restreindre, et évidemment sans chauffer. Au pire des cas, j’ai juste eu le milieu du dessous du macbook un peu tiède. </li><li>Le mac est toujours allumé, donc il <strong>sort de veille très vite,</strong> et les programmes comme Dropbox se mettent tranquillement à jour en fond. En prenant en compte que ce dernier n&rsquo;est pas optimisé, la batterie est descendue de ~30% en une semaine <strong>quand je ne l&rsquo;ai pas utilisé.</strong>  </li><li>On est vraiment sur un paradigme type iPad où on ne va pas laisser l&rsquo;ordinateur en charge, mais plutôt le mettre à charger <strong>quelques heures au besoin.</strong> Actuellement je le charge toutes les semaines ou deux semaines.</li><li>J&rsquo;ai pris le modèle <strong>8go de RAM</strong>, je n&rsquo;ai pas vu d&rsquo;impact sur la perf. Petit regret pour les 256go de disque dur, mais c’est sensé être un macbook de dépannage. Je n&rsquo;ai pas eu le souci de <a href="https://www.mac4ever.com/actu/161265_une-usure-excessive-pour-les-ssd-des-mac-ou-des-donnees-erronees" data-type="URL" data-id="https://www.mac4ever.com/actu/161265_une-usure-excessive-pour-les-ssd-des-mac-ou-des-donnees-erronees">durée de vie des SSD</a>, mais je n&rsquo;ai pas un usage assez intense.</li><li>Il n&rsquo;y a le support que <strong>pour un seul écran externe</strong> sur le MacBook. Pour moi c’est pénalisant pour l&rsquo;instant pour m&rsquo;en servir à plein temps, vu que je bosse avec deux écrans externes ( je suis incapable d&rsquo;utiliser les spaces, déso pas déso )</li></ul>



<p>Attention : cet article est vivant, ces notes sont vouées à évoluer.</p>
<hr /><p>&copy; 2026 Darklg Blog - <a href="https://darklg.me/notes-sur-les-mac-m1-apple-silicon/">Notes sur les Mac M1 / Apple Silicon</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://darklg.me/notes-sur-les-mac-m1-apple-silicon/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Faire un backup automatisé de son site avec son NAS Synology</title>
		<link>https://darklg.me/faire-un-backup-automatise-de-son-site-avec-son-nas-synology/</link>
					<comments>https://darklg.me/faire-un-backup-automatise-de-son-site-avec-son-nas-synology/#respond</comments>
		
		<dc:creator><![CDATA[Darklg]]></dc:creator>
		<pubDate>Sat, 13 Mar 2021 21:21:41 +0000</pubDate>
				<category><![CDATA[Bout de code]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[backups]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[shell]]></category>
		<guid isPermaLink="false">https://darklg.me/?p=6664&#038;nocache=1615667072</guid>

					<description><![CDATA[Vous avez pu le voir récemment avec l&#8217;incendie chez OVH, il y a toujours une &#8230; <hr /><p>&copy; 2026 Darklg Blog - <a href="https://darklg.me/faire-un-backup-automatise-de-son-site-avec-son-nas-synology/">Faire un backup automatisé de son site avec son NAS Synology</a></p>]]></description>
										<content:encoded><![CDATA[
<p>Vous avez pu le voir récemment avec <a rel="noreferrer noopener" href="https://www.ovh.com/fr/news/presse/cpl1785.incendie-notre-site-strasbourg" data-type="URL" data-id="https://www.ovh.com/fr/news/presse/cpl1785.incendie-notre-site-strasbourg" target="_blank">l&rsquo;incendie chez OVH</a>, il y a toujours une bonne raison de rajouter un support supplémentaire de backup, pour avoir un autre accès rapide à ses données pour remettre son site en service.</p>



<p>Pourquoi donc un <strong>NAS Synology</strong> ? Parce que j&rsquo;en ai un depuis des années, que la communauté est assez énorme, et que c’est somme toute assez simple à installer : On le branche à sa box, au courant, on installe et on l&rsquo;oublie. Si ça vous va, appelons le « <strong>Syno</strong> » pour la suite, ça sera plus simple.</p>



<p>Ce tutoriel va vous guider dans la mise en place d&rsquo;un <strong>backup des données</strong> depuis votre site, récupérées <strong>automatiquement</strong> par le Syno depuis le ou les sites. Pourquoi ne pas les envoyer depuis le site ? </p>



<ul class="wp-block-list"><li>Parce que les accès au Syno devraient être <strong>disponibles sur chaque serveur distant,</strong> ce qui évite de devoir changer tous les accès si un client tombe dessus. </li><li>Parce que tous les serveurs ne peuvent envoyer des données à distance automatiquement</li><li>Parce que vous pourrez <strong>consulter vos logs</strong> à un seul endroit, ce qui est assez pratique.</li></ul>



<p>Evidemment, ça ne sera pas votre seul backup, ça ne sera pas le plus redondant et ça vous ne vous dispense pas d&rsquo;observer la <a lang="en" rel="noreferrer noopener" href="https://www.nakivo.com/blog/3-2-1-backup-rule-efficient-data-protection-strategy/" data-type="URL" data-id="https://www.nakivo.com/blog/3-2-1-backup-rule-efficient-data-protection-strategy/" target="_blank">règle 3-2-1 [en]</a>. Mais ça vous fera potentiellement un backup accessible <strong>même sans Internet</strong>, qui pourra entre autres vous servir pour bosser en local sur des données fraîches.</p>



<p>Note : <strong>si vous avez un Syno récent</strong>, vérifiez si vous pouvez <a rel="noreferrer noopener" href="https://www.synology.com/fr-fr/dsm/packages/ActiveBackup" data-type="URL" data-id="https://www.synology.com/fr-fr/dsm/packages/ActiveBackup" target="_blank">installer Active Backup</a>, ça vous évitera une bonne partie du tuto dans votre terminal et ça sera un peu plus maniable. Evidemment, moi j&rsquo;ai un vieux Syno donc ¯\_(ツ)_/¯.</p>



<p>Note 2 : On est encore sur une version un peu brouillon de l&rsquo;article, mais j&rsquo;ai tout testé comme il faut.</p>



<div class="wp-block-cover has-background-dim" style="background-image:url(https://darklg.me/wp-content/uploads/2021/03/alex-cheung-gqdpafwdsyk-unsplash-500x333.jpg)"><div class="wp-block-cover__inner-container">
<p class="has-text-align-center has-large-font-size"></p>
</div></div>



<h2 class="wp-block-heading">Créer le dossier de destination</h2>



<ul class="wp-block-list"><li>Premier point tout bête, <strong>mettez votre synology à jour</strong>.</li><li>Accédez au Panneau de configuration du back-office de votre NAS depuis votre navigateur via un user <strong>admin</strong>.</li><li>Passez en <strong>mode avancé</strong> ( toutes les icônes visibles )</li><li>Créez un nouveau Dossier Partagé nommé « Backups » ( imaginatif hein ) qui sera restreint aux admins pour le droit d&rsquo;écriture. Donnez à vos utilisateurs habituels un droit de lecture, bien entendu.</li></ul>



<h2 class="wp-block-heading">Configurer l’accès SSH</h2>



<ul class="wp-block-list"><li>Créez un <strong>utilisateur spécifique</strong> aux backups. N&rsquo;oubliez pas de lui donner les droits d&rsquo;écriture au dossier Backups. Mettez le au niveau admin sinon ça coincera avec le SSH. </li><li>Activez les dossiers utilisateurs dans Utilisateur / Avancé / <strong>Activer le service d’accueil utilisateur </strong>( ça sera utile pour les clés SSH ).</li><li><strong>Activez le service SSH </strong>dans « Terminal &amp; SNMP »</li><li>Dans votre terminal, accédez au NAS ( <code>ssh monuser@ipdunas</code> ) et tapez votre mot de passe. ( Vous pouvez ajouter votre clé SSH pour aller plus vite la prochaine fois )</li><li>Générez une clé SSH ( <code>ssh-keygen -t dsa</code> ) et <strong>notez le contenu de la clé publique </strong>( fichier .pub dans ~/.ssh/ ) qui vous sera utile pour vos serveurs.</li><li>Vérifiez les permissions des fichiers liés à SSH avec les commandes suivantes. </li></ul>



<div style="height: 250px; position:relative; margin-bottom: 50px;" class="wp-block-simple-code-block-ace"><pre class="wp-block-simple-code-block-ace" style="position:absolute;top:0;right:0;bottom:0;left:0" data-mode="sh" data-theme="monokai" data-fontsize="14" data-lines="Infinity" data-showlines="true" data-copy="false">chmod 700 ~/.ssh
chmod 600 ~/.ssh/*
chmod 644 -f ~/.ssh/*.pub ~/.ssh/authorized_keys ~/.ssh/known_hosts</pre></div>



<h2 class="wp-block-heading">Créer le script de backup</h2>



<p>Ici, rien d&rsquo;extraordinaire, on <strong>crée un fichier shell</strong> dans lequel on va mettre des appels à rsync qui vont synchroniser un dossier distant (votre site) avec un dossier sur votre NAS. On ne <strong>détruit aucun fichier</strong>, et si une copie plus récente avec le même nom existe, on <strong>archive l’ancienne</strong> avec une date spécifique. Sauvegardez le sous un nom simple comme <code>backup.sh</code> et <strong>notez le chemin absolu</strong> vers ce fichier.</p>



<div style="height: 250px; position:relative; margin-bottom: 50px;" class="wp-block-simple-code-block-ace"><pre class="wp-block-simple-code-block-ace" style="position:absolute;top:0;right:0;bottom:0;left:0" data-mode="sh" data-theme="monokai" data-fontsize="14" data-lines="Infinity" data-showlines="true" data-copy="false">#!/bin/bash

rsync \
    -ruvzb \
    --backup-dir=_old \
    --suffix="-old-$(date +'%m%d%Y')" \
    monclient@monclient.com:/dossier-backups/ \
    /volume1/Backups/clients/monclient/;</pre></div>



<p>Evidemment, <strong>lancez le </strong>une fois pour voir. Vous devrez notamment ajouter votre clé SSH publique au serveur distant. ( Copier le contenu du fichier .pub cité plus haut dans le fichier ~/.ssh/authorized_keys sur le serveur distant : je ferais un tuto à part si ça intéresse quelqu&rsquo;un )</p>



<h2 class="wp-block-heading">Programmer le backup</h2>



<ul class="wp-block-list"><li>On retourne dans le back-office du Syno, dans la partie « Planificateur de tâches ».</li><li>Créez une nouvelle « <strong>tâche planifiée</strong> » de type « script défini par l&rsquo;utilisateur ».</li><li>Nommez la tâche « backup », activez la et <strong>assignez la à l&rsquo;utilisateur backup</strong>.</li><li><strong>Programmez la </strong>par exemple à 3h du matin, mais vous pouvez aussi bien la lancer toutes les 6h pour une sauvegarde plus fréquente.</li><li>Dans les paramètres, lancez le script suivant avec le chemin de fichier que vous aurez noté plus haut.</li></ul>



<div style="height: 250px; position:relative; margin-bottom: 50px;" class="wp-block-simple-code-block-ace"><pre class="wp-block-simple-code-block-ace" style="position:absolute;top:0;right:0;bottom:0;left:0" data-mode="sh" data-theme="monokai" data-fontsize="14" data-lines="Infinity" data-showlines="true" data-copy="false">/bin/bash /var/services/homes/MonBelUserBackup/backup.sh </pre></div>



<ul class="wp-block-list"><li>Sauvegardez, et dans les Paramètres du planificateur, <strong>enregistrez les résultats de la sortie </strong>dans le dossier des backups. ça vous permettra de vérifier si tout marche bien demain matin.</li></ul>



<h2 class="wp-block-heading">Ajouter un projet</h2>



<ul class="wp-block-list"><li>Initialisez une sauvegarde automatique sur votre serveur client. Par exemple : mysqldump pour sauvegarder la base de données, copier le contenu d&rsquo;un fichier wp-config, etc, via un crontab ou autre.</li><li><strong>Notez le dossier</strong> du backup des bases de données, et le dossier de vos uploads. Votre code est normalement sauvegardé via git, non ? <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </li><li>Si votre base comporte un nom spécifique au jour, mettez un script de <strong>suppression automatique</strong> des fichiers les plus anciens.</li><li>Créez un <strong>dossier dédié</strong> sur votre Syno pour ce client / projet.</li><li>Ajoutez au script sur votre Syno <strong>de nouvelles lignes pour chaque dossier</strong> que vous souhaitez sauvegarder automatiquement. ( on peut optimiser cette partie mais ça n&rsquo;est pas le sujet )</li><li><strong>Testez le script</strong> pour être sûrs que le backup se lance bien. </li><li><strong>Testez le backup</strong> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li></ul>



<h2 class="wp-block-heading">Et maintenant ? On teste encore !</h2>



<ul class="wp-block-list"><li>Si vous n&rsquo;avez rien, <strong>créez un cahier de recette</strong>, même minimal. Ajouter des lignes fonctionnelles à vérifier lors de vos tests. Par exemple : On accède à la page d&rsquo;accueil sans erreur visible. On peut se connecter avec un login / password. Un formulaire de contact envoie bien un mail à l&rsquo;adresse voulue. Etc.</li><li>Des tests fonctionnels et unitaires, c’est le top. Mais qui a le temps ? #troll</li><li><strong>Préparez un plan de reprise d&rsquo;activité simplifié.</strong> Simulez plusieurs problèmes type, imaginez des solutions, et testez les régulièrement.</li><li><strong>Surveillez l&rsquo;espace disque</strong>. Le synology c’est magique, car il vous avertit, mais sait-on jamais. </li></ul>



<p>Je me sers de ces backups pour travailler en local sur le projet afin de vérifier de première main si tout fonctionne. Via mon activité freelance, j&rsquo;ai une prestation de maintenance WordPress qui comprend le déroulé ponctuel d&rsquo;un cahier de recettes sur un site et un backup, ce qui permet d&rsquo;être sûr de pouvoir s&rsquo;y retrouver en cas de souci.</p>



<p>Grâce à <a rel="noreferrer noopener" href="https://todoist.com/fr" data-type="URL" data-id="https://todoist.com/fr" target="_blank">Todoist</a>, j&rsquo;ai des <strong>tâches récurrentes</strong> qui me permettent de vérifier ponctuellement si tout va bien, sans y penser. ( Et je backup aussi Todoist à part, merci la paranoia )</p>



<p>N&rsquo;hésitez pas à me signaler dans les commentaires si vous avez besoin d&rsquo;un éclaircissement ou si j&rsquo;ai dit une bêtise, cet article me servira également de documentation pour le futur, donc autant vous faire bosser un peu <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </p>



<p>Photo par <a rel="noreferrer noopener" href="https://unsplash.com/@alexcpl?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText" target="_blank">Alex Cheung</a> sur <a rel="noreferrer noopener" href="/s/photos/synology?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText" target="_blank">Unsplash</a>.</p>
<hr /><p>&copy; 2026 Darklg Blog - <a href="https://darklg.me/faire-un-backup-automatise-de-son-site-avec-son-nas-synology/">Faire un backup automatisé de son site avec son NAS Synology</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://darklg.me/faire-un-backup-automatise-de-son-site-avec-son-nas-synology/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Forcer le HTTPS avec Apache</title>
		<link>https://darklg.me/forcer-le-https-avec-apache/</link>
					<comments>https://darklg.me/forcer-le-https-avec-apache/#respond</comments>
		
		<dc:creator><![CDATA[Darklg]]></dc:creator>
		<pubDate>Tue, 26 Jan 2021 16:55:20 +0000</pubDate>
				<category><![CDATA[Bout de code]]></category>
		<category><![CDATA[Référencement]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[https]]></category>
		<guid isPermaLink="false">https://darklg.me/?p=6658&#038;nocache=1611679909</guid>

					<description><![CDATA[Aujourd&#8217;hui, le https est devenu quasi obligatoire, que ce soit pour la confidentialité des données, &#8230; <hr /><p>&copy; 2026 Darklg Blog - <a href="https://darklg.me/forcer-le-https-avec-apache/">Forcer le HTTPS avec Apache</a></p>]]></description>
										<content:encoded><![CDATA[
<p>Aujourd&rsquo;hui, le https est devenu quasi obligatoire, que ce soit pour la confidentialité des données, pour le SEO, ou tout simplement pour ne pas avoir l&rsquo;icône « site non sécurisé » dans la barre d&rsquo;adresses du navigateur.<br><br>Pour ne pas oublier, voici comment forcer la redirection avec Apache :</p>



<div style="height: 250px; position:relative; margin-bottom: 50px;" class="wp-block-simple-code-block-ace"><pre class="wp-block-simple-code-block-ace" style="position:absolute;top:0;right:0;bottom:0;left:0" data-mode="plain_text" data-theme="monokai" data-fontsize="14" data-lines="Infinity" data-showlines="true" data-copy="false">&lt;IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
&lt;/IfModule></pre></div>



<p>Dans la même veine, voici un snippet pour <a href="https://darklg.me/forcer-les-www-dans-un-nom-de-domaine/?nocache=1611680076" data-type="post" data-id="315">forcer les www dans un nom de domaine</a>.</p>
<hr /><p>&copy; 2026 Darklg Blog - <a href="https://darklg.me/forcer-le-https-avec-apache/">Forcer le HTTPS avec Apache</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://darklg.me/forcer-le-https-avec-apache/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Contrôler une application MacOS avec raccourcis clavier depuis le Terminal</title>
		<link>https://darklg.me/controler-une-application-macos-avec-raccourcis-clavier-depuis-le-terminal/</link>
					<comments>https://darklg.me/controler-une-application-macos-avec-raccourcis-clavier-depuis-le-terminal/#comments</comments>
		
		<dc:creator><![CDATA[Darklg]]></dc:creator>
		<pubDate>Thu, 07 Jan 2021 09:32:34 +0000</pubDate>
				<category><![CDATA[Bout de code]]></category>
		<category><![CDATA[Productivité]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[osascript]]></category>
		<category><![CDATA[shell]]></category>
		<guid isPermaLink="false">https://darklg.me/?p=6648&#038;nocache=1610011437</guid>

					<description><![CDATA[osascript est une ressource indispensable pour contrôler ses applications via le Terminal sur MacOS. Je &#8230; <hr /><p>&copy; 2026 Darklg Blog - <a href="https://darklg.me/controler-une-application-macos-avec-raccourcis-clavier-depuis-le-terminal/">Contrôler une application MacOS avec raccourcis clavier depuis le Terminal</a></p>]]></description>
										<content:encoded><![CDATA[
<p><strong>osascript</strong> est une ressource indispensable pour contrôler ses applications via le Terminal sur MacOS. Je viens de découvrir, des années après tout le monde, qu&rsquo;on peut déclencher un raccourci clavier dans une app.</p>



<p>Ci-dessous un exemple avec un snippet qui se déclenche lors d&rsquo;un lancement de projet sur ma machine via le Terminal. Rien de fou, il active l&rsquo;application « Toggl », arrête le dernier timer et en relance un avec le mot « project », mais ça me permet de ne pas oublier de tracker mon temps.</p>



<div style="height: 250px; position:relative; margin-bottom: 50px;" class="wp-block-simple-code-block-ace"><pre class="wp-block-simple-code-block-ace" style="position:absolute;top:0;right:0;bottom:0;left:0" data-mode="sh" data-theme="monokai" data-fontsize="14" data-lines="Infinity" data-showlines="true" data-copy="false">#!/bin/bash

osascript -e '
-- Ouvrons TogglDesktop
tell application "TogglDesktop"
    activate
end tell
-- Petite pause
delay 0.5
-- On arrête le dernier timer avec CMD+S
tell application "System Events"
    key down {command}
    keystroke "s"
    key up {command}
end tell
-- Nouveau timer
tell application "System Events"
    key down {command}
    keystroke "n"
    key up {command}
end tell
-- Petite pause
delay 0.5
tell application "System Events"
    -- on tape le nom du projet au clavier
    keystroke "project"
    -- on valide au retour chariot (Entrée)
    keystroke return
end tell';
</pre></div>



<p>Après le <a href="https://darklg.me/controler-spotify-depuis-son-terminal-macos/?nocache=1610011878" data-type="post" data-id="6330">contrôle de Spotify</a>, on passe de plus en plus de l&rsquo;astuce amusante à l&rsquo;automatisation très utile.</p>



<p>Si vous souhaitez explorer ça, voici une très belle <a rel="noreferrer noopener" lang="en" href="https://eastmanreference.com/complete-list-of-applescript-key-codes" data-type="URL" data-id="https://eastmanreference.com/complete-list-of-applescript-key-codes" target="_blank">référence des keycodes macOS [EN]</a>, ou le <a href="https://en.wikibooks.org/wiki/AppleScript_Programming/System_Events" data-type="URL" data-id="https://en.wikibooks.org/wiki/AppleScript_Programming/System_Events" target="_blank" lang="en" rel="noreferrer noopener">WikiBooks sur System Events [EN]</a>.</p>
<hr /><p>&copy; 2026 Darklg Blog - <a href="https://darklg.me/controler-une-application-macos-avec-raccourcis-clavier-depuis-le-terminal/">Contrôler une application MacOS avec raccourcis clavier depuis le Terminal</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://darklg.me/controler-une-application-macos-avec-raccourcis-clavier-depuis-le-terminal/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Démarrer rapidement et facilement un projet avec un script</title>
		<link>https://darklg.me/demarrer-rapidement-et-facilement-un-projet-avec-un-script/</link>
					<comments>https://darklg.me/demarrer-rapidement-et-facilement-un-projet-avec-un-script/#comments</comments>
		
		<dc:creator><![CDATA[Darklg]]></dc:creator>
		<pubDate>Wed, 23 Dec 2020 09:40:04 +0000</pubDate>
				<category><![CDATA[Productivité]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[projet]]></category>
		<category><![CDATA[shell]]></category>
		<guid isPermaLink="false">https://darklg.me/?p=6627&#038;nocache=1608714954</guid>

					<description><![CDATA[La dernière fois que vous avez démarré un projet, comment avez-vous fait ? Piqué des &#8230; <hr /><p>&copy; 2026 Darklg Blog - <a href="https://darklg.me/demarrer-rapidement-et-facilement-un-projet-avec-un-script/">Démarrer rapidement et facilement un projet avec un script</a></p>]]></description>
										<content:encoded><![CDATA[
<p>La dernière fois que vous avez démarré un projet, comment avez-vous fait ? Piqué des bouts du dernier projet sorti ? Cherché dans votre historique Google à la recherche du bout de code magique de la dernière fois ? Joué avec votre mémoire pour retaper les 25 commandes du terminal qui sont utiles ? </p>



<p>«&nbsp;Ah mince, elles sont dans le désordre du coup ça marche pas. Oh, déjà midi, comme le temps file&nbsp;».<br><br>Et si vous aviez un script pour faire le boulot ? Un script qui pourrait vous générer un projet prêt à démarrer, et ce en quelques instants, avec uniquement des interventions de votre part au début pour répondre à des questions basiques ? </p>



<p>C’est ce que je fais depuis quelques années, et je vais tenter de vous convaincre que c’est la voie à suivre à tout prix.</p>



<h2 class="wp-block-heading"><strong>Pourquoi avoir un script ?</strong></h2>



<p>Certains appellent ça un « installer », d’autres un « bootstraper » ou un « scaffolder ». Ça permet de créer toujours la même structure pour facilement reprendre en main un projet, et d’éviter au maximum les fichiers copiés-collés entre les projets.</p>



<p>Ainsi, on va plus vite, sans risquer d’oublier une étape, et on évite les erreurs d’inattention.</p>



<p>Pour moi, c’est vital pour ne pas me lasser en me concentrant sur les tâches essentielles. Je peux améliorer progressivement mes process, centraliser des snippets et de la connaissance.&nbsp;</p>



<p>C’est aussi très intéressant d’un point de vue historique, pour retracer des choix technologiques dans une société, et familiariser ses nouveaux salariés avec un process clair, tout en leur laissant soumettre leurs briques à l’edifice.</p>



<h2 class="wp-block-heading"><strong>Comment ça marche ?</strong></h2>



<p>Au prochain démarrage de projet, notez vos actions et les grandes étapes jusqu’au moment où vous commencerez vraiment à travailler sur le projet et pas sur la mise en place.</p>



<p>L’idée est simple : vous allez en automatiser un maximum, progressivement.&nbsp;</p>



<p>Sur votre plateforme git préférée, créez un repository nommé «&nbsp;project-starter&nbsp;» ( ou&nbsp; «&nbsp;jean-michel-installer&nbsp;», vous êtes libres hein ), dans lequel vous allez créer un seul fichier nommé install.sh</p>



<p>Dedans, vous mettrez uniquement ce code :</p>



<div style="height: 250px; position:relative; margin-bottom: 50px;" class="wp-block-simple-code-block-ace"><pre class="wp-block-simple-code-block-ace" style="position:absolute;top:0;right:0;bottom:0;left:0" data-mode="sh" data-theme="monokai" data-fontsize="14" data-lines="Infinity" data-showlines="true" data-copy="false">#!/bin/bash

# Nom du projet
_project_id='monprojet';

# Etape 1 : Créer le dossier
mkdir "${_project_id}";
cd "${_project_id}";

# Dernière étape : C'est fini !
echo "${_project_id} a été initialisé. Au boulot !";</pre></div>



<p>Ensuite, et c’est probablement le plus important, documentez dans le README: «&nbsp; Etape 1 : Ce script va créer un dossier et s’y rendre&nbsp;» puis commitez, et poussez vos modifications !</p>



<h2 class="wp-block-heading"><strong>C’est spartiate. On y met quoi maintenant ?</strong></h2>



<p>Vous l&rsquo;aurez compris, ça n&rsquo;est que le début. Voici quelques pistes, en vrac :</p>



<h3 class="wp-block-heading">Poser des questions pour configurer :</h3>



<div style="height: 250px; position:relative; margin-bottom: 50px;" class="wp-block-simple-code-block-ace"><pre class="wp-block-simple-code-block-ace" style="position:absolute;top:0;right:0;bottom:0;left:0" data-mode="sh" data-theme="monokai" data-fontsize="14" data-lines="Infinity" data-showlines="true" data-copy="false"># Stocker une valeur dans une variable
read -p "Quel est l’id du projet ? " project_id;

# On confirme le retour
echo "ID du projet : ${project_id}";

# Question à choix multiples
_q_project_type=$(cat &lt;&lt;EOF
Quel est le type du projet ?
- 1 : WordPress ( Par défaut )
- 2 : Magento
[1/2]
EOF
);

# On demande
read -p "${_q_project_type} : " project_type

# Si la valeur n’est pas bonne : on met la valeur par défaut
if [[ "${project_type}" != '1' &amp;&amp; "${project_type}" != '2' ]];then
    project_type='1';
fi;

# On confirme le retour
echo "Type du projet : ${project_type}";
</pre></div>



<h3 class="wp-block-heading">Vérifier que le poste de travail a tous les softs nécessaires</h3>



<div style="height: 250px; position:relative; margin-bottom: 50px;" class="wp-block-simple-code-block-ace"><pre class="wp-block-simple-code-block-ace" style="position:absolute;top:0;right:0;bottom:0;left:0" data-mode="sh" data-theme="monokai" data-fontsize="14" data-lines="Infinity" data-showlines="true" data-copy="false"># Test commands
main_commands="curl git yarn wp";
for i in $main_commands
do
    command -v "$i" >/dev/null 2>&amp;1 || { echo >&amp;2 "Il manque \"${i}\"."; exit 1; }
done;</pre></div>



<h3 class="wp-block-heading">Cloner un projet « squelette »</h3>



<div style="height: 250px; position:relative; margin-bottom: 50px;" class="wp-block-simple-code-block-ace"><pre class="wp-block-simple-code-block-ace" style="position:absolute;top:0;right:0;bottom:0;left:0" data-mode="sh" data-theme="monokai" data-fontsize="14" data-lines="Infinity" data-showlines="true" data-copy="false"># Récupérer le repository
git clone https://github.com/darklg/wputilities.git;
# Retirer le tracking ( c'est un exemple hein )
rm -rf wputilities/.git*
# Copier tous les fichiers dnas le dossier courant
cp -r wputilities/* .
# Supprimer le dossier temporaire
rm -rf wputilities/;</pre></div>



<h3 class="wp-block-heading">Copier des fichiers depuis votre starter</h3>



<div style="height: 250px; position:relative; margin-bottom: 50px;" class="wp-block-simple-code-block-ace"><pre class="wp-block-simple-code-block-ace" style="position:absolute;top:0;right:0;bottom:0;left:0" data-mode="sh" data-theme="monokai" data-fontsize="14" data-lines="Infinity" data-showlines="true" data-copy="false"># On récupère le chemin du script qui est installé ailleurs
_JEANMICH_SCRIPT_DIR="$( dirname "${BASH_SOURCE[0]}" )/";
# On copie les fichiers au bon endroit.
cp "${_JEANMICH_SCRIPT_DIR}files/gulpfile.js" gulpfile.js;</pre></div>



<h3 class="wp-block-heading">Creer un commit à la volée&nbsp;</h3>



<div style="height: 250px; position:relative; margin-bottom: 50px;" class="wp-block-simple-code-block-ace"><pre class="wp-block-simple-code-block-ace" style="position:absolute;top:0;right:0;bottom:0;left:0" data-mode="sh" data-theme="monokai" data-fontsize="14" data-lines="Infinity" data-showlines="true" data-copy="false"># On ajoute tout
git add -A
# On crée le commit
git commit --no-verify -m "Etape 1 : Fichiers initiaux" --quiet;</pre></div>



<h3 class="wp-block-heading">Et bien d’autres</h3>



<ul class="wp-block-list"><li>Créer des sous-dossiers .</li><li>Chercher et remplacer dans un fichier.</li><li>Déclencher des actions : npm install / wp cli / plugins WordPress / plugins jQuery / composer / gulp / que sais-je&nbsp;</li><li>Télécharger des fichiers distants pour les inclure en local.</li></ul>



<h2 class="wp-block-heading">Pour conclure, quelques notes</h2>



<h3 class="wp-block-heading">Ça se vend</h3>



<p>Il ne faut pas le voir comme si on vendait les 3 clics qui ont permis d’initialiser le projet. On vend aussi la main d’oeuvre derrière qui a permis d’arriver à un niveau de qualité fiable et reproductible.</p>



<h3 class="wp-block-heading">Ça se monte progressivement</h3>



<p>Il ne faut pas tenter de tout faire d’un coup : itérez avec les projets, testez, recréez des projets dans le vide avec de mauvais paramètres, faites le lancer par le stagiaire de 3ème sans lui expliquer et observez.</p>



<p>C’est d’ailleurs une excellente façon de <a href="https://darklg.me/500-days-of-github/">démarrer un #commitdujour.</a></p>



<h3 class="wp-block-heading">Ça se partage</h3>



<p>J’ai appris en lisant des publications d’autres personnes, que ça soit sur Stack Overflow (« ouh la honte »), Medium, Github, des blogs, Twitter et j’en passe. Prenez ce qui vous intéresse, améliorez le et redistribuez le.</p>



<h3 class="wp-block-heading">Il y a des outils existants</h3>



<p>Il y a des systèmes spécialisés comme <a rel="noreferrer noopener" href="https://yeoman.io/" target="_blank">Yeoman (EN)</a> qui ne se concentrent souvent que sur la partie Front, et pas sur la partie back-end ou projet. Je n’ai jamais réussi à les intégrer dans ma méthodologie car je travaille souvent en full-stack sur des CMS avec beaucoup d’intervenants différents. Ça ne prenait en main qu’une petite partie du projet, ou ça obligeait à une migration de techno trop violente. Une grande partie des actions se boucle souvent en quelques lignes de Shell simples, donc autant jouer avec les cartes qu&rsquo;on a en main.</p>



<p>J&rsquo;ai moi-même créé <a rel="noreferrer noopener" href="https://github.com/WordPressUtilities/WPUInstaller" target="_blank">WPUInstaller</a> et <a rel="noreferrer noopener" href="https://github.com/Darklg/InteStarter" target="_blank">InteStarter</a> pour démarrer plus vite sur ce type de prod, et d&rsquo;autres sont en cours pour d&rsquo;autres aspects de mon travail.</p>



<h3 class="wp-block-heading">« gneugneugneu »</h3>



<p>« gneugneugneu je le fais déjà il y a rien de neuf » : Alors publiez-le, parlez-en, popularisez le concept ! C’est tellement rageant de voir des gens qui perdent des matinées ou des journées juste pour « démarrer un projet ».</p>



<p>Je suis persuadé que la popularisation de ce concept simple offrirait une main tendue supplémentaire aux personnes en reconversion, ou qui souhaitent ajouter une corde technique à leur arc.</p>



<h3 class="wp-block-heading">Et maintenant ?</h3>



<p>Evidemment, ça dérape souvent vers la modularisation de vos projets, pour réutiliser plus facilement des choses, améliorer la maintenabilité, etc &#8230; plutôt chouette non ? <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </p>
<hr /><p>&copy; 2026 Darklg Blog - <a href="https://darklg.me/demarrer-rapidement-et-facilement-un-projet-avec-un-script/">Démarrer rapidement et facilement un projet avec un script</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://darklg.me/demarrer-rapidement-et-facilement-un-projet-avec-un-script/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Déployer des modifications de base WordPress avec un Installer</title>
		<link>https://darklg.me/deployer-des-modifications-de-base-wordpress-avec-un-installer/</link>
					<comments>https://darklg.me/deployer-des-modifications-de-base-wordpress-avec-un-installer/#respond</comments>
		
		<dc:creator><![CDATA[Darklg]]></dc:creator>
		<pubDate>Tue, 01 Dec 2020 12:33:06 +0000</pubDate>
				<category><![CDATA[Bout de code]]></category>
		<category><![CDATA[Wordpress & CMS]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[installer]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://darklg.me/?p=6613&#038;nocache=1606824506</guid>

					<description><![CDATA[Vous avez déjà vécu cette situation où vous faites une petite modification dans le back-office, &#8230; <hr /><p>&copy; 2026 Darklg Blog - <a href="https://darklg.me/deployer-des-modifications-de-base-wordpress-avec-un-installer/">Déployer des modifications de base WordPress avec un Installer</a></p>]]></description>
										<content:encoded><![CDATA[
<p>Vous avez déjà vécu cette situation où vous faites une petite modification dans le back-office, à répliquer sur l&rsquo;environnement de votre collègue, sur la préproduction puis sur la production ? </p>



<p>Une todo floue répétée ou perdue, puis cette question à chaque nouveau ticket qu&rsquo;on vous assigne : « Tu as bien modifié l&rsquo;option N à true ? ». </p>



<p>Voici une méthode simplifiée, que j&rsquo;ai piquée comme un sagouin au système d&rsquo;installer de Magento, mais qui fait le boulot.</p>



<p>Partons sur l&rsquo;exemple d&rsquo;une configuration de site basique : vous utilisez des options WordPress pour administrer les URLs des réseaux sociaux sur votre projet, par exemple avec <a rel="noreferrer noopener" href="https://github.com/WordPressUtilities/wpuoptions" data-type="URL" lang="en" data-id="https://github.com/WordPressUtilities/wpuoptions" target="_blank">WPUOptions (EN)</a>.</p>



<p>On retrouve donc quelque part dans votre thème une structure similaire à cet exemple trèèès simplifié :</p>



<div style="height: 250px; position:relative; margin-bottom: 50px;" class="wp-block-simple-code-block-ace"><pre class="wp-block-simple-code-block-ace" style="position:absolute;top:0;right:0;bottom:0;left:0" data-mode="php" data-theme="monokai" data-fontsize="14" data-lines="Infinity" data-showlines="true" data-copy="false">&lt;?php $twitter_url = get_option('monprojet_social_twitter'); ?>
&lt;a target="_blank" href="&lt;?php echo esc_url($twitter_url) ?>">
    Twitter
&lt;/a></pre></div>



<p>Par confort, et pour éviter une configuration après coup, vous souhaitez que la valeur de <code>monprojet_social_twitter</code> soit déjà pré-remplie.</p>



<p>Nous allons donc créer un <a href="https://fr.wordpress.org/support/article/must-use-plugins/" data-type="URL" data-id="https://fr.wordpress.org/support/article/must-use-plugins/" target="_blank" rel="noreferrer noopener">mu-plugin</a> ( car on ne stocke pas les données clients dans un thème qui ne concerne normalement que l&rsquo;apparence ) qui va contenir notre installer. Nommons-le « monprojet_social ».</p>



<p>Afin qu&rsquo;il s&rsquo;exécute au bon moment, on va attendre le hook <code>wp</code> pour le lancer. Ensuite, on va stocker dans une autre option ( tant qu&rsquo;à faire ) la version en base de notre jeu de données.</p>



<p>Ainsi, on ira comparer à chaque fois la version en base, et si notre version d&rsquo;installer est supérieure, elle sera exécutée puis mettra à jour notre valeur de référence. </p>



<div style="height: 250px; position:relative; margin-bottom: 50px;" class="wp-block-simple-code-block-ace"><pre class="wp-block-simple-code-block-ace" style="position:absolute;top:0;right:0;bottom:0;left:0" data-mode="php" data-theme="monokai" data-fontsize="14" data-lines="Infinity" data-showlines="true" data-copy="false">&lt;?php

/*
Plugin Name: [MonProjet] Social
Description: Script Installer pour les valeurs des réseaux sociaux
*/

add_action('plugins_loaded', 'monprojet_social_plugins_loaded');
function monprojet_social_plugins_loaded() {
    $opt = 'monprojet_social_version';
    $opt_version = get_option($opt);

    /* Verifions que la valeur stockée est un nombre */
    if (!is_numeric($opt)) {
        $opt_version = 0;
    }

    /* Version 1 */
    if ($opt_version &lt; 1) {

        /* On met à jour la valeur de notre champ twitter */
        update_option('monprojet_social_twitter', 'http://twitter.com/Darklg');

        /* On donne à la base notre version actuelle */
        update_option($opt, 1);
    }

    /* Version 2 : Bah alors Kévin, et le https ? */
    if ($opt_version &lt; 2) {

        /* On met à jour la valeur de notre champ twitter */
        update_option('monprojet_social_twitter', 'https://twitter.com/Darklg');

        /* On donne à la base notre version actuelle */
        update_option($opt, 2);
    }
}
</pre></div>



<p>Donc on s&rsquo;assure que la DB est à jour, et qu&rsquo;éventuellement les options ou changements se sont déroulés dans le bon ordre. On peut bosser sur des numéros de versions, des <a rel="noreferrer noopener" href="https://fr.wikipedia.org/wiki/Heure_Unix" data-type="URL" data-id="https://fr.wikipedia.org/wiki/Heure_Unix" target="_blank">Timestamp Unix</a>, ou carrément une date PHP au format YmdHis.</p>



<p>C’est évidemment perfectible, et je suis en train de travailler sur une version un peu plus user-friendly dans <a href="https://github.com/WordPressUtilities/wpu_settings_version" target="_blank" rel="noreferrer noopener">wpu_settings_version</a>, mais ça dépanne bien.</p>
<hr /><p>&copy; 2026 Darklg Blog - <a href="https://darklg.me/deployer-des-modifications-de-base-wordpress-avec-un-installer/">Déployer des modifications de base WordPress avec un Installer</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://darklg.me/deployer-des-modifications-de-base-wordpress-avec-un-installer/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Installer rapidement ses logiciels sur macOS avec Cask, Mackup et MAS</title>
		<link>https://darklg.me/installer-rapidement-ses-logiciels-sur-macos/</link>
					<comments>https://darklg.me/installer-rapidement-ses-logiciels-sur-macos/#comments</comments>
		
		<dc:creator><![CDATA[Darklg]]></dc:creator>
		<pubDate>Fri, 13 Nov 2020 14:28:46 +0000</pubDate>
				<category><![CDATA[Productivité]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[macos]]></category>
		<category><![CDATA[shell]]></category>
		<guid isPermaLink="false">https://darklg.me/?p=6605&#038;nocache=1605276171</guid>

					<description><![CDATA[Si vous êtes sur macOS, la sortie de la nouvelle version macOS Big Sur ne &#8230; <hr /><p>&copy; 2026 Darklg Blog - <a href="https://darklg.me/installer-rapidement-ses-logiciels-sur-macos/">Installer rapidement ses logiciels sur macOS avec Cask, Mackup et MAS</a></p>]]></description>
										<content:encoded><![CDATA[
<p>Si vous êtes sur macOS, la sortie de la nouvelle version <em>macOS Big Sur</em> ne vous aura probablement pas échappé. A cette occasion, beaucoup en profitent pour faire une « clean install », c’est à dire réinstaller l&rsquo;OS pour ne pas avoir de bugs liés à des résidus de l&rsquo;ancienne version installée.</p>



<p>Si vous souhaitez accélérer cette réinstallation, ou anticiper l&rsquo;achat d&rsquo;un nouveau mac, voici quelques astuces pour gagner du temps, et booster votre fichier dotfiles.</p>



<p>PS : Ces commandes nécessitent toutes <a href="https://brew.sh/index_fr" data-type="URL" data-id="https://brew.sh/index_fr" target="_blank" rel="noreferrer noopener">d&rsquo;avoir installé homebrew</a>. Promis, c’est rapide !</p>



<h2 class="wp-block-heading">Mackup</h2>



<p><strong><a href="https://github.com/lra/mackup" data-type="URL" lang="en" data-id="https://github.com/lra/mackup" target="_blank" rel="noreferrer noopener">Mackup (EN)</a></strong> va vous permettre de synchroniser les réglages de la plupart de vos applications, en déplaçant les fichiers contenant ces réglages dans DropBox, iCloud Drive ou Google Drive, et en les remplaçant par un lien symbolique.</p>



<p>Pour l&rsquo;installer, c’est avec homebrew, et une commande suffit :</p>



<div style="height: 250px; position:relative; margin-bottom: 50px;" class="wp-block-simple-code-block-ace"><pre class="wp-block-simple-code-block-ace" style="position:absolute;top:0;right:0;bottom:0;left:0" data-mode="sh" data-theme="monokai" data-fontsize="14" data-lines="Infinity" data-showlines="true" data-copy="false">brew install mackup;</pre></div>



<p>Sur votre installation actuelle, lancez la commande de backup : </p>



<div style="height: 250px; position:relative; margin-bottom: 50px;" class="wp-block-simple-code-block-ace"><pre class="wp-block-simple-code-block-ace" style="position:absolute;top:0;right:0;bottom:0;left:0" data-mode="sh" data-theme="monokai" data-fontsize="14" data-lines="Infinity" data-showlines="true" data-copy="false">mackup backup;</pre></div>



<p>Sur votre nouvelle installation ou nouveau mac, lancez la restauration :</p>



<div style="height: 250px; position:relative; margin-bottom: 50px;" class="wp-block-simple-code-block-ace"><pre class="wp-block-simple-code-block-ace" style="position:absolute;top:0;right:0;bottom:0;left:0" data-mode="sh" data-theme="monokai" data-fontsize="14" data-lines="Infinity" data-showlines="true" data-copy="false">mackup restore;</pre></div>



<h2 class="wp-block-heading">Brew Cask</h2>



<p><strong>Brew cask</strong> va vous permettre d&rsquo;installer un logiciel en une ligne de commande toute simple. Dit comme ça, ça n&rsquo;est pas très rapide, mais vous allez pouvoir créer un fichier de démarrage avec toutes les lignes à la suite, et vous n&rsquo;aurez ensuite qu&rsquo;à appeler ce fichier sur votre nouvelle machine. </p>



<p>Rien à installer, c’est inclus dans Homebrew, pour installer un logiciel, il vous faut trouver son slug dans la <a rel="noreferrer noopener" lang="en" href="https://formulae.brew.sh/cask/" data-type="URL" data-id="https://formulae.brew.sh/cask/" target="_blank">liste de cask disponibles (EN)</a>. </p>



<p>Ensuite, vous pourrez vous constituer un fichier avec vos apps préférées :</p>



<div style="height: 250px; position:relative; margin-bottom: 50px;" class="wp-block-simple-code-block-ace"><pre class="wp-block-simple-code-block-ace" style="position:absolute;top:0;right:0;bottom:0;left:0" data-mode="sh" data-theme="monokai" data-fontsize="14" data-lines="Infinity" data-showlines="true" data-copy="false">#!/bin/bash

# Media players
brew cask install vlc;
brew cask install spotify;

# Browsers
brew cask install google-chrome;
brew cask install firefox;</pre></div>



<p>Et il vous suffira d&rsquo;appeler ce fichier d&rsquo;une simple commande dans le terminal sur votre nouvelle installation :</p>



<div style="height: 250px; position:relative; margin-bottom: 50px;" class="wp-block-simple-code-block-ace"><pre class="wp-block-simple-code-block-ace" style="position:absolute;top:0;right:0;bottom:0;left:0" data-mode="sh" data-theme="monokai" data-fontsize="14" data-lines="Infinity" data-showlines="true" data-copy="false">$ /bin/bash monfichier-apps.sh;</pre></div>



<h2 class="wp-block-heading">MAS &#8211; Mac App Store</h2>



<p><strong><a rel="noreferrer noopener" href="https://github.com/mas-cli/mas" data-type="URL" data-id="https://github.com/mas-cli/mas" target="_blank" lang="en">MAS (EN)</a></strong> permet de réinstaller rapidement des applications depuis le Mac App Store en un seul appel. Il est disponible également via brew, et s&rsquo;installe donc très simplement.</p>



<div style="height: 250px; position:relative; margin-bottom: 50px;" class="wp-block-simple-code-block-ace"><pre class="wp-block-simple-code-block-ace" style="position:absolute;top:0;right:0;bottom:0;left:0" data-mode="sh" data-theme="monokai" data-fontsize="14" data-lines="Infinity" data-showlines="true" data-copy="false">brew install mas</pre></div>



<p>Ensuite, et c&rsquo;est ça le plus difficile, il vous faut trouver l&rsquo;ID de l&rsquo;application dans l&rsquo;app store. Le moyen le plus simple est de trouver l&rsquo;URL partagée dans la fiche, et d&rsquo;en extraire l&rsquo;ID. Exemple : </p>



<div style="height: 250px; position:relative; margin-bottom: 50px;" class="wp-block-simple-code-block-ace"><pre class="wp-block-simple-code-block-ace" style="position:absolute;top:0;right:0;bottom:0;left:0" data-mode="plain_text" data-theme="monokai" data-fontsize="14" data-lines="Infinity" data-showlines="true" data-copy="false">URL :
https://apps.apple.com/fr/app/trello/id1278508951?mt=12

ID : 
1278508951</pre></div>



<p>Vous pouvez ensuite vous constituer un petit fichier listant les apps, voire même complèter celui utilisé pour Cask sans souci !</p>



<div style="height: 250px; position:relative; margin-bottom: 50px;" class="wp-block-simple-code-block-ace"><pre class="wp-block-simple-code-block-ace" style="position:absolute;top:0;right:0;bottom:0;left:0" data-mode="sh" data-theme="monokai" data-fontsize="14" data-lines="Infinity" data-showlines="true" data-copy="false">#!/bin/bash

mas install 1278508951; # Trello
mas install 1384080005; # Tweetbot
mas install 1388020431; # DevCleaner
mas install 1449412482; # Reeder
mas install 1518425043; # Boop
mas install 513610341;  # Integrity
mas install 568494494;  # Pocket
mas install 585829637;  # Todoist
mas install 957734279;  # TogglDesktop</pre></div>



<h2 class="wp-block-heading">Et maintenant ?</h2>



<p>Je vous invite à vous constituer votre fichier de démarrage, à sauvegarder au chaud, par exemple dans votre Dropbox, ou encore mieux, à le publier dans un repository Dotfiles <a rel="noreferrer noopener" href="https://github.com/Darklg/dotfiles/blob/master/osx/bootstrap.sh" data-type="URL" data-id="https://github.com/Darklg/dotfiles/blob/master/osx/bootstrap.sh" lang="en" target="_blank">comme je l&rsquo;ai fait (EN)</a> !</p>
<hr /><p>&copy; 2026 Darklg Blog - <a href="https://darklg.me/installer-rapidement-ses-logiciels-sur-macos/">Installer rapidement ses logiciels sur macOS avec Cask, Mackup et MAS</a></p>]]></content:encoded>
					
					<wfw:commentRss>https://darklg.me/installer-rapidement-ses-logiciels-sur-macos/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Mise en cache de page à l’aide de Disk (Page is feed) 
Minified using Disk

Served from: darklg.me @ 2026-03-29 16:58:16 by W3 Total Cache
-->