This the multi-page printable view of this section. Click here to print.
Outils
- 1: Terminal
- 2: Édition graphique
- 3: Autres outils
1 - Terminal
On donne ici une description de quelques outils utiles au terminal. Beaucoup de ces outils sont propres à un environnement *nix (macOS, linux, etc.)
ssh
Utilitaire de connexion sécurisée au terminal d’une machine distante.
SSH est un protocole qui permet de se connecter de manière sécurisée à distance au terminal d’une autre machine, par exemple celles de la grappe de calcul. La plupart des systèmes d’exploitation disposent d’emblée d’une application (normalement appelée ssh
elle aussi) qui permet la connexion.
Pour se connecter:
ssh <adresse>
On peut aussi enregistrer ses informations de connexion dans la machine distante afin de ne pas avoir à entrer son nom d’utilisateur/mot de passe à chaque fois. Sur sa propre machine, si l’exécution de
ls -al ~/.ssh/id_*.pub
retourne No such file or directory
ou similaire, on se génère une clé RSA avec
ssh-keygen -t rsa -b 4096 -C "your_email@domain.com"
puis on copie ses informations de connexion sur la machine distante via
ssh-copy-id remote_username@server_ip_address
git
Utilitaire de contrôle de version pour codes & documents.
Git est un système de contrôle de version qui permet de gérer les différentes versions (passées, ou alternatives) d’un code, et qui peut agir en même temps comme copie de sauvegarde1. On l’utilise fréquemment avec des services comme Github ou Bitbucket, qui agissent comme serveur distant sur lesquels les dépôts locaux sont sauvegardés. La plupart des systèmes d’exploitation possèdent d’entrée de jeu une version de git
.
Un “dépôt” git est simplement un répertoire qui contient un sous-répertoire nommé .git
contenant la configuration du dépôt et les méta-données (historique, etc.) On peut créer un dépôt dans un dossier en faisant:
git init
puis en ajoutant des fichiers au dépôt via
git add <fichiers>
git commit -m '<message de mise à jour>'
git branch -M main
git remote add origin <repo-url>
git push -u origin main
où <repo-url>
correspond à l’adresse d’un dépôt distant (Github, etc.) que l’on aura précédemment créé.
Chaque fois qu’une modification substantielle doit être sauvegardée (e.g.: vous avez terminé de programmer une fonction importante d’un code), il suffit de git add
les fichiers, entrer un message de mise à jour via git commit
puis de pousser les changements sur le serveur via git push
.
À l’inverse, pour créer une copie locale d’un dépôt distant, on fait
git clone <adresse du dépôt>
Pour voir l’historique de mise à jour d’un dépôt, on peut faire
git log
On peut se servir de git pour suivre les mises à jour d’un code (peu importe le langage de programmation), et même pour sauvegarder/suivre les changements d’un document latex. Un dépôt peut comporter n’importe quel type de fichier, dans la mesure où celui-ci respecte les limites de stockage du serveur.

parallel
Utilitaire de parallélisation de processus, tant en local que sur une machine distante.
GNU Parallel est une application qui permet de lancer des processus simultanément sur une machine (local ou distante, via SSH), de manière automatisée, et en permettant une grande flexibilité.
Un exemple de situation où parallel
est très utile: lancer une série de processus de calcul sur la grappe du groupe de recherche.
Par exemple, on peut se servir d’une commande telle
parallel --env PATH --workdir . --sshloginfile ~/cluster_hosts.txt --sshdelay 0.1 --bar $@
pour lancer une série de processus sur la liste de serveurs contenue dans le fichier cluster_hosts.txt
.

curl et wget
Utilitaires de requêtes web.
curl
et wget
permettent respectivement d’afficher dans le terminal et de télécharger des pages web (ou fichiers) présents sur un serveur. Ils sont normalement présents sur une machine *nix sans besoin d’être installés.
Par exemple,
curl www.google.com
affiche le contenu de la page dans le terminal, tandis que
wget www.google.com
télécharge le fichier index.html
du serveur.

imgcat
Utilitaire d’affichage d’images dans le terminal.
imgcat est un package Python qui peut aussi être directement appelé via la ligne de commande. Il sert à afficher des images (png
, etc. mais aussi pdf
) via le terminal. Très pratique e.g. lorsqu’on se connecte à distance sur une machine.
Par exemple,
imgcat test.png
imgcat test.pdf
affiche les fichiers test.png
et test.pdf
.

tar, gzip et (un)zip
Utilitaire d’archivage et de compression de fichiers.
Présents d’emblée sur les systèmes *nix, tar
et (un)zip
permettent de créer des archives (de dossiers, fichiers) ou d’extraire les fichiers y étant contenus. La commande zip
crée un fichier compressé “zip”, tandis que la commande tar
ne crée qu’une archive (qui n’est pas compressée). On peut aussi compresser une archive tar
avec la commande gzip
afin de créer une archive .tar.gz
compressée.
Pour créer un fichier zip,
zip -r <file.zip> <folder> -x <exclude>
et pour le décompresser,
unzip <file.zip>
Pour créer une archive tar,
tar cf <file.tar> <files>
et pour en extraire les fichiers,
tar xf <file.tar>
Finalement, pour compresser une archive tar avec gzip
,
gzip <file>
et pour la décompresser,
gzip -d <file.gz>

