<?xml version="1.0" encoding="UTF-8"?><rss 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" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Blog — Guillaume Rouxel]]></title><description><![CDATA[Thoughts, stories and ideas.]]></description><link>https://blog.grxl.fr/</link><image><url>https://blog.grxl.fr/favicon.png</url><title>Blog — Guillaume Rouxel</title><link>https://blog.grxl.fr/</link></image><generator>Ghost 5.54</generator><lastBuildDate>Fri, 16 May 2025 00:41:24 GMT</lastBuildDate><atom:link href="https://blog.grxl.fr/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Raspberry Pi - Setup]]></title><description><![CDATA[<!--kg-card-begin: markdown--><h2 id="installation-des-paquets">Installation des paquets</h2>
<pre><code class="language-bash">sudo apt install \
zsh \
vim \
git \
zsh-autosuggestions \
zsh-syntax-highlighting \
rsync \
wget curl
</code></pre>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h2 id="s%C3%A9curisation-du-user">S&#xE9;curisation du user</h2>
<pre><code class="language-bash">sudo visudo
</code></pre>
<p>Ajouter la ligne :</p>
<pre><code class="language-bash">nomuser        ALL=(ALL:ALL) ALL
</code></pre>
<p>Supprimer la config sans password :</p>
<pre><code class="language-bash">sudo rm /etc/sudoers.d/010_pi-nopasswd
</code></pre>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h3 id="installer-les-paquets-n%C3%A9cessaires">Installer les paquets n&#xE9;cessaires</h3>
<pre><code class="language-bash">sudo apt update</code></pre>]]></description><link>https://blog.grxl.fr/raspberry-pi-setup/</link><guid isPermaLink="false">66101fe51a413c00010b617f</guid><dc:creator><![CDATA[Guillaume Rouxel]]></dc:creator><pubDate>Fri, 05 Apr 2024 16:25:17 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h2 id="installation-des-paquets">Installation des paquets</h2>
<pre><code class="language-bash">sudo apt install \
zsh \
vim \
git \
zsh-autosuggestions \
zsh-syntax-highlighting \
rsync \
wget curl
</code></pre>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h2 id="s%C3%A9curisation-du-user">S&#xE9;curisation du user</h2>
<pre><code class="language-bash">sudo visudo
</code></pre>
<p>Ajouter la ligne :</p>
<pre><code class="language-bash">nomuser        ALL=(ALL:ALL) ALL
</code></pre>
<p>Supprimer la config sans password :</p>
<pre><code class="language-bash">sudo rm /etc/sudoers.d/010_pi-nopasswd
</code></pre>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h3 id="installer-les-paquets-n%C3%A9cessaires">Installer les paquets n&#xE9;cessaires</h3>
<pre><code class="language-bash">sudo apt update
sudo apt upgrade
sudo apt install nginx certbot software-properties-common python3-certbot-dns-ovh
</code></pre>
<h3 id="cr%C3%A9ation-de-la-configuration-ovh">Cr&#xE9;ation de la configuration OVH</h3>
<pre><code class="language-bash">sudo mkdir -p certbot
sudo vim certbot/ovh.ini
</code></pre>
<p>Renseigner les variables suivantes dans <code>certbot/ovh.ini</code> :</p>
<pre><code>dns_ovh_endpoint = ovh-eu
dns_ovh_application_key = xxx
dns_ovh_application_secret = xxx
dns_ovh_consumer_key = xxx
</code></pre>
<p>Cr&#xE9;er un script <code>generate-certificate.sh</code> pour g&#xE9;n&#xE9;rer un certificat :</p>
<pre><code class="language-bash">#!/bin/bash

echo &quot;$(date +&quot;%d:%m:%Y %H:%M:%S&quot;)&quot;

