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.
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
- Inskape
- Gimp
- draw.io
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.
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:
- https://superuser.com/questions/1252004/how-can-i-view-heic-photos-on-linux
- https://lokarithm.com/2021/02/27/linux-how-to-convert-heic-files-to-jpg-or-png/
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
- Docs: la doc officielle !
- pkg.go.dev/: La doc des modules !
- Effective Go: Une lecture obligatoire !
- Go by Example Un site incroyable qui couvre de très nombreux sujets
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
- Don’t use build tags for integration tests (Peter Bourgon)
- Embedding Vue.js Apps in Go (Trevor Taubitz)
- Le meilleur tutoriel vidéo sur la réflexion en Go
Libs
Une liste de librairies intéressantes.
- github.com/gocarina/gocsv: Une lib de gestion des csv avec une fonction
Unmarshal
très pratique. - github.com/microcosm-cc/bluemonday: un sanityzer HTML.
- github.com/mitchellh/go-homedir: un petit module cross-plateforme pour gérer trouver le répertoire utilisateur courant.
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
- Resurchify LaTeX tutorial: Un bon tutoriel de chez Resurchify.
- L’introduction à LaTeX de Filip Biljecki.
- L’incroyable ebook: LaTeX for Administrative Work: à lire absolument pour ceux qui voudrait utiliser LaTeX pour du travail administratif.
- Le site latextemplates.com.
- La formation LaTeX de Silmaril Consultants.
- La DOC de LaTeX (non officielle)
- Creating Fully Reproducible, PDF/A Compliant Documents in LaTeX
Articles d’opinion
- The LaTeX fetish (Or: Don’t write in LaTeX! It’s just for typesetting): un article intéressant sur l’inutilité et la perte de temps que serait l’écriture de contenu directement en LaTeX.
Latexmk
- Exemples de RC files: utiles pour compiler des glossaires (entre autres)
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:
- Arkengheist20
- Isaac Harris Holt’s channel: British engineer making short videos about programing languages (gleam, Python) #gleam