>> DAN ARMENDARIZ: Hola, y bienvenidos a un seminario CS50 en Personalización Cloud 9,
y el IDE CS50.
Así que hoy vamos a simplemente hablar un poco
sobre algunas de las información técnica que
va detrás de la arquitectura de Cloud 9, y cómo
hemos puesto en marcha algunos de los plug-ins como parte de Cloud 9 para proporcionar IDE CS50.
Así que vamos a saltar a la derecha y empezar a hablar de los plug-ins.
>> Así plug-ins son realmente en la núcleo de la experiencia de Cloud 9.
Cloud 9 es la tecnología subyacente que proporciona a nosotros la IDE,
y también la ventana de terminal en el parte inferior, junto con el workspace--
Ubuntu workspace-- que utilizar para compilar todos nuestros proyectos
y realizar nuestros boletines de problemas, completar nuestros boletines de problemas.
Pero en el corazón de todos de la misma, toda la tecnología
es realmente sólo un montón de plug-ins.
Todo es un plug-in que pueden ser modificados,
ampliado, puede crear sus propios plug-ins,
usted puede quitar otra plug-ins, para alterar realmente
mucho de la funcionalidad de la Nube 9 IDE existente.
>> Así que esta es una existente Cloud 9 medio ambiente.
Esto es realmente sólo la defecto Cloud 9 medio ambiente.
Y echar un vistazo a cómo realmente es diferente de la IDE CS50.
Así que este es el IDE CS50.
Tenga en cuenta que hay algunos visual cambios entre los regulares Cloud 9
medio ambiente y el IDE CS50.
En concreto, se le notar un par de cambios.
En primer lugar, hay menos elementos de menú para empezar.
En realidad hay un camino que usted puede cambiar eso.
Se llama en modo simple.
>> Por defecto, en modo simple está habilitada y que simplifica algunos de los elementos del menú.
Se elimina algunas de las los más avanzados,
porque, francamente, una gran cantidad de estudiantes que están llegando
y no es necesario saber acerca de algunos de las características más avanzadas
no son abrumados con un montón de opciones.
Pero nos proporcionan la capacidad de tomar fuera de esas llamadas ruedas de entrenamiento
y eliminar ese andamios para que la gente
puede llegar a ser más acostumbrados a las características avanzadas de la IDE.
Inmediatamente a la derecha de eso, no hay
también un botón de depuración, que en la norma de la nube
9 ambiente se llama simplemente correr.
Pero por defecto, hemos configurado el botón de depuración en el CS50 IDE
para abrir el depurador, compilar automáticamente el código fuente,
conecte el depurador a la GDB-- subyacente
y puesto que se está ejecutando para realizar el debugging-- y algunos otros pasos
así como.
También la ventana de terminal en el very-- o más bien el terminal
pestaña en la sección de la consola en el ventana en la parte inferior de la pantalla,
pasó a llamarse simplemente ser terminal.
Mientras que en la norma Cloud 9 medio ambiente,
que en realidad muestra la ejecuta la aplicación.
De esta manera, se simplifica, de nuevo, la interfaz gráfica de usuario, sólo un poco.
>> También hemos añadido algunos botones a la parte superior derecha de la IDE
para mostrar información básica sobre la instancia subyacente.
Y también hemos eliminado un solo de las opciones en los artículos
de la extrema derecha.
Así que todo esto no está implementado modificando necesariamente la Nube 9
código fuente, pero lugar a través de un par
de plug-ins que hemos implementado a lo largo del último año o así.
Y Nube 9 ha sido anfitrión y tiene se ejecuta en el espacio de trabajo CS50.
O más bien, en los espacios de trabajo que se designan como CS50 IDEs.
>> Así que en realidad esa es la principal diferencia entre la Nube 9 y el CS50
espacios de trabajo.
También hay, en el subyacente ejemplo, el cambio principal es
que instalamos alguna artículos preconfigurados como GDB,
y algunas otras cosas básicas que hemos creado, como actualización de 50,
y un par de otros pasos que hacen toda la experiencia un poco más
unificado.
Pero en general, esto es sólo una modificación de un sistema existente
que Cloud 9 ha creado para nosotros.
Lo que vamos a mostrar un poco más tarde
es cómo crear en realidad una plug-in de algo básico que
nos permite insertar algo en el sistema de menús, y abrir un diálogo.
Y si tenemos suficiente tiempo, vamos a realidad
ver cómo podemos poblar que diálogo con un poco de información
desde la instancia subyacente.
Para que podamos llegar a ese punto, vamos primero a hablar un poco
sobre la arquitectura de Cloud 9.
>> Así que la forma en que estamos acostumbrados para interactuar con Cloud 9
es enteramente a través del cliente.
Abrimos un navegador web, escribimos en el CS50.io.
Eventualmente, después de la autenticación, se presentan con el IDE.
Pero se dan cuenta de que hay un par de pasos
que en realidad nos llegar a este punto.
La primera cosa es que mi cliente, el navegador web,
bajo petición y después de la autenticación, carga la GUI y los plug-ins
de algunos CDN, de algunos Red de entrega de contenidos.
Esto puede ser francamente cualquier lugar.
>> Y esto es en realidad separada desde la instancia subyacente.
Es importante darse cuenta de que esto es en realidad sólo un montón de archivos estáticos.
Es un montón de JavaScript que se descarga desde el CDN
a mi navegador web, y toda la interfaz gráfica de usuario que
ver aquí-- esto es realmente key-- toda la interfaz gráfica de usuario que usted ve aquí
se ejecuta en el lado del cliente.
Todo lo que ves en el espacio de trabajo de Cloud 9
en realidad es ejecutar en el navegador.
Y cualquier cosa que usted envía junto a la instancia subyacente
se comunica con la instancia a lo largo de este segundo canal separado,
y se guarda luego en esa instancia ventana acoplable.
>> Así que la razón por la que estoy diciendo esta es una instancia de ventana acoplable
es que la tecnología subyacente no uso de máquinas virtuales,
sino que está utilizando una tecnología llamada ventana acoplable,
que básicamente allows-- el más cercano analogía es una máquina virtual.
Pero es sutilmente diferente en que hay
un montón de oportunidades para ejecutar una combinación de diferente docker
instancias en una sola máquina.
Y pueden ser hilados hasta en la sucesión muy rápida.
No es bastante más estricta diferenciación
entre las diferentes instancias Docker como los hay en las máquinas virtuales,
pero todavía hay una gran cantidad de la diferenciación y la separación
entre estas diferentes instancias.
OKAY.
Así que los dos pasos aquí que son importantes para darse cuenta
es que cuando vamos a CS50.io, somos la descarga de la GUI y los plug-ins,
los cuales están escritos en JavaScript, por al navegador, o en el navegador.
Y esto es tal vez un par megabytes de información.
En ese punto, una vez que la interfaz gráfica de usuario tiene cargados y los plug-ins han comenzado,
entonces comienza a comunicarse con la instancia ventana acoplable, que no lo hace
necesariamente tiene que ser el mismo servidor.
>> Ahora hay una excepción a esto.
De hecho, podemos tener tanto el mecanismo de entrega de la propia interfaz gráfica de usuario
y la instancia ventana acoplable en todas del mismo servidor, que
En realidad, es algo que hacemos para la versión en línea de Cloud 9.
Esto no es algo que hemos publicitado mucho este otoño,
pero nosotros también tenemos una offline versión que
le permite descargar un empaquetado versión de todas estas cosas
y le permitirá ejecutar la nube 9 en un entorno fuera de línea.
>> Mover esto de la nube y en el equipo local tiene algún impacto.
En particular, usted no ya tener la capacidad
a compartir su espacio de trabajo con otros.
Ya no se puede abrir la nube 9 de, y el CS50 IDE, desde cualquier ordenador
y ver los mismos archivos que que estaba trabajando antes.
Pero en lugar funciona del todo en su propia máquina local
sin necesidad de acceso a internet.
Pero aún así, incluso en ese modelo, aunque aunque tenemos una máquina virtual
que es esencialmente ejecutar estas cosas.
>> Tenemos un servidor independiente que es entrega esencialmente el Cloud 9
contenido, y luego tener una instancia de ventana acoplable
que es responsable de la comunicación con ese IDE para el back-end.
OKAY.
Así que toda la interfaz gráfica de usuario está escrito enteramente en JavaScript
utilizando Node.js y la Nube 9 SDK, que vamos a llegar a en un minuto.
Y todos los plug-ins se ejecutan en el cliente.
Así que vamos a centrarnos a continuación, un poco asumiendo
que este primer paso tiene realmente completado con éxito,
y buscar sólo en esta instancia ventana acoplable.
>> Así que en este caso, esta es la forma estándar
de pensar en hacer Cloud 9 plug-in el desarrollo es que se va
estar escribiendo código que hará ejecutarse en el navegador del usuario,
y usted tiene la oportunidad de utilizando algunas APIs para comunicarse
con la instancia ventana acoplable subyacente, ejecutar algún código allá, y hacer cualquier cosa
que es posible que desee hacer.
Así que esto va a ser el contexto en el que vamos a
a utilizar para el resto de esta charla.
Y sólo seguir este modelo en mente.
Esto será muy importante en tan sólo unos minutos.
Hay un par de enlaces quiero mostrarte.
En primer lugar, Nube 9 ha proporcionado un buen montón de documentación
eso es bastante bueno, que muestra cómo para hacer el desarrollo básico de plug-in.
Así que si vas a esta URL, cloud9-sdk.readme.io,
verás la documentación allí.
Y mucha de esta información que estás a punto de ver
También se pueden encontrar allí, y más.
También puede encontrar el código abierto versión de Cloud 9 en esta dirección,
github.com/c9/core, que utilizamos como parte de la versión sin conexión de la IDE,
de modo que usted será capaz de tener la misma experiencia Cloud 9,
pero de una manera fuera de línea.
Correcto.
Así que echemos un vistazo a un real Cloud 9 espacio de trabajo aquí.
Y de nuevo, quiero señalar un par de cosas.
Esto es, aquí, un IDE normales CS50.
Y he inutilizó un menor modo cómodo en el menú Ver
por lo que puedo ver todo de las opciones de menú.
Lo que quiero mostrar a la derecha ahora es un par de cosas.
En primer lugar, si entro en las Preferencias y luego
haga clic en Plug-in Manager, y el tipo de CS50 aquí,
podemos ver que hay, de hecho, un par de CS50 plug-ins que
se instalaron y nuestro funcionamiento a permitir que las modificaciones que hemos
visto desde el IDE CS50.
>> En este momento no hay esencialmente dos plug-ins que se están ejecutando.
Hay una llamada simple, que es el modo simplificado, que
le permite reducir el número de opciones de menú en la parte superior,
y han llamada esta modo menos cómodo.
Y luego está también CS50 Estadísticas, que es tal vez sólo un poco mal llamada.
Porque esto es lo que te muestra la información
sobre el espacio de trabajo subyacente.
Se inyecta estos botones a lo largo de la parte superior derecha.
También se inyecta un elemento de menú en el elemento de la ventana, en el menú Ventana
aquí, CS50 IDE Info.
Y es responsable de crear instancias este diálogo que hemos visto aquí,
con toda la información que estamos acostumbrado a ver en un CS50 IDE
espacio de trabajo.
OKAY.
Así que en realidad uno más plug-in que hemos desarrollado también.
Y hay un par de otros que tampoco hemos lanzado públicamente.
Pero uno de ellos es el general plug-in que permite GDB funcione.
Así que uno de los aspectos de Cloud 9 es que ya han proporcionado
esta interfaz gráfica de usuario para implementar un depurador.
Y uno de los plug-ins que hemos creado básicamente
ganchos GDB con este GUI versión basada de un depurador.
Y es responsable de la mediación de todos de las solicitudes que un usuario podría tener,
entre pasando por encima o la creación de puntos de interrupción o nada
en ese sentido, a la traducción que a los comandos que GDB puede entender,
la emisión de los comandos a GDB.
Y tan pronto como el BGF emite una respuesta, entonces
interpretamos eso y actualizar la interfaz gráfica de usuario según sea necesario.
>> Eso es probablemente una de el más complicado
de los plug-ins, por lo que en lugar de lo que somos voy a centrar en la actualidad es, de hecho,
las estadísticas plug-in, y hablaremos un poco de simple, también.
Así que he mencionado antes, y realmente quiero para hacer muy, muy claro, que una vez más,
todo esto que estamos viendo aquí es esencialmente
que operan en el lado del cliente.
Vemos una ventana de terminal a continuación, y que, por supuesto,
si escribimos en comandos en que, que se emitió
a la instancia subyacente.
Del mismo modo, si abrimos un nuevo archivo y escriba algunas cosas en él y guardarlo,
ese archivo se guardará en la instancia subyacente.
>> Pero el editor de sí mismo, este misma ventana de terminal,
está implementado en todo JavaScript y es todo un plug-in
que podemos interactuar con, y por lo tanto modificar.
Hay una gran cantidad de extensibilidad aquí.
Yo recomiendo tomar un vistazo en la cuenta de Cloud 9 GitHub
para ver la gran cantidad de plug-ins que están disponibles,
y lo bien escrito mucho del código es para extensibilidad.
Así que hay algo que quiero mencionar
sobre esto así, que es que hay un montón de-- hay
una gran cantidad de funcionalidad que es proporcionado en las preferencias
ventana, que hemos visto justo aludido apenas hace unos minutos.
>> Una de las cosas que podemos hacer como IDE desarrolladores, o como Cloud 9 desarrolladores,
es inyectar en realidad algunos paneles de preferencias de los nuestros.
Así que el modo simple, o el modo de menos cómodo,
así como la información de IDE, o las estadísticas de plug-in,
tiene cada cierta preferencia paneles que nos permiten modificar
el comportamiento de cada uno de esos.
Se dará cuenta de que si voy a la Preferencias y vaya a Configuración de usuario,
hay una pestaña CS50, uno que dice la información del IDE.
Y puedo cambiar la información de frecuencia de actualización.
>> En efecto, lo que está pasando en las estadísticas de plug-in
es que cada n segundos, donde n-segundo se define por esta preferencia
panel de información está siendo exagerado desde la instancia subyacente, de ser enviado
de vuelta al lado del cliente, el plug-in es después
interpretar la información desde la instancia subyacente
y la actualización de la interfaz gráfica de usuario según sea necesario.
Podemos ver que en este momento se establece a 30 segundos, y eso es el valor predeterminado.
Pero definitivamente puedo cambiar la rapidez con que esto sucede justo
mediante la modificación de este valor.
>> Ahora una de las cosas interesantes es que este panel de preferencias, interfaz gráfica de usuario,
es en realidad una versión GUI de un montón de ajustes subyacentes
que se presentan en JSON.
Así que si me voy, por ejemplo, bajo la CS50 menú IDE, o el menú de Cloud 9,
dependiendo de qué versión que usted está mirando,
e ir a uno de ellos settings-- en este caso,
el proyecto settings-- la configuración del proyecto en este caso
se aplica a todos los ajustes para éste espacio de trabajo.
Mientras se aplican los ajustes del usuario a todos los espacios de trabajo
que podría tener en su cuenta.
>> Así que como un aparte aquí, para ser más claro,
hay una separación entre el dos, porque a pesar de que por default
dispondrá de un espacio de trabajo, que es el CS50 IDE, si
fueron a hacer clic en su pequeño avatar aquí y vaya al panel de control,
usted encontrará que en realidad se puede crear espacios de trabajo adicionales.
Puede ver aquí que yo tengo un IDE 50 espacio de trabajo, y también
para los propósitos de esta seminario, un espacio de trabajo
llamado espacio de trabajo, que está justo aquí.
Así que de todos modos, no tengo preferencias diferentes.
Cada uno de ellos podría tener preferencias de proyectos separados,
pero las preferencias de los usuarios son compartida entre todos mis espacios de trabajo.
Por cierto, esto es También es muy útil si usted
que desee crear un espacio de trabajo con diferentes opciones de personalización.
Y es muy útil para crear un nuevo espacio de trabajo.
Y elegir uno que podría ser preconfigurado de alguna otra manera,
tal vez por PHP específicamente, o Django específicamente.
O incluso sólo personalizado.
El espacio de trabajo CS50 plantilla es el que nos
uso que se instala de forma automática Actualización 50 y todos los ajustes
que tenemos allí, incluyendo toda la plug-ins que tenemos para el IDE CS50.
OKAY.
Pero volvamos a esto.
Así que de nuevo, hay proyectos ajustes, y esos son los
que estamos viendo aquí.
Y note que hay son un montón de ajustes,
muchos de ellos corresponden a la preferencia paneles, pero no todos ellos.
Pero podemos ver que aquí, en esto-- oh no, me lo puse en la configuración de usuario?
Tal vez lo puse en la configuración del usuario.
Y esto, aquí vamos.
En la configuración del usuario, podemos ver que tenemos una sección CS50,
y esto está siendo escrito que por estos Nube 9 plug-ins
que hemos implementado.
Hay sencillo al corresponden con ese simple plug-in,
y las estadísticas de una que corresponde a la interfaz gráfica de usuario basada
versión del panel de preferencias.
La frecuencia de actualización, en este caso, se establece en 20 segundos.
>> Esto es todo, es de esperar, la comienzos de la información
que realmente vamos a ver en un pequeño poco más de detalle, momentáneamente.
OKAY.
Así que digamos que queremos realmente ponerse a ello.
Entendemos que todas las cosas que está sucediendo en el lado del cliente
se hace realidad en el navegador, que significa que cualquier plug-ins que escribo
van a ser escrita con el navegador en mente.
Y si yo en realidad quiero hacer nada en el espacio de trabajo,
Quizá tendré que iniciar algún tipo de comunicación
entre el navegador y el espacio de trabajo para estar seguro
que lo que se logra en realidad.
Pero digamos que ahora Quiero llegar a fin de cuentas
y de hecho crear mi primer plug-in.
Bueno, la forma en que usted sería capaz de que ver que en realidad es bastante fácil.
Se da en el Cloud 9 SDK.
Pero es tomar su Nombre del espacio de trabajo existente, que
es la dirección URL que usted tiene en la parte superior la barra y añada el siguiente a la misma.
?
Sdk = 1 & Debub = 2.
Ahora lo que esto va a permitir que se que el sdk = 1 será realmente establecer el SDK
el modo en true, lo que permitirá un par de cosas adicionales.
Y debug = 2 permitirá a los mensajes de error a ser un poco más detallado.
>> Y por lo que si usted trae el JavaScript consola en su ficha desarrollador de Chrome,
usted realmente va a ser capaz de ver mucha más información
de lo que sería de otra manera.
Así que te recomiendo girando ambos al mismo tiempo, porque realmente
Es útil tener todo esto Información Adicional.
Es importante señalar, sin embargo, que encender depuración al valor de 2
significa que es muy detallado, y que en realidad
será algo notablemente más lento su IDE, especialmente cuando la carga
o cuando hacer hacer tareas pesadas.
Así que tenlo en cuenta.
Es útil para el desarrollo, pero No puede querer tenerlo todo el tiempo.
>> Así que vamos a realmente hacer eso.
Pero en este caso, en realidad tengo ya crear un espacio de trabajo con esto.
Así que vamos a ver, sdk = 1 & debug = 2.
Con un par de plug-ins esperemos que ya está instalado.
Correcto.
Así que ahora que me he convertido en la depuración SDK modo, notamos que estamos en modo de depuración,
para que podamos ver las herramientas dev para ver cualquier error, que me van a hacer fuera de la pantalla.
Podemos ver que hay un montón de errores aquí.
Ahora es en realidad bastante común para Cloud 9 para tener un par de errores,
y yo no me preocuparía sobre ellos hasta que
ver algo que podría ser específico para el plug-in
que le sucede a la creación.
>> Así que aquí, por ejemplo, obtenemos un par de 404s-- no encontrado.
Vemos podemos cargar algunos información de la instancia subyacente
sí mismo.
Y hay un montón de adicionales información, pero la mayor parte de este que estamos
en realidad va a ignorar por ahora.
Debido a esto es bastante común para un espacio de trabajo
tener sólo un par de errores.
OKAY.
Voy a mover esto de el camino y vuelve aquí.
Y ahora el camino más fácil, el buen Lo bueno de tener este desarrollador
Modo habilitado es que me permite para crear fácilmente un nuevo plug-in.
>> Así que mientras que antes de que en realidad no lo hice tener esta nueva opción plug-in disponible,
que podemos ver si vuelvo a mi modo de no desarrolladores por aquí,
no hay nuevos plug-in.
Al habilitar el modo SDK, yo tener un nuevo plug-in disponible
y puedo crear fácilmente una.
En este caso, hay un par de las diferentes opciones, simple,
un plug-in de vacío, un plug-in completo, instalador, Nube 9 paquete.
Vamos a elegir un plug-in de vacío por ahora
para que podamos ver a un muy versión simple de uno.
>> Ahora cuenta de que a lo largo del del lado izquierdo que es ahora existe
algo debajo de Favoritos, que se lista un par de plug-ins
que ahora están disponibles para mí.
Si amplío que, lo haremos ser capaz de ver esos.
Ahora quiero que noten algo aquí, que
es que esto no se contiene en realidad dentro del directorio de espacio de trabajo
en mi caso Ubuntu subyacente, pero está contenido en el disco duro.
Y donde esta se encuentra, ya que esto es muy útil saber,
especialmente si usted va a estar haciendo nada con Git,
donde esta se encuentra es en una carpeta .c9, / plugins.
Así que si voy allí, podemos ver que ahora la lista de los plug-ins que está aquí
coincide con la lista de los plug-ins que yo vio en el lado izquierdo de mi espacio de trabajo.
>> Ahora por defecto, y esto es un poco extraño,
por defecto cuando se crea un nuevo plug-in en un espacio de trabajo,
crea este plug-in que por por defecto tiene un nombre de un guión bajo.
En general que podría causar algunos problemas.
Así que el paso siguiente que normalmente realizo
se acaba de quitar ese particular, plug-in
y dejar sólo el plug-in simple que estaba allí inicialmente, plugin.simple.
Y eso es el único que está ahí.
OKAY.
>> Entonces, ¿qué tiene esto en realidad parece?
Bueno, esto es, de nuevo, un paquete de JavaScript
que incluye algunos archivos, incluyendo un archivo plugin.js, donde
el contenido principal de mi plug-in se encuentra,
un archivo package.json, que en realidad especifica
algunos metadatos acerca de este plug-in, tales como quién es el autor,
cualquier información adicional al respecto, un Descripción del plug-in, y así sucesivamente.
Y también por defecto, crea un archivo README en blanco,
y un archivo de prueba vacía para que usted crear algún tipo de documentación adicional,
y un arnés de prueba si desea hacer eso.
>> Así que vamos a echar un vistazo por primera vez en, muy rápidamente, en el archivo package.json.
Es bastante fácil ir sólo a través y llenar las áreas de este
que usted desea que rellenar, como proporcionar un nombre, una descripción,
repetir el número de versión cada cierto tiempo, proporcionar
un autor para todos los persona que contribuye,
añadirlos a los contribuyentes sección, y el resto de esto
puede prácticamente sólo dejar como está por ahora.
>> Hay una cosa que es importante tener en cuenta,
que bajo la sección de plug-ins, hay una clave llamada plug-in.
Y esto se hace concordar con el nombre de el archivo de JavaScript llamado plugin.js.
Así que esta es la forma en la nube 9 sabe, cuando se lee este archivo package.json, que
de los js archivos para cargar en realidad.
Si creo archivos js adicionales o quiero cambiar el nombre de ese archivo js del plug-in,
También tengo que cambiarlo en el archivo package.json.
>> Cualquier preguntas de la audiencia?
No.
Que una persona que es siguiendo a lo largo conmigo hasta ahora.
>> OKAY.
Así que en realidad he creado un par de plug-ins ya,
Creo que, en este espacio de trabajo.
Así que vamos a deshacernos de algunos de ellos, agregue sdk = 1 & debug = 2, vuelva a cargar esta área de trabajo,
y vamos a ver si nos tener esos plug-ins ahora.
C9 / plugins.
Aquí vamos.
Podemos ver ahora en mis C9 / plugins de esta uno, tenemos plugin.1 y plugin.2.
Así que vamos a simplemente intensificar el-- simplemente aumentar la cantidad de dificultades
en cada uno de estos plug-ins.
Pero aquí, si puedo crear un nuevo plug-in, Puedo agregar a mis favoritos.
Y sólo voy a borrar los de el sistema de archivos subyacente.
>> Vamos a quitar eso.
Ahora bien, si abro mi primera plug-in, y plugin.js abiertas,
podemos ver aquí el subyacente versión simple de un plug-in.
Permítanme realidad volver a este otro espacio de trabajo
porque se puede, al menos, aquí ver, lo que un plug-in en blanco en realidad se parece.
Así que bajo el capó, esto se ve muy similar a la tecnología llamada,
Creo, es RequireJS.
Tenga en cuenta que esto no lo hace Realmente mira, tal vez,
el mismo que alguna otra JavaScript archivos que podríamos haber visto.
Pero en cambio, hay un par de poco líneas básicas que en realidad tiene.
>> Todas estas cosas es primero interpretado por el IDE,
pero no es en realidad correr hasta que se especifique.
Y te lo contaré cuando esa en realidad significa en un momento.
Pero observe que aquí hay una línea main.consumes en la línea 2,
y esto muestra todos los plug-ins que este plug-in es dependiente.
Así que por defecto, tal vez hacer para no tener cualquier dependencia de otros plug-ins,
pero cuando realmente necesitamos dependerá de las características suministradas
por otros plug-ins en el IDE, tenemos que enumerar esos plug-ins
en la línea de main.consumes.
Y entonces tenemos que vincularlos con el código
a continuación, que te voy a mostrar en tan sólo un momento acerca de cómo podemos hacer eso.
>> Main.provides da una nombrar a este plug-in
que los otros plug-ins podía utilizar en su línea consume.
Así que en este caso, mi plug-in se acaba de establecer que hay por defecto,
y debemos cambiar eso ser aplicable a nuestro propio plug-in,
como veremos en el momento justo.
Ahora aquí en la función principal, esta función principal
en realidad está dirigido e interpretado, pero en realidad no hacen mucho.
Sólo queda todo listo, pero en realidad no iniciar el plug-in,
a pesar de lo que el nombre suena similar.
Que en realidad pasa a través una secuencia de métodos que
están contenidos a través de este plug-in.
>> Así que si me desplazo hacia abajo, podemos ver que tenemos un ciclo de vida en la que
en algún evento llamado de carga, o algún evento llamado de descarga,
algunos eventos ocurran.
Es realmente aquí donde como el plug-in comienza que esos métodos son llamados.
Así que vamos a ser un poco más concreto sobre esto y ver un ejemplo.
Así que aquí para plugin.1, lo estamos básicamente vamos a hacer
es crear un elemento de menú llamada CS50 Seminario Diálogo 1--
porque tenemos dos de ellos-- y vamos
para inyectarlo en el menú Ventana.
Y cuando hacemos clic en él, estamos va a abrir un diálogo que
nos muestra una información muy básica.
>> En este caso, sólo un hola mundo.
Así que este es un muy simple hola diálogo mundo
que podemos poner en práctica como un plug-in en el Cloud 9.
Así que vamos a ver cómo esto se ve en realidad.
Vamos un paso a través de él, al igual con relativa rapidez por lo que
puede ver el siguiente plug-in también.
Nótese que aquí estamos el consumo de una variedad de plug-ins.
Estamos consumiendo un diálogo plug-in, los comandos, los menús y la interfaz de usuario.
Parece que en realidad estoy consumiendo diálogo dos veces, así que puede eliminar eso.
>> Y darse cuenta de que el camino que yo les estoy conectando,
esto es una especie de metadatos que está diciendo el sistema de plug-in lo requisitos
son realmente necesarias para este plug-in para cargar.
También es importante tener en cuenta que el orden en que los plug-ins se cargan
no está garantizada.
Pero lo que está garantizado es que si yo especifique algún plug-in como requisito,
se cargará ese plug-in antes de cargar ésta.
>> Así que eso significa que si su plug-in requiere en alguna funcionalidad proporcionada
por otra cosa en el IDE, que debiera asegúrese de que sus consumos enchufables
ese plug-in para que las dependencias están determinados a crear su plug-in,
o crear instancias de su plug-in, sólo se luego existe ese marco existente.
Así que aquí he mencionado la metadatos para el gestor de plug-in,
cuáles voy a consumir.
Y en la función principal aquí, Voy a continuación, conecte
mi código para esos complementos importados.
>> Así que sólo voy a crear algunas variables que
coincidir con los nombres de cada uno de los que lo que puedo hacer referencia muy rápidamente
lo largo de mi código.
La razón por la que estoy importando el diálogo es porque quiero que mi plug-in
para actuar como un diálogo plug-in.
Y la forma en que soy capaz que hacer es, por supuesto,
conectar mi código para el diálogo plug-in mediante su importación
y luego mediante la especificación por la creación de una nueva variable de diálogo
y la conexión al que el plug-in de importación.
Y a continuación, mediante la definición de mi plug-in como un nuevo diálogo.
>> Así que en la inicialización, I quiero definir mi plug-in.
Y esta variable llamada plug-in verá
es sólo de uso común a lo largo de la nube 9 plug-ins.
Voy a crear una instancia de un nuevo diálogo con algunos atributos,
darle un nombre específico, decir que es posible que los usuarios cierran.
Eso va a mostrar un poco de x en la esquina superior derecha,
o un pequeño botón en el esquina inferior derecha.
Sea o no puedo seleccionar texto desde que, lo que el título de ese diálogo
sería, y así sucesivamente.
Ahora bien, esto solo define el diálogo, pero aún no se demostró.
En realidad tengo que definir un acción para que se muestre.
>> Y de nuevo, os animo a que echar un vistazo a la Nube 9 SDK,
porque hay unos diálogos variedad y están muy bien documentados.
Usted puede ver los diferentes tipos que hay, y los utilizan
en cualquier plug-in que tiene en mente.
Ahora que va a ser un sección de carga y esta carga
función que recuerdas es utilizado por el ciclo de vida de plug-in
para crear una instancia realidad todo y tener todo listo para ir.
Ahora, cuando esta carga de plug-in, que no lo hacen quiere que se muestre inmediatamente un diálogo,
porque este plug-in se cargará junto con el resto de la IDE.
Y cuando me carga que IDE, no quiero el diálogo que aparece automáticamente.
Yo sólo quiero que se muestran cuando hago clic en la opción de menú en mi ventana elemento de menú
que voy a añadir a la misma momentáneamente.
>> Así que hay dos etapas distintas aquí donde tiene que suceder.
Tengo que crear un comando y el comando
será responsable de la realidad que muestra el diálogo sobre el Cloud 9 IDE.
Y luego tengo que conectar, me tiene que crear un nuevo menú de la ventana
artículo, que se ejecuta ese comando.
Así que cuando me haga clic en esa ventana elemento de menú, esta orden es entonces plazo
y por lo tanto se muestra a continuación, mi diálogo.
Y por lo que este es en realidad una muy buena manera de pensar en ello.
>> Porque primero que puedo crear un comando cuyo nombre se CS50 Seminario Diálogo 1,
que proporciona algunas contexto general para ello.
Y el poco importante aquí es notar el atributo EXEC, que
enumera una función que se llama en mi plug-in cuando se ejecuta este comando.
Así que este comando es algo así como A-- es sólo una nube arbitraria 9
comandos que está disponible a cualquier Cloud 9 plug-in.
Pero la función real que es va a llamar cuando se ejecuta este comando
es la función de presentación de diálogo en mi archivo plugin.js.
>> Y en realidad podemos ver estos plug-ins y la lista
de los comandos que están disponibles para nosotros en Preferencias, desplácese hasta el final down--
vamos a ver, en realidad es lo que vemos ahora?
Plug-in Manager, no, creo que yo-- es sin duda por aquí.
Bueno, hay una lista de comandos en alguna parte, pero tengo que tener,
Me he olvidado de donde está.
Así bien, vamos a pasar.
Correcto.
Así que tenemos una lista de comandos que están disponibles para nosotros,
y esos comandos son estos sólo arbitraria Cloud 9
comandos que se ejecutan código específico.
Así que tenlo en cuenta, que vamos a ejecutar el programa de diálogo
funcionar momentáneamente.
Ahora, cuando yo en realidad quiero agregar un menú tema, puedo añadir que el artículo por trayecto,
y acaba de especificar exactamente donde quiero que sea, Ventana Seminario / CS50 Diálogo 1.
Y en ese punto, quiero para crear un nuevo elemento que
se va a ejecutar un comando, CS50 Seminario Diálogo 1.
Tenga en cuenta que una vez más, esta es la Nube 9 de comandos que he creado justo encima.
>> Ahora también quiero crear un pequeño divisor,
y por lo que puedo hacer lo mismo en la línea siguiente.
Ahora usted puede notar que a medida parte de la definición de este elemento de menú,
hay un número asociado con él que
en realidad dice dónde exactamente Quiero ese elemento de menú esté
situado en la lista de menús.
Pero es posible que note que yo no sé en realidad
ver los números con estos menús, de forma predeterminada.
Así que hay una pequeña cosa oculta que que podemos hacer, un pequeño cambio en nuestro URL.
Así que además de SDK = 1 & debug = 2, Voy a poner menú para 1--
y es de esperar su menú, no menús.
Oh, es menús = 1.
Espere.
>> Y lo que veremos en la recarga que IDE es que todavía estoy en modo de depuración,
pero ahora hay un número asociado con todos los menús.
Y esto te dice exactamente lo que el número de
es cuando usted está tratando de inyectar algo en cualquier parte de este sistema de menús.
Así que en el menú Ventana, que pueda ver ese artículo 45 es colaborar,
y el artículo 38 antes de que sea instalador.
Así que cuando quiero inyectar un elemento entre los dos,
Me gustaría simplemente seleccionar un número entre esos dos elementos.
Así que he seleccionado 41 e inserté mi Seminario Diálogo artículo 1 menú en ese lugar.
>> Y es por eso que este número que aparece aquí es el número 41.
Esa es la ubicación de ese elemento de menú en el menú de Cloud 9.
Ahora mismo modo, yo quería para crear un divisor
y añade que para que haya un buen división entre cada uno de estos menú
artículos.
Así que he añadido que en el lugar 43.
Hasta ahora, todo va bien, espero?
Así que ahora vamos a ver en realidad el código específico en el diálogo espectáculo
eso es realmente responsable para la apertura de esta ventana de diálogo.
>> Desplazamiento hacia abajo, veo que quiero tener este diálogo función de presentación,
y es extremadamente simple.
Voy a dirigir el espectáculo método en la variable de plug-in.
Y recordemos que hemos definido este plug-in de la variable anterior como un diálogo.
Así barra de plug-in, en este caso, ¿es esto objeto que hemos definido internamente.
Y va a ser un nuevo diálogo contenida dentro de este plug-in.
Y así que en realidad REFERENCIA Esta plug-in de variable en muchos lugares
en un típico 9 Nube entorno de desarrollo.
>> Veremos aquí.
Tenga en cuenta que a medida que desplazarse hacia abajo, hay ciclos de vida adicionales.
Así notar que estos responden a los eventos que se disparan
por este objeto, este objeto diálogo.
Por defecto, no hay carga y descarga, que
están a disposición de todos Nube 9 plug-ins.
Pero en el caso de este diálogo, no hay
otro evento que pueda fuego, así llamado
Dibuja, que se dispara cuando esa está a punto de ser dibujado en pantalla,
en primera instancia del diálogo que muestra.
>> Por eso, cuando en realidad es va a ser mostrado,
no va a nos proporcione algo de HTML.
Y utilizando sólo estándar Prácticas HTML podemos
inyectar algo de información muy simple, nuestro mundo hola, en ese diálogo.
Así que si a continuación, desplácese hacia arriba, podemos ver a continuación, la procesión de las cosas
que está ocurriendo.
Primero creamos un comando Cloud 9 que cuando son ejecutadas por Cloud 9,
se va a despedir a esta función.
Se va a ejecutar esta función Llamé espectáculo diálogo, que tengo
escrito en mi código.
>> He creado un elemento de menú y unido a él mismo comando que
que cuando ese ítem se hace clic en el menú, que manda entonces se ejecuta
y que la función se ejecuta entonces.
Y dentro de la función que soy sólo va a llamar el-- estoy
sólo va a ejecutar el programa método de este plug-in, que
va a la primera llamada el método de sorteo, y yendo
para disparar este método abajo, el dibujar controlador de eventos, en nuestro ciclo de vida.
Y entonces se hará realidad mostrar el diálogo.
>> También hay un método de ocultar, de manera que si necesito la oportunidad de ocultar
mi diálogo, puedo hacer lo mismo.
Así que eso es prácticamente todo para conseguir todo esto funcione.
Note que es si desplácese hacia abajo además hay una API pública congelación.
Esto básicamente se limita a decir que yo quieren estos métodos a eficacia
ser público, pero no overwriteable fuera del contexto de este plug-in.
Y a continuación, en la parte inferior, es tal vez el último que
que realmente necesitamos para pagar mucha atención a aquí, lo cual
es que vamos a registrar nuestra plug-in con el nombre C9 Seminario 1,
y el objeto de plug-in.
>> Que como usted recordará, es que plug-in que el plug-in
objeto que hemos estado definiendo largo de la totalidad de esta fuente
código.
Y C9 Seminario 1 es el cadena que prometimos
para proporcionar en la parte superior de esta definición.
OKAY.
Así que vamos a la rampa hacia arriba un poco y ver si podemos hacer algo
un poco más interesante.
Ahora bien, esto sólo es tan grande.
Quiero decir, esto es, en realidad es bastante fresco que en tan pocas líneas de código,
podemos modificar el IDE existente y añadir un elemento de menú existente
o añadir un nuevo elemento de menú, añadir un comando, y mostrar un diálogo,
y sólo un montón de funcionalidad que existe.
Es realmente muy grande.
>> Pero no hace mucho, ya que no puede comunicarse con el Ubuntu subyacente
ejemplo.
Así que digamos que yo realmente quiere saber
alguna información sobre la subyace ejemplo Ubuntu,
como plug-in de las estadísticas hace.
Así que echemos un vistazo a una poco más de información
acerca de cómo las estadísticas de plug-in de obras.
Y de hecho, es muy similar a este.
Usted puede recordar que hay un diálogo.
Usted puede recordar que hay alguna información que es
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
conseguir un sabor de cómo implementamos esto,
simplemente mediante la inserción de elementos de menú en específico puntos y creando instancias de un diálogo
y mostrar que el diálogo.
>> Pero todavía no hemos demostrado que la forma en que puede conectarlo
a un comando en el ejemplo Ubuntu subyacente.
Así que vamos a echar un vistazo a continuación, en plugin.2, que hace precisamente esto.
Vamos a abrir plugin.js, que es el código para esto.
Pero bajo el menú Ventana, si hago clic en diálogo 2,
podemos ver que dice esto en cambio, hola CS50, que
no se ve todo lo que atractiva, ¿no?
Excepto, mira esto.
Déjame cambiar algo aquí abajo.
>> Voy a ir a mi espacio de trabajo y el cambio seminario
decir algo más, como Hola, Dan.
Voy a cerrar y guardarlo.
Y ahora me voy a volver a ejecutar mi elemento de menú diálogo.
Y note que tiene ahora ha cambiado lo que dice.
Hola, Dan.
Parece que he hecho algo abajo aquí en la instancia Ubuntu subyacente
sin haber manipulado cualquier código que se está ejecutando de nuevo únicamente
en el lado del cliente.
Así que obviamente hay una especie de comunicación que está pasando aquí.
>> Ahora aquí es donde una gran parte del poder del Cloud 9 SDK viene en,
es que en este plugin.2, en realidad podemos hacer
una llamada a suceder a la instancia subyacente,
y ejecutar alguna orden arbitrario.
Así que en este caso, tengo en realidad creado una muy simple script bash
en mi espacio de trabajo denominado Seminario.
Así que permítanme abrir eso.
Y podemos ver que se parece a esto.
Es sólo una simple fiesta guión cuyo único propósito en la vida
va a ser un eco cabo este texto, Hola, Dan.
O antes, dijo Hola, CS50.
Y eso es todo lo que va a hacer.
>> Debido a que este es ahora un comando que puedo correr.
De hecho, me puedo ejecutarlo aquí.
Podemos ver que en realidad es sólo un comando que corro naturalmente.
Puedo pedir a mi plug-in para ejecutar este comando en el espacio de trabajo subyacente
y analizar la información que fue devuelto de la misma,
y hacer algo con él, y modificar mi plug-in y el comportamiento que yo
tener en mi plug-in como resultado. OKAY.
Así que vamos a ver cómo sucede esto.
Lo vimos muy simple Seminario de escritura de la hornada que yo
[Inaudible] que en realidad puede funcionar.
>> Y ahora vamos a ver las modificaciones que son necesarios para atar esto juntos
con la ventana de diálogo, y ejecutarlo.
Así que aquí vamos a hacer casi lo mismo como vimos antes.
Pero nótese que entre los cosas que me ha consumido ahora--
Además del diálogo, que otra vez se me ocurre lo han hecho dos veces,
que no se fuere preciso además al diálogo y los comandos
y los menús de plug-ins, que eran necesaria en el primero para mí
para definir un nuevo comando y inyectar un elemento en los menús,
También tengo este proc plug-in.
>> Y este proc plug-in permite nosotros manipulamos procesos
en la instancia subyacente.
He conectado después tengo dijo que mi plug-in requiere.
Entonces me he conectado a código, como vimos en la función principal.
Una vez más, me voy a inicializar mi diálogo.
Y si nos movemos hacia abajo ahora, puede ver cómo esto es diferente.
La función de carga es la misma, por lo que que sólo va a crear un comando
y crear un elemento de menú y conecte ese elemento de menú a ese comando.
Pero si ahora desplazamos hacia abajo para mostrar el diálogo,
podemos empezar a ver dónde surgen las diferencias.
>> Tenemos función de presentación de diálogo, que sólo va a mostrar el diálogo.
Pero cuando me muestro este diálogo, y cuando se llama al método de demostración,
se dispara la función draw.
Y yo voy a continuación, especifique algunos contenidos dentro de eso.
Así que sólo voy a crear un div, proporcionar a la misma
un texto básico, Hola, mundo.
Pero noto que aquí estoy va a adjuntar a la misma un ID.
Y la siguiente línea voy para encontrar esa identificación utilizando JavaScript,
y almacenar dicho objeto en otra variable
que yo sólo voy a llamar a contenido.
>> Así que ahora cada vez que tengo contenido, todo lo que tiene que hacer
se acaba de modificar HTML interno de este objeto.
Y el HTML diálogo hará a continuación, ser modificado también.
Así que cuando este plug-in es a continuación, se muestra, lo cual puede suceder
y esto es un nuevo evento que es nuevo en este plug-in,
pero que sucede en todos los plug-in con el diálogo, cuando este se muestra ahora,
Voy a llamar a un función llamada traiga información.
Y esta función es la carne de aquí.
Voy a utilizar ese plug-in que proc hemos descrito antes, que por cierto,
es en realidad una biblioteca Node.js que Cloud 9 está utilizando aquí.
>> Así que en realidad se puede consultar acerca de cómo esto
funciona si usted entra en la Documentación Node.js
y buscar el archivo exec método para procesos de allí.
Voy a ejecutar esta específica comando, hogar Ubuntu espacio de trabajo
seminario, que es la misma, que mismo comando que he creado antes.
Proporcionar a ella una corriente directorio de trabajo, justo
para estar seguro de ultra en términos de la contexto de donde este se está ejecutando.
Y una vez que ha sido completado y devuelto,
Voy a ejecutar este función llamada de salida de análisis.
OKAY.
Así que esto, entonces se va a ejecutar un comando en el local o lugar
la instancia Ubuntu remoto.
Cuando yo vuelva algunos información, yo estoy a continuación
va a llamar a una función separada llamada de análisis sintáctico de salida, que
esta firma tiene aquí, err, stdout, stderr,
y realizar algún cálculo en esto.
Así que si he recibido un error de algún tipo en absoluto,
De hecho, me voy a comprobar para ver si error de hecho tiene algunos datos.
Y si es así, entonces voy a modificar el interior HTML de ese objeto contenido, que
es usted recuerda, nos conectado al diálogo
en el instantiattion de ese diálogo, o en el primer dibujo
de ese diálogo.
Voy a decir simplemente que algún error ha ocurrido.
>> Ahora bien, esto es demasiado simplista.
El valor de error normalmente contener algo que fuera útil,
tal vez un número de error y un error de la escritura de sí mismo.
O si el guión escribió algo que el error estándar,
que los datos se rellena en ese parámetro también.
Y podría ser un poco más cuidado con lo de error
En realidad estoy mostrando a la gente.
Pero este ejemplo simplista es suficiente por ahora
por lo menos a ver cómo todas estas funciones.
De lo contrario, si hay ningún error, entonces yo sólo soy
va a proporcionar la materia prima de salida de esa función
en el código HTML interno de este contenido elemento y, a continuación, actualizar mi plug-in
y mostrar aquí.
Y eso es prácticamente todo lo que es necesaria para conseguir que esto se ejecute.
Y así vamos a pensar entonces cómo esto funciona, en general.
La primera vez que cargué este plug-in, al igual que el primer plug-in,
Voy a añadir un comando que es disponible a cualquier cosa, a cualquier plug-in
en Cloud 9, denominado Seminario CS50 Diálogo 2, cuya responsabilidad
será la de ejecutar este programa el diálogo, que es usted recuerda,
en realidad mostrar el diálogo que solicité a continuación.
>> Entonces voy a añadir que comando en un menú de la ventana
por lo que no tengo acceso a eso.
Y cuando ese diálogo se solicita que se muestra,
Traeré algo de información de la instancia Ubuntu subyacente
utilizando el comando archivo exec.
Disculpe me.
Una vez que se devuelve y me reciben algún información, a continuación, en el lado del cliente
de nuevo, voy a ser capaz de analizar la salida de ese comando
y actualizar el interior HTML de los elementos
que habíamos conectado al anterior.
>> Y con eso, entonces tenemos esta en pleno funcionamiento plug-in
que me permite capturar información desde este script arbitrario
que hemos creado en nuestro ejemplo subyacente.
Pero, de nuevo, es realmente importante y realmente clave
para separar el que cada de estas cosas que está sucediendo,
que tenemos todo esto en el cliente código que se está ejecutando en el navegador,
y todavía no tienen acceso al sistema de archivos subyacente
hasta que realmente corremos algunos de ellos comandos que son proporcionados por la Nube
9 SDK como proc, y algunos otros que nos permiten leer algunos datos,
o leer algunos archivos si necesitamos a hacer cualquier cosa por el estilo.
>> Ahora bien, este es un ejemplo algo simple.
Hay otras cosas que sería tal vez desee hacer así.
Por ejemplo, tal vez en realidad quiere ahorrar algo de información
a las preferencias.
O tal vez queremos agregar un nuevo panel de preferencias
O algo por el estilo.
Entonces eso es algo que puede echar un vistazo a la Nube 9 SDK
para obtener más información sobre.
Pero esto realmente es lo suficiente para empezar.
Así que para ser un poco más concreto sobre la forma en que algunas de estas cosas
función, yo quería demostrarle un ejemplo más, que es sólo algunas
del código de la Estadísticas 50 plug-in.
>> Y este código es básicamente sobre la base de estos ejemplos
que has visto, pero tiene algunos más garantías
y tiene un poco más de complejidad a fin para lograr algunas de las cosas adicionales
que queremos lograr.
Por ejemplo, si quiero ser capaz de salvar a algunos ajustes,
entonces tengo que tener acceso a la configuración de plug-in,
y cada vez que quiero leer algunos ajustes,
Puedo, por ejemplo, conectar a varios eventos en la configuración de plug-in.
Así que cada vez que la configuración es de color rojo, por ejemplo, en mi propio plug-in,
si yo voy a leer algunos configuración del almacenamiento guardado
preferencias del usuario, entonces puedo establecer los valores predeterminados para un lugar específico,
para la preferencia específica, en ese Archivo de opciones de estilo JSON que hemos
salvos antes, que hemos visto antes.
>> Y si voy a escribir algunos ajustes a la misma,
entonces yo can-- o tan pronto como detectamos que los ajustes se han escrito
a-- porque, por ejemplo, aquellos ajustes han sido modificados por el usuario
ya sea directamente en sus entornos archivo o el panel de preferencias
ha cambiado la configuración presentar directamente,
De hecho, me puedo actualizar una parte del código o actualizar el comportamiento de mi plug-in
sobre la base de esos cambios que tienen ocurrido en el archivo de configuración también.
Pero en realidad, el resto es bastante mucho esto que ya has visto.
>> Añadimos un poco, tal vez algo que es nuevo.
Así que añadimos un archivo de preferencias, o más bien un panel de preferencias,
a la ventana de preferencias, que de nuevo usted puede encontrar más información
en la Nube 9 SDK me leyó.
Pero todo lo demás es bastante, bastante
similar a lo que vimos antes, sólo con un poco de comprobación de errores adicional
y algunas protecciones adicionales y alguna funcionalidad adicional
que cuentan con todos los diversos las cosas que hemos visto.
Si usted no tiene en realidad visto todavía, es posible que
estar preguntándose qué el subyacente comando está en la ventana de estadísticas 50.
En realidad es la función.
Bueno, es-- oh, maldita sea.
Un segundo.
Espere.
OKAY.
Vamos a mover esto para que podamos realmente ver qué pasa cuando escribo Estadísticas 50.
Nótese que en este caso, el comando que estoy fuera poniendo
es realmente nuevo, sólo el guión que es ir a la salida de un montón de información
en formato JSON.
Y la razón por la que lo hacemos de esta manera es que debido a que
están operando, ya que hemos escrito el código del lado del cliente en JavaScript,
que puede muy fácilmente sólo analizar objetos JavaScript,
y realmente ser capaz de manipular esos objetos al igual que lo haríamos
cualquier otro objeto JavaScript.
>> Y por lo que este es un muy conveniente manera de proporcionar alguna información
desde la instancia Ubuntu subyacente, tales como el número de versión, el anfitrión
nombre, si un servidor está escuchando, lo que el servidor es, así sucesivamente y así sucesivamente,
y analizar esa misma fácilmente y muy rápidamente
en el plug-in que se va a continuación para mostrarnos toda esa información.
Así que de nuevo, la idea clave para tener en cuenta
es esta separación entre la instancia subyacente,
y también donde se carga el código.
Que cuando tengo un cliente, es la primera carga.
Sólo este archivo JavaScript estática de en algún lugar, tal vez CDN de algún tipo.
Nosotros realmente no tenemos que cuidar demasiado por este primer paso.
>> Sólo sabemos que se trata de que se ejecuta en el lado del cliente
y ahí es cuando me voy a comunicarse con esta instancia ventana acoplable.
Que vamos a hacerlo a través de la nube 9 SDK.
En realidad no tenemos la capacidad, utilizando JavaScript o Node.js,
a escribir directamente a ella.
Nos limitamos a usar los SDK existente APIs para hacer que la acción para nosotros.
Y de nuevo, una de las las cosas realmente importantes
es que cuando he creado esto, cuando he creado este plug-in,
y como yo estoy trabajando en ello, uno de las cosas importantes que hacer
es abrir la consola JavaScript.
>> Debido a que ya que este es todo que operan en el código JavaScript,
en el lado del cliente, si uso un console.log method-- por lo que sólo
para mostrar un ejemplo aquí.
Vamos a tratar de modificar este sencillo plug-in para también registrar algunos datos.
Y vamos a añadir a cabo estándar.
Así que vamos a cambiar que para ser justo aquí.
Ahora cuando ejecuto console.log, tenga en cuenta
que desde esta se está ejecutando en el lado del cliente,
Voy a ver esto en mi propia JavaScript consola, que
es como voy a continuación, podrá tratar de solucionar y depurar
algunos de los problemas que tengo.
>> Nótese que debido Estoy en modo SDK, estoy
a continuación, capaz de manipular plug-ins en esta instancia.
Así que, aunque es guardado en este caso,
este es el ejemplo de que el anterior regla se viola, en el que el Cloud 9
SDK realmente tirar de plug-ins de la subyace instancia y luego ejecutarlos.
Así que de esta manera, estoy a continuación capaz de manipular y construir
algunos plug-ins aquí.
Pero para mí ver cambios de este plug-in,
porque está en el lado del cliente, Tengo que guardar ese plug-in
y vuelva a cargar todo el espacio de trabajo, para que el nuevo plug-in es después
descargado en mi cliente, en mi navegador web, y luego se está utilizando.
>> Así que ahora cuando hago clic en este Seminario Diálogo 2, todavía vemos esto.
Pero ahora espero en mi JavaScript el diálogo, que lo creamos mi-- esperar,
Espere.
Voy a tener que abrir el nuevo diálogo.
Debemos ver mis datos recibidos aquí.
Los datos recibidos, hola, Dan, que es usted recuerda,
fue una operación que console.log que habíamos solicitado en el plug-in.
Así que esta descripción a continuación, que he mencionado antes,
este diálogo, o esta diagrama más bien, que yo
mencionado antes es lo que sucede.
Pero hay una importante excepción sólo para el desarrollo,
y es que el plug-in sí podría en realidad
ser almacenados en la instancia ventana acoplable temporalmente, ya que presumiblemente Cloud 9
no queremos que seamos capaces de manipular objetos en su CDN.
>> Y la nube 9 clientes, durante la carga, encontrarán los plug-ins en eso.
C9 plug-in de carpeta y cargar esos.
Pero los que todavía están sucediendo sólo en el lado del cliente.
Así que esto es sólo el de un excepción de que se produce sólo
para el desarrollo de la nube 9 plug-ins.
Pero el resto de la tiempo-- y la razón
que queremos de verdad martillar esta casa-
es porque la mayoría de las veces esto es va a estar corriendo de la CDN,
y sólo va a ser ejecutado exclusivamente desde el lado del cliente.
>> Normalmente no habrá interacción con el plug-in,
o hay ni siquiera tienen que ser cualquier razón por la que el plug-ins a sí mismos
realmente están almacenados en el subyace ejemplo estibador,
excepto en el caso de este desarrollo SDK.
Así que de nuevo, esto cambia simplemente ligeramente por el hecho de
que se nos está acabando el modo SDK.
Va a continuación, cargar los plug-ins de desarrollo,
y el único propósito aquí es para que Puedo usar Cloud 9 para hacer el desarrollo
Cloud 9 plugins.
Pero aún así, esto no cambia una vez más cómo funciona todo esto.
Todavía está siendo ejecutado enteramente en el lado del cliente.
>> Sólo significa que cada vez que quiero crear Nube 9 plug-ins en el Cloud 9,
Puedo crear esos plug-ins, ponerlos en mi.
C9 carpeta / plugins en mi casa directorio, asegúrese de que esté en modo de SDK,
recargar la página cada vez que en realidad realizar cambios en ese plug-in,
y ver lo que sucede en mi consola JavaScript.
Sólo manejar mi JavaScript consolar para asegurarse
que cualquier solución de problemas información que pongo a la consola,
o cualquier otra cosa que pueda ocurrir debido a los errores que he escrito
en mi código o similar, aparece allí.
>> Y con eso, es realmente lo suficiente para empezar, creo,
Con la nube 9 plug-ins.
Sobre todo teniendo una mirada en el SDK documentación que Cloud 9 ofrece.
Es una gran manera de conseguir comenzado, y con mucha facilidad
crear algunos plug-ins para Cloud 9.
Y con eso, quiero dar las gracias a todos ustedes por acompañarme.
Espero que te diviertas escribir plug-ins para Cloud 9.
Mejorar Quizás plug-ins que tenemos ahora, o tal vez incluso
añadiendo algunas funciones de su cuenta.
Esperamos con ansia ver qué es lo que usted cree.
Hasta entonces, adiós.