diff --git a/slides/les_exos_avec_le_dojo.md b/slides/les_exos_avec_le_dojo.md new file mode 100644 index 0000000000000000000000000000000000000000..a728586f9a026db3d7391847c2d0b21e6e3e0f30 --- /dev/null +++ b/slides/les_exos_avec_le_dojo.md @@ -0,0 +1,131 @@ +--- +title: "Dojo" +date: "2024-02-21" +--- + +# Le Dojo + +* Plateforme d'exercices pour la programmation, +* Outil à la ligne de commande basé sur `gitedu`, +* Correction automatique des exercices, +* Fait maison par Michël Minelli (aller en A403 pour le voir), +* En cours de développement, n'hésitez pas à ouvrir des [\alert{Issues}](https://gitedu.hesge.ch/dojo_project/issues). + +# Prérequis + +* Installer `docker`! +* Pour savoir s'il est installé faire + + ```console + docker --version + ``` +* Voir \alert{le lien suivant}: <https://docs.docker.com/engine/install/>. +* \alert{Activez l'exécution}: <https://docs.docker.com/engine/install/linux-postinstall/> de docker sans les privilèges super utilisateur·trice + + +# Installation + +* Détails sur \alert{ce lien}: <https://dojo.isc-hesge.ch/>. +* Sur MacOS / linux-postinstall + + ```console + curl -L "https://dojo.isc-hesge.ch/installer.sh" | sh + ``` + +# Authentification + +* Détails sur \alert{ce lien} <https://dojo.isc-hesge.ch/user-doc/cli/authentification/> + +## Résumé + +* Authentification via `gitedu` +```console +dojo auth login +``` +* Ouverture de gitedu dans votre navigateur, +* Cliquer sur *autoriser*, +* Est-ce que ça a marché? +```console +$ dojo auth test +ℹ Checking Dojo session: + ✔ The session is valid + ✔ Student permissions + ✔ Teaching staff permissions + ✔ Admin permissions +ℹ Checking Gitlab token: + ✔ Read access + ✔ Write access +``` + +# Faire un exercice (1/3) + +* Détails sur [\alert{ce lien}](https://gitedu.hesge.ch/dojo_project/projects/ui/dojocli/-/wikis/UserDocumentation/3-Exercise-creation). + +## Création de l'exercice + +* Création de l'exercice (liste chaînée de strings) + + ```C + dojo exercise create -a c_game_of_life -c . + ... + ℹ Checking Dojo session: + ✔ The session is valid + ✔ Student permissions + ℹ Checking assignment: + ✔ Assignment "c_game_of_life" exists + ✔ Assignment "c_game_of_life" is published + ... + ``` +* Cette commande clone également le repo de l'exercice créé dans le répertoire courant + +# Faire un exercice (2/3) + +## Récupération de l'énoncé + +* Quand vous avez créé l'exercice, vous pouvez clone le repo comme n'importe quel autre repo gitedu + +```console +git clone https://gitedu.hesge.ch/dojo/exercise/dojo-ex_c_game_of_life_e24b65b3-c0e5-4a10-a67a-72dad4ff5ea1 c_game_of_life +``` + +# Faire un exercice (3/3) + +## Exécution des tests + +* Faire l'exercice + + ```console + $ cd c_game_of_life + ``` +* \alert{LIRE L'ÉNONCÉ JUSQU'À LA FIN!} +* Pour réussir le TP il faut passer tous les tests se trouvant dans: + + ```console + src/test_suite.cpp + ``` +* Pour compiler localement deux choix +* Utiliser make + + ```console + cd src + make + ``` +* Ou `dojo` + + ```console + dojo exercice run + ``` +* Vous pouvez également commit/push chaque fois que nécessaire (et surtout à la fin). + +# Fonctionnement + +* Éditez le code en fonction de l'énoncé. +* `make` lance tout un tas de tests unitaires. +* \alert{Faites les fonctions les unes } +* Il y a deux types d'erreurs: erreur algorithmique et erreur mémoire. +* Des fois ces erreurs sont imbriquées +* Il y a donc deux types d'erreurs dans les tests +* Des erreurs dans les tests unitaires +* Des erreurs de sanitizers mémoire + +