Session du 04 février 2025 à 21h00
TOSA & Certifications
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
Session de mentorat TOSA
Session de mentorat TOSA
00:00:00 :Donc, pas de soucis. Bon, alors ce soir, on va avoir un petit peu de Python, mais je vousai récupéré. Alors, je n'ai pas pris un sujet, on va dire, bien défini, bien délimité ce soir,
00:00:18 :puis tombé sur deux, trois petites astuces au niveau du Python, notamment du Python pur. On ne voitpas forcément souvent. Bon, alors, je ne suis pas sûr à 100 % que vous verrez ça en TOSA. Je me suis
00:00:33 :dit que bon, on reste dans le thème de la librairie standard et ça pourrait être intéressant de vousmontrer ça. Donc, voilà. Et puis, on t'amènera par une petite astuce assez amusante qui, je pense,
00:00:48 :devrait vous plaire. Donc, on est parti. D'abord, je vais vous montrer les petites astuces sur leFString. Alors, la première que je vais vous montrer, franchement, je ne la connaissais pas du
00:01:03 :tout. Elle est plutôt sympa. Donc, je vais prendre l'exemple que j'ai trouvé bêtement. On va créerdeux variables. Une première, par exemple, qui va s'appeler nombre. Est-ce que tu peux zoomer,
00:01:15 :Stéphane, s'il te plaît? Oui, bien sûr. Genre, 3, 4. C'est bon comme ça? Encore, vas-y. Pas à plat,c'est bon? Ouais, c'est vrai que moi, ça me paraît gros, mais je suis sur un grand écran.
00:01:31 :Donc, c'est tout. Merci. Alors, on va prendre un nombre. On va dire qu'il a une valeur de 6,par exemple. Et puis, un fruit. Et on va dire que, par exemple, pour rester dans ce qu'on met,
00:01:45 :allez, une banane. Donc, admettons, on veut inclure ça dans une FString. Donc, par exemple,un print, notre FString, comme ça. Voilà. On va le virer. Est-ce que vous le connaissez,
00:02:12 :ça? Puisque ça apparaît, on va en parler vite fait. Est-ce que vous avez déjà vu cette partie-là,là, dans une FString? Pour avoir une vision ternaire? Voilà. En fait, ce que ça va faire,
00:02:26 :c'est que c'est bien pour nous qui sommes des bons Français, qui aimons mettre des S ou pasen mettre en fonction du nombre. Là, vous pouvez gérer le cas du circulier ou du pluriel. C'est à
00:02:37 :dire que, par exemple, si le nombre est supérieur à 1, il rajoute un S derrière le mot que vousallez mettre ici. Sinon, il n'en met pas. Donc, ça permet d'accorder dans des textes, par exemple,
00:02:49 :quand on a des variations. Ça, c'est assez accessoire, mais voilà. Ça peut être sympade le connaître. Donc, on pourrait marquer. Je ne vais pas le laisser comme ça, parce que ça ne va
00:03:09 :pas faire ce que je voulais vous montrer. Alors, mettons, on va afficher la valeur de nombre.On va dire nombre égale. Hop! On va refaire notre FString. OK. Et 3, hop, égale. Oui. OK.
00:03:41 :Donc, là, si je print, on va bien avoir nos valeurs qui s'affichent dans le terminal. Nombreégale 6, fruit égale banane. OK. Écrire. Voilà. Alors là, c'est bien. On avait nos valeurs à
00:04:10 :définir et ainsi de suite. Les valeurs, on a dû les définir avant. Mais admettons que pourune raison quelconque, je veux créer mes FString avant et que les valeurs, je sais qu'elles neseront implémentées que plus tard. D'accord? Donc, qu'est-ce que je vais faire pour obtenir
00:04:37 :le même résultat? La méthode format? Non. Hop là! Je vais déplacer.Comme ça. Voilà. Donc, ça va m'éviter d'avoir à écrire fruit égale et nombre égale. Ce que
00:05:13 :je vais vous montrer là. OK. Vous voyez, je ne remets plus mon nombre égale et mon fruit égale.OK. Et si je fais mon print, ça m'a bien affiché mes valeurs. Donc, ça m'a bien affiché le nombre
00:05:32 :variable et la valeur correspondante. Quelle raison? C'est quoi ce tour de magie? J'ai riencompris. C'est un formatage typique. C'est un formatage spécial de FString. En fait,
00:05:47 :on va revenir un petit peu en arrière puisque du coup, c'est un petit peu vite pour l'histoire.Là, je vais afficher le nom de mes variables et les valeurs qu'elles contiennent. D'accord?
00:05:58 :Excuse-moi, tu n'aurais pas pu mettre un nom différent, l'intitulé et la variable,parce que tu es un tour de passe-passe là, non? En fait, c'est un peu le but. En fait,
00:06:13 :je veux afficher le nom de ma variable et la valeur qu'elle contient. Donc, on va faireautrement pour que ça vous paraisse un petit peu plus logique. On va faire comme ça.
00:06:25 :Ça va au moins vous perturber, je pense. Voilà.Ok, je vais mettre à jour ça. Donc, si je veux afficher le prénom et le nom d'un utilisateur
00:07:01 :ou autre dans mon script. On est bien d'accord qu'intuitivement, si je vous avais demandé deme faire l'exercice, c'est ce que vous m'auriez donné. D'accord? Vous avez créé une variable
00:07:16 :prénom qui contient le prénom, une variable nom qui va contenir le nom. Et après, pour me lesafficher, pour me dire le prénom, c'est ça et le nom, c'est ça. Vous allez me faire deux FString
00:07:26 :ou une FString combinée, peu importe, pour m'afficher ces valeurs. On est bien d'accordjusque là? Non, moi j'aurais mis un accent à prénom, par exemple. Pas dans la variable,
00:07:39 :mais dans l'attitulé. Oui, éventuellement. Pour voir ce que ça donne. Voilà. Mais là,donc l'idée, c'est d'afficher le nom de la variable et sa valeur. C'est là que réside
00:07:54 :cette astuce des FString en fait. Et donc, comme je vous l'ai montré, ça c'est quelque chose quevous pouvez faire avec les FString en faisant simplement ça. Vous mettez la variable, un signe
00:08:11 :égal avec des espaces de chaque côté. Voilà. Et ça vous produit exactement le même résultat.On avait mis autre chose que le signe égal, ça marchait aussi ou pas? Non, alors c'est le signe
00:08:31 :égal qui fait qu'on a ce comportement là en fait. D'accord. Ok. Donc voilà, petite astuce sur lesFString qui n'est pas forcément très très connue. Est-ce que tu as appris ce truc là? Je passe
00:08:50 :beaucoup de temps à lire des articles à droite à gauche et je suis tombé sur un article. J'ai vul'astuce, j'ai dit oh tiens ça c'est sympa et j'ai mis ça de côté. Et là tu dis que ça c'est
00:09:05 :intéressant si c'est pas défini avant? Voilà, ça peut, ça va servir surtout pour afficher lavariable, le nom de la variable et la valeur, comme on avait fait. Ah oui, voilà. Voilà. Donc
00:09:18 :ça peut servir que à ça, ça peut pas servir à préformater une chaîne. Non, pas nécessairement.Avant que la variable soit définie en fait. Non. Ok. Autre chose que je vais vous montrer avec les
00:09:34 :FString, c'est pour ça que moi j'aime bien travailler avec les FString sur Python, c'estqu'il y a vraiment beaucoup de possibilités. C'est quand même assez puissant. Par exemple,
00:09:48 :alors je pense que vous l'avez déjà vu avec la fonction format, d'accord? Et je pense que çaserait pas à nous. Par exemple, pour afficher dans format, vous avez déjà vu qu'il y a eu la
00:10:11 :possibilité d'afficher des décimales et de définir le nombre de décimales. Avec un FString,alors je vais prendre, je vais donner une valeur, une valeur quelconque. Un chiffre qui contient
00:10:27 :de la décimale. Voilà. Un bon vieux pi. Alors si je veux l'imprimer dans une FString avec,mettons, trois décimales. Allez, on va partir là-dessus. Hop là. Ok. On va l'écrire comme ça.
00:10:58 :On va prendre le nombre, rajouter deux points. LP.3F. Donc ça, le point, ça veut dire qu'aprèsla virgule, je veux trois chiffres. Si je lance, vous voyez, on nous donne bien le nombre pi,
00:11:16 :arrondi, à trois décimales. D'accord? Si maintenant, je voulais par exemple que monnombre soit sur cinq chiffres, comme vous savez, on fait par exemple avec les, j'ai perdu la valeuren string, les ZFill. On rajoute des zéros. Donc, hop, sur cinq chiffres. Et bien là, le formatage,
00:11:51 :c'est, alors que je retrouve. Hop là. On va l'indiquer comme ça. Alors non, ça n'a pas marché.J'ai pas dû le mettre correctement. Ah oui. Ok. Ça marche que sur les nombres entiers. MyBad.
00:12:18 :Voilà. On rajoute bien les zéros, comme avec le ZFill, avec les strings. Vous connaissez lafonction ZFill sur le STR? Oui. Là, vous faites la même chose directement dans le FString en fait.
00:12:41 :Et si, par exemple, vous voulez marquer une puissance, il faudra que je rajoute. Voilà.En notation scientifique. Voilà. Je vais tout simplement mettre un E. Et là, j'ai une notation
00:13:15 :scientifique de mon chiffre. Donc, tout ça pour vous dire que déjà, on est quand même sur quelquechose d'intéressant. Puisqu'en fait, vous avez déjà beaucoup de formatages que vous pouvez
00:13:26 :reprendre dans les FString. Alors, globalement, la manière de noter ces différents formatagesdans les FString, c'est proche de ce qu'on va retrouver dans le format qu'on avait à la baseavec le format STR. Ce qui est assez logique d'ailleurs. Mais FString, ça n'arrête pas là.
00:13:48 :Il peut également vous faire des conversions. On va prendre un chiffre pas trop grand,parce qu'il y a beaucoup de conversions qu'on va faire. Sinon, ça risque de nous marquer des
00:13:59 :romans. Par exemple, en hexadécimal. Si vous voulez convertir en hexadécimal. Alors là,le code est un peu compliqué. Et là, il me convertit mon chiffre 30 en hexadécimal.
00:14:24 :On peut faire pareil pour le binaire.Et un qui est beaucoup moins connu, mais qui peut être quand même utilisé en informatique,l'octal. Est-ce que vous connaissez l'octal ? C'est la base 8, c'est ça ? Voilà. Hop. Et
00:14:59 :voilà en octal. Juste une question. Quand tu as fait le truc, la conversion en hexadécimal,tu as mis un arrow base devant. Oui. Mais je crois que ça marche juste avec le X,
00:15:12 :en fait. Si tu mets le nombre de points X, ça marche aussi, non ? Moi, je l'avais trouvé commeça, mais on va vérifier. Ouais. Alors là, c'est que ça te marque en hexadécimal ou direct. Sauf
00:15:26 :que là, en fait, si tu as le dièse comme ça. Ouais. Hop là. Ah oui, d'accord. Voilà. En fait,cette notation-là, elle est plus souvent croisée en hexadécimal dans tout ce qui est documentcaractère informatique ou en langage de programmation que celle-là. Alors les deux
00:16:01 :notations hexadécimales sont exactement les mêmes, je suis d'accord, mais le fait,en tout ce qui est informatique et langage technique, on va souvent rajouter le 0X devantles notations hexadécimales pour bien préciser que là on a affaire à des hexadécimales. Et pas,
00:16:16 :par exemple, à un UID ou une clé quelconque. C'est vraiment pour marquer la différence quelà on parle bien d'hexadécimales. Si tu mets juste le dièse X sans le 0, ça ne marche pas,
00:16:33 :c'est ça ? Il faut les trois trucs. Normalement, non. On va essayer, mais avec le dièse, çamarche aussi, tu vois. Après, moi, dans les formatages, j'avais toujours appris à la base
00:16:45 :en dièse 0X, parce que là on reprend les formats, comme je l'ai dit, de la fonction format qu'onretrouve sur les chaînes de caractère. Pendant qu'on y est, tu peux essayer juste avec le 0X et
00:16:59 :sans le dièse, voir ce qu'il se passe ? On a juste le formatage comme on avait avec juste le X.Donc voilà. Donc ça, c'est ce que j'avais trouvé comme petite astuce sur les f-strings. Je me
00:17:20 :suis dit que c'était sympa à montrer. On va voir justement que les f-strings, c'est quand mêmetrès très puissant. Ça peut vous permettre de mettre en place des textes assez complexes et
00:17:31 :assez mis en forme. Par exemple, typiquement, les f-strings, je vais les utiliser pour générer destextes prédéfinis, dans lesquels je vais insérer diverses variables. Par exemple, pour faire un
00:17:45 :genre de, ce qu'on appelle le pub-v-postage, je vais l'utiliser pour l'édition de certainsdocuments. Je vais préparer ma f-string avec tous les éléments que je vais mettre dans un paragraphe
00:17:56 :ou autre de mon document. Et je sais qu'à tel endroit ou tel endroit, j'ai des variables quivont changer. Et en fonction des données que j'ai dans ma base, ça va aller me chercher une entrée
00:18:06 :de ma base et ça va remplacer justement toutes mes valeurs dans la phrase. Et ça va me générermon document WORDS, ce qu'on peut faire avec Python, directement en mettant le texte tel queje l'avais préformaté et en remplaçant dans le texte les valeurs. Comme si j'avais fait un texte à
00:18:22 :troupe. Donc là vous voyez, l'avantage c'est qu'on peut formater le texte comme on le veut. On peutmettre, comme je vous l'ai montré tout à l'heure avec le égal, le nom de la variable et à quellevaleur c'est. Par exemple, on pourrait reprendre par rapport à ce que je fais moi, on pourrait dire
00:18:39 :par exemple, je définis que le début de ma partition, c'est une variable qui s'appelle début,la fin de la partition c'est une fin qui s'appelle fin. Et je pourrais avoir début égale ça et fin
00:18:53 :égale ça. Et là j'aurais le nom de ma variable et la valeur et j'aurais réglé plusieurs problèmesen fait tout simplement avec l'action. Donc voilà, voilà. Est-ce que vous avez des questions là-dessus ?
00:19:09 :Tout ce que tu viens de nous montrer là, ça complète bien. Il y avait une présentation surle Discord il y a presque un an par Joner, je crois que c'était le 17 avril 2024, juste consacréau fString avec toutes les possibilités. Mais là tu en as montré quelques unes qu'il n'avait pas
00:19:28 :montré dans sa présentation d'une heure. Pendant une heure il nous a montré tout ce qu'on pouvaitfaire avec des fString, il n'y avait pas le égal, il n'y avait pas le dièse, donc ça complète super bien.
00:19:37 :Bon bah, c'est pas mal si ça nous apporte quelque chose. Heureusement que je ne savais même pas qu'il y avait cetteprésentation. Heureusement que j'ai pu faire un outil. Je conseille à tout le monde d'aller la voir parce que
00:19:49 :ça vraiment ça permet de, en fait il y a plein de petites choses qu'on sait, enfin qu'on a butinépar là et quand tout est présenté de manière condensée, ça permet de structurer un peula connaissance qu'on a déjà un peu acquise à droite à gauche et de boucher les trous.
00:20:05 :Et il fait ça super bien. Puis là ce que tu viens de rajouter, ça complète parfaitement.Merci. Est-ce que vous avez d'autres petites questions sur ce qu'on vient de voir au niveau des fString ?
00:20:23 :Alors maintenant, je vais vous montrer du coup une petite astuce concernant les dictionnaires.Je vais vous proposer un dictionnaire. Alors ça par exemple, c'est le genre de question, par contre,
00:20:45 :que vous pourriez retrouver autour. On va laisser ça avec les valeurs qu'il nous propose, ça me va très bien.Voilà mon dictionnaire. Donc est-ce que pour vous mon dictionnaire pose un problème quelconque ?
00:21:16 :Normalement non, parce que les clés sont uniques, c'est ça ? Il n'y a pas une virgule en trop là, à la fin ?Non, alors non, alors ça, petite astuce de code. Quand vous faites des dictionnaires ou des listes surtout
00:21:38 :qui peuvent être assez longues, qui sont susceptibles d'être complétées par la suite, mettez cette petite virgule à la fin.Alors ça vous le verrez beaucoup en pratique Django par exemple, parce que quand on rajoute les paramètres dans les middleware de Djangoou les applications, on le fait souvent. Mettre cette virgule là, elle ne pose pas de problème.
00:22:10 :une ligne, c'est un ctrl-c, ctrl-v, et comme ça je n'oublie pas d'avoir mes virgules qui séparent tous les trucs.Donc ça c'est une petite astuce d'écriture de code. Et pour Python, ça ne lui pose pas de problème.
00:22:26 :Donc on est d'accord, tout va bien, le dictionnaire a 4 clés uniques, donc on a un dictionnaire avec 4 erreurs. On est d'accord ?Oui.
00:22:37 :Alors on va afficher notre dictionnaire maintenant, histoire de voir à quoi ressemble notre beau dictionnaire.Je vais dégager un peu le script et je lance ça. Et là, qu'est-ce qu'il se passe ?
00:22:55 :On a perdu 2 boulets.Oui, les boulets.Exactement.Alors, on a perdu, qu'est-ce qu'on a perdu ? On a perdu notre trou.On a perdu le integer, le 1.
00:23:15 :Et le 1 en simple entier.Ah oui, parce que c'est la même chose, trou 1 et 1.0, c'est ça ? Donc il n'a gardé que le premier ?
00:23:25 :On y est presque. En fait, les clés du dictionnaire ne sont pas stockées telles que vous les voyez affichées là.C'est-à-dire que dans la mémoire de l'ordinateur, Python ne va pas stocker votre dictionnaire avec une valeur qui va être 1.0, 1, true ou 1 en chaîne de caractère,
00:23:48 :mais il va utiliser un hash. On vous a souvent parlé des hashes pour les clés. D'accord ?C'est-à-dire qu'il va calculer le hash de la clé et le stocker la valeur du hash.
00:24:02 :Là, si je reprends tout ce que j'ai marqué, je vais rentrer dans du shell Python pur.On va basculer sur le terminal histoire que ce soit un peu plus visible pour vous. Un petit instant.
00:24:16 :Je bascule là.OK. Alors, je bascule sur mon terminal.OK. Est-ce que vous voyez mon terminal ? C'est bon ?Oui, c'est bon, mais c'est trop petit.
00:24:52 :Ah, d'accord.Voilà, comme ça, c'est bon.OK. Alors, je vais reprendre mes différentes clés que j'avais.Hop, hop, hop.Voilà.OK. Hop. Voilà.Alors, en fait, si je prends mes différentes clés, on va d'abord regarder par rapport à leur ID.
00:25:23 :Alors, je vais faire ça.Si je ne me mets pas dans un shell Python, ça m'insulte.Hop là.Je vais d'abord imprimer leur ID.Donc, on avait la clé 1.0.
00:25:40 :OK.On avait la clé 1.Ouais.OK. La clé true.Et la clé 1.Ah, voilà. La dernière, je ne suis pas sûr qu'elle marche.
00:26:03 :On va voir. Voilà.Donc là, vous voyez que pour chacune de mes valeurs, j'ai bien quatre IDs totalement différents.Donc, on est bien sur quatre éléments, quatre objets différents en termes de Python.
00:26:17 :D'accord ?Donc là, ça n'explique pas pourquoi, en fait, on a perdu nos deux clés dans notre dictionnaire.Maintenant, si je mets les types.Même chose avec les types.
00:26:35 :C'est parti.1.0.1.Ou.Type.1.OK.Là, j'ai bien un float, un entier, un booléen et une chaîne de caractères.Donc, on est toujours bien sur quatre éléments de type différent.
00:27:09 :Donc, on a bien notre ID, nos IDs qui sont différents et nos types qui sont différents.Donc, ça n'explique toujours pas pourquoi on a en fait perdu nos valeurs.
00:27:22 :Et maintenant, si on utilise les haches.Parce qu'on utilise en fait le dictionnaire pour classer ses clés.On va faire le hache de 1.0.Le hache de 1.
00:27:38 :Le hache de 2.Et le hache de 1 en chaîne de caractères.Et là, qu'est-ce qu'on observe ?Les haches de 1.0, de 1 et de true sont exactement les mêmes.
00:28:00 :Ils ont tous les deux comme valeur de hache 1.Et comme le dictionnaire va traiter que des valeurs uniques de hache,donc le hache de la clé,il va considérer que 1.0, 1 et true, c'est la même.
00:28:16 :Comme on avait déjà mis 1.0 et que la clé existe déjà,il va considérer que la clé de hache 1, c'est la même clé que la première qu'il a déjà enregistrée.
00:28:26 :Donc il ne va pas créer une nouvelle clé.Il va même y passer la valeur, normalement, si je ne m'abuse.Et la clé hache true, il va avoir le même résultat.
00:28:36 :Donc maintenant, on va rebasculer sur notre VS Code.Et on va s'amuser à faire la petite expérience.Voilà.Et là, ce que je vais faire ce coup-ci, c'est que les valeurs, je vais l'appeler ici.
00:29:02 :Et voyons voir ce que notre dictionnaire nous affiche maintenant.Notre clé 1.0 est devenue true.Parce que quand il a créé le dictionnaire, il a d'abord associé la clé 1.0 à la valeur what.
00:29:29 :Ensuite, on lui a dit, la clé qu'elle a, elle a pour valeur true.Donc, qu'est-ce qu'il a fait ? Il a remis la valeur true dans la clé 1.0.
00:29:41 :Et pareil, it's true, il a mis la clé 3 dans la valeur 1.0.Ce qui fait qu'au résultat, on se retrouve avec une clé 1.0 qui a une valeur de 3,
00:29:52 :et non pas une valeur de 1 comme on avait défini au début.Donc, en fait, l'unicité des clés que l'on retrouve dans le dictionnaire,ce n'est pas forcément, comme on peut le voir là dans le dictionnaire,où pour nous, êtres humains, les quatre clés nous semblent parfaitement uniques.
00:30:10 :C'est la valeur du hash de la clé.Et ce qui fait que si vous ne choisissez pas bien les valeurs de vos clés de dictionnaire,vous pouvez vous retrouver avec ce genre de petit comportement,où non seulement vous perdez deux clés,mais en plus, il y en a une qui n'a plus du tout la même valeur que celle que vous avez définie à la base.
00:30:26 :Donc, comme quoi, il faut être très très prudent avec les dictionnaires.Alors, du coup, Stéphane, moi je veux bien t'expliquer qu'est-ce que c'est un hash,parce que je n'ai jamais compris ce que ça voulait dire.
00:30:37 :Alors, le hash, c'est une valeur qui est calculée sur la base d'un algorithme, d'accord ?Alors, les plus connus, c'est le SHA-1, le SHA-256, ou le MV5.
00:30:50 :Je ne sais pas si vous avez déjà eu l'occasion de télécharger des ISO, notamment Linux.Lorsque vous téléchargez un ISO d'une distribution Linux, souvent, vous fournez un hash, d'accord ?
00:31:04 :Alors, le hash, c'est un algorithme qui va prendre toutes les données du fichier, de la valeur,enfin, peu importe la donnée informatique que vous lui donnez en entrée.
00:31:16 :Il va faire des calculs de permutations et d'ajouts de bytes dans la valeur,puisqu'il va trouver de transformer tout ça en binaire.Et il va la repasser et repasser au travers de son algorithme,jusqu'à obtenir une série de chiffres ou de valeurs égale décimales d'une certaine taille,d'où le MV5, le SHA-1 et le SHA-256. Vous n'aurez pas la même longueur.
00:31:41 :Le principe de cet algorithme, c'est qu'il fait que si vous rentrez, par exemple, une image,vous demandez à calculer le hash d'une image, l'algorithme va prendre tous les bytes qui sont dans l'image,il va calculer le hash, il va vous sortir une valeur précise,et il est fait de telle sorte que si on modifie le moindre pixel dans cette image,
00:32:08 :le hash en sortie sera forcément différent.C'est ce qui permet de garantir, en fait, l'unicité d'un objet numérique.D'accord ? Est-ce que c'est un peu plus clair ?
00:32:24 :C'est encore assez mystérieux, mais oui, j'ai compris la théorie.En fait, il faut voir que le hash, c'est un algorithme qui va calculer l'ADN du fichier.
00:32:35 :Et l'ADN est forcément unique.C'est comme une empreinte numérique, en fait.Voilà, exactement. C'est une empreinte numérique.Alors, on l'appelle souvent empreinte numérique ou signature numérique.
00:32:49 :Moi, par exemple, dans mon job, quand je remets des dossiers à la justicepour justement qu'ils fassent office de preuve,on va souvent signer numériquement l'objet, donc on va calculer le hash de cet objet.
00:33:06 :Et en fait, nous, on va marquer dans notre rapport que l'on a remis tel objetsous un disque dur, sous un CD-ROM ou autre,et que les données ont pour hash telle valeur.
00:33:17 :Ce qui fait que quand la justice reçoit le support,elle peut vérifier que les données qu'elle a reçues ont bien le même hash,garantit l'authenticité des données que nous, on a extraites dans les supportset que eux, ils ont en face des yeux.
00:33:33 :C'est-à-dire qu'une copie n'aurait pas le même hash ?Alors, une copie exacte aura le même hash.Mais si qui que ce soit faisait la moindre modification dans le fichier,même simplement par exemple un fichier Word.
00:33:50 :On va partir là-dessus.Si on rajoute un S ou on rajoute un espace dans le fichier,juste ça, ça va être suffisant pour complètement modifier le hash.
00:34:00 :Si on ajoute le S et qu'on l'efface, est-ce que ça garde le même hash au final ou pas ?Ça va garder le même hash.
00:34:08 :C'est pas dit.C'est particulier à Microsoft parce qu'en fait,ils mémorisent la dernière date et heure d'accès du fichier,donc si ça tombe, c'est même pas le même fichier.
00:34:22 :Alors, les métadonnées n'ont pas d'influence dans le hash.Ça, c'est une certitude parce que, bon,je ne vous montrerai pas plus en détail de ce que je fais,mais on trouve souvent des fichiers similairesqui n'ont pas été ni consultés, ni ouverts, ni téléchargés,ni considérés comme créés à la même date.
00:34:47 :Et pourtant, pour les mêmes fichiers, on a des hashes identiques.Tant que la donnée contenue dans le fichier est exacte à celle du fichier d'origine,le hash en sortie sera le même.
00:35:02 :J'ai une autre question.Oui, Arsène.Par rapport à tes explications, ça signifie qu'on pourraitencrypter un fichier, donc avoir une valeur hashée,puis peut-être envoyer cette valeur numérique sur un autre ordinateuret les déchiffrer pour avoir le même fichier.
00:35:30 :C'est possible, ça ?Alors, non.Le hash n'a pas de lien avec la cryptographie en direct.En fait, le hash va se contenter de faire un calculpour déterminer à quoi ressemble le fichier exactement.
00:35:45 :C'est-à-dire qu'en fait, quand on va vouloir vérifier,on va avoir notre fichier 1, d'accord ?On va calculer le hash.On va obtenir une valeur.
00:35:56 :On va envoyer ce fichier 1 à quelqu'un,ou lui faire parvenir,on va te mettre sur une clé USB, par exemple,on va dire à quelqu'un, tiens, on va donner le fichier à un tel,et nous, au destinataire final, on va lui envoyer le hash par un autre moyen.
00:36:11 :Quand il va recevoir, la personne va lui amener la clé USB avec le fichier,il va pouvoir calculer le hash du fichier qu'on lui a amené sur la clé USBet vérifier si c'est bien le même que celui qu'on lui avait envoyé au préalable.
00:36:24 :Ça va lui permettre de vérifier que le fichier qu'il a reçu,c'est bien le fichier qu'on a envoyé.Ok, ça peut donc l'authentifier, quoi ?
00:36:34 :Voilà, ça authentifie le fichier, exactement.C'est exactement le bon terrain.Ça permet d'authentifier un fichier, ou de l'identifier.Et là, dans le cas présent du dictionnaire,c'est ce principe que Python utilise.
00:36:48 :Il calcule le hash des clés,ce qui lui permet de savoir qu'il n'y a plus de clé uniqueet que la clé est plus facile à trouver.
00:36:56 :Elle est plus facile à trouver.Et justement, comme il va parcourir une table de hash qu'il crée en arrière-plan,lui, il va rechercher le hash qui est correspondant,c'est-à-dire qu'en code pur,il va faire,pas vraiment une boucle, mais on pourrait l'assimiler à ça,et il va lui dire de s'arrêter quand il va avoir trouvé la boucle
00:37:20 :qui correspond exactement, dans la liste,la valeur qui correspond exactement à celle qu'il recherche.C'est pour ça que les dictionnaires sont plus rapides que les listes.
00:37:29 :Ok.C'est plus clair.Si c'est plus clair, tant mieux.C'est vrai que ce n'est pas évident à comprendre cette histoire de hash.Excuse-moi, je veux bien que tu réexpliques ce que tu viens de dire à la finsur pourquoi les dictionnaires sont plus rapides que les listes.
00:37:47 :Alors, en fait,je vais vous faire ça comme ça.On va couper le terminal.Admettons,je vais faire,de quoi ça,voilà.Voilà.Voilà.Hop.
00:38:18 :On met plein d'erreurs, mais peu importe.Ça, en fait,c'est ce à quoi vont ressembler vos clésde hash,les clés que vous avez mises dans votre dictionnaire, par exemple.
00:38:30 :D'accord ?Chacune de ces valeurs va être unique.D'accord ?Pour un objet informatique, quel qu'il soit,quand il est passé dans l'algorithme de hash,le résultat en sortie est unique.
00:38:42 :Vous ne pourrez pas trouver deux fois le même.Ce qui explique le comportement de notre dictionnaire au préalable.Et lui, quand il va rechercher dans le dictionnaire,au lieu d'informatiquement regarderla valeur en soi de la clé,il va rechercherce qui correspond exactement.
00:39:02 :Donc, admettons, vous recherchez votre deuxième clé.Lui, il va aller dans la table de hash.Donc là, le principe de parcourir la table de hash,c'est un autre principe logicielqui est beaucoup plus complexe.
00:39:15 :En gros, c'est comme s'il regardaittoutes les valeurs en même temps d'un seul coup.Et il va chercher la valeur qui correspondà celle dont il a besoin.
00:39:26 :Donc là, il va rechercher celle-là, mettons, de valeur.Il va voir les trois valeurs d'un coup.Pour lui.Et il va voir, du coup, la valeur.
00:39:35 :Et il va aller chercher cette valeur-là.Ok ?Dans une liste...Comment il fait pour tout regarder d'un coup ?Alors ça, c'est un concept que je ne maîtrise pas clairement.
00:39:43 :Je sais comment, en gros, ça marche.C'est-à-dire qu'en fait, c'est comme s'il voyaitles clés d'un seul coup.Il voyait l'ensemble de la connaissance,un peu comme...
00:39:55 :Comment il s'appelle ?Scarlett Johansson.Dans le film avec Morgan Freeman.Comment c'est le nom ?Lucy.Lucy. Voilà.Exactement. Merci, Pascal.C'est pour ceux qui...
00:40:13 :Je ne sais pas si vous l'avez vu,ce film-là, à la fin,il acquiert tellement de connaissancesqu'il voit le passé, le présent, le futur,tout en même temps.
00:40:20 :Là, c'est un peu comme ça.C'est comme si, en fait,Python voyait toutes les clésà l'instant T en même temps.Et il est capable de,à l'occasion, une fraction de seconde,voir laquelle est égale à celle qui cherche.
00:40:33 :C'est le principe de fonctionnementde la recherche par table de clés.Là,quand il va faire une boucle,ce qu'il va faire,c'est qu'il va prendre le premier objet,il regarde si le premier objet est égalà celui qu'il cherche.
00:40:51 :Si c'est le cas, il s'arrête.Sinon, il passe à l'objet suivant.Il regarde si l'objet est égalà celui qu'il recherche.Si c'est bon, il s'arrête.
00:41:00 :Sinon, il passe à l'objet suivant.D'accord ?En fait,quand on va chercher dans un tableau de H,le fait de trouver une valeur égaleest quasi instantané.
00:41:11 :C'est le principe même du fonctionnement.Par contre, quand vous faites dans une liste,là, comme il ne voit pastoutes les valeurs en même temps,il est obligé d'aller chercher la première,vérifier si c'est la bonne.
00:41:22 :Si ce n'est pas le cas,il va rechercher la deuxième,vérifier si c'est la bonne, et ainsi de suite.C'est pour ça que,quand vous faites une recherche dans une liste,on est sur une complexité O-N,tandis que dans un dictionnaire,on est sur une complexité O-1.
00:41:35 :C'est-à-dire que là,en fait, il va avoirtoutes les valeurs de H d'un seul coup,devant lui, dans la seconde,et il est capable de trouver la bonne.
00:41:43 :Est-ce que ça vous paraît un petit peu plus clair ?Oui, mais ça donne envie d'en savoir plussur le tour de passe-passequi permet de voirtoutes les valeurs de H en même temps,comme Scarlett Johansson.
00:41:59 :Écoute,déjà, je ne vais pas prendrel'épilogue de Scarlett Johansson.Je veux bien rencontrer Scarlett Johansson,mais pas prenter des pilules.Sérieusement,je vais essayer de voir si je peux vous trouverun petit truc qui vous explique ça.
00:42:13 :Je ne vous promets pas ça hyper rapidement,mais je vais essayer de me mettre sur le dossierpour vous trouver quelque chosepour vous expliquer ça.
00:42:20 :Il y a quelqu'un qui a inventé ça,ça a révolutionné l'informatique, j'imagine.Oui, clairement, les H,c'est quelque chose qui est d'ailleurs,aujourd'hui, très, très, très utilisé.
00:42:30 :D'ailleurs,il y a beaucoup de rechercheset de développement parce qu'après,je ne veux pas rentrer trop, trop loin,mais les H,il y a des possibilités de collisionet du coup,il y a un travail qui est quasi permanentsur les H pour justementéviter ce phénomène de collision
00:42:52 :où on pourrait avoir,il y a toujours une probabilitéqui est très, très infimed'avoir des H identiques.Mais il faut vraimentque les étoiles s'alignent.
00:43:04 :Mais le système est réputécomme étant,normalement,de sortir une clé uniquepour chaque cliché.Mais bon, là,on est sur des recherchesdu même niveauque ce qu'on a actuellementavec l'ADNoù on peut avoir,des fois, en ADN,des correspondancesqui sontdes faux positifs.
00:43:22 :Wally Boileau.Très bien, merci.Bon,on termine sur une petite noteun peu plus drôle.Est-ce que vous connaissezce module ?Pas du tout.
00:43:50 :Le module anti-gravity.Non, pas du tout.Non.Non.Alors,ça a été rajoutéd'après mes sources.Je vais revérifier mon infopour être sûr de 100 %.
00:44:03 :C'est temps que je ne vous disepas de bêtises.J'ai vu ça,ça m'a bien fait rire.Voilà.Alors,je crois queça a été rajoutéà l'origine par Guido.
00:44:21 :Vous savez pourquoiGuido a appeléson langage piton,piton ?À cause des montées de piton ?Exactement.Donc,s'il aimait bienles montées de piton,il aimait bien rigoler.
00:44:37 :Donc,je vais vous basculersur le terminal.Ça va être en deux phasesparce quec'est un peu compliquéd'entendre.Donc,je vais vous basculersur le terminal.
00:44:49 :Ça va être en deux phasesparce queà moins que je puisse...Ah,voilà.Je vais pouvoir faire ça.Alors,je ne sais pas commentça va être visible pour vous.
00:45:04 :Voilà.Là,vous avez tout mon écranen même temps.Est-ce que ça va ?Est-ce que ça resteà peu près visible ?C'est petit.
00:45:14 :Oui,c'est petit,mais bon,c'est pas tellement...C'est celui de droitequ'il faut qu'on voit,c'est ça ?Alors,à droite,vous avez mon...Je vous ai mis mon shellà côté.
00:45:26 :Celui de droite,il est assez gros là.C'est bon.Voilà.Ça devrait faire la blague.Je vais importermon fameux moduleantigravity.Et attention,que fait ce module ?
00:45:39 :Eh bien,il m'ouvre une pagedans le navigateur.Voilà.Avecdes blaguessur Python.Excellent.Voilà.Ça sert complètementà rien.Et donc,justement...Et c'est Guidoqui a mis ça dans...
00:46:07 :Le Python antigravity.D'aprèsce que j'ai pu voir,oui.J'ai pas de certitudesur la source,mais d'après ce que j'ai pu voir,oui.Voilà.
00:46:17 :Et vous voyez,si vous continuez,il y a d'autres...d'autres petits stripscomicssur Python.Ou sur d'autres valeurs.Voilà.Voilà, voilà.Donc, c'était le petitfun fact de Python.
00:46:39 :Hop.Et voilà.Voilà, voilà.Vous pourrez ressortirle module antigravityà ceux que vous connaissezautour de vousqui font du Python.Je pense qu'il n'y a pasbeaucoup de mondequi le connaît.
00:46:54 :À 22 heures,eh bien,je ne sais pas.Je ne sais pas.À 22 heures,eh bien,le temps passe vitequand on s'amuse.Est-ce que vous avezd'autres questions ?
00:47:16 :Soit sur ce qu'on a vurapidement,ou peut-êtreune petite questionsur le ToSAou autreque vous auriez souhaité poseret faire profiter tout le monde.
00:47:25 :Moi, je vais passerle ToSA cette semaine.Je voulais savoirsi dans les conditionsde passage d'examen,la webcam,est-ce qu'il faut forcémentqu'elle soit face à toiou est-ce qu'elle peut êtrede côté par rapport à toi ?
00:47:41 :Alors, je t'avoueraique je n'ai pasde précision là-dessus,mais je pensequ'il serait mieuxqu'elle soit face à toi,en fait.Parce que leurs spécialistesqui analysent la vidéodoivent aussi analyserles réactions sur ton visageou ainsi de suite.
00:47:57 :La détection de triffesou de sincéritépasse aussi par là-haut.Et je pensequ'ils doivent vouloirqu'elle soit face à toi.Mais là-dessus,je n'ai pas d'info 100%,mais je pensequ'elle doit être face à toiet je pense qu'eux,ils doivent l'attendre comme ça.
00:48:19 :Parce que si ta webcamest sur le côté,ils risquent justementde se demander pourquoi,alors que 99,9% des gensle fassent avec facecam,pourquoi est-ce que la webcamse retrouve sur le côté ?
00:48:32 :Ce n'est pas pour autantqu'ils détecterontune triche quelconqueou qu'ils soupçonnerontune triche quelconque,mais ils risquentde se poser des questionset ça risque de mettre du tempspour valider ton passage justement.
00:48:45 :Si tu as la possibilitéde mettre face à toi,mais la face à toi,ce sera beaucoup plus simple.Non, je n'ai pas.C'est ça, non.
00:48:54 :C'est ça mon souci.Ce n'est pas grave,je vais le mettrele plus possible en face de moi.Quel est le problèmequ'elle soit face à toi,la webcam ?
00:49:02 :Parce qu'en fait,la webcam,elle est sur mon ordinateur portable.Mon ordinateur portable,il est trop petitet du coup,je le relie à un écranavec un câble HDMI.
00:49:13 :Du coup,je mettrais mon portable.Ou sinon,tu trouvesou tu te fais prêterune webcam USB.Oui, c'est ça.Il faut que je mette çasur l'écran.
00:49:26 :C'est ce que j'ai.Là,tu vois,c'est un truc,j'ai dû payer 15 ou 20 balles.Je vais l'activer.Tu vois,c'est une webcamque j'ai montéesur mon écran,là au-dessus.
00:49:39 :Je vais pouvoir tirerque j'arrive à voirou pas.Mon PC,il est là.Oui, c'est ça.Moi aussi,j'ai le même.La webcam,elle est làet ça marche très bien.
00:49:53 :Ou au pire,s'il n'a pas forcémentle coup d'investissement,s'il n'a pas forcémentle coup d'investissement,c'est une fois autour de toi,peut-être que quelqu'una une vieille webcamUSB qui traîne.
00:50:02 :Et puis,tu mets ça en placeet comme ça,t'es tranquille.Merci.A toi aussi.Et le micro,il sert à quoi pour le Tosa,en fait ?
00:50:18 :On a besoin de parler ?Non,il sert parce qu'en fait,dans leur principe,webcam et micro,en fait,ils ont trois axesde surveillance.
00:50:27 :La webcam,comme on vient de parler,qui peut permettrede détecter les comportements,les attitudes,les gestes que tu fais.Voir si,par exemple,tu vois,je vais vous faireun petit exemple vite fait.
00:50:39 :Attention,jeu d'acteur.Hop là.Voilà,je vais activer ma webcam.Voilà,là, je suis comme ça,je suis en train de fairemon examen,je suis en train de regardermais, par exemple,si je fais ça souvent,ils vont se douterque j'ai peut-êtredes notes en bas là
00:50:59 :pour avoir mes infos.D'accord ?Donc là,la webcam,elle va servir à çaou, par exemple,si vous avez des trucssur le côtéou si vous regardezà droite,à gauche ou ailleursque sur l'écran,ils peuvent éventuellementdéterminer que vous êtesen train d'utiliserdes antisèches autour de vous.
00:51:20 :Même si on regardeton clavier pour taper ?Alors,si tu regardes le clavierjuste comme çaet qu'il y aun bruit de frappequi correspondet c'est làque va intervenir le micro,bon,ils vont comprendreque tu es en train de tapersur ton clavieret que tu ne connais pas
00:51:35 :ton clavier par cœur.Ok ?Mais,oui,il ne faut passe stresserpar rapport à cet aspect-làmais,s'ils voientque vous êtes trop souventles yeux penchésdans le bureauou trop souventautour de droite à gauche,ils vont peut-être se le direlui,il a peut-être essayé
00:51:52 :de taper sur son clavieret il a misl'antisèche quelque part.D'accord ?Le micro,il sert à ça aussiparce qu'il va vous permettred'entendre.
00:52:00 :Alors,par exemple,comme je disais à l'instant,de créer des actionsqui ne vont pas,voilà,là,si je tapesur mon clavier,au micro,on entendque je tapesur mon clavier.
00:52:13 :D'accord ?Ils vont fairele lien entre les deux.Le micro,il va servir aussià savoirsi vous n'avez pasquelqu'un autour de vousqui est planquéhors du champde la caméraqui est en trainde vous soufflerdes réponses.
00:52:27 :Par exemple,vous n'êtes pasen train de discuteravec une tierce personne,dire,tiens,alors,j'ai le grapheà cinq clics,tiens,tu peux relirela ficheque Stéphanenous a montrée l'autre foiset puis me redirece que je dois taperpour le codepar exemple.
00:52:45 :Et la dernière chosequ'ils vont avoir,ils vont faireun enregistrementde votre écranparce quevous êtes obligésd'être en plein écransur la page d'Internetdu passage du Tozaet ils enregistrentl'écran en même temps.
00:52:57 :Donc,ce qu'ils vont voir,c'est est-ce quevous basculezentre différentsécrans.Mettons,si vous êtesen plein écran,ils vontenregistrervotre écranen même temps.
00:53:10 :Donc,ils vont voirsi vous basculezentre différents écrans.Mettons,si vous aviez,par exemple,une autre page Internetou d'un côtépour aller rechercherles réponses aux questions.
00:53:21 :Et même chose,vous ne pouvez avoir d'actifsqu'un seul écran.Toujours pour la même raison,que vous n'ayez pasune page Internet,donc la page Tozaqui est en plein écransur l'écran principalet que sur un écran secondaire,vous avez une autre page Internetou autre documentpour vous aider
00:53:34 :à répondre aux questions.Donc,ils vont voirsi vous basculezentre différents écranset ils vont voirsi vous basculezentre différents écransC'est pour çaqu'ils passentpar ces trois biais-làpour vérifier.
00:53:47 :C'est sur çaque reposeleur système anti-triche,en fait.Voilà,ils voient l'ouf.Voilà.Oui,parce que moi,quand j'ai passé les vals,il me disaitregardez votre écran,quoi.
00:54:04 :Donc,j'avais l'impressionque je n'avais pas le droitde regarder mon clavier,quoi.Oui,après,ils ne vont pas non plus,c'est l'esprit humainqui va regarder derrière,d'accord ?
00:54:16 :Donc,ça ne va pas être,ils ne vont pas,au moindre petit regardqui bouge à droiteou à gauche,se dire,ça y est,tout de suite,il est en train de tricher,quoi.
00:54:28 :Après ça,le concept,moi,par exemple,s'ils avaient dûse contenter de ça,j'ai ma caméraqui est en plein milieu,mon écran,c'est un 49 pouces,vous imaginez bienqu'entre les questionsqui étaient sur la gauchede l'écranet les cas où j'ai eu la réponse,j'avais mes yeux
00:54:44 :qui faisaient du droit de gauche,quoi.Mais ça,ils vont détecter aussi,parce qu'on peut le fairepar le biais d'un navigateur,le type de matérielsur lequel vous évoluez.
00:54:52 :Donc,c'est comme çaqu'ils vont pouvoir se rendre comptesi votre comportementou vos attitudessont cohérentesavec ce qu'ils voientà la vidéo,quoi.
00:55:05 :OK.Et surtout,Simon,pas de stress,on y va tranquille,on a travaillé,on est prêt.C'est surtout ça,l'important.Mais clairement,je ne sais passi vous avez vu,enfin,il y a encore quelqu'unqui a passé,il y a 15 jours,le Tosa,de Doctrine,il a encore fait un score
00:55:38 :à plus de 900, quoi.Donc,si vous avez bossé sérieusement,vous avez bien suivitous les coursqu'il y a sur Doctrineet que vous avez participéà un maximumde mentorat,comme je l'ai déjà dità certains la semaine dernière,honnêtement,le niveau a avancé,il est largement porté.
Aucune occurrence trouvée pour « ».
00:20:23
Astuces pour écrire des dictionnaires en Python
00:25:15
Unicité des clés, collisions et le rôle du hash
00:30:27
Explication détaillée du hash et optimisation des recherches
00:43:43
Découverte du module antigravity et ses curiosités
00:47:16
Conseils pour le TOSA : configuration de la webcam et du micro
00:55:00
Conclusion et points clés sur l'examen et le mentorat