>> DAN Armendáriz: Ola, e benvido a un seminario sobre a personalización CS50 Cloud 9,
eo IDE CS50.
Entón, hoxe nós estamos indo a só falar un pouco
sobre algúns dos información técnica que
vai detrás da arquitectura de Cloud 9, e como
temos implantado algúns dos plugins como parte Cloud 9 para proporcionar CS50 IDE.
Entón imos ir á dereita e comezar a falar sobre os plugins.
>> Así, os plugins son realmente no núcleo da experiencia Cloud 9.
Cloud 9 é a tecnoloxía subxacente que ofrece-nos o IDE
e tamén o terminal na fiestra parte inferior, xunto co workspace--
Ubuntu que workspace-- usar para compilar todos os nosos proxectos
e realizar os nosos conxuntos de problemas, completar os nosos conxuntos de problemas.
Pero no corazón de todo diso, toda a tecnoloxía
é realmente só unha morea de plugins.
Todo é un plug-in que pode ser modificado,
estendido, pode crear seus propios plugins,
pode eliminar outro plugins, para realmente cambiar
unha morea de funcionalidade do Cloud 9 IDE existente.
>> Polo tanto, este é un existente Cloud 9 ambiente.
Isto é realmente só o default Cloud 9 ambiente.
E dar un ollo a como realmente é diferente do IDE CS50.
Entón que é o IDE CS50.
Teña en conta que hai algúns visuais cambios entre a Nube regulares 9
ambiente e do IDE CS50.
En concreto, vai notar algúns cambios.
En primeiro lugar, hai menos elementos de menú para comezar.
Hai realmente un xeito que pode cambiar iso.
Chámase así simple.
>> Por defecto, o modo sinxelo é activado, e que simplifica algúns dos elementos do menú.
El elimina algunhas das os máis avanzados,
porque, francamente, unha morea de estudantes que están chegando
e non ten que saber sobre algúns dos recursos máis avanzados
non están sobrecarregados con unha morea de opcións.
Pero nós fornecen a capacidade de asumir fóra os chamados rodinhas
e eliminar ese estadas para que a xente
pode chegar a ser máis afeitos os recursos avanzados do IDE.
Inmediatamente ao dereito de que, hai
tamén un botón de depuración, o que na nube estándar
9 ambiente é simplemente chamado de execución.
Pero por defecto, nós configuran o botón de depuración no IDE CS50
para abrir o depurador, compilar automaticamente o código fonte,
conectar o depurador ao GDB-- subxacente
e unha vez que está en execución para realizar o debugging-- e algúns outros pasos
ben.
Ademais, a fiestra de terminal no very-- ou mellor, o terminal
guía na sección de consola no ventá na parte inferior da pantalla,
foi renomeado para simplemente ser terminal.
Tendo en conta que, no estándar Cloud 9 ambiente,
mostra que realmente o execución do programa.
Deste xeito, simplifica, de novo, o GUI, só un pouco.
>> Tamén engadimos algúns botóns na parte superior dereita do IDE
para mostrar unha información básica sobre a instancia subxacente.
E tamén nós eliminamos un das opcións sobre os elementos
da extrema dereita.
Entón, todo isto non é aplicado modificando necesariamente o Cloud 9
código fonte, pero en vez a través dun par
de plugins que Implementar ao longo do ano pasado ou así.
E Cloud 9 ten acollido e en execución no escritorio CS50.
Ou mellor, nos espazos de traballo que son designados como CS50 Ides.
>> Entón, realmente esta é a principal diferenza entre o Cloud 9 eo CS50
espazos de traballo.
Hai tamén, no subxacente exemplo, a principal modificación é
que instalar algún elementos pre-configurados como GDB,
e algunhas outras cousas básicas que creamos, como actualización de 50,
e un par de outras medidas que fan toda a experiencia un pouco máis
unificado.
Pero en xeral, este é só un modificación dun sistema existente
Cloud 9 que creou para nós.
O que nós estamos indo a amosar un pouco máis tarde
é a forma de realmente crear unha plugin algo básicos que
permítenos introducir algo na sistema de menús, e abrir un diálogo.
E se temos o suficiente vez, imos realmente
ver como podemos cubrir ese diálogo con información
do exemplo subxacente.
Para que nós para chegar a ese punto, imos primeiro falar un pouco
sobre a arquitectura de Cloud 9.
>> Así, o xeito que estamos afeitos para interactuar con Cloud 9
é enteiramente a través do cliente.
Nós abrimos un navegador web, digitamos no CS50.io.
Nós finalmente, tras a identificación, preséntanse co IDE.
Pero entender que hai un par de pasos
que realmente levar a este punto.
O primeiro é que meu cliente, o navegador web,
mediante solicitude e despois da identificación, leva o GUI e os plugins
dalgúns CDN, dalgún Content Delivery Network.
Isto pode ser verdade en calquera lugar.
>> E iso é realmente separado do exemplo subxacente.
É importante entender que este é en realidade, só unha morea de arquivos estáticos.
É unha chea de JavaScript que é descargado do CDN
no meu navegador web, e toda a GUI que
aqui-- ver iso é realmente key-- toda a GUI que ve aquí
execútase no lado do cliente.
Todo o que ve no Cloud 9 espazo de traballo
é realmente executada no navegador.
E todo o que envía xunto á instancia subxacente
é comunicada á instancia ao longo desta segunda canle separado,
e é entón gardada en esa instancia estivador.
>> Polo tanto, a razón que eu estou dicindo este é un exemplo estivador
é que a tecnoloxía subxacente non está a usar máquinas virtuais,
pero en vez diso utiliza unha tecnoloxía chamada xanela de encaixe,
que basicamente allows-- o máis próximo analoxía é unha máquina virtual.
Pero é sutilmente diferente en que hai
moitas oportunidades para realizar un combinación de diálogo de encaixe diferente
instancias nunha única máquina.
E pode ser xirado cara arriba en sucesión moi rápida.
Non é exactamente a máis diferenciación estrita
entre diferentes instancias Dock como hai en máquinas virtuais,
pero aínda hai unha morea de diferenciación e separación
entre estes diferentes casos.
Aceptar.
Así, os dous pasos aquí que son importantes para entender
é que cando imos para CS50.io, estamos descargar o GUI e os plugins,
que están escritos en JavaScript, en para o navegador ou o navegador.
E este é quizais un par megabytes de información.
Nese punto, xa que ten a GUI cargado e os plugins xa comezaron,
a continuación, el comeza a comunicarse con a instancia xanela de encaixe, o que non fai
teñen necesariamente que ser o mesmo servidor.
>> Agora hai unha excepción a isto.
Podemos realmente ter tanto o mecanismo de entrega para o propio GUI
ea instancia estivador en todos o mesmo servidor, a cal
é realmente algo que nós facemos para a versión offline do Cloud 9.
Isto non é algo que temos divulgado moi esta caída,
pero tamén teñen unha versión offline que
permite que baixo un embalado versión de todas esas cousas
e permiten que executa Nube 9 nun ambiente fóra de liña.
>> Movendo esta fóra da nube e para súa máquina local ten algún impacto.
En particular, non xa non teñen a capacidade
para compartir o seu espazo de traballo con outras persoas.
Non pode abrir Cloud 9 de, e CS50 o IDE, desde calquera ordenador
e visualizalos arquivos que estaba a traballar antes.
Pero en vez diso funciona totalmente na súa propia máquina local
sen necesidade de conexión a internet.
Pero, aínda así, mesmo nese modelo, aínda aínda que unha máquina virtual
que é esencialmente executando estas cousas.
>> Temos un servidor separado que é entregando esencialmente o Cloud 9
contido, e entón nós teño unha instancia estivador
que é responsable da comunicación que IDE para o back-end.
Aceptar.
Entón, todo o GUI está escrito enteiramente en JavaScript
usando Node.js eo Cloud 9 SDK, que nós imos chegar a en só un minuto.
E todo plugins son executados no lado do cliente.
Entón, imos concentrar a continuación, un pouco asumindo
que este primeiro paso ten realmente rematada con éxito,
e mirar só para esa instancia estivador.
>> Polo tanto, neste caso, este é a forma estándar
de pensar en facer Cloud 9 plugin desenvolvemento é que está indo
para ser código escrito, que será executar no navegador do usuario,
e ten a oportunidade de usando algúns APIs para comunicarse
coa instancia estivador subxacente, realizar algún código alí, e facer algo
que pode querer facer.
Polo tanto, esta será o contexto que imos
estar a usar para o resto da conversa.
E basta manter este modelo en mente.
Isto ser moi importante en só uns minutos.
Hai un par de ligazóns que quero te amosar.
En primeiro lugar, Nube 9 proporcionou unha morea de documentación
iso é moi bo, que mostra como facer plugin de desenvolvemento básico.
Entón, se vai para este URL, cloud9-sdk.readme.io,
podes ver a documentación alí.
E unha morea de esta información que está a piques de ver
tamén se pode acceder alí, ademais de máis.
Tamén pode atopar o código fonte aberto versión do Cloud 9 neste URL,
github.com/c9/core, que usan como parte da versión offline do IDE,
de xeito que será capaz de ter a mesma experiencia Cloud 9,
pero dun modo fóra de liña.
Todo ben.
Entón, imos dar un ollo a un real Cloud 9 espazo de traballo aquí.
E de novo, quero apuntar un par de cousas.
Esta é, aquí, unha IDE CS50 normal.
E eu desactivado salvo modo cómodo baixo o menú Ver
para que eu poida ver todo das opcións do menú.
O que quero amosar-lle dereito agora é un par de cousas.
En primeiro lugar, se eu entrar Preferencias e, a continuación,
prema en Plug-in xerente, e escriba CS50 aquí,
vemos que hai, de feito, un par de CS50 plugins que
Instaláronse e nosa carreira para permitir que as modificacións que temos
visto para o IDE CS50.
>> Agora hai, esencialmente, dous plugins que están en execución.
Hai un chamado simple, que é o de que xeito simplificado
permite reducir o número de opcións de menú na parte superior,
e ter esa chamada modo menos cómodo.
E despois hai tamén Stats CS50, que é quizais un pouco misnamed.
Porque iso é o que móstralle a información
sobre o espazo de traballo subxacente.
Introduce estes botóns na parte superior dereita.
Tamén inxecta un elemento de menú para o elemento de fiestra, no menú Ventá
aquí, CS50 IDE Info.
E é responsable de instanciar este diálogo que vimos aquí,
con todo o que somos afeitos ver nun CS50 IDE
espazo de traballo.
Aceptar.
Polo tanto, hai, en realidade, máis un plugin que desenvolvemos ben.
E hai un par de outros que nós tamén non divulgou publicamente.
Pero un deles é o global plugin que permite que o GDB para funcionar.
Así, un dos aspectos da Cloud 9 é que teñen xa previsto
este GUI para aplicar un depurador.
E un dos plugins que creamos basicamente
garras GDB con este GUI versión en base dun depurador.
E é responsable de mediar todo das solicitudes que un usuario pode ter,
entre pasando por riba ou a creación de puntos de interrupción ou nada
nese sentido, para que traducindo para ordes que GDB pode entender,
emitindo os comandos para GDB.
E logo que GDB emite unha resposta, entón
nós interpretamos iso e actualizar o GUI polo que sexa.
>> Isto pode ser un dos o máis complicado
dos plugins, entón en vez do que somos vai centrar hoxe é de feito
o plugin Stats, e imos falar un pouco sobre simple, tamén.
Entón eu mencionei antes, e eu realmente quero para facer moi, moi claro, que unha vez máis,
todo isto que somos ver aquí é esencialmente
operando no lado do cliente.
Vemos unha fiestra de terminal a continuación, e que, por suposto,
se escribir comandos que, que será entón emitida
á instancia de base.
Do mesmo xeito, se abrimos un novo arquivo e escriba algunhas cousas para el e garda-lo,
o ficheiro serán gardados en o exemplo subxacente.
>> Pero o editor en si, esta propia fiestra de terminal,
é aplicado en toda Javascript e todo é un plug-in
que podemos interactuar con, e, polo tanto, modificar.
Hai unha morea de extensibilidade aquí.
Recomendo dar un ollo en Cloud 9 de conta GitHub
para ver a gran cantidade de plugins que están dispoñibles,
e ben escrito moito do código é para extensibilidade.
Polo tanto, hai algo que quero mencionar
sobre isto, así, o que é que hai un gran número de-- hai
unha serie de funcións que se proporcionada nas preferencias
ventá, o que vimos só aludido a poucos minutos.
>> Unha das cousas que podemos facer como IDE desenvolvedores, ou como Cloud 9 desenvolvedores,
é realmente inxectar algunha Paneis de preferencia da nosa propia.
Así, o modo sinxelo, ou o modo menos cómodo,
e tamén a información de IDE, ou plugin as estatísticas,
cada ten algunha preferencia paneis que nos permiten modificar
o comportamento de cada un deles.
Vai notar que, se eu ir ao Preferencias e ir ás opcións do usuario,
hai unha guía CS50, un que di que a información IDE.
E podo cambiar o información taxa de actualización.
>> Efectivamente, o que está a suceder nas estatísticas de plugin
é que cada n-segundos, onde n-segundos defínese por esta preferencia
panel, a información está a ser buscado do exemplo subxacente, sendo enviado
ao seu lado do cliente, o plugin é, entón,
interpretar a información da instancia subxacente
e actualizar o GUI polo que sexa.
Podemos ver que agora iso é definido a 30 segundos, e iso é o estándar.
Pero podo cambiar definitivamente a rapidez con que isto ocorre só
modificando ese valor.
>> Agora, unha das cousas interesantes é que este panel de preferencias, GUI,
é realmente só unha versión GUI de unha chea de opcións subxacentes
que aparecen en JSON.
Entón, se eu for, por exemplo, baixo a Menú CS50 IDE, ou o menú de Cloud 9,
dependendo de cales versión que está mirando,
e ir a un deses settings-- neste caso
o proxecto do settings-- características do proxecto, neste caso,
aplícase a todas as opcións para este espazo de traballo.
Considerando a configuración do usuario aplicar para todos os espazos de traballo
que pode ter en conta.
>> Así só como un aparte aquí, para ser máis claro,
hai unha separación entre o dous, porque aínda por nós estándar
ter un espazo de traballo, que é o CS50 IDE, se
estaban a facer clic no seu pouco avatar aquí e ir ao panel de control,
vai descubrir que realmente pode crear espazos de traballo adicional.
Podes ver aquí que eu teño un IDE de 50 de espazo de traballo, e tamén
para os efectos da presente seminario, un espazo de traballo
chamado espazo de traballo, que é aquí mesmo.
En calquera caso, eu teño preferencias diferentes.
Cada un destes pode ter preferencias do proxecto separados,
pero as preferencias do usuario son compartido entre todos os meus espazos de traballo.
By the way, este é tamén moi útil se
quere crear un espazo de traballo con diferentes opcións de personalización.
E é moi útil para crear un novo espazo de traballo.
E elixir aquel que se pode preconfigurado dalgunha outra forma,
quizais para PHP concreto, ou especificamente Django.
Ou mesmo só a pedido.
O espazo de traballo CS50 modelo é o que nós
usar que instala automaticamente Actualización de 50 e todas as opcións
que ten alí, incluíndo toda a Os plugins que temos para o IDE CS50.
Aceptar.
Pero imos volver a este.
Entón, de novo, hai proxectos configuración, e eses son os que
que estamos a ver aquí.
E teña en conta que non hai son unha banda de configuración,
moitos deles corresponden ás preferencias paneis, pero non todos eles.
Pero podemos ver que aquí, en isto-- oh non, eu poñelas na configuración do usuario?
Poida que eu poñelas na configuración do usuario.
E isto, aquí imos nós.
Na configuración do usuario, podemos ver que temos unha sección CS50,
e isto está a ser escrito para estes Nube 9 plugins
que temos implementado.
Hai o simple para coincide con ese plugin simple,
e as estatísticas que un corresponde á interface gráfica baseada
versión do panel de preferencias.
A taxa de actualización, neste caso, defínese como 20 segundos.
>> Isto é todo, espero, o comezos de información
que imos realmente ver en algo pouco máis detalladamente, momentaneamente.
Aceptar.
Entón, imos dicir que queremos realmente comezar a el.
Entendemos que todas as cousas que está a suceder no lado do cliente
está feito, en realidade, o navegador, que significa que calquera plugins que eu escriba
van ser escrito co navegador presente.
E se realmente quero facer nada no espazo de traballo,
Eu quizais teña que iniciar algún tipo de comunicación
entre o navegador eo o espazo de traballo para estar seguro
que é realmente realizado.
Pero imos dicir que agora Eu quero comezar a el
e realmente crear o meu primeiro plugin.
Ben, o xeito que sería capaz de facelo é realmente moi fácil.
É dado o Cloud 9 SDK.
Pero é para tomar o seu Nome do espazo de traballo existente, que
é a URL que ten na parte superior da bar, e engadir o seguinte a el.
?
SDK = 1 & Debub = 2.
Agora, o que é que isto vai permitir é que o SDK = 1 vai realmente facer que o SDK
modo a verdade, o que permitirá un par de cousas adicionais.
E depuración = 2 permitirá que as mensaxes de erro para ser un pouco máis detallada.
>> E por iso, se abre o JavaScript consola no seu guía creador Chrome,
vai realmente ser capaz de ver máis información
que faría doutro xeito.
Entón, eu recomendo transformando ambos á vez, porque realmente
É útil dispor de toda esta Información adicional.
É importante ter en conta, con todo, que conectar de depuración para o valor de 2
significa que é moi detallado, e realmente
vai un pouco visiblemente máis lento o IDE, especialmente cando a carga
ou cando facer facer tarefas pesadas.
Entón, só tes que manter isto presente.
É útil para o desenvolvemento, pero Non podes querer telo conectado o tempo.
>> Entón imos realmente facelo.
Pero, neste caso, eu realmente teño xa creou un espazo de traballo con este.
Entón imos ver, SDK = 1 & depuración = 2.
Cun par de plugins espero xa instalado.
Todo ben.
Polo tanto, agora que eu teño conectado a depuración SDK modo, repare en que estamos en modo de depuración,
para que poidamos mirar para as ferramentas dev para ver posibles erros, que eu vou facer fóra de campo.
Podemos ver que non hai unha morea de erros aquí.
Agora é realmente moi común para Cloud 9 para ter un par de erros,
e eu non me preocuparía sobre eles ata que
vexa algo que pode ser específico para o plugin
que ocorrer de estar creando.
>> Entón, aquí, por exemplo, obtemos un par de 404s-- non atopado.
Vemos non podemos cargar algún información fóra da instancia subxacente
si.
E hai unha morea de adicional información, pero a maior parte deste que estamos
realmente indo para ignorar por agora.
Porque iso é moi común para un espazo de traballo
ter só un par de erros.
Aceptar.
Eu estou indo a ir esta fóra de o camiño e volver aquí.
E agora o camiño máis doado, o Niza cousa sobre ter este creador
modo activado é que me permite para crear facilmente un novo plugin.
>> Así, mentres que antes eu realmente non fixen ter esta nova opción plugin está dispoñible,
que podemos ver se eu volver meu modo non creador aquí,
non hai ningún novo plugin.
Ao activar o modo SDK, I ten un novo plugin está dispoñible
e podo facilmente crear unha.
Neste caso, hai unha parella de diferentes opcións, simple,
un plugin baleiro, un plugin completo, instalador, Cloud 9 Bundle.
Nós só escoller un plugin baleiro polo de agora
para que poidamos ver un moi versión simple dun.
>> Agora conta que ao longo da á esquerda que está aí é agora
algo en favoritos, que está list un par de plugins
que agora están dispoñibles para min.
Se eu ampliar iso, imos vexa aqueles.
Agora quero que teña en conta algo aquí, que
é que este non é, en realidade contida dentro do directorio do espazo de traballo
no meu exemplo Ubuntu subxacente, pero está contida no disco duro.
E onde está situado, porque iso é moi útil para saber,
especialmente se está indo a estar facendo nada con Git,
onde reside este é nun cartafol .c9, / plugins.
Entón, se eu for alí, podemos ver que agora a lista de plugins que está aquí
corresponda á lista de plugins que viu na parte esquerda da miña zona de traballo.
>> Agora, por defecto, e este é o tipo de raro,
por defecto cando crear unha novo plugin nun espazo de traballo,
crea este plugin que por estándar ten un nome dun subliñado.
Xeralmente que pode causar algúns problemas.
Así, o seguinte paso que normalmente realizar
é só para eliminar esa plugin específico
e deixar só o plugin simple que Foi hai inicialmente, plugin.simple.
E iso é o único que está aí.
Aceptar.
>> Entón o que iso realmente se parece?
Ben, é dicir, de novo, un paquete JavaScript
que inclúe algúns ficheiros, incluíndo un ficheiro plugin.js, onde
o contido principal do meu plugin está situado,
un arquivo package.json, que realmente especifica
algúns metadatos sobre este plugin, como quen é o autor,
calquera información adicional sobre iso, un Descrición do plugin, e así por diante.
E tamén por defecto, crea un ficheiro README en branco,
e un ficheiro de proba en branco para ti crear documentación adicional,
e un látego de fíos de proba se desexa facer isto.
>> Entón imos dar un ollo á primeira, moi rapidamente, o ficheiro package.json.
É doado abondo para só pasar por Lo e cubrir as áreas deste
que desexa cubrir, como proporcionar-lle un nome, unha descrición,
iterado o número de versión de cando en vez, proporcionar
un autor para cada persoa que contribúe,
engadila los para os contribuíntes sección, eo resto deste vostede
Pode moi ben só deixar como é para agora.
>> Hai unha cousa que é importante ter en conta,
que na sección de plugins, existe unha clave chamada plugin.
E este é comparado co nome de o ficheiro JavaScript chamado plugin.js.
Entón é así Cloud 9 sabe, cando se le este ficheiro package.json, que
dos js arquivos para realmente cargar.
Se eu crear arquivos js adicionais ou quere renomear o ficheiro js do plugin,
Eu tamén teño que mudalo no arquivo package.json.
>> Calquera preguntas do público?
Non.
Que unha persoa que é a continuación xunto comigo ata agora.
>> Aceptar.
Entón, realmente crearon unha par de plugins xa,
Eu creo que, neste espazo de traballo.
Entón, imos nos librar de algúns deles, engade SDK = 1 & depuración = 2, recargue esta área de traballo,
e veremos si ten eses plugins agora.
C9 / plugins.
Alá imos.
Vemos agora nos meus C9 / plugins deste un, temos plugin.1 e plugin.2.
Entón, nós estamos indo só para intensificar as-- só aumentar a cantidade de dificultade
en cada un destes plug-ins.
Pero aquí si crear un novo plugin, I pode engadir lo a favoritos.
E eu vou simplemente borrar os de o sistema de ficheiros subxacente.
>> Imos eliminar iso.
Agora, se eu abrir a miña primeira plug-in, e plugin.js abertas,
podemos ver aquí o subxacente versión simple dun plugin.
Déixeme realmente volver Este outro espazo de traballo
porque pode, polo menos, aquí ver, o que un plugin baleiro realmente parece.
Entón, baixo o capo, iso parece moi semellante á tecnoloxía chamada,
Eu creo, é RequireJS.
Lembre que isto non fai realmente ollar, quizais,
o mesmo que algunha outra JavaScript arquivos que poderiamos ver.
Pero en vez diso, hai un par de só liñas básicas que realmente ten.
>> Todo este material é primeiro interpretado polo IDE,
pero non é, en realidade, executar ata que sexa indicado.
E eu vou che dicir sobre cando iso significa, en realidade, en só un momento.
Pero teña en conta que aquí hai unha main.consumes liña na liña 2,
e esta lista todo plugins que este plugin é dependente.
Entón, por defecto, nós quizais non calquera dependencias doutros plugins,
pero cando realmente precisa depender características ofrecidos
por outros plugins do IDE, necesitamos incluír os plugins
na liña main.consumes.
E entón necesitamos vincula-los ao código
a continuación, que eu vou lle amosar en só un momento sobre como podemos facelo.
>> Main.provides dá un nome a este plugin
que outros plugins podería usar na súa liña consome.
Polo tanto, neste caso, o meu plugin é só un conxunto alí por defecto,
e debemos cambiar isto para ser aplicable ao noso propio plugin,
como veremos en só momento.
Agora, aquí en función principal, esta función principal
é realmente executada e interpretados, pero realmente non facer moito.
El só queda todo configurado, pero en realidade non iniciar o plug-in,
a pesar do que o nome soa como.
Isto realmente acontece través unha secuencia de métodos que
están contidos ao longo deste plugin.
>> Entón, se eu rolar para abaixo podemos ver que temos un ciclo de vida en que
nalgún evento denominado de carga, ou algún evento chamado de descarga,
algúns eventos realmente ocorrer.
Realmente aquí onde, como o plugin comeza que estes métodos son chamados.
Entón, imos ser un pouco máis concreto sobre iso e mirar un exemplo.
Entón aquí para plugin.1, o que estamos basicamente vai facer
é crear un elemento de menú CS50 chamado Seminario de Diálogo 1--
porque temos dous eles-- e imos
para inxecta-lo no menú Ventá.
E cando premer sobre el, somos abrirá un diálogo que
móstranos unha información moi básico.
>> Neste caso, só un Ola mundo.
Polo tanto, esta é unha forma moi simples Ola diálogo mundo
que pode aplicar como un plugin en Cloud 9.
Entón, imos ver como isto realmente parece.
Nós imos percorrelo lo, só de forma relativamente rápida para que
pode ver na seguinte plugin tamén.
Lembre que aquí estamos consumir unha variedade de plugins.
Estamos consumindo un diálogo plug-in, comandos, menús, e UI.
Parece que realmente estou consumindo diálogo dúas veces, para que eu poida eliminar iso.
>> E teña en conta que o camiño que estou conectando-os,
este é o tipo de metadatos que está dicindo o sistema plugin que requisitos
son realmente necesario para este plugin a carga.
Tamén é importante notar que a fin de que os plugins carga
non se pode garantir.
Pero o que se pode garantir é que se eu especificar algúns plugin como un requisito,
que plugin será cargado antes de que é cargado.
>> Entón isto significa que se o plugin require dalgunha función dada
por outra cousa no IDE, ten que estar seguro de que os seus plugin consome
que plug-in, de xeito que as dependencias están determinados a crear o seu plugin,
ou instanciar seu plugin, única despois existe ese cadro existente.
Entón aquí eu mencionado a metadatos para o director de plug-in,
que eses que eu estou indo a consumir.
E na función principal aquí, Vou a continuación, conectar
meu código para estes plugins importados.
>> Entón, eu estou indo só para crear algunhas variables que
coincidir cos nomes de cada un destes tan que eu poida moi rapidamente referencia a eles
en todo o meu código.
A razón que eu estou importar diálogo é porque quero o meu plugin
para actuar como un plugin de diálogo.
E o xeito que eu son capaz para facer isto é, por suposto,
conectar o meu código ao diálogo plugin importando-
e, a continuación, por especificando creando unha nova variable de diálogo
e conecta-lo ao que plugin de importación.
E, a continuación, a través da definición de meu plugin como un novo diálogo.
>> Así, no inicio, eu quere facer que o meu plugin.
E esa variable chamada plugin verás
só é usado comunmente todo Cloud 9 plugins.
Eu estou indo a instanciar un novo diálogo con algúns atributos,
darlle un nome específico, dicir que é posible para os usuarios para a pechar.
Que vai mostrar un pouco de x en o ángulo superior dereito,
ou un pequeno botón no ángulo inferior dereito.
Ou non podo seleccionar o texto Lo, o que o título deste diálogo
sería, e así por diante.
Agora, esta só define o diálogo, pero aínda non mostra-lo.
En realidade, teño que definir unha acción para que poida ser demostrado.
>> E de novo, eu encouraged-lo a Bótalle un ollo ao Cloud 9 SDK,
porque hai unha variedade de diálogos e son moi ben documentados.
Podes ver os distintos tipos que existen, e usalos
en calquera plugin que ten en mente.
Agora non vai ser un sección de carga, e esta carga
función como recorda é utilizada por ciclo de vida do plugin
para realmente instanciar todo e deixar todo preparado para ir.
Agora, cando este plugin cargas, non quere amosar inmediatamente un diálogo,
porque este plugin será cargado xunto co resto do IDE.
E cando cargar o IDE, eu non quero o diálogo para aparecer automaticamente.
Eu só quero iso para mostrar cando clic en a opción de menú no meu elemento de menú Ventá
que eu vou engadir a el momentaneamente.
>> Polo tanto, hai dúas etapas distintas aquí que ten que pasar.
Teño que crear un mando eo mando
será responsable da verdade mostrando o diálogo sobre o Cloud 9 IDE.
E entón eu teño que chamar, eu ten que crear un novo menú fiestra
elemento, que executa este comando.
De xeito que cando clic en que Xanela elemento de menú, o comando é entón executado
e, polo tanto, o meu diálogo móstrase.
E así esta é realmente unha fermosa Nice forma de pensar sobre iso.
>> Porque primeiro podo crear un comando cuxo nome é CS50 Seminario de Diálogo 1,
que ofrece algúns contexto xeral para el.
E o pouco importante aquí é teña en conta o atributo exec, que
enumera unha función que será chamada no meu plugin cando este comando é executado.
Así, este comando é unha especie de um-- é só unha nube arbitraria 9
mando que está dispoñible a calquera Cloud 9 plugin.
Pero a función real que é vai chamar cando ese comando execútase
é a función concerto de diálogo no meu arquivo plugin.js.
>> E podemos realmente ver estes plugins ea lista
de comandos que están dispoñibles para nós en Preferencias, percorrer todo o camiño down--
imos ver, en realidade, é que imos ver iso agora?
Plugin manager, non, eu creo que é i-- definitivamente por aquí nalgún lugar.
Así, hai unha lista de comandos nalgún lugar, pero eu teño que ter,
Esquecín o meu onde está.
Así, OK, imos seguir adiante.
Todo ben.
Polo tanto, temos unha lista de comandos que están dispoñibles para nós,
e as ordes son estes só arbitraria Cloud 9
comandos que executan código específico.
Entón, só tes que manter isto presente, que nós estamos indo a executar o programa de diálogo
funcionar momentaneamente.
Agora, cando realmente quero engadir un menú elemento, podo engadir este elemento por camiño,
e só especificar exactamente onde quero que sexa, Xanela / Seminario CS50 Dialog 1.
E nese punto, quero para crear un novo elemento
vai a executar un comando, CS50 Seminario de Diálogo 1.
Teña en conta que, de novo, esta é a Nube 9 mando Eu creei un pouco máis arriba.
>> Agora eu tamén quero crear un pequeno divisor,
e para que eu poida facer o mesmo na liña seguinte.
Agora podes ter en conta que como parte da definición deste elemento de menú,
hai un número asociada con el que
realmente di onde exactamente Quero que este elemento do menú para ser
situado na lista de menús.
Pero pode notar que eu non sei, en realidade,
ver todos os números con estes menús, por defecto.
Polo tanto, hai unha pequena cousa oculta que o que podemos facer, un pequeno cambio para a nosa URL.
Así, ademais de SDK = 1 & depuración = 2, Vou definir menú para 1--
e espero que sexa de menú, non menús.
Oh, é menús = 1.
Espere un pouco.
>> E o que imos ver enriba de recarga que IDE é que eu aínda estou no modo de depuración,
pero agora hai números asociado con todos os menús.
E iso di a vostede o que o número
é cando estás a inxectar algo en calquera lugar neste sistema de menú.
Así, no menú Ventá, podo vexa o artigo 45 é colaborar,
e punto 38, antes de que sexa instalador.
Entón, cando quere inxectar un elemento entre os dous,
Quere só de seleccionar un número entre estes dous elementos.
Entón, eu seleccionei 41 e inserida meu Seminario Dialog o elemento 1 do menú naquel local.
>> E é por iso que este número que aparece aquí é o número 41.
Esta é a situación dese elemento de menú no menú de Cloud 9.
Agora do mesmo xeito, eu quería para crear un divisor
e engadir lo de xeito que hai un nice división entre cada un deles de menú
elementos.
Entón eu dixo que no lugar 43.
Tan lonxe, tan bo, eu espero?
Entón agora imos realmente ollar para o código específico no cadro de diálogo mostra
que é realmente responsable para abrir esta xanela de diálogo.
>> Desprazamento para abaixo, vexo que quero para ter este diálogo función concerto,
e é moi sinxelo.
Eu estou indo a executar o concerto método no variable plugin.
E lembre de que definimos esta plugin variable anterior como un diálogo.
Así, o plugin de barras, neste caso, é este obxecto que definimos internamente.
E vai ser un novo diálogo contidos neste plugin.
E así nós realmente referenciado este plugin variable en moitos lugares
nun típico Cloud 9 ambiente de desenvolvemento.
>> Imos velo aquí.
Teña en conta que a medida que rolar para abaixo, hai ciclos de vida adicional.
Entón, teña en conta que estes responden para eventos que son accionados
por este obxecto, este obxecto do diálogo.
Por defecto, non hai cargar e descargar, que
están dispoñibles para todos Nube 9 plugins.
Pero en caso de este diálogo, non hai
Outro evento que pode lume tamén chamado
Draw, que é disparado cando iso Está a piques de ser deseñado na pantalla,
en primeira instancia do diálogo amosando.
>> Así, cando en realidade é será mostrado,
alí vai fornecer algún HTML.
E usando só estándar Prácticas HTML pode nós
inxectar unha información moi simple, noso mundo Ola, en que o diálogo.
Entón, se nós, a continuación, vai para arriba, podemos ver, a continuación, a procesión de cousas
que se produciron.
En primeiro lugar, creamos un comando Cloud 9 que, cando se executa por Cloud 9,
vai disparar esta función.
Está indo a executar esta función chamado concerto de diálogo, que eu teño
escrito no meu código.
>> Eu creei un elemento de menú e anexo a el que mesmo comando
que, cando ese elemento é premendo en o menú, que mando é entón executado
e que a función é entón executado.
E dentro da función que eu son só vai chamar as-- son
indo só para executar o concerto método deste plugin, que
vai primeira chamada o método de sorteo, e vai
para disparar este método a continuación, o deseñar manipulador de eventos, no noso ciclo de vida.
E entón el vai realmente amosar o diálogo.
>> Hai tamén un método de ocultar, así que se eu ter a oportunidade de ocultar
meu diálogo, podo facer o mesmo.
Entón, iso é moi fermoso isto para obter todo isto para traballar.
Teña en conta que é desprazarse para abaixo aínda hai unha API pública conxelación.
Este só di basicamente que quere estes métodos para efectivamente
ser público, pero non overwriteable fóra do contexto deste plugin.
E a continuación, na parte inferior, é, quizais, o último
que realmente ten que pagar moita atención aos aquí, que
é que imos rexistrar o noso plugin co nome de Seminario C9 1,
eo obxecto plugin.
>> Que, como ten que se lembrar, é que plugin que plugin
obxecto que vimos definición en toda a totalidade desa fonte
código.
E Seminario C9 1 é o cadea que prometemos
proporcionar superior desta definición.
Aceptar.
Entón, imos rampla-lo un pouco para ver se podemos facer algo
un pouco máis interesante.
Agora esta é só tan grande.
Quero dicir, que é, é realmente moi arrefecer que en tan poucas liñas de código,
podemos modificar o IDE existente e engadir un elemento de menú existente
ou engadir un novo elemento de menú, engadir unha mando e mostrar un diálogo,
e só unha banda de funcionalidade que existe.
É realmente moi grande.
>> Pero non fai moito, porque non pode comunicar con Ubuntu subxacente
instancia.
Entón, digamos que eu Realmente quere descubrir
unha información sobre o subxacente instancia Ubuntu,
como as estatísticas de plugin fai.
Entón, imos dar un ollo a un pouco máis de información
sobre como as estatísticas de plug-in de obras.
E, de feito, é moi semellante a esta.
Ten que se lembrar que hai un diálogo.
Ten que se lembrar que non hai información que se
mostra só ao longo da barra de menús ao longo arriba, que espero que agora
obter un sabor de como Implementar iso,
só a través da inserción de elementos de menú en concreto puntos e pola instanciação dun diálogo
e mostrando ese diálogo.
>> Pero aínda non demostraron como podemos conecta-lo
a un comando no Ubuntu instancia subxacente.
Entón, imos dar un ollo a continuación, en plugin.2, e que fai precisamente iso.
Nós imos abrir plugin.js, que é o código para iso.
Pero, baixo o menú Ventá, se eu premer na caixa de diálogo 2,
vemos que di iso no seu lugar, Ola CS50, que
non mirar todo o que atractivo, non?
Excepto, ver isto.
Deixe-me cambiar algo aquí debaixo.
>> Eu estou indo a ir ao meu espazo de traballo e cambio seminario
para dicir algo máis, como Ola, Dan.
Vou pechalo e salvalo.
E agora eu estou indo a re-run meu elemento de menú diálogo.
E teña en conta que ten agora cambiou o que di.
Ola, Dan.
Eu parezo ter feito algo para baixo aquí na instancia Ubuntu subxacente
sen ter ningún manipulado código que está en execución de novo unicamente
do lado do cliente.
Polo tanto, hai, por suposto, algún tipo de comunicación que está a suceder aquí.
>> Agora, este é o lugar onde unha chea de poder do Cloud 9 SDK vén,
é que, nese plugin.2, que realmente pode causar
unha chamada ocorrer co exemplo subxacente,
e realizar algúns comandos arbitrarios.
Polo tanto, neste caso, eu teño realmente creado un script moi sinxelo
na miña zona de traballo chamado Seminario.
Entón deixe-me abrir iso.
E vemos que se parece con isto.
É só unha festa moi sinxelo guión, cuxo único obxectivo na vida
será a ecoar este texto, Ola, Dan.
Ou, antes diso, el dixo Ola, CS50.
E iso é todo o que vai facer.
>> Porque este é agora un mando que podo correr.
Podo realmente executa-lo aquí.
Podemos ver que realmente é só un comando que eu corro naturalmente.
Podo pedir ao meu plugin para realizar este mando no espazo de traballo subxacente
e analizar a información que foi devolto a partir del,
e facer algo con el, e modificar meu plugin eo comportamento que
ter na miña plugin como un resultado. Aceptar.
Entón imos ver como isto ocorre.
Vimos isto moi sinxelo Script en lotes seminario que
[Inaudível] que realmente pode ser executado.
>> E agora imos ver as modificacións que son necesarios para amarre iso xuntos
coa ventá de diálogo, e executalo.
Entón aquí imos facer moito moi o mesmo que vimos antes.
Pero teña en conta que entre os cousas que consumidos agora--
en adición ao diálogo, que novo ocorrer de ter feito dúas veces,
que non é necessary-- ademais ao diálogo e as ordes
e os menús os plugins, que foron necesario, en primeiro un para me
para definir un novo mando e inxectar un elemento nos menús,
Eu tamén teño ese proc plugin.
>> E este proc plugin permite nós para manipular procesos
no exemplo subxacente.
Eu conecta-lo despois que eu dixo que o meu plugin esixe.
Eu, a continuación, conecta-lo ao código, como vimos na función principal.
Unha vez máis, eu vou iniciar o meu diálogo.
E se nós nos movemos para abaixo agora, pode ver como iso é diferente.
A función de carga é o mesmo, entón el só vai crear un comando
e crear un elemento do menú e conectar este elemento de menú para este comando.
Pero agora rolar abaixo para amosar o diálogo,
podemos empezar a ver onde as diferenzas xorden.
>> Temos función concerto de diálogo, que está indo só para mostrar o diálogo.
Pero cando mostrar este diálogo, e cando o método concerto se chama,
el acciona a función draw.
E eu vou especificar, a continuación, algún contido do que iso.
Entón, eu estou indo só para crear un div, proporcionar a el
texto básico, Ola, mundo.
Pero teña en conta que aquí son vai achegar a el unha identificación.
E a liña seguinte vou ao descubrir que ID usando JavaScript,
e almacenar ese obxecto noutra variable
que eu estou indo só para chamar contido.
>> Entón, agora cada vez que eu teño contido, todo o que eu teño que facer
é só modificar HTML interior deste obxecto.
E o diálogo vai HTML a continuación, ser modificado, así.
Así, cando este plugin é entón mostradas, o que pode ocorrer
e este é un novo evento que é novo para este plugin,
pero acontece en todos os plugin con o diálogo, cando este é agora mostra,
Vou chamar un función chamada buscar información.
E esta función é a carne del aquí.
Vou usar este plugin que proc describimos antes, que por certo,
é realmente só unha biblioteca Node.js que Cloud 9 emprega aquí.
>> Entón pode realmente mirar para arriba sobre como este
funciona se ir ao Documentación Node.js
e mirar para arriba o ficheiro exec método para procesos de alí.
Eu estou indo a executar este específico mando, casa Ubuntu espazo de traballo
seminario, que é o mesmo, isto mesmo orde que eu creei antes.
Facilitar a el unha corrente directorio de traballo, só
para ser seguro en termos de Ultra-a contexto onde este está en execución.
E xa que foi cuberto e devolto,
Eu estou indo a executar este función chamada de saída de análise.
Aceptar.
Polo tanto, este, a continuación, vai para realizar un comando no lugar, ou mellor,
a instancia remota Ubuntu.
Cando volten algúns información, eu son a continuación,
vai chamar unha función separada chamado de saída de análise, que
ten esa sinatura aquí, err, saída estándar, stderr,
e realizar algúns cálculos sobre iso.
Entón, se eu recibín un erro de calquera tipo de todo,
Realmente comprobar a ver se erro de feito ten algúns datos.
E se é así, entón eu vou modificar o interior HTML do obxecto de contidos, que
é lembrar, nós ligado ao diálogo
no instantiattion dese diálogo, ou no primeiro deseño
de que o diálogo.
Vou só dicir que algún erro ocorreu.
>> Agora que é demasiado simplista.
O valor de erro será tipicamente conter algo que fose útil,
quizais un número de erro e unha erro do propio guión.
Ou se o script escribiu algo para o erro estándar,
que os datos serían cubertos en que o parámetro ben.
E eu podería ser un pouco máis coidado co erro
En realidade, estou mostrando persoas.
Pero este exemplo simplista é bo o suficiente para agora
para, polo menos, ver como todo funciona.
Se non, se hai ningún erro, entón eu son só
vai facilitar a matéria- saída do que a función
no interior do HTML este contido elemento, e, a continuación, actualizar o meu plugin
e mostra-lo aquí.
E iso é moi fermoso todo o que é necesaria para obter este para ser executado.
E entón imos pensar logo como funciona, en xeral.
Cando cargado por primeira vez este plugin, así como o primeiro plugin,
Eu estou indo a engadir un comando que se dispoñible para calquera cousa, en calquera plugin
en Cloud 9, chamado Seminario CS50 Diálogo 2, cuxa responsabilidade
será para executar este concerto diálogo, que é se recorda,
mostrará realmente o diálogo que solicitadas continuación.
>> Entón eu vou engadir que mando nun menú fiestra
para que eu teña acceso a iso.
E cando este diálogo é solicitado para ser mostrado,
Vou buscar unha información de a instancia de Ubuntu subxacente
mediante o comando ficheiro exec.
Desculpe-me.
Xa que é de retorno e recibir algún información, a continuación, no lado do cliente
de novo, vou ser capaz de analizar a saída do comando
e actualizar o interior HTML dos elementos
que tiñan que realiza anterior.
>> E con iso, entón temos esta totalmente funcional plugin
que me permite buscar información dese script arbitrario
que creamos en nosa instancia subxacente.
Pero, de novo, é realmente importante e realmente clave
de forma a separar cada onde desas cousas está a suceder,
que temos todo isto do lado do cliente código que está en execución no navegador,
e que aínda non teñen acceso para o sistema de ficheiros subxacente
ata que realmente realizar algúns destes comandos que son proporcionados pola nube
9 SDK como proc, e algúns outros que nos permiten ler algúns datos,
ou ler algúns arquivos se necesitamos para facer calquera cousa do tipo.
>> Agora, este é un exemplo un tanto simple.
Hai outras cousas que quizais queira facer tamén.
Por exemplo, é posible realmente quere gardar unha información
coas preferencias.
Ou que queremos engadir un novo panel de preferencias
ou algo nese sentido.
Entón, iso é algo que pode dar un ollo ao Cloud 9 SDK
para obter máis información sobre.
Pero iso é realmente abondo para comezar.
Entón, só para ser un pouco máis concreto sobre a forma que algunhas destas cousas
función, eu quería amosar só un exemplo, que non é máis que algúns
do código do Stats 50 plug-in.
>> E ese código é basicamente Con base nestes exemplos
que realmente visto, pero ten máis algunhas copia
e ten máis algunha complexidade, a fin para alcanzar algunhas das cousas adicional
que queremos alcanzar.
Por exemplo, se quero ser capaz de salvar algunhas opcións,
entón eu teño para acceder para a configuración de plug-in,
e cada vez que quero para ler algunhas opcións,
Podo, por exemplo, engadir a varios eventos na configuración do plugin.
Entón, cada vez que a configuración é vermello, por exemplo, na miña propia plug-in,
se eu vou ler algúns configuración do almacenamento gardados
preferencias do usuario, entón podo definir patróns a un lugar específico,
preferentemente específica, en que JSON ficheiro de opcións de estilo que temos
salvo anteriormente, que xa vimos antes.
>> E se eu vou escribir algunhas opcións para el,
entón eu can-- ou así que detectar que os axustes foron escritos
a-- porque, por exemplo, os configuración foron modificadas polo usuario
directamente nas súas definicións ficheiro, ou no panel de preferencias
cambiou a configuración arquivo directamente,
Podo realmente actualizar parte do código ou actualizar o comportamento do meu plugin
con base neses cambios que teñen ocorreu o ficheiro de configuración tamén.
Pero, realmente, o resto é bastante moi presente que xa viu.
>> Nós engadimos algúns, quizais algo que é novo.
Por iso, engadir un ficheiro de preferencia, ou mellor, un panel de preferencias,
para o diálogo de preferencias, o que de novo podes atopar máis información
no Cloud 9 SDK me ler.
Pero o resto é moi fermoso, fermoso
semellante ao que vimos antes, só con algunha comprobación de erros adicional
e algunhas proteccións adicionais e algunha funcionalidade adicional
para aplicar as diversas cousas que vimos.
Se non ten, en realidade, viu aínda, pode
estar se pregunta o que o subxacente mando é a fiestra Estadísticas 50.
É, en realidade función.
Ben, iso é-- oh, caramba.
Un segundo.
Espere un pouco.
Aceptar.
Déixeme pasar iso para que poidamos realmente ver o que acontece cando tecleo Stats 50.
Nótese que neste caso, o orde que eu estou fóra putting
é realmente novo, só o script que é indo para a saída de unha morea de información
en formato JSON.
E a razón que facemos deste xeito é que, porque
están operando porque escribimos o código do lado do cliente en JavaScript,
podemos moi facilmente só analizar obxectos JavaScript,
e realmente ser capaz de manipular eses obxectos só como fariamos
calquera outro obxecto JavaScript.
>> E así, este é un moi cómodo forma de proporcionar unha información
da instancia Ubuntu subxacente, tales como o número de versión, o anfitrión
nomear, se un servidor está escoitando, o que o servidor é, así por diante e así por diante,
e analizar que moi facilmente e moi rapidamente
no plugin que está indo, a continuación, para mostrarnos toda a información.
Entón, de novo, o insight clave aquí para ter en conta
É esta separación entre o exemplo subxacente,
e tamén onde o código está cargado.
Que cando eu teño un cliente, é o primeiro carga.
Só este ficheiro JavaScript estática nalgún lugar, quizais CDN de calquera tipo.
Nós realmente non se preocupe moito sobre ese primeiro paso.
>> Nós só sabemos que é en execución no lado do cliente
e é aí onde eu vou comunicarse con esta instancia estivador.
Iso nós imos facelo a través da Cloud 9 SDK.
Nós realmente non teñen a capacidade, usando JavaScript ou Node.js,
para escribir directamente a el.
Nós só usar os SDK existente APIs para facer esta acción para nós.
E de novo, un dos cousas realmente importantes
é que, cando eu creei este, cando eu creei este plugin,
e como eu estou a traballar nel, nun das cousas importantes que facer
é traer a consola JavaScript.
>> Porque unha vez que este é o único operando no JavaScript,
do lado do cliente, se eu usar un console.log method-- entón só
para mostrar un exemplo aquí.
Imos tentar modificar este sinxelo plugin para tamén rexistrar algúns datos.
E nós imos engadir a norma.
Entón imos cambiar isto para estar ben aquí.
Agora, cando eu executar console.log, ten en conta
sempre que este estea a executar do lado do cliente,
Vou ver iso no meu propio JavaScript consola, que
é como eu, entón, ser capaz de tentar solucionar problemas e depurar
algúns dos problemas que eu teño.
>> Nótese que xa Estou en modo SDK, eu son
entón, capaz de manipular Plugins nesta instancia.
Entón, aínda que sexa salvo no caso en apreciado,
este é o único exemplo de que anterior regra sendo violados, onde a Cloud 9
SDK vai realmente tirar plugins do subxacente instancia e, a continuación, executa-los.
Para que, deste xeito, entón eu son capaz de manipular e construír
algúns plugins aquí.
Pero para me ver actualizacións para este plugin,
porque é do lado do cliente, Necesito salvar o plugin
e recarregar todo o espazo de traballo, de xeito que o plugin novo é entón
descargar para o meu cliente, para o meu navegador web, e, a continuación, está a ser usado.
>> Entón agora cando premer neste Seminario Diálogo 2, aínda vemos isto.
Pero agora espero que na miña JavaScript diálogo, que verse meu-- esperar,
soster.
Podería ter que abrir o diálogo fresco.
Debemos ver os meus datos recibidos aquí.
Os datos recibidos, ola, Dan, que é se recorda,
era unha operación que console.log foi solicitada no plugin.
Polo tanto, esta descrición, a continuación, que mencionei antes,
este diálogo, ou este diagrama vez, que eu
mencionado antes é o que pasa.
Pero hai unha importante excepción só para o desenvolvemento,
que é o que o plugin en si pode, de feito,
ser almacenados na instancia xanela de encaixe temporalmente, xa que presuntamente Nube 9
non queren que sexamos capaces de manipular obxectos na súa CDN.
>> E a nube 9 clientes, tras a carga, vai atopar os plugins en que.
Plugin C9 cartafol e prema eses.
Pero os que aínda están a suceder só do lado do cliente.
Entón, a continuación, esta é só a unha excepción de que ocorre só
para o desenvolvemento de Cloud 9 plugins.
Pero o resto do tempo-- ea razón
que queremos realmente martelar este casa--
é porque a maioría das veces iso é indo a ser executado desde o CDN,
e só será executado puramente do lado do cliente.
>> Normalmente, non haberá interacción co plug-in,
ou non ten sequera a ser calquera razón que os plugins
son efectivamente almacenados na subxacente instancia xanela de encaixe,
agás no caso de este desenvolvemento SDK.
Entón, de novo, iso cambia só lixeiramente debido a que
que estamos executando o modo SDK.
Vai entón cargar os plugins de desenvolvemento,
eo único propósito de xeito que é aquí Podo usar Cloud 9 para facer o desenvolvemento
para Cloud 9 plugins.
Pero, aínda así, iso non cambia novo como funciona isto.
El aínda está en execución enteiramente no lado do cliente.
>> Isto só significa que cada vez que quero crear Cloud 9 plugins en Cloud 9,
Eu crear eses plugins, colocalos no meu.
Cartafol / plugins C9 na miña casa directorio, asegúrese de que eu estou en modo SDK,
actualizar a páxina cada vez que eu realmente facer cambios para que plug-in,
e ver que pasa no meu consola JavaScript.
Só xestionar a miña JavaScript Consola para asegurarse de
que calquera solución de problemas información que eu coloque a consolar,
ou calquera outra cousa que poida ocorrer por mor de erros que escribín
no meu código ou similares, aparece alí.
>> E con iso, é realmente abondo para comezar, eu creo,
coa nube 9 plugins.
Especialmente tendo un ollar para o SDK documentación que Cloud 9 ofrece.
É unha boa forma de comezar iniciado, e de forma moi fácil
crear algúns plugins para Cloud 9.
E con iso, quero agradecer a todos moi para unirse a min.
Espero que vai divertirse escribir plugins para Cloud 9.
Mellorar Quizais plugins que temos agora, ou que mesmo
engadindo algunhas características do seu propio país.
Estamos ansiosos para vê- que é o que se crea.
Ata entón, adeus.