diff --git a/about/index.html b/about/index.html index a6d6cefa..78bb3dd7 100644 --- a/about/index.html +++ b/about/index.html @@ -6,4 +6,4 @@ * Author: Rose Pritchard */code[class*=language-],pre[class*=language-]{color:#ccc;background:0 0;font-family:Consolas,Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}.formatted-tag{font-family:var(--nc-font-mono);opacity:.6}.not-found{text-align:center}#not-found-canvas{z-index:-1}a{text-decoration:none}pre{max-height:50rem}img{display:block;margin-left:auto;margin-right:auto}ul{list-style-type:circle}.header-anchor{font-size:small}.hidden{display:none}/*! * Inspired by material theme https://www.material-theme.com/docs/reference/color-palette/ - */:root{--is-light-theme:1;--nc-l-tx-1:#546e7a;--nc-l-tx-2:#161d21;--nc-l-tx-3:#6d7169;--nc-l-bg-1:#f4f4f4;--nc-l-bg-2:#eae8e8;--nc-l-bg-3:#fafafa;--nc-l-lk-1:#176166;--nc-l-lk-2:#528aff;--nc-l-lk-tx:#f3f4f5;--nc-l-ac-1:#91b859;--nc-l-ac-tx:#fafafa;--nc-d-tx-1:#ffffff;--nc-d-tx-2:#b7b7b7;--nc-d-tx-3:#8a8d87;--nc-d-bg-1:#1e272c;--nc-d-bg-2:#161d21;--nc-d-bg-3:#263238;--nc-d-lk-1:#5e92ff;--nc-d-lk-2:#99b2e8;--nc-d-lk-tx:#2e3c43;--nc-d-ac-1:#c3e88d;--nc-d-ac-tx:#263238}@media (prefers-color-scheme:dark){:root{--is-light-theme:0;--nc-tx-1:var(--nc-d-tx-1);--nc-tx-2:var(--nc-d-tx-2);--nc-tx-3:var(--nc-d-tx-3);--nc-bg-1:var(--nc-d-bg-1);--nc-bg-2:var(--nc-d-bg-2);--nc-bg-3:var(--nc-d-bg-3);--nc-lk-1:var(--nc-d-lk-1);--nc-lk-2:var(--nc-d-lk-2);--nc-lk-tx:var(--nc-d-lk-tx);--nc-ac-1:var(--nc-d-ac-1);--nc-ac-tx:var(--nc-d-ac-tx)}}.nav-link{text-decoration:none}.nav-link.active{color:var(--nc-lk-2)}.hamburger{width:20px;height:2px;box-shadow:inset 0 0 0 32px,0 -6px,0 6px;margin:16px 7px;display:block}.topnav .icon{display:none}@media screen and (max-width:600px){.topnav span.nav-item:not(.active){display:none}.topnav span.icon{float:right;display:block;right:0;top:0;color:var(--nc-lk-1)}.topnav .nav-separator{display:none}.topnav.responsive{position:relative}.topnav.responsive span.icon{position:absolute;right:0;top:0;color:var(--nc-lk-2)}.topnav.responsive span{float:none;display:block;text-align:left}.topnav.responsive span.nav-item:not(.active){display:block}}.comment{--comment-bg:#e3efee;--comment-d-bg:#2a4765;margin-top:20px;padding:5px}.add-comment-btn{float:right}.comment-header{background:var(--comment-bg);padding-right:100px;padding-left:10px;border-top-left-radius:10px;border-top-right-radius:10px;padding:5px}.comment-content{border:2px solid var(--comment-bg);border-bottom-left-radius:10px;border-bottom-right-radius:10px}.comment-text{padding:10px}.comment-reactions{border-top:2px solid var(--comment-bg);padding:5px}.comment-reaction-item{padding-right:10px;padding-left:10px;border-right:2px solid var(--comment-bg)}@media (prefers-color-scheme:dark){.comment{--comment-bg:var(--comment-d-bg)}}kbd{--black-800:#242729;--white:#fff;--black-075:#e4e6e8;--black-300:#9fa6ad;--s-prose-line-height:1.5;--ff-sans:Arial,"Helvetica Neue",Helvetica,sans-serif}@media (prefers-color-scheme:dark){kbd{--black-800:#e7e8eb;--white:#2d2d2d;--black-075:#404345;--black-300:#7d848d}}kbd{display:inline-block;margin:0 .1em;padding:.1em .6em;font-family:var(--nc-font-sans);font-size:11px;line-height:var(--s-prose-line-height);color:var(--black-800);text-shadow:0 1px 0 var(--white);background-color:var(--black-075);border:1px solid var(--black-300);border-radius:3px;box-shadow:0 1px 1px rgba(12,13,14,.15),inset 0 1px 0 0 #fff;overflow-wrap:break-word}.top-link{transition:all .25s ease-in-out;position:fixed;bottom:0;left:10;display:inline-flex;cursor:pointer;align-items:center;justify-content:center;margin:0 3em 3em 0;border-radius:50%;padding:.25em;width:40px;height:40px;background-color:var(--nc-bg-2)}.top-link.show{visibility:visible;opacity:1}.top-link.hide{visibility:hidden;opacity:0}.top-link svg{fill:var(--nc-lk-1);width:24px;height:12px}.top-link:hover{background-color:var(--nc-bg-0)}.top-link:hover svg{fill:var(--nc-lk-2)}.screen-reader-text{position:absolute;clip-path:inset(50%);margin:-1px;border:0;padding:0;width:1px;height:1px;overflow:hidden;word-wrap:normal!important;clip:rect(1px,1px,1px,1px)}.screen-reader-text:focus{display:block;top:5px;left:5px;z-index:100000;clip-path:none;background-color:#eee;padding:15px 23px 14px;width:auto;height:auto;text-decoration:none;line-height:normal;color:#444;font-size:1em;clip:auto!important}.disable-scrollbars::-webkit-scrollbar{background:0 0;width:0}.disable-scrollbars{scrollbar-width:none;-ms-overflow-style:none}.pull-right{float:right}.post-subheader{font-style:italic;color:var(--nc-tx-3)}.post-date{font-family:var(--nc-font-mono)}ul.post-list{list-style-type:none;padding-left:0}@media screen and (max-width:600px){.post-date{display:none}ul.post-list{list-style-type:disc;padding-left:0}}.post-date.no-date{display:none}ul.post-list.no-date{list-style-type:disc;padding-left:2rem}.profile-picture{border-radius:50%;height:auto;width:auto;max-width:200px;max-height:200px;float:right}

The stuff I do

Hello 🔗

I am Adrien (aka statox), a server software engineer at Dashlane in Paris, France.

My face

This website is just a place for me to talk a bit about my side projects and keep a few notes for myself. You will find stuff about the topics that I like (in no particular order): Vim, Linux and system administration, doing fun simulations and games in the browser, DIY projects, improving people's privacy on the internet and software development in general.

Social 🔗

You can email me at me AT statox DOT fr or reach out to me on any of these social platforms:

Technology on this site 🔗

Analytics 🔗

Because I want to be able to know how many people read my rambling I use an analytics platform on this website.

However I think the fight for a more privacy friendly internet is one of the most important to lead currently. That's why I use goatcounter: It is an amazing privacy friendly tool which does nothing else than counting how many time my pages are loaded. So no cookie 🍪 for you on this site, nor any other invasive tracking method.

Edit December 2021 I am experimenting with the different tools offered by cloudflare to proxy this website and they inject trackers in my pages. I'm still figuring out if that brings me enough value or if that contributes to the surveillance economy more than I'm confortable with. I'll update this when I make a decision.

Web 🔗

My professional experience is mainly focused on backend development: Maintaining and developing infrastructures at scale is a fascinating topic for me, however I'm less used to frontend development. So when I started creating a website I wanted it to be dead simple so that I get things done quickly and without friction. That's why I chose to use eleventy a simpler static site generator.

And as I'm not exactly a css expert and wanted something simpler than bootstrap I went with newcss a very simple css framework.

The source code of the site is on Github and uses Github Actions to automatically build and publish each update to Github Pages.

CI status 🔗

CI On Github Actions
Build Status
Last build: 7d6acd0 - Add 'Creedence clearwater revival - Travelin band' to chords - 04/10/2023 12:13

Back to top
\ No newline at end of file + */:root{--is-light-theme:1;--nc-l-tx-1:#546e7a;--nc-l-tx-2:#161d21;--nc-l-tx-3:#6d7169;--nc-l-bg-1:#f4f4f4;--nc-l-bg-2:#eae8e8;--nc-l-bg-3:#fafafa;--nc-l-lk-1:#176166;--nc-l-lk-2:#528aff;--nc-l-lk-tx:#f3f4f5;--nc-l-ac-1:#91b859;--nc-l-ac-tx:#fafafa;--nc-d-tx-1:#ffffff;--nc-d-tx-2:#b7b7b7;--nc-d-tx-3:#8a8d87;--nc-d-bg-1:#1e272c;--nc-d-bg-2:#161d21;--nc-d-bg-3:#263238;--nc-d-lk-1:#5e92ff;--nc-d-lk-2:#99b2e8;--nc-d-lk-tx:#2e3c43;--nc-d-ac-1:#c3e88d;--nc-d-ac-tx:#263238}@media (prefers-color-scheme:dark){:root{--is-light-theme:0;--nc-tx-1:var(--nc-d-tx-1);--nc-tx-2:var(--nc-d-tx-2);--nc-tx-3:var(--nc-d-tx-3);--nc-bg-1:var(--nc-d-bg-1);--nc-bg-2:var(--nc-d-bg-2);--nc-bg-3:var(--nc-d-bg-3);--nc-lk-1:var(--nc-d-lk-1);--nc-lk-2:var(--nc-d-lk-2);--nc-lk-tx:var(--nc-d-lk-tx);--nc-ac-1:var(--nc-d-ac-1);--nc-ac-tx:var(--nc-d-ac-tx)}}.nav-link{text-decoration:none}.nav-link.active{color:var(--nc-lk-2)}.hamburger{width:20px;height:2px;box-shadow:inset 0 0 0 32px,0 -6px,0 6px;margin:16px 7px;display:block}.topnav .icon{display:none}@media screen and (max-width:600px){.topnav span.nav-item:not(.active){display:none}.topnav span.icon{float:right;display:block;right:0;top:0;color:var(--nc-lk-1)}.topnav .nav-separator{display:none}.topnav.responsive{position:relative}.topnav.responsive span.icon{position:absolute;right:0;top:0;color:var(--nc-lk-2)}.topnav.responsive span{float:none;display:block;text-align:left}.topnav.responsive span.nav-item:not(.active){display:block}}.comment{--comment-bg:#e3efee;--comment-d-bg:#2a4765;margin-top:20px;padding:5px}.add-comment-btn{float:right}.comment-header{background:var(--comment-bg);padding-right:100px;padding-left:10px;border-top-left-radius:10px;border-top-right-radius:10px;padding:5px}.comment-content{border:2px solid var(--comment-bg);border-bottom-left-radius:10px;border-bottom-right-radius:10px}.comment-text{padding:10px}.comment-reactions{border-top:2px solid var(--comment-bg);padding:5px}.comment-reaction-item{padding-right:10px;padding-left:10px;border-right:2px solid var(--comment-bg)}@media (prefers-color-scheme:dark){.comment{--comment-bg:var(--comment-d-bg)}}kbd{--black-800:#242729;--white:#fff;--black-075:#e4e6e8;--black-300:#9fa6ad;--s-prose-line-height:1.5;--ff-sans:Arial,"Helvetica Neue",Helvetica,sans-serif}@media (prefers-color-scheme:dark){kbd{--black-800:#e7e8eb;--white:#2d2d2d;--black-075:#404345;--black-300:#7d848d}}kbd{display:inline-block;margin:0 .1em;padding:.1em .6em;font-family:var(--nc-font-sans);font-size:11px;line-height:var(--s-prose-line-height);color:var(--black-800);text-shadow:0 1px 0 var(--white);background-color:var(--black-075);border:1px solid var(--black-300);border-radius:3px;box-shadow:0 1px 1px rgba(12,13,14,.15),inset 0 1px 0 0 #fff;overflow-wrap:break-word}.top-link{transition:all .25s ease-in-out;position:fixed;bottom:0;left:10;display:inline-flex;cursor:pointer;align-items:center;justify-content:center;margin:0 3em 3em 0;border-radius:50%;padding:.25em;width:40px;height:40px;background-color:var(--nc-bg-2)}.top-link.show{visibility:visible;opacity:1}.top-link.hide{visibility:hidden;opacity:0}.top-link svg{fill:var(--nc-lk-1);width:24px;height:12px}.top-link:hover{background-color:var(--nc-bg-0)}.top-link:hover svg{fill:var(--nc-lk-2)}.screen-reader-text{position:absolute;clip-path:inset(50%);margin:-1px;border:0;padding:0;width:1px;height:1px;overflow:hidden;word-wrap:normal!important;clip:rect(1px,1px,1px,1px)}.screen-reader-text:focus{display:block;top:5px;left:5px;z-index:100000;clip-path:none;background-color:#eee;padding:15px 23px 14px;width:auto;height:auto;text-decoration:none;line-height:normal;color:#444;font-size:1em;clip:auto!important}.disable-scrollbars::-webkit-scrollbar{background:0 0;width:0}.disable-scrollbars{scrollbar-width:none;-ms-overflow-style:none}.pull-right{float:right}.post-subheader{font-style:italic;color:var(--nc-tx-3)}.post-date{font-family:var(--nc-font-mono)}ul.post-list{list-style-type:none;padding-left:0}@media screen and (max-width:600px){.post-date{display:none}ul.post-list{list-style-type:disc;padding-left:0}}.post-date.no-date{display:none}ul.post-list.no-date{list-style-type:disc;padding-left:2rem}.profile-picture{border-radius:50%;height:auto;width:auto;max-width:200px;max-height:200px;float:right}

The stuff I do

Hello 🔗

I am Adrien (aka statox), a server software engineer at Dashlane in Paris, France.

My face

This website is just a place for me to talk a bit about my side projects and keep a few notes for myself. You will find stuff about the topics that I like (in no particular order): Vim, Linux and system administration, doing fun simulations and games in the browser, DIY projects, improving people's privacy on the internet and software development in general.

Social 🔗

You can email me at me AT statox DOT fr or reach out to me on any of these social platforms:

Technology on this site 🔗

Analytics 🔗

Because I want to be able to know how many people read my rambling I use an analytics platform on this website.

However I think the fight for a more privacy friendly internet is one of the most important to lead currently. That's why I use goatcounter: It is an amazing privacy friendly tool which does nothing else than counting how many time my pages are loaded. So no cookie 🍪 for you on this site, nor any other invasive tracking method.

Edit December 2021 I am experimenting with the different tools offered by cloudflare to proxy this website and they inject trackers in my pages. I'm still figuring out if that brings me enough value or if that contributes to the surveillance economy more than I'm confortable with. I'll update this when I make a decision.

Web 🔗

My professional experience is mainly focused on backend development: Maintaining and developing infrastructures at scale is a fascinating topic for me, however I'm less used to frontend development. So when I started creating a website I wanted it to be dead simple so that I get things done quickly and without friction. That's why I chose to use eleventy a simpler static site generator.

And as I'm not exactly a css expert and wanted something simpler than bootstrap I went with newcss a very simple css framework.

The source code of the site is on Github and uses Github Actions to automatically build and publish each update to Github Pages.

CI status 🔗

CI On Github Actions
Build Status
Last build: eb4cf34 - Add note for tmux colors - 13/10/2023 23:57

Back to top
\ No newline at end of file diff --git a/notes/index.html b/notes/index.html index 6691b260..aa04318a 100644 --- a/notes/index.html +++ b/notes/index.html @@ -14,4 +14,4 @@ <time zone offset> is a positive or negative offset from UTC. (E.g CEST is +0200) RFC 2822 = e.g. Thu, 07 Apr 2005 22:13:13 +0200 ISO 8601 = e.g. 2005-04-07T22:13:13 -

Get the logs of a specific line 🔗

See this SO answer

git log -L '/the line from your file/,+1:path/to/your/file.txt'

or with line number:

git log -L15,+1:'path/to/your/file.txt'

or with a funcname:

git log -L :<funcname>:<file>

Auto fix commits 🔗

To fix an existing commit aaaaaa:

# Do changes
git commit --fixup aaaaaa
git rebase -i --autosquash master

-i --autosquash will open an interactive rebase but the fixup commits are already ready.

Grep [bash][grep]

Exclude multiple directories 🔗

grep --exclude-dir={node_modules,src}

Have grep colors in less 🔗

grep --color=always | less -r
Keyboard input speed on Linux [linux][keyboard][xset]

Make the delay between Key presses shorted on Linux

xset r rate 150 50
Remap <alt>+hjkl to arrow keys on Linux [linux][keyboard][autokey]

One way to have alth, altj, altk, altl mapped to , , , is to use autokey.

⚠ Note that autokey is an X11 app that will not work with Wayland ⚠

On Ubuntu 21.04 one can install autokey from the repos with sudo apt install autokey-gtk.

In autokey one can create four different scripts with the following content:

# script arrow_left
keyboard.send_keys("<left>")

# script arrow_right
keyboard.send_keys("<right>")

# script arrow_up
keyboard.send_keys("<up>")

# script arrow_down
keyboard.send_keys("<down>")

Then on each script set a hotkey (The "Press to set" feature is useful to set combinations like alth):

Setting a hotkey

Scp [bash][scp]

Basically the same syntax as cp (i.e. scp [source] [dest])

# Local to remote
scp ./local/path user@remote-host:/home/user

# Remote to local
scp user@remote-host:/home/user ./local/path

Useful options 🔗

OptionUsage
-rCopy directories
-iProvide identity file
-PSpecify port
Screen [screen]

Basic usage 🔗

DescriptionCommand
Start a new session with session namescreen -S <session_name>
List running sessions / screensscreen -ls
Attach to a running sessionscreen -x
Attach to a running session with namescreen -r <session_name>
Detach a running sessionscreen -d <session_name> or <C-a><C-d>
Search git commits [git][commit][search]

Find commits which change the number of occurences of a string 🔗

git log -SsearchedString

Find commits with a commit message including a string 🔗

git log --grep=searchedString

Shell redirections [bash][shell][output]

Redirect stdout and stderr to a file 🔗

command > /dev/null 2>&1
Systemctl & systemd cheatsheet [systemd][systemctl]

I always get confused in the syntax between systemctl and service commands. To be updated with the missing ones next time I one them.

List services 🔗

systemctl list-units
systemctl list-units --type=service --state=running
systemctl list-units --type=service --state=failed

Service status 🔗

systemctl status sshd

Service action 🔗

systemctl restart sshd
Tmux [tmux]

List sessions 🔗

tmux list-sessions

Attache session 🔗

tmux a -t [session-id]
Xargs [bash][xargs]

Super useful opinionated guide to xargs

Examples 🔗

# Don't split input
echo "alice bob" | xargs echo hi
# hi alice bob

# Split input by whitespace and specify a number for each command
echo "alice bob" | xargs -n 1 echo hi
# hi alice
# hi bob

echo "alice bob oscar leon" | xargs -n 2 echo hi
# hi alice bob
# hi oscar leon

# Split input by new line
ls | egrep 'pack' | xargs -d $'\n' -- ls -l
# -rw-rw-r-- 1 afabre afabre 1286 août 21 21:05 package.json
# -rw-rw-r-- 1 afabre afabre 162685 août 21 21:05 package-lock.json

# Run in parallel with -P
xargs -P
Zsh completion functions [shell][zsh]

A quick trick to have custom completion on the aliases I create.

First create the function and the alias, they can be in ~/.bash_aliases or whatever.

myCoolFunction() {
echo "Here are the args from my function $@"
}
alias mcf='myCoolFunction'

Then create the completion function (best practice underscore+function name) which can be anywhere too. An interesting list of the helpers provided by zsh for the completion functions is here.

# Suggest words as completion options
_myCoolFunction() {
compadd "$@" foo bar baz
}

# Or have completion options with additional description
_myCoolFunction() {
local -a options
options=(
'arg1:To do something'
'arg2:To do something else'
'arg3:A different argument'
)
_describe 'mcf' options
}

Finally in ~/.zshrc we can register _myCoolFunction as the completion function of myCoolFunction:

compdef _myCoolFunction myCoolFunction

Once everything is ready in a new shell typing mcf <TAB> should yield the 3 completions options.

If things don't work one can check the completion function for a particular function (It does not work with the alias) with:

echo $_comps[myCoolFunction]

and the implementation with

functions $_comps[myCoolFunction]

Finally I should check how to make it work with the defined files (~/.oh-my-zsh/completions) and understand why the compdef command only works when put in .zshrc.

Back to top \ No newline at end of file +

Get the logs of a specific line 🔗

See this SO answer

git log -L '/the line from your file/,+1:path/to/your/file.txt'

or with line number:

git log -L15,+1:'path/to/your/file.txt'

or with a funcname:

git log -L :<funcname>:<file>

Auto fix commits 🔗

To fix an existing commit aaaaaa:

# Do changes
git commit --fixup aaaaaa
git rebase -i --autosquash master

-i --autosquash will open an interactive rebase but the fixup commits are already ready.

Grep [bash][grep]

Exclude multiple directories 🔗

grep --exclude-dir={node_modules,src}

Have grep colors in less 🔗

grep --color=always | less -r
Keyboard input speed on Linux [linux][keyboard][xset]

Make the delay between Key presses shorted on Linux

xset r rate 150 50
Remap <alt>+hjkl to arrow keys on Linux [linux][keyboard][autokey]

One way to have alth, altj, altk, altl mapped to , , , is to use autokey.

⚠ Note that autokey is an X11 app that will not work with Wayland ⚠

On Ubuntu 21.04 one can install autokey from the repos with sudo apt install autokey-gtk.

In autokey one can create four different scripts with the following content:

# script arrow_left
keyboard.send_keys("<left>")

# script arrow_right
keyboard.send_keys("<right>")

# script arrow_up
keyboard.send_keys("<up>")

# script arrow_down
keyboard.send_keys("<down>")

Then on each script set a hotkey (The "Press to set" feature is useful to set combinations like alth):

Setting a hotkey

Scp [bash][scp]

Basically the same syntax as cp (i.e. scp [source] [dest])

# Local to remote
scp ./local/path user@remote-host:/home/user

# Remote to local
scp user@remote-host:/home/user ./local/path

Useful options 🔗

OptionUsage
-rCopy directories
-iProvide identity file
-PSpecify port
Screen [screen]

Basic usage 🔗

DescriptionCommand
Start a new session with session namescreen -S <session_name>
List running sessions / screensscreen -ls
Attach to a running sessionscreen -x
Attach to a running session with namescreen -r <session_name>
Detach a running sessionscreen -d <session_name> or <C-a><C-d>
Search git commits [git][commit][search]

Find commits which change the number of occurences of a string 🔗

git log -SsearchedString

Find commits with a commit message including a string 🔗

git log --grep=searchedString

Shell redirections [bash][shell][output]

Redirect stdout and stderr to a file 🔗

command > /dev/null 2>&1
Systemctl & systemd cheatsheet [systemd][systemctl]

I always get confused in the syntax between systemctl and service commands. To be updated with the missing ones next time I one them.

List services 🔗

systemctl list-units
systemctl list-units --type=service --state=running
systemctl list-units --type=service --state=failed

Service status 🔗

systemctl status sshd

Service action 🔗

systemctl restart sshd
Tmux [tmux]

List sessions 🔗

tmux list-sessions

Attach session 🔗

tmux a -t [session-id]
Tmux list all 256 colors [tmux][colors]
for i in {0..255}; do
printf "\x1b[38;5;${i}mcolour${i}\x1b[0m\n"
done
Xargs [bash][xargs]

Super useful opinionated guide to xargs

Examples 🔗

# Don't split input
echo "alice bob" | xargs echo hi
# hi alice bob

# Split input by whitespace and specify a number for each command
echo "alice bob" | xargs -n 1 echo hi
# hi alice
# hi bob

echo "alice bob oscar leon" | xargs -n 2 echo hi
# hi alice bob
# hi oscar leon

# Split input by new line
ls | egrep 'pack' | xargs -d $'\n' -- ls -l
# -rw-rw-r-- 1 afabre afabre 1286 août 21 21:05 package.json
# -rw-rw-r-- 1 afabre afabre 162685 août 21 21:05 package-lock.json

# Run in parallel with -P
xargs -P
Zsh completion functions [shell][zsh]

A quick trick to have custom completion on the aliases I create.

First create the function and the alias, they can be in ~/.bash_aliases or whatever.

myCoolFunction() {
echo "Here are the args from my function $@"
}
alias mcf='myCoolFunction'

Then create the completion function (best practice underscore+function name) which can be anywhere too. An interesting list of the helpers provided by zsh for the completion functions is here.

# Suggest words as completion options
_myCoolFunction() {
compadd "$@" foo bar baz
}

# Or have completion options with additional description
_myCoolFunction() {
local -a options
options=(
'arg1:To do something'
'arg2:To do something else'
'arg3:A different argument'
)
_describe 'mcf' options
}

Finally in ~/.zshrc we can register _myCoolFunction as the completion function of myCoolFunction:

compdef _myCoolFunction myCoolFunction

Once everything is ready in a new shell typing mcf <TAB> should yield the 3 completions options.

If things don't work one can check the completion function for a particular function (It does not work with the alias) with:

echo $_comps[myCoolFunction]

and the implementation with

functions $_comps[myCoolFunction]

Finally I should check how to make it work with the defined files (~/.oh-my-zsh/completions) and understand why the compdef command only works when put in .zshrc.

Back to top \ No newline at end of file diff --git a/notes/tmux/index.html b/notes/tmux/index.html index 60f31d4b..c6a4617a 100644 --- a/notes/tmux/index.html +++ b/notes/tmux/index.html @@ -6,4 +6,4 @@ * Author: Rose Pritchard */code[class*=language-],pre[class*=language-]{color:#ccc;background:0 0;font-family:Consolas,Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}.formatted-tag{font-family:var(--nc-font-mono);opacity:.6}.not-found{text-align:center}#not-found-canvas{z-index:-1}a{text-decoration:none}pre{max-height:50rem}img{display:block;margin-left:auto;margin-right:auto}ul{list-style-type:circle}.header-anchor{font-size:small}.hidden{display:none}/*! * Inspired by material theme https://www.material-theme.com/docs/reference/color-palette/ - */:root{--is-light-theme:1;--nc-l-tx-1:#546e7a;--nc-l-tx-2:#161d21;--nc-l-tx-3:#6d7169;--nc-l-bg-1:#f4f4f4;--nc-l-bg-2:#eae8e8;--nc-l-bg-3:#fafafa;--nc-l-lk-1:#176166;--nc-l-lk-2:#528aff;--nc-l-lk-tx:#f3f4f5;--nc-l-ac-1:#91b859;--nc-l-ac-tx:#fafafa;--nc-d-tx-1:#ffffff;--nc-d-tx-2:#b7b7b7;--nc-d-tx-3:#8a8d87;--nc-d-bg-1:#1e272c;--nc-d-bg-2:#161d21;--nc-d-bg-3:#263238;--nc-d-lk-1:#5e92ff;--nc-d-lk-2:#99b2e8;--nc-d-lk-tx:#2e3c43;--nc-d-ac-1:#c3e88d;--nc-d-ac-tx:#263238}@media (prefers-color-scheme:dark){:root{--is-light-theme:0;--nc-tx-1:var(--nc-d-tx-1);--nc-tx-2:var(--nc-d-tx-2);--nc-tx-3:var(--nc-d-tx-3);--nc-bg-1:var(--nc-d-bg-1);--nc-bg-2:var(--nc-d-bg-2);--nc-bg-3:var(--nc-d-bg-3);--nc-lk-1:var(--nc-d-lk-1);--nc-lk-2:var(--nc-d-lk-2);--nc-lk-tx:var(--nc-d-lk-tx);--nc-ac-1:var(--nc-d-ac-1);--nc-ac-tx:var(--nc-d-ac-tx)}}.nav-link{text-decoration:none}.nav-link.active{color:var(--nc-lk-2)}.hamburger{width:20px;height:2px;box-shadow:inset 0 0 0 32px,0 -6px,0 6px;margin:16px 7px;display:block}.topnav .icon{display:none}@media screen and (max-width:600px){.topnav span.nav-item:not(.active){display:none}.topnav span.icon{float:right;display:block;right:0;top:0;color:var(--nc-lk-1)}.topnav .nav-separator{display:none}.topnav.responsive{position:relative}.topnav.responsive span.icon{position:absolute;right:0;top:0;color:var(--nc-lk-2)}.topnav.responsive span{float:none;display:block;text-align:left}.topnav.responsive span.nav-item:not(.active){display:block}}.comment{--comment-bg:#e3efee;--comment-d-bg:#2a4765;margin-top:20px;padding:5px}.add-comment-btn{float:right}.comment-header{background:var(--comment-bg);padding-right:100px;padding-left:10px;border-top-left-radius:10px;border-top-right-radius:10px;padding:5px}.comment-content{border:2px solid var(--comment-bg);border-bottom-left-radius:10px;border-bottom-right-radius:10px}.comment-text{padding:10px}.comment-reactions{border-top:2px solid var(--comment-bg);padding:5px}.comment-reaction-item{padding-right:10px;padding-left:10px;border-right:2px solid var(--comment-bg)}@media (prefers-color-scheme:dark){.comment{--comment-bg:var(--comment-d-bg)}}kbd{--black-800:#242729;--white:#fff;--black-075:#e4e6e8;--black-300:#9fa6ad;--s-prose-line-height:1.5;--ff-sans:Arial,"Helvetica Neue",Helvetica,sans-serif}@media (prefers-color-scheme:dark){kbd{--black-800:#e7e8eb;--white:#2d2d2d;--black-075:#404345;--black-300:#7d848d}}kbd{display:inline-block;margin:0 .1em;padding:.1em .6em;font-family:var(--nc-font-sans);font-size:11px;line-height:var(--s-prose-line-height);color:var(--black-800);text-shadow:0 1px 0 var(--white);background-color:var(--black-075);border:1px solid var(--black-300);border-radius:3px;box-shadow:0 1px 1px rgba(12,13,14,.15),inset 0 1px 0 0 #fff;overflow-wrap:break-word}.top-link{transition:all .25s ease-in-out;position:fixed;bottom:0;left:10;display:inline-flex;cursor:pointer;align-items:center;justify-content:center;margin:0 3em 3em 0;border-radius:50%;padding:.25em;width:40px;height:40px;background-color:var(--nc-bg-2)}.top-link.show{visibility:visible;opacity:1}.top-link.hide{visibility:hidden;opacity:0}.top-link svg{fill:var(--nc-lk-1);width:24px;height:12px}.top-link:hover{background-color:var(--nc-bg-0)}.top-link:hover svg{fill:var(--nc-lk-2)}.screen-reader-text{position:absolute;clip-path:inset(50%);margin:-1px;border:0;padding:0;width:1px;height:1px;overflow:hidden;word-wrap:normal!important;clip:rect(1px,1px,1px,1px)}.screen-reader-text:focus{display:block;top:5px;left:5px;z-index:100000;clip-path:none;background-color:#eee;padding:15px 23px 14px;width:auto;height:auto;text-decoration:none;line-height:normal;color:#444;font-size:1em;clip:auto!important}.disable-scrollbars::-webkit-scrollbar{background:0 0;width:0}.disable-scrollbars{scrollbar-width:none;-ms-overflow-style:none}.pull-right{float:right}.post-subheader{font-style:italic;color:var(--nc-tx-3)}.post-date{font-family:var(--nc-font-mono)}ul.post-list{list-style-type:none;padding-left:0}@media screen and (max-width:600px){.post-date{display:none}ul.post-list{list-style-type:disc;padding-left:0}}.post-date.no-date{display:none}ul.post-list.no-date{list-style-type:disc;padding-left:2rem}

The stuff I do

Tmux

← Notes

Tags: [tmux]

List sessions 🔗

tmux list-sessions

Attache session 🔗

tmux a -t [session-id]

← Notes

Back to top
\ No newline at end of file + */:root{--is-light-theme:1;--nc-l-tx-1:#546e7a;--nc-l-tx-2:#161d21;--nc-l-tx-3:#6d7169;--nc-l-bg-1:#f4f4f4;--nc-l-bg-2:#eae8e8;--nc-l-bg-3:#fafafa;--nc-l-lk-1:#176166;--nc-l-lk-2:#528aff;--nc-l-lk-tx:#f3f4f5;--nc-l-ac-1:#91b859;--nc-l-ac-tx:#fafafa;--nc-d-tx-1:#ffffff;--nc-d-tx-2:#b7b7b7;--nc-d-tx-3:#8a8d87;--nc-d-bg-1:#1e272c;--nc-d-bg-2:#161d21;--nc-d-bg-3:#263238;--nc-d-lk-1:#5e92ff;--nc-d-lk-2:#99b2e8;--nc-d-lk-tx:#2e3c43;--nc-d-ac-1:#c3e88d;--nc-d-ac-tx:#263238}@media (prefers-color-scheme:dark){:root{--is-light-theme:0;--nc-tx-1:var(--nc-d-tx-1);--nc-tx-2:var(--nc-d-tx-2);--nc-tx-3:var(--nc-d-tx-3);--nc-bg-1:var(--nc-d-bg-1);--nc-bg-2:var(--nc-d-bg-2);--nc-bg-3:var(--nc-d-bg-3);--nc-lk-1:var(--nc-d-lk-1);--nc-lk-2:var(--nc-d-lk-2);--nc-lk-tx:var(--nc-d-lk-tx);--nc-ac-1:var(--nc-d-ac-1);--nc-ac-tx:var(--nc-d-ac-tx)}}.nav-link{text-decoration:none}.nav-link.active{color:var(--nc-lk-2)}.hamburger{width:20px;height:2px;box-shadow:inset 0 0 0 32px,0 -6px,0 6px;margin:16px 7px;display:block}.topnav .icon{display:none}@media screen and (max-width:600px){.topnav span.nav-item:not(.active){display:none}.topnav span.icon{float:right;display:block;right:0;top:0;color:var(--nc-lk-1)}.topnav .nav-separator{display:none}.topnav.responsive{position:relative}.topnav.responsive span.icon{position:absolute;right:0;top:0;color:var(--nc-lk-2)}.topnav.responsive span{float:none;display:block;text-align:left}.topnav.responsive span.nav-item:not(.active){display:block}}.comment{--comment-bg:#e3efee;--comment-d-bg:#2a4765;margin-top:20px;padding:5px}.add-comment-btn{float:right}.comment-header{background:var(--comment-bg);padding-right:100px;padding-left:10px;border-top-left-radius:10px;border-top-right-radius:10px;padding:5px}.comment-content{border:2px solid var(--comment-bg);border-bottom-left-radius:10px;border-bottom-right-radius:10px}.comment-text{padding:10px}.comment-reactions{border-top:2px solid var(--comment-bg);padding:5px}.comment-reaction-item{padding-right:10px;padding-left:10px;border-right:2px solid var(--comment-bg)}@media (prefers-color-scheme:dark){.comment{--comment-bg:var(--comment-d-bg)}}kbd{--black-800:#242729;--white:#fff;--black-075:#e4e6e8;--black-300:#9fa6ad;--s-prose-line-height:1.5;--ff-sans:Arial,"Helvetica Neue",Helvetica,sans-serif}@media (prefers-color-scheme:dark){kbd{--black-800:#e7e8eb;--white:#2d2d2d;--black-075:#404345;--black-300:#7d848d}}kbd{display:inline-block;margin:0 .1em;padding:.1em .6em;font-family:var(--nc-font-sans);font-size:11px;line-height:var(--s-prose-line-height);color:var(--black-800);text-shadow:0 1px 0 var(--white);background-color:var(--black-075);border:1px solid var(--black-300);border-radius:3px;box-shadow:0 1px 1px rgba(12,13,14,.15),inset 0 1px 0 0 #fff;overflow-wrap:break-word}.top-link{transition:all .25s ease-in-out;position:fixed;bottom:0;left:10;display:inline-flex;cursor:pointer;align-items:center;justify-content:center;margin:0 3em 3em 0;border-radius:50%;padding:.25em;width:40px;height:40px;background-color:var(--nc-bg-2)}.top-link.show{visibility:visible;opacity:1}.top-link.hide{visibility:hidden;opacity:0}.top-link svg{fill:var(--nc-lk-1);width:24px;height:12px}.top-link:hover{background-color:var(--nc-bg-0)}.top-link:hover svg{fill:var(--nc-lk-2)}.screen-reader-text{position:absolute;clip-path:inset(50%);margin:-1px;border:0;padding:0;width:1px;height:1px;overflow:hidden;word-wrap:normal!important;clip:rect(1px,1px,1px,1px)}.screen-reader-text:focus{display:block;top:5px;left:5px;z-index:100000;clip-path:none;background-color:#eee;padding:15px 23px 14px;width:auto;height:auto;text-decoration:none;line-height:normal;color:#444;font-size:1em;clip:auto!important}.disable-scrollbars::-webkit-scrollbar{background:0 0;width:0}.disable-scrollbars{scrollbar-width:none;-ms-overflow-style:none}.pull-right{float:right}.post-subheader{font-style:italic;color:var(--nc-tx-3)}.post-date{font-family:var(--nc-font-mono)}ul.post-list{list-style-type:none;padding-left:0}@media screen and (max-width:600px){.post-date{display:none}ul.post-list{list-style-type:disc;padding-left:0}}.post-date.no-date{display:none}ul.post-list.no-date{list-style-type:disc;padding-left:2rem}

The stuff I do

Tmux

← Notes

Tags: [tmux]

List sessions 🔗

tmux list-sessions

Attach session 🔗

tmux a -t [session-id]

← Notes

Back to top
\ No newline at end of file diff --git a/notes/tmux_colors/index.html b/notes/tmux_colors/index.html new file mode 100644 index 00000000..227bd5d5 --- /dev/null +++ b/notes/tmux_colors/index.html @@ -0,0 +1,9 @@ +Tmux list all 256 colors - The stuff I doTmux list all 256 colors

The stuff I do

Tmux list all 256 colors

← Notes

Tags: [tmux][colors]

for i in {0..255}; do
printf "\x1b[38;5;${i}mcolour${i}\x1b[0m\n"
done

← Notes

Back to top
\ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index 2f416a7b..3dc718cf 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1 +1 @@ -https://www.statox.fr/posts/2016/05/vim_debug_mapping/2016-05-10T00:00:00.000Zhttps://www.statox.fr/posts/2017/02/GOD_vim/2017-02-01T00:00:00.000Zhttps://www.statox.fr/posts/2017/09/vim_colorscheme_changer/2017-09-22T00:00:00.000Zhttps://www.statox.fr/posts/2019/01/p5-pool/2019-01-10T00:00:00.000Zhttps://www.statox.fr/posts/2020/01/p5-genetic-algorithms/2020-01-23T00:00:00.000Zhttps://www.statox.fr/posts/2020/03/p5-maze/2020-03-03T00:00:00.000Zhttps://www.statox.fr/posts/2020/05/p5-cellular-automaton/2020-05-13T00:00:00.000Zhttps://www.statox.fr/posts/2020/06/p5-circle-packing/2020-06-21T00:00:00.000Zhttps://www.statox.fr/posts/2020/07/vim_flash_yanked_text/2020-07-04T00:00:00.000Zhttps://www.statox.fr/posts/2020/07/comments/2020-07-14T00:00:00.000Zhttps://www.statox.fr/posts/2020/07/minesweeper/2020-07-22T00:00:00.000Zhttps://www.statox.fr/posts/2020/09/boids/2020-09-03T00:00:00.000Zhttps://www.statox.fr/posts/2020/09/p5-jump/2020-09-03T00:00:00.000Zhttps://www.statox.fr/posts/2020/10/breath/2020-10-22T00:00:00.000Zhttps://www.statox.fr/posts/2020/10/asteroids/2020-10-25T00:00:00.000Zhttps://www.statox.fr/posts/2020/11/ants/2020-11-09T00:00:00.000Zhttps://www.statox.fr/posts/2021/01/triomino/2021-01-20T00:00:00.000Zhttps://www.statox.fr/posts/2021/01/reversi/2021-01-21T00:00:00.000Zhttps://www.statox.fr/posts/2021/02/stepping-down-vi-se/2021-02-04T00:00:00.000Zhttps://www.statox.fr/posts/2021/03/travis-to-githubactions/2021-03-03T00:00:00.000Zhttps://www.statox.fr/posts/2021/03/breaking_habits_floating_window/2021-03-07T00:00:00.000Zhttps://www.statox.fr/posts/2021/03/alter_ansible_debugging_output/2021-03-17T00:00:00.000Zhttps://www.statox.fr/posts/2021/04/firefox_autohide_bookmarks/2021-04-10T00:00:00.000Zhttps://www.statox.fr/posts/2021/04/color_picker_shaders/2021-04-15T00:00:00.000Zhttps://www.statox.fr/posts/2021/05/becoming_a_good_technical_interviewer/2021-05-05T00:00:00.000Zhttps://www.statox.fr/posts/2021/10/race_generator/2021-10-16T00:00:00.000Zhttps://www.statox.fr/posts/2021/11/eleventy_secrets/2021-11-08T00:00:00.000Zhttps://www.statox.fr/posts/2021/11/eleventy_search_bar/2021-11-10T00:00:00.000Zhttps://www.statox.fr/posts/2022/03/dockerizing_dev_env/2022-03-30T00:00:00.000Zhttps://www.statox.fr/posts/2022/04/updates_04_22/2022-04-22T00:00:00.000Zhttps://www.statox.fr/todo/circular_jump/2022-07-12T00:00:00.000Zhttps://www.statox.fr/todo/homemade_monitoring/2022-07-12T00:00:00.000Zhttps://www.statox.fr/todo/weather_station/2022-07-12T00:00:00.000Zhttps://www.statox.fr/posts/2022/07/zoom_virtual_background/2022-07-15T00:00:00.000Zhttps://www.statox.fr/todo/todo_page/2022-07-15T00:00:00.000Zhttps://www.statox.fr/posts/2021/05/javascript_golf_tips/2023-09-07T00:00:00.000Zhttps://www.statox.fr/404.html2023-10-04T12:13:35.517Zhttps://www.statox.fr/coolcovers/all_along_the_watchtower/2023-10-04T12:13:35.521Zhttps://www.statox.fr/coolcovers/ca_plane_pour_moi/2023-10-04T12:13:35.521Zhttps://www.statox.fr/coolcovers/california_dreaming/2023-10-04T12:13:35.521Zhttps://www.statox.fr/coolcovers/dub_side_of_the_moon/2023-10-04T12:13:35.521Zhttps://www.statox.fr/coolcovers/2023-10-04T12:13:35.521Zhttps://www.statox.fr/cv_entries/content/interests/2023-10-04T12:13:35.521Zhttps://www.statox.fr/cv_entries/content/introduction/2023-10-04T12:13:35.521Zhttps://www.statox.fr/cv_entries/education/2014_marne_la_valee/2023-10-04T12:13:35.525Zhttps://www.statox.fr/cv_entries/education/2016_efrei/2023-10-04T12:13:35.525Zhttps://www.statox.fr/cv_entries/work/2015_enablon/2023-10-04T12:13:35.525Zhttps://www.statox.fr/cv_entries/work/2016_nexworld/2023-10-04T12:13:35.525Zhttps://www.statox.fr/cv_entries/work/2019_dashlane/2023-10-04T12:13:35.525Zhttps://www.statox.fr/guitar/chord-progressions/2023-10-04T12:13:35.525Zhttps://www.statox.fr/guitar/2023-10-04T12:13:35.525Zhttps://www.statox.fr/2023-10-04T12:13:35.525Zhttps://www.statox.fr/mirror/GitFixUm/2023-10-04T12:13:35.525Zhttps://www.statox.fr/mirror/becoming-a-good-technical-interviewer/2023-10-04T12:13:35.525Zhttps://www.statox.fr/mirror/how-to-create-a-good-problem-solving-interview/2023-10-04T12:13:35.525Zhttps://www.statox.fr/music/2023-10-04T12:13:35.525Zhttps://www.statox.fr/notes/ansible/2023-10-04T12:13:35.525Zhttps://www.statox.fr/notes/bash-arrays/2023-10-04T12:13:35.525Zhttps://www.statox.fr/notes/bash-date/2023-10-04T12:13:35.525Zhttps://www.statox.fr/notes/bash_loop/2023-10-04T12:13:35.525Zhttps://www.statox.fr/notes/docker-data/2023-10-04T12:13:35.525Zhttps://www.statox.fr/notes/docker-proxy/2023-10-04T12:13:35.525Zhttps://www.statox.fr/notes/docker/2023-10-04T12:13:35.525Zhttps://www.statox.fr/notes/dunst/2023-10-04T12:13:35.525Zhttps://www.statox.fr/notes/ffmpeg/2023-10-04T12:13:35.525Zhttps://www.statox.fr/notes/firefox/2023-10-04T12:13:35.525Zhttps://www.statox.fr/notes/git-commits/2023-10-04T12:13:35.525Zhttps://www.statox.fr/notes/git-search/2023-10-04T12:13:35.525Zhttps://www.statox.fr/notes/grep/2023-10-04T12:13:35.525Zhttps://www.statox.fr/notes/i3_enable_touchpad/2023-10-04T12:13:35.525Zhttps://www.statox.fr/notes/2023-10-04T12:13:35.525Zhttps://www.statox.fr/notes/keyboard_remap_arrow_keys/2023-10-04T12:13:35.525Zhttps://www.statox.fr/notes/keyboard_speed_xset/2023-10-04T12:13:35.525Zhttps://www.statox.fr/notes/scp/2023-10-04T12:13:35.525Zhttps://www.statox.fr/notes/screen/2023-10-04T12:13:35.525Zhttps://www.statox.fr/notes/shell-redirection/2023-10-04T12:13:35.525Zhttps://www.statox.fr/notes/systemctl/2023-10-04T12:13:35.525Zhttps://www.statox.fr/notes/tmux/2023-10-04T12:13:35.525Zhttps://www.statox.fr/notes/xargs/2023-10-04T12:13:35.525Zhttps://www.statox.fr/notes/zsh-completion-function/2023-10-04T12:13:35.525Zhttps://www.statox.fr/CV/2023-10-04T12:13:35.525Zhttps://www.statox.fr/about/2023-10-04T12:13:35.525Zhttps://www.statox.fr/chords/2023-10-04T12:13:35.525Zhttps://www.statox.fr/feed.xml2023-10-04T12:13:35.525Zhttps://www.statox.fr/projects/2023-10-04T12:13:35.525Zhttps://www.statox.fr/resume/2023-10-04T12:13:35.525Zhttps://www.statox.fr/ring/2023-10-04T12:13:35.525Zhttps://www.statox.fr/pedals/2023-10-04T12:13:35.529Zhttps://www.statox.fr/posts/2023-10-04T12:13:35.569Zhttps://www.statox.fr/posts/bash/alter_ansible_debugging_output/2023-10-04T12:13:35.569Zhttps://www.statox.fr/posts/vim/breaking_habits_floating_window/2023-10-04T12:13:35.569Zhttps://www.statox.fr/posts/others/travis-to-githubactions/2023-10-04T12:13:35.569Zhttps://www.statox.fr/posts/vim/stepping-down-vi-se/2023-10-04T12:13:35.569Zhttps://www.statox.fr/posts/p5/winter-holiday-2020/reversi/2023-10-04T12:13:35.569Zhttps://www.statox.fr/posts/p5/winter-holiday-2020/triomino/2023-10-04T12:13:35.569Zhttps://www.statox.fr/posts/p5/ants/2023-10-04T12:13:35.569Zhttps://www.statox.fr/posts/p5/asteroids/2023-10-04T12:13:35.569Zhttps://www.statox.fr/breath/2023-10-04T12:13:35.569Zhttps://www.statox.fr/posts/p5/boids/2023-10-04T12:13:35.569Zhttps://www.statox.fr/posts/p5/p5-jump/2023-10-04T12:13:35.569Zhttps://www.statox.fr/posts/p5/minesweeper/2023-10-04T12:13:35.569Zhttps://www.statox.fr/posts/others/comments/2023-10-04T12:13:35.569Zhttps://www.statox.fr/posts/vim/vim_flash_yanked_text/2023-10-04T12:13:35.569Zhttps://www.statox.fr/posts/p5/p5-circle-packing/2023-10-04T12:13:35.569Zhttps://www.statox.fr/posts/p5/p5-cellular-automaton/2023-10-04T12:13:35.569Zhttps://www.statox.fr/posts/p5/p5-maze/2023-10-04T12:13:35.569Zhttps://www.statox.fr/posts/p5/p5-genetic-algorithms/2023-10-04T12:13:35.569Zhttps://www.statox.fr/posts/p5/p5-pool/2023-10-04T12:13:35.569Zhttps://www.statox.fr/posts/vim/vim_colorscheme_changer/2023-10-04T12:13:35.569Zhttps://www.statox.fr/posts/vim/GOD_vim/2023-10-04T12:13:35.569Zhttps://www.statox.fr/posts/vim/vim_debug_mapping/2023-10-04T12:13:35.569Zhttps://www.statox.fr/golf/2023-10-04T12:13:35.569Zhttps://www.statox.fr/todo/2023-10-04T12:13:35.569Zhttps://www.statox.fr/user_manuals/2023-10-04T12:13:35.569Z +https://www.statox.fr/posts/2016/05/vim_debug_mapping/2016-05-10T00:00:00.000Zhttps://www.statox.fr/posts/2017/02/GOD_vim/2017-02-01T00:00:00.000Zhttps://www.statox.fr/posts/2017/09/vim_colorscheme_changer/2017-09-22T00:00:00.000Zhttps://www.statox.fr/posts/2019/01/p5-pool/2019-01-10T00:00:00.000Zhttps://www.statox.fr/posts/2020/01/p5-genetic-algorithms/2020-01-23T00:00:00.000Zhttps://www.statox.fr/posts/2020/03/p5-maze/2020-03-03T00:00:00.000Zhttps://www.statox.fr/posts/2020/05/p5-cellular-automaton/2020-05-13T00:00:00.000Zhttps://www.statox.fr/posts/2020/06/p5-circle-packing/2020-06-21T00:00:00.000Zhttps://www.statox.fr/posts/2020/07/vim_flash_yanked_text/2020-07-04T00:00:00.000Zhttps://www.statox.fr/posts/2020/07/comments/2020-07-14T00:00:00.000Zhttps://www.statox.fr/posts/2020/07/minesweeper/2020-07-22T00:00:00.000Zhttps://www.statox.fr/posts/2020/09/boids/2020-09-03T00:00:00.000Zhttps://www.statox.fr/posts/2020/09/p5-jump/2020-09-03T00:00:00.000Zhttps://www.statox.fr/posts/2020/10/breath/2020-10-22T00:00:00.000Zhttps://www.statox.fr/posts/2020/10/asteroids/2020-10-25T00:00:00.000Zhttps://www.statox.fr/posts/2020/11/ants/2020-11-09T00:00:00.000Zhttps://www.statox.fr/posts/2021/01/triomino/2021-01-20T00:00:00.000Zhttps://www.statox.fr/posts/2021/01/reversi/2021-01-21T00:00:00.000Zhttps://www.statox.fr/posts/2021/02/stepping-down-vi-se/2021-02-04T00:00:00.000Zhttps://www.statox.fr/posts/2021/03/travis-to-githubactions/2021-03-03T00:00:00.000Zhttps://www.statox.fr/posts/2021/03/breaking_habits_floating_window/2021-03-07T00:00:00.000Zhttps://www.statox.fr/posts/2021/03/alter_ansible_debugging_output/2021-03-17T00:00:00.000Zhttps://www.statox.fr/posts/2021/04/firefox_autohide_bookmarks/2021-04-10T00:00:00.000Zhttps://www.statox.fr/posts/2021/04/color_picker_shaders/2021-04-15T00:00:00.000Zhttps://www.statox.fr/posts/2021/05/becoming_a_good_technical_interviewer/2021-05-05T00:00:00.000Zhttps://www.statox.fr/posts/2021/10/race_generator/2021-10-16T00:00:00.000Zhttps://www.statox.fr/posts/2021/11/eleventy_secrets/2021-11-08T00:00:00.000Zhttps://www.statox.fr/posts/2021/11/eleventy_search_bar/2021-11-10T00:00:00.000Zhttps://www.statox.fr/posts/2022/03/dockerizing_dev_env/2022-03-30T00:00:00.000Zhttps://www.statox.fr/posts/2022/04/updates_04_22/2022-04-22T00:00:00.000Zhttps://www.statox.fr/todo/circular_jump/2022-07-12T00:00:00.000Zhttps://www.statox.fr/todo/homemade_monitoring/2022-07-12T00:00:00.000Zhttps://www.statox.fr/todo/weather_station/2022-07-12T00:00:00.000Zhttps://www.statox.fr/posts/2022/07/zoom_virtual_background/2022-07-15T00:00:00.000Zhttps://www.statox.fr/todo/todo_page/2022-07-15T00:00:00.000Zhttps://www.statox.fr/posts/2021/05/javascript_golf_tips/2023-09-07T00:00:00.000Zhttps://www.statox.fr/404.html2023-10-13T23:57:05.487Zhttps://www.statox.fr/coolcovers/all_along_the_watchtower/2023-10-13T23:57:05.491Zhttps://www.statox.fr/coolcovers/ca_plane_pour_moi/2023-10-13T23:57:05.491Zhttps://www.statox.fr/coolcovers/california_dreaming/2023-10-13T23:57:05.491Zhttps://www.statox.fr/coolcovers/dub_side_of_the_moon/2023-10-13T23:57:05.491Zhttps://www.statox.fr/coolcovers/2023-10-13T23:57:05.491Zhttps://www.statox.fr/cv_entries/content/interests/2023-10-13T23:57:05.491Zhttps://www.statox.fr/cv_entries/content/introduction/2023-10-13T23:57:05.491Zhttps://www.statox.fr/cv_entries/education/2014_marne_la_valee/2023-10-13T23:57:05.491Zhttps://www.statox.fr/cv_entries/education/2016_efrei/2023-10-13T23:57:05.491Zhttps://www.statox.fr/cv_entries/work/2015_enablon/2023-10-13T23:57:05.491Zhttps://www.statox.fr/cv_entries/work/2016_nexworld/2023-10-13T23:57:05.491Zhttps://www.statox.fr/cv_entries/work/2019_dashlane/2023-10-13T23:57:05.491Zhttps://www.statox.fr/guitar/chord-progressions/2023-10-13T23:57:05.491Zhttps://www.statox.fr/guitar/2023-10-13T23:57:05.491Zhttps://www.statox.fr/2023-10-13T23:57:05.491Zhttps://www.statox.fr/mirror/GitFixUm/2023-10-13T23:57:05.491Zhttps://www.statox.fr/mirror/becoming-a-good-technical-interviewer/2023-10-13T23:57:05.491Zhttps://www.statox.fr/mirror/how-to-create-a-good-problem-solving-interview/2023-10-13T23:57:05.491Zhttps://www.statox.fr/music/2023-10-13T23:57:05.491Zhttps://www.statox.fr/notes/ansible/2023-10-13T23:57:05.491Zhttps://www.statox.fr/notes/bash-arrays/2023-10-13T23:57:05.491Zhttps://www.statox.fr/notes/bash-date/2023-10-13T23:57:05.491Zhttps://www.statox.fr/notes/bash_loop/2023-10-13T23:57:05.491Zhttps://www.statox.fr/notes/docker-data/2023-10-13T23:57:05.491Zhttps://www.statox.fr/notes/docker-proxy/2023-10-13T23:57:05.491Zhttps://www.statox.fr/notes/docker/2023-10-13T23:57:05.491Zhttps://www.statox.fr/notes/dunst/2023-10-13T23:57:05.491Zhttps://www.statox.fr/notes/ffmpeg/2023-10-13T23:57:05.491Zhttps://www.statox.fr/notes/firefox/2023-10-13T23:57:05.491Zhttps://www.statox.fr/notes/git-commits/2023-10-13T23:57:05.491Zhttps://www.statox.fr/notes/git-search/2023-10-13T23:57:05.491Zhttps://www.statox.fr/notes/grep/2023-10-13T23:57:05.491Zhttps://www.statox.fr/notes/i3_enable_touchpad/2023-10-13T23:57:05.491Zhttps://www.statox.fr/notes/2023-10-13T23:57:05.491Zhttps://www.statox.fr/notes/keyboard_remap_arrow_keys/2023-10-13T23:57:05.491Zhttps://www.statox.fr/notes/keyboard_speed_xset/2023-10-13T23:57:05.491Zhttps://www.statox.fr/notes/scp/2023-10-13T23:57:05.491Zhttps://www.statox.fr/notes/screen/2023-10-13T23:57:05.491Zhttps://www.statox.fr/notes/shell-redirection/2023-10-13T23:57:05.491Zhttps://www.statox.fr/notes/systemctl/2023-10-13T23:57:05.495Zhttps://www.statox.fr/notes/tmux/2023-10-13T23:57:05.495Zhttps://www.statox.fr/notes/tmux_colors/2023-10-13T23:57:05.495Zhttps://www.statox.fr/notes/xargs/2023-10-13T23:57:05.495Zhttps://www.statox.fr/notes/zsh-completion-function/2023-10-13T23:57:05.495Zhttps://www.statox.fr/CV/2023-10-13T23:57:05.495Zhttps://www.statox.fr/about/2023-10-13T23:57:05.495Zhttps://www.statox.fr/chords/2023-10-13T23:57:05.495Zhttps://www.statox.fr/feed.xml2023-10-13T23:57:05.495Zhttps://www.statox.fr/projects/2023-10-13T23:57:05.495Zhttps://www.statox.fr/resume/2023-10-13T23:57:05.495Zhttps://www.statox.fr/ring/2023-10-13T23:57:05.495Zhttps://www.statox.fr/pedals/2023-10-13T23:57:05.495Zhttps://www.statox.fr/posts/2023-10-13T23:57:05.523Zhttps://www.statox.fr/posts/bash/alter_ansible_debugging_output/2023-10-13T23:57:05.523Zhttps://www.statox.fr/posts/vim/breaking_habits_floating_window/2023-10-13T23:57:05.523Zhttps://www.statox.fr/posts/others/travis-to-githubactions/2023-10-13T23:57:05.523Zhttps://www.statox.fr/posts/vim/stepping-down-vi-se/2023-10-13T23:57:05.523Zhttps://www.statox.fr/posts/p5/winter-holiday-2020/reversi/2023-10-13T23:57:05.523Zhttps://www.statox.fr/posts/p5/winter-holiday-2020/triomino/2023-10-13T23:57:05.523Zhttps://www.statox.fr/posts/p5/ants/2023-10-13T23:57:05.523Zhttps://www.statox.fr/posts/p5/asteroids/2023-10-13T23:57:05.523Zhttps://www.statox.fr/breath/2023-10-13T23:57:05.523Zhttps://www.statox.fr/posts/p5/boids/2023-10-13T23:57:05.523Zhttps://www.statox.fr/posts/p5/p5-jump/2023-10-13T23:57:05.523Zhttps://www.statox.fr/posts/p5/minesweeper/2023-10-13T23:57:05.523Zhttps://www.statox.fr/posts/others/comments/2023-10-13T23:57:05.523Zhttps://www.statox.fr/posts/vim/vim_flash_yanked_text/2023-10-13T23:57:05.523Zhttps://www.statox.fr/posts/p5/p5-circle-packing/2023-10-13T23:57:05.523Zhttps://www.statox.fr/posts/p5/p5-cellular-automaton/2023-10-13T23:57:05.523Zhttps://www.statox.fr/posts/p5/p5-maze/2023-10-13T23:57:05.523Zhttps://www.statox.fr/posts/p5/p5-genetic-algorithms/2023-10-13T23:57:05.523Zhttps://www.statox.fr/posts/p5/p5-pool/2023-10-13T23:57:05.523Zhttps://www.statox.fr/posts/vim/vim_colorscheme_changer/2023-10-13T23:57:05.523Zhttps://www.statox.fr/posts/vim/GOD_vim/2023-10-13T23:57:05.523Zhttps://www.statox.fr/posts/vim/vim_debug_mapping/2023-10-13T23:57:05.523Zhttps://www.statox.fr/golf/2023-10-13T23:57:05.523Zhttps://www.statox.fr/todo/2023-10-13T23:57:05.523Zhttps://www.statox.fr/user_manuals/2023-10-13T23:57:05.523Z