certbot certonly --dns-ovh --dns-ovh-credentials /home/nomuser/certbot/ovh.ini --non-interactive --agree-tos --email user@email.fr -d domain.com -d *.domain.com
</code></pre>
<p>G&#xE9;rer les droits sur les fichiers :</p>
<pre><code>sudo chmod 600 certbot/ovh.ini
sudo chmod +x certbot/generate-certificate.sh
</code></pre>
<p>Cr&#xE9;er une cron :</p>
<pre><code class="language-bash">sudo crontab -e
</code></pre>
<p>Ajouter la ligne :</p>
<pre><code>0 12 * * 1 /home/nomuser/certbot/generate-certificate.sh &gt; /var/log/certbot.cron.log 2&gt;&amp;1
</code></pre>
<p>&#xC7;a tentera un renouvellement des DNS chaque lundi &#xE0; 12h.</p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h1 id="qbittorrent">qbittorrent</h1>
<h3 id="installation">Installation</h3>
<p><a href="https://github.com/qbittorrent/qBittorrent/wiki/Running-qBittorrent-without-X-server-(WebUI-only,-systemd-service-set-up,-Ubuntu-15.04-or-newer)?ref=blog.grxl.fr">Documentation officielle</a></p>
<h3 id="configuration-dans-linterface">Configuration dans l&apos;interface</h3>
<p>-&gt; Tools -&gt; Options</p>
<h4 id="downloads">Downloads</h4>
<ul>
<li>Changer le &quot;Default Save Path&quot; vers<br>
<code>dossier/plex/videos</code></li>
<li>Activer et changer &quot;Keep incomplete torrents in&quot; vers<br>
<code>dossier/plex/downloading</code></li>
<li>Activer et changer &quot;Copy .torrent files to:&quot; vers<br>
<code>dossier/plex/torrents</code></li>
</ul>
<h4 id="web-ui">Web UI</h4>
<ul>
<li>Changer le nom d&apos;utilisateur et le mot de passe</li>
<li>Mettre le port 8000</li>
</ul>
<h3 id="configuration-dans-nginx">Configuration dans Nginx</h3>
<ul>
<li><a href="https://github.com/qbittorrent/qBittorrent/wiki/NGINX-Reverse-Proxy-for-Web-UI?ref=blog.grxl.fr">Doc - Nginx for Web UI</a></li>
<li><a href="https://github.com/qbittorrent/qBittorrent/wiki/Linux-WebUI-HTTPS-with-Let&apos;s-Encrypt-certificates-and-NGINX-SSL-reverse-proxy?ref=blog.grxl.fr">Doc - Let&apos;s Encrypt + Nginx as reverse proxy</a></li>
</ul>
<blockquote>
<p>Voir la configuration finale sur le repo sid ;)</p>
</blockquote>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h2 id="plex">Plex</h2>
<h3 id="installation">Installation</h3>
<pre><code class="language-bash">curl https://downloads.plex.tv/plex-keys/PlexSign.key | gpg --dearmor | sudo tee /usr/share/keyrings/plex-archive-keyring.gpg &gt;/dev/null

echo &quot;deb [signed-by=/usr/share/keyrings/plex-archive-keyring.gpg] https://downloads.plex.tv/repo/deb public main&quot; | sudo tee /etc/apt/sources.list.d/plexmediaserver.list

sudo apt update 

