Ce wiki est destiné aux étudiants de Paul Charbonneau et a pour but de communiquer de l’information d’usage général relativement aux outils de recherche du Groupe, et plus généralement de fournir certains renseignements utiles pour la recherche en simulation numérique. Des ressources, applications et informations sont présentées sur la recherche et les langages de programmation, ainsi plusieurs outils d’ordre plus général. Diverses information concernant plus spécifiquement l’UdeM sont aussi présentes.
La plupart des procédures décrites dans ces pages présument que vous travaillez dans un environnement *nix (linux, macOS).
Cette documentation n’a évidemment pas pour but de décrire de manière exhaustive chaque langage de programmation et chaque application, mais plutôt d’offrir une recension des différentes solutions qui peuvent s’appliquer à un problème donné, et de fournir un point de départ minimal à l’installation et au fonctionnement de ces dernières.
Gestion du contenu
Ce wiki est basé sur le thème Docsy du générateur de sites Hugo, et est hébergé gratuitement sur Netlify. Le code source est maintenu dans un dépôt Github et il est possible de modifier les pages directement à partir des liens dans la barre latérale de droite. Il est également possible de modifier le dépôt localement et de pousser les modifications sur Github, auquel cas Netlify détecte automatiquement les changements et met à jour le site.
Chaque page comporte une en-tête YAML et supporte la syntaxe Markdown. Voir la documentation de Docsy pour plus de détails.
Questions
Pour toute question ou commentaire, vous pouvez contacter Alexandre Champagne.
1 - Recherche
Ressources pour obtenir articles et livres, suivre la nouvelle recherche, gérer références et notes.
1.1 - Articles et livres
Ressources concernant la littérature scientifique.
On présente ici diverses ressources web pour obtenir les livres et articles, et pour évaluer la réputation des revues scientifiques.
Obtenir des articles & livres
Comme ce site est pour l’instant public, seules les ressources légales y sont présentées.
On présente ci-dessous quelques outils pour se tenir au courant de la sortie de nouveaux articles dans un champ de recherche donné, et des annonces de colloques/conférences, postes disponibles, etc.
ResearchGate
Réseau “social” où on peut suivre des chercheurs individuels, si ceux-ci y ajoutent leurs publications.
Le site ResearchGate est un réseau social où on peut suivre des chercheurs, se créer un profil académique, et y entrer nos publications. Ce ne sont pas tous les chercheurs qui y ont un compte mais le site est néanmoins relativement populaire (du moins, dans mon domaine). Cela dit, ce ne sont pas tous les chercheurs qui y déposent leurs articles, et l’interface n’est pas tellement efficace pour faire une veille de la recherche de manière générale. Solution complémentaire dans mon cas.
Feedly
Lecteur RSS qui permet d’être mis à jour en temps réel de la sortie de nouvelles publications (de manière générale, pas seulement scientifiques).
Feedly est une application web qui agit comme aggrégateur/lecteur RSS. Le RSS est un (vieux!) protocole web basé sur le langage XML qui permet d’entrer des sources dans un lecteur, et à chaque fois que notre source publie un nouvel article/blog/etc. notre lecteur affichera une mise à jour. Par exemple, on peut créer une nouvelle entrée dans Feedly pour l’un des fils RSS de la revue Scientific American, et au fur et à mesure que S.A. publie de nouveaux articles, une nouvelle entrée apparaît dans notre lecteur RSS avec un court résumé ainsi qu’un lien vers l’article.
Un lecteur RSS est un moyen extrêmement efficace de passer en revue une grande quantité d’articles sans avoir nécessairement à visiter les pages web individuelles de chaque publication. La grande majorité des revues scientifiques et blogues possèdent des fils RSS auxquels il est possible de souscrire.
Twitter
Ressource parfois utile pour suivre des chercheurs et groupes de recherche précis.
Le réseau social Twitter est particulièrement populaire auprès de la communauté scientifique. Le désavantage, c’est que vous allez autant y voir passer des memes de chats que des publications scientifiques. Cela étant dit, peut être pratique pour découvrir de nouveaux chercheurs, publiciser votre recherche et interagir directement avec les auteurs de publications de manière informelle. Plusieurs autres contenus pertinents y sont publiés également – tutoriels, références à de nouveaux outils, etc.
Attention
Twitter peut rapidement devenir une grosse perte de temps. À utiliser intelligemment.
Listes de courriel
Beaucoup de journaux, groupes ou instituts de recherche offrent des listes de courriel.
Plusieurs université, départements, groupes de recherche et autres regroupements/organismes déploient des listes de diffusions courriel. Utile pour se garder informé des conférences à venir, nouveaux articles publiés, actualités scientifiques et offres d’emploi.
1.3 - Autres sites utiles
Autres ressources.
Ce-dessous on présente les autres ressources qui peuvent être utiles à la recherche.
ORCID
Service d’identification unique.
ORCID est un service qui permet de s’attribuer un identifiant personnel unique (IRCOD iD) pouvant être utilisé pour distinguer plusieurs auteurs homonymes dans des publications scientifiques.
Il existe une grande variété d’outils de gestion bibliographique – on présente ci-dessous trois des plus populaires.
Zotero
Application multi-plateformes et gratuite de gestion bibliographique.
Zotero est un logiciel de gestion bibliographique Open Source et gratuit qui jouit d’une grande popularité et d’une équipe de développement dynamique. Disponible sur plusieurs plateformes (incluant e.g. iOS), le logiciel est extrêmement fiable et possède toute une panoplie de “plug-ins” développés par la communauté.
Il est également possible de payer pour la synchronisation de notre bibliographie entre appareils, et de stocker les fichiers PDFs sur leur serveur. Une interface web est également disponible.
Plug-ins utiles
Better BibTex : permet d’exporter des références sous format BibTex pour utilisation avec LaTeX
PubPeer : permet de voir si un article comporte des commentaires sur PubPeer
Zutilo : permet toute une gamme de fonctions avancées, comme copier des liens URIs, etc.
JabRef
Application multi-plateformes et gratuite de gestion bibliographique.
JabRef est un autre logiciel de gestion bibliographique qui possède de nombreuses fonctionnalités. Malheureusement, je n’ai jamais réussi à le faire fonctionner correctement sous macOS donc difficile d’en parler davantage!
Mendeley
Application multi-plateformes de gestion bibliographique propriétaire de l’éditeur Elsevier.
Mendeley est un logiciel de gestion bibliographique propriétaire de la compagnie d’édition Elsevier. Également disponible sur plusieurs plateformes. Je ne l’ai que très peu utilisé, donc je ne peux pas trop m’étendre à son sujet!
1.5 - Gestion de l’information
Présentation de logiciels de gestion d’information.
On présente ici des outils de gestion de l’information, utiles pour la prise de notes de lecture, de notes de rencontre, etc.
Obsidian
Implémentation numérique du concept de Zettelkasten, notamment popularisé par le sociologue Niklas Luhmann au XXième siècle, qui consiste à structurer l’information en “cartes” afin d’optimiser l’apprentissage et la recherche.
Obsidian est un logiciel de gestion de l’information basé sur l’utilisation de fichiers Markdown. Il permet de créer des “vaults”, qui sont des entités hiérarchiques de dossiers contenant des fichiers markdown qui peuvent être reliés entre eux. Obsidian permet autant d’éditer que de visualiser les fichiers markdown, et possède un grand nombre de “plug-ins” permettant de personnaliser sa configuration.
Un tel logiciel peut être utile pour y déposer e.g.
des notes de lecture
des notes de cours
des notes de rencontre
des liens vers des sites web
des aides-mémoires
L’utilisation de fichiers markdown rend facile l’écriture d’équations et l’inclusion d’images ou de tableaux dans ces notes. On peut aussi facilement créer des liens entre les notes, et la mise en forme des documents est plus rapide qu’avec un logiciel conventionnel d’édition (e.g. Word), tout en gardant le “look” des documents LaTeX (mais sans la complexité d’un tel document). Il est également possible, via Hook, de créer des liens vers des courriels, des dossiers, des items dans Zotero, etc.
2 - Langages de programmation
Langages de programmation, d’analyse, de création de documents et de scripting.
2.1 - Bash
Présentation des rudiments du langage de scripts bash.
On présente dans cette page les rudiments du langage de scripts bash – création d’un script, syntaxe de base, etc.
[Reférences: Alexandre Lemerle, Alexandre Champagne-Ruel]
L’utilisation de scripts bash (ou son alternative, zsh) est un moyen pratique d’automatiser une foule de tâches dans un environnement *nix (linux, macOS, etc.) – du lancement automatique de codes de calcul à l’exécution de tâches de maintenance.
Creation d’un script
Création d’un script minimal et syntaxe de base.
Un script bash est simplement un fichier texte exécutable qui comporte optionnellement une extension .sh. Pour créer le script test.sh et le rendre exécutable, on peut faire:
touch test.sh
chmod 700 test.sh
On doit ensuite inscrire la ligne suivante au début du fichier:
#/usr/bin/env bash
Usage de base
Chaque ligne d’un script bash est ensuite simplement exécutée comme si elle était entrée manuellement à l’invite de commande.
On peut également se servir de tests conditionnels pour diriger l’exécution de script,
if[[ -z "$string"]];thenecho"String is empty"elif[[ -n "$string"]];thenecho"String is not empty"fi
de variables,
NAME="John"echo$NAMEecho"$NAME"echo"${NAME}!"
Il possible d’effectuer certaines opérations mathématiques de base en bash, qui pourraient être utiles pour nommer des fichiers de façon séquentielle, par exemple, mais la syntaxe n’est pas très sexy:
Présentation des rudiments du langage de scripts Makefile.
On présente dans cette page quelques exemples de fichiers Makefile pouvant être utiles pour la compilation de documents latex, codes C, etc.
Un script Makefile est à bien des égards similaire à un script Bash, mais possède une syntaxe parfois légèrement différente. Les scripts Makefile sont exécutés non pas par bash mais par make, et servent de manière générale à compiler des objets.
Exemple: compilation d’un document LaTeX
On peut se servir d’un Makefile pour compiler automatiquement et rapidement un document latex.
Par exemple, on peut se servir d’un script de ce genre pour compiler un document latex:
En copiant le texte ci-dessus dans un fichier sans extension nommé Makefile (notez le M majuscule), on peut alors taper les commandes suivantes dans le répertoire où se trouve le fichier pour exécuter les commandes associées du Makefile:
make : exécute la section default (compile le fichier latex)
make bib : exécute la section bib (compile le fichier latex et la bibliographie)
make clean : exécute la section clean (nettoie le répertoire des fichiers temporaires)
Exemple: compilation d’un code C
Un exemple un peu plus élaboré: conception d’un Makefile pour compiler un code C à l’aide de gcc.
On peut aussi se servir d’un Makefile pour compiler un code C. Par exemple, le script suivant compile mon code de calcul selon le système d’exploitation (la procédure de compilation diffère de l’un à l’autre):
CXX:= g++
RM:= rm -f
CPPFLAGS:=LDFLAGS:= -O2 -fmax-errors=5 -fcompare-debug-second
LDLIBS-MACOS:= -I/usr/local/include -L/usr/local/lib -lgsl
LDLIBS-CENTOS:= -I/home/alexandre/lib/gsl/include -L/home/alexandre/lib/gsl/lib -lgsl -lgslcblas
SRC_DIR:= src
SRCS:=$(wildcard $(SRC_DIR)/*.cpp)BUILD:=build/clipd
LATEST_VERSION:=3all:
@echo MacOS or CentOS?
@exit 1version_check:ifdefvelse$(evalv=$(LATEST_VERSION))@echoNoversionspecified,makingversion$(v)endifmacos:version_check
@echo Building for MacOS...;echo""$(CXX)$(LDFLAGS)$(LDLIBS-MACOS)$(SRC_DIR)$(v)/*.cpp -o $(BUILD)$(v)centos:version_check
@echo Building for CentOS...;echo""$(CXX)$(LDFLAGS)$(LDLIBS-CENTOS)$(SRC_DIR)$(v)/*.cpp -o $(BUILD)$(v)clean:$(RM)$(BUILD)*
On peut alors se servir soit de make macos ou de make centos afin de compiler le code.
2.3 - Python
Présentation des rudiments du langage Python.
Cette page présente quelques informations sur les divers environnements Python, sur les packages pouvant être utiles en modélisation numérique, et sur les moyens d’interfacer Python avec d’autres langages de programmation compilés (Fortran, C).
Vous êtes probablement déjà relativement familier avec Python, donc je ne m’étendrai pas sur le détail de la syntaxe. Toutefois, quelques informations pertinentes peuvent être mentionnées ici.
Environnements
Présentation des divers environnements (interpréteurs, gestionnaires de packages et outils) supportant Python.
Anaconda
Anaconda est probablement la distribution la plus populaire du langage Python, disponible sur plusieurs plateformes.
On peut y créer des environnements virtuels qui comportent une configuration précise (packages présents, etc.) en faisant:
conda create -n my-env
conda activate my-env
Pour installer un module:
conda install <module>
Pour ajouter un répertoire au PYTHONPATH, ce qui permet de créer soi-même des modules:
conda develop <dir>
Packages utiles
Quelques packages utiles pour la modélisation numérique.
numpy : se passe de présentation.
matplotlib : idem.
scipy : idem.
click : permet de créer facilement des interfaces de ligne de commande.
pickle : lecture/écriture disque d’objets en mode binaire.
tqdm : création de barres d’avancement en ligne de commande.
numba : permet de précompiler du code Python, ce qui accélère énormément sa vitesse d’exécution1.
Interface avec d’autres langages
Packages permettant de créer des codes hybrides comportant des modules compilés en C ou en Fortran, d’exécution beaucoup plus rapide que le Python de manière générale.
On peut interfacer du code Python avec des routines écrites en C ou en Fortran, avec Cython et F2PY respectivement.
Dans la réalité, numba peut être très efficace pour accélérer des algorithmes très simples qui nécessitent peu de lignes de code et le moins de packages possible, mais son utilisation devient très difficile pour des codes plus longs, qui font appel à des packages externes ou du code orienté objet. De plus, les messages d’erreur de numba sont des plus cryptiques, donc bonne chance pour débugger votre code. ↩︎
2.4 - C/C++
Présentation des rudiments du langage C/C++.
On présente ci-dessous une brève introduction au langage C avec quelques exemples de codes, et une recension des librairies scientifiques utiles en modélisation numérique.
Un des attraits importants des langages compilés (tels C et C++) par rapport aux langages interprétés (tel Python) vient de leur vitesse d’exécution.
Voici un bref comparatif:
Le principal désavantage de ce type de langage est toutefois l’offre beaucoup moins importante de librairies scientifiques (pas de numpy ici) et la syntaxe parfois plus complexe que celle des langages plus “haut niveau”.
Le langage C possède par ailleurs plusieurs versions (C11, C17) et une extension orientée-objet – le C++.
Finalement, on peut interfacer du code C et du code Python via Cython.
Exemple introductif
Syntaxe et compilation d’un exemple minimal de type “hello world”.
Un code C de type “hello world” pourrait ressembler à:
#include<stdio.h>intmain(){// printf() displays the string inside quotation
printf("Hello, World!");return0;}
En plaçant ce code dans le fichier hello.c, on peut compiler avec
gcc hello.c -o hello
ce qui produit l’exécutable hello.
Librairies scientifiques
Recersion des librairies de calcul scientifique en C/C++.
GNU Scientific Library (GSL)
La GSL est l’une des principales libraires de calcul scientifique en C. Bref aperçu des fonctionnalités:
Complex Numbers
Roots of Polynomials
Special Functions
Vectors and Matrices
Permutations
Sorting
BLAS Support
Linear Algebra
Eigensystems
Fast Fourier Transforms
Quadrature
Random Numbers
Quasi-Random Sequences
Random Distributions
Statistics
Histograms
N-Tuples
Monte Carlo Integration
Simulated Annealing
Differential Equations
Interpolation
Numerical Differentiation
Chebyshev Approximation
Series Acceleration
Discrete Hankel Transforms
Root-Finding
Minimization
Least-Squares Fitting
Physical Constants
IEEE Floating-Point
Discrete Wavelet Transforms
Basis splines
Running Statistics
Sparse Matrices and Linear Algebra
2.5 - Fortran
Présentation des rudiments du langage Fortran.
On présente dans cette page quelques informations concernant le langage de programmation Fortran, les moyens de l’interfacer avec Python, et un bref exemple introductif.
Je connais très peu le Fortran, donc page à rédiger éventuellement.
Le principal attrait du Fortran est qu’il est, comme le C, un langage compilé. Ceci signifie que sa vitesse d’exécution est bien supérieure à votre Python habituel.
La syntaxe générale de Fortran est relativement simple, et il est encore beaucoup utilisé dans plusieurs groupe de recherche vu sa popularité dans les années 80-90.
On peut notamment utiliser F2PY pour interfacer du code Python avec du code Fortran – donc “inclure” des routines Fortran dans un code d’analyse Python plus large, par exemple.
Exemple introductif
Syntaxe et compilation d’un exemple minimal de type “hello world”.
Un code Fortran de type “hello world” pourrait ressembler à:
program hello! This is a comment line; it is ignored by the compiler
print*,'Hello, World!'end program hello
On peut le compiler à l’aide de
gfortran -o hello hello.f90
ce qui produit l’exécutable hello.
2.6 - Julia
Présentation des rudiments du langage Julia.
On présente ici une brève introduction au langage de programmation Julia.
Je connais rien du tout au Julia, page à rédiger éventuellement.
Julia est un langage de haut niveau récent qui peut approcher la vitesse d’exécution de certains codes compilés traditionnels (C, Fortran). Il est couramment utilisé dans les groupes de recherche de biologie.
2.7 - R
Présentation des rudiments du langage R.
On va éventuellement présenter dans cette page une introduction au langage R.
Je connais rien du tout au R, page à rédiger éventuellement.
2.8 - latex
Présentation des rudiments du langage latex.
On présente dans cette page quelques informations utiles pour le langage latex – notamment les packages de gestion bibliographique, et quelques éditeurs utiles.
J’imagine que rendu ici vous êtes tout à fait familiers avec le langage latex, donc je ne vais y consigner que des éléments plus avancés.
Gestion bibliographique
Quelques formats/packages de gestion bibliographique pour latex.
bibtex
Bibtex est l’un des plus vieux format de gestion bibliographique sous latex. On l’utilise avec le package natbib. Plusieurs journaux nécessitent l’entrée de citations avec natbib.
biblatex
Plus récent que bibtex, le format BibLatex (et le package du même nom) possèdent de nombreuses fonctionnalités avancées que bibtex ne fournit pas, par exemple imprimer (facilement…) des entrées bibliographiques dans le texte, etc.
Éditeurs
Quelques éditeurs, tant spécifiques au latex que généraux.
texpad
Texpad est un éditeur macOS relativement bien conçu qui a deux avantages plutôt pratiques selon moi:
complétion automatique (ou suggestions) lorsqu’on cite, car il lit les fichiers de bibliographie
prévisualisation en temps réel du document – ce qui en fait un outil bien pratique pour rédiger rapidement de petits documents (e.g. lettres, etc.)1
Overleaf
Overleaf est un service en ligne qui permet de créer des documents latex et de les visualiser directement dans le fureteur. Se connecte optionnellement avec d’autres services (e.g. Github) ce qui peut être pratique. Possède également des fonctionnalités de collaboration entre auteurs.
emacs
emacs peut évidemment servir à éditer des documents latex, et possède par ailleurs certaines extensions destinées précisément à ça (auctex, par exemple).
À noter que Texpad utilise son outil de compilation interne qui peut ne pas être compatible avec tous les packages latex, et qui peut devenir moins pratique pour les documents plus lourds. ↩︎
2.9 - Markdown
Présentation des rudiments du langage Markdown.
On présente ci-dessous une brève introduction au langage Markdown, incluant quelques éditeurs et la syntaxe de base du langage.
Le langage Markdown est une sorte de version très très simplifiée de latex, qui permet de créer des documents simples comportant certains éléments de mise en forme. Le site web que vous lisez présentement utilise une variation du langage Markdown.
Il est très utile pour prendre des notes de manière plus informelle qu’avec latex, mais peut également être utilisé pour produire des documents PDF. On peut aussi y entrer des équations, ajouter des images, etc.
Éditeurs
Quelques éditeurs pouvant être utilisés pour le Markdown.
MacDown
MacDown est un éditeur open source sous macOS qui permet de créer rapidement des documents Markdown et de les prévisualiser.
emacs
Comme pour l’édition de documents latex, emacs est un autre éditeur très pratique pour l’édition de documents Markdown – à ceci près qu’il ne possède pas de fonction de prévisualisation comme e.g. MacDown.
Obsidian
Obsidian est basé sur une certaine variation du langage Markdown, et peut être tout à fait utile pour entrer des notes dans ce langage. Moins pratique pour l’édition de fichiers individuels toutefois.
Syntaxe de base
Syntaxe de base commune à virtuellement toutes les implémentations de Markdown.
On insère des images en utilisant du code HTML, qui est plus pratique que le code Markdown pour inclure les images (et ne permet pas de les redimensionner):
<imgsrc="cutecat.jpg"style="width:20%">
Résultat:
3 - Outils
Commandes et programmes au terminal, description et fonctionnement de la grappe de calcul, logiciels d’édition graphique et autres, et formations diverses.
3.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
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
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. ↩︎
3.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.
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.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.
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.
4 - Informations UdeM
Ressources propres au département de physique de l’UdeM, informations sur les diverses offres de financement et sur l’organisation de conférences à l’UdeM.
4.1 - Grappe de calcul
Description de la grappe de calcul du groupe de recherche.
On présente ici des informations sur la connexion à la grappe de calcul du Groupe, les sépcifications matérielles et logicielles des serveurs, ainsi que quelques scripts utiles.
Connexion
Connexion aux serveurs de grappe de calcul. La procédure détaillée n’est pas présentée puisque ce site est public.
On peut se connecter en ssh aux serveurs de la grappe de calcul.
De l’extérieur du campus, on doit passer par la machine de proxy ou par le VPN de l’Université de Montréal.
Spécifications matérielles
Spécifications matérielles des serveurs de calcul de la grappe.
La grappe de calcul consiste en une vingtaine de machines possédant chacune entre 8 et 24 coeurs de processeur, et entre 8 et 32GB de mémoire vive. Votre répertoire de travail est situé sur un disque partagé, donc peu importe la machine où vous vous connectez vous avez accès aux mêmes fichiers, en temps réel.
Environnement logiciel
Description de l’environnement logiciel des serveurs de la grappe.
Les serveurs opèrent sous CentOS Linux et possèdent des versions relativement à jour des interpréteurs (Python, etc.) et compilateurs (Fortran, C, etc.)
Les machines n’ont pas d’accès direct à internet.
Vous pouvez y installer des applications dans la mesure où celles-ci ne nécessitent pas d’accès administrateur pour être installées.
Scripts utiles
Quelques scripts utiles lors de l’utilisation de la grappe.
Liste de serveurs
On peut créer une liste de serveurs de la grappe pour e.g. utilisation avec parallel avec un script du style:
#!/bin/bash
for i in $(seq -f "%02g"0 23)do
ssh -o ConnectTimeout=5 -q sol$i-ib exit > /dev/null
if[$? -eq 0]thenecho sol$i-ib
fidoneecho taranis
Usage des machines
On peut vérifier quel est le pourcentage d’utilisation des processeurs de chacune des machines en exécutant un script tel que:
Ressources diverses reliées au département de physique de l’UdeM.
Voici différentes ressources qui sont reliées proprement au département de physique et à l’Université de Montréal – comme les différents formulaires, plans et logos pouvant être utilisés pour des publications/présentations.
Formulaires de dépenses
Formulaire de remboursement de dépenses pour e.g. dépenses de voyage lors de conférences, etc.
Offres de financement d’étude et pour des projets étudiants de l’UdeM.
On détaille ci-dessous les différentes offres de bourses d’études et de déplacement, et offres de financement pour des projets étudiants provenant des instances gouvernementales, des associations étudiantes et de l’UdeM.
Bourses gouvernementales
Offres de financement des organismes gouvernementaux provinciaux et fédéraux.
Offres de financement du Centre de Recherche en Astrophysique du Québec.
Financement de conférences
Le CRAQ finance à hauteur de 2000$ les évènements organisés par les membres du CRAQ.
4.4 - Organisation de conférences
Ressources utiles pour l’organisation de conférences à l’UdeM.
On présente ici quelques ressources utiles lors de l’organisation de colloques/conférences à l’UdeM – notamment en ce qui a trait à l’hébergement, service de traiteur, couverture audiovisuelle/informatique et matérielle. Quelques fournisseurs externes sont également mentionnés.
Hébergement
Quelques ressources d’hébergement pour loger des conférenciers/étudiants participants aux conférences de l’UdeM.
ZUM résidences
Les résidences ZUM sont les résidences de l’Université de Montréal. Peuvent héberger des conférenciers en visite à Montréal. Peuvent également héberger des groupes durant l’été, de mai à août. Prix très compétitifs comparé aux hôtels.
Traiteur
Ressources de traiteur pour l’organisation de conférences/évènements.
locallocal
Le traiteur locallocal est le traiteur…local de l’Université de Montréal. Prix compétitifs.
Ressources évènements UdeM
Ressources humaines et matérielles pour l’organisation d’évènements à l’UdeM.
Technologies de l’information
Les TI de l’UdeM ont un Groupe couverture d’évènements qui peut fournir ressources matérielles & humaines lors d’évènements (e.g. colloques).
Direction des immeubles
La Direction des Immeubles de l’UdeM peut fournir du matériel (tables, chaises, mobilier, etc.) lors de l’organisation d’évènements. Ils s’occupent également de l’entretient ménager (coûts associés lors d’évènements).
Fournisseurs
Fournisseurs externes de matériel pour l’organisation d’évènements.