Session du 16 mars 2022 à 18h00
Pratique & Live Coding
Bases du Langage
Développement Web & Frameworks
Bases de Données
Deviens membre Premium magic_button
Cette session de mentorat est réservée aux membres Premium. Rejoignez-nous pour accéder à toutes les rediffusions des sessions de mentorat !
Premium
- check +100h de formations
- check +180 exercices de code
- check +100h de mentorats en rediffusion
- check 20 projets
- check Mentorats groupés hebdomadaires
- check Support individuel avec nos mentors
Nettoyer une base de données Python
Nouveautés de docstring
Nouveau projet CRM avec Django
Question sur les dashboard (Dash / Streamlit)
Gestion de données d'une BDD
Revue de code : liste de courses
00:00:00 :C'est Daniel qui va venir en français pour montrer cette webcast un peu plus bien,et gauche toies!Bonne journée à toi!ethre Flow,ça va? ça va bien oui, et toi? ça va aussi.
00:00:33 :Alors, j'ai fait l'annonce, je sais pas si il va y avoir grand monde, je crois qu'iln'y avait que 3 ou 4 personnes finalement qui avaient répondu.
00:00:43 :C'est calme le mois de mars, je sais pas pourquoi, c'est bizarre, mais partout c'estcalme sur Udemy, sur Dockstring, je sais pas, il doit y avoir un truc.
00:00:52 :Ouais ouais, je sais pas, c'est marrant, il y a des pics, après sur Udemy il y a BlackFriday avec autour de novembre, mais là c'est plus pour la promo, après il y a un pic enjanvier parce que les gens, je sais pas, ils ont fêté, ils prennent des résolutions,
00:01:10 :il y a un truc.Enfin Udemy c'est un peu tout le temps la promo.Ouais mais ça fait quand même des pics, là en ce moment c'est super calme, alors quegénéralement que ce soit Dockstring, Udemy, en général janvier il y a pas mal d'activités.
00:01:27 :En été aussi, on pourrait se dire que vacances et tout, mais en fait non, en été il y ena pas mal.Mais mars, je sais pas, il y a un creux assez souvent.
00:01:34 :Hello!Hello, salut! Je vais débloquer la room là, parce qu'avantfallait que vous vous frappiez, mais je sais pas, des fois il y a des gens qui se faisaientdéconnectés donc si jamais vous avez un problème de connexion ou quoi, normalement vous avezpas besoin de, enfin voilà, vous pouvez juste revenir dans la salle.
00:02:02 :Alors, on va attendre encore une minute ou deux.Ça va, vous avez pu faire un peu de piton?Un peu plus, c'est la nettoie.À mon côté.
00:02:14 :Ouais.Je vous ai un peu embêté là, aujourd'hui avec mon histoire de base de données.Non non, bah t'inquiète.De nettoyage de base de données.
00:02:24 :Ouais, bah du coup là on va pouvoir la truquer.Rapidement.C'est juste en fait vraiment le principe de voir en fait comment on peut faire çade la meilleure des manières, la plus propre.
00:02:40 :Ouais, après faut voir entre la façon la plus, c'est un peu comme le triangle là avecle client qui veut un truc rapide mais pas cher et bien fait, donc faut toujours tirerun peu de chaque côté.
00:02:57 :Après ça dépend aussi du nombre de données je dirais, c'est souvent ça aussi un petitpeu dans ces trucs là, c'est que des fois t'as des solutions qui sont plus simplesmais qui vont marcher plutôt sur des plus petits volumes quoi.
00:03:12 :Et après si tu sais dès le départ que ça va être vraiment des gros volumes de données,là c'est sûr qu'il faut peut-être penser un peu plus dès le départ.
00:03:20 :Non, ça va être quelque chose de très simple.Bah du coup ouais, on va pouvoir regarder ça.Bon on va commencer, je sais pas si d'autres gens se joindront à nous.
00:03:32 :Moi j'avais prévu, alors déjà je vais, hop, je vais vous repartager ça ici.Hop, donc je sais pas si vous avez vu là j'ai fait une petite annonce sur le, d'ailleursc'est un nouveau salon que j'ai créé il y a pas longtemps, il y a deux messages dedans,nouveauté donc sur le discord.
00:03:58 :Et là j'ai rajouté en fait une page avec les membres de la communauté privée quoi.Vous pouvez le retrouver dans le menu, j'ai un petit peu changé les choses, j'ai rajoutédu coup cette page ici et le serveur est toujours accessible.
00:04:15 :Il y a le deuxième lien maintenant.Et par défaut, alors c'est une page pour afficher tous les gens qui sont dans la communauté,donc du coup sur le discord, avec voilà quelques informations.
00:04:27 :Donc par défaut c'est masqué parce que je veux pas afficher forcément tout le monde,il y a peut-être des gens qui veulent pas forcément s'afficher, donc si vous voulez,par défaut vous aurez le bouton ici, donc si jamais vous souhaitez vous afficher, vouspouvez afficher votre profil, pour l'instant il y a juste moi du coup.
00:04:46 :Et vous pouvez aussi du coup dans le profil, j'ai rajouté une petite ligne d'activité,si vous souhaitez mettre ce que vous faites.Donc l'idée c'est voilà, je sais qu'il y avait Loïc et Martin qui s'étaient rejointssur des passions communes et qui avaient commencé un projet.
00:05:02 :Martin ça fait un petit moment qu'il est plus là, puisqu'il a commencé, enfin ilest pas mal occupé, il a commencé un programme en présentiel intensif, mais ils avaientquand même pu faire un petit projet pendant deux trois semaines ensemble.
00:05:13 :Donc voilà l'idée c'est de potentiellement créer des synergies.Sinon, je sais pas si vous avez vu les nouveautés concernant le contenu aussi, donc il y a unpetit article Django, ça c'est pas grand chose, c'est quand même assez intéressantje pense, je sais pas si vous l'avez vu, mais c'est le genre de truc qui est dans
00:05:36 :la documentation.Ouais c'est vraiment le genre de truc qui sont, comment dire, parce que la documentationde Django elle est très bien faite, mais par exemple là dessus sur les proxy models,elle vous explique ce que c'est, mais elle vous dit pas vraiment dans quel cas les utiliser.
00:05:54 :Donc vous avez toute une page où ça dit les modèles mandataires proxy models, çavous dit comment les créer etc.Mais en fait c'est vraiment en cherchant comment faire ce que j'explique dans cet articlelà que généralement vous tombez dessus, et après dans la doc vous avez deux trois
00:06:07 :lignes de code pour savoir comment faire parce qu'effectivement c'est pas très compliqué.Mais il y a plein plein de trucs comme ça dans Django et j'ai un peu prévu de fairedes, j'ai envie de faire pas juste des articles en fait mais un peu une base de données,de connaissances, qui seront peut-être sous la forme d'articles ou de guides je sais
00:06:22 :pas, parce qu'il y a pas mal de petites choses comme ça, notamment dans l'interface administrationoù justement les modèles, les classes sont documentés mais est-ce qu'on peut faireavec et pourquoi, pas tant que ça.
00:06:32 :Et ça ce que ça permet de faire notamment c'est, si je vous montre sur docstring, çame permet pour les articles, en fait j'ai des articles qui sont les articles qui sontà l'intérieur de la formation, du parcours, donc c'est pas des articles pour le blog,et j'ai des articles de blog, et en fait tout ça c'est basé sur le même modèle
00:06:51 :Django donc ce qui est pratique c'est qu'à partir du même modèle on peut afficher plusieurschoses dans la base de données et les filtrer directement.
00:06:57 :Parce que je sais que j'ai vu des étudiants qui recréaient des modèles presque identiquesjuste pour avoir deux entrées dans l'interface administration qui étaient différentes.
00:07:08 :Donc voilà, ça c'est le petit truc Django, il y a un nouveau projet aussi du coup jesais pas si vous l'aviez vu passer.Ah il y a Yacine qui nous a rejoint ici, salut Yacine! Donc ouais parce que du coup j'ai
00:07:28 :plus la petite notification vu que vous avez plus besoin de frapper à la porte pour rentrer,ça fait plus un petit son quand il y a quelqu'un qui rejoint.
00:07:37 :Donc ça c'est un petit projet qui peut paraître bizarre, c'est vraiment une approche un peudifférente, donc j'ai marqué version procédurale, ça a fait un peu attileter Thierry cettesemaine parce que bon c'est juste, je refais pas tout, il y a vraiment juste deux petitesparties où je montre comment faire avec des fonctions et après en fait je dis que très
00:08:07 :rapidement on est limité, qu'en fait on sent qu'on va pouvoir utiliser de l'orientéobjet pour un truc du genre et donc après je pars sur, j'efface tout ça et je parssur de l'orienté objet.
00:08:18 :Ce qui est intéressant je trouve là dessus c'est que j'ai pris une approche, en faitl'idée du projet m'est venue parce que je vois souvent des gens qui se limitent en faitdans leur façon de penser qui par exemple surtout avec Django ou avec des frameworksen général, ça peut être valide avec PyStyle aussi par exemple, où il y a une façon,
00:08:41 :on leur propose une façon de faire les choses, donc par exemple pour Django ça va êtresur la base de données, on va leur dire utilise l'ORM de Django, il est là, et en fait desfois on en a pas vraiment besoin.
00:08:51 :Par exemple sur le serveur Discord public de Doctrine, pour le classement c'est un trucqui se remet en place tous les jours, donc j'ai juste un petit fichier qui est justementfait avec TinyDB, avant c'était juste un fichier JSON tout simple que je lisais, j'écrivaisdedans etc, et ça suffisait amplement et j'avais pas besoin de mettre un gros système
00:09:11 :complet et complexe de bases de données pour ça.Donc là l'idée c'est de montrer qu'on peut très bien faire un programme au débutqui est fait en ligne de commande avec des classes où il n'y a pas d'interface, c'estjuste la ligne de commande et puis on met une petite base de données simple derrière,
00:09:26 :et après à partir de ça on peut très bien rajouter toute la partie test unitaire, etaprès je fais toute une application en Django qui va utiliser cette API.
00:09:37 :Donc l'idée c'est vraiment de montrer que vous pouvez très bien ne pas utiliser l'ORMde Django, utiliser une autre base de données et juste utiliser Django pour la partie front,et qu'une fois que vous comprenez ce que vous faites, c'est comme les modèles deDjango, un truc dont on se rend pas suffisamment compte c'est que c'est des classes en fait,
00:10:00 :et là aussi c'est assez marrant, c'est vraiment, je vais arrêter l'effet domino,c'est vraiment parce que quand on fait une classe, donc on hérite deux modèles pourun modèle, donc la classe modèle, et après on crée des attributs de classe qui représententdu coup les colonnes dans la base de données, et on a l'impression qu'on est bloqué dans
00:10:21 :ce schéma, et en fait, et je me rappelle, moi j'ai découvert ça assez tard dans monapprentissage de Django, un peu par hasard, parce qu'à un moment je voulais afficherdes trucs sur une page sans forcément les stocker dans la base de données, c'étaitun peu pour une page temporaire, et je voulais faire des tests et j'avais pas envie d'enregistrer
00:10:37 :ces informations dans la base de données.Et en fait on peut très bien créer des instances à partir des modèles, donc commedans l'orienter-objet, vous prenez votre classe blog-post par exemple, vous faitestitle égale machin, content égale truc, vous créez une instance à partir de ça,et du coup, bah voilà, vous avez une instance avec un titre, avec une description, vous
00:10:57 :pouvez l'afficher sur votre page HTML, et cette instance elle existe juste dans votrevue, dans la fonction, mais elle existe pas, elle est pas stockée en mémoire, en toutcas pas en mémoire dans la base de données, elle est stockée en mémoire si on veut directementdans le fichier Python, mais voilà je trouve qu'il y a des trucs comme ça où des fois
00:11:13 :on n'essaye pas, on se limite, on pense que les choses sont bloquées, donc faut pas hésiterà essayer des choses du genre.N'hésitez pas si vous avez des questions, ou si ça vous intéresse pas, peut-êtreque c'est...
00:11:28 :Ah si si!Si, j'ai le projet de la faire justement cette formation, parce que j'en ai de tempsen temps besoin, d'avoir cette approche justement un peu plus CRM aussi, vu que je fais pasde gros développements, mais c'est toujours des petits outils un peu à gauche, à droite,
00:11:46 :où j'utilise de plus en plus Django aussi, et je trouve que non, ça tombe pile poilau bon moment pour moi.Ok, bah cool.Et puis faut pas hésiter non plus, c'est vrai qu'on a tendance à commencer par Djangoparce que c'est celui qui est le...
00:12:02 :Enfin, on en parlait aussi un peu dans le Discord, c'est pas celui qui est le plus utilisé,bizarrement, enfin en termes de nombre d'utilisateurs, après quand on va quand même dans des boîtesc'est celui qu'on voit assez souvent quand c'est des gros projets, mais ouais faut pashésiter non plus à regarder tout ce qui est juste API, donc ce qui est un peu plus
00:12:22 :flasque que FastAPI, c'est vrai que des fois ça peut très bien suffire, ça dépend ceque vous avez besoin de faire, c'est clair.Donc voilà un petit peu pour, je crois que...
00:12:34 :Qu'est-ce qu'il y avait d'autres comme nouveautés? Je regarde ce que j'avais noté, nouveautés,questions...Je crois que c'était tout.Est-ce que vous, vous aviez du coup des questions spécifiques, ouais c'était tout pour lesnouveautés, de choses que vous aviez vues pendant la semaine que vous vouliez revoir,à part du coup peut-être, bah Mika on va regarder après ton projet si tu veux.
00:12:57 :Alors j'ai rien de concret à moi de nouveautés, je me suis juste fait des petites notes oude la manière de comment procéder, si ça suffit pour développer un peu dessus.
00:13:11 :Ouais bien sûr, on peut tout à fait avoir un début de réflexion et puis après revenirla semaine prochaine dessus peut-être, le temps que tu avances sur ces réflexions ducoup.
00:13:25 :Et aussi après, peut-être, j'avais prévu, je sais pas si ça peut être intéressant,parce qu'en fait dans les questions, il y avait, c'était Francis je crois, qui se posaitdes questions sur tout ce qui était dashboard un peu, et un peu, je pense que ça peut peut-êtrerejoindre un peu Mika, enfin peut-être ton projet, c'est l'idée d'avoir des bases de
00:13:54 :données et puis après de vouloir afficher des choses dessus, donc lui c'était des indicateursde produits.Et donc moi j'avais suggéré Databox, je sais pas si vous connaissez, ah oui je partageplus mon écran, j'ai repartagé, Databox qui est un genre de système, c'est un peuun outil, on pourrait dire un peu no code, low code, je sais pas si on pourrait dire
00:14:20 :ça, mais ça vous permet de récupérer des datas en fait, de plein de façons différentes,et après de faire des dashboards et de les filtrer, les afficher de façon très spécifique,des moyennes, de faire un peu au delà juste de l'affichage, ça peut aussi permettre defaire un peu des calculs et des prévisions, c'est beaucoup utilisé pour faire justement
00:14:39 :des KPI, des trucs comme ça, un peu de, comment on appelle ça, BI, business intelligence,et ils ont aussi par exemple, moi je l'utilise sur Doctrine pour juste avoir, en fait dèsque quelqu'un s'inscrit, vous pouvez faire un ping sur l'API et donc ça fait justeincrémenter un compteur en gros, et après ce qui est intéressant c'est que moi on
00:15:03 :voit l'évolution dans le temps, donc avec plein de types de graphiques et puis vouspouvez comparer aussi, donc ça me permet de voir par exemple d'un mois sur l'autre,d'un jour sur l'autre par rapport à l'année d'avant etc, enfin d'un mois sur l'autreplutôt, si y a de plus en plus de gens qui s'inscrivent, les mois où y a le plus de
00:15:20 :gens etc, donc c'est assez intéressant juste avec, soit en fait vous avez plein de chosesqui sont déjà existantes, par exemple vous pouvez aller chercher les données de Youtube,de Stripe, vous voyez y a un peu tous les petits logos là, vous pouvez bien sûr fairedu Zapier, des trucs comme ça, et aussi vous pouvez juste, l'API est vraiment toute simple,
00:15:37 :vous avez un token, vous faites un ping sur une adresse et puis ça va incrémenter uncompteur ou une donnée quelconque.Et du coup en fait c'est quelque chose qu'on peut pas auto-héberger, je pense que c'estmieux. Je faudrais vérifier, parce que je sais que, par contre le problème c'est que
00:15:58 :c'est très cher si tu dépasses les limites qu'ils ont, ils ont un, tu vois, ils ont un,je sais plus c'est quoi le truc de base là, genre tu peux avoir, ouais ouais, et puis çac'est, c'est pour des usages vraiment, ouais, ouais, mais ils ont une version de base en
00:16:15 :fait qui est totalement gratuite, et qui est pas vraiment limitée en termes de fonctionnalitémais qui est limitée, je crois que tu peux faire, tu peux récupérer 5 données différentes,tu vois, 5 sources de données, donc t'as une petite limite comme ça, donc si tu voismoi j'ai genre les sign-up et tout vient de Dockstring, donc finalement j'ai pas tant
00:16:34 :de données à afficher, elles viennent toutes d'un endroit donc ça me va, mais ouais aprèssi vraiment tu veux dépasser un des trucs qui sont bloqués là, ça chiffre très vite.
00:16:43 :Donc ouais, c'est un des petits soucis avec ce truc là, mais du coup ce qui est trèsintéressant, moi je l'ai encore jamais testé, ce que le plus connu c'est en fait Plotlyavec Dash, qui permet de faire des trucs très sympas, après je, moi quand je m'étais un
00:17:02 :petit peu intéressé, Dash ce qui est marrant c'est qu'en fait ça permet de, je crois qu'ily a une petite question, ah non c'est Guillaume qui nous a rejoint, salut Guillaume.
00:17:14 :Ouais donc Dash en fait ce qui est marrant c'est que c'est à la fois, ça s'amplifiequand même grandement les choses parce qu'à la fois Dash et Streamlit, ce que c'est, c'estDash je suis plus sûr c'est quoi comme librairie, mais Streamlit c'est du, je crois que c'estdu React, je suis quasiment sûr même, et en fait ce que ça vous permet de faire c'est
00:17:32 :assez incroyable, c'est une librairie vraiment c'est le genre de truc où tu dis, avec 3lignes de code en fait tu peux faire un dashboard complet avec des composants React sans avoirbesoin du coup de toucher une seule ligne de React, donc vous avez un truc qui est moderne,
00:17:46 :bien foutu, qui se rafraîchit tout seul avec un peu une single page application, et àpartir de vos données du coup, donc vous avez un DataFrame Panda, vous foutez ça dansvraiment 2 lignes de code pour lui dire affiche moi un graphique comme ça et puis permetmoi de faire un drop down qui va sélectionner telle donnée, et vraiment en 2 secondes vous
00:18:06 :avez tout. Alors pour ça je dis Dash, la courbe est un petit peu plus, enfin c'estun petit peu moins facile d'approche, après en fait ça vous facilite quand même tellementla vie que si vous aviez besoin de faire tout ça from scratch avec du React et tout ça
00:18:24 :prendrait des plombes, donc même si Dash est un petit peu plus compliqué à apprendreau début, parce que la syntaxe est un petit peu moins user friendly je trouve et c'estun peu plus poussé, Streamlit par contre c'était un peu ça que je voulais voir cesoir, en fait moi je les ai jamais, j'ai jamais pris le temps de les tester donc je
00:18:41 :voulais potentiellement regarder un petit peu mais je sais pas si on aura le temps forcément,mais voilà c'était un peu mon idée après pour ça. Est-ce que, je vais donc être Guillaume
00:18:54 :qui nous a rejoint, est-ce que tu avais quelques petites questions, sinon après on a le Mikaen fait qui avait un projet, enfin je sais pas si on peut, si c'est un projet, une questionsur les bases de données. Non pas de questions. Ok bon bah du coup Mika je sais pas si tu
00:19:14 :voulais partager ton écran ou juste nous en parler comme ça. Je vais plutôt vousen parler parce que c'est vraiment des notes brutes, il y a pas grand chose à entendre.
00:19:23 :Il faut juste un peu que je récupère ce que j'ai fait. Alors en fait la raison aussic'est que c'est professionnel et je peux pas forcément le diffuser non plus en précisant.
00:19:34 :Ouais ouais je comprends. Mais en gros en fait je travaille beaucoup en fait pour expliquerun peu le contexte, je travaille beaucoup sur des applications, enfin je vais recommencer,je travaille dans tout ce qui est télécom et donc je travaille pour des opérateurstélécom et surtout des petits qui ont des applications, des logiciels métiers qui ont
00:19:58 :été développés il y a par exemple 10 ans, c'était des logiciels très chers, qui permettenten fait par exemple d'activer des box, par exemple des box internet. C'est des trucs
00:20:09 :qu'on maîtrise mais qui sont assez techniques et en fait là on est en train de, nous denotre côté, de vendre le produit à d'autres opérateurs aussi et en fait le but c'étaitde faire une nouvelle content on va dire en fait de ce logiciel là, qui se limite juste
00:20:32 :par exemple au numéro du client et à l'adresse MAC de la box et puis on l'active. En faitcette partie là je l'ai déjà effectuée sur Django et ça marche plutôt bien en fait,c'est tout bête, c'est une base de données avec les numéros de clients, l'adresse MAC,une petite description pour noter l'adresse et j'ai mis encore un champ d'activer ou
00:21:02 :pas, et tout ce qui est un champ date de création. Et en fait le truc c'est que le logicielmétier à côté en fait, ce que je vais faire, je vais importer la base du logiciel métieret je vais la mettre dans mon applicatif Django. Et en fait ce sera juste visuel mais ça permettra
00:21:23 :par exemple aux gens de faire une action, par exemple de désactiver une box. Du coupmoi en fait j'ai fait un petit script dans ma vue qui fait une requête en ssh, en lignede commande sur l'application métier. Et en fait le problème c'est que du coup si dans
00:21:46 :le meilleur des mondes tout le monde utilise mon applicatif Django, tout va bien, j'auraisjamais de soucis, mais c'était en fait dans le cas où par exemple j'ai un technicienparce que j'ai des techniciens qui ont l'habitude de cet ancien logiciel métier, qui peuventde temps en temps, voire rarement, mais par exemple supprimer à la main sur le logiciel
00:22:06 :métier. Du coup ma base ne sera plus synchronisée. En fait mon but c'était juste de faire tournerun script une fois tous les soirs par exemple, avec un cron ou quelque chose comme ça, etle but c'était du coup de checker les deux bases de données et de voir ce qui a été
00:22:32 :modifié, supprimé ou ajouté. Et du coup en fait je travaille depuis un moment avecjustement Pandwa, et je le trouve vraiment pratique parce que justement la base de donnéesde l'application métier je peux l'importer dans un csv, et je peux du coup aussi importerde l'autre côté Django, parce que là j'ai utilisé du coup la base de données qui est
00:23:00 :par defaut dans Django, Esculite, qui est largement suffisant pour mes besoins. Doncje n'ai pas encore testé mais je crois qu'avec Pandwa il est aussi possible d'importer labase en dataframe de ce côté là, et pour le moment je crois qu'il n'y a pas d'outilplus puissant que Pandwa pour vraiment faire des comparaisons ligne par ligne en fait,
00:23:25 :de vérifier chaque ligne par exemple de deux dataframes et de comparer en fait. Ouais,toi je te confirme, c'est ma chute. Au niveau vitesse en fait, avec NumPy qui est derrière,
00:23:42 :c'est très très rapide quoi, donc c'est pas étonnant du coup que ce soit utilisédans tout ce qui est data science. Après effectivement le petit doute que j'ai c'est
00:23:51 :au niveau, c'est sûr que c'est possible, après comment, et puis est-ce que c'est facilele côté récupérer ta base de données Esculite en dataframe. Oui, j'ai vu des articles,
00:24:04 :c'est jouable. Oui je l'ai jamais fait mais c'est un peu, enfin je veux dire après toutça c'est un peu des tableaux Excel quoi, donc après c'est juste là encore de trouverla façon la plus efficace de le faire. Moi c'est ça la question que je me posais c'était
00:24:16 :est-ce que, après si t'as des adresses MAC du coup si c'est vraiment ça que t'as dansta base de données j'imagine que c'est assez facile vu que ces deux bases, enfin si jeme trompe pas c'est des identifiants absolument uniques. Oui. Donc c'est assez facile de limite
00:24:32 :juste prendre cette colonne et puis voir tu vois, faire un diff pour cette colonne pourenlever puis rajouter. Oui en fait il faudrait que je me définisse un index en fait, je
00:24:43 :pense que l'adresse MAC est le, vu les temps donné qu'il est unique, le meilleur moyen.C'est pour ça, et en fait c'était juste, je pense que je vais partir sur ça, en grosje vais faire une sorte de script qui va d'abord vérifier, compter le nombre d'entrées dansles deux bases, voir si le nombre d'entrées est le même, si il y en a plus ou moins,
00:25:07 :déjà voir ça, voir si il y a eu des suppressions du côté de l'usine à gaz on va dire, etvoir et repérer ça et si je vois qu'il en manque par exemple deux, que je les stockedans un dictionnaire ou quelque chose comme ça. Et qu'au final en fait je pense que je
00:25:27 :vais d'abord faire ça comme ça, je vais faire vraiment un nettoyage étape par étape,donc d'abord vérifier les suppressions, vérifier les ajouts, et peut-être vérifier aprèsles modifications, faut que je réfléchisse un peu plus au raisonnement de l'ordre, leplus logique, et ensuite je pense que je vais d'abord faire un print, tout bête, les premiers
00:25:45 :jours et je vais dire ah il manque ça, ça, ça, ça, ça a été modifié, ça a étésupprimé, et je pense par la suite une fois que j'ai ça proprement, je pensais du coupfaire des requêtes sur ma base django, pour que ce soit automatisé au fil du temps.
00:26:04 :Ouais pour ça tu peux faire justement, tu peux regarder un peu du côté API, alorst'es pas obligé de faire ça aussi des fois on a l'impression qu'il faut absolument mettrepar exemple django REST framework pour faire une API en gros, pour faire juste un pointoù tu peux, tu pourrais te faire un point d'API, qui est en fait tout simplement une
00:26:28 :file sur laquelle tu récupères l'adresse MAC et puis des infos, et puis à partir deça tu vois tu vas ajouter ou enlever des éléments dans ta base de données, et làencore tu vois, ça rejoint vraiment ce que je disais au tout début, c'est que j'ai vudes gens qui ont implémenté des RF, Django REST framework, juste pour faire deux points
00:26:49 :d'API où ils retournaient une réponse JSON, et en fait quand tu retournes, quand tu faisune vue, une fonction dans Django, on a l'habitude de retourner avec Render, la fonction Render,la requête, le template HTML et le contexte, et en fait on peut retourner une HTTP responsetout simple, et on peut aussi retourner un JSON response, et donc en fait ton API tu
00:27:16 :peux juste faire ça, tu peux faire une URL avec une vue, et dans ta vue tu retournesun JSON response, tu vas retourner un dictionnaire en gros, avec une clé success qui est égaleà true ou false, pour savoir si ça a marché ou pas, et puis peut-être tu vois, tu peux
00:27:35 :mettre n'importe quelle information que tu veux, tu vas par exemple dire les ID qui ontété modifiées ou des trucs comme ça. Ah bah oui c'est vrai, j'ai même pas réfléchi
00:27:45 :comme ça en fait, je pensais faire des requêtes directement SQL mais pourquoi pas utiliserl'API du coup, l'API REST de Django que j'ai pas encore vraiment utilisé. Mais justement
00:27:56 :je te dis, attends je vais te montrer un petit exemple. Mais je vois du coup, oui, en faitde faire des vues, des fonctions dans vue. Regarde je vais te montrer, hop tu vois tu
00:28:17 :te fais un truc ici, tu peux même l'appeler justement API slash database par exemple,tu te dis que ça va, update database, et ici, tu retournes un JSON response, donc làtu vois tu peux récupérer en POST ou en GET, ça dépend, bon là tu vois, mais tuvois imagine là tu pourrais récupérer tout simplement un string MAC address, hop, et
00:28:58 :là du coup ici tu updates, tu vois, je sais pas, opération, et puis tu dis voilà IFopération égale, je sais pas, tu vois je fais un peu de code mais ça donne, là tufais voilà SQL.update et puis tu updates ton truc, et si je sais pas, imaginez une
00:29:18 :erreur, tu fais un try except, et là tu fais un return, response, et hop, là tu retournesun success, et ici si tout se passe bien, tu dis hop, true, et tu vois, je vais enlever,je vais faire juste un print, je vais te montrer concrètement ce que ça va te donner,
00:29:52 :hop, je vais te mettre un, en fait ça c'est le principe des API REST de Django, oui alorsaprès justement c'est que, hop, je vais te montrer ce que ça donne sur Chrome, le trucc'est que en fait, hop, c'est que, tac, et là j'ai planté, ah oui bah j'ai pas mis,
00:30:29 :on va mettre ça et add, voilà, et donc tu vois en fait ici ça te retourne ce qu'onvoit généralement quand on va pinguer un point d'API, tu vois ça te retourne un JSONet puis t'as plein d'infos. Et en fait ce que je dis c'est que souvent les gens ils
00:30:43 :pensent qu'il faut absolument installer le package Django REST Framework, qu'il fautfaire ce qu'on appelle des serializers sur tes modèles, qu'il faut faire tous les trucsqu'on voit dans les tutos généralement pour faire une API, parce qu'effectivement sivraiment tu veux faire une API robuste avec l'authentification, avec même de la documentation
00:31:01 :automatique etc, là Django REST Framework c'est génial, ça fait plein de trucs, ouFastAPI ou des trucs comme ça, mais si t'es juste, voilà, t'as juste besoin d'avoirune URL en fait sur laquelle tu vas pouvoir pinguer, envoyer des informations pour fairequelque chose dans ton projet, puis avoir un retour, bah ça suffit. Donc t'as pas besoin
00:31:25 :de faire plus compliqué que ça sur la théorie. Après, avant que j'oublie, par rapport àce que tu disais, moi je voyais deux trucs, il y avait, ce que tu pourrais peut-êtreregarder pour faire c'est à l'inverse, voir s'il n'y a pas moyen quand quelqu'un modifiela base de données du côté de ton application métier, s'il n'y a pas moyen de faire un
00:31:48 :genre de webhook tu vois, de, je sais pas à quel point tu peux modifier cette applicationtu vois. Pas énormément. Ouais. Je peux juste, je peux pas par exemple définir d'action,
00:32:01 :je peux juste en gros, en fait c'est des lignes de commandes qui sont spécifiquesau logiciel en gros, c'est un logiciel qui est installé sur un serveur, et c'est duJava mais c'est vraiment propriétaire et ça a 15-20 ans le truc. Ok. Ouais donc c'est
00:32:19 :pas, ok bah laisse te, non. Je peux juste faire un liste et afficher la liste d'exportationCSV. Ouais d'accord ok ok. Non parce que sinon, le plus efficace tu vois c'est de,
00:32:30 :dans l'autre sens de faire un, c'est ça une, d'envoyer un événement tu vois quandt'as un truc qui est modifié, comme ça tu sais si jamais quelqu'un touche pas au trucpendant un mois bah tu vas pas faire une requête tous les soirs pour rien, et après effectivementsi t'as pas accès là bah oui tu fais un truc tous les soirs et c'est bon. Et un autre
00:32:48 :truc auquel je pensais aussi, tu peux regarder, ça c'est un truc que fait git, c'est leshashs, c'est en fait, je pensais par rapport au fait, juste pour savoir si quelque chosea changé, un truc qui peut être assez intéressant c'est plutôt que de parcourir toute ta basesi elle est assez importante, c'est de créer un hash à partir de toutes les adresses MAC
00:33:12 :de ta base A, et tu fais pareil pour la base B, et si le hash fait pareil ça veut direque les MAC adresses, rien n'a bougé. Et ça ça peut être un truc, tu vois, en premier
00:33:25 :je me dis que ça pourrait être un truc à faire, de juste vérifier si les hashs sontidentiques bah tu vas même pas plus loin tu vois, et puis après effectivement je pensequ'un système assez classique de ad, enfin de qu'est-ce qui a été ajouté, modifié,modifié, modifié, modifié, et pour ça vraiment regarde quand même la bibliothèque
00:33:49 :là que je t'avais linké je crois, diff tools, parce que je me souviens que c'était, tupeux peut-être faire un mix des deux, tu vois avec panda récupérer les infos pourque ce soit rapide et puis après en fait une fois que t'as tes deux colonnes d'adresseMAC, passer ça à diff tools, et parce que lui il va vraiment te faire un output comme
00:34:07 :ça en te disant, y'a ça qui a été ajouté, y'a ça qui a été enlevé, y'a ça quia été modifié, et pour la modification c'est pratique parce que l'ajout, tu voisc'est facile de dire bon bah ça ça a été ajouté, enlevé, par contre après si t'asplusieurs colonnes, si tu veux voir par exemple si y'a pas un élément de ton tableau seulement
00:34:23 :qu'a changé, alors peut-être que c'est possible avec panda, faudrait la vérifier,je suis pas un expert en panda donc y'a peut-être des trucs directement dans panda qui peuventtu vois, te permettre de voir si, de faire des comparaisons comme ça et puis de sortiren fait ce qui a été modifié. Ouais c'est ce que je pensais, c'est ce que j'ai un peu
00:34:42 :cherché mais j'ai rien trouvé de concret. Bah sinon regarde ça parce que à la limitetu pourrais, moi je me rappelle qu'on l'avait fait sur des paquets de données assez importantsquand même, et ça marchait bien, et du coup en fait on avait vraiment, on passait desdictionnaires en fait, donc on avait des scènes en fait, des scènes d'animation avec plein
00:35:03 :de paramètres, donc le nom des objets dedans, la position des objets, les lumières, lescaméras, tous ces trucs là, et c'était des scènes très conséquentes quoi, avecplein de trucs dedans, et du coup en fait on voulait savoir justement, c'était un peuun système git si tu veux, c'était un peu ça l'idée, sauf que vu que c'était des
00:35:22 :scènes, les scènes de 3D c'est pas un fichier qu'on pouvait lire comme ça, donc en faiton sauvegardait toutes ces informations de la scène, et après on sauvegardait justeça, donc ça faisait des petits fichiers assez légers parce que ça restait juste dutexte, donc t'avais pas toute la géométrie, tous les trucs lourds, et après en fait d'une
00:35:39 :version à l'autre, bah du coup on utilisait cet outil là pour savoir ce qu'il y avaitchangé, et ça pouvait être donc, on filetait deux dictionnaires, tu vois, avec toutes cesinformations, y'avait vraiment des fois, je sais pas, 10-12 000 lignes parce que t'avaisplein d'objets avec à chaque fois x, y, z de position, de scale et tout, et on pouvait
00:35:56 :savoir à la fin, bah y'avait, parce que souvent c'était des petits trucs qui changeaient,donc finalement sur des grosses données comme ça, ça disait bah y'a tel objet qui a étébougé de temps en x, et tel objet a été supprimé de la scène, et tu voyais clairementcomme sur git, tu voyais les moins, les plus, les trucs orange, vert, rouge.
00:36:17 :Ouais je vois.Donc ouais.Ok ok, je vais m'orienter là dessus, merci.Voilà, je pense qu'avec ça déjà t'as de quoi, et vraiment côté Django, à mon avis,t'as pas besoin de faire plus compliqué que ça, je pense pas que, en tout cas au début,que t'es vraiment, même après si ça reste un truc comme ça, je pense pas que t'aies
00:36:40 :besoin de partir sur REST framework.Non oui, bah pour moi c'est suffisant, c'est la vraie logique.Y'a juste le côté, et encore le côté, alors ça c'est plus la petite anecdote, mais lecôté authentification, ça aussi c'est un truc où tu peux, on va dire tu peux prendredes libertés, tu vois, si vraiment t'as besoin d'un truc bien fait etc, là tu peux aller,
00:37:04 :tu peux justement mettre Django REST framework, faire des tokens, tout ça, avec un peu duOOT2, mais ça devient un enfer, enfin ça va encore, c'est pas, justement c'est untruc assez simple à implémenter quand même par rapport au bordel que c'est ces trucslà, mais c'est quand même un peu chiant, déjà à implémenter et après à utiliser,
00:37:28 :mais tu vois là aussi faut pas des fois aller chercher bien loin, si tu veux juste protégerun petit peu ton code, si jamais y'a quelqu'un qui est à l'adresse de ton API et que potentiellement,par exemple tu récupères des données dans l'URL et puis ton truc est pas, tu sais tu
00:37:44 :peux juste faire un, comment dire, un genre de mot de passe à l'intérieur de ta vuequoi, où tu dis si y'a pas, si dans l'URL y'a pas tel truc qui est envoyé en paramètre,bah tu return et tu vas pas plus loin quoi. J'ai vu ça aussi des gens qui faisaient ça
00:38:00 :dans des entreprises et ça peut suffire. En V1 tu vois tu fais ça et puis après sivraiment tu veux tu peux l'utiliser. Ouais je vois, je vois oui, effectivement. Est-ce
00:38:14 :qu'il y avait d'autres trucs là dessus que tu voulais voir? Non mais j'avais peut-êtreune idée aussi, un jour on pouvait approfondir ça. Je commence à utiliser RabbitMQ, j'essaie
00:38:32 :de l'utiliser avec Django, je sais pas si c'est, justement pour être sûr que lesdonnées soient bien, ne se perdent pas en chemin en gros. Je sais pas si dans le Dockstring,
00:38:49 :dans le groupe, ce serait peut-être utile un jour d'en parler. Ouais, moi je l'ai jamaisutilisé, après dans le même style si je me trompe pas, en fait l'autre, attendsje vais retrouver le nom, il y en a un autre qui est très connu aussi, j'ai plus le nom
00:39:07 :là, de gestion de Stellary. Alors je suis pas sûr que c'est 100% la même chose, parceque RabbitMQ je connais vraiment juste deux noms, mais oui après ça c'est des trucsque j'ai envie de pousser au niveau des formations aussi, donc au niveau cours quoi. Moi j'avais
00:39:35 :en tête plus Stellary, après RabbitMQ je vais me le noter dans les notes, c'est vraiqu'on en entend souvent parler, donc ça pourrait être intéressant de faire un truc dessus.
00:39:43 :Peut-être probablement que Thierry l'a plus utilisé celui-là, c'est probablement legenre de truc qu'il a déjà, je me le note. Justement là ça me permet par exemple, parce
00:39:57 :que là j'ai tout en brut, par exemple si j'ajoute un équipement, en gros je doisme connecter en SSH, donc j'utilise paramico, et tout ça j'ai tout qui est en brut dansma vue, dans ma fonction dans view de Django, et du coup là ça me permet, je suis en train
00:40:22 :de travailler aussi un peu là dessus, pour justement en gros, juste dans la vue de Django,d'envoyer un message au serveur RabbitMQ qui permet de gérer les fils, et que si l'applicationplante, que je ne perds pas les données. C'est vraiment pratique, c'est vraiment quelque
00:40:46 :chose qui peut être vraiment sympa. Surtout pour tous ces trucs un peu de maintenanceeffectivement, où tu as besoin d'avoir, ou tu peux peut-être aussi, bon là slicerune fois par jour, et sur des petits volumes, c'est généralement traité assez vite, maisc'est vrai qu'en cas de problème, ou tu as un peu aussi le côté de répéter l'opération,
00:41:05 :si jamais le truc il plante, parce que des fois, surtout sur ces trucs là, tu peux avoirje sais pas, une attaque des russes ou un truc comme ça, ou je sais pas tu vois, unmachin qui plante un moment, donc d'avoir un système de gestion de tâches, comme ça,
00:41:21 :où c'est pas juste, tu passes à travailler une fonction effectivement, et puis si çaplante, ça plante, et ça ne ressaie pas, et tout ça, c'est vrai que c'est assez important.
00:41:31 :Mais du coup ouais, je vais regarder, je me le sais noter, je vais regarder un peu plusça, comme ça si jamais t'as des questions, je serai un peu plus frais là dessus, puispeut-être hésite pas à poster sur le serveur, ça m'étonnerait pas du tout que Thierrysoit plus calé que moi là dessus. Moi je suis vraiment tout au début, je suis au hello
00:41:55 :world. Après je te dirais aussi, moi c'est le genre de truc, c'est pour ça que je disaisun peu que ça peut être utile et qu'après il faut aussi toujours faire un peu attention,comme je te dis, je connais pas suffisamment pour savoir à quel point c'est usine à gaz,
00:42:12 :je sais que j'ai déjà vu des gens qui ont mis en place cellerie justement pour destrucs où vraiment je me disais, enfin je voyais qu'en gros, puisque c'est des technologiesdont on entend pas mal parler, parce que c'est des trucs qui sont utilisés à Netflix etc,donc t'as plein d'articles qui traînent où on va te dire que Netflix utilise ça pour
00:42:32 :gérer justement des trucs incroyables, et après tu vois des gens qui implémententça alors qu'ils ont un truc par jour tu vois. Et après en fait ce qu'on se rend pas compte
00:42:45 :c'est aussi l'inertie que ça peut créer, c'est que plus tu multiplies les systèmescomme ça, plus après ton truc va être compliqué et à maintenir, et tu vois les versions toutça aussi justement là ça me fait penser à discord.py là, je sais pas si vous avez
00:43:00 :vu, qui revient sur le devant de la scène. Alors y'a Yassine qui demande du coup est-cequ'on peut comparer deux dictionnaires directement ou il faut passer par une boucle ou une autrefaçon plus efficace? Bah justement, moi c'était précisément pour ça que j'avais
00:43:15 :utilisé difftools, la bibliothèque, parce qu'en fait comparer deux listes flat c'estassez simple, dès que tu commences à avoir des trucs imbriqués là ça devient superchiant parce que déjà en fait tu rentres un peu dans ce qui est récursion, tu rentresaussi dans différents niveaux, tu peux des fois, enfin si tout est tout le temps au même
00:43:38 :niveau tu vois ça peut aller mais là encore t'as vraiment des processus de récursionparce que tu peux jamais forcément savoir à combien de niveaux tu vas descendre sit'es un dictionnaire dans un dictionnaire dans un dictionnaire dans un dictionnaire,tu vois il faut à chaque fois que tu descends de ces niveaux là pour les comparer. Donc
00:43:56 :si tu passes par des boucles tu seras un peu toujours obligé de passer par de la récursionet après forcément tu vas avoir des problématiques aussi un petit peu d'optimisation, c'estle truc parfait pour rajouter une petite boucle de trop et puis là ton machin il fait10 fois plus de récursions que nécessaire donc c'est pour ça que c'est assez chiant
00:44:21 :et moi celle que j'ai posté la diff tools c'est une des plus connues mais après t'enas au moins 3 ou 4 différentes qui te permettent de faire ça donc vraiment moi je conseilleraisde ne pas essayer de réinventer la roue là dessus et d'utiliser directement ces trucslà quoi. Je vais me plonger là dessus. Ok merci pour l'info c'était beau. Pas de
00:44:43 :soucis. Ouais diff lib, je sais plus si c'était celle là, je vais ré-vérifier parce quej'avais ré-tapé diff tools mais diff tools c'est un terme assez générique je sais plusmais je crois que c'était diff lib parce que je me... C'est une lib python c'est ça?
00:45:05 :Ouais et parce que me semble que quand j'avais regardé j'étais tombé sur celle-ci etj'avais ouais c'était ça differ j'avais il y avait des classes dont je me souvenaiset je retrouve je dois avoir le code en fait encore quelque part dans mes dossiers scriptouais python ouais je dois avoir le code encore mais ah oui c'était non ici. J'ai trouvé
00:45:38 :un extrait de code sur un site, un petit tuto sympa. Ouais après justement c'est pas destrucs très très compliqués à utiliser moi je sais que ce qui m'avait posé le plusde problèmes en fait c'était concrètement la façon dont les données nous étaient organiséesdonc on avait eu pas mal de problèmes justement au niveau de récupérer la donnée en tant
00:46:01 :que telle mais après une fois que t'as tous les bons trucs c'est pour ça que c'est lapremière question que j'avais posée tu vois c'était un peu est-ce que de base, enfincomment sont tes données de base tu vois et puis après après ça peut vachement changerje vais avoir quelque part mais j'ai trouvé un petit tuto qui permet justement basiquement
00:46:36 :il ouvre deux fichiers texte et il les compare et on voit ce qui ressort. Alors et du coupc'est avec difflib. Oui c'est ça c'est celle que ouais alors je vais voir ouais c'est ça
00:46:54 :mais je oui mais c'est ça c'est enfin ça te fait vraiment le même output que ce quete fait git quoi. Ouais c'était chouette je pense que c'est exactement ce qu'il me fallait.
00:47:06 :Ouais ouais c'est ça je suis quasiment sûr que c'était celle-ci et vraiment moi je tedis les seuls souvenirs que j'ai de problèmes qu'on avait eu c'était parce qu'après enfait une fois que tu as ta différence tu peux enfin tu as des objets tu peux trèsfacilement récupérer comme je te disais chaque partie quoi qui a été modifiée.
00:47:26 :A voir peut-être là parce que je regarde les exemples là ils font des exemples surdes listes mais je suis quasiment sûr que enfin avec des dictionnaires ça marche aussiquoi. Après faudra voir toi si tu as des csv enfin après c'est ça quoi faut peut-être
00:47:41 :voir dans quel format tu lui filles de l'information mais après à mon avis. C'est vrai en faitje vais voir justement avec panda justement et sinon faut que je ressorte la dataframeen format spécifique. Bah après les dataframes tu peux les sortir en dictionnaire c'est sûr
00:48:04 :tu peux faire un tout dict, csv enfin une fois que tu as ton dataframe tu peux le sortircomme tu veux donc après moi c'est vraiment la question que j'ai c'est plus au niveauperformance sur ces trucs là mais tu vois vraiment je te dirais si tu sais que de base
00:48:21 :tu n'as pas énormément de données bah tu fais avec le plus facile quoi tu trouves unesolution qui marche sans aller trop loin et puis à moins que vraiment le truc tu sensque ça commence à mettre une heure pour comparer les trucs tu peux rester là dessusquoi. Surtout si ça roule une fois par jour ça va quoi. Oui c'est ça et en plus en
00:48:42 :fait ce genre de cas je vais l'avoir de plus en plus parce que par exemple j'ai un autreprojet où on a un système de ticketing en interne et pareil il faut que j'importe desbases de données d'autres systèmes avec par exemple on a plusieurs entreprises quisont découpées alors on est aussi fournisseur d'électricité donc je dois aller chercher
00:49:08 :sur la base de données là dedans et là ça me permet justement de garder en faitune... parce que je suis toujours obligé souvent de gérer deux bases en fait la base
00:49:18 :réelle et la base que moi j'utilise. Ce qui est important pour moi c'est de garder del'intégrité des choses donc je suis obligé de partir sur ça je pense, comparer pourensuite... Ouais après c'est ça, parce que là tu vois t'es vraiment dans la ligne entre
00:49:42 :le script et puis après... Moi j'ai l'impression de mon expérience de ces genres de chosesc'est que ça bouge tellement souvent, y'a tellement besoin de petits trucs à faireque t'as jamais le temps finalement de faire un truc très robuste et que c'est très souventdu scripting. Après si vraiment tu sais que c'est des trucs qui vont être automatisés
00:50:02 :et qui vont se répéter, là t'as peut-être intérêt tu vois à construire un truc unpeu plus... pas forcément orienté objet, ça peut être fait en procédural ou différemment
00:50:12 :aussi mais d'avoir justement des mécanismes de vérification, de sanitisation, je saisplus le mot en français, de clean en gros, de cleaner les données quoi et de s'assurerque ça passe à chaque fois par le processus qui te permet de t'assurer que le input etle output est bon quoi. Est-ce qu'il y avait d'autres questions sur ça ou sur d'autres
00:50:46 :choses que vous aviez vu dans la semaine? Deep diff, deep diff, ouais c'était çaje vous dis n'hésitez pas à chercher, je me rappelle qu'il y en avait pas mal deslibrairies. Je viens juste de le voir en fait, quand je cherchais ce matin ce que je voulais
00:51:11 :comparer de dictionnaire, j'ai cherché sur loop, j'ai pas trouvé ça. Ouais des foisfaut se mettre en navigation privée parce que ça c'est incroyable des fois à quelpoint Google et tout il t'enferme, tu pars dans la mauvaise direction et après il t'enfermededans et des fois deux mois après tu découvres des trucs que t'avais pas du tout vu, ça
00:51:35 :fait un moment que ça m'est pas arrivé mais je me rappelle que avant c'était desfois je sais pas, peut-être t'as fait tous les liens de la première page sont cliquésdonc tu te dis c'est bon t'as tout écumé et deux semaines après tu tombes sur despages que t'avais pas du tout vu, tu te dis c'est pas possible que je sois pas tombé
00:51:51 :dessus et tu vois. En effet c'est, il y a vraiment des façons de faire ici, ça a l'airbien, c'est pas mal ça avec justement NumPy. Oui après, c'est pour ça qu'au début je
00:52:13 :parlais d'extraire une colonne parce que je sais qu'en fait NumPy par exemple, laraison pour laquelle NumPy ils sont très, enfin c'est très optimisé, c'est que justementils vont, NumPy c'est vraiment, c'est tout simple en fait, c'est des, je sais pas commentexpliquer simplement, ils enlèvent, quand vous comparez des colonnes en fait ils enlèvent
00:52:38 :tout ce qui est superflu et puis vous avez juste un tableau avec des indices et des données.Et du coup c'est pour ça que je disais à Mika au début là, si tu sais que t'as justeles adresses MAC qui vont changer, du coup avec Panda si t'as juste une colonne à comparer
00:52:52 :bah ça va aller très vite quoi, par rapport à si t'as un truc avec plusieurs colonnesà comparer, ça va rester efficace parce que du coup Panda il va à chaque fois s'assurerde justement passer par des objets NumPy derrière, mais c'est, alors que quand t'es dans un dictionnaire
00:53:10 :et que tu commences à le parcourir justement plus avec des librairies, diff tools etc,là tu rentres dans des trucs où c'est probable qu'il passe à travers tout le truc sansexception quoi. Ouais je pense que ça serait mieux de, je
00:53:22 :parte tout de suite sur ça. Sur, bah d'ailleurs merci Yacine je vais lire l'article.Ouais il est vraiment super. Ouais c'est trop intéressant parce qu'il
00:53:32 :donne des exemples, c'est ça qui est intéressant. Ouais super. C'est un peu ce que je cherchaisouais, merci à vous. J'en profite pour dire aussi qu'on est en
00:53:55 :train de rajouter pas mal d'exercices, exercices de code sur le site, donc ça devrait commencerà arriver dans les prochains jours, prochaines semaines, donc je vous tiendrai informésbien sûr sur le serveur, parce que pour l'instant il y en a pas, enfin il y en a une soixantedix, soixante cinq, soixante dix, donc là l'idée c'est vraiment d'en mettre beaucoup
00:54:21 :beaucoup plus, et aussi justement sur tous ces trucs de données, j'ai changé l'interpréteurPython qui est utilisé en surface, je dis en surface parce que tout est exécuté côtéclient, pas serveur, et c'est une bibliothèque qui est super cool parce que du coup il ya plein de bibliothèques en plus, dont Beautiful Soup, Panda, et plein de trucs comme ça,
00:54:48 :de data, tout ce qui est data, et un peu scrapping, et donc ça va être génial parce que làje vais vraiment pouvoir faire des exercices de data directement sur le site quoi.
00:54:59 :Moi j'ai commencé à voir un peu la formation, le dernier projet que t'as mis Thibault, legestionnaire d'écriture Twitter, je le trouve vraiment intéressant parce que surtout pourmoi qui n'a jamais créé du web, ça permet d'entrer un peu dans le sujet avec un exemplesimple. Ouais, je pense que c'est aussi ce que je
00:55:32 :disais au tout début, mais c'est aussi effectivement il y a très peu de choses au niveau fonctionnalité,contrairement à, c'est un peu entre le projet e-commerce par exemple où là le but étaitvraiment de faire un truc qui n'est d'ailleurs pas fini, là il s'est déjà 7 ou 9 heures
00:55:50 :de contenu et c'est encore au début, et donc le projet e-commerce c'est vraiment l'idéed'avoir un truc pro avec toutes les fonctionnalités, et puis même au niveau visuel après, etpuis après mise en ligne et tout, là l'idée c'était vraiment au niveau fonctionnalitéde rester sur un truc très simple, c'est vraiment on génère des utilisateurs, donc
00:56:10 :il y a nom, prénom, numéro de téléphone, il y a trois fois rien, mais du coup ça permetde, je crois qu'il dure une heure et demie ou deux heures au maximum, de voir en faittout l'écosystème un peu, de faire toute une classe, tout l'orienté objet, de faire
00:56:25 :les tests unitaires, de faire le côté interface après, donc d'avoir vraiment un truc assezcomplet entre le backend, le frontend, les tests, et d'avoir une application qui marchequoi, avec un truc très simple de base, et après libre à vous de partir sur des trucsplus compliqués, de rajouter des choses dedans.
00:56:43 :En tout cas c'est un exemple vraiment pratique, parce qu'au moins ça permet de voir toutela chaîne, et pas dire ouais c'est compliqué, parce que vraiment quand tu vois la formation,c'était l'exemple des commerces, tu dis là j'ai pas les bases donc je peux pas le commencerà faire, après tu le laisses pour plus tard mais tu le feras jamais, alors que là, je
00:57:12 :commence pas les classes parce que c'est intéressant, ça m'intéresse, déjà c'était l'occasionde voir la différence entre un script vraiment orienté objet et un script basique, et voirque le reste aussi c'est vraiment intéressant je trouve.
00:57:30 :Ouais je pense que ça répond un peu à la question que se posait Loic il y a quelquesmois, et ça aussi je l'ai fait un petit peu avec la liste de courses, parce que la listede courses en fait il y a la version, je sais plus si c'est ça, liste de courses version
00:57:54 :orientée objet, c'est ça, il y a plusieurs listes de courses, je vais vous partager,il y a la liste de courses de base, débutant, d'ailleurs celle là est marquée débutantalors que c'est plus débutant, je change, et donc en fait tu passes d'un truc trèssimple, je crois qu'il y a même pas de fonction dans la première, et après l'idée c'est
00:58:24 :de faire un objet pour gérer la liste de courses, et donc ça permet de voir les deuxapproches et quel est l'intérêt de passer ou non par de l'orienté objet. D'ailleurs
00:58:35 :ça me fait penser à un autre truc que je voulais vous montrer, que je trouvais assezintéressant, c'est un autre étudiant qui m'avait partagé le code de la liste de coursesqu'il avait faite, et ce qui est intéressant en fait c'est que c'est assez subtil, etje trouve ça intéressant la façon dont il l'a fait, c'est que la question de base
00:58:58 :c'était que dans ses fonctions, donc lui il a vraiment fait des fonctions pour chaquepartie de la liste de courses, et à chaque fois il faisait un return du menu, et il m'ademandé en gros c'était ça sa question, est-ce que c'est une bonne pratique de mettreun return comme ça et de retourner le menu, sachant que le menu c'est en fait sa fonction
00:59:16 :qui demande à l'utilisateur de rentrer un choix et qui en fonction du choix va appelerles différentes fonctions. Alors ce qui est assez marrant c'est que ça marche, mais en
00:59:29 :fait il y a deux choses, c'est que quand on arrive déjà dans le script en fait ducoup il fait une genre de récursion mais qui ne se voit pas, parce que là on voitmenu alors on comprend qu'au début effectivement si le choix de l'utilisateur n'est pas dans
00:59:43 :cette liste ici, il rappelle le menu, donc là on commence à se dire ok il y a un petitcôté récursif là dedans, sauf qu'après en fait vu qu'il fait le return à l'intérieurdes fonctions, là on le voit plus, on se dit bon bah par contre si on va dans le else,
00:59:56 :moi je vois ça au début, sans regarder la suite je me dis bah une fois qu'il a choisiquelque chose la fonction elle se finit et puis c'est fini quoi. Mais vu qu'à l'intérieur
01:00:04 :des fonctions il fait un return de menu, bah du coup là il y a un appel à la fonctionelle-même mais qui est cachée, et donc ça c'est, vous voyez c'est vraiment le genrede truc où ça marche mais en plus le problème c'est que du coup la fonction elle fait plusieurs
01:00:21 :choses, imaginez que finalement, bon là c'est un exemple très simple, mais imaginez queces fonctions elles soient utilisées ailleurs, que justement elles soient utilisées parexemple dans une interface web, là on a un projet, un programme qui s'utilise en lignede commande mais imaginez qu'après il y ait quelqu'un qui utilise votre script et qui
01:00:36 :lui n'utilise pas le menu parce qu'il a fait une application Django justement avecune interface graphique, mais qu'il souhaite quand même, bon là ça serait pas le casparce que du coup il stockerait probablement ça dans une base de données et tout et iln'utiliserait pas input, mais du coup si, imaginez que cette fonction là elle soit
01:00:53 :assez générique et qu'il puisse l'utiliser pour son projet Django, bah si vous lui retournezune fonction avec un input et un menu etc, ça va pas aller quoi. Donc là il faut garder
01:01:04 :ce côté single responsibility, de ne pas avoir plusieurs choses dans la même fonction,là la fonction elle ajoute un élément et donc il faut aussi se poser la question qu'est-cequ'elle a, quel est le truc qui lui serait intéressant à retourner aussi, donc on sedit bah si on ajoute un élément ce qui serait intéressant là c'est de retourner l'élément
01:01:25 :par exemple, pareil pour retirer l'élément, affichage, bah si c'est juste de l'affichageil n'y a pas forcément besoin de retourner quelque chose, évider la liste ça pourraitêtre juste un true ou false si jamais il y a eu une erreur par exemple, donc là ilfaudrait voir si on préfère s'il y a eu une erreur éventuellement par exemple s'il
01:01:44 :y avait une écriture dans une base de données on pourrait vérifier que l'écriture a bienété faite, s'il y a eu une erreur est-ce qu'on lève une exception, est-ce qu'on nefait pas planter le script mais on fait juste retourner un false pour dire bon il y a eu
01:01:54 :un problème réessaye, donc voilà. Donc je trouvais ça assez intéressant comme scriptparce que voilà on voit que du coup c'est quand même clair, c'est séparé avec desfonctions qui ont des noms qui sont explicites etc, mais en arrivant au début vraiment jel'ai passé 30 secondes à me dire attend là il appelle le menu, après il fait ça,
01:02:19 :après ok, et du coup à me dire bah oui effectivement il y a une récursivité quoi, sans l'avoir.Est-ce qu'il y a d'autres questions ou on s'arrête là du coup pour ce soir? C'est
Aucune occurrence trouvée pour « ».