sudo apt install plexmediaserver
</code></pre>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Synchronisation en local]]></title><description><![CDATA[<p> <br>&gt;<em> </em>[<em>LOCAL</em>]<em> =&gt; l&apos;ordi portable</em><br>&gt;<em> </em>[<em>REMOTE</em>]<em> =&gt; l&apos;ordi de travail de base</em></p><p>1. [REMOTE] V&#xE9;rifier que tout est pouss&#xE9; (ou le faire sinon)<br>2. [LOCAL] Se placer dans le dossier du repo en CLI<br>3. [LOCAL] `git pull origin develop`<br>4. [LOCAL]</p>]]></description><link>https://blog.grxl.fr/vacances/</link><guid isPermaLink="false">64e776631a413c00010b60e3</guid><dc:creator><![CDATA[Guillaume Rouxel]]></dc:creator><pubDate>Thu, 24 Aug 2023 15:27:25 GMT</pubDate><content:encoded><![CDATA[<p> <br>&gt;<em> </em>[<em>LOCAL</em>]<em> =&gt; l&apos;ordi portable</em><br>&gt;<em> </em>[<em>REMOTE</em>]<em> =&gt; l&apos;ordi de travail de base</em></p><p>1. [REMOTE] V&#xE9;rifier que tout est pouss&#xE9; (ou le faire sinon)<br>2. [LOCAL] Se placer dans le dossier du repo en CLI<br>3. [LOCAL] `git pull origin develop`<br>4. [LOCAL] `yarn add`<br>5. [LOCAL] `rsync -av --exclude dist --exclude &quot;_**&quot; --exclude node_modules --exclude chrome-aws-lambda REMOTE_USER@REMOTE_IP_ADDRESS:/home/REMOTE_PATH_TO/freebe/packages/ ./packages` <br><br>&gt; (`rsync -anv` pour v&#xE9;rifier en dry-run)</p>]]></content:encoded></item><item><title><![CDATA[Debian - Setup]]></title><description><![CDATA[<!--kg-card-begin: markdown--><h2 id="listedepetiteschosesfaire">Liste de petites choses &#xE0; faire</h2>
<ul>
<li>Ajouter le user en sudoer (en root <code>usermod -aG sudo username &amp;&amp; visudo</code>)</li>
<li>Supprimer les paquets install&#xE9;s par d&#xE9;faut (genre les jeux)</li>
<li>Configurer les workspaces</li>
<li>R&#xE9;gler la mise en veille</li>
<li><a href="https://doc.ubuntu-fr.org/mount_fstab?ref=blog.grxl.fr">Faire le montage des disques de stockage</a></li></ul>]]></description><link>https://blog.grxl.fr/debian-setup/</link><guid isPermaLink="false">64b1b6242144f8000147c068</guid><category><![CDATA[Linux]]></category><category><![CDATA[OS]]></category><dc:creator><![CDATA[Guillaume Rouxel]]></dc:creator><pubDate>Fri, 14 Jul 2023 20:55:53 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h2 id="listedepetiteschosesfaire">Liste de petites choses &#xE0; faire</h2>
<ul>
<li>Ajouter le user en sudoer (en root <code>usermod -aG sudo username &amp;&amp; visudo</code>)</li>
<li>Supprimer les paquets install&#xE9;s par d&#xE9;faut (genre les jeux)</li>
<li>Configurer les workspaces</li>
<li>R&#xE9;gler la mise en veille</li>
<li><a href="https://doc.ubuntu-fr.org/mount_fstab?ref=blog.grxl.fr">Faire le montage des disques de stockage</a></li>
<li><a href="https://stackoverflow.com/a/55543310?ref=blog.grxl.fr">Augmenter la limite syst&#xE8;me des file watchers</a></li>
<li><a href="https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally?ref=blog.grxl.fr">Autorisation pour NPM</a></li>
<li><a href="https://github.com/vinceliuice/grub2-themes?ref=blog.grxl.fr">Th&#xE8;mes GRUB</a></li>
</ul>
<h2 id="listedespaquetsinstaller">Liste des paquets &#xE0; installer</h2>
<h4 id="paquetsdesrepos">Paquets des repos</h4>
<pre><code>sudo apt update
sudo apt install \
terminator \
zsh \
vim \
git \
git-flow \
telegram-desktop \
zsh-autosuggestions \ 
zsh-syntax-highlighting \
wcalc \
vokoscreen \
thunderbird \
vlc \
gimp \
gparted \
hplip \
grub \
grub-customizer \
rsync \
zip \
net-tools \
python3-pip \
python3-virtualenv \
gcc g++ make gnupg \
gconf-service gconf2-common \
libc++1 libc++1-14 libc++abi1-14 \
libgconf-2-4 libunwind-14 \
wget curl
</code></pre>
<h4 id="paquetsenplus">Paquets en plus</h4>
<ul>
<li><a href="https://ohmyz.sh/?ref=blog.grxl.fr#install">Ohmyzsh</a></li>
<li><a href="https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/git?ref=blog.grxl.fr">Ohmyzsh - Git plugin</a></li>
<li><a href="https://www.spotify.com/fr/download/linux/?ref=blog.grxl.fr">Spotify</a></li>
<li><a href="https://vscodium.com/?ref=blog.grxl.fr">VSCodium</a></li>
<li><a href="https://github.com/nodesource/distributions?ref=blog.grxl.fr#debinstall">Node</a></li>
<li><a href="https://www.linuxcapable.com/how-to-install-yarn-on-debian-linux/?ref=blog.grxl.fr">Yarn</a></li>
<li><a href="https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-debian/?ref=blog.grxl.fr#install-mongodb-community-edition">MongoDB</a></li>
<li><a href="https://slack.com/intl/fr-fr/downloads/linux?ref=blog.grxl.fr">Slack</a></li>
<li><a href="https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html?ref=blog.grxl.fr">AWS - CLI</a></li>
<li><a href="https://github.com/aws/aws-elastic-beanstalk-cli-setup?ref=blog.grxl.fr">AWS - EB CLI</a></li>
<li><a href="https://www.serverless.com/console/docs?ref=blog.grxl.fr">Serverless</a></li>
<li><a href="https://discord.com/download?ref=blog.grxl.fr">Discord</a></li>
<li><a href="https://insomnia.rest/download?ref=blog.grxl.fr">Insomnia</a></li>
<li><a href="https://developer.hashicorp.com/terraform/downloads?product_intent=terraform&amp;ref=blog.grxl.fr">Terraform</a></li>
</ul>
<h4 id="extensionsgnome">Extensions Gnome</h4>
<blockquote>
<p>Chercher &quot;extensions&quot; pour les param&#xE8;tres</p>
</blockquote>
<ul>
<li><a href="https://extensions.gnome.org/extension/5177/vertical-workspaces/?ref=blog.grxl.fr">Workspaces vertical</a></li>
<li><a href="https://extensions.gnome.org/extension/307/dash-to-dock/?ref=blog.grxl.fr">Dash to dock</a></li>
<li>Auto Move Window (activable dans les param&#xE8;tres)</li>
</ul>
<h4 id="terminator">Terminator</h4>
<h5 id="fichierdeconfig">Fichier de config</h5>
<pre><code>[global_config]
  suppress_multiple_term_dialog = True
[keybindings]
[profiles]
  [[default]]
    scrollback_lines = &apos;5000&apos;
[layouts]
  [[default]]
    [[[child1]]]
      parent = window0
      type = Terminal
    [[[window0]]]
      parent = &quot;&quot;
      type = Window
[plugins]

</code></pre>
<h5 id="configuration">Configuration :</h5>
<pre><code>mkdir -p ~/.config/terminator
vim ~/.config/terminator/config
</code></pre>
<h2 id="remplacerfirefoxesr">Remplacer Firefox ESR</h2>
<h4 id="ressources">Ressources</h4>
<ul>
<li><a href="https://www.mozilla.org/en-US/firefox/browsers/?ref=blog.grxl.fr">Binaires</a></li>
<li><a href="https://wiki.debian.org/Firefox?ref=blog.grxl.fr#From_Mozilla_binaries">Tutoriel</a></li>
</ul>
<h2 id="pilotesnvidiapropritaires">Pilotes Nvidia propri&#xE9;taires</h2>
<h4 id="ressources">Ressources</h4>
<ul>
<li><a href="https://wiki.debian.org/fr/NvidiaGraphicsDrivers?ref=blog.grxl.fr">https://wiki.debian.org/fr/NvidiaGraphicsDrivers</a></li>
<li><a href="https://www.nvidia.com/fr-fr/drivers/unix/?ref=blog.grxl.fr">https://www.nvidia.com/fr-fr/drivers/unix/</a></li>
</ul>
<h3 id="installation">Installation</h3>
<ol>
<li>Ajoutez les &#xE9;l&#xE9;ments <code>contrib</code>, <code>non-free</code> et <code>non-free-firmware</code> &#xE0; <code>/etc/apt/sources.list</code></li>
<li><code>sudo apt update</code></li>
<li><code>sudo apt install nvidia-driver firmware-misc-nonfree</code></li>
</ol>
<h2 id="awsvault">AWS Vault</h2>
<p><a href="https://github.com/99designs/aws-vault?ref=blog.grxl.fr">Site</a></p>
<p>Pour ne pas stocker les AWS_ACCESS_ID et AWS_SECRET_ACCESS_KEY en clair dans un fichier dans le dossier ~/.aws/</p>
<h3 id="awsconfig"><code>~/.aws/config</code>:</h3>
<pre><code>[profile nomduprofil]
region     = eu-west-3
</code></pre>
<h3 id="configurationdunprofil">Configuration d&apos;un profil</h3>
<p><code>aws-vault add nomduprofil</code></p>
<p>Renseigner AWS_ACCESS_ID et AWS_SECRET_ACCESS_KEY puis v&#xE9;rifier avec :</p>
<p><code>aws-vault list</code></p>
<h2 id="symlinkpython3">Symlink python3</h2>
<pre><code>whereis python3
sudo ln -s /usr/bin/python3 /usr/bin/python
</code></pre>
<h2 id="multiplesmongo">Multiples Mongo</h2>
<h3 id="installation">Installation</h3>
<ul>
<li><a href="https://stackoverflow.com/a/66393820?ref=blog.grxl.fr">Tutoriel</a></li>
</ul>
<h3 id="aliasmongo4">Alias Mongo 4</h3>
<pre><code>alias mongo4=&quot;/opt/mongo-4.2.22/bin/mongo --port 27018&quot;
alias mongorestore4=&quot;/opt/mongo-4.2.22/bin/mongorestore&quot;
alias mongodump4=&quot;/opt/mongo-4.2.22/bin/mongodump&quot;
alias startmongo4=&quot;sudo /opt/mongo-4.2.22/bin/mongod --fork --config /opt/mongo-4.2.22/mongod.conf&quot;
alias stopmongo4=&quot;sudo /opt/mongo-4.2.22/bin/mongod --config /opt/mongo-4.2.22/mongod.conf --shutdown&quot;
</code></pre>
<h3 id="configurationmongo4">Configuration Mongo 4</h3>
<pre><code># /opt/mongo-4.2.22/mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: /var/lib/mongo-4.2.22
  journal:
    enabled: true
#  engine:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod-4.2.22.log

# network interfaces
net:
  port: 27018
  bindIp: 127.0.0.1


# how the process runs
processManagement:
  timeZoneInfo: /usr/share/zoneinfo

#security:

#operationProfiling:

#replication:

#sharding:

## Enterprise-Only Options:

#auditLog:

#snmp:

</code></pre>
<h2 id="configuration">Configuration</h2>
<h3 id="ohmyzsh">ohmyzsh</h3>
<h6 id="pluginsinstaller">Plugins &#xE0; installer</h6>
<ul>
<li><a href="https://github.com/zsh-users/zsh-syntax-highlighting/blob/master/INSTALL.md?ref=blog.grxl.fr">Syntax highlighting</a></li>
<li><a href="https://github.com/zsh-users/zsh-autosuggestions/blob/master/INSTALL.md?ref=blog.grxl.fr">Autosuggestions</a></li>
</ul>
<h6 id="zshrc"><code>.zshrc</code></h6>
<pre><code>export ZSH=/home/guillaume/.oh-my-zsh

# https://github.com/robbyrussell/oh-my-zsh/wiki/Themes
ZSH_THEME=&quot;agnoster&quot;

# https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins
plugins=(
  git
  zsh-syntax-highlighting
  zsh-autosuggestions
)

source $ZSH/oh-my-zsh.sh

export EDITOR=&apos;vim&apos;

#####################
# Config perso
#####################

autoload -U +X bashcompinit &amp;&amp; bashcompinit

export PATH=&quot;$HOME/.yarn/bin:$HOME/.config/yarn/global/node_modules/.bin:$PATH&quot;
export PATH=&quot;$HOME/.local/bin:$PATH&quot;
export PATH=~/.npm-global/bin:$PATH

fpath=(~/.zsh/completion $fpath)
autoload -Uz compinit &amp;&amp; compinit -i

#####################
# Alias pratiques
#####################

alias commit=&quot;git add -A &amp;&amp; git commit&quot;
alias code=&quot;codium&quot;
alias mongo=&quot;mongosh&quot;

alias monip=&quot;echo IP | xclip -sel clip &amp;&amp; xclip -sel clip -o&quot;

#####################
# Dev
#####################

alias freebe-dashboard=&apos;cd ~/dev/projects/clients/freeelance/freebe;npm run start:dashboard&apos;
alias freebe-api=&apos;cd ~/dev/projects/clients/freeelance/freebe;npm run start:api&apos;
alias freebe-micro=&apos;cd ~/dev/projects/clients/freeelance/freebe;npm run start:microservices&apos;
</code></pre>
<h2 id="problmessolutions">Probl&#xE8;mes &amp; solutions</h2>
<ul>
<li><a href="https://itsfoss.com/key-is-stored-in-legacy-trusted-gpg/?ref=blog.grxl.fr">&quot;Key is stored in legacy trusted.gpg keyring&quot;</a></li>
<li><a href="https://www.mongodb.com/community/forums/t/mongo-6-x-on-debian-12/232593/5?ref=blog.grxl.fr">Probl&#xE8;me de d&#xE9;pendance pour Mongo 6</a></li>
</ul>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Trucs que je zappe]]></title><description><![CDATA[<!--kg-card-begin: markdown--><h2 id="commandeslinux">Commandes Linux</h2>
<h4 id="copieruneclsshsurunserveurdistant">Copier une cl&#xE9; SSH sur un serveur distant</h4>
<p><code>ssh-copy-id -i ~/.ssh/id_public user@host</code></p>
<h4 id="supprimerlesnode_modulesouautredemanirercursive">Supprimer les node_modules (ou autre) de mani&#xE8;re r&#xE9;cursive</h4>
<p><code>find . -name &apos;node_modules&apos; -type d -prune -exec rm -rf &apos;{}&apos; +</code></p>
<!--kg-card-end: markdown-->]]></description><link>https://blog.grxl.fr/commandes/</link><guid isPermaLink="false">609442764849a10001b421d1</guid><category><![CDATA[Utile]]></category><dc:creator><![CDATA[Guillaume Rouxel]]></dc:creator><pubDate>Thu, 06 May 2021 19:26:47 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h2 id="commandeslinux">Commandes Linux</h2>
<h4 id="copieruneclsshsurunserveurdistant">Copier une cl&#xE9; SSH sur un serveur distant</h4>
<p><code>ssh-copy-id -i ~/.ssh/id_public user@host</code></p>
<h4 id="supprimerlesnode_modulesouautredemanirercursive">Supprimer les node_modules (ou autre) de mani&#xE8;re r&#xE9;cursive</h4>
<p><code>find . -name &apos;node_modules&apos; -type d -prune -exec rm -rf &apos;{}&apos; +</code></p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Maths, géométrie, physique]]></title><description><![CDATA[Mémos, code et liens autour des mathématiques, de la géométrie ou de la physique.]]></description><link>https://blog.grxl.fr/maths-geometrie-physique/</link><guid isPermaLink="false">6028f3794849a10001b42134</guid><category><![CDATA[Maths]]></category><dc:creator><![CDATA[Guillaume Rouxel]]></dc:creator><pubDate>Sun, 14 Feb 2021 10:12:27 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h1 id="sommaire">Sommaire</h1>
<ul>
<li><a href="#calculs">Calculs</a></li>
<li><a href="#liensenvrac">Liens en vrac</a></li>
</ul>
<!--kg-card-end: markdown--><hr><!--kg-card-begin: markdown--><h1 id="calculs">Calculs</h1>
<h2 id="distancelinaireentredeuxpointssuruneligne">Distance lin&#xE9;aire entre deux points sur une ligne</h2>
<p>La distance s&#xE9;parant un point A et un point B est &#xE9;gale &#xE0; B - A.</p>
<pre><code class="language-javascript">function getDistance (a, b) {
  return b - a
}
</code></pre>
<h2 id="distancelinaireentredeuxvecteursdansunespace2d">Distance lin&#xE9;aire entre deux vecteurs dans un espace 2D</h2>
<p>La distance entre deux vecteurs 2D appel&#xE9;s A et B est &#xE9;gale &#xE0; la valeur de la racine carr&#xE9;e de (Bx - Ax au carr&#xE9;) + (By - Ay au carr&#xE9;).</p>
<pre><code class="language-javascript">function get2dDistance (a, b) {
  const distX = Math.pow(b.x - a.x, 2) // Bx - Ax &#xE0; la puissance 2 
  const distY = Math.pow(b.y - a.y, 2) // By - Ay &#xE0; la puissance 2
     
  // Racine carr&#xE9;e
  return Math.sqrt(distX + distY)
}
</code></pre>
<h2 id="conversiondansdeuxintervalles">Conversion dans deux intervalles</h2>
<pre><code>OldRange = (OldMax - OldMin)  
NewRange = (NewMax - NewMin)  
NewValue = (((OldValue - OldMin) * NewRange) / OldRange) + NewMin
</code></pre>
<!--kg-card-end: markdown--><hr><!--kg-card-begin: markdown--><h1 id="liensenvrac">Liens en vrac</h1>
<h2 id="sitedepaulbourke"><a href="http://paulbourke.net/?ref=blog.grxl.fr">Site de Paul Bourke</a></h2>
<ul>
<li><a href="http://paulbourke.net/fractals/clifford?ref=blog.grxl.fr">Clifford attractors</a></li>
<li><a href="https://codepen.io/pimskie/pen/aEZNvQ?editors=1010&amp;ref=blog.grxl.fr">Codepen flow fields avec attracteurs</a></li>
</ul>
<blockquote>
<p>Image venant du site de Paul Bourke<br>
<img src="https://blog.grxl.fr/content/images/2021/02/Screenshot-from-2021-02-14-11-19-32.png" alt="Screenshot-from-2021-02-14-11-19-32" loading="lazy"></p>
</blockquote>
<h2 id="particlesinasimplexnoiseflowfield"><a href="https://codepen.io/DonKarlssonSan/post/particles-in-simplex-noise-flow-field?ref=blog.grxl.fr">Particles in a Simplex Noise Flow Field</a></h2>
<p>Article qui explique ce que sont les flow fields et le Perlin noise.</p>
<ul>
<li><a href="https://codepen.io/DonKarlssonSan/full/QqzWYj?ref=blog.grxl.fr">Codepen flow fields</a></li>
</ul>
<!--kg-card-end: markdown--><p></p>]]></content:encoded></item></channel></rss>