Session du 22 février 2024 à 20h00
Data Science & IA
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
Authentification Streamlit et orchestration Dagster
-
Un exemple très simple de gestion de connexion à une application streamlit grâce à une database postgre
-
Démonstration de Dagster un outil d'orchestration de data pipeline
00:00:00 :Ok, j'ai lancé l'enregistrement. Je vais attendre un peu que les gens arrivent.Est-ce que vous avez vu un peu le programme ?Dites-moi dans le chat si ça vous intéresse ou si vous voulez voir autre chose.
00:00:34 :Ok, donc Salvatore si t'as pas vu, ce que j'ai proposé c'est qu'on fasse une premièrepartie où on fait une identification, une connexion sur une application streamlit,mais en fait c'est streamlit mais ça pourrait être n'importe quoi, c'est juste pour l'exemple,ça pourrait être du Tkinter ou autre, via une connexion, via une interrogation aux bases
00:01:19 :de données post-grès. Donc ça permettra de voir un petit peu différents mécanismes,de mettre en place une base de données post-grès avec Docker ou des choses comme ça.
00:01:32 :Bref, on va explorer un peu plein de trucs. L'idée c'est toujours pas de montrer tout dans le détail,mais juste montrer un petit peu quelques concepts qui peuvent être, j'espère, intéressants.
00:01:43 :Donc ça c'est la première partie. La deuxième partie je vous montrerai Daxter,qui est un outil d'orchestration de pipeline data.Ça paraît un peu barbare comme nom, mais c'est juste un outil qui permet d'orchestrer,comme son nom l'indique, différentes parties d'un process data, donc extraire des données,les transférer, les transformer, faire un clean, etc. dans un ordre bien défini,
00:02:10 :parce que par exemple on peut pas faire un chargement de données, donc prendre la donnéeet la mettre sur un serveur, tant que la donnée n'est pas extraite.
00:02:17 :Donc en fait l'orchestrateur de pipeline va d'abord vérifier que la donnée est extraitejusqu'à ce qu'elle soit extraite, et tant qu'elle n'est pas extraite, il ne va pas faire le load,parce qu'en fait si on load un fichier qui n'existe pas, on va générer des erreurs, etc.
00:02:32 :et ça va faire planter le pipeline.Donc voilà, on peut mettre en place des schedulers aussi, avec les orchestrateurs de data pipeline.Un scheduler c'est tout simplement une tâche comme un crône en fait,comme l'écran de table sur Linux, qui permet de lancer le script par exemple tous les jours
00:02:53 :à une heure précise, ou toutes les heures, comme vous voulez.On pourra peut-être faire un petit tour vers l'écran de table aussi de Linux si ça vous intéresse,pour voir un peu ce que c'est que tout ça.
00:03:04 :Ok, alors, on va commencer.Je vais virer, attendez quelques...Ça je n'en ai pas besoin pour l'instant, et puis ça je vais le garder.Je vais voir par quoi on peut commencer.
00:03:30 :Ok, ça je vais me le mettre.Attendez, je vais créer une nouvelle...Je fais un petit peu de ménage dans mes écrans.Ok, donc ça, ça va être bon.
00:03:52 :Et puis, voilà, donc je vais enlever ma caméra, et puis c'est parti mon Kiki.Bonjour Jean-Philippe, on n'est pas beaucoup ce soir,donc je ne sais pas si c'est le programme qui a refroidi les gens,ou si c'est des vacances, ou si tout simplement les gens n'étaient pas dispo.
00:04:14 :Mais voilà, n'hésitez pas à poser des questions, à intervenir si vous ne comprenez pas,ou si vous avez des remarques.Et puis voilà, si jamais, comme toujours, si ça ne vous intéresse pas ou quoi,j'ai vu que Gab serait pas là, n'hésitez pas à quitter,ce n'est pas parce qu'on n'est pas beaucoup qu'il faut se dire,
00:04:37 :ah merde, il faut que je reste.S'il n'y a personne, ou s'il n'y a qu'une personne, il n'y a pas de soucis, je continue.Et puis s'il n'y a personne, c'est tout, j'arrête, il n'y a aucun souci.
00:04:45 :Voilà, donc, j'ai partagé mon écran, peut-être bien quand même.Pardon, ça va, vous voyez bien mon écran ?Ok, j'ai une question avant de commencer, est-ce que parmi vous,il y en a qui utilisent PyCharm avec un Mac, avec un Macbook ?
00:05:27 :Dites-moi dans le chat, non.Parce qu'en fait, ok, si il n'y a personne, ça sert à rien que je pose la question,mais j'ai un problème avec l'activation des environnements virtuels dans PyCharm avec Mac.
00:05:43 :Si, moi je suis sur Mac.Ouais, et tu utilises PyCharm aussi Salvatore ?Ouais, ouais.Et tu n'as pas un problème quand tu mets un environnement virtuel dans PyCharm ?
00:05:54 :Si, ça m'est arrivé justement, j'avais posé une question au sujet du site e-commerce.Ouais.Et justement, c'était mon environnement virtuel qui avait foiré.Ouais.Ça m'est arrivé, mais après j'ai refait et depuis ça fonctionne.
00:06:16 :Ah oui, ça c'était ta question il n'y a pas longtemps là.C'est ça, ouais.Ouais.Non là, c'est vraiment pour moi, c'est un problème que j'ai général.
00:06:24 :En fait, dès que je crée un projet et que je crée un nouvel environnement virtuel,je ne le retrouve pas dans ma liste des environnements virtuels disponibleset puis il ne trouve pas les bibliothèques.
00:06:33 :Enfin bref, je pense que c'est un problème lié au Mac parce que c'est une puce M1,je ne sais pas si toi c'est pareil.Moi aussi, moi j'ai la M2.
00:06:39 :M2 ? Ok.Ouais.Ouais, bah écoute, je posais la question.Parce que moi aussi j'ai galéré pour trouver.En fait, il faut aller dans l'ordinateur et revenir sur la racine et tout.
00:06:50 :C'est un peu…Ah oui ?Ouais, c'est un petit peu…Ok.Bon, je regarderai plus en détail.Parce que moi j'ai…Il faut vraiment, tu vois, à partir de l'ordinateur, tu vas dans l'ordinateuret tu recherches jusqu'à la racine et après tu le trouves.
00:07:07 :C'est comme ça que j'ai pu faire.Ok.J'ai galéré deux, trois fois au début, je ne comprenais pas,c'était pas évident.Ouais, bon, bah je vais réessayer.
00:07:16 :Parce que moi j'utilise VS Code d'habitude, mais…Ouais, VS Code c'est plus facile, ouais, c'est juste.Bah ouais.Après PyCharm, c'est vrai que c'est un peu attirant,parce qu'il gère quand même pas mal de trucs tout seul.
00:07:27 :Mais c'est vrai que c'est un peu la merde.Toi Pierre, Pierre, tu dis, sous Linux,tu as dû nettoyer le sort de cache ou de répertoire.
00:07:34 :Ok.Bon, je continuerai à regarder.Et puis sinon…Pardon.Avec PyCharm.Ok.Merci.Bah ouais, c'est parti sur VS Code.Ok, donc là on va se faire une petite…J'ai déjà installé les librairies, StreamIt, etc.
00:07:50 :Donc on va partir directement là-dessus.Voilà.Attendez, je vais essayer de…J'aimerais bien mettre…Je voudrais afficher…Je vais afficher les messages en même temps.
00:08:05 :Voilà, comme ça on est bien.Ok, donc on va se faire une petite page de…Juste une petite application.Elle ne sera pas…C'est juste pour montrer un exemple de…de connexion.
00:08:28 :Ok, donc ça, je vais même la copier directement sur ce que j'ai déjà fait.Comme ça, on ne va pas s'embêter.Donc là, en fait, ce qu'on fait, c'est qu'on va juste se créer…On va juste se créer une petite fonction qui va se connecter à…Ici, il faut que je définisse quand même la fonction.
00:08:49 :DevConnectDB.Pour l'instant, elle est vide.Et on va se faire aussi un AuthenticUser.Authenticate.User.Username.Password.Et la connexion.Et on va faire…Ok, donc là, normalement, on devrait avoir un truc qui fonctionne.
00:09:23 :Je vais juste vérifier.Voilà.Je peux agrandir…Oui, bien sûr.Comme ça, ça va mieux.Parce qu'après, quand c'est trop gros, j'ai du mal à me les retrouver.
00:10:07 :Mais dites-moi si là, c'est…Ok.Bon, pourquoi lui, il ne se lance pas ?Ah, ça se lance bien.Ok.Bon, super.Je ne sais pas ce qui…Je vais relancer parce que…Ok.
00:11:01 :Bon, qu'est-ce qu'il me fait, lui ?Pourquoi il sort ?Putain, c'est pas vrai.Désolé, je ne sais pas ce qu'il me fait.Putain.Il va recréer l'environnement virtuel.
00:11:56 :Je ne sais pas pourquoi il galère.Ah, c'est parfait, ça.Ah, c'est bon.Pardon.Ok.Donc là, on a notre petite application Streamlit.Bon, voilà, pour l'instant, on n'a pas fait grand-chose.
00:12:34 :On a juste une page d'identification.Donc, ce qu'on va faire, c'est que d'abord, on va se créer une connexion à une database.Mais avant de se créer une connexion à une database,il faut forcément qu'on ait une database qui tourne.
00:12:44 :Là, on a une page de l'identification.Donc, on va se créer une page de l'identification.On va se créer une page de l'identification.Et on va se créer une page de l'identification.
00:12:52 :Donc, il faut forcément qu'on ait une database qui tourne.Là, je n'en ai pas.Ce que je vous propose, c'est que je vous montre en production comment on faitpour déployer une database assez facilement avec Caprover.
00:13:03 :Alors, Caprover, on en avait déjà parlé.C'est Quentin qui nous a parlé de ça la dernière fois.Ça permet de déployer facilement des applications en un seul clic.
00:13:17 :Et on peut déployer des applications et des bases de données.Donc, on va faire ça.Je vais le faire avec plutôt Google Chrome,parce que pour déployer une application, il vaut mieux utiliser Google Chrome.
00:13:28 :Voilà.Donc, on va aller là.Je vais sur Caprover.Donc, Caprover, en fait, c'est un service que j'ai déployé sur un de mes VPS.Vous pouvez le faire aussi.
00:13:39 :C'est gratuit.C'est open source.Voilà.Donc, vous mettez votre mot de passe.Enfin, bref, vous verrez tout ça, comment ça marche.OK.Donc, on se retrouve sur notre dashboard.
00:13:49 :Et donc, là, on va faire One Click Apps Database.Donc, là, on va aller chercher une database Postgre.Donc, Postgre.Il y a plein d'applications disponibles.
00:13:58 :Vous pouvez déployer.Et vous pouvez même déployer vos propres applicationsque vous avez mises sous forme de conteneurs Dockers.Donc, on déploie du Postgre.Donc, on va l'appeler Streamlit DB.
00:14:15 :OK.Donc, tout ça, on laisse par défaut.Il met le mot de passe, machin.OK.Donc, on va la déployer.Donc, là, je suis en train de déployer une base de donnéesque vous imaginez quand vous faites du Django ou quoi.
00:14:25 :C'est un peu la même chose, sauf que là, c'est une base de donnéesqui sera sur un serveur accessible via ces données-là.Donc, on fait Finish.
00:14:34 :Il y a un petit truc à faire pour qu'elle soit accessible depuis l'extérieur.Ici, là, elle n'est pas exposée.Parce qu'en fait, ici, là, elle serait uniquement accessiblepar les autres applications que j'ai déployées sur le serveur.
00:14:47 :Si on veut que ça soit accessible depuis l'extérieur, il faut décocher ça.Là, j'active le HTTPS.Et on va lui dire que le...Qu'est-ce qu'il me dit ?
00:15:10 :C'est pas vrai.Bon, on va voir si ça marche quand même.On va ajouter un port mapping.Tout ça, c'est pas grave si on n'est pas sûr de le capter.
00:15:24 :5432.Je suis juste en train de déployer une database, là.OK.5432.Ça, c'est le port de Postgres classique.Et puis là, on va lui mettre aussi 5432.
00:15:44 :OK.On va voir si, sans le HTTPS, ça fonctionne quand même.Voilà.Donc là, on a une base de données, normalement, qui fonctionne.On va aller vérifier qu'elle est bien en placeavec un service qui s'appelle PG Admin.
00:15:59 :PG Admin, ça permet d'administrer plusieurs databases d'un coup.Donc là, vous voyez, par exemple, j'ai des databases de productionque j'utilise perso.Et là, je peux déployer, je peux visualiser une nouvelle database.
00:16:11 :Donc, on va faire ici, on va faire Create.On va faire un nouveau serveur.Donc là, on va l'appeler Streamlit DB.Voilà.Dans les dev, machin, qu'est-ce qu'il me veut ?
00:16:32 :Connexion.OK.Donc là, on va mettre le nom du serveur, 5432, machin.Et là, on va mettre le username et password que nous a donné le déploiement.
00:16:46 :Donc là, on va mettre Postgre et ici, ce mot de passe-là.OK.Donc là, normalement, on devrait être bon.Save.OK.Donc là, on a notre database.
00:17:02 :Ça nous permet d'aller voir notre database.Et ce qu'on va faire, c'est qu'on va directement aller créer une tabledans notre database qu'on vient de créer avec, je vais zoomer un peu,avec les users et les usernames, etc.
00:17:14 :Donc, on va faire Table et on va faire Create Table.OK.Donc là, on va dire que ça va être une table de users.Et on va mettre des colonnes.
00:17:26 :Donc, les colonnes, on va les définir.Donc, on va mettre le username.Ça va être un type texte et il ne faut pas que ce soit nul.
00:17:34 :On va en ajouter un autre et on va mettre le password.Pareil, du texte.Donc là, ne rentrez jamais, ne faites pas ce que je fais.
00:17:42 :Ne rentrez jamais les mots de passe en clair dans une base de données.Là, c'est juste pour l'exemple.On va juste mettre du texte.Donc là, j'ai créé deux colonnes dans ma database.
00:17:51 :Si je vais voir ma table et que je regarde du, qu'est-ce qu'on peut aller,View All Rows.Donc là, pour l'instant, je n'ai aucune entrée.
00:18:02 :Donc, ce qu'on va faire, nous, c'est qu'on va dire,Courrier éditeur, pourquoi je ne peux pas rentrer dedans.OK.Donc là, on va dire Insert into User.
00:18:23 :Et je ne me souviens plus exactement de la syntaxe.Donc, on va aller demander à ChatGPT pour faire le SQL.Commande SQL pour ajouter Username et Password dans une table Users.
00:18:47 :OK.Donc là, je copie le code un peu comme un bourrin.OK.Donc là, on va dire Username, Password.On va dire Jean et Pass 1.
00:19:11 :OK.On exécute.OK.Et puis, on va aller vérifier qu'on a bien.Donc, Select étoile from Users.Donc là, on dit qu'on va aller voir ce qui se passe dans notre database,un petit peu pour voir quand même.
00:19:27 :OK.Donc là, j'ai Jean.Si j'ajoute Étienne avec un mot de passe 2,donc là, je vais réexécuter cette commandeet que je retourne voir les éléments dans ma database.
00:19:40 :OK.Donc là, j'ai bien Jean, Étienne.J'ai les différentes entrées dans ma database.Est-ce que pour l'instant, ça va ?Ou est-ce que c'est trop obscur pour vous ?
00:19:50 :Juste pour...Enfin, dites-moi.Je ne sais pas ce que vous en pensez.Mais on a déployé une database avec Docker,avec une surcouche par-dessus qui sont en fait Caprover,qui nous a aidés à déployer la database.
00:20:07 :Ensuite, on a été voir ce qui se passe dans notre databasegrâce à pgAdmin,qui nous permet d'administrer plusieurs databases en même temps.Donc là, vous voyez, moi, j'en ai deux.
00:20:16 :J'en ai une en production pour mon Dolibaret ici, juste en dev, la Streamlit.Et dedans, on a été faire quelques requêtes SQLpour populer la databaseet on peut aussi aller voir la database.
00:20:29 :Donc là, on a une database qui fonctionne.On va voir si depuis Python,on arrive à accéder à notre database.Donc pour ça, on va faire...
00:20:38 :Comment je vais m'en sortir là-dessus ?Je vais aller récupérer la fonction que j'avais écrite tout à l'heure,sauf que je vais enlever le hostet je le mettrai en cachet pour ne pas que vous le voyez.
00:20:54 :OK. Connect database.OK. Donc là, je fais une fonction qui va connecter la database,mais depuis Python.Donc il me faut tout ça.Il me faut PsycobG2.
00:21:15 :Donc ça, c'est la librairie qui permet de se connecter à du Postgre.Donc ça, je vais quitter et je vais faire un pip install PsycobG2.
00:21:27 :Et normalement, je vais avoir un message d'erreurparce qu'en fait, pour cette librairie-là,ce n'est pas ça qu'il faut installer.Il faut installer PsycobG2 binary.
00:21:36 :OK. Donc pip install.Voilà. Donc là, on installe ça.On devrait pouvoir normalement,s'il a bien pris,PsycobG2. Voilà.Il va se connecter.Pareil, ne faites pas ça.
00:21:57 :Ne mettez pas en dur le mot de passe, mais là, c'est pour l'exemple.Donc ça, c'est vraiment le mot de passe de la databaseque m'a donné Caprover.
00:22:05 :Et l'adresse IP, donc là, tout à l'heure,ce qu'on a fait quand on a été voir dans pgAdmin,c'est qu'on a utilisé...Je pense que je peux aller voir là-dessus.
00:22:17 :Properties.Vous voyez, moi, j'avais utilisé ça.Mais ça, c'est quelque chose qui est accessibleuniquement depuis le Caproverparce que je suis sur le même réseauque l'endroit où j'ai déployé.
00:22:33 :Nous, il va falloir qu'on utilise l'adresse IP.Donc en fait, ce que je vais faire ici,c'est que je vais mettre l'adresse IP de mon serveur VPS.
00:22:39 :Mais voilà, je vais le mettre dans une variable d'environnementpour pas que vous le voyez.Donc je vais juste créer ici .env.Je vais mettre ici...
00:22:53 :Je vais mettre dbHost.Et puis je vais l'écrire ici.Et puis là, je vais utiliser les variables d'environnementpour aller les chercher.Donc je vais faire un pip install python.env.
00:23:12 :Ok.rom.env.import load.env.Et je vais faire un load...En fait, j'avance là, mais s'il y a des chosesque vous ne connaissez pas, dites-le.
00:23:25 :Là, c'est mes bibliothèques qui permettent de simulerles variables d'environnement dans un strict python.Donc là, je fais ça.import os.Et ça me permet de faire un os.osenviron.
00:23:41 :Donc là, si je fais os.environ pour les environnements.Get.Et donc là, je vais mettre dbhost.Et là-dedans, dans dbhost, je vais juste le mettre là à côtéet je vais mettre mon adresse IP.
00:23:59 :Il faut que j'aille la récupérer quelque part.Elle était...ici.Donc là, je mets l'adresse IP.Je la mets là.Ok.Et je vire ça.
00:24:23 :Voilà.Donc là, en fait, je l'ai mis dans mon .env,l'adresse IP.Comme ça, vous voyez un peu le principe.C'est que comme ça, on ne voit pas ce qui se passe.
00:24:33 :Et puis ça...except.Donc là, j'ai mis mon adresse IP.Et puis ça...except.Je vais le mettre juste...Voilà.Donc, attendez, je vais dézoomer un peu,juste pour avoir un peu clair.
00:25:00 :Ok.Donc là, on a connect db.On va vérifier que ça, ça fonctionne déjà.Voilà.Ça devrait fonctionner, je pense.Donc en fait, si ça fonctionne,connect db ifcon.
00:25:16 :Voilà.En fait, normalement, si on arrive à se connecter,on verra dans le sidebar queon a bien une connexion à la database.On pourra aller interroger justementpour voir les utilisateurs ensuite.
00:25:27 :Donc, je relance mon Streamlit.Voilà.Qu'est-ce que c'est ?Name i, c'est pas défini, c'est où ça ?Base de données.Ah oui.Alors, erreur de connexion à la base de données.
00:26:00 :Qu'est-ce qui se passe ?Est-ce que c'est à cause de...Est-ce que ça serait pas à cause de...Parce que je ne suis pas passé en HTTPS.
00:26:23 :Ok.Très bien, ça a fonctionné.On retourne là-dessus.Toujours pas.Pourquoi il ne se connecte pas ?54.32, ça c'est correct.Euh...Le nom de la base de données n'est pas correct.
00:27:16 :Euh...Si, elle s'appelle comme ça normalement.Attends, je vais voir.Ouais, si, normalement c'est correct.Pourquoi ça ne passe pas tout à l'heure ?Ça a fonctionné.
00:27:43 :Euh...Attendez.À mon avis, c'est peut-être là-dessus.host.environ.getdbhostEuh...Attendez, j'essaie juste un truc.Je vais voir.Je pense que c'est parce qu'il ne va pas bien lire le...
00:28:16 :Euh...Alors...J'essaie de voir si l'adresse IP que je lui ai renseignée...Je crois que tu l'as appelée Streamlit.DB.Ouais, mais ça c'est le nom du...
00:28:51 :Streamlit DB.Ça c'est le nom de l'application.T'as peut-être raison.Je vais essayer, mais...Streamlit DB.Je vais voir.Attends, j'essaie juste déjà de voir si ça c'est bien.
00:29:03 :host.db...Ah oui, attends.Je pense que déjà j'ai fait une couille là-dessus.C'est dbhost.Euh...Non, ça, ça fonctionne.Bah, attends.On va voir si c'est ça.
00:29:22 :Euh...dbname...Pourquoi je l'avais appelée...Je ne sais pas si c'était ça.Euh...C'était comment que je l'avais appelée ?Streamlit DB, comme ça ?
00:29:37 :Honnêtement, je ne suis pas sûr que ce soit ça.Non, c'est pas ça.Euh...dbhost...Euh...Je vais faire un test avec l'adresse IPsans me servir de...
00:30:00 :...Euh...Non, toujours pas.C'est un peu embêtant.Qu'est-ce que je fais de mal ?Ah oui, c'est comme ça.dbhost...Ce n'est jamais marrant de...
00:30:39 :......Je me permets peut-être...Ouais, vas-y !...Bah ouais, c'est ce que j'ai été vérifier.Euh...Tu vois...Attends.Euh...Postgres, Postgres...Non, tu vois, c'est bien ça.
00:31:02 :Maintenant, Database...Euh...Qu'est-ce que je pourrais...vérifier d'autre ?Non, pourtant, en fait, avec PG Admin,on a bien pu vérifier qu'on était bien connecté.
00:31:15 :Je vais essayer Streamlit DB, ça n'a pas fonctionné.En fait, ça, c'est juste le name de la connexion.Euh.....................
00:31:34 :..................Euh...Alors, qu'est-ce que je peux avoir fait ?Je ne m'y connais pas à fond,mais le fait qu'elle soit marquée en haut sur Shared...
00:31:47 :De quoi ?Je ne m'y connais pas à fond,mais le fait qu'elle soit marquée en haut sur Shared...Non, ça, c'est pour...Tu vois, en fait, j'ai différents groupes...
00:31:56 :C'est le fait qu'elle soit partageable entre devs,enfin, les différents environnements de database.OK, autant pour moi.Non, non, pas de souci, c'est sympa d'essayer.
00:32:07 :Euh...Attendez, qu'est-ce que j'ai pu avoir fait ?Euh...Hum...C'est mon chat GPT.Ouais, mais tu vois, avec cet GPT, je ne saurais même pas quoi lui demander, là.
00:32:31 :Euh...Ben, tu lui balances le code, dis-lui qu'il l'analyse.Ouais, après, moi, j'ai peur que ce soit un problème de...Attends, ça, je vais retourner là-dessus.
00:32:40 :Euh...Post...Trace...Post...Euh...Ah, attends, il y a peut-être un truc que je n'ai pas fait.C'est dans 54.32.On est bien dans 54.32.
00:33:06 :Les passwords, ils ne sont pas identiques.De quoi ?Les passwords que tu viens de nous montrer, là, dans app.config.Ouais.C'est le password qu'il y a dans le script qui n'est pas identique.
00:33:20 :Ah, ça, c'est pas mal du tout, je pense.Ah, bien vu.Excellent.Je pense que...Ouais, c'est parce qu'en fait, c'était le password de la base donnée que j'ai fait tout à l'heure pour...
00:33:30 :Euh...Ah.Pour le tuto.Enfin, tu vois, à chaque fois, je fais quand même des petits tests avant de vous montrer.Ah, magnifique.Je ne sais pas qui est intervenu.
00:33:46 :Je ne l'ai pas vu, mais merci.Ah, merde, il y a plein de gens qui veulent participer depuis tout à l'heure.Bien vu.Merci beaucoup.
00:33:55 :Désolé, je viens d'accepter les personnes qui viennent de rentrer.Je ne sais pas depuis combien de temps vous vous attendez.J'espère que ça ne fait pas trop longtemps.
00:34:05 :Euh...Alors, où est-ce qu'on a été ?Ok.Donc là, on a bien la connexion à la database.Merci pour le débugage et merci à tous pour votre patience.
00:34:18 :Alors maintenant, ce qu'on fait, c'est que le...Il faut qu'on se crée une authentification.Enfin, une authentification.Le...La fonction qui va permettre d'aller interroger.
00:34:40 :Après, maintenant, il n'y a plus grand-chose.Je vais récupérer ça directement.Je ne veux pas m'embêter.En fait, on va aller récupérer le nom du user rentré.
00:34:53 :On va aller filtrer.On va aller vérifier que quand on tape le username et le password,on a bien une entrée.Si on a une entrée, on a une authentification.
00:35:04 :Et si on a quelque chose, on n'a pas d'authentification.Donc, ça je vais relancer.Streamlit, ok, je lance.Donc, si je tape Michel,et que là je fais mot de passe, se connecter,j'ai mot de passe incorrect.
00:35:24 :Parce que si on retourne dans PGA Admin,le seul truc qui devrait marcher,normalement, c'est Jean passe 1 et Étienne passe 2.Donc, si je retourne et que je fais...
00:35:33 :Si je retourne là-dessus...Où est-ce qu'elle est ? Elle était là.Donc là, maintenant, je fais Jean.Et là, je dis passe 1, se connecter.
00:35:48 :Donc là, j'ai authentification réussie.Et si, par exemple, j'avais rentré passe 2,je n'avais pas de connexion.Et après, il suffirait de se dire que...
00:35:56 :Pas de soucis pour les gens qui sortent tard.Et puis moi, j'ai un peu tardé à faire rentrer les gens.Je n'avais pas vu qu'il y avait des gens qui attendaient.
00:36:03 :Désolé.Voilà.Et après, vous pouvez imaginer que dans votre application,vous faites des choses uniquement si Authenticated est True.Et puis sinon, vous n'autorisez pas les gens à rentrer.
00:36:15 :Donc, voilà un peu.Et puis après, vous, dans PGA Admin ou n'importe où,vous pouvez aller soit révoquer des utilisateurs,donc vous pouvez aller supprimer des utilisateurs,en insérer des nouveaux, plein de choses.
00:36:27 :C'est juste...Voilà.C'est un peu le mécanisme qu'on pourrait utiliserpour faire une autre authentificationavec une base de données persosur n'importe quelle application.
00:36:40 :Là, je l'ai fait sur Streamlit,mais ça aurait très bien pu être du TkInter ou PySide.Je sais que la dernière fois, il y a quelqu'un qui a demandé ça.
00:36:46 :Voilà.C'est un peu...Vous voyez, il n'y a pas énormément de choses.On a déployé une base de données,on a été l'administrer, etc.Donc, on a fait quelques trucs intéressants.
00:37:00 :Est-ce que vous avez des questions là-dessus ?Est-ce que vous voulez revoir des choses en particulier ?Ça, c'est ce que je voulais vous montrer pour la databaseet puis la connexion à l'application.
00:37:17 :Donc, pour ceux que ça intéresse,ça, c'est Caprover.Ça permet de déployer des applications,soit des applications que vous, vous avez développéesou soit des applications qui existent déjà.
00:37:32 :Tout ce qui est...Enfin, je ne sais pas.En fait, tout ça, c'est la liste de toutes les applicationsqui sont disponibles.Vous voyez, par exemple, on peut déployer un Xcloud,on peut déployer Odoo,on peut déployer...
00:37:44 :On peut déployer Odoo,on peut déployer OpenVPN,enfin, vraiment plein de choses.Portainer, tout ce que vous voulez.Donc, si jamais vous avez ça sur un VPS,ça vous ouvre beaucoup de portesparce que vous pouvez déployer facilement beaucoup de choses.
00:38:01 :Voilà, donc ça, c'était pour Streamlitet connexion database Postgre.Je vais m'arrêter là pour ça,à moins que vous ayez des questions là-dessus.Non, c'est bon ?
00:38:23 :Ok, s'il n'y a pas d'autres questions,je vais continuer sur l'autre sujet.Au final, j'ai fini par montrer cette fichue adresse IP,mais bon, tant pis.
00:38:40 :De toute façon, honnêtement,vous ne pouvez pas faire grand-chose avec.Voilà, donc, on va fairepipeline data.py.Avant ça, est-ce que ça vous intéressede savoir ce que c'est que les crontables,parce qu'en fait, c'est un peu lié à ce qu'on fait.
00:39:08 :Une crontable dans Linux,est-ce que vous savez ce que c'est ?Est-ce que vous l'avez déjà utilisé ?Crontable, ouais, c'est ça.Ok, pour ceux qui ne connaissent pas,ça peut être intéressant si vous avez des serveurs Linuxou même si vous avez une machine Linux,ça peut automatiser facilement
00:39:36 :des tâches que vous faites.Sur une machine locale que vous éteignez le soir,ça n'a pas forcément beaucoup d'intérêt,sauf si vous allumez votre PC le matin,il n'y a pas de souci,mais l'idée quand même des crontables,c'est bien d'avoir un PC qui est tout le temps H24 couvert,
00:39:52 :donc soit un Raspberry Piou un serveur Linux typiquement.Normalement sur Linux et macOS,vous avez deux bases.Désolé, je ne sais pas pour Windows,je ne pense pas que ça existe,il faut aller dans le gestionnaire de tasks.
00:40:06 :Mais bon, si vous avez un serveur,il sera forcément sur Linux.Donc, vous faites crontable L.Donc là, il me dit qu'il n'y a aucune crontable qui existe.
00:40:18 :On va aller se placer dans un document.Et puis là, on va se faire un petitmkdir test crontable.Et on va aller dedans directement.
00:40:40 :OK.Donc, pour rentrer dans l'édition des crontables,on va taper crontable slash E.Je n'aime pas trop cet éditeur.Enfin, j'aime bien Emacs,c'est un peu chiant pour ça,mais bon, ce n'est pas grave.
00:41:07 :Je vais d'abord quitter.Imaginons qu'on veuille écrire dans un fichier texte,je ne sais pas, des logs ou des choses comme ça.Donc, on pourrait faire echohello.txt
00:41:24 :Donc ça, cette commande Linux,elle va aller m'écrire dans mon dossier,dans un fichier txt.Donc, si je fais 4 hello,voilà, j'ai bien hello.
00:41:33 :Si je continue à faire ça,et que je retourne voir 4 hello,voilà, je continue à écrire hello.En fait, ça, ça veut juste dire echo hello.
00:41:43 :Dans Linux, echo hello, c'est affiche-moi hello.C'est un peu comme le print de Python.Et si je fais echo hello avec ces signes-là,ça veut dire redirige-moi la sortie vers le fichier texteque je te dis.
00:41:56 :Donc, hello.txtOK.Donc là, si je fais à chaque fois.Nous, ce qu'on aimerait bien,c'est faire automatiquement ça.Donc, ce qu'on peut faire,c'est qu'on va faire cron-tab.
00:42:10 :On va aller éditer la cron-tab.Et on va direEn fait, ce qu'on dit, c'est que1, 2, 3, 4, 5Echo.Je vais juste réécrire la commandequ'on a exactement tapé.
00:42:27 :Echo hello.txtPar contre, il va falloir qu'on tape le nom.Il faut qu'on tape le nom.Le chemin absolu.OK.Echo hello.Voilà.OK.Donc là, si je fais ls,je vais faire rm hello.txt
00:43:10 :Donc là, normalement, vous allez voir qu'il n'y a rienparce que tout est passé.Si je fais cron-tab l,il me dit, je vois un truc qui existe.
00:43:20 :C'est quoi ça, les 5 étoiles ?Ça veut dire que je veux que tu me fasses çatoutes les minutes, tous les jours,toutes les heures, toutes les années, tous les mois.
00:43:31 :Enfin, je ne sais plus exactement dans quel sens c'est.Mais en fait, l'étoile,ça veut dire tout pour chaque colonne.Ça, ça représente la minute.
00:43:39 :Ça, c'est l'heure, le jour, le mois, l'année.Donc là, je dis en fait toutes les minutes.Et donc maintenant, si je fais ls,est-ce qu'il l'a pris ?
00:43:50 :J'ai l'impression que la cron-tab n'a pas fonctionné.Non, normalement, ça devrait fonctionner.Enfin bref, c'est ça le principe de cron-tab.C'est que vous pouvez définir des tâches récurrentes.
00:44:11 :Mais avec Linux, c'est un petit peu fastidieux.Vous voyez que là, typiquement, ça n'a pas marché.Mais normalement, ça marche.Je ne sais pas ce que j'ai fait.
00:44:19 :Je ne vais pas repasser du temps à débugger.Ce n'est pas intéressant.Nous, on va plutôt utiliser des pipelines de data.Donc pour ça, on va utiliser le framework Daxter.
00:44:29 :Donc Daxter, c'est un peu comme Airflow.Je ne sais pas si vous connaissez.C'est un outil qui permet de faire des pipelines de data.Donc pour ça, on va l'installer.
00:44:38 :Daxter.Et on va prendre aussi Daxter.Je crois que c'est WebServer.OK.Donc, ça installe.Voilà.Et donc, c'est assez simple.On va faire import.
00:45:09 :Déjà, vous voyez que c'est un peu comme Django.En fait, il y a un framework web autour de ça.Donc, si je fais...Je vais peut-être d'abord créer quelque chose.
00:45:20 :Sinon, on prend Daxter.Import.Assets.Il suffit de faire...C'est un décorateur.Assets.Def.C.Hello.Et là, on va juste dire print.Le fameux Hello.
00:45:38 :Voilà.Et normalement, avec ça, on est bon.On peut lancer le serveur de développement.Donc, si je fais Daxter.Def.F.PipelineData.Normalement, il va me lancer un petit serveur de développement.
00:46:00 :Un peu comme le fait Django.Et donc, je vais dézoomer un peu.Il est là, mon serveur de développement.Tout ça, je peux l'enlever.On ne s'en occupera plus.
00:46:17 :Voilà.Donc là, je suis sur le petit serveur de développementque m'a mis en place Daxter.Ce n'est pas terrible, ça.Bon, ce n'est pas hyper grand.
00:46:32 :En fait, là, je vois ma fonction.Et il ne se passe rien.C'est juste que si je fais Materialize.Voilà.Il va juste lancer ma fonction.
00:46:40 :Mais vous voyez que...Pas de souci, Stéphane.Il ne s'est rien passé, là.Si je vais juste voir.Je pense que je peux aller voir les logs.
00:46:50 :Et voilà.Il m'a juste dit...J'ai juste fait Hello.Donc, il ne s'est pas passé grand-chose.Ce qui peut commencer à devenir intéressant,c'est qu'on peut lier les fonctions les unes aux autres.
00:47:04 :Donc là, typiquement...Ça, je vais virer parce que ce n'est pas intéressant.On va dire Def.ExtractData.Et puis, on va simuler comme si on avait extrait de la datadepuis un site web.
00:47:15 :Je vais zoomer un peu.Et on va dire WithOpenExtractData.csv.Csv.On va faire WriteAsF.On ne va rien écrire dedans.Sinon, je vais faire juste Def.WriteHello.
00:47:38 :Puis, on va mettre plutôt du txt.Et puis, on va dire AssetDefNodeData.Et en fait, on va dire qu'on va importer...En fait, on va simuler le fait qu'on load la dataen transformant le nom d'ExtractData en loadData.
00:48:11 :Donc, on va dire ShutTil.C'est la bibliothèque que j'utilise pour manipuler les fichiers.Copie.Et donc là, on va dire ExtractData.txt.Et on va le mettre en loadData.txt.
00:48:33 :Et retourne None.On n'a pas besoin.Voilà.Je vais peut-être devoir le relancer.Donc là, typiquement, vous voyez que si jamais je fais une fonction classique Pythonet que je dis IfName et que je fais juste loadData,je vais avoir une erreur forcément.
00:49:01 :Parce qu'en fait, si je lance ça, il me dit qu'il n'y a pas le file qui est créé.Donc forcément, après c'est sûr, j'aurais pu gérer l'exception en disants'il n'y a pas le file, tu ne fais pas la copie.
00:49:14 :Mais là, ce n'est pas l'objet.C'est juste pour vous montrer que grâce à un pipeline de data,on peut faire en sorte que ce loadData se charge uniquement si l'ExtractData a fait son boulot.
00:49:26 :Voilà.Donc ça, je vais le virer.On n'a pas besoin.Donc là, je vais vérifier qu'il est bien apparu dans mon pipeline.Pourquoi je n'ai plus mon environnement ?
00:49:36 :Je vais le virer parce qu'il fait de la merde.Ok.Donc là, je vais voir.Donc là, j'ai bien mes deux trucs.Mais par contre, vous voyez qu'ils ne sont pas liés.
00:49:57 :Donc ce qu'il faut faire pour les lier, il faut lui dire Dependencies.En fait, le loadData, il suffit de définir les dépendances de loadData.Donc si je fais ExtractData, en fait là, je lui dis que tant qu'ExtractData n'est pas fait,tu ne te lances pas.
00:50:18 :Donc maintenant, si je retourne, est-ce qu'il faut que je relance ou je vais juste remettre à jour ?Donc là, vous voyez que maintenant, j'ai une flèche qui est apparue.
00:50:27 :Et on peut voir visuellement que tant qu'ExtractData n'a pas fait son job,le loadData ne va pas lancer son job.Donc là, typiquement, je vais même...
00:50:40 :Voilà.Donc si on fait Material as whole, en gros, ça veut dire, vas-y, lance tout le pipeline.Donc là, je lance le pipeline.Donc là, vous voyez, en fait, lui, il attend que celui-là, il ait terminé.
00:50:55 :Et tant qu'il n'a pas terminé, il ne se lance pas.Et une fois que lui, il l'a fait, il se lance.Donc là, vous voyez que j'ai un ExtractData.txt et le loadData.txt.
00:51:03 :Après, on pourrait en rajouter.On pourrait se dire def cleanpipes.Et en fait, là-dessus, on pourrait se dire, c'est qu'on va faireos.removeExtractData.txt.Je n'ai pas os.
00:51:35 :Et ici, on va dire os.removeLoadData.txt.Donc là, c'est pareil, en fait.Tant que ce qu'on va dire, c'est que lui, il va dépendre des deux qui ont été faits avant.
00:51:52 :Donc on va dire asset.Asset, c'est juste pour dire que c'est une fonction qu'on veut dans notre pipeline,pour notre framework.Donc là, les dependencies, ça va être ExtractData, mais aussi LoadData.
00:52:06 :Donc en fait, il suffit de rentrer une liste comme ça.Et donc si je vais voir maintenant...Voilà.Donc en fait, cleanfile, il va attendre que les deux ont fait leur job pour pouvoir se lancer.
00:52:17 :Parce que vous voyez bien qu'on ne peut pas supprimer le fichier tant qu'on ne l'a pas créé.Donc là, vous voyez qu'ils existent tous les deux.
00:52:24 :Donc si je lance tout le pipeline...Voilà.Donc lui, il ne va pas se faire tant que les deux ne sont pas terminés.Donc là, il a terminé.
00:52:35 :Et si je vais voir là, là, je n'ai plus rien parce qu'il a fait le clean.Voilà.Donc c'est déjà, je trouve, très intéressant.Ça vous permet un peu de gérer vos...
00:52:44 :C'est un peu comme des flows.Vous pouvez gérer vos différentes fonctions.Et ce qu'on peut même faire, c'est un scheduler.Donc là, ce que je vous ai montré tout à l'heure, on peut le faire ici, visuellement, là-dessus.
00:52:55 :Donc pour ça, il faut créer ce qu'on appelle des définitions.Donc des définitions...Je vais aller chercher directement dans un truc que j'ai déjà fait,parce que sinon ça va prendre du temps.
00:53:10 :Attendez, je vais chercher...Je vais chercher une nouvelle fenêtre.Hum...Ah non, ce n'est pas là que je l'avais fait.Hum...Je vais demander à Chad GPT de ne pas m'embêter.
00:53:55 :On va voir s'il comprend d'ailleurs.Je n'ai jamais testé s'il connaissait Daxter.Hum...Hum...Hum...Alors, est-ce qu'il a à peu près compris ce que je voulais ?
00:54:50 :Hum...Hum...Pas tout à fait.Hum...Ok, donc en fait, ici, il faut lui définir les assets,donc les différentes parties qu'il y a dans notre pipeline.
00:55:21 :Moi j'ai extract data, j'ai load data,et j'ai clean...Clean files, ouais.Ensuite, qu'est-ce que j'ai ?Je demande à Chad pour aller plus vite.
00:55:49 :Putain, il comprend rien, c'est pas possible.On va aller voir dans la documentation.Hum...Est-ce que ça, c'est suffisant ?Si ça se trouve, c'est déjà suffisant.
00:56:43 :Non, c'est pas suffisant.Ah oui, mais attendez, le serveur ne tourne plus.Hum...Non, il faut vraiment que je définisse les définitions.Mais en fait, les définitions, ça permet de pouvoir...
00:57:11 :En fait, tant que j'ai pas défini, ça c'est un espèce de...Parce que là, j'ai juste défini les différentes fonctions du pipeline,et c'est un peu comme si j'avais pas assemblé le pipeline ensemble.
00:57:20 :Donc il faut que je définisse le pipeline ensemblepour pouvoir le définir en scheduler après.Je vais bien essayer de le faire, mais j'ai peur que ça me prenne du temps,que je retrouve exactement la syntaxe, et j'ai peur de galérer.
00:57:36 :Schedule definition, est-ce que c'est là-dessus ?Schedule...Ça, ça me paraît bien.Ah oui, mais en fait, il faut que je définisse le job.Ouais, je pense que là, la syntaxe, je n'arriverai pas à la retrouver,mais vous avez compris l'idée, en fait.
00:58:06 :Une fois que vous arrivez à définir le pipeline,vous pouvez ajouter un scheduler,et vous pouvez, depuis l'interface graphique, lui dire« En fait, je veux que tu me lances ça toutes les minutes, toutes les heures, tous les jours. »
00:58:17 :Vous pouvez imaginer avoir ce type de pipeline sur un serveur,et chaque jour, vous allez récupérer les datas sur un site.Vous allez les récupérer, je ne sais pas, en fichiers CSV.
00:58:29 :Après, vous avez le load data ici,cette asset-là qui vous permet d'aller charger le fichier CSV dans une base de données.Vous nettoyez les datas.
00:58:38 :Après, dans la base de données, vous entraînez un modèle de machine learning, etc.En bref, vous pouvez avoir des trucs hyper complexes,mais découpés en chaque tâche,et vous vous assurez que chacune des tâches est terminée avant de passer à une autre.
00:58:50 :C'est un peu le principe du pipeline data.Attendez, là, on a les schedules.Est-ce qu'on peut les définir ?Non, je ne pense pas qu'on puisse les définir depuis ici.
00:59:05 :Jobs, il n'y a pas de jobs.Il faut les définir à la main, oui.Ok, si ça vous intéresse, je pourrais vous montrer ça la prochaine fois.
00:59:19 :Je peux retrouver la syntaxe rapidement,mais là, j'avoue que j'ai un petit trou.L'idée, c'est surtout que vous montrez le principe.Je ne veux pas que vous sortiez ici à chaque fois en sachant le faire tout seul.
00:59:31 :Il faut aller regarder la doc.De toute façon, dans ce genre de framework, la doc est bien faite.Et puis, ça ne sert à rien de connaître par cœur les trucs.
00:59:39 :On ne fait jamais ça sans la doc.Voilà un petit peu pour ce que je voulais vous montrer aujourd'hui.Est-ce que vous avez des questions ?
01:00:05 :On a vu pas mal de choses, on a été assez vite.C'était comme d'hab, c'est pour découvrir.Merci Pierre, j'espère que ça vous a plu.
01:00:13 :Et puis, si vous n'avez pas de questions,Dax, c'est Daxter.C'est un peu équivalent.Il y a d'autres outils.Pas de soucis pour les gens qui disent qu'ils sont en retard.
01:00:35 :C'est l'équivalent de Airflow, Apache Airflow.Mais Apache Airflow, c'est vraiment un gros framework qui est compliqué à mettre en place.Avec beaucoup de dépendance, etc.
01:00:44 :Moi honnêtement, je préfère ce genre d'outil comme Daxter.Après, vous avez Airflow.Daxter, c'est celui qu'on a vu.Et il y a aussi Prefect.Donc si vous voulez aller voir.
01:00:58 :Après, il y a Luigi.Voilà, il y a plein de trucs.Qui permettent de faire ce genre d'orchestration.Luigi, c'est le framework développé par Spotify, il me semble.
01:01:12 :Pour gérer leur pipeline de data.Voilà.Si vous avez des questions, comme d'hab, n'hésitez pas.La retranscription sera bientôt dispo.Merci Salvatore.Ouais, Sylla.Je voulais juste une question.
01:01:30 :C'est la seconde job.J'ai voulu l'essayer.Par exemple, je peux créer une seconde job.Et lancer mon serveur Django, je pense.Oui, avec le CronTab que j'ai montré.
01:01:47 :Oui, le CronTab, exactement.Oui, tu peux tout à fait lancer un script Python avec un CronTab.Ok.Lancer mon manager Python Manager.Ok.Oui, tu peux faire ça.
01:02:02 :Ouais.Oui, Ratorient, une question générale sur les mentorats.Oui, vous m'entendez ?Ouais, ouais.Ok.Alors, ma question, c'est vraiment générale sur le mentorat.Ce qui se passe, c'est que je me suis inscrit il n'y a pas si longtemps que ça encore.
01:02:27 :Et je m'aperçois que dans la globalité, les mentorats sont quand même relativement poussés d'un certain niveau.Et en fait, je me demandais si, je ne sais pas si vous l'aviez déjà fait auparavant,mais de faire certaines semaines des trucs peut-être un peu plus débutants.
01:02:52 :Parce que moi, en fait, je trouve ça super intéressant.Mais vraiment, en fait, je suis totalement perdu.Donc, en fait, ma question, c'était ça.Ouais, ok.
01:03:04 :D'abord, est-ce que ça te dérange si je te tutoie ?Pas du tout, non, non.Je fais pareil, il n'y a aucun problème.Ok.Parce qu'après, quand tu dis vous, peut-être que tu parles aussi avec Thibaut et tout ça.
01:03:15 :Je comprends.Oui, en général, oui.Alors, pour ta question sur les mentorats, c'est une très bonne question.Je pense que normalement, les mentorats du jeudi, c'est des mentorats débutants.
01:03:26 :Mais il s'avère que depuis, en fait, on essaye un peu de s'adapter aux gens qui viennent.Et quand je vois que c'est toujours un peu les mêmes personnes qui viennent le jeudi soir,si je fais des choses qui sont débutantes, vraiment, je n'ai aucun souci à dire des choses débutantes,
01:03:48 :ce n'est pas du tout réducteur.Mais voilà, je me dis, ces personnes-là ne vont pas être intéressées par ça.Et c'est comme ça.Mais s'il y a de plus en plus d'étudiants où tu dis que tu as besoin de mentorats débutants,moi, c'est avec plaisir que je le fais et on peut réorienter ça.
01:04:06 :C'est juste que c'est plus par expérience sur les derniers mentorats qu'il y a eu.Je ne sais pas, depuis combien de temps tu viens aux mentorats, toi, Ratorian ?
01:04:17 :Ça doit faire le troisième ou quatrième que j'essaie de suivre suivant les horaires.Mais c'est vrai que la majorité, oui, moi, je suis totalement perdu.
01:04:30 :Je débute juste la programmation orientée objet.Donc, tout ce qui est Django, quand je vois que vous faites des mentorats sur Django,moi, je suis totalement perdu.
01:04:44 :Alors, ça me met un peu dedans.Donc, j'essaie de comprendre.Mais au final, je suis plus perdu qu'autre chose.Après, l'idée vraiment des mentorats, c'est aussi de faire des choses sympas ensembleet de faire découvrir un peu.
01:04:59 :Tu vois, le mentorat, il faut le voir un peu comme un truc en plus dans la plateforme.Parce que voilà, en fait, sur la plateforme, il y a tous les tutos, il y a les vidéos, etc.
01:05:11 :Là, l'idée, c'est vraiment aussi qu'on puisse discuter ensemble et que ce soit interactif.Bien sûr.Et voilà.Tu vois, si par exemple, au début du cours, tu m'avais dit, enfin, au début de la session,si tu m'avais dit vraiment, j'aimerais qu'on décortique ce que c'est qu'une classe,qu'on fasse une boucle et tout ça, ça aurait été vraiment avec plaisir qu'on en aurait discuté.
01:05:32 :Il ne faut pas avoir peur de poser ce genre de questions en disant, je suis débutant,les autres, ça va les embêter, etc.Non, pas du tout.
01:05:40 :C'est vraiment fait pour ça, le mentorat.Et moi, je parle, je montre des trucs et tout ça parce qu'il n'y a pas forcément,je ne critique pas, mais parce qu'il n'y a pas de questions ou parce que, voilà,moi, je prépare un sujet histoire que pendant une heure, je puisse parler.
01:05:54 :Mais si quelqu'un me dit, je veux qu'on fasse, qu'on voit des boucles, qu'on voit une fonction,vraiment, c'est avec plaisir.Donc, la prochaine fois, si tu veux, on peut faire ça.
01:06:04 :Ouais, OK, avec plaisir.Après, je comprends aussi totalement ton point de vue.Il y a plusieurs personnes sur le mentorat et du coup, on est obligé de s'adapter au plus grand nombre.
01:06:17 :Ça, c'est tout à fait normal.Mais c'est vrai que moi, pour l'occasion, du coup, j'essaye de comprendre, mais après, voilà.Non, non, c'est normal.Et puis même, tu sais, même les gens qui sont avancés, je le dis tout le temps pendant les mentorats,il y en a qui peuvent se sentir perdus, même ceux qui sont avancés.
01:06:37 :Tu vois, ceux qui font du Django et qui voient là des trucs de data pipeline, etc., ils peuvent être perdus.C'est juste que, en fait, le mentorat, ça permet d'introduire des sujets à des personnesqui peut-être, je ne sais pas, dans un ou deux mois, ils vont se retrouver en face de ce sujet.
01:06:50 :Et puis le fait de l'avoir déjà vu une fois, tu vois, ça aura dégrossi le truc.Mais là, je suis d'accord que ça fait plusieurs sessions qu'on fait des trucs qui sont quand même assez avancés.
01:07:00 :Et il faut aussi qu'on puisse faire des choses débutantes.Donc, on peut acter que la semaine prochaine, c'est un mentorat vraiment orienté débutant.Et puis comme ça, les gens sont prévenus et uniquement les gens qui sont intéressés par voir des choses débutantes viendront.
01:07:20 :Oui, je trouverais ça super sympa de pouvoir faire au moins pas vraiment trop débutant,dans le sens juste débutant au niveau…Oui, je comprends.C'est juste ça, le fait de gérer plusieurs fichiers, gérer les selfs ici et là.
01:07:42 :Et moi, ça, je suis un peu encore… c'est un peu tendu pour moi.Ok, on fera ça avec plaisir la prochaine fois.À chaque fois, j'essaierai de réfléchir à un petit exercice cas concret.
01:07:55 :Comme ça, c'est intéressant.Et puis, je réfléchirai à quelques exemples d'objets, de classes.Peut-être manipuler un petit peu une database depuis l'objet.Comme ça, on mixe un peu les sujets en restant pas trop avancé.
01:08:17 :Et puis voilà, on pourra faire des choses comme ça.Ok, super, c'est cool.Mais vraiment, ne t'inquiète pas sur les mentorats.Là, je te dis, on voit ça parce qu'il n'y a pas forcément de questions.
01:08:32 :Et puis, les gens ont envie de découvrir des trucs.Mais normalement, le mentorat, c'est vraiment orienté pour vous.Si tu te sens perdu, c'est normal qu'on fasse autre chose.
01:08:42 :Ok, ça marche.Oui, Sylla, t'as une question ?Oui, en fait, c'est par rapport à la question de l'asso lien.Moi, au début, c'est la même question que vous m'avez posée.
01:08:57 :Juste, c'est une suggestion.Sur Doctrine, il y a la partie des exercices.Et les projets, vraiment, c'est hyper intéressant.Surtout les exercices avec questions et réponses.
01:09:12 :Moi, quand je suis venu, j'ai tout fait.J'ai tout repris, j'ai tout fait.Et c'est bien détaillé.Et si je ne comprends pas, je mets sur la plateforme les questions.
01:09:28 :Voilà, c'est juste une proposition pour lui.Ça va beaucoup l'aider.Ok, merci Sylla pour ton intervention.T'as entendu, Ratorian, c'est par rapport aux projetsqui sont disponibles sur la plateforme.
01:09:45 :Oui, tout à fait, j'ai entendu.Je regarderai, parce que c'est vrai que pour le coup,je n'ai pas trop regardé sur la plateforme les exercices qu'il y avait.
01:09:55 :Moi, je suivais étape par étape le cours.Mais après, c'est vrai que les exercices,je n'ai pas trop fait attention à ce niveau-là.Mais je regarderai du coup.
01:10:07 :Après, c'est une suggestion de Sylla.Tu verras que les étudiants sur la plateforme,chacun a son niveau, chacun apprend à son niveau, etc.Donc, tu verras qu'il y a beaucoup aussi de gensqui partagent leur expérience.
01:10:22 :Après, c'est en fonction de chacun aussi.T'as peut-être pas forcément le temps ou pas l'envie.C'est juste que parfois, le mentorat ou tu vois quelqu'unqui fait ce que tu penses, ça peut être utile.
01:10:35 :Voilà, c'était vraiment.Disons que les exercices, c'est super important.Et de toute façon, je pense que pour apprendre,il faut pratiquer et beaucoup pratiquer.Maintenant, d'avoir quelqu'un, un professionnelqui connaît bien le sujet,et quand on a des difficultés sur un truc,même avec un exercice qu'on n'arrive pas à comprendre,
01:10:57 :d'en discuter justement avec quelqu'unqui sait parfaitement de quoi il parle,c'est toujours plus intéressant que de lire tout le tempsbêtement des trucs ou voilà.
01:11:09 :Ouais, ouais.Et puis, tu vois, même le mentorat,dans l'occurrence, c'est moi qui parle,mais après, t'as des étudiants parfoisqui connaissent mieux un sujet que moi sur un sujet.
01:11:21 :Moi, j'ai pas de souci à dire des foisque je maîtrise pas quelque chose.Il y a tellement de sujets.Et voilà, les gens aussi sont là pour s'entraider.
01:11:28 :Et bref, c'est pour ça que Doctrine,c'est un petit peu différentparce que c'est quand même assez flexible.Il y a la communauté aussi qui permet de s'entraider.
01:11:39 :Donc, n'hésite pas.N'importe quelle question sur le Discord,sur la plateforme,il n'y aura jamais de questions stupideset jamais de questions trop débutants.Et je suis désolé, je veux pas que les mentorats,vous pensiez que c'est trop avancépour les gens qui débutent.
01:11:54 :Je veux pas, c'est vraiment, c'est dommage.Non, non, je veux pas que tu te sentes offusquépar ce que je dis.Ah non, non, je le suis pas du tout.
01:12:06 :Mais c'est pas le but vraiment des mentorats,de faire des trucs très, très avancés, etc.Faut que ça aille à tout le monde,à tous les niveaux.
01:12:15 :Donc, la prochaine fois, on fera un truc dédiéet puis on en fera autant qu'il faut, sans souci.D'accord, bon, très bien.Merci.Ben, pas de souci, avec plaisir.
01:12:28 :Et puis, pour les autres, pareil,si vous avez des questions,continuez à poser des questions.Donc voilà, après, la semaine prochaine,ce sera plutôt orienté débutants.
01:12:39 :Si Ratorient, tu es présent.Après, hésite pas à dire si t'es pas présent,tu mets sur la communauté ou quoi,comme ça, j'adapterai le programme.
01:12:48 :Je préviendrai si je suis pas là.Ouais, t'inquiète pas.Si on fait ça, c'est pas que pour toi.Je veux dire, ça servira à d'autres personnes.
01:12:57 :Faut pas non plus se sentir trop...Mais j'espère que ça se servira.Ouais, bien sûr, ça sert toujours à tout le monde.Et après, il y a des rediffs.
Aucune occurrence trouvée pour « ».