<?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>Mon, 19 Oct 2026 21:06:28 GMT</lastBuildDate><atom:link href="https://blog.grxl.fr/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><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><a href="https://extensions.gnome.org/extension/16/auto-move-windows/?ref=blog.grxl.fr">Auto Move Window</a></li>
<li><a href="https://extensions.gnome.org/extension/615/appindicator-support/?ref=blog.grxl.fr">App indicator + KStatusNotifierItem</a></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[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>