Déploiement Django Docker et astuces Python
Session du 29 juin 2023 à 20h00
Pratique & Live Coding
Bases du Langage
Algorithmique & Performance
DevOps & Environnement
Deviens membre Premium
Cette session de mentorat est réservée aux membres Premium. Rejoignez-nous pour accéder à toutes les rediffusions des sessions de mentorat !
Premium
- +100h de formations
- +180 exercices de code
- +100h de mentorats en rediffusion
- 20 projets
- Mentorats groupés hebdomadaires
- Support individuel avec nos mentors
Déploiement Django Docker et astuces Python
Dans cette session de mentorat, Pierre-André discute avec les étudiants de divers sujets :
-
Déploiement d'une application avec Docker sur Proxmox.
-
Comment déployer des services Docker avec Portainer.
-
Résolution d'exercices d'algorithmie avec Python.
-
Comment utiliser le modulo pour vérifier les multiples d'un nombre.
00:00:00 :Bonsoir Amédineur, ça y est t'es installé?Ah il y a du Nord aussi?Non je crois qu'il a déménagé il n'y a pas longtemps.Moi c'est pas vraiment le Nord, c'est l'Ouest.
00:00:24 :Je m'appelle Ouest, c'est dans le centre, pas loin de Rouen.Tu vas aller au Stade Bollard j'espère?J'ai pas compris?Stade Bollard c'est le stade du Hercélence.
00:00:54 :Ah il y a fait du sport là-bas, il n'y a pas longtemps.Au Stade Bollard?Bah c'est un grand stade où on fait faire le tour, c'est une espèce de pitfall courir normalement.
00:01:05 :Stade Bollard non? C'est un stade de foot?Ouais alors je sais pas, je sais pas ce que c'est que la chalére.Salut Moïse.Salut.Salut.
00:01:24 :7 PA du coup, normalement ce soir j'attaque la mise en proie du projet la plus baisse.Ouh ouh ouh ouh.Mais normalement Thibault a dit que si ça marchait en local il n'y aurait pas d'autres problèmes en production.
00:01:54 :Ça c'est ce qu'on aime croire, moi à chaque fois que j'ai mis en production ça a pas marché du premier coup.Genre quoi par exemple? C'est quoi les styles de trucs qui vont?
00:02:06 :Ça peut être des problèmes de sécurité que t'as pas, bah typiquement avec Django, j'imagine que tu l'as déjà réglé,mais tout ce qui est gestion des fichiers statiques, parce qu'en fait quand tu utilises Django en local,t'utilises le run server qui est un serveur de développement qui gère les fichiers statiques,
00:02:30 :donc en fait il va servir les fichiers statiques alors que quand tu fais déploiement en production t'utilises JUnicorn ou autre,mais en gros ça c'est des WSGI qui gèrent pas les fichiers statiques, et du coup tu dois mettre en place soit du Nginx,ou dans ton cas je pense avec Python Anywhere t'as utilisé WhiteNose.
00:02:54 :Python Anywhere je sais pas c'est qui a fait pour moi le...Ouais mais WhiteNose t'as dû l'installer parce que de base il est pas dans Django, t'es obligé de le rajouter dans les middleware.
00:03:05 :Ça me dit rien, peut-être la première fois que j'ai fait ça, j'ai les affaires, j'ai tendance à configurer WSGI, collecte statiques,mais ça me dit rien.
00:03:16 :Après pourtant t'as du CSS et tout ça dans ton truc non?Oui, et ça tu le... comment dire, un encart ou je sais plus comment on dit, bref, où tu dois dire où sont tes fichiers statiques je crois.
00:03:48 :Donc normalement il y a un moment où t'as rajouté WhiteNose quelque part dans tes settings en fait.Attends je vais te montrer.Si on pousse Stripe faut que je mette un webhook, je modifie l'adresse.
00:04:08 :En fait, attends si je viens d'ouvrir un...Ok, si tu vas voir dans les settings, en fait...Salut tout le monde!Salut!Tu vois ici là, le WhiteNose middleware, ça t'es obligé de le rajouter, si tu le rajoutes pas en production il va pas servir tes fichiers statiques.
00:05:00 :Ton blog là tu sais, ah vous voyez pas bien, ton blog que tu as déjà mis, tu l'as mis en prod sur Python Anywhere?Oui oui.
00:05:09 :Bah va voir dans ton middleware là, pour moi t'as un WhiteNose quelque part.Et bah j'y vais tout de suite.Tiens nous au courant.Et qu'est-ce que tu peux avoir d'autre comme problème quand tu passes de local à production? Bah tout ce qui est CSRF token, si tu utilises un nom de domaine,
00:05:33 :parce que là tu vas utiliser le nom de domaine de Python Anywhere ou t'as un nom de domaine personnalisé?Je vais prendre un... non bah je vais peut-être commencer avec Python Anywhere et après le mec il va acheter le sien.
00:05:48 :Ah ok, parce que du coup quand tu vas devoir lier ça, mais ça tu l'avais fait avec ton propre blog non?Ouais, j'avais pas eu t'enregarder tout ça en fait.
00:05:59 :Ah ouais parce que, est-ce que tu fais des posts? Bah oui pourtant tu fais des méthodes post.Donc en fait si t'as des formulaires, peut-être que ça va foirer au niveau du CSRS token origin si il faudra rajouter les trusts, les origines des CSRS token si tu passes par un nom de domaine.
00:06:21 :Donc en fait t'as ce genre de trucs qui foirent, mais bon c'est vrai que Django il est bien fait, en gros le serveur de développement il simule un peu un serveur de production,normalement si tout se passe bien en développement, en termes de structure oui ça va aller, mais tu vois sur Python Anywhere par exemple c'est un peu chiant,
00:06:46 :donc il faut bien lui définir où est-ce que c'est et tout ça, c'est un peu relou.Et c'est pour ça que Docker est arrivé en fait, parce que ça facilite grandement toutes ces problématiques de mise en production, parce qu'en fait Docker ça te crée un environnement sur ton PC en local,
00:07:06 :et ça va être exactement cet environnement là que tu vas déployer sur ton serveur de production, donc c'est pour ça que moi j'utilise beaucoup Docker,parce que je sais qu'il n'y aura pas de galère quoi, si ça marche sur mon local ça va marcher sur le serveur.
00:07:20 :Ok, et puis pour info dans le middleware j'ai pas mis WhiteNose.Euh... ok, et t'as jamais eu de problème de fichier c'est à dire?Non j'ai suivi pas à pas, Thibaut il a fait une petite formation Python Anywhere, j'ai suivi pas à pas et du coup j'ai pas eu ça à faire et j'ai pas de problème.
00:07:45 :Ok bah alors tu dis une connerie, peut-être que c'est dans Python Anywhere qu'il le gère automatiquement avec euh...ou peut-être avec la nouvelle version Django je sais pas, mais moi je sais qu'au début quand je déployais sur Python Anywhere,maintenant je le fais plus parce que j'utilise Docker mais j'avais un problème avec ça.
00:08:01 :Bon bah tant mieux.Peut-être que le fait de lui spécifier où sont les fichiers statiques ça permet de résoudre le problème.Ouais c'est tout ça, c'est ce que je voulais dire.
00:08:16 :Euh... du coup je sais pas si vous avez vu le programme que j'ai posté,est-ce que vous avez des questions sur le programme, est-ce que ça vous intéresse?
00:08:30 :Bon je vais couper ma caméra.Euh du coup pour ceux qui ont pas vu le programme...Où est-ce que... ouais on est là.Euh...Ouais donc du coup j'ai discuté en off avec vous savez qui qui a quelques questions.
00:09:14 :Bon je dis ça pour rire, c'est super Gabriel que t'aies des questions ça peut nourrir les mentorats et puis ça fait des discussions.Donc on verra et puis on en a parlé avant donc je sais à peu près quelles questions Gabriel a posées.
00:09:26 :Après si ça vous intéresse, après si ça vous intéresse pas y'a pas de soucis je le fais pas.Je mets un petit tour des services que j'utilise, les OS que j'utilise perso et les services Docker que j'utilise.
00:09:42 :Et peut-être qu'on ferait peut-être un... on déploierait ensemble un service Docker sur le service que j'utilisepeut-être pour faire une démo si ça vous intéresse.
00:09:51 :Et après quelques exercices d'algo avec Python sur le projet Euler.En fait le projet Euler c'est un projet éducatif dans lequel y'a des exercices, donc vous verrez y'en a plein.
00:10:04 :C'est un peu des exercices plutôt orientés mathématiques.Normalement ça peut être résolu avec des langages de programmation mais ça peut être résolu sur le papier avec des maths.
00:10:18 :Donc nous en fait on va... je vais vous montrer deux exemples d'exercices.Bon déjà premièrement parce que je suis pas capable d'en faire beaucoup plus, vous allez voir la difficulté elle est quand même assez élevée.
00:10:32 :Après on pourrait le faire mais bon faut passer un peu de temps, faut se creuser la tête etc.Et en fait nous on va grâce à Python on va bourriner en fait l'exercice.
00:10:41 :On va pas y aller finement comme le ferait un pur mathématicien avec des optimisations etc.Mais du coup je vais vous montrer en quoi c'est bien d'avoir Python sous la main parce qu'on peut bourriner des exercices.
00:10:53 :Vous savez un peu comme si par exemple on veut craquer un mot de passe,il y a les méthodes bruit de force où en fait comme un bourrin vous allez tester toutes les solutions imaginables.
00:11:05 :Alors qu'on pourrait un peu faire du... y aller plus finement, je sais pas, aller faire des recherches sur les réseaux sociaux etc.Donc c'est un peu la différence du bruit de force et de bourriner un exercice.
00:11:17 :C'est soit je l'approche comme un bourrin parce que j'ai la puissance de calcul pour le faireou sinon si j'ai pas mon ordi et que j'ai que un stylo en papier je le fais plus finement.
00:11:28 :Et puis du coup peut-être que ça nous permettra aussi de voir, dites moi dans le chat si vous avez déjà utilisé les fonctions récursives.C'est un peu perturbant au début mais c'est pas si sorcier que ça.
00:11:48 :Donc voilà si ça vous va on va commencer là-dessus.Donc ouais, une fonction récursive en fait c'est une fonction qui s'appelle elle-même.En fait dans le retourne vous avez un appel à la propre fonction, c'est une fonction récursive.
00:12:04 :Et même la récursivité c'est un concept où il y a un appel à sa propre fonction,mais c'est pas propre à Python en mathématiques la récursivité ça existe.
00:12:24 :Alors, merde où est-ce que je suis là?Ben vas-y Gabriel je crois que t'avais quelques questions.Ouais, ouais, je me souviens j'en ai eu aussi un, il y en a pas eu une tonne.
00:13:04 :Hier je me suis touché au code source de SQL Editor, pour modifier carrément SQL Editor.Et du coup quand tu mets en production c'est pareil tu vas installer avec ton requirements.txt
00:13:17 :mais du coup faut que tu retouches encore une fois les fichiers du code source en fait,parce qu'ils sont pas dans ton git les fichiers du code source.
00:13:27 :Si parce qu'en fait quand tu fais, attends est-ce que j'ai un truc d'ouvert,tu vois quand tu vas dans l'environnement virtuel de ton,mais du coup faudrait que tu, parce qu'en fait normalement quand tu fais un git le venv, l'environnement virtuel tu vas le mettre dans le git ignore.
00:13:47 :Ouais c'est ça ce que j'ai fait.Donc en fait ce qu'il faudrait que tu fasses si t'as un SQL Editor un petit peu custom,il faudra que soit tu, au lieu de mettre dans ton git ignore, de mettre le venv,ben faudra, non ça va être galère de faire ça, faudra plutôt que tu mettes un dossier à part de SQL Editor
00:14:06 :et que tu changes la source, parce qu'en fait ce dont il va servir au SQL Editor,tu vas voir c'est un peu comme Django, attends je vais en ouvrir un.
00:14:17 :Donc dans Django en fait, ah mais le truc c'est que j'arrive pas à zoomer ce truc là,je vais voir si je peux pas l'ouvrir avec VS Code.
00:14:49 :Ah je l'ai plus, j'ai même pas installé.Parce que du coup je sais pas si vous allez bien voir là dessus, en fait quand tu installes Django,donc dans ton venv, dans les librairies, dans le site packages, tu vas dans Django, il est où?
00:15:07 :Bon bref, en fait quand tu vas dans ton venv, tu sais tout ce qui est le CSS de l'interface admin,etc. il se trouve dans le venv.
00:15:21 :Et après quand tu fais un collecte statique, tu remarques qu'il te colle en fait tous les,ah oui mais je suis con, je pensais que c'était pas là dedans.
00:15:29 :Donc si je retourne dans le venv ici, dans les lib, Django, où est-ce qu'il était après?Je sais plus exactement où est-ce qu'il est mais...
00:15:53 :Tu l'as déjà vu toi le CSS dans le Django, dans ton environnement virtuel?Attends là c'est dans admin, ouais c'est dans statique.Tu vois ici, vous voyez pas très bien parce que j'arrive pas à zoomer sur l'explorateur,mais en gros quand tu fais un collecte statique, en fait il va venir te chercher,
00:16:29 :je sais pas si t'as déjà remarqué mais dans ton static files, tu vois la destination,tu vois ici si t'as un static files qui est la destination du collecte statique,il va venir te copier tout ce qui est CSS, images, JS.
00:16:45 :Donc en fait si t'as fait une update par exemple dans le CSS du CK Editor ou dans le JS ou j'en sais rien,bah moi par exemple je te conseillerais oui de le mettre directement dans le static files,comme ça quand tu vas faire un git pull etc, il va venir mettre à jour les trucs qui sont dans le static files,
00:17:04 :parce que le static files il reste dans le suivi de git.Ok d'accord, et le collecte statique tu le fais avant la mise en prod non?
00:17:14 :Ouais je le fais tout le temps, au moment de la mise en prod ouais.Ok et sinon quand tu modifies un fichier avec Zim après tu dois être en production?
00:17:25 :Ouais ça dépend de ton serveur.Ok moi je regarderai t'inquiète.Non non mais c'est intéressant pour tout le monde, en fait tu vois si je me connecte par exemple sur un de mes serveurs,en fait tu vois là je suis sur un de mes serveurs, en fait le...
00:17:49 :J'ai même pas besoin en fait d'aller là dessus.Tu vois t'as pas besoin d'utiliser Vim en fait, tu peux utiliser Nano,Nano c'est un éditeur de texte qui est souvent sur les serveurs, donc par exemple sur Python Anywhere il existe,et en fait si t'as pas envie de te faire chier avec Vim c'est quand même beaucoup plus convivial,
00:18:18 :toi tu peux faire du... t'as juste à écrire en fait, hello Gab je suis sur Nano,et en fait si tu veux enregistrer tu fais juste CTRL O, tu dis le nom de ton fichier,donc test.txt et tu fais, donc là t'as CTRL O et CTRL X,
00:18:37 :donc maintenant tu vois si je vais voir test.txt je peux aller retourner voir...Donc Nano c'est un éditeur de texte, il m'a rien enregistré...Voilà, tu vois Nano c'est un éditeur de texte en ligne de commande,après oui t'en as d'autres, t'as Vim, t'as Imax, et t'as même des combinaisons Imax-Vim,
00:19:06 :c'est Doom Imax, je peux montrer ça, je sais pas peut-être que vous m'avez déjà vu l'utiliser,en fait c'est...Enorme, Doom.Ouais, Imax c'est un éditeur de texte en ligne de commande,qui a été développé par, je crois que c'est Stalman, celui qui a développé la communauté GNU,donc en gros un peu pareil que Linus Torvald, mais lui il a développé toutes les distributions etc.
00:19:50 :Et en fait Imax, donc c'est son...Il y a une guéguerre entre les éditeurs de texte Imax et Vim,et en fait Doom Imax c'est le meilleur des deux mondes, c'est ce que les gens disent,et du coup c'est toutes les commandes etc. les fonctions qu'on peut avoir avec Imax,
00:20:07 :mais avec tout ce qui est raccourci clavier de Vim.Donc là par exemple si je fais CTRL-X, CTRL-F, je peux directement aller dans mon navigateur,je vais zoomer,là je suis dans mon navigateur, mais en ligne de commande,donc là par exemple si je vais dans...
00:20:36 :Docstring, je vais voir dans les mentorats que j'avais déjà fait,tu vois tu peux aller ouvrir un fichier, et si je fais CTRL-X, CTRL-F,donc là je suis dans un fichier et que je veux créer un fichier test.org,
00:20:49 :je peux, tu vois là je suis dans un nouveau... et en fait ça c'est un Vim,c'est quelque chose que tu peux avoir en Imax, pardon, en navigateur de commande,c'est à dire que sur un serveur tu peux avoir un éditeur de texte qui est un petit peu plus sexy
00:21:03 :que Nano ou autre chose parce que tu peux taper des choses,tu vois si par exemple je disais je veux créer un fichier Python,je peux dire test.py, et donc là tu vois il comprend que je suis sur un fichier Python,
00:21:18 :et il va me mettre la coloration syntaxique par exemple.Et c'est pas mal parce que je suis dans un terminal ou un navigateur de commandeet j'ai la colorisation syntaxique de Python.
00:21:31 :Donc voilà, t'es pas obligé d'utiliser Vim, tu peux, mais...tu peux, voilà, t'as d'autres moyens.Mais sache que sur tout ce qui est serveur et tout ça, sur Python Anywhere,Nano il existe, Vim, Imax et tout ça, normalement ça existe,ou si ça existe pas tu peux les installer.
00:21:52 :Ok, merci.Ouais, pas de souci.Ok, t'avais une autre question?Je peux juste faire une commande git, le git pull.J'avais déjà posé il y a un moment, mais j'avais un doute sur le git pull.
00:22:19 :Le git pull, quand tu sais que tu es sur Python Anywhere, tu déploies un git pull,avec le git, et quand tu mets un genre de code, tu fais un git pull.
00:22:27 :Est-ce que ça peut apporter des problèmes, je sais pas, d'écraser des médias?Bah si, en fait, le truc c'est que ça dépend de ce que tu mets dans ton git ignore.
00:22:40 :Donc tu vois...En fait ici, dans le git ignore,t'as pas tout ce qui va être static files, médias, etc,tout ce que tu vas faire en local, ils vont venir se foutre dans la production.
00:23:12 :Et pareil pour tout ce qui est migration, etc.C'est pour ça que des fois tu te rends compte que quand t'es en production,et que tu fais make migrations,bah des fois il fait rien, parce qu'en fait tu les as déjà fait dans ton local,et du coup il les récupère.
00:23:27 :Donc sois pas surpris que quand tu fais un make migration,même si t'as fait des modifications, il se passe rien.Par contre quand tu feras un migrate,là tu vas avoir tes modifications dans la base de données.
00:23:37 :Mais par contre, quand tu fais un git pull,de toute façon il va te prévenir, mais oui tu vas...Si tu as pas mis dans ton git ignore, il va aller écraser ce qui se passe sur le serveur de production.
00:23:51 :Mais en fait normalement il y a pas de soucis, parce qu'il va te direj'ai une incompatibilité entre le local et le serveur de production.
00:23:58 :Il va comparer, il va dire que c'est pas pareil.Du coup il va te dire qu'est-ce que je fais avec les différences, est-ce que je les merge,est-ce que je regarde un machin, il va te demander,il va jamais écraser s'il voit qu'il y a deux trucs différents par contre.
00:24:11 :Je sais pas si tu vois ce que je veux dire.Donc toi tu dis que tu vas faire un merge du coup, c'est ça?Bah ça dépend...
00:24:17 :Pour pas écraser?Bah si, en fait c'est seulement s'il voit des différences.Si par exemple il voit file 1 dans ton local,et que sur le prod il y a file 2 dans le média,et que tu fais un git pull sur le prod,il va dire attention j'ai un file 2 dans le média
00:24:33 :qui existe pas dans ce que tu me demandes de faire un pull,et du coup là il va te demander de gérer les différences.Ok, ouais c'est ça qui m'inquiète un peu.
00:24:44 :Mais il y a pas de...De toute façon c'est pas grave, les médias,ce qui est sûr c'est qu'il va pas les effacer.Il va pas effacer les médias qui sont sur le serveur de production,il va juste rajouter peut-être ceux que t'avais sur ton local.
00:25:00 :Ah ok, non d'accord, vous avez peur qu'il efface en fait?Non en fait il fait pas...Il va aller voir chaque fichier, en fait il va...
00:25:10 :Quand t'as un dossier il fait pas...Il prend pas le dossier, il remplace par celui,il va regarder dans toute l'arborescence.Ok d'accord, très merci.
00:25:22 :Non non, ça dépend.Et...Ouais, je regarde dans les questions qu'ils m'avaient envoyées,mais je crois que c'était tout.Ouais, ça je me démerderais pour la pagination au pire.
00:25:35 :La pagination, ouais je m'en étais servi une fois pour...Avec l'API REST Framework.Mais normalement en fait c'est pas trop compliqué,il faut juste rajouter, c'est dans les settings il me semble.
00:25:46 :Je sais pour l'admin,c'est pas fait encore pour les modèles, pour les différents courriers site en fait.Ok, mais en fait normalement tu vas dans...
00:25:54 :Où est-ce que c'est?Dans settings, là tu rajoutes...Tu vois ici par exemple,quand t'as des choses à rajouter sur l'API REST Framework,tu rajoutes ici un espèce de dictionnaireoù tu dis REST Framework et machin,et tu peux dire quel backend t'utilises pour faire la paginationet combien d'entrées tu veux par page ou des choses comme ça.
00:26:14 :Ouais, ok.En plus y'a la doc qui est pas mal faite là-dessus je crois.Moi je te dis, je l'avais déjà fait pour les API REST Framework,mais pour Django classique j'ai jamais fait...
00:26:25 :Mais y'a aucun souci, c'est pareil quoi.Ok, merci.Pas de souci.Ok, bah les autres, est-ce que vous avez des questionsqu'on traite en priorité?
00:26:55 :Non? Ok.Du coup, ce que je vous propose,parce que peut-être qu'un jour vous serez amené à utiliser,ou même, je sais pas, ça peut donner des idées à certains.
00:27:10 :Est-ce que vous connaissez Proxmox?Non.En fait Proxmox, c'est ce qu'on appelle un hyperviseur de type 1.C'est un...Comment expliquer?En fait, vous connaissez peut-être les machines virtuellesavec VirtualBox ou des choses comme ça.
00:27:38 :Donc en fait, avec VirtualBox,vous pouvez créer plusieurs machines virtuelles.Vous pouvez avoir dans votre VirtualBoxun Ubuntu, un Kali Linux,même un Windows XP ou des choses comme ça.
00:27:52 :Par contre, la manière dont sont gérées les ressources de l'ordinateuret partagées avec les différentes machines,c'est différent, c'est un hyperviseur,je vais peut-être dire une... je vais pas dire de bêtises,
00:28:04 :mais c'est un autre truc d'hyperviseur.Je crois que c'est un hyperviseur de type 2.Et en fait, ça veut dire quevotre VirtualBox, ça se comporte comme un logicielqui est installé sur votre OS.
00:28:16 :Donc en fait, VirtualBox, il a besoin d'un OS hotpour pouvoir tourner.Et en fait, dans VirtualBox, vous pouvez tourner vos machines virtuelles.Donc là, en termes de ressources,vous avez une espèce de cascade de ressources,c'est-à-dire, VirtualBox, il utilise,il est installé comme un logiciel,donc il utilise les ressources de votre ordinateur
00:28:35 :et les machines virtuelles à l'intérieur,elles utilisent les ressources que vous lui avez allouéesvia VirtualBox.Par contre, l'hyperviseur de type 1,c'est un peu différent,donc Proxmox,c'est juste que ça permet de faire fi de l'OS hot.
00:28:55 :Vous pouvez directement installer toutes vos machines virtuellesdirectement sur la machinesur laquelle tourne le serveur Proxmox.Je ne connais pas VSphere,mais je pense que ça doit être le même genre de truc.
00:29:10 :C'est quoi, VSphere?Ouais, je pense que c'est le même genre.Je ne suis pas sûr.Je pense que VSphere, c'est plus comme Proxmox que VirtualBox.
00:29:34 :Bon, je ne connais pas,je ne peux pas t'en parler.Mais du coup, si je reviens sur Proxmox,et en fait...Ah, d'accord.Du coup, Proxmox,là, je suis la machine avec laquelle je partage mon écran,là, je suis sur mon Mac,et Proxmox, c'est mon système d'exploitationqui tourne sur une autre machine.
00:29:59 :C'est une machine qui est à part.Je vais aller vous montrer ça.Ce qui est bien avec Proxmox,c'est qu'on peut tout administrer via une interface web.
00:30:07 :En gros, vous pouvez vous dire que vous avez un système d'exploitationque vous gérez via une interface web.C'est quand même plutôt intéressant.Parce que du coup, ça veut dire que...
00:30:19 :Vous voyez, là, je suis sur ma machine.Ça, c'est ma machine qui est...C'est une unité centrale, en fait, sans écran, etc.Et je peux aller l'administrer depuis l'IP.
00:30:33 :Voilà, c'est une IP privée.Enfin, c'est une IP locale.Donc, ça, c'est un truc que vous ne pourriez pas accéder depuis l'extérieur.Mais en gros, vous pouvez aller administrer toutes vos machinesdepuis une interface web.
00:30:57 :Et donc, ici, juste pour exemple,j'ai un serveur sur lequel tournent plusieurs serveurs Docker,plusieurs services,et j'ai aussi une machine Ubuntu.Donc là, par exemple, une machine Ubuntu,si je vais dessus, je peux faire console.
00:31:14 :Bon, ça, après, vous connaissez le principe.C'est un peu...Donc là, vous voyez, si je vais...Faut que j'aille faire le scale.C'est une machine Ubuntu classique.
00:31:32 :Vous pouvez aller faire tout ce que vous voulez dessus.Si je me souviens du mot de passe que j'ai mis là-dessus,qu'est-ce que j'ai pu mettre là-dessus?
00:31:49 :Enfin, bref, vous avez déjà vu ce que c'est qu'une machine Ubuntu.Et ici, j'ai mes serveurs Docker.Donc là, c'est un petit peu différent.C'est vraiment un truc en ligne de commande sur une interface graphiqueparce que c'est un serveur Docker.
00:32:03 :Et si je vous montre, j'ai...Bon, ce n'est pas très lisible parce que du coup, je suis obligé de zoomer.Mais en gros, là, c'est tous les serveurs Docker que je fais tourner.
00:32:14 :Et c'est des services qui sont accessibles via mon interface administrateur.Et ici, comme vous pouvez le voir,c'est un peu l'interface qui me permet d'aller visiterun peu tous mes containers et tous mes Docker services.
00:32:31 :Donc, si vous voulez qu'on fasse le tour, là, il y a par exemple Portainer.Portainer, en fait, c'est une interface qui permet d'administrertous vos serveurs Docker, tous vos services.
00:32:41 :Donc là, si par exemple, je vais sur mon Proxmox,sur lequel tournent tous mes containers,là, vous voyez que j'ai tous mes containers qui tournent.
00:32:47 :Donc, je peux aller les administrer, je peux aller vérifier si tout va bien, etc.Donc si par exemple, je vais vous montrer...Peut-être qu'il faut que je fasse attention parce qu'il y en a avec des mots de passe en clair.
00:32:59 :Mais en gros, là, vous voyez, j'ai tous mes containerset je peux aller dire, en fait, je veux l'arrêter, je veux le lancer.Je peux même créer des nouveaux containers, etc.
00:33:09 :Donc là, c'est les différents containers.Donc là, vous voyez, il y a Dolibar, AinDol, Kuma, Nextcloud, Nginx et phpMyAdmin.Donc juste pour vous montrer à quoi ils servent, donc en fait...
00:33:24 :Où est-ce que je suis?Ici, par exemple, on va aller voir Nextcloud.Est-ce que vous connaissez Nextcloud?En fait, c'est quelque chose qui peut remplacer Google Drive ou plein d'autres choses.
00:33:48 :C'est open source.Et du coup, le fait de pouvoir le déployer avec Docker, c'est hyper intéressantparce qu'en fait, derrière Nextcloud, il y a MariaDB, donc une base de données.
00:34:00 :Donc ça peut être MySQL ou MariaDB ou quoi que ce soit,qui stocke tous vos documents, toutes vos entrées, etc.Et ce qui est pas mal, c'est que vous pouvez aussi installer des applications.
00:34:10 :Donc vous pouvez gérer des fichiers qui sont accessibles et téléchargeables un petit peu partout.Là, vous voyez, j'ai différents dossiers.Donc par exemple, je peux faire un test si je crée un dossier texte.
00:34:29 :Partage doctrine.On peut dire...Classic test.J'ai une démo complète de Nextcloud, mais c'est juste pour que vous le voyez.Hello la compagnie.Et ça, je peux vous partager directement le fichier.
00:34:59 :Si je quitte ça, je vais dans partage.Si je veux vous le partager, je crée un lien de partage.Ok, donc là c'est lien créé, je le copie.
00:35:10 :Et si je le copie ici par exemple, vous devriez pouvoir l'accéder.Donc là après, je pourrais définir ce que les gens peuvent faire.Donc là pour l'instant, normalement si vous y allez, si quelqu'un peut faire le test,aller voir ce qu'il se passe sur le fichier, normalement vous pouvez juste le télécharger.
00:35:28 :Là ça marche.Et là tu peux juste normalement le visualiser, tu ne peux pas le modifier ou faire des choses je pense.En revanche, si je fais autoriser la modification, donc normalement peut-être il faut...
00:35:45 :Le même lien.Si je vous le renvoie, mais je pense que c'est le même.Là normalement, maintenant vous pouvez le modifier, vous pouvez peut-être même mettre des commentairesou des choses comme ça.
00:35:56 :Autodestinataire, je peux même le protéger par mot de passe.Enfin bref, vous pouvez faire quand même pas mal de choses.Et vous pouvez aussi ajouter des applications.
00:36:04 :Donc vous pouvez ajouter par exemple des applications de chat qui permettent de dire,si vous voulez mettre en place un chat privé avec votre client par exemple, vous pouvez le faire.
00:36:14 :Après il suffit juste de partager le lien vers ça.Qu'est-ce qu'on peut faire d'autre aussi?On peut ajouter d'autres applications.On peut créer, on peut faire des applications qui permettent de faire des...
00:36:26 :Comment on appelle ça?Pas des formes mais des questionnaires.Je ne sais plus comment il s'appelle celui-là.Je crois que c'est Paul avec deux L.
00:36:43 :Donc en fait vous avez le lien, on peut créer.Je ne connais pas cette application, mais en fait vous avez tout un tas d'applicationsqui sont disponibles, qui sont en open source.
00:37:00 :Télécharger activé, donc là il faut que je rentre mon mot de passe.De quoi tu parles à la formule à 36 euros par mois?Parce que c'est payant l'exclude non?
00:37:18 :En fait si tu veux le faire héberger, que tu ne veux pas t'emmerder à l'héberger toi-même,oui tu payes un abonnement.Mais là ce que je vous ai montré justement c'est le fait que moi je l'ai déployésur mon unité centrale qui tourne et du coup c'est moi qui l'héberge.
00:37:39 :Donc je n'ai pas besoin de payer pour l'hébergement.Donc là par exemple on a un sondage.Je ne sais pas, on peut créer un sondage.
00:37:58 :Je ne connais pas l'application mais en gros vous voyez un peu le trucvous pouvez facilement partager des applications comme ça avec les gens que vous voulez.
00:38:06 :Donc c'est quand même hyper intéressant de pouvoir déployer ses propres servicescomme on le souhaite.Donc là c'est un des services que j'utilise et que j'ai déployé via Proxmox.
00:38:21 :Après il y a par exemple, qu'est-ce que je peux vous montrer d'autres?Dolibar.Donc Dolibar c'est un ERP qui permet de, donc ERP c'est pour gérer les relations clientsdonc vous pouvez rentrer les contacts etc.
00:38:36 :Voilà, celui-là je ne vais pas vous le montrer, ça ne sert à rien.Mais après qu'est-ce qu'on a l'autre?On a Puma, je crois que je vous l'avais déjà montré.
00:38:46 :Ça c'est ce qui permet de faire du monitoring de tous vos différents services.Donc là par exemple c'est pour monitorer comment va mon Nextcloud,est-ce qu'il est bien en ligne, est-ce que mon WordPress est bien en ligne etc.
00:39:06 :Ah bah oui vous voyez Seb il utilise aussi ça, son planetaire avec Nextcloud sur un Raspberry Pi.Du coup c'est pas tout à fait Nextcloud, je crois que c'est Picloud ou un truc comme ça,c'est une distrib un peu spécial qui tourne bien sur le Raspberry Pi.
00:39:27 :Voilà, est-ce que ça vous intéresse qu'on essaye de déployer un service ensembleavec Portainer ou est-ce que vous voulez passer à autre chose? Dites-moi.Je peux vous montrer comme ça, c'est simple en fait, grâce à Docker de déployer des services.
00:39:50 :Ok, merci Gabriel.Du coup qu'est-ce qu'on peut prendre comme service?On va essayer de... il y a récemment je suis tombé là-dessus, PingVin.C'est un service qui permet de créer son propre WeTransfer.
00:40:20 :Parce qu'en fait des fois WeTransfer vous savez vous pouvez envoyer des fichiers de 2 gigaset vous créez un lien et vous partagez ce lien avec n'importe qui et il peut aller télécharger votre document.
00:40:35 :Et là en fait le fait d'héberger soi-même cette application similaire à WeTransfer,il n'y a pas de limite de taille de fichier.Si jamais vous voulez que votre client puisse uploader ou télécharger un fichier de 200 gigas,vous pouvez parce qu'en fait c'est vous qui gérez vous-même l'hébergement.
00:40:56 :Donc on peut essayer de déployer ce service.On va aller voir le Docker Compose.Donc là en fait ils disent voilà si vous voulez déployer ce service,il suffit juste d'utiliser ce Docker Compose pour déployer ça.
00:41:13 :Donc le service c'est quoi? C'est juste le nom de l'image.On va la déployer sur le port 3000 et on va créer les volumes qui sont en fait ici des volumesqui vont permettre de stocker les fichiers.
00:41:24 :Vous allez voir que c'est assez simple grâce à Portainer justement.Donc Portainer c'est un autre service qui existe.Donc je fais add stack, je vais dire ping in et là je lui mets le Docker Compose.
00:41:38 :Donc comment je veux qu'il déploie en fait le service.Donc là il va me créer sur le port 3000 l'application et il va me créer ces volumes là.
00:41:46 :Bon ces volumes là moi je les veux peut-être pas forcément ici.Je vais peut-être créer un volume ping in data et ping in data image.
00:42:10 :Ok par contre il faut que je crée les volumes.Bon ça vous en faites pas c'est du technique.Le Docker. Ok donc là j'ai mon image.
00:42:47 :Je vais normalement deploy the stack.Il est en train de la déployer.Vous voyez ici.Bon j'attends un peu le temps qu'il la déploie.Ok donc là il me l'a déployé.
00:43:12 :Maintenant si je vais voir dans mes containers qui sont déployés.Il me dit sur le port 3000 de ma machine.Donc en localhost j'ai bien mon application qui tourne normalement.
00:43:25 :Donc on va aller vérifier ça.Je suis du coup j'ai déployé sur quoi?Sur le Proxmox. Donc je vais sur mon adresse Proxmox 3000.Et donc là j'ai bien mon service. Vous voyez c'est un service qui tourne en local.
00:43:45 :Et j'ai bien mon service qui tourne.Donc là home je fais get started.Donc là normalement il faudrait que j'aille voir.Mais je sais pas ce qui m'a mis en fait comme truc par défaut.
00:44:01 :Pour de vrai.Voilà donc là en fait j'ai bien mon application qui tourne.Et si j'uploade des fichiers ici, comme un peu avec le Nextcloud,je peux vous mettre à disposition les liens de fichiers.
00:44:45 :Et ce coup-ci j'aurai pas de... là pour l'instant j'ai 1 giga.Mais en fait je peux aller définir moi-même dans la configurationla taille maximale que je veux pour mes fichiers.
00:44:54 :Donc je peux mettre 200 gigas si je veux.Et je serai plus limité par ce fameux 2 gigas qu'on a avec WeTransfer.Donc voilà pour le déploiement.
00:45:02 :Vous voyez c'est assez simple.Mais c'est grâce aussi à Portainer qui est lui-même un service Dockerqui permet de déployer les applications Docker.Voilà bon je me rends compte que là je pars un peu dans tous les senset je vous montre différents services.
00:45:16 :Mais c'est juste pour que vous voyez un peu ce qu'on peut faire.Et peut-être que ça peut vous donner des idées.Et même cette interface là c'est elle-même une interface que j'ai déployée grâce au Docker.
00:45:28 :C'est AinDoll qui vous permet d'organiser un peu tous vos services et tous vos liens comme ça.Voilà bon désolé c'était un peu brouillon.J'espère que vous pourrez au moins apprendre quelques trucs avec ça.
00:45:45 :J'espère que ça vous a un petit peu intéressé quand même.Voilà je ne sais pas si vous avez des questions là-dessus.C'est un peu compliqué pour vous je pense de poser des questions sur un truc aussi brouillon.
00:46:05 :Mais l'idée c'est juste de vous montrer pour que vous ne soyez pas trop déroutési jamais vous entendez ce genre de termes ailleurs.Du coup si on passe maintenant aux petits exercices d'algo.
00:46:20 :Je vais juste vous montrer le projet Euler ce que c'est.Il suffit juste d'aller sur projet Euler.Vous allez là-dessus et vous avez tous les exercices qui existent.
00:46:43 :Donc là vous voyez qu'il y en a 17 pages qui sont classées du plus facile au plus difficile.Et vous voyez ici c'est le nombre de personnes qui ont réussi à le résoudre.
00:46:55 :Et donc là la difficulté elle est très... c'est pas très élevé.Après ne soyez pas dérouté parce que vous allez voir que des fois rien que celui-làc'est a priori pas difficile mais bon il faut passer un petit peu de temps pour essayer de le résoudre.
00:47:09 :Et vous voyez sur le 17, par exemple là dans le monde, clairement dans le monde,il n'y a que 77 personnes qui ont réussi à le résoudre.
00:47:17 :Voilà mais bon maintenant j'imagine un peu avec l'avènement de chat.gpt, l'AI etc.Je pense qu'il y a beaucoup de problèmes qui ont été résolus grâce à chat.gpt
00:47:30 :parce qu'en fait le truc c'est qu'il n'y a pas la solution.Tant que vous n'arrivez pas à trouver le problème, à trouver la réponse, vous n'aurez pas la solution.
00:47:38 :C'est impossible d'aller trouver sur internet.Mais bon comme je vous dis maintenant avec chat.gpt c'est plus facile.Donc on va commencer par un exercice, enfin on va en faire deux ensembleet puis voilà après je ne vais pas faire les exercices devant vous, ça ne sert à rien.
00:47:53 :Je pense qu'il y a un exercice qui ressemble un peu sur docstring.Et en gros l'idée ici c'est quoi l'exercice?C'est en anglais mais vous pouvez le trouver facilement.
00:48:09 :Donc en gros on va essayer de le faire ensemble celui-là.Donc on dit en gros si on liste.........Ok donc en gros l'idée c'est de faire la somme des multiples d'un nombre qui est plus petit que 10.
00:48:32 :Ok?Donc ce qu'on va faire c'est que déjà et après ils disent que l'exercice c'est de faire cet exercice là mais sur 1000.Donc ce qu'il faut juste c'est qu'on trouve les entiers naturels qui sont multiples de 3 ou 5 en dessous de 10.
00:48:49 :Ok?Donc comment on fait ça? Est-ce que vous avez des idées de comment on peut faire ça?Est-ce que vous connaissez un truc en python qui permet de faire ce genre d'opération?
00:49:00 :......Ok en fait être multiple d'un nombre ça veut dire quoi?Ça veut juste dire qu'on peut multiplier ce nombre par............
00:49:20 :.............................................Donc avec Python ça existe, on peut faire ça, c'est le fameux modulo.
00:50:00 :Donc si je zoom ici, me modulo, donc par exemple si je fais, je l'avais déjà fait je crois,5 modulo 2, je vais avoir 1, parce qu'en fait 5 divisé par 2 ça se fait pas, doncen fait 5 le plus grand entier qui permet de diviser 5 par 2 c'est 2, donc ça fait
00:50:27 :4 et il reste 1.Donc après par contre si je fais 4 modulo 2 il va me rester 0.Donc en fait le modulo 2 ça permet de tester si un nombre est pair ou impair.
00:50:37 :Parce que par exemple si je fais 3 modulo 2 je vais avoir 1, si je fais 4 modulo 2 jevais avoir 0 et ainsi de suite.
00:50:46 :Ça peut donner soit 1 soit 0 le modulo par 2 parce qu'un nombre est soit pair soit impair.Si par exemple je fais 7 modulo 2 j'ai 1 parce que c'est impair.
00:50:59 :Bref, en gros si on revient à l'exercice, l'idée c'est de trouver les entiers naturelsqui sont multiples de 3 ou 5 en dessous de 10.
00:51:08 :Donc ce qu'on va faire c'est qu'on va créer une liste, on va dire numbers, lm inrange 10 if lm modulo 3 égal égal 0 ou il me l'a déjà mis.
00:51:30 :Donc en fait ça veut dire que je vais parcourir lm for lm in range 10, donc je vais parcourirtous les entiers de 1 à 10.
00:51:41 :Et je vais dire si le reste de la division euclidienne de mon nombre que je suis en trainde parcourir par 3 il vaut 0, donc ça veut dire qu'il n'y a pas de reste dans la divisioneuclidienne, ça veut dire que je peux diviser mon nombre par 3 et pareil pour 5.
00:51:55 :Donc ça c'est un peu, on essaye de reproduire l'énoncé ici qu'ils annoncent là dessus.Et après il faut faire la somme.Donc s égale sum numbers et on fait print s.
00:52:11 :Et si je run ça, run exo 1, 23, donc c'est bien ce qu'ils indiquaient.Et donc maintenant il suffit juste de changer ça par 1000 au lieu de 10.
00:52:33 :Et voilà, donc si on fait ça et qu'on run, on a la somme de tous les entiers en dessousde 1000 qui sont des multiples de 3 ou 5.
00:52:44 :Donc voilà un petit peu, c'est une petite mise en bouche parce que c'est le genre d'exerciceque vous pouvez avoir sur le projet Euler.Donc c'est bien parce qu'en fait ça permet de travailler un petit peu, de réfléchirà l'algorithmie et de manipuler un peu des listes, des nombres avec Python et de comprendre.
00:53:01 :Ça va, c'est clair pour tout le monde ça le reste, comment on fait pour trouver unmultiple avec le reste de la division euclidienne?Ok, du coup un autre exo, qu'est-ce qu'on peut avoir? Celui-là il est un petit peu
00:53:20 :déjà un petit peu plus complexe, mais ça peut être intéressant de le voir.Donc en gros ils disent que 2520 c'est l'entier le plus petit qui peut être divisé par tousles nombres de 1 à 10.
00:53:37 :Est-ce que déjà cet énoncé vous parle? Donc juste pour vérifier l'énoncé, onva dire, on va tester.Donc on va dire for i in range 10, on va même aller, on va faire 1, 11, parce qu'en fait1, 11 ça veut faire 1 à 10 parce qu'il ne faut pas diviser par 0, je vais vérifier
00:54:01 :juste 1 à 10, donc là on est bon.Et on va dire, on va faire quel est le reste de la division euclidienne de 2520 par moduloi, et normalement à chaque fois il doit nous afficher 0.
00:54:21 :Il affiche 0 à chaque fois, donc je vais peut-être mettre un fstring pour qu'on yvoit plus clair.Donc 2520 par, et puis là dedans on va mettre le i.
00:55:00 :Donc division de 2520 par 1 reste 0 etc. donc vous voyez que l'énoncé est correct, çaveut dire que 2520 on peut diviser par tous les nombres qui vont de 1 à 10.
00:55:16 :Déjà imaginez que, comment on fait pour trouver ce truc là, 2520, parce que là j'aitesté mais c'est pas moi qui ai trouvé 2520.En fait ce qu'il faut faire, je vais peut-être juste vous le mettre là avec un while, ouaispar exemple c'est une bonne idée, mais en gros c'est pas comme ça qu'on fait.
00:55:38 :Et du coup on va essayer de le faire en live, je l'ai fait juste avant et puis je vaisessayer de ne pas me planter, et si je me plante vous regarderez sur ma correction.
00:55:47 :Du coup avec un while, donc du coup pourquoi pas, tant que la somme est 0, donc allons-yon va chercher ensemble.Je vais mettre lui, je peux le mettre, ok.
00:56:04 :Donc on est là, donc avec un while.Donc en fait ce qu'on veut faire c'est que, on veut itérer sur, on veut partir d'unnombre qui est déjà forcément, ouais mais du coup si tu pars avec une boucle, tu vastester sous les nombres, qu'est-ce que tu vas faire, tu vas mettre, tu vas dire for
00:56:27 :e in range, je sais pas, 1 million, parce qu'en fait tu sais qu'il faut dépasser 2520,là en plus tu le sais que c'est 2520, mais ça veut dire, et tu vas faire ça et puistu vas mettre un break.
00:56:41 :Ça peut être, ouais mais c'est compliqué quand même ouais.Ça peut être ça, mais en gros ça veut dire qu'il faut que tu vises bien ton nombre làet puis c'est un peu crac crac, tu vois c'est pas très propre de faire ça parce que tusais pas à quel moment ça va t'arriver.
00:56:54 :Donc c'est pour ça que le while pour moi c'est la meilleure solution parce qu'en grosle while c'est, tu sais pas, le while c'est bien quand tu sais pas jusqu'où ta boucleelle doit aller.
00:57:05 :Donc on va partir sur un while, donc moi ce que j'aime bien faire sur un while c'est queje dis, j'initialise à true et en fait je vais dire while go, on va faire, et dèsqu'on va atteindre notre objectif on va passer la variable go à false, comme ça il va s'arrêter.
00:57:23 :Donc effectivement comme dit Jonathan il faut commencer par initialiser un nombre, doncje vous propose qu'on commence par 11 parce qu'en fait ça sert à rien de commencerplus bas parce que forcément tous les nombres, si je commence à 9, bah je sais très bienque 9 ça sera jamais divisible par 10 parce que c'est plus grand donc ça sert à rien
00:57:47 :de commencer plus bas que 11.On va commencer par 11, ok, et on va l'incrémenter.Donc ensuite ce qu'on va faire c'est que on va tester, donc on va commencer à 11 etpour chaque nombre on va dire for e in round 10, donc là on va mettre 1, 11 pour être
00:58:09 :sûr d'avoir 1 à 10, ok, même que 20, mais après tu vas voir avec 20 c'est, oui 20 c'estpareil on pourrait y aller, mais là on va d'abord essayer de reproduire le premier,trouver le 2520, parce qu'en fait celui d'après il va falloir beaucoup de temps machine quand
00:58:27 :même pour le trouver parce que c'est assez exponentiel les temps de calcul pour trouverce genre de truc, donc on va juste pour l'instant retrouver le 2520 nous même si jamais onnous l'avait pas donné.
00:58:36 :Donc pour chaque, on va tester tous les diviseurs, et donc on va dire if, si le reste de la division,et je réfléchis en même temps parce que je l'ai fait tout à l'heure, on fait lasomme de tous les restes, pourquoi tu voudrais faire la somme de tous, ouais c'est une bonne
00:59:00 :idée mais en fait moi ce que je propose c'est que dès qu'il y en a un qui divise pas, bahça sert à rien de faire les autres, du coup on va gagner un peu de temps en faisant ça.
00:59:08 :Donc if, si il divise pas, donc je vais plutôt l'appeler d comme diviseur, if i, d il estpas égal à 0, donc ça veut dire qu'il est supérieur ou égal à 0, et bah on vadire qu'on va se casser de la boucle.
00:59:35 :Du coup c'est i par d, du coup on va faire un break, parce que ça sert à rien de continueren fait à tester les autres diviseurs, donc on va se barrer de la boucle, ok, et du coup,et en fait le truc c'est que comme on a testé tous les diviseurs de 1 à 11, si on a un
01:00:18 :qui divise pas notre nombre, et bah ça veut dire qu'on est pas bon, donc ça veut direque si au final on a été jusqu'au bout de la boucle, jusqu'au bout de la boucled, ça veut dire qu'on est pas sorti en gros par défaut, ça veut dire qu'on est
01:00:32 :pas sorti, donc si on est pas sorti ça veut dire qu'on a trouvé d diviseur.Donc on peut dire if d égal 10, donc si on a été jusqu'au bout, bah en fait onpeut arrêter parce que ça veut dire qu'on a trouvé go false, ok.
01:00:49 :Par contre, et du coup, il faut qu'on incrémente à chaque fois notre nombre qu'on a définiici, parce que sinon la boucle while elle va jamais s'arrêter.
01:01:01 :Donc, attendez je relis un petit peu ce que j'ai fait, cd machin, et si il est pas,en fait je pense qu'il faut qu'on le mette là, i plus égal 1, et on va tester ça,run, exo, je pense qu'il est parti dans un truc infini, je vais juste aller vérifier
01:01:28 :sur ma correction, if 1, ok normalement on devrait être bon avec ça.Alors j'ai l'impression qu'il est parti dans une boucle infinie, je vais recopierce que j'ai écrit là, le résultat je l'imprime en fait avec ça, est-ce que çad'ailleurs vous connaissez, ça c'est hyper intéressant, quand vous faites, voyez ici
01:02:38 :par exemple je fais print i, ça va me faire chier, parce qu'en fait il va, et puis mêmesi je fais, je vais aller plus loin, imaginez que vous faites une grande boucle et à chaquefois que vous faites un print, vous avez tout qui défile avec une nouvelle ligne,
01:03:01 :etc.Donc c'est un peu chiant, ce que vous pouvez faire dans le print c'est que vous pouvezdire end, en fait à la fin du print, vous voulez qu'il ajoute un retour chariot, c'estici, ouais.
01:03:13 :Donc en fait au lieu d'écrire sur une nouvelle ligne, il va écrire au début de la ligne,donc en fait il va vous faire, il va vous updater votre résultat.
01:03:25 :Donc ça c'est intéressant quand vous avez un print dans une boucle, si vous voulez pasà chaque fois faire une nouvelle ligne, vous pouvez l'utiliser comme ça.
01:03:31 :Donc du coup pour, donc là je le laisse mais bon ça sert à rien, je vais pas printertous les chiffres.Donc voilà un peu l'algorithme qu'on a fait, on a dit t'initialise une variableat true, tant qu'elle est vraie, bah tu continues à faire, donc tu continues à incrémenter,
01:03:51 :et par contre si on a atteint la fin de la liste, donc ça veut dire qu'on a pas eude break, je l'ai écrit comme ça mais en fait on aurait pu faire autrement, là jevois une autre proposition, ah oui dans le truc d'avant, dans mon exo ici, non je sais
01:04:08 :pas pourquoi il marchait pas, pourtant c'est la même chose, ça c'est la correction,bon bref c'est pas grave.Ah oui dans le truc d'avant parce que là j'ai recopié, oui peut-être t'as raison,peut-être que j'avais écrit égal égal 0.
01:04:22 :Donc du coup est-ce que vous avez compris un peu ce qu'on a fait, c'est à dire queon a commencé avec i égal 11, on a testé les diviseurs de 1 à 10, est-ce qu'ilsdivisaient 11, est-ce qu'ils divisent tous, en fait dès qu'il y en a un qui divise
01:04:36 :pas on se barre de la boucle, on se barre de la boucle, et on dit seulement, si onse barre de la boucle ça veut dire que là on arrive là, comme ici d on a pas atteintla fin de la boucle des diviseurs, bah on se retrouve ici dans else et du coup on incrémente,
01:04:51 :et ainsi de suite, on augmente.Et une fois qu'on est tombé sur d égal 10, donc ça veut dire qu'on est pas tombélà dedans, donc ça veut dire qu'ils ont tous divisé notre nombre, et bah ça veutdire qu'on change notre variable de while, on la met à false, et du coup il s'arrête,
01:05:08 :et du coup on a accès à notre nombre.Donc maintenant si en fait dans l'énoncé e c'est pas le premier nombre qui a 20 diviseurs,bah en fait il suffit juste de faire comme ça, et donc là vous voyez par contre ilva itérer pendant très longtemps, parce que le premier nombre qui est divisible par
01:05:35 :1, 2, 3, 4, 5, 6, 7, jusqu'à 20, c'est un nombre extrêmement grand.Bon je sais pas combien de temps il va tourner là, on va pas attendre jusqu'à la fin,mais en gros voilà comment un peu on peut bourriner ce genre d'exercice en faisanttourner un script comme ça pendant la nuit pour résoudre le problème.
01:05:50 :Donc voilà le genre de petit exercice que vous pouvez faire sur le projet Euler, etpuis en fait une fois que vous avez votre réponse, il suffit juste d'aller, bon làcelle là je l'avais faite du coup j'avais mis la réponse, vous allez là dessus, etvous rentrez votre réponse et vous faites check, et puis du coup comme ça vous allez
01:06:11 :avoir votre progression, et voir combien de personnes ont réussi à le faire etc.Voilà juste avant de terminer je voudrais juste qu'on fasse un petit point sur lesfonctions récursives parce que ça peut être utile et c'est une façon élégante d'écrireune fonction.
01:06:27 :Sachez qu'il n'y a aucune fonction récursive que vous ne pouvez pas écrire avec une boucleou quoi que ce soit, et parfois, et c'est même souvent le cas, la fonction récursivec'est pas la manière la plus efficace en termes de temps d'exécution pour réaliserune fonction.
01:06:47 :Je vais juste attendre, on va se servir de la suite de Fibonacci pour faire, ou mêmesi on va commencer par la suite de Fibo.
01:06:59 :Pour faire le premier truc, je vais aller, est-ce que j'ai un jumpboard? Bon si çavous intéresse qu'on regarde un peu, ou si ça ne vous intéresse pas, ou si vous enavez marre on peut s'arrêter, et si ça vous intéresse je peux le faire.
01:07:19 :Ok, ok, très bien.Alors la suite de Fibonacci, est-ce que vous connaissez? En fait la suite de Fibonacci,là normalement vous devez voir mon écran, c'est une suite qui prend la somme des deuxtermes précédents, donc en fait elle commence, si on prend les deux premiers termes c'est0 et 1, donc je vais bien les séparer parce que sinon, donc ça commence à 0, 1, donc
01:07:59 :si je fais la première somme des deux, donc 0 plus 1 ça fait 1.Donc là c'est le premier terme de la suite de Fibonacci, c'est 0, ici, si vous voyezlà 0, ensuite c'est 1, ensuite c'est toujours 1, et après on continue.
01:08:15 :Donc le quatrième ça va être la somme de 1, 1, donc c'est 2, après si je continueça va être 3 parce que c'est la somme de 2 et 1, si je continue c'est 5, 8, 13, 21,etc.
01:08:29 :Parce qu'en fait vous voyez ici 3 c'est la somme de 2 plus 1, 5 c'est la somme de2 plus 3, etc.Donc vous avez compris le concept un petit peu, je ne sais pas si il faut que je reviennedessus mais en gros, ces deux premiers termes là ils sont imposés parce que forcément
01:08:44 :il n'y a pas de termes.Donc en fait le premier terme, ici celui là, c'est 0 plus 1, ensuite 2 c'est quoi? C'est1 plus 1, ici 3 c'est 2 plus 1, 5 c'est 3 plus 2, et ainsi de suite, 8 c'est 3 plus6, 13 c'est 8 plus 5, 21 c'est 13 plus 8.
01:09:09 :Ok? Très bien, donc ça c'est la suite de Fibonacci qu'on peut faire de manièrerécursive parce qu'en fait si on définit la suite de Fibonacci, je pense que mêmeLya va me la taper directement, si je veux le énième terme de la suite de Fibonacci,il suffit que je dise si j'arrive à 0, donc en fait si je retourne ici, si j'arrive
01:09:29 :à 0, c'est tout j'arrête.Par contre, et pareil, en fait il y a deux termes qui sont conformes dans la suite deFibonacci, c'est les deux premiers.
01:09:38 :Donc si je suis à 0 ou 1, je retourne 0 ou 1.Par contre si je suis supérieur, je dis, pardon, bah tu me fais Fibo n-1 plus Fibon-2 parce que je vous l'ai dit c'est la somme des termes précédents.
01:09:55 :Non en fait, infini, oui, en termes de, oui oui, elle diverge cette somme là, il n'ya pas de convergence sur cette suite là parce qu'en gros c'est infini, on peut sommertant qu'on veut les trucs.
01:10:12 :Donc en fait ce qui se passe ici quand on écrit ça, donc si je la réécris, je vaisjuste réécrire ici, donc def Fibo n, donc on a dit if n égale, on a dit c'était combien,si c'est 0 on retourne 0, ensuite c'est un elif n égale égale, si on a dit 1 on retourne
01:10:51 :1, et sinon else on va faire Fibo n-1 plus Fibo n-2.Donc en gros qu'est-ce qui se passe si je fais un autre truc, attendez, qu'est-ce qu'onva garder, on peut dégager tout ça, on va dégager tout ça aussi.
01:11:22 :En gros quand je fais Fibo n-2 plus Fibo n-1, ici imaginez que j'ai rentré n égale, icilà si j'ai mis n égale 5 par exemple, on va changer de couleur, ok, je mets n égale5 pour calculer ma suite.
01:11:48 :Donc ça veut dire qu'il va d'abord faire Fibo, je vais arriver dans ma fonction n égale5, je vais tomber dans aucune de ces conditions là, je ne suis pas égal 0 et je ne suispas égal 1, du coup il va se retrouver là.
01:12:00 :Du coup il va dire, si j'ai mis n égale 5, tu fais Fibo 4 plus Fibo 3, et donc du coupil va se dire, Fibo 3 et Fibo 4 c'est pareil, si je mets 4 ici, je ne suis ni là ni là,du coup je continue et ainsi de suite.
01:12:19 :Donc en fait il va faire une espèce de pile, à chaque fois il va atterrir là, Fibo 4,Fibo 3, Fibo 2, et en fait arrivé à Fibo 1, il va dire, ah je suis arrivé, du coupça fait 1, et après il va continuer, il va se retrouver à Fibo 0, je suis arrivé,
01:12:37 :ça fait 0.Donc en gros il va créer une pile ici, et petit à petit il va arriver jusqu'à 1 ou0, et il va pouvoir sommer.
01:12:46 :Donc si je reviens sur mon exemple ici, je ne sais pas si c'est vraiment clair ce queje vous dis, je ne suis peut-être pas le meilleur pédagogue, j'ai tout perdu.
01:13:02 :Voilà, il faut le voir un peu comme une pile, où en fait il va à chaque fois, tant qu'iln'a pas atteint la condition limite, il va continuer à appeler, et il va continuer àsommer, et une fois qu'il aura calculé Fibo 3 par exemple, Fibo 3 il va calculer que ça
01:13:24 :fait Fibo 2 plus Fibo 1 plus Fibo 0, Fibo 2 plus Fibo 1, il sait que ça fait 1 plus0, donc ça fait 1, etc.
01:13:34 :Voilà, je me rends compte en expliquant que ce n'est peut-être pas le meilleur exemple,et il y a aussi un exemple classique en récursivité, c'est la factorielle.
01:13:48 :En fait la factorielle si vous savez ce que c'est, qu'est-ce que c'est n factorial, navec un point d'exclamation, c'est n fois n moins 1 fois n moins 2 fois etc. jusqu'à
01:14:13 :n moins n plus 1.Donc en fait c'est juste par exemple 5 factorial, c'est 5 fois 4 fois 3 fois 2 fois 1.Et donc en fait vous voyez que ici si je fais 5 factorial, si je regarde ici ce que c'est,en fait ça ressemble à 4 factorial.
01:14:36 :Donc en fait 5 factorial c'est égal à 5 fois 4 factorial.Mais après 4 factorial c'est quoi? 4 factorial c'est 4 fois 3 fois 2 fois 1, donc en gros
01:14:48 :4 factorial c'est aussi 4 fois 3 factorial, et ainsi de suite.Donc c'est pour ça qu'on utilise des fonctions récursives parce qu'en fait elles s'appellentelles-mêmes.
01:14:59 :Donc en fait 5 factorial c'est 5 fois 4 factorial, c'est égal à 5 fois 4 fois 3 factorial,égal à 5 fois 4 fois 3 fois 2 factorial etc.
01:15:13 :Et du coup ça veut dire qu'au bout d'un moment vous allez vous retrouver avec la factoriellede 1 et la factorielle de 1 ça va être la condition limite, ça va être 1.
01:15:29 :Alors si j'écris la condition de factorial n, en fait le truc c'est que, donc imaginezje fais factorial 4, donc je mets ici à la place de n je mets 4, donc je ne suis pasdans cette condition.
01:15:49 :Du coup il me dit c'est 4 fois factorial 3 parce que c'est n-1 etc.Donc là à la place de n fois factorial n-1 je vais avoir 4 fois 3, pardon 4 fois factorial3.
01:16:07 :Factorial 3 c'est quoi? 3 c'est toujours pas 0 du coup il va pouvoir me retourner 1,du coup factorial 3 c'est n fois factorial 2 etc.
01:16:17 :Donc voilà c'est un petit peu méta la fonction récursive mais il faut bien comprendre lafonction de base.Pas de soucis hein Salvatore, bonne soirée.
01:16:28 :Mais en gros je sais que sur docstring il y a une écriture de la factorial il me semble,mais elle n'est pas en mode récursif si je ne me trompe pas, et donc là vous voyezune écriture de la factorial en mode récursif.
01:16:43 :Et c'est vraiment grâce à ce type d'écriture que le fait que 5 factorial c'est 5 fois4 factorial etc.Je me répète un peu mais c'est pour essayer de vous expliquer au mieux.
01:17:02 :Là le but c'est pas de vous expliquer les maths, j'aurai pas la prétention de vousexpliquer ce que c'est que les maths etc.C'est plus de vous montrer qu'on peut définir une fonction qui s'appelle elle-même enputant de cette manière là.
01:17:15 :Voilà je ne suis pas très content de cette session de mentora, c'était un petit peubrouillon, je suis parti dans tous les sens.J'espère que je ne vous ai pas trop perdu, en tout cas si c'est le cas désolé.
01:17:31 :Merci Gabriel mais je sais que c'était pas très clair tout ce que je vous ai montré.Mais bon voilà j'espère au moins que vous avez découvert quelques trucs, si jamaisvous voulez en discuter y'a pas de soucis, si vous avez des questions aussi je peux yrépondre.
01:17:56 :Merci bonne soirée, n'hésitez pas si vous avez des sujets que vous voulez aborder, jesais que des fois y'en a le fond, continuez à proposer des choses pour qu'on vous présentedes trucs en mentora qui vous intéressent, qui soient intéressants.
Aucune occurrence trouvée pour « ».
00:01:39
Discussion avec Gabriel sur la mise en production de son site Django
00:18:43
Présentation de l'éditeur de texte nano
00:27:22
Présentation de Proxmox
00:39:35
Déploiement d'un service Docker avec Portainer
00:46:21
Présentation des exercices du projet Euler
00:48:40
Exercice d'algorithmie sur la sommes des multiples d'un nombre
00:53:10
Exercice d'algorithmie sur les nombres
01:07:29
Exercice sur la suite de Fibonacci
Bravo, tu es prêt à passer à la suite