Session du 26 février 2022 à 18h00
Bases du Langage
Veille & Discussions
Fichiers & Système
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
Automatiser ses tâches avec Python et FFmpeg
Découvre comment automatiser la conversion vidéo avec Python et FFmpeg, et sécuriser tes clés secrètes grâce aux variables d'environnement.
00:00:00 :Ouais, tu arrives à faire à peu près combien de temps quand tu t'y mets du coup?Encumulé sur une semaine je dois faire bien cinq heures au moins.
00:00:09 :Ok ouais quand même, donc ça va t'es pas au point zéro non plus?Non.Ok, et t'es rendu dans quelle partie?Moi ça fait un moment que c'est depuis les premiers confinements que j'avais commencé les formations sur Udemy.
00:00:25 :Du coup, tout ce qui est les bases c'est fait.Là je me suis intéressé à Django mais après le problème c'est pour déployer ça, c'est surtout des idées, c'est pour le travail.
00:00:43 :Où je suis pas du tout informaticien.Et après là c'est que je suis dans un environnement informatique qui est très verrouillé.Et du coup, forcément ça complique.
00:00:57 :Ça limite pas mal.Et du coup là je m'intéresse à tout ce qui est application de bureau avec UT.Et là je suis en train de monter ma première application vraiment un peu concrète.
00:01:11 :C'est pour le délai, c'est pour le suivi du tarot de mes collègues.Avant de pouvoir faire des trucs un peu plus intéressants pour eux, pour le travail.
00:01:22 :Ouais, après faut bien commencer.Et c'est souvent avec les idées de projet.Je le dis souvent quand il y a des gens qui savent pas quoi faire, c'est juste écouter ce que disent ta famille, tes amis, tes collègues.
00:01:37 :Et tu te rends compte qu'il y a plein de petits trucs comme ça qui peuvent être résolus par de la programmation.Et c'est souvent là qu'on trouve les premières idées de projet, même si c'est des trucs qui n'ont pas forcément rapport avec le travail.
00:01:50 :Donc ouais, faut toujours rester à l'écoute de ça.Bah écoute, je sais pas si on va être plus que tous les deux ce soir, il n'y a pas grand monde pour l'instant.
00:02:02 :Il y a eu pas mal de messages de non présence.Ouais, ouais, il y en a qui est, ouais.Christophe, William, Loïc.Moi ce soir du coup j'avais prévu, il n'y avait pas eu énormément de questions, mais il y avait quand même une question intéressante sur les clés secrètes, les variables d'environnement.
00:02:27 :Je sais pas si t'as déjà eu l'occasion d'y toucher un peu.Moi à part pour manipuler un peu PythonPot.Parce que c'est le genre de sujet où on peut passer à travers un peu pendant longtemps et s'en sortir.
00:02:42 :Et puis quand on tombe dedans, c'est pas super compliqué, c'est juste que ça dépend beaucoup des systèmes d'exploitation, des échelles, des permissions, des petits trucs comme çaqui font que des fois on sait pas où chercher, mais après il n'y a rien de compliqué dans le principe.
00:03:09 :J'ai fait un petit script cette semaine, c'est un peu méta, pour convertir les enregistrements des mentorats en mp4,parce que par défaut il me les sort en format webm, qui n'est pas possible d'ouvrir en fait dans Première ou des logiciels comme ça.
00:03:31 :Et c'est quelques lignes, mais je trouve que c'est intéressant de voir qu'avec là encore 5 lignes de Python on peut automatiser des trucs comme ça,et que c'est généralement le premier genre de truc qu'on automatise quand on scripte,et qu'on a pas envie de convertir des trucs à la main avec des logiciels longs et lourds à ouvrir.
00:03:47 :Donc voilà, c'était un peu le programme de la soirée, donc écoute, je pense qu'on va être juste tous les deux,je vais quand même te montrer ça parce que du coup c'est disponible en rediffusion, donc les autres pourront regarder par la suite.
00:04:04 :C'est toujours ce genre de petit programme qui est gratifiant quand tu te fais chier à faire quelque chose à la main,et puis un jour tu te décides, allez ça je vais l'automatiser et que ça marche.
00:04:17 :Ouais, après c'est la piqûre où tu veux tout automatiser dans ta vie.Et ça c'est clair, surtout sur des trucs comme ça où clairement, c'est ce genre de truc.
00:04:31 :Moi j'ai beaucoup vu dans des entreprises, même des fois je me suis senti un peu mal,enfin je l'ai jamais fait, mais par exemple j'avais un collègue dans une boîte d'effets visuels dans laquelle je travaillais,où sa job c'était de faire des slates, quand on faisait des sessions de review de projet,
00:04:55 :il fallait mettre les timecodes, le timing de combien de secondes s'écoulait sur une séquence pour pouvoir après dans les notes s'y retrouver.Donc plein de petits trucs comme ça que lui faisait à la main en fait, donc il ouvrait son logiciel de montage,il importait les rushs, il mettait le petit machin qui permettait de mettre les secondes,
00:05:16 :plein de petits trucs comme ça où moi à chaque fois je me disais c'est exactement le genre de truc qu'on peut automatiser.Et je me disais, c'est pour ça que je disais que tu te sens un peu mal,parce que c'est comme les informaticiens qui voient les gens qui passent les articles à la caisse et qui se disent,
00:05:30 :bon bah ça c'est clairement un genre de truc qui pourrait être automatisé et tu te dis bon bah on n'a pas envie non plus de mettre les gens au chômage,mais après en tout cas d'un point de vue entreprise clairement tu te dis que là tu mets des salaires quand même conséquents
00:05:46 :dans des trucs qui sont automatisables et donc ouais c'est pas toujours, c'est un peu délicat quoi.Mais après par contre au niveau personnel c'est clair que c'est le genre de truc là pour le coup la question se pose même pas quoi,tu le fais une fois, deux fois et puis quand tu sais que c'est quelque chose de récurrent qui va se faire toutes les semaines, t'automatises quoi.
00:06:06 :Donc voilà, n'hésite pas du coup, je sais pas si t'avais des questions sinon toi, on peut peut-être commencer par ça,si t'avais des questions sur ce que t'avais vu ou des choses que t'avais vues sur Python.
00:06:18 :Actuellement je cherche à traiter des données via une base de données avec Panda pour en tirer un graphe.Pour l'instant j'y arrive pas trop, je tâtonne un peu dans tous les sens.
00:06:36 :Ah tiens, Guillaume qui arrive. On est trois finalement. Salut Guillaume. Donc tu essaies de récupérer des données via Pandapour en tirer des graphes et là ça marche pas, c'est ça?
00:06:53 :Ouais bah ça me donne pas le résultat expémenté en fait. En gros j'ai des cédesses, c'est les parties de tarot.Je les ai découpées, une session c'est plusieurs donnes, donc chaque donne a un résultat.
00:07:10 :Et j'essaie de faire la somme de chaque donne d'une session et après de représenter ça sous un graphe.Et là ça me donne des résultats pas convaincants.
00:07:34 :Bah hésite pas à poster si tu veux ton code, si tu veux qu'on regarde pour la semaine prochaine.Comme ça on pourra checker et puis si c'est possible.
00:07:45 :Oui oui, complètement. Après je pensais, il y a la page de mes projets sur Doctrine, je pense que c'est possible.Ouais tu peux sur Discord ou sur les projets, et puis nous pinguer, mettre un petit lien comme ça on peut regarder.
00:08:01 :Parce que ça pourrait être un truc intéressant. Le Panda c'est clair que c'est le genre de truc qui est très puissantet qui peut aussi être des fois un peu difficile à débugger, parce que c'est une façon de penser qui est propre en soi,avec les data frames, les numpies derrière qui gèrent tout ça aussi.
00:08:24 :Donc c'est vrai que ça prend un petit temps d'adaptation des fois au début.Ouais bah juste avant, pour pouvoir ne serait-ce que traiter mes données, pour recalculer la valeur d'une donne,je retraite mes données en fonction de ce qui a été appelé, tout ça.
00:08:44 :Et rien que là j'ai mis du temps à comprendre le fonctionnement de la méthode Apply,où je pensais qu'il fallait donner chacun des paramètres séparément, et en fait non,tu donnes tout le data frame et c'est après que dans la fonction tu viens chercher tel un dictionnaire les infos de la ligne.
00:09:02 :Ouais, ouais, il y a ça et...J'ai pas mal de temps à le comprendre.Ça et effectivement les masques, le fait que des fois tu peux remplacer les choses inline,donc directement affecter ton data frame, c'est un des trucs que je vois le plus régulièrement,c'est surtout dans Jupiter Notebook où des fois en fait tu vois l'affichage,
00:09:27 :donc tu vois l'affichage, tu penses que c'est bon et en fait ta variable elle a pas changé.Et donc il y a ce... ou alors des fois aussi, très courant dans les Jupiter Notebook,
00:09:35 :c'est le côté mémoire, c'est que tu as une variable qui est en mémoire et finalement,vu que tu relances pas toutes les cases, toutes les cellules du notebook à chaque fois,tu peux avoir des trucs des fois où tu comprends pas pourquoi t'as un résultat,parce qu'il a gardé un vieux truc en mémoire ou parce que t'as pas réexécuté quelque chose
00:09:51 :et ça peut causer des tours, c'est différent du côté linéaire qu'on a un peu quand on a un scriptoù on exécute tout le script à chaque fois et là tout se remet à zéro automatiquement.
00:10:01 :Ouais, ça je l'ai bien compris, maintenant je... même si je sais que ça aura pas d'impact,je fais quasiment un redémarrage des noyaux complet à chaque fois.
00:10:10 :Oui, bah ça peut être une façon de faire au début pour t'assurer que...ou au moins en cas de problème de commencer par ça en se disant bon, on remet tout à zéroet c'est souvent là que tu te rends compte que t'as une ligne qui fait tout foirer
00:10:21 :parce que quand t'exécutais ligne par ligne ça allait et en fait si tu repars depuis le début ça marche plus.Donc ouais. Bah écoute ouais, si tu veux tu pourras le poster
00:10:31 :et puis on pourra regarder ça pour la semaine prochaine.Ok.Toi Guillaume, est-ce que t'avais des questions, des choses spécifiques que t'aurais vues cette semaine?
00:10:42 :Non, pas de questions particulières. Peut-être le...Je suis sur les chemins de fichiers en ce moment, avec les dictionnaires.J'ai vu passer sur Discord le fait que tu utilisais un scriptque tu souhaitais présenter, donc ça m'intéresse.
00:11:00 :Ouais, c'est ça qu'on va voir tout de suite.Ok parfait. Et je voulais savoir si on est obligé dans un premier temps de déclarer le chemin
00:11:08 :avant de créer le dossier ou on peut créer le dossier directement sans déclarer le chemin?Tu veux dire créer une variable pour stocker le chemin du dossier?
00:11:18 :Non, juste le dossier en lui-même créer le dossier et après on le déplace avec le module rename.Ouais.Il vaut mieux faire ça d'abord, déclarer le chemin puis après décréer le dossier.
00:11:33 :Alors en fait, un truc que je vois qui est souvent mal compris,c'est qu'il y a des fonctions qui permettent de créer et supprimer des chemins,des dossiers ou des fichiers.
00:11:49 :Et ça c'est souvent avec le module OS ou avec Patrib ou avec JSON,enfin avec des modules.Et il y a beaucoup de gens qui ont l'impression que juste en déclarant une variableavec le chemin du dossier, ça va créer le dossier.
00:12:03 :Alors que pas du tout, il faut bien comprendre que quand on crée une variablequi est égale à un chemin de dossier, ça reste une chaîne de caractère.
00:12:09 :Et que tant qu'on fait pas une action du genre JSON dump ou file.writeou OS.rename ou un truc comme ça, ça reste une chaîne de caractère en fait.
00:12:22 :D'accord.Je vais partager mon écran et je vais montrer.Je vais aller sur Windows.Donc, est-ce que vous voyez mon écran?Ouais, normalement ça devrait être bon.
00:12:43 :Donc en fait, la problématique que j'avais, c'est que j'ai des fichiersqui sont en fait les fichiers d'enregistrement des sessions de Mentora,qui sont en fait les fichiers au format WebM.
00:12:56 :Et ces fichiers, on peut pas les ouvrir dans Premiere,et moi j'en ai besoin pour traiter le son.Donc il faut que je les convertisse en MP4.
00:13:07 :Donc au début je faisais ça avec un script.sh,parce que bizarrement il n'y a pas dans Premiere etc,on peut même pas ouvrir les fichiers WebM.
00:13:18 :Donc soit il fallait passer par des outils en ligne,soit il fallait utiliser FFmpeg en ligne de commande.Et donc j'ai décidé d'automatiser tout ça,et pour ça j'utilise FFmpeg, qui est un utilitaire très très très connu,très utilisé, qui est un truc open source, si je ne me trompe pas,
00:13:35 :en tout cas c'est gratuit, je ne suis pas sûr à 100% si c'est open source,mais je crois presque.Et c'est un truc qui est utilisé dans quasiment tous les logiciels de montage,à chaque fois qu'il y a des opérations de conversion,dans VLC, dans des trucs comme ça,
00:13:48 :il y a tout le temps FFmpeg qui est utilisé.Donc c'est super pratique,parce que ça permet de convertir des fichiers audio, des fichiers vidéo,d'extraire des images,de faire même des masques, des fusions,enfin on peut faire énormément de choses avec ça,en ligne de commande, donc sans avoir besoin d'ouvrir un logiciel.
00:14:08 :Parce que c'est souvent ça le problème,c'est qu'on n'a pas envie, soit d'ouvrir un logiciel qui est lourd, qui est long,et puis de toute façon on veut l'automatiser aussi.
00:14:16 :Donc ça permet d'automatiser et d'avoir un truc qui est plus rapide.Donc voilà à quoi ressemble le script,et le truc c'est que je vais vous montrer mon template.
00:14:31 :Donc vous voyez en fait, moi ce que je fais,c'est qu'à chaque fois j'ai un dossier pour chacune des sessions,et j'ai une structure que je copie à chaque fois,avec le fichier de montage, les images,et les fichiers WebM que je mets là-dedans.
00:14:48 :Et à chaque fois je duplique ce script,et l'idée c'est que, si on va voir par exemple le 19 février,donc la dernière session,j'ai par exemple des fichiers WebM que je veux convertir à MP4,et ça c'était le premier script que j'avais,vous voyez c'était juste un script, un.sh,
00:15:06 :donc c'est un script qu'on exécute dans un shell, un bash,avec la ligne de commande FFmpeg,et le problème c'est que ce script à chaque fois,je changeais les chemins à la main,et bien entendu je n'ai pas envie de faire ça.
00:15:17 :Donc j'ai fait un script Python,et l'idée c'est que le script Python,je l'exécute et il aille automatiquement chercher les fichiersqui sont dans le même dossier que lui.
00:15:27 :Donc comme ça j'ai juste à double cliquer dessus,ou à l'exécuter dans un terminal,et automatiquement ça lance le processusqui convertit les WebM en MP4.
00:15:34 :Donc si on retourne voir le script,désolé je fais du switch à la main,parce que si je partage l'écran en entier,la dernière fois que j'ai fait ça,ça a produit un résultat assez moche dans l'enregistrement,et on m'a dit que c'était un problème avec Chrome et les enregistrements,
00:15:51 :donc je switch comme ça à la main à chaque fois.Donc je commence par utiliser PathLib,on peut utiliser le module OS,dans les dernières versions de Python,à partir de la 3.6 si je ne me trompe pas,
00:16:03 :il faut privilégier PathLib,parce que c'est beaucoup plus simple à manipuler,et Subprocess c'est quelque chose qui nous permet de lancer des processuscomme on les lancerait dans un terminal,alors ce n'est pas obligatoirement,on peut aussi ouvrir une application,on pourrait par exemple ouvrir Chrome,ou ouvrir n'importe quel logiciel comme ça,
00:16:24 :en mettant ici le nom du logiciel,ou le chemin vers le logiciel.Et donc qu'est-ce que je fais ici?Là en fait à la fin on retrouve cette fameuse ligne,cette ligne ici,qui était la ligne en ligne de commande,et en fait on fait juste la passer à Subprocess.popen,
00:16:45 :avec une liste et tous les arguments mis bout à bout.Et ce que je fais c'est que donc avec cette variable file,qui est une variable un peu spéciale,que vous avez peut-être déjà vu dans les formations,c'est une variable qui représente le fichier,le chemin complet vers le fichier qui est exécuté,
00:17:01 :donc là dans ce cas-ci c'est ce chemin convert.py,et donc on utilise très souvent cette techniquepour pouvoir récupérer le dossier courant,et donc à terme ce qu'il y a dans le dossier actuel.
00:17:14 :Et là ce que je fais c'est que je crée un objet de type path,pour pouvoir ensuite utiliser l'attribut.parent,qui va me donner le dossier,parce que file ça va me donner le fichier.py,
00:17:25 :donc moi ce que je veux c'est le dossier,pour chercher à l'intérieur du dossier.Donc ça je le mets dans une variable current directory,là j'ai une petite compréhension de liste,parce que je ne sais pas pourquoi,il me trouvait des fichiers cachés, etc.
00:17:39 :Donc ça doit être un truc de macOS ou je ne sais quoi,qui fait que quand j'avais mes fichiers webm,j'avais un fichier.-webm en plus,
00:17:48 :que j'arrivais même pas à avoir dans le finder,ça m'a assez surpris,c'était même pas un fichier caché,c'était je ne sais pas un fichier je ne sais trop quoi,donc ces fichiers là j'avais pas envie de les convertir,donc j'ai dû faire une petite option de filtre comme ça,
00:18:02 :pour vérifier que le premier caractère n'est pas un point,pour virer tous les fichiers spécifiques,les fichiers cachés ou les fichiers qui commençaient par un point.
00:18:14 :Et là si vous vous demandez pourquoi j'utilise dir avec un tiré du bas,c'est parce que dir c'est une fonction de Python,vous voyez si je l'enlève,on voit que là c'est en jaune,donc généralement quand on a un problème comme ça,c'est quelque chose qu'on voit très souvent avec type également,
00:18:30 :puisque type c'est une fonction,donc quand on veut créer par exemple une variable ou un attribut qui s'appelle type,on met juste un tiré du bas en dessous pour bien le distinguer,et ne pas écraser en fait la fonction.
00:18:42 :Donc là c'est ce que je fais pareil avec dir,je mets un tiré du bas derrière.J'aurais pu l'appeler directory ou un autre truc plus explicite,pour ne pas avoir à faire ça.
00:18:52 :Donc là je récupère juste tous les fichiers webmqui sont dans le dossier courant où il y a le script,je boucle dessus, je fais juste un replace ici,pour remplacer l'extension.
00:19:01 :Alors là il y a plein de façons de faire,j'aurais pu récupérer le nom du fichier sans l'extension,et puis juste rajouter à la fin.mp4.
00:19:09 :Là je me suis dit c'est,le seul risque qu'il y aurait là dedans,c'est d'avoir dans le nom du fichier.webmet que ça remplace également ça,mais bon c'est assez peu probable que l'on ait.webm dans le nom du fichier,
00:19:20 :donc je me dis c'est quand même assez sécuritaire de faire comme ça,juste un replace pour changer l'extension.Donc ça me fait du coup le fichier.mp4 output,
00:19:30 :et puis après je fais juste récupérer le fichier input,en webm, je l'écris dans le output,et puis ça c'est juste des trucs ffmpeg en fait,et alors ça c'est pas moi qui sais,c'est vraiment là le coup vous allez sur google,vous tapez ffmpeg convert machin tout truc,
00:19:47 :vous allez avoir des centaines de réponses,et puis après il y a des filtres,il y a plein de trucs complexes que à chaque fois je retiens pas,ça c'est le filtre vidéo avec le codec de compression,ça c'est le filtre audio avec le codec audio,ça je sais plus pourquoi il faut le mettre,
00:20:05 :peut être que je pourrais l'enlever même,et puis ça c'est le bitrate audio,et voilà, et ça c'est pour le input.Donc voilà vous voyez, pas très compliqué,4-5 lignes de code,ça me permet après quand je le lance,ça lance en ligne de commande la conversion,et j'ai mes fichiers mp4 et voilà.
00:20:26 :Ça va? Il y a des questions?Des choses qui sont pas claires?Non non tout va bien.Ça va? Ok.Voilà donc petit script très très simple,mais que normalement avec le,quand vous arrivez sur la partie sur les gestions de fichiers,après il n'y a pas effectivement le subprocess,
00:20:50 :je crois pas le montrer, je me réfléchis,je crois pas le montrer dans beaucoup de formations,mais c'est un module très pratique,qui est un petit peu compliqué à prendre en main,parce que il y a souvent des problèmes de processus,en fait quand vous lancez des processus,il faut, vous pouvez les attendre,
00:21:09 :là je crois que justement la façon dont je le fais actuellement,et ça je ne me souviens jamais,c'est qu'il va lancer les deux processus en même temps,donc en parallèle,et parfois en fait on a besoin,si on met plusieurs subprocess à la suite,on a besoin qu'un processus attende que l'autre continue,
00:21:24 :et si je ne me trompe pas,normalement il faut récupérer le processus,et faire un truc comme wait, c'est ça,pour pas en lancer à la suite,parce que là dans une boucle,le risque c'est que,imaginez que vous ayez 500 fichiers à convertir,si vous ne faites pas ça,
00:21:39 :vous allez lancer 500 processus en même temps,et là votre ordi,à un moment, il va plus être très content.Donc il y a pas mal de petits trucs comme ça,vous avez aussi, si vous mettez shell égale à true,je ne sais jamais exactement ce que ça fait,
00:21:54 :à chaque fois j'oublie,et je vais relire exactement ce que ça fait,ça le lance dans le contexte d'un shell,donc je crois que c'est justement là,on repart dans les trucs de variable d'environnement,si vous ne le mettez pas,je crois que ça ne prend pas les variables d'environnement,
00:22:07 :que vous avez quand vous lancez un terminal,et si vous le mettez,je pense que ça prend ces variables,c'est un truc comme ça,je ne suis pas sûr exactement,mais il y a plein de petites options comme ça,qui sont un peu pénibles des fois,et que si on ne l'utilise pas tous les jours,
00:22:25 :on oublie assez rapidement.Ça va pour ça?Alors, ok, parfait.Donc maintenant on va repartir sur la questionqui avait été posée pendant la semaine par Vincent,qui se demandait comment ne pas faire apparaître en clairle mot de passe de la base de données dans les settings de Django.
00:22:58 :Donc ça c'est une grosse question qui revient assez souvent,qui n'est pas spécifique à Django,c'est en fait dès que vous avez besoin de mettredes informations sensibles quelque part,il vaut mieux généralement y penser assez tôt,surtout si vous utilisez quelque chose comme Git,parce que le risque que vous avez,
00:23:19 :et on n'y pense pas,c'est que Git garde tout en mémoire,et même si par la suite,même si au début vous mettez un mot de passe,une clé d'API ou quelque chose du genre,dans un script et que vous l'enlevez par la suite,si quelqu'un a accès à votre dépôt Git,
00:23:41 :il peut très bien remonter dans l'historiqueet retrouver l'accès à cette variablequi n'est plus cachée à l'instant,aujourd'hui, mais qui...enfin qui est cachée aujourd'hui, mais qui ne l'était plus avant.
00:23:55 :Donc il faut faire très attention à ça,c'est le genre de fichier,en fait ce qu'on va faire c'est qu'on va mettrel'information dans un fichier qui lui ne va pas êtremis dans le dépôt Git,et qu'il faut directement ajouter dans le fichierGit ignore, qui est le fichier qui vous permet de spécifier
00:24:15 :les fichiers à ignorer pour ne pas les ajouter dans Git,et c'est d'ailleurs tous ces genres de fichiers,les fichiers.env,il y a toute une série de fichiers comme ça,avec des nomenclatures assez précises,et quand vous créez un dépôt sur Git,Git hub ou Bitbucket,moi j'utilise tout le temps Git hub,
00:24:39 :peut-être les autres aussi le font,ils vous proposent de créer un fichier Git ignoreavec déjà plein de fichiers du genre,ce qui permet d'éviter ce genre d'erreur,et de se retrouver quand on fait un Git add,et qu'on ajoute tous les fichiers,de faire un premier commit avec ces fichiers d'environnement,
00:24:53 :et puis après une fois qu'il est là,si vous voulez l'enlever,il faut réécrire l'historique,et ça peut devenir assez pénible.Donc voilà, quelque chose à garder en tête,il y a la première question qui revient souvent généralement,là-dessus c'est,oui mais,en fait on a l'impression que ça ne règle pas le problème,
00:25:12 :et c'est un peu la question,je vais repartager mon Chrome,c'était un peu la question à laquelle on répondait ici,c'est en fait on se dit que ça ne change rien,parce qu'on se dit que les mots de passe,ne sont pas dans le dépôt Git,mais ils sont quand même sur mon ordi,
00:25:36 :ou ils sont quand même sur mon serveur,avec mon site web.Ce à quoi on répondait,ce que j'ai répondu, je ne sais plus où,que si quelqu'un a accès à votre serveur,et qu'il peut lire les fichiers de votre site web,le problème que vous avez,ce n'est pas tant qu'il peut voir le mot de passe,
00:25:57 :c'est qu'en premier lieu, il a accès à votre serveur,parce que s'il a accès à votre serveur,ça veut dire qu'il va pouvoir supprimer votre site,accéder à la base des données,faire plein de trucs du genre,donc j'ai envie de dire qu'avoir accès au mot de passe,c'est un peu le dernier,
00:26:12 :enfin ce n'est pas le dernier des soucis,mais vous devez empêcher de base,les gens d'avoir accès à votre serveur.Alors comment on peut régler tout ça après,au niveau du fichier,c'était la réponse de Thierry ici,si vous voulez aller relire ça plus en détail,il y a plein de façons de faire là encore,
00:26:32 :la façon la plus classique,et je vais vous partager un terminal,pour vous montrer tout ça,n'hésitez pas à m'interrompre,si vous avez des questions en cours de route,hop voilà.
00:26:50 :Donc, j'avais fait un petit projet de test,pour vous montrer,donc il y a plusieurs librairies qui existent,qui vous permettent de lire ces variables d'environnement,donc les variables d'environnement sur un OS UNIX,on tape env et ça vous les affiche,que ce soit Mac ou Linux,il me semble que les deux fonctionnent pareil là dessus,
00:27:15 :et vous voyez ici toutes les variables d'environnement qui sont définies,donc il y a des trucs assez classiques,très bas niveau,comme le dossier d'utilisateur,le nom d'utilisateur,le shell que vous utilisez,et vous pouvez afficher ça,si vous faites echo $,et le nom de la variable d'environnement,
00:27:33 :ça va vous retourner la valeur,donc si je fais echo user,si vous voulez savoir par exemple,ça c'est très classique,quel shell est utilisé dans votre terminal,vous faites echo $shell,et ça va vous dire que dans ce cas ci,c'est zshell qui est utilisé.
00:27:45 :On retrouve ici par exemple la fameuse variable d'environnement path,et vous pourriez avoir python path aussi,qui est définie dans les variables d'environnement.Et sur les environnements UNIX,là encore,alors c'est différent sur Windows,sur Windows il faut vraiment passer par les préférences,donc vous avez probablement dû le voir au début de la formation,
00:28:08 :quand je montre le python path,c'est pourquoi on tape python, etc.Donc là il faut vraiment aller dans les préférences du systèmepour avoir accès aux variables d'environnement,et dans les shells bash, zshell,qu'on a généralement sur Mac ou sur Linux,vous avez en fait un fichier qui se trouve dans le dossier utilisateur,
00:28:30 :et qui est.zhrc si vous utilisez zshell,qui est maintenant le défaut sur macOS,ou.bashrc si vous utilisez bash.Et donc normalement ce fichier existe déjà,parce qu'il y a plein de petites variables comme ça qui sont définies pour votre système,et après vous pouvez rajouter des variables là-dedans,et ces variables, après vous allez y avoir accès à chaque fois que vous lancez un shell.
00:28:56 :Et ces variables on y a accès aussi avec python.Et alors c'est là qu'il y a différentes façons d'y accéder,si vous vous rappelez, si je refais env,par exemple il y a cette variable path,et c'est assez courant qu'on ait besoin d'y accéder,si j'ouvre python 3.9,
00:29:12 :voilà, Jean Bernard qui nous a rejoint, salut!Donc si j'ouvre un interpréteur python,je peux utiliser le module os, qui est le module par défaut,donc l'intérêt de ça c'est qu'on n'a pas besoin de l'installer,parce que les autres bibliothèques qu'on va voir il faut les installer en plus,
00:29:33 :donc l'intérêt du module os c'est qu'il est déjà présent,et après on peut faire os.getqnv,et là on peut lui donner une variable à aller chercher,donc par exemple path, et vous voyez que ça nous retourne exactementce qu'on avait dans le terminal ici quand je faisais echo $ et le nom de la variable.
00:29:50 :Le désavantage de ça c'est qu'à chaque fois que ça nous retourne,vous voyez une chaîne de caractère.Donc là dans ce cas-ci, on a une chaîne de caractère,et ce qui sépare les différents paths c'est les deux points,donc là on pourrait tout simplement faire un split sur les deux points
00:30:04 :pour récupérer une liste avec les différents chemins,sachant que sur les environnements Unix,on ne peut pas avoir deux points dans les chemins,et c'est là que vous commencez à voir pointer Windowsqui cause pas mal de problèmes là-dessus,parce que si vous faites un script qui va du coup utiliser le module os
00:30:29 :avec cette façon de faire,et c'est un script qui a besoin de marcher à la fois sur Windows et sur les Unix,donc sur Mac et Linux,sur Windows vous pouvez avoir deux points dans un nom de fichier.
00:30:41 :C'est d'ailleurs une des premières choses qu'il y a,quand vous avez la lettre du lecteur, vous avez ces deux points,slash, et puis après le reste.
00:30:48 :Et c'est pas le cas dans les noms de dossiers de Unix,vous pouvez pas mettre un deux points.Et du coup ça fait que dans Mac OS et Linux,c'est le symbole deux points qui permet de séparer les différents cheminsdans les variables d'environnement,et sur Windows, du coup c'est pas les deux points, c'est un point virgule.
00:31:09 :Donc là vous commencez à avoir déjà deux voies différentesen fonction du système d'exploitation.Et donc voilà, c'est le genre de truc qu'il faut traitersi jamais vous utilisez OS et que vous voulez récupérer des informations,il va falloir vérifier quel système d'exploitation vous utilisezpour ensuite traiter les données différemment en fonction du système d'exploitation.
00:31:30 :Et heureusement, il y a d'autres modules qui existent,et l'intérêt de ces modules, c'est que justement,ils vont nous retourner des objets avec le bon type.
00:31:41 :Donc plutôt que de nous retourner à chaque fois une chaîne de caractère,ils vont nous retourner dans ce cas-ci une liste,mais ça pourrait être aussi un booléen,si on avait une variable d'environnement qui était true ou false,plutôt que de nous retourner la chaîne de caractère true ou false,
00:31:53 :ils nous retourneraient un booléen, etc.Ça va jusque là.Et donc, je vais vous montrer mon Chrome.Donc, on a deux bibliothèques principalement,il y en a une qui est spécifique à Django.
00:32:18 :Après, si je ne me trompe pas,les deux fonctionnent à peu près sur le même mode.Je me demande même si il n'y en a pas une qui est basée sur l'autre,si Django environ n'hérite pas de Python ou de Tenv.
00:32:32 :Mais l'idée, c'est à peu près la même.Donc là, Django, c'est vraiment basé sur un truc qui s'appelle12-Factor Methodology, donc c'est un truc de sécurité,qui explique différents principes, si vous voulez.
00:32:49 :C'est un peu comme le PEP8,si je ne me trompe pas, c'est vraiment pour les webapps, c'est ça.Je ne sais plus si c'est spécifique à Django,ou si c'est plus large,ou si c'est pour les webapps en général.
00:33:01 :Mais voilà, c'est des bonnes pratiques à suivre.Et donc, par exemple, ici, je crois que c'est dans le config,il vous explique qu'il vaut mieux stocker les clés dans un fichier d'environnement,comme on va le voir justement avec ce module.
00:33:20 :Donc ce module, ça permet, vous voyez, dans le fichier de settings,on va avoir, par exemple, pour les bases de données,ou pour les clés secrètes, etc.,
00:33:32 :on n'aura pas le mot de passe à fichier en dur.On va avoir env et la variable qu'on veut récupérer.Donc ça, le fichier de settings, lui, il va être sur Git,dans votre dépôt Git,mais si quelqu'un y a accès, il n'aura pas accès aux mots de passe et tout ça.
00:33:49 :Et c'est le fichier que vous allez lire, qui est le fichier.env,dans ce cas-ci, vous voyez qu'ils vont concatener avec le dossier de base.Donc c'est à l'intérieur d'un fichier.env, qui lui ne sera pas sur Git,
00:34:01 :que vous allez mettre les variables et leurs valeurs.Et après, vous voyez, c'est assez facile, en fait,vous allez récupérer un peu comme avec os.getenv,
00:34:11 :vous utilisez votre environnement, vous dites la clé que vous voulez récupérer, et voilà.L'avantage aussi, c'est que vous pouvez ici, vous voyez, définir des valeurs par défaut,donc si jamais vous avez un fichier d'environnement qui ne contient pas la valeur,parce qu'en fait, ce qu'il faut comprendre, c'est que très souvent, on a plusieurs fichiers,
00:34:26 :on va avoir un fichier d'environnement pour le développement,un fichier d'environnement pour la prod,un fichier d'environnement pour le staging, par exemple,staging, c'est un duplica, si vous voulez, de la prod,qui permet de faire des tests avant de mettre en production.
00:34:43 :Donc, et vous avez aussi parfois des environnementsqui sont spécifiques en fonction des développeurs.Vous pouvez par exemple avoir un développeur qui travaille sur une fonctionnalité préciseet qui va avoir besoin d'utiliser une autre base de donnéesqui n'est pas la même que la vôtre.
00:34:58 :Donc dans ce cas-ci, lui, il aura un fichier avec des variablesqui ne seront pas forcément les mêmes.Et donc vous pouvez, au cas où, voilà, c'était tout un tas de variablesqui seraient importantes avec des valeurs de base.
00:35:09 :Donc dire que par exemple, si le développeur qui travaille sur une fonctionnalité précise,il a oublié de mettre la variable debug dans son fichier,bah de base, elle sera à false.
00:35:18 :Comme ça, voilà, vous pouvez vous assurer que par défaut,il n'y aura pas un serveur de staging ou un truc comme çaqui sera avec un debug à true par défaut,si jamais cette variable n'était pas présente.
00:35:30 :Et après, en fait, donc l'intérêt, comme je disais de ça,c'est que vous voyez, il y a le supporter de types ici.Et vous voyez, il y a tous ces types qui sont supportés.
00:35:40 :Donc ça va même jusqu'à des trucs un peu plus spécifiquescomme des URL de connexion à des bases de données.Donc ça, c'est quand vous voulez vous connecter à un serveur,par exemple Postgres, vous pouvez avoir des URLs comme ça.
00:35:54 :Vous voyez qu'il y a pas mal de choses qui se sont détectées,donc les chaînes de caractère, les booleans, les ints, etc.Comme je le disais, l'intérêt, c'est que si vous avez debug égale à true,ça va directement vous retourner un boolean,et non pas une chaîne de caractère.
00:36:07 :Donc voilà, il y a pas mal de choses comme ça qui sont faitesqui permettent de très rapidement avoir quelque chose d'assez propredans votre environnement.
00:36:14 :Et vous avez la même chose, donc là,qui n'est pas spécifique à Django,qui s'appelle Python.env.Et vous voyez, c'est pour ça que je vous dis,je me demande si il n'y en a pas un qui est basé sur l'autre,parce que eux aussi, vous voyez, ils parlent des 12-factor principles.
00:36:30 :Et c'est quasiment pareil, vous allez loader votre environnement,et après, je ne suis plus sûr comment on va les récupérer.Je pense que c'est avec os, si je ne me trompe pas.
00:36:44 :Il me semble qu'en fait, vous allez ensuite aller lire les variablescomme vous le faisiez avec os.env.Et je ne sais plus si lui, il convertit en type ou pas.
00:37:00 :Il faudrait que je revoie. Je ne sais plus.Variables, il faudrait regarder plus dans le détail,mais voilà, c'est un autre module qui est très connu,qui permet d'aller lire votre fichier d'environnementpour pouvoir les set-up dans le script que vous utilisez.
00:37:21 :Donc voilà, je regarde si je n'ai pas d'autres trucs à dire.Variables d'environnement, Django environ, ouais.Après, c'est aussi l'intérêt de ces librairies,et de faire un fichier, c'est que c'est un peu comme les environnements virtuels,si vous voulez, c'est que vous allez pouvoir faire des fichiers d'environnementqui sont spécifiques à des projets.
00:37:43 :Parce qu'on pourrait très bien faire ce que je vous avais dit dans le terminal,c'est-à-dire mettre directement des variables d'environnementdans les fichiers bash.rc et zsh.rc.
00:37:55 :Le problème de ça, c'est que du coup, c'est au niveau de votre système en général.Et donc, imaginez que vous ayez 4 projets Django sur lesquels vous travaillez,et que vous avez besoin de définir une variable debug,ou une variable pour une base de données,vous ne voulez pas avoir la même variable pour les 4 projets.
00:38:12 :Donc voilà, vous pouvez, si vraiment c'est des choses,les variables d'environnement que vous allez mettre dans zsh.rc ou bash.rc,c'est des variables, par exemple, il y a une variable assez connuequi s'appelle ps1, qui n'est pas la console de jeu,mais qui est une variable qui va changer l'affichage dans votre terminal.
00:38:31 :Pour avoir un truc un peu plus sympathique, vous pouvez changer les couleurs,mettre le nom de la branche git ou des trucs comme ça, par exemple.
00:38:37 :Donc il y a des variables comme ça au niveau systèmequi là, sont applicables partout.Et moi, quand je bossais dans des studios d'effets visuels, par exemple,j'avais des variables comme par exemple ffmpeg.
00:38:54 :Moi, c'est un outil que j'utilise assez souvent,donc j'ai rajouté le chemin qui mène vers l'exécutable de ffmpegdans la variable path, comme ça, je n'ai pas besoin de taper à chaque foisle chemin complet vers ffmpeg, je tape juste le nom de l'exécutableet ça me permet de le lancer.
00:39:10 :Et ça, ça ne varie pas selon les projets,j'en ai besoin de manière générale sur mon ordi.Donc voilà, il faut bien distinguer les deux et comme je disais,sur Windows, là, c'est vraiment le principe presque le même,c'est juste qu'à la place de ces fichiers bashrc et zshrc,
00:39:27 :ça va être fait au niveau des préférences système,donc dans les systèmes preferences, settings, tout ça.Et par contre, vous avez, c'est ça un intérêt aussi, je trouve, d'utiliser,alors je ne sais plus si git bash le fait aussi,mais commander, je suis quasiment sûr, commander, cmder,l'autre émulateur que je montre dans mes formations pour Windows,
00:39:53 :lui justement, il vous permet de créer le même fichier zshrc ou bashrcet d'avoir donc le même mécanisme.Et ça peut paraître fortuit, on peut se dire,bon, c'est pas grave, je vais le setuper dans les paramètres de mon ordinateur,mais pour vous donner un cas de figure concret,
00:40:15 :dans le studio où je bossais, il y avait des gens qui utilisaient Mac,des gens qui utilisaient Linux, des gens qui utilisaient Windows,et j'avais besoin d'avoir des scripts qui fonctionnaient pour les trois systèmes.
00:40:24 :Et ces scripts, ils étaient basés aussi sur des variables d'environnementet il y avait certaines variables qu'on setupait sur tout le système.Et donc le problème, c'est que si vous passez par Windows et les préférences,c'est-à-dire qu'il faut aller sur chaque machine pour changer les préférences,je crois qu'on peut passer par le command prompt, je suis plus sûr,
00:40:46 :mais je crois que c'est pas génial parce que je crois que ça reste juste pour la sessionet que si on démarre l'ordi, c'est pas gardé en mémoire,de sortir un truc comme ça.
00:40:55 :Et c'est là que l'intérêt d'avoir un commander, en fait,quand les gens passaient par commander, ça allait sourcer le même fichier zshqu'on avait sur Mac, sur Linux et du coup sur Windows,qui était un endroit sur le réseau qui était le même pour tout le mondeet donc tout le monde avait exactement le même environnement
00:41:11 :avec les mêmes variables d'environnement, les mêmes chemins, les mêmes applications, etc.Donc c'était assez pratique.Donc voilà pour tout ça, ça fait beaucoup d'informations peut-être,après comme je vous disais, c'est pas des trucs compliqués,c'est juste qu'il y a plein de façons de le faire,c'est des trucs aussi un petit peu délicats parce que justement,
00:41:31 :comme je vous disais au tout début, il suffit de faire une mauvaise manip au débutet d'ajouter le fichier dans le dépôt git ou un truc comme çaet puis après pour revenir en arrière, ça peut être compliqué.
00:41:41 :Donc il faut y aller, des fois on marche sur des œufs et c'est pas compliqué,mais il faut prendre le temps de bien s'assurer de ce qu'on fait.
00:41:51 :Est-ce qu'il y a des questions sur tout ça?Je vous ai endormi tout simplement?Bon, s'il n'y a pas de questions, ça va faire le tour de ce que je voulais vous montrer.
00:42:14 :C'est d'ailleurs effectivement dans le côté environnement virtuel,si vous allez voir, je vais vous repartager mon terminal,si vous allez voir dans le bin, le fameux activate,quand on fait source, activate, pour activer un environnement virtuel.
00:42:41 :Si vous allez voir dans le activate, vous allez voir qu'il y a en faitce mécanisme de variable d'environnement qui est utiliséet on retrouve ce fameux PS1 dont je vous parlais ici.
00:42:55 :Et si vous vous posiez la question pourquoi on peut faire deactivate par exemple,pour désactiver un environnement virtuel, et pourquoi en faisant ça,ça enlève le ENV qui est devant, et pourquoi quand on fait un source, activate,ça rajoute le nom de l'environnement devant,et bien toutes les réponses à ces questions sont là-dedans.
00:43:18 :Et ça passe par ces variables d'environnement.Donc si on regarde un petit peu ce qui se passe ici,on a une fonction deactivate qui comme ça l'indique,ça va reseter les anciennes variables d'environnement,donc ça va prendre tout ce qui était les anciennes variables,ça va les exporter, ça va unsetter, donc enlever les anciennes.
00:43:38 :Ça change le python home qui est l'endroit à partir duquel se trouvevotre installation de Python si je ne me trompe pas.Le PS1, c'est le fameux truc qui va vous permettre de changer l'affichagequ'on a, donc cet affichage ici, qui quand on active l'environnement virtuel,rajoute le slash, entre parenthèses, ENV.
00:44:00 :Et vous avez donc la variable d'environnement qui là est tout simplement créée,et après avec le export, ça permet de la définir en fait.Donc là vous faites juste créer une variable, et avec le export,vous dites maintenant qu'elle est en application, si vous voulez.
00:44:15 :Et là vous voyez la fameuse variable path qui reprend la variablede l'environnement virtuel avec le slash bin, et qui la met avant le path par défaut.
00:44:26 :Donc c'est ça qui fait qu'une fois que vous avez activé votre environnement virtuel,quand vous faites Python, vous rentrez dans le Python de l'environnement virtuel,parce qu'on a rajouté ici, parce qu'on a changé la variable path,et avant toutes les variables d'environnement, parce que les variables d'environnementça marche par celle qui est en premier et prioritaire.
00:44:45 :Donc ça veut dire que si vous avez un Python, un exécutable Python,à l'intérieur de ce dossier, donc le dossier de l'environnement virtuel slash bin,et bien c'est ce Python qui va primer sur un Python.exe,
00:44:57 :ou un Python tout court sur Linux et Mac,qui pourrait être défini dans la variable d'environnement path généraleque vous avez sur votre ordi.Et à la fin on a le fameux anv avec le ps1,et du coup ce fichier, je ne vous conseille pas de le modifier,mais si on fait un vim de activate, et qu'on descend, et qu'on va ici,
00:45:23 :et que on met Patrick, et que je sors, et que je dé-activate,donc là j'enlève le anv, et si je refais un source activate,et bien on a Patrick.
00:45:36 :Vous voyez que là encore il n'y a pas de magie,tout ça c'est juste des lignes de code,et quand on va regarder ce qui se passe là dedans,on comprend et qu'on sait ce que c'est des variables d'environnement,et bon là il y a plein de trucs un peu de langage bash,
00:45:51 :qui est un peu horrible avec des if et des phi, pour fermer les if,mais voilà, il n'y a rien de magique,et tout ça c'est de la manipulation de variables d'environnement.
00:46:00 :Donc vous voyez l'intérêt des variables d'environnement,c'est là dessus que se basent les environnements virtuels,on peut avoir l'impression que c'est un truc super compliqué,et oui en fait c'est juste 2-3 if,qui vont changer, qui vont modifier votre environnement,et c'est très pratique, là encore je reprends des exemples
00:46:17 :que j'avais dans des studios d'effets visuels,où nous on se servait de ça en fait,pour les différents shows sur lesquels on travaillait,donc si vous aviez Game of Thrones, Blade Runner,et je ne sais pas quoi d'autre,les chemins étaient les mêmes à chaque fois,mais en fait on disait je travaille donc work on Game of Thrones,
00:46:43 :et puis là ça changeait toutes les variables d'environnement,pour que quand on lance les logiciels,ça lance les bonnes versions de logiciels pour le projet,et quand on avait un autre show avec d'autres versions de logiciels,ça changeait les variables d'environnement,donc c'était que de la manipulation de variables d'environnement.
00:46:58 :C'est aussi pour ça, je reviens sur la guerre un peu Windows-Linux,mais c'est le genre de truc, c'est changement d'environnement,c'est très pratique, et on en a besoin très souvent en programmation,en développement, et même au-delà,comme je disais sur juste lancer des versions de logiciels,et dès qu'on arrivait sur Windows,
00:47:16 :quand vous n'avez pas cette flexibilité de changer des trucs,ou alors vous l'avez mais il faut passer par du command prompt,et c'est possible aussi, mais c'est moins...
00:47:28 :enfin souvent c'est un peu plus compliqué et chiant,et c'est pas les mêmes langages,donc si vous voulez faire un truc uniforme pour tous les systèmes de sous-rotation,alors encore ça ne marchera pas pareil partout,mais la manipulation d'environnement comme ça,c'est très très courant en production,pour travailler sur différents projets, ou faire des choses du genre.
00:47:46 :Voilà, voilà.Est-ce qu'il y a des questions,ou des questions sur d'autres choses,d'autres choses que vous vouliez voir ce soir?Parce que pour les variables d'environnement, ça fait quand même un bon tour,là je me dis, on pourrait presque faire un tuto complet sur le sujet.
00:48:07 :Sacré Patrick, ouais.Est-ce qu'il y a un environnement spécifique conseillé pour les techs ou admins réseau?Qu'est-ce que tu entends par environnement spécifique?Est-ce que tu entends un shell spécifique,ou un environnement, un système d'exploitation?
00:48:26 :Oui Thibault, ce serait pour voir si,bonsoir Thibault déjà,et ce serait pour voir si ça peut mettre à dispositiondes variables type qu'un tech peut utiliser,genre le nom d'utilisateur d'un PC, ce genre de choses.
00:48:49 :Ouais, ouais ok, je comprends mieux.Donc oui effectivement, il y a pas mal de variables,alors je crois, je sais pas si t'as vu, t'es peut-être arrivé en cours de route je crois,ce que je montrais au tout début, quand tu fais env dans un terminal,t'as généralement plein de variables qui sont déjà définies,
00:49:06 :sans que toi t'aies rien eu à faire,et il y a des variables effectivement, notamment user, home et shell,qui sont des variables très classiques,qui te permettent d'avoir des informations comme par exemple,le nom d'utilisateur, le shell qui est utilisé, ou le dossier d'utilisateur.
00:49:26 :Et le dossier de thème par exemple aussi.Et le PS1, c'est aussi une autre variable,qui elle va comme je disais, changer l'affichage,donc là c'est vraiment le genre de truc où PS1 on se dit,waouh c'est quoi ce charabia, et en fait une fois qu'on décortique un peu,
00:49:45 :c'est pas si compliqué que ça, genre $F si je me souviens bien,c'est des couleurs en fait, donc là ce que c'est dit,c'est que de là jusqu'à ici, tu vas avoir une couleur,donc tu vas avoir en fait le tilde ici,et après VCS info c'est version control system,
00:50:10 :donc ça en fait c'est cité dans un dépôt git,si je reviens par exemple, et que je fais git init ici,tu vois il y a le master, et le master il est entouré de ça, et de ça,et donc ça c'est une autre balise de couleur en fait,
00:50:28 :et donc ça fait juste, c'est un code tout bête,c'est comme le RGB ou le hexadécimal ou des trucs comme ça,et il y a plein de tables, enfin de sites qui répertorient les couleurs,donc voilà si tu veux par exemple changer la branche ici,le PS1 c'est un truc qui est très pratique pour des fois afficher des informations,
00:50:48 :en afficher plus ou moins, parce que je sais que des fois t'as pas envie forcément d'afficher tout le chemin complet,donc si ça t'intéresse, tu tapes PS1 customization sur Google,et puis t'as plein de gens qui s'amusent à faire plein de trucs assez marrants, et pratiques.
00:51:03 :Donc voilà, il y a plein de variables comme ça, il y en a qui sont très utilitaires je te dirais,comme le shell, home user etc, et il y en a qui vont vraiment modifier les trucs,comme le PS1 où là tu vois clairement ça change un affichage, donc il y a un peu des deux.
00:51:19 :Et j'ai pas de liste exhaustive, mais pareil là tu tapes sur Google,tu vas chercher system environment variable ou des trucs comme ça,je vais essayer de te trouver un bon lien pour ça.
00:51:35 :La variable path effectivement,variable echo path, qui est la variable qui te permet,c'est celle que je montre du coup sur Windows aussi au début des formations,c'est en fait la variable qui va permettre d'exécuter des logicielssans avoir besoin de rentrer le nom complet.
00:52:09 :Donc par exemple si on va voir l'application, celui-là,pourquoi est-ce que je peux faire postgres comme ça,et j'ai plein de trucs postgres et que ça va lancer un postgres,parce que si on va voir dans ce dossier qui est donc dans la variable environnement path,si je fais un ls ici, ça veut dire que j'ai tous les exécutables ici,
00:52:29 :alors je suis pas sûr que ce soit tous les exécutables,je sais plus, est-ce que c'est le x qui dit que c'est un exécutable, je sais plus.
00:52:38 :Donc tu vois on retrouve le postgres ici,et donc ça veut dire que tout ce qui est ici, pgdump par exemple,pgdump qui permet de dumper les informations d'une database,donc tu vois là je tape pg- et là j'ai tous ces trucs-là qui sont automatiquement accessibles,même si je suis dans un autre dossier,
00:52:57 :donc si je reviens dans le dossier ici, je fais pgdump et tu vois je peux y avoir accès.Donc ça c'est vraiment parce que le chemin est à l'intérieur ici,et si j'enlève ce chemin ici, si je l'enlève de la variable environnement path,je pourrais plus faire pgdump comme ça,
00:53:16 :il va falloir que je mette le chemin complet, donc slash application postgres machin truc.Donc ça c'est une variable qui souvent est modifiée en fait quand t'installes un logiciel,le processus d'installation du logiciel va aller modifier cette variablepour rajouter son dossier bin dans cette variable d'environnementpour qu'après tu puisses lancer ces trucs en ligne de commande.
00:53:37 :C'est ça qui fait que tu vois là j'ai tous les trucs de Python,donc library, frameworks 3.10, 3.9, 3.8, 3.6,donc c'est ça qui fait que quand je tape Python ici, j'ai Python 3.10, 3.6, 3.8, 3.9,
00:53:53 :parce que tous les dossiers bin de toutes ces versions ont été ajoutésquand j'ai installé ces versions de Python dans cette variable environnement path.Donc voilà, pas de secret là encore, y'a pas de magie.
00:54:06 :Ok merci, par contre je voulais voir en fait si ça pouvait mettre des variables supplémentaires à disposition.Je vois par exemple quand on est sur un réseau d'entreprise,y'a les groupes, les lecteurs, les choses comme ça,soit s'il y a des choses déjà à disposition ou bien est-ce qu'on peut en créer par exemple?
00:54:33 :On va insérer dans un environnement personnalisé quoi.Ouais, tu peux créer tout ce que tu veux,parce que des variables d'environnement c'est vraiment comme un dictionnaire,c'est vraiment comme un dictionnaire Python, t'as une clé, une valeur,donc tu peux créer tout ce que tu veux, tu peux créer une variable groupe égale à une liste de groupe,
00:54:51 :tu peux faire vraiment tout ce que tu veux.Et après y'a probablement des conventions sur certaines choses,donc justement des noms de variables qui vont être utilisés par certaines applications,ou certains trucs sur Windows ou sur Mac etc.
00:55:09 :Et après toi tu peux décider, nous c'est ce qu'on avait fait là encore dans les boulots où j'étais,où des fois on avait besoin, j'ai pas d'exemple en tête là mais je sais que ça nous est déjà arrivé,d'avoir justement une configuration générale pour tout le monde,et de pouvoir aussi la modifier au cas par cas,
00:55:31 :donc de pouvoir dire par exemple sur des lecteurs.Par exemple en fait t'avais tout le monde qui travaillait sur un certain lecteur,donc on avait slash volume slash le lecteur, le disque principal,et ça on le mettait dans une variable d'environnement qui était, je sais plus quoi,mais c'était un truc genre dire ou directory, un truc comme ça.
00:55:55 :Et cette variable d'environnement a été utilisée dans plein de scripts et plein de trucs comme çapour savoir où aller chercher les fichiers.Et il y avait certaines personnes comme le gars des IT qui lui faisaient souvent des backups,qui lui avaient besoin de des fois aller chercher des anciennes versions,
00:56:13 :quand on lui disait est-ce qu'on peut désarchiver un truc ou aller voir un vieux projet,bah lui il avait besoin de changer cette variable pour changer le chemin du lecteur,pour le pointer vers un lecteur de backup.
00:56:25 :Donc ça voilà c'était un truc sur lequel on s'est accordé,on s'est dit voilà on a une variable d'environnement,et c'est cette variable qui après a été utilisée dans plein plein plein d'endroitspour savoir quel lecteur utiliser.
00:56:36 :Ok, donc oui, moi je pense que c'est ça ce que j'avais pas vu au début,et du coup j'avais pas tout à fait saisi que la partie enve de Python,elle était 100% liée avec l'environnement de Windows.
00:56:51 :C'est un environnement, comme on parle souvent d'environnement virtuel,je pensais que c'était un environnement qui était propre à l'instance de Python.Bah c'est en fait, en fait c'est que, ce qu'il faut comprendre c'est que justement,et c'est là la puissance du terminal, c'est que, en fait, je comprends,et alors ça c'est très intéressant parce qu'effectivement,
00:57:14 :je me rappelle ça a été une de mes premières révélations en fait,quand j'ai commencé à travailler avec Linux et dans les effets visuels,c'est que, en fait, quand tu connais pas tout ça, t'as ton ordi,tu sais pas ce que c'est des variables d'environnement,donc tu lances un logiciel et t'as aucune, enfin tout est figé quoi.
00:57:33 :Comme je disais, si t'as 4 versions de logiciel,bah tu vas lancer la version 2017, 2019 ou 2020,et c'est toi qui vas faire l'action de dire bah je lance tel ou tel logiciel.
00:57:43 :Et quand t'arrives en fait dans un environnement Linux,avec ce côté variable d'environnement, tu peux ouvrir un terminalqui va avoir un environnement par défaut,donc avec les fameux fichiers dont je parlais,bah.hrc ou https.hrc, ce genre de fichiers,
00:57:57 :mais après tu peux rajouter ou modifier l'environnement,et cet environnement il va être propre au terminal que tu utilises.Donc, je vais repartager mon écran avec le terminal,est-ce que vous voyez les deux tables?
00:58:15 :Ah non, merde, vous voyez qu'une des... ça affiche pas l'autre.Ah, bon, je vais... ok.En fait, donc voilà, là j'ai un environnement, je vais le désactiver.
00:58:29 :Donc tu vois, en fait là c'est ça, je pourrais faire une variableexport test égal à...bonjour, et là si je fais écho test, j'ai bonjour, ok?
00:58:46 :Donc là j'ai juste créé une variable d'environnement testqui est égale à bonjour, donc comme je te dis, c'est vraiment comme les dictionnaires.Et cette variable, si j'ouvre un autre terminal,donc je vais ouvrir un autre terminal, et désolé je vais faire le switch du coup,donc j'ouvre un autre terminal, celui-ci, voilà,
00:59:09 :et là je vais faire écho $test, et là j'ai pas bonjour,parce que c'est un autre terminal qui n'a pas conscience de l'environnement qui est dans l'autre terminal.
00:59:19 :Donc exemple très simple, mais tu vois que tu peux donc créer des variables d'environnement,et tu peux écraser des variables d'environnement aussi,et c'est un peu ce qu'on voyait, je sais pas si t'étais là quand je parlais des librairies Django Environ ou Python.env,
00:59:36 :et là après tu vas pouvoir avoir à la fois un environnement virtuel effectivement,si t'as 4 projets Django tu vas avoir 4 environnements virtuels différents par exemple,et tu vas pouvoir aussi avoir 4 fichiers d'environnement différentsqui vont définir des variables d'environnement différents pour chaque projet.
00:59:54 :Et là encore il faut bien comprendre que à chaque fois t'auras des variables d'environnement système,comme la variable user, shell, et toutes ces grandes variables qu'on a vu qui sont définies dans les fichiers,Rc etc, et après toi tu peux aller utiliser ou écraser ou créer d'autres nouvelles variables d'environnement
01:00:12 :qui seront des variables d'environnement, c'est là où effectivement c'est un petit peu peut-être compliqué,c'est qu'on les fait en Python, on les définit en Python, avec quand on fait os.getenv
01:00:22 :ou que l'on va créer une variable d'environnement avec le module os ou d'autres modules,on le fait en Python, mais c'est des variables d'environnement qui sont sur ce même principe,c'est des variables d'environnement comme celle qu'on a vu, et ce qu'il faut bien comprendre par contrec'est que bien souvent ça va être des variables d'environnement qui n'existent que dans l'espace de votre script.
01:00:45 :Si vous voulez avec Python créer une variable d'environnement qui va persister,bien souvent il faut aller modifier le fichier bachrc, donc il faudrait aller ouvrir le fichier en Python,récupérer la variable path et la modifier. Donc voilà, il n'y a qu'un seul environnement,
01:01:05 :enfin il y a un environnement que vous pouvez modifier qui va être différent par shell,et vous pouvez le modifier en shell, vous pouvez le modifier avec Python.
01:01:12 :C'est ça qui est un peu difficile des fois à saisir aussi, comme ce que je vous ai montré au tout début,donc là je crois que c'était pas là Jean-Bernard, c'était cette idée qu'avec le subprocess par exemple,on peut avec Python lancer des processus comme on les lancerait dans un shell.
01:01:29 :Donc là on a un peu cette limite qui devient floue parce qu'on peut utiliser Python pour faire du shell en gros,ce qui est bien pratique, mais ce qui est un peu confus peut-être au début.
01:01:43 :C'est bon, c'est clair pour moi. Merci.Après ça c'est des sujets, ça reste souvent des trucs, je me demande toujours à quel point c'est essentiel en fait,dans le sens où si je pense à mon expérience, moi comme je le disais je suis arrivé sur le marché du travail,
01:02:07 :donc c'était pas à 100% du développement, c'était les effets visuels où je faisais du développement et tout,mais moi je n'avais jamais utilisé vraiment de Linux, et ça ne m'a pas empêché d'être embauché en tant que dev.
01:02:18 :Et il y a beaucoup de choses très clairement qu'on apprend sur le tas,il y a tellement de choses dans tous les sens, des petites variables, des machins,des façons justement d'utiliser ce genre d'environnement que vous ne trouverez pas dans des tutos,ou des trucs qui sont très spécifiques, ou spécifiques à une industrie, à une entreprise.
01:02:36 :Donc il y a énormément de choses que vous allez apprendre sur le tas,après le principe de base quand même c'est bien de savoir de quoi il en retourne.
01:02:46 :Et après si vous ne connaissez pas tous les mini détails, toutes les façons de manipuler ça,ce n'est pas non plus super grave.Est-ce qu'il y a eu d'autres questions?
Aucune occurrence trouvée pour « ».