This the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Outils

Commandes et programmes au terminal, description et fonctionnement de la grappe de calcul, logiciels d’édition graphique et autres, et formations diverses.

1 - Terminal

Aperçu de quelques commandes utiles au 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

<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.

git.

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.

GNU Parallel.

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.

curl.

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.

imgcat.

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>
tar.

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
Brew.

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
emacs.

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.

vi.

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)

time.

  1. 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

Aperçu de logiciels d’é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.

Adobe Illustrator.

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.

Inkscape.

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.

Tikz.

3 - Autres outils

Autres programmes utiles d’usage général.

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.

Hook.

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.)

BetterTouchTools.

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.

MountainDuck.

Toggl

Utilitaire de comptabilisation du temps.

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

Toggl.

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.

Todoist.

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.

Whenisgood.

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.

Alfred.