DAN Armendáriz: Bună ziua, și bun venit la un seminar pe CS50 Personalizarea Cloud 9, și IDE CS50. Așa că astăzi vom doar vorbim un pic despre unele dintre informații tehnice care merge în spatele arhitecturii de Cloud 9, și cum am implementat unele dintre plug-in-uri ca parte a Cloud 9 pentru a oferi IDE CS50. Deci, hai să sară în dreapta și începem să vorbim despre plug-in-uri. Deci, plug-in-uri sunt într-adevăr la de bază de Cloud 9 experiența. Cloud 9 este tehnologia de bază care oferă pentru a ne IDE, și, de asemenea, fereastra terminalului la fund, împreună cu workspace-- Ubuntu workspace-- pe care le utilizați pentru a compila toate proiectele noastre și de a efectua seturi de problema noastră, seturile complete noastre de probleme. Dar în inima tuturor de aceasta, toată tehnologia este de fapt doar o adunatura de plug-in-uri. Totul este un plug-in care pot fi modificate, extins, puteți crea propriile plug-inuri, aveți posibilitatea să eliminați alte plug-in-uri, de a modifica într-adevăr destul de o mulțime de funcționalitate de Cloud 9 IDE existent. Deci aceasta este o existent Cloud 9 mediu. Aceasta este într-adevăr doar default Cloud 9 mediu. Și să ia o privire la modul în care de fapt este diferit de IDE CS50. Deci aceasta este IDE CS50. Observați că există unele vizuale Schimbări între regulat Cloud 9 mediu și IDE CS50. Mai exact, veți observa o pereche de modificări. Mai întâi de toate, nu e mai puțin elementele de meniu pentru a începe cu. Există de fapt o modalitate de pe care le poate schimba asta. Se numește Mode simplă. În mod implicit, modul Simplu este activat, și care simplifică unele dintre elementele de meniu. Se elimină o parte din cele mai avansate, pentru că sincer, o mulțime de studenții care vin în și nu trebuie să știți despre unele dintre cele mai avansate caracteristici nu sunt copleșiți cu un buchet de opțiuni. Dar noi nu oferă capacitatea de a lua off acele așa-numite roți de formare și scoateți că schele, astfel încât oamenii poate deveni mai obișnuiți să caracteristicile avansate ale IDE. Imediat la drept de care, nu e de asemenea, un buton de depanare, care în standardul Cloud 9 mediu este pur și simplu numit alerga. Dar în mod implicit, ne-am configurat butonul depanare în IDE CS50 pentru a aduce debugger, compila automat codul sursă, conectați debugger la GDB-- subiacent și din moment ce rulează pentru a efectua debugging-- și alte măsuri deasemenea. De asemenea, fereastra terminalului de la very-- sau mai degrabă terminalul tab la secțiunea consola de la fereastră în partea de jos a ecranului, a fost redenumit pentru a fi pur și simplu terminal. Întrucât, în standardul Cloud 9 mediu, arată, de fapt, rularea cerere. În acest fel, se simplifică, din nou, GUI, doar un pic. Am adăugat, de asemenea, unele butoane la dreapta sus a IDE pentru a afișa unele informații de bază despre instanța de bază. Și, de asemenea am eliminat o din opțiunile de pe elementele din extrema dreaptă. Deci, toate acestea este pusă în aplicare nu prin modificarea în mod necesar Cloud 9 codul sursă, dar în schimb, printr-o pereche de plug-in-uri pe care le-am implementat pe tot parcursul anului trecut sau cam asa ceva. Și Cloud 9 a găzduit și are rulează în spațiul de lucru CS50. Sau, mai degrabă, în spații de lucru care sunt desemnate ca CS50 IDE. Deci într-adevăr că este principala diferență între Cloud 9 și CS50 Spații de lucru. Există, de asemenea, în activul suport exemplu, schimbarea primar este că am instala unele elemente pre-configurate, cum ar fi GDB, și alte lucruri de bază pe care am creat, cum ar fi Actualizare 50, și un cuplu de alte măsuri care fac întreaga experiență un pic mai mult unificat. Dar, in general, aceasta este doar o modificarea unui sistem existent că Cloud 9-a creat pentru noi. Ceea ce am de gând să arată un pic mai târziu este modul de a crea de fapt o plug-in oarecum de bază, care ne permite să introduceți ceva în sistemul de meniuri, și deschide un dialog. Și dacă avem suficient timp, vom fapt vedem cum putem popula că dialogul cu unele informații de la instanța de bază. Pentru ca noi să ajungem la acea punct, hai să vorbim mai întâi un pic despre arhitectura Cloud 9. Deci modul în care suntem obișnuiți pentru a interacționa cu Cloud 9 este în întregime prin clientul. Am deschide un browser web, am tastați în CS50.io. Noi în cele din urmă, după autentificare, sunt prezentate cu IDE. Dar dau seama că nu e o pereche de pași care de fapt ne-a ajunge la acest punct. Primul lucru este că clientul meu, browser-ul web, la cerere și după autentificare, încarcă GUI și plug-in-uri la unele CDN, de la unele Content Delivery Network. Acest lucru poate fi deschis oriunde. Și acest lucru este de fapt separat de la instanța de bază. Este important să realizăm că acest lucru este de fapt, doar o grămadă de fișiere statice. E o grămadă de JavaScript care este descărcat de pe CDN pe browser-ul meu web, și toate GUI pe care le vezi here-- aceasta este într-adevăr key-- toate GUI pe care le vezi aici se execută pe partea de client. Tot ceea ce vezi în Cloud 9 spațiul de lucru este, de fapt rula în browser-ul. Și nimic din ce le trimiteți de-a lungul a instanței de bază comunică cu instanta de-a lungul acest al doilea canal separat, și este apoi salvat pe că exemplu docher. Deci motivul pentru care vreau să spun aceasta este o instanță docher este faptul că tehnologia de bază nu utilizează mașini virtuale, dar în schimb este cu ajutorul unui tehnologie numita docher, care, practic, cel mai aproape de allows-- analogie este o mașină virtuală. Dar este subtil diferit în care există o mulțime de oportunități pentru a rula o combinație de diferite docher cazuri pe o singură mașină. Și acestea pot fi filate la într-o succesiune foarte rapidă. Nu este destul de mult diferențiere strictă între diferite instanțe Docker așa cum există în mașini virtuale, dar încă există o mulțime de diferențiere și separare între aceste cazuri diferite. BINE. Astfel încât cele două etape de aici că sunt importante pentru a realiza este că, atunci când vom merge la CS50.io, suntem descărcarea GUI și plug-in-uri, care sunt scrise în JavaScript, pe pentru browser-ul sau pentru a browser-ul. Și aceasta este, poate, un cuplu megabytes valoare de informații. În acel moment, odată ce are GUI încărcate și plug-in-uri au început, apoi începe să comunice cu instanța docher, care nu trebuie neapărat să fie același server. Acum există o excepție de la acest lucru. Putem avea de fapt atât mecanism de livrare pentru GUI sine și instanța docher în toate de același server, care este, de fapt ceva ce facem pentru versiunea offline a Cloud 9. Acest lucru nu este ceva ce ne-am mediatizat foarte mult in aceasta toamna, dar avem, de asemenea, o deconectat versiune care vă permite să descărcați un ambalat Versiunea de toate aceste lucruri și vă va permite să rulați Cloud 9 într-un mediu online. Mutarea aceasta pe nor și pe masina locala are un anumit impact. În special, pe care nu le mai au capacitatea de pentru a partaja spațiul de lucru cu alții. Tu nu mai poate deschide spațiul 9 din, și IDE CS50, de pe orice computer și a vedea aceleași fișiere care ai fost de lucru cu înainte. Dar în loc funcționează în întregime pe cont propriu mașină locală fără a fi nevoie de acces la internet. Dar, totuși, chiar și în acest model, chiar dacă avem o mașină virtuală care este în esență rulează aceste lucruri. Avem un server separat, care este livrarea, în esență, Cloud 9 conținut, și apoi ne-am au o instanță docher care este responsabil pentru comunicarea cu care IDE pentru capătul din spate. BINE. Deci întreaga GUI este scris în întregime în JavaScript folosind Node.js și Cloud 9 SDK, care vom ajunge la doar un minut. Și toate plug-in-uri sunt rulate pe partea de client. Deci, haideți să se concentreze apoi un pic prin asumarea că acest prim pas a de fapt finalizat cu succes, si uita-te numai la această instanță docher. Deci, în acest caz, aceasta este modul standard de gândire despre a face Cloud 9 plug-in dezvoltare este că aveți de gând să fi scris cod care va fi rulat în browser-ul utilizatorului, și aveți posibilitatea de a utilizarea unor API-uri pentru a comunica cu care stau la baza instanță docher, rula un cod acolo, și face orice că ați putea doriți să faceți. Deci, aceasta va fi contextul că vom fie folosind pentru restul această discuție. Și chiar a păstra acest model în minte. Acest lucru va fi foarte important în doar câteva minute. Există o serie de link-uri Vreau să-ți arăt. Mai întâi de toate, Cloud 9 a furnizat destul de o mulțime de documentare asta e destul de bun, care arată modul în care de a face plug-in dezvoltare de bază. Deci, dacă te duci la această adresă URL, cloud9-sdk.readme.io, veți vedea documentația acolo. Și o mulțime de informații ca esti pe cale de a vedea poate fi, de asemenea, găsite acolo, plus mai mult. Puteți găsi, de asemenea open source Versiunea de Cloud 9 la acest URL, github.com/c9/core, pe care le folosim ca parte a versiunii deconectat de IDE, astfel că va fi capabil de a avea În același Cloud 9 experiență, dar într-un mod offline. In regula. Deci, haideți să aruncăm o privire la o real Cloud 9 spațiu de lucru aici. Și din nou, vreau să subliniez o serie de lucruri. Acest lucru este, aici, un IDE normală CS50. Și am dezactivat-o mai puțin Modul confortabil în meniul Vizualizare astfel încât să pot vedea toate din opțiunile de meniu. Ceea ce vreau să vă arăt dreapta acum este o serie de lucruri. În primul rând, dacă mă duc în Preferințele și apoi click pe Plug-in manager, și de tip în CS50 aici, putem vedea că există, de fapt, un cuplu de CS50 plug-inuri care au fost instalate și rulează noastră de a permite modificările pe care le-am văzut de IDE CS50. Chiar acum există, în esență, două pluginuri care se execută. Există unul numit simplu, care este modul simplificat vă permite să reducă numărul de opțiuni de meniu de-a lungul partea de sus, și au această așa-numitele Mod mai puțin confortabil. Și apoi există, de asemenea CS50 Statistici, care este, poate, doar puțin greșit în botezarea. Deoarece aceasta este ceea ce vă arată informațiile despre spațiul de lucru de bază. Se injecteaza aceste butoane de-a lungul partea din dreapta sus. Este, de asemenea, injecteaza un element de meniu în element fereastră, în meniul Window aici, CS50 IDE Info. Și este responsabil pentru instantierea acest dialog pe care l-am văzut aici, cu toate informațiile pe care suntem obișnuiți să vadă într-un IDE CS50 spațiu de lucru. BINE. Deci nu e de fapt una mai plug-in care ne-am dezvoltat, de asemenea. Și există o serie de altele care De asemenea, nu au lansat public. Dar unul dintre ei este de ansamblu plug-in care permite GDB să funcționeze. Deci unul dintre aspectele Cloud 9 este faptul că acestea au oferit deja acest GUI pentru a pune în aplicare un program de depanare. Și unul dintre plug-in-uri care am creat, practic, cârlige GDB cu acest GUI versiune pe baza de un program de depanare. Și este responsabil pentru medierea toate a cererilor pe care un utilizator ar putea avea, între pas cu pas peste sau crearea de puncte de întrerupere sau ceva a lungul acestor linii, la traducerea că pentru comenzi care GDB pot înțelege, emiterea aceste comenzi la GDB. Și de îndată ce GDB emite un răspuns, atunci interpretăm ca și actualizarea GUI după cum este necesar. Asta e, probabil, unul dintre mai complicat de plug-in-uri, astfel încât în ​​loc ceea ce suntem O să se concentreze pe ziua de azi este de fapt de Statistici plug-in, si vom vorbi un pic despre Simple, de asemenea. Așa că am menționat mai înainte, și chiar vreau pentru a face foarte, foarte clar, că din nou, toate acestea pe care suntem văzând aici este în esență operează pe partea de client. Noi facem vedea o fereastră terminal jos, și că, desigur, dacă ne scrieți în comenzi în că, care va fi apoi eliberat la instanța de bază. În mod similar, în cazul în care vom deschide un nou fișier și tip niște chestii în el și salvați-l, acel fișier va fi salvat pe instanța de bază. Dar editorul în sine, acest fereastră terminal sine, este pus în aplicare în toate JavaScript și este tot un plug-in pe care le poate interacționa cu, și, prin urmare modifica. Există o mulțime de extensibilitate aici. Am recomandăm să luați o privire la contul Cloud 9 de GitHub pentru a vedea cantitatea mare de plug-in-uri care sunt disponibile, și cât de bine scris o mulțime de codul este pentru extensibilitate. Deci nu e ceva pe care vreau să menționez despre aceasta, de asemenea, care este că există o mulțime de-- există o mulțime de funcționalități care este furnizate în preferințele fereastră, pe care am văzut doar am a făcut aluzie la doar acum câteva minute. Unul dintre lucrurile pe care le putem face ca IDE dezvoltatori, sau ca Cloud 9 dezvoltatori, este de a injecta de fapt, unele Panouri de preferință al nostru. Deci modul simplu, sau modul mai puțin confortabil, și, de asemenea, informația IDE, sau statisticile plug-in, are fiecare unele preferinta Panouri care ne permit să modifice comportamentul fiecăruia dintre aceste. Veți observa că, dacă mă duc la Preferințele și du-te la setările de utilizator, există o filă CS50, o care spune că informațiile IDE. Și pot schimba informații rata de refresh. Efectiv, ce se întâmplă în statisticile plug-in- este că fiecare n-secunde, unde n-secunde este definit de această preferință panou, informațiile sunt preluate fiind de la instanța de bază, fiind trimis Înapoi la partea de client, plug-in este atunci interpretarea informațiilor de la instanța care stau la baza și actualizarea GUI după cum este necesar. Putem vedea că acum acest lucru este setat la 30 de secunde, și asta e implicit. Dar pot schimba cu siguranta cat de repede se întâmplă acest lucru doar prin modificarea acestei valori. Acum, unul dintre cele mai interesante lucruri este că acest panou preferință, GUI, este de fapt doar o versiune GUI de o mulțime de setări de bază care sunt prezentate în JSON. Deci, dacă mă duc, de exemplu, în cadrul CS50 meniu IDE, sau meniul Cloud 9, în funcție de care Versiunea te uiți la, și du-te la unul dintre acestea settings-- în acest caz, proiectul settings-- Setări de proiect în acest caz se aplică la toate setările pentru asta spațiu de lucru. Întrucât se aplică setările de utilizator la toate spațiile de lucru care le-ar putea avea în cont. Deci, la fel ca o paranteza aici, să fie foarte clar, există o separare între două pentru că, deși în mod implicit am au un spațiu de lucru, care este IDE CS50, dacă au fost să faceți clic pe mica ta avatar aici și du-te la tabloul de bord, veți găsi pe care le poate de fapt crea spații de lucru suplimentare, de asemenea. Puteți vedea aici că nu trebuie un IDE 50 spațiu de lucru, și, de asemenea în sensul prezentei seminar, un spațiu de lucru numit spațiu de lucru, care este chiar aici. Oricum, am preferințe diferite. Fiecare dintre acestea poate avea preferințele proiect separat, dar preferințele utilizatorului sunt împărțită între toate spațiile de lucru mele. Apropo, acest lucru este de asemenea, foarte la îndemână, dacă doriți să creați un spațiu de lucru cu diferite opțiuni de personalizare. Și este foarte util pentru a crea un spațiu de lucru nou. Și alege una care ar putea fi pre-configurate într-un alt mod, poate pentru PHP specific, sau Django specific. Sau chiar doar personalizat. Spațiul de lucru CS50 șablon este cea care ne folosi acest instalează automat Actualizare 50 și toate setările pe care le avem acolo, inclusiv toate plug-in-uri pe care le avem pentru IDE CS50. BINE. Dar să revenim la asta. Deci, din nou, există proiecte setări, iar acestea sunt cele care ne uitam la aici. Și observa că există sunt o grămadă de setări, multe dintre ele corespund preferință panouri, dar nu toate dintre ele. Dar putem vedea că aici, în astea-- oh nu, am pus-o în setările utilizatorului? Poate l-am pus în setările utilizatorului. Și aceasta, aici vom merge. În setările de utilizator, putem vedea că avem o secțiune CS50, și aceasta este scris a de aceste Cloud 9 plug-inuri care le-am implementat. Exista cel simplu la corespund cu simplu plug-in, și statisticile una care corespunde celei GUI bazat versiune a panoului preferinta. Rata de reîmprospătare, în acest caz, este setat la 20 secunde. Acest lucru este, sperăm că, începuturile unor informații că vom vedea de fapt, într-un mic bit mai multe detalii, momentan. BINE. Deci, să spunem că vrem să de fapt, ajunge până la ea. Noi înțelegem că toate lucrurile care se întâmplă pe partea de client se face de fapt pe browser-ul, care înseamnă că orice plug-in-uri pe care am scrie vor fi scrise cu browser-ul în minte. Și dacă chiar vreau să fac nimic pe spațiul de lucru, Eu va trebui, probabil, să inițieze un fel de comunicare între browser-ul și spațiul de lucru pentru a fi sigur că este, de fapt realizat. Dar să spunem că acum Vreau să trecem la o și de a crea de fapt, prima mea plug-in. Ei bine, modul în care v-ar putea a face acest lucru este, de fapt destul de ușor. Este dat în Cloud 9 SDK. Dar e să vă luați Numele spațiu de lucru existent, care este URL-ul pe care le au la partea de sus a bara de, și se adaugă următoarele la acesta. ? SDK = 1 & Debub = 2. Acum, ceea ce acest lucru se întâmplă pentru a permite este că SDK-ul = 1 va stabili de fapt SDK Mod de adevărat, ceea ce va permite câteva lucruri suplimentare. Și depanare = 2 va permite mesaje de eroare să fie un pic mai mult detaliată. Și așa că, dacă aduce JavaScript consola în fila dezvoltator Chrome, vă va fi de fapt în măsură să vezi mult mai multe informații decât v-ar altfel. Așa că am recomanda de cotitură atât de aceste în același timp, că într-adevăr este util de a avea toate aceste Informatii aditionale. Este important de remarcat, totuși, că pornirea depanare la valoarea de 2 înseamnă că este foarte verbose, și este de fapt oarecum vizibil va încetini IDE-ul, mai ales atunci când încărcare sau atunci când fac faci sarcini grele. Deci, doar ține minte asta. Este util pentru dezvoltare, dar ar putea să nu doriți să-l aibă pe tot timpul. Deci, haideți să facem asta, de fapt. Dar în acest caz, am de fapt deja înființat un spațiu de lucru cu aceasta. Să vedem, SDK = 1 & depanare = 2. Cu un cuplu de plug-in-uri sperăm deja instalat. In regula. Deci, acum că am pornit depanare SDK Mod, observați că suntem în modul de depanare, astfel încât să putem uita la instrumentele dev pentru a vedea orice erori, pe care le voi face offscreen. Putem vedea că există o grămadă de erori aici. Acum e de fapt destul de comun pentru Cloud 9 să aibă o pereche de erori, și nu aș face griji despre ei până când vezi ceva care ar putea fi specifice plug-in care se întâmplă să fie crearea. Deci, aici, de exemplu, vom obține o pereche de 404s-- nu a fost găsit. Vedem nu putem încărca unele informații de pe instanța de bază în sine. Și există o grămadă de suplimentare informații, dar cele mai multe din prezentul suntem de fapt de gând să ignore pentru acum. Deoarece aceasta este destul de comun pentru un spațiu de lucru de a avea doar o pereche de erori. BINE. Am de gând să se mute din acest drum și mă întorc aici. Și acum calea usoara, frumos lucru despre care au acest dezvoltator Modul activat este faptul că mi permite pentru a crea cu ușurință un nou plug-in. Deci, în timp ce înainte de fapt, nu a au aceasta noua optiune plug-in este disponibil, care putem vedea dacă mă întorc la Modul meu de dezvoltator non aici, nu exista nici o nou plug-in. Prin activarea modului SDK, am au un nou plug-in este disponibil și pot crea cu ușurință unul. În acest caz, există un cuplu de diferite opțiuni, simple, un plug-in gol, un plug-in full, instalare, Cloud 9 pachet. Hai să alegeți un gol plug-in pentru acum astfel încât să putem vedea o foarte versiune simpla a unui. Acum, observați că de-a lungul partea stângă că e acolo este acum ceva în Favorite, care este listarea un cuplu de plug-inuri care sunt acum disponibile pentru mine. Dacă aș extinde că, vom putea vedea cele. Acum vreau să observați ceva aici, care este faptul că acest lucru nu este de fapt conținută în directorul spațiului de lucru pe care stau la baza Ubuntu meu exemplu, dar este conținut de pe hard disk. Și în cazul în care acest lucru se află, pentru că acest lucru este foarte util să știm, mai ales dacă ai de gând să face nimic cu Git, în cazul în care acest lucru se află este într-un dosar .c9, / plugin-uri. Deci, dacă mă duc acolo, putem vedea că acum lista de plug-in-uri, care sunt aici Meciuri lista plug-in-uri pe care am a văzut pe partea stângă a spațiului de lucru meu. Acum, în mod implicit, și acest este un fel de ciudat, în mod implicit atunci când am crea o Noul plug-in într-un spațiu de lucru, creează acest plug-in, care prin default are un nume de o subliniere. În general, care ar putea cauza unele probleme. Deci pasul următor foarte pe care am efectua, de obicei, este doar pentru a elimina că special plug-in și se lasă numai plug-in simplu, care a fost acolo la început, plugin.simple. Și asta e singurul care e acolo. BINE. Deci, ce inseamna acest fapt arata ca? Ei bine, acest lucru este, din nou, un pachet de activarea JavaScript- care include unele fișiere, inclusiv un fișier plugin.js, în cazul în care conținutul principal al este situat meu plug-in, un fișier package.json, care de fapt specifică unele metadate despre acest plug-in, cum ar fi care autorul este, orice informații suplimentare despre aceasta, o Descrierea plug-in, și așa mai departe. Și, de asemenea, în mod implicit, aceasta creează un fișier README gol, și un fișier de test gol pentru tine de a a crea unele documente suplimentare, și un ham de testare în cazul în care doriți să fac asta. Deci, haideți să aruncăm o privire mai întâi la, foarte repede, la fișierul package.json. Este destul de ușor pentru a merge doar prin l și completați în domeniile de acest care le-ar dori să completeze, ca furniza un nume, da o descriere, repeta numărul de versiune fiecare atât de des, să ofere un autor pentru fiecare persoană care contribuie, adăugați-le la contribuabilii secțiune, iar restul de acest lucru vă poate destul de mult doar lăsați așa cum este pentru acum. Exista un singur lucru care este important de observat, că în secțiunea plug-in-uri, există o cheie numit plug-in. Și acest lucru este potrivit pentru numele fișierul JavaScript numit plugin.js. Deci, acesta este modul în Cloud 9 știe, atunci când aceasta citește acest fișier package.json, care de JS fișiere pentru a încărca de fapt. Dacă am crea fișiere JS suplimentare sau doresc pentru a redenumi acest fișier JS de la plug-in, Am, de asemenea să-l schimbe în fișierul package.json. Orice întrebări din partea publicului? Nu. Că o persoană care este în urma cu mine până acum. BINE. Așa că de fapt am creat o cuplu de plug-in-uri deja, Cred că, în acest spațiu de lucru. Deci, haideți să scăpăm de unele dintre acestea, se adaugă SDK = 1 & depanare = 2, reîncărcați această spațiu de lucru, și să vedem dacă putem au aceste plug-in-uri acum. C9 / plugin-uri. Începem. Putem vedea acum în C9 mele / plugin-uri de acest o, ne-am plugin.1 și plugin.2. Deci vom să-și intensifice doar până the-- doar crește cantitatea de dificultate în fiecare dintre aceste plug-in-uri. Dar aici dacă am crea un nou plug-in, Pot adauga la favorite. Și voi șterge doar a celor de la sistemul de fișiere de bază. Să elimina asta. Acum, dacă am deschis primul meu plug-in, și plugin.js deschise, putem vedea aici activului suport versiune simpla a unui plug-in. Lasă-mă să mă întorc de fapt la acest spațiu de lucru alte pentru că puteți cel puțin, a se vedea aici, ceea ce un plug-in gol, de fapt arată. Deci sub capota, acest lucru arata foarte asemănător cu tehnologie numita, Cred, e RequireJS. Observați că acest lucru nu într-adevăr uite, poate, la fel ca și alte unele JavaScript fișiere care am putea-am văzut. Dar, în loc, există o serie de doar Liniile de bază pe care o are de fapt. Toate aceste lucruri este primul interpretat de IDE, dar nu este de fapt desfășura până specificat. Și să-ți spun despre atunci când înseamnă, de fapt într-o clipă. Dar observați că aici există o linie main.consumes în linia 2, și această listează toate plug-in-uri că acest plug-in este dependentă de. Deci în mod implicit, noi, probabil, nu pentru a avea orice dependențe pe alte plug-in-uri, dar atunci când avem nevoie de fapt, să depinde de caracteristicile furnizate de alte plugin-uri în IDE, avem nevoie pentru a lista aceste plug-in-uri în linia main.consumes. Și atunci trebuie să legarea lor la codul de de mai jos, pe care vă voi arăta în doar un moment despre cum putem face asta. Main.provides dă un nume pentru acest plug-in că alte plugin-uri ar putea utilizați în linia lor consumă. Deci, în acest caz, mi plug-in este doar setat acolo în mod implicit, și ar trebui să se schimbe ca să fie aplicabile propria noastră plug-in, cum vom vedea în momentul doar. Acum, aici, în funcția de principal, această funcție principală este, de fapt a alerga și interpretate, dar ea nu face de fapt foarte mult. Doar se totul înființat, dar aceasta nu începe de fapt plug-in, în ciuda ceea ce sună numele cum ar fi. Asta se întâmplă de fapt prin o secvență de metode care sunt cuprinse pe parcursul acestui plug-in. Deci, dacă am defila în jos, putem vedea că avem un ciclu de viață în cazul în care pe unele sarcină eveniment numit, sau un eveniment numit descărcare, unele evenimente se întâmple de fapt. Este într-adevăr aici, unde ca plug-in începe că aceste metode sunt numite. Deci, hai sa fie un pic mai concret despre acest lucru și uita-te la un exemplu. Deci, aici pentru plugin.1, ceea ce Suntem practic de gând să faci este de a crea un element de meniu numit CS50 Seminar Dialog 1-- pentru că avem două them-- și vom să-l injecta în meniul Window. Și când ne-am faceți clic pe ea, suntem va deschide un dialog care ne arată câteva informații foarte de bază. În acest caz, doar o lume salut. Deci, acesta este un foarte simplu salut dialog lume că putem pune în aplicare ca un plug-in în Cloud 9. Deci, hai sa vedem cum acest fapt arată. Vom pas prin ea, doar relativ rapid, astfel ne-am sa te uiti la următoarea plug-in, de asemenea. Observați că aici suntem consuma o varietate de plug-in-uri. Suntem consumatoare de un dialog plug-in, comenzi, meniuri, și UI. Se pare ca eu de fapt sunt consumatoare dialog de două ori, așa că am posibilitatea de a elimina acest lucru. Și observați că modul în că eu le-conectare, acest este un fel de metadate care este spune sistemul plug-in ce cerințe sunt de fapt necesare pentru acest plug-in pentru a încărca. Este, de asemenea, important să rețineți că ordinea în care plug-in-uri sunt încărcate nu este garantată. Dar ceea ce este garantat este că, dacă am specifica unele plug-in ca o cerință, că plug-in vor fi încărcate înainte de aceasta este încărcată. Deci asta înseamnă că, dacă dvs. plug-in necesită pe unele funcționalități furnizate de altceva în IDE, trebuie asigurați-vă că consumă dvs. plug-in că plug-in, astfel încât dependențele sunt sigur de a vă crea plug-in, sau instantiate dvs. plug-in, numai după că există cadru existente. Deci, aici, am menționat metadate la managerul plug-in, care dintre ele am de gând să consume. Și în funcția principală de aici, Am de gând să se conecteze apoi codul meu la aceste plug-in-uri importate. Deci, eu sunt doar de gând să crea unele variabile care se potrivi cu numele fiecăruia dintre cei atat care le pot referi foarte repede de-a lungul codul meu. Motivul pentru care sunt importatoare de dialog este pentru că vreau meu plug-in pentru a acționa ca un dialog plug-in. Și modul în care sunt capabili a face acest lucru este, desigur, conecta codul meu la dialogul plug-in prin importarea ea și apoi prin specificarea de crearea unei noi variabile dialog și conectarea la importate plug-in. Și apoi prin definirea mea plug-in ca un nou dialog. Deci, în initializare, am doriți să definiți meu plug-in. Și această variabilă numită plug-in veți vedea este doar utilizate în mod obișnuit de-a lungul Cloud 9 plug-inuri. Am de gând să instantiate un nou dialogul cu unele atribute, da un nume specific, spun că este posibil ca utilizatorii pentru ao închide. Că vom arăta un pic x în colțul din dreapta sus, sau un pic butonul din colțul din dreapta jos. Indiferent dacă sunt sau nu pot selecta text din l, ceea ce titlul de dialog care ar fi, și așa mai departe. Acum, acest definește doar dialogul, dar nu încă o arate. De fapt, trebuie să se definească o acțiune pentru a fi afișate. Și din nou, vă încurajez să să ia o privire la Cloud 9 SDK, pentru că există o varietate dialoguri și sunt foarte bine documentate. Puteti vedea diferite tipuri că există, și să le utilizeze în orice plug-in aveți în minte. Acum nu va fi un secțiune de încărcare, și această sarcină Funcția ce vă reamintesc este folosit de ciclul de viață plug-in să instantiate de fapt tot și de a lua totul gata pentru a merge. Acum, cand aceasta plug-in sarcini, eu nu vrei sa arate imediat un dialog, pentru că acest plug-in se va încărca împreună cu restul IDE. Și când am încărca că IDE, nu vreau dialogul să apară automat. Vreau doar să arăt când dau click pe opțiunea de meniu în meu articol de meniu Window că voi adăuga la ea momentan. Deci sunt două etape distincte aici trebuie să se întâmple. Trebuie să creați o comandă, și comanda va fi responsabil pentru, de fapt arătând dialogul pe Cloud 9 IDE. Și atunci am să vă conectați, am trebuie să creați o fereastră nouă meniu element, care ruleaza comanda. Așa că, atunci când fac clic pe acea fereastră element de meniu, comanda este apoi run și, prin urmare este indicat dialog mea. Și astfel încât acesta este de fapt o destul de mod frumos de gândire despre el. Pentru că în primul rând că pot crea o comandă al cărui nume este CS50 Seminar Dialog 1, care oferă unele context general pentru ea. Și cel mai important bit aici este de a observa atributul EXEC, care enumeră o funcție care va fi numit în mea plug-in, atunci când această comandă se execută. Deci această comandă este un fel de un-- e doar un nor de arbitrar 9 comandă care este disponibil la orice Cloud 9 plug-in. Dar funcția propriu-zisă, care este O să sun când această comandă se execută este funcția spectacol de dialog în fișierul meu plugin.js. Și putem vedea de fapt, aceste plug-in-uri și lista de comenzi care sunt disponibile la noi în Preferințe, derulați tot drumul down-- să vedem, de fapt, nu vedem acest lucru acum? Plug-in manager, nu, cred că e Eu-- cu siguranta pe aici pe undeva. Ei bine, există o listă de comenzi undeva, dar eu trebuie să aibă, Am uitat unde este. Deci OK, vom merge mai departe. In regula. Deci, avem o listă de comenzi care sunt disponibile pentru noi, și aceste comenzi sunt acestea doar arbitrar Cloud 9 comenzi care rulează cod specific. Deci, doar ține minte asta, că vom rula caseta de dialog spectacol funcționează momentan. Acum, când am de fapt, doriți să adăugați un meniu articol, pot adăuga elementul de cale, și doar să specificați exact unde vreau să fie, Window / CS50 Seminar Dialog 1. Și în acel moment, vreau pentru a crea un nou element care este de gând să executați o comandă, CS50 Seminar Dialog 1. Observați că din nou, aceasta este Cloud 9 comandă Am creat chiar deasupra. Acum vreau de asemenea, să a crea un pic de compas, și așa că am putea face același lucru în linia următoare. Acum s-ar putea observa că în calitate de parte de a defini acest element de meniu, există un număr de asociate cu aceasta, care de fapt spune unde Vreau acel element de meniu să fie situat în lista de meniuri. Dar s-ar putea observa că nu face de fapt vezi orice numere cu Aceste meniuri, în mod implicit. Deci nu e un lucru mic ascuns care putem face, o mică schimbare a URL-ul nostru. Deci, în plus față de SDK = 1 & depanare = 2, Meniul Voi setat la 1-- și, sperăm, este meniul, nu meniuri. Oh, e meniuri = 1. Stai asa. Și ce vom vedea pe reîncărcarea că IDE este că eu sunt încă în modul de depanare, dar acum nu mai sunt numere asociate cu toate meniurile. Și acest lucru vă spune exact ceea ce numărul este atunci când sunteți încercarea de a injecta ceva nicăieri în acest sistem meniu. Deci, în meniul Window, nu pot vedea că elementul 45 este Colaborare, și punctul 38 înainte de a fi de instalare. Așa că, atunci când vreau să injecta un articol între cele două, Mi-ar alege doar un număr între aceste două elemente. Așa că am ales 41 și introdus seminarul meu Dialog punctul 1 de meniu la acea locație. Și de aceea acest număr care apare aici este numărul 41. Acesta este amplasarea acestei element de meniu din meniul Cloud 9. Acum În mod similar, am vrut pentru a crea un divizor și adauga astfel că există un frumos diviziune între fiecare dintre aceste meniu articole. Așa că am adăugat că la locație 43. Până în prezent, atât de bine, sper? Deci, acum să se uite la, de fapt codul specific în spectacol de dialog Asta e de fapt responsabil pentru deschiderea de dialog această fereastră. Defilare în jos, văd că vreau pentru a avea acest dialog funcție spectacol, și este extrem de simplu. Mă duc pentru a rula spectacol Metoda pe variabila plug-in. Și amintiți-vă că am definit această plug-in variabila de mai sus ca un dialog. Deci, bar plug-in, în acest caz, este acest obiect pe care l-am definit pe plan intern. Și că va fi un nou dialog conținute în acest plug-in. Și așa am referit de fapt acest lucru plug-in-variabile în multe locuri într-un tipic Cloud 9 mediu de dezvoltare. Vom vedea aici. Observați că pe măsură ce defilați în jos, există cicluri de viață suplimentare. Deci observați că acestea răspund la evenimente care sunt arse de acest obiect, acest obiect dialog. În mod implicit, nu e încărca și descărca, care sunt disponibile pentru toate Cloud 9 plug-inuri. Dar în caz de acest dialog, nu e un alt eveniment care poate foc, precum și numit Trage, care este concediat atunci când este pe cale de a fi trase pe ecran, în primă instanță a dialogului arată. Deci, atunci când este de fapt va fi prezentat, acolo va oferă pentru a ne ceva HTML. Și folosind doar standard de Practicile HTML Putem injecta unele informații foarte simplu, lumea noastră salut, în acest dialog. Deci, dacă atunci parcurgeți în sus, putem vezi apoi procesiunea de lucruri că este loc. În primul rând am creat o comandă Cloud 9 că, atunci când executat de Cloud 9, este de gând să foc această funcție. Va să ruleze această funcție numit arată dialog, care le-am scris în codul meu. Am creat un element de meniu și atașat la acesta că aceeași comandă că, atunci când se face clic pe acel element în meniul, care comanda este apoi executați și care funcție este apoi executați. Și în interiorul funcției sunt doar de gând să sun the-- Sunt doar de gând să execute spectacol metodă de acest plug-in, care este de gând să primul apel metoda remiză, și merg la foc această metodă jos de mai jos, trage tratare a evenimentului, în ciclul vieții noastre. Și apoi va de fapt arată dialogul. Există, de asemenea o metodă de ascundere, astfel încât dacă am nevoie de posibilitatea de a ascunde dialog meu, pot să fac același lucru. Așa că e destul de mult pentru a obține toate acestea pentru a lucra. Observați că este dacă vom derula în jos în plus există un API publică înghețare. Acest fapt doar spune că am doresc aceste metode pentru a în mod eficient fie publice, dar nu overwriteable în afara contextului de acest plug-in. Și de mai jos, chiar în partea de jos, este, probabil, ultimul lucru că avem cu adevărat nevoie să plătească multă atenție aici, care este că vom înregistra nostru plug-in cu numele C9 Seminar 1, și obiectul plug-in. Care, după cum veți aminti, este că plug-in care plug-in obiect pe care am fost definirea de-a lungul totalitatea acestei surse cod. Și C9 Seminar 1 este șir care am promis să furnizeze, la partea de sus din această definiție. BINE. Deci, haideți să-l sol un pic și să vedem dacă putem face ceva un pic mai interesant. Acum, acest lucru este doar atât de mare. Adică, acest lucru este, de fapt destul de rece, care, în atât de puține linii de cod, putem modifica IDE existent și adaugă un element de meniu existent sau pentru a adăuga un nou element de meniu, se adaugă o comandă, și arată un dialog, și doar o grămadă de funcționalitate care există. Este într-adevăr destul de mare. Dar nu face o mulțime, pentru că nu se poate comunica cu Ubuntu care stau la baza exemplu. Deci, haideți să spun că de fapt, vrei sa afli unele informații despre care stau la baza Ubuntu exemplu, ca statisticile plug-in nu. Deci, haideți să aruncăm o privire la o pic mai multe informații despre modul în care statisticile plug-in lucrari. Și, de fapt, ea este foarte asemănătoare cu aceasta. S-ar putea aminti că există un dialog. S-ar putea aminti că există unele informații care este arată doar de-a lungul bara de meniu de-a lungul în partea de sus, care sperăm că ești acum obtinerea unui gust de modul în care am implementat acest lucru, doar prin introducerea elemente de meniu la specific puncte și de instantierea unui dialog și afișarea că dialogul. Dar noi nu au demonstrat încă vă cum o putem conecta la o comandă din care stau la baza exemplu Ubuntu. Deci, haideți să aruncăm o privire apoi la plugin.2, care face exact acest lucru. Vom deschide plugin.js, care este codul pentru această. Dar sub meniul Window, dacă dau click pe dialog 2, putem vedea că se spune acest în schimb, salut CS50, care nu arata tot ce ispititoare, nu? Cu excepția, ma uit la acest. Lasă-mă să schimbe ceva aici. Am de gând să merg pentru a-mi spațiu de lucru și schimbare seminar să spună altceva, cum ar fi Buna ziua, Dan. Am de gând să-l închidă și salvați-l. Iar acum am de gând să re-rula meu articol de meniu dialog. Și observați că acesta are acum schimbat ceea ce se spune. Salut, Dan. Se pare că am făcut ceva în jos aici, în care stau la baza Ubuntu instanță fără nici o manipulat cod care se execută din nou numai pe partea de client. Deci, există evident un fel de comunicare ce se întâmplă aici. Acum, acest lucru este în cazul în care o mulțime de putere de Cloud 9 SDK vine în, este că, în acest plugin.2, ne poate provoca de fapt, un apel să se întâmple la exemplu de bază, și a alerga unele comanda arbitrare. Deci, în acest caz, am de fapt a creat un script bash foarte simplu în spațiul de lucru mea a sunat Seminar. Așa că haideți să-mi deschid asta. Și putem vedea că se pare ca acest lucru. E doar o petrecere foarte simplu script al cărei unic scop în viață va fi la ecou în acest text, Buna, ziua, Dan. Sau înainte de a, a spus Buna ziua, CS50. Și asta e tot ce va face. Deoarece aceasta este acum un comandă care pot rula. Pot să-l rula de fapt aici. Putem vedea că de fapt este doar o comandă pe care am alerga natural. Pot cere-mi plug-in pentru a executa acest comandă pe spațiul de lucru de bază și analiza informațiilor care a fost întors de la el, și de a face ceva cu el, și să modifice mi plug-in și comportamentul pe care am au în mea plug-in, ca rezultat. BINE. Deci, hai sa vedem cum se intampla acest lucru. Am văzut acest lucru foarte simplu Script batch Seminar pe care am [Inaudibil], care poate rula de fapt. Și acum să vedem modificările care sunt necesare pentru a lega acest lucru împreună cu fereastră de dialog, și rula. Deci, aici vom face destul de cam același lucru așa cum am văzut mai înainte. Dar observați că printre lucruri pe care le-am consumat now-- în plus față de dialogul, care din nou se întâmplă să fi făcut de două ori, care nu este necessary-- în plus la dialogul și comenzile și meniurile plug-in-uri, care au fost necesară în primul pentru mine pentru a defini o nouă comandă și injecta un element în meniuri, Am, de asemenea, acest proc plug-in. Și acest proc plug-in permite ne manipula procesele de pe instanța de bază. Am conectat după ce am a spus că-mi plug-in este nevoie. Am apoi conectat la codul, așa cum am văzut în funcția principală. Din nou, am de gând să inițializarea dialogului meu. Și dacă ne-am muta în jos acum, ne-am se poate vedea cum acest lucru este diferit. Funcția de încărcare este același, așa este doar de gând să creeze o comandă și de a crea un element de meniu și conectați acel element de meniu pentru a comanda. Dar dacă acum ne defilați jos pentru a arăta dialog, putem începe pentru a vedea unde apar diferențe. Avem spectacol dialog funcție, care este doar de gând să arate dialogul. Dar când am arăta dialog, și în cazul în care metoda de spectacol se numește, se trage funcția de tragere. Și am de gând, apoi să specificați o parte a conținutului din interiorul asta. Deci, eu sunt doar de gând să a crea un div, oferă să-l un text de bază, Buna, ziua, lume. Dar observați că aici eu sunt va atașa la acesta un ID. Și linia următoare am de gând pentru a găsi că ID folosind JavaScript, și se păstrează ca obiect într-o altă variabilă că Mă duc pentru a apela conținut. Deci, ori de câte ori am acum conținut, tot ce trebuie să faceți este doar modifica HTML interior acest obiect. Și HTML dialogul va apoi sa fie modificati corespunzator. Deci, atunci când acest plug-in este apoi se arată, care se poate întâmpla iar acest lucru este un eveniment nou care este nou la acest plug-in, dar se întâmplă în fiecare plug-in cu dialogul, atunci când acest lucru este acum prezentat, Am de gând pentru a apela un funcție numită aduce informatii. Și aceasta functie este carnea de ea aici. Am de gând să folosească acest proc plug-in care am descris mai înainte, care de altfel, este de fapt doar o bibliotecă Node.js că Cloud 9 utilizează aici. Astfel încât să puteți de fapt privi în sus despre modul în care acest funcționează dacă te duci în Documentație Node.js și privi în sus fișierul exec metodă pentru procesele de acolo. Am de gând pentru a rula acest specific comandă, acasă Ubuntu spațiu de lucru seminar, care este aceeași una, care aceeași comandă pe care am creat înainte. Furnizează un curent directorul de lucru, doar pentru a fi în siguranță ultra În ceea ce privește contextul în care acest lucru se execută. Și odată ce a fost completat și returnat, Am de gând pentru a rula acest funcție numită de ieșire analizare. BINE. Deci, aceasta este apoi va executa o comandă pe local, sau mai degrabă instanța Ubuntu la distanță. Când mă întorc niște informații, sunt apoi merge pentru a apela o funcție separată numita ieșire Parse, care are această semnătură aici, err, stdout, stderr, și a efectua unele de calcul în acest sens. Deci, dacă am primit o eroare de un fel la toate, Eu va verifica de fapt, pentru a vedea dacă eroare de fapt, are unele date. Și dacă da, atunci voi modifica interior HTML de acel obiect de conținut, care este vă amintiți, am conectat la dialogul la instantiattion de care dialog, sau la primul desen acestui dialog. Am de gând să spun doar că o eroare sa întâmplat. Acum, acest lucru este prea simplistă. Valoarea de eroare va de obicei conțin ceva care a fost util, probabil un număr de eroare și o Eroare de script-ul în sine. Sau în cazul în care script-ul scris ceva de eroare standard, că datele vor fi populate în acest parametru, de asemenea. Și aș putea fi un pic mai atent la ceea ce eroare Sunt de fapt arată de oameni. Dar acest exemplu simplist este destul de bun pentru acum pentru a vedea cel puțin modul în care toate aceste funcții. Altfel, dacă există nici o eroare, atunci eu sunt doar O să furnizeze RAW ieșire din această funcție în HTML interioară a acestui conținut elementul, apoi actualizați-mi plug-in și-l arate aici. Și asta e destul de mult tot ce este necesare pentru a obține acest pentru a rula. Și astfel sa ne gandim despre atunci cum funcționează acest, în general. Când am încărcat primul acest plug-in, la fel ca primul plug-in, Am de gând să adăugați o comandă care este disponibile pentru orice, la orice plug-in- în Cloud 9, numit Seminar CS50 Dialog 2, a cărui responsabilitate va fi de a rula acest spectacol dialog, care este vă amintiți, va arăta de fapt, dialogul că am solicitat de mai jos. Apoi voi adăuga că comandă într-un meniu fereastră astfel încât să aibă acces la acest lucru. Și când că dialogul este solicitat să fie prezentat, Voi aduce unele informații de la care stau la baza Ubuntu instanță utilizând comanda fișier exec. Scuza-ma. Odată ce este returnat și primesc unele informații, apoi pe partea de client din nou, voi fi capabil pentru a analiza producția de comanda și actualizarea interior HTML a elementelor că ne-am conectat la mai devreme. Și cu asta, avem apoi au acest complet funcțional plug-in care-mi permite să aducă informații din acest script arbitrară care le-am creat pe exemplu nostru de bază. Dar, din nou, este foarte și într-adevăr importantă cheie pentru a separa de unde fiecare aceste lucruri se întâmplă, că avem toate acestea partea clientului cod care se executa in browser-ul, și nu are încă acces la sistemul de fișiere de bază până când vom rula de fapt, unele dintre acestea comenzi care sunt furnizate de către Cloud 9 SDK ca proc, iar unele altele care ne permit să citească unele date, sau cititi unele fișiere dacă avem nevoie de a face ceva de genul. Acum, acesta este un exemplu oarecum simplu. Există și alte lucruri pe care le ar dori, probabil, să facă la fel de bine. De exemplu, poate că de fapt doriți să salvați unele informații la preferințele. Sau poate vrem să adăugați un nou panou de preferință sau ceva de-a lungul acestor linii. Apoi că este ceva ce poate lua o privire la Cloud 9 SDK pentru a obține mai multe informații cu privire la. Dar aceasta este cu adevărat suficient pentru a începe. Deci, doar pentru a fi un pic mai concret despre modul în care unele dintre aceste lucruri funcție, am vrut să arate doar încă un exemplu, care este doar un de codul din 50 Statistica plug-in. Și acest cod este, în principiu bazat pe aceste exemple care le-ați văzut de fapt, dar are unele mai multe garanții și are ceva mai mult de complexitate pentru pentru a realiza unele dintre lucrurile suplimentare care ne-o dorim pentru a atinge. De exemplu, dacă vreau să fiu capabil de a salva unele setări, apoi m-am nevoie pentru a avea acces la setările plug-in, și de fiecare dată vreau pentru a citi unele setări, Pot, de exemplu, atașați la diverse Evenimente în setările plug-in. Deci, de fiecare dată setările este de culoare roșie, de exemplu, în propria mea plug-in, dacă am de gând să citesc ceva setările de la depozitarea salvat preferințele utilizatorului, atunci pot stabilit valori implicite pentru o anumită locație, de preferință specifică, în care JSON opțiuni de stil fișier care le-am salvat anterior, pe care le-am văzut mai devreme. Și dacă am de gând să scrie unele setări să-l, apoi m-am can-- sau de îndată ce vom detecta că setările au fost scrise sa-- deoarece de exemplu, cei care Setările au fost modificate de către utilizator fie direct în setările fișier, sau panoul de preferință a schimbat setările fișier direct, atunci Pot actualiza de fapt, unele din codul sau actualiza comportamentul meu plug-in bazate pe acele modificări care au a avut loc pe fișierul de setări, de asemenea. Dar, de fapt, restul este destul de mult acest care le-ați văzut deja. Am adăuga unele, poate ceva care este nou. Așa că am adăuga un fișier preferință, sau mai degrabă un geam preferință, la fereastra preferințe, care din nou puteți afla mai multe informații în Cloud 9 SDK-mi citesc. Dar totul altceva este destul de mult, destul de similar cu ceea ce am văzut mai înainte, doar cu unele verificarea erorilor suplimentare și unele protectii suplimentare iar unele funcționalități suplimentare ce oferă toate a diferitelor lucruri pe care le-am văzut. Dacă aveți de fapt nu văzut încă, s-ar putea va intrebati ce activului suport comandă este în 50 Statistica fereastra. Este de fapt funcția. Ei bine, este-- oh, la naiba. O secundă. Stai asa. BINE. Lasă-mă să se deplaseze asta astfel încât să putem, de fapt vedem ce se întâmplă atunci când am tip 50 Statistica. Observați că, în acest caz, comandă care nu mai am pune este într-adevăr din nou, doar script-ul care este O să ieșire o grămadă de informații în format JSON. Și motivul pentru care o facem în acest fel este că, deoarece noi funcționează, pentru că ne-am scris codul partea de client în JavaScript, putem foarte usor doar analiza obiecte JavaScript, și într-adevăr să fie capabil de a manipula aceste obiecte la fel ca ne-ar orice alt obiect JavaScript. Și astfel încât acesta este un foarte convenabil mod de a furniza anumite informații de la care stau la baza Ubuntu instanță, cum ar fi numărul de versiune, gazda nume, dacă un server este de ascultare, ce serverul este, așa mai departe și așa mai departe, și analiza care foarte ușor și foarte repede în plug-in, care este apoi merge să ne arate toate aceste informații. Deci, din nou, o perspectivă cheie aici pentru a păstra în minte este această separare între instanța de bază, și, de asemenea, în cazul în care codul se incarca. Că atunci când am un client, e prima încărcare. Doar acest fișier JavaScript static de la undeva, probabil CDN de un anumit fel. Nu avem cu adevărat să aibă grijă prea mult despre acest prim pas. Știm doar că este rulează pe partea de client și atunci am de gând să comunica cu acest caz docher. Că vom face acest lucru prin Cloud 9 SDK. Noi nu avem de fapt capacitatea, folosind JavaScript sau Node.js, pentru a scrie direct la ea. Noi folosim doar cele existente SDK API-uri pentru a face această acțiune pentru noi. Și din nou, unul dintre cele mai lucrurile cu adevarat importante este că atunci când am creat acest lucru, când am creat acest plug-in, și, ca am de lucru pe ea, o dintre cele mai importante lucruri de făcut este de a aduce consola JavaScript. Deoarece deoarece acest lucru este tot operează pe JavaScript, pe partea de client, dacă am folosi un console.log method-- asa ca pentru a arăta un exemplu aici. Să încercăm să modifice acest simplu plug-in pentru a vă conecta, de asemenea, unele date. Și vom adăuga în dotare standard. Deci, haideți să se schimbe, care să fie chiar aici. Acum, când am executa console.log, tineti minte că, deoarece aceasta se execută pe partea de client, Voi vedea acest lucru în propria mea JavaScript consola, care este modul în care voi putea apoi să încerca pentru a depana și de depanare unele dintre problemele pe care le am. Observați că, din cauza Eu sunt în mod SDK, eu sunt apoi capabil de a manipula pluginuri pe acest caz. Deci, chiar dacă este salvate pe acest exemplu, aceasta este singurul exemplu de care anterior regulă fiind încălcat, în cazul în care Cloud 9 SDK va trage de fapt plug-in-uri de la care stau la baza instanță și apoi executați-le. Astfel că, în acest fel, eu sunt apoi capabil de a manipula și a construi unele plug-in-uri aici. Dar pentru mine pentru a vedea modificari pentru acest plug-in, pentru ca este pe partea de client, Am nevoie pentru a salva ca plug-in și apoi reîncărcați întregul spațiul de lucru, astfel încât noul plug-in este atunci descărcat pe clientul meu, pe meu browser web, iar apoi este utilizat. Așa că acum, când fac clic pe acest seminar Dialog 2, încă vezi asta. Dar acum sperăm în JavaScript meu dialog, ar trebui să vedem my-- aștepta, stai asa. S-ar putea avea pentru a deschide un dialog proaspăt. Noi ar trebui să vedeți datele mele primite aici. Date primite, Buna ziua, Dan, care este vă amintiți, a fost o operațiune care console.log am solicitat în plug-in. Deci, această descriere atunci pe care am menționat mai înainte, acest dialog, sau acest diagrama mai degrabă, că menționat mai înainte este ceea ce se întâmplă. Dar există o importantă excepție numai pentru dezvoltare, care este faptul că plug-in s-ar putea de fapt în sine fi stocate pe instanța docher temporar, deoarece probabil Cloud 9 nu vrea să fie în măsură să manipula obiecte de pe CDN lor. Și Cloud 9 clienti, la încărcare, va găsi aceste plug-inuri în asta. C9 plug-in dosar, și încărcați cele. Dar acestea sunt încă întâmplă numai pe partea de client. Deci, atunci acest lucru este doar AN excepție care apare numai pentru dezvoltarea de Cloud 9 plug-inuri. Dar restul de time-- și motivul pe care dorim să adevarat ciocan acest home-- se datorează faptului că cele mai multe ori acest lucru este O să fie difuzate de la CDN, și doar de gând să fi rulat pur de pe partea de client. În mod normal, nu va fi nici o interacțiunea cu plug-in, sau nu are nici măcar să fie orice motiv că s-au Pluginuri sunt de fapt stocate pe care stau la baza exemplu docher, cu excepția cazului de această dezvoltare SDK. Deci, din nou, acest schimbă doar ușor datorită faptului că suntem execută modul SDK. Va apoi a încărca cele plug-in-uri de la dezvoltare, și singurul scop de aici este, astfel încât Eu pot folosi Cloud 9 pentru a face dezvoltare pentru Cloud 9 plugin-uri. Dar chiar și așa, acest lucru nu schimbă din nou cum funcționează toate astea. Este încă în curs de a alerga în întregime pe partea de client. Aceasta înseamnă doar că ori de câte ori vreau să crea Cloud 9 plug-in în Cloud 9, Am crea aceste plug-in-uri, le-a pus în mea. C9 dosar / plugins în casa mea director, asigurați-vă că eu sunt în modul SDK, reîncărca pagina de fiecare data cand de fapt face modificări la care plug-in, și să vedem ce se întâmplă în consola mea JavaScript. Doar gestiona JavaScript meu consola pentru a se asigura că orice depanare informații pe care am loc de consola, sau orice altceva care ar putea apărea din cauza unor erori pe care le-am scris în codul meu sau altele asemenea, apare acolo. Și cu asta, este într-adevăr suficient pentru a începe, cred, cu plug-in-uri Cloud 9. Luând în special o privire la SDK documentația care Cloud 9 oferă. Este o modalitate foarte bună de a obține început, și foarte ușor crearea unor plug-in-uri pentru Cloud 9. Și cu asta, vreau să mulțumesc pe toți foarte mult pentru aderarea mine. Sper că te vei distra scris plug-inuri pentru Cloud 9. Îmbunătățirea Poate plug-inuri ca acum avem, sau poate chiar adăugând putea funcționa de dumneavoastră. Așteptăm cu nerăbdare să vedem ceea ce este să creați. Până atunci, la revedere.