1 00:00:02,030 --> 00:00:03,770 Dans cette vidéo, je voudrais vous montrer un des aspects 2 00:00:03,937 --> 00:00:06,700 super sympa de Pharo, c'est son inspecteur. 3 00:00:07,170 --> 00:00:10,610 Un inspecteur c'est un objet qui nous permet d'interagir 4 00:00:10,777 --> 00:00:14,190 avec des objets, et de pouvoir discuter avec eux de manière vivante. 5 00:00:15,250 --> 00:00:17,690 On va faire un essai sur le système de fichiers. 6 00:00:19,520 --> 00:00:21,450 Par exemple, si je fais "File system 7 00:00:24,330 --> 00:00:29,130 working directory", ça va me 8 00:00:29,297 --> 00:00:32,190 donner tous les fichiers qui sont par exemple à la racine 9 00:00:32,357 --> 00:00:33,870 de mon image, donc on va donc avoir ces objets-là. 10 00:00:35,030 --> 00:00:39,610 Regardons. Ce que je vais faire si je fais "Inspect", 11 00:00:40,030 --> 00:00:41,240 j'ouvre un inspecteur. 12 00:00:41,870 --> 00:00:43,240 Donc là j'ai un inspecteur. 13 00:00:45,430 --> 00:00:47,690 C'est le nouvel inspecteur de Pharo qui a été développé 14 00:00:47,857 --> 00:00:51,730 par l'équipe, qui s'appelle GT, et il a des 15 00:00:51,897 --> 00:00:53,140 fonctionnalités qui sont très intéressantes. 16 00:00:53,307 --> 00:00:56,740 Commençons tout d'abord par regarder l'onglet 17 00:00:58,330 --> 00:00:59,640 qui s'appelle "Raw", qui veut dire brut. 18 00:00:59,807 --> 00:01:03,880 L'onglet "Raw" c'est l'ancien inspecteur et qu'est-ce qu'il 19 00:01:04,047 --> 00:01:04,850 va me montrer lui ? 20 00:01:05,017 --> 00:01:08,000 Il me montre les données de l'objet, les variables d'instances 21 00:01:08,167 --> 00:01:09,710 de l'objet tel que défini dans la classe. 22 00:01:10,420 --> 00:01:12,480 Je peux interagir avec. 23 00:01:12,647 --> 00:01:15,930 Je peux, par exemple, demander toutes les entrées. 24 00:01:16,530 --> 00:01:20,940 Là il me donne toutes les entrées, ou donne-moi tous les 25 00:01:21,107 --> 00:01:25,850 directory, par exemple, là j'ai les directories. 26 00:01:27,880 --> 00:01:31,380 Si on regarde la classe de cet objet, si je fais "Self 27 00:01:31,547 --> 00:01:36,240 browse", qu'est-ce que je 28 00:01:36,407 --> 00:01:40,430 vois finalement? Cette vue me montre les valeurs 29 00:01:41,250 --> 00:01:44,450 pour l'objet en question des variables d'instances qui 30 00:01:44,617 --> 00:01:46,100 ont été définies dans la classe de cette manière. 31 00:01:47,520 --> 00:01:49,820 Ça va me permettre de regarder à l'intérieur. 32 00:01:50,000 --> 00:01:54,650 Par exemple, là je peux voir que le chemin "Path" en fait 33 00:01:55,350 --> 00:01:59,530 est composé de cet objet "Self", et je pourrai le voir 34 00:01:59,697 --> 00:02:03,660 ici, donc là je suis encore en mode brut et puis de 35 00:02:03,827 --> 00:02:04,800 pouvoir naviguer à l'intérieur. 36 00:02:05,000 --> 00:02:07,550 Là, si je fais ça, je vais aller voir finalement la 37 00:02:07,717 --> 00:02:09,780 chaîne User et ce genre de choses. 38 00:02:09,947 --> 00:02:13,280 Donc là finalement je viole essentiellement l'encapsulation. 39 00:02:15,210 --> 00:02:18,250 Le système va regarder, avec des fonctionnalités 40 00:02:18,417 --> 00:02:21,290 introspectives, il va me montrer les valeurs de mes champs. 41 00:02:23,000 --> 00:02:23,920 C'est très pratique cette vue. 42 00:02:24,087 --> 00:02:28,540 Mais maintenant ce que fait le nouvel inspecteur c'est plus. 43 00:02:28,707 --> 00:02:33,310 Ça veut dire que chaque objet va pouvoir présenter à l'utilisateur 44 00:02:34,150 --> 00:02:38,820 différents facets de comment il va être représenté. 45 00:02:40,700 --> 00:02:44,880 Tous les objets ont par défaut le facet brut, Raw. 46 00:02:45,300 --> 00:02:47,900 Vous avez aussi le facet Meta, donc le facet Meta c'est 47 00:02:48,067 --> 00:02:49,310 ce qui permet de browser la classe. 48 00:02:49,477 --> 00:02:51,380 On peut browser la classe rapidement, par exemple, comme ça. 49 00:02:52,150 --> 00:02:55,330 Normalement, c'est juste pour quand on est dans le flot 50 00:02:55,590 --> 00:03:00,440 de la navigation, de pouvoir savoir directement sans 51 00:03:00,607 --> 00:03:01,350 ouvrir un autre browser. 52 00:03:01,650 --> 00:03:03,140 Mais le plus important, ce sont les autres onglets. 53 00:03:03,307 --> 00:03:08,090 Là, par exemple, 54 00:03:08,257 --> 00:03:11,640 l’inspecteur sachant qu'on a une référence, 55 00:03:13,470 --> 00:03:17,730 un dossier, nous montre tout ce que contient le dossier. 56 00:03:17,900 --> 00:03:19,690 C'était ce que je vous ai montré ici quand j'ai fait ça. 57 00:03:20,270 --> 00:03:21,960 Là, on obtient la même chose. 58 00:03:26,190 --> 00:03:31,140 Maintenant, on va pouvoir naviguer à l'intérieur de 59 00:03:31,307 --> 00:03:32,180 ce système de fichiers. 60 00:03:32,347 --> 00:03:36,090 Là, si je prends Ston, c'est l'équivalent de Json en Pharo. 61 00:03:36,460 --> 00:03:40,920 Là, encore une fois, j'obtiens une 62 00:03:41,087 --> 00:03:45,780 référence à l'intérieur du système de fichiers, qui est 63 00:03:46,280 --> 00:03:51,110 ce fichier-là, j'obtiens un accès sur le 64 00:03:51,277 --> 00:03:52,500 fichier qui s'appelle 65 00:03:52,667 --> 00:03:57,270 meta-inf.ston. Et maintenant l'inspecteur est 66 00:03:57,437 --> 00:04:00,390 intelligent il et me dit, je vais te montrer son contenu si tu veux. 67 00:04:01,000 --> 00:04:02,940 Je regarde son contenu et il se trouve que j'ai un 68 00:04:03,107 --> 00:04:06,020 contenu, je ne sais pas exactement à quoi ça sert, mais c'est un contenu. 69 00:04:07,210 --> 00:04:11,070 De la même manière, je vais pouvoir naviguer mes sous-dossiers. 70 00:04:11,237 --> 00:04:14,950 Là, si je fais package-cash, c'est l'endroit où les 71 00:04:15,117 --> 00:04:16,180 packages sont stockés par défaut. 72 00:04:16,347 --> 00:04:19,160 Effectivement, c'est toujours un objet du système de 73 00:04:19,327 --> 00:04:21,760 fichiers mais il me montre son contenu. 74 00:04:22,540 --> 00:04:26,880 Si je regarde dans Data, je vois 75 00:04:30,210 --> 00:04:33,740 un png. Si je clique sur le png, je vais naviguer. 76 00:04:34,040 --> 00:04:36,760 Là, vous voyez qu'il y a d'autres onglets. 77 00:04:38,030 --> 00:04:38,680 Il y a l'onglet Content. 78 00:04:39,500 --> 00:04:41,540 Si je clique sur Content qu'est-ce que je vois, je vois 79 00:04:41,707 --> 00:04:44,550 le png tel que stocké sous forme binaire sur mon disque. 80 00:04:47,300 --> 00:04:50,460 Comme c'est un png, l'inspecteur me montre une preview de 81 00:04:50,627 --> 00:04:53,570 ce que contient le png. 82 00:04:53,737 --> 00:04:55,140 Si je regarde le script.st 83 00:04:55,307 --> 00:04:58,510 par exemple, j'aurai des panes qui sont différents. 84 00:04:58,677 --> 00:05:00,740 Là, il y en a deux, je ne sais pas exactement pourquoi 85 00:05:00,907 --> 00:05:03,150 mais il y en a un avec du syntax highlighting et l'autre 86 00:05:03,317 --> 00:05:05,400 sans, qui me montre le contenu encore une fois. 87 00:05:06,050 --> 00:05:09,470 Si c'est un zip, c'est encore mieux parce que quand je 88 00:05:09,637 --> 00:05:14,520 clique sur un zip, le contenu du zip est encodé 89 00:05:14,687 --> 00:05:19,100 et compressé mais les items, à ce moment là, sont 90 00:05:19,267 --> 00:05:22,920 interprétés. Là, je vais pouvoir naviguer directement 91 00:05:24,240 --> 00:05:26,080 mes objets et de la même manière récursivement. 92 00:05:29,730 --> 00:05:34,300 C'était pour vous montrer que l'inspecteur de Pharo est 93 00:05:34,467 --> 00:05:37,400 vraiment un outil très puissant, pour aller interagir 94 00:05:37,567 --> 00:05:42,160 avec des objets de manière fine, et en plus comme chaque 95 00:05:42,327 --> 00:05:45,430 objet va définir une représentation ou l'ensemble des 96 00:05:45,597 --> 00:05:48,840 représentations qui font du sens, pour qu'on puisse 97 00:05:49,007 --> 00:05:51,270 interagir avec et qu'on soit le plus efficace possible, 98 00:05:51,550 --> 00:05:53,820 ça permet de très rapidement construire des petits outils. 99 00:05:54,000 --> 00:05:56,940 Là, on a un petit navigateur de systèmes de fichiers, pourquoi? 100 00:05:57,107 --> 00:05:59,270 Parce que quand on navigue et qu'on est en train d'inspecter 101 00:05:59,510 --> 00:06:01,890 le système de fichiers, parfois, on veut savoir ce qu'on 102 00:06:02,057 --> 00:06:02,840 est vraiment en train d'inspecter.