GULLUM/Ateliers

De Wiki de l'AÉDIROUM
< GULLUM
Révision datée du 3 juin 2023 à 20:56 par Simon (discussion | contributions) (Développe la deuxième de ligne de commande)

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

Semaine 0 — Introduction

Semaine 1 — Base de la ligne de commande

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)
  • Ctrl sequences
  • 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

Objectifs pédagogiques

  • 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

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é des documents
  • Comprendre les enjeux liés à la portabilité des fichiers
  • 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)
    • 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)

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
  • Connaitre quelques commandes de base du programme GIT
    • base - init, status, diff, add, commit
    • historique - show, log
    • intéraction avec le serveur - clone, pull, push
    • branchement - 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
  • Savoir bien écrire un message de commit

Activités

  • Présentation principale
  • Atelier bisect

Semaine 5 — Suite ligne de commande

Objectifs pédagogiques

  • Système de fichier avancé - ln, permission bits, chmod, chown
  • Comment les programmes sont executés - ELF, hashbang et interpretes, compilateurs+linking, $PATH
  • Variables d'environnement
  • Gestion des processus - kill, ps, top/htop, jobs, fg/bg
  • Commandes de recherches et d'édition - find, grep, sed, awk
  • Multiplexage - tmux, screen
  • Outils de construction - 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
  • 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

  • Présentation principale
    • GNU, GPL, licence permissive vs restrictive, LiLiQ, par défaut copyright appartient à l'auteur

Semaine 8 — Réseau et sécurité

  • Présentation principale
    • bluetooth, wifi direct, wireshark, ssh, intro dhcp/dns, netcat, ftp, sftp, scp, rsync
  • Sécurité: gestion de clés SSH, mots de passe
  • Cryptographie: chiffrement symétrique, asymétrique, signatures, hachage

Session d’hiver

Semaine 9 — 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

Semaine 10 — VMs et Conteneurs (Docker)

Semaine 11 — Création médiatique

  • Présentation principale
    • Blender, OpenSCAD, Inkscape, Krita, GIMP, Godot, Kdenlive, VLC, Audacity

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 — Keyboard layouts

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

Autres sujets

Différence entre terminal, command prompt et shell

  • Intro à linux
    • Distribution
      • Gnu
    • Installation + Concepts de base
      • Package manager
  • Shell
    • Syntaxe de base & coreutils
    • Variables d'environment
    • Man pages
    • =--help=
  • Shell II
    • shebang & permission bits
    • Scripts python exécutables
    • =grep=, =find=, =|=

Pipes et redirection.

  • Éditeur de texte, compilateur et make
    • Editeurs
      • Nano
      • vscode
    • Compilateurs
  • Git
  • ssh
    • sftp
    • scp
    • rsync
  • grep, awk, sed
    • Sed
    • Awk
    • Grep
    • Histoire & Unix
    • Programmes

- ajouter latex à la liste plus haut, avec overleaf - installfests - éditeurs de texte: vim, emacs, nano, vscode, micro - scripting avancé, daemons, etc