« GULLUM/Ateliers » : différence entre les versions

De Wiki de l'AÉDIROUM
(Semaine 1: Inclut connexion aux systèmes du DIRO)
(Sujets d’automne déplacés vers leur page respective)
Ligne 1 : Ligne 1 :
Le séminaire du [[GULLUM]] est une série hebdomadaire de présentations et tutoriels destinés à favoriser l’adoption des logiciels libres.
Le séminaire du [[GULLUM]] est une série de présentations et tutoriels destinés à favoriser l’adoption des logiciels libres.


= Session d’automne: Outils fondamentaux =
= Session d’automne: Outils fondamentaux =


== Semaine 0: Introduction ==
* 25 septembre – 1ᵉʳ octobre — [[GULLUM/Séminaire/Bases de la ligne de commande|Bases de la ligne de commande]]
 
* 2 octobre – 8 octobre – [[GULLUM/Séminaire/Linux et ses distributions|Linux et ses distributions]]
== Semaine 1: Bases de la ligne de commande ==
* (à venir) – [[GULLUM/Séminaire/Préparation de documents|Préparation de documents]]
 
* (à venir) – [[GULLUM/Séminaire/Gestion de versions|Gestion de versions]]
[[Fichier:GULLUM-Seminaire-Semaine1-Terminal.jpg|thumb|200px|Un terminal VT100]]
* (à venir) – [[GULLUM/Séminaire/Ligne de commande avancée|Ligne de commande avancée]]
 
* (à venir) – [[GULLUM/Séminaire/Éditeurs de texte|Éditeurs de texte]]
=== Objectifs pédagogiques ===
* (à venir) – [[GULLUM/Séminaire/Licences de logiciel et droit d’auteur|Licences de logiciel et droit d’auteur]]
 
* (à venir) – [[GULLUM/Séminaire/Web|Web]]
*Se connecter à et utiliser les systèmes Linux du DIRO
*Connaître la syntaxe générale d’une commande (nom, flags, arguments)
*Savoir obtenir de l’aide (<code>--help</code>, <code>man</code>, <code>whatis</code>, <code>apropos</code>)
*Se déplacer dans le système de fichiers avec la ligne de commande (<code>cd</code>, <code>pwd</code>, <code>ls</code>)
*Copier, déplacer, supprimer des fichiers (<code>cp</code>, <code>mv</code>, <code>rm</code>, <code>rmdir</code>, <code>mkdir</code>)
*Lire et modifier des fichiers (<code>cat</code>, <code>tail</code>, <code>head</code>, <code>less</code>, <code>touch</code>, <code>&gt;</code>, <code>&gt;&gt;</code>)
*Faire des manipulations simples de données avec les ''pipes'' (<code>cowsay</code>, <code>lolcat</code>, <code>fortune</code>, <code>tr</code>, <code>sort</code>, <code>uniq</code>, <code>wc</code>)
*Voir et communiquer avec les autres utilisateurs du système (<code>last</code>, <code>who</code>, <code>write</code>, <code>wall</code>, <code>mesg</code>)
*Manipuler le terminal avec les séquences de contrôle (<code>Ctrl-C</code>, <code>Ctrl-D</code>, <code>Ctrl-Z</code>, <code>Ctrl-\</code>)
*Se familiariser avec les philosophies Unix (''Do One Thing and Do It Well'', ''Everything is a File'')
 
=== Activités ===
 
* Une présentation
* Défis dans un conteneur Linux préparé à l’avance pour démontrer le potentiel de la ligne de commande
** Système de fichiers
*** Trouver et afficher un fichier situé quelque part dans le système de fichiers
*** Identifier les fichiers doublon (qui ont le même contenu) dans un répertoire
*** Renommer tous les fichiers d’un répertoire selon un motif spécifique
** Pipes
*** Lister les utilisateurs les plus souvent connectés sur la machine
*** Compter le nombre de mots uniques dans un texte
** Everything is a File
*** Lister les fichiers ouverts dans un processus
* Écouter [https://www.youtube.com/watch?v=tc4ROCJYbm0 ''“The UNIX Operating System”'' (Bell Labs)]
 
== Semaine 2: Linux et ses distributions ==
 
[[Fichier:GULLUM-Seminaire-Semaine2-Distributions.png|thumb|200px|Arbre généalogique des principales distributions Linux]]
 
=== Objectifs pédagogiques ===
 
*Se connecter à et utiliser les systèmes Linux du DIRO
*Comprendre le rôle des éléments principaux d’un système Linux (chargeur d’amorçage, noyau Linux, processus d’initialisation, programmes GNU, environnement de bureau, distribution)
*Connaître les caractéristiques principales des distributions (minimaliste vs batteries included, rolling release vs point release, stable vs le plus à jour)
*Installer une distribution Linux sur une machine
*Rechercher et installer des nouveaux logiciels avec le gestionnaire de paquets ou avec Snap/Flatpak
**Différence entre les utilisateurs réguliers et les super utilisateurs - sudo
*Effectuer la maintenance routinière d’une installation (mettre à jour les paquets, diagnostiquer les erreurs communes, sauvegarder ses données)
*Se familiariser avec l’histoire de Linux et de ses distributions (arbre généalogique)
 
=== Activités ===
 
*Présentation principale
*Premier ''installfest''!
*Atelier de ''ricing''
*Présentations secondaires avancées de distributions en particulier
 
== Semaine 3: Préparation de documents ==
 
[[Fichier:GULLUM-Seminaire-Semaine3-Documents.jpg|thumb|200px|Page préparée avec des caractères en plomb]]
 
=== Objectifs pédagogiques ===
 
*Savoir distinguer formats de travail et formats de sortie
*Comprendre l’intérêt des langages de balisage (représentation de la structure des documents)
*Comprendre les enjeux liés à l’accessibilité, la portabilité et l’archivage des documents
*Connaître la différence entre WYSIWYG et non-WYSIWYG
*Être capable de composer un document de base avec Markdown
*Être capable de composer un document de base avec LaTeX
*Développer une familiarité avec l’éditeur collaboratif Overleaf
 
=== Activités ===
 
*Présentation principale
*Présentations secondaires
**Présentation sur la production graphique (SVG, TikZ, Asymptote)
**Présentation sur les présentations (meta) (Beamer, LibreOffice)
*Atelier LaTeX sur Overleaf
*Atelier avec Pandoc
**Conversion de documents entre langages de balisage (Markdown, HTML, LaTeX)
**Génération de documents dans un format de sortie (ODF, PDF, ePUB)
 
== Semaine 4: Gestion de versions (Git) ==
 
[[Fichier:GULLUM-Seminaire-Semaine4-Versions.png|thumb|200px|Graphe de révisions d’un gestionnaire de versions]]
 
=== Objectifs pédagogiques ===
 
*Survol de l'histoire de Git avec mention d'autres gestionnaires de versions
*Apprendre l'intérêt d'utiliser un gestionnaire de versions
**Garder un historique des versions de ton code
**Faciliter la collaboration et le partage de fichiers textes
*Savoir utiliser les commandes principales du programme Git
**Création d’un dépôt: <code>init</code>
**Création de ''commits'': <code>status</code>, <code>add</code>, <code>restore</code>, <code>commit</code>
**Inspection de l’historique: <code>show</code>, <code>diff</code>, <code>log</code>, <code>blame</code>
**Interaction avec un serveur: <code>clone</code>, <code>pull</code>, <code>push</code>, <code>remote</code>
**Branchement et fusion: <code>branch</code>, <code>switch</code>, <code>merge</code>
*Comprendre la théorie derrière Git
*Survoler les hébergeurs de répertoires GIT - GitHub, GitLab
*Survoler les clients graphiques pour GIT - GitK, Git gui, gitg
*Écrire de bons messages de commit
 
=== Activités ===
 
*Présentation principale
*Atelier bisect: Identification de commits en log n
 
== Semaine 5: Ligne de commande avancée ==
 
=== Objectifs pédagogiques ===
 
*Comprendre le fonctionnement des liens dans le système de fichiers (<code>ln</code>, soft links, inodes, hard links)
*Utiliser le système de permissions de base de Linux (permission bits, <code>chmod</code>, <code>chown</code>)
*Rechercher et éditer du texte (<code>find</code>, <code>grep</code>, <code>sed</code>, <code>awk</code>)
*Savoir ce qu'est un processus (code, mémoire, fichiers ouverts, environnement, <code>/proc</code>)
*Gérer les processus (<code>ps</code>, <code>pgrep</code>, <code>kill</code>, <code>top</code>/<code>htop</code>, <code>jobs</code>, <code>fg</code>/<code>bg</code>/<code>disown</code>)
*Inspecter les appels systèmes (<code>strace</code>)
*Comprendre la différence entre un programme interprété (hashbang) et un programme binaire (ELF)
*Comprendre comment le shell exécute des programmes (<code>$PATH</code>, built-ins)
*Se familiariser avec le linking et les librairies partagées (<code>ldd</code>)
*Multiplexer sa session de terminal (<code>tmux</code>, <code>screen</code>)
*Automatiser des tâches avec <code>make</code>
 
=== Activités ===
 
*Présentation principale
 
== Semaine 6: Éditeurs de texte ==
 
=== Objectifs pédagogiques ===
 
*Connaître les philosophies de différents éditeurs
**Simple vs batteries-included (extensibilité, IDE)
**Interaction au clavier et/ou à la souris
**Graphique ou terminal
**Modal ou non-modal
***Éditeurs modaux: Vim, Kakoune, Helix
*Choisir un éditeur de façon informée
*Se familiariser avec l'histoire des éditeurs libres (arbre généalogique)
 
=== Activités ===
 
*Présentation principale
**État des lieux et généalogie des éditeurs de texte
***Emacs
***Ed/Vi/Vim/NeoVim
***Nano/Micro
***VSCodium/VSCode
***Acme
***Jupyter Notebook/JupyterLab/Jupyter QtConsole
*Atelier Emacs
*Atelier Vim
 
== Semaine 7: Licences de logiciel et droits d’auteur ==
 
[[Fichier:GULLUM-Seminaire-Semaine7-Licences.png|thumb|200px|Comparaison des licences Creative Commons]]
 
=== Objectifs pédagogiques ===
 
*Comprendre c'est quoi le droit d'auteur
**Comprendre que le droit d'auteur existe par défaut pour tout son code
**Différence entre brevets logiciels, droit d'auteur et marques de commerce
*Apprendre les différences entre les licences les plus communes
**Licences restrictive/permissives GPL, LiLiQ, MIT, Apache, MPL, OQL, WTFPL
*Apprendre l'histoire du mouvement du logiciel libre - GNU, FSF
*Creative commons - CC0
*Domaine public
*Copyleft
 
=== Activités ===
 
*Présentation principale
 
== Semaine 8: Web ==
 
=== Objectifs pédagogiques ===
 
*Connaître les éléments de base du web (HTTP, HTML/CSS, JS)
*Se familiariser avec le navigateur (dev tools, extensions)
*Publier un site web minimaliste?
*Comprendre les enjeux liés à l’accessibilité du web
*Suivre l'activité d'une page web avec RSS
*Récupérer et manipuler des données du web (API, scraping, web sémantique)
*Comprendre les modèles économiques dominants associés aux contenus du web
*Connaître les principales techniques de pistage sur le web et savoir s'en protéger
 
=== Activités ===
 
*Présentation principale
*Atelier Wikipedia & Wikidata
*Atelier OpenStreetMap
**Découverte de la carte et du modèle de données
**Extraction de données avec Overpass
**Contribution avec JOSM


= Session d’hiver: Sujets avancés =
= Session d’hiver: Sujets avancés =

Version du 30 septembre 2023 à 09:57

Le séminaire du GULLUM est une série de présentations et tutoriels destinés à favoriser l’adoption des logiciels libres.

Session d’automne: Outils fondamentaux

Session d’hiver: Sujets avancés

Semaine 9: Réseau et sécurité

Objectifs pédagogiques

  • Comprendre comment utiliser SSH
    • Gestion de clés SSH, mots de passe (gestionnaires de mot de passe ex: keypass)
    • Transfer et synchronisation des fichiers - scp, rsync, syncthing
  • Cryptographie de base - chiffrement symétrique, asymétrique, signatures, hachage, gpg
  • Introduction au protocoles à la base - http, ftp, sftp, telnet, curl
    • intro dhcp/dns - dig
  • Surveiller l'activité réseau - wireshark, netcat
  • Connection local sans-fil - bluetooth, wifi direct
  • Connexion au Wi-Fi de l'université sous Linux
  • Tor

Activités

  • Présentation principale

Semaine 10: VMs et Conteneurs (Docker)

Semaine 11: Création médiatique

  • Présentation principale
    • 3D: Blender, OpenSCAD, Godot
    • Image: Inkscape, Krita, GIMP
    • Vidéo: ffmpeg, Kdenlive, VLC
    • Audio: Audacity, sox

Semaine 12: Productivité

  • Présentation principale
    • Thunderbird => calendrier + rss + setupper courriel + config + installation du adblock

Semaine 13: Open Hardware

  • Présentation principale
    • Raspberry pi, arduino, system76, frame.work, pine64, tuxedo computers, RISC V, keybs

Semaine 14: Claviers

  • Dispositions de claviers
  • Firmware de claviers

Semaine 15: Contributions aux projets open source

Semaine 16: Recherche académique

  • OpenAlex, CORE
  • HAL, arXiv, bioRxiv
  • JabRef, Zotero
  • Articles en accès libre/ouvert