Panorama des bases de données et bibliothèques Python
Session du 31 mai 2022 à 21h00
Data Science & IA
Bases de données
Veille & Discussions
Librairie Standard & Modules
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
Panorama des bases de données et bibliothèques Python
Discussion autour des bases de données : quelle différence entre les différents types de BDD, qu'est-ce qu'un ORM, etc.
On aborde également les bibliothèques intéressantes à utiliser avec Python (requests, beautifulsoup, pytes, pillow, pandas, arrow, etc).
00:00:00 :Bonjour tout le monde, j'ai une minute de retard, je suis en train de me faire un café.Alors, on avait 16 inscrits ce soir mais après je ne sais pas avec tous les gens qui s'inscriventautomatiquement, je ne sais pas combien il y en a qui seront réellement là. Je vais
00:00:36 :régler ma caméra de fortune, il faut vraiment que j'ai une webcam que je ne retrouve plusparce que là j'utilise mon téléphone, ce n'est pas très pratique. Salut Romain,
00:00:46 :salut Paul, salut Arnold. Alors, qui est-ce qu'on a ce soir? On a Arthur, Arthur bravopour le script. Romain aussi, vous nous avez fait des trucs, vous êtes parti dans des
00:01:01 :scripts complexes, enfin pas complexes dans le bon sens du terme, pas de façon péjorative,avec beaucoup de fonctionnalités. Je pense que c'est Arthur qui a gagné la palme, il
00:01:11 :vous a fait un donjon et dragon avec tout ce qu'il faut pour faire un jeu complet.D'ailleurs c'est ça que je trouvais intéressant Arthur. Alors je ne sais pas si, je suis en
00:01:23 :train de me demander, est-ce que vous pouvez participer parce que là je ne vois pas, jevois juste ma tête. Ouais ok c'est ça, je ne vous arrivais pas à parler. Attendez,
00:01:35 :je vais gérer, ouais, faut que je change un truc, parce qu'effectivement, salut Patrick,vous ne pouvez pas parler alors peut-être qu'il faut que je vous autorise, c'est bizarrenormalement, inviter à participer, normalement tout le monde devrait pouvoir participer,c'est bizarre, la semaine dernière, enfin toutes les semaines d'avant ça marchait sans
00:01:58 :problème. Salut Laurent, j'ai vu ton script aussi, alors attendez, participants, ouaisc'est participants, ouais, activé, activé, permettre, ouais normalement c'est bon, bonau pire je pense que je peux vous autoriser, inviter à participer. Est-ce que tu y arrives
00:02:32 :là Arthur, je suis autorisé, je ne sais pas si il faut que je le fasse pour tout lemonde, c'est bizarre. Il y a toujours un truc sur Lifestorm, les trois dernières sessions
00:02:46 :se sont bien passées, la toute première qu'on avait faite, ça avait été en décembre,ça avait été le bordel, l'outil n'avait pas bien fonctionné, et là je ne sais pas,Arthur est-ce que tu arrives? Invitation en attente se prépare, je vais tous vous
00:03:03 :inviter, hop, on a Lionel aussi, Lionel qui nous a rejoint cette semaine, bon je vaistous vous inviter un par un, est-ce que ça fonctionne comme ça? Ok Romain ça fonctionne,
00:03:21 :ok bon il y a des gens qui arrivent, c'est bon, Arthur ça fonctionne pas du coup? Ouaisrafraîchis, je sais pas pourquoi c'est bizarre, normalement je vais vérifier dans les paramètresmais j'ai rien touché, donc normalement tout le monde devrait pouvoir, ouais c'estça qui pourra prendre la parole, tout le monde, je sais pas j'ai peut-être démarré
00:03:45 :mal le truc, ok donc, ok on a d'autres personnes qui viennent de nous rejoindre, il y a Tomaussi, bon du coup je vous invite tous séparément, on devrait y arriver, on a un petit problèmeavec le live, il faut que je vous invite à la main, donc il faut que vous vous invitiez
00:04:08 :probablement, le micro est un peu paru mais impossible de diminuter, ok, et par contreles autres vous arrivent à parler, j'ai entendu des voix donc je pense que oui, tum'écoutes? Ouais je t'entends, super, bah du coup Arthur je sais pas, rafraîchis
00:04:27 :encore, et moi on m'entend? Ouais, ok, c'est un truc qui est mal foutu aussi surl'lifestamp, j'ai du mal à savoir qui parle, faut vraiment, je sais pas où l'informationse trouve, y'a pas de signal visuel qui me montre qui parle, donc faut que je regarde,je crois qu'il y a un tout petit signal sur le côté, je crois qu'il y a le signal,
00:04:51 :au niveau du nom, du prénom, des lettres, ça bouge là, ouais ouais là ça bouge,je te vois, mais c'est vrai qu'il faut regarder, il faut toujours du coup avoir la vue surle, hop, Tom je sais pas si t'arrives à parler aussi, Arthur, je sais pas, Patrickje vous invite, ouais effectivement y'a un petit signe, ah bah voilà, je sais pas si
00:05:14 :on change de navigateur au passage, ok, c'est peut-être ça, y'a toujours des petits problèmes,bon bah on est pas mal ce soir, du coup je sais pas si vous avez vu le programme, moij'ai prévu, j'avais pas rajouté sur la page de l'événement la deuxième questionqu'on m'avait posée, qui était la question de Paul si je me souviens bien, qui demandait
00:05:36 :si, enfin comment on trouvait en fait, je vais retourner dans question live, commenton trouvait des, ouais c'est ça, Paul, de trouver des modules de Python, enfin des différentsmodules à quoi ils servent, les plus importants, les plus connus, on en avait un petit peuparlé en fait, la semaine dernière en fait, je sais plus qui avait posé la question,
00:05:58 :donc on a déjà fait la discussion si vous voulez aller la voir dans la semaine dernière,dans cette même session de Mentora, que vous pouvez retrouver sur les rediffusions, jevais vous remettre le lien, et parce qu'entre temps y'a eu celle de Tom aussi justement,qui nous a fait une heure, deux heures peut-être même, de jeu avec PyQt, c'était cool, ouais,
00:06:22 :donc c'était la session, tiens d'ailleurs session, ah oui non, le 31 mai c'est aujourd'hui,donc du 23 mai, vous allez voir y'a des chapitres et voilà, question de Yannick, comment découvrirdes modules. Donc la question elle est un petit peu différente, je vous mets le lien
00:06:36 :dans le chat, c'est un petit peu différent, Johan ouais je vais t'inviter à participeraussi, ouais c'est ça, effectivement Paul, j'avais bien noté, t'inquiète pas la différence,j'ai une petite note là des modules desquels je vais parler, parce qu'effectivement lasemaine dernière c'était, je continue à inviter là les gens qui sont pas rendus sur
00:07:04 :scène, donc voilà, vous acceptez l'invitation que je vous envoie, normalement ça se faitautomatiquement, je sais pas pourquoi ce soir, et donc effectivement la semaine dernièreon avait parlé plutôt de comment on découvre des modules, mais tu vas voir finalement quePaul ça rejoint un petit peu quand même cette question, parce que là tu vois moi
00:07:19 :j'ai prévu des modules dont je vais te parler, mais le truc c'est que, tu vois genre aujourd'huid'ailleurs y'a Arthur qui m'a fait découvrir un module avec son projet justement, c'estun module que je connaissais pas qui est super cool, il s'appelle Questionary, qui permeten fait de faire dans des terminaux en fait, donc c'était parfait pour le jeu de rôle,
00:07:46 :d'avoir des sélections, donc c'est super cool, tu peux sélectionner avec tes flèchesdonc pour tout ce qu'a fait Arthur justement sur le jeu de rôle, où y'a des menus etc,c'est super cool, et c'est un module que je connaissais pas, qui existe peut-être depuisje sais pas, une dizaine d'années peut-être, je sais pas, et donc tu vois là c'est vraiment
00:08:05 :l'usage qui fait qu'il a découvert ce module, et peut-être que quelqu'un qui passe sontemps à faire des programmes dans les terminaux comme ça, va te dire que c'est la bibliothèque,le module qu'il faut absolument connaître, alors que d'autres qui font des interfacesgraphiques ou du web en auront jamais entendu parler. Donc moi j'en ai noté quelques-uns
00:08:22 :qui sont quand même assez génériques, qui peuvent être utilisés si tu veux dans justementplein de cas différents, donc je vais en parler, et après on va voir aussi, puisqueça va être assez rapide, et on va parler après des bases de données, donc y'a pasmal de choses à dire là-dessus, c'était la question de Arthur, ça cette fois-ci effectivement.
00:08:42 :Si tu veux c'était vrai pour sauver la logique du jeu toujours, c'était pour ajouter unpetit module de sauvegarde. Ouais d'accord ok, donc c'était pour continuer sur ce projet-là,
00:08:54 :là vous voyez je savais plus qui parlait parce que moi j'ai pas toutes les vignettes,donc des fois y'a des gens qui parlent mais qui sont pas dans la tête. Y'a des gens que
00:09:01 :je continue à inviter là, je sais pas, Patrick je t'ai invité, et des fois ça repart, alorsje sais pas si l'invitation est temporaire ou quoi, et à un moment, je vais pas passerla soirée du coup à faire les invitations, alors non je sais pas y'avait un petit bug,
00:09:18 :ceux qui ne peuvent pas, mettez moi un message dans le chat, ok t'as des coups de pur Patrickc'est pour ça, si jamais vous voulez prendre la parole, mettez moi un message dans le chatet puis je vous inviterai à prendre la parole pour les quelques uns qui restent, Arnaud
00:09:32 :aussi qui essaie de rejoindre. Donc, ok ça semble bon, donc voilà un peu pour le programmede la soirée, effectivement sur les bases de données y'a beaucoup de choses à dire,donc ça va être, je sais pas, enfin beaucoup de choses, après bon je sais pas combiende temps ça va durer, parce qu'il y a bon y'a je sais pas de code à vous montrer,
00:09:50 :après y'a beaucoup de, les bases de données c'est très vaste et justement je crois quej'ai une petite dizaine d'onglets là pour faire le tour un peu des différentes basesde données, aussi on entend beaucoup parler SQL, NoSQL, je pense qu'il y avait une confusionaussi justement qui pouvait être faite, donc Arthur sur l'ORM en fait, dans ta question
00:10:08 :même en fait Arthur on voyait que tu mélangeais le côté ORM, le système de gestion de basesde données, le langage qui va te servir aussi à faire des requêtes sur ta base de données,donc y'a plein de concepts comme ça et on va voir un petit peu tout ça ce soir. Donc
00:10:27 :je reviens sur les modules, moi tu vois dans ma liste j'ai mis, alors y'a pas d'ordreprécis, j'ai mis request, beautiful soup, arrow qui est donc arrow, a deux r o w commela flèche, qui est un module pour gérer les dates, pillow, pytest, re pour les expressionsrégulières, random et pandas. Donc request c'est pour faire des requêtes web, donc
00:10:48 :ça comme je disais généralement peu importe le domaine on finit toujours par en avoirbesoin, c'est surtout utilisé en scrapping mais pas que, c'est quand même assez courantqu'on ait besoin de faire des requêtes pour aller chercher quelque chose sur un API ouquelque chose du genre. Donc request est quand même très souvent nécessaire, d'ailleurs
00:11:05 :c'est le genre de choses, alors y'a un module, je crois que c'est urllib, qui est un modulede la librairie standard qui permet également de faire des requêtes, et je crois d'ailleursqu'ils l'ont remanié un petit peu dans les dernières versions de Python et que maintenantme semble qu'il permet plus ou moins de faire les mêmes choses que request. Je crois me
00:11:21 :souvenir avoir vu justement un peu cette discussion sur le fait que maintenant y'a des chosesqu'on pouvait faire avec urllib qui ne nécessitait plus de passer par request, parce que c'esttoujours intéressant si vous pouvez limiter les dépendances, c'est sûr si on peut utiliserun module qui est directement dans la bibliothèque de Python, dans la librairie standard, c'est
00:11:39 :mieux. C'est d'ailleurs ça qui m'a un peu induit en erreur avec le projet d'Arthur,y'avait donc ce module questionnary que je ne connaissais pas et je pensais que c'étaitun fichier qui manquait dans le script, donc je lui disais il manque un fichier dans tonscript, il me dit non non c'est une extension qu'il faut rajouter, enfin une librairie
00:11:52 :à installer. Mais du coup si vous pouvez vous limiter le plus possible, c'est commepour les dates par exemple, moi je passais très souvent par Daytime mais là ça fait2-3 semaines que je fais beaucoup de gestion des dates pour les sessions de live, pourafficher, pour dire dans combien de temps le live se déroulera etc. Et du coup le problème
00:12:15 :de Daytime c'est qu'on passe son temps à faire presque de la manipulation mathématiquedes dates je dirais, et y'a quelques bibliothèques, donc y'a Arrow, y'en a 2-3 autres je saisplus les noms, mais si vous tapez Python date library vous allez les trouver, et ellessont justement un petit peu toutes dans le même style, mais ça va vous permettre d'avoir
00:12:35 :quelque chose de beaucoup plus facile à manipuler, par exemple Arrow on peut lui donner une chaînede caractère et il va récupérer une date à partir de ça, donc si vous pouvez donnerune chaîne de caractère, et des fois même y'a une bibliothèque c'est pas Arrow maisc'est une autre où ça marche dans toutes les langues, c'est assez incroyable, j'en
00:12:49 :parlais dans une des vidéos que j'avais faite sur la formation sur les dates justement,si quelqu'un veut d'aller la retrouver sur le site et la mettre dans le chat, donc c'esten fait, c'est ça vous pouvez dire par exemple il y a 2 jours et il va vous donner la date
00:13:07 :d'il y a 2 jours, vous pouvez aussi lui donner un texte et il va scanner le texte et trouverdans le texte les occurrences de date et vous les sortir sous format d'un objet date quevous allez pouvoir manipuler. Avec Arrow ce qui est très cool c'est que vous pouvez faire
00:13:19 :aussi des range, vous pouvez lui dire récupère moi le début de la semaine, récupère moile 5ème jour dans la semaine de tel mois etc, donc c'est vraiment très très pratique.
00:13:28 :Donc voilà pour les dates, c'est le genre de truc qu'on a toujours besoin à un momentou à un autre des dates, je pense que quelqu'un a trouvé, voilà la formation, merci Lionel.
00:13:40 :Donc effectivement c'est dans celle-ci, je sais plus dans quelle vidéo ici j'en parle,je sais plus c'est peut-être les classes, ou créer une date à partir d'une chaînede caractère, je pense que c'est là-dedans que j'en parle, dans la 3ème vidéo, doncvous pouvez aller voir si ça vous intéresse. Donc ça c'est pour les dates, Pillow c'est
00:14:00 :pour la gestion d'image, donc c'est plus utilisé, je dirais, moi je l'utilise justementsur DuckString pour, vous voyez, quand n'importe quelle image que je ploade sur DuckStringje la fais passer par Pillow pour réduire le poids de l'image, donc en fait c'est trèspratique parce que ça permet sans que j'ai besoin à chaque fois que je ploade une image
00:14:17 :de me dire bon il faut que je l'ouvre dans Photoshop ou que je passe par un service commeTinyJPG ou TinyPNG qui d'ailleurs je pense, enfin ça m'étonnerait pas qu'il passe pardes librairies comme ça, peut-être pas Pillow directement, mais c'est un projet que j'avaisenvie de faire d'ailleurs sur Django, de montrer comment on peut faire un genre de SASS,
00:14:36 :SASS pour ceux qui connaissent pas, qui s'écrit comme ça, un Software as a Service, en grosde faire un logiciel sous forme de site web si on peut résumer comme ça, donc le sitedont je parle par exemple c'est TinyJPG, c'est un site, il y a TinyJPG et TinyPNG,
00:14:53 :mais c'est le même site au final, c'est des sites qui vous permettent de vous dropperdes images et ça va vous les retourner, compresser. Donc généralement on fait ça avant d'uploader
00:15:02 :des images, moi j'avais pas envie à chaque fois de me dire il faut que je pense à compresserles images pour pas qu'elles pèsent une tonne sur le site, donc dès que j'uploade uneimage sur DuckString j'ai Pillow qui va faire une version optimisée en enlevant les métadatas,en compressant un petit peu l'image etc. Donc Pillow très pratique aussi, il y a des formations
00:15:20 :aussi sur DuckString là dessus, sur le traitement d'images avec Pillow. Ensuite j'ai mis PyTestparce que PyTest justement c'est celui qui revenait, j'ai tapé juste pour voir ce quiressortait, j'ai tapé most popular python libraries sur Google et PyTest ressortaittrès souvent et je trouve ça drôle parce que tu vois PyTest c'est là encore un peu
00:15:40 :un truc qu'on aimerait, bon il y a Unitest qui est disponible dans la bibliothèque standardmais PyTest est quand même plus robuste si tu fais vraiment des tests à longueur dejournée ou juste si tu en fais régulièrement. Et donc PyTest revenait très souvent mais
00:15:53 :là encore c'est finalement une bibliothèque qui est tellement courante qu'on a presquel'impression qu'elle fait partie de la librairie standard, comme Re pour les regex, qui d'ailleursje pense que les regex, celle-ci elle fait partie de la librairie standard, donc le nomde la librairie est impossible à prononcer, Re, R-E, qui veut dire Regular Expression,
00:16:12 :qui est le raccourci de regex qui lui-même est un raccourci de Regular Expression, expressionrégulière. Le module random aussi, je pense que vous l'avez tous vu avec le jeu de rôle,
00:16:22 :on en a besoin pour le jeu de rôle et ça arrive quand même assez régulièrement qu'onait besoin de valeurs aléatoires, donc je l'ai mis aussi, et pandas pour tout ce quiest gestion de, tout ce qui est un peu data science. Et là encore tu vois, panda c'est
00:16:35 :un truc qui revenait très souvent et je me dis en fait il y a des gens, moi je penseque j'ai passé bien 5 ans à faire du python sans jamais avoir besoin d'utiliser panda,c'est quand à un moment j'ai commencé à faire pas mal de tableurs, de comptabilité,
00:16:47 :des trucs comme ça, d'analyse, justement des visiteurs sur le site qui veulent savoiril y en a combien qui viennent de telles sources de youtube, de discord etc. Donc là tu peux
00:16:57 :effectivement passer par pandas pour automatiser ce traitement des données, mais là encoreil y a des gens qui vont jamais l'utiliser de leur vie. Donc voilà je le voyais très
00:17:08 :souvent revenir, numpy, matplotlib, pandas qui sont donc 3 modules qui permettent defaire de la manipulation de données, du traitement de données scientifiques un peu, d'afficherdes courbes etc. Donc qui sont absolument indispensables en data science et si tu fais
00:17:21 :du web ils vont te servir pas à grand chose. Regexpoll c'est pour vérifier des patterns,je sais jamais comment on dit, des patterns, des motifs, je crois que c'est le terme françaismais je trouve que pattern est plus représentatif, ouais des motifs, si ça peut être ça. Par
00:17:45 :exemple si tu veux vérifier, les exemples les plus courants c'est si tu veux vérifierque quelqu'un rentre bien une bonne adresse mail, tu vas vérifier qu'il y a au moinsun arrobas, mais pas plus, donc qu'il y a un arrobas, au moins un et qu'un seul, queça finit bien par un point quelque chose et tu peux vérifier si ça finit par.com,
00:18:03 :.fr,.org ou juste dire il faut que ça finisse par point et une suite de lettres, entre uneet trois lettres on va dire. Donc tu vas te faire des recettes comme ça en fait qui vont
00:18:11 :te permettre de vérifier ces choses là et éventuellement aussi de récupérer dansun texte, ça vérifie les patterns et ça te permet de les extraire aussi. Tu pourrais
00:18:21 :dire justement, dans ce texte là je veux récupérer tous les numéros de téléphoneet comme justement les numéros de téléphone ça peut prendre plein de formes différentes,tu pourrais lui dire cherche moi quelque chose qui potentiellement commence par plus, maisc'est pas obligé, qui ensuite peut avoir soit cinq suites de chiffres, soit trois suites
00:18:40 :de trois chiffres pour les numéros américains, avec peut-être des espaces, peut-être destirets, peut-être des points, et tu peux te faire une régex longue comme ça, quiva te récupérer tous ces quatre figures et après tu passes ça dans une grande chaînede caractère et ça va te récupérer du coup tous les trucs qui matchent ce motif.
00:18:55 :Donc c'est très très très pratique. Et voilà j'ai fini le café. Donc voilà pourles régex, mais là encore c'est vrai que c'est pas forcément les trucs dont on abesoin très régulièrement. Il y a un étudiant qui a un projet là qui est très très intéressant,
00:19:13 :c'est vraiment un projet pour son boulot là, où il a des fichiers, la webcam quibouge, il a en fait, alors malheureusement il peut pas trop le partager dans la communauté,on regarde ça en privé parce que du coup c'est pour son boulot et les données sontconfidentielles, mais c'est super intéressant parce qu'il a trois fichiers en fait qui
00:19:31 :sont vraiment, avec des informations récupérées, il y a des quatre figures, des exceptionspartout. Donc en fait il doit récupérer après le symbole égal des trucs, mais des
00:19:41 :fois c'est à la ligne d'après, des fois il y a rien, donc justement il a commencéà partir sur des expressions régulières, finalement on s'est rendu compte que c'étaitpeut-être plus simple d'identifier d'autres patins qui étaient toujours les mêmes sansavoir besoin de passer par les expressions régulières. Et il a vraiment un cas de figure
00:19:56 :où à la fin moi je lui ai dit en fait il a plein de valeurs à récupérer, je luiai dit de faire une recette pour chaque valeur, parce que chaque valeur a des cas de figuredifférentes, des fois il va y avoir un égal, des fois deux égals, des fois il y a des
00:20:06 :espaces après avant, et on pourrait passer par une regex pour ça, mais en fait il yavait toujours un ou deux cas de figure qui rendaient du coup la regex soit super compliquée,et en fait on se disait ça vaut mieux gérer ces cas de figure à côté, vu qu'il avait
00:20:21 :cinq ou six valeurs différentes à récupérer, mais il aurait pu potentiellement passer parune regex pour ça. C'est un très bon cas de figure de manipulation de données. Donc
00:20:32 :voilà un peu pour cette discussion sur les modules, je sais pas si ça répond du coupun peu à ta question Paul, et après moi comme je te dis vraiment la meilleure façonde découvrir des modules c'est de faire des projets, et de faire des projets variésjustement aussi, ce qui va te permettre de découvrir des fois des modules comme Questionary
00:20:49 :que je connaissais pas et où je me dis ça peut être très pratique, de des fois reveniraussi de se dire bon ben j'ai beau faire des programmes à l'interface graphique toutle temps, est-ce que je peux pas finalement grâce à ces petites bibliothèques m'épargnerde faire une interface graphique et finalement avoir quelque chose de quand même très cool
00:21:06 :à utiliser, je pense à Typer aussi, Typer que Romain a utilisé sur son projet justement,il y a une formation aussi là dessus sur DuckString qui permet de faire beaucoup plusfacilement des projets en ligne de commande. Salut Vincent, on parlait de SaaS tout à
00:21:23 :l'heure, je me disais que ça s'intéresserait à Vincent, je disais que j'avais envie defaire un projet comme TinyJPG, j'avais pas terminé d'ailleurs là dessus, je penseque ça peut être très intéressant parce que ça montrerait à la fois justement commenton peut utiliser autant Python sur le côté site web, donc comment on fait le site web
00:21:43 :avec Django ou Flash par exemple, et comment derrière on peut utiliser une librairie commePillow pour faire ce que fait le site web vraiment, c'est à dire dans ce cas-ci réduirele poids des images, donc je trouve qu'il y a des services comme ça où on peut vraimentutiliser Python à 100% quoi, et autant pour le site que pour ce que ça fait derrière.
00:22:06 :Dernière question, PySide 2, PySide 6, c'est juste que PySide 6 c'est la dernière version,alors c'est bizarre parce qu'effectivement il y a le gap entre le 2 et la 6, c'est justequ'en fait il y a eu PySide et PyQt qui étaient les deux premiers bindings sur Qt, ensuite
00:22:25 :il y a eu PySide 2, il y a eu PyQt 4, PyQt 5, donc à un moment ça partait dans tousles sens et finalement je ne sais plus pour PyQt s'ils ont fait ça aussi, mais en faitlà ils se sont alignés sur la version de Qt, donc la dernière version de Qt c'est
00:22:38 :Qt 6, et donc du coup ils se sont dit pour pas que l'on continue avec PySide 3 et puisPyQt, je crois que PyQt justement c'était aligné déjà sur la version 5, donc il yavait PyQt 5 qui correspondait à Qt 5, et il y avait PySide 2 qui correspondait à Qt
00:22:52 :5, donc du coup tu vois ça faisait plein de nombres comme ça qui n'étaient pas forcémentalignés, et donc ils se sont dit bon bah maintenant on s'aligne avec la version deQt donc PySide 6, c'est un peu le PySide 3 si tu veux, mais qui est en fait la dernière
00:23:05 :version qui est alignée avec Qt, et quand on aura Qt 7, on aura PySide 7 et PyQt 7 aussi.Voilà, donc maintenant, les bases de données, donc les bases de données, à moins qu'ily ait d'autres questions sur les modules, pour finir ça. Non pas d'autres questions.
00:23:29 :Vincent je vais t'inviter à participer aussi, on a eu un petit souci là, faut que j'inviteles gens à la main. Normalement ça se fait tout seul. Ok, donc, super. Ouais ouais, je
00:23:44 :sais pas, je vais revérifier, c'est bizarre je sais pas, c'est la première fois que çanous fait ça. Donc, les bases de données, hop je vais vous partager mon écran parce
00:23:54 :que j'ai pas mal de choses, et je vais essayer de vous partager, ouais alors je pense queça va faire l'effet cascade encore, même si je partage que ça, voilà. Alors, ouais,
00:24:05 :je sais pas pourquoi, bon j'avais commencé mon onglet par graphique, mais en fait, doncla question qu'on avait de Arthur, voilà, parce que justement c'est ce que je disais,c'est la question qui était, que Arthur avait commencé avec SQLite 3, que je montre jecrois justement au début dans les formations sur docstring sur les bases de données, parce
00:24:25 :que c'est une bibliothèque très simple avec un fichier sur le disque, c'est d'ailleursaussi la librairie et le système de gestion de bases de données qui est utilisé sur lesprojets Django quand vous commencez, et justement il y a un peu cette confusion parce qu'ily a SQLite, SQLite 3 c'est le nom de la librairie en fait Python, et après il y a le moteur
00:24:48 :SQLite, donc là si vous voyez j'ai fait, je vous ai affiché la page Wikipédia, etce qui est très intéressant, je vais vous montrer, on va essayer de démystifier unpetit peu tout ça, c'est de voilà, de distinguer la différence entre tout ça, parce qu'aprèsdonc Arthur parlait de SQL alchemy qui lui est un ORM, donc c'est très confus parce
00:25:04 :que souvent en fait, voilà, vous voyez le SQL qui revient à toutes les sauces, saufdes fois justement dans des systèmes de gestion de bases de données justement qui ne sontpas SQL, qui font partie de la mouvance NoSQL, NoSQL je crois que voilà je l'ai là, j'avaisce site web que j'ai trouvé très bien fait, je vais vous le mettre dans le chat, et si
00:25:25 :vous voulez lire un petit peu, revoir plus en détail, mais on va repasser sur ce siteparce que justement je trouve qu'ils expliquent très bien, le NoSQL justement, et je croisque ça fait encore débat, j'étais plus sûr, mais effectivement ils en parlent ici,où est-ce que c'est, la différence, je sais plus je croyais qu'ils en parlaient,
00:25:43 :oui voilà, non, je sais plus, voilà c'est ça, qu'effectivement on pense que NoSQLça veut dire pas de SQL alors qu'en fait, moi il me semblait que, enfin les gens s'étaientaccordés pour dire que c'était cette version qui était la version officielle, que NoSQLça voulait dire pas seulement SQL, donc est-ce que c'est qu'il n'y a pas de SQL,
00:26:03 :il y a certains systèmes de gestion de base de données NoSQL qui effectivement ne fontpas du tout appel à du SQL, et il y en a qui effectivement sont un peu plus des hybrides.
00:26:10 :Dans ceux qui sont très connus, il y a MongoDB et Redis, qui sont donc des systèmes NoSQL,et donc ce fameux SQL déjà, qu'est-ce que c'est, qu'est-ce que ça veut dire,SQL donc c'est l'abréviation de Structural Query Language, Structured, ouais c'est ça,Structured, je dis ici, donc c'est un langage de requêtes structurées en français, oui
00:26:32 :c'est ça, il s'est marqué là, langage de requêtes structurées, donc c'est vraimentun langage, c'est vraiment comme Python, c'est un langage qui va vous permettre deparler à votre base de données, et vous allez voir aussi beaucoup de sigles commececi, le sgbd, avec des fois le r justement, donc il y a sgbd qui veut dire système de
00:26:50 :gestion de base de données, et le r qui est relationnel. Et justement par exemple MongoDB,ça va être un système de gestion de base de données, vous voyez vous avez retrouvésouvent là, si vous regardez en fait, si vous tapez, c'est ce que je trouve assezcool, si vous tapez le nom d'un sgbd justement sur Google, dans la petite fiche ici qui vous
00:27:08 :met, dans le type, ça vous le montre bien, vous voyez là c'est un sgbd no SQL, doncc'est bien un système de gestion de base de données, c'est un système pour fairesimple qui va vous permettre de gérer des données, et après justement il y en a quivont être orientés de différentes façons, donc il y a les bases de données relationnelles,
00:27:25 :donc ça c'est souvent ce qu'on entend par le SQL, ça va être des tables, on va direcomme pour ceux qui ont fait du Django vous avez dû le voir, donc ça va être par exemplePostgreSQL aussi, MySQL, SQLite, donc ça va être l'idée qu'en fait on va définir
00:27:37 :un modèle de table, on va dire voilà on a une table pour les utilisateurs, dans cettetable il y a la colonne pour le nom, la colonne pour le prénom, pour le mail, l'adressemail, le password, l'âge, tout ça, donc on va avoir un schéma qui va être défini
00:27:52 :et après on va remplir ce schéma avec des données, on va dire voilà dans cette tabletu mets un premier utilisateur avec ses informations. Donc on a quelque chose qui est assez statique,
00:28:01 :qu'on peut faire évoluer bien sûr mais qui est assez défini, et on range les trucsdans des cases comme ça dans des tables par la suite. Après on a des systèmes qui sont
00:28:10 :justement comme GraphQL, MongoDB, Redis, il y en a certains justement qui vont aussiavoir au-delà du système de gestion de bases de données en tant que tel, qui vont avoirun langage associé si vous voulez, donc par exemple GraphQL vous voyez ça va ressemblerun peu à du JSON, donc si on récupère des données de GraphQL ça va nous les retourner
00:28:28 :sous cette forme là, ce qui n'est pas le cas vraiment de, je réfléchis, si je nedis pas de bêtises, mais oui c'est ça quand on fait du SQL, généralement ça va pasnous retourner ça sous format comme ça un peu JSON, quoi que je réfléchisse, je suisen train de réfléchir aux différents cas de figure, parce que je pense beaucoup aussi,
00:28:49 :moi je suis à fond dans Django toute la journée, et Django forcément avec la surcouche d'ORMça nous retourne des objets pythons, donc c'est pour ça que je réfléchis si on repartau niveau purement SQL, mais vous voyez ici en fait, juste pour vous dire que là dansle cas de GraphQL, une requête ça va ressembler à ça, donc là vous voyez pour ceux qui
00:29:06 :ont fait du SQL, du SQL c'est pas ça du tout, je vais vous montrer SQL, à quoi çaressemble, je pense que je vais le retrouver ici, on va avoir des exemples, voilà, duSQL ça ressemble à ça. Donc c'est très déclaratif en fait, on va dire sélectionne
00:29:23 :ça depuis telle table si le statut est égal à stagiaire et tu me les orders by le nom.Donc voilà c'est très DropDatabase, voilà on veut supprimer une database, on dit DropDatabase,on donne le nom et ça supprime la base de données. Donc ça c'est du langage SQL qui
00:29:38 :va nous permettre justement de récupérer des informations, avec GraphQL ça va êtrequelque chose de différent, donc il faut bien essayer de faire la différence entretout ça, vous avez plein de systèmes de gestion de base de données, donc le SGBD,après vous avez certains qui vont être donc des relationnels, SGBDR, vous allez en avoir
00:29:56 :d'autres, donc de la famille des NoSQL qui vont être des systèmes de gestion de basede données aussi, qui vont stocker des données, mais différemment, MongoDB par exemple çava être des documents, donc ça va être un peu, c'est un peu comme si chaque donnéeque vous stockez ça va créer un fichier avec, un peu comme un fichier JSON, on pourrait
00:30:12 :simplifier comme ça en disant que voilà ça va faire un fichier JSON avec des informationset vous allez créer plein de fichiers JSON et c'est un peu ce qui est reproché des foisaux bases de données NoSQL, c'est que souvent c'est plus rapide, mais du coup on a un peu
00:30:24 :plus de redondance des données des fois, parce que ça veut dire qu'il faut remettredes informations qu'on a déjà quelque part avec un autre jeu de données, et ce qu'onpeut faire généralement dans les bases de données relationnelles avec des jointures,on peut dire tu me récupères ça et tu vas vérifier dans telle autre table en récupérant
00:30:44 :la clé primaire de l'utilisateur, tu vas récupérer ce qui est relié à l'utilisateuretc. et ça permet d'éviter un peu la duplication d'informations. Après forcément, du coup
00:30:53 :c'est, enfin forcément pas forcément, mais les bases de données relationnelles sontréputées être un peu plus lentes, après là encore, ce que je vois très souvent,l'erreur qui est faite, c'est un peu le nombre de gens que je vois qui partent sur GraphQLparce que c'est un peu comme React, c'est vraiment GraphQL et React, je les mets un
00:31:09 :peu dans la même catégorie, et ça vient de Facebook, je sais pas si c'est l'explicationde ça, mais le nombre de gens qui ont le temps de parler de GraphQL et qui du coupse lancent dans GraphQL parce qu'on leur dit ah oui c'est rapide, c'est Facebook qui a
00:31:22 :créé ça, c'est la Rolls Royce etc. et en fait vous vous rendez à, vous devez apprendreun nouveau langage, si vous voulez l'utiliser dans des projets avec Python, bah du coupça rajoute des dépendances, c'est pas forcément super vu que c'est un truc un petit peu highend aussi, vous avez pas forcément énormément de ressources de tuto et tout là dessus,
00:31:41 :donc en fait vous vous rajoutez un peu une épine dans le pied, et finalement tout çapour avoir généralement des requêtes qui vont être minuscules. Moi sur Dockstring
00:31:49 :je suis avec une base de données Postgres, il y a énormément d'applications qui ontdes centaines de milliers d'utilisateurs qui fonctionnent avec des bases de donnéesrelationnelles et qui n'ont aucun problème de performance. Donc là encore faut pas mettre
00:32:01 :la chariot avant les bœufs, commencez avec des trucs simples avant de partir dans laRolls Royce mais qui va vous compliquer la vie. Je reviens un petit peu là, je vérifie
00:32:11 :s'il n'y a pas des questions, n'hésitez pas si vous avez des questions, si vous voulezm'interrompre. Salut Guillaume! Donc, hop je vous évite l'effet cascade, Redis c'est
00:32:24 :très intéressant, Redis c'est très très rapide, parce que justement c'est un systèmeen cache, et c'est assez marrant, c'est vraiment, on le retrouve très souvent, mais justementutiliser en plus, il y a des projets qui n'utilisent que Redis, mais souvent en fait on voit unpeu les deux, on voit des bases de données relationnelles pour les datas en général
00:32:42 :qui vont être stockées avec une base de données relationnelles, et Redis en faiton va l'utiliser pour vraiment les endroits où on a besoin de performances qui doiventêtre très élevées, des performances élevées oui c'est ça. Une petite question, sur Django
00:33:01 :et Postgres il y a aussi certains champs de modèles uniquement accessibles via Postgres,alors oui je sais pas si c'est à ça que tu fais référence, mais je crois que récemmentd'ailleurs, je sais plus si c'est récent, mais je me rappelle avoir vu le jsonfield,oui il y a certains dans Django, il y a certains champs qui sont réservés, Django fields,
00:33:22 :il y a certains champs qui sont spécifiques aux bases de données Postgres, après çaveut pas dire que du coup c'est plus un champ que si tu utilises Postgres, bah tu vas pouvoirl'utiliser en plus, mais du coup ça va pas te limiter si tu utilises un autre système
00:33:39 :de gestion de bases de données. Je reviens sur Redis, vous voyez là ici par exempleon a base de données, clé valeur, donc là vous voyez on est plus dans le relationnel,en fait ça ressemble beaucoup à un dictionnaire en fait, Redis, et vous allez lui dire bonbah l'utilisateur avec telle adresse mail, voilà il a tel âge, et comme ça vous allez
00:34:00 :pouvoir récupérer cette information très rapidement en lui disant bah voilà je veuxrécupérer l'âge associé à cette adresse mail et il va vouloir tourner en un millionièmede secondes. Donc voilà un petit peu, il y a des librairies aussi, je vous ai montré
00:34:13 :ici, celle là je me rappelle j'avais adoré quand j'avais découvert ça, c'est Neo4j,c'est en fait une base de données en graph, et c'est génial parce qu'ils ont une visualisationcomme ça en plus, donc quand vous découvrez ça vous vous dites waouh trop bien, vousavez plein d'idées de projets, et moi j'avais passé une semaine à l'époque, parce que
00:34:34 :justement c'était quand j'étais dans les pipelines d'effets visuels où justementj'avais beaucoup de données à gérer, finalement vous voyez on n'était pas passé là dessusdu tout, parce qu'au niveau de la production ils avaient des trucs très tableur Excel,et moi j'étais parti à fond là dedans parce que je me disais c'est trop bien en fait
00:34:50 :on va pouvoir avoir, donc là c'est un système de film, donc vous voyez vous pouvez direbon bah à partir de tel bonhomme je veux voir les relations avec les autres, ou nonc'est Jerry Maguire ça doit être un film, Matrix voilà Matrix on peut étendre lesrelations, et voilà on voit qu'il y a Hugo Weaving qui a joué dedans, on voit que lui
00:35:07 :c'est le producteur, c'est les Wachowski qui l'ont dirigé, les frères, les soeursmaintenant, donc Karim, Karim, Karim, Karim, Karim, Karim, Karim, Karim, Karim, Karim, Karim,donc voilà vous voyez vous avez cette visualisation qui est assez marrante, après en fait au-delàde la visualisation, c'est ça qui est marrant c'est que moi quand j'ai découvert ça
00:35:27 :je me suis dit c'est trop bien, on va pouvoir limite gérer des pipelines comme ça, eten fait finalement non vous gérez pas votre truc comme ça, je sais même pas si c'estpossible en fait au-delà de la visualisation de le faire, je m'en rappelle plus, maisnon au final ça va être du code qui va gérer tout ça, c'est juste marrant à un moment
00:35:44 :de pouvoir avoir cette visualisation, ça peut être pratique dans certains cas, maisfinalement c'est quand même une petite partie de ce système de gestion, ce qui est surtoutintéressant c'est le côté relation qui gère derrière, mais bon je vais pas trop rentrer dansles détails. On avait une question, est-ce qu'il y a le pour créer cette table dans la base de
00:36:05 :données ou ORM? Ouais, justement on va arriver à cette question là, parce que c'était donc là j'aifait un petit peu un aperçu de la différence entre les bases de données relationnelles,les bases de données clés-valeurs, enfin vous voyez il y a plein de systèmes de gestion debases de données différents qu'on oppose souvent dans ces deux catégories de bases de données
00:36:24 :SQL et NoSQL, sachant que SQL fait souvent référence à cette idée de base de donnéesrelationnelle avec justement ce langage SQL et les autres qui vont utiliser d'autres langages etd'autres façons de fonctionner. Et après par-dessus tout ça effectivement on a ce qu'on appelle les
00:36:41 :ORM qui veut dire Object Relational Mapping. Donc un ORM en fait qu'est ce que c'est? Ça le dittrès bien et je vous explique beaucoup plus en détail dans la formation de Django. Ça le dit
00:36:52 :très bien c'est que, et là je vais arrêter le partage d'écran, j'en ai plus besoin, un ORMdonc c'est en fait, il y a plusieurs façons de voir le truc, il y a la façon purement,j'allais dire, explication scientifique et qui fait relation aux sigles ORM. Si on veut faire
00:37:11 :simple on pourrait dire que c'est une façon, surtout dans Django et avec Python, c'est unefaçon de gérer des bases de données sans avoir besoin d'écrire de SQL. On pourrait le résumer
00:37:21 :à ça parce que du coup quand vous allez utiliser un ORM, généralement vous n'allez pas écrire decode SQL directement, vous allez écrire du Python et après tout ça va être transformé par l'ORM enrequête SQL donc ça met une couche entre vous et le SQL. Ça permet notamment, le gros avantage c'est
00:37:38 :que ça permet aussi de changer de système derrière justement, c'est que vous pourriez avoir,imaginez un projet Django justement, vous pouvez avoir SQLite ou PostgreSQL derrière ou mêmed'autres systèmes, c'est souvent quand même PostgreSQL qui est utilisé avec Django, mais vouspourriez mettre un autre système de MySQL par exemple et en fait vous, vous allez garder votre
00:37:57 :code avec l'ORM qui ne va pas bouger et si jamais à un moment, c'est quand même assez peu conseillé,mais si jamais vous devez changer de système de gestion de base de données justement derrière,vous n'avez pas besoin de réécrire tout votre code parce qu'imaginez que vous passiez d'un code
00:38:12 :qui utilise du SQL et puis qu'après vous passez sur un système de gestion de base de données quin'est plus en SQL, derrière du coup va falloir réécrire toutes les requêtes pour que çautilise le bon langage. Là quand vous passez par l'ORM, il y a du coup cette surcouche qui est
00:38:26 :faite et il faut regarder justement votre ORM avec quoi il peut fonctionner parce que du coup ça veutdire que les gens qui ont codé l'ORM, ils l'ont codé pour que ça fonctionne avec différentssystèmes de gestion de base de données, donc il n'y a pas de magie. En fait quand vous faites une
00:38:39 :requête pour dire je veux récupérer les utilisateurs et vous l'écrivez en Python,derrière si vous utilisez MySQL ou PostgreSQL ou d'autres systèmes justement ça va être desrequêtes différentes potentiellement derrière. D'ailleurs je pense que je vais regarder ici,
00:38:53 :si on regarde ORM, je regarde dans la documentation de Django, opération de migration,base de données, je regarde ici, voilà donc vous voyez c'est ça, je vais vous repartager l'écran,tac, et je vais vous partager l'onglet même comme ça ça fera pas l'effet domino, base de données,celui-là. Donc vous voyez ici c'est expliqué, voilà Django prend officiellement en charge les
00:39:31 :bases de données suivantes donc MySQL, SQLite, PostgreSQL, MariaDB et Oracle. Et d'ailleurs jesais pas, MariaDB et Oracle, vous voyez c'est des systèmes que j'ai jamais utilisés, Oracle etMariaDB employés pour utiliser, ouais je demande MariaDB du coup, donc là vous voyez si on tapeMariaDB on va voir assez rapidement, donc voilà on est bien avec un système de gestion de base
00:39:55 :de données, ça c'est normal, relationnel du coup, effectivement, il s'agit d'un embranchement deMySQL donc j'imagine que ça utilise du SQL derrière, mais comme je vous dis c'est pasforcément toujours le cas, je réfléchissais à ça, je me demandais s'il y avait toujours,je me demandais s'il y avait des bases de données relationnelles qui n'utilisaient pas de SQL,
00:40:14 :mais je me dis que ça doit probablement exister, donc voilà en fait vous savez que si je reviens,ah oui merde je vous ai partagé juste l'onglet du coup vous avez pas vu ma petite recherche surMariaDB, mais bon c'était le même encart à droite qui indiquait le type de base de données. Donc là
00:40:31 :vous voyez en fait c'est ça, on pourrait à un moment se dire bah j'ai commencé avec SQLiteou MySQL ou MariaDB et je veux migrer à Postgres, et alors il y a peut-être quand même des petitstrucs, vous voyez il y a toute une page d'ici justement sur les mises en garde, notes, paramètres
00:40:44 :de connexion, donc il y a peut-être quand même des petits trucs à prendre en compte à certainsendroits très précis, il faut quand même faire gaffe quand vous changez de gestion de systèmesde bases de données derrière, c'est pas non plus un truc qui se fait en un claquement de doigts,
00:40:56 :donc voilà, mais l'idée c'est quand même ça, l'idée c'est quand même que, l'idée c'est quandmême que bah du coup vous pouvez éventuellement changer de système derrière. Et si on revient
00:41:08 :donc au sigle ORM directement, donc ce Object Relational Mapping, c'est cette idée que vousallez avoir en fait un mapping, donc une mise en relation, enfin ouais une mise en relation,un mapping, qui me trouve la traduction, un mapping, une relation entre le côté justement,entre ce que vous avez du côté de la base de données, un lien, c'est plus qu'un lien en fait,
00:41:39 :c'est vraiment le fait que vous allez avoir une équivalence en fait entre deux choses,et donc par exemple, si je prends l'exemple de l'ORM de Django, mais enfin c'est le principedes ORM en général, avec une base de données relationnelle, vous allez avoir donc comme jevous disais dans une base de données relationnelle, vous avez les tables, et à l'intérieur de ces
00:42:04 :tables vous allez avoir des entrées. Et donc là en fait on va mapper ça vraiment sur le conceptd'objet qu'on a en Python, c'est à dire que vous le voyez avec les modèles Django, je vais vousmontrer en fait, je vais vous partager directement, je vais vous montrer mon blog post, je vais vous
00:42:21 :partager mon PyCharm, alors Windows, PyCharm, donc vous voyez ici on a le modèle blog post dedocstring, et tout ça ici, donc ça c'est en fait des attributs de classe, donc en fait cette classeelle représente directement la table de ma base de données qui est la table blog post, qui va
00:42:43 :contenir tous les articles de blog. Et ensuite on va avoir, donc si en Django je fais blog post.object.all,ça va me retourner un query set, donc dans cette variable ici, et ici en fait j'aurai des instancesdu coup, donc là on est vraiment comme je vous dis dans l'orienté objet, on va avoir des instances
00:43:01 :de cette classe, avec donc si je faisais par exemple for post in blog post, là je pourrais direaffiche moi le title et le content, je vais avoir un content, donc voilà affiche moi le titre et lecontenu de ce post, qui va donc être une ligne en fait dans la table de ma base de données. Donc on
00:43:21 :a vraiment cette relation entre l'objet ici qui représente une table, et on n'a pas besoin du coupde le définir, vous voyez tout ça c'est du Python, mais après moi quand je fais une migration, si onva voir dans, où est-ce que c'est dans blog ici, alors je les ai masqués, tree appearance show excluded,
00:43:41 :voilà, dans les migrations vous allez voir qu'en fait on a des fichiers de migration, et si jeprends par exemple le initial, voilà en fait on a donc là encore Django qui va dire qu'au départvoilà j'ai fait une migration et il faut créer ce modèle, et donc ça c'est le nom de la base
00:43:56 :de données, on va voir ces champs ici avec ces options, et si je vais voir create model, vousallez voir que, je suis jamais allé voir ici, je me dis qu'à un moment on va probablement trouverdu SQL quelque part, où ça après faudrait peut-être remonter, donc là on est dans le modèle opération,
00:44:14 :on va remonter un petit peu le fil, ouais donc là c'est not implemented, donc je sais pas oùc'est implémenté, mais bon à un moment voilà il y a cette cette implémentation qui va être fait pourpasser de ça ici à du code qui va permettre de créer, en fait quand on fait un migrate on va
00:44:32 :créer la base de données, et donc nous on reste tout le temps avec comme ça ici du Python, on ditvoilà on veut un title, donc là c'est vraiment de la syntaxe de Python, c'est du Python, quand on varécupérer les entrées, pareil, vous voyez ici on va dire récupère moi tout, si on veut filtrer,
00:44:49 :on va dire filtre, on va dire title égal un super article, et donc là on va récupérer tous les,on va faire plutôt voilà, on va faire un iContent, on va dire tout ce qui contient, je sais pas,Django, voilà récupère moi tous les tous les blocs post qui contiennent Django dans le titre du post,
00:45:05 :donc là vous voyez c'est encore une fois un langage qui est uniquement Python, donc on n'a pas besoinde faire du SQL, et on peut d'ailleurs quand on fait ce genre de requête demander à Django,montre moi cette requête ici, ce que ça donne en SQL, et là il nous afficherait probablement
00:45:20 :quelque chose du genre select ça from blog post where du coup title contains un truc comme ça,Django, voilà ça ressemblerait à peu près à ça, et donc voilà, et donc là en fait, et aprèsorder by, enfin tous les trucs qu'on avait vu un petit peu sur le sur le SQL, que nous du coup on
00:45:43 :fait directement en Python. Donc voilà un petit peu pour l'explication de l'ORM, comme je vous disça va beaucoup plus en détail dans les formations si ça vous intéresse, pour ceux qui n'ont pasencore vu tout ça, et je reviens ici, donc il y en a probablement certains à qui ça parle un peu
00:45:59 :plus que d'autres, mais voilà c'est le gros intérêt, et c'est la question qui revient aussiassez souvent, il y a beaucoup de gens qui se demandent est-ce que je veux apprendre SQL,moi je le montre dans les formations parce que je montre les bases de données et du coup je
00:46:14 :m'étais dit que c'était intéressant quand même de montrer du coup un peu de SQL et de pas partirdirectement avec un ORM, après je dirais que c'est pas forcément, enfin voilà il y a différentesapproches, ça peut être intéressant aussi de ne pas trop s'embêter directement avec du SQL et de
00:46:29 :profiter tout de suite de, si vous êtes à l'aise avec Python, avec l'orienté objet justement,de se dire je reste là dedans et j'apprends un ORM que ce soit SQL, Alchemy ou directement avecl'ORM de Django si vous faites du Django, il y a PeeWee, SQLAlchemy et il y en a un autre dont
00:46:44 :j'oublie le nom qui sont trois ORM assez connus, SQLAlchemy est quand même un des plus connus,et donc ça ça vous permet d'éviter, voilà, Pydantic, tu me mets le doute, donc c'est lemec qui a fait FastAPI et tout ça, c'est le gars qui est en train de créer tout l'écosystème qui
00:47:10 :va être super populaire dans les années à venir, Pydantic je suis plus sûr, je regarde ici, ah ouic'est aussi, ouais t'as raison, ah bah tiens c'est, il me semblait que c'était plus un truc de, ouiça a l'air d'être ça, il me semblait que c'était plus un truc de, qui checkait un peu comme le
00:47:30 :typeint là, puisque c'est le mec qui a fait FastAPI qui se base beaucoup sur le typeint,data validation and settings management, ouais je suis pas sûr, alors vérifiez parce que là jeregarde le code et ça ressemble effectivement beaucoup à une base de données, par contre lapremière ligne c'est data validation and settings management, je vais re-checker ça, parce que
00:47:55 :justement ça fait longtemps que je veux faire une formation ORM en dehors de Django et je pensaispartir sur SQLAlchemy du coup, mais si le mec qui a fait FastAPI et tout ça a fait quelque chose,puisque je connaissais le nom mais je pensais que c'était autre chose, et Paul du coup Django part
00:48:12 :sur un ORM, qu'est ce que tu veux dire par part sur un ORM? J'arrête pas de toucher mon microdésolé mais il est dans mon champ de vision et ça me perturbe beaucoup, je pense que jetrouve un meilleur angle. Alors oui oui oui effectivement je réfléchis mais je pense pas
00:48:43 :que tu pourrais t'embêter à ne pas utiliser l'ORM de Django à la limite et tout fairetoi même, ce serait possible de pas l'utiliser mais ce serait un peu bête de s'en priver parceque même au delà de tout ça, le système d'interface d'administration etc c'est basésur les modèles de Django et donc son ORM, donc je vois pas trop dans quel cas de figure tu
00:49:13 :voudrais ne pas l'utiliser. Après je crois, je sais plus, je confonds toujours parce que tupeux changer le moteur de template par exemple pour les fichiers HTML, je crois que tu peuxaussi changer l'ORM qui est utilisé, j'ai un souvenir que j'avais, je me semble avoirdéjà vu ça justement. Si je retourne dans ORM, documentation, base de données,
00:49:46 :ouais faudrait genre vérifier, mais comme je disais, j'ai jamais vu de projet qui utilisaitDjango sans utiliser l'ORM, dans ce cas là sinon j'ai envie de dire tu pars sur Flask ou autrevraiment. Donc voilà un petit peu pour l'aperçu des bases de données, je sais pas Arthur du coup
00:50:13 :si ça t'éclaircit un peu. Flask justement il te laisse beaucoup plus libre parce que par défaut,si je me trompe pas, ça fait longtemps que je n'en ai pas fait, mais je crois que je le voissouvent utiliser justement avec SQLAlchemy, mais il me semble pas que ce soit forcé ou conseillé,
00:50:31 :enfin c'est plus que souvent je le vois utiliser avec SQLAlchemy parce que justement comme je disaisc'est un des plus populaires, mais il me semble pas justement que tu sois limité. Mais ce qui fait
00:50:49 :que justement tu dois, c'est un peu, c'est aussi un petit peu ça avec Django, c'est du coup t'ascet ORM qui est disponible directement, après tous les ORM se ressemblent un petit peu quandmême dans Python, alors je sais pas avec Pydantic ou des trucs comme ça, bon même si c'est Pydantic
00:51:02 :du coup si c'est un ORM j'imagine qu'il est assez bien foutu connaissant le gars qui a codé ça,avec probablement justement les annotations de type et donc ça doit utiliser ça à fond,ce qui doit faire un code assez clean et sympa à utiliser, donc avec quand même une différence par
00:51:19 :rapport aux autres, mais après les principes quand même restent les mêmes, on est toujoursdans la gestion de base de données, donc on a toujours l'idée que tu vas faire des classes ouquelque chose du genre qui va représenter une table ou un modèle, si on est dans le NoSQL
00:51:31 :par exemple, je sais même pas d'ailleurs je réfléchis si les ORM sur des NoSQL, ça j'avouej'ai jamais trop regardé, je me dis que du coup sur GraphQL il doit y avoir des bindings Pythonqui permettent de faire du GraphQL avec du Python et qui dans ce cas là sera peut-être un ORM du
00:51:48 :coup du côté NoSQL à vérifier, mais oui donc après sinon ça va toujours être un peu la mêmeidée, c'est que tu vas avoir vraiment des classes ou quelque chose du genre qui va représenter destables et après des fields, donc des champs qui vont représenter des types de données,
00:52:06 :et voilà pour le côté relationnel comme je dis encore une fois. Si on pense à Redis par exemple,Redis vu que ça fonctionne pas sur ce modèle de table et de relations entre les tables etc,Redis je réfléchis, ça fait longtemps que j'en ai pas fait aussi, à l'époque je crois qu'il y avait,
00:52:24 :je me souviens plus si j'avais utilisé Python, je sais plus, parce que je sais qu'il y a unlangage du coup qui permet de faire des requêtes et tout Redis, et je suis quasiment sûr qu'il y aun binding Python pour le faire avec du Python, faudrait voir. Voilà moi ce que je vous conseille
00:52:43 :après au niveau apprentissage c'est commencer avec SQLite, c'est bien, ça permet de ne pas trops'embêter parce que ça tient dans un fichier donc vous n'avez pas trop besoin de vous embêterdirectement, parce qu'avec Postgres il faut quand même un petit peu rentrer dans le créer unutilisateur, créer une base de données, vous allez quand même devoir un petit peu toucher à du SQL,
00:53:02 :installer des logiciels etc, ça peut commencer à devenir un petit peu chiant si vous n'êtes pashabitué au terminal etc. En plus, donc moi je vous conseille de commencer avec SQLite,
00:53:12 :et si vous voulez utiliser un ORM du coup d'utiliser SQLAlchemy, et donc justement onrevient sur Arthur du coup cette idée que tu peux du coup utiliser SQLite avec SQLAlchemy,donc et tu peux utiliser SQLite avec SQLite 3 qui est la bibliothèque pour Python, mais là du couptu vas avoir besoin de faire des requêtes SQL, donc c'est ce que je montre vraiment dans ma
00:53:37 :formation, ma formation sur les bases de données, j'utilise SQLite via SQLite 3 et j'écris du SQLpour faire les requêtes, pour créer les tables, pour mettre les informations dedans etc. Et du
00:53:48 :coup mon objectif c'était de faire une formation avec l'ORM SQLAlchemy pour montrer comment on peutse passer du coup de cette nécessité d'écrire du SQL. Donc voilà SQLite avec SQLAlchemy, ça
00:54:01 :vous serez assez rapidement in business, après du coup sur l'ORM ça peut être intéressant si vousfaites du Django de passer directement sur l'ORM de Django, et si vous voulez pousser dans les basesde données, Postgres, là encore si vous êtes avec Django encore plus parce que c'est celui qui est
00:54:17 :le plus utilisé, qui vous limitera pas du tout, vous pouvez sans problème l'utiliser pour desgros projets. Et il n'y avait pas quelqu'un qui avait posé une question sur Dockstring? Non je
00:54:29 :sais plus. Ah non c'est, non excusez, j'ai eu une notification sur le chat de quelqu'un qui medemandait si Dockstring était codé en Python, mais du coup c'était pas dans le live ici. Ok,
00:54:45 :donc est-ce qu'il y avait d'autres questions là dessus, des trucs qui n'étaient pas clairs? Etouais du coup Arthur si tu veux étendre ton projet, moi je te conseillerais d'essayer ça,essayer de partir sur du SQLAlchemy, ou je vais regarder par identique. Je vais regarder SQLAlchemy,
00:55:06 :j'avais déjà essayé un petit peu en faisant calculer du SQLite, j'avais fait une brancheen sur le git avec déjà quelques lignes de SQLite, mais ça me plaisait pas trop. J'ai
00:55:18 :regardé SQLAlchemy. T'avais essayé avec quoi excuse? SQLite 3. Ok SQLite 3, oui d'accord,oui. Oui bah c'est que en fait, oui du coup tu dois écrire du SQL quoi. Ouais voilà,
00:55:30 :donc du coup je sais pas si je le fais forcément bien, et puis je trouve que ça met un peu ducode SQL au milieu du code Python, c'est un peu pourri. Ouais ouais, je sais plus si je le fais
00:55:40 :dans la formation sur la base de données, j'ai un vague souvenir de moi qui avait justement,dans une formation qui montrait que je masquais un petit peu du coup ce code SQL en faisant desfonctions, ou je sais plus si c'était dans l'orienté objet, où justement voilà je disais
00:55:55 :je faisais un objet ou une fonction create table, create user, enfin des trucs comme ça, et commeça après dans ton code directement tu utilisais ces fonctions sans avoir besoin d'insérer despaquets de lignes longues comme ça de SQL, de create machin, dans table, truc, si, mais si,etc. Donc ça ressemblait finalement à se refaire un peu son ORM, parce qu'au final c'est un peu ça
00:56:18 :du coup, c'est l'idée que tu vas créer du code Python qui va te permettre in fine de faire duSQL, mais après toi dans ton utilisation tu veux utiliser ton code Python plutôt que lesrequêtes SQL directement. Donc ce qui revient à l'ORM quoi. Enfin ce qui revient à l'ORM justement
00:56:38 :dans sa subtilité dans le sens où l'ORM dans le sens où on va pas, comme je vous disais, ce sensbasique de dire qu'on va pas écrire du SQL, mais après ça veut pas forcément dire justement queon va faire ce mapping entre l'orienté objet ou pas. Si on fait justement une fonction qui s'appelle
00:56:52 :create user qui va juste wrapper une ligne SQL, bah c'est pas vraiment un ORM dans ce cas là,parce que y'a pas forcément cette, si c'est juste une fonction qui crée un utilisateur, y'a pas unerelation entre un objet vraiment et la table dans la base de données. Donc là dans ce cas-ci ce
00:57:08 :serait plus un wrapper Python pour pas avoir à écrire du SQL. Et si vraiment vous avez cetterelation là après entre les deux, bah là vous êtes vraiment dans l'idée du object relational mapping.
00:57:17 :Et oui Arnold, bah FastAPI justement, en fait c'est le même gars qui a fait FastAPI,Pydantic et Typer. Et peut-être d'autres trucs aussi, je crois qu'il y en a un autre,
00:57:32 :me semble, je sais plus, ou c'était peut-être un sous-produit de Typer, je pensais à Colorama,mais je crois pas que c'est lui qui l'a fait. Mais ouais c'est un gars, je crois que c'est un
00:57:45 :brésilien, espagnol, je sais plus. Et c'est super cool, ses documentations sont trop bien. D'ailleursmême là je me demande si c'est pas lui qui a créé le truc de documentation, c'est peut-être çaque je me posais la question. Faudrait que je revoie. Un gars moustache. Parce que je sais,
00:58:08 :je vais regarder ça, je vais re-réexplorer. Parce que me semble que, ouais je regarde là,me semble que son truc de documentation super cool, c'est lui aussi qui l'a créé,mais je sais plus. Made with material for mkdocs. Donc mkdocs. De qui ça vient mkdocs? The Fast
00:58:35 :About Tom Christie. Non c'est pas lui. Est-ce qu'il a une moustache? Dur à dire. Non c'estça, Samuel Colvin, lui c'est le gars qui a fait Pied and Tick, donc non c'est pas le même quia fait les deux. Ah il a pas de moustache. Donc ouais il a fait Pied and Tick. Je commence à
00:59:02 :avoir des doutes parce que je vois pas Pied and Tick et je vois pas Fast API. Ah non Tiangolo,ah bah c'est peut-être pas le même. Oui non c'est lui, Tiangolo, et lui il a une moustache. Donc
00:59:20 :lui il a fait Fast API, Typer, ah non c'est pas le même. C'est juste qu'il doit utiliser,c'est ça qui m'a induit en erreur, il doit utiliser le même moteur justement de documentation que jevois généralement utiliser sur tous les projets de Tiangolo, de Sébastien Ramirez, de son vrai nom.
00:59:37 :Je me disais bien quand même, il vit en Allemagne mais il a un nom et une moustache espagnole. Ilvient de Colombie. Il y avait bien quand même un rapport avec l'Amérique du Sud. Johan, excuse.
00:59:49 :Alors voilà. Donc voilà, je sais pas s'il y avait d'autres, ça fait une heure pile. Je sais pass'il y a d'autres questions. T'as mis sur Youtube du coup tout ce que tu as fait cet après-midi? Non
01:00:09 :pas encore. Alors je vais monter les vidéos parce que bon je me plante à deux trois endroits,enfin les trucs comme ça. Je vais monter ça peut-être ce soir. Je pense que je vais vous
01:00:22 :les mettre dans vos dossiers respectifs, comme ça vous aurez votre correction à vous chacun. Et puispour Youtube, je sais pas, je ferai le montage peut-être un peu plus tard. Donc comme ça je
01:00:32 :vais déjà faire le petit montage de chacune de vos parties, vous les mettre dans vos drives. Il y aLaurent, j'hésite à faire la tienne, pas parce que je te discrimine, mais dans le sens où justementen fait ton code, et c'est ça qui est assez marrant, c'est que je ne l'étais pas fait, j'ai pris les
01:00:50 :quatre scripts, j'ai justement anonymisé quatre ou cinq scripts, j'ai anonymisé, j'ai mis game 1, 2,3, 4, et après j'ai fait les corrections. Et en fait je suis vraiment tombé sur un ordre assez
01:01:01 :chanceux parce qu'il y a vraiment une progression. En fait je les faisais un peu de façon individuelleau départ et puis en fait je me suis dit, ah bah tiens ça en fait on l'avait déjà fait dans unautre script, et à un moment je me suis dit, en fait je vais faire comme si je corrigeais tout d'un
01:01:13 :coup. Et ce qui est très cool c'est que justement il y a vraiment une progression, je suis vraimenttombé les deux, trois premières corrections où on n'a pas vraiment d'orienté objet, ou alorsjustement l'orienté objet n'est pas utilisé, le script d'Arnold, comme on avait vu la semainedernière, où on l'avait remanié pour l'utiliser de façon un peu plus simple. Et après on s'en
01:01:34 :va vraiment là avec Romain et Arthur qui ont fait des projets presque... Alors Romain je sais plussi tu avais fait de l'orienté objet, je crois, oui je crois que tu en avais fait. Et Arthur aussi
01:01:45 :qui a tout fait en orienté objet. Et du coup je reviens à toi Laurent, parce qu'en fait Laurentdu coup je regardais ton script et tout ce que je ferais comme correction sur ton script en faitje l'aborde déjà dans les autres projets, du coup les premiers. C'est les mêmes types d'erreurs,
01:01:59 :c'est vraiment les mêmes choses qui reviennent. Donc je me dis que probablement en fait,je vais te mettre la correction des deux premiers et ça va être appliqué un pour un sur ce quetu as fait. Parce que tu as suivi la même structure justement sans orienté objet, avec la boucle,
01:02:16 :avec tout ça. Donc voilà, je me dis que je n'ai pas une énorme valeur ajoutée à te refaire un30 minutes de correction pour redire en fait la même chose, à moins que vraiment tu me dises ceque tu veux la correction pour ton script, mais comme je te dis vraiment ça va être la même
01:02:33 :chose qui va être redite. Et après du coup, donc là je vais vous mettre vos correctionsindividualisées et après je ferai le montage pour Youtube parce que je pense que ça peut être quandmême là aussi très intéressant de voir justement toutes les façons de faire. Parce que même sur
01:02:48 :l'orienté objet justement Romain il y avait quand même des petites redites avec des choses que j'aipu remettre dans la classe que tu avais faite, si je ne me trompe pas je crois que c'était toi Romain,où tu avais quand même fait cet héritage mais en fait à un moment tu répétais quand même quelque
01:03:01 :chose que j'ai pu mettre dans la classe parente etc. Donc j'ai pu quand même un petit peu optimiserles trucs. Et c'est ça d'ailleurs je trouvais ça très marrant et c'est ça j'avais oublié de dire,
01:03:08 :parce que ça illustre parfaitement le fait que plus vous avez d'expérience, moins vous écrivezde lignes de code. En fait on dit très souvent que quand on fait du refactoring, plus vous allez
01:03:21 :progresser dans le milieu du dev, moins vous allez écrire de lignes de code. Donc c'est vraimentvoilà c'est vraiment, des fois on se dit voilà moi j'ai écrit plein de lignes, en fait non. Et ça
01:03:32 :c'est vraiment l'exemple sur tous vos scripts, à la fin il y a moins de lignes. Même les scripts oùjustement il n'y avait pas grand chose à dire, il y a quand même à chaque fois j'arrive à enleverune petite ligne, à éviter une répétition, soit éviter une répétition pour éviter qu'il y ait
01:03:45 :trois lignes qui se répètent même si c'est juste la même ligne à chaque fois et qu'il n'y a pas ungros bloc qui se répète, ça permet quand même, je crois que c'est sur le deuxième, je ne sais plusc'était lequel, je ne me rappelle plus, mais il y a quelqu'un justement où j'ai réussi à réorganiser
01:03:56 :la boucle pour avoir l'attaque de l'ennemi une fois à la fin de la boucle et pas deux fois quand onprenait la potion etc. Donc voilà je trouve ça assez intéressant de voir qu'on arrive quand même
01:04:06 :toujours à réduire le nombre de lignes et probablement que si je la passais justement à Lionelqui est encore plus expérimenté que moi, il arriverait encore à réduire. Après il ne faut pas que ce
01:04:14 :soit un but en soi non plus parce qu'il ne faut pas arriver à des trucs incompréhensibles, c'esttoujours ça. Et Lionel oui on parle en fait de la petite expérimentation que j'ai faite,
01:04:23 :d'ailleurs demain je vais essayer de le faire, de vous proposer un autre projet. J'hésite àprendre un autre projet qui est l'un des projets déjà sur Doxtrin ou si j'arrive à trouver del'inspiration ou si vous avez des idées aussi, n'hésitez pas à m'en proposer. Un projet de Django
01:04:38 :ouais. Après je pense que je vais peut-être faire deux, partir un peu dans peut-être deuxprojets, tu vois en proposer deux des plus avancés, des plus simples pour que tout le monde puisse unpeu prendre un projet qui lui correspond. Donc demain je vais essayer de vous proposer un autre
01:04:56 :projet sur la Classroom, donc vous avez le lien sur votre tableau de bord. Donc c'est ça en faitLionel, l'idée c'est que je soumets un projet, là c'était vraiment un projet qui était le projetdu jeu de rôle qui était déjà sur Doxtrin donc qui avait une correction etc. Là effectivement ouais
01:05:14 :Paul c'est ça, je me dis que ça peut être cool d'essayer de trouver un autre. Alors c'est pour çaje réfléchis, je pensais beaucoup à ce qu'a fait Tom justement la semaine dernière avec le jeu dudémineur, je me dis un truc comme ça, bon après là lui c'était vraiment avec Pieside donc ça exclut
01:05:26 :tous les gens qui n'ont pas fait de Pieside, alors ça vous force à vous y mettre dans le mois. Maisouais un truc comme ça, je sais pas, refaire un jeu du pendu par exemple, ça pourrait être pas mal.
01:05:38 :Je vais peut-être essayer d'en profiter pour justement penser à tous les projets qui ne sontpas encore sur Doxtrin mais que j'aimerais bien mettre sur Doxtrin, faire une to-do list parexemple, bon ça c'est le truc super classique mais j'ai fait la liste de courses en projet,la to-do list ça pourrait être pas mal aussi, ça ressemble vraiment un petit peu à la liste de
01:05:54 :course mais avec quelques particularités en plus. Donc je pense que ouais je vais réfléchir à toutça, je vais peut-être d'ailleurs en proposer deux direct carrément justement avec différentesoptions, pourquoi pas effectivement aussi partir d'un truc justement to-do list et puis ceux quiveulent le faire en Django, ils peuvent le faire avec un projet de Django, ceux qui veulent le
01:06:11 :faire en terminal peuvent le faire avec un terminal, ceux qui veulent le faire avec PySide peuvent lefaire avec PySide, interface graphique, donc ouais je pense que ouais bon on va peut-être partir surla to-do list finalement, ça semble être un bon, un truc très classique mais en même temps qui
01:06:25 :peut être très intéressant parce que justement avec une règle très simple et après vous pouvezpartir dans toutes les directions, vous pouvez faire un scrim de 15 lignes, vous pouvez faireun SaaS complet, Vincent il va nous sortir un truc avec je veux 2000 utilisateurs à la fin du mois
01:06:42 :payant et 10% des bénéfices du coup. Mais voilà je vais essayer de faire ça demain oudans le tout début de la semaine là qu'on puisse embarquer là dessus parce que je pense que c'estquand même, je sais pas ce que vous pensez de l'expérience mais puis moi aussi au niveau
01:07:05 :correction je trouve ça génial, d'ailleurs oui je l'ai pas dit mais j'ai fait la correction deLoïc là, donc et pour te répondre Arthur c'est pas une corvée t'inquiète, moi aussi ce qui estcool là c'est que comme vous étiez d'accord pour que je puisse anonymiser et puis mettre sur
01:07:21 :youtube, ou si d'ailleurs s'il y a des gens n'hésitez pas à me dire dans l'autre sens sivous souhaitez que je n'anonymise pas ou que je mette un lien vers votre github ou quoi et que çavous fasse de la visibilité, n'hésitez pas à me dire aussi ça peut être dans les deux sens. Donc
01:07:35 :voilà moi ça me fait aussi du contenu pour youtube et puis c'est du contenu en général et je trouveça là le projet de Loïc je trouve que c'est déjà pour lui c'est cool ça lui fait trois heures decorrection sur son projet et puis pour vous aussi enfin pour tout le monde quoi c'est je sais pas
01:07:50 :si on a qu'on commençait à regarder un peu ça la correction que j'avais faite je vous ai posté,elle est pas encore sur youtube, je vous ai mis le lien accessible en privé. D'ailleurs dans cette
01:08:01 :correction vous allez voir c'est assez intéressant parce que justement je passe, je lui ai résumé çadans un loom là mais je vais vous le résumer ici, ce qui ressort en fait vraiment c'est que je passela première heure à réorganiser son script même pas tant au niveau des fichiers
01:08:24 :et des fonctions de bon je vais mettre telle fonction dans tel fichier etc je finis par lefaire par nommer les fichiers puis par supprimer un ou deux fichiers pour revenir à un trucfinalement un petit peu plus simple mais c'est surtout en fait dans la nomenclature et je trouve
01:08:38 :que ça en dit long justement sur parce qu'à un moment je l'ai aidé donc pendant qu'il faisaitce projet et à un moment il tournait un peu en rond il disait bon voilà je bloque sur le dictionnairej'arrive pas à faire la boucle etc et moi l'incompréhension qu'on avait en fait c'est que
01:08:54 :moi je lui disais ok donc en fait c'est qu'il faut que tu solidifies tes compétences en dictionnairedonc je lui ai envoyé des exercices à faire sur le dictionnaire je lui ai envoyé le glossaire etcen fait je me rendais compte que ben non en fait les dictionnaires ils comprenaient comment ça
01:09:05 :marchait voilà donc c'était pas ça le problème et en faisant la correction en fait j'ai comprisque la racine du problème c'est que justement il y a plein de trucs qui n'étaient pas nomméscorrectement donc des trucs qui s'appelaient page alors que c'était en fait le nombre de pages
01:09:20 :des fois en fait il récupérait des pages mais enfin oui il récupérait des pages des livres mais enfait dans sa fonction c'était marqué get catégorie donc il y avait plein de petits trucs comme ça oùon sent qu'il a fait le script sans trop se poser la question à chaque fois de comment on nommait
01:09:34 :les choses et à un moment il s'est retrouvé avec trois fichiers qui avaient chacun cinq fonctionsavec des noms qui ne représentaient pas ce que faisaient les fonctions avec des variables dansles fonctions qui ne représentaient pas ce que contenaient les variables etc etc et donc là oùil bloquait en fait c'est qu'il était dans sa boucle il était rendu dans la fonction d'iligne
01:09:52 :dans la fonction dans une boucle à travailler sur un dictionnaire et le problème c'est pas qu'ilsavait pas manipuler son dictionnaire il savait comment mettre une clé dans le dictionnaire ilsavait comment récupérer les choses mais il était bloqué parce que dans sa tête c'était plusclair c'était plus clair qu'est ce qu'il voulait faire aussi à un moment c'était ça je le répète
01:10:09 :très souvent dans la vidéo c'est parce que je remodèle complètement son projet et des fois jeme dis en fait il a un moment il faut que je me pose et je me dis c'est quoi le but qu'est cequ'il veut récupérer au final parce que en fonction de ce qu'on veut au final ce qu'on veut récupérer
01:10:24 :bah il va falloir un moment qu'on fasse des choix et qu'on fasse des fonctions pour arriver dans cebut là parce que dans ce son projet c'est un projet de scrapping dans le scrapping on peutfaire tout ce qu'on veut on peut récupérer les images les titres on peut les sortir aussi sur
01:10:37 :plein de formats différents et c'est ça justement sur lequel il bloquait beaucoup c'est qu'à unmoment il voulait sortir un fichier csv par catégorie et donc moi un moment je le mets dansla vidéo je lui dis bon voilà ça c'est vraiment l'objectif un fichier csv par catégorie donc il
01:10:49 :faut qu'on trouve un moyen de résoudre tous ces problèmes qui vont nous arriver à ça et qu'estce qu'on a besoin de faire comme fonction pour arriver à vraiment résoudre ce problème là etlui finalement un moment on avait des fonctions qui faisait un petit peu de tout mais qui ne
01:11:02 :permettait pas forcément d'atteindre cet objectif et on se retrouvait aussi du coup avec des fonctionsqui faisait quatre trucs d'un coup donc on avait la fonction save par exemple pour sauvegarder lefichier csv mais dans cette fonction en fait on lui passait l'url d'un bouquin mais en fait on
01:11:15 :voulait sauvegarder toute la catégorie et dans le save en fait on faisait aussi le scrapping doncdu coup vous voyez il y avait tout un truc emmêlé comme ça qui fait que c'était pas clair dans satête et ça se ressentait du coup au niveau des blocages qu'il avait au niveau du code et donc
01:11:28 :voilà je trouve que c'est assez intéressant vous allez voir vous regarderez la vidéo là ça durelongtemps mais je pense que c'est assez intéressant et oui effectivement Vincent enfin c'est ça c'esttoute cette logique de comment on organise les choses de toujours penser à effectivement faireune fonction qui fait qu'une chose et c'est toujours je trouve qu'au final voilà c'est
01:11:49 :vraiment ce petit truc qui paraît anodin de se dire comment je vais nommer cette variable commentje vais nommer cette fonction en fait c'est pas anodin parce que ça montre qu'est ce que vouspensez qu'est ce que vous voulez faire pourquoi vous le faites et ça fait découler toute la
01:12:03 :suite de votre script de comment vous allez agencer les choses comment ça va justementbien fonctionner ou pas ensemble et voilà et après justement dans la deuxième partie à partird'une heure à peu près une fois que tout est remanié que c'est un petit peu plus clair aussibah du coup là je passe plus dans l'optimisation du code pour essayer de justement d'avoir des
01:12:23 :fonctions qui font à peu près juste une chose etc et aussi dernier point là dessus et après jem'arrête de parler c'est très important aussi là je prenais l'exemple d'un mentor ou d'un profmais aussi pour vos collègues c'est que au delà du fait vous voyez il y avait des docstrings il
01:12:39 :y avait il y avait il m'avait fait il y avait même des gifs qui expliquaient etc donc il y avait unpeu de documentation etc mais là encore bon déjà les docstrings des fois étaient trop vagues oujustement elles ne représentaient pas vraiment ce que faisait la fonction mais au delà de ça en
01:12:53 :fait moi c'est ça j'arrive là dedans et ça m'a pris une heure même sans même si j'avais pas dûtout réorganiser le code juste pour comprendre tout ça en fait voilà j'ai passé beaucoup detemps parce qu'on avait des fonctions justement qui faisait quinze choses même si la fonction
01:13:06 :était bien nommée je prends l'exemple de la fonction save c'était à peu près bien nommésave book data sauf que finalement la fonction elle faisait un peu plus que ça donc à la fin ily avait un save effectivement mais mais il y avait aussi du scrapping etc donc en fait voilà à chaque
01:13:20 :fois je me disais ok bon là ça save finalement on vient et ah non en fait ça fait pas que le saveet donc voilà j'ai vraiment passé je pense que les premières 20-30 minutes c'est moi qui suis làessayer de comprendre tout ce qui se passe dans le script donc pensez aussi voilà à vos collègues
01:13:32 :quand vous avez des gens qui vont arriver dans votre script même si vous mettez des docstringsetc bon ça explique un minimum mais faut vraiment penser à ça est-ce que mes trucs sont bien nomméspour qu'on comprenne ce que ça fait et est-ce que ça fait pas trop de trucs d'un coup c'est des
01:13:46 :principes assez simples mais qu'il faut toujours garder en tête et qui sont pas du tout simplesà mettre en place par contre au début parce que forcément on a tout de suite envie d'organisernotre code d'une certaine façon d'essayer d'organiser les choses mais je sais que le coupdu single responsibility d'avoir des fonctions qui font qu'une seule chose c'est ça prend souvent
01:14:03 :plus qu'une année pour que ça rentre bien dans les pratiques donc voilà voilà voilà pour ce longmonologue mais je vous laisserai regarder la vidéo je vous laisserai me réécouter pendantencore trois heures pour voir tout ça je crois que ça dure 2h40 en fait en vitesse x2 vous
01:14:22 :pouvez le passer en une heure et demie voilà voilà est ce qu'il ya d'autres petites questionsou on s'arrête là et on va faire du piton et du montage non pas de bon merci c'est bon ok bonsi il n'y a pas d'autres questions on va s'arrêter là et et oui donc comme d'habitude je vais mettre
01:14:54 :la rediffusion ce soir et n'hésitez pas à poser vos questions vos questions pour la semaine prochainebah écoute paul j'ai envie de te dire voilà une bonne question pour la semaine prochaine pourquoipiton on dévoie l'avantage à inconvénient parce que c'est un gros sujet donc je pense que si on
01:15:12 :parle là dedans on est reparti pour une heure du coup je me dis si t'es capable d'attendre jusqu'àla semaine prochaine on peut on peut l'aborder la semaine prochaine ça fera un bon sujet pas desouci ok super ok bon bah voilà on va on va s'arrêter là du coup et je vais noter je vais
01:15:31 :tout de suite noter pour la semaine prochaine du coup piton avantage à inconvénient pour le webj'avais script ah oui oui alors oui avec ton nom j'avais pas regardé dans le détail mais j'avaisouais je t'avais répondu la première fois le quoi excuse j'ai du mal avec une boucle sur un modal
01:16:02 :ouais ouais et après c'était du ouais effectivement je viens de voir ton tag je l'avais pas vu passerdésolé ouais effectivement si tu veux on peut faire un partage d'écran ça sera peut-être plussimple là vu que c'est du javascript on va peut-être regarder du coup et que c'est sur un
01:16:17 :projet très spécifique je te propose qu'on regarde ça de notre côté si ça te va excuse tu m'entendsok non je disais que vu que c'est sur un projet spécifique et en plus sur du javascript je tepropose qu'effectivement on se fasse un partage d'écran pour regarder ça à deux parce que c'est
01:16:41 :un truc assez spécifique peut-être peut-être plutôt demain si c'est vrai si tu me dis quandtu es disponible ouais bah écoute demain demain je regarde juste un truc de ouais je ouais moij'essaierai de trouver un moment là de toute façon donc ouais après moi je suis parce que
01:17:01 :ouais sur le wait etc là les javascript et ça me fait tourner la tête à chaque fois lesouais ouais donc c'est pour ça que je suis pas sûr que je vais pouvoir aider mais peut-êtrequ'il ya au delà du javascript il ya peut-être quand même voir s'il n'y a pas une variable ou
01:17:17 :un truc qui manque sur le code ouais ouais et quand tu fais un site web quand tu utilises djangot'as besoin quand même d'autant de javascript? bah moi c'est ce qui m'énerve avec tout ça c'est
01:17:32 :justement c'est je comprends pas qu'on vous fasse faire du javascript comme ça parce que j'arrêtepas je vois tout le temps là des gens qui passent qui disent voilà je suis en train de faire telbootcamp ou je suis en train de commencer reconversion ou de me lancer dans le web et à
01:17:45 :chaque fois là sur le serveur public de docstring j'ai vu un gars qui disait voilà j'apprends htmlcss javascript php et sql et là je me dis donc soit voilà soit t'apprends javascript et tu faisjavascript effectivement pour faire du front et du back et tu te concentres à fond sur javascript
01:18:03 :soit t'apprends php et tu laisses javascript et puis apprenez apprenez vraiment ou alors si tufais des javascript je dis front et back mais même si tu fais du javascript concentrez vous sur lesur le back je trouve parce que là tu vois en fait tu bon j'ai l'impression que ça te fout la tête
01:18:22 :dans le javascript donc faut que tu dis et tu dis à chaque fois forcément j'imagine bon bah il faudravraiment que je me plonge beaucoup plus dans le javascript justement pour bien comprendre etmaîtriser tous ces trucs d'asynchrone de fetch, de wait etc mais finalement à côté tu sais qu'il faut
01:18:36 :que tu continues à faire du piton donc en fait tu es toujours un peu pressurisé de tous lescoins et finalement tout ça pour faire des trucs qui pour faire effectivement apparaître un modalalors tu vois moi c'est ce que je dis à chaque fois sur docstring j'ai bon à chaque fois je dis
01:18:51 :j'ai 400 lignes je crois que aux dernières nouvelles j'en ai peut-être plus comme 1500 ou 2000 mais surles je sais pas les 100 000 lignes de code de piton ça reste anecdotique quoi et c'est toujourspour des petits machins où j'utilise pas du tout de j'utilise jamais d'asynchrone c'est genre tu
01:19:04 :cliques sur le bouton bah effectivement ça ouvre un modal mais ça ça peut se faire en deux lignesparce que là effectivement si je me trompe pas tu vas fetcher ton API donc tu as vraiment ce côtélà d'utiliser javascript pour aller récupérer les informations de l'API. Donc là on est vraiment
01:19:18 :dans l'optique de partir sur du full stack etc et moi je trouve que du coup bah en fait je trouvepas ça efficace quoi c'est à moins que tu aies 10 heures par jour à y mettre pendant un aneffectivement au bout d'un an tu peux arriver à maîtriser à peu près back et front et faire une
01:19:35 :synergie entre tout ça mais ouais. En plus là je fais plus trop de pitons quand je vais revenirdedans je vais encore être à l'ouest. Ouais ouais je suis d'accord c'est ouais ouais moi je suis pas
01:19:50 :du tout partisan de ça et j'ai j'ai j'ai deux ou trois vidéos youtube là je vais peut-êtreréussir à tourner cette semaine j'ai une vidéo youtube prévue justement pourquoi pourquoi vouspouvez pas être full stack et pourquoi faut arrêter de penser qu'on va faire du full stacken un an parce que de toute façon même ceux qui n'ont mais même ceux qui arrivent en fait
01:20:05 :sont pas full stack moi je dis même moi je me j'ai fait docstring qui est un site bah du coupforcément full stack si on peut dire je me considère pas du tout full stack je sais quegenre en front je je connais un peu avec les pieds que ça marche mais que c'est pas optimisé
01:20:19 :mon javascript il est pas beau enfin mon css c'est du tailwind finalement bon le css ça va quand jecommence à maîtriser un petit peu maintenant mais mais mais voilà quoi je je je je je jepour moi je suis un développeur back-end qui est capable de faire un produit full stack et après
01:20:39 :la question que je me pose je n'ai pas assez de retour d'expérience c'est la question qu'il fautque je résolve et peut-être que paul justement ça fait référence à ça je veux faire de l'alternanceça part vite sur jsp hp tout le tralala oui mais moi tu vois c'est ce que je me pose toujours
01:20:52 :comme question ce que finalement quand je parle à des amis qui sont en entreprise etc moi enfreelance j'ai jamais eu besoin de je réfléchis mais en freelance j'ai les seules fois où j'aieu besoin de toucher à du front c'était vraiment dans des cas de figure où justement c'était un
01:21:07 :peu pour faire un proof of concept il ya quelqu'un au final qui allait repasser sur le truc et c'estjuste que bas pour faire la première version moi je faisais le bac et puis après bah voilà tu fousun peu tu sais que le projet l'effet avec bootstrap donc tu fous des trois deux trois trucs pour
01:21:18 :commencer le boulot quoi mais du coup je me dis en fait quelqu'un de fou en plus full stack juniorparce que bon je me mets toujours la tête d'une entreprise qui engage quelqu'un qui sort de sixmois ou un an de formation et qui a fait effectivement un parcours full stack mais
01:21:34 :quelle entreprise va confier vraiment le full stack à un junior à moins les seuls cas de figure queje vois en fait c'est effectivement dans du freelance si tu veux faire du freelance et quetu as le garagiste du coin qui va refaire son site bah là effectivement et justement est ce
01:21:47 :que c'est du full stack ce sera justement plus un dev back end qui sera faire un petit peu defront et dans ce cas là bah t'apprend bootstrap voilà c'est bon quoi t'as pas besoin de fairede passer sur sur du react et tous ces machins donc dans ces cas de figure où je vois vraiment
01:22:02 :un junior faire du full stack bah je me dis fait juste le voilà un mois à la fin pour apprendrebootstrap un peu de front et voilà et pour des gens qui font vraiment des parcours de un an enfull stack vu le château de cartes quand même que tu construis parce que tu es un petit peu bon
01:22:17 :partout mais expert dans rien bah finalement je me dis j'ai l'impression que les entreprisesauraient beaucoup plus intérêt à embaucher quelqu'un qui est super bon sur le bac parceque tu veux pas que en bac ça soit le bordel et enfin ouais je sais pas c'est vraiment jeet en tant que développeurs back end de toute manière si tu veux te lancer sur du freelance
01:22:40 :il n'y a pas besoin de se prendre bah c'est pas demander et on pas demandé de faire du front siil y aura que des missions back end t'as pas besoin de te demander à quelqu'un qui fait cesdeux compétences quoi bah comme je dis moi dans les offres d'emploi que je vois ou dans ce que
01:22:57 :j'entends c'est vraiment les gens que je connais qui font du alors il ya quelques personnes en faitceux qui sont vraiment je dirais full stack qu'ont cinq ans dix ans d'expérience qui sont vraimentqui sont à jour sur toutes ces technologies etc en fait c'est très souvent des chargés de projets
01:23:09 :des leads c'est des gens qui ont les connaissances mais c'est même pas eux vraiment justement mêmequand ils se mettent à coder s'ils y trouvent encore du temps pour coder bah souvent en faitils vont être focalisés sur un truc donc après effectivement ils vont pouvoir à un moment peut
01:23:21 :être pendant une semaine faire que du react et du front et puis la semaine d'après faire que duback end donc là on a vraiment ce que je considère full stack le mec et qui souvent comme je disbah finalement sont un peu chargés de projets lead parce que c'est eux qui vont chapoter tout ça mais
01:23:35 :mais voilà je me dis en fait ce qu'on veut c'est plutôt se dire bah c'est bien lui il est un peuhybride il fait un peu tout donc si jamais on veut le mettre sur du front on pourra etc mais dans lesfaits je me dis bon bah soit t'as bien structuré ta boîte et bah du coup t'as vraiment des gens
01:23:48 :qui font leur spécialité soit soit vraiment t'as une armée de full stack junior et puis t'as vraimentjamais rien qui se lead quoi je sais pas mais oui après sur des offres d'emploi là tu voismoi on avait proposé là il ya deux semaines une offre une offre piton en remote freelance et tout
01:24:08 :c'était concrètement c'était du back end pur quoi et après effectivement dans l'offre d'emploi dansles skins t'avais marqué bon ouais si tu connais react et tu machin c'est plus c'est cool et toutmais là c'est tous les mots clés qui rentrent dans l'offre d'emploi et voilà c'est pour ça qu'il
01:24:22 :faut pas hésiter aussi voilà justement à postuler à se dire bon bah moi je suis back end je saisfaire ces trucs là je connais un petit peu de front mais bon c'est pas ma spécialité par contre enback là je suis solide et regardez je peux le prouver quoi c'est à mon avis plus intéressant
01:24:34 :mais bon voilà c'est après essaye de je sais que toi tu as des projets à rendre et tout doncessaye de faire au mieux que tu peux là pour ça c'est moi c'est bon c'est ma vision du truc et làoù je veux amener duck string aussi justement c'est de concentrer à fond sur le back avec
Aucune occurrence trouvée pour « ».
00:01:22
intro
Bravo, tu es prêt à passer à la suite