Bienvenue sur mon wiki personnel.

Vous trouverez ici des notes à propos d’outils et de technos que j’utilise ou que j’ai utilisés par le passé. Il contient de nombreuses références à des sites/blogs pas forcément faciles à trouver et dont je ne veux pas perdre la trace.

Quelques informations supplémentaires en vrac:

  • Ce site n’est pas un site personel : le mien est à theophileroos.xyz.
  • Vous pouvez retrouver Radioboat, mon lecteur léger de webradios sur github.com/slashformotion/radioboat.
  • Il y a de grandes chances que vous trouviez des fautes d’orthographe ou de grammaire sur ce site. Vous pouvez ouvrir une issue à https://github.com/slashformotion/stuff

Bonne visite !

Linux

J’utilise Linux depuis environ 7 ans. J’ai utilisé (par ordre de temps passé dessus décroissant):

  • ArchLinux
  • Manjaro
  • Ubuntu (et dérivées 1)
  • Debian
  • Solus

J’encourage tout le monde, y compris les plus novice à apprendre à utiliser Linux, ne serait-ce que par curiosité. La distribution la plus simple et sans choix techniques douteux semble être Linux Mint.


1

elle ne sont pas si différentes que ça…

MS fonts sur linux

Instructions: https://www.howtogeek.com/769894/how-to-install-google-and-microsoft-fonts-on-linux/

Les logiciels que j’utilise

Développement

  • Editeurs de code : Helix pour les modifications légères et pour du développement plus poussé, j’utilise VSCode.
  • Le meilleur client git que j’ai pu essayer (GUI): Sublim Merge, sinon je recommende gitui.
  • Mind mapping : Minder

Graphique

Firefox

J’utilise exclusivement firefox pour naviguer sur le web. Je n’utilise pas les forks divers et variés car ils sont souvent en retard sur firefox upstream.

Extensions

Utiliser firefox sans extensions c’est un peu comme sortir marcher dans la neige sans rien au pieds, sur le coup ça semble rigolo mais au bout de 5 minutes on se dit que ce serait mieux avec!

Les indispensables:

  • ublock-origin : Le seul, l’unique bloqueur de pub nécéssaire à une navigation saine sur le web.
    • https://raw.githubusercontent.com/gijsdev/ublock-hide-yt-shorts/master/list.txt => block YT shorts
  • decentraleys : Une extension qui va garder en cache les assets des cdns pour éviter de trop leur donner de données. Cette extension devrait aussi réduire un peu la consommation de bande passante.
  • LibRedirect : Redirige les requêtes de Twitter, YouTube, Instagram et Google Maps vers des alternatives respectueuses de la vie privée.

Les extensions pratiques:

  • Dark Reader: Dark theme everywhere
  • Facebook Containers: Facebook conteneur.
  • Bitwarden: Probably the best password manager.
  • Bit It Now! : Cette extension génère des snippets Bibtex pour la page web courante.
  • uBlacklist : Une extension incroyable qui permet d’empêcher certains sites d’apparaitre dans les résultats des grands moteurs de recherches. On peut ajouter ses propres blocklist ou celles d’autres utilisateurs1.
  • Awesome RSS : Ajoute un bouton RSS dans la barre d’URL.
  • I don’t care about cookies: Valide les popup cookies automatiquement.
1

J’ai créé un repo github qui contient les listes qui m’intéresse + ma propre liste.

Configuration

Pour aller dans le tableau des confs: about:config.

Depuis quelques versions, Firefox cache les extensions dans un sous-menu, ce qui n’est pas à mon goût:

Changez extensions.unifiedExtensions.enabled à false.

Outils

Voici une liste non-exaustive des outils que j’utilise avec quelques notes pour les installer et les configurer

Zellij

Un terminal multiplexer qui gère les sessions, tabs et panes:

Site internet: https://zellij.dev/ Documentation: https://zellij.dev/documentation/ Repo: https://github.com/zellij-org/zellij

Installation avec cargo:

cargo install --locked zellij

Set zsh comme le shell dans zsh (utile quand on utilise bash ou dash comme shell par défault mais zsh comme shell “de travail”).

// Choose the path to the default shell that zellij will use for opening new panes
// Default: $SHELL
//
default_shell "zsh"

Themes

Download themes from the repo: https://github.com/zellij-org/zellij/tree/main/example/themes

// Choose the theme that is specified in the themes section.
// Default: default
//
theme "gruvbox-dark"

Gitui

gitui est un client git dans le terminal.

Repo: https://github.com/extrawurst/gitui

Installer sur Fedora:

sudo dnf install gitui

Installer avec cargo:

cargo install gitui

FIP-Player

FIP-Player est un lecteur webradios publiques françaises.

Repo: https://github.com/DucNg/fip-player

# il faut installer libmpv

