Session du 23 novembre 2023 à 20h00
Développement Web & Frameworks
Qualité & Architecture
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
Générer et héberger une documentation Sphinx
Présentation de sphinx, module qui permet de créer de la documentation pour votre projet. On va voir également comment héberger cette documentation sur Read the Docs.
00:00:00 :J'ai commencé l'enregistrement.Vous m'entendez ?Ok.Bonsoir.Bonsoir à tous.Amins, Ludo.C'est que ici que ça ne marche pas ou ça marche des fois dans d'autres applications ?
00:01:11 :Bonsoir tout le monde.Salut Gabi.Que ici ? Amins.Pourtant, ce n'est pas un setup particulier parce qu'ici, tu vois par exemple, Gabriel, il peut parler.
00:01:29 :Et là, du coup, c'est peut-être plutôt le navigateur Google qui te fait ça.Enfin, le navigateur Chrome.Parce que là, en fait, avec Google Meet, on était directement sur ton navigateur alors que sur Zoom, tu es sur une application.
00:01:50 :Donc, j'imagine que c'est peut-être ça le truc.Ouais, essaye.Bonsoir tout le monde.Bonsoir.Bonsoir.Bonsoir.Bonsoir.Bonsoir.Ouais, essaye.Bonsoir tout le monde.OK.
00:02:25 :Du coup, je viens tout juste de mettre le programme.Ce que je vous propose, c'est qu'on regarde ensemble.Je vous envoie un lien.Vous me dites si ça fonctionne.
00:02:36 :Et on fera ça en partie ce soir.Et puis, si on a terminé, on remanipulera un petit peu le projet qu'on a fait la dernière fois.
00:02:50 :Là, vous savez, le petit problème que j'avais vu avec la connexion à la base donnée SupaBase.Il y avait juste une petite manip à faire et une autorisation pour qu'un script externe puisse y accéder.
00:03:06 :Est-ce que vous avez testé le lien ?OK.Très bien.Donc, sachez que ce lien, en fait, c'est une auto-doc d'un projet que j'ai fait juste avantet qui est hébergé gratuitement sur ReadTheDoc.
00:03:29 :Je pense que si vous faites un peu de programmation depuis quelques temps, vous avez déjà vu ça.ReadTheDoc, quand vous avez un paquet ou un module, c'est souvent une documentation hébergée avec ReadTheDoc,avec ce template-là.
00:03:44 :Est-ce que vous avez déjà vu ce genre de truc ?Tout le temps.OK.Je vais l'afficher ici.OK.Est-ce que ça vous intéresse qu'on fasse ça ce soir, qu'on part de zéro et qu'on voit comment on faitpour générer automatiquement ?
00:04:19 :Parce qu'en soi, c'est un site web vraiment statique hébergé avec un URL public.Je n'ai rien à configurer.Je n'ai pas de serveur à mettre en place.
00:04:35 :Je n'ai pas de DNS à configurer, etc.Dites-moi si ça vous intéresse qu'on fasse ça.Si non, on fait autre chose.Merci.OK.Très bien.
00:04:56 :Si ça intéresse quelques-uns, on va le faire.Juste pour vous montrer un peu le truc.Ça, c'est la page d'accueil.Comme vous avez déjà pu le voir, c'est un thème particulier.
00:05:11 :C'est le thème Read the Doc.Il y a plusieurs thèmes.C'est généré automatiquement par rapport à la docstring de ton code.Mais tu peux aussi ajouter les pages que tu veux pour décrire ton projet.
00:05:26 :En gros, ça, c'est votre page d'accueil.Ici, c'est les différentes pages de documentation que vous voulez mettre dans votre projet.Je vais zoomer encore un peu.
00:05:38 :Là, vous avez un sidebar automatique.Si je clique sur introduction, je vais arriver sur l'introduction que j'ai tapée.Je vous montrerai comment on fait.On peut même écrire du code avec une coloration syntaxique automatique.
00:05:55 :Vous voyez des pages de navigation ici.Là, encore une fois, je n'ai pas du tout touché à ça.Ici, si vous avez un module avec plusieurs fonctions.
00:06:04 :Là, j'en ai qu'une seule.Là, par exemple, j'ai toute la docstring de ma fonction qui est affichée.Non, Gabriel, ce n'est pas du Markdown, c'est du RST.
00:06:18 :C'est restructure texte, je crois.Je ne sais pas exactement.RST, format, restructure texte.C'est ce format-là.Après, je sais qu'il y a des moyens de transformer un Markdown en RST.
00:06:41 :C'est un peu chiant parfois d'écrire du RST par rapport à du Markdown.La syntaxe est un peu particulière.Je préfère écrire du Markdown, mais là, pour la génération des docs, c'est du RST format.
00:06:55 :Voilà un peu ce qu'on va faire.On va prendre en place tout ça, générer la doc, et on va l'héberger grâce à readthedoc.J'ai déjà fait le projet juste avant, donc je m'appuierai dessus si jamais je rencontre des difficultés.
00:07:14 :Mais on va essayer de faire de zéro.Bonsoir, Simon.On va se retrouver...Je me suis un peu réconcilié avec GitHub, avec la génération des clés SSH, etc.
00:07:30 :En fait, ce n'est pas si foireux que je le pensais.Ce qu'il faut faire, c'est qu'on va d'abord se créer un repo.Le repo, on va l'appeler un nom de package.
00:07:43 :Comment on peut l'appeler ?Une idée...Qu'est-ce qu'on va dire ?On va dire qu'on va faire un package de...Qu'est-ce qu'on pourrait écrire ?
00:08:09 :Non, pas d'idée.Chaque fois, je dis n'importe quoi.On va mettre... Tiens, je pense au projet de Gabriel Aréza.On va faire une application qui permet...
00:08:30 :On ne va pas la faire, mais c'est juste pour avoir un nom un petit peu...On va mettre footballtickets.On va dire qu'on se fait une applicationqui permet de réserver les billetsqui sont encore disponibles pour un match de foot.
00:08:56 :Ce que je fais quand je fais un repoqui va contenir une documentation...Par exemple, si mon repo, je vais l'appeler footballtickets,je vais l'appeler footballtickets master.
00:09:08 :Le repo va contenir à la fois le module, le package,et en plus la documentation.C'est pour pouvoir séparer le code et la documentation.Là, on va juste mettre repo...
00:09:29 :Il faut le garder public.Si vous voulez l'héberger à votre documentation sur ReadTheDoc,ensuite, il faut le garder public.On peut ajouter un readme, un gitignore classique Python,et puis une licence...
00:09:55 :Moi, je prends toujours la GRNU Public License CreateRepository.OK. Settings.Est-ce que j'ai déjà ma clé de déploiement ?Il faut que j'ajoute une clé de déploiement.
00:10:10 :Je vais la mettre ici.Ça, c'est pour pouvoir cloner mon projet en SSHplutôt qu'avec un mot de passe.Pour ça, il faut que j'affiche le contenu de ma clé publique SSH.
00:10:30 :Si ça vous intéresse, après, je peux vous montrer comment on fait pour faire ça.J'avais dit ça tout à l'heure.Ça, il va plus vite que les traces comme ça.
00:10:40 :cat ssh id.pubLà, je vais l'afficher.Normalement, c'est la clé publique.Il n'y a pas de souci si vous la voyez,mais je préfère quand même la cacher.
00:10:58 :En fait, il suffit de mettre votre clé publiqueici dans les clés de déploiementet vous pourrez faire un clonage en SSH.Le clonage en SSH, c'est quoi ?
00:11:11 :C'est que quand vous faites ici un git clone,au lieu de faire HTTPS,ici, le git clone classique HTTPS,vous faites SSH et vous allez cloner votre repo via du SSHplutôt qu'un user mot de passe.
00:11:27 :On se retrouve après.Vous allez à un endroit où vous voulez cloner votre repo en local.Ça va pour tout le monde.Pour l'instant, là, ce que je dis,si jamais il y a des débutants,n'hésitez pas à le dire.
00:11:43 :C'est des documents.Là, on va faire git clone.On va aller dedans.Je vais ouvrir.Je vais déjà créer mon environnement virtuel.C'est l'environnement virtuel.
00:12:16 :On lance le code à cet endroit-là.Je vais zoomer un peu.Maintenant, une fois qu'on est dans notre repo,comme je vous l'ai dit,j'aime bien séparer le code.
00:12:37 :Je ne sais pas.Je n'ai jamais fait avec GitLab,mais je pense qu'il n'y a pas de souci.GitHub et GitLab fonctionnent de la même manière.
00:12:48 :Tu as un lien HTTPS à chaque fois que tu crées un repo.Pour moi, il n'y a pas de souci.Merci.J'ai vraiment du mal à cerner les différences.
00:12:59 :C'est le même principe.C'est exactement le même principe.La seule différence, c'est l'interface utilisateur.Je sais que GitLab, c'est un peu plus...Moi, ça me paraît plus facile.
00:13:11 :C'est pour organiser tes différents repos en organisation.C'est un peu plus simple.Parce qu'en fait, avec GitLab,quand tu crées un repo,il te demande si tu veux créer un repopour ton compte personnel.
00:13:29 :Par exemple, si ton compte,c'est gabriel.trouver.gmail.com,tu peux créer un repo pour ce compte personnelou sinon, tu peux dire...Par exemple, imagine que tu es freelanceet que tu as plusieurs clients.
00:13:46 :Tu peux définir un groupe pour chacun de tes clientsparce que chacun de tes clients,tu peux avoir plusieurs missions pour chaque client.Ça te permet de t'y retrouver un peu mieuxet de gérer un peu plus facilementles droits utilisateurs en fonction du groupe.
00:14:00 :Peut-être que pour un client,tu vas lui autoriser lecture-écriture de tes repos,alors que pour un autre,tu ne lui autoriseras que la lecture.Du coup, le fait d'avoir des groupes comme ça dans GitLab,ça se gère un peu mieux.
00:14:14 :Je pense que tu peux en faire aussi sur GitHub,mais ça me paraît un peu moins intuitifde gérer des groupes sur GitHub.Voilà.Après, les autres, si vous connaissez...
00:14:27 :Ouais, ça c'est vrai.Tu peux avoir ton propre serveur GitLab.C'est vrai que j'avais vu ça.Merci, Quentin.Effectivement, je ne suis pas sûr que...
00:14:41 :Ouais, parce qu'en fait, GitLab, c'est vraiment...Je ne suis pas sûr que GitHub, ce soit open source.Enfin bref, c'est vrai que tu peux hébergerta propre plateforme GitLab.
00:14:58 :Et voilà, je ne sais pas si sur GitLab,on peut faire...Parce que moi, sur GitHub, j'avais ce petit truc-là.Putain, c'est quoi ?En fait, si tu vas sur GitHub,tu as un repo spécial.
00:15:21 :Si je fais...Non, ce n'est pas ça.En fait, sur GitHub, tu as le GitHub Pages aussi.Ça, c'est quand même intéressant.Je ne sais pas si sur GitLab, on a ça.
00:15:35 :Tu peux héberger facilement un blogsur GitHub Pages gratuitement.Je ne crois pas que sur GitLab, tu puisses le faire.Voilà, il y a des petites différences.
00:15:52 :Chacune se vale.Du coup, là, on se retrouve dans notre repo local.Ce que je fais, c'est que là, si mon package,je veux que ça soit football-tickets,je vais juste créer un dossier football-tickets,et je vais créer un autre dossierqui s'appelle docs, à la racine.
00:16:20 :Donc là, je vais foutre tout mon code.Donc là, par exemple, je peux créer un modulede gestion Reza pour un py,et là, je vais définir mes fonctions.
00:16:34 :Donc, def, getAvailableTickets,et puis là, on va dire qu'on va avoir interrogéun URL, tout simplement.Voilà.Pour l'instant, je vais mettre un retour non.
00:16:54 :Retour AvailableTicketList,et puis là, on va dire qu'AvailableTicketList,ça va être une liste vide.Et puis voilà, on va définir après la docstring,vous verrez comment on peut la générer automatiquementavec une extension de VS Code.
00:17:32 :Donc là, en gros, imaginez football-tickets,vous avez votre premier module,vous avez votre fonction,on va en mettre une autre,def, getPriceTicket,et puis on va dire que c'est TicketId,voilà, et puis on va fairereturn TicketPrice,et puis là, on va dire TicketPrice,on va l'initialiser à zéro,
00:18:02 :pour ne pas avoir d'erreur.Donc là, on a un module avec deux fonctions, etc.Pour l'instant, il n'y a pas vraiment de mystère,c'est un truc assez classique.
00:18:11 :Après, voilà...Ouais, pas de souci, Gabriel.Ce que je vous propose, en fait,c'est qu'on suive ensemblela documentation technique de ReadTheDoc,enfin, c'est la documentation de Sphinx.
00:18:26 :En gros, vous allez juste,vous faites Sphinx, Tutorial, ReadTheDoc,et vous allez avoir la marche à suivrepour faire ce qu'on fait là.Donc, il suffit maintenant d'installer Sphinx.
00:18:38 :En fait, c'est un module de Python.Donc, on se retrouve ici.On s'assure qu'on a bien notre environnement virtuel activé.OK, on l'a.On est bien à la racine.
00:18:48 :Et donc, on va installer Sphinx,comme il nous l'a dit.OK, on va installer ça.Donc, ça, c'est vraiment le thèmequi permet d'avoir le beau,enfin, la belle interface graphique comme on aime.
00:19:05 :Vous savez, celle-ci.Ça, je vais le virer parce qu'on ne va pas mélanger ce qu'on fait.Voilà, donc on a installé Sphinx.On a installé le thème.
00:19:14 :Et ici, c'est potentiellementles packages dont on aurait besoin.Mais là, en l'occurrence, on n'en a plus besoin.Donc, une fois qu'on a installé nos packages,on peut faire un pip freezerequirements.txt.
00:19:31 :Donc ça, en fait, ça permet defreezer, donc figer, en fait,les librairies qu'on utilise pour notre projetqui ont été encapsulées dans ce fichier-là,dans requirements.txt.
00:19:45 :Et si jamais on donne notre code à quelqu'un,il suffit juste de lui donner le requirementset nos fichiers de code.Et lui, il peut installer facilement, du coup,les bibliothèques avec leur version.
00:19:57 :OK, donc on est là.Ensuite, on peut passer à l'étape d'après.Donc, l'étape d'après, en gros, là, je vous passe le truc.Mais ils nous disent de créer...
00:20:09 :Enfin, là, ils nous décrivent un petit peul'architecture du dossier principal.Voilà.Je pense qu'on peut passer.OK, donc là, ils nous disent de créer le projet.
00:20:24 :Mais ça, on l'a déjà fait.De créer un dossier dans lequel on met notre code, etc.Donc ça, c'est ce qu'on a fait déjà.Ils nous disent de créer un dossier docsdans lequel on va stocker notre documentation.
00:20:36 :Et ensuite, là, ils nous disent de Sphinx Quickstart.OK, depuis le dossier docs.Donc, je vais me déplacer dedans.Docs, OK.Et donc là, je fais Sphinx Quickstart.
00:20:51 :Donc là, en gros, c'est un petit peu les configurationsde notre projet Sphinx.Pas de souci, Gabriel.Ouais, j'ai installé la librairie.J'ai juste fait un pip install Sphinx.
00:21:06 :Je vais revenir en arrière.J'ai juste fait pip install Sphinxet pip install Sphinx RTD thèmepour le thème qu'on va utiliser sur l'interface.Et après, c'est tout.
00:21:20 :J'ai juste présenté l'architecture du dossier.Mais là, on était en train de faire la suite.Donc, il ne faut pas oublier de créer le dossier docsdans lequel on va créer.
00:21:29 :Ensuite, on va dedans.C'est des docs, vous voyez.Et on fait juste la commande Sphinx Quickstart.Donc, une fois que j'ai lancé la commande Sphinx Quickstart,je suis ici dans la configuration de mon dossier.
00:21:39 :Donc là, il me demande si je veux séparerla source et la sortie de ma documentationparce qu'en fait, on va...Vous allez voir, je vais vous montrer.
00:21:50 :Donc, on fait Yes.Le nom du projet qui va apparaître dans la documentation.Donc là, on a dit, c'est du football tickets.OK. Le nom de l'auteur.
00:22:00 :Donc, on met le nom de l'auteur.La version du projet.On est en version 1.On va le laisser en anglais.Et voilà.Donc maintenant, si on va voir dans notre dossier docs,vous voyez qu'il a créé automatiquementdeux dossiers et plusieurs fichiers.
00:22:17 :Donc ici, le dossier source,ça va être le dossier dans lequel on va travaillerpour définir nos différentes pages de notre site web.Et ici, le build, ça va être le résultat.
00:22:29 :En fait, ça va être le projet,vraiment les pages HTML générées pour notre site web statique.Parce qu'en fait, la documentation qu'on va faire,c'est rien de plus qu'un site web statiquecomme on pourrait le faire en HTML, CSS, tout simple.
00:22:44 :Ensuite, ces fichiers-là,make.bat et makefile,vous n'avez pas besoin d'aller voir dedans.Mais en gros, c'est les exécutablesqui vont nous générer les fichiers HTMLà partir de tout ce qui se passe dans le document source.
00:23:02 :Voilà.Et l'autre fichier qui est important,c'est ici le conf.py.Conf.py, en fait, il va contenir toutes les infos.Donc ça, c'est les infos, vous voyez, qu'on a déjà tapéesquand on a configuré notre projet.
00:23:17 :Et ici, c'est les différents...En gros, c'est un peu la config de notre documentation.Voilà.Et donc, ce qu'on fait, c'est qu'on continuede suivre la doc qu'ils nous disent.
00:23:33 :La source-là nous explique un petit peuce que fait un peu...Tu parles de quoi, Gabriel ?Les fichiers .bat, je pense.Ce n'est pas des fichiers propres à Windows ?
00:23:47 :Je trouve peut-être un...Si, en fait, un .bat, c'est un fichier pour Windows.Mais du coup, celui-là...En fait, tu as un makefile et tu as un .bat.
00:23:58 :Donc, je ne suis pas sûr que...En fait, je pense que c'est parce que...C'est pour que ce soit compatible Windows et Ubuntu.Je ne suis pas sûr que le makebat, il soit utilisé.
00:24:09 :Voilà.Et donc, là, c'est juste qu'ils décrivent un petit peules différents fichiers et dossiersqu'on a dans notre projet.OK.Et donc, là, ils nous disent d'aller éditer le conf.py.
00:24:27 :Donc, ici, on va mettre le thèmequ'on a installé tout à l'heure dans conf.py.Vous voyez ici, HTML thème.Donc, là, on va mettre celui qu'on veut.
00:24:38 :OK.Après, qu'est-ce qu'ils nous disent d'autre ?Donc, là, c'est à peu près tout.Et ici, ça va être l'endroit...On va devoir définir le chemin de notre...
00:24:49 :Où est notre code ?Parce que si on veut faire de la génération automatiquede documentation depuis la docstring de nos fonctions,il faut lui dire où est-ce qu'il est.
00:24:58 :Donc, il suffit simplement, là, de définir ça.Et là, on va mettre le nom de notre...Enfin, le chemin de là où il y a tous nos modules.
00:25:11 :Donc, là, c'est Football Tickets.Football Tickets, comme ça.OK.Donc, là, en gros, on lui dit justeoù sont nos fonctions.OK.Donc, là, c'est bon.
00:25:32 :On a créé notre requirement.OK.On y est.Voilà.Donc, là, on commence...Ça va commencer.Donc, là, maintenant, pour l'instant,on n'a rien généré.
00:25:45 :On n'a pas généré de doc ou quoi que ce soit.Mais ce qu'il faut, c'est qu'on...qu'on fasse un petit peu...qu'on fasse une docstring de notre...
00:25:57 :Ce qu'on peut faire, peut-être déjà, c'est...Attendez, je réfléchis.On va peut-être passer une étapeet on va y revenir après pour que vous le voyez.
00:26:08 :Voilà.Ce qu'on peut faire, c'est...On va générer...Ouais, on va passer l'étapeet j'y reviendrai après.Donc, là, on va générer un premier fichier.
00:26:23 :Intro RST.Qu'est-ce que je vais mettre?Ouais, je vais prendre ce truc-là.Donc, à chaque fois que vous allez vouloir créerune page qui n'est pas liéeà la docstring de votre code,il va falloir...
00:26:40 :Ici, vous allez aller dans Doc,dans Source,et à cet endroit-là,vous allez créer vos fichiers RST.Donc, là, on va créer un trucintro.rst.
00:26:51 :OK.Et donc, là,j'ai écrit un truc...C'est un petit peu comme le markdown,ne soyez pas trop surprispour l'écriture.Donc, on va dire football tickets.
00:27:04 :Remaining football tickets.OK.Et puis, là, juste pour le fun,on peut dire qu'on va définir aussisi on regarde la syntaxe,on peut définir des blocs de code.
00:27:34 :Ici, je vais mettre...Ouais.Donc, ça, c'est la syntaxepour définir un bloc de code.Et voilà, si j'ai défini icifor i in range 10print i au carré.
00:27:53 :Voilà.Donc, ça, c'est notre fichier d'introduction.Et ici, après,une fois que vous avez créé une nouvelle page,il ne faut pas oublier dans l'index, ici,d'aller lui définir...
00:28:04 :Il faut juste...Par exemple, si votre page,elle s'appelle intro.rst,il faut juste taper ici introparce que sinon, vous n'allez pas la voirdans votre index.
00:28:14 :Donc, si je fais...Voilà, je suis dans docs.Je vais suivre ce qu'ils me disent.Voilà.Donc, pour générer, en gros,il faut faire un make clean et un make htmlparce qu'ici, là, dans build,vous voyez, pour l'instant,je n'ai rien du tout.
00:28:30 :Si je vais afficher dans le finder,là, pour l'instant, dans build,je n'ai rien.Si je fais make clean,OK, et maintenant,je fais make html.
00:28:42 :Donc, là, en gros,il m'a généré...Vous allez voir build.Il m'a généré, vous voyez,une arborescence html.Donc, si maintenant,je vais ouvrir avec Google Chrome.
00:28:56 :Je mets ici.Et donc, là, vous voyez que j'ai ma pagequi est créée.Mais là, pour l'instant,j'ai juste introduction.Donc, football tickets is the repoto allow you to find machin.
00:29:08 :Donc, par contre, il n'a pas pris...Pourquoi il n'a pas pris ça ?Code bloc Python.Pourquoi il ne prend pas ?J'ai du mal à écrire le RST.
00:29:32 :Je vais aller voir ici dans l'exemple.Le code bloc, pourquoi il ne veut pas ?Pourtant, ce n'était pas trop mal.Pourquoi il ne prend pas ?
00:29:50 :Pourtant, ce n'était pas trop mal.Je vais voir si j'écris juste ça.Est-ce que ça va mieux maintenant ?OK.Donc là, vous voyez que ça a bien fonctionné.
00:30:32 :J'ai bien...Je vais zoomer un peu.C'était juste une histoire de syntaxe pour le RST.Ce n'est pas très grave.Donc là, vous voyez que ça a bien fonctionné.
00:30:41 :J'ai bien...Je vais zoomer un peu.C'était juste une histoire de syntaxe pour le RST.Ce n'est pas très grave.Donc là, vous voyez que je commence à voir mon site web.
00:30:51 :Voilà, c'est juste en local pour l'instant.Mais vous voyez que j'ai bien un truc qui est interactif avec des liens hypertextes.Parce que là, si je clique sur intro, je me retrouve là-dessus avec la description que j'ai écrite.
00:31:03 :Ici, le code, vous voyez qu'il est formaté.Et donc là, si je fais preview, je reviens.J'ai même un search page où je peux taper si je fais intro.
00:31:12 :Voilà.Introduction.Introduction.J'ai un truc où je peux chercher, etc.Donc ça commence à être bien.Et maintenant, ce qu'on aimerait, c'est qu'il nous génère automatiquement la docstring de nos modules.
00:31:26 :OK.Donc pour ça, on va...Je vais dézoomer un peu.On va s'occuper déjà de générer une docstring.Parce que là, en gros, on n'a pas de matière.
00:31:37 :Donc je vais aller là et je vais créer des docstrings pour ça.Et pour ça, peut-être que vous connaissez déjà.Mais j'ai une extension.Dites-moi si vous l'utilisez aussi dans le chat.
00:31:47 :Qui s'appelle autodocstring.Voilà.Et aussi, il y a une petite config à faire si vous utilisez autodocstring.Vous allez dans paramètres.Cherchez ici docstring directement.
00:32:02 :Et c'est là, dans docstring format.Parce qu'en fait, vous avez plusieurs types de docstring, de format docstring.Il faut sélectionner Sphinx.OK.Parce que c'est le format que comprend le langage RST.
00:32:18 :Et si vous avez cette extension qui est activée sur VS Code,il vous suffit ici de taper...Vous faites trois guillemetset il va vous proposer Général Docstring.
00:32:30 :Vous faites OK.Et là, vous avez vraiment une docstring qui est au format de Sphinx.Et vous voyez qu'il m'a généré automatiquement.Là, j'avais mis URL là-dedans.
00:32:43 :Il m'a généré automatiquement tout ce qu'il faut.Là, param URL.Retourne type.Voilà.Donc, je sais exactement ce que je fais.Donc là, je vais taper la description de la fonction.
00:32:54 :Function to look for on the Internet.Available tickets.Après, si je fais tab, il va m'emmener automatiquement.C'est vrai qu'avec Codium, on peut faire Général Docstring.
00:33:18 :Ici, quand on fait Général Docstring.Donc là, si je fais description,je fais juste URL of the API containing the available tickets.Le type, ça va être un str, l'URL.
00:33:35 :Et qu'est-ce qu'on va retourner ?On va retourner une liste.List of available tickets.Et le type, c'est une liste.OK.Ici, pareil, si je fais Général Docstring.
00:33:50 :Par contre, avec Codium, là, vous voyez le format.Je crois que c'est un format Numpy pour la docstring.Moi, ce que je veux, c'est un format RST.
00:33:59 :Donc, je fais avec mon extension.Donc là, on va dire get the price of the ticket.Description ID, c'est ID of ticket.C'est un peu bidon, ce que j'écris comme Docstring.
00:34:16 :Mais c'est juste pour...Voilà.Donc, ça va être un int.La description, il va retourner price of ticket.Et le type, ça va être un int aussi.
00:34:30 :Voilà.Et donc là, maintenant, on va pouvoir aller générer automatiquementla partie de documentation pour notre Sphinx.Ah oui, d'accord.Ouais, parce que tu veux dire...
00:34:45 :C'est vrai que c'est pratique.Donc maintenant, si je reviens un peu en arrière de ce qu'il me disait,si on veut générer la documentation automatiquement de notre module,on a un truc facile qui s'appelle...
00:34:59 :En fait, c'est cette commande-là.Donc, je ne vais pas m'embêter.Je vais la copier directement.Je vais juste changer ici le nom.Donc, en fait, il va aller voir dans...
00:35:13 :Quand il est dans Doc, il va aller voir dans Football Tickets.Gestion Reza.Donc, il vaut mieux...Ouais, je vais faire Football Tickets.Il suffit de dire...
00:35:28 :Parce que là, j'ai un seul package, mais on pourrait avoir plusieurs packages.Et en fait, dans le package, il va aller voir tous les modules.
00:35:33 :Donc, je fais ça.Et donc maintenant, si je retourne voir dans Doc, dans Source,vous allez voir qu'il m'a généré un module RST et un gestion Reza RST.
00:35:46 :Donc là, c'est un truc automatique.Je ne veux pas trop m'embêter avec ça.Et maintenant que vous avez ça, il suffit, dans Index,comme on avait rajouté tout à l'heure Intro,soit vous rajoutez module, parce qu'en fait, dans votre module,vous avez plusieurs fonctions,ou soit vous mettez le nom du module.
00:36:05 :Parce que, pardon, en fait, dans notre package, ici, dans Football Tickets,on n'a qu'un seul module.Donc, si on avait plusieurs modules dans le package,il faudrait taper module.
00:36:16 :Mais là, comme on n'a qu'un module, on va taper directement...Au lieu de taper module, on va taper ici, gestion Reza.Voilà.Et donc, si je fais ça...
00:36:30 :Ah oui, tout à l'heure, il y avait...Je vais le tester, vous allez voir qu'il va tester, il va y avoir un problème.Si je fais mes HTML, voilà.
00:36:39 :Si je retourne là-dessus, Index, Google Chrome,donc là, vous voyez qu'il m'a bien rajouté tout ce qu'il faut,mais il ne m'a pas généré...Pourquoi il me...
00:36:57 :Ah oui, c'est parce que je l'ai zoomé.Non, 100%.Vous voyez qu'il ne m'a pas généré de docstring.Donc, en fait, pour ça, il y a un petit truc,une petite subtilité à les configurer.
00:37:09 :Dans conf.py, dans les extensions, ici,il faut aller rajouter ce petit module.C'est un petit truc que j'ai trouvé sur Stack Overflow.Il ne faut pas oublier d'ajouter ça dans les extensions.
00:37:28 :Et donc, maintenant, si je retourneet que je fais make clean et make HTML,normalement, ça devrait fonctionner.Google Chrome, voilà.Donc là, maintenant, vous voyez que dans l'index,on a introduction parce que, ici,c'est à cet endroit-là.
00:37:49 :Dans source...Attendez.Ça, je peux le quitter.Ça aussi.Oui, Gabriel ?La question, quand j'y pense,c'est parce que souvent, je vois dans les packages,ils font la documentation avec ça, avec Sphinx.
00:38:05 :Mais il y a aussi la documentation sur GitHubdirectement en Redmi.Donc, Sphinx, ce n'est pas une convention.Tu peux très bien faire un packageavec une belle fondation que sur Redmi.
00:38:18 :C'est possible vraiment pour avoir un Sphinx.C'est vraiment la norme.En fait, la norme...Mais c'est pareil.Quand on parle de normes, tu vois,c'est plutôt des conventions.
00:38:31 :En fait, c'est plus si tu as un packageavec plusieurs modulesqui sont interfacés entre eux, etc.Je pense que c'est bien de faire un truc read the doc.
00:38:42 :Si tu veux le partager avec des utilisateursqui ne sont pas forcément des développeurs.Je pense que c'est bien d'avoir un read the doc dans ce cas-là.
00:38:51 :Alors que si vraiment,c'est orienté uniquement aux développeurs, etc.Le Redmi peut suffire.Le Redmi, c'est bien,mais tu n'as pas d'arborescence avec le Redmi.
00:39:05 :Tu n'as pas de structure.C'est une page, une simple page.Tu n'as pas de menu, tu n'as rien.Tu vois, si tu as un gros package,un gros projet,tu peux avoir une page Redmiqui devient assez conséquente à scroller, etc.
00:39:20 :Et surtout que ta page Redmi,si jamais tu es obligé de partager,tu vas partager ta page Redmi,forcément les gens vont aller voir ton code, etc.
00:39:36 :Alors que là, le read the doc,ça permet de bien décorréler le code et la documentation.Et puis surtout, ton code,c'est quelque chose qui va être vivant.
00:39:48 :Donc en gros,si jamais tu mets ta docstring à jour,là, grâce à read the doc,ce qu'on fait,on peut mettre automatiquement à jour la documentation,alors que dans ton Redmi,il ne faudra pas oublier d'aller,je ne sais pas,peut-être que tu devras aller modifier des choses, etc.
00:40:04 :C'est pour ça que c'est quand même toujours biende séparer les choses.Pour moi, le Redmi,il sert à décrire ce que fait ton projetet pas vraiment à comment on peut l'utiliser.
00:40:17 :Après, tu peux,mais il ne faut pas non pluspasser beaucoup de temps à écrire un Redmipour dire comment on faitsi tu as beaucoup d'interactions entre tes modules, etc.
00:40:28 :OK, donc là,où est-ce qu'on en est maintenant ?Donc, voyez ici,quand j'ai écrit intro,c'est parce que j'ai ditva chercher ce qui se passe dans la page intro.
00:40:43 :Donc là, il me l'affiche ici.Et ici,quand je lui ai dit dans mon index RSTd'aller chercher gestion Reza,si je vais dans gestion Reza,en fait ici,vous voyez que c'est automodule,donc ça, ça veut direqu'il va aller chercher automatiquementles docstrings qu'il va trouver dans le module.
00:41:01 :Et donc maintenant,si je vais dans Get Available Tickets,vous voyez qu'ici,il me met la documentation,Get Price Ticket.Voilà, donc en fait,j'ai accès.
00:41:17 :Et puis là, j'ai un petit boutonpour revenir en arrière, etc.Donc, c'est assez sympa.Vous voyez,il me dit directementles différentes fonctionsque j'ai dans mon module.
00:41:27 :Et puis, je peux aller cliquer dessuspour aller voir la description.Donc, il me formate tout comme je veuxet tout, c'est quand même bien foutu.
00:41:38 :Voilà, donc là,ce qu'on a fait,c'est juste en local.En local, pour l'instant,personne ne peut accéder.Donc, juste pour rappel,quand vous voulez créer une nouvelle page,vous allez dans Source,on va dire,je ne sais pas,howtoyuse.rst.
00:42:03 :Là, je vais prendre un peu le module ici.Howtoyuse.Just launchscript like this.Là, on peut mettre comme çaet puis on va diregestionresa.py avec l'URL.
00:42:32 :Et puis ici,si vous voulez mettre des subsections,il suffit de faireavec ici,je pense que c'est des étoiles.Là, vous mettezsubsection.Qu'est-ce qu'on peut mettreune fois qu'on a mis ça ?
00:42:51 :Params.Ok.N'oubliez pas à chaque foisde faire un make cleanpour qu'il efface tout ce qu'il y a dans le build.Ici, j'ai fait un make cleanet il n'y a plus rien.
00:43:18 :Et vous faites un make html.Voilà, on va vérifierdans le localque tout s'est bien passé.Donc là, vous voyez, par exemple,j'ai oublié ici dans index.
00:43:37 :Si je vais voir dans mon index,là, je n'ai pas la page que j'ai rajoutée.Donc, il faut que j'aille dans index.Et ici, je mets,comment je l'ai appelé ?
00:43:48 :How to use.Ok.Donc, rebuild hot.Je vais faire un make clean.Make html.Et je vais voirdedans.Any hot to use ?Hot to use.
00:44:07 :Yes.Merci, Seb.Oh.Voilà.Donc, pourquoi ça s'appelle introduction ?Ah oui, parce qu'en fait, ici,j'ai mis, c'est le titre.J'aurais dû le changer.
00:44:29 :On va mettre.Est-ce que si je mets comme ça ?How to use.Voilà.Voilà.Ok.How to use.Et donc là, j'ai mes param.
00:44:52 :Donc là, il me dit, voilà,comment on fait, etc.Voilà.Donc ça, c'est bon.Je ne vais pas continuer là-dessus.On va dire qu'on est en local.
00:45:01 :Et maintenant, on veut le déployer sur Internetpour que nos clients puissent accéderà la documentation et comprendre ce qu'on fait.Et puis, voilà.Maintenant, ça part sur Caprover.
00:45:13 :Ouais.D'ailleurs, j'ai pas mal utilisé Caproverdepuis que tu m'avais montré ça, Quentin.Et franchement, ça flingue vraiment.C'est vraiment nickel.Alors, je te remercie encore pour ça.
00:45:27 :Et en fait, j'avoue que depuis quelques temps,je ne sais pas si vous voyez sur Twitter, etc.,mais en ce moment, il y a beaucoup de messagessur les PAAS.
00:45:36 :Je crois que c'est ça.C'est les plateformes A de service.Donc, c'est toutes les plateformes de ce type-là.Du coup, Caprover.Je crois que j'ai vu Tipeee aussi.
00:45:46 :J'en ai vu d'autres.Et c'est vraiment des plateformesqui facilitent la vie des DevOps,en fait, comme ce qu'on avait vu la dernière foisavec Quentin.
00:45:59 :Donc, maintenant...Et donc là, désolé, on ne va pas utiliser Caprover.On va aller sur ReadTheDoc.Donc là, c'est bon, on a terminé.Ça, je n'en ai plus besoin.
00:46:11 :Et puis, c'est terminé.Donc, vous allez maintenant sur ReadTheDoc.org.Donc, moi, je suis déjà connecté,mais il suffit juste...En fait, vous pouvez créer un compteet il suffit de vous loguer.
00:46:24 :Et puis voilà, c'est gratuit.Donc après, vous faites Importer un projet.Et donc là, vous allez chercherparmi tous vos projets GitHub,celui pour lequel il y a votre documentation.
00:46:35 :Donc nous, on est...Ah oui, par contre, je n'ai pas envoyétout ce qu'il faut sur GitHub.Donc, on va dire Update Docs.Donc ça, je fais un Git Push, en fait, avec ça.
00:46:55 :Ah, qu'est-ce qu'il me veut ?C'est bizarre parce que quand j'avais misma clé sur GitHub, j'avais dit que j'autorisais...Alors, est-ce qu'il est...Il est où ?
00:47:37 :Le ticket master, c'est celui-là.Settings.Hum...Bon, tant pis, je ne vais pas le faire avec celui-là,je vais le faire avec celui qui existait déjà,celui que j'ai fait juste avant,parce que là, je n'ai pas envie de perdre du tempsavec GitHub.
00:48:25 :Donc, en gros, on ne va pas le faireavec notre documentation là,mais je vais vous montrer celle que j'avais fait juste avant.Donc, en fait, il suffit d'aller sur votre repo,et donc là, vous allez avoir un plus.
00:48:36 :Donc là, par exemple, si je faisais plus là-dessus,j'aurais ce genre de truc-là.Mais une fois que vous avez fait plus,il va aller lister tous les reposqu'il y a dans votre compte GitHub.
00:48:47 :Vous choisissez celui dans lequel il y a votre documentation,et après, vous avez un truc de ce type-là.Donc là, il suffit après d'aller dans Admin,mais ça, il va vous le demanderquand vous allez créer votre truc,et vous définissez ici, il y a quelques...
00:49:00 :Il faut surtout aller...Donc ça, Paramètres, ça se mettra par défaut automatiquement.Vous n'avez besoin de rien faire.Ce qu'il faudra aller faire,c'est aller dans Paramètres avancés,et il vous dit...
00:49:12 :Il vous dit...Est-ce que c'est...Ouais, il vous faut ici un fichierqui s'appelle readthedocs.yamlqu'il faut mettre à la racine de votre...Je vais ouvrir ici notre fenêtre.
00:49:27 :Fichier nouvelle fenêtre.Je vais ouvrir celui que j'ai fait tout à l'heure.Comme ça, on ne va pas se perdre.En fait, il faut mettre ce fichier-là.
00:49:46 :Ce fichier-là,c'est un fichier un peu de déploiement classiqueDocker Compose.Un petit peu.Ce n'est pas tout à fait ça, mais...Et en gros, ici, il y a quelques trucs à définir.
00:49:58 :Donc, il faut définir votre version de Python.Ça, c'est important.N'oubliez pas, parce qu'en fait, par défaut,il n'y a pas le source.Quand vous copiez-collez le fichier YAMLdepuis Readthedocs,il ne vous met pas le source.
00:50:13 :Donc, n'oubliez pas de le mettre.Et ici, n'oubliez pas vos requirements.txt,sinon ça ne fonctionnera pas.Donc, une fois que vous avez fait ça,vous définissez tout ça,vous faites Enregistrer.
00:50:26 :Et donc là, vous allez dans Aperçu,et il suffit juste de faire Compiler une version.Donc là, il va me compiler.Normalement, ça va fonctionner,parce que c'était le projet que j'avais fait tout à l'heure.
00:50:37 :Et une fois que c'est compilé,votre doc sera faite.Vous pouvez continuer à mettre à jour en continuvotre documentation,et il mettra à jour,et à chaque fois, il va compiler.
00:50:49 :Vous pouvez même définir des...Enfin, ça, ça fait longtemps que je ne l'ai pas fait,mais une action automatique.À chaque fois que vous faites un pushde votre code sur GitHub,vous pouvez mettre un webbookqui vous permet, en fait,que lui génère automatiquementsans que vous ayez à le faire à chaque fois.
00:51:10 :Ici, là, il y a un webbook.Si vous ajoutez un webbook,vous allez mettre icitous les événements push de votre compte GitHub.Voilà, donc ça, c'est un truc qui est intéressant.
00:51:25 :Il met à jour automatiquement la doc en fonction.Et donc là, vous allez sur Afficher les docs,et puis il va vous emmener directement vers la page.
00:51:33 :Donc ça, c'est celle que je vous ai montrée tout à l'heure,parce que là, je n'ai pas envie de m'emmerder avec GitHub.Je ne sais pas pourquoi il me dit qu'il n'y a pas les droits,alors que j'ai pu faire un pull facilement.
00:51:43 :Mais voilà.Je ne sais pas si vous avez des questions là-dessus.Est-ce que ça vous a intéressé ?Parce qu'en gros, franchement, pensez-y.Ça fait tout de suite plus professionnelquand vous avez fait un paquetet puis que vous envoyez cette documentation-là.
00:52:11 :Et puis même si vous travaillez en équipe et tout,c'est important d'avoir un code, un projet bien documenté.Donc vous voyez là, en moins d'une heure,on a mis ça en place, donc ce n'est pas sorcier.
00:52:25 :En plus, il suffit de suivre exactement ce qui se passe ici.Il y a quelques subtilités comme on a fait.Mais voilà, si un jour vous faites ça,vous récupérez la rediffusion de çaet puis vous voyez les petites subtilitésauxquelles il ne faut pas oublier.
00:52:41 :Donc là, par exemple, c'était dans le conf.py.Il ne faut pas oublier dans l'extension de rajouter ça.Voilà, bien mettre ça, tout ça.Mais si vous regardez la rediff...
00:52:58 :Voilà, c'est quoi ton idée de paquet,si ce n'est pas top secret, Gabriel ?Non, ce n'est pas forcément utile.Ce n'est pas forcément la mode.
00:53:11 :Mais en 2005, quand j'avais 15 ans,j'utilisais beaucoup HPTB.Le quoi ?HPTB, c'est le forum.Et j'ai envie de faire un espèce de Django bébéou un petit bébé.
00:53:22 :Je n'ai pas vu que c'est disquet,donc j'ai bien envie de faire ça.Très intéressant.Donc voilà.C'est quoi ?C'est une espèce de plateforme de chat autour de Django ?
00:53:36 :Un forum, vraiment forum.J'ai envie de faire un ancien, tu vois.D'accord, ouais.Vu que j'ai fait un système de cliquet,une petite réponse avec un formulaire comme un forum,je me dis que si je fais à grande échelle,avec des permissions,je peux créer des catégories, machin,un package forum.
00:53:57 :Bah ouais, mais du coup, en fait,ce serait un package.Parce que pour moi, un package,c'est par exemple, tu vois, je ne sais pas,imagine un data scientist,il développe des fonctions pour post-traiter des signauxou des choses comme ça,et il met à dispo des fonctionsque d'autres data scientists pourront utiliser
00:54:16 :depuis leur package.Toi, c'est vraiment un truc que tu veux déployerou tu veux que les gens puissent l'utiliser ?Ouais, alors, j'aimerais bien que les gens...
00:54:27 :C'est vrai, ça, c'est une bonne question.Je me suis posé soit vraiment en installantavec des fonctions toutes prêtes.Moi, j'aurais pensé vraiment à faire un package privéoù les gens le prendraientet pourraient directement créer des catégories.
00:54:40 :Ça serait leur forum, en fait.Ah oui, mais du coup,c'est pas un truc centraliséoù il y a un seul forum et les gens...
00:54:51 :Parce que si tu veux une communauté,en fait, il faut que tout le monde puisse accéderau même forum, non ?Moi, c'est vraiment que les gens puissent le réutiliserderrière, tu vois, pour des projets à eux.
00:55:03 :Ah, d'accord, ouais.Je sais pas si c'est une bonne idée,mais j'ai envie de le faire.En tous les cas, c'est un bon exercice.Ouais, c'est clair.
00:55:13 :Bah, ouais, c'est cool.Et puis, voilà.Après, là, vous pouvez changer les thèmes et tout çade ReadTheDoc,mais moi, j'aime bien celui-là.Il est pas mal, je trouve.
00:55:26 :Et puis, je crois qu'ici, vous avez mêmele code source du...On peut tout...Là, si je vais dans...Ici, vous avez le code sourcearrêté du truc.
00:55:45 :Voilà.Qu'est-ce qu'il y a d'autre ?Ouais, bah, voilà, c'est un peu...C'est un peu tout.La dernière fois, ouais,je vais juste vous remontrer.
00:56:02 :La dernière fois, on a un petit peu galéré,enfin, surtout moi,sur le Superbase.Je sais plus si j'ai supprimé le projet ou pas.Ouais, c'était ça, je crois.
00:56:36 :En fait, pour ceux qui étaient là la dernière fois,il suffit normalement d'aller dans le Databaseou alors dans ce table editor.Ou alors, c'était là-dedans.
00:57:04 :Ouais, ici, Enable Row Level Security.Vous pouvez l'enleverpour que votre script puisse discuteravec votre Database.Et donc, c'est à cet endroit-làque vous pouvez le faire.
00:57:28 :Je vous avais envoyé, je crois, un screenshotde là où vous pouvez faire ça.Je me souviens que j'avais...Je ne sais plus exactement où est-ce que je l'avais mis.
00:57:44 :Ouais, ici, OneActivePolicy.Donc là, vous pouvez mettre...Soit vous mettez une policy.Donc, en fait, quand vous mettez une policy,c'est-à-dire que vous pouvez autoriser uniquementles gens qui sont connectés à afficher les datasou sinon vous désactivez carrément.
00:58:01 :Vous faites Disable RLS.Et donc là, il n'y aura pas de souci.Votre code pourra discuter facilement avec Superbase.Voilà, je n'ai plus grand-chose à dire.
00:58:24 :Si jamais vous avez des questions, allez-y.Je vais changer de technique.Juste pour revenir à...On est contents pour toi, Gabriel.Merci, docteur.Pour revenir à la différence entre un package...
00:58:54 :Pour toi, un package, c'est un ensemble de fonctions ?Ouais.Ouais, ok.Je vois ce que tu veux dire.Je ne comprends pas ce que tu as voulu me dire.
00:59:03 :Si je fais un package ou si je fais un CMS, limite ?Pour moi, c'est plus ça.C'est pour ça que je t'ai posé la question.
00:59:13 :Parce que pour moi, un package, c'est un truc...C'est vraiment des fonctions utilitairesque tu mets à dispo et que les gens utilisent.C'est vraiment...
00:59:23 :D'accord.Parce que tu vois, quand tu parles de package,on dirait que les gens vont faire un pool,ils vont tirer ton projet et ils vont l'utiliser en local.
00:59:32 :Mais toi, ce que tu veux, un forum, c'est un truc interactifoù les gens s'inscrivent, etc.Ils ne discutent pas trop, c'est ça ?Moi, c'est plus vraiment l'idée où...
00:59:43 :Je leur mets vraiment tout le code de projet à dispositionet après, en gros, ils n'ont plus qu'à le clonersur un serveur, par exemple.
00:59:52 :Et en fait, c'est leur projet Django tout prèsavec un forum.Un forum qui sera basé sur Django, en gros.Ils n'ont plus qu'à créer leur catégorie, tout ça,et c'est parfait.
01:00:03 :Après, il est à eux, entre guillemets.C'est plus pour eux de faire leur communauté,chacun de leur côté.Ah oui, d'accord.Dans ce cas-là, oui, mais...
01:00:12 :Après, tu sais, package, c'est un mot génériquepour dire un truc qui rassemble plusieurs moduleset qui s'installe.Donc, ça pourrait très bien être un package.
01:00:22 :Je pense que c'est applicable à ce que tu veux faire.Ouais, c'est un package.Je me permets de rebondir, du coup,une librairie à côté de ça, ça correspond un peuà ce terme de package, au final.
01:00:33 :Ouais, en gros, tu vois, par exemple,quand tu parles de Panda, Numpy, ou même Matplotlibou des choses comme ça, tout ça, ce sont des librairieset c'est un peu...
01:00:44 :Dire package, etc., c'est un peu aussi...Enfin, c'est des mots génériques, quoi.Après, il y a peut-être des subtilités.Peut-être qu'il y en a qui...
01:00:53 :Il y en a que ça.Je pense que la finalité de Gabriel,bientôt, ce sera un pip install Django BB.Ouais, voilà.C'est ça, le...
01:01:03 :En gros, c'est vrai que quand on parlede librairie ou de package, moi, c'est ça que je vois.C'est un pip install où, à la rigueur,si ce n'est pas un pip install, tu peux, tu sais,créer un wheel.
01:01:14 :C'est un espèce de...C'est un fichier...Enfin, c'est comme un fichierque tu peux avoir en local chez toiau lieu de faire...Parce que quand tu fais pip install Panda,il va chercher en ligne, en fait,Panda qui, tu sais, des fois, il télécharge.
01:01:31 :Mais parfois, tu peux faire un pip install en local.Pour ça, il faut avoir le wheel.C'est W-H-E-2L.En local, chez toi, pour faire le pip install,le chemin du wheel, quoi.
01:01:45 :OK.Mais en gros, ouais, c'est ça.Ce serait top de pouvoir faire un modulequi soit disponible après en pip install, quoi.Ça va réveiller les nostalgiques, en tout cas.
01:02:04 :Ouais, j'avoue, c'est nostalgique.J'ai eu l'idée d'un coup,j'aimerais trop faire ça dans un petit temps.Mais...C'est vrai qu'il y a une grosse concurrenceparce que maintenant, tout se fait via Discord,en général, pour ce genre de choses.
01:02:19 :Via Discord, t'as dit, c'est ça ?Ouais, Discord, ouais.Bah ouais, c'est vrai.C'est vrai, mais ça peut être un projet intéressant.Je suis en train d'essayer de réfléchir.
01:02:30 :Qu'est-ce qui pourrait pousser quelqu'unà utiliser ça plutôt qu'un Discord ?C'est que...Bah...Il n'y en a pas.La nostalgie, c'est tout.J'arrive pas à me motiver.
01:02:44 :Non, il n'y en a pas, je sais.Je fais ça juste pour le plaisir de faire un projet.Non, mais après, le fait de...Si, tu t'inscris sur une page,le fait de...
01:02:54 :Si, tu t'inscris sur une plateforme,c'est pas toujours...Tu dois installer quelque chose.Si, par exemple, quelqu'un t'envoie un...Tu peux pas discuter avec quelqu'un sur Discordsi la personne n'a pas un compte Discord.
01:03:14 :Alors que là, tu pourrais imaginer que dans ton forum,que tu peux créer des espèces de sessions webaccessibles uniquement via un URLet que tu peux y accéder sans créer de compte.
01:03:30 :Après, peut-être qu'il y aurait des limitationsà l'utilisateur qui se connecte à ce genre d'URL,mais tu vois, ça, par exemple, ça peut être intéressant.
01:03:38 :C'est vrai qu'il était à la mode à l'époque.PHP version 2, à l'époque, c'était un truc de maladeavec tous les formatifs, machin.Ça existe encore, ça ?
01:03:49 :Oui, il y a la version 3.Moi, j'ai utilisé jusqu'en 2010.PHPB...C'est quoi, ça ?PHPBB.Ah, PHPBB.C'est vieux comme le monde, ça.
01:04:03 :J'ai pas connu ça.Moi, du haut de ma petite quarantaine d'années.J'ai 37 ans, j'ai utilisé ça quand j'avais 15 ans.Là, c'est la version 3.
01:04:11 :Ça fait depuis 2008, je crois que c'est la version 3.Cette interface-là, en fait,tous les forums que t'as pu rencontrer avec cette interface-là,c'est que c'était du PHPBB.
01:04:21 :Ah, oui.C'était la folie, à l'époque.T'avais même une plateforme qui s'appelait Forum Actifoù tu créais tes forums PHPBB si facilementet t'avais de la pub dessus.
01:04:31 :Ils ont dû se faire un fréquence, par exemple.Après, tu dis...Tu m'arrêtes.C'était un truc de fou quand on en parle entre nous.Oui, OK, c'est un truc de fou à notre échelleparce qu'on est un peu de geekos, tu vois.
01:04:45 :Mais je ne suis pas sûr que...Pour d'autres personnes, c'était un truc de fou.À l'époque, t'avais l'abonnement à Internet de 90 heures.Oui.C'était génial.
01:04:57 :T'avais ton forum sur les Antilles,les trucs dans le genre, c'était génial.Mais c'est plus pour faire un projet...Oui, mais c'est intéressant.On attend tous le PIP Insta.
01:05:09 :Oui, j'ai des choses à faire entre deux.Et du coup, pour répondre à ta question,Salvatore, c'est un peu risquéde faire le Disable RLS.
01:05:19 :Il vaut mieux créer une policieet de gérer comme ça.Oui, Sylla,t'as une question ?Oui.Oui, bonsoir.Bonsoir.En fait,moi, bon,c'est coté purementDjango, par exemple.
01:05:43 :Si, par exemple, je crée...Parce que là, j'ai l'impression de refairepratiquement beaucoup de cours sur Docsync.Quand je crée, par exemple,mon template de base,c'est-à-dire mondashboard, c'est-à-direlà où je dois configurermon truc, mon design.
01:06:05 :Mais il faut,vous savez, en gros,si tu veux télécharger tes fichiershtml, css et images et autres,tu dois mettre là oùc'est critique, avecles cochers.
01:06:19 :Mais à chaque fois que je constate,dès que je le mets, il me soulignele doctype html en rouge.Je ne sais pas.Je ne sais pas si c'est...
01:06:29 :Je l'ai remarqué dansPyCharm et mêmeVersus de Coastlands.C'est quand tu fais...Attends, je vais aller regarder sur...Un vieux truc, un projetDjango que j'ai.
01:06:47 :Attends, je vais voir.Attends.Alors, c'est quand tu es,j'imagine...Mon template de base, par exemple.Le base, voilà.C'est ça, c'est le blog statique.
01:07:15 :Voilà exactement.Ok.Je le mets aprèsle doctype, c'est ça ?Oui, mais...Ça ne se fait pas...Quand je le mets avant,il me souligne le doctype.
01:07:33 :On va voir s'il fait pareil.Non, à priori.Et si tu le mets après, il n'y a pas de souci ?Je n'ai pas essayé ça.
01:07:43 :Je ne crois pas que ce soit ça le problème.Est-ce que...Parce qu'en fait, le statique...Si je ne dis pas de bêtises...Est-ce que tu as bien défini ici...
01:07:55 :Dans le...Non, tes trucs ici,tes statiquesURL et tes statiques route, etc.Est-ce que ça, tu as bien défini ?Oui, le statique...Oui.
01:08:15 :J'ai le statique route...Je pense, oui.Ok.Regarde ce que Christian répond.Pas cher, mais il veut que le doctype soit sur la première ligne.
01:08:25 :Peut-être que c'est à cause de ça.D'accord, d'accord.Pour moi, si je le mettais après le truc, ça n'aurait pas marché.Mais je vais le voir. Je vais voir ça.
01:08:33 :Après, tu vois, il y a des templatespour lesquels je n'ai plus de doctype.Parce qu'en fait, ce sont des templates hérités.Donc, tu vois, si je vais danstemplate...
01:08:45 :Je ne sais pas...Je vais mettre celui-là.Tu vois, là, c'est un template hérité.Du coup, j'ai un lot statique. Je n'ai plus de doctype.
01:08:53 :Parce qu'en fait, je fais un extensedu base.Du base, ok.Donc là, tu vois, je n'ai même pas de doctype.Et puis, je n'ai pas de soulignéen rouge.
01:09:05 :D'accord.C'est juste soulignéparce que ça fait une erreur ?En fait, c'est rouge. Ça marche, mais seulement, il y a le rouge.Ah, d'accord.
01:09:15 :Si c'est juste souligné, ce n'est pas grave.Ça marche. Je peux exécuter.Je lance, tout. Mais c'est rouge toujours.Ouais. Et est-ce que tu as fait dans
01:09:23 :PyCharm... Je sais qu'il y a un truc chiant à faire.Il faut que tu fasses clic droit pour direça, c'est mon route directory.Ouais, j'ai fait ça.
01:09:31 :Tu l'as fait, ça ?Oui.Bon, écoute...Et du coup, ceux quiutilisentVS Code, vous avez...T'as essayé avec VS Code ou pas ?
01:09:45 :Ouais, je pense. Même VS Code, il medit la même souche.Euh...Je crois, ouais.Même VS Code, ouais.Ok. Et il te dit quoi,
01:09:59 :exactement ? C'est quoi le message derrière ?Quand tu viens, il te ditUne expected token.Quand tu soulignes, par exemple.Quand c'est souligné, il dit Une expected token.
01:10:09 :Ouais, ouais. Je peux partager mon écran ?Je sais pas.Ouais, vas-y, tu peux.Attends, j'enlève le lien.Vas-y, essaye.Et puis, les autresqui seront là aussi,n'hésitez pasà dire ce que vous en pensez.
01:10:27 :Hum...Ouais.Je sais pas. Je n'arrive pasà partager.T'as pas le petit truc en bas ?Ça fait un carré.Oui, je l'ai mis partagé.
01:10:45 :Mais il me dit... Le bouton partagen'est pas activé, je sais pas.Peut-être que t'es pas autorisé. Attends, je vais voirsi je clique sur ton...
01:10:53 :Non, je crois pas que je puisse te laisser...Ouais, non, je peux pas.Sinon...Ah si, c'est bon. On le voit, là.Attends, c'est quiqui a essayé ?
01:11:07 :Ça a marché, je sais pasce que t'as fait, mais on a vud'un coup. Ah, c'est toi qui as fait un test,Christian. Ouais, et du coup,
01:11:15 :ça a marché avec toi, Christian ?Ouais.Hum...T'as pas un truc en haut,tu sais, sur ton navigateur,là où tu tapes les URL,y a pas un truc adblockou quelque chose comme ça qui t'empêche de partager l'écran ?
01:11:31 :Euh...Non.Tu vois, là, ils sont tous en train de te nargueren faisant un partage.Euh...Je sais pas pourquoi, là, je sais pas.
01:11:45 :Ok. Ouais, je sais pas.Moi, j'ai pas de demande d'autorisation.Ok, c'est pas grave, je vais...Non, c'est pas grave.Mais, ouais, bon, après, si c'est pas...
01:11:59 :Ok, c'est bon maintenant, c'est bon, c'est bon.Ah, vas-y.Ah, ça marche.C'est bon ?Ouais, tu vois, c'est le truc, là.Ouais, c'est mon...
01:12:15 :Voilà, c'est lui.C'est bon, mais...Il se limite toujours, ça.Attends, mais il manque pas... Tu peux zoomer ?Euh...Ok.Il manque pas un point d'exclamation, là,devant le doctype ?
01:12:31 :Attends.Le point d'exclamation, ça, là, lui ?Ah oui, je le voyais pas, ok.Il est toujours là. Et essaye de le mettre en première ligne pour voir.
01:12:39 :Il y a pas de raison, normalement.J'ai toujours le doctype qui est en haut.Euh...Aïe.Il y a pas d'erreur, le doctype ?Non, non, non.
01:13:09 :Je pense, ok, donc ça marche en haut.Vas-y, attends, sauvegarde pour voir,parce que des fois, il va toucher après.Je pense que c'est bon.
01:13:17 :Ouais, c'est juste une convention, du coup.Je pense que ça change pas du tout.Ok.Je pense que c'est bon.Ça change pas du tout le fonctionnement ou quoi.
01:13:27 :C'est vraiment juste une convention.En fait, je pense même que si tu le mettaisaprès...Vas-y, refais comme c'était avant.Ouais, donc là...Et si tu vas dans...
01:13:45 :Tu sais, à droite, là, dans les messages,en haut à droite, là, où t'as le petit...Le petit panneau triangle jaunesur la droite.Ok.
01:13:55 :Là.Et en fait, si tu faisI like all problems,tu vas dessus et tu dis pas all problems,tu dis juste syntaxe.Ok, il continue à te l'afficher.
01:14:09 :Pour lui, c'est un problème de syntaxe.Mais c'est pas grave.Franchement...Oui, ça marche quand même.Je vais le mettre maintenant.Ouais, laisse-le en première ligne.
01:14:21 :Ouais, ouais, ouais.C'est pour ça.Ok.Ok.Bah oui, oui, regarde.Regarde ce qu'elle dit Christian.Il y a...Le lot statique,quand tu fais afficher le code pagede la source, tu vois pas.
01:14:41 :Le lot statique, c'est vraiment juste un truc transparent.C'est le fonctionnement.Bon.Bah voilà, d'autres questions.Est-ce que... La prochaine fois,je vais essayer, je sais pas ce que vous en pensez, la dernière foisje l'avais parlé, qu'on regardeun ORL, genreSQL Alchemyou Pony.
01:15:03 :C'est des trucs qui permettent de faireune interf...de transformer des modèlesdes instances de classeen objetspour une database.C'est comme leORM de Django, c'est la même chose ?
01:15:19 :Bah en fait, Django utilise un ORMpour faire le lien entreles modèles, les classes, etc. et la database.Mais là, du coup, on peut peut-être se le faireà la main ouon remplit directement une base de donnéesavec une classe construite sans utiliser Django.
01:15:33 :Ah, d'accord, d'accord.Si ça vous plaît,on essaiera de faire ça la prochaine fois.Ouais, ouais, super.Euh, ok.Bah, si...DRF... Ouais,on en a déjà fait.
01:15:57 :Simon, tu peux aller voirles rediffusions, mais si ça t'intéresse,on peut...faire une session. C'est quoi tonniveau surDRF ? Parce que je veux pas
01:16:09 :faire un truc...Disons que c'est un peu dans la continuitéde Django, tu vois, pour ceux quiveulent voir commentgérer lesAPIs, tout ça, faire desAPIs sécurisées.
01:16:23 :T'en as déjà fait ou pas ? Moi, perso,non. Ok.Bah oui, je peux remontrer.J'ai déjà... En fait, la dernière fois,ce qu'on a fait, les plusieurssessions qu'on a faites du DRF, c'est en gros,je partais de zéro, on faisait un projet Django,et depuis le projet Django, on faisait
01:16:39 :l'API qui allait avec, aveccréation...Enfin, un peu tout ce qui est CRUD.Enfin, CRUD...Bah, dans ce cas-là,je regarderai les sessions, si elles ontdéjà été faites. Ouais, mais après, si tu veux
01:16:53 :un truc en live, c'est toujours intéressant. Et puis,comme il y a des gens qui sont nouveaux depuis qu'on a faitça, on peut... On peut refaire.
01:16:59 :Bah ouais,pourquoi pas. Je pense que c'est intéressant, ouais.Avec des cas pratiques,au style, voilà, peut-êtrerécupérer des infos aussi,des adresses, adresse.google.frou ce genre de choses.
01:17:13 :Je sais pas, tu as des petits trucsbasiques ? Ouais,ça marche. Bah, je sais pas. Une fois,ce qu'on avait fait, tu sais, avec Streamlit,en gros, j'avais faitun projet Django avec une APIDRF, et du coup,j'avais fait une app Streamlit à côtéet qui interrogeait
01:17:31 :justement l'API pour pouvoir mettre desdata dans l'app Streamlitgrâce à l'API DRF,en fait. D'accord, d'accord.Mais si ça vous intéresseet que vous voulez bien le refaire,je peux trouver d'autres exemples, en fait,par rapport à ce qu'on a déjà fait, comme ça, ça changera.
01:17:47 :Mais on reverra les bases, du coup, comme ça,de l'API. Ouais.Et je t'avais traité aussi,justement, la créationd'APIssécurisées,aussi, ou c'était juste...
01:18:01 :En fait, c'était une APIDRF,donc l'aspect sécurité,c'est plutôtDjangoqui le gère, maisen fait, avec les APIs, tu peux gérerles logins required,etc. Ouais, ouais, ouais.
01:18:19 :Donc on peut avoir ça, ouais.D'accord, ok, ça marche.Parce que ton emploi, par sécurisé, c'estplutôt ça.Disons que si quelqu'un veut venir consommer ton API,il faut qu'il se log, tu vois, ou qu'il a untoken d'identification, un touchpoint,un truc comme ça, tu vois. Ouais,
Aucune occurrence trouvée pour « ».