1 00:00:00,000 --> 00:00:05,159 2 00:00:05,159 --> 00:00:09,240 >> DAN ARMENDARIZ: Hola, y bienvenidos a un seminario CS50 en Personalización Cloud 9, 3 00:00:09,240 --> 00:00:11,724 y el IDE CS50. 4 00:00:11,724 --> 00:00:13,640 Así que hoy vamos a simplemente hablar un poco 5 00:00:13,640 --> 00:00:16,090 sobre algunas de las información técnica que 6 00:00:16,090 --> 00:00:19,380 va detrás de la arquitectura de Cloud 9, y cómo 7 00:00:19,380 --> 00:00:25,560 hemos puesto en marcha algunos de los plug-ins como parte de Cloud 9 para proporcionar IDE CS50. 8 00:00:25,560 --> 00:00:28,820 Así que vamos a saltar a la derecha y empezar a hablar de los plug-ins. 9 00:00:28,820 --> 00:00:32,659 >> Así plug-ins son realmente en la núcleo de la experiencia de Cloud 9. 10 00:00:32,659 --> 00:00:37,590 Cloud 9 es la tecnología subyacente que proporciona a nosotros la IDE, 11 00:00:37,590 --> 00:00:42,160 y también la ventana de terminal en el parte inferior, junto con el workspace-- 12 00:00:42,160 --> 00:00:46,430 Ubuntu workspace-- que utilizar para compilar todos nuestros proyectos 13 00:00:46,430 --> 00:00:49,190 y realizar nuestros boletines de problemas, completar nuestros boletines de problemas. 14 00:00:49,190 --> 00:00:51,820 Pero en el corazón de todos de la misma, toda la tecnología 15 00:00:51,820 --> 00:00:54,590 es realmente sólo un montón de plug-ins. 16 00:00:54,590 --> 00:00:58,740 Todo es un plug-in que pueden ser modificados, 17 00:00:58,740 --> 00:01:00,710 ampliado, puede crear sus propios plug-ins, 18 00:01:00,710 --> 00:01:03,060 usted puede quitar otra plug-ins, para alterar realmente 19 00:01:03,060 --> 00:01:07,540 mucho de la funcionalidad de la Nube 9 IDE existente. 20 00:01:07,540 --> 00:01:12,040 >> Así que esta es una existente Cloud 9 medio ambiente. 21 00:01:12,040 --> 00:01:14,750 Esto es realmente sólo la defecto Cloud 9 medio ambiente. 22 00:01:14,750 --> 00:01:18,450 Y echar un vistazo a cómo realmente es diferente de la IDE CS50. 23 00:01:18,450 --> 00:01:20,340 Así que este es el IDE CS50. 24 00:01:20,340 --> 00:01:25,060 Tenga en cuenta que hay algunos visual cambios entre los regulares Cloud 9 25 00:01:25,060 --> 00:01:28,000 medio ambiente y el IDE CS50. 26 00:01:28,000 --> 00:01:30,010 En concreto, se le notar un par de cambios. 27 00:01:30,010 --> 00:01:34,201 En primer lugar, hay menos elementos de menú para empezar. 28 00:01:34,201 --> 00:01:36,200 En realidad hay un camino que usted puede cambiar eso. 29 00:01:36,200 --> 00:01:37,270 Se llama en modo simple. 30 00:01:37,270 --> 00:01:40,910 >> Por defecto, en modo simple está habilitada y que simplifica algunos de los elementos del menú. 31 00:01:40,910 --> 00:01:43,032 Se elimina algunas de las los más avanzados, 32 00:01:43,032 --> 00:01:45,240 porque, francamente, una gran cantidad de estudiantes que están llegando 33 00:01:45,240 --> 00:01:48,550 y no es necesario saber acerca de algunos de las características más avanzadas 34 00:01:48,550 --> 00:01:50,530 no son abrumados con un montón de opciones. 35 00:01:50,530 --> 00:01:55,610 Pero nos proporcionan la capacidad de tomar fuera de esas llamadas ruedas de entrenamiento 36 00:01:55,610 --> 00:01:57,360 y eliminar ese andamios para que la gente 37 00:01:57,360 --> 00:02:00,832 puede llegar a ser más acostumbrados a las características avanzadas de la IDE. 38 00:02:00,832 --> 00:02:02,540 Inmediatamente a la derecha de eso, no hay 39 00:02:02,540 --> 00:02:05,435 también un botón de depuración, que en la norma de la nube 40 00:02:05,435 --> 00:02:08,199 9 ambiente se llama simplemente correr. 41 00:02:08,199 --> 00:02:11,990 Pero por defecto, hemos configurado el botón de depuración en el CS50 IDE 42 00:02:11,990 --> 00:02:15,500 para abrir el depurador, compilar automáticamente el código fuente, 43 00:02:15,500 --> 00:02:17,940 conecte el depurador a la GDB-- subyacente 44 00:02:17,940 --> 00:02:21,430 y puesto que se está ejecutando para realizar el debugging-- y algunos otros pasos 45 00:02:21,430 --> 00:02:22,580 así como. 46 00:02:22,580 --> 00:02:25,370 También la ventana de terminal en el very-- o más bien el terminal 47 00:02:25,370 --> 00:02:29,010 pestaña en la sección de la consola en el ventana en la parte inferior de la pantalla, 48 00:02:29,010 --> 00:02:31,004 pasó a llamarse simplemente ser terminal. 49 00:02:31,004 --> 00:02:32,837 Mientras que en la norma Cloud 9 medio ambiente, 50 00:02:32,837 --> 00:02:35,830 que en realidad muestra la ejecuta la aplicación. 51 00:02:35,830 --> 00:02:39,140 De esta manera, se simplifica, de nuevo, la interfaz gráfica de usuario, sólo un poco. 52 00:02:39,140 --> 00:02:42,310 >> También hemos añadido algunos botones a la parte superior derecha de la IDE 53 00:02:42,310 --> 00:02:45,740 para mostrar información básica sobre la instancia subyacente. 54 00:02:45,740 --> 00:02:49,700 Y también hemos eliminado un solo de las opciones en los artículos 55 00:02:49,700 --> 00:02:51,730 de la extrema derecha. 56 00:02:51,730 --> 00:02:55,620 Así que todo esto no está implementado modificando necesariamente la Nube 9 57 00:02:55,620 --> 00:02:58,550 código fuente, pero lugar a través de un par 58 00:02:58,550 --> 00:03:03,460 de plug-ins que hemos implementado a lo largo del último año o así. 59 00:03:03,460 --> 00:03:08,840 Y Nube 9 ha sido anfitrión y tiene se ejecuta en el espacio de trabajo CS50. 60 00:03:08,840 --> 00:03:13,680 O más bien, en los espacios de trabajo que se designan como CS50 IDEs. 61 00:03:13,680 --> 00:03:17,140 >> Así que en realidad esa es la principal diferencia entre la Nube 9 y el CS50 62 00:03:17,140 --> 00:03:18,130 espacios de trabajo. 63 00:03:18,130 --> 00:03:21,780 También hay, en el subyacente ejemplo, el cambio principal es 64 00:03:21,780 --> 00:03:25,350 que instalamos alguna artículos preconfigurados como GDB, 65 00:03:25,350 --> 00:03:29,530 y algunas otras cosas básicas que hemos creado, como actualización de 50, 66 00:03:29,530 --> 00:03:33,310 y un par de otros pasos que hacen toda la experiencia un poco más 67 00:03:33,310 --> 00:03:34,550 unificado. 68 00:03:34,550 --> 00:03:38,520 Pero en general, esto es sólo una modificación de un sistema existente 69 00:03:38,520 --> 00:03:40,979 que Cloud 9 ha creado para nosotros. 70 00:03:40,979 --> 00:03:42,770 Lo que vamos a mostrar un poco más tarde 71 00:03:42,770 --> 00:03:45,920 es cómo crear en realidad una plug-in de algo básico que 72 00:03:45,920 --> 00:03:49,461 nos permite insertar algo en el sistema de menús, y abrir un diálogo. 73 00:03:49,461 --> 00:03:51,210 Y si tenemos suficiente tiempo, vamos a realidad 74 00:03:51,210 --> 00:03:54,210 ver cómo podemos poblar que diálogo con un poco de información 75 00:03:54,210 --> 00:03:56,089 desde la instancia subyacente. 76 00:03:56,089 --> 00:03:58,880 Para que podamos llegar a ese punto, vamos primero a hablar un poco 77 00:03:58,880 --> 00:04:01,740 sobre la arquitectura de Cloud 9. 78 00:04:01,740 --> 00:04:05,290 >> Así que la forma en que estamos acostumbrados para interactuar con Cloud 9 79 00:04:05,290 --> 00:04:06,610 es enteramente a través del cliente. 80 00:04:06,610 --> 00:04:10,610 Abrimos un navegador web, escribimos en el CS50.io. 81 00:04:10,610 --> 00:04:14,431 Eventualmente, después de la autenticación, se presentan con el IDE. 82 00:04:14,431 --> 00:04:16,180 Pero se dan cuenta de que hay un par de pasos 83 00:04:16,180 --> 00:04:18,180 que en realidad nos llegar a este punto. 84 00:04:18,180 --> 00:04:22,390 La primera cosa es que mi cliente, el navegador web, 85 00:04:22,390 --> 00:04:27,440 bajo petición y después de la autenticación, carga la GUI y los plug-ins 86 00:04:27,440 --> 00:04:30,170 de algunos CDN, de algunos Red de entrega de contenidos. 87 00:04:30,170 --> 00:04:32,700 Esto puede ser francamente cualquier lugar. 88 00:04:32,700 --> 00:04:35,390 >> Y esto es en realidad separada desde la instancia subyacente. 89 00:04:35,390 --> 00:04:38,890 Es importante darse cuenta de que esto es en realidad sólo un montón de archivos estáticos. 90 00:04:38,890 --> 00:04:42,600 Es un montón de JavaScript que se descarga desde el CDN 91 00:04:42,600 --> 00:04:45,200 a mi navegador web, y toda la interfaz gráfica de usuario que 92 00:04:45,200 --> 00:04:48,460 ver aquí-- esto es realmente key-- toda la interfaz gráfica de usuario que usted ve aquí 93 00:04:48,460 --> 00:04:50,480 se ejecuta en el lado del cliente. 94 00:04:50,480 --> 00:04:53,820 Todo lo que ves en el espacio de trabajo de Cloud 9 95 00:04:53,820 --> 00:04:56,010 en realidad es ejecutar en el navegador. 96 00:04:56,010 --> 00:04:59,950 Y cualquier cosa que usted envía junto a la instancia subyacente 97 00:04:59,950 --> 00:05:04,000 se comunica con la instancia a lo largo de este segundo canal separado, 98 00:05:04,000 --> 00:05:07,240 y se guarda luego en esa instancia ventana acoplable. 99 00:05:07,240 --> 00:05:09,660 >> Así que la razón por la que estoy diciendo esta es una instancia de ventana acoplable 100 00:05:09,660 --> 00:05:12,650 es que la tecnología subyacente no uso de máquinas virtuales, 101 00:05:12,650 --> 00:05:16,040 sino que está utilizando una tecnología llamada ventana acoplable, 102 00:05:16,040 --> 00:05:20,200 que básicamente allows-- el más cercano analogía es una máquina virtual. 103 00:05:20,200 --> 00:05:24,800 Pero es sutilmente diferente en que hay 104 00:05:24,800 --> 00:05:28,900 un montón de oportunidades para ejecutar una combinación de diferente docker 105 00:05:28,900 --> 00:05:30,760 instancias en una sola máquina. 106 00:05:30,760 --> 00:05:34,660 Y pueden ser hilados hasta en la sucesión muy rápida. 107 00:05:34,660 --> 00:05:38,920 No es bastante más estricta diferenciación 108 00:05:38,920 --> 00:05:42,840 entre las diferentes instancias Docker como los hay en las máquinas virtuales, 109 00:05:42,840 --> 00:05:45,730 pero todavía hay una gran cantidad de la diferenciación y la separación 110 00:05:45,730 --> 00:05:48,330 entre estas diferentes instancias. 111 00:05:48,330 --> 00:05:48,830 OKAY. 112 00:05:48,830 --> 00:05:50,980 Así que los dos pasos aquí que son importantes para darse cuenta 113 00:05:50,980 --> 00:05:57,370 es que cuando vamos a CS50.io, somos la descarga de la GUI y los plug-ins, 114 00:05:57,370 --> 00:06:01,640 los cuales están escritos en JavaScript, por al navegador, o en el navegador. 115 00:06:01,640 --> 00:06:05,980 Y esto es tal vez un par megabytes de información. 116 00:06:05,980 --> 00:06:09,460 En ese punto, una vez que la interfaz gráfica de usuario tiene cargados y los plug-ins han comenzado, 117 00:06:09,460 --> 00:06:12,530 entonces comienza a comunicarse con la instancia ventana acoplable, que no lo hace 118 00:06:12,530 --> 00:06:15,210 necesariamente tiene que ser el mismo servidor. 119 00:06:15,210 --> 00:06:16,940 >> Ahora hay una excepción a esto. 120 00:06:16,940 --> 00:06:22,130 De hecho, podemos tener tanto el mecanismo de entrega de la propia interfaz gráfica de usuario 121 00:06:22,130 --> 00:06:25,740 y la instancia ventana acoplable en todas del mismo servidor, que 122 00:06:25,740 --> 00:06:29,660 En realidad, es algo que hacemos para la versión en línea de Cloud 9. 123 00:06:29,660 --> 00:06:33,470 Esto no es algo que hemos publicitado mucho este otoño, 124 00:06:33,470 --> 00:06:35,930 pero nosotros también tenemos una offline versión que 125 00:06:35,930 --> 00:06:40,010 le permite descargar un empaquetado versión de todas estas cosas 126 00:06:40,010 --> 00:06:43,670 y le permitirá ejecutar la nube 9 en un entorno fuera de línea. 127 00:06:43,670 --> 00:06:48,325 >> Mover esto de la nube y en el equipo local tiene algún impacto. 128 00:06:48,325 --> 00:06:50,200 En particular, usted no ya tener la capacidad 129 00:06:50,200 --> 00:06:52,280 a compartir su espacio de trabajo con otros. 130 00:06:52,280 --> 00:06:58,630 Ya no se puede abrir la nube 9 de, y el CS50 IDE, desde cualquier ordenador 131 00:06:58,630 --> 00:07:02,950 y ver los mismos archivos que que estaba trabajando antes. 132 00:07:02,950 --> 00:07:06,310 Pero en lugar funciona del todo en su propia máquina local 133 00:07:06,310 --> 00:07:09,270 sin necesidad de acceso a internet. 134 00:07:09,270 --> 00:07:13,330 Pero aún así, incluso en ese modelo, aunque aunque tenemos una máquina virtual 135 00:07:13,330 --> 00:07:15,200 que es esencialmente ejecutar estas cosas. 136 00:07:15,200 --> 00:07:19,480 >> Tenemos un servidor independiente que es entrega esencialmente el Cloud 9 137 00:07:19,480 --> 00:07:23,640 contenido, y luego tener una instancia de ventana acoplable 138 00:07:23,640 --> 00:07:32,280 que es responsable de la comunicación con ese IDE para el back-end. 139 00:07:32,280 --> 00:07:32,780 OKAY. 140 00:07:32,780 --> 00:07:38,700 Así que toda la interfaz gráfica de usuario está escrito enteramente en JavaScript 141 00:07:38,700 --> 00:07:42,800 utilizando Node.js y la Nube 9 SDK, que vamos a llegar a en un minuto. 142 00:07:42,800 --> 00:07:46,650 Y todos los plug-ins se ejecutan en el cliente. 143 00:07:46,650 --> 00:07:51,780 Así que vamos a centrarnos a continuación, un poco asumiendo 144 00:07:51,780 --> 00:07:55,670 que este primer paso tiene realmente completado con éxito, 145 00:07:55,670 --> 00:07:58,990 y buscar sólo en esta instancia ventana acoplable. 146 00:07:58,990 --> 00:08:01,220 >> Así que en este caso, esta es la forma estándar 147 00:08:01,220 --> 00:08:04,870 de pensar en hacer Cloud 9 plug-in el desarrollo es que se va 148 00:08:04,870 --> 00:08:07,940 estar escribiendo código que hará ejecutarse en el navegador del usuario, 149 00:08:07,940 --> 00:08:11,610 y usted tiene la oportunidad de utilizando algunas APIs para comunicarse 150 00:08:11,610 --> 00:08:16,470 con la instancia ventana acoplable subyacente, ejecutar algún código allá, y hacer cualquier cosa 151 00:08:16,470 --> 00:08:18,860 que es posible que desee hacer. 152 00:08:18,860 --> 00:08:22,000 Así que esto va a ser el contexto en el que vamos a 153 00:08:22,000 --> 00:08:24,340 a utilizar para el resto de esta charla. 154 00:08:24,340 --> 00:08:26,400 Y sólo seguir este modelo en mente. 155 00:08:26,400 --> 00:08:28,966 Esto será muy importante en tan sólo unos minutos. 156 00:08:28,966 --> 00:08:30,840 Hay un par de enlaces quiero mostrarte. 157 00:08:30,840 --> 00:08:34,150 En primer lugar, Nube 9 ha proporcionado un buen montón de documentación 158 00:08:34,150 --> 00:08:38,740 eso es bastante bueno, que muestra cómo para hacer el desarrollo básico de plug-in. 159 00:08:38,740 --> 00:08:43,320 Así que si vas a esta URL, cloud9-sdk.readme.io, 160 00:08:43,320 --> 00:08:45,261 verás la documentación allí. 161 00:08:45,261 --> 00:08:47,510 Y mucha de esta información que estás a punto de ver 162 00:08:47,510 --> 00:08:50,310 También se pueden encontrar allí, y más. 163 00:08:50,310 --> 00:08:55,880 También puede encontrar el código abierto versión de Cloud 9 en esta dirección, 164 00:08:55,880 --> 00:09:04,270 github.com/c9/core, que utilizamos como parte de la versión sin conexión de la IDE, 165 00:09:04,270 --> 00:09:07,540 de modo que usted será capaz de tener la misma experiencia Cloud 9, 166 00:09:07,540 --> 00:09:09,660 pero de una manera fuera de línea. 167 00:09:09,660 --> 00:09:10,160 Correcto. 168 00:09:10,160 --> 00:09:15,560 Así que echemos un vistazo a un real Cloud 9 espacio de trabajo aquí. 169 00:09:15,560 --> 00:09:17,880 Y de nuevo, quiero señalar un par de cosas. 170 00:09:17,880 --> 00:09:21,560 Esto es, aquí, un IDE normales CS50. 171 00:09:21,560 --> 00:09:26,830 Y he inutilizó un menor modo cómodo en el menú Ver 172 00:09:26,830 --> 00:09:28,807 por lo que puedo ver todo de las opciones de menú. 173 00:09:28,807 --> 00:09:31,140 Lo que quiero mostrar a la derecha ahora es un par de cosas. 174 00:09:31,140 --> 00:09:33,140 En primer lugar, si entro en las Preferencias y luego 175 00:09:33,140 --> 00:09:37,040 haga clic en Plug-in Manager, y el tipo de CS50 aquí, 176 00:09:37,040 --> 00:09:40,590 podemos ver que hay, de hecho, un par de CS50 plug-ins que 177 00:09:40,590 --> 00:09:46,280 se instalaron y nuestro funcionamiento a permitir que las modificaciones que hemos 178 00:09:46,280 --> 00:09:48,670 visto desde el IDE CS50. 179 00:09:48,670 --> 00:09:51,450 >> En este momento no hay esencialmente dos plug-ins que se están ejecutando. 180 00:09:51,450 --> 00:09:54,980 Hay una llamada simple, que es el modo simplificado, que 181 00:09:54,980 --> 00:10:00,020 le permite reducir el número de opciones de menú en la parte superior, 182 00:10:00,020 --> 00:10:03,070 y han llamada esta modo menos cómodo. 183 00:10:03,070 --> 00:10:07,280 Y luego está también CS50 Estadísticas, que es tal vez sólo un poco mal llamada. 184 00:10:07,280 --> 00:10:09,550 Porque esto es lo que te muestra la información 185 00:10:09,550 --> 00:10:10,850 sobre el espacio de trabajo subyacente. 186 00:10:10,850 --> 00:10:13,560 Se inyecta estos botones a lo largo de la parte superior derecha. 187 00:10:13,560 --> 00:10:18,620 También se inyecta un elemento de menú en el elemento de la ventana, en el menú Ventana 188 00:10:18,620 --> 00:10:21,730 aquí, CS50 IDE Info. 189 00:10:21,730 --> 00:10:27,380 Y es responsable de crear instancias este diálogo que hemos visto aquí, 190 00:10:27,380 --> 00:10:31,460 con toda la información que estamos acostumbrado a ver en un CS50 IDE 191 00:10:31,460 --> 00:10:32,870 espacio de trabajo. 192 00:10:32,870 --> 00:10:33,370 OKAY. 193 00:10:33,370 --> 00:10:36,910 Así que en realidad uno más plug-in que hemos desarrollado también. 194 00:10:36,910 --> 00:10:40,110 Y hay un par de otros que tampoco hemos lanzado públicamente. 195 00:10:40,110 --> 00:10:45,880 Pero uno de ellos es el general plug-in que permite GDB funcione. 196 00:10:45,880 --> 00:10:50,190 Así que uno de los aspectos de Cloud 9 es que ya han proporcionado 197 00:10:50,190 --> 00:10:53,210 esta interfaz gráfica de usuario para implementar un depurador. 198 00:10:53,210 --> 00:10:57,360 Y uno de los plug-ins que hemos creado básicamente 199 00:10:57,360 --> 00:11:02,380 ganchos GDB con este GUI versión basada de un depurador. 200 00:11:02,380 --> 00:11:07,680 Y es responsable de la mediación de todos de las solicitudes que un usuario podría tener, 201 00:11:07,680 --> 00:11:10,310 entre pasando por encima o la creación de puntos de interrupción o nada 202 00:11:10,310 --> 00:11:15,390 en ese sentido, a la traducción que a los comandos que GDB puede entender, 203 00:11:15,390 --> 00:11:16,920 la emisión de los comandos a GDB. 204 00:11:16,920 --> 00:11:19,260 Y tan pronto como el BGF emite una respuesta, entonces 205 00:11:19,260 --> 00:11:23,250 interpretamos eso y actualizar la interfaz gráfica de usuario según sea necesario. 206 00:11:23,250 --> 00:11:25,130 >> Eso es probablemente una de el más complicado 207 00:11:25,130 --> 00:11:28,840 de los plug-ins, por lo que en lugar de lo que somos voy a centrar en la actualidad es, de hecho, 208 00:11:28,840 --> 00:11:34,590 las estadísticas plug-in, y hablaremos un poco de simple, también. 209 00:11:34,590 --> 00:11:39,100 Así que he mencionado antes, y realmente quiero para hacer muy, muy claro, que una vez más, 210 00:11:39,100 --> 00:11:41,600 todo esto que estamos viendo aquí es esencialmente 211 00:11:41,600 --> 00:11:43,300 que operan en el lado del cliente. 212 00:11:43,300 --> 00:11:45,810 Vemos una ventana de terminal a continuación, y que, por supuesto, 213 00:11:45,810 --> 00:11:49,230 si escribimos en comandos en que, que se emitió 214 00:11:49,230 --> 00:11:50,690 a la instancia subyacente. 215 00:11:50,690 --> 00:11:55,280 Del mismo modo, si abrimos un nuevo archivo y escriba algunas cosas en él y guardarlo, 216 00:11:55,280 --> 00:11:58,240 ese archivo se guardará en la instancia subyacente. 217 00:11:58,240 --> 00:12:02,310 >> Pero el editor de sí mismo, este misma ventana de terminal, 218 00:12:02,310 --> 00:12:05,700 está implementado en todo JavaScript y es todo un plug-in 219 00:12:05,700 --> 00:12:09,800 que podemos interactuar con, y por lo tanto modificar. 220 00:12:09,800 --> 00:12:11,450 Hay una gran cantidad de extensibilidad aquí. 221 00:12:11,450 --> 00:12:14,690 Yo recomiendo tomar un vistazo en la cuenta de Cloud 9 GitHub 222 00:12:14,690 --> 00:12:17,790 para ver la gran cantidad de plug-ins que están disponibles, 223 00:12:17,790 --> 00:12:23,070 y lo bien escrito mucho del código es para extensibilidad. 224 00:12:23,070 --> 00:12:24,920 Así que hay algo que quiero mencionar 225 00:12:24,920 --> 00:12:30,480 sobre esto así, que es que hay un montón de-- hay 226 00:12:30,480 --> 00:12:33,450 una gran cantidad de funcionalidad que es proporcionado en las preferencias 227 00:12:33,450 --> 00:12:37,970 ventana, que hemos visto justo aludido apenas hace unos minutos. 228 00:12:37,970 --> 00:12:43,690 >> Una de las cosas que podemos hacer como IDE desarrolladores, o como Cloud 9 desarrolladores, 229 00:12:43,690 --> 00:12:47,410 es inyectar en realidad algunos paneles de preferencias de los nuestros. 230 00:12:47,410 --> 00:12:50,660 Así que el modo simple, o el modo de menos cómodo, 231 00:12:50,660 --> 00:12:54,780 así como la información de IDE, o las estadísticas de plug-in, 232 00:12:54,780 --> 00:12:58,560 tiene cada cierta preferencia paneles que nos permiten modificar 233 00:12:58,560 --> 00:13:00,620 el comportamiento de cada uno de esos. 234 00:13:00,620 --> 00:13:04,140 Se dará cuenta de que si voy a la Preferencias y vaya a Configuración de usuario, 235 00:13:04,140 --> 00:13:07,100 hay una pestaña CS50, uno que dice la información del IDE. 236 00:13:07,100 --> 00:13:09,810 Y puedo cambiar la información de frecuencia de actualización. 237 00:13:09,810 --> 00:13:12,250 >> En efecto, lo que está pasando en las estadísticas de plug-in 238 00:13:12,250 --> 00:13:16,690 es que cada n segundos, donde n-segundo se define por esta preferencia 239 00:13:16,690 --> 00:13:22,250 panel de información está siendo exagerado desde la instancia subyacente, de ser enviado 240 00:13:22,250 --> 00:13:25,490 de vuelta al lado del cliente, el plug-in es después 241 00:13:25,490 --> 00:13:28,650 interpretar la información desde la instancia subyacente 242 00:13:28,650 --> 00:13:31,470 y la actualización de la interfaz gráfica de usuario según sea necesario. 243 00:13:31,470 --> 00:13:34,710 Podemos ver que en este momento se establece a 30 segundos, y eso es el valor predeterminado. 244 00:13:34,710 --> 00:13:37,950 Pero definitivamente puedo cambiar la rapidez con que esto sucede justo 245 00:13:37,950 --> 00:13:40,520 mediante la modificación de este valor. 246 00:13:40,520 --> 00:13:44,330 >> Ahora una de las cosas interesantes es que este panel de preferencias, interfaz gráfica de usuario, 247 00:13:44,330 --> 00:13:49,560 es en realidad una versión GUI de un montón de ajustes subyacentes 248 00:13:49,560 --> 00:13:52,220 que se presentan en JSON. 249 00:13:52,220 --> 00:13:56,336 Así que si me voy, por ejemplo, bajo la CS50 menú IDE, o el menú de Cloud 9, 250 00:13:56,336 --> 00:13:58,210 dependiendo de qué versión que usted está mirando, 251 00:13:58,210 --> 00:14:00,460 e ir a uno de ellos settings-- en este caso, 252 00:14:00,460 --> 00:14:03,420 el proyecto settings-- la configuración del proyecto en este caso 253 00:14:03,420 --> 00:14:07,740 se aplica a todos los ajustes para éste espacio de trabajo. 254 00:14:07,740 --> 00:14:11,620 Mientras se aplican los ajustes del usuario a todos los espacios de trabajo 255 00:14:11,620 --> 00:14:15,110 que podría tener en su cuenta. 256 00:14:15,110 --> 00:14:18,520 >> Así que como un aparte aquí, para ser más claro, 257 00:14:18,520 --> 00:14:22,570 hay una separación entre el dos, porque a pesar de que por default 258 00:14:22,570 --> 00:14:26,490 dispondrá de un espacio de trabajo, que es el CS50 IDE, si 259 00:14:26,490 --> 00:14:31,900 fueron a hacer clic en su pequeño avatar aquí y vaya al panel de control, 260 00:14:31,900 --> 00:14:35,820 usted encontrará que en realidad se puede crear espacios de trabajo adicionales. 261 00:14:35,820 --> 00:14:39,140 Puede ver aquí que yo tengo un IDE 50 espacio de trabajo, y también 262 00:14:39,140 --> 00:14:41,930 para los propósitos de esta seminario, un espacio de trabajo 263 00:14:41,930 --> 00:14:45,084 llamado espacio de trabajo, que está justo aquí. 264 00:14:45,084 --> 00:14:46,750 Así que de todos modos, no tengo preferencias diferentes. 265 00:14:46,750 --> 00:14:49,910 Cada uno de ellos podría tener preferencias de proyectos separados, 266 00:14:49,910 --> 00:14:54,091 pero las preferencias de los usuarios son compartida entre todos mis espacios de trabajo. 267 00:14:54,091 --> 00:14:55,840 Por cierto, esto es También es muy útil si usted 268 00:14:55,840 --> 00:14:59,080 que desee crear un espacio de trabajo con diferentes opciones de personalización. 269 00:14:59,080 --> 00:15:01,640 Y es muy útil para crear un nuevo espacio de trabajo. 270 00:15:01,640 --> 00:15:04,230 Y elegir uno que podría ser preconfigurado de alguna otra manera, 271 00:15:04,230 --> 00:15:07,000 tal vez por PHP específicamente, o Django específicamente. 272 00:15:07,000 --> 00:15:08,960 O incluso sólo personalizado. 273 00:15:08,960 --> 00:15:11,320 El espacio de trabajo CS50 plantilla es el que nos 274 00:15:11,320 --> 00:15:15,420 uso que se instala de forma automática Actualización 50 y todos los ajustes 275 00:15:15,420 --> 00:15:20,531 que tenemos allí, incluyendo toda la plug-ins que tenemos para el IDE CS50. 276 00:15:20,531 --> 00:15:21,030 OKAY. 277 00:15:21,030 --> 00:15:22,200 Pero volvamos a esto. 278 00:15:22,200 --> 00:15:25,640 Así que de nuevo, hay proyectos ajustes, y esos son los 279 00:15:25,640 --> 00:15:27,140 que estamos viendo aquí. 280 00:15:27,140 --> 00:15:29,056 Y note que hay son un montón de ajustes, 281 00:15:29,056 --> 00:15:32,720 muchos de ellos corresponden a la preferencia paneles, pero no todos ellos. 282 00:15:32,720 --> 00:15:40,800 Pero podemos ver que aquí, en esto-- oh no, me lo puse en la configuración de usuario? 283 00:15:40,800 --> 00:15:43,280 Tal vez lo puse en la configuración del usuario. 284 00:15:43,280 --> 00:15:45,480 Y esto, aquí vamos. 285 00:15:45,480 --> 00:15:49,840 En la configuración del usuario, podemos ver que tenemos una sección CS50, 286 00:15:49,840 --> 00:15:53,762 y esto está siendo escrito que por estos Nube 9 plug-ins 287 00:15:53,762 --> 00:15:54,720 que hemos implementado. 288 00:15:54,720 --> 00:15:57,400 Hay sencillo al corresponden con ese simple plug-in, 289 00:15:57,400 --> 00:16:00,930 y las estadísticas de una que corresponde a la interfaz gráfica de usuario basada 290 00:16:00,930 --> 00:16:02,440 versión del panel de preferencias. 291 00:16:02,440 --> 00:16:05,740 La frecuencia de actualización, en este caso, se establece en 20 segundos. 292 00:16:05,740 --> 00:16:09,740 >> Esto es todo, es de esperar, la comienzos de la información 293 00:16:09,740 --> 00:16:14,420 que realmente vamos a ver en un pequeño poco más de detalle, momentáneamente. 294 00:16:14,420 --> 00:16:14,920 OKAY. 295 00:16:14,920 --> 00:16:17,520 Así que digamos que queremos realmente ponerse a ello. 296 00:16:17,520 --> 00:16:20,600 Entendemos que todas las cosas que está sucediendo en el lado del cliente 297 00:16:20,600 --> 00:16:24,560 se hace realidad en el navegador, que significa que cualquier plug-ins que escribo 298 00:16:24,560 --> 00:16:27,990 van a ser escrita con el navegador en mente. 299 00:16:27,990 --> 00:16:30,830 Y si yo en realidad quiero hacer nada en el espacio de trabajo, 300 00:16:30,830 --> 00:16:33,360 Quizá tendré que iniciar algún tipo de comunicación 301 00:16:33,360 --> 00:16:35,970 entre el navegador y el espacio de trabajo para estar seguro 302 00:16:35,970 --> 00:16:38,212 que lo que se logra en realidad. 303 00:16:38,212 --> 00:16:40,170 Pero digamos que ahora Quiero llegar a fin de cuentas 304 00:16:40,170 --> 00:16:43,440 y de hecho crear mi primer plug-in. 305 00:16:43,440 --> 00:16:48,970 Bueno, la forma en que usted sería capaz de que ver que en realidad es bastante fácil. 306 00:16:48,970 --> 00:16:51,370 Se da en el Cloud 9 SDK. 307 00:16:51,370 --> 00:16:55,520 Pero es tomar su Nombre del espacio de trabajo existente, que 308 00:16:55,520 --> 00:16:59,810 es la dirección URL que usted tiene en la parte superior la barra y añada el siguiente a la misma. 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 Ahora lo que esto va a permitir que se que el sdk = 1 será realmente establecer el SDK 313 00:17:08,260 --> 00:17:11,430 el modo en true, lo que permitirá un par de cosas adicionales. 314 00:17:11,430 --> 00:17:15,770 Y debug = 2 permitirá a los mensajes de error a ser un poco más detallado. 315 00:17:15,770 --> 00:17:20,170 >> Y por lo que si usted trae el JavaScript consola en su ficha desarrollador de Chrome, 316 00:17:20,170 --> 00:17:22,829 usted realmente va a ser capaz de ver mucha más información 317 00:17:22,829 --> 00:17:24,349 de lo que sería de otra manera. 318 00:17:24,349 --> 00:17:28,310 Así que te recomiendo girando ambos al mismo tiempo, porque realmente 319 00:17:28,310 --> 00:17:31,170 Es útil tener todo esto Información Adicional. 320 00:17:31,170 --> 00:17:35,330 Es importante señalar, sin embargo, que encender depuración al valor de 2 321 00:17:35,330 --> 00:17:38,120 significa que es muy detallado, y que en realidad 322 00:17:38,120 --> 00:17:42,590 será algo notablemente más lento su IDE, especialmente cuando la carga 323 00:17:42,590 --> 00:17:45,657 o cuando hacer hacer tareas pesadas. 324 00:17:45,657 --> 00:17:46,740 Así que tenlo en cuenta. 325 00:17:46,740 --> 00:17:51,500 Es útil para el desarrollo, pero No puede querer tenerlo todo el tiempo. 326 00:17:51,500 --> 00:17:53,080 >> Así que vamos a realmente hacer eso. 327 00:17:53,080 --> 00:17:59,374 Pero en este caso, en realidad tengo ya crear un espacio de trabajo con esto. 328 00:17:59,374 --> 00:18:00,540 Así que vamos a ver, sdk = 1 & debug = 2. 329 00:18:00,540 --> 00:18:03,140 330 00:18:03,140 --> 00:18:07,770 Con un par de plug-ins esperemos que ya está instalado. 331 00:18:07,770 --> 00:18:08,340 Correcto. 332 00:18:08,340 --> 00:18:15,050 Así que ahora que me he convertido en la depuración SDK modo, notamos que estamos en modo de depuración, 333 00:18:15,050 --> 00:18:20,430 para que podamos ver las herramientas dev para ver cualquier error, que me van a hacer fuera de la pantalla. 334 00:18:20,430 --> 00:18:23,110 Podemos ver que hay un montón de errores aquí. 335 00:18:23,110 --> 00:18:28,090 Ahora es en realidad bastante común para Cloud 9 para tener un par de errores, 336 00:18:28,090 --> 00:18:30,680 y yo no me preocuparía sobre ellos hasta que 337 00:18:30,680 --> 00:18:32,930 ver algo que podría ser específico para el plug-in 338 00:18:32,930 --> 00:18:34,510 que le sucede a la creación. 339 00:18:34,510 --> 00:18:37,620 >> Así que aquí, por ejemplo, obtenemos un par de 404s-- no encontrado. 340 00:18:37,620 --> 00:18:42,910 Vemos podemos cargar algunos información de la instancia subyacente 341 00:18:42,910 --> 00:18:43,670 sí mismo. 342 00:18:43,670 --> 00:18:46,545 Y hay un montón de adicionales información, pero la mayor parte de este que estamos 343 00:18:46,545 --> 00:18:47,970 en realidad va a ignorar por ahora. 344 00:18:47,970 --> 00:18:50,130 Debido a esto es bastante común para un espacio de trabajo 345 00:18:50,130 --> 00:18:53,200 tener sólo un par de errores. 346 00:18:53,200 --> 00:18:53,700 OKAY. 347 00:18:53,700 --> 00:18:56,680 Voy a mover esto de el camino y vuelve aquí. 348 00:18:56,680 --> 00:19:01,860 Y ahora el camino más fácil, el buen Lo bueno de tener este desarrollador 349 00:19:01,860 --> 00:19:07,330 Modo habilitado es que me permite para crear fácilmente un nuevo plug-in. 350 00:19:07,330 --> 00:19:12,390 >> Así que mientras que antes de que en realidad no lo hice tener esta nueva opción plug-in disponible, 351 00:19:12,390 --> 00:19:16,460 que podemos ver si vuelvo a mi modo de no desarrolladores por aquí, 352 00:19:16,460 --> 00:19:18,510 no hay nuevos plug-in. 353 00:19:18,510 --> 00:19:23,220 Al habilitar el modo SDK, yo tener un nuevo plug-in disponible 354 00:19:23,220 --> 00:19:25,660 y puedo crear fácilmente una. 355 00:19:25,660 --> 00:19:28,160 En este caso, hay un par de las diferentes opciones, simple, 356 00:19:28,160 --> 00:19:30,850 un plug-in de vacío, un plug-in completo, instalador, Nube 9 paquete. 357 00:19:30,850 --> 00:19:33,030 Vamos a elegir un plug-in de vacío por ahora 358 00:19:33,030 --> 00:19:37,670 para que podamos ver a un muy versión simple de uno. 359 00:19:37,670 --> 00:19:41,520 >> Ahora cuenta de que a lo largo del del lado izquierdo que es ahora existe 360 00:19:41,520 --> 00:19:45,080 algo debajo de Favoritos, que se lista un par de plug-ins 361 00:19:45,080 --> 00:19:47,020 que ahora están disponibles para mí. 362 00:19:47,020 --> 00:19:50,420 Si amplío que, lo haremos ser capaz de ver esos. 363 00:19:50,420 --> 00:19:52,730 Ahora quiero que noten algo aquí, que 364 00:19:52,730 --> 00:19:58,260 es que esto no se contiene en realidad dentro del directorio de espacio de trabajo 365 00:19:58,260 --> 00:20:03,190 en mi caso Ubuntu subyacente, pero está contenido en el disco duro. 366 00:20:03,190 --> 00:20:06,330 Y donde esta se encuentra, ya que esto es muy útil saber, 367 00:20:06,330 --> 00:20:09,570 especialmente si usted va a estar haciendo nada con Git, 368 00:20:09,570 --> 00:20:16,870 donde esta se encuentra es en una carpeta .c9, / plugins. 369 00:20:16,870 --> 00:20:21,110 Así que si voy allí, podemos ver que ahora la lista de los plug-ins que está aquí 370 00:20:21,110 --> 00:20:26,390 coincide con la lista de los plug-ins que yo vio en el lado izquierdo de mi espacio de trabajo. 371 00:20:26,390 --> 00:20:28,610 >> Ahora por defecto, y esto es un poco extraño, 372 00:20:28,610 --> 00:20:31,760 por defecto cuando se crea un nuevo plug-in en un espacio de trabajo, 373 00:20:31,760 --> 00:20:36,620 crea este plug-in que por por defecto tiene un nombre de un guión bajo. 374 00:20:36,620 --> 00:20:39,760 En general que podría causar algunos problemas. 375 00:20:39,760 --> 00:20:42,340 Así que el paso siguiente que normalmente realizo 376 00:20:42,340 --> 00:20:45,880 se acaba de quitar ese particular, plug-in 377 00:20:45,880 --> 00:20:52,810 y dejar sólo el plug-in simple que estaba allí inicialmente, plugin.simple. 378 00:20:52,810 --> 00:20:55,430 Y eso es el único que está ahí. 379 00:20:55,430 --> 00:20:55,930 OKAY. 380 00:20:55,930 --> 00:20:58,380 >> Entonces, ¿qué tiene esto en realidad parece? 381 00:20:58,380 --> 00:21:01,210 Bueno, esto es, de nuevo, un paquete de JavaScript 382 00:21:01,210 --> 00:21:05,220 que incluye algunos archivos, incluyendo un archivo plugin.js, donde 383 00:21:05,220 --> 00:21:07,700 el contenido principal de mi plug-in se encuentra, 384 00:21:07,700 --> 00:21:10,590 un archivo package.json, que en realidad especifica 385 00:21:10,590 --> 00:21:13,760 algunos metadatos acerca de este plug-in, tales como quién es el autor, 386 00:21:13,760 --> 00:21:19,240 cualquier información adicional al respecto, un Descripción del plug-in, y así sucesivamente. 387 00:21:19,240 --> 00:21:22,190 Y también por defecto, crea un archivo README en blanco, 388 00:21:22,190 --> 00:21:26,100 y un archivo de prueba vacía para que usted crear algún tipo de documentación adicional, 389 00:21:26,100 --> 00:21:29,430 y un arnés de prueba si desea hacer eso. 390 00:21:29,430 --> 00:21:34,160 >> Así que vamos a echar un vistazo por primera vez en, muy rápidamente, en el archivo package.json. 391 00:21:34,160 --> 00:21:38,240 Es bastante fácil ir sólo a través y llenar las áreas de este 392 00:21:38,240 --> 00:21:42,510 que usted desea que rellenar, como proporcionar un nombre, una descripción, 393 00:21:42,510 --> 00:21:45,010 repetir el número de versión cada cierto tiempo, proporcionar 394 00:21:45,010 --> 00:21:47,570 un autor para todos los persona que contribuye, 395 00:21:47,570 --> 00:21:53,000 añadirlos a los contribuyentes sección, y el resto de esto 396 00:21:53,000 --> 00:21:56,390 puede prácticamente sólo dejar como está por ahora. 397 00:21:56,390 --> 00:21:58,490 >> Hay una cosa que es importante tener en cuenta, 398 00:21:58,490 --> 00:22:04,990 que bajo la sección de plug-ins, hay una clave llamada plug-in. 399 00:22:04,990 --> 00:22:11,800 Y esto se hace concordar con el nombre de el archivo de JavaScript llamado plugin.js. 400 00:22:11,800 --> 00:22:18,290 Así que esta es la forma en la nube 9 sabe, cuando se lee este archivo package.json, que 401 00:22:18,290 --> 00:22:20,720 de los js archivos para cargar en realidad. 402 00:22:20,720 --> 00:22:25,440 Si creo archivos js adicionales o quiero cambiar el nombre de ese archivo js del plug-in, 403 00:22:25,440 --> 00:22:30,380 También tengo que cambiarlo en el archivo package.json. 404 00:22:30,380 --> 00:22:33,660 >> Cualquier preguntas de la audiencia? 405 00:22:33,660 --> 00:22:34,160 No. 406 00:22:34,160 --> 00:22:38,100 Que una persona que es siguiendo a lo largo conmigo hasta ahora. 407 00:22:38,100 --> 00:22:38,760 >> OKAY. 408 00:22:38,760 --> 00:22:42,300 Así que en realidad he creado un par de plug-ins ya, 409 00:22:42,300 --> 00:22:44,100 Creo que, en este espacio de trabajo. 410 00:22:44,100 --> 00:22:53,800 Así que vamos a deshacernos de algunos de ellos, agregue sdk = 1 & debug = 2, vuelva a cargar esta área de trabajo, 411 00:22:53,800 --> 00:22:58,780 y vamos a ver si nos tener esos plug-ins ahora. 412 00:22:58,780 --> 00:23:01,430 C9 / plugins. 413 00:23:01,430 --> 00:23:01,930 Aquí vamos. 414 00:23:01,930 --> 00:23:06,910 Podemos ver ahora en mis C9 / plugins de esta uno, tenemos plugin.1 y plugin.2. 415 00:23:06,910 --> 00:23:15,260 Así que vamos a simplemente intensificar el-- simplemente aumentar la cantidad de dificultades 416 00:23:15,260 --> 00:23:16,660 en cada uno de estos plug-ins. 417 00:23:16,660 --> 00:23:20,140 Pero aquí, si puedo crear un nuevo plug-in, Puedo agregar a mis favoritos. 418 00:23:20,140 --> 00:23:25,560 Y sólo voy a borrar los de el sistema de archivos subyacente. 419 00:23:25,560 --> 00:23:28,050 >> Vamos a quitar eso. 420 00:23:28,050 --> 00:23:33,206 Ahora bien, si abro mi primera plug-in, y plugin.js abiertas, 421 00:23:33,206 --> 00:23:39,980 podemos ver aquí el subyacente versión simple de un plug-in. 422 00:23:39,980 --> 00:23:42,170 Permítanme realidad volver a este otro espacio de trabajo 423 00:23:42,170 --> 00:23:47,160 porque se puede, al menos, aquí ver, lo que un plug-in en blanco en realidad se parece. 424 00:23:47,160 --> 00:23:51,810 Así que bajo el capó, esto se ve muy similar a la tecnología llamada, 425 00:23:51,810 --> 00:23:53,780 Creo, es RequireJS. 426 00:23:53,780 --> 00:23:56,000 Tenga en cuenta que esto no lo hace Realmente mira, tal vez, 427 00:23:56,000 --> 00:23:59,150 el mismo que alguna otra JavaScript archivos que podríamos haber visto. 428 00:23:59,150 --> 00:24:04,250 Pero en cambio, hay un par de poco líneas básicas que en realidad tiene. 429 00:24:04,250 --> 00:24:06,900 >> Todas estas cosas es primero interpretado por el IDE, 430 00:24:06,900 --> 00:24:09,940 pero no es en realidad correr hasta que se especifique. 431 00:24:09,940 --> 00:24:13,610 Y te lo contaré cuando esa en realidad significa en un momento. 432 00:24:13,610 --> 00:24:17,840 Pero observe que aquí hay una línea main.consumes en la línea 2, 433 00:24:17,840 --> 00:24:23,270 y esto muestra todos los plug-ins que este plug-in es dependiente. 434 00:24:23,270 --> 00:24:27,150 Así que por defecto, tal vez hacer para no tener cualquier dependencia de otros plug-ins, 435 00:24:27,150 --> 00:24:30,530 pero cuando realmente necesitamos dependerá de las características suministradas 436 00:24:30,530 --> 00:24:34,900 por otros plug-ins en el IDE, tenemos que enumerar esos plug-ins 437 00:24:34,900 --> 00:24:36,890 en la línea de main.consumes. 438 00:24:36,890 --> 00:24:39,230 Y entonces tenemos que vincularlos con el código 439 00:24:39,230 --> 00:24:42,860 a continuación, que te voy a mostrar en tan sólo un momento acerca de cómo podemos hacer eso. 440 00:24:42,860 --> 00:24:46,100 >> Main.provides da una nombrar a este plug-in 441 00:24:46,100 --> 00:24:49,190 que los otros plug-ins podía utilizar en su línea consume. 442 00:24:49,190 --> 00:24:52,480 Así que en este caso, mi plug-in se acaba de establecer que hay por defecto, 443 00:24:52,480 --> 00:24:55,820 y debemos cambiar eso ser aplicable a nuestro propio plug-in, 444 00:24:55,820 --> 00:24:57,540 como veremos en el momento justo. 445 00:24:57,540 --> 00:25:01,230 Ahora aquí en la función principal, esta función principal 446 00:25:01,230 --> 00:25:05,630 en realidad está dirigido e interpretado, pero en realidad no hacen mucho. 447 00:25:05,630 --> 00:25:08,970 Sólo queda todo listo, pero en realidad no iniciar el plug-in, 448 00:25:08,970 --> 00:25:11,220 a pesar de lo que el nombre suena similar. 449 00:25:11,220 --> 00:25:14,690 Que en realidad pasa a través una secuencia de métodos que 450 00:25:14,690 --> 00:25:16,820 están contenidos a través de este plug-in. 451 00:25:16,820 --> 00:25:20,830 >> Así que si me desplazo hacia abajo, podemos ver que tenemos un ciclo de vida en la que 452 00:25:20,830 --> 00:25:25,100 en algún evento llamado de carga, o algún evento llamado de descarga, 453 00:25:25,100 --> 00:25:26,940 algunos eventos ocurran. 454 00:25:26,940 --> 00:25:33,500 Es realmente aquí donde como el plug-in comienza que esos métodos son llamados. 455 00:25:33,500 --> 00:25:37,240 Así que vamos a ser un poco más concreto sobre esto y ver un ejemplo. 456 00:25:37,240 --> 00:25:41,010 Así que aquí para plugin.1, lo estamos básicamente vamos a hacer 457 00:25:41,010 --> 00:25:46,010 es crear un elemento de menú llamada CS50 Seminario Diálogo 1-- 458 00:25:46,010 --> 00:25:48,070 porque tenemos dos de ellos-- y vamos 459 00:25:48,070 --> 00:25:50,300 para inyectarlo en el menú Ventana. 460 00:25:50,300 --> 00:25:54,590 Y cuando hacemos clic en él, estamos va a abrir un diálogo que 461 00:25:54,590 --> 00:25:56,290 nos muestra una información muy básica. 462 00:25:56,290 --> 00:25:58,050 >> En este caso, sólo un hola mundo. 463 00:25:58,050 --> 00:26:01,880 Así que este es un muy simple hola diálogo mundo 464 00:26:01,880 --> 00:26:05,260 que podemos poner en práctica como un plug-in en el Cloud 9. 465 00:26:05,260 --> 00:26:07,960 Así que vamos a ver cómo esto se ve en realidad. 466 00:26:07,960 --> 00:26:12,730 Vamos un paso a través de él, al igual con relativa rapidez por lo que 467 00:26:12,730 --> 00:26:15,580 puede ver el siguiente plug-in también. 468 00:26:15,580 --> 00:26:19,510 Nótese que aquí estamos el consumo de una variedad de plug-ins. 469 00:26:19,510 --> 00:26:26,080 Estamos consumiendo un diálogo plug-in, los comandos, los menús y la interfaz de usuario. 470 00:26:26,080 --> 00:26:30,440 Parece que en realidad estoy consumiendo diálogo dos veces, así que puede eliminar eso. 471 00:26:30,440 --> 00:26:32,560 >> Y darse cuenta de que el camino que yo les estoy conectando, 472 00:26:32,560 --> 00:26:37,940 esto es una especie de metadatos que está diciendo el sistema de plug-in lo requisitos 473 00:26:37,940 --> 00:26:41,480 son realmente necesarias para este plug-in para cargar. 474 00:26:41,480 --> 00:26:46,400 También es importante tener en cuenta que el orden en que los plug-ins se cargan 475 00:26:46,400 --> 00:26:48,300 no está garantizada. 476 00:26:48,300 --> 00:26:53,400 Pero lo que está garantizado es que si yo especifique algún plug-in como requisito, 477 00:26:53,400 --> 00:26:56,900 se cargará ese plug-in antes de cargar ésta. 478 00:26:56,900 --> 00:27:00,390 >> Así que eso significa que si su plug-in requiere en alguna funcionalidad proporcionada 479 00:27:00,390 --> 00:27:04,380 por otra cosa en el IDE, que debiera asegúrese de que sus consumos enchufables 480 00:27:04,380 --> 00:27:09,260 ese plug-in para que las dependencias están determinados a crear su plug-in, 481 00:27:09,260 --> 00:27:15,010 o crear instancias de su plug-in, sólo se luego existe ese marco existente. 482 00:27:15,010 --> 00:27:18,870 Así que aquí he mencionado la metadatos para el gestor de plug-in, 483 00:27:18,870 --> 00:27:20,990 cuáles voy a consumir. 484 00:27:20,990 --> 00:27:24,910 Y en la función principal aquí, Voy a continuación, conecte 485 00:27:24,910 --> 00:27:30,240 mi código para esos complementos importados. 486 00:27:30,240 --> 00:27:33,420 >> Así que sólo voy a crear algunas variables que 487 00:27:33,420 --> 00:27:36,620 coincidir con los nombres de cada uno de los que lo que puedo hacer referencia muy rápidamente 488 00:27:36,620 --> 00:27:37,840 lo largo de mi código. 489 00:27:37,840 --> 00:27:41,840 La razón por la que estoy importando el diálogo es porque quiero que mi plug-in 490 00:27:41,840 --> 00:27:44,560 para actuar como un diálogo plug-in. 491 00:27:44,560 --> 00:27:49,320 Y la forma en que soy capaz que hacer es, por supuesto, 492 00:27:49,320 --> 00:27:52,740 conectar mi código para el diálogo plug-in mediante su importación 493 00:27:52,740 --> 00:27:57,210 y luego mediante la especificación por la creación de una nueva variable de diálogo 494 00:27:57,210 --> 00:28:00,460 y la conexión al que el plug-in de importación. 495 00:28:00,460 --> 00:28:04,820 Y a continuación, mediante la definición de mi plug-in como un nuevo diálogo. 496 00:28:04,820 --> 00:28:07,650 >> Así que en la inicialización, I quiero definir mi plug-in. 497 00:28:07,650 --> 00:28:10,440 Y esta variable llamada plug-in verá 498 00:28:10,440 --> 00:28:14,030 es sólo de uso común a lo largo de la nube 9 plug-ins. 499 00:28:14,030 --> 00:28:16,980 Voy a crear una instancia de un nuevo diálogo con algunos atributos, 500 00:28:16,980 --> 00:28:22,300 darle un nombre específico, decir que es posible que los usuarios cierran. 501 00:28:22,300 --> 00:28:24,960 Eso va a mostrar un poco de x en la esquina superior derecha, 502 00:28:24,960 --> 00:28:27,529 o un pequeño botón en el esquina inferior derecha. 503 00:28:27,529 --> 00:28:30,570 Sea o no puedo seleccionar texto desde que, lo que el título de ese diálogo 504 00:28:30,570 --> 00:28:32,400 sería, y así sucesivamente. 505 00:28:32,400 --> 00:28:36,330 Ahora bien, esto solo define el diálogo, pero aún no se demostró. 506 00:28:36,330 --> 00:28:40,780 En realidad tengo que definir un acción para que se muestre. 507 00:28:40,780 --> 00:28:43,490 >> Y de nuevo, os animo a que echar un vistazo a la Nube 9 SDK, 508 00:28:43,490 --> 00:28:46,930 porque hay unos diálogos variedad y están muy bien documentados. 509 00:28:46,930 --> 00:28:50,500 Usted puede ver los diferentes tipos que hay, y los utilizan 510 00:28:50,500 --> 00:28:55,380 en cualquier plug-in que tiene en mente. 511 00:28:55,380 --> 00:28:58,790 Ahora que va a ser un sección de carga y esta carga 512 00:28:58,790 --> 00:29:03,390 función que recuerdas es utilizado por el ciclo de vida de plug-in 513 00:29:03,390 --> 00:29:07,060 para crear una instancia realidad todo y tener todo listo para ir. 514 00:29:07,060 --> 00:29:11,440 Ahora, cuando esta carga de plug-in, que no lo hacen quiere que se muestre inmediatamente un diálogo, 515 00:29:11,440 --> 00:29:14,160 porque este plug-in se cargará junto con el resto de la IDE. 516 00:29:14,160 --> 00:29:17,850 Y cuando me carga que IDE, no quiero el diálogo que aparece automáticamente. 517 00:29:17,850 --> 00:29:24,170 Yo sólo quiero que se muestran cuando hago clic en la opción de menú en mi ventana elemento de menú 518 00:29:24,170 --> 00:29:26,760 que voy a añadir a la misma momentáneamente. 519 00:29:26,760 --> 00:29:29,480 >> Así que hay dos etapas distintas aquí donde tiene que suceder. 520 00:29:29,480 --> 00:29:32,640 Tengo que crear un comando y el comando 521 00:29:32,640 --> 00:29:37,940 será responsable de la realidad que muestra el diálogo sobre el Cloud 9 IDE. 522 00:29:37,940 --> 00:29:42,670 Y luego tengo que conectar, me tiene que crear un nuevo menú de la ventana 523 00:29:42,670 --> 00:29:46,070 artículo, que se ejecuta ese comando. 524 00:29:46,070 --> 00:29:49,740 Así que cuando me haga clic en esa ventana elemento de menú, esta orden es entonces plazo 525 00:29:49,740 --> 00:29:52,290 y por lo tanto se muestra a continuación, mi diálogo. 526 00:29:52,290 --> 00:29:55,690 Y por lo que este es en realidad una muy buena manera de pensar en ello. 527 00:29:55,690 --> 00:30:01,480 >> Porque primero que puedo crear un comando cuyo nombre se CS50 Seminario Diálogo 1, 528 00:30:01,480 --> 00:30:04,860 que proporciona algunas contexto general para ello. 529 00:30:04,860 --> 00:30:08,930 Y el poco importante aquí es notar el atributo EXEC, que 530 00:30:08,930 --> 00:30:15,160 enumera una función que se llama en mi plug-in cuando se ejecuta este comando. 531 00:30:15,160 --> 00:30:21,980 Así que este comando es algo así como A-- es sólo una nube arbitraria 9 532 00:30:21,980 --> 00:30:25,780 comandos que está disponible a cualquier Cloud 9 plug-in. 533 00:30:25,780 --> 00:30:30,290 Pero la función real que es va a llamar cuando se ejecuta este comando 534 00:30:30,290 --> 00:30:35,010 es la función de presentación de diálogo en mi archivo plugin.js. 535 00:30:35,010 --> 00:30:38,550 >> Y en realidad podemos ver estos plug-ins y la lista 536 00:30:38,550 --> 00:30:45,480 de los comandos que están disponibles para nosotros en Preferencias, desplácese hasta el final down-- 537 00:30:45,480 --> 00:30:48,180 vamos a ver, en realidad es lo que vemos ahora? 538 00:30:48,180 --> 00:30:53,180 Plug-in Manager, no, creo que yo-- es sin duda por aquí. 539 00:30:53,180 --> 00:31:00,016 Bueno, hay una lista de comandos en alguna parte, pero tengo que tener, 540 00:31:00,016 --> 00:31:01,140 Me he olvidado de donde está. 541 00:31:01,140 --> 00:31:02,430 Así bien, vamos a pasar. 542 00:31:02,430 --> 00:31:02,930 Correcto. 543 00:31:02,930 --> 00:31:05,790 Así que tenemos una lista de comandos que están disponibles para nosotros, 544 00:31:05,790 --> 00:31:08,550 y esos comandos son estos sólo arbitraria Cloud 9 545 00:31:08,550 --> 00:31:10,870 comandos que se ejecutan código específico. 546 00:31:10,870 --> 00:31:13,620 Así que tenlo en cuenta, que vamos a ejecutar el programa de diálogo 547 00:31:13,620 --> 00:31:15,640 funcionar momentáneamente. 548 00:31:15,640 --> 00:31:19,740 Ahora, cuando yo en realidad quiero agregar un menú tema, puedo añadir que el artículo por trayecto, 549 00:31:19,740 --> 00:31:25,570 y acaba de especificar exactamente donde quiero que sea, Ventana Seminario / CS50 Diálogo 1. 550 00:31:25,570 --> 00:31:28,380 Y en ese punto, quiero para crear un nuevo elemento que 551 00:31:28,380 --> 00:31:32,040 se va a ejecutar un comando, CS50 Seminario Diálogo 1. 552 00:31:32,040 --> 00:31:36,140 Tenga en cuenta que una vez más, esta es la Nube 9 de comandos que he creado justo encima. 553 00:31:36,140 --> 00:31:38,630 >> Ahora también quiero crear un pequeño divisor, 554 00:31:38,630 --> 00:31:42,260 y por lo que puedo hacer lo mismo en la línea siguiente. 555 00:31:42,260 --> 00:31:46,040 Ahora usted puede notar que a medida parte de la definición de este elemento de menú, 556 00:31:46,040 --> 00:31:48,200 hay un número asociado con él que 557 00:31:48,200 --> 00:31:51,260 en realidad dice dónde exactamente Quiero ese elemento de menú esté 558 00:31:51,260 --> 00:31:53,441 situado en la lista de menús. 559 00:31:53,441 --> 00:31:55,190 Pero es posible que note que yo no sé en realidad 560 00:31:55,190 --> 00:31:59,540 ver los números con estos menús, de forma predeterminada. 561 00:31:59,540 --> 00:32:04,630 Así que hay una pequeña cosa oculta que que podemos hacer, un pequeño cambio en nuestro URL. 562 00:32:04,630 --> 00:32:12,920 Así que además de SDK = 1 & debug = 2, Voy a poner menú para 1-- 563 00:32:12,920 --> 00:32:14,690 y es de esperar su menú, no menús. 564 00:32:14,690 --> 00:32:17,001 Oh, es menús = 1. 565 00:32:17,001 --> 00:32:17,500 Espere. 566 00:32:17,500 --> 00:32:20,150 567 00:32:20,150 --> 00:32:24,690 >> Y lo que veremos en la recarga que IDE es que todavía estoy en modo de depuración, 568 00:32:24,690 --> 00:32:27,540 pero ahora hay un número asociado con todos los menús. 569 00:32:27,540 --> 00:32:29,630 Y esto te dice exactamente lo que el número de 570 00:32:29,630 --> 00:32:34,730 es cuando usted está tratando de inyectar algo en cualquier parte de este sistema de menús. 571 00:32:34,730 --> 00:32:40,365 Así que en el menú Ventana, que pueda ver ese artículo 45 es colaborar, 572 00:32:40,365 --> 00:32:43,820 y el artículo 38 antes de que sea instalador. 573 00:32:43,820 --> 00:32:47,530 Así que cuando quiero inyectar un elemento entre los dos, 574 00:32:47,530 --> 00:32:50,570 Me gustaría simplemente seleccionar un número entre esos dos elementos. 575 00:32:50,570 --> 00:32:56,200 Así que he seleccionado 41 e inserté mi Seminario Diálogo artículo 1 menú en ese lugar. 576 00:32:56,200 --> 00:33:03,640 >> Y es por eso que este número que aparece aquí es el número 41. 577 00:33:03,640 --> 00:33:08,010 Esa es la ubicación de ese elemento de menú en el menú de Cloud 9. 578 00:33:08,010 --> 00:33:11,045 Ahora mismo modo, yo quería para crear un divisor 579 00:33:11,045 --> 00:33:13,920 y añade que para que haya un buen división entre cada uno de estos menú 580 00:33:13,920 --> 00:33:14,490 artículos. 581 00:33:14,490 --> 00:33:18,600 Así que he añadido que en el lugar 43. 582 00:33:18,600 --> 00:33:20,260 Hasta ahora, todo va bien, espero? 583 00:33:20,260 --> 00:33:23,920 Así que ahora vamos a ver en realidad el código específico en el diálogo espectáculo 584 00:33:23,920 --> 00:33:28,050 eso es realmente responsable para la apertura de esta ventana de diálogo. 585 00:33:28,050 --> 00:33:32,710 >> Desplazamiento hacia abajo, veo que quiero tener este diálogo función de presentación, 586 00:33:32,710 --> 00:33:34,730 y es extremadamente simple. 587 00:33:34,730 --> 00:33:38,570 Voy a dirigir el espectáculo método en la variable de plug-in. 588 00:33:38,570 --> 00:33:43,900 Y recordemos que hemos definido este plug-in de la variable anterior como un diálogo. 589 00:33:43,900 --> 00:33:48,530 Así barra de plug-in, en este caso, ¿es esto objeto que hemos definido internamente. 590 00:33:48,530 --> 00:33:53,030 Y va a ser un nuevo diálogo contenida dentro de este plug-in. 591 00:33:53,030 --> 00:33:57,020 Y así que en realidad REFERENCIA Esta plug-in de variable en muchos lugares 592 00:33:57,020 --> 00:33:59,790 en un típico 9 Nube entorno de desarrollo. 593 00:33:59,790 --> 00:34:00,867 >> Veremos aquí. 594 00:34:00,867 --> 00:34:03,450 Tenga en cuenta que a medida que desplazarse hacia abajo, hay ciclos de vida adicionales. 595 00:34:03,450 --> 00:34:06,970 Así notar que estos responden a los eventos que se disparan 596 00:34:06,970 --> 00:34:10,500 por este objeto, este objeto diálogo. 597 00:34:10,500 --> 00:34:12,710 Por defecto, no hay carga y descarga, que 598 00:34:12,710 --> 00:34:14,760 están a disposición de todos Nube 9 plug-ins. 599 00:34:14,760 --> 00:34:17,139 Pero en el caso de este diálogo, no hay 600 00:34:17,139 --> 00:34:19,139 otro evento que pueda fuego, así llamado 601 00:34:19,139 --> 00:34:23,239 Dibuja, que se dispara cuando esa está a punto de ser dibujado en pantalla, 602 00:34:23,239 --> 00:34:27,239 en primera instancia del diálogo que muestra. 603 00:34:27,239 --> 00:34:29,590 >> Por eso, cuando en realidad es va a ser mostrado, 604 00:34:29,590 --> 00:34:31,739 no va a nos proporcione algo de HTML. 605 00:34:31,739 --> 00:34:34,710 Y utilizando sólo estándar Prácticas HTML podemos 606 00:34:34,710 --> 00:34:41,030 inyectar algo de información muy simple, nuestro mundo hola, en ese diálogo. 607 00:34:41,030 --> 00:34:47,780 Así que si a continuación, desplácese hacia arriba, podemos ver a continuación, la procesión de las cosas 608 00:34:47,780 --> 00:34:48,989 que está ocurriendo. 609 00:34:48,989 --> 00:34:54,070 Primero creamos un comando Cloud 9 que cuando son ejecutadas por Cloud 9, 610 00:34:54,070 --> 00:34:55,765 se va a despedir a esta función. 611 00:34:55,765 --> 00:34:58,390 Se va a ejecutar esta función Llamé espectáculo diálogo, que tengo 612 00:34:58,390 --> 00:34:59,720 escrito en mi código. 613 00:34:59,720 --> 00:35:04,350 >> He creado un elemento de menú y unido a él mismo comando que 614 00:35:04,350 --> 00:35:08,550 que cuando ese ítem se hace clic en el menú, que manda entonces se ejecuta 615 00:35:08,550 --> 00:35:10,780 y que la función se ejecuta entonces. 616 00:35:10,780 --> 00:35:14,080 Y dentro de la función que soy sólo va a llamar el-- estoy 617 00:35:14,080 --> 00:35:17,250 sólo va a ejecutar el programa método de este plug-in, que 618 00:35:17,250 --> 00:35:20,800 va a la primera llamada el método de sorteo, y yendo 619 00:35:20,800 --> 00:35:28,050 para disparar este método abajo, el dibujar controlador de eventos, en nuestro ciclo de vida. 620 00:35:28,050 --> 00:35:30,820 Y entonces se hará realidad mostrar el diálogo. 621 00:35:30,820 --> 00:35:34,870 >> También hay un método de ocultar, de manera que si necesito la oportunidad de ocultar 622 00:35:34,870 --> 00:35:37,610 mi diálogo, puedo hacer lo mismo. 623 00:35:37,610 --> 00:35:42,060 Así que eso es prácticamente todo para conseguir todo esto funcione. 624 00:35:42,060 --> 00:35:45,160 Note que es si desplácese hacia abajo además hay una API pública congelación. 625 00:35:45,160 --> 00:35:51,020 Esto básicamente se limita a decir que yo quieren estos métodos a eficacia 626 00:35:51,020 --> 00:35:56,670 ser público, pero no overwriteable fuera del contexto de este plug-in. 627 00:35:56,670 --> 00:36:00,410 Y a continuación, en la parte inferior, es tal vez el último que 628 00:36:00,410 --> 00:36:03,180 que realmente necesitamos para pagar mucha atención a aquí, lo cual 629 00:36:03,180 --> 00:36:09,540 es que vamos a registrar nuestra plug-in con el nombre C9 Seminario 1, 630 00:36:09,540 --> 00:36:11,920 y el objeto de plug-in. 631 00:36:11,920 --> 00:36:14,870 >> Que como usted recordará, es que plug-in que el plug-in 632 00:36:14,870 --> 00:36:18,200 objeto que hemos estado definiendo largo de la totalidad de esta fuente 633 00:36:18,200 --> 00:36:18,840 código. 634 00:36:18,840 --> 00:36:23,790 Y C9 Seminario 1 es el cadena que prometimos 635 00:36:23,790 --> 00:36:26,350 para proporcionar en la parte superior de esta definición. 636 00:36:26,350 --> 00:36:29,280 637 00:36:29,280 --> 00:36:29,780 OKAY. 638 00:36:29,780 --> 00:36:34,160 Así que vamos a la rampa hacia arriba un poco y ver si podemos hacer algo 639 00:36:34,160 --> 00:36:36,020 un poco más interesante. 640 00:36:36,020 --> 00:36:38,350 Ahora bien, esto sólo es tan grande. 641 00:36:38,350 --> 00:36:41,380 Quiero decir, esto es, en realidad es bastante fresco que en tan pocas líneas de código, 642 00:36:41,380 --> 00:36:45,570 podemos modificar el IDE existente y añadir un elemento de menú existente 643 00:36:45,570 --> 00:36:48,850 o añadir un nuevo elemento de menú, añadir un comando, y mostrar un diálogo, 644 00:36:48,850 --> 00:36:51,040 y sólo un montón de funcionalidad que existe. 645 00:36:51,040 --> 00:36:54,550 Es realmente muy grande. 646 00:36:54,550 --> 00:36:59,470 >> Pero no hace mucho, ya que no puede comunicarse con el Ubuntu subyacente 647 00:36:59,470 --> 00:37:00,450 ejemplo. 648 00:37:00,450 --> 00:37:02,560 Así que digamos que yo realmente quiere saber 649 00:37:02,560 --> 00:37:05,400 alguna información sobre la subyace ejemplo Ubuntu, 650 00:37:05,400 --> 00:37:08,260 como plug-in de las estadísticas hace. 651 00:37:08,260 --> 00:37:11,090 Así que echemos un vistazo a una poco más de información 652 00:37:11,090 --> 00:37:13,730 acerca de cómo las estadísticas de plug-in de obras. 653 00:37:13,730 --> 00:37:15,900 Y de hecho, es muy similar a este. 654 00:37:15,900 --> 00:37:17,680 Usted puede recordar que hay un diálogo. 655 00:37:17,680 --> 00:37:21,680 Usted puede recordar que hay alguna información que es 656 00:37:21,680 --> 00:37:24,860 se muestra sólo a lo largo de la barra de menú a lo largo la parte superior, que es de esperar que eres ahora 657 00:37:24,860 --> 00:37:27,450 conseguir un sabor de cómo implementamos esto, 658 00:37:27,450 --> 00:37:32,360 simplemente mediante la inserción de elementos de menú en específico puntos y creando instancias de un diálogo 659 00:37:32,360 --> 00:37:34,360 y mostrar que el diálogo. 660 00:37:34,360 --> 00:37:36,580 >> Pero todavía no hemos demostrado que la forma en que puede conectarlo 661 00:37:36,580 --> 00:37:40,790 a un comando en el ejemplo Ubuntu subyacente. 662 00:37:40,790 --> 00:37:46,930 Así que vamos a echar un vistazo a continuación, en plugin.2, que hace precisamente esto. 663 00:37:46,930 --> 00:37:50,540 Vamos a abrir plugin.js, que es el código para esto. 664 00:37:50,540 --> 00:37:54,570 Pero bajo el menú Ventana, si hago clic en diálogo 2, 665 00:37:54,570 --> 00:37:58,290 podemos ver que dice esto en cambio, hola CS50, que 666 00:37:58,290 --> 00:38:01,800 no se ve todo lo que atractiva, ¿no? 667 00:38:01,800 --> 00:38:04,310 Excepto, mira esto. 668 00:38:04,310 --> 00:38:07,020 Déjame cambiar algo aquí abajo. 669 00:38:07,020 --> 00:38:11,540 >> Voy a ir a mi espacio de trabajo y el cambio seminario 670 00:38:11,540 --> 00:38:15,990 decir algo más, como Hola, Dan. 671 00:38:15,990 --> 00:38:18,150 Voy a cerrar y guardarlo. 672 00:38:18,150 --> 00:38:22,740 Y ahora me voy a volver a ejecutar mi elemento de menú diálogo. 673 00:38:22,740 --> 00:38:25,590 Y note que tiene ahora ha cambiado lo que dice. 674 00:38:25,590 --> 00:38:26,880 Hola, Dan. 675 00:38:26,880 --> 00:38:30,680 Parece que he hecho algo abajo aquí en la instancia Ubuntu subyacente 676 00:38:30,680 --> 00:38:34,370 sin haber manipulado cualquier código que se está ejecutando de nuevo únicamente 677 00:38:34,370 --> 00:38:35,720 en el lado del cliente. 678 00:38:35,720 --> 00:38:40,380 Así que obviamente hay una especie de comunicación que está pasando aquí. 679 00:38:40,380 --> 00:38:44,550 >> Ahora aquí es donde una gran parte del poder del Cloud 9 SDK viene en, 680 00:38:44,550 --> 00:38:49,440 es que en este plugin.2, en realidad podemos hacer 681 00:38:49,440 --> 00:38:52,910 una llamada a suceder a la instancia subyacente, 682 00:38:52,910 --> 00:38:55,750 y ejecutar alguna orden arbitrario. 683 00:38:55,750 --> 00:39:00,230 Así que en este caso, tengo en realidad creado una muy simple script bash 684 00:39:00,230 --> 00:39:02,350 en mi espacio de trabajo denominado Seminario. 685 00:39:02,350 --> 00:39:03,610 Así que permítanme abrir eso. 686 00:39:03,610 --> 00:39:05,370 Y podemos ver que se parece a esto. 687 00:39:05,370 --> 00:39:08,310 Es sólo una simple fiesta guión cuyo único propósito en la vida 688 00:39:08,310 --> 00:39:11,920 va a ser un eco cabo este texto, Hola, Dan. 689 00:39:11,920 --> 00:39:14,360 O antes, dijo Hola, CS50. 690 00:39:14,360 --> 00:39:16,000 Y eso es todo lo que va a hacer. 691 00:39:16,000 --> 00:39:21,030 >> Debido a que este es ahora un comando que puedo correr. 692 00:39:21,030 --> 00:39:23,750 De hecho, me puedo ejecutarlo aquí. 693 00:39:23,750 --> 00:39:28,440 Podemos ver que en realidad es sólo un comando que corro naturalmente. 694 00:39:28,440 --> 00:39:32,850 Puedo pedir a mi plug-in para ejecutar este comando en el espacio de trabajo subyacente 695 00:39:32,850 --> 00:39:36,510 y analizar la información que fue devuelto de la misma, 696 00:39:36,510 --> 00:39:40,300 y hacer algo con él, y modificar mi plug-in y el comportamiento que yo 697 00:39:40,300 --> 00:39:43,240 tener en mi plug-in como resultado. OKAY. 698 00:39:43,240 --> 00:39:45,450 Así que vamos a ver cómo sucede esto. 699 00:39:45,450 --> 00:39:48,380 Lo vimos muy simple Seminario de escritura de la hornada que yo 700 00:39:48,380 --> 00:39:51,080 [Inaudible] que en realidad puede funcionar. 701 00:39:51,080 --> 00:39:54,560 >> Y ahora vamos a ver las modificaciones que son necesarios para atar esto juntos 702 00:39:54,560 --> 00:39:57,620 con la ventana de diálogo, y ejecutarlo. 703 00:39:57,620 --> 00:40:02,030 Así que aquí vamos a hacer casi lo mismo como vimos antes. 704 00:40:02,030 --> 00:40:05,500 Pero nótese que entre los cosas que me ha consumido ahora-- 705 00:40:05,500 --> 00:40:09,090 Además del diálogo, que otra vez se me ocurre lo han hecho dos veces, 706 00:40:09,090 --> 00:40:14,300 que no se fuere preciso además al diálogo y los comandos 707 00:40:14,300 --> 00:40:17,780 y los menús de plug-ins, que eran necesaria en el primero para mí 708 00:40:17,780 --> 00:40:21,560 para definir un nuevo comando y inyectar un elemento en los menús, 709 00:40:21,560 --> 00:40:25,010 También tengo este proc plug-in. 710 00:40:25,010 --> 00:40:28,500 >> Y este proc plug-in permite nosotros manipulamos procesos 711 00:40:28,500 --> 00:40:30,950 en la instancia subyacente. 712 00:40:30,950 --> 00:40:34,970 He conectado después tengo dijo que mi plug-in requiere. 713 00:40:34,970 --> 00:40:38,320 Entonces me he conectado a código, como vimos en la función principal. 714 00:40:38,320 --> 00:40:40,970 Una vez más, me voy a inicializar mi diálogo. 715 00:40:40,970 --> 00:40:45,500 Y si nos movemos hacia abajo ahora, puede ver cómo esto es diferente. 716 00:40:45,500 --> 00:40:49,040 La función de carga es la misma, por lo que que sólo va a crear un comando 717 00:40:49,040 --> 00:40:54,250 y crear un elemento de menú y conecte ese elemento de menú a ese comando. 718 00:40:54,250 --> 00:40:56,690 Pero si ahora desplazamos hacia abajo para mostrar el diálogo, 719 00:40:56,690 --> 00:40:59,990 podemos empezar a ver dónde surgen las diferencias. 720 00:40:59,990 --> 00:41:04,170 >> Tenemos función de presentación de diálogo, que sólo va a mostrar el diálogo. 721 00:41:04,170 --> 00:41:12,410 Pero cuando me muestro este diálogo, y cuando se llama al método de demostración, 722 00:41:12,410 --> 00:41:14,430 se dispara la función draw. 723 00:41:14,430 --> 00:41:18,990 Y yo voy a continuación, especifique algunos contenidos dentro de eso. 724 00:41:18,990 --> 00:41:21,910 Así que sólo voy a crear un div, proporcionar a la misma 725 00:41:21,910 --> 00:41:24,020 un texto básico, Hola, mundo. 726 00:41:24,020 --> 00:41:27,250 Pero noto que aquí estoy va a adjuntar a la misma un ID. 727 00:41:27,250 --> 00:41:32,350 Y la siguiente línea voy para encontrar esa identificación utilizando JavaScript, 728 00:41:32,350 --> 00:41:36,210 y almacenar dicho objeto en otra variable 729 00:41:36,210 --> 00:41:38,280 que yo sólo voy a llamar a contenido. 730 00:41:38,280 --> 00:41:41,780 >> Así que ahora cada vez que tengo contenido, todo lo que tiene que hacer 731 00:41:41,780 --> 00:41:46,100 se acaba de modificar HTML interno de este objeto. 732 00:41:46,100 --> 00:41:51,300 Y el HTML diálogo hará a continuación, ser modificado también. 733 00:41:51,300 --> 00:41:55,500 Así que cuando este plug-in es a continuación, se muestra, lo cual puede suceder 734 00:41:55,500 --> 00:41:59,820 y esto es un nuevo evento que es nuevo en este plug-in, 735 00:41:59,820 --> 00:42:03,380 pero que sucede en todos los plug-in con el diálogo, cuando este se muestra ahora, 736 00:42:03,380 --> 00:42:07,100 Voy a llamar a un función llamada traiga información. 737 00:42:07,100 --> 00:42:10,520 Y esta función es la carne de aquí. 738 00:42:10,520 --> 00:42:14,930 Voy a utilizar ese plug-in que proc hemos descrito antes, que por cierto, 739 00:42:14,930 --> 00:42:19,790 es en realidad una biblioteca Node.js que Cloud 9 está utilizando aquí. 740 00:42:19,790 --> 00:42:21,730 >> Así que en realidad se puede consultar acerca de cómo esto 741 00:42:21,730 --> 00:42:25,340 funciona si usted entra en la Documentación Node.js 742 00:42:25,340 --> 00:42:29,220 y buscar el archivo exec método para procesos de allí. 743 00:42:29,220 --> 00:42:33,110 Voy a ejecutar esta específica comando, hogar Ubuntu espacio de trabajo 744 00:42:33,110 --> 00:42:38,000 seminario, que es la misma, que mismo comando que he creado antes. 745 00:42:38,000 --> 00:42:40,680 Proporcionar a ella una corriente directorio de trabajo, justo 746 00:42:40,680 --> 00:42:45,440 para estar seguro de ultra en términos de la contexto de donde este se está ejecutando. 747 00:42:45,440 --> 00:42:49,150 Y una vez que ha sido completado y devuelto, 748 00:42:49,150 --> 00:42:54,040 Voy a ejecutar este función llamada de salida de análisis. 749 00:42:54,040 --> 00:42:54,540 OKAY. 750 00:42:54,540 --> 00:42:58,670 Así que esto, entonces se va a ejecutar un comando en el local o lugar 751 00:42:58,670 --> 00:43:01,700 la instancia Ubuntu remoto. 752 00:43:01,700 --> 00:43:03,490 Cuando yo vuelva algunos información, yo estoy a continuación 753 00:43:03,490 --> 00:43:06,940 va a llamar a una función separada llamada de análisis sintáctico de salida, que 754 00:43:06,940 --> 00:43:13,790 esta firma tiene aquí, err, stdout, stderr, 755 00:43:13,790 --> 00:43:15,910 y realizar algún cálculo en esto. 756 00:43:15,910 --> 00:43:18,930 Así que si he recibido un error de algún tipo en absoluto, 757 00:43:18,930 --> 00:43:22,340 De hecho, me voy a comprobar para ver si error de hecho tiene algunos datos. 758 00:43:22,340 --> 00:43:27,204 Y si es así, entonces voy a modificar el interior HTML de ese objeto contenido, que 759 00:43:27,204 --> 00:43:28,995 es usted recuerda, nos conectado al diálogo 760 00:43:28,995 --> 00:43:32,210 en el instantiattion de ese diálogo, o en el primer dibujo 761 00:43:32,210 --> 00:43:33,370 de ese diálogo. 762 00:43:33,370 --> 00:43:35,650 Voy a decir simplemente que algún error ha ocurrido. 763 00:43:35,650 --> 00:43:37,140 >> Ahora bien, esto es demasiado simplista. 764 00:43:37,140 --> 00:43:40,170 El valor de error normalmente contener algo que fuera útil, 765 00:43:40,170 --> 00:43:45,520 tal vez un número de error y un error de la escritura de sí mismo. 766 00:43:45,520 --> 00:43:48,430 O si el guión escribió algo que el error estándar, 767 00:43:48,430 --> 00:43:50,890 que los datos se rellena en ese parámetro también. 768 00:43:50,890 --> 00:43:53,765 Y podría ser un poco más cuidado con lo de error 769 00:43:53,765 --> 00:43:55,332 En realidad estoy mostrando a la gente. 770 00:43:55,332 --> 00:43:57,415 Pero este ejemplo simplista es suficiente por ahora 771 00:43:57,415 --> 00:43:59,715 por lo menos a ver cómo todas estas funciones. 772 00:43:59,715 --> 00:44:01,590 De lo contrario, si hay ningún error, entonces yo sólo soy 773 00:44:01,590 --> 00:44:05,500 va a proporcionar la materia prima de salida de esa función 774 00:44:05,500 --> 00:44:10,070 en el código HTML interno de este contenido elemento y, a continuación, actualizar mi plug-in 775 00:44:10,070 --> 00:44:12,490 y mostrar aquí. 776 00:44:12,490 --> 00:44:17,550 Y eso es prácticamente todo lo que es necesaria para conseguir que esto se ejecute. 777 00:44:17,550 --> 00:44:22,860 Y así vamos a pensar entonces cómo esto funciona, en general. 778 00:44:22,860 --> 00:44:29,330 La primera vez que cargué este plug-in, al igual que el primer plug-in, 779 00:44:29,330 --> 00:44:32,670 Voy a añadir un comando que es disponible a cualquier cosa, a cualquier plug-in 780 00:44:32,670 --> 00:44:37,120 en Cloud 9, denominado Seminario CS50 Diálogo 2, cuya responsabilidad 781 00:44:37,120 --> 00:44:39,670 será la de ejecutar este programa el diálogo, que es usted recuerda, 782 00:44:39,670 --> 00:44:42,730 en realidad mostrar el diálogo que solicité a continuación. 783 00:44:42,730 --> 00:44:45,980 >> Entonces voy a añadir que comando en un menú de la ventana 784 00:44:45,980 --> 00:44:48,070 por lo que no tengo acceso a eso. 785 00:44:48,070 --> 00:44:51,420 Y cuando ese diálogo se solicita que se muestra, 786 00:44:51,420 --> 00:44:55,170 Traeré algo de información de la instancia Ubuntu subyacente 787 00:44:55,170 --> 00:44:58,890 utilizando el comando archivo exec. 788 00:44:58,890 --> 00:44:59,920 Disculpe me. 789 00:44:59,920 --> 00:45:04,140 Una vez que se devuelve y me reciben algún información, a continuación, en el lado del cliente 790 00:45:04,140 --> 00:45:08,370 de nuevo, voy a ser capaz de analizar la salida de ese comando 791 00:45:08,370 --> 00:45:12,650 y actualizar el interior HTML de los elementos 792 00:45:12,650 --> 00:45:16,440 que habíamos conectado al anterior. 793 00:45:16,440 --> 00:45:19,910 >> Y con eso, entonces tenemos esta en pleno funcionamiento plug-in 794 00:45:19,910 --> 00:45:24,520 que me permite capturar información desde este script arbitrario 795 00:45:24,520 --> 00:45:27,170 que hemos creado en nuestro ejemplo subyacente. 796 00:45:27,170 --> 00:45:29,660 Pero, de nuevo, es realmente importante y realmente clave 797 00:45:29,660 --> 00:45:33,030 para separar el que cada de estas cosas que está sucediendo, 798 00:45:33,030 --> 00:45:38,320 que tenemos todo esto en el cliente código que se está ejecutando en el navegador, 799 00:45:38,320 --> 00:45:41,640 y todavía no tienen acceso al sistema de archivos subyacente 800 00:45:41,640 --> 00:45:44,895 hasta que realmente corremos algunos de ellos comandos que son proporcionados por la Nube 801 00:45:44,895 --> 00:45:49,055 9 SDK como proc, y algunos otros que nos permiten leer algunos datos, 802 00:45:49,055 --> 00:45:53,500 o leer algunos archivos si necesitamos a hacer cualquier cosa por el estilo. 803 00:45:53,500 --> 00:45:56,650 >> Ahora bien, este es un ejemplo algo simple. 804 00:45:56,650 --> 00:46:00,570 Hay otras cosas que sería tal vez desee hacer así. 805 00:46:00,570 --> 00:46:03,470 Por ejemplo, tal vez en realidad quiere ahorrar algo de información 806 00:46:03,470 --> 00:46:04,630 a las preferencias. 807 00:46:04,630 --> 00:46:07,900 O tal vez queremos agregar un nuevo panel de preferencias 808 00:46:07,900 --> 00:46:09,690 O algo por el estilo. 809 00:46:09,690 --> 00:46:13,370 Entonces eso es algo que puede echar un vistazo a la Nube 9 SDK 810 00:46:13,370 --> 00:46:15,300 para obtener más información sobre. 811 00:46:15,300 --> 00:46:19,990 Pero esto realmente es lo suficiente para empezar. 812 00:46:19,990 --> 00:46:26,410 Así que para ser un poco más concreto sobre la forma en que algunas de estas cosas 813 00:46:26,410 --> 00:46:31,370 función, yo quería demostrarle un ejemplo más, que es sólo algunas 814 00:46:31,370 --> 00:46:35,580 del código de la Estadísticas 50 plug-in. 815 00:46:35,580 --> 00:46:39,780 >> Y este código es básicamente sobre la base de estos ejemplos 816 00:46:39,780 --> 00:46:43,310 que has visto, pero tiene algunos más garantías 817 00:46:43,310 --> 00:46:47,460 y tiene un poco más de complejidad a fin para lograr algunas de las cosas adicionales 818 00:46:47,460 --> 00:46:48,930 que queremos lograr. 819 00:46:48,930 --> 00:46:54,510 Por ejemplo, si quiero ser capaz de salvar a algunos ajustes, 820 00:46:54,510 --> 00:46:57,700 entonces tengo que tener acceso a la configuración de plug-in, 821 00:46:57,700 --> 00:47:01,820 y cada vez que quiero leer algunos ajustes, 822 00:47:01,820 --> 00:47:08,340 Puedo, por ejemplo, conectar a varios eventos en la configuración de plug-in. 823 00:47:08,340 --> 00:47:13,630 Así que cada vez que la configuración es de color rojo, por ejemplo, en mi propio plug-in, 824 00:47:13,630 --> 00:47:18,450 si yo voy a leer algunos configuración del almacenamiento guardado 825 00:47:18,450 --> 00:47:24,540 preferencias del usuario, entonces puedo establecer los valores predeterminados para un lugar específico, 826 00:47:24,540 --> 00:47:31,250 para la preferencia específica, en ese Archivo de opciones de estilo JSON que hemos 827 00:47:31,250 --> 00:47:33,890 salvos antes, que hemos visto antes. 828 00:47:33,890 --> 00:47:36,370 >> Y si voy a escribir algunos ajustes a la misma, 829 00:47:36,370 --> 00:47:40,440 entonces yo can-- o tan pronto como detectamos que los ajustes se han escrito 830 00:47:40,440 --> 00:47:44,420 a-- porque, por ejemplo, aquellos ajustes han sido modificados por el usuario 831 00:47:44,420 --> 00:47:47,335 ya sea directamente en sus entornos archivo o el panel de preferencias 832 00:47:47,335 --> 00:47:49,370 ha cambiado la configuración presentar directamente, 833 00:47:49,370 --> 00:47:53,590 De hecho, me puedo actualizar una parte del código o actualizar el comportamiento de mi plug-in 834 00:47:53,590 --> 00:47:58,710 sobre la base de esos cambios que tienen ocurrido en el archivo de configuración también. 835 00:47:58,710 --> 00:48:03,380 Pero en realidad, el resto es bastante mucho esto que ya has visto. 836 00:48:03,380 --> 00:48:06,040 >> Añadimos un poco, tal vez algo que es nuevo. 837 00:48:06,040 --> 00:48:09,440 Así que añadimos un archivo de preferencias, o más bien un panel de preferencias, 838 00:48:09,440 --> 00:48:14,250 a la ventana de preferencias, que de nuevo usted puede encontrar más información 839 00:48:14,250 --> 00:48:16,220 en la Nube 9 SDK me leyó. 840 00:48:16,220 --> 00:48:18,460 Pero todo lo demás es bastante, bastante 841 00:48:18,460 --> 00:48:25,810 similar a lo que vimos antes, sólo con un poco de comprobación de errores adicional 842 00:48:25,810 --> 00:48:30,150 y algunas protecciones adicionales y alguna funcionalidad adicional 843 00:48:30,150 --> 00:48:33,314 que cuentan con todos los diversos las cosas que hemos visto. 844 00:48:33,314 --> 00:48:35,230 Si usted no tiene en realidad visto todavía, es posible que 845 00:48:35,230 --> 00:48:40,955 estar preguntándose qué el subyacente comando está en la ventana de estadísticas 50. 846 00:48:40,955 --> 00:48:42,840 En realidad es la función. 847 00:48:42,840 --> 00:48:48,100 Bueno, es-- oh, maldita sea. 848 00:48:48,100 --> 00:48:49,410 Un segundo. 849 00:48:49,410 --> 00:48:49,910 Espere. 850 00:48:49,910 --> 00:48:52,270 OKAY. 851 00:48:52,270 --> 00:48:58,090 Vamos a mover esto para que podamos realmente ver qué pasa cuando escribo Estadísticas 50. 852 00:48:58,090 --> 00:49:02,140 Nótese que en este caso, el comando que estoy fuera poniendo 853 00:49:02,140 --> 00:49:06,310 es realmente nuevo, sólo el guión que es ir a la salida de un montón de información 854 00:49:06,310 --> 00:49:08,040 en formato JSON. 855 00:49:08,040 --> 00:49:10,800 Y la razón por la que lo hacemos de esta manera es que debido a que 856 00:49:10,800 --> 00:49:15,480 están operando, ya que hemos escrito el código del lado del cliente en JavaScript, 857 00:49:15,480 --> 00:49:19,500 que puede muy fácilmente sólo analizar objetos JavaScript, 858 00:49:19,500 --> 00:49:23,050 y realmente ser capaz de manipular esos objetos al igual que lo haríamos 859 00:49:23,050 --> 00:49:24,610 cualquier otro objeto JavaScript. 860 00:49:24,610 --> 00:49:27,650 >> Y por lo que este es un muy conveniente manera de proporcionar alguna información 861 00:49:27,650 --> 00:49:31,950 desde la instancia Ubuntu subyacente, tales como el número de versión, el anfitrión 862 00:49:31,950 --> 00:49:36,360 nombre, si un servidor está escuchando, lo que el servidor es, así sucesivamente y así sucesivamente, 863 00:49:36,360 --> 00:49:39,150 y analizar esa misma fácilmente y muy rápidamente 864 00:49:39,150 --> 00:49:44,870 en el plug-in que se va a continuación para mostrarnos toda esa información. 865 00:49:44,870 --> 00:49:47,920 Así que de nuevo, la idea clave para tener en cuenta 866 00:49:47,920 --> 00:49:54,260 es esta separación entre la instancia subyacente, 867 00:49:54,260 --> 00:49:57,490 y también donde se carga el código. 868 00:49:57,490 --> 00:49:59,870 Que cuando tengo un cliente, es la primera carga. 869 00:49:59,870 --> 00:50:03,951 Sólo este archivo JavaScript estática de en algún lugar, tal vez CDN de algún tipo. 870 00:50:03,951 --> 00:50:06,450 Nosotros realmente no tenemos que cuidar demasiado por este primer paso. 871 00:50:06,450 --> 00:50:08,970 >> Sólo sabemos que se trata de que se ejecuta en el lado del cliente 872 00:50:08,970 --> 00:50:12,740 y ahí es cuando me voy a comunicarse con esta instancia ventana acoplable. 873 00:50:12,740 --> 00:50:15,970 Que vamos a hacerlo a través de la nube 9 SDK. 874 00:50:15,970 --> 00:50:20,460 En realidad no tenemos la capacidad, utilizando JavaScript o Node.js, 875 00:50:20,460 --> 00:50:21,750 a escribir directamente a ella. 876 00:50:21,750 --> 00:50:29,400 Nos limitamos a usar los SDK existente APIs para hacer que la acción para nosotros. 877 00:50:29,400 --> 00:50:32,490 Y de nuevo, una de las las cosas realmente importantes 878 00:50:32,490 --> 00:50:38,990 es que cuando he creado esto, cuando he creado este plug-in, 879 00:50:38,990 --> 00:50:42,510 y como yo estoy trabajando en ello, uno de las cosas importantes que hacer 880 00:50:42,510 --> 00:50:44,840 es abrir la consola JavaScript. 881 00:50:44,840 --> 00:50:49,400 >> Debido a que ya que este es todo que operan en el código JavaScript, 882 00:50:49,400 --> 00:50:54,700 en el lado del cliente, si uso un console.log method-- por lo que sólo 883 00:50:54,700 --> 00:50:56,550 para mostrar un ejemplo aquí. 884 00:50:56,550 --> 00:51:07,630 Vamos a tratar de modificar este sencillo plug-in para también registrar algunos datos. 885 00:51:07,630 --> 00:51:09,895 Y vamos a añadir a cabo estándar. 886 00:51:09,895 --> 00:51:13,010 887 00:51:13,010 --> 00:51:16,810 Así que vamos a cambiar que para ser justo aquí. 888 00:51:16,810 --> 00:51:19,560 Ahora cuando ejecuto console.log, tenga en cuenta 889 00:51:19,560 --> 00:51:21,630 que desde esta se está ejecutando en el lado del cliente, 890 00:51:21,630 --> 00:51:24,900 Voy a ver esto en mi propia JavaScript consola, que 891 00:51:24,900 --> 00:51:28,540 es como voy a continuación, podrá tratar de solucionar y depurar 892 00:51:28,540 --> 00:51:30,330 algunos de los problemas que tengo. 893 00:51:30,330 --> 00:51:34,110 >> Nótese que debido Estoy en modo SDK, estoy 894 00:51:34,110 --> 00:51:37,820 a continuación, capaz de manipular plug-ins en esta instancia. 895 00:51:37,820 --> 00:51:39,800 Así que, aunque es guardado en este caso, 896 00:51:39,800 --> 00:51:47,130 este es el ejemplo de que el anterior regla se viola, en el que el Cloud 9 897 00:51:47,130 --> 00:51:51,030 SDK realmente tirar de plug-ins de la subyace instancia y luego ejecutarlos. 898 00:51:51,030 --> 00:51:54,440 Así que de esta manera, estoy a continuación capaz de manipular y construir 899 00:51:54,440 --> 00:51:55,750 algunos plug-ins aquí. 900 00:51:55,750 --> 00:51:58,080 Pero para mí ver cambios de este plug-in, 901 00:51:58,080 --> 00:52:01,880 porque está en el lado del cliente, Tengo que guardar ese plug-in 902 00:52:01,880 --> 00:52:04,950 y vuelva a cargar todo el espacio de trabajo, para que el nuevo plug-in es después 903 00:52:04,950 --> 00:52:09,230 descargado en mi cliente, en mi navegador web, y luego se está utilizando. 904 00:52:09,230 --> 00:52:14,460 >> Así que ahora cuando hago clic en este Seminario Diálogo 2, todavía vemos esto. 905 00:52:14,460 --> 00:52:21,311 Pero ahora espero en mi JavaScript el diálogo, que lo creamos mi-- esperar, 906 00:52:21,311 --> 00:52:21,810 Espere. 907 00:52:21,810 --> 00:52:24,420 Voy a tener que abrir el nuevo diálogo. 908 00:52:24,420 --> 00:52:30,230 Debemos ver mis datos recibidos aquí. 909 00:52:30,230 --> 00:52:32,780 Los datos recibidos, hola, Dan, que es usted recuerda, 910 00:52:32,780 --> 00:52:37,770 fue una operación que console.log que habíamos solicitado en el plug-in. 911 00:52:37,770 --> 00:52:42,140 Así que esta descripción a continuación, que he mencionado antes, 912 00:52:42,140 --> 00:52:45,460 este diálogo, o esta diagrama más bien, que yo 913 00:52:45,460 --> 00:52:49,140 mencionado antes es lo que sucede. 914 00:52:49,140 --> 00:52:53,150 Pero hay una importante excepción sólo para el desarrollo, 915 00:52:53,150 --> 00:52:55,490 y es que el plug-in sí podría en realidad 916 00:52:55,490 --> 00:52:59,160 ser almacenados en la instancia ventana acoplable temporalmente, ya que presumiblemente Cloud 9 917 00:52:59,160 --> 00:53:02,210 no queremos que seamos capaces de manipular objetos en su CDN. 918 00:53:02,210 --> 00:53:08,650 >> Y la nube 9 clientes, durante la carga, encontrarán los plug-ins en eso. 919 00:53:08,650 --> 00:53:11,540 C9 plug-in de carpeta y cargar esos. 920 00:53:11,540 --> 00:53:15,780 Pero los que todavía están sucediendo sólo en el lado del cliente. 921 00:53:15,780 --> 00:53:19,440 Así que esto es sólo el de un excepción de que se produce sólo 922 00:53:19,440 --> 00:53:23,220 para el desarrollo de la nube 9 plug-ins. 923 00:53:23,220 --> 00:53:25,000 Pero el resto de la tiempo-- y la razón 924 00:53:25,000 --> 00:53:26,708 que queremos de verdad martillar esta casa- 925 00:53:26,708 --> 00:53:30,140 es porque la mayoría de las veces esto es va a estar corriendo de la CDN, 926 00:53:30,140 --> 00:53:33,030 y sólo va a ser ejecutado exclusivamente desde el lado del cliente. 927 00:53:33,030 --> 00:53:36,110 >> Normalmente no habrá interacción con el plug-in, 928 00:53:36,110 --> 00:53:39,840 o hay ni siquiera tienen que ser cualquier razón por la que el plug-ins a sí mismos 929 00:53:39,840 --> 00:53:42,970 realmente están almacenados en el subyace ejemplo estibador, 930 00:53:42,970 --> 00:53:47,240 excepto en el caso de este desarrollo SDK. 931 00:53:47,240 --> 00:53:51,510 Así que de nuevo, esto cambia simplemente ligeramente por el hecho de 932 00:53:51,510 --> 00:53:54,650 que se nos está acabando el modo SDK. 933 00:53:54,650 --> 00:53:57,160 Va a continuación, cargar los plug-ins de desarrollo, 934 00:53:57,160 --> 00:54:01,690 y el único propósito aquí es para que Puedo usar Cloud 9 para hacer el desarrollo 935 00:54:01,690 --> 00:54:04,620 Cloud 9 plugins. 936 00:54:04,620 --> 00:54:07,220 Pero aún así, esto no cambia una vez más cómo funciona todo esto. 937 00:54:07,220 --> 00:54:09,650 Todavía está siendo ejecutado enteramente en el lado del cliente. 938 00:54:09,650 --> 00:54:16,260 >> Sólo significa que cada vez que quiero crear Nube 9 plug-ins en el Cloud 9, 939 00:54:16,260 --> 00:54:19,320 Puedo crear esos plug-ins, ponerlos en mi. 940 00:54:19,320 --> 00:54:25,110 C9 carpeta / plugins en mi casa directorio, asegúrese de que esté en modo de SDK, 941 00:54:25,110 --> 00:54:29,290 recargar la página cada vez que en realidad realizar cambios en ese plug-in, 942 00:54:29,290 --> 00:54:33,590 y ver lo que sucede en mi consola JavaScript. 943 00:54:33,590 --> 00:54:36,240 Sólo manejar mi JavaScript consolar para asegurarse 944 00:54:36,240 --> 00:54:38,930 que cualquier solución de problemas información que pongo a la consola, 945 00:54:38,930 --> 00:54:41,920 o cualquier otra cosa que pueda ocurrir debido a los errores que he escrito 946 00:54:41,920 --> 00:54:44,940 en mi código o similar, aparece allí. 947 00:54:44,940 --> 00:54:48,007 >> Y con eso, es realmente lo suficiente para empezar, creo, 948 00:54:48,007 --> 00:54:49,090 Con la nube 9 plug-ins. 949 00:54:49,090 --> 00:54:53,120 Sobre todo teniendo una mirada en el SDK documentación que Cloud 9 ofrece. 950 00:54:53,120 --> 00:54:56,650 Es una gran manera de conseguir comenzado, y con mucha facilidad 951 00:54:56,650 --> 00:54:59,900 crear algunos plug-ins para Cloud 9. 952 00:54:59,900 --> 00:55:02,820 Y con eso, quiero dar las gracias a todos ustedes por acompañarme. 953 00:55:02,820 --> 00:55:05,550 Espero que te diviertas escribir plug-ins para Cloud 9. 954 00:55:05,550 --> 00:55:09,600 Mejorar Quizás plug-ins que tenemos ahora, o tal vez incluso 955 00:55:09,600 --> 00:55:11,360 añadiendo algunas funciones de su cuenta. 956 00:55:11,360 --> 00:55:14,540 Esperamos con ansia ver qué es lo que usted cree. 957 00:55:14,540 --> 00:55:16,330 Hasta entonces, adiós. 958 00:55:16,330 --> 00:55:18,734