GULLUM/Ateliers

De Wiki de l'AÉDIROUM
< GULLUM
Révision datée du 27 juin 2023 à 12:16 par MattéoDelabre (discussion | contributions) (Échange semaine web et semaine réseau)

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

Session d’automne: Outils fondamentaux

Semaine 0: Introduction

Semaine 1: Base de la ligne de commande

Un terminal VT100

Objectifs pédagogiques

  • Connaître la syntaxe générale d’une commande (nom, flags, arguments)
  • Savoir obtenir de l’aide (--help, man, whatis, apropos)
  • Se déplacer dans le système de fichiers avec la ligne de commande (cd, pwd, ls)
  • Copier, déplacer, supprimer des fichiers (cp, mv, rm, rmdir)
  • Lire et modifier des fichiers (cat, tail, head, less, touch, >, >>)
  • Faire des manipulations simples de données avec les pipes (cowsay, lolcat, fortune, tr, sort, uniq, wc)
  • Voir et communiquer avec les autres utilisateurs du système (last, who, write, wall, mesg)
  • Manipuler le terminal avec les séquences de contrôle (Ctrl-C, Ctrl-D, Ctrl-Z, Ctrl-\)
  • 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 “The UNIX Operating System” (Bell Labs)

Semaine 2: Linux et ses distributions

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

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)

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: init
    • Création de commits: status, add, restore, commit
    • Inspection de l’historique: show, diff, log, blame
    • Interaction avec un serveur: clone, pull, push, remote
    • Branchement et fusion: branch, switch, merge
  • 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 (ln, soft links, inodes, hard links)
  • Utiliser le système de permissions de base de Linux (permission bits, chmod, chown)
  • Rechercher et éditer du texte (find, grep, sed, awk)
  • Savoir ce qu'est un processus (code, mémoire, fichiers ouverts, environnement, /proc)
  • Gérer les processus (ps, pgrep, kill, top/htop, jobs, fg/bg/disown)
  • Comprendre la différence entre un programme interprété (hashbang) et un programme binaire (ELF)
  • Comprendre comment le shell exécute des programmes ($PATH, built-ins)
  • Se familiariser avec le linking et les librairies partagées (ldd)
  • Multiplexer sa session de terminal (tmux, screen)
  • Automatiser des tâches avec make

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
  • Atelier Emacs
  • Atelier Vim

Semaine 7: Licences de logiciel et droits d’auteur

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

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