# on fedora
sudo dnf install mpv-devel
go install github.com/DucNg/fip-player@latest

Helix

LSP

Latex

Repo: https://github.com/latex-lsp/texlab

Installation avec cargo

cargo install texlab

Typst

Repo: https://github.com/nvarner/typst-lsp

Installation avec cargo

cargo install --locked --git https://github.com/nvarner/typst-lsp

Markdown

Repo: https://github.com/artempyanykh/marksman

Instructions d’installation: https://github.com/artempyanykh/marksman/blob/main/docs/install.md

TOML

Repo: https://github.com/tamasfe/taplo/tree/master

Instruction d’installation: https://taplo.tamasfe.dev

Iphone et linux: une drôle d’histoire

Utiliser un iphone et un ordinateur sous linux peut être assez compliqué. Voici quelques petits “tips” pour mieux les faire cohabiter.

HEIC

Les iphones récents utilisent le format heic pour les photos. Format qui n’est souvent pas géré sur linux sur les distributions que j’ai utilisé.

Sur fedora:

sudo dnf install libheif
# add support of heic to gimp and qt
sudo dnf install gimp-heif-plugin qt-heif-image-plugin

Sur ubuntu (ou debian):

sudo apt install heif-gdk-pixbuf

Ensuite on peut utiliser heif-convert pour convertir des fichiers heic vers des formats plus communs.

heif-convert input.heic output.jpg

Sources:

Distributions Linux

Sur cette page vous allez trouver des notes sur différentes distributions linux.

Fedora

Un des meilleurs guide d’after install pour fedora par Willi Mutschler: Fedora Workstation: Things to do after installation (Apps, Settings, and Tweaks)

Notes à moi-même: Fix DNF

sudo dnf install -y  https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
sudo dnf install -y https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

echo 'fastestmirror=1' | sudo tee -a /etc/dnf/dnf.conf
echo 'max_parallel_downloads=10' | sudo tee -a /etc/dnf/dnf.conf
echo 'deltarpm=true' | sudo tee -a /etc/dnf/dnf.conf
cat /etc/dnf/dnf.conf
# [main]
# gpgcheck=1
# installonly_limit=3
# clean_requirements_on_remove=True
# best=False
# skip_if_unavailable=True
# fastestmirror=1
# max_parallel_downloads=10
# deltarpm=true

NVIDIA WITH XORG

modinfo -F version nvidia
sudo dnf update -y # and reboot if you are not on the latest kernel
sudo dnf install -y akmod-nvidia # rhel/centos users can use kmod-nvidia instead
sudo dnf install -y xorg-x11-drv-nvidia-cuda #optional for cuda/nvdec/nvenc support
sudo dnf install -y xorg-x11-drv-nvidia-cuda-libs
sudo dnf install -y vdpauinfo libva-vdpau-driver libva-utils
sudo dnf install -y vulkan
modinfo -F version nvidia
sudo dnf upgrade --refresh
sudo dnf check
sudo dnf autoremove
sudo fwupdmgr get-devices
sudo fwupdmgr refresh --force
sudo fwupdmgr get-updates
sudo fwupdmgr update
sudo reboot now

zsh

sudo dnf install -y zsh
chsh -s /usr/bin/zsh

flatpak

flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak update
flatpak install -y flatseal

git

sudo dnf install -y git gitui

# Sublim merge
sudo rpm -v --import https://download.sublimetext.com/sublimehq-rpm-pub.gpg
sudo dnf config-manager --add-repo https://download.sublimetext.com/rpm/stable/x86_64/sublime-text.repo
sudo dnf install sublime-merge

Vscode

sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'
sudo dnf check-update
sudo dnf install -y code

hugo

sudo dnf install -y golang #dependency I need

export HUGOVER=`curl --silent "https://api.github.com/repos/gohugoio/hugo/releases/latest" | grep -Po '"tag_name": "\K.*?(?=")'`
wget https://github.com/gohugoio/hugo/releases/download/v${HUGOVER:1}/hugo_extended_${HUGOVER:1}_Linux-64bit.tar.gz
tar -xvf hugo_extended_${HUGOVER:1}_Linux-64bit.tar.gz hugo
rm hugo_extended_${HUGOVER:1}_Linux-64bit.tar.gz
mv hugo ~/.local/bin/hugo
hugo version

Tex

sudo dnf install -y texlive-scheme-full

MS fonts

sudo dnf install -y curl cabextract xorg-x11-font-utils fontconfig
sudo rpm -i https://downloads.sourceforge.net/project/mscorefonts2/rpms/msttcore-fonts-installer-2.6-1.noarch.rpm

Vids

sudo dnf groupupdate sound-and-video
sudo dnf install -y libdvdcss
sudo dnf install -y gstreamer1-plugins-{bad-\*,good-\*,ugly-\*,base} gstreamer1-libav --exclude=gstreamer1-plugins-bad-free-devel ffmpeg gstreamer-ffmpeg 
sudo dnf install -y lame\* --exclude=lame-devel
sudo dnf group upgrade --with-optional Multimedia

sudo dnf config-manager --set-enabled fedora-cisco-openh264
sudo dnf install -y gstreamer1-plugin-openh264 mozilla-openh264 mpv

LibreWolf

https://librewolf.net/installation/fedora/

sudo dnf config-manager --add-repo https://rpm.librewolf.net/librewolf-repo.repo
sudo dnf install librewolf

Git subtree https://packages.fedoraproject.org/pkgs/git/git-subtree/

sudo dnf install git-subtree

Dev tools

Gitui

repo https://github.com/extrawurst/gitui

cargo install --locked --git https://github.com/extrawurst/gitui

Zellij

repo https://github.com/zellij-org/zellij

cargo install --locked zellij

Lazydocker

repo https://github.com/extrawurst/gitui

go install github.com/jesseduffield/lazydocker@latest

zellij

sudo dnf install pkg-config openssl-devel perl # needed to compile
cargo install zellij # gitui

BUS CAN

Les kernels récents gère les sondes pour BUS CAN nativement, cependant il faut setup l’interface réseau. J’ai utilisé un BUS CAN dans le cadre de mes études sous la supervision de Vincent Kerhoas, qui m’a appris beaucoup. La page relative au projet que j’ai réalisé se trouve ici.

Initialisation (à faire à chaque redémarrage)

Pour créer une interface réseau pour communiquer avec les sondes de bus can.

sudo ip link set can0 up type can bitrate 500000

Exploitation

On utilise les outils can-utils pour du debug (utilisable seulement si il n’y a pas trop de trafic sinon, on ne peut rien voir).

Installation pour ArchLinux:

yay -S can-utils

Lien du packet AUR: https://aur.archlinux.org/packages/can-utils

Création d’interfaces Qt (interaction avec un BUS CAN)

Je vous renvoie vers la page de Vincent Kerhoas sur ce sujet: https://www.enib.fr/~kerhoas/qt.html .

Pour faire de l’uart sous linux, il faut que l’utilisateur courant fasse partie du groupe dialout

sudo usermod -a -G dialout [MYUSERNAME]

puis logout, login

Source originale: https://www.enib.fr/~kerhoas/qt.html

Pourquoi utiliser Golang ?

Liens intéressants

Constantes

Les constantes sont déclarées comme des constantes mais utilise le mot clé const au lieu de var. Les constantes peuvent être des charactères, des strings, des booléens ou des valeurs numériques (pas d’arrays ou de slices),

const Pi = 3.14
// Pi is a constant

Un moyen détourné d’obtenir des “constantes” pour tout les types possibles est de faire une fonction qui va renvoyer la valeur voulue, mais c’est sous-optimal car on instancie un nouvel slice à chaque appel de sliceConstant.

func sliceConstant() []string {
 return []string{"1","2", "3"}
}

Closer Interfaces

Les interfaces comportant un closer, c’est à dire une méthode (type).Close() error ne doivent PAS être fermées en utilisant defer SAUF si defer fait paniquer le programme.

Exemple pratique:

func helloNotes() error {
    f, err := os.Create("somewhere/notes.txt")
    defer f.Close() // ici la valeur de l'erreur n'est pas vérifiée
    if err != nil {
        return err
    }

    if err = io.WriteString(f, "hello world"); err != nil {
        f.Close()
        return err
    }
    return nil
}

Il vaut mieux fermer le fichier à la fin “manuellement”.

func helloNotes() error {
    f, err := os.Create("somewhere/notes.txt")
    if err != nil {
        return err
    }

    if err = io.WriteString(f, "hello world"); err != nil {
        f.Close()
        return err
    }

    return f.Close()
}

Ou alors on utiliser panic (mais ça change la gestion des erreurs):

func helloNotes() error {
    f, err := os.Create("somewhere/notes.txt")
    defer func () {
        err := f.Close()
        if err != nil {
            panic(err)
        }
    }()
    if err != nil {
        return err
    }

    if err = io.WriteString(f, "hello world"); err != nil {
        f.Close()
        return err
    }

    return nil
}

Articles intéressants

Libs

Une liste de librairies intéressantes.

LaTeX

J’utilise LaTeX quand je dois créer des documents longs et complexes comme des rapports ou des articles.

Cheatsheet: https://wch.github.io/latexsheet/latexsheet.pdf

Ressources intéressantes

Articles d’opinion

Latexmk

Images

Typst

Typst est un language de typsetting similaire à LaTeX, il permet de créer des documents pdf (notez qu’il y a aussi posibilité d’exporter sous format image).

Liens intéressants:

Here are some youtube channels you should check out: