1 00:00:00,000 --> 00:00:05,159 2 00:00:05,159 --> 00:00:09,240 >> DAN ARMENDARIZ: Olá, e bem vindo a um seminário sobre a personalização CS50 Cloud 9, 3 00:00:09,240 --> 00:00:11,724 eo IDE CS50. 4 00:00:11,724 --> 00:00:13,640 Então, hoje nós estamos indo para apenas falar um pouco 5 00:00:13,640 --> 00:00:16,090 sobre alguns dos informações técnicas que 6 00:00:16,090 --> 00:00:19,380 vai atrás da arquitetura de Cloud 9, e como 7 00:00:19,380 --> 00:00:25,560 temos implementado alguns dos plug-ins como parte de Cloud 9 para fornecer CS50 IDE. 8 00:00:25,560 --> 00:00:28,820 Então vamos saltar para a direita e começar a falar sobre os plug-ins. 9 00:00:28,820 --> 00:00:32,659 >> Assim, os plug-ins são realmente no núcleo da experiência Cloud 9. 10 00:00:32,659 --> 00:00:37,590 Cloud 9 é a tecnologia subjacente que fornece-nos o IDE, 11 00:00:37,590 --> 00:00:42,160 e também o terminal na janela parte inferior, juntamente com o workspace-- 12 00:00:42,160 --> 00:00:46,430 Ubuntu que workspace-- usar para compilar todos os nossos projetos 13 00:00:46,430 --> 00:00:49,190 e realizar os nossos conjuntos de problemas, completar os nossos conjuntos de problemas. 14 00:00:49,190 --> 00:00:51,820 Mas no coração de tudo disso, toda a tecnologia 15 00:00:51,820 --> 00:00:54,590 é realmente apenas um monte de plug-ins. 16 00:00:54,590 --> 00:00:58,740 Tudo é um plug-in que pode ser modificado, 17 00:00:58,740 --> 00:01:00,710 estendido, você pode criar seus próprios plug-ins, 18 00:01:00,710 --> 00:01:03,060 você pode remover outro plug-ins, para realmente alterar 19 00:01:03,060 --> 00:01:07,540 um monte da funcionalidade do Cloud 9 IDE existente. 20 00:01:07,540 --> 00:01:12,040 >> Portanto, este é um existente Cloud 9 ambiente. 21 00:01:12,040 --> 00:01:14,750 Isto é realmente apenas o default Cloud 9 ambiente. 22 00:01:14,750 --> 00:01:18,450 E dar uma olhada em como ele realmente é diferente do IDE CS50. 23 00:01:18,450 --> 00:01:20,340 Então este é o IDE CS50. 24 00:01:20,340 --> 00:01:25,060 Observe que há alguns visuais mudanças entre a Nuvem regulares 9 25 00:01:25,060 --> 00:01:28,000 ambiente e do IDE CS50. 26 00:01:28,000 --> 00:01:30,010 Especificamente, você vai notar algumas mudanças. 27 00:01:30,010 --> 00:01:34,201 Em primeiro lugar, há menos itens de menu para começar. 28 00:01:34,201 --> 00:01:36,200 Há realmente uma maneira que você pode mudar isso. 29 00:01:36,200 --> 00:01:37,270 É chamado de modo simples. 30 00:01:37,270 --> 00:01:40,910 >> Por padrão, o modo simples é habilitado, e que simplifica alguns dos itens do menu. 31 00:01:40,910 --> 00:01:43,032 Ele remove algumas das os mais avançados, 32 00:01:43,032 --> 00:01:45,240 porque, francamente, um monte de estudantes que estão chegando 33 00:01:45,240 --> 00:01:48,550 e não precisa de saber sobre alguns dos recursos mais avançados 34 00:01:48,550 --> 00:01:50,530 não estão sobrecarregados com um monte de opções. 35 00:01:50,530 --> 00:01:55,610 Mas nós fornecemos a capacidade de assumir fora os chamados rodinhas 36 00:01:55,610 --> 00:01:57,360 e remover esse andaimes para que as pessoas 37 00:01:57,360 --> 00:02:00,832 pode tornar-se mais acostumados a os recursos avançados do IDE. 38 00:02:00,832 --> 00:02:02,540 Imediatamente para o direito de que, há 39 00:02:02,540 --> 00:02:05,435 também um botão de debug, o que na nuvem padrão 40 00:02:05,435 --> 00:02:08,199 9 ambiente é simplesmente chamado de execução. 41 00:02:08,199 --> 00:02:11,990 Mas por padrão, nós configuramos o botão de depuração no IDE CS50 42 00:02:11,990 --> 00:02:15,500 para abrir o depurador, compilar automaticamente o código-fonte, 43 00:02:15,500 --> 00:02:17,940 conectar o depurador para o GDB-- subjacente 44 00:02:17,940 --> 00:02:21,430 e uma vez que está sendo executado para executar o debugging-- e alguns outros passos 45 00:02:21,430 --> 00:02:22,580 também. 46 00:02:22,580 --> 00:02:25,370 Além disso, a janela de terminal no very-- ou melhor, o terminal 47 00:02:25,370 --> 00:02:29,010 guia na seção de console no janela na parte inferior da tela, 48 00:02:29,010 --> 00:02:31,004 foi renomeado para simplesmente ser terminal. 49 00:02:31,004 --> 00:02:32,837 Considerando que, no padrão Cloud 9 ambiente, 50 00:02:32,837 --> 00:02:35,830 mostra que realmente o execução da aplicação. 51 00:02:35,830 --> 00:02:39,140 Desta forma, simplifica, de novo, o GUI, apenas um pouco. 52 00:02:39,140 --> 00:02:42,310 >> Nós também adicionamos alguns botões no canto superior direito do IDE 53 00:02:42,310 --> 00:02:45,740 para mostrar algumas informações básicas sobre a instância subjacente. 54 00:02:45,740 --> 00:02:49,700 E também nós removemos um das opções sobre os itens 55 00:02:49,700 --> 00:02:51,730 da extrema direita. 56 00:02:51,730 --> 00:02:55,620 Então, tudo isso não é implementado modificando necessariamente o Cloud 9 57 00:02:55,620 --> 00:02:58,550 código fonte, mas em vez através de um par 58 00:02:58,550 --> 00:03:03,460 de plug-ins que implementamos ao longo do ano passado ou assim. 59 00:03:03,460 --> 00:03:08,840 E Cloud 9 tem acolhido e tem em execução na área de trabalho CS50. 60 00:03:08,840 --> 00:03:13,680 Ou melhor, nos espaços de trabalho que são designados como CS50 IDEs. 61 00:03:13,680 --> 00:03:17,140 >> Então, realmente essa é a principal diferença entre o Cloud 9 eo CS50 62 00:03:17,140 --> 00:03:18,130 espaços de trabalho. 63 00:03:18,130 --> 00:03:21,780 Há também, no subjacente exemplo, a principal alteração é 64 00:03:21,780 --> 00:03:25,350 que instalar algum itens pré-configurados como GDB, 65 00:03:25,350 --> 00:03:29,530 e algumas outras coisas básicas que nós criamos, como atualização de 50, 66 00:03:29,530 --> 00:03:33,310 e um par de outras medidas que fazem toda a experiência um pouco mais 67 00:03:33,310 --> 00:03:34,550 unificado. 68 00:03:34,550 --> 00:03:38,520 Mas no geral, este é apenas um modificação de um sistema existente 69 00:03:38,520 --> 00:03:40,979 Cloud 9 que criou para nós. 70 00:03:40,979 --> 00:03:42,770 O que nós estamos indo para mostrar um pouco mais tarde 71 00:03:42,770 --> 00:03:45,920 é a forma de realmente criar uma plug-in um pouco básicos que 72 00:03:45,920 --> 00:03:49,461 permite-nos inserir algo na sistema de menus, e abrir um diálogo. 73 00:03:49,461 --> 00:03:51,210 E se temos o suficiente vez, vamos realmente 74 00:03:51,210 --> 00:03:54,210 ver como podemos preencher esse diálogo com algumas informações 75 00:03:54,210 --> 00:03:56,089 do exemplo subjacente. 76 00:03:56,089 --> 00:03:58,880 Para que nós para chegar a esse ponto, vamos primeiro falar um pouco 77 00:03:58,880 --> 00:04:01,740 sobre a arquitetura de Cloud 9. 78 00:04:01,740 --> 00:04:05,290 >> Assim, a maneira que estamos acostumados para interagir com Cloud 9 79 00:04:05,290 --> 00:04:06,610 é inteiramente através do cliente. 80 00:04:06,610 --> 00:04:10,610 Nós abrimos um navegador web, digitamos no CS50.io. 81 00:04:10,610 --> 00:04:14,431 Nós finalmente, após a autenticação, são apresentados com o IDE. 82 00:04:14,431 --> 00:04:16,180 Mas perceber que há um par de passos 83 00:04:16,180 --> 00:04:18,180 que realmente nos levar a este ponto. 84 00:04:18,180 --> 00:04:22,390 A primeira coisa é que meu cliente, o navegador da web, 85 00:04:22,390 --> 00:04:27,440 mediante pedido e após a autenticação, carrega o GUI e os plug-ins 86 00:04:27,440 --> 00:04:30,170 de alguns CDN, de algum Content Delivery Network. 87 00:04:30,170 --> 00:04:32,700 Isso pode ser francamente em qualquer lugar. 88 00:04:32,700 --> 00:04:35,390 >> E isso é realmente separado do exemplo subjacente. 89 00:04:35,390 --> 00:04:38,890 É importante perceber que este é na verdade, apenas um monte de arquivos estáticos. 90 00:04:38,890 --> 00:04:42,600 É um monte de JavaScript que é baixado do CDN 91 00:04:42,600 --> 00:04:45,200 no meu navegador web, e toda a GUI que você 92 00:04:45,200 --> 00:04:48,460 aqui-- ver isso é realmente key-- toda a GUI que você vê aqui 93 00:04:48,460 --> 00:04:50,480 é executado no lado do cliente. 94 00:04:50,480 --> 00:04:53,820 Tudo o que você vê no Cloud 9 espaço de trabalho 95 00:04:53,820 --> 00:04:56,010 é realmente executado no navegador. 96 00:04:56,010 --> 00:04:59,950 E qualquer coisa que você envia junto à instância subjacente 97 00:04:59,950 --> 00:05:04,000 é comunicada à instância ao longo desta segunda canal separado, 98 00:05:04,000 --> 00:05:07,240 e é então guardada em essa instância estivador. 99 00:05:07,240 --> 00:05:09,660 >> Portanto, a razão que eu estou dizendo este é um exemplo estivador 100 00:05:09,660 --> 00:05:12,650 é que a tecnologia subjacente não está usando máquinas virtuais, 101 00:05:12,650 --> 00:05:16,040 mas em vez disso utiliza uma tecnologia chamada janela de encaixe, 102 00:05:16,040 --> 00:05:20,200 que basicamente allows-- o mais próximo analogia é uma máquina virtual. 103 00:05:20,200 --> 00:05:24,800 Mas é sutilmente diferente em que há 104 00:05:24,800 --> 00:05:28,900 muitas oportunidades para executar um combinação de janela de encaixe diferente 105 00:05:28,900 --> 00:05:30,760 instâncias em uma única máquina. 106 00:05:30,760 --> 00:05:34,660 E eles pode ser girado para cima em sucessão muito rápida. 107 00:05:34,660 --> 00:05:38,920 Ele não é exatamente a mais diferenciação estrita 108 00:05:38,920 --> 00:05:42,840 entre diferentes instâncias docker como existem em máquinas virtuais, 109 00:05:42,840 --> 00:05:45,730 mas ainda há um monte de diferenciação e separação 110 00:05:45,730 --> 00:05:48,330 entre estes diferentes casos. 111 00:05:48,330 --> 00:05:48,830 ESTÁ BEM. 112 00:05:48,830 --> 00:05:50,980 Assim, os dois passos aqui que são importantes para perceber 113 00:05:50,980 --> 00:05:57,370 é que quando vamos para CS50.io, estamos baixar o GUI e os plug-ins, 114 00:05:57,370 --> 00:06:01,640 que são escritos em JavaScript, em para o navegador ou para o navegador. 115 00:06:01,640 --> 00:06:05,980 E este é talvez um par megabytes de informações. 116 00:06:05,980 --> 00:06:09,460 Nesse ponto, uma vez que tem a GUI carregado e os plug-ins já começaram, 117 00:06:09,460 --> 00:06:12,530 em seguida, ele começa a comunicar com a instância janela de encaixe, o que não faz 118 00:06:12,530 --> 00:06:15,210 têm necessariamente de ser o mesmo servidor. 119 00:06:15,210 --> 00:06:16,940 >> Agora há uma exceção a isso. 120 00:06:16,940 --> 00:06:22,130 Nós podemos realmente ter tanto o mecanismo de entrega para o próprio GUI 121 00:06:22,130 --> 00:06:25,740 ea instância estivador em todos o mesmo servidor, a qual 122 00:06:25,740 --> 00:06:29,660 é realmente algo que nós fazemos para a versão offline do Cloud 9. 123 00:06:29,660 --> 00:06:33,470 Isso não é algo que nós temos divulgado muito esta queda, 124 00:06:33,470 --> 00:06:35,930 mas nós também têm uma versão off-line que 125 00:06:35,930 --> 00:06:40,010 permite que você baixe um embalado versão de todas essas coisas 126 00:06:40,010 --> 00:06:43,670 e permitem que você execute Nuvem 9 num ambiente fora de linha. 127 00:06:43,670 --> 00:06:48,325 >> Movendo esta fora da nuvem e para sua máquina local tem algum impacto. 128 00:06:48,325 --> 00:06:50,200 Em particular, você não já não têm a capacidade 129 00:06:50,200 --> 00:06:52,280 para compartilhar seu espaço de trabalho com os outros. 130 00:06:52,280 --> 00:06:58,630 Você não pode abrir Cloud 9 de, e CS50 o IDE, a partir de qualquer computador 131 00:06:58,630 --> 00:07:02,950 e ver os mesmos arquivos que você estava trabalhando antes. 132 00:07:02,950 --> 00:07:06,310 Mas em vez disso ele funciona totalmente em sua própria máquina local 133 00:07:06,310 --> 00:07:09,270 sem a necessidade de acesso à internet. 134 00:07:09,270 --> 00:07:13,330 Mas, ainda assim, mesmo nesse modelo, mesmo embora tenhamos uma máquina virtual 135 00:07:13,330 --> 00:07:15,200 que é essencialmente executando essas coisas. 136 00:07:15,200 --> 00:07:19,480 >> Nós temos um servidor separado que é entregando essencialmente o Cloud 9 137 00:07:19,480 --> 00:07:23,640 conteúdo, e então nós tenho uma instância de estivador 138 00:07:23,640 --> 00:07:32,280 que é responsável pela comunicação com que IDE para o back-end. 139 00:07:32,280 --> 00:07:32,780 ESTÁ BEM. 140 00:07:32,780 --> 00:07:38,700 Então, toda a GUI é escrito inteiramente em JavaScript 141 00:07:38,700 --> 00:07:42,800 usando Node.js eo Cloud 9 SDK, que nós vamos chegar a em apenas um minuto. 142 00:07:42,800 --> 00:07:46,650 E todos os plug-ins são executados no lado do cliente. 143 00:07:46,650 --> 00:07:51,780 Então, vamos nos concentrar em seguida, um pouco assumindo 144 00:07:51,780 --> 00:07:55,670 que este primeiro passo tem realmente concluída com êxito, 145 00:07:55,670 --> 00:07:58,990 e olhar apenas para essa instância estivador. 146 00:07:58,990 --> 00:08:01,220 >> Portanto, neste caso, este é a maneira padrão 147 00:08:01,220 --> 00:08:04,870 de pensar em fazer Cloud 9 plug-in desenvolvimento é que você está indo 148 00:08:04,870 --> 00:08:07,940 para ser código escrito, que será ser executado no navegador do usuário, 149 00:08:07,940 --> 00:08:11,610 e você tem a oportunidade de usando alguns APIs para se comunicar 150 00:08:11,610 --> 00:08:16,470 com a instância estivador subjacente, executar algum código lá, e fazer qualquer coisa 151 00:08:16,470 --> 00:08:18,860 que você pode querer fazer. 152 00:08:18,860 --> 00:08:22,000 Portanto, esta vai ser o contexto que vamos 153 00:08:22,000 --> 00:08:24,340 estar usando para o resto desta conversa. 154 00:08:24,340 --> 00:08:26,400 E basta manter este modelo em mente. 155 00:08:26,400 --> 00:08:28,966 Isto irá ser muito importante em apenas alguns minutos. 156 00:08:28,966 --> 00:08:30,840 Há um par de links que eu quero te mostrar. 157 00:08:30,840 --> 00:08:34,150 Em primeiro lugar, Nuvem 9 forneceu um monte de documentação 158 00:08:34,150 --> 00:08:38,740 isso é muito bom, que mostra como fazer plug-in de desenvolvimento básico. 159 00:08:38,740 --> 00:08:43,320 Então, se você vai para este URL, cloud9-sdk.readme.io, 160 00:08:43,320 --> 00:08:45,261 você verá a documentação lá. 161 00:08:45,261 --> 00:08:47,510 E um monte de esta informação que você está prestes a ver 162 00:08:47,510 --> 00:08:50,310 também podem ser encontradas lá, além de mais. 163 00:08:50,310 --> 00:08:55,880 Você também pode encontrar o código-fonte aberto versão do Cloud 9 neste URL, 164 00:08:55,880 --> 00:09:04,270 github.com/c9/core, que usamos como parte da versão offline do IDE, 165 00:09:04,270 --> 00:09:07,540 de modo que você será capaz de ter a mesma experiência Cloud 9, 166 00:09:07,540 --> 00:09:09,660 mas de um modo off-line. 167 00:09:09,660 --> 00:09:10,160 Tudo certo. 168 00:09:10,160 --> 00:09:15,560 Então, vamos dar uma olhada em um real Cloud 9 espaço de trabalho aqui. 169 00:09:15,560 --> 00:09:17,880 E novamente, eu quero apontar um par de coisas. 170 00:09:17,880 --> 00:09:21,560 Esta é, aqui, uma IDE CS50 normal. 171 00:09:21,560 --> 00:09:26,830 E eu ter desativado a menos modo confortável sob o menu Exibir 172 00:09:26,830 --> 00:09:28,807 para que eu possa ver tudo das opções do menu. 173 00:09:28,807 --> 00:09:31,140 O que eu quero mostrar-lhe direito agora é um par de coisas. 174 00:09:31,140 --> 00:09:33,140 Primeiro, se eu entrar em Preferências e, em seguida, 175 00:09:33,140 --> 00:09:37,040 clique em Plug-in gerente, e digite CS50 aqui, 176 00:09:37,040 --> 00:09:40,590 podemos ver que há, de fato, um par de CS50 plug-ins que 177 00:09:40,590 --> 00:09:46,280 foram instalados e nossa corrida para permitir que as modificações que temos 178 00:09:46,280 --> 00:09:48,670 visto para o IDE CS50. 179 00:09:48,670 --> 00:09:51,450 >> Agora há, essencialmente, dois plug-ins que estão em execução. 180 00:09:51,450 --> 00:09:54,980 Há um chamado simples, que é o de que modo simplificado 181 00:09:54,980 --> 00:10:00,020 permite reduzir o número de opções de menu na parte superior, 182 00:10:00,020 --> 00:10:03,070 e ter essa chamada modo menos confortável. 183 00:10:03,070 --> 00:10:07,280 E depois há também Stats CS50, que é talvez apenas um pouco misnamed. 184 00:10:07,280 --> 00:10:09,550 Porque é isso que mostra-lhe a informação 185 00:10:09,550 --> 00:10:10,850 sobre o espaço de trabalho subjacente. 186 00:10:10,850 --> 00:10:13,560 Introduz estes botões na parte superior direita. 187 00:10:13,560 --> 00:10:18,620 Ele também injeta um item de menu para o item de janela, no menu Janela 188 00:10:18,620 --> 00:10:21,730 aqui mesmo, CS50 IDE Info. 189 00:10:21,730 --> 00:10:27,380 E é responsável por instanciar este diálogo que temos visto aqui, 190 00:10:27,380 --> 00:10:31,460 com toda a informação que nós somos acostumados a ver em um CS50 IDE 191 00:10:31,460 --> 00:10:32,870 espaço de trabalho. 192 00:10:32,870 --> 00:10:33,370 ESTÁ BEM. 193 00:10:33,370 --> 00:10:36,910 Portanto, há, na verdade, mais um plug-in que temos desenvolvido bem. 194 00:10:36,910 --> 00:10:40,110 E há um par de outros que nós também não divulgou publicamente. 195 00:10:40,110 --> 00:10:45,880 Mas um deles é o global plug-in que permite que o GDB para funcionar. 196 00:10:45,880 --> 00:10:50,190 Assim, um dos aspectos da Cloud 9 é que eles têm já previsto 197 00:10:50,190 --> 00:10:53,210 este GUI para implementar um depurador. 198 00:10:53,210 --> 00:10:57,360 E um dos plug-ins que criamos basicamente 199 00:10:57,360 --> 00:11:02,380 ganchos GDB com este GUI versão com base de um depurador. 200 00:11:02,380 --> 00:11:07,680 E é responsável por mediar tudo dos pedidos que um usuário pode ter, 201 00:11:07,680 --> 00:11:10,310 entre passando por cima ou a criação de pontos de interrupção ou nada 202 00:11:10,310 --> 00:11:15,390 nesse sentido, para que traduzindo para comandos que GDB pode entender, 203 00:11:15,390 --> 00:11:16,920 emitindo os comandos para GDB. 204 00:11:16,920 --> 00:11:19,260 E logo que GDB emite uma resposta, então 205 00:11:19,260 --> 00:11:23,250 nós interpretamos isso e atualizar o GUI, conforme necessário. 206 00:11:23,250 --> 00:11:25,130 >> Isso é provavelmente um dos o mais complicado 207 00:11:25,130 --> 00:11:28,840 dos plug-ins, então ao invés do que somos vai focar hoje é de fato 208 00:11:28,840 --> 00:11:34,590 o plug-in Stats, e vamos falar um pouco sobre simples, também. 209 00:11:34,590 --> 00:11:39,100 Então eu mencionei antes, e eu realmente quero para fazer muito, muito claro, que mais uma vez, 210 00:11:39,100 --> 00:11:41,600 tudo isso que nós somos ver aqui é essencialmente 211 00:11:41,600 --> 00:11:43,300 operando no lado do cliente. 212 00:11:43,300 --> 00:11:45,810 Nós vemos uma janela de terminal a seguir, e que, é claro, 213 00:11:45,810 --> 00:11:49,230 se digitar comandos em que, que será então emitida 214 00:11:49,230 --> 00:11:50,690 à instância de base. 215 00:11:50,690 --> 00:11:55,280 Da mesma forma, se abrirmos um novo arquivo e digite algumas coisas para ele e salvá-lo, 216 00:11:55,280 --> 00:11:58,240 esse arquivo será salvo em o exemplo subjacente. 217 00:11:58,240 --> 00:12:02,310 >> Mas o editor em si, esta própria janela de terminal, 218 00:12:02,310 --> 00:12:05,700 é implementado em toda JavaScript e tudo é um plug-in 219 00:12:05,700 --> 00:12:09,800 que podemos interagir com, e, portanto, modificar. 220 00:12:09,800 --> 00:12:11,450 Há um monte de extensibilidade aqui. 221 00:12:11,450 --> 00:12:14,690 Eu recomendo dar uma olhada em Cloud 9 de conta GitHub 222 00:12:14,690 --> 00:12:17,790 para ver a grande quantidade de plug-ins que estão disponíveis, 223 00:12:17,790 --> 00:12:23,070 e quão bem escrito muito do código é para extensibilidade. 224 00:12:23,070 --> 00:12:24,920 Portanto, há algo que eu quero mencionar 225 00:12:24,920 --> 00:12:30,480 sobre isto, assim, o que é que há um grande número de-- há 226 00:12:30,480 --> 00:12:33,450 uma série de funcionalidades que é fornecida nas preferências 227 00:12:33,450 --> 00:12:37,970 janela, o que temos visto apenas aludido a poucos minutos atrás. 228 00:12:37,970 --> 00:12:43,690 >> Uma das coisas que podemos fazer como IDE desenvolvedores, ou como Cloud 9 desenvolvedores, 229 00:12:43,690 --> 00:12:47,410 é realmente injectar alguma Painéis de preferência de nossa própria. 230 00:12:47,410 --> 00:12:50,660 Assim, o modo simples, ou o modo menos confortável, 231 00:12:50,660 --> 00:12:54,780 e também as informações de IDE, ou plug-in as estatísticas, 232 00:12:54,780 --> 00:12:58,560 cada tem alguma preferência painéis que nos permitem modificar 233 00:12:58,560 --> 00:13:00,620 o comportamento de cada um deles. 234 00:13:00,620 --> 00:13:04,140 Você vai notar que, se eu ir para o Preferências e ir às configurações do usuário, 235 00:13:04,140 --> 00:13:07,100 há um guia CS50, um que diz que a informação IDE. 236 00:13:07,100 --> 00:13:09,810 E eu posso mudar o informações taxa de atualização. 237 00:13:09,810 --> 00:13:12,250 >> Efetivamente, o que está acontecendo nas estatísticas de plug-in 238 00:13:12,250 --> 00:13:16,690 é que cada n-segundos, onde n-segundos é definido por esta preferência 239 00:13:16,690 --> 00:13:22,250 painel, a informação está sendo buscado do exemplo subjacente, sendo enviado 240 00:13:22,250 --> 00:13:25,490 de volta para o lado do cliente, o plug-in é, então, 241 00:13:25,490 --> 00:13:28,650 interpretar a informação da instância subjacente 242 00:13:28,650 --> 00:13:31,470 e atualizar o GUI, conforme necessário. 243 00:13:31,470 --> 00:13:34,710 Podemos ver que agora isso é definido a 30 segundos, e isso é o padrão. 244 00:13:34,710 --> 00:13:37,950 Mas eu posso mudar definitivamente a rapidez com que isso acontece apenas 245 00:13:37,950 --> 00:13:40,520 modificando esse valor. 246 00:13:40,520 --> 00:13:44,330 >> Agora, uma das coisas interessantes é que este painel de preferências, GUI, 247 00:13:44,330 --> 00:13:49,560 é realmente apenas uma versão GUI de um monte de configurações subjacentes 248 00:13:49,560 --> 00:13:52,220 que são apresentadas em JSON. 249 00:13:52,220 --> 00:13:56,336 Então, se eu for, por exemplo, sob a Menu CS50 IDE, ou o menu de Cloud 9, 250 00:13:56,336 --> 00:13:58,210 dependendo de quais versão que você está olhando, 251 00:13:58,210 --> 00:14:00,460 e ir para um desses settings-- neste caso, 252 00:14:00,460 --> 00:14:03,420 o projeto do settings-- configurações do projeto, neste caso, 253 00:14:03,420 --> 00:14:07,740 aplica-se a todas as configurações para este espaço de trabalho. 254 00:14:07,740 --> 00:14:11,620 Considerando as configurações do usuário aplicar para todos os espaços de trabalho 255 00:14:11,620 --> 00:14:15,110 que você pode ter em sua conta. 256 00:14:15,110 --> 00:14:18,520 >> Assim apenas como um aparte aqui, para ser mais claro, 257 00:14:18,520 --> 00:14:22,570 há uma separação entre o dois, porque embora por nós padrão 258 00:14:22,570 --> 00:14:26,490 ter um espaço de trabalho, que é o CS50 IDE, se você 259 00:14:26,490 --> 00:14:31,900 estavam a clicar no seu pouco avatar aqui e ir para o painel de instrumentos, 260 00:14:31,900 --> 00:14:35,820 você vai descobrir que você pode realmente criar espaços de trabalho adicionais. 261 00:14:35,820 --> 00:14:39,140 Você pode ver aqui que eu tenho um IDE de 50 de espaço de trabalho, e também 262 00:14:39,140 --> 00:14:41,930 para os fins da presente seminário, um espaço de trabalho 263 00:14:41,930 --> 00:14:45,084 chamado de espaço de trabalho, que é aqui mesmo. 264 00:14:45,084 --> 00:14:46,750 De qualquer forma, eu tenho preferências diferentes. 265 00:14:46,750 --> 00:14:49,910 Cada um destes pode ter preferências do projeto separados, 266 00:14:49,910 --> 00:14:54,091 mas as preferências do usuário são compartilhado entre todos os meus espaços de trabalho. 267 00:14:54,091 --> 00:14:55,840 By the way, este é também muito útil se você 268 00:14:55,840 --> 00:14:59,080 quer criar um espaço de trabalho com diferentes opções de personalização. 269 00:14:59,080 --> 00:15:01,640 E é muito útil para criar um novo espaço de trabalho. 270 00:15:01,640 --> 00:15:04,230 E escolher aquele que pode ser pré-configurado de alguma outra forma, 271 00:15:04,230 --> 00:15:07,000 talvez para PHP especificamente, ou especificamente Django. 272 00:15:07,000 --> 00:15:08,960 Ou mesmo apenas sob encomenda. 273 00:15:08,960 --> 00:15:11,320 O espaço de trabalho CS50 modelo é o que nós 274 00:15:11,320 --> 00:15:15,420 usar que instala automaticamente Actualização de 50 e todas as configurações 275 00:15:15,420 --> 00:15:20,531 que tem ali, incluindo toda a Os plug-ins que temos para o IDE CS50. 276 00:15:20,531 --> 00:15:21,030 ESTÁ BEM. 277 00:15:21,030 --> 00:15:22,200 Mas vamos voltar a este. 278 00:15:22,200 --> 00:15:25,640 Então, novamente, há projetos configurações, e esses são os que 279 00:15:25,640 --> 00:15:27,140 que estamos vendo aqui. 280 00:15:27,140 --> 00:15:29,056 E note que não há são um bando de configurações, 281 00:15:29,056 --> 00:15:32,720 muitos deles correspondem às preferências painéis, mas não todos eles. 282 00:15:32,720 --> 00:15:40,800 Mas podemos ver que aqui, em isto-- oh não, eu colocá-lo nas configurações do usuário? 283 00:15:40,800 --> 00:15:43,280 Talvez eu colocá-lo nas configurações do usuário. 284 00:15:43,280 --> 00:15:45,480 E isto, aqui vamos nós. 285 00:15:45,480 --> 00:15:49,840 Nas configurações do usuário, nós podemos ver que nós temos uma seção CS50, 286 00:15:49,840 --> 00:15:53,762 e isto está sendo escrito para por estes Nuvem 9 plug-ins 287 00:15:53,762 --> 00:15:54,720 que temos implementado. 288 00:15:54,720 --> 00:15:57,400 Há o simples para corresponder com esse plug-in simples, 289 00:15:57,400 --> 00:16:00,930 e as estatísticas que um corresponde à interface gráfica baseada 290 00:16:00,930 --> 00:16:02,440 versão do painel de preferências. 291 00:16:02,440 --> 00:16:05,740 A taxa de atualização, neste caso, é definido como 20 segundos. 292 00:16:05,740 --> 00:16:09,740 >> Isto é tudo, espero, o começos de alguma informação 293 00:16:09,740 --> 00:16:14,420 que vamos realmente ver em um pouco pouco mais detalhadamente, momentaneamente. 294 00:16:14,420 --> 00:16:14,920 ESTÁ BEM. 295 00:16:14,920 --> 00:16:17,520 Então, vamos dizer que queremos realmente começar a ele. 296 00:16:17,520 --> 00:16:20,600 Entendemos que todas as coisas que está acontecendo no lado do cliente 297 00:16:20,600 --> 00:16:24,560 é feito, na verdade, o navegador, que significa que qualquer plug-ins que eu escrevo 298 00:16:24,560 --> 00:16:27,990 vão ser escrito com o navegador em mente. 299 00:16:27,990 --> 00:16:30,830 E se eu realmente quero fazer nada no espaço de trabalho, 300 00:16:30,830 --> 00:16:33,360 Eu talvez tenha de dar início algum tipo de comunicação 301 00:16:33,360 --> 00:16:35,970 entre o navegador eo o espaço de trabalho para ter certeza 302 00:16:35,970 --> 00:16:38,212 que que é realmente realizado. 303 00:16:38,212 --> 00:16:40,170 Mas vamos dizer que agora Eu quero começar a ele 304 00:16:40,170 --> 00:16:43,440 e realmente criar o meu primeiro plug-in. 305 00:16:43,440 --> 00:16:48,970 Bem, a maneira que você seria capaz de fazer isso é realmente muito fácil. 306 00:16:48,970 --> 00:16:51,370 É dado no Cloud 9 SDK. 307 00:16:51,370 --> 00:16:55,520 Mas é para tomar o seu Nome do espaço de trabalho existente, que 308 00:16:55,520 --> 00:16:59,810 é a URL que você tem na parte superior da seu bar, e adicionar o seguinte a ele. 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 Agora, o que é que isto vai permitir é que o SDK = 1 vai realmente definir o SDK 313 00:17:08,260 --> 00:17:11,430 modo a verdade, o que permitirá um par de coisas adicionais. 314 00:17:11,430 --> 00:17:15,770 E debug = 2 irá permitir que mensagens de erro para ser um pouco mais detalhada. 315 00:17:15,770 --> 00:17:20,170 >> E por isso, se você abrir o JavaScript console no seu guia desenvolvedor Chrome, 316 00:17:20,170 --> 00:17:22,829 você vai realmente ser capaz de ver muito mais informações 317 00:17:22,829 --> 00:17:24,349 que você faria de outra forma. 318 00:17:24,349 --> 00:17:28,310 Então, eu recomendo transformando ambos ao mesmo tempo, porque ele realmente 319 00:17:28,310 --> 00:17:31,170 É útil dispor de toda esta informação adicional. 320 00:17:31,170 --> 00:17:35,330 É importante notar, contudo, que ligar de depuração para o valor de 2 321 00:17:35,330 --> 00:17:38,120 significa que é muito detalhado, e ele realmente 322 00:17:38,120 --> 00:17:42,590 vai um pouco visivelmente mais lento o IDE, especialmente quando o carregamento 323 00:17:42,590 --> 00:17:45,657 ou quando fazer fazer tarefas pesadas. 324 00:17:45,657 --> 00:17:46,740 Então, basta manter isso em mente. 325 00:17:46,740 --> 00:17:51,500 É útil para o desenvolvimento, mas você não pode querer tê-lo ligado o tempo todo. 326 00:17:51,500 --> 00:17:53,080 >> Então vamos realmente fazer isso. 327 00:17:53,080 --> 00:17:59,374 Mas, neste caso, eu realmente tenho já criou um espaço de trabalho com este. 328 00:17:59,374 --> 00:18:00,540 Então vamos ver, sdk = 1 & debug = 2. 329 00:18:00,540 --> 00:18:03,140 330 00:18:03,140 --> 00:18:07,770 Com um par de plug-ins espero já instalado. 331 00:18:07,770 --> 00:18:08,340 Tudo certo. 332 00:18:08,340 --> 00:18:15,050 Portanto, agora que eu tenho ligado a depuração SDK modo, repare que estamos em modo de depuração, 333 00:18:15,050 --> 00:18:20,430 para que possamos olhar para as ferramentas dev para ver quaisquer erros, que eu vou fazer fora de campo. 334 00:18:20,430 --> 00:18:23,110 Nós podemos ver que não há um monte de erros aqui. 335 00:18:23,110 --> 00:18:28,090 Agora é realmente muito comum para Cloud 9 para ter um par de erros, 336 00:18:28,090 --> 00:18:30,680 e eu não me preocuparia sobre eles até que você 337 00:18:30,680 --> 00:18:32,930 veja algo que pode ser específico para o plug-in 338 00:18:32,930 --> 00:18:34,510 que acontecer de você estar criando. 339 00:18:34,510 --> 00:18:37,620 >> Então, aqui, por exemplo, obtemos um par de 404s-- não encontrado. 340 00:18:37,620 --> 00:18:42,910 Nós vemos não podemos carregar algum informações fora da instância subjacente 341 00:18:42,910 --> 00:18:43,670 si. 342 00:18:43,670 --> 00:18:46,545 E há um monte de adicional informação, mas a maior parte deste que estamos 343 00:18:46,545 --> 00:18:47,970 realmente indo para ignorar por agora. 344 00:18:47,970 --> 00:18:50,130 Porque isso é muito comum para um espaço de trabalho 345 00:18:50,130 --> 00:18:53,200 ter apenas um par de erros. 346 00:18:53,200 --> 00:18:53,700 ESTÁ BEM. 347 00:18:53,700 --> 00:18:56,680 Eu estou indo para mover esta fora de o caminho e voltar aqui. 348 00:18:56,680 --> 00:19:01,860 E agora o caminho mais fácil, o Nice coisa sobre ter este desenvolvedor 349 00:19:01,860 --> 00:19:07,330 modo ativado é que ele me permite para criar facilmente um novo plug-in. 350 00:19:07,330 --> 00:19:12,390 >> Assim, enquanto que antes eu realmente não fiz ter esta nova opção plug-in está disponível, 351 00:19:12,390 --> 00:19:16,460 que podemos ver se eu voltar para meu modo não desenvolvedor aqui, 352 00:19:16,460 --> 00:19:18,510 não há nenhum novo plug-in. 353 00:19:18,510 --> 00:19:23,220 Ao habilitar o modo SDK, I tem um novo plug-in está disponível 354 00:19:23,220 --> 00:19:25,660 e eu posso facilmente criar uma. 355 00:19:25,660 --> 00:19:28,160 Neste caso, há um casal de diferentes opções, simples, 356 00:19:28,160 --> 00:19:30,850 um plug-in vazio, um plug-in completo, instalador, Cloud 9 bundle. 357 00:19:30,850 --> 00:19:33,030 Vamos apenas escolher um plug-in vazio por enquanto 358 00:19:33,030 --> 00:19:37,670 para que possamos ver um muito versão simples de um. 359 00:19:37,670 --> 00:19:41,520 >> Agora note que ao longo da lado esquerdo que está lá é agora 360 00:19:41,520 --> 00:19:45,080 algo em Favoritos, que está listando um par de plug-ins 361 00:19:45,080 --> 00:19:47,020 que agora estão disponíveis para mim. 362 00:19:47,020 --> 00:19:50,420 Se eu expandir isso, vamos ser capaz de ver aqueles. 363 00:19:50,420 --> 00:19:52,730 Agora eu quero que você observe algo aqui, que 364 00:19:52,730 --> 00:19:58,260 é que este não é, na verdade contida dentro do diretório do espaço de trabalho 365 00:19:58,260 --> 00:20:03,190 no meu exemplo Ubuntu subjacente, mas está contida no disco rígido. 366 00:20:03,190 --> 00:20:06,330 E onde ele está localizado, porque isso é muito útil para saber, 367 00:20:06,330 --> 00:20:09,570 especialmente se você estiver indo para estar fazendo nada com Git, 368 00:20:09,570 --> 00:20:16,870 onde está localizado este é em uma pasta .c9, / plugins. 369 00:20:16,870 --> 00:20:21,110 Então, se eu for lá, podemos ver que agora a lista de plug-ins que está aqui 370 00:20:21,110 --> 00:20:26,390 corresponda à lista de plug-ins que eu viu no lado esquerdo da minha área de trabalho. 371 00:20:26,390 --> 00:20:28,610 >> Agora, por padrão, e este é o tipo de estranho, 372 00:20:28,610 --> 00:20:31,760 por padrão quando eu criar uma novo plug-in em um espaço de trabalho, 373 00:20:31,760 --> 00:20:36,620 ele cria este plug-in que por padrão tem um nome de um sublinhado. 374 00:20:36,620 --> 00:20:39,760 Geralmente que pode causar alguns problemas. 375 00:20:39,760 --> 00:20:42,340 Assim, o próximo passo que eu normalmente realizar 376 00:20:42,340 --> 00:20:45,880 é apenas para remover essa plug-in específico 377 00:20:45,880 --> 00:20:52,810 e deixar apenas o plug-in simples que Foi há inicialmente, plugin.simple. 378 00:20:52,810 --> 00:20:55,430 E isso é o único que está lá. 379 00:20:55,430 --> 00:20:55,930 ESTÁ BEM. 380 00:20:55,930 --> 00:20:58,380 >> Então o que isso realmente se parece? 381 00:20:58,380 --> 00:21:01,210 Bem, isto é, de novo, um pacote JavaScript 382 00:21:01,210 --> 00:21:05,220 que inclui alguns ficheiros, incluindo um arquivo plugin.js, onde 383 00:21:05,220 --> 00:21:07,700 o conteúdo principal do meu plug-in está localizado, 384 00:21:07,700 --> 00:21:10,590 um arquivo package.json, que realmente especifica 385 00:21:10,590 --> 00:21:13,760 alguns metadados sobre este plug-in, tais como quem é o autor, 386 00:21:13,760 --> 00:21:19,240 quaisquer informações adicionais sobre isso, um Descrição do plug-in, e assim por diante. 387 00:21:19,240 --> 00:21:22,190 E também por padrão, ele cria um arquivo README em branco, 388 00:21:22,190 --> 00:21:26,100 e um arquivo de teste vazio para você criar alguma documentação adicional, 389 00:21:26,100 --> 00:21:29,430 e um chicote de fios de teste se você gostaria de fazer isso. 390 00:21:29,430 --> 00:21:34,160 >> Então vamos dar uma olhada na primeira, muito rapidamente, no ficheiro package.json. 391 00:21:34,160 --> 00:21:38,240 É fácil o suficiente para apenas passar por -lo e preencher as áreas deste 392 00:21:38,240 --> 00:21:42,510 que você gostaria de preencher, como fornecer-lhe um nome, uma descrição, 393 00:21:42,510 --> 00:21:45,010 iterar o número da versão de vez em quando, fornecer 394 00:21:45,010 --> 00:21:47,570 um autor para cada pessoa que contribui, 395 00:21:47,570 --> 00:21:53,000 adicioná-los para os contribuintes seção, eo resto deste você 396 00:21:53,000 --> 00:21:56,390 pode muito bem apenas deixar como é para agora. 397 00:21:56,390 --> 00:21:58,490 >> Há uma coisa que é importante notar, 398 00:21:58,490 --> 00:22:04,990 que na seção de plug-ins, existe uma chave chamada plug-in. 399 00:22:04,990 --> 00:22:11,800 E este é comparado com o nome de o arquivo JavaScript chamado plugin.js. 400 00:22:11,800 --> 00:22:18,290 Então é assim Cloud 9 sabe, quando se lê este arquivo package.json, que 401 00:22:18,290 --> 00:22:20,720 dos js arquivos para realmente carregar. 402 00:22:20,720 --> 00:22:25,440 Se eu criar arquivos js adicionais ou quer renomear esse arquivo js do plug-in, 403 00:22:25,440 --> 00:22:30,380 Eu também tenho que mudá-lo no arquivo package.json. 404 00:22:30,380 --> 00:22:33,660 >> Quaisquer perguntas da platéia? 405 00:22:33,660 --> 00:22:34,160 Não. 406 00:22:34,160 --> 00:22:38,100 Que uma pessoa que é a seguir junto comigo até agora. 407 00:22:38,100 --> 00:22:38,760 >> ESTÁ BEM. 408 00:22:38,760 --> 00:22:42,300 Então, eu realmente criaram uma par de plug-ins já, 409 00:22:42,300 --> 00:22:44,100 Eu acho que, neste espaço de trabalho. 410 00:22:44,100 --> 00:22:53,800 Então, vamos nos livrar de alguns deles, adicione sdk = 1 & debug = 2, recarregue esta área de trabalho, 411 00:22:53,800 --> 00:22:58,780 e vamos ver se nós tem esses plug-ins agora. 412 00:22:58,780 --> 00:23:01,430 C9 / plugins. 413 00:23:01,430 --> 00:23:01,930 Aqui vamos nós. 414 00:23:01,930 --> 00:23:06,910 Podemos ver agora em meus C9 / plugins deste um, temos plugin.1 e plugin.2. 415 00:23:06,910 --> 00:23:15,260 Então, nós estamos indo apenas para intensificar as-- apenas aumentar a quantidade de dificuldade 416 00:23:15,260 --> 00:23:16,660 em cada um desses plug-ins. 417 00:23:16,660 --> 00:23:20,140 Mas aqui se eu criar um novo plug-in, I pode adicioná-lo aos favoritos. 418 00:23:20,140 --> 00:23:25,560 E eu vou simplesmente apagar os de o sistema de arquivos subjacente. 419 00:23:25,560 --> 00:23:28,050 >> Vamos remover isso. 420 00:23:28,050 --> 00:23:33,206 Agora, se eu abrir a minha primeira plug-in, e plugin.js abertas, 421 00:23:33,206 --> 00:23:39,980 podemos ver aqui o subjacente versão simples de um plug-in. 422 00:23:39,980 --> 00:23:42,170 Deixe-me realmente voltar Este outro espaço de trabalho 423 00:23:42,170 --> 00:23:47,160 porque você pode, pelo menos, aqui ver, o que um plug-in em branco realmente parece. 424 00:23:47,160 --> 00:23:51,810 Então, debaixo do capô, isso parece muito semelhante à tecnologia chamada, 425 00:23:51,810 --> 00:23:53,780 Eu acho, é RequireJS. 426 00:23:53,780 --> 00:23:56,000 Repare que isso não faz realmente olhar, talvez, 427 00:23:56,000 --> 00:23:59,150 o mesmo que alguma outra JavaScript arquivos que poderíamos ter visto. 428 00:23:59,150 --> 00:24:04,250 Mas em vez disso, há um par de apenas linhas básicas que ele realmente tem. 429 00:24:04,250 --> 00:24:06,900 >> Todo este material é primeiro interpretado pelo IDE, 430 00:24:06,900 --> 00:24:09,940 mas não é, na verdade, executar até que seja especificado. 431 00:24:09,940 --> 00:24:13,610 E eu vou te dizer sobre quando isso significa, na verdade, em apenas um momento. 432 00:24:13,610 --> 00:24:17,840 Mas note que aqui há uma main.consumes linha na linha 2, 433 00:24:17,840 --> 00:24:23,270 e esta lista todos os plug-ins que este plug-in é dependente. 434 00:24:23,270 --> 00:24:27,150 Então, por padrão, nós talvez não ter quaisquer dependências de outros plug-ins, 435 00:24:27,150 --> 00:24:30,530 mas quando nós realmente precisa depender de características fornecidas 436 00:24:30,530 --> 00:24:34,900 por outros plug-ins do IDE, precisamos listar os plug-ins 437 00:24:34,900 --> 00:24:36,890 na linha main.consumes. 438 00:24:36,890 --> 00:24:39,230 E então nós precisamos vinculá-los ao código 439 00:24:39,230 --> 00:24:42,860 abaixo, que eu vou lhe mostrar em apenas um momento sobre como podemos fazer isso. 440 00:24:42,860 --> 00:24:46,100 >> Main.provides dá um nome a este plug-in 441 00:24:46,100 --> 00:24:49,190 que outros plug-ins poderia usar em sua linha consome. 442 00:24:49,190 --> 00:24:52,480 Portanto, neste caso, o meu plug-in é apenas um conjunto lá por padrão, 443 00:24:52,480 --> 00:24:55,820 e devemos mudar isso para ser aplicável ao nosso próprio plug-in, 444 00:24:55,820 --> 00:24:57,540 como veremos em apenas momento. 445 00:24:57,540 --> 00:25:01,230 Agora, aqui na função principal, esta função principal 446 00:25:01,230 --> 00:25:05,630 é realmente executado e interpretados, mas ele realmente não fazer muito. 447 00:25:05,630 --> 00:25:08,970 Ele só fica tudo configurado, mas na verdade não iniciar o plug-in, 448 00:25:08,970 --> 00:25:11,220 apesar do que o nome soa como. 449 00:25:11,220 --> 00:25:14,690 Isso realmente acontece através uma sequência de métodos que 450 00:25:14,690 --> 00:25:16,820 estão contidos ao longo deste plug-in. 451 00:25:16,820 --> 00:25:20,830 >> Então, se eu rolar para baixo, podemos ver que temos um ciclo de vida em que 452 00:25:20,830 --> 00:25:25,100 em algum evento denominado de carga, ou algum evento chamado de descarregamento, 453 00:25:25,100 --> 00:25:26,940 alguns eventos realmente acontecer. 454 00:25:26,940 --> 00:25:33,500 É realmente aqui onde, como o plug-in começa que esses métodos são chamados. 455 00:25:33,500 --> 00:25:37,240 Então, vamos ser um pouco mais concreto sobre isso e olhar um exemplo. 456 00:25:37,240 --> 00:25:41,010 Então aqui para plugin.1, o que estamos basicamente vai fazer 457 00:25:41,010 --> 00:25:46,010 é criar um item de menu CS50 chamado Seminário de Diálogo 1-- 458 00:25:46,010 --> 00:25:48,070 porque temos dois eles-- e vamos 459 00:25:48,070 --> 00:25:50,300 para injetá-lo no menu Janela. 460 00:25:50,300 --> 00:25:54,590 E quando clicar sobre ele, nós somos vai abrir um diálogo que 461 00:25:54,590 --> 00:25:56,290 mostra-nos algumas informações muito básico. 462 00:25:56,290 --> 00:25:58,050 >> Neste caso, apenas um Olá mundo. 463 00:25:58,050 --> 00:26:01,880 Portanto, esta é uma forma muito simples Olá diálogo mundo 464 00:26:01,880 --> 00:26:05,260 que pode implementar como um plug-in em Cloud 9. 465 00:26:05,260 --> 00:26:07,960 Então, vamos ver como isso realmente parece. 466 00:26:07,960 --> 00:26:12,730 Nós vamos percorrê-lo, apenas de forma relativamente rápida para que 467 00:26:12,730 --> 00:26:15,580 pode olhar para a próxima plug-in também. 468 00:26:15,580 --> 00:26:19,510 Repare que aqui estamos consumir uma variedade de plug-ins. 469 00:26:19,510 --> 00:26:26,080 Estamos consumindo um diálogo plug-in, comandos, menus, e UI. 470 00:26:26,080 --> 00:26:30,440 Parece que eu realmente estou consumindo diálogo duas vezes, para que eu possa remover isso. 471 00:26:30,440 --> 00:26:32,560 >> E note que o caminho que eu estou conectando-os, 472 00:26:32,560 --> 00:26:37,940 este é o tipo de metadados que está dizendo o sistema plug-in que requisitos 473 00:26:37,940 --> 00:26:41,480 são realmente necessário para este plug-in a ser carregado. 474 00:26:41,480 --> 00:26:46,400 É também importante notar que a fim de que os plug-ins são carregados 475 00:26:46,400 --> 00:26:48,300 não é garantido. 476 00:26:48,300 --> 00:26:53,400 Mas o que é garantido é que se eu especificar alguns plug-in como um requisito, 477 00:26:53,400 --> 00:26:56,900 que plug-in será carregado antes de este é carregado. 478 00:26:56,900 --> 00:27:00,390 >> Então isso significa que se o seu plug-in requer de alguma funcionalidade fornecida 479 00:27:00,390 --> 00:27:04,380 por outra coisa no IDE, você deve ter certeza de que seus plug-in consome 480 00:27:04,380 --> 00:27:09,260 que plug-in, de modo que as dependências estão determinados a criar o seu plug-in, 481 00:27:09,260 --> 00:27:15,010 ou instanciar seu plug-in, única depois existe esse quadro existente. 482 00:27:15,010 --> 00:27:18,870 Então aqui eu ter mencionado a metadados para o gerente de plug-in, 483 00:27:18,870 --> 00:27:20,990 que esses que eu estou indo para consumir. 484 00:27:20,990 --> 00:27:24,910 E na função principal aqui, Eu estou indo em seguida, conecte 485 00:27:24,910 --> 00:27:30,240 meu código para esses plug-ins importados. 486 00:27:30,240 --> 00:27:33,420 >> Então, eu estou indo só para criar algumas variáveis ​​que 487 00:27:33,420 --> 00:27:36,620 coincidir com os nomes de cada um daqueles tão que eu possa muito rapidamente referenciá-los 488 00:27:36,620 --> 00:27:37,840 em todo o meu código. 489 00:27:37,840 --> 00:27:41,840 A razão que eu estou importando diálogo é porque eu quero o meu plug-in 490 00:27:41,840 --> 00:27:44,560 para agir como um plug-in de diálogo. 491 00:27:44,560 --> 00:27:49,320 E a maneira que eu sou capaz para fazer isto é, é claro, 492 00:27:49,320 --> 00:27:52,740 conectar meu código para o diálogo plug-in importando- 493 00:27:52,740 --> 00:27:57,210 e, em seguida, por especificando criando uma nova variável de diálogo 494 00:27:57,210 --> 00:28:00,460 e conectá-lo ao que plug-in importados. 495 00:28:00,460 --> 00:28:04,820 E, em seguida, através da definição de meu plug-in como um novo diálogo. 496 00:28:04,820 --> 00:28:07,650 >> Assim, na inicialização, eu quer definir o meu plug-in. 497 00:28:07,650 --> 00:28:10,440 E essa variável chamada plug-in você verá 498 00:28:10,440 --> 00:28:14,030 é apenas usado comumente todo Cloud 9 plug-ins. 499 00:28:14,030 --> 00:28:16,980 Eu estou indo para instanciar um novo diálogo com alguns atributos, 500 00:28:16,980 --> 00:28:22,300 dar-lhe um nome específico, dizer que é possível para os usuários para a fechar. 501 00:28:22,300 --> 00:28:24,960 Que ele vai mostrar um pouco de x em o canto superior direito, 502 00:28:24,960 --> 00:28:27,529 ou um pequeno botão no canto inferior direito. 503 00:28:27,529 --> 00:28:30,570 Ou não posso selecionar o texto de -lo, o que o título desse diálogo 504 00:28:30,570 --> 00:28:32,400 seria, e assim por diante. 505 00:28:32,400 --> 00:28:36,330 Agora, esta apenas define o diálogo, mas ainda não mostrá-lo. 506 00:28:36,330 --> 00:28:40,780 Na verdade, tenho de definir uma acção para que possa ser demonstrado. 507 00:28:40,780 --> 00:28:43,490 >> E novamente, eu encorajá-lo a Dê uma olhada no Cloud 9 SDK, 508 00:28:43,490 --> 00:28:46,930 porque há uma variedade de diálogos e eles são muito bem documentados. 509 00:28:46,930 --> 00:28:50,500 Você pode ver os diferentes tipos que existem, e usá-los 510 00:28:50,500 --> 00:28:55,380 em qualquer plug-in que você tem em mente. 511 00:28:55,380 --> 00:28:58,790 Agora não vai ser um secção de carga, e esta carga 512 00:28:58,790 --> 00:29:03,390 função como você se lembra é utilizada por ciclo de vida do plug-in 513 00:29:03,390 --> 00:29:07,060 para realmente instanciar tudo e deixar tudo pronto para ir. 514 00:29:07,060 --> 00:29:11,440 Agora, quando este plug-in cargas, eu não quer mostrar imediatamente um diálogo, 515 00:29:11,440 --> 00:29:14,160 porque este plug-in será carregado juntamente com o resto do IDE. 516 00:29:14,160 --> 00:29:17,850 E quando eu carregar o IDE, eu não quero o diálogo para aparecer automaticamente. 517 00:29:17,850 --> 00:29:24,170 Eu só quero isso para mostrar quando eu clico em a opção de menu no meu item de menu Janela 518 00:29:24,170 --> 00:29:26,760 que eu vou adicionar a ele momentaneamente. 519 00:29:26,760 --> 00:29:29,480 >> Portanto, há duas etapas distintas aqui que tem que acontecer. 520 00:29:29,480 --> 00:29:32,640 Eu tenho que criar um comando eo comando 521 00:29:32,640 --> 00:29:37,940 será responsável pela verdade mostrando o diálogo sobre o Cloud 9 IDE. 522 00:29:37,940 --> 00:29:42,670 E então eu tenho que ligar, eu tem que criar um novo menu janela 523 00:29:42,670 --> 00:29:46,070 item, que executa esse comando. 524 00:29:46,070 --> 00:29:49,740 De modo que quando eu clico em que Janela item de menu, o comando é então executado 525 00:29:49,740 --> 00:29:52,290 e, portanto, meu diálogo é mostrada. 526 00:29:52,290 --> 00:29:55,690 E assim esta é realmente uma bonita Nice maneira de pensar sobre isso. 527 00:29:55,690 --> 00:30:01,480 >> Porque primeiro eu posso criar um comando cujo nome é CS50 Seminário de Diálogo 1, 528 00:30:01,480 --> 00:30:04,860 que fornece alguns contexto geral para ele. 529 00:30:04,860 --> 00:30:08,930 E o pouco importante aqui é observe o atributo EXEC, que 530 00:30:08,930 --> 00:30:15,160 enumera uma função que será chamada no meu plug-in quando este comando é executado. 531 00:30:15,160 --> 00:30:21,980 Assim, este comando é uma espécie de um-- é apenas uma nuvem arbitrária 9 532 00:30:21,980 --> 00:30:25,780 comando que está disponível a qualquer Cloud 9 plug-in. 533 00:30:25,780 --> 00:30:30,290 Mas a função real que é vai chamar quando esse comando é executado 534 00:30:30,290 --> 00:30:35,010 é a função show de diálogo no meu arquivo plugin.js. 535 00:30:35,010 --> 00:30:38,550 >> E nós podemos realmente ver estes plug-ins e a lista 536 00:30:38,550 --> 00:30:45,480 de comandos que estão disponíveis para nós em Preferências, percorrer todo o caminho down-- 537 00:30:45,480 --> 00:30:48,180 vamos ver, na verdade, é que vamos ver isso agora? 538 00:30:48,180 --> 00:30:53,180 Plug-in gerente, não, eu acho que é i-- definitivamente por aqui em algum lugar. 539 00:30:53,180 --> 00:31:00,016 Bem, há uma lista de comandos em algum lugar, mas eu devo ter, 540 00:31:00,016 --> 00:31:01,140 Esqueci-me onde ele está. 541 00:31:01,140 --> 00:31:02,430 Assim, OK, vamos seguir em frente. 542 00:31:02,430 --> 00:31:02,930 Tudo certo. 543 00:31:02,930 --> 00:31:05,790 Portanto, temos uma lista de comandos que estão disponíveis para nós, 544 00:31:05,790 --> 00:31:08,550 e os comandos são estes apenas arbitrária Cloud 9 545 00:31:08,550 --> 00:31:10,870 comandos que executam código específico. 546 00:31:10,870 --> 00:31:13,620 Então, basta manter isso em mente, que nós estamos indo para executar o programa de diálogo 547 00:31:13,620 --> 00:31:15,640 funcionar momentaneamente. 548 00:31:15,640 --> 00:31:19,740 Agora, quando eu realmente quero adicionar um menu item, posso acrescentar esse item por caminho, 549 00:31:19,740 --> 00:31:25,570 e apenas especificar exatamente onde eu quero que seja, Janela / Seminário CS50 Dialog 1. 550 00:31:25,570 --> 00:31:28,380 E nesse ponto, eu quero para criar um novo item 551 00:31:28,380 --> 00:31:32,040 está indo para executar um comando, CS50 Seminário de Diálogo 1. 552 00:31:32,040 --> 00:31:36,140 Observe que, novamente, esta é a Nuvem 9 comando Eu criei um pouco acima. 553 00:31:36,140 --> 00:31:38,630 >> Agora eu também quero criar um pequeno divisor, 554 00:31:38,630 --> 00:31:42,260 e para que eu possa fazer o mesmo na linha subsequente. 555 00:31:42,260 --> 00:31:46,040 Agora você pode notar que como parte da definição deste item de menu, 556 00:31:46,040 --> 00:31:48,200 há um número associada com ele que 557 00:31:48,200 --> 00:31:51,260 realmente diz onde exatamente Eu quero que esse item de menu para ser 558 00:31:51,260 --> 00:31:53,441 localizado na lista de menus. 559 00:31:53,441 --> 00:31:55,190 Mas você pode notar que eu não sei, na verdade, 560 00:31:55,190 --> 00:31:59,540 ver todos os números com estes menus, por padrão. 561 00:31:59,540 --> 00:32:04,630 Portanto, há uma pequena coisa escondida que o que podemos fazer, uma pequena mudança para a nossa URL. 562 00:32:04,630 --> 00:32:12,920 Assim, além de SDK = 1 & debug = 2, Vou definir menu para 1-- 563 00:32:12,920 --> 00:32:14,690 e espero que seja de menu, não menus. 564 00:32:14,690 --> 00:32:17,001 Oh, é menus = 1. 565 00:32:17,001 --> 00:32:17,500 Aguente. 566 00:32:17,500 --> 00:32:20,150 567 00:32:20,150 --> 00:32:24,690 >> E o que vamos ver em cima de recarga que IDE é que eu ainda estou no modo de depuração, 568 00:32:24,690 --> 00:32:27,540 mas agora há números associado com todos os menus. 569 00:32:27,540 --> 00:32:29,630 E isso diz a você exatamente o que o número 570 00:32:29,630 --> 00:32:34,730 é quando você está tentando injetar algo em qualquer lugar neste sistema de menu. 571 00:32:34,730 --> 00:32:40,365 Assim, no menu Janela, eu posso veja o item 45 é colaborar, 572 00:32:40,365 --> 00:32:43,820 e ponto 38, antes que seja instalador. 573 00:32:43,820 --> 00:32:47,530 Então, quando eu quiser injectar um item entre os dois, 574 00:32:47,530 --> 00:32:50,570 Gostaria apenas de seleccionar um número entre esses dois elementos. 575 00:32:50,570 --> 00:32:56,200 Então, eu selecionei 41 e inserido meu Seminário Dialog o item 1 do menu naquele local. 576 00:32:56,200 --> 00:33:03,640 >> E é por isso que este número que aparece aqui é o número 41. 577 00:33:03,640 --> 00:33:08,010 Esta é a localização desse item de menu no menu de Cloud 9. 578 00:33:08,010 --> 00:33:11,045 Agora da mesma forma, eu queria para criar um divisor 579 00:33:11,045 --> 00:33:13,920 e adicioná-lo de modo que há um nice divisão entre cada um deles de menu 580 00:33:13,920 --> 00:33:14,490 itens. 581 00:33:14,490 --> 00:33:18,600 Então eu acrescentou que no local 43. 582 00:33:18,600 --> 00:33:20,260 Tão longe, tão bom, eu espero? 583 00:33:20,260 --> 00:33:23,920 Então agora vamos realmente olhar para o código específico na caixa de diálogo mostra 584 00:33:23,920 --> 00:33:28,050 que é realmente responsável para abrir esta janela de diálogo. 585 00:33:28,050 --> 00:33:32,710 >> Rolagem para baixo, vejo que eu quero para ter este diálogo função show, 586 00:33:32,710 --> 00:33:34,730 e é extremamente simples. 587 00:33:34,730 --> 00:33:38,570 Eu estou indo para executar o show método no variável plug-in. 588 00:33:38,570 --> 00:33:43,900 E lembre-se de que nós definimos esta plug-in variável acima como um diálogo. 589 00:33:43,900 --> 00:33:48,530 Assim, o plug-in de barras, neste caso, é este objeto que nós definimos internamente. 590 00:33:48,530 --> 00:33:53,030 E vai ser um novo diálogo contidos neste plug-in. 591 00:33:53,030 --> 00:33:57,020 E assim nós realmente referenciado este plug-in variável em muitos lugares 592 00:33:57,020 --> 00:33:59,790 em um típico Cloud 9 ambiente de desenvolvimento. 593 00:33:59,790 --> 00:34:00,867 >> Vamos vê-lo aqui. 594 00:34:00,867 --> 00:34:03,450 Observe que à medida que rolar para baixo, há ciclos de vida adicionais. 595 00:34:03,450 --> 00:34:06,970 Então, observe que estes respondem para eventos que são acionados 596 00:34:06,970 --> 00:34:10,500 por este objeto, este objeto do diálogo. 597 00:34:10,500 --> 00:34:12,710 Por padrão, não há carregar e descarregar, que 598 00:34:12,710 --> 00:34:14,760 estão disponíveis para todos Nuvem 9 plug-ins. 599 00:34:14,760 --> 00:34:17,139 Mas em caso de este diálogo, não há 600 00:34:17,139 --> 00:34:19,139 Outro evento que pode fogo também chamado 601 00:34:19,139 --> 00:34:23,239 Draw, que é disparado quando isso está prestes a ser desenhado na tela, 602 00:34:23,239 --> 00:34:27,239 em primeira instância do diálogo mostrando. 603 00:34:27,239 --> 00:34:29,590 >> Assim, quando na verdade é vai ser mostrado, 604 00:34:29,590 --> 00:34:31,739 lá vai nos fornecer algum HTML. 605 00:34:31,739 --> 00:34:34,710 E usando apenas padrão Práticas HTML pode nós 606 00:34:34,710 --> 00:34:41,030 injetar algumas informações muito simples, nosso mundo Olá, em que o diálogo. 607 00:34:41,030 --> 00:34:47,780 Então, se nós, em seguida, vá para cima, nós podemos ver, em seguida, a procissão de coisas 608 00:34:47,780 --> 00:34:48,989 que está ocorrendo. 609 00:34:48,989 --> 00:34:54,070 Primeiro, criamos um comando Cloud 9 que, quando executado por Cloud 9, 610 00:34:54,070 --> 00:34:55,765 vai disparar esta função. 611 00:34:55,765 --> 00:34:58,390 Ele está indo para executar essa função chamado show de diálogo, que eu tenho 612 00:34:58,390 --> 00:34:59,720 escrito no meu código. 613 00:34:59,720 --> 00:35:04,350 >> Eu criei um item de menu e anexado a ele que mesmo comando 614 00:35:04,350 --> 00:35:08,550 que, quando esse item é clicado em o menu, que comando é então executado 615 00:35:08,550 --> 00:35:10,780 e que a função é então executado. 616 00:35:10,780 --> 00:35:14,080 E dentro da função que eu sou só vai chamar as-- eu sou 617 00:35:14,080 --> 00:35:17,250 indo só para executar o show método deste plug-in, que 618 00:35:17,250 --> 00:35:20,800 vai primeira chamada o método de sorteio, e vai 619 00:35:20,800 --> 00:35:28,050 para disparar esse método abaixo, o desenhar manipulador de eventos, em nosso ciclo de vida. 620 00:35:28,050 --> 00:35:30,820 E então ele vai realmente mostrar o diálogo. 621 00:35:30,820 --> 00:35:34,870 >> Há também um método de esconder, de modo que se eu precisar a oportunidade de esconder 622 00:35:34,870 --> 00:35:37,610 meu diálogo, eu posso fazer a mesma coisa. 623 00:35:37,610 --> 00:35:42,060 Então, isso é muito bonito isso para obter tudo isso para trabalhar. 624 00:35:42,060 --> 00:35:45,160 Observe que é se deslocar para baixo ainda há uma API pública congelamento. 625 00:35:45,160 --> 00:35:51,020 Este apenas diz, basicamente, que eu quer estes métodos para efetivamente 626 00:35:51,020 --> 00:35:56,670 ser público, mas não overwriteable fora do contexto deste plug-in. 627 00:35:56,670 --> 00:36:00,410 E abaixo, na parte inferior, é, talvez, a última coisa 628 00:36:00,410 --> 00:36:03,180 que realmente precisa pagar muita atenção aos aqui, que 629 00:36:03,180 --> 00:36:09,540 é que vamos registrar o nosso plug-in com o nome de Seminário C9 1, 630 00:36:09,540 --> 00:36:11,920 e o objeto plug-in. 631 00:36:11,920 --> 00:36:14,870 >> Que, como você deve se lembrar, é que plug-in que plug-in 632 00:36:14,870 --> 00:36:18,200 objeto que temos vindo a definição em toda a totalidade dessa fonte 633 00:36:18,200 --> 00:36:18,840 código. 634 00:36:18,840 --> 00:36:23,790 E Seminário C9 1 é o string que prometemos 635 00:36:23,790 --> 00:36:26,350 fornecer no topo desta definição. 636 00:36:26,350 --> 00:36:29,280 637 00:36:29,280 --> 00:36:29,780 ESTÁ BEM. 638 00:36:29,780 --> 00:36:34,160 Então, vamos rampa-lo um pouco e ver se podemos fazer alguma coisa 639 00:36:34,160 --> 00:36:36,020 um pouco mais interessante. 640 00:36:36,020 --> 00:36:38,350 Agora esta é apenas tão grande. 641 00:36:38,350 --> 00:36:41,380 Quero dizer, isso é, é realmente muito arrefecer que em tão poucas linhas de código, 642 00:36:41,380 --> 00:36:45,570 podemos modificar o IDE existente e adicionar um item de menu existente 643 00:36:45,570 --> 00:36:48,850 ou adicionar um novo item de menu, adicionar uma comando e mostrar um diálogo, 644 00:36:48,850 --> 00:36:51,040 e apenas um bando de funcionalidade que existe. 645 00:36:51,040 --> 00:36:54,550 É realmente muito grande. 646 00:36:54,550 --> 00:36:59,470 >> Mas ele não faz muito, porque ele não pode comunicar com o Ubuntu subjacente 647 00:36:59,470 --> 00:37:00,450 exemplo. 648 00:37:00,450 --> 00:37:02,560 Então, digamos que eu realmente quer descobrir 649 00:37:02,560 --> 00:37:05,400 algumas informações sobre o subjacente instância Ubuntu, 650 00:37:05,400 --> 00:37:08,260 como as estatísticas de plug-in faz. 651 00:37:08,260 --> 00:37:11,090 Então, vamos dar uma olhada em um pouco mais de informação 652 00:37:11,090 --> 00:37:13,730 sobre como as estatísticas de plug-in de obras. 653 00:37:13,730 --> 00:37:15,900 E, de facto, é muito semelhante a este. 654 00:37:15,900 --> 00:37:17,680 Você deve se lembrar que há um diálogo. 655 00:37:17,680 --> 00:37:21,680 Você deve se lembrar que não há alguma informação que é 656 00:37:21,680 --> 00:37:24,860 mostrado apenas ao longo da barra de menu ao longo o topo, que espero que você é agora 657 00:37:24,860 --> 00:37:27,450 obter um sabor de como implementamos isso, 658 00:37:27,450 --> 00:37:32,360 apenas através da inserção de itens de menu em específico pontos e pela instanciação de um diálogo 659 00:37:32,360 --> 00:37:34,360 e exibindo esse diálogo. 660 00:37:34,360 --> 00:37:36,580 >> Mas nós ainda não demonstraram como podemos conectá-lo 661 00:37:36,580 --> 00:37:40,790 a um comando no Ubuntu instância subjacente. 662 00:37:40,790 --> 00:37:46,930 Então, vamos dar uma olhada em seguida, em plugin.2, e que faz precisamente isso. 663 00:37:46,930 --> 00:37:50,540 Nós vamos abrir plugin.js, que é o código para isso. 664 00:37:50,540 --> 00:37:54,570 Mas, sob o menu Janela, se eu clicar na caixa de diálogo 2, 665 00:37:54,570 --> 00:37:58,290 podemos ver que ele diz isso em vez disso, Olá CS50, que 666 00:37:58,290 --> 00:38:01,800 não olhar tudo o que atraente, certo? 667 00:38:01,800 --> 00:38:04,310 Exceto, assistir a isto. 668 00:38:04,310 --> 00:38:07,020 Deixe-me mudar alguma coisa aqui embaixo. 669 00:38:07,020 --> 00:38:11,540 >> Eu estou indo para ir para o meu espaço de trabalho e mudança seminário 670 00:38:11,540 --> 00:38:15,990 para dizer algo mais, como Olá, Dan. 671 00:38:15,990 --> 00:38:18,150 Eu vou fechá-lo e salvá-lo. 672 00:38:18,150 --> 00:38:22,740 E agora eu estou indo para re-run meu item de menu diálogo. 673 00:38:22,740 --> 00:38:25,590 E note que ele tem agora mudou o que ele diz. 674 00:38:25,590 --> 00:38:26,880 Olá, Dan. 675 00:38:26,880 --> 00:38:30,680 Eu pareço ter feito alguma coisa para baixo aqui na instância Ubuntu subjacente 676 00:38:30,680 --> 00:38:34,370 sem ter qualquer manipulado código que está sendo executado novamente unicamente 677 00:38:34,370 --> 00:38:35,720 no lado do cliente. 678 00:38:35,720 --> 00:38:40,380 Portanto, há, obviamente, algum tipo de comunicação que está acontecendo aqui. 679 00:38:40,380 --> 00:38:44,550 >> Agora, este é o lugar onde um monte de poder do Cloud 9 SDK vem, 680 00:38:44,550 --> 00:38:49,440 é que, nesse plugin.2, que pode realmente causar 681 00:38:49,440 --> 00:38:52,910 uma chamada para acontecer com o exemplo subjacente, 682 00:38:52,910 --> 00:38:55,750 e executar alguns comandos arbitrários. 683 00:38:55,750 --> 00:39:00,230 Portanto, neste caso, eu tenho realmente criado um script muito simples 684 00:39:00,230 --> 00:39:02,350 na minha área de trabalho chamado Seminário. 685 00:39:02,350 --> 00:39:03,610 Então deixe-me abrir isso. 686 00:39:03,610 --> 00:39:05,370 E podemos ver que se parece com isso. 687 00:39:05,370 --> 00:39:08,310 É só uma festa muito simples roteiro, cujo único objectivo na vida 688 00:39:08,310 --> 00:39:11,920 vai ser a ecoar este texto, Olá, Dan. 689 00:39:11,920 --> 00:39:14,360 Ou, antes disso, ele disse Olá, CS50. 690 00:39:14,360 --> 00:39:16,000 E isso é tudo o que vai fazer. 691 00:39:16,000 --> 00:39:21,030 >> Porque este é agora um comando que eu posso correr. 692 00:39:21,030 --> 00:39:23,750 Eu posso realmente executá-lo aqui. 693 00:39:23,750 --> 00:39:28,440 Podemos ver que ele realmente é apenas um comando que eu corro naturalmente. 694 00:39:28,440 --> 00:39:32,850 Eu posso pedir ao meu plug-in para executar este comando no espaço de trabalho subjacente 695 00:39:32,850 --> 00:39:36,510 e analisar as informações que foi devolvido a partir dele, 696 00:39:36,510 --> 00:39:40,300 e fazer algo com ele, e modificar meu plug-in eo comportamento que eu 697 00:39:40,300 --> 00:39:43,240 ter na minha plug-in como um resultado. ESTÁ BEM. 698 00:39:43,240 --> 00:39:45,450 Então vamos ver como isso acontece. 699 00:39:45,450 --> 00:39:48,380 Vimos isso muito simples Script em lotes seminário que eu 700 00:39:48,380 --> 00:39:51,080 [Inaudível] que ele pode realmente ser executado. 701 00:39:51,080 --> 00:39:54,560 >> E agora vamos ver as modificações que são necessários para amarrar isso juntos 702 00:39:54,560 --> 00:39:57,620 com a janela de diálogo, e executá-lo. 703 00:39:57,620 --> 00:40:02,030 Então aqui nós vamos fazer muito muito a mesma coisa que vimos antes. 704 00:40:02,030 --> 00:40:05,500 Mas note que entre os coisas que eu consumidos agora-- 705 00:40:05,500 --> 00:40:09,090 em adição ao diálogo, que novamente acontecer de eu ter feito duas vezes, 706 00:40:09,090 --> 00:40:14,300 que não é necessary-- além para o diálogo e os comandos 707 00:40:14,300 --> 00:40:17,780 e os menus os plug-ins, que foram necessário, em primeiro um para me 708 00:40:17,780 --> 00:40:21,560 para definir um novo comando e injetar um item nos menus, 709 00:40:21,560 --> 00:40:25,010 Eu também tenho esse proc plug-in. 710 00:40:25,010 --> 00:40:28,500 >> E este proc plug-in permite que nós para manipular processos 711 00:40:28,500 --> 00:40:30,950 no exemplo subjacente. 712 00:40:30,950 --> 00:40:34,970 Eu conectá-lo depois que eu disse que o meu plug-in exige. 713 00:40:34,970 --> 00:40:38,320 Eu, em seguida, conectá-lo ao código, como vimos na função principal. 714 00:40:38,320 --> 00:40:40,970 Mais uma vez, eu vou inicializar meu diálogo. 715 00:40:40,970 --> 00:40:45,500 E se nós nos movemos para baixo agora, pode ver como isso é diferente. 716 00:40:45,500 --> 00:40:49,040 A função de carga é a mesma, então ele só vai para criar um comando 717 00:40:49,040 --> 00:40:54,250 e criar um item de menu e conecte esse item de menu para esse comando. 718 00:40:54,250 --> 00:40:56,690 Mas se agora rolar para baixo para mostrar o diálogo, 719 00:40:56,690 --> 00:40:59,990 podemos começar a ver onde as diferenças surgem. 720 00:40:59,990 --> 00:41:04,170 >> Temos função show de diálogo, que está indo só para mostrar o diálogo. 721 00:41:04,170 --> 00:41:12,410 Mas quando eu mostrar este diálogo, e quando o método show é chamado, 722 00:41:12,410 --> 00:41:14,430 ele aciona a função draw. 723 00:41:14,430 --> 00:41:18,990 E eu vou especificar, em seguida, algum conteúdo dentro do que isso. 724 00:41:18,990 --> 00:41:21,910 Então, eu estou indo só para criar um div, fornecer a ele 725 00:41:21,910 --> 00:41:24,020 algum texto básico, Olá, mundo. 726 00:41:24,020 --> 00:41:27,250 Mas note que aqui eu sou vai anexar a ele uma identificação. 727 00:41:27,250 --> 00:41:32,350 E a linha seguinte eu vou ao descobrir que ID usando JavaScript, 728 00:41:32,350 --> 00:41:36,210 e armazenar esse objeto em outra variável 729 00:41:36,210 --> 00:41:38,280 que eu estou indo só para chamar conteúdo. 730 00:41:38,280 --> 00:41:41,780 >> Então, agora sempre que eu tenho conteúdo, tudo que eu preciso fazer 731 00:41:41,780 --> 00:41:46,100 é apenas modificar HTML interior deste objeto. 732 00:41:46,100 --> 00:41:51,300 E o diálogo vai HTML em seguida, ser modificado, bem. 733 00:41:51,300 --> 00:41:55,500 Assim, quando este plug-in é então mostradas, o que pode acontecer 734 00:41:55,500 --> 00:41:59,820 e este é um novo evento que é novo para este plug-in, 735 00:41:59,820 --> 00:42:03,380 mas acontece em todos os plug-in com o diálogo, quando este é agora mostrado, 736 00:42:03,380 --> 00:42:07,100 Eu vou chamar um função chamada buscar informações. 737 00:42:07,100 --> 00:42:10,520 E esta função é a carne dele aqui. 738 00:42:10,520 --> 00:42:14,930 Vou usar esse plug-in que proc descrevemos antes, que por sinal, 739 00:42:14,930 --> 00:42:19,790 é realmente apenas uma biblioteca Node.js que Cloud 9 está usando aqui. 740 00:42:19,790 --> 00:42:21,730 >> Então você pode realmente olhar para cima sobre como este 741 00:42:21,730 --> 00:42:25,340 funciona se você ir para o Documentação Node.js 742 00:42:25,340 --> 00:42:29,220 e olhar para cima o arquivo exec método para processos de lá. 743 00:42:29,220 --> 00:42:33,110 Eu estou indo para executar este específico comando, casa Ubuntu espaço de trabalho 744 00:42:33,110 --> 00:42:38,000 seminário, que é a mesma, isto mesmo comando que eu criei antes. 745 00:42:38,000 --> 00:42:40,680 Fornecer a ele uma corrente diretório de trabalho, apenas 746 00:42:40,680 --> 00:42:45,440 para ser seguro em termos de ultra-a contexto de onde este está em execução. 747 00:42:45,440 --> 00:42:49,150 E uma vez que tem sido preenchido e devolvido, 748 00:42:49,150 --> 00:42:54,040 Eu estou indo para executar este função chamada de saída de análise. 749 00:42:54,040 --> 00:42:54,540 ESTÁ BEM. 750 00:42:54,540 --> 00:42:58,670 Portanto, este, em seguida, vai para executar um comando no local, ou melhor, 751 00:42:58,670 --> 00:43:01,700 a instância remota Ubuntu. 752 00:43:01,700 --> 00:43:03,490 Quando eu voltar alguns informação, eu sou em seguida, 753 00:43:03,490 --> 00:43:06,940 vai chamar uma função separada chamado de saída de análise, que 754 00:43:06,940 --> 00:43:13,790 tem essa assinatura aqui, err, stdout, stderr, 755 00:43:13,790 --> 00:43:15,910 e realizar alguns cálculos sobre isso. 756 00:43:15,910 --> 00:43:18,930 Então, se eu recebi um erro de algum tipo de todo, 757 00:43:18,930 --> 00:43:22,340 Eu realmente verificar para ver se erro na verdade tem alguns dados. 758 00:43:22,340 --> 00:43:27,204 E se assim for, então eu vou modificar o interior HTML do objeto de conteúdo, que 759 00:43:27,204 --> 00:43:28,995 é você lembrar, nós ligado ao diálogo 760 00:43:28,995 --> 00:43:32,210 no instantiattion desse diálogo, ou no primeiro desenho 761 00:43:32,210 --> 00:43:33,370 de que o diálogo. 762 00:43:33,370 --> 00:43:35,650 Vou apenas dizer que algum erro aconteceu. 763 00:43:35,650 --> 00:43:37,140 >> Agora este é demasiado simplista. 764 00:43:37,140 --> 00:43:40,170 O valor de erro será tipicamente conter algo que fosse útil, 765 00:43:40,170 --> 00:43:45,520 talvez um número de erro e uma erro do próprio script. 766 00:43:45,520 --> 00:43:48,430 Ou se o script escreveu algo para o erro padrão, 767 00:43:48,430 --> 00:43:50,890 que os dados seriam preenchidos em que o parâmetro bem. 768 00:43:50,890 --> 00:43:53,765 E eu poderia ser um pouco mais cuidado com o erro 769 00:43:53,765 --> 00:43:55,332 Na verdade, estou mostrando pessoas. 770 00:43:55,332 --> 00:43:57,415 Mas este exemplo simplista é bom o suficiente para agora 771 00:43:57,415 --> 00:43:59,715 para, pelo menos, ver como tudo isso funciona. 772 00:43:59,715 --> 00:44:01,590 Caso contrário, se houver nenhum erro, então eu sou apenas 773 00:44:01,590 --> 00:44:05,500 vai fornecer a matéria- saída do que a função 774 00:44:05,500 --> 00:44:10,070 no interior do HTML este conteúdo elemento, e, em seguida, atualizar o meu plug-in 775 00:44:10,070 --> 00:44:12,490 e mostrá-lo aqui. 776 00:44:12,490 --> 00:44:17,550 E isso é muito bonito tudo o que é necessária para obter este para ser executado. 777 00:44:17,550 --> 00:44:22,860 E então vamos pensar em seguida, como isso funciona, em geral. 778 00:44:22,860 --> 00:44:29,330 Quando eu carregado pela primeira vez este plug-in, assim como o primeiro plug-in, 779 00:44:29,330 --> 00:44:32,670 Eu estou indo para adicionar um comando que é disponível para qualquer coisa, a qualquer plug-in 780 00:44:32,670 --> 00:44:37,120 em Cloud 9, chamado Seminário CS50 Diálogo 2, cuja responsabilidade 781 00:44:37,120 --> 00:44:39,670 será para executar este show diálogo, que é você se lembra, 782 00:44:39,670 --> 00:44:42,730 vai mostrar realmente o diálogo que eu solicitadas abaixo. 783 00:44:42,730 --> 00:44:45,980 >> Então eu vou acrescentar que comando em um menu de janela 784 00:44:45,980 --> 00:44:48,070 para que eu tenha acesso a isso. 785 00:44:48,070 --> 00:44:51,420 E quando esse diálogo é solicitado para ser mostrado, 786 00:44:51,420 --> 00:44:55,170 Vou buscar algumas informações de a instância do Ubuntu subjacente 787 00:44:55,170 --> 00:44:58,890 usando o comando arquivo exec. 788 00:44:58,890 --> 00:44:59,920 Com licença. 789 00:44:59,920 --> 00:45:04,140 Uma vez que é retornado e eu receber algum informações, em seguida, no lado do cliente 790 00:45:04,140 --> 00:45:08,370 de novo, vou ser capaz de analisar a saída do comando 791 00:45:08,370 --> 00:45:12,650 e atualizar o interior HTML dos elementos 792 00:45:12,650 --> 00:45:16,440 que tinham ligado a anterior. 793 00:45:16,440 --> 00:45:19,910 >> E com isso, então temos esta totalmente funcional plug-in 794 00:45:19,910 --> 00:45:24,520 que me permite buscar informações desse script arbitrário 795 00:45:24,520 --> 00:45:27,170 que criamos em nossa instância subjacente. 796 00:45:27,170 --> 00:45:29,660 Mas, novamente, é realmente importante e realmente chave 797 00:45:29,660 --> 00:45:33,030 de forma a separar cada onde dessas coisas está acontecendo, 798 00:45:33,030 --> 00:45:38,320 que temos tudo isso do lado do cliente código que está sendo executado no navegador, 799 00:45:38,320 --> 00:45:41,640 e que ainda não têm acesso para o sistema de arquivos subjacente 800 00:45:41,640 --> 00:45:44,895 até que nós realmente executar alguns destes comandos que são fornecidos pela nuvem 801 00:45:44,895 --> 00:45:49,055 9 SDK como proc, e alguns outros que nos permitem ler alguns dados, 802 00:45:49,055 --> 00:45:53,500 ou ler alguns arquivos se precisarmos para fazer qualquer coisa do tipo. 803 00:45:53,500 --> 00:45:56,650 >> Agora, este é um exemplo um tanto simples. 804 00:45:56,650 --> 00:46:00,570 Há outras coisas que nós talvez queira fazer também. 805 00:46:00,570 --> 00:46:03,470 Por exemplo, talvez nós realmente deseja salvar algumas informações 806 00:46:03,470 --> 00:46:04,630 com as preferências. 807 00:46:04,630 --> 00:46:07,900 Ou talvez nós queremos adicionar um novo painel de preferências 808 00:46:07,900 --> 00:46:09,690 ou algo nesse sentido. 809 00:46:09,690 --> 00:46:13,370 Então, isso é algo que você pode dar uma olhada no Cloud 9 SDK 810 00:46:13,370 --> 00:46:15,300 para obter mais informações sobre. 811 00:46:15,300 --> 00:46:19,990 Mas isso é realmente o suficiente para começar. 812 00:46:19,990 --> 00:46:26,410 Então, só para ser um pouco mais concreto sobre a maneira que algumas destas coisas 813 00:46:26,410 --> 00:46:31,370 função, eu queria mostrar apenas mais um exemplo, que é apenas alguns 814 00:46:31,370 --> 00:46:35,580 do código do Stats 50 plug-in. 815 00:46:35,580 --> 00:46:39,780 >> E esse código é basicamente Com base nestes exemplos 816 00:46:39,780 --> 00:46:43,310 que você realmente visto, mas tem mais algumas salvaguardas 817 00:46:43,310 --> 00:46:47,460 e tem mais alguma complexidade, a fim para alcançar algumas das coisas adicionais 818 00:46:47,460 --> 00:46:48,930 que queremos alcançar. 819 00:46:48,930 --> 00:46:54,510 Por exemplo, se eu quero ser capaz de salvar algumas configurações, 820 00:46:54,510 --> 00:46:57,700 então eu preciso para ter acesso para as configurações de plug-in, 821 00:46:57,700 --> 00:47:01,820 e cada vez que eu quero para ler algumas configurações, 822 00:47:01,820 --> 00:47:08,340 Posso, por exemplo, anexar a vários eventos nas configurações do plug-in. 823 00:47:08,340 --> 00:47:13,630 Então, toda vez que as definições é vermelho, por exemplo, na minha própria plug-in, 824 00:47:13,630 --> 00:47:18,450 se eu vou ler alguns configurações do armazenamento salvos 825 00:47:18,450 --> 00:47:24,540 preferências do usuário, então eu posso definir padrões para um local específico, 826 00:47:24,540 --> 00:47:31,250 de preferência específica, em que JSON arquivo de opções de estilo que nós temos 827 00:47:31,250 --> 00:47:33,890 salvou anteriormente, que já vimos antes. 828 00:47:33,890 --> 00:47:36,370 >> E se eu vou escrever algumas configurações para ele, 829 00:47:36,370 --> 00:47:40,440 então eu can-- ou assim que detectar que as definições foram escritos 830 00:47:40,440 --> 00:47:44,420 a-- porque, por exemplo, aqueles configurações foram modificadas pelo usuário 831 00:47:44,420 --> 00:47:47,335 quer directamente nas suas definições arquivo, ou no painel de preferências 832 00:47:47,335 --> 00:47:49,370 mudou as configurações arquivo diretamente, 833 00:47:49,370 --> 00:47:53,590 Eu posso realmente atualizar parte do código ou atualizar o comportamento do meu plug-in 834 00:47:53,590 --> 00:47:58,710 com base nesses mudanças que têm ocorreu no arquivo de configurações também. 835 00:47:58,710 --> 00:48:03,380 Mas, realmente, o resto é bastante muito presente que você já viu. 836 00:48:03,380 --> 00:48:06,040 >> Nós adicionamos alguns, talvez algo que é novo. 837 00:48:06,040 --> 00:48:09,440 Por isso, adicionar um arquivo de preferência, ou melhor, um painel de preferências, 838 00:48:09,440 --> 00:48:14,250 para a janela de preferências, o que novamente você pode encontrar mais informações 839 00:48:14,250 --> 00:48:16,220 no Cloud 9 SDK me ler. 840 00:48:16,220 --> 00:48:18,460 Mas tudo o resto é muito bonito, bonito 841 00:48:18,460 --> 00:48:25,810 semelhante ao que vimos antes, apenas com alguma verificação de erros adicional 842 00:48:25,810 --> 00:48:30,150 e algumas proteções adicionais e alguma funcionalidade adicional 843 00:48:30,150 --> 00:48:33,314 para aplicar todas as várias coisas que temos visto. 844 00:48:33,314 --> 00:48:35,230 Se você não tem, na verdade, viu ainda, você pode 845 00:48:35,230 --> 00:48:40,955 estar se perguntando o que o subjacente comando é na janela de Estatísticas 50. 846 00:48:40,955 --> 00:48:42,840 É, na verdade função. 847 00:48:42,840 --> 00:48:48,100 Bem, isso é-- oh, caramba. 848 00:48:48,100 --> 00:48:49,410 Um segundo. 849 00:48:49,410 --> 00:48:49,910 Aguente. 850 00:48:49,910 --> 00:48:52,270 ESTÁ BEM. 851 00:48:52,270 --> 00:48:58,090 Deixe-me passar isso para que possamos realmente ver o que acontece quando digito Stats 50. 852 00:48:58,090 --> 00:49:02,140 Note-se que neste caso, o comando que eu estou fora putting 853 00:49:02,140 --> 00:49:06,310 é realmente novo, só o script que é indo para a saída de um monte de informações 854 00:49:06,310 --> 00:49:08,040 no formato JSON. 855 00:49:08,040 --> 00:49:10,800 E a razão que fazemos desta maneira é que, porque 856 00:49:10,800 --> 00:49:15,480 estão operando, porque nós escrevemos o código do lado do cliente em JavaScript, 857 00:49:15,480 --> 00:49:19,500 nós podemos muito facilmente apenas analisar objetos JavaScript, 858 00:49:19,500 --> 00:49:23,050 e realmente ser capaz de manipular esses objetos apenas como faríamos 859 00:49:23,050 --> 00:49:24,610 qualquer outro objeto JavaScript. 860 00:49:24,610 --> 00:49:27,650 >> E assim, este é um muito conveniente maneira de fornecer algumas informações 861 00:49:27,650 --> 00:49:31,950 da instância Ubuntu subjacente, tais como o número da versão, o anfitrião 862 00:49:31,950 --> 00:49:36,360 nomear, se um servidor está escutando, o que o servidor é, assim por diante e assim por diante, 863 00:49:36,360 --> 00:49:39,150 e analisar que muito facilmente e muito rapidamente 864 00:49:39,150 --> 00:49:44,870 no plug-in que está indo, em seguida, para nos mostrar toda essa informação. 865 00:49:44,870 --> 00:49:47,920 Então, novamente, o insight chave aqui para manter em mente 866 00:49:47,920 --> 00:49:54,260 É esta separação entre o exemplo subjacente, 867 00:49:54,260 --> 00:49:57,490 e também onde o código está sendo carregado. 868 00:49:57,490 --> 00:49:59,870 Que quando eu tenho um cliente, é o primeiro carregamento. 869 00:49:59,870 --> 00:50:03,951 Apenas este arquivo JavaScript estática em algum lugar, talvez CDN de algum tipo. 870 00:50:03,951 --> 00:50:06,450 Nós realmente não precisa se preocupar muito sobre esse primeiro passo. 871 00:50:06,450 --> 00:50:08,970 >> Nós só sabemos que é em execução no lado do cliente 872 00:50:08,970 --> 00:50:12,740 e é aí que eu vou comunicar-se com esta instância estivador. 873 00:50:12,740 --> 00:50:15,970 Isso nós vamos fazê-lo através da Cloud 9 SDK. 874 00:50:15,970 --> 00:50:20,460 Nós realmente não têm a capacidade, usando JavaScript ou Node.js, 875 00:50:20,460 --> 00:50:21,750 para escrever diretamente para ele. 876 00:50:21,750 --> 00:50:29,400 Nós apenas usar aqueles SDK existente APIs para fazer essa ação para nós. 877 00:50:29,400 --> 00:50:32,490 E novamente, um dos coisas realmente importantes 878 00:50:32,490 --> 00:50:38,990 é que, quando eu criei este, quando eu criei este plug-in, 879 00:50:38,990 --> 00:50:42,510 e como eu estou trabalhando nele, em um das coisas importantes a fazer 880 00:50:42,510 --> 00:50:44,840 é trazer o console JavaScript. 881 00:50:44,840 --> 00:50:49,400 >> Porque uma vez que este é tudo operando no JavaScript, 882 00:50:49,400 --> 00:50:54,700 no lado do cliente, se eu usar um console.log method-- então apenas 883 00:50:54,700 --> 00:50:56,550 para mostrar um exemplo aqui. 884 00:50:56,550 --> 00:51:07,630 Vamos tentar modificar este simples plug-in para também registrar alguns dados. 885 00:51:07,630 --> 00:51:09,895 E nós vamos adicionar a norma. 886 00:51:09,895 --> 00:51:13,010 887 00:51:13,010 --> 00:51:16,810 Então vamos mudar isso para estar bem aqui. 888 00:51:16,810 --> 00:51:19,560 Agora, quando eu executar console.log, tenha em mente 889 00:51:19,560 --> 00:51:21,630 desde que este esteja a executar no lado do cliente, 890 00:51:21,630 --> 00:51:24,900 Vou ver isso no meu próprio JavaScript console, que 891 00:51:24,900 --> 00:51:28,540 é como eu, então, ser capaz de tentar solucionar problemas e depurar 892 00:51:28,540 --> 00:51:30,330 alguns dos problemas que eu tenho. 893 00:51:30,330 --> 00:51:34,110 >> Note-se que porque Estou em modo SDK, eu sou 894 00:51:34,110 --> 00:51:37,820 então, capaz de manipular Plug-ins nesta instância. 895 00:51:37,820 --> 00:51:39,800 Então, mesmo que seja salvo no caso em apreço, 896 00:51:39,800 --> 00:51:47,130 este é o único exemplo de que anterior regra a ser violados, onde o Cloud 9 897 00:51:47,130 --> 00:51:51,030 SDK vai realmente puxar plug-ins do subjacente instância e, em seguida, executá-los. 898 00:51:51,030 --> 00:51:54,440 Para que, desta forma, então eu sou capaz de manipular e construir 899 00:51:54,440 --> 00:51:55,750 alguns plug-ins aqui. 900 00:51:55,750 --> 00:51:58,080 Mas para me ver atualizações para este plug-in, 901 00:51:58,080 --> 00:52:01,880 porque é no lado do cliente, Eu preciso salvar o plug-in 902 00:52:01,880 --> 00:52:04,950 e depois recarregar todo o espaço de trabalho, de modo a que o plug-in novo é então 903 00:52:04,950 --> 00:52:09,230 baixado para o meu cliente, para o meu navegador web, e, em seguida, está sendo usado. 904 00:52:09,230 --> 00:52:14,460 >> Então agora quando eu clicar neste Seminário Diálogo 2, ainda vemos isso. 905 00:52:14,460 --> 00:52:21,311 Mas agora espero que na minha JavaScript diálogo, que se ver meu-- esperar, 906 00:52:21,311 --> 00:52:21,810 aguente. 907 00:52:21,810 --> 00:52:24,420 Eu poderia ter de abrir o diálogo fresco. 908 00:52:24,420 --> 00:52:30,230 Devemos ver os meus dados recebidos aqui. 909 00:52:30,230 --> 00:52:32,780 Os dados recebidos, olá, Dan, que é você se lembra, 910 00:52:32,780 --> 00:52:37,770 era uma operação que console.log foi solicitada no plug-in. 911 00:52:37,770 --> 00:52:42,140 Portanto, esta descrição, em seguida, que eu mencionei antes, 912 00:52:42,140 --> 00:52:45,460 este diálogo, ou este diagrama vez, que eu 913 00:52:45,460 --> 00:52:49,140 mencionado antes é o que acontece. 914 00:52:49,140 --> 00:52:53,150 Mas há uma importante exceção apenas para o desenvolvimento, 915 00:52:53,150 --> 00:52:55,490 que é que o plug-in em si pode, na verdade, 916 00:52:55,490 --> 00:52:59,160 ser armazenados na instância janela de encaixe temporariamente, uma vez que presumivelmente Nuvem 9 917 00:52:59,160 --> 00:53:02,210 não querem que sejamos capazes de manipular objetos na sua CDN. 918 00:53:02,210 --> 00:53:08,650 >> E a nuvem 9 clientes, após o carregamento, vai encontrar os plug-ins em que. 919 00:53:08,650 --> 00:53:11,540 Plug-in C9 pasta e carregar esses. 920 00:53:11,540 --> 00:53:15,780 Mas aqueles que ainda estão acontecendo apenas no lado do cliente. 921 00:53:15,780 --> 00:53:19,440 Então, em seguida, esta é apenas a uma excepção de que ocorre apenas 922 00:53:19,440 --> 00:53:23,220 para o desenvolvimento de Cloud 9 plug-ins. 923 00:53:23,220 --> 00:53:25,000 Mas o resto do tempo-- ea razão 924 00:53:25,000 --> 00:53:26,708 que queremos realmente martelar este casa-- 925 00:53:26,708 --> 00:53:30,140 é porque a maioria das vezes isso é indo para ser executado a partir do CDN, 926 00:53:30,140 --> 00:53:33,030 e só vai ser executado puramente do lado do cliente. 927 00:53:33,030 --> 00:53:36,110 >> Normalmente, não haverá interacção com o plug-in, 928 00:53:36,110 --> 00:53:39,840 ou não tem sequer a ser qualquer razão que se os plug-ins 929 00:53:39,840 --> 00:53:42,970 são efectivamente armazenados na subjacente instância janela de encaixe, 930 00:53:42,970 --> 00:53:47,240 excepto no caso de este desenvolvimento SDK. 931 00:53:47,240 --> 00:53:51,510 Então, novamente, isso muda apenas ligeiramente devido ao facto 932 00:53:51,510 --> 00:53:54,650 que estamos executando o modo SDK. 933 00:53:54,650 --> 00:53:57,160 Vai então carregar os plug-ins de desenvolvimento, 934 00:53:57,160 --> 00:54:01,690 e o único propósito de modo que é aqui Eu posso usar Cloud 9 para fazer o desenvolvimento 935 00:54:01,690 --> 00:54:04,620 para Cloud 9 plugins. 936 00:54:04,620 --> 00:54:07,220 Mas, mesmo assim, isso não muda novamente como isso funciona. 937 00:54:07,220 --> 00:54:09,650 Ele ainda está sendo executado inteiramente no lado do cliente. 938 00:54:09,650 --> 00:54:16,260 >> Isso apenas significa que sempre que eu quero criar Cloud 9 plug-ins em Cloud 9, 939 00:54:16,260 --> 00:54:19,320 Eu criar esses plug-ins, colocá-los no meu. 940 00:54:19,320 --> 00:54:25,110 Pasta / plugins C9 em minha casa diretório, certifique-se de que eu estou no modo SDK, 941 00:54:25,110 --> 00:54:29,290 recarregar a página toda vez que eu realmente fazer alterações para que plug-in, 942 00:54:29,290 --> 00:54:33,590 e ver o que acontece no meu console JavaScript. 943 00:54:33,590 --> 00:54:36,240 Apenas gerir a minha JavaScript Console para certificar-se de 944 00:54:36,240 --> 00:54:38,930 que qualquer solução de problemas informação que eu coloque para consolar, 945 00:54:38,930 --> 00:54:41,920 ou qualquer outra coisa que possa ocorrer por causa de erros que eu escrevi 946 00:54:41,920 --> 00:54:44,940 no meu código ou semelhantes, aparece lá. 947 00:54:44,940 --> 00:54:48,007 >> E com isso, é realmente o suficiente para começar, eu acho, 948 00:54:48,007 --> 00:54:49,090 com a nuvem 9 plug-ins. 949 00:54:49,090 --> 00:54:53,120 Especialmente tendo um olhar para o SDK documentação que Cloud 9 oferece. 950 00:54:53,120 --> 00:54:56,650 É uma ótima maneira de começar iniciado, e de forma muito fácil 951 00:54:56,650 --> 00:54:59,900 criar alguns plug-ins para Cloud 9. 952 00:54:59,900 --> 00:55:02,820 E com isso, eu quero agradecer a todos muito para se juntar a mim. 953 00:55:02,820 --> 00:55:05,550 Espero que você vai se divertir escrever plug-ins para Cloud 9. 954 00:55:05,550 --> 00:55:09,600 Melhorar Talvez plug-ins que temos agora, ou talvez mesmo 955 00:55:09,600 --> 00:55:11,360 adicionando algumas funcionalidades de seu próprio país. 956 00:55:11,360 --> 00:55:14,540 Estamos ansiosos para vê- o que é que você cria. 957 00:55:14,540 --> 00:55:16,330 Até então, tchau. 958 00:55:16,330 --> 00:55:18,734