1 00:00:00,000 --> 00:00:05,159 2 00:00:05,159 --> 00:00:09,240 >> DAN ARMENDARIZ: Bonjour, et bienvenue à un séminaire de CS50 sur la personnalisation Cloud 9, 3 00:00:09,240 --> 00:00:11,724 et l'IDE CS50. 4 00:00:11,724 --> 00:00:13,640 Donc, aujourd'hui, nous allons parler juste un peu 5 00:00:13,640 --> 00:00:16,090 à propos de certaines des informations techniques 6 00:00:16,090 --> 00:00:19,380 passe derrière l'architecture Cloud 9, et comment 7 00:00:19,380 --> 00:00:25,560 nous avons mis en place certaines des plug-ins dans le cadre de Cloud 9 pour fournir CS50 IDE. 8 00:00:25,560 --> 00:00:28,820 Alors disons simplement sauter à droite et commencer à parler de plug-ins. 9 00:00:28,820 --> 00:00:32,659 >> Donc, les plug-ins sont vraiment à la cœur de l'expérience Cloud 9. 10 00:00:32,659 --> 00:00:37,590 Cloud 9 est la technologie sous-jacente que nous fournit l'IDE, 11 00:00:37,590 --> 00:00:42,160 et aussi la fenêtre de terminal à la en bas, avec le workspace-- 12 00:00:42,160 --> 00:00:46,430 Ubuntu workspace-- que nous utiliser pour compiler tous nos projets 13 00:00:46,430 --> 00:00:49,190 et nous acquitter de nos ensembles de problèmes, compléter nos séries de problèmes. 14 00:00:49,190 --> 00:00:51,820 Mais au cœur de tous de celui-ci, toute la technologie 15 00:00:51,820 --> 00:00:54,590 est vraiment juste un tas de plug-ins. 16 00:00:54,590 --> 00:00:58,740 Tout est un plug-in qui peut être modifié, 17 00:00:58,740 --> 00:01:00,710 étendue, vous pouvez créer vos propres plug-ins, 18 00:01:00,710 --> 00:01:03,060 vous pouvez supprimer les autres les plug-ins, de modifier vraiment 19 00:01:03,060 --> 00:01:07,540 beaucoup de la fonctionnalité du Cloud 9 IDE existant. 20 00:01:07,540 --> 00:01:12,040 >> Alors ceci est un existant Cloud 9 environnement. 21 00:01:12,040 --> 00:01:14,750 Ceci est vraiment juste le défaut Cloud 9 environnement. 22 00:01:14,750 --> 00:01:18,450 Et jetez un oeil à la façon dont il fait est différent de l'IDE CS50. 23 00:01:18,450 --> 00:01:20,340 Donc, cela est l'IDE CS50. 24 00:01:20,340 --> 00:01:25,060 Notez qu'il ya une certaine visuelle changements entre la régulière Cloud 9 25 00:01:25,060 --> 00:01:28,000 l'environnement et l'IDE CS50. 26 00:01:28,000 --> 00:01:30,010 Plus précisément, vous aurez remarquerez quelques changements. 27 00:01:30,010 --> 00:01:34,201 Tout d'abord, il ya moins de éléments de menu pour commencer. 28 00:01:34,201 --> 00:01:36,200 Il ya en fait un moyen que vous pouvez changer cela. 29 00:01:36,200 --> 00:01:37,270 Il a appelé le mode simple. 30 00:01:37,270 --> 00:01:40,910 >> Par défaut, le mode simple est activé, et qui simplifie certains des éléments de menu. 31 00:01:40,910 --> 00:01:43,032 Il enlève une partie de la les plus avancés, 32 00:01:43,032 --> 00:01:45,240 parce que franchement, beaucoup de les étudiants qui sont à venir dans 33 00:01:45,240 --> 00:01:48,550 et ne pas besoin de savoir au sujet de certains des fonctionnalités plus avancées 34 00:01:48,550 --> 00:01:50,530 ne sont pas dépassés avec un tas d'options. 35 00:01:50,530 --> 00:01:55,610 Mais nous faisons de fournir la capacité de prendre hors ces roues soi-disant formation 36 00:01:55,610 --> 00:01:57,360 et retirer cette échafaudages pour que les gens 37 00:01:57,360 --> 00:02:00,832 peut devenir plus habitués à Les fonctionnalités avancées de l'IDE. 38 00:02:00,832 --> 00:02:02,540 Immédiatement à la droit de cela, il ya 39 00:02:02,540 --> 00:02:05,435 également un bouton de débogage, qui dans la norme Couverture 40 00:02:05,435 --> 00:02:08,199 9 environnement est tout simplement appelé terme. 41 00:02:08,199 --> 00:02:11,990 Mais par défaut, nous avons configuré le bouton de débogage dans le CS50 IDE 42 00:02:11,990 --> 00:02:15,500 pour faire apparaître le débogueur, compiler automatiquement le code source, 43 00:02:15,500 --> 00:02:17,940 connecter le débogueur sous-jacent à la GDB-- 44 00:02:17,940 --> 00:02:21,430 et depuis qui exécute pour effectuer l'debugging-- et quelques autres étapes 45 00:02:21,430 --> 00:02:22,580 aussi bien. 46 00:02:22,580 --> 00:02:25,370 Aussi la fenêtre du terminal à la very-- ou plutôt le terminal 47 00:02:25,370 --> 00:02:29,010 onglet à la section de la console à la fenêtre au bas de l'écran, 48 00:02:29,010 --> 00:02:31,004 a été rebaptisé d'être simplement terminal. 49 00:02:31,004 --> 00:02:32,837 Alors que dans la norme Cloud 9 environnement, 50 00:02:32,837 --> 00:02:35,830 il montre effectivement la exécutant l'application. 51 00:02:35,830 --> 00:02:39,140 De cette façon, on simplifie, de plus, l'interface graphique, juste un peu. 52 00:02:39,140 --> 00:02:42,310 >> Nous avons également ajouté quelques boutons en haut à droite de l'IDE 53 00:02:42,310 --> 00:02:45,740 pour montrer quelques informations de base sur l'instance du sous-jacent. 54 00:02:45,740 --> 00:02:49,700 Et aussi, nous avons supprimé un des options sur les articles 55 00:02:49,700 --> 00:02:51,730 de l'extrême droite. 56 00:02:51,730 --> 00:02:55,620 Donc, tout cela est mis en œuvre pas en modifiant nécessairement le Cloud 9 57 00:02:55,620 --> 00:02:58,550 code source, mais place grâce à un couple 58 00:02:58,550 --> 00:03:03,460 de plug-ins que nous avons mis en place long de l'année écoulée. 59 00:03:03,460 --> 00:03:08,840 Et Cloud 9 a accueilli et a courir dans l'espace de travail de CS50. 60 00:03:08,840 --> 00:03:13,680 Ou plutôt dans les espaces de travail sont désignés comme CS50 IDE. 61 00:03:13,680 --> 00:03:17,140 >> Alors, vraiment ce que est la principale différence entre le Cloud 9 et le CS50 62 00:03:17,140 --> 00:03:18,130 des espaces de travail. 63 00:03:18,130 --> 00:03:21,780 Il ya aussi, dans le sous-jacent Ainsi, le principal changement est 64 00:03:21,780 --> 00:03:25,350 que nous installons un peu articles préconfigurés comme GDB, 65 00:03:25,350 --> 00:03:29,530 et d'autres choses de base que nous avons créé, comme mise à jour 50, 66 00:03:29,530 --> 00:03:33,310 et un couple d'autres mesures qui font toute l'expérience un peu plus 67 00:03:33,310 --> 00:03:34,550 unifié. 68 00:03:34,550 --> 00:03:38,520 Mais dans l'ensemble, cela est juste une modification d'un système existant 69 00:03:38,520 --> 00:03:40,979 que Cloud 9 a créé pour nous. 70 00:03:40,979 --> 00:03:42,770 Ce que nous allons montrer un peu plus tard 71 00:03:42,770 --> 00:03:45,920 comment créer en fait un plug-in qui assez basique 72 00:03:45,920 --> 00:03:49,461 nous permet d'insérer quelque chose dans le système de menu, et d'ouvrir un dialogue. 73 00:03:49,461 --> 00:03:51,210 Et si nous avons assez temps, nous allons effectivement 74 00:03:51,210 --> 00:03:54,210 voir comment nous pouvons remplir que dialogue avec quelques informations 75 00:03:54,210 --> 00:03:56,089 à partir de l'instance du sous-jacent. 76 00:03:56,089 --> 00:03:58,880 Pour que nous puissions arriver à ce Point, parlons d'abord un peu 77 00:03:58,880 --> 00:04:01,740 sur l'architecture de Cloud 9. 78 00:04:01,740 --> 00:04:05,290 >> Donc, la façon dont nous sommes habitués à l'interaction avec Cloud 9 79 00:04:05,290 --> 00:04:06,610 est entièrement par le client. 80 00:04:06,610 --> 00:04:10,610 Nous ouvrons un navigateur Web, nous tapons dans le CS50.io. 81 00:04:10,610 --> 00:04:14,431 Nous avons finalement, après authentification, sont présentés avec l'IDE. 82 00:04:14,431 --> 00:04:16,180 Mais se rendre compte qu'il ya un couple d'étapes 83 00:04:16,180 --> 00:04:18,180 qui fait de nous arriver à ce point. 84 00:04:18,180 --> 00:04:22,390 La première chose est que mon client, le navigateur web, 85 00:04:22,390 --> 00:04:27,440 sur demande et après authentification, charges de l'interface graphique et les plug-ins 86 00:04:27,440 --> 00:04:30,170 de certains CDN, à partir de certaines Content Delivery Network. 87 00:04:30,170 --> 00:04:32,700 Cela peut être franchement n'importe où. 88 00:04:32,700 --> 00:04:35,390 >> Et cela est en fait séparée à partir de l'instance du sous-jacent. 89 00:04:35,390 --> 00:04:38,890 Il est important de réaliser que ceci est en fait juste un tas de fichiers statiques. 90 00:04:38,890 --> 00:04:42,600 Il ya un tas de JavaScript qui est téléchargé à partir du CDN 91 00:04:42,600 --> 00:04:45,200 sur mon navigateur, et tous de l'interface graphique que vous 92 00:04:45,200 --> 00:04:48,460 ici-- voir ce qui est vraiment KEY-- tous de l'interface graphique que vous voyez ici 93 00:04:48,460 --> 00:04:50,480 est exécuté sur le côté client. 94 00:04:50,480 --> 00:04:53,820 Tout ce que vous voyez dans l'espace de travail Cloud 9 95 00:04:53,820 --> 00:04:56,010 est effectivement fonctionner dans le navigateur. 96 00:04:56,010 --> 00:04:59,950 Et tout ce que vous envoyez le long de l'instance de base 97 00:04:59,950 --> 00:05:04,000 est en communication avec l'instance le long de cette deuxième canal séparé, 98 00:05:04,000 --> 00:05:07,240 et est ensuite enregistré sur cette instance de docker. 99 00:05:07,240 --> 00:05:09,660 >> Donc la raison pour laquelle je dis ceci est un exemple de docker 100 00:05:09,660 --> 00:05:12,650 est que la technologie sous-jacente est de ne pas utiliser des machines virtuelles, 101 00:05:12,650 --> 00:05:16,040 mais est plutôt en utilisant un technologie appelée docker, 102 00:05:16,040 --> 00:05:20,200 qui allows-- fondamentalement le plus proche l'analogie est une machine virtuelle. 103 00:05:20,200 --> 00:05:24,800 Mais il est subtilement différent en ce qu 'il y a 104 00:05:24,800 --> 00:05:28,900 beaucoup de possibilités pour exécuter une combinaison de docker différente 105 00:05:28,900 --> 00:05:30,760 cas sur une seule machine. 106 00:05:30,760 --> 00:05:34,660 Et ils peuvent être filés jusqu'à en succession très rapide. 107 00:05:34,660 --> 00:05:38,920 Il est pas tout à fait le plus stricte différenciation 108 00:05:38,920 --> 00:05:42,840 entre les différentes instances de docker car il ya dans des machines virtuelles, 109 00:05:42,840 --> 00:05:45,730 mais encore il ya beaucoup de la différenciation et la séparation 110 00:05:45,730 --> 00:05:48,330 entre ces différents cas. 111 00:05:48,330 --> 00:05:48,830 D'ACCORD. 112 00:05:48,830 --> 00:05:50,980 Ainsi, les deux étapes ici que sont importants pour réaliser 113 00:05:50,980 --> 00:05:57,370 est que lorsque nous allons à CS50.io, nous sommes télécharger l'interface graphique et les plug-ins, 114 00:05:57,370 --> 00:06:01,640 qui sont écrits en JavaScript, le dans le navigateur ou dans le navigateur. 115 00:06:01,640 --> 00:06:05,980 Et cela est peut-être un couple mégaoctets valeur de l'information. 116 00:06:05,980 --> 00:06:09,460 À ce moment, une fois que l'interface graphique a chargés et les plug-ins ont commencé, 117 00:06:09,460 --> 00:06:12,530 puis elle commence à communiquer avec l'instance de docker, qui ne 118 00:06:12,530 --> 00:06:15,210 avoir nécessairement être le même serveur. 119 00:06:15,210 --> 00:06:16,940 >> Maintenant, il ya une exception à cette. 120 00:06:16,940 --> 00:06:22,130 Nous pouvons en fait avoir à la fois la mécanisme de livraison pour l'interface graphique lui-même 121 00:06:22,130 --> 00:06:25,740 et l'instance de docker dans toutes le même serveur, qui 122 00:06:25,740 --> 00:06:29,660 est en fait quelque chose que nous faisons pour la version hors ligne de Cloud 9. 123 00:06:29,660 --> 00:06:33,470 Ceci est pas quelque chose que nous avons très médiatisé cet automne, 124 00:06:33,470 --> 00:06:35,930 mais nous ne disposons également d'un déconnecté version 125 00:06:35,930 --> 00:06:40,010 vous permet de télécharger une emballé version de toutes ces choses 126 00:06:40,010 --> 00:06:43,670 et vous permettent d'exécuter Couverture 9 dans un environnement déconnecté. 127 00:06:43,670 --> 00:06:48,325 >> Déménagement ce hors le nuage et sur votre machine locale a un certain impact. 128 00:06:48,325 --> 00:06:50,200 En particulier, vous ne ont plus la capacité 129 00:06:50,200 --> 00:06:52,280 de partager votre espace de travail avec les autres. 130 00:06:52,280 --> 00:06:58,630 Vous ne pouvez plus ouvrir de Cloud 9, et le CS50 IDE, depuis tout ordinateur 131 00:06:58,630 --> 00:07:02,950 et de voir les mêmes fichiers qui vous travaillez avec avant. 132 00:07:02,950 --> 00:07:06,310 Mais à la place, il fonctionne entièrement sur votre propre machine locale 133 00:07:06,310 --> 00:07:09,270 sans avoir besoin d'un accès à Internet. 134 00:07:09,270 --> 00:07:13,330 Mais encore, même dans ce modèle, même si nous avons une machine virtuelle 135 00:07:13,330 --> 00:07:15,200 qui est essentiellement l'exécution de ces choses. 136 00:07:15,200 --> 00:07:19,480 >> Nous avons un serveur distinct qui est fournir essentiellement le Cloud 9 137 00:07:19,480 --> 00:07:23,640 contenu, et ensuite nous avoir une instance de docker 138 00:07:23,640 --> 00:07:32,280 qui est responsable de la communication avec cette IDE pour le back-end. 139 00:07:32,280 --> 00:07:32,780 D'ACCORD. 140 00:07:32,780 --> 00:07:38,700 Ainsi, l'ensemble de l'interface graphique est écrit entièrement en JavaScript 141 00:07:38,700 --> 00:07:42,800 utilisant Node.js et le SDK Cloud 9, que nous arriverons à en seulement une minute. 142 00:07:42,800 --> 00:07:46,650 Et tous les plug-ins sont exécutés sur le côté client. 143 00:07:46,650 --> 00:07:51,780 Alors concentrons-nous alors une peu en supposant 144 00:07:51,780 --> 00:07:55,670 que cette première étape a effectivement complété avec succès, 145 00:07:55,670 --> 00:07:58,990 et ne regarder que cette instance de docker. 146 00:07:58,990 --> 00:08:01,220 >> Donc dans ce cas, ce est le moyen standard 147 00:08:01,220 --> 00:08:04,870 de penser à faire Cloud 9 plug-in développement est que vous allez 148 00:08:04,870 --> 00:08:07,940 à l'écriture de code qui sera être exécuté dans le navigateur de l'utilisateur, 149 00:08:07,940 --> 00:08:11,610 et vous avez la possibilité de utilisant des API pour communiquer 150 00:08:11,610 --> 00:08:16,470 avec l'instance de docker sous-jacente, exécuter du code là, et faire quelque chose 151 00:08:16,470 --> 00:08:18,860 que vous pouvez faire. 152 00:08:18,860 --> 00:08:22,000 Donc cela va être le contexte que nous allons 153 00:08:22,000 --> 00:08:24,340 être en utilisant pour le reste de cet exposé. 154 00:08:24,340 --> 00:08:26,400 Et il faut garder à l'esprit ce modèle. 155 00:08:26,400 --> 00:08:28,966 Ce sera très important en quelques minutes. 156 00:08:28,966 --> 00:08:30,840 Il ya un couple de liens que je veux vous montrer. 157 00:08:30,840 --> 00:08:34,150 Tout d'abord, a donné 9 Couverture beaucoup de documentation 158 00:08:34,150 --> 00:08:38,740 qui est assez bon, qui montre comment de faire du développement de base de plug-in. 159 00:08:38,740 --> 00:08:43,320 Donc, si vous allez à cette adresse URL, cloud9-sdk.readme.io, 160 00:08:43,320 --> 00:08:45,261 vous verrez la documentation là-bas. 161 00:08:45,261 --> 00:08:47,510 Et beaucoup de ces informations que vous êtes sur le point de voir 162 00:08:47,510 --> 00:08:50,310 peuvent également être trouvés là, et plus encore. 163 00:08:50,310 --> 00:08:55,880 Vous pouvez également trouver l'open source version de Cloud 9 à cette adresse URL, 164 00:08:55,880 --> 00:09:04,270 github.com/c9/core, que nous utilisons comme partie de la version hors ligne de l'IDE, 165 00:09:04,270 --> 00:09:07,540 de sorte que vous serez en mesure d'avoir la même expérience Cloud 9, 166 00:09:07,540 --> 00:09:09,660 mais d'une manière hors ligne. 167 00:09:09,660 --> 00:09:10,160 D'accord. 168 00:09:10,160 --> 00:09:15,560 Donc, nous allons jeter un oeil à un Cloud 9 réelle espace de travail ici. 169 00:09:15,560 --> 00:09:17,880 Et encore une fois, je tiens à souligner un certain nombre de choses. 170 00:09:17,880 --> 00:09:21,560 Ceci est, ici, un IDE de CS50 normale. 171 00:09:21,560 --> 00:09:26,830 Et je l'ai désactivé un moins Mode confortable sous le menu Affichage 172 00:09:26,830 --> 00:09:28,807 de sorte que je peux voir tous des options de menu. 173 00:09:28,807 --> 00:09:31,140 Ce que je veux vous montrer droit est maintenant un certain nombre de choses. 174 00:09:31,140 --> 00:09:33,140 Tout d'abord, si je vais dans les Préférences, puis 175 00:09:33,140 --> 00:09:37,040 cliquez sur Plug-in Manager, et tapez CS50 ici, 176 00:09:37,040 --> 00:09:40,590 nous pouvons voir qu'il ya, en fait, un couple de plug-ins que CS50 177 00:09:40,590 --> 00:09:46,280 ont été installés et notre course pour activer les modifications que nous avons 178 00:09:46,280 --> 00:09:48,670 vu pour la IDE CS50. 179 00:09:48,670 --> 00:09:51,450 >> À l'heure actuelle, il ya essentiellement deux plug-ins qui sont en cours d'exécution. 180 00:09:51,450 --> 00:09:54,980 Il ya un appelé Simple, qui est le mode simplifié qui 181 00:09:54,980 --> 00:10:00,020 vous permet de réduire le nombre des options de menu sur le haut, 182 00:10:00,020 --> 00:10:03,070 et ont cette soi-disant Mode moins à l'aise. 183 00:10:03,070 --> 00:10:07,280 Et puis il ya aussi CS50 Statistiques, qui est peut-être seulement un peu mal nommée. 184 00:10:07,280 --> 00:10:09,550 Parce que cela est ce que vous montre les informations 185 00:10:09,550 --> 00:10:10,850 sur l'espace de travail sous-jacente. 186 00:10:10,850 --> 00:10:13,560 Il injecte ces boutons le long de la partie supérieure droite. 187 00:10:13,560 --> 00:10:18,620 Il injecte aussi un élément de menu dans le élément de la fenêtre, dans le menu Fenêtre 188 00:10:18,620 --> 00:10:21,730 ici, CS50 IDE Infos. 189 00:10:21,730 --> 00:10:27,380 Et il est responsable de l'instanciation ce dialogue que nous avons vu ici, 190 00:10:27,380 --> 00:10:31,460 avec toutes les informations que nous sommes habitués à voir dans un CS50 IDE 191 00:10:31,460 --> 00:10:32,870 espace de travail. 192 00:10:32,870 --> 00:10:33,370 D'ACCORD. 193 00:10:33,370 --> 00:10:36,910 Donc, il ya effectivement un autre plug-in que nous avons développée ainsi. 194 00:10:36,910 --> 00:10:40,110 Et il ya une couple d'autres qui nous avons aussi pas rendues publiques. 195 00:10:40,110 --> 00:10:45,880 Mais l'un d'eux est le général plug-in qui permet de fonctionner GDB. 196 00:10:45,880 --> 00:10:50,190 Donc, l'un des aspects du Cloud 9 est qu'ils ont déjà fourni 197 00:10:50,190 --> 00:10:53,210 cette interface graphique pour mettre en œuvre un débogueur. 198 00:10:53,210 --> 00:10:57,360 Et l'un des plug-ins qui nous avons créé essentiellement 199 00:10:57,360 --> 00:11:02,380 crochets GDB avec ce GUI version basée d'un débogueur. 200 00:11:02,380 --> 00:11:07,680 Et est responsable de la médiation tout des demandes qu'un utilisateur peut avoir, 201 00:11:07,680 --> 00:11:10,310 entre enjambant ou créer des points d'arrêt ou quoi que ce soit 202 00:11:10,310 --> 00:11:15,390 le long de ces lignes, à traduire ce aux commandes GDB peut comprendre, 203 00:11:15,390 --> 00:11:16,920 la délivrance de ces commandes à GDB. 204 00:11:16,920 --> 00:11:19,260 Et dès que GDB émet une réponse, puis 205 00:11:19,260 --> 00:11:23,250 nous interprétons cela et jour l'interface graphique que nécessaire. 206 00:11:23,250 --> 00:11:25,130 >> Voilà probablement l'un des le plus compliqué 207 00:11:25,130 --> 00:11:28,840 des plug-ins, donc au lieu de ce que nous sommes me concentrer sur aujourd'hui est, en fait, 208 00:11:28,840 --> 00:11:34,590 Stats plug-in, et nous en parlerons un peu simple, aussi. 209 00:11:34,590 --> 00:11:39,100 Donc je l'ai mentionné avant, et je veux vraiment de faire très, très clair, qui encore une fois, 210 00:11:39,100 --> 00:11:41,600 tout cela que nous sommes voir ici est essentiellement 211 00:11:41,600 --> 00:11:43,300 fonctionnant sur le côté client. 212 00:11:43,300 --> 00:11:45,810 Nous voyons une fenêtre de terminal ci-dessous, et que, bien sûr, 213 00:11:45,810 --> 00:11:49,230 si nous taper des commandes dans que, qui sera ensuite publié 214 00:11:49,230 --> 00:11:50,690 à l'instance sous-jacente. 215 00:11:50,690 --> 00:11:55,280 De même, si nous ouvrons un nouveau fichier et taper des trucs dedans et l'enregistrer, 216 00:11:55,280 --> 00:11:58,240 ce fichier sera enregistré sur l'instance du sous-jacent. 217 00:11:58,240 --> 00:12:02,310 >> Mais l'éditeur lui-même, ce fenêtre de terminal lui-même, 218 00:12:02,310 --> 00:12:05,700 tout est mis en œuvre dans JavaScript et tout est un plug-in 219 00:12:05,700 --> 00:12:09,800 que l'on peut interagir avec, et donc modifier. 220 00:12:09,800 --> 00:12:11,450 Il ya beaucoup d'extensibilité ici. 221 00:12:11,450 --> 00:12:14,690 Je recommande de prendre un coup d'oeil au Cloud 9 compte GitHub 222 00:12:14,690 --> 00:12:17,790 pour voir la grande quantité de plug-ins qui sont disponibles, 223 00:12:17,790 --> 00:12:23,070 et à quel point beaucoup écrit du code est pour l'extensibilité. 224 00:12:23,070 --> 00:12:24,920 Donc, il ya quelque chose que je tiens à mentionner 225 00:12:24,920 --> 00:12:30,480 à ce sujet aussi bien, qui est qu'il ya beaucoup de-- il ya 226 00:12:30,480 --> 00:12:33,450 un grand nombre de fonctionnalités qui est à condition que dans les préférences 227 00:12:33,450 --> 00:12:37,970 fenêtre, que nous avons vu juste fait allusion il ya quelques minutes. 228 00:12:37,970 --> 00:12:43,690 >> Une des choses que nous pouvons faire en tant IDE développeurs, ou comme Cloud 9 développeurs, 229 00:12:43,690 --> 00:12:47,410 est effectivement injecter un peu panneaux de préférences de notre propre. 230 00:12:47,410 --> 00:12:50,660 Ainsi, le mode simple, ou le mode moins à l'aise, 231 00:12:50,660 --> 00:12:54,780 ainsi que les informations IDE, ou les statistiques de plug-in, 232 00:12:54,780 --> 00:12:58,560 chacun a une certaine préférence panneaux qui nous permettent de modifier 233 00:12:58,560 --> 00:13:00,620 le comportement de chacun de ceux-ci. 234 00:13:00,620 --> 00:13:04,140 Vous remarquerez que si je vais à la Préférences et aller dans les paramètres de l'utilisateur, 235 00:13:04,140 --> 00:13:07,100 il ya un onglet CS50, un qui dit que les informations IDE. 236 00:13:07,100 --> 00:13:09,810 Et je peux changer le informations fréquence de rafraîchissement. 237 00:13:09,810 --> 00:13:12,250 >> En effet, ce qui se passe dans les statistiques plug-in 238 00:13:12,250 --> 00:13:16,690 est que toutes les n secondes, où n-secondes est définie par cette préférence 239 00:13:16,690 --> 00:13:22,250 panneau, est en cours de récupération d'informations à partir de l'instance sous-jacente, étant envoyé 240 00:13:22,250 --> 00:13:25,490 Retour sur le côté client, le plug-in est alors 241 00:13:25,490 --> 00:13:28,650 interpréter l'information à partir de l'instance de sous-jacent 242 00:13:28,650 --> 00:13:31,470 et mettre à jour l'interface graphique que nécessaire. 243 00:13:31,470 --> 00:13:34,710 Nous pouvons voir que maintenant ce paramètre est réglé à 30 secondes, et que la valeur par défaut est. 244 00:13:34,710 --> 00:13:37,950 Mais je peux certainement changer avec quelle rapidité cela se produit juste 245 00:13:37,950 --> 00:13:40,520 en modifiant cette valeur. 246 00:13:40,520 --> 00:13:44,330 >> Maintenant une des choses intéressantes est que ce panneau de préférences, l'interface graphique, 247 00:13:44,330 --> 00:13:49,560 est vraiment juste une version GUI d'un grand nombre de paramètres sous-jacents 248 00:13:49,560 --> 00:13:52,220 qui sont présentés dans JSON. 249 00:13:52,220 --> 00:13:56,336 Donc, si je vais, par exemple, sous la CS50 Menu IDE, ou le menu Cloud 9, 250 00:13:56,336 --> 00:13:58,210 selon lequel la version que vous cherchez à, 251 00:13:58,210 --> 00:14:00,460 et aller à l'un de ces settings-- dans ce cas, 252 00:14:00,460 --> 00:14:03,420 le projet de la settings-- paramètres de projet dans ce cas 253 00:14:03,420 --> 00:14:07,740 applique à tous les paramètres pour ce seul espace de travail. 254 00:14:07,740 --> 00:14:11,620 Considérant que les paramètres utilisateur appliquent pour tous les espaces de travail 255 00:14:11,620 --> 00:14:15,110 que vous pourriez avoir dans votre compte. 256 00:14:15,110 --> 00:14:18,520 >> Ainsi, tout comme un aparté ici, pour être extra clair, 257 00:14:18,520 --> 00:14:22,570 il ya une séparation entre la deux, parce que même si nous avons par défaut 258 00:14:22,570 --> 00:14:26,490 avoir un espace de travail, qui est le CS50 IDE, si vous 259 00:14:26,490 --> 00:14:31,900 étaient à cliquer sur votre petit avatar ici et aller à tableau de bord, 260 00:14:31,900 --> 00:14:35,820 vous verrez que vous pouvez réellement créer des espaces supplémentaires ainsi. 261 00:14:35,820 --> 00:14:39,140 Vous pouvez voir ici que je dois un IDE 50 espace de travail, et aussi 262 00:14:39,140 --> 00:14:41,930 aux fins de la présente séminaire, un espace de travail 263 00:14:41,930 --> 00:14:45,084 appelé espace de travail, ce qui est ici. 264 00:14:45,084 --> 00:14:46,750 Donc de toute façon, je dois préférences différentes. 265 00:14:46,750 --> 00:14:49,910 Chacune d'entre elles pourraient avoir préférences distinctes du projet, 266 00:14:49,910 --> 00:14:54,091 mais les préférences de l'utilisateur sont partagé entre tous mes espaces de travail. 267 00:14:54,091 --> 00:14:55,840 Par ailleurs, cela est également très pratique si vous 268 00:14:55,840 --> 00:14:59,080 vouloir créer un espace de travail avec différentes options de personnalisation. 269 00:14:59,080 --> 00:15:01,640 Et il est très pratique pour créer un nouvel espace de travail. 270 00:15:01,640 --> 00:15:04,230 Et choisissez celui qui pourrait être pré-configuré d'une autre manière, 271 00:15:04,230 --> 00:15:07,000 peut-être pour PHP spécifiquement, ou Django spécifiquement. 272 00:15:07,000 --> 00:15:08,960 Ou même juste mesure. 273 00:15:08,960 --> 00:15:11,320 L'espace de travail CS50 modèle est celui que nous 274 00:15:11,320 --> 00:15:15,420 utilisation qui installe automatiquement Mise à jour 50 et tous les paramètres 275 00:15:15,420 --> 00:15:20,531 que nous avons là-bas, y compris tous les les plug-ins que nous avons pour l'IDE CS50. 276 00:15:20,531 --> 00:15:21,030 D'ACCORD. 277 00:15:21,030 --> 00:15:22,200 Mais revenons à cette. 278 00:15:22,200 --> 00:15:25,640 Encore une fois, il ya des projets paramètres, et ce sont ceux 279 00:15:25,640 --> 00:15:27,140 que nous étudions ici. 280 00:15:27,140 --> 00:15:29,056 Et remarquez qu'il y sont un tas de paramètres, 281 00:15:29,056 --> 00:15:32,720 nombre d'entre elles correspondent à des préférences panneaux, mais pas tous d'entre eux. 282 00:15:32,720 --> 00:15:40,800 Mais nous pouvons voir qu'ici, dans this-- oh Non, ai-je mis dans les paramètres de l'utilisateur? 283 00:15:40,800 --> 00:15:43,280 Peut-être que je l'ai mis dans les paramètres de l'utilisateur. 284 00:15:43,280 --> 00:15:45,480 Et cela, nous y voilà. 285 00:15:45,480 --> 00:15:49,840 Dans les paramètres de l'utilisateur, nous pouvons voir que nous avons une section de CS50, 286 00:15:49,840 --> 00:15:53,762 et ce sont écrites par ces Cloud 9 plug-ins 287 00:15:53,762 --> 00:15:54,720 que nous avons mis en place. 288 00:15:54,720 --> 00:15:57,400 Il est la plus simple à correspondre à celle simple plug-in, 289 00:15:57,400 --> 00:16:00,930 et celui qui les stats correspond à celle interface graphique 290 00:16:00,930 --> 00:16:02,440 version du panneau de préférences. 291 00:16:02,440 --> 00:16:05,740 Le taux de rafraîchissement, dans ce cas, est fixé à 20 secondes. 292 00:16:05,740 --> 00:16:09,740 >> Cela est d'autant, nous l'espérons, la débuts de certaines informations 293 00:16:09,740 --> 00:16:14,420 que nous allons réellement voir dans un petit peu plus en détail, momentanément. 294 00:16:14,420 --> 00:16:14,920 D'ACCORD. 295 00:16:14,920 --> 00:16:17,520 Donc, disons que nous voulons effectivement s'y mettre. 296 00:16:17,520 --> 00:16:20,600 Nous comprenons que tous les trucs ce qui se passe sur le côté client 297 00:16:20,600 --> 00:16:24,560 se fait réellement sur le navigateur, qui signifie que tous les plug-ins que je vous écris 298 00:16:24,560 --> 00:16:27,990 vont être écrit avec le navigateur à l'esprit. 299 00:16:27,990 --> 00:16:30,830 Et si je veux réellement faire rien sur l'espace de travail, 300 00:16:30,830 --> 00:16:33,360 Je vais peut-être avoir à initier une sorte de communication 301 00:16:33,360 --> 00:16:35,970 entre le navigateur et l'espace de travail pour être sûr 302 00:16:35,970 --> 00:16:38,212 que ce qui est réellement accompli. 303 00:16:38,212 --> 00:16:40,170 Mais disons que maintenant Je veux descendre à elle 304 00:16:40,170 --> 00:16:43,440 et effectivement créer mon premier plug-in. 305 00:16:43,440 --> 00:16:48,970 Eh bien, la façon dont vous seriez en mesure de le faire est en fait assez facile. 306 00:16:48,970 --> 00:16:51,370 Il est donné dans le SDK Cloud 9. 307 00:16:51,370 --> 00:16:55,520 Mais il est de prendre votre nom d'espace de travail existant, qui 308 00:16:55,520 --> 00:16:59,810 est l'URL que vous avez en haut de votre barre, et ajoutez la ligne suivante à elle. 309 00:16:59,810 --> 00:17:00,310 ? 310 00:17:00,310 --> 00:17:00,893 Sdk = 1 & Debub = 2. 311 00:17:00,893 --> 00:17:04,369 312 00:17:04,369 --> 00:17:08,260 Maintenant, ce que cela va permettre est que le SDK = 1 sera effectivement mis le SDK 313 00:17:08,260 --> 00:17:11,430 mode pour vrai, ce qui permettra un certain nombre de choses supplémentaires. 314 00:17:11,430 --> 00:17:15,770 Et debug = 2 permettra messages d'erreur être un peu plus bavard. 315 00:17:15,770 --> 00:17:20,170 >> Et donc si vous apportez le JavaScript console dans votre onglet de Chrome développeur, 316 00:17:20,170 --> 00:17:22,829 vous allez réellement être en mesure de voir beaucoup plus d'informations 317 00:17:22,829 --> 00:17:24,349 que vous autrement. 318 00:17:24,349 --> 00:17:28,310 Donc, je recommande d'activer ces deux en même temps, car elle vraiment 319 00:17:28,310 --> 00:17:31,170 est utile d'avoir tout cela Information Supplémentaire. 320 00:17:31,170 --> 00:17:35,330 Il est important de noter, cependant, que tournant sur la mise au point de valeur de 2 321 00:17:35,330 --> 00:17:38,120 signifie qu'il est très verbeux, et elle a effectivement 322 00:17:38,120 --> 00:17:42,590 sera quelque peu sensiblement ralentir votre IDE, en particulier lorsque le chargement 323 00:17:42,590 --> 00:17:45,657 ou quand le faire faire des tâches lourdes. 324 00:17:45,657 --> 00:17:46,740 Il suffit donc de garder cela à l'esprit. 325 00:17:46,740 --> 00:17:51,500 Il est utile pour le développement, mais vous peut ne pas vouloir le faire tout le temps. 326 00:17:51,500 --> 00:17:53,080 >> Donc, nous allons effectivement faire. 327 00:17:53,080 --> 00:17:59,374 Mais dans ce cas, je dois effectivement déjà mis en place un espace de travail avec cela. 328 00:17:59,374 --> 00:18:00,540 Voyons donc, sdk = 1 & debug = 2. 329 00:18:00,540 --> 00:18:03,140 330 00:18:03,140 --> 00:18:07,770 Avec un couple de plug-ins espérons déjà installé. 331 00:18:07,770 --> 00:18:08,340 D'accord. 332 00:18:08,340 --> 00:18:15,050 Donc, maintenant que je suis retourné sur le débogage du SDK Mode, remarquons que nous sommes en mode debug, 333 00:18:15,050 --> 00:18:20,430 afin que nous puissions regarder les outils de dev pour voir des erreurs, que je vais le faire hors de l'écran. 334 00:18:20,430 --> 00:18:23,110 Nous pouvons voir qu'il ya un tas d'erreurs ici. 335 00:18:23,110 --> 00:18:28,090 Maintenant, il est en fait assez commun pour Cloud 9 d'avoir un couple d'erreurs, 336 00:18:28,090 --> 00:18:30,680 et je ne voudrais pas vous inquiéter à leur sujet jusqu'à ce que vous 337 00:18:30,680 --> 00:18:32,930 voir quelque chose qui pourrait être spécifique au plug-in 338 00:18:32,930 --> 00:18:34,510 que vous arrive d'être créer. 339 00:18:34,510 --> 00:18:37,620 >> Donc, ici, par exemple, nous obtenons un couple de 404s-- pas été trouvé. 340 00:18:37,620 --> 00:18:42,910 Nous voyons que nous sommes incapables de charger certains informations hors de l'instance sous-jacente 341 00:18:42,910 --> 00:18:43,670 lui-même. 342 00:18:43,670 --> 00:18:46,545 Et il ya un tas de supplémentaires informations, mais la plupart de ce que nous sommes 343 00:18:46,545 --> 00:18:47,970 passe réellement à ignorer pour le moment. 344 00:18:47,970 --> 00:18:50,130 Parce que cela est assez un espace de travail commun pour 345 00:18:50,130 --> 00:18:53,200 d'avoir juste un couple d'erreurs. 346 00:18:53,200 --> 00:18:53,700 D'ACCORD. 347 00:18:53,700 --> 00:18:56,680 Je vais passer sur ce le chemin et de revenir ici. 348 00:18:56,680 --> 00:19:01,860 Et maintenant, la solution de facilité, le beau chose d'avoir ce développeur 349 00:19:01,860 --> 00:19:07,330 mode activé est qu'il me permet de créer facilement un nouveau plug-in. 350 00:19:07,330 --> 00:19:12,390 >> Ainsi, alors que avant que je ne l'ai pas avoir cette nouvelle option de plug-in disponibles, 351 00:19:12,390 --> 00:19:16,460 que nous pouvons voir si je reviens à mon mode développeur non plus ici, 352 00:19:16,460 --> 00:19:18,510 il n'y a aucun nouveau plug-in. 353 00:19:18,510 --> 00:19:23,220 En activant le mode SDK, je avoir un nouveau plug-in disponible 354 00:19:23,220 --> 00:19:25,660 et je peux facilement en créer un. 355 00:19:25,660 --> 00:19:28,160 Dans ce cas, il ya un couple des options différentes, simples, 356 00:19:28,160 --> 00:19:30,850 un plug-in vide, plein de plug-in, installateur, Cloud 9 bundle. 357 00:19:30,850 --> 00:19:33,030 Choisissons juste une vide plug-in pour l'instant 358 00:19:33,030 --> 00:19:37,670 de sorte que nous pouvons voir une très version simple d'un. 359 00:19:37,670 --> 00:19:41,520 >> Maintenant, remarquez que le long de la le côté gauche qui est là est maintenant 360 00:19:41,520 --> 00:19:45,080 quelque chose sous Favoris, est l'inscription d'un couple de plug-ins 361 00:19:45,080 --> 00:19:47,020 qui sont maintenant disponibles pour moi. 362 00:19:47,020 --> 00:19:50,420 Si je me dilate, nous allons être capable de voir ceux-ci. 363 00:19:50,420 --> 00:19:52,730 Maintenant, je veux vous faire remarquer quelque chose ici, ce qui 364 00:19:52,730 --> 00:19:58,260 est que ce ne sont pas réellement contenue dans le répertoire workspace 365 00:19:58,260 --> 00:20:03,190 Ubuntu sur mon instance sous-jacente, mais elle est présente sur le disque dur. 366 00:20:03,190 --> 00:20:06,330 Et où cela se trouve, parce ce qui est très utile de savoir, 367 00:20:06,330 --> 00:20:09,570 surtout si vous allez être faire quelque chose avec Git, 368 00:20:09,570 --> 00:20:16,870 où il se trouve est dans un dossier de .c9, / plugins. 369 00:20:16,870 --> 00:20:21,110 Donc, si je vais là-bas, nous pouvons voir que maintenant la liste des plug-ins qui sont ici 370 00:20:21,110 --> 00:20:26,390 correspond à la liste des plug-ins que je vu sur le côté gauche de mon espace de travail. 371 00:20:26,390 --> 00:20:28,610 >> Maintenant, par défaut, et cela est un peu étrange, 372 00:20:28,610 --> 00:20:31,760 par défaut lorsque je crée un nouveau plug-in dans un espace de travail, 373 00:20:31,760 --> 00:20:36,620 elle crée ce plug-in que par défaut a un nom d'un trait de soulignement. 374 00:20:36,620 --> 00:20:39,760 Généralement qui pourrait causer certains problèmes. 375 00:20:39,760 --> 00:20:42,340 Donc, la prochaine étape très que je accomplissent généralement 376 00:20:42,340 --> 00:20:45,880 est simplement de supprimer cette plug-in particulier 377 00:20:45,880 --> 00:20:52,810 et ne laisser que le simple plug-in que il était initialement, plugin.simple. 378 00:20:52,810 --> 00:20:55,430 Et qui est le seul qui est là. 379 00:20:55,430 --> 00:20:55,930 D'ACCORD. 380 00:20:55,930 --> 00:20:58,380 >> Alors qu'est-ce que cela ressemble? 381 00:20:58,380 --> 00:21:01,210 Eh bien, cela est, à nouveau, un paquet JavaScript 382 00:21:01,210 --> 00:21:05,220 qui comprend certains fichiers, y compris un fichier plugin.js, où 383 00:21:05,220 --> 00:21:07,700 le contenu principal de mon plug-in est situé, 384 00:21:07,700 --> 00:21:10,590 un fichier package.json, qui précise effectivement 385 00:21:10,590 --> 00:21:13,760 certaines métadonnées à propos de ce plug-in, tel qui est l'auteur, 386 00:21:13,760 --> 00:21:19,240 toute information supplémentaire à ce sujet, un description du plug-in, et ainsi de suite. 387 00:21:19,240 --> 00:21:22,190 Et aussi par défaut, il crée un fichier README vierge, 388 00:21:22,190 --> 00:21:26,100 et un fichier vide de test pour vous créer de la documentation supplémentaire, 389 00:21:26,100 --> 00:21:29,430 et d'un harnais de test si vous souhaitez le faire. 390 00:21:29,430 --> 00:21:34,160 >> Donc, nous allons juste jeter un oeil à la première, très rapidement, au fichier package.json. 391 00:21:34,160 --> 00:21:38,240 Il est assez facile d'aller seulement à travers et remplir les zones de cette 392 00:21:38,240 --> 00:21:42,510 que vous voulez remplir, comme fournir un nom, donner une description, 393 00:21:42,510 --> 00:21:45,010 itérer le numéro de version de temps en temps, de fournir 394 00:21:45,010 --> 00:21:47,570 un auteur pour chaque personne qui contribue, 395 00:21:47,570 --> 00:21:53,000 ajoutez-les aux contributeurs section, et le reste de ce que vous 396 00:21:53,000 --> 00:21:56,390 peut à peu près juste laisser comme il est pour le moment. 397 00:21:56,390 --> 00:21:58,490 >> Il ya une chose qui est important de noter, 398 00:21:58,490 --> 00:22:04,990 qu'en vertu de la section des plug-ins, il ya une clé appelé plug-in. 399 00:22:04,990 --> 00:22:11,800 Et cela est adaptée au nom de le fichier JavaScript appelé plugin.js. 400 00:22:11,800 --> 00:22:18,290 Voilà donc comment Cloud 9 sait, quand il lit ce fichier de package.json, qui 401 00:22:18,290 --> 00:22:20,720 js des fichiers à charger réellement. 402 00:22:20,720 --> 00:22:25,440 Si je crée des fichiers js supplémentaires ou veux renommer ce fichier js de plug-in, 403 00:22:25,440 --> 00:22:30,380 Je dois aussi changer dans le fichier de package.json. 404 00:22:30,380 --> 00:22:33,660 >> Toutes les questions de l'auditoire? 405 00:22:33,660 --> 00:22:34,160 Non. 406 00:22:34,160 --> 00:22:38,100 Ce qui est une personne suivante avec moi jusqu'ici. 407 00:22:38,100 --> 00:22:38,760 >> D'ACCORD. 408 00:22:38,760 --> 00:22:42,300 Donc, en fait, je l'ai créé un quelques plug-ins déjà, 409 00:22:42,300 --> 00:22:44,100 Je pense que, dans cet espace de travail. 410 00:22:44,100 --> 00:22:53,800 Alors débarrassons de certains de ceux-ci, ajouter sdk = 1 & debug = 2, recharger cet espace de travail, 411 00:22:53,800 --> 00:22:58,780 et nous allons voir si nous avoir ces plug-ins dès maintenant. 412 00:22:58,780 --> 00:23:01,430 C9 / plugins. 413 00:23:01,430 --> 00:23:01,930 Et c'est parti. 414 00:23:01,930 --> 00:23:06,910 Nous pouvons voir maintenant dans mes C9 / plugins de cette l'un, nous avons plugin.1 et plugin.2. 415 00:23:06,910 --> 00:23:15,260 Donc, nous allons juste intensifier the-- il suffit d'augmenter le montant de difficulté 416 00:23:15,260 --> 00:23:16,660 dans chacun de ces plug-ins. 417 00:23:16,660 --> 00:23:20,140 Mais ici, si je crée un nouveau plug-in, Je peux ajouter à mes favoris. 418 00:23:20,140 --> 00:23:25,560 Et je vais supprimer ceux des le système de fichiers sous-jacent. 419 00:23:25,560 --> 00:23:28,050 >> Enlevons cela. 420 00:23:28,050 --> 00:23:33,206 Maintenant, si je ouvrir mon premier plug-in, et plugin.js ouvertes, 421 00:23:33,206 --> 00:23:39,980 nous pouvons voir ici le sous-jacent version simple d'un plug-in. 422 00:23:39,980 --> 00:23:42,170 Permettez-moi de revenir effectivement à cet autre espace de travail 423 00:23:42,170 --> 00:23:47,160 parce que vous pouvez au moins, voir ici, ce un plug-in vierge ressemble réellement. 424 00:23:47,160 --> 00:23:51,810 Donc, sous le capot, cela ressemble très similaire à la technologie appelée, 425 00:23:51,810 --> 00:23:53,780 Je pense, il est RequireJS. 426 00:23:53,780 --> 00:23:56,000 Notez que cela ne vraiment regarder, peut-être, 427 00:23:56,000 --> 00:23:59,150 identique à un autre JavaScript les fichiers que nous pourrions avoir vu. 428 00:23:59,150 --> 00:24:04,250 Mais à la place, il ya un couple de tout lignes de base qu'il a effectivement. 429 00:24:04,250 --> 00:24:06,900 >> Toutes ces choses est la première interprété par l'IDE, 430 00:24:06,900 --> 00:24:09,940 mais il est pas vraiment courir jusqu'à spécifié. 431 00:24:09,940 --> 00:24:13,610 Et je vais vous dire que quand signifie en réalité dans un instant. 432 00:24:13,610 --> 00:24:17,840 Mais remarquez que ici il ya un main.consumes ligne à la ligne 2, 433 00:24:17,840 --> 00:24:23,270 et cette liste de tous les plug-ins que ce plug-in est dépendant. 434 00:24:23,270 --> 00:24:27,150 Donc, par défaut, nous faisons peut-être pas d'avoir toutes les dépendances sur d'autres plug-ins, 435 00:24:27,150 --> 00:24:30,530 mais quand nous avons réellement besoin pour dépendra de fonctionnalités fournies 436 00:24:30,530 --> 00:24:34,900 par d'autres plug-ins dans l'IDE, nous avons besoin de la liste de ces plug-ins 437 00:24:34,900 --> 00:24:36,890 dans la ligne de main.consumes. 438 00:24:36,890 --> 00:24:39,230 Et puis nous devons les relier au code 439 00:24:39,230 --> 00:24:42,860 ci-dessous, qui je vais vous montrer en seulement un moment sur la façon dont nous pouvons faire cela. 440 00:24:42,860 --> 00:24:46,100 >> Donne une Main.provides nommer à ce plug-in 441 00:24:46,100 --> 00:24:49,190 que d'autres plug-ins pourrait utiliser dans leur ligne de consomme. 442 00:24:49,190 --> 00:24:52,480 Donc dans ce cas, mon plug-in est juste placé là par défaut, 443 00:24:52,480 --> 00:24:55,820 et nous devrions changer cela pour être applicable à notre propre plug-in, 444 00:24:55,820 --> 00:24:57,540 comme nous le verrons dans tout moment. 445 00:24:57,540 --> 00:25:01,230 Maintenant, ici, dans la fonction principale, cette fonction principale 446 00:25:01,230 --> 00:25:05,630 est réellement courir et interprété, mais il ne fait réellement beaucoup. 447 00:25:05,630 --> 00:25:08,970 Il obtient simplement tout mis en place, mais il ne fait pas le commencer plug-in, 448 00:25:08,970 --> 00:25:11,220 malgré ce que le nom sonne comme. 449 00:25:11,220 --> 00:25:14,690 Ce qui se passe réellement à travers une séquence de procédés que 450 00:25:14,690 --> 00:25:16,820 figurent au long de ce plug-in. 451 00:25:16,820 --> 00:25:20,830 >> Donc, si je fais défiler vers le bas, nous pouvons voir que nous avons un cycle de vie où 452 00:25:20,830 --> 00:25:25,100 sur un événement appelé la charge, ou d'un événement appelé déchargement, 453 00:25:25,100 --> 00:25:26,940 certains événements se produisent réellement. 454 00:25:26,940 --> 00:25:33,500 Il est vraiment ici alors que le plug-in commence que ces méthodes sont appelées. 455 00:25:33,500 --> 00:25:37,240 Alors, soyons un peu plus concrète à ce sujet et regarder un exemple. 456 00:25:37,240 --> 00:25:41,010 Voici donc pour plugin.1, ce nous sommes fondamentalement allons faire 457 00:25:41,010 --> 00:25:46,010 est de créer un élément de menu appelé CS50 Séminaire de dialogue 1-- 458 00:25:46,010 --> 00:25:48,070 parce que nous avons deux eux-- et nous allons 459 00:25:48,070 --> 00:25:50,300 de l'injecter dans le menu Fenêtre. 460 00:25:50,300 --> 00:25:54,590 Et lorsque l'on clique dessus, nous sommes va ouvrir un dialogue qui 461 00:25:54,590 --> 00:25:56,290 nous montre quelques informations très basiques. 462 00:25:56,290 --> 00:25:58,050 >> Dans ce cas, tout un monde de bonjour. 463 00:25:58,050 --> 00:26:01,880 Donc, cela est très simple bonjour dialogue mondial 464 00:26:01,880 --> 00:26:05,260 que nous pouvons mettre en œuvre comme un plug-in dans Cloud 9. 465 00:26:05,260 --> 00:26:07,960 Donc, nous allons voir comment cela ressemble réellement. 466 00:26:07,960 --> 00:26:12,730 Nous intervenons à travers elle, tout simplement assez rapidement donc nous 467 00:26:12,730 --> 00:26:15,580 peut regarder le prochain plug-in ainsi. 468 00:26:15,580 --> 00:26:19,510 Notez que nous sommes ici consommer une variété de plug-ins. 469 00:26:19,510 --> 00:26:26,080 Nous consommer un dialogue plug-in, les commandes, les menus et l'interface utilisateur. 470 00:26:26,080 --> 00:26:30,440 On dirait que je suis effectivement consommais le dialogue à deux reprises, afin que je puisse retirer cela. 471 00:26:30,440 --> 00:26:32,560 >> Et remarquez que la manière que je les reliant, 472 00:26:32,560 --> 00:26:37,940 cette est une sorte de métadonnées qui est dit le système de plug-in à quelles exigences 473 00:26:37,940 --> 00:26:41,480 sont effectivement nécessaire pour ce plug-in à charger. 474 00:26:41,480 --> 00:26:46,400 Il est également important de noter que l'ordre dans lequel les plug-ins sont chargés 475 00:26:46,400 --> 00:26:48,300 ne sont pas garanties. 476 00:26:48,300 --> 00:26:53,400 Mais ce qui est garanti est que si je préciser certaines plug-in comme une exigence, 477 00:26:53,400 --> 00:26:56,900 ce plug-in sera chargé avant celui-ci est chargé. 478 00:26:56,900 --> 00:27:00,390 >> Cela signifie donc que si votre plug-in nécessite certaines fonctionnalités d' 479 00:27:00,390 --> 00:27:04,380 par autre chose dans l'IDE, vous devriez être sûr que vos plug-in consomme 480 00:27:04,380 --> 00:27:09,260 ce plug-in afin que les dépendances sont certains de créer votre plug-in, 481 00:27:09,260 --> 00:27:15,010 ou instancier votre plug-in, seulement après ce cadre existant existe. 482 00:27:15,010 --> 00:27:18,870 Donc ici, je l'ai mentionné la métadonnées pour le gestionnaire de plug-in, 483 00:27:18,870 --> 00:27:20,990 lesquels je vais consommer. 484 00:27:20,990 --> 00:27:24,910 Et dans la fonction principale ici, Je vais ensuite vous connecter 485 00:27:24,910 --> 00:27:30,240 mon code pour ces plug-ins importés. 486 00:27:30,240 --> 00:27:33,420 >> Donc je vais juste créer des variables qui 487 00:27:33,420 --> 00:27:36,620 correspondre les noms de chacune des personnes afin que je peux très rapidement référencer 488 00:27:36,620 --> 00:27:37,840 tout au long de mon code. 489 00:27:37,840 --> 00:27:41,840 La raison pour laquelle je l'importation dialogue est parce que je veux que mon plug-in 490 00:27:41,840 --> 00:27:44,560 d'agir comme un plug-in de dialogue. 491 00:27:44,560 --> 00:27:49,320 Et la façon dont je suis capable de le faire est, bien sûr, 492 00:27:49,320 --> 00:27:52,740 connecter mon code pour le dialogue plug-in en l'important 493 00:27:52,740 --> 00:27:57,210 puis en spécifiant par la création d'une nouvelle variable de dialogue 494 00:27:57,210 --> 00:28:00,460 et le reliant à celui importé plug-in. 495 00:28:00,460 --> 00:28:04,820 Et puis en définissant mon plug-in comme un nouveau dialogue. 496 00:28:04,820 --> 00:28:07,650 >> Donc, dans l'initialisation, je vouloir définir mon plug-in. 497 00:28:07,650 --> 00:28:10,440 Et cette variable appelé plug-in vous verrez 498 00:28:10,440 --> 00:28:14,030 est simplement utilisé couramment tout au long de Cloud 9 plug-ins. 499 00:28:14,030 --> 00:28:16,980 Je vais d'instancier une nouvelle dialogue avec certains attributs, 500 00:28:16,980 --> 00:28:22,300 lui donner un nom spécifique, dire qu'il est possible pour les utilisateurs de fermer. 501 00:28:22,300 --> 00:28:24,960 Que ça va montrer un peu dans x le coin supérieur droit, 502 00:28:24,960 --> 00:28:27,529 ou un petit bouton dans le coin inférieur droit. 503 00:28:27,529 --> 00:28:30,570 Si oui ou non je peux sélectionner le texte à partir de il, ce que le titre de ce dialogue 504 00:28:30,570 --> 00:28:32,400 serait, et ainsi de suite. 505 00:28:32,400 --> 00:28:36,330 Maintenant, cela définit simplement le dialogue, mais il ne montre pas encore il. 506 00:28:36,330 --> 00:28:40,780 Je dois effectivement de définir une action pour qu'il soit représenté. 507 00:28:40,780 --> 00:28:43,490 >> Et encore une fois, je vous encourage à jetez un oeil à la SDK Cloud 9, 508 00:28:43,490 --> 00:28:46,930 car il existe une variété de dialogues et ils sont très bien documentés. 509 00:28:46,930 --> 00:28:50,500 Vous pouvez voir les différents types qu'il ya, et de les utiliser 510 00:28:50,500 --> 00:28:55,380 dans tout ce plug-in vous avez à l'esprit. 511 00:28:55,380 --> 00:28:58,790 Maintenant, il va y avoir une section de charge, et cette charge 512 00:28:58,790 --> 00:29:03,390 fonction que vous vous rappelez est utilisée par le cycle de vie plug-in 513 00:29:03,390 --> 00:29:07,060 en fait tout à instancier et d'obtenir tout prêt à aller. 514 00:29:07,060 --> 00:29:11,440 Maintenant, quand ce plug-in charge, je ne le font pas veulent qu'il apparaisse immédiatement un dialogue, 515 00:29:11,440 --> 00:29:14,160 parce que ce plug-in va charger avec le reste de l'IDE. 516 00:29:14,160 --> 00:29:17,850 Et quand je charge qui IDE, je ne veux pas le dialogue pour afficher automatiquement. 517 00:29:17,850 --> 00:29:24,170 Je veux seulement pour montrer quand je clique sur l'option de menu dans mon élément de menu Fenêtre 518 00:29:24,170 --> 00:29:26,760 que je vais ajouter à momentanément. 519 00:29:26,760 --> 00:29:29,480 >> Donc, il ya deux étapes distinctes ici qui doivent se produire. 520 00:29:29,480 --> 00:29:32,640 Je dois créer un commande, et la commande 521 00:29:32,640 --> 00:29:37,940 sera responsable de la réalité montrant le dialogue sur le Cloud 9 IDE. 522 00:29:37,940 --> 00:29:42,670 Et puis-je me connecter, je avoir à créer un nouveau menu de la fenêtre 523 00:29:42,670 --> 00:29:46,070 article, qui exécute cette commande. 524 00:29:46,070 --> 00:29:49,740 De sorte que lorsque je clique sur cette fenêtre élément de menu, cette commande est ensuite exécuté 525 00:29:49,740 --> 00:29:52,290 et donc mon dialogue apparaît ensuite. 526 00:29:52,290 --> 00:29:55,690 Et si cela est effectivement une jolie belle façon de penser. 527 00:29:55,690 --> 00:30:01,480 >> Parce que d'abord, je peux créer une commande dont le nom est CS50 Séminaire de dialogue 1, 528 00:30:01,480 --> 00:30:04,860 qui procure une certaine contexte général pour cela. 529 00:30:04,860 --> 00:30:08,930 Et le bit important ici est de remarquer l'attribut EXEC, qui 530 00:30:08,930 --> 00:30:15,160 énumère une fonction qui sera appelée dans mon plug-in lorsque cette commande est exécutée. 531 00:30:15,160 --> 00:30:21,980 Donc, cette commande est une sorte de a-- il est juste un nuage arbitraire 9 532 00:30:21,980 --> 00:30:25,780 commande qui est disponible à toute Cloud 9 plug-in. 533 00:30:25,780 --> 00:30:30,290 Mais la fonction réelle qu'il est aller à appeler lorsque cette commande est exécutée 534 00:30:30,290 --> 00:30:35,010 est la fonction show dialogue dans mon dossier plugin.js. 535 00:30:35,010 --> 00:30:38,550 >> Et nous pouvons réellement voir ces plug-ins et la liste 536 00:30:38,550 --> 00:30:45,480 de commandes qui sont disponibles pour nous dans Préférences, faites défiler tout le chemin down-- 537 00:30:45,480 --> 00:30:48,180 Voyons, voyons-nous réellement faire cela maintenant? 538 00:30:48,180 --> 00:30:53,180 Plug-in Manager, Non, je pense qu'il est i-- certainement quelque part par ici. 539 00:30:53,180 --> 00:31:00,016 Eh bien, il ya une liste de commandes quelque part, mais je dois avoir, 540 00:31:00,016 --> 00:31:01,140 Je l'ai oublié où il est. 541 00:31:01,140 --> 00:31:02,430 Alors OK, nous allons poursuivre. 542 00:31:02,430 --> 00:31:02,930 D'accord. 543 00:31:02,930 --> 00:31:05,790 Donc, nous avons une liste de commandes qui sont à notre disposition, 544 00:31:05,790 --> 00:31:08,550 et les commandes sont ces juste arbitraire Cloud 9 545 00:31:08,550 --> 00:31:10,870 commandes qui exécutent du code spécifique. 546 00:31:10,870 --> 00:31:13,620 Il suffit donc de garder cela à l'esprit, que nous allons lancer la boîte de dialogue de spectacle 547 00:31:13,620 --> 00:31:15,640 fonctionner momentanément. 548 00:31:15,640 --> 00:31:19,740 Maintenant, quand je veux vraiment ajouter un menu article, je peux ajouter que l'article par le chemin, 549 00:31:19,740 --> 00:31:25,570 et il suffit de spécifier exactement où je veux qu'il soit, Séminaire de fenêtre / CS50 Dialog 1. 550 00:31:25,570 --> 00:31:28,380 Et à ce moment, je veux pour créer un nouvel élément 551 00:31:28,380 --> 00:31:32,040 va exécuter une commande, CS50 Séminaire de dialogue 1. 552 00:31:32,040 --> 00:31:36,140 Notez que encore une fois, cela est le Cloud 9 commande Je ai créé juste au-dessus. 553 00:31:36,140 --> 00:31:38,630 >> Maintenant, je veux aussi créer un petit diviseur, 554 00:31:38,630 --> 00:31:42,260 et donc je peux faire la même chose dans la ligne suivante. 555 00:31:42,260 --> 00:31:46,040 Maintenant, vous remarquerez peut-être que partie de la définition de cet élément de menu, 556 00:31:46,040 --> 00:31:48,200 il ya un certain nombre qui lui est associée 557 00:31:48,200 --> 00:31:51,260 dit réellement où exactement Je veux que le point de menu soit 558 00:31:51,260 --> 00:31:53,441 situé dans la liste des menus. 559 00:31:53,441 --> 00:31:55,190 Mais vous remarquerez peut- que je fais pas réellement 560 00:31:55,190 --> 00:31:59,540 voir les numéros avec ces menus, par défaut. 561 00:31:59,540 --> 00:32:04,630 Donc, il ya une petite chose cachée qui nous pouvons faire, un peu de changement à notre URL. 562 00:32:04,630 --> 00:32:12,920 Donc, en plus SDK = 1 & debug = 2, Je vais mettre menu pour 1-- 563 00:32:12,920 --> 00:32:14,690 et nous espérons qu'il est menu, pas de menus. 564 00:32:14,690 --> 00:32:17,001 Oh, il est menus = 1. 565 00:32:17,001 --> 00:32:17,500 Attendez. 566 00:32:17,500 --> 00:32:20,150 567 00:32:20,150 --> 00:32:24,690 >> Et ce que nous allons voir à ce que le rechargement IDE est que je suis toujours en mode de débogage, 568 00:32:24,690 --> 00:32:27,540 mais maintenant il ya des numéros associé à tous les menus. 569 00:32:27,540 --> 00:32:29,630 Et cela vous dit exactement ce que le nombre 570 00:32:29,630 --> 00:32:34,730 est lorsque vous essayez d'injecter quelque chose de n'importe où dans ce système de menu. 571 00:32:34,730 --> 00:32:40,365 Ainsi, dans le menu Fenêtre, je peux voir que l'article 45 est collaborer, 572 00:32:40,365 --> 00:32:43,820 et l'article 38 avant qu'il ne soit installateur. 573 00:32:43,820 --> 00:32:47,530 Alors, quand je veux pour injecter un élément entre les deux, 574 00:32:47,530 --> 00:32:50,570 Je voudrais juste sélectionner un numéro entre ces deux éléments. 575 00:32:50,570 --> 00:32:56,200 Donc, je choisi 41 et inséré mon séminaire Dialog article 1 du menu à cet endroit. 576 00:32:56,200 --> 00:33:03,640 >> Et voilà pourquoi ce numéro qui apparaît ici est le numéro 41. 577 00:33:03,640 --> 00:33:08,010 Tel est le lieu de cela élément de menu dans le menu Cloud 9. 578 00:33:08,010 --> 00:33:11,045 Maintenant même, je voulais pour créer un diviseur 579 00:33:11,045 --> 00:33:13,920 et ajoutez-le afin qu'il y ait une belle division entre chacun de ces menus 580 00:33:13,920 --> 00:33:14,490 Article (s. 581 00:33:14,490 --> 00:33:18,600 Donc je ajouté que à l'emplacement 43. 582 00:33:18,600 --> 00:33:20,260 Jusqu'ici, tout va bien, je l'espère? 583 00:33:20,260 --> 00:33:23,920 Alors maintenant, nous allons effectivement Regardons le code spécifique dans le dialogue de spectacle 584 00:33:23,920 --> 00:33:28,050 qui est en fait responsable pour l'ouverture de cette fenêtre de dialogue. 585 00:33:28,050 --> 00:33:32,710 >> Défilement vers le bas, je vois que je veux d'avoir cette boîte de dialogue fonction de spectacle, 586 00:33:32,710 --> 00:33:34,730 et il est extrêmement simple. 587 00:33:34,730 --> 00:33:38,570 Je vais courir le spectacle méthode sur la variable de plug-in. 588 00:33:38,570 --> 00:33:43,900 Et rappelez-vous que nous avons défini cette plug-in de variable ci-dessus comme un dialogue. 589 00:33:43,900 --> 00:33:48,530 Donc bar plug-in, dans ce cas, est-ce objet que nous avons défini en interne. 590 00:33:48,530 --> 00:33:53,030 Et il va y avoir un nouveau dialogue contenues dans ce plug-in. 591 00:33:53,030 --> 00:33:57,020 Et donc nous avons fait ce référencé plug-in variable dans de nombreux endroits 592 00:33:57,020 --> 00:33:59,790 dans un Cloud 9 typique environnement de développement. 593 00:33:59,790 --> 00:34:00,867 >> Nous allons voir ici. 594 00:34:00,867 --> 00:34:03,450 Notez que comme nous défiler vers le bas, il ya des cycles de vie supplémentaires. 595 00:34:03,450 --> 00:34:06,970 Alors que ceux-ci répondent remarquer à des événements qui sont déclenchés 596 00:34:06,970 --> 00:34:10,500 par cet objet, cet objet de dialogue. 597 00:34:10,500 --> 00:34:12,710 Par défaut, il ya charger et décharger, ce qui 598 00:34:12,710 --> 00:34:14,760 sont disponibles à tous Cloud 9 plug-ins. 599 00:34:14,760 --> 00:34:17,139 Mais dans le cas de ce dialogue, il est 600 00:34:17,139 --> 00:34:19,139 un autre événement qui peut feu ainsi appelé 601 00:34:19,139 --> 00:34:23,239 Dessiner, qui est déclenché lorsque que est sur le point d'être dessiné à l'écran, 602 00:34:23,239 --> 00:34:27,239 en première instance du dialogue montrant. 603 00:34:27,239 --> 00:34:29,590 >> Alors, quand il est en fait va être montré, 604 00:34:29,590 --> 00:34:31,739 il va nous fournir un certain HTML. 605 00:34:31,739 --> 00:34:34,710 Et en utilisant simplement la norme Pratiques HTML pouvons-nous 606 00:34:34,710 --> 00:34:41,030 injecter des informations très simple, notre monde de bonjour, dans ce dialogue. 607 00:34:41,030 --> 00:34:47,780 Donc, si nous défiler vers le haut, nous pouvons voir ensuite la procession des choses 608 00:34:47,780 --> 00:34:48,989 qu'il est produise. 609 00:34:48,989 --> 00:34:54,070 Nous avons d'abord créé une commande Cloud 9 que lorsqu'il est exécuté par Cloud 9, 610 00:34:54,070 --> 00:34:55,765 va tirer cette fonction. 611 00:34:55,765 --> 00:34:58,390 Il va lancer cette fonction appelé spectacle dialogue, que je l'ai 612 00:34:58,390 --> 00:34:59,720 écrit dans mon code. 613 00:34:59,720 --> 00:35:04,350 >> Je créé un élément de menu et attachée à ce que même commande 614 00:35:04,350 --> 00:35:08,550 que lorsque cet élément est cliqué dans le menu, cette commande est ensuite exécuter 615 00:35:08,550 --> 00:35:10,780 et que la fonction est ensuite exécuté. 616 00:35:10,780 --> 00:35:14,080 Et à l'intérieur de la fonction que je suis aller juste pour appeler the-- je suis 617 00:35:14,080 --> 00:35:17,250 aller juste pour exécuter le spectacle méthode de ce plug-in, qui 618 00:35:17,250 --> 00:35:20,800 va premier appel la méthode de tirage au sort, et aller 619 00:35:20,800 --> 00:35:28,050 pour tirer cette méthode en bas, la dessiner gestionnaire d'événements, dans notre cycle de vie. 620 00:35:28,050 --> 00:35:30,820 Et puis il sera en fait montrer le dialogue. 621 00:35:30,820 --> 00:35:34,870 >> Il ya aussi une méthode de peau, de sorte que si je dois la possibilité de se cacher 622 00:35:34,870 --> 00:35:37,610 mon dialogue, je peux faire la même chose. 623 00:35:37,610 --> 00:35:42,060 Voilà donc à peu près tout pour obtenir tout cela pour travailler. 624 00:35:42,060 --> 00:35:45,160 Notez que si l'on est défiler vers le bas en outre il ya une API publique de gel. 625 00:35:45,160 --> 00:35:51,020 Cela en dit fondamentalement juste que je veulent que ces méthodes à efficacement 626 00:35:51,020 --> 00:35:56,670 être public, mais pas overwriteable en dehors du contexte de ce plug-in. 627 00:35:56,670 --> 00:36:00,410 Et ci-dessous, tout en bas, est peut-être la dernière chose 628 00:36:00,410 --> 00:36:03,180 que nous avons vraiment besoin de payer beaucoup d'attention à ici, ce qui 629 00:36:03,180 --> 00:36:09,540 est que nous allons enregistrer notre plug-in avec le nom Séminaire C9 1, 630 00:36:09,540 --> 00:36:11,920 et l'objet plug-in. 631 00:36:11,920 --> 00:36:14,870 >> Qui, comme vous vous en souvenez, est ce plug-in ce plug-in 632 00:36:14,870 --> 00:36:18,200 objet que nous avons définissons tout au long de la totalité de cette source 633 00:36:18,200 --> 00:36:18,840 code. 634 00:36:18,840 --> 00:36:23,790 Et Séminaire C9 1 est le chaîne qui nous avons promis 635 00:36:23,790 --> 00:36:26,350 de fournir au sommet de cette définition. 636 00:36:26,350 --> 00:36:29,280 637 00:36:29,280 --> 00:36:29,780 D'ACCORD. 638 00:36:29,780 --> 00:36:34,160 Alors disons il rampe jusqu'à un peu et voir si nous pouvons faire quelque chose 639 00:36:34,160 --> 00:36:36,020 un peu plus intéressant. 640 00:36:36,020 --> 00:36:38,350 Maintenant, ceci est seulement si grand. 641 00:36:38,350 --> 00:36:41,380 Je veux dire, cela est, il est en fait assez cool qui en si peu de lignes de code, 642 00:36:41,380 --> 00:36:45,570 Peut-on modifier l'IDE existant et ajouter un élément de menu existant 643 00:36:45,570 --> 00:36:48,850 ou d'ajouter un nouvel élément de menu, ajouter un commande, et de montrer un dialogue, 644 00:36:48,850 --> 00:36:51,040 et juste un tas de fonctionnalité qui existe. 645 00:36:51,040 --> 00:36:54,550 Il est vraiment assez grande. 646 00:36:54,550 --> 00:36:59,470 >> Mais il ne fait pas beaucoup car il ne peut pas communiquer avec le sous-jacent Ubuntu 647 00:36:59,470 --> 00:37:00,450 exemple. 648 00:37:00,450 --> 00:37:02,560 Donc, disons que je voulez réellement savoir 649 00:37:02,560 --> 00:37:05,400 quelques informations sur le sous-jacente par exemple Ubuntu, 650 00:37:05,400 --> 00:37:08,260 comme les statistiques plug-in ne. 651 00:37:08,260 --> 00:37:11,090 Donc, nous allons jeter un oeil à un peu plus d'information 652 00:37:11,090 --> 00:37:13,730 sur la façon dont les stats plug-in œuvres. 653 00:37:13,730 --> 00:37:15,900 Et en fait, il est très similaire à cela. 654 00:37:15,900 --> 00:37:17,680 Vous pourriez rappeler que il ya un dialogue. 655 00:37:17,680 --> 00:37:21,680 Vous pouvez vous rappeler qu'il ya certaines informations qui est 656 00:37:21,680 --> 00:37:24,860 montré tout le long de la barre de menu long le haut, qui nous l'espérons vous êtes maintenant 657 00:37:24,860 --> 00:37:27,450 l'obtention d'un goût de comment nous avons mis cela, 658 00:37:27,450 --> 00:37:32,360 simplement en insérant des éléments de menu spécifique au points et en instanciant un dialogue 659 00:37:32,360 --> 00:37:34,360 et l'affichage de ce dialogue. 660 00:37:34,360 --> 00:37:36,580 >> Mais nous avons pas encore montré vous comment nous pouvons connecter 661 00:37:36,580 --> 00:37:40,790 à une commande dans la Ubuntu instance sous-jacente. 662 00:37:40,790 --> 00:37:46,930 Donc, nous allons jeter un coup d'œil puis à plugin.2, qui fait exactement cela. 663 00:37:46,930 --> 00:37:50,540 Nous allons ouvrir plugin.js, qui est le code pour cela. 664 00:37:50,540 --> 00:37:54,570 Mais, sous le menu Fenêtre, si je clique sur dialogue 2, 665 00:37:54,570 --> 00:37:58,290 nous pouvons voir que ce qu'il dit à la place, bonjour CS50, qui 666 00:37:58,290 --> 00:38:01,800 ne regarde pas tout ce que séduisante, non? 667 00:38:01,800 --> 00:38:04,310 Sauf, regarder ce. 668 00:38:04,310 --> 00:38:07,020 Permettez-moi de changer quelque chose ici-bas. 669 00:38:07,020 --> 00:38:11,540 >> Je vais aller à mon espace de travail et le changement séminaire 670 00:38:11,540 --> 00:38:15,990 à-dire quelque chose d'autre, comme Bonjour, Dan. 671 00:38:15,990 --> 00:38:18,150 Je vais fermer et enregistrer. 672 00:38:18,150 --> 00:38:22,740 Et maintenant, je vais re-run mon élément de menu de dialogue. 673 00:38:22,740 --> 00:38:25,590 Et remarquez qu'il a maintenant changé ce qu'il dit. 674 00:38:25,590 --> 00:38:26,880 Bonjour, Dan. 675 00:38:26,880 --> 00:38:30,680 Il me semble avoir fait quelque chose de bas ici dans l'instance sous-jacente Ubuntu 676 00:38:30,680 --> 00:38:34,370 sans avoir manipulé tout nouveau code qui exécute uniquement 677 00:38:34,370 --> 00:38:35,720 sur le côté client. 678 00:38:35,720 --> 00:38:40,380 Donc, il ya évidemment une sorte de communication qui se passe ici. 679 00:38:40,380 --> 00:38:44,550 >> Maintenant, cela est où beaucoup de la puissance du 9 SDK Couverture arrive, 680 00:38:44,550 --> 00:38:49,440 est que, dans ce plugin.2, nous pouvons effectivement causer 681 00:38:49,440 --> 00:38:52,910 un appel arrive à la instance sous-jacente, 682 00:38:52,910 --> 00:38:55,750 et exécuter certaines commandes arbitraires. 683 00:38:55,750 --> 00:39:00,230 Donc dans ce cas, je dois effectivement créé un script bash très simple 684 00:39:00,230 --> 00:39:02,350 dans mon espace de travail appelé Séminaire. 685 00:39:02,350 --> 00:39:03,610 Alors permettez-moi d'ouvrir que jusqu'à. 686 00:39:03,610 --> 00:39:05,370 Et nous pouvons voir que ça ressemble à ça. 687 00:39:05,370 --> 00:39:08,310 Il est juste un bash très simple script dont le seul but dans la vie 688 00:39:08,310 --> 00:39:11,920 va être de faire écho sur ce texte, Bonjour, Dan. 689 00:39:11,920 --> 00:39:14,360 Ou avant, il dit Bonjour, CS50. 690 00:39:14,360 --> 00:39:16,000 Et voilà tout ce qu'il va faire. 691 00:39:16,000 --> 00:39:21,030 >> Parce que cela est maintenant un commande que je peux courir. 692 00:39:21,030 --> 00:39:23,750 Je peux effectivement exécuter ici. 693 00:39:23,750 --> 00:39:28,440 Nous pouvons voir qu'il est en fait juste une commande que je dirige naturellement. 694 00:39:28,440 --> 00:39:32,850 Je peux demander à mon plug-in pour exécuter cette commande sur l'espace de travail sous-jacent 695 00:39:32,850 --> 00:39:36,510 et d'analyser l'information qui a été retourné de lui, 696 00:39:36,510 --> 00:39:40,300 et faire quelque chose avec elle, et de modifier mon plug-in et le comportement que je 697 00:39:40,300 --> 00:39:43,240 avoir dans ma plug-in en conséquence. D'ACCORD. 698 00:39:43,240 --> 00:39:45,450 Voyons donc comment cela se passe. 699 00:39:45,450 --> 00:39:48,380 Nous l'avons vu très simple Script batch de séminaire que je 700 00:39:48,380 --> 00:39:51,080 [Inaudible] qu'il peut effectivement fonctionner. 701 00:39:51,080 --> 00:39:54,560 >> Et maintenant, nous allons voir les modifications qui sont nécessaires pour lier cela ensemble 702 00:39:54,560 --> 00:39:57,620 avec la fenêtre de dialogue, et l'exécuter. 703 00:39:57,620 --> 00:40:02,030 Nous sommes donc ici va faire joli près la même chose que nous avons vu auparavant. 704 00:40:02,030 --> 00:40:05,500 Mais remarquez que, parmi les choses que je l'ai consommé maintenant-- 705 00:40:05,500 --> 00:40:09,090 en plus du dialogue, qui encore une fois je suis d'avoir fait deux fois, 706 00:40:09,090 --> 00:40:14,300 pas besoin selon ce qui est en plus le dialogue et les commandes 707 00:40:14,300 --> 00:40:17,780 et les menus plug-ins, qui étaient nécessaire dans le premier pour moi 708 00:40:17,780 --> 00:40:21,560 pour définir une nouvelle commande et injecter un élément dans les menus, 709 00:40:21,560 --> 00:40:25,010 Je dois aussi cette proc plug-in. 710 00:40:25,010 --> 00:40:28,500 >> Et ce proc plug-in permet nous manipulons processus 711 00:40:28,500 --> 00:40:30,950 sur l'instance sous-jacente. 712 00:40:30,950 --> 00:40:34,970 Je l'ai branché après que je l'ai dit que mon plug-in exige. 713 00:40:34,970 --> 00:40:38,320 Je l'ai ensuite connecté à code, comme nous avons vu dans la fonction principale. 714 00:40:38,320 --> 00:40:40,970 Encore une fois, je vais initialiser mon dialogue. 715 00:40:40,970 --> 00:40:45,500 Et si nous descendons maintenant, nous pouvez voir comment cela est différent. 716 00:40:45,500 --> 00:40:49,040 La fonction de la charge est la même, de sorte que il va juste créer une commande 717 00:40:49,040 --> 00:40:54,250 et de créer un élément de menu et connectez cet élément de menu pour cette commande. 718 00:40:54,250 --> 00:40:56,690 Mais si nous faisons défiler maintenant vers le bas pour afficher les dialogues, 719 00:40:56,690 --> 00:40:59,990 nous pouvons commencer à voir où les différences surgissent. 720 00:40:59,990 --> 00:41:04,170 >> Nous avons spectacle dialogue de fonction, qui va juste pour montrer le dialogue. 721 00:41:04,170 --> 00:41:12,410 Mais quand je montre ce dialogue, et lorsque la méthode de spectacle est appelé, 722 00:41:12,410 --> 00:41:14,430 il déclenche la fonction de tirage. 723 00:41:14,430 --> 00:41:18,990 Et je vais préciser alors une partie du contenu à l'intérieur de cela. 724 00:41:18,990 --> 00:41:21,910 Donc je vais juste créer une div, fournir à elle 725 00:41:21,910 --> 00:41:24,020 un texte de base, Bonjour, monde. 726 00:41:24,020 --> 00:41:27,250 Mais remarque que je suis ici va y attacher une pièce d'identité. 727 00:41:27,250 --> 00:41:32,350 Et la ligne très prochaine je vais pour constater que ID utilisant JavaScript, 728 00:41:32,350 --> 00:41:36,210 et stocker cet objet dans une autre variable 729 00:41:36,210 --> 00:41:38,280 que je vais juste appeler contenu. 730 00:41:38,280 --> 00:41:41,780 >> Alors maintenant, chaque fois que je dois contenu, tout ce que je besoin de faire 731 00:41:41,780 --> 00:41:46,100 est il suffit de modifier HTML intérieure de cet objet. 732 00:41:46,100 --> 00:41:51,300 Et le dialogue HTML ensuite être modifiée ainsi. 733 00:41:51,300 --> 00:41:55,500 Ainsi, lorsque ce plug-in est alors montré, ce qui peut arriver 734 00:41:55,500 --> 00:41:59,820 et ceci est un nouvel événement ce qui est nouveau à ce plug-in, 735 00:41:59,820 --> 00:42:03,380 mais qui se passe dans tous les plug-in avec le dialogue, lorsque cela est maintenant affichée, 736 00:42:03,380 --> 00:42:07,100 Je vais appeler un fonction appelée chercher d'info. 737 00:42:07,100 --> 00:42:10,520 Et cette fonction est la viande de lui ici. 738 00:42:10,520 --> 00:42:14,930 Je vais utiliser ce proc plug-in qui nous avons décrit précédemment, qui, par la manière, 739 00:42:14,930 --> 00:42:19,790 est vraiment juste une bibliothèque Node.js que Cloud 9 utilise ici. 740 00:42:19,790 --> 00:42:21,730 >> Ainsi, vous pouvez effectivement regarder comment ce 741 00:42:21,730 --> 00:42:25,340 fonctionne que si vous allez dans le Documentation Node.js 742 00:42:25,340 --> 00:42:29,220 et de rechercher le fichier exec méthode de processus là. 743 00:42:29,220 --> 00:42:33,110 Je vais courir ce spécifique commande, la maison Ubuntu espace de travail 744 00:42:33,110 --> 00:42:38,000 séminaire, à savoir que même une, qui même commande que je créé avant. 745 00:42:38,000 --> 00:42:40,680 Fournir à elle un courant répertoire de travail, tout simplement 746 00:42:40,680 --> 00:42:45,440 pour être ultra sécuritaire en termes de contexte dans lequel celui-ci fonctionne. 747 00:42:45,440 --> 00:42:49,150 Et une fois que cela a été rempli et retourné, 748 00:42:49,150 --> 00:42:54,040 Je vais exécuter cette fonction appelée sortie d'analyse. 749 00:42:54,040 --> 00:42:54,540 D'ACCORD. 750 00:42:54,540 --> 00:42:58,670 Donc cela alors va exécuter une commande sur le local, ou plutôt 751 00:42:58,670 --> 00:43:01,700 l'instance Ubuntu distante. 752 00:43:01,700 --> 00:43:03,490 Quand je reviens un peu informations, je suis ensuite 753 00:43:03,490 --> 00:43:06,940 va appeler une fonction distincte dite sortie d'analyse, qui 754 00:43:06,940 --> 00:43:13,790 a cette signature ici, err, stdout, stderr, 755 00:43:13,790 --> 00:43:15,910 et d'effectuer quelques calculs à ce sujet. 756 00:43:15,910 --> 00:43:18,930 Donc, si je recevais une erreur de quelque sorte à tous, 757 00:43:18,930 --> 00:43:22,340 Je vais effectivement vérifier pour voir si erreur a effectivement certaines données. 758 00:43:22,340 --> 00:43:27,204 Et si oui, alors je vais modifier le intérieure HTML de cet objet de contenu, ce qui 759 00:43:27,204 --> 00:43:28,995 est vous vous en souvenez, nous reliée à la dialogue 760 00:43:28,995 --> 00:43:32,210 au instantiattion que de dialogue, ou au niveau du premier dessin 761 00:43:32,210 --> 00:43:33,370 de ce dialogue. 762 00:43:33,370 --> 00:43:35,650 Je vais juste dire que une erreur se produit. 763 00:43:35,650 --> 00:43:37,140 >> Maintenant, cela est trop simpliste. 764 00:43:37,140 --> 00:43:40,170 La valeur d'erreur sera généralement contenir quelque chose qui était utile, 765 00:43:40,170 --> 00:43:45,520 peut-être un numéro d'erreur et une erreur du script lui-même. 766 00:43:45,520 --> 00:43:48,430 Ou si le script écrit quelque chose à l'erreur-type, 767 00:43:48,430 --> 00:43:50,890 que les données serait peuplée dans ce paramètre ainsi. 768 00:43:50,890 --> 00:43:53,765 Et je pourrais être un peu plus d'attention à ce que l'erreur 769 00:43:53,765 --> 00:43:55,332 Je suis en train de montrer aux gens. 770 00:43:55,332 --> 00:43:57,415 Mais cet exemple simpliste est assez bon pour l'instant 771 00:43:57,415 --> 00:43:59,715 voir au moins comment tout cela fonctionne. 772 00:43:59,715 --> 00:44:01,590 Sinon, si il y a aucune erreur, alors je suis juste 773 00:44:01,590 --> 00:44:05,500 va fournir le brut la sortie de cette fonction 774 00:44:05,500 --> 00:44:10,070 dans le code HTML interne de ce contenu élément, et ensuite mettre à jour mon plug-in 775 00:44:10,070 --> 00:44:12,490 et le montrer ici. 776 00:44:12,490 --> 00:44:17,550 Et qui est à peu près tout ce qui est nécessaire pour obtenir ce à courir. 777 00:44:17,550 --> 00:44:22,860 Et donc nous allons réfléchir à ensuite comment fonctionne ce, dans l'ensemble. 778 00:44:22,860 --> 00:44:29,330 Quand je d'abord chargé ce plug-in, tout comme le premier plug-in, 779 00:44:29,330 --> 00:44:32,670 Je vais ajouter une commande qui est disponibles à tout, à tout plug-in 780 00:44:32,670 --> 00:44:37,120 dans le Cloud 9, appelé Séminaire CS50 Dialog 2, dont la responsabilité 781 00:44:37,120 --> 00:44:39,670 sera pour exécuter ce spectacle dialogue, qui est vous vous en souvenez, 782 00:44:39,670 --> 00:44:42,730 seront effectivement montrer le dialogue que je demandées ci-dessous. 783 00:44:42,730 --> 00:44:45,980 >> Ensuite, je vais ajouter que commande dans un menu de la fenêtre 784 00:44:45,980 --> 00:44:48,070 de sorte que je dois accès. 785 00:44:48,070 --> 00:44:51,420 Et lorsque que le dialogue est demandé à être montré, 786 00:44:51,420 --> 00:44:55,170 Je vais chercher quelques informations auprès de l'instance sous-jacente Ubuntu 787 00:44:55,170 --> 00:44:58,890 en utilisant la commande de fichier exec. 788 00:44:58,890 --> 00:44:59,920 Excuse moi. 789 00:44:59,920 --> 00:45:04,140 Une fois qui est retourné et je recevoir des information, puis sur le côté client 790 00:45:04,140 --> 00:45:08,370 encore une fois, je vais être capable d'analyser la sortie de commande qui 791 00:45:08,370 --> 00:45:12,650 et mettre à jour l'intérieur HTML des éléments 792 00:45:12,650 --> 00:45:16,440 que nous avions relié au plus tôt. 793 00:45:16,440 --> 00:45:19,910 >> Et avec cela, nous avons ensuite ce plug-in entièrement fonctionnel 794 00:45:19,910 --> 00:45:24,520 qui me permet de récupérer des informations à partir de ce script arbitraire 795 00:45:24,520 --> 00:45:27,170 que nous avons créé sur notre instance sous-jacente. 796 00:45:27,170 --> 00:45:29,660 Mais encore une fois, il est vraiment importante et vraiment clé 797 00:45:29,660 --> 00:45:33,030 à séparer où chaque de ces choses qui se passe, 798 00:45:33,030 --> 00:45:38,320 que nous avons tous de ce côté client code qui est exécuté dans le navigateur, 799 00:45:38,320 --> 00:45:41,640 et ne dispose pas encore d'accès pour le système de fichiers sous-jacent, 800 00:45:41,640 --> 00:45:44,895 jusqu'à ce que nous courons en fait certaines de ces des commandes qui sont fournies par le Couverture 801 00:45:44,895 --> 00:45:49,055 9 SDK comme proc, et quelques autres qui nous permettent de lire certaines données, 802 00:45:49,055 --> 00:45:53,500 ou de lire certains fichiers si nous avons besoin de faire quelque chose du genre. 803 00:45:53,500 --> 00:45:56,650 >> Maintenant, ceci est un exemple assez simple. 804 00:45:56,650 --> 00:46:00,570 Il ya d'autres choses que nous serait peut vouloir faire aussi bien. 805 00:46:00,570 --> 00:46:03,470 Par exemple, peut-être nous fait voulez économiser de l'information 806 00:46:03,470 --> 00:46:04,630 les préférences. 807 00:46:04,630 --> 00:46:07,900 Ou peut-être que nous voulons ajouter un nouveau panneau de préférences 808 00:46:07,900 --> 00:46:09,690 Ou quelque chose de ce genre. 809 00:46:09,690 --> 00:46:13,370 Alors qui est quelque chose que vous peut jeter un oeil à la SDK Cloud 9 810 00:46:13,370 --> 00:46:15,300 pour obtenir plus d'informations sur. 811 00:46:15,300 --> 00:46:19,990 Mais ce qui est vraiment suffisant pour commencer. 812 00:46:19,990 --> 00:46:26,410 Donc, juste pour être un peu plus concret sur la façon dont certaines de ces choses 813 00:46:26,410 --> 00:46:31,370 fonction, je ne veux montrer tout un exemple de plus, qui est juste un peu 814 00:46:31,370 --> 00:46:35,580 du code du plug-in Statistiques 50. 815 00:46:35,580 --> 00:46:39,780 >> Et ce code est essentiellement sur la base de ces exemples, 816 00:46:39,780 --> 00:46:43,310 que vous avez réellement vu, mais a quelques plus de garanties 817 00:46:43,310 --> 00:46:47,460 et a un peu plus de complexité dans l'ordre pour atteindre certaines des choses supplémentaires 818 00:46:47,460 --> 00:46:48,930 que nous voulons atteindre. 819 00:46:48,930 --> 00:46:54,510 Par exemple, si je veux être pouvoir enregistrer certains paramètres, 820 00:46:54,510 --> 00:46:57,700 alors je besoin d'avoir accès les paramètres de plug-in, 821 00:46:57,700 --> 00:47:01,820 et chaque fois que je veux à lire certains paramètres, 822 00:47:01,820 --> 00:47:08,340 Je peux, par exemple, attacher à divers des événements dans les paramètres de plug-in. 823 00:47:08,340 --> 00:47:13,630 Donc, chaque fois que les paramètres est rouge, Par exemple, dans mon propre plug-in, 824 00:47:13,630 --> 00:47:18,450 si je vais lire quelques-uns paramètres de stockage sauvegardé 825 00:47:18,450 --> 00:47:24,540 préférences de l'utilisateur, alors je peux définir les valeurs par défaut pour un emplacement spécifique, 826 00:47:24,540 --> 00:47:31,250 de préférence spécifique, en ce que JSON options de style fichier que nous avons 827 00:47:31,250 --> 00:47:33,890 économisé plus tôt, que nous avons vu plus tôt. 828 00:47:33,890 --> 00:47:36,370 >> Et si je vais écrire certains paramètres à l'informatique, 829 00:47:36,370 --> 00:47:40,440 alors je can-- ou dès que nous détectons que les paramètres ont été écrits 830 00:47:40,440 --> 00:47:44,420 to-- parce que par exemple, celles les paramètres ont été modifiés par l'utilisateur 831 00:47:44,420 --> 00:47:47,335 soit directement dans leurs paramètres fichier ou le panneau de préférences 832 00:47:47,335 --> 00:47:49,370 a changé les paramètres déposer directement, 833 00:47:49,370 --> 00:47:53,590 Je peux réellement mettre à jour une partie du code ou mettre à jour le comportement de mon plug-in 834 00:47:53,590 --> 00:47:58,710 sur la base de ces changements qui ont produite sur le fichier de paramètres ainsi. 835 00:47:58,710 --> 00:48:03,380 Mais vraiment, le reste est assez beaucoup ce que vous avez déjà vu. 836 00:48:03,380 --> 00:48:06,040 >> Nous ajoutons un peu, peut-être quelque chose qui est nouvelle. 837 00:48:06,040 --> 00:48:09,440 Donc, nous ajoutons un fichier de préférences, ou plutôt un panneau de préférences, 838 00:48:09,440 --> 00:48:14,250 à la fenêtre des préférences, qui encore une fois vous pouvez trouver plus d'informations 839 00:48:14,250 --> 00:48:16,220 dans le Cloud 9 SDK m'a lu. 840 00:48:16,220 --> 00:48:18,460 Mais tout le reste est assez bien, assez 841 00:48:18,460 --> 00:48:25,810 semblable à ce que nous avons vu avant, juste d'un contrôle d'erreur supplémentaire 842 00:48:25,810 --> 00:48:30,150 et quelques protections supplémentaires et quelques fonctionnalités supplémentaires 843 00:48:30,150 --> 00:48:33,314 à présenter tous les différents choses que nous avons vu. 844 00:48:33,314 --> 00:48:35,230 Si vous ne l'avez pas fait encore vu, vous pourriez 845 00:48:35,230 --> 00:48:40,955 se demander ce que le sous-jacent commande est dans la fenêtre Statistiques 50. 846 00:48:40,955 --> 00:48:42,840 Il est en fait fonction. 847 00:48:42,840 --> 00:48:48,100 Eh bien, il est-- oh, merde. 848 00:48:48,100 --> 00:48:49,410 Une seconde. 849 00:48:49,410 --> 00:48:49,910 Attendez. 850 00:48:49,910 --> 00:48:52,270 D'ACCORD. 851 00:48:52,270 --> 00:48:58,090 Permettez-moi de passer cette place afin que nous puissions voir ce qui se passe quand je tape Statistiques 50. 852 00:48:58,090 --> 00:49:02,140 Notez que dans ce cas, le commande que je suis sur la mise 853 00:49:02,140 --> 00:49:06,310 est vraiment nouveau, juste le script qui est aller à la sortie d'un tas d'informations 854 00:49:06,310 --> 00:49:08,040 au format JSON. 855 00:49:08,040 --> 00:49:10,800 Et la raison pour laquelle nous le faisons de cette façon est que parce que nous 856 00:49:10,800 --> 00:49:15,480 fonctionnent, parce que nous avons écrit le code côté client en JavaScript, 857 00:49:15,480 --> 00:49:19,500 nous pouvons très facilement juste analyser des objets JavaScript, 858 00:49:19,500 --> 00:49:23,050 et vraiment être capable de manipuler ces objets comme nous le ferions tout 859 00:49:23,050 --> 00:49:24,610 tout autre objet JavaScript. 860 00:49:24,610 --> 00:49:27,650 >> Et donc cela est un très pratique moyen de fournir des informations 861 00:49:27,650 --> 00:49:31,950 de l'instance Ubuntu sous-jacente, tel que le numéro de version, l'hôte 862 00:49:31,950 --> 00:49:36,360 nom, si un serveur est à l'écoute, ce que le serveur est, ainsi de suite et ainsi de suite, 863 00:49:36,360 --> 00:49:39,150 et analyser que très facilement et très rapidement 864 00:49:39,150 --> 00:49:44,870 dans le plug-in qui va alors pour nous montrer toutes ces informations. 865 00:49:44,870 --> 00:49:47,920 Encore une fois, l'idée fondamentale ici pour garder à l'esprit 866 00:49:47,920 --> 00:49:54,260 cette séparation est entre l'instance sous-jacente, 867 00:49:54,260 --> 00:49:57,490 et aussi où le code est en cours de chargement. 868 00:49:57,490 --> 00:49:59,870 Que lorsque je ai un client, il est le premier chargement. 869 00:49:59,870 --> 00:50:03,951 Juste ce fichier statique de JavaScript quelque part, peut-être CDN d'une certaine sorte. 870 00:50:03,951 --> 00:50:06,450 Nous ne devons pas vraiment soin trop de cette première étape. 871 00:50:06,450 --> 00:50:08,970 >> Nous savons juste qu'il est fonctionnant sur le côté client 872 00:50:08,970 --> 00:50:12,740 et voilà où je vais communiquer avec cette instance de docker. 873 00:50:12,740 --> 00:50:15,970 Ce que nous allons faire via le SDK Cloud 9. 874 00:50:15,970 --> 00:50:20,460 Nous ne devons pas réellement la capacité, en utilisant JavaScript ou Node.js, 875 00:50:20,460 --> 00:50:21,750 d'écrire directement à elle. 876 00:50:21,750 --> 00:50:29,400 Nous utilisons seulement ceux SDK existante API pour effectuer cette action pour nous. 877 00:50:29,400 --> 00:50:32,490 Encore une fois, l'un des choses vraiment importantes 878 00:50:32,490 --> 00:50:38,990 est que lorsque je l'ai créé ce, quand je l'ai créé ce plug-in, 879 00:50:38,990 --> 00:50:42,510 et comme je travaille sur elle, un des choses importantes à faire 880 00:50:42,510 --> 00:50:44,840 est de mettre en place la console JavaScript. 881 00:50:44,840 --> 00:50:49,400 >> Parce que depuis tout cela est opérant sur le JavaScript, 882 00:50:49,400 --> 00:50:54,700 sur le côté client, si je l'utilise un console.log method-- si juste 883 00:50:54,700 --> 00:50:56,550 pour montrer un exemple ici. 884 00:50:56,550 --> 00:51:07,630 Essayons de modifier cette simple plug-in de se connecter également des données. 885 00:51:07,630 --> 00:51:09,895 Et nous allons ajouter à la norme. 886 00:51:09,895 --> 00:51:13,010 887 00:51:13,010 --> 00:51:16,810 Donc, nous allons changer que pour être ici. 888 00:51:16,810 --> 00:51:19,560 Maintenant, quand je l'exécute console.log, gardez à l'esprit 889 00:51:19,560 --> 00:51:21,630 que depuis ce exécute sur le côté du client, 890 00:51:21,630 --> 00:51:24,900 Je vais voir dans ma propre JavaScript console, qui 891 00:51:24,900 --> 00:51:28,540 comment je vais ensuite être en mesure de essayer de résoudre les problèmes et déboguer 892 00:51:28,540 --> 00:51:30,330 certains des problèmes que je dois. 893 00:51:30,330 --> 00:51:34,110 >> Notez que parce Je suis en mode SDK, je suis 894 00:51:34,110 --> 00:51:37,820 alors en mesure de manipuler plug-ins sur cette instance. 895 00:51:37,820 --> 00:51:39,800 Ainsi, même si il est enregistrée sur cet exemple, 896 00:51:39,800 --> 00:51:47,130 ce est le seul exemple de ce précédent règle violée, où le Cloud 9 897 00:51:47,130 --> 00:51:51,030 SDK sera effectivement tirer les plug-ins de la sous-jacente instance, puis les exécuter. 898 00:51:51,030 --> 00:51:54,440 Alors que de cette façon, je suis ensuite capable de manipuler et construire 899 00:51:54,440 --> 00:51:55,750 Certains plug-ins ici. 900 00:51:55,750 --> 00:51:58,080 Mais pour moi de voir mises à jour de ce plug-in, 901 00:51:58,080 --> 00:52:01,880 car il est sur le côté client, Je dois sauver ce plug-in 902 00:52:01,880 --> 00:52:04,950 puis rechargez l'ensemble espace de travail, de sorte que le nouveau plug-in est alors 903 00:52:04,950 --> 00:52:09,230 téléchargé sur mon client, sur mon navigateur Web, puis est utilisé. 904 00:52:09,230 --> 00:52:14,460 >> Alors maintenant, quand je clique sur ce séminaire Dialog 2, nous voyons encore ce. 905 00:52:14,460 --> 00:52:21,311 Mais maintenant, je l'espère dans ma JavaScript dialogue, si nous voyons my-- attendre, 906 00:52:21,311 --> 00:52:21,810 attendez. 907 00:52:21,810 --> 00:52:24,420 Je pourrais avoir à ouvrir la nouvelle de dialogue. 908 00:52:24,420 --> 00:52:30,230 Nous devrions voir mes données reçues ici. 909 00:52:30,230 --> 00:52:32,780 Données reçues, bonjour, Dan, qui est vous vous en souvenez, 910 00:52:32,780 --> 00:52:37,770 est une opération qui console.log nous avons demandé dans le plug-in. 911 00:52:37,770 --> 00:52:42,140 Donc cette description alors que je l'ai mentionné avant, 912 00:52:42,140 --> 00:52:45,460 ce dialogue, ou cette schéma plutôt, que je 913 00:52:45,460 --> 00:52:49,140 mentionné précédemment est ce qui se passe. 914 00:52:49,140 --> 00:52:53,150 Mais il ya une importante exception seulement pour le développement, 915 00:52:53,150 --> 00:52:55,490 qui est que le plug-in elle pourrait en fait 916 00:52:55,490 --> 00:52:59,160 être stockées sur l'instance de docker temporairement, puisque vraisemblablement Cloud 9 917 00:52:59,160 --> 00:53:02,210 ne voulons pas que nous soyons en mesure de manipuler des objets sur leur CDN. 918 00:53:02,210 --> 00:53:08,650 >> Et les clients Cloud 9, lors du chargement, va trouver ces plug-ins dans cela. 919 00:53:08,650 --> 00:53:11,540 C9 dossier plug-in, et de charger ceux-ci. 920 00:53:11,540 --> 00:53:15,780 Mais ceux qui se produisent encore que du côté du client. 921 00:53:15,780 --> 00:53:19,440 Alors ceci est juste l'un exception qui se produit seulement 922 00:53:19,440 --> 00:53:23,220 pour le développement du Cloud 9 plug-ins. 923 00:53:23,220 --> 00:53:25,000 Mais le reste de la time-- et la raison 924 00:53:25,000 --> 00:53:26,708 que nous voulons vraiment Hammer Cet home-- 925 00:53:26,708 --> 00:53:30,140 parce que la plupart du temps, cela est va être en cours d'exécution de la CAN, 926 00:53:30,140 --> 00:53:33,030 et juste va être exécuté uniquement à partir du côté client. 927 00:53:33,030 --> 00:53:36,110 >> Normalement, il n'y aura pas interaction avec le plug-in, 928 00:53:36,110 --> 00:53:39,840 ou il n'a même pas y avoir de raison pour laquelle le mêmes plug-ins 929 00:53:39,840 --> 00:53:42,970 sont réellement stockées sur le sous-jacente instance de docker, 930 00:53:42,970 --> 00:53:47,240 sauf dans le cas de ce développement SDK. 931 00:53:47,240 --> 00:53:51,510 Encore une fois, cela change tout légèrement en raison du fait 932 00:53:51,510 --> 00:53:54,650 que nous courons mode SDK. 933 00:53:54,650 --> 00:53:57,160 Il va charger, puis ceux plug-ins de développement, 934 00:53:57,160 --> 00:54:01,690 et dans le seul but ici est de telle sorte que Je peux utiliser Cloud 9 pour faire du développement 935 00:54:01,690 --> 00:54:04,620 Cloud 9 plugins. 936 00:54:04,620 --> 00:54:07,220 Mais même ainsi, cela ne change pas nouveau comment tout cela fonctionne. 937 00:54:07,220 --> 00:54:09,650 Il est encore en cours d'exécution entièrement sur le côté client. 938 00:54:09,650 --> 00:54:16,260 >> Cela signifie simplement que chaque fois que je veux créer Cloud 9 plug-ins dans le Cloud 9, 939 00:54:16,260 --> 00:54:19,320 Je crée ces plug-ins, les mettre dans mon. 940 00:54:19,320 --> 00:54:25,110 C9 / plugins dossier dans ma maison répertoire, assurez-vous que je suis en mode SDK, 941 00:54:25,110 --> 00:54:29,290 recharger la page chaque fois que je fait apporter des modifications à ce plug-in, 942 00:54:29,290 --> 00:54:33,590 et voir ce qui se passe dans ma console JavaScript. 943 00:54:33,590 --> 00:54:36,240 Juste gérer mon JavaScript console pour vous assurer 944 00:54:36,240 --> 00:54:38,930 que tout dépannage informations que je mets à la console, 945 00:54:38,930 --> 00:54:41,920 ou toute autre chose qui pourrait se produire à cause des erreurs que je l'ai écrit 946 00:54:41,920 --> 00:54:44,940 dans mon code ou similaires, y apparaît. 947 00:54:44,940 --> 00:54:48,007 >> Et avec cela, il est vraiment suffisant pour commencer, je pense, 948 00:54:48,007 --> 00:54:49,090 avec les plug-ins Cloud 9. 949 00:54:49,090 --> 00:54:53,120 Surtout prendre un coup d'oeil à la SDK documentation Cloud 9 fournit. 950 00:54:53,120 --> 00:54:56,650 Il est un excellent moyen d'obtenir commencé, et très facilement 951 00:54:56,650 --> 00:54:59,900 créer des plug-ins pour Cloud 9. 952 00:54:59,900 --> 00:55:02,820 Et avec cela, je tiens à remercier vous tous beaucoup de me rejoindre. 953 00:55:02,820 --> 00:55:05,550 Je l'espère vous aurez du plaisir écrire des plug-ins pour le Cloud 9. 954 00:55:05,550 --> 00:55:09,600 Peut-être l'amélioration de plug-ins que nous avons maintenant, ou peut-être même 955 00:55:09,600 --> 00:55:11,360 ajoutant certaines fonctionnalités de votre propre. 956 00:55:11,360 --> 00:55:14,540 Nous sommes impatients de voir ce que vous créez. 957 00:55:14,540 --> 00:55:16,330 Jusque-là, bye. 958 00:55:16,330 --> 00:55:18,734