Session du 11 septembre 2025 à 21h00
Pratique & Live Coding
Bases du Langage
Développement Web & Frameworks
Frontend & UI
Session de mentorat ouverte à tout le monde
Nous allons nous créer une petite application avec uniquement des connaissances de base :
-
Tchat en temps réel
-
Mise en ligne du projet
Nous utilisons Streamlit.
00:00:00 :C'est du Apache, je n'utilise jamais l'Apache parce que c'est du Nginx, c'est un peu un stress.Bonsoir tout le monde. Avant de commencer, il y en a, je ne sais pas si tout le monde l'avait suivi, les sessions avec Vaf à tout le monde.
00:00:25 :Ce soir, à la base, je devais faire du Django et je devais montrer comment on peut implémenter un système d'authentification avec les réseaux sociaux,que ce soit GitHub, Facebook, Google et plein d'autres. Je le ferai jeudi prochain.
00:00:44 :Est-ce que c'est bon pour tout le monde ?La semaine prochaine, il ne sera pas ouvert à tout le monde. Il sera entre Premium, TOSA et Projet.
00:00:55 :Mais je ne le ferai pas cette semaine du coup, je le ferai jeudi prochain.Petite question, est-ce qu'il y en a beaucoup qui débutent avec Python de manière générale ?
00:01:11 :N'hésitez pas à parler au micro.Il faut juste savoir s'il y en a qui débutent.Il n'y en a qu'à se le parler du coup.
00:01:28 :Bonsoir.Oui.Je suis débutant.Tu es débutant ?Oui.Ok, pas de problème.En fait, ce soir, vu que c'est le premier Mentorat qu'on fait ouvert à tous, le prochain sera mardi,je ne savais pas trop s'il y aurait beaucoup de débutants.
00:01:52 :Ah, il y en a qui arrivent encore. Je vais juste accepter.Bonsoir.Bonsoir.Ah, ça éteint. Salut.Je suis plutôt WordPress.Très bien, nickel.Je ne savais pas à quel niveau il y aurait.
00:02:14 :J'ai prévu un truc un peu débutant pour montrer qu'on peut faire des trucs vachement cooltout en étant débutant.Est-ce que tout le monde est à l'aise avec GitHub ?
00:02:27 :Ou pas ?Ah, genre mettre en ligne.Il y aura un petit peu de GitHub, mais vraiment léger.Vraiment très basique.Ok.Je vais couper le Discord pour l'instant.
00:02:47 :Ça me prend de la place.Ok.Je vais partager mon écran.Je prépare juste quelque chose pour grandir un peu mon…parce qu'on ne va rien voir sinon, c'est horrible.
00:03:03 :Hop.Il y a du monde qui arrive.Moyen GitHub, mais ce n'est pas grave, c'est moyen.Ça rejoint, ça rejoint.Ok.Est-ce qu'il a réussi à rejoindre ?
00:03:20 :Ok.Est-ce qu'il a réussi à rejoindre ?Yes.Nickel.Je crois que c'est bon.Il y a un feu.Tac, tac.Yes.Ok.Salut.Yes.
00:03:33 :Ok.Bon, là, je partage mon écran.Hop.Enter screen.Est-ce que vous voyez tous bien mon écran ?Pour être sûr.On voit des petits pouces d'excellence.
00:03:48 :Ok.Nickel.Bon.Ce que je disais, ce soir, on va faire un truc plutôt débutant,mais pour montrer qu'on peut faire des choses même de manière débutante.
00:04:00 :C'est débutant, on va dire, mais tout le monde peut le suivre.Et c'est le genre de mentorat que je suivais à l'époque sur RockStreamavec Pierre-André quand il était mentor.
00:04:10 :Et en fait, ça vous resservira pour ceux qui débutent,ça vous resservira plus tard parce qu'on va bosser sur un frameworkqui est vraiment très facile à prendre en main.
00:04:20 :C'est vraiment très facile.Je vais juste, tac, fermer ça.Hop, histoire d'économiser un peu.Voilà, une batterie.Ok.Donc, on va déjà aller créer un projet.
00:04:30 :On va le créer ici.Hop.Tac.Et on va l'appeler, on va l'appeler Streamlit 4.Donc, le but de ce soir, pour ce soir, de la session,c'est de se créer une application de chatqu'on va essayer de tester tous ensemble, d'ailleurs, ce soir.
00:04:52 :Le problème, c'est que je vais stocker directement les messagesdans la RAM du serveur, donc on va voir s'il n'y a pas de bug.Mais on va se créer une petite application de chatet vraiment avec des choses basiques en Python.
00:05:05 :Voilà.On va juste avoir besoin d'installer, en fait, un, comment dire,deux librairies externes.Une librairie externe, mais, en fait, qui est dedans,dans la librairie externe.
00:05:17 :Hop.Et ça s'appelle Streamlit.Est-ce qu'il y en a qui connaissent ?Ou pas ?William, tu as peut-être connu, toi, à l'époque.Ouais.Avec Pierre-André, du coup.
00:05:29 :J'imagine.Je pense.Ok.Donc, tu continues, disons.Oui.Vas-y, William, tu vas dire un truc.Ouais.Non.Ça ne me dit rien du tout.J'ai dû louper le coche.
00:05:46 :J'ai dû louper le coche.Est-ce que c'était beaucoup de Montora qu'on faisait ensemble à l'époque ?Il me semblait ok.Mais, en fait, Pierre-André a déjà montré ça à l'époque.
00:05:55 :Et alors, ça, juste pour vous dire,on peut se faire des applications vachement cool, facilement,pour Python.Donc, pas de HTML, pas de CSS, pas de JavaScript.
00:06:04 :Et moi, ça me servait à mon ancien boulotquand je n'étais pas encore...Enfin, j'étais développeur, on va dire, le soir.Mais à mon ancien boulot, j'en faisais des applications avec ça.
00:06:11 :Et c'était vachement fun.Je passais pour une star.Donc, je vais vous montrer à quel point c'est facile.Du coup, tac, c'est parti.Allez, on y va.
00:06:21 :On va sur notre dossier StreamList.Donc, première chose,on va aller se créer un environnement virtuel.Alors, il y en a qui commencent avec cet environnement virtuel.
00:06:31 :Tac, tac, tac, c'est dit.Je vois peut-être des personnes qui arrivent.OK, nickel.Bonsoir à ceux qui arrivent, du coup.Hop là, salut à ceux qui arrivent.
00:06:50 :Du coup, ceux qui ne sont pas encore habitués,un environnement virtuel, en fait,ça sert à avoir un environnement Python isolé.En fait, ça permet de ne pas polluer son Python général,qui est sur votre installation de Python général.
00:07:07 :Vous faites un environnement Python isolé,vous installez ce que vous voulez dessus, vous testez,et comme ça, en fait, ça ne vient pas polluer votre Pythonde manière générale.
00:07:15 :Et vous allez voir à quoi ça peut servir aussi.Donc, on va se créer un environnement virtuel.Hop, tac.Ceux qui ne l'ont pas encore vu, vous le verrez plus tard.
00:07:24 :Mais le but, là, c'est de plus faire du StreamList ce soir.Donc, je passe assez vite dessus.Donc, on va commencer par se créer du coup un fichier.
00:07:34 :On va l'appeler comment ?On va l'appeler index.py.Et on va ouvrir VS Code.OK.Hop, il y a Copilot qui...Ceux qui l'ont bien vu, mon environnement virtuel.
00:07:52 :OK, c'est bon.Et je vais enlever Copilot parce que ça ne va pas être cool ce soir.Je ne sais pas s'il connaît bien StreamList, mais je n'ai pas envie de danser le coup.
00:08:00 :Tac.Donc, on va aller s'installer déjà StreamList.Hop.Alors, par contre, c'est assez lourd.Il n'y a pas mal de choses dedans, dont NumPy.Enfin, Pilot, ça, ça va encore.
00:08:17 :Mais déjà, il y a NumPy dedans.Normalement, il devrait y avoir Panda aussi avec, je pense.Je ne l'ai pas vu, donc peut-être pas.Donc, à la base, StreamList, c'est fait pour beaucoup de tableaux de bord en data, ainsi de suite.
00:08:34 :Je vais revenir à l'écran, du coup.Et on va faire ça.Donc, on ne va pas s'embêter, on n'aura qu'un seul fichier index.Donc, hop, on va faire comme ça.
00:08:44 :Alors, je revois quelque chose.D'abord, le cours.Alors, on n'a pas de cours sur StreamList, mais par contre, la session de ce soir va être enregistrée.
00:08:54 :Et donc, demain, ça sera en rediffusion.Et puis, au pire, ce que je vais faire, c'est que je vais faire un dépôt GitHub,et comme ça, je pourrai vous passer le code.
00:09:08 :Je le publierai, je pense, ce soir, après la fin.Je pourrai faire un dépôt, je mettrai le code en ligne sur la discussion libre.Voilà.
00:09:18 :On fera ça comme ça aussi.Du coup, avec StreamList, comment ça se passe ?Donc, le but, là, c'est de se faire une application vraiment, comment dire, simplement.
00:09:32 :Coup en piton, mais vous allez voir, c'est vraiment très facile.Donc là, on a installé StreamList.Hop, on va aller voir sur Adobe.Et on va la mettre en production aussi.
00:09:43 :StreamList, et vous voyez, ici, il y a API référence.Hop, on va aller dessus.Et donc, on le voit, par exemple, write on magic, ça, c'est pour écrire.
00:09:50 :Voilà, donc on peut écrire des choses facilement.Donc, il y a un st.write, ainsi de suite.On va voir un exemple tout de suite.Donc, si je retourne sur mon code, on va, par convention, importer StreamList,il faut toujours ça dans la doc, c'est plus court.
00:10:05 :Donc là, on crée un alias.Hop.On va voir, ça peut être cool, on va se prendre datetime pour le projet aussi.Ici, on ne va pas prendre datetime tout court, on va se prendre datetime,import datetime.
00:10:23 :Datetime, voilà.C'est parti.Donc là, ce qu'on peut faire avec StreamList,on va utiliser cette page config.Alors, vous allez comprendre, on va se dire,le titre de la page, ici, on va l'appeler,je ne sais pas, chatdoctoring, elle est pour ce soir,chatdoctoring.
00:10:46 :Ça me paraît pas mal.Alors, on va déjà lancer le serveur et on va se faire un StreamList.Donc, ce n'est pas un Python run, c'est un StreamList run index.py.
00:10:59 :Alors, c'est un peu chiant parce que, du coup, ça me l'ouvre sur l'autre écran.Hop.Je vais l'ouvrir ici.Donc là, on voit en haut, ici, j'ai bien le titre de la page qui est ici, chatdoctoring.
00:11:13 :Si jamais vous ne suivez pas, c'est basique.Donc là, on a fait un config de la page et on a bien un titre ici.Hop, on va continuer.
00:11:23 :Ce que je disais à Antoine tout à l'heure avant qu'on commence officiellement,imaginez, si vous êtes en entreprise, le lien ici à la network URL.
00:11:33 :Par exemple, moi, à l'époque, quand je fais une application StreamList,je la lançais sur mon PC et tous les magasins du groupe,donc les magasins qui étaient soit à Paris, soit en province, machin,ils avaient accès en fait à mon application par ce lien-là, dès que je le lançais.
00:11:46 :Donc ça, en fait, c'est très pratique.Voilà, on va continuer.Donc du coup, maintenant, on a fait un config de la pageet on va se dire, on va se donner un titre à notre page.
00:12:00 :Hop.Et on va l'appeler, je ne sais pas, on va l'appeler,on va la rappeler de chaque chat DocStream.Tac.Je vais relancer mon serveur.
00:12:15 :Vous allez voir à quel point c'est rapide.Et là, si je reviens ici, hop, j'ai déjà le titre de la page préparé ici.Il y a déjà une petite mise en forme qui est basique,mais pour l'instant, en fait, il n'y a que ça qui fait ça.
00:12:30 :Tac.Donc on va continuer.Alors si vous avez des questions, vous me coupez la parole, il n'y a aucun problème.Donc là où je vais m'arrêter un petit peu,c'est dans le sens où quand vous avez une, comment dire,comment j'explique ou comment on va le faire.
00:12:48 :Je réfléchis rapidement.C'est un peu du live.Alors c'est du live.Je réfléchis à comment on va le faire.On va aller voir dans l'API.
00:12:56 :Tac.J'ai dit qu'on ferait un peu de chat ce soir, du coup,on va faire une application de chat.Hop.Quand on regarde ici, on peut avoir du chat input, par exemple.
00:13:06 :OK.Donc on va copier le code qui est ici.Donc on peut voir ici l'élément.Hop.Et on regarde en fait comment ça se passe.
00:13:16 :Donc pour avoir un input de chat, donc vraiment pour avoir,là on va taper le texte, il me donne ce qu'il faut.Et il vous dit exactement ce qu'il y a passé ici en argument.
00:13:26 :OK.Et donc on le voit ici.Et en plus, il explique tout.Donc là, il faut une chaîne de caractères.Ici, une chaîne de caractères ou un entier.
00:13:34 :Ah, il y a quelqu'un qui arrive.Hop là.Hop là.Donc vraiment, tout est expliqué.Là, je vais y aller un petit peu à mon rythme.
00:13:43 :Je ne vais pas tout expliquer ce qu'il y a ici,mais je vous laisserai aller voir.Ou au pire, ouvrez-vous une page de Streamlit.Comme ça, si j'ai des questions, si j'ai un doute,je pourrais vous poser la question.
00:13:51 :Et vous pourrez voir en même temps en fait un petit peuce qui existe comme fonction, comme classe,que l'on peut utiliser.Voilà.Je ne sais plus où j'en étais.
00:14:02 :Donc oui, voilà.OK.Donc, imaginons.On va se faire quoi du coup ?On va se faire un...On va y aller dans l'ordre.On va...
00:14:17 :Ah, il y a quelqu'un qui rejoint.Hop là.Est-ce que c'est un principe que sur un site web ?Oui, oui, oui.Tu peux avoir ce principe-là quand tu vas écrire.
00:14:27 :Donc tu as les textes éléments ici.Voilà.Tu vois les headings ici ?Donc tu as du markdown.Tu as le title, header, subheader.Tu as vraiment tout.
00:14:37 :Donc tu as vraiment l'ordre.Tu as st.title, title, st.header, st.subheader.Voilà.Je pense que j'ai répondu à ta question.Donc tu peux vraiment faire ça, oui.
00:14:47 :Pas de supplice, tu vois.Il t'explique tout, vraiment.Où tu le mets vraiment dans la page,et ainsi de suite.Voilà.Euh...Quel est l'adresse ?
00:15:00 :J'espère que je t'ai répondu.Peut-être qu'il y a quelque chose.Streamlit, c'est une alternative à Django, un peu ?Alors...C'est carrément autre chose, en fait.
00:15:11 :Alors...Tu peux...Tu peux travailler avec des databases de données.Ça se fait.Parce qu'en plus, je ne sais pas s'il y a des...Si tu regardes, Streamlit, SupaBase...
00:15:25 :En plus, tu as des tutos, en fait.Donc tu peux travailler avec des databases de données.C'est du Python, donc tu fais tout en Python.
00:15:31 :Et en fait, tu as plein de tutos, en fait,avec des mecs qui font ça avec du SupaBase ou ce genre de choses.Mais ça ne remplace pas Django, en soi.
00:15:37 :C'est différent.Tu peux facilement faire des...Tu peux facilement faire des tableaux de bord, en fait,avec un super front, des graphiques, ainsi de suite.
00:15:46 :Tout en Python.Si je reviens sur le site de base,tu vas...Dans...Il n'y a pas un blog ? Ouais, il est là.Et en fait, tu vois, dans le blog...
00:15:58 :Dans le blog, il y a plein de tutos.Ils t'expliquent ce que tu peux faire.Mais des trucs de fous, hein.Des trucs de malade.
00:16:03 :Je ne sais pas, lui, par exemple...Quand tu regardes tout ce que tu peux faire à la fin,je ne sais pas s'il y a des captures d'écran.
00:16:09 :Ils mettent des vidéos, mais est-ce qu'il y a des captures d'écran ?Il y en a un que j'ai vu qui était intéressant.Enfin, il y en a plein qui sont intéressants.
00:16:16 :Le mec qui fait vraiment un super dashboard,à la fin, ça fait un super dashboard.Et voilà.À la fin, ça donne ça, quoi.Donc, c'est quand même très balèze.
00:16:27 :Et tout ça, ils le font en Python, hein.Voilà.Donc, tu ne remplaces pas Django, en fait.Comme je disais, moi, ça me servait à faire des applicationssans base de données, vraiment.
00:16:40 :Juste, ils ont besoin d'une...En fait, j'interfacais mes scripts Python, si tu veux, avec ça.Pour des utilisateurs.Voilà un peu comment je plaisante, moi, comment j'utilisais.
00:16:50 :Euh...T'as qu'à faire de l'application de bureau, entre guillemets.C'est quoi ?C'est plus pour faire de l'application de bureau, en fait.Alors, de...Non, de...
00:17:00 :Web, web.Ah, l'application web, ouais.Sur web.J'y sais pas une question, j'y sais.Oui, ça peut tourner en parallèle de Python, sûrement.Ça vient.
00:17:10 :Ben, en fait, de...Pardon, de Django.Ben...L'idée, ce serait d'avoir une page construite par Django et...Et puis d'avoir Streamlit qui pousse des données en temps réel dans la page.
00:17:23 :Alors, c'est ce que je pensais aussi.Alors, ce que je...Oui, alors, OK.Donc, si on va là-dessus...Euh...Ce que j'ai déjà fait une fois, c'est que je me suis fait du Django Rest Framework.
00:17:35 :Donc, vraiment, qu'un framework.Moi, je n'envoyais que du JSON avec Django.Donc, j'avais pas de template.Et par contre, en fait, mon template, entre guillemets,c'était Streamlit.
00:17:45 :Donc, j'avais des champs sur Streamlit.Donc, je ne sais pas, par exemple, on est où les textElements.C'est pas grave.On va prendre le temps de voir un peu ce qu'on peut faire avec.
00:17:56 :Par exemple, ici, j'ai les widgets.OK.J'ai un bouton.OK.J'ai un...Il y a plein de choses.Euh...OK.NumberInput.OK.TextInput.OK.TimeInput.
00:18:11 :Il y a tout, en fait.Par exemple, à chaque fois, en bas, il y a un petit test.Il y a un petit exemple.Donc, en fait, par exemple, je ne sais pas, sur l'application,j'avais un input comme ça où j'écrivais, genre, mon pseudo.
00:18:27 :OK.Tac.J'en avais un autre en dessous, un input de mot de passe.C'est prévu aussi avec Streamlit.J'envoyais.Ça renvoyait ça sur Django.Et Django me renvoyait un token que je stockais dans la session de Streamlitpour dire, en gros, c'est bon, tu as le droit d'accéder aux zones
00:18:42 :où il faut être connecté, quoi.Bon.D'accord.Pour ceux qui n'ont pas l'habitude, ça peut paraître un peu...Ouais, aller-retour, mais...Ça marche beaucoup comme ça dans plein d'applicationsoù il y en a des frameworks qui font que le backet d'autres qui font que le front.
00:18:56 :Euh...Voilà.Euh...Donc, voilà, pour répondre à la question,ouais, donc on peut faire du Django en...Comment dire ?En back et puis...C'est déjà bien.
00:19:08 :Ouais, on peut...Ouais, je l'ai déjà fait.En tout cas, ça fonctionne.Après, je ne sais pas si c'est mieux, je pense,que d'utiliser un vrai framework.
00:19:15 :C'est pas un faux, mais...Enfin, je ne dis pas ça, mais après, j'ai pas la...Ça, j'utilise rarement, en fait, Streamlit.J'utilise rarement quand j'en avais besoin au boulot, moi, quoi.
00:19:24 :Euh...Tac.Donc, voilà.Excusez-moi.Je suis là.OK.Donc, j'espère que j'ai répondu aux questions.J'essaie.J'espère que ça te va.J'ai pas...J'ai jamais poussé à fond le concept, mais c'est possible.
00:19:41 :Oui.Je ferai des tests.Je ferai des tests, parce que, enfin, moi...L'idée, c'était...Imaginons que Django, il affiche une barre de progressionqui ne progresse pas, parce qu'elle n'a pas...
00:19:52 :La valeur, elle est...Elle serait justement animée par...Par Streamlit.Mais en combinant les deux, quoi.Tu peux...Avec Streamlit, tu peux tout faire.Ouais, ouais.
00:20:04 :En fait, tu peux t'en servir comme un framework frontend légeret pas hyper adaptable, si je comprends bien la logique du truc.Ça ne remplace pas un React ou un Vue.js.
00:20:15 :C'est juste un outil plus simple en Python.Tu verras, c'est le même que Gabriel, mais...Pour moi, de ce que je sais faire avec, pour l'instant,c'est comme ça que je le vois.
00:20:23 :C'est exactement ça, genre, en frontend léger, entre guillemets, ouais.Même si c'est hyper puissant.Je...Je l'ai pas assez...Je l'ai pas assez poussé en ce sens-là, en fait.
00:20:33 :J'ai l'impression que c'est l'adaptabilité qui va être un peu plus restreinteque si tu prends un framework comme React,où là, tu peux vraiment...Bah, c'est le Far West, tu peux tout faire.
00:20:43 :C'est sûr.Non, mais ça, c'est sûr.C'est sûr.On peut faire plein de choses avec Streamlit,mais il y a quand même des limitations.Bien que, après, je vais vous montrer un pas, d'ailleurs,qu'on peut se faire avec.
00:20:54 :Comment t'as lancé ton appli ?Puisque je le fais en parallèle, là.Moi, ça marche pas, mais...T'as lancé ton terminal, là ?Comment ça fait ?
00:21:07 :Tu fais juste Python...Non, Streamlit Run et ton .py.Ah, oui, merci.Effectivement, ça pourrait pas marcher.Et puis...Et puis, et puis, qu'est-ce que je voulais dire ?
00:21:18 :Je ne sais plus.J'étais...Je voulais rebondir sur ce que je disais à l'instant.Ouais, donc, oui, on fait un Streamlit Run index .py.Mais il faut savoir qu'en plus, quand on lance notre page principale,on peut très bien faire, après, du multipage.
00:21:33 :Il y a des structures de dossiers à avoir avec Streamlitqui vous permettent d'avoir un menu avec, en fait,plusieurs pages, entre guillemets, page 1, page 2,ou, vous l'appelez, je sais pas, login, logo, peu importe.
00:21:43 :C'est possible à faire aussi.Ça, t'as déjà fait.J'ai dû le faire en mentorat une fois, d'ailleurs.Il y a l'année dernière, je crois.Il y a un an, ça tombe dernier, peut-être.
00:21:50 :On peut très bien avoir avec Streamlit un dossier .streamlit,je crois, il y aura longtemps que je ne l'ai pas fait,avec un fichier secret.
00:21:58 :Je ne sais plus si on le met en tommel ou en yamal.Et dedans, on peut avoir des variables d'environnementqui sont secrètes et les réutiliser avec un st.secret.
00:22:07 :Je ne sais plus.Il y a, je crois, st.secret, voilà.Et récupérer, en fait, les éléments qu'on n'affiche pas,comme ça, directement.Enfin, on peut faire plein de trucs, quand même, avec.
00:22:17 :C'est assez fou.Voilà, du coup.Vu qu'on a bien parlé de base de ce qu'on peut faire avec.Et donc là, on va avancer.On va voir un peu plus de choses.
00:22:37 :Imaginons.On va faire ça.Je vais vous montrer.On va se dire.On se prend une condition.If your name not in st.Et là, vous verrez que c'est assez puissant.
00:22:49 :C'est sur state.Je vais vous montrer ce qu'on va faire.On va l'initialiser.If your name.Donc là, c'est l'orienté objet.OK.Donc, en gros, ici, sur session state, je vais créer un attribut.
00:23:03 :Alors, je n'ai pas exploré le code source de Streamlit vraiment à fond.Quasiment pas.Très, très peu.Je l'ai fait un petit peu.Mais là, en gros, ici, on va créer l'attribut if your name.
00:23:15 :S'il n'existe pas encore, on va le créer.Alors, après, avec Streamlit, je sais que ça marche aussi.On pourrait très bien se la faire comme ça.
00:23:21 :Hop.En mode dictionnaire.If your name.Tac.On pourrait très bien faire ça.Moi, j'ai tendance à le faire comme ça en attribut.Hop là.
00:23:31 :Donc là, on va initialiser un attribut if your name sur Streamlit.Et maintenant, on va se diresil'if your name ici, du coup,hop là,s'il n'y a pas d'if your name de rempli,donc là, vu qu'on va se connecter ici,il ne sera pas encore rempli.
00:23:52 :Donc, on va rentrer dans la condition.On n'a pas encore d'if your name.Qu'est-ce qu'on va faire ?Et bien là, on va commencer à s'amuser avec.
00:23:58 :On va se dire,on va se faire une variable if your name input.Tac.Et on va se dire,on va se faire un text input.
00:24:06 :Tac.Et on va dire quoi ?On va dire, je ne sais pas,entrer votre pseudo,sans parler de logique.Tac.Voilà.Et ensuite, on va se dire si,alors,on va le faire comment ?
00:24:22 :On va se créer un bouton.On va faire sans union.On peut se dire,on va se créer un bouton.On va appeler rejoindre.Donc, si on dit if st.bouton,
00:24:33 :vous allez voir,c'est-à-dire que,si jamais on clique dessus,etqu'on a un username de rempli,OK,et bien, ce qu'on va faire,c'est que,je vais vous expliquer ce que c'est,après la session state,du coup, en détail.
00:24:48 :On va se dire, la session,ici,pour username,hop,va être égale à ce qu'on a rentrédans l'input ici,username.Donc, en gros,la session,ça va être,dès que vous vous connectezsur l'application Primelit,vous, utilisateur,vous avez, entre guillemets,sur le serveur,une session,et tout ce que vous allez faire,
00:25:07 :ici,pour username égalée,username input,ça va être enregistrétout le temps de la session.Donc, par exemple,moi, je récupérais des tokensque je récupérais avecDjango Rest Framework,que j'enregistrais,ici, je ne sais plus,genre un point tokenou un je-ne-sais-quoi,j'enregistrais là-dedans.
00:25:23 :Donc, en fait,ici, on va récupérerl'username de l'utilisateur.Je n'ai pas vu le chat,s'il y a des questions,je vais regarder.OK, c'est bon.
00:25:33 :Pour l'instant, ça va,ou c'est ?Tu as mis point username,parce que c'est pour un pseudo,mais, en fait,on pourrait mettre pointce qu'on veut derrière,en fait.
00:25:44 :Ouais, ouais,je pourrais même mettrepoint Thomas ou point André,si je veux,ou point Fou,on s'en fiche.On va créer,en fait, on va créer iciun attribut.
00:25:53 :OK.Donc, voilà.Donc, on a attribué iciun...Comment dire ?Ah, merci.On va créer l'insertiondu point username,on va l'enregistrer.Alors, chose importanteà savoir.
00:26:08 :Donc là, on va faireune application de chat.Du coup,vous imaginez que si,vu qu'on n'a pasde base de données,quand on envoie un message,le chat, en fait,le message de chat,il faut bien l'enregistrerquelque part.
00:26:21 :Sinon,à chaque rafraîchissement,ça va disparaître.Avec Streamlit,il y a un truc de maladeencore qu'on peut faire.On va se le mettreen dessous de la config.
00:26:30 :On va le mettre là.Et on va se dire,hop là,c'est du cache ressourceque je fais ou cache data ?C'est du cache ressource,je crois, en général,que je fais.
00:26:40 :Alors, je ne sais plusla différence,mais ça, ça marche très bien.Le cache ressource,je le prends en général.Donc, un décorateur.On va écrire une petite fonction,ici,et on va l'appelergetMessageContact.
00:26:53 :Et là, on va retournerune liste.On retourne une liste.Donc, qu'est-ce que ça fait ?Ici, en fait,ça va être partagéentre toutes les personnesqui vont accéder à l'application.
00:27:06 :Tant que le serveurn'a pas redémarré,tous les messagesqui seront stockés là-dedansseront disponiblespour tout le monde.Vraiment,pour toutes les personnesqui vont se connecter icisur le serveur.
00:27:17 :Tant qu'il n'a pas redémarré.Voilà.Donc, vous allez voiroù je vais en venir.Ça va être plus logiquequand on va un petit peu avancer,du coup.
00:27:26 :J'en étais où ?Donc là, on a le pseudo.Maintenant,ce qu'on va se dire,c'est qu'à chaque foisquelqu'un va se connecteravec son pseudo,ici,on va se dire,on va ajouter un message.
00:27:38 :Pour ça,ce que je vais faire,c'est que je vais plutôt dire,on va se faire ici,voilà,on va se faire un truc ici.
00:27:46 :Les messages, du coup,ça va êtrela fonction qui est là,mais qui a le décorateur de cache,ici.Donc on a une variable message,ici,qui va retourner une listequi est décoréeavec ses quatre ressources.
00:28:00 :Donc là,on peut très bien se dire,maintenant,comment s'ajouter les messages.Donc là, message,pour la peine, ici.Et là,qu'est-ce qu'on va ajouter ?
00:28:09 :Un dictionnaire.Vous allez voir pourquoi.Un dictionnaire,on va se dire,hop,l'auteur.Donc là,l'auteur,ça va être qui ?Le système.Hop.Pourquoi ?
00:28:23 :Parce qu'en fait,le texte,ça va être ici,on va se dire,tac,on va se dire,genre,user name input,ici.Donc,l'utilisateur temps,hop,on va mettre quoi ?
00:28:38 :À rejoindre.Voilà.À rejoindre le chat.Donc,c'est comme si c'était le systèmequi va dire,un tel a rejoint le chat.Et on pourrait très bien rajouter,donc là,j'ai mis un datetimepour vous montrerqu'avec des modules standards,on peut faire des chosesvachement bien.
00:28:53 :Ça va faire pro.On va se dire ici,quand ?Eh bien,on va se dire,datetime.now,ici.Et,on va convertir çaen chaîne de,hop là,en chaîne de caractère.
00:29:06 :Tac.Et là,donc,pour ceux qui passent le TOSA,surtout,c'est important,on va prendre,l'heure.Alors,attendez,l'heure,c'est en majuscule,minute.Et du coup,les secondes aussi,c'est en majuscule.
00:29:22 :Tac.Voilà.Donc là,en gros,on va stocker ici,l'heure,les minutes et la secondeà laquelle la personnese connecte.Voilà.OK.Et,qu'est-ce que j'allais dire ?
00:29:35 :Ah,là,je vous montre un truc,on ne va pas le faire,parce que,on va faire exprèsd'avoir une erreur.Hop.OK.Donc là,pour l'instant,on a quelqu'unqui va cliquer sur un bouton.
00:29:48 :Alors,je vais lancer l'applicationjuste pour vous la montrer.Et on verras'il n'y a pas une erreur,d'ailleurs.Euh,hop là.Elle est où ?
00:29:57 :Ici.OK.Donc là,vous voyez,on a déjà entré votre pseudo,le bouton rejoindre,ça ne fera rien,mais on a déjà ça,OK ?
00:30:06 :Donc vous voyez qu'avectrès peu de code,on a déjà,affecté notre pseudo,ici,dans une variableque l'on stocke,qui va sur le serveur.
00:30:14 :OK.Euh,Caramel.Et là,on pourrait le lireune fois seulement.Ouais,putain,Caramel,je m'en souviens encore.Oh,mon Dieu,ça date.Euh,c'est la même génération,j'ai 35 ans,donc c'est peut-être ça,ouais.
00:30:32 :Du coup,euh,on était où ?Donc là,on verra leur run après.Donc là,on a de quoi se connecter,entre guillemets,mais ça ne fait rien.
00:30:41 :On n'a rien de,on n'a rien de spécialpour l'instant.Euh,OK.Donc,donc là,si on n'a,on n'a pas de session,ainsi de suite,euh,pas de,pas de,du username,du username de rentrée,bah,on va devoir le rentrer.
00:30:58 :S'il y a déjà le username,du coup,ça va se passer autrement,on va se dire,donc là,on a un succès,donc je ne sais passi vous connaissez les,les frameworks,mais en général,c'est pour afficher des messages en vert.
00:31:09 :Alors,je parle de Bootstrapparce que j'aime beaucoup Bootstrapet on ne se moque pas de moi.Et donc,euh,donc là,on fait un succèset on va se dire,bah,euh,comment on peut le faire ?
00:31:21 :On peut se dire,bah,euh,Streamlight,Streamlit,point,session state,point,username,ça devrait marcher.Ouais,on va se dire,et,connecté.Voilà.Ensuite,euh,ensuite,on va,on va afficher les messages,on va s'afficher les messages.
00:31:43 :OK.Donc,on va se dire,donc,pour chaque message,donc,vous n'oubliez pasqu'ici,on a cette variable-làqui est tous les messagesqui sont stockés ici.
00:31:54 :Donc,pour chaque message,euh,d'un message,hop,et là,on va utiliserun espèce de petit widget,euh,chat message.Donc,je fais exprès,en fait,d'utiliser un petit peudes concepts qu'on voitavec Python pur.
00:32:10 :Donc,le context manager.Donc,on va se dire,hop,chat message,ici,tac,hop.Et comment ça marche ?Donc,le chat message,je vais revenir ici,euh,doc,API.
00:32:26 :Pourquoi je fais un chat messageet je ne fais pas juste un writejuste pour écrire,en fait,le message ?Les chat éléments,ils sont ici.
00:32:33 :Chat message,ils sont ici,en fait,ça vous permet,euh,ça vous fait un petit widget.Ils expliquent toutet qui comprend,en fait,des avatars.
00:32:43 :Donc,ils vous disent,euh,si l'avatar,il est non,donc,si jamais l'utilisateurqui écrit le message,c'est user ou humain,il va avoir un avatar,en fait,euh,par défaut.
00:32:56 :Si c'est AI ou assistante,ça va être un avatar par défaut.Sinon,euh,si la personne ne s'appelle pasGabriel,ça va être un avataret ainsi de suite.
00:33:04 :Donc,ça vous gère des petites chosescomme ça automatiquement.Et on peut faire pas malde petites choses comme ça ici.On peut avoir un peu de,euh,de layout,ainsi de suite.
00:33:13 :Donc,vous voyez comment ça marche.Là,par exemple,sur l'exemple,ils font un streamde chat message,utilisateur.Ça crée un petit logo ici.On écrit Hello.
00:33:23 :Il y a bien marqué Helloavec la mainet en dessous,il y a le chart,il y a le graphique.Voilà.Donc,je ne sais pas si vous voyezun petit peu toutes les possibilitésmais,déjà,avec un context manager,en plus,on utilise un line chart directement,
00:33:37 :vous avez déjà ça,quoi.Donc,imaginez si vous envoyez icivos données dynamiquement.C'est énorme,quand même.Ouais.Il y a des trucs vachementcool à faire.
00:33:47 :Ouais.Je voulais vous,en fait,je vous le montre ce soirparce que je saisqu'il y a des gensqui débutent,même si ceux qui débutentvraiment se disent,voilà,c'est compliqué,en fait,vous allez voir très vitequ'en fait,la doc,en plus,elle est extrêmement claire
00:34:05 :sur chaque élément.Vous avez tout qui est expliqué,les médias éléments,il y a vraiment tout pour les images.Quand vous regardez,il y a vraiment tout.
00:34:11 :Vous cliquez sur chaque élément,même les audio,les vidéos,hop,vous cliquez,boum,ils vous disent le data,c'est quoi,c'est le chemin,après,quel format,start time,c'est peut-être,c'est un truc de fou,il y a vraiment tout compris dedans.
00:34:26 :Voilà.Je vais arrêter de m'emballerun petit peu,je vais continuer.Du coup,on était où ?Je voulais écrire un message.Oui,voilà,oui,c'est ça.
00:34:39 :On était dans le chat message.Donc là,on avait dit queon allait récupérerl'username de la personnepour afficher un logo.Par exemple,si c'est Gabriel,ça va être un petit G.
00:34:51 :Donc,quand on va créer des messages,on va toujours faire un messagepoint append.Donc,on va récupérer ici l'auteur.Bon,c'est un petit système.
00:35:00 :Donc,on va se dire,eh bien,on va faire comme ça,on va se dire,message,hop,l'auteur.Voilà.Comme ça,ça va nous créer notre petit logo.
00:35:11 :Et ensuite,on aura le messagequi va aller avec.Donc,on va écrire ça.On peut très bien l'écrireavec la classe ici,markdown,qui esttexte élément,je crois,ici,et ça vous donne un petit peu,on pourra faire un write,je vais vous montrer,il y a un exemple,
00:35:30 :du stmarkdown,ici,parce qu'on peut faire du,comment dire,du,du markdown,tout simplement.Donc,là,vous voyez,Streamlit is really cool,il est où ?
00:35:42 :Ici,Streamlit,il est bienen italique,parce qu'en markdown,on fait comme ça,et les deux astérisques,c'est pour dire,on fait ça en gras.
00:35:51 :OK ?Et donc,là,il met de la couleur.Donc,vous voyez,c'est dans le chat.Enfin,sur Streamlit,tout simplement.Donc,on va essayer de faire ça,enfin,on va utiliser une petite classe comme ça,ouais,on va se le mettre en italique.
00:36:07 :Allez,on se fait un markdown,ici,hop,et on va se dire,qu'est-ce qu'on va se dire ?On va prendre le,on avait ici,le time,ici,donc on va se prendre,texte,message,point,message,texte,texte,le time,ici,et là,on va très bien se dire,
00:36:28 :ben,allez,on se le met en italique,hop,et là,markdown va le convertir en italique,et,le,le texte,enfin,le message en lui-même.
00:36:39 :Donc,là,hop,on va se dire,texte,message,hop,et texte.Donc,ce qu'il veut dire,c'est que,à chaque fois,pour les prochains messages qu'on va ajouter avec l'utilisateur,vous allez voir,on va le faire tout de suite,on va garder ce format-là,autant,texte,time.
00:36:58 :Donc,maintenant,on affiche notre message.C'est parfait,je pense qu'on ne va pas avoir besoin de faire de reruns,ça va aller.Et maintenant,on va prendre de quoi afficher,je vais regarder,là,comment ça se lance,c'est quand on fait ça,hop,je suis ici,oui,mais ça ne recharge pas,
00:37:14 :je pense que ça va bugger,parce que j'ai prévu le rechargement de la page,et je fais une 2e fois,je crois que ça peut,peut-être pas assez,voilà.
00:37:20 :Donc,on peut dire,ici,on a déjà,machin est connecté,on a bien,système,parce que c'est le système,l'heure,qui est à l'heure,machin,donc,Gabriel a rejoint,ok.
00:37:34 :Ce soir,on va prendre un peu plus de temps,parce qu'on va le déployer,vous allez voir,on va le déployer en 5 minutes,tout ça,ça va être fait très rapidement.
00:37:41 :On va tout tester en même temps.Donc,on a déjà,un petit chat sympa,pour l'instant,on ne peut que se connecter.Et là,on va boucler le truc,en 3,4 lignes de code.
00:37:51 :Maintenant,ce qu'il nous faut,c'est qu'on puisse,ensuite,écrire des messages.Donc,on va avoir un prompt,ou je ne sais pas,on peut,je ne sais pas,je ne sais pas,j'ai appelé comment,input chat,ouais,on peut dire comme ça.
00:38:06 :Ce n'est pas un prompt,c'est un input chat.On va dire,hop,un chat input,voilà.Et là,on va mettre un placeholder,on va dire ici,votre,je ne sais pas,ouais,message,tapez votre message,peu importe.
00:38:21 :Et donc là,si je ne regarde pas,ça ne marchera pas.Hop,même s'il va déconner un peu,ce n'est pas grave.Voilà.Et là,on a déjà,vous voyez,de quoi écrire un message.
00:38:36 :Hop,bon,ça n'affiche rien pour l'instant,mais parce que le message,on n'envoie nulle part,on a juste input.Voilà.Et vous voyez à quelle vitesseon peut avancer,parce que maintenant,je pourrais très bien utiliserun walrus,mais on ne va peut-être pas abuser,ça ira plus vite de faire son walrus.
00:38:51 :On va se dire,si on a,ici,un message,ok,on va se dire,hop,nos messages,ici,on va faire un,un append,tac,et bien là,on va reprendre le même système,on va se dire,l'auteur,c'est qui ?
00:39:10 :Et bien là,ça va être,tac,celui-là.Ça va être,hop là,ça va être la personnequi écrit le message,donc qui a rentré son pseudo avant,qui a été enregistré,ici,dans le username,hop,ensuite,on a,le texte,ça va être quoi ?
00:39:29 :Et bien l'input,chat,tac,et maintenant,on peut faire comme tout à l'heure,donc de mettre une,un time ici,donc on a fait quoi ?
00:39:37 :Un datetime.no,et je n'ai pas envie de le recopier,parce qu'à chaque fois,je me mélange,hop,voilà,on va faire une copie comme ça.
00:39:44 :Ok,donc normalement,avec ça,on devrait pouvoir,commencer à tester l'application.Est-ce que j'en ai perdu,ou est-ce que ça se fait ?Je regarde dans le chat.
00:39:56 :Ok.Il s'est relancé comme ça,à l'arrache,lui,ou qu'est-ce qu'il me fait ?Oui,c'est parce que t'as relancé le,t'as relancé le serveur,t'as pas actualisé ta page.
00:40:08 :Ouais,j'ai pas fait gaffe,tac,il est là.Du coup,t'en avais deux,à mon avis.Ouais,j'ai pas fait gaffe,est-ce que pour l'instant,vous suivez,ou c'est un peu bizarre,ce que je fais ?
00:40:23 :Non,c'est bien.Ça va ?Non,dites-moi,si vraiment c'est un peu compliqué.J'y vais au fur et à mesure,j'ai pris lentement,enfin,j'y vais au fur et à mesure.
00:40:33 :Ok,alors,on recommence,ça bug,si je rejoins,ça marche pas,on va le faire deux fois,ça va marcher,parce que c'est un peu bizarre.
00:40:42 :Si j'envoie un message test,ça marche pas,si j'envoie un deuxième,je pense que ça devrait fonctionner,parce que c'est,ça c'est le piège,j'ai galéré une fois à mon boulot,parce que justement,j'étais embêté avec ça,je sais pas pourquoi,il fallait que,le visuel aussi,ça aide à comprendre,
00:40:55 :bah ouais.En fait,le problème là,c'est que,le script,en fait,il a eu,enfin,un piton de haut en bas,et du coup,il y a un moment où,à l'extrême-vite,ça bloque un petit peu,et quand on renvoie deux inputs,comme ça,chaque fois,ça recharge,
00:41:12 :ouais,ça recharge,à chaque fois,on a le message précédent,on a un message de retard,donc,ce qu'il faut faire ici,pour que ça fonctionne,je réfléchis en même temps,donc,à chaque fois qu'on envoie un message,donc je l'avais écrit ici,il y a un truc qui est vachement bien,
00:41:29 :c'est pour,rerun la session,hop,et je sais que c'est,quand j'étais au boulot,alors,il faut savoir qu'à l'extrême-vite,vous avez un truc qui est sympa,je crois que c'est où,voilà,quand il y a des choses qui sont pas encore sorties,qui sont en test,vous avez expérimental,
00:41:42 :ils mettent toujours expérimental devant,donc,moi,à l'époque,au boulot,il y avait un expérimental rerun,qui fonctionnait déjà bien,maintenant,c'est toujours un rerun,hop,et s'il y avait maintenant,dans,mon chat,là,que je vais recharger,logiquement,ça devrait,donc,je ne sais pas,donc,je vais regarder,
00:42:07 :voilà,voilà,ça s'affiche tout de suite,seul problème,je ne vais pas vous montrer,là,si vous avez un téléphone,je pourrais le faire,et chatter avec moi-même,il s'appelle comment,je suis en local host,je vais le faire tout de suite,alors,je vais vous,j'envoie un message sur le chat de mon téléphone,
00:42:23 :hop,il s'appelle comment,c'est le 5501,c'est quoi le nom du,il est où,et on va le tester ensemble,l'application,un peu,192,ok,donc,là,je vais envoyer,donc,je vais m'appeler comment,je vais m'appeler,tac,donc,là,Georges a rejoint,moi,je le vois bien,sur mon téléphone,
00:42:48 :par contre,là,ça ne marche pas,ce n'est pas rafraîchi,je ne sais même pas si ça va marcher,si je fais ça,non,je vais me renvoyer,voilà,donc,là,avec mon téléphone,j'ai bien Georges qui a rejoint,hop,mais j'ai dû recharger,me reconnecter,pour que ça fonctionne,
00:43:05 :Georges a envoyé test,et là,j'ai de nouveau rejoint,donc,c'est un peu de bazar,donc,là,vous avez,Streamlit,refresh,je crois que c'est ça,faut que je retrouve,auto refresh,Streamlit cache refresh,oh,putain,j'ai déjà utilisé,c'est Streamlit refresh,c'est auto refresh,Streamlit,auto,refresh,ouais,
00:43:28 :ouais,ouais,ouais,ça doit être un truc comme ça,c'est ça,c'est ça,c'est ça,c'est ça,c'est ça,c'est ça,c'est ça,c'est ça,euh,ouais,là,on page,je vais vous dire,je vais reconnaître tout de suite,voilà,ça doit être ça,euh,il y a quoi comme classe,
00:43:51 :euh,auto refresh,ok,exactement,donc,ça,en fait,vous allez voir que,ça joue sur JavaScript,en fait,oh bah,je l'ai en start,donc,voilà,j'ai galéré tellement à trouver chaque foisque je l'ai étoilé,euh,super pratique,donc,on va faire des petits refresh,je ne sais pas,
00:44:12 :toutes les deux secondes de l'application,donc,on va l'installer déjà,hop,euh,comment on l'installe,c'est,c'est auto refresh,tac,hop,il est là,voilà,c'est installé,euh,je suis bien enlevé,ok,donc,on va importer ça,on va se dire,donc,c'est,on va,c'est,euh,auto refresh,
00:44:37 :il est là,et,c'est la classe que j'ai vu tout à l'heure,ST auto,voilà,ST auto refresh,donc,là,ce qui est vastement cool,euh,on va pouvoir se dire,on va le mettre au niveau de notre configuration,hein,peu importe,on peut se le mettre en dessous,
00:44:52 :hop,ST point,auto,euh,hop là,non,ST auto refresh,c'est une fonction,en fait,qui va,vous allez dire,hop,donc,on est en,ici,on va,on va se,comment dire,on va rafraîchir,en fait,la page,donc,vous allez voir,ça ne va pas se voir,
00:45:16 :hein,on va se dire,limite,ben,il n'y en a pas,parce qu'on pourrait très bien dire que ça,au bout de tant de secondes,ça arrête de se rafraîchir,et il y avait un autre truc qui est vachement cool,euh,avec,euh,on va se mettre une key aussi,
00:45:29 :c'est pratique,ça,je l'avais mis,genre,on va l'appeler,je ne sais pas,chat,et au moins,ça identifie un peu le,le,notre élément de,de refresh,bon,on pourrait sans,peut-être qu'en passer,je n'ai jamais essayé de faire sans,je mets toujours un élément pour le,l'identifier,
00:45:47 :et pour finir,ici,euh,ce paramètre,et en fait,ça,ça veut dire que,quand il y a un élément qui interagit avec un élément Streamlit,un initiateur qui interagit avec un élément Streamlit,donc,comme dans le,l'input du chat,et ben,ça se coupe,ça se bloque,voilà,
00:46:03 :ça évite que ça refresh pendant qu'on est dans le,dans l'input,donc,je vais lancer,notre serveur,euh,tac,on est là,ok,maintenant,si je rejoins,ok,donc,maintenant,je vais faire,je fais un test,ok,ça apparaît,donc,vous allez voir maintenant,que je vais me connecter avec mon téléphone,
00:46:24 :qui,s'il veut bien,voilà,voilà,maintenant,alors,vous êtes prêts,je vais envoyer un message,je vais m'appeler comment,je vais m'appeler,j'envoie un message,mais,salut,euh,Docstring,hop,j'envoie,temps de refresh,ça apparaît,ok,donc,là,vous voyez,maintenant,tout marche,comme on veut,comme on voudrait,
00:46:51 :est-ce que,pour l'instant,ça vous va,est-ce qu'on peut finir par un petit truc rigolo,ou pas ?Oui,oui,ça marche.Est-ce que ça vous plaît,au moins ?
00:47:01 :Oui,oui,ouais,c'est puissant,ouais,c'est un truc de malade,moi,j'aime beaucoup Streamlit,ok,donc,on va finir,on va s'amuser,mais le code,il est,on n'étouffe plus,vu que,je vais faire un repo,donc,hop,non,j'ai pas fait de fautes,je vois mal,ok,tac,
00:47:25 :ok,comme ça,vous avez toutes les dépendances installées,elles sont ici,et,en fait,Streamlit,Ninja2,j'ai jamais fait gaffe,voilà,on pourrait l'utiliser,c'est peut-être marrant,ok,bon,bref,c'est pas le sujet,ouais,il y a même du Tornado,j'ai vu dedans,ouais,mais ça,ouais,Tornado,c'est un framework,
00:47:49 :ça d'ailleurs,pour,pour faire du WebSocket,je crois,ouais,on peut faire un site web,bah,on peut se faire des petits sites web avec Streamlit,il y a moyen,bon,tu peux faire de la vitrine,je pense,on peut faire des petits sites web là-dessus,si vous voulez,
00:48:03 :on peut ajouter du CSS,dans des fichiers spécifiques,pour personnaliser notre application,ouais,donc,ouais,on peut se faire comme des petits sites web,genre,une fois,moi,j'avais fait un,bah,je vais aller sur mon compte,je vais vous montrer,je l'avais fait pour un mentorat,bah,JC était là,
00:48:20 :c'était pour un mentorat cinéma,à Noël,on avait fait ça,oui,euh,bon,pour l'instant,pour l'instant,ce qu'on va se faire,on va,euh,on va se créer ici,alors,attendez,je vais faire un,un petit temps,hop là,hop,nickel,voilà,donc,euh,déjà,ce que je fais,
00:48:44 :moi,c'est que je me fais,je le fais un peu à l'arrache,là,hop,touch,point,ignore,mass git,ignore,voilà,hop,donc,ça,pour ceux qui ne sont pas habitués avec,euh,bon,là,il y en a un peu trop,et je n'ai même pas de ref,enfin,
00:49:05 :c'est pas grave,au moins,j'ignore tout,au moins,c'est vrai que j'en ai pas,bon,euh,mes git ignore,en général,ils sont plus simples,hein,vous,pour des scripts épitomes très,très simples,ça peut faire 15 minutes,mais là,je,j'en fais trop,c'est pas très grave,euh,
00:49:25 :parce que c'est pas le but de ce soir,donc,en fait,bon,c'est parti,tac,donc,on va l'appeler comment,on va l'appeler,euh,chat,euh,trackdocstring,allez,streamlit,euh,j'envoie juste un message rapidement sur le discord,euh,à quelqu'un,pour ce soir,hop,ok,euh,donc,on va l'appeler comme ça,
00:49:52 :je ne mets pas de description pour l'instant,je ferai un beau rythmé pour vous après,ce soir,ok,on va créer ça,un beau rythmé,euh,généré par IA,allez,tac,c'est parti,donc là,maintenant,on va verser notre projet,on va le mettre sur,hop,tac,et,on va l'envoyer sur GitHub,
00:50:15 :donc là,ok,ok,on va faire un commit,on va tout envoyer sur GitHub,qu'est-ce qu'il me propose en IA au niveau du commit,initialisation,documentation,info de cette application,ok,pourquoi pas,on ne va pas se prendre la tête par un petit dossier,alors,il faut savoir qu'il y a une convention pour tout ce qui est,
00:50:34 :dites toujours,qu'est-ce qu'on fait,est-ce qu'on a fait une feature,donc on fait un fix,est-ce qu'on fait un fix,donc on met fix,deux petits points,qu'est-ce qu'on fixe,là,c'est en fait,on va pousser l'application,c'est un,comment dire,un push initial,on va dire,on va le laisser comme ça,
00:50:50 :donc,on va le pousser,boum,si je reviens là,j'ai bien les fichiers qui sont là,et j'ai bien mon application qui est ici,ok,alors maintenant,avec Streamlit,un truc qui est vachement cool,on va prendre gratuitement Pro,je ne sais pas ce qu'il propose,mais,ça va être pas mal,
00:51:09 :hop,on va se connecter,avec Google,j'ai déjà un compte,tac,on va se connecter,normalement,celle de Noël,je ne l'avais pas enlevé,je crois que j'y sais,c'est celle-là,je ne sais pas si elle marche encore,il n'y a pas de raison,je ne sais même pas si l'API,
00:51:31 :elle est à jour,ouais,non,il y a un truc qu'il n'y a pas,ah bah non,je ne veux pas les tokens,donc ça ne sert à rien,bon,ça ne sert à rien de la garder,du coup,celle-là,hop,hop,voilà,ok,donc là,ils sont sympas,
00:51:48 :parce qu'en plus,ils vous,on va dire,on va les envoyer depuis Github,j'espère que ça a marché,hop,on va prendre notre lien Github ici,tac,voilà,la branche main,on va l'appeler comment,donc,c'est index.py,
00:52:01 :notre fichier principal,et on va l'appeler comment,chat url,on va l'appeler chat,ok,chat duck string,ça peut être pas mal,on va essayer ça,tac,voilà,ok,on va l'appeler chat,ok,chat duck string,ça peut être pas mal,on va essayer ça,tac,voilà,ok,tac,
00:52:21 :et je croise les doigts pour que ça marche,il faut que ça marche en local,là,il n'y a pas de sourire,y a pas de sucré,y a rien,donc,on attend,on initialise,ok,hop,je vous envoie un lien Github sur Github,hop,je vous envoie un lien,
00:52:51 :alors,je ne sais pas si Beau est là,j'avais eu envie d'envoyer un petit lien,donc,je vais aller sur Discord,il fait l'envoi d'un lien,si la mail est là,comme ça,il pourra tester avec nous,hop,là,ok,ok,donc,je suis où,je vais me connecter,
00:53:07 :est-ce qu'il y en a qui se connectent ou pas,là,par hasard ?Oui,ça y est,ok,Antoine,on va joindre,j'y sais,allez-y,n'hésitez pas,nickel,ok,ça marche,on est tous connectés ensemble,Jérémy,ok,je regarde juste,je ne pense pas que ça marche comme ça,
00:53:27 :je ne pense pas que ça marche comme ça,je ne pense pas que ça marche comme ça,mais,on va voir,on va voir,on va voir,on va voir,on va voir,on va voir,je ne pense pas que ça marche comme ça,parce qu'en fait,là,du coup,
00:53:40 :tous les messages qu'on met,sont enregistrés dans la RAM du serveur,ok,ça marche,nickel,il n'y a pas de problème,là,on peut tous mettre un message,Johanna,super,merci,voilà,on peut tous mettre un message,hop,c'est fluide,il n'y a pas de problème,toutes les deux secondes,
00:53:57 :ça rafraîchit,nickel,ok,ben,voilà,en fait,je voulais vous montrer,du coup,voilà,génial,c'est Streamlit,ouais,euh,nickel,ça,ça a rejoint,et alors,du coup,on peut laisser l'application,là,en ligne,je ne sais pas,je vais la laisser,voir,mais tant que,si Streamlit,si chez eux,
00:54:24 :il n'y a pas de,comment dire,de redémarrage de serveur,tous les messages,qui sont là,vous les revirez demain,par exemple,alors,je ne sais pas,jusqu'à quel point,alors,ça,je n'ai pas cette connaissance,la RAM peut encaisser,comme ça,des messages,je ne sais pas trop,
00:54:41 :merci Pierre,euh,je ne sais pas trop,euh,mais sinon,après,il y a moyen,après,c'est pour ça que je vous parlais tout à l'heure,juste pour terminer,il y a toujours moyen de se dire,Streamlit,excusez,avec Firebase,Firebase,il y a moyen de faire du,voilà,
00:54:58 :de faire de la base de données,avec du SQL aussi,enfin,j'imagine,en Python basique,ça reste du Python,en Streamlit,donc,euh,donc Firebase,c'est,voilà,c'est Google,et il y a Supabase aussi,je crois,Supabase,qui est libre,je crois,il y a Prisma aussi,maintenant,je ne connais pas,
00:55:19 :et donc,du coup,c'est ORM aussi,c'est vachement pratique,merci de l'info,et c'est beaucoup moins limité,que Supabase,où si tu postes pas,pendant une semaine,ça désactive,d'accord,bon,toi,après,moi,toutes mes bases de données,je les ai,sur mes VPS,je les crée,du MySQL,
00:55:40 :en général,donc,je passerai avant par du Supabase,mais,ouais,donc,j'ai déjà vu,ça a fonctionné,en tout cas,très bien avec ça.C'est Prisma,tu dis ?
00:55:52 :Ouais.Est-ce qu'il y a déjà un article dessus ?Oula,je n'aime pas le titre,ça commence bien,voilà,il faudrait regarder,il faudrait regarder,du coup,à voir.
00:56:03 :Ok,du coup,voilà,je vais vous faire un repos.J'adore.Désolé.C'est pas mal.Ok,j'espère que ça vous a plu,en tout cas,je ne sais pas s'il y a des questions.
00:56:19 :Je ne sais pas s'il y a des questions.Oui,est-ce que tu as déjàessayé de stresserles deux secondes,là,de mettre moins ?
00:56:29 :Non,non,je n'ai pas essayé.Pour voir un peula réactivitéde l'ensemble.Non,bon,après,je suis sûr que ça va fonctionner,mais je n'ai jamais essayé.
00:56:41 :Mais,de toute façon,je vais vous filer le code,si vous voulez,comme ça,vous allez pouvoir vous amuser avec.Mais non,alors,oui,dernière chose,après,je vous le dis bien.
00:56:53 :Tu l'as déjà posté,le code.Ouais,ouais,il est sur un repo,vous voyez,avant de finir.Enfin,c'est où ?Ben,voilà,je suis dedans.
00:57:05 :Dans Components,ici.Dans Components,ici,voilà.En fait,vous voyez toutes les librairiesqui ont été développéespour Streamlit.Il y en ala blinde.
00:57:16 :Donc,le même,le Streamlit Authenticator.Je ne sais pas que vous allez aller dessus,et vous allez voir,ils ont prévu un systèmed'hôte avec Streamlit,quoi.
00:57:24 :Donc,je ne dis pas que vous pouvezvous faire peut-être...Je pense qu'il y a moinsde faire une petite app webquand même sympathique avec.
00:57:30 :Vraiment.Il y a moins de fairedes trucs cools.Il y a plein de trucs.Il y a plein,plein,plein,plein de trucs.Il y a des mecs qui ont prévuce qu'il faut,quoi.
00:57:41 :Voilà.Même pour les cartesFolium,par exemple.Voilà.Pas identiques,je ne sais pas ce qu'il y aavec,mais ça peut être très cool.
00:57:50 :OK.Et,ouais,il y a 14 pages,là,du coup,ils ont carrément un Streamlitqui n'est pas basé,qui est mis à jour,il y a deux ans déjà,donc je ne sais pas.
00:58:01 :Il faut voir.Mais qui doit fonctionner.Donc,voilà.Du coup,est-ce qu'il y a des questionsou c'est bon ?Ouais.Pas de questions.Excellent.
00:58:11 :Merci beaucoup,Gabriel.Non,c'est normal.C'est normal.C'est très intéressantet,enfin,c'est un sourire,c'est un sourire,c'est un sourire,c'est un sourire,c'est un sourire,c'est un sourire,si on peut appeler ça un framework,il est très intéressantet,je pense,je vais me pencher dessus.
00:58:31 :Je vais regarder un peuce qu'on peut faire avec.Parce que je suis en passionde tout ça,je vais commencerà bien regarder dedans.
00:58:40 :OK,je vous donnejuste un petit truc,vous pouvez regarder ça aussiqui peut être sympa.Voilà.Tai Pi.J'étais contactépar la boîte,justement Taipai,parce qu'ils voulaientque je teste,pour eux,cette appli web.
00:58:57 :Je n'ai pas trop pris le temps.Putain,il y a Intermarché qui s'est dit.Je n'ai pas pris le tempset ils m'ont contactéparce qu'ils ont vuque je faisais un peu de Streamlit.
00:59:05 :Et, en fait,c'est un peu pareil,entre guillemets.Enfin,c'est différent parce quele peu que j'ai testé,ça fait un truc très sympa aussi.
00:59:12 :J'étais un peu confusparce que ça faisait un truc vraiment...Mais le problème,c'est que c'est trop de la magie.Wow,comment c'est possible ?
00:59:19 :Mais ça,c'est pas mal aussi.Voilà.Bon, bref.Je ne vous embête plus pour cela.C'est un peu le même effetque Streamlit.Il sert à la même chose,en fait,à peu près.
00:59:31 :Oui,la personne qui m'a contacté,c'est justementune des responsables.Elle m'a ditque ce qu'on peut tester,ça se ressemble,en fait.Ils sont,entre guillemets,un peu en concurrence.
00:59:42 :Alors,je ne sais pas jusqu'à quel point,par contre.Voilà,à voir.Parce que je ne l'ai pas testé vraiment.Je l'ai juste faitpeut-être 30 lignes de code.
00:59:51 :Après,j'ai arrêté.Je n'ai pas pris le temps.Donc,voilà.Écoutez,la semaine prochaine,il y aura trois mentorats,normalement.Du coup,on va passer à trois.
Aucune occurrence trouvée pour « ».
00:05:17
Introduction à Streamlit
00:06:44
Initialiser le projet Streamlit
00:09:34
On commence à coder !
00:14:24
Discussion autour de streamlit : possibilités, back et front
00:22:39
Continuons l'application de tchat
00:41:26
Streamlit rerun pour actualiser l'application
00:43:18
Utilisation de Streamlit auto refresh
00:48:29
Mettre le projet sur GitHub
00:51:01
Déployer l'application en production en 2 min !