brew
Gestionnaire d’applications sous macOS.
Brew est un gestionnaire d’applications pour macOS (similaire à yum
et autres sous linux) qui contient une grande quantité d’outils.
Par exemple, pour installer emacs
on peut faire
brew install emacs

emacs
Éditeur texte.
Emacs est l’un des grand-pères du “Notepad” traditionnel en fonctionne dans le terminal. Normalement présent d’emblée sur les postes *nix, il peut aussi être mis à jour (puisqu’il est toujours activement développé).
Deux avantages importants de emacs
:
- il s’exécute via le terminal, donc possible de travailler à distance (e.g. via
ssh
) facilement - il possède d’innombrables raccourcis clavier (qui sont personnalisables), ce qui permet d’accélérer beaucoup l’édition de fichiers

vi
Éditeur texte.
vi
est le frère d’emacs
, et permet également d’éditer rapidement des fichiers textes. Choisir entre emacs
et vi
est une question de préférence personnelle (mais emacs
est définitivement supérieur).
Présent également d’emblée sur les postes *nix.

time
Utilitaire de calcul du temps d’exécution d’une commande.
Permet de mesurer le temps d’exécution d’une commande.
e.g.
time ls -R . > /dev/null
retourne quelque chose comme
ls -R . > /dev/null 4.44s user 5.10s system 62% cpu 15.152 total
Le temps total
est le temps “réel” pris par la commande pour être utilisée (ici, 15.152 sec)

-
Généralement pour des fichiers texte (e.g. code source). Git ne prend pas en charge les fichiers volumineux, donc ce n’est pas à proprement parler une application de sauvegarde. ↩︎
2 - Édition graphique
On présente ici quelques options d’applications pour l’édition vectorielle. L’édition vectorielle agit sur des fichiers vectoriels (tels les PDFs et SVGs) et non sur des images matricielles (PNGs, JPGs, etc.) Permet d’obtenir des images – dans la mesure où ceux-ci peuvent être vectorisées – de bien meilleure qualité visuelle, et qui demeurent facilement modifiables en tout temps.
Adobe Illustrator
Logiciel d’édition vectorielle propriétaire.
Adobe Illustrator est le nec plus ultra de l’édition vectorielle.

Inkscape
Logiciel d’édition vectorielle gratuit.
Inkscape est le petit frère gratuit d’Adobe Illustrator. Possède pas mal de fonctionnalités, mais à mon expérience peu stable et assez lent sous macOS malheureusement.

tikz
Package latex de conception vectorielle.
Tikz n’est pas un programme à proprement parler mais plutôt un package latex. Permet de programmer des diagrammes.

3 - Autres outils
On présente ici des outils qui ne sont pas conçus spécifiquement pour la recherche (ou l’académique) mais qui sont tout de même très pratiques côté productivité/usage.
Hook
Application utile pour créer des liens URIs entre applications sous macOS.
Hook est une application macOS qui permet de créer des URIs pour à peu près n’importe quel objet (virtuel) sur votre poste. Une URI est la version “locale” d’une URL (adresse web). Certaines applications supportent nativement les URIs, tandis que d’autres non. Hook vient centraliser tout ça et permettre de créer des liens facilement autant vers des fichiers que des courriels (dans l’application macOS Mail ou Outlook), des notes dans Obsidian, des références dans Zotero, etc.
Par exemple, une URI associée à un item bibliographique dans Zotero (et créée avec Hook) ressemble à
zotero://select/items/1_QCBWBUWP
On peut insérer ce lien dans un autre programme qui supporte les URIs (e.g. macOS TextEdit, Obsidian, Todoist, etc.) et cliquer sur ce lien nous amène vers la référence dans Zotero.

BetterTouchTools
Application de personnalisation de raccourcis clavier et trackpad sous macOS.
BetterTouchTools est une application macOS qui permet de reconfigurer n’importe quelle combinaison de touches ou de geste du trackpad et de l’associer à toute une gamme d’actions prédéfinies (gestion des fenêtres, démarrage d’une application, etc.)

MountainDuck
Utilitaire de création de disques virtuels.
MountainDuck est une application disponible sur plusieurs plateformes qui permet de créer un disque local virtuel (mount point) associé à un serveur SSH distant, un serveur d’infonuagique (e.g. Google Drive, etc.)
Peut être utilisé pour accéder de manière distante aux fichiers présents sur la grappe de calcul.

Toggl
Utilitaire de comptabilisation du temps.
Toggl permet de comptabiliser le temps passé sur des projets.

Todoist
Gestionnaire de tâches.
Todoist est une application de gestion de tâches disponible sur plusieurs plateformes, et qui est assez bien conçue de manière générale.

Focus
Application pour bloquer les distractions.
Focus est une application macOS qui permet de bloquer les distractions (applications/sites web inutiles).
whenisgood
Application web pour planifier des rencontres.
whenisgood est une application web qui permet de comparer les disponibilités afin de planifier des rencontres.

Alfred
Ligne de commande en mode graphique sous macOS.
Alfred est une application qui permet d’invoquer une ligne de commande graphique permettant de lancer des applications, chercher des fichiers, appeler des fonctions personnalisables, etc.
