Session du 17 décembre 2021 à 18h00
Pratique & Live Coding
Outils & IDE
DevOps & Environnement
Deviens membre Premium magic_button
Cette session de mentorat est réservée aux membres Premium. Rejoignez-nous pour accéder à toutes les rediffusions des sessions de mentorat !
Premium
- check +100h de formations
- check +180 exercices de code
- check +100h de mentorats en rediffusion
- check 20 projets
- check Mentorats groupés hebdomadaires
- check Support individuel avec nos mentors
GitHub, Markdown et projet d’horlogerie
Découvre comment cloner un projet GitHub dans PyCharm, organiser la documentation en Markdown et structurer un projet métier autour de pièces d’horlogerie.
00:00:00 :Non, le mieux, je pense Thibaut, c'est que tu prennes la main, que tu l'ouvres comme ça,et nous ça nous permet de voir aussi comment tu fais.
00:00:08 :Ouais, ouais, justement j'avais prévu de vous montrer,alors je vais partager mon écran, share,voilà, vous devriez avoir...Et on commentera avec Loïc au fil de l'eau.
00:00:21 :Parfait, donc là c'est bon, tout le monde voit mon écran?Ouais.Ok.Après, je crois que je t'avais envoyé le document Word, tu sais Thibaut,dans lequel tu avais la feuille de départ.
00:00:38 :Ouais, je sais pas si tu crois que je parle là-dedans.Alors...Pour ma partie de ce qu'on a fait en fait.C'est vrai que Loïc, sur GitHub, on pourrait rajouter la petite doc que tu avais faite,qui n'est pas du code à proprement parler, mais qui est juste...
00:00:55 :Ouais, le cahier des charges quoi.Le cahier des charges finalement.Le cahier des charges, ça vous pouvez les mettre,soit vous pouvez déjà dans le README directement,vous pouvez mettre des indications,et puis après pourquoi pas mettre carrément les fichiers, effectivement.
00:01:10 :Je vous conseille de faire les fichiers Markdown, en fait, comme le README,donc c'est des fichiers.md, ça vous permet, si on va voir ce fichier là,
00:01:17 :vous pourrez l'éditer en fait directement sur GitHub.Donc moi là, je peux le faire, mais il faut que je copie le projet de mon côté.
00:01:28 :Mais là vous voyez, vous allez avoir un truc comme ça qui vous permettra de faire du Markdown,et puis d'avoir quelque chose d'assez sympa visuellement.
00:01:35 :Parce que.md, c'est quoi finalement?C'est Markdown, en fait.C'est à peu près comme...Non, il n'y a pas ça sur Discord.Mais c'est une syntaxe en fait particulière,qui vous permet de faire des titres, de mettre des blocs de code, des listes, tous ces trucs là.
00:01:52 :Donc ça peut être bien pour une doc technique en fait,d'utiliser soit le README, soit faire d'autres fichiers séparés pour les fichiers que vous aviez là,le cas des charges.
00:02:02 :Ouais, j'ai appuyé sur mon écran.Donc c'était en fait, c'était donc le hic basé sur ce que tu fais dans la vie, en fait,si je comprends bien.
00:02:11 :Ouais, tu fais des choses dans la vie.C'est ça, sur le... donc fabriquer des pièces d'horlogerie,donc il y a des problématiques en fait de représenter des pièces,de faire des livraisons, d'ajouter certaines pièces avec des informations dans une livraison à chaque fois.
00:02:25 :Et donc pour l'instant, vous n'avez pas encore vu l'Orienté Objet,on en parlait en fait quand on coachait là-dessus.C'était vraiment un projet excellent après pour passer sur de l'Orienté Objet,parce que vous avez un objet précis dans ce cas-ci qui va être les pièces,et on pourrait même penser à un objet qui va représenter chaque livraison.
00:02:44 :Donc pour l'instant, vous n'avez pas encore vu vraiment,enfin vous l'avez vu, mais pas suffisamment pour vraiment partir dans du code,mais à terme, vraiment, vous allez pouvoir passer ça en Orienté Objet.
00:02:55 :Ce que je vais faire, c'est je vais déjà en fait l'ouvrir dans PyCharm, dans mon cas.Pourquoi dans PyCharm? Parce que je vais vous montrer, en fait,
00:03:03 :ça va me permettre de facilement naviguer dans le projet.Donc dans PyCharm, en fait, on peut aller chercher un projet depuis GitHub.Donc là, vous voyez, Version Control, je vais dire que c'est Git,je vais mettre l'URL, et je vais dire que je veux le mettre dans mon dossier d'utilisateur,
00:03:17 :et il va aller cloner, en fait.Donc cloner, c'est-à-dire qu'il va prendre tous les fichiers,et il va les mettre dans le dossier que j'avais indiqué.
00:03:25 :Et on va avoir un peu ce que tu avais, Martin, tout à l'heure, là,donc toi, c'était dans VS Code, là, mais tu avais la branche,et tu ne savais pas comment en sortir.
00:03:34 :Donc ça, en fait, on va le retrouver, si je reviens dans PyCharm,tu vois, moi, c'est en bas à droite, ici, en tout petit, c'est marqué Main.
00:03:42 :D'accord.Donc ça, c'est la branche Git.J'espère que tu as la bonne version, Martin.Ah, il n'y a pas...Qu'est-ce que tu dis, Loïc?J'espère que c'est la bonne version qui est sur Git,parce qu'on a eu des gros, gros soucis avec l'utilisation de Git, quoi.
00:03:56 :Ouais, Git, c'est vraiment le truc qui est le plus perturbant quand on ne connaît pas...Sinon, j'ai un zip que je peux t'envoyer sur...Après, normalement, en fait...
00:04:09 :Non, mais ça va aller, Loïc.Quand vous avez un dépôt sur GitHub, vous pouvez, quand vous cliquez sur Code,là, vous avez un download zip.
00:04:19 :Donc, même si vous n'avez pas Git, en fait, vous pouvez le downloader directement,et puis ça va vous faire un zip avec tous les trucs.
00:04:26 :Donc, n'hésitez pas à faire ça, même pour ceux qui suivent.Si vous n'avez pas Git, aussi, n'hésitez pas à télécharger comme ça si vous voulez suivre.
00:04:34 :Donc, après, directement sur Git, on peut aller voir, c'est de mieux en mieux.D'ailleurs, il y a... Alors, je ne me souviens plus.Est-ce que c'est... Est-ce que c'est pas...
00:04:44 :Il y a un moyen, en fait. Je ne sais pas si vous savez ça.C'est GitHub Live Editor.Je ne sais pas s'il y en a qui ont déjà vu ça.
00:04:55 :C'est un tout nouveau truc, en fait.Il faut rentrer juste un...Je ne sais plus.Live Editor, je ne sais pas.Pour ajouter un truc dans le...
00:05:08 :Ah oui, point. Oui, c'est ça.En fait, ici, vous appuyez sur le point, sur votre clavier,et ça va passer, vous voyez, ça change...Ça va passer dans un éditeur de code.
00:05:21 :C'est assez fou, franchement.C'est encore des trucs un peu en bêta.Mais vous voyez, là, ça passe sur un GitHub.dev,et là, en fait, on retrouve que c'est quasiment le même truc que VS Code.
00:05:35 :C'est basé sur VS Code, d'ailleurs.Donc, il y a un éditeur intégré.C'est dingue.C'est assez dingue.Alors, c'est encore en bêta,et je ne sais pas à quel point ça change des trucs, ce que ça fait, et tout.
00:05:51 :Mais ça permet quand même de...Parce que je pense que si vous changez des trucs, en fait,vous allez après devoir faire des...Puisque c'est directement lié à votre dépôt Git,il va falloir faire des commits, etc.
00:06:02 :Donc, ça peut être bien pour explorer.Après, faites quand même gaffe pour l'instant.Mais ouais, c'est assez fou.Je voulais vous le montrer.Ça peut être pratique.
00:06:15 :Moi, dans mon cas, je vais revenir sur le truc de base,et je vais retourner dans mon PyCharm,puisque vous voyez que du coup, moi, j'ai cloné le dossier.
00:06:24 :Donc, je retrouve exactement la même chose avec les fiches qui comptent.Donc, il faut que tu ouvres main, voilà.Et je voulais juste vous montrer, vous voyez, en fait, là, je peux mettre les deux.
00:06:37 :Et donc, le markdown, tu vois, si j'enlève par exemple le dièse,ça enlève le titre.Si j'en mets deux, ça fait un titre plus petit.
00:06:44 :Et puis après, on a la même chose que sur Discord, pour le coup.Là, je peux mettre du code Python,et vous voyez, on a la coloration syntaxique.
00:06:54 :Donc, ça, ça fait pas mal si vous voulez faire...Si on... ce.md, Thibaut, ce.md,si on upload le document cahier des charges qui est un docx à la baseet qu'on remplace par.md, ça va fonctionner?
00:07:08 :Alors, les docx, moi, j'avais un ODT, ça doit fonctionner puisque c'est des fichiers textes.Donc, normalement, oui.Puis là, il n'y a pas de formatage spécifique.
00:07:21 :Après, vous pouvez juste copier le code comme ça, vous voyez.On va juste faire un sous-titre, cahier des charges.Genre, voilà.Ça marche.Vous pouvez le mettre ici.
00:07:35 :Alors, donc ça, c'était juste une petite note, voilà, pour le.md.Donc, moi, pourquoi je vous disais PyCharm, j'aime bien,c'est parce qu'il y a notamment, en fait,je ne sais pas si vous avez déjà vu des vidéos que j'ai faites sur PyCharm,il y a un truc que j'aime particulièrement,
00:07:51 :c'est peut-être maintenant sur VS Code, je ne sais pas,mais c'est en fait, vous pouvez faire,donc le raccourci, c'est commande V sur Mac.Si vous faites clic droit, en fait, vous avez Go To et Declaration or Usage.
00:08:02 :Et en fait, si vous faites ça, ça va vous emmener directement là où se trouve ce que vous utilisez.Et ça devient vraiment intéressant quand vous avez plusieurs fichiers comme ça,parce qu'à chaque fois, on n'a pas envie de se dire, bon, alors là,ça, ce menu principal, cette fonction, elle est dans Menu.
00:08:16 :Menu, c'est à l'intérieur du module Menu.Donc après, il faut les retrouver, Menu, où est-ce qu'il est?Donc il est ici, il faut l'ouvrir, il faut chercher la fonction.
00:08:22 :On perd du temps à chaque fois si on doit faire ça.Alors que là, moi, ce que j'aime bien, j'ai quelque chose ici, je veux voir ce que ça contient.
00:08:28 :Je mets mon curseur dessus, Command B, hop, j'arrive direct au-dessus,je peux voir ce que ça fait, et après, je peux revenir dans mon fichier et continuer.
00:08:35 :Et je peux faire ça à chaque fois, voilà, erreur, vérification, Command B,je viens sur la fonction, et il y a même un autre raccourci.
00:08:42 :Alors moi, c'est commande et le crochet, ça doit être dans Navigate.Parce que forcément, les raccourcis changent en fonction.Je ne sais plus où il est.
00:08:55 :Mais en fait, moi, ça permet de revenir là où vous étiez précédemment.Donc vous voyez, en fait, je peux vraiment naviguer, je fais Command B,j'arrive dans la fonction, et après, je veux revenir là où j'étais,j'ai un autre raccourci, et hop, ça me ramène là où j'étais.
00:09:06 :Donc ça, c'est vraiment parfait pour passer d'un truc à l'autre.Parce que là, vous voyez que vous avez quand même pas mal découpé le truc, ce qui est bien.
00:09:14 :Mais c'est vrai que du coup, quand on regarde le code ici, c'est bien.Parce qu'effectivement, comme je vous dis, ça évite d'avoir, là, on a une cinquantaine de lignes de code.
00:09:25 :On pourrait encore plus le découper.En fait, Thibault, pour donner un peu de contexte à toi et aux autres, l'idée,donc il y a un main et deux… il y a un main, il y a un fichier, il y a un script menu,un script outillage, un script livraison.
00:09:44 :Donc l'idée, c'est que depuis le main, on lance le programme.En gros, l'objectif du programme, c'est de faire de la saisie utilisateur.Il y a un menu principal, un menu outillage, un menu livraison.
00:10:02 :L'utilisateur navigue dans les menus, il fait de la saisie,et le résultat final, c'est que cette saisie, elle est enregistrée dans deux fichiers JSON,un fichier livraison JSON et ils contiennent les infos sous forme de dictionnaire que l'utilisateur a saisi.
00:10:23 :Donc en gros, tout ça pour enregistrer des données.L'idée étant après, de pouvoir réutiliser ces données, de faire des calculs dessus, etc.Ça, on ne l'a pas fait, mais c'est un peu ça l'idée.
00:10:41 :Oui, vous êtes parti, en fait, c'est un peu une extension du projetqu'il y a dans la formation sur la liste de courses.Oui, c'est ça, c'est une énorme liste.
00:10:50 :C'est ça, c'est ça.Donc c'est bien parce que ça part sur un truc, c'est plus concret, une liste de courses,c'est vraiment pour l'exemple, là, vous avez pu vous confronter à des objets un peu plus compliqués.
00:11:00 :On le voit ici avec un dictionnaire où il commence à y avoir pas mal plus de chosesque juste une liste qui contient des pommes, des poires et je ne sais quoi.
00:11:07 :Donc ça, c'est souvent une première, quand on commence à manipuler des objets,il y a pas mal de choses. Dans la théorie, c'est assez facile à comprendre.
00:11:16 :Après, dans la pratique, il y a beaucoup de murs qu'on peut frapper.Du coup, c'est quoi, Thibaut, ton premier retour instinctivement sur ce que tu vois,que ce soit dans la structure ou dans, je ne sais pas, des choses qui te choqueraient?
00:11:33 :Alors, il y a un truc que j'ai vu, je ne sais plus, c'est dans quel…ça doit être dans… non, c'est pas dans menu, c'est dans…il y a un moment où il y a une grosse répétition.
00:11:46 :C'est dans lequel? Ça doit être dans erreur.Oui, voilà, c'est ça. Dans celui-là, vous avez trois menus.Et en fait, c'est trois menus qui se ressemblent, c'est des vérifications sur les menus.
00:11:59 :Et là, vous voyez, moi je suis tombé là-dessus direct et je me demande si d'ailleurs il va pas…moi j'ai Sorcery, je ne sais pas si vous connaissez.
00:12:07 :C'est un petit outil très pratique que je vous conseille de regarder.J'espère qu'ils ont encore une version gratuite.Moi, je n'ai jamais payé pour ça, mais ça fait longtemps que j'utilise,donc je suis peut-être sur une bêta.
00:12:19 :Et franchement, il ne faut pas en abuser, parce que ça peut vous faire des fois,vous changer 15 lignes de code, et puis c'est assez intéressant pour comprendrece qu'il va faire du refactoring.
00:12:30 :Donc là, par exemple, je suis surpris qu'il ne le suggère pas ici.C'est peut-être parce qu'il est encore en train de l'analyser en arrière-plan.Mais sur des types de codes comme ça, c'est vraiment le genre d'outil qui vous dirait« Ah, là vous avez quasiment trois fois la même chose, donc il y a moyen de faire une seule fonction. »
00:12:45 :Et donc après, le but n'étant pas juste de dire « Vas-y, applique-le »,et puis sans rien y comprendre, c'est sûr que ça fait vraiment de la magie cet outil,mais après l'intérêt c'est vraiment de comprendre ce qu'il fait.
00:12:56 :Donc dans ce cas, vous m'entendez toujours?Allô?Ouais, allô?Ouais, il y a eu un petit...Ok, c'est bon.Ok, ouais, ça se peut que ça...
00:13:10 :Du coup...Il y a eu des petites coupes comme ça.Du coup, c'est quoi cet outil, Thibault?Donc, je ne sais pas à quel point vous m'avez perdu, mais c'est un outil...
00:13:19 :Je vais vous montrer sur sorcery.ai.Vous voyez, encore une version gratuite.Et en fait, c'est quand même assez intéressant, je trouve, même au niveau de l'apprentissage.
00:13:30 :Parce que, comme je vous disais, il ne faut pas appliquer les trucs bêtementet puis ne pas regarder ce qu'il fait, parce que vous n'allez juste pas apprendre, forcément.
00:13:37 :C'est un peu comme Stack Overflow, si vous faites juste copier des trucs sans chercher à comprendre,vous n'allez pas progresser.Mais ce qui est assez cool, c'est qu'il va vous suggérer des endroits où il y a des améliorations à faire.
00:13:50 :Donc là, ce que je disais, c'est que je suis surpris qu'il ne me le suggère pas ici,parce que moi je sais que des fois, dans du code où je copie-colle des trucs,il va me dire, bon là, tu as des trucs similaires, tu pourrais fusionner.
00:14:01 :Donc là, ce que je vous disais...C'est très bien que tu pointes ce truc-là, parce que c'est un gros sujet qu'on a eu avec Loic.
00:14:10 :C'est un des plus gros problèmes.Le gros sujet, c'est comment on fait pour faire les boucles de contrôlequi vont contrôler les inputs utilisateurs.En fait, c'est quoi la bonne pratique là-dessus?
00:14:24 :Est-ce que c'est de créer des fonctions qui vont surveiller les variables?Puisqu'en gros, à chaque input, il y a une variable qui correspond, puisqu'on enregistre l'input.
00:14:33 :Donc là, les trois fonctions de vérification, elles vérifient toutes une input,du coup une variable différente, spécifique.Est-ce que c'est ça qu'il faut faire?Est-ce que c'est au niveau de l'input, à l'endroit où tu demandes l'input,tu mets ta boucle wild qui vérifie tout un tas de conditions?
00:14:53 :C'est quoi la bonne pratique?Ça, c'est un point qui m'a un peu énervé de mon côté.C'est-à-dire que c'est hyper frustrant que tu fais le truc fonctionnelet après le truc relou qui est juste de faire les boucles de contrôle,ce soit plus compliqué finalement que de réaliser la fonctionnalité.
00:15:14 :Je vais juste rajouter un petit truc Thibault.En fait, la redondance, c'est lié à la liste de choix que tu as dans les menus et sous-menus.
00:15:25 :Le problème, c'est que tu as trois choix à faire pour le premier menuet au dernier menu, tu en as cinq.Je suis d'accord avec toi, effectivement, avec une seule fonction,tu pourrais contrôler les cinq,mais le problème, c'est que vu que tu n'as que trois choix dans le premier menu,
00:15:44 :si dans le choix menu, je mets de 1 à 5,pour arriver au menu 1, tu vois ce que je veux dire?Oui, mais alors ça, c'est là le gros...
00:15:56 :Enfin, ce n'est même pas l'intérêt, c'est plus que ça.Si on pourrait dire l'intérêt principal des fonctions,c'est qu'à peu près comme les fonctions qu'on voit en maths,le même principe, qu'une fonction va lui passer des choses.
00:16:13 :Donc là, on va passer sur ces trois fonctionset on va voir comment on peut les fusionner en une seule.Vous êtes d'accord qu'ici, tout ça, c'est la même chose à chaque fois?
00:16:24 :La seule chose qui change, c'est cette liste au début.C'est la taille de la liste.C'est ça. Et quand vous avez un élément,qui est dans ce cas-ci seulement celui-ci,il y a juste la première ligne qui change,c'est quelque chose que vous allez mettre ici en paramètres.
00:16:44 :Parce qu'une fonction, on va prendre un exemple plus simple.Je vais faire un fichier.Là, vous avez des Scratchs sur...Je vais faire un fichier Python juste pour vous montrer.
00:16:56 :Donc si on fait une fonction comme celle-ci,là, effectivement, je peux dire print bonjour.Et là, on n'a pas le choix.À chaque fois, ça va afficher bonjour.
00:17:07 :Vous êtes d'accord?Je vais faire ce fichier. Je run.Là, on a bonjour qui s'affiche.Donc là, vous pourriez vous dire,on va faire une fonction bonjour qui va afficher bonjour.
00:17:18 :Après, on va afficher un autre message.On va faire une fonction bonsoir qui va afficher bonsoir.Mais là, on est en train de dévoyer un peu le principe de la fonctionparce qu'en fait, on fait juste un bloc de codequi va faire une seule chose à chaque fois,
00:17:32 :une seule chose spécifique.Donc nous, ce qu'on peut faire, c'est pas faire des fonctions différentes,on va faire une fonction ici.On pourra l'appeler parle, par exemple.
00:17:42 :Et là, on va lui dire, on va lui passer quelque chose.Et on va dire, à la place de dire bonjour,tu vas afficher le mot qu'on te passe.
00:17:49 :Et donc là, vous avez une seule fonction.Tu mets return dans la fonction de bonjour et bonsoir.Non, il n'y a même pas besoin de return.
00:17:56 :Là, dans ce cas-ci, oubliez le return.On veut juste faire un print.Je vais pouvoir enlever ces deux fonctions.J'en ai plus besoin. Je peux utiliser parle à la place.
00:18:04 :Sauf que là, je vais lui dire, la première fois, tu dis bonjour.Et la deuxième fois, tu dis bonsoir.Et donc là, vous voyez, on vient de fusionner ces deux fonctions.
00:18:12 :Et qu'est-ce qu'on fait?On va passer cette chaîne de caractères à mots.Et on va afficher le mot.Donc ça, ça va juste être une variable, tout simplement.
00:18:20 :Et on va l'afficher ici.Quand c'est affiché, d'accord.Mais là, dans le cas où c'est la taille d'une liste,il change?Là, regarde.C'est quoi le mot?
00:18:32 :On prend les trois.Donc qu'est-ce qui va changer ici?C'est juste ça, d'accord.Donc ça, on va le passer.On va le récupérer, en fait, quand on va appeler la fonction.
00:18:42 :Je vais garder les trois comme ceci.Je vais en faire une autre.On va en faire une autre à la toute fin.Ici.Et on va l'appeler, tout simplement, vérification.
00:18:54 :Ouais, t'as sauté, Thibaut.Je parle de toi quand t'es pas là.Ouais, je vois ça.Non mais c'est bien, parce qu'en même temps, du coup, je sais quequand je vous entends rire, c'est que je vous m'avais perdu.
00:19:06 :C'est revenu? C'est bon?Vous m'entendez?Ouais.OK.Donc là, en fait, on fait une seule fonction, vérification menu.Et ici, on va lui passer les choix.
00:19:17 :OK?On va reprendre tout ce qui est similaire dans les fonctions.Donc ça, ici.Et là, en fait, alors là, c'est pas le meilleur nom,puisque du coup, ça fait un clash avec la variable que vous avez ici.
00:19:29 :Donc on va l'appeler choix menu, comme d'hab.Et donc là, on a enlevé, en fait, cette ligne de code qui est différentedans toutes les fonctions.
00:19:36 :Et ce qu'on va faire, c'est que là où vous appelez ces différentes fonctions,vous allez passer la liste.Là où on fait la vérif, on appelle la liste.
00:19:45 :C'est ça.Donc là, on va retourner.Donc ça doit être, je sais pas, je vais aller voir dans le main.Voilà, vérification menu libraison.Donc là, si je vais voir dans...
00:19:56 :Alors, c'est pas... Je vais fermer un peu le truc.Donc là, on avait vérification menu.Donc c'est vérif menu.Voilà, et on va passer cette liste là.
00:20:04 :Donc à la place, on va faire vérification.Alors là, vous avez dû importer les trucs...import erreur.Alors, pourquoi il me le met pas, l'autocompletion?
00:20:18 :Ah, bah je l'ai pu.Ah oui, je l'ai mis dans mon...En fait, c'est erreur.J'ai mis ça dans mon scratch.C'est erreur point...Ouais, mais j'ai pas mis au bon endroit, en fait.
00:20:26 :Erreur point vérif menu.J'étais dans mon fichier temporaire.Donc je vais la mettre ici.OK.Donc là, on a vérification menu à la place.Et là, on lui passe notre liste.
00:20:39 :Donc cette liste là.Et du coup, on va pouvoir faire ça sur les autres.Alors, on doit en avoir une autre quelque part.Donc je vais faire un search vérification.
00:20:53 :Alors, pour l'instant, il n'y a que celui-là.A moins que je me trompe.Est-ce qu'il y a un autre endroit où vous utilisez...Vérification menu livraison.
00:21:06 :OK. Est-ce que...Ouais.Ah, je crois que je t'ai perdu, Martin.Non, non, je me suis interrompu.OK, OK.Parce que là, du coup, en argument,on passe en dur la liste.
00:21:22 :Ouais.Est-ce que ce ne serait pas mieux...Parce que finalement, que le menu fasse...Le menu principal, il fasse 3 ou 5.Il s'en fout.
00:21:38 :En fait, si on change le menu,il faut propager manuellement la taille de la listeà tous les endroits où on a confiance.Oui, c'est là où tu pourrais avoir une variable.
00:21:49 :Si vraiment cette liste-là, tu l'utilises à plusieurs endroits,effectivement, ça fait du sens de...Tu pourrais te faire un fichier.C'est un truc qu'on peut faire, par exemple.
00:21:59 :Ici, je pourrais faire un fichier qui s'appelle constants.py.Ah, mais il n'y a plus de fichier pour les constants.Voilà. Et là, je vais dire, en fait...
00:22:07 :Donc ça, ça va être vérification des livraisons.Donc on va dire choix livraison.Et là, on va mettre la liste.D'accord.Et donc là, tu pourrais utiliser à tous les endroitsoù tu veux faire cette vérification, tu pourrais faire ça.
00:22:26 :Ou alors, ce que tu pourrais faire...Il y a plein de façons.Là, c'est vraiment à vous de voir.On pourrait faire aussi une fonctionqui s'appelle vérification menu livraison.
00:22:38 :Donc comme vous aviez fait tout à l'heure.Sauf que là, ce qu'on va faire, en fait,c'est qu'on pourrait faire une fonction.Donc quand on met un tiré du bas ici, comme ça,ça signifie que la fonction est privée.
00:22:50 :Alors c'est une convention.Donc on va dire que cette fonction ne doit pas l'utiliser directement.Et ce qu'on va faire ici, c'est qu'on va l'appeleret on va dire qu'on peut faire un return de vérification menu.
00:23:02 :Et là, passer directement la liste avec 1, 2, 3 et 4.Vous voyez, ça c'est une autre façon.C'est génial, c'est ça qu'il faut faire.
00:23:14 :Donc là, il check, sans qu'on ait à appeler ce truc-là,il vérifie les...Attends, là, regarde, je vais t'expliquer.Là, tu vois, en fait, on fait une fonction génériqueque toi, tu ne vas pas appeler directement.
00:23:31 :Donc là, tu ne vas jamais appeler directement vérification menu.Et ça, on le voit puisqu'on met un tiré du bas.Attends, parce que là, on t'a perdu au moment où...
00:23:40 :On t'a perdu en plein milieu, Thibault.OK, excusez, donc je recommence.Donc là, en fait, c'est...C'est quoi cette fonction magique, là? Underscore la fonction?
00:23:50 :Elle n'est pas magique, en fait, c'est une fonction comme les autres.C'est juste que là, si je reviens ici, vous voyez,il y a un petit... ça me le surligne, d'ailleurs.
00:23:59 :Et en bas, ça met access to a protected member.Donc ça, c'était juste une convention.On pourrait l'appeler, il n'y a rien qui nous en empêche.
00:24:06 :Python est très permissif.En fait, il y a des langages de programmationqui pourraient vous empêcher de faire ce genre de choses.Là, c'est vraiment juste une convention.
00:24:13 :Et vous voyez que PyCharm reconnaîtqu'on est en train de faire un truc qui est limite.Parce qu'en fait, on appelle une fonctionqu'on n'est pas censé appelerparce que par convention, on a mis un tiré du bas.
00:24:23 :Et ça, ça signifie que c'est une fonction qui est protégée, en fait.Et donc, nous, ce qu'on va faire à la place,c'est appeler celle-ci, donc vérification menu livraison,qui, elle, va juste appeler cette fonctionavec un paramètre spécifique.
00:24:37 :Et donc là, on pourrait reprendre les autres choses.On pourrait faire vérification menu outillage.En fait, on va faire pareil.Je vais enlever tout çapuisque là, en fait, ça nous évite de répéter du code.
00:24:45 :Vous voyez, je fais juste une fonction menu outillage.Et là, ce qu'on va faire, c'est pareil.On va...Tout le code qui est similaire,il est à l'intérieur de vérification menu.
00:24:55 :Et là, on peut juste lui dire,dans ce cas-ci, pour les outillages, c'est 5.Et pour le menu principal, on va faire pareil.Je vais prendre le nom ici.
00:25:05 :Et on fait une autre fonction.On va la mettre au début,comme ça, on sera bien dans l'ordre.Hop, une def.Et là, il faut comprendre que le return, en fait,ça se propage, si vous voulez.
00:25:17 :C'est-à-dire que...Mais du coup, il faut continuer à appeler ces fonctionsdans le programme.Ouais, là, du coup, ça veut dire...Là, elles sont définies, ces fonctions?
00:25:25 :Ouais.Tu les as définies ici.Est-ce qu'il faut les appeler à un moment donné?Ouais, là, dans ce cas-là, tu vois,on reviendrait à ce que vous aviez auparavant,c'est-à-dire appeler cette fonction ici spécifique,qui fait qu'on n'a pas besoin de se souvenir,pour la livraison,est-ce que c'était 3 choix, 4 choix, 5 choix?
00:25:41 :Parce qu'effectivement, c'est ça qui est un peu...Tu vois, avec les constantes, c'était un peu ça, le problème.C'est qu'à chaque fois qu'on utilise vérification menu,on aurait dû se rappeler, dans le cas de la livraison,est-ce que c'était 4 choix, 5 choix, je ne sais plus.
00:25:53 :Donc, c'est un peu embêtant.Là, on fait une fonctionà laquelle on n'a pas besoin de passer d'argument,parce qu'en fait, on l'a déjà hard-coded, si vous voulez, ici.
00:26:03 :Et donc, comme ça, on peut utiliser cette vérification n'importe oùdans notre script, sans avoir besoin de se souvenirde combien d'éléments on a besoin d'envoyer.
00:26:10 :OK?OK.Donc, là, vous...Est-ce que tu recommandes cette pratique?Oui, alors après, c'est là où il ne faut pas vous dire...À chaque fois, là, on avance petit à petit.
00:26:23 :Par la suite, si, par exemple,vous faisiez de l'orienté objet,on aurait une autre façon de faire les choses.Donc, il ne faut pas vous dire que c'est la façon absolue de faire.
00:26:32 :C'est une des façons qui permet, dans ce cas-ci,d'éviter d'avoir la répétition du code.Et qui permet d'avoir un truc...Ça s'appelle comment, le fait de mettre underscore devant la fonction?
00:26:41 :Alors, ça, en fait, c'est...Tu as deux choses.Tu as un underscore comme ça, et deux underscores.Donc, c'est d'aller priver et protéger.Et c'est vraiment juste une convention.
00:26:52 :Comme je te dis, ça ne t'empêchera pas, ici, de l'appeler.Si tu veux l'appeler, tu pourras l'appeler.Tu pourras faire erreur, point, et l'appeler comme ceci.
00:26:59 :Il y a juste, comme je te dis, PyCharm,qui dit qu'elle est protégée, ici.Parce qu'il reconnaît, il sait que c'est une convention.Donc, il t'indique que ce n'est pas un truc que tu es censé faire.
00:27:10 :Même si tu lances ton script, ça ne va pas planter.OK?OK.Donc, priver, c'est un underscore.Et protéger, c'est deux?Ou c'est l'inverse?C'est l'inverse.
00:27:21 :Tu vois, tu me mets le doute.Python, protected, private.Privé, c'est deux, protégé, c'est un.Public, protected, private, ouais.C'est ça.Protéger, c'est un seul, et priver, c'est deux.
00:27:34 :OK.Donc, après, bon, les...Enfin, oui, ça peut...C'est vrai que les termes seront quand même importants dans ce cas-ci,si vous voulez les retrouver.
00:27:44 :Alors, OK.Ça, c'est bon.Ça, c'est bon, Thibaut.Enfin, je pense que... Ouais.Ça, c'est le cas simple, parce qu'on vérifie si on appelle un élément qui est dans la liste.
00:27:57 :Donc, vérifier qu'un truc se trouve dans une liste, ça, c'est easy.Mais par contre, si le truc qui est relou, par exemple, c'est une date,si on veut que ce que l'utilisateur rende, ça colle à un modèle,c'est-à-dire du type jour-jour, slash, moins-moins, slash, année-année-année, enfin, AAA,si on veut que ça colle à ça, et qu'il y a que ça qui est accepté, comment on fait?
00:28:29 :Là, tu vas rentrer dans le merveilleux monde des expressions régulières.Donc, je ne sais pas si vous voyez toujours mon écran, là, sur Reject 101.
00:28:38 :Ouais.Donc, ça, en fait, là, on s'en va dans un truc un petit peu plus compliqué.Vous pouvez regarder, après, vous ne torturez pas la tête avec ça,parce que c'est quand même, c'est bien de le noter dans un coin.
00:28:50 :Après, comme je vous dis, c'est vraiment un truc…Ça, c'est déjà fait, la torture.Oui, justement, n'en rajoutez pas trop.Alors, j'ai des formations là-dessus, si vous allez voir.
00:29:01 :Alors, je ne sais pas, je vais taper comme ça, oui.Il devrait le retrouver.Donc, formation, voilà, les expressions régulières, si ça vous intéresse.Il y a une formation spécifique là-dessus.
00:29:13 :Et ça, ça va vous permettre, en fait, de tester.Donc là, par exemple, on pourrait mettre différents trucs.Voilà, donc on pourrait mettre différents formats ici.
00:29:29 :Et en fait, vous allez pouvoir mettre ici différents…On t'a reperdu.Ouais.Allo, est-ce que c'est bon?Ouais.Ok, c'est vraiment une micro coupure.Donc, en fait, l'expression régulière, ça va vous permettre de vérifierqu'une chaîne de caractère est sous un certain format.
00:29:50 :Et là, vous voyez, j'aime bien ce site, je vous le montre, regex101,parce que vous avez tout le quick reference ici.Donc, vous voyez, par exemple, si on cherche un nombre, c'est slash d.
00:30:00 :Donc, on pourrait dire, je cherche slash d,et là, vous voyez, il repère tous les nombres.Donc, on va dire slash d et j'en veux,et après, vous allez pouvoir dire combien vous en voulez.
00:30:10 :Donc, ça, ça va être avec les quantifiers.Vous pouvez dire, on en veut exactement un certain nombre.Donc, vous pouvez dire ici, j'en veux deux précisément.
00:30:17 :Et après, je veux un slash, et après, je veux ça de nouveau.Encore slash deux.Et là, dans ce cas-ci, ça va être… il faut l'échapper.
00:30:26 :Ok, donc…Voilà, vous voyez, ça devient un peu compliqué.Mais c'est possible.Ouais.Du coup, la condition, ça devient quoi?Ça devient, tant que l'input est différent de ça…Ouais, tu pourras faire ça.
00:30:38 :Ça…Ça…Ok.Ouais, tu pourras dire, tant que ça ne matche pas ce format précis,eh bien, ça ne marche pas.Donc, là, tu vois, je vais remettre…Je me perds dans les trucs avec un slash,et à la fin, j'en veux quatre.
00:30:53 :Et là, tu vois, il me le repère.Par contre, si j'en fais un autre, et que lui, je me détirais,là, tu vois, il ne me le surligne pas,parce que lui, il ne matche pas le format que j'ai mis,c'est-à-dire deux nombres suivis d'un slash,suivis de deux nombres, suivis d'un slash, suivis de quatre nombres.
00:31:06 :Et donc là, on pourrait faire effectivement…Ok, et le critère, c'est…Le critère de condition, c'est égal-égal,ou différent, je veux dire.Mais ce n'est pas…Ouais, dans ce cas-ci, en fait, tu ferais…C'est avec le module RE, donc, pour les regex.
00:31:21 :Donc, tu ferais un match,et tu pourrais lui dire, while not RE match.Donc, tant que tu n'as pas un match entre ta chaîne de caractère,donc là, tu aurais la date user date input, par exemple,et ensuite, le long truc comme ça, ici,c'est peut-être dans le sens inverse, je ne sais plus,
00:31:38 :tu lui dis, tant que tu n'as pas un match entre ce qui est passéet ce format-là, eh bien, tu le redemande,tu fais user date input, et tu dis, bah, rentre une date.
00:31:47 :Tu vois?C'est sûr que c'est plus simple que de coder en dur tout ça.Oui, ben non, ça, c'est plus simple.Oui, ben non, ça, c'est… Non, effectivement,heureusement, il y a des trucs comme ça qui…Tu peux nous le laisser, ça, Thibaud, ce que tu écris, là?
00:32:01 :Tu peux nous le laisser?Tu pourras nous filer une copie de ton code?Parce que je suis en train de recopier en même temps, c'est…Je vous le mets dans le chat.
00:32:10 :Merde, là, ça m'a gardé les… Hop.Mais oui, je pourrais vous le…Et même les fonctions return au-dessus, là.Oui, oui, oui. Ah, oui, oui, bah, tout ça, de toute façon, oui, oui,
00:32:20 :je vous enverrai tout ça.Vu que tu es dans le Git, tu peux pas l'enregistrer directement dans le Git?Si, si, après, je peux vous faire…Là, on va rentrer dans des trucs plus complexes.
00:32:31 :Je peux faire une pull request.Je pourrais, effectivement, si on va voir dans un terminal…Je crois que je suis dans…Projet Leuic.Là, ce que je pourrais faire, effectivement, vous voyez,c'est modifier des trucs.
00:32:52 :Je pourrais dire, alors, le fichier constants, j'en ai plus besoin.Je vais le supprimer.Et je vais modifier le main.Là, effectivement, après, je pourrais ajouter les suivis de production,faire un commit en disantreduce reformat choices functions, par exemple.
00:33:13 :Et après, je peux faire un git push.Et en fait, ce que ça va faire, vous voyez,là, vous avez dû le bloquer.Ah non, c'est parce que j'ai pas fait un fork.
00:33:24 :Vous voyez, je vous dis, en fait, on rentre dans des trucs un peu compliqués.Là, il faudrait que je fasse un…Bah, allez, c'est…Mais oui, mais en théorie, oui, c'est possible.
00:33:33 :On fera ça à la fin.On fera ça à la fin, Thibault.Mais oui, dans la théorie, c'est possible.Et puis après, en fait, t'auras le choix d'accepter des changements.
00:33:43 :Donc, est-ce que ça va pour ça?Est-ce qu'il y a des questions sur…Déjà, cet outil, il est bien, moi, je trouve.Cet outil, l'import re et de faire match des trucs,je pense que c'est ça qui nous manquait.
00:33:59 :Ah, ça, après, comme je vous dis, après, c'est…C'est pas mal.C'est quand même un truc un peu plus avancé.Donc, prenez le temps de le digérer.
00:34:08 :Ça fait peur au début, avec tous ces trucs-là.Mais si vous voulez regarder, il y a la formation sur Doxtrink.Moi, j'avais une question bête.
00:34:17 :Si tu retournes dans le main,à un moment donné, je pense que c'est tout en bas,pour sortir du logiciel, du programme,on a exit, voilà, exit entre parenthèses.
00:34:33 :On a un peu galéré.Au début, on mettait 6.exit, ça sortait pas.Ok.Exit entre parenthèses, ça sort.C'est quoi le…Ça, c'est surprenant.Ça devrait marcher avec 6.
00:34:45 :Ah, alors, attends, parce que là, vous avez pas…Alors, quand on mettait 6.exit, on importait 6…Ouais.Et puis, on importait, on faisait import ça.
00:34:55 :Je sais plus.Bah, là, tu vois…Oui, oui, bah oui, alors, ce qui me surprend,c'est que c'est peut-être une nouveauté, je sais pas,mais exit tout seul, ça fonctionne.
00:35:04 :Ok.Tiens, bah, je suis surpris, tu vois.Parce que moi, j'ai toujours fait avec import 6 et 6.exit.Et je savais pas que…Check, je vais…Alors, est-ce que j'ai une ancienne version de Python?
00:35:18 :Ah ouais, ça y était déjà, ok.Vous voyez, vous me mettez le doute.Je sais même plus dans mes formationssi j'utilisais 6 ou si je faisais juste un exit comme ça.
00:35:28 :Mais normalement, les deux devraient marcher.Normalement, quand on met exit ou 6.exit,ça devrait marcher de la même façon.Donc, si j'importe 6 ici et que je fais 6.exit,
00:35:40 :je vais tester, là, je vais lancer, hop, run main.Donc, là, j'ai le choix.Alors, je vais le lancer, hop, quitter.Voilà, tu vois, process finished.
00:35:53 :Donc…Ok, ouais, c'est bizarre.Si ça a pas marché, c'est peut-être parce que vous avez peut-être fait une erreur ailleurset que vous avez pensé que…C'est souvent ça, ça arrive très souvent,on pense qu'il y a un truc qui marche pas.
00:36:05 :Je vois ça beaucoup sur Udemy, les questions que j'ai,des gens qui sont persuadés que l'erreur est à un endroit précisalors qu'en fait, ils avaient fait une autre erreur à côtéet du coup, ils restent focalisés sur la première erreur.
00:36:15 :Et c'est assez sournois, ça.Ouais, ok.Donc, mais là, effectivement, je vais utiliser juste le exit.Et un truc…Alors, ça, c'est ce que Thierry vous avait dit, effectivement,il y a plusieurs façons d'aborder le truc.
00:36:29 :Je montre un petit peu les deux à différents moments dans mes formations.Là, dans ce cas-ci, on peut faire effectivement une boucle while true.Donc, ce que j'aime bien, c'est que c'est facile à comprendre.
00:36:37 :On se dit, bon, voilà, ça boucle tout le tempset après, en fonction d'un choix, on sort.L'autre truc qu'on peut faire, c'est changer la condition iciet dire que, dans ce cas-ci,quand est-ce qu'on veut sortir?
00:36:50 :On veut sortir quand le choix est égal à 3.Donc, on pourrait faire ça aussi ici.On pourrait faire une variable ici,choix qui est égale à une chaîne de caractère videet on dit tant que choix est différent…Là, c'est ce que vous avez fait au départ.
00:37:05 :Voilà, c'est ça.Et donc, on dit tant que choix…Qu'est-ce que tu dis, Loïc?Dans la… parce que, tu sais, j'ai trois dossiers avec suivi V1, V2, V3et au tout début, je n'avais pas mis while true,j'avais mis cette syntaxe-là.
00:37:24 :Là, on peut faire ça.Là, on dit que tant que choix est différent de 3, on boucle.Donc là, au début, choix est différent de 3puisque c'est une chaîne de caractère vide.
00:37:33 :Donc, on va rentrer dans la boucle.On va demander de choisir quelque chose.Et donc, là, on fait la vérification.Mais ce n'est pas mal, while true.
00:37:40 :Moi, j'aime bien while true, Thibaut,parce que finalement, si les menus sont amenés à changer,finalement, le égal à 3, ça peut devenir égal à 4.
00:37:51 :Oui, mais…Alors que dans while true…Oui, parce que tu vas le changer ailleurs.Si je reviens avec le while true, ton choix, tu vas le changer ici.
00:38:00 :Si finalement, c'est 4, le 4, il va changer ici.Tu vois?Oui, c'est ça.Il va changer à un autre endroit.C'est tout.Mais il faudra quand même le changer.
00:38:08 :C'est vrai, c'est vrai.Est-ce que les autres, vous avez des questions là-dessus?Sur ce qu'on a vu?Oui, désolé pour les autres parce que…Non, non, après, c'est…Du ras-de-chiffre, nos taquets échoïques, mais bon…J'avais juste une petite question concernant la fonction privé.
00:38:31 :Oui?Donc, ce qu'on avait vu ici?Je me dis, au final, on aurait pu faire une fonction simple,comme les autres, sans qu'elle soit vraiment privée.
00:38:46 :Alors, en fait, là, je dirais que c'est le choix du développeur.Est-ce que tu considères que cette fonction peut être appelée?On pourrait dire qu'on ne va pas mettre le tiré du bas.
00:38:58 :Et si tu fais ça, tu indiques à des gens qui pourraient travailler sur le même codeque cette fonction peut être utilisée telle qu'elle.C'est-à-dire que, moi, si j'enlève le tiré du bas devant,ça indique qu'elle pourrait être appelée directement dans main.py, par exemple,
00:39:17 :ou dans un autre fichier.Et dans ce cas-là, il faudrait lui passer un choix du menu.Si on met le tiré devant, ça indique que cette fonction ne va jamais l'appeler telle qu'elle.
00:39:27 :Donc, ça voudrait dire que, si jamais il y a d'autres développeursqui veulent faire d'autres fonctions de vérification,eh bien, il va falloir créer une autre fonction ici.
00:39:35 :Imagine qu'on ait un autre type de chose à vérifier.On pourrait refaire une autre fonction, vérification, shipping.Et là, on referait vérification, et cette fois-ci, on mettrait autre chose.
00:39:47 :On mettrait shipping ou je ne sais pas quoi.Je ne sais pas si c'était très clair.C'est vraiment une question de design, de comment tu veux faire les choses.
00:39:57 :Est-ce que tu considères que cette fonction peut être potentiellement appelée directement,ou est-ce qu'à chaque fois, tu veux qu'on passe par des fonctions spécifiques comme çaqui vont envoyer des informations sans qu'on ait besoin de les spécifier directement?
00:40:14 :Vous m'entendez?C'est moi qui ne vous entendais plus.Est-ce que ça...Thibault?Asselineau, tu nous entends?Oui, oui.Oui, Martin, tu as besoin de...Le underscore, c'est au final juste pour donner signe à d'autres développeursen quoi cette méthode sera privée.
00:40:39 :Oui, oui.C'est ce que j'ai compris.Ça fonctionne exactement comme les fonctions classiques, en aucune différence, on va dire.Oui, oui. C'est exactement pareil.Ça ne change absolument rien.
00:40:51 :C'est vraiment une convention qui indique que tu ne dois pas l'appeler directement.D'accord.Est-ce que ça existe?Oui.Est-ce que ça existe, Thibault, une manière de faire que finalement tu as deux scriptsqui fonctionnent en parallèle, l'un qui surveille les saisies de l'autre, les inputs de l'autre,mais sans qu'on ait à appeler à tel endroit, qu'on veuille vérifier tel truc à tel endroit?
00:41:26 :Tu vois ce que je veux dire?Par exemple, tu as un script surveillance des inputs qui screen continuellementtous les inputs de l'utilisateur et quand il détecte que ça n'a pas le bon format,il te le dit, mais tu n'as pas besoin de l'appeler fonction spécifiquement dans ton menu principal,
00:41:47 :dans ton main?Non, c'est vraiment des comportements que tu dois coder.Même si après tu as une interface graphique, par exemple, tu vas réagir à des inputs précis de l'utilisateur,donc quand il va cliquer sur un truc, tu vas vérifier s'il a fait ça, s'il a bien donné les bonnes choses.
00:42:08 :Et c'est ce que tu disais un peu au début et malheureusement c'est beaucoup ça qu'on fait.Vous allez voir que, je dirais peut-être les trois quarts du code que vous allez écrire,c'est souvent plus de la vérification que de la logique.
00:42:21 :C'est pour ça que très souvent on a des scripts qui ne sont pas très testés,parce qu'on va commencer par écrire la logique, on ne va pas avoir envie de s'embêter avec toutes les vérifications,et on va laisser ça tomber.
00:42:36 :Et après on aura des scripts qui ne seront pas vraiment sécuritaires,parce que l'utilisateur va pouvoir faire plein de trucs et vont le faire planter.
00:42:45 :Et là où on va rajouter beaucoup de lignes de code, c'est pour prévoir tous les cas de figure qui pourraient faire planter le script.Donc on va vérifier si l'utilisateur a rentré les bonnes choses,si le résultat qu'on a produit est du bon format, etc.
00:43:00 :Donc c'est inhérent au code, on peut ne pas le faire, mais dans ce cas-là on a un script un peu bancal,qui risque de planter, et si on le fait, on a beaucoup de choses comme ça dans le script.
00:43:13 :Ok, ça marche.Est-ce que... Ouais.T'avais une question, Martin?Pardon, vas-y, je ne sais pas qui voulait prendre la parole.Moi je voulais revenir sur le module OS.
00:43:30 :Ouais.Si ça vous dit, parce que je ne me souviens plus dans mes formations,je croyais que je l'avais... Il me semble qu'il faudrait que je regarde,
00:43:41 :parce que je sais que j'ai laissé quelques parties qui parlent du module OS,parce qu'on en avait parlé vite fait la dernière fois, le fait que c'était quand même important de le voir,parce que c'est un module qui est tellement utile, et qui a du coup tellement été utilisé,
00:43:57 :que c'est sûr que vous allez le voir dans du code en production.Il est partout.Ouais, il est vraiment dans tous les trucs qu'on a besoin de faire avec l'ordi.
00:44:10 :Et même actuellement encore, Pathsweep, que je vais vous montrer là,permet de faire des choses beaucoup plus efficacement.Mais il y a encore des cas de figure dans lesquels OS permet de faire,notamment sur, par exemple, tout ce qui est un peu plus avancé,comme les variables d'environnement.
00:44:25 :Donc pas sur la manipulation des chemins, où là Pathsweep a vraiment pris le relais,mais sur tout ce qui est votre système d'exploitation en général.
00:44:32 :Par exemple, récupérer, savoir si vous êtes sur Mac, Windows ou Linux,c'est souvent une information qu'on a besoin de connaître.Savoir quelle version de Mac, Windows ou Linux vous utilisez,donc des trucs comme ça, vous allez le faire avec le module OS.
00:44:44 :Donc c'est un module qui est quand même important de connaître et de savoir qu'il existe.Après, dans ce cas-ci, si je reviens sur les parties où vous l'utilisez,on va plutôt dans ce cas-ci utiliser Pathsweep,parce que c'est de la gestion de chemin,et qui est mieux faite maintenant et plus facile avec Pathsweep.
00:45:03 :Ça va pour ça?Oui.Si la récupération des infos de l'OS est si importante que ça,pourquoi est-ce qu'ils ne l'ont pas mis dans Pathsweep?
00:45:18 :Parce que Pathsweep, comme le nom l'indique un peu,c'est vraiment la gestion des chemins.Et je pense qu'ils se sont dit, il faudrait demander aux développeurs pour les raisons précises,mais de ma vision des choses, c'est qu'ils se sont dit,le module OS fait plein de choses.
00:45:36 :En fait, c'est que tu as le module OS et tu as le sous-module OS.path.Donc là, ce que je vous disais, c'est plus, si je reviens dans un Python 3.9,
00:45:46 :si j'ouvre le module OS, si on regarde ce qu'il y a de disponible directement sur le module OS,par exemple, il y a GetUID, je crois.
00:45:56 :Il y a une astuce, Thébo, pour apporter ce que tu as fait exactement,mais de façon plus lisible, c'est d'utiliser pprint.Oui, pprint, c'est le module.
00:46:11 :Donc là, vous avez tout ce que vous pouvez utiliser sur le module.C'est vrai qu'il y a plein de trucs.Oui, il y a plein de trucs.
00:46:23 :Je ne sais plus quel c'est. Vous voyez, open, par exemple, c'est pour lancer des processus.Je ne sais plus où c'est, mais il y a des trucs sur les environnements.
00:46:33 :C'est désespérant, il y a trop de trucs.Non, mais non, non, non.OS.environ, c'est pour les variables d'environnement, par exemple.Après, ce sont des trucs que vous apprenez au fur et à mesure.
00:46:43 :Donc là, vous voyez, OS.environ, ça me permet d'afficher toutes les variables d'environnement du système.Donc il y a des trucs comme ça directement sur OS qui sont encore d'actualité.
00:46:51 :C'est vraiment juste pour la gestion des fichiers qu'ils ont fait un truc vraiment mieux avec Passtube.Donc là, par exemple, s'il n'y a pas de questions, je vais vous montrer.
00:47:02 :Puis on va probablement finir là-dessus sur une petite phase de refactoring avec Passtube.Là où c'est intéressant, c'est que justement, c'est assez intéressant aussiparce que ça vous permet de voir l'intérêt de l'orienté objet.
00:47:20 :Parce que vous voyez que là, à chaque fois avec le module OS, on passe par des fonctions.Je ne sais pas si vous l'avez remarqué, mais à chaque fois, on va dire OS.pat, une fonction, et tu nous fais un truc.
00:47:31 :Et par exemple ici, imaginez qu'on veuille remonter encore d'un niveau.On est obligé de tout réenglober dans une fonction.On est obligé de faire ça.
00:47:39 :Là, ça va remonter de deux dossiers.En fait, on va prendre le chemin complet du fichier actuel, donc livraison.py.Donc ça va nous retourner tout le chemin jusqu'au fichier.
00:47:49 :Et là, on dit, on va récupérer le dossier par an.Donc là, ça va nous récupérer livraison.Et sur tout ça, on repasse ce résultat une nouvelle fois à DirtName pour récupérer encore une fois le dossier par an.
00:48:00 :Donc vous voyez que ça fait des trucs à rallonge et ce n'est pas très clair.En fait, on va un peu dans le sens inverse.
00:48:05 :On a déjà notre fichier, et puis après, on récupère le dossier par an.Et après, on refait tout ça une deuxième fois, mais on va de droite à gauche.
00:48:12 :Ouais, sur le path, on a compris que d'avoir recours aux fonctions, c'est relou.Et le path, il permet de concaténer les trucs plus facilement.En fait, si on fait depuis pathlib, on importe path, vous allez pouvoir créer un objet, justement.
00:48:37 :On va refaire le dossier outillage.Là, cette fois-ci, on va créer un objet, comme ça.Et donc là, on reconnaît une classe, en fait.Pourquoi? Parce qu'il y a une majuscule.
00:48:49 :Ce n'est pas tout le temps le cas, justement.Je ne sais pas si vous avez vu l'article que je vous avais envoyé, peut-être, Martin et Loïc, puisqu'on en avait parlé sur DateTime.
00:48:58 :Bizarrement, c'est un des seuls endroits où il y a des classes qui n'ont pas de majuscule.Mais les trois quarts du temps, quand vous avez une majuscule sur le premier mot, ça signifie que c'est une classe.
00:49:07 :Et donc là, vous avez un objet.Et ce qui est bien, c'est qu'on va aller dans l'autre sens, cette fois-ci.Pour récupérer le nom du dossier, je croyais que c'était dire, tout simplement, directory.parent.
00:49:32 :Et ça, ça va nous retourner un objet qui va être également un objet de type Path, donc exactement le même objet.Donc ça veut dire qu'on va pouvoir rajouter encore une fois un parent derrière si on veut remonter.
00:49:42 :Et là, vous voyez, c'est beaucoup plus facile.Vraiment, on lit de gauche à droite.On a notre chemin, et puis après, on récupère le parent, et on récupère le parent du parent,plutôt que de partir du chemin là et puis d'aller de droite à gauche, en fait.
00:49:55 :OK?Oui.Donc ça, voilà, on fait la même chose ici.Et pour le join, pareil, c'est beaucoup plus pratique.Je fais un fichier de livraison comme ça.
00:50:09 :On va prendre notre dossier outillage, et on peut faire une concaténation juste avec le slash comme ça.Et là, il faut bien comprendre que le slash, c'est pas...
00:50:19 :Parce que bon, avec les chemins de fichiers, vous avez probablement remarqué que le fameux problème entre Windows et puis Mac et Linux,c'est que les slashes ne sont pas dans le même sens sur les différents OS.
00:50:30 :Et donc là, en fait, c'est pas le slash vraiment à l'intérieur de la chaîne de caractère,c'est le symbole slash division.Et en fait, PastClib va faire une concaténation qui va être de la même façon que quand on fait OS.Path.Join.
00:50:47 :Il va, en fonction du système d'exploitation, utiliser le bon séparateur.Donc là, en fait, avec OS.Path.Join, vous voyez, on n'indique pas le slash.Là, on indique le slash, mais faut bien faire attention, c'est pas le slash en chaîne de caractère,c'est le symbole qui nous permet de dire qu'on veut associer ce chemin avec ce chemin.
00:51:06 :Et après, si vous êtes sur Windows, il va mettre des slashes qui seront dans le sens inverse, comme ça.Comme ça, si je retrouve la touche.
00:51:16 :Non, il veut pas.Vous comprenez dans l'autre sens, quoi. Dans le sens inverse, en tout cas.On pourrait laisser CTRL-A, mais j'ai un clavier QWERTY, et puis j'arrête pas de changer entre mon canadien et anglais.
00:51:35 :Donc voilà, c'est vraiment juste pour concaténer.Donc c'est en fait la même chose que si on faisait OS.Path.Join.Et vous avez d'ailleurs le Join Path qui permet de faire la même chose,donc on pourrait faire de cette façon-là aussi. C'est deux façons de faire la même chose.
00:51:50 :Plutôt que le slash, on pourrait faire ça également.Comme vous pouvez le voir, moi j'aime bien utiliser cette façon de faire avec le slash, je trouve que c'est assez clair.
00:51:59 :Donc, hop, voilà.Là, pareil, le OS.Path.Exist, on va le faire directement sur notre objet.Donc plutôt que de passer notre objet à une fonction, on prend notre objet et on vérifie s'il existe.
00:52:11 :Là encore, c'est beaucoup plus clair.Json.Load, ça, ça bouge pas.Ensuite ici, et là, je crois qu'il y avait, il me semblait qu'il y avait un autre endroit. Non.
00:52:24 :OK, voilà, il y a juste ça.Et là, vous voyez, par la même occasion, quand on a un import dans PyCharm, je crois qu'il le fait pas dans VS Code.
00:52:31 :Dans PyCharm, quand vous avez un import d'un module qui ne sert plus, il le met en gris.Ça, je trouve ça assez pratique.Il le fait aussi.
00:52:39 :Ah ouais, il le fait aussi.Il le met à l'info de VS Code aussi.OK, VS Code de toute façon rattrape PyCharm, enfin toutes les nouvelles versions que je vois.
00:52:46 :Je me dis, ah, ça c'est déjà dans PyCharm depuis 3-4 ans.Mais pour l'instant, PyCharm a encore une longueur d'avance.Là, ça permet de voir que concrètement, j'ai même pas besoin de continuer dans le fichier.
00:52:57 :Je sais que le module OS n'est plus utilisé, donc je peux l'enlever.Et vous avez même, quand vous faites un refactoring, vous m'avez peut-être déjà vu le faire.
00:53:04 :Là, j'utilise un raccourci clavier.Je vais aller dans Reformat Code ici.Sur Mac, c'est Command, Option, L.Et par exemple, j'ai vu qu'il y avait pas mal d'endroits où, par exemple, ici, il manque un espace.
00:53:22 :Vous voyez, c'est pour ça qu'il est juste sur ligne.Donc plutôt que d'aller à chaque endroit ici faire la bonne séparation,moi, je fais ça.
00:53:31 :Je ne sais plus où c'était, dans Code, voilà.Reformat Code, et hop, automatiquement, il va tout reformater comme il faut.Et vous pouvez lui indiquer aussi, si j'en mets l'import OS, vous pouvez lui dire,là, si on va dans Code, Reformat File, vous allez avoir un petit truc.
00:53:49 :Et là, vous voyez le Optimize Import.Donc si vous le cochez, pareil, en fait, il va enlever les modules qui sont plus utilisés.Moi, je l'avais décoché à un moment, parce que des fois, en fait, on fait juste...
00:54:00 :Enfin, il est plus utilisé temporairement, mais finalement, on finit par le réutiliser quelque part.Donc, ouais, ça, vous le voir.Donc je croyais qu'il y avait d'autres endroits.
00:54:10 :Est-ce que... Alors, il y a dans Outillage, ici aussi.Donc là... OK, donc là, c'est un peu près.Ouais, OK, d'accord, donc c'est le même délire avec le Dername, le Join.
00:54:24 :Donc là, voilà, c'est la même chose que dans l'uraison.Thibaut, finalement, là, on a vu un peu ce qu'on a fait.C'est quoi pour toi les orientations futures pour amener le truc au niveau d'après?
00:54:45 :C'est quoi les conseils? Qu'est-ce qu'il faut qu'on travaille?Là, je dirais qu'à mon avis, vous voyez, vous avez quand même vachement bien avancé.Je vais le revérifier avec Thierry s'il n'a pas...
00:55:00 :Je te pose la question. Là, le logiciel, c'est un truc terminal,mais l'idée, c'est d'avoir un truc...Ouais, ouais, moi, je vous dirais l'orienter objet.
00:55:11 :Parce que là, vous avez...Plus qu'il se prend en main comme un logiciel normal.Moi, je vous dirais de regarder l'orienter objet,parce que là, vous pourriez continuer d'améliorer des petits trucs ici et là,mais vous avez quand même déjà bien découpé votre code.
00:55:24 :Après, je ne sais pas si c'est fonctionnel, mais ça m'a l'air d'être assez fonctionnel.Vous avez un menu, différents menus avec différentes choses.Donc là, je vous dirais, c'est vraiment l'idée de...
Aucune occurrence trouvée pour « ».