>> DAN ARMENDARIZ: Hallo, en welkom by 'n CS50 seminaar oor aanpas Cloud 9,
en die CS50 IDE.
So vandag gaan ons net praat 'n bietjie
oor 'n paar van die tegniese inligting wat
gaan agter die argitektuur wolk 9, en hoe
Ons het 'n paar van die plug-ins geïmplementeer as deel van Cloud 9 tot CS50 IDE verskaf.
So laat ons net spring reg in en begin praat oor plug-ins.
>> So plug-ins is regtig op die kern van die Cloud 9 ervaring.
Wolk 9 is die onderliggende tegnologie wat voorsiening maak vir ons die IDE,
en ook die terminale venster by die onder, saam met die workspace--
die Ubuntu workspace-- dat ons gebruik om al ons projekte saam te stel
en voer ons probleem stelle, voltooi ons probleem stelle.
Maar in die hart van al dit, al die tegnologie
is regtig net 'n klomp van die plug-ins.
Alles is 'n plug-in wat kan verander word,
verleng, kan jy skep jou eie plug-ins,
jy kan ander verwyder plug-ins, om werklik te verander
nogal 'n baie van die funksies van die bestaande Cloud 9 IDE.
>> So, dit is 'n bestaande Wolk 9 omgewing.
Dit is eintlik net die standaard Cloud 9 omgewing.
En neem 'n blik op hoe dit eintlik verskil van die CS50 IDE.
So dit is die CS50 IDE.
Let daarop dat daar is 'n paar visuele veranderinge tussen die gereelde Cloud 9
omgewing en die CS50 IDE.
Spesifiek, sal jy sien 'n paar van die veranderinge.
Eerste van alles, daar is minder menu items om te begin.
Daar is eintlik 'n manier dat jy dit kan verander.
Dit is bekend as eenvoudige modus.
>> By verstek, is eenvoudig af aangeskakel, en wat vereenvoudig sommige van die menu items.
Dit verwyder sommige van die meer gevorderde kinders,
want eerlik, 'n baie studente wat kom in
en het nie nodig om te weet oor 'n paar van die meer gevorderde funksies
is nie oorweldig met 'n klomp van die opsies.
Maar ons doen die vermoë om te neem af diegene sogenaamde opleiding wiele
en verwyder wat steierwerk sodat mense
kan meer gewoond te raak die gevorderde funksies van die IDE.
Onmiddellik na die reg van daardie, is daar
ook 'n debug knoppie, wat in die standaard Wolk
9 omgewing gewoon genoem termyn.
Maar by verstek, het ons ingestel die debug knoppie in die CS50 IDE
om die debugger bring, Die bron-kode outomaties stel,
verbind die debugger om die onderliggende GDB--
en sedert daardie hardloop om te presteer die debugging-- en 'n paar ander stappe
ook.
Ook die terminale venster by die very-- of eerder die terminale
blad by die afdeling konsole by die venster by die heel onderkant van die skerm,
herdoop om net terminale wees.
Terwyl dit in die standaard Wolk 9 omgewing,
dit eintlik toon die hardloop aansoek.
Hierdie manier, dit vereenvoudig, weer, die GUI, net 'n bietjie.
>> Ons het ook bygevoeg 'n paar knoppies na die boonste regterkant van die IDE
om 'n paar basiese inligting te wys oor die onderliggende byvoorbeeld.
En ook het ons een verwyder van die opsies op die items
uit die heel regs.
So al is dit nie geïmplementeer deur die wysiging van die Cloud 9 noodwendig
bronkode, maar plaas deur middel van 'n paar
van plug-ins wat ons geïmplementeer Gedurende die afgelope jaar of so.
En Cloud 9 aangebied het en het wat in die CS50 werkspasie.
Of liewer in die werkruimtes wat is aangewys as CS50 IDES.
>> So regtig dit is die belangrikste verskil tussen die Cloud 9 en die CS50
werkruimtes.
Daar is ook, in die onderliggende Byvoorbeeld, die primêre verandering is
dat ons 'n paar te installeer pre-ingestel items soos GDB,
en 'n paar ander basiese dinge wat ons geskep het, soos Update 50,
en 'n paar van die ander stappe wat maak die hele ervaring 'n bietjie meer
verenigde.
Maar algehele, dit is net 'n verandering van 'n bestaande stelsel
dat Cloud 9 geskep het vir ons.
Wat ons gaan wys 'n bietjie later
is hoe om werklik te skep 'n ietwat basiese plug-in wat
kan ons iets in die steek menu stelsel, en maak 'n dialoog.
En as ons genoeg tyd, sal ons eintlik
sien hoe ons kan vul wat dialoog met inligting
van die onderliggende byvoorbeeld.
Ten einde vir ons om te kry wat punt, laat ons eerste praat 'n bietjie
oor die argitektuur van Cloud 9.
>> So die manier waarop ons gebruik om interaksie met Cloud 9
is heeltemal deur die kliënt.
Ons maak 'n webblaaier, ons tik in die CS50.io.
Ons het uiteindelik, na verifikasie, word aangebied met die IO.
Maar besef dat daar ' 'n paar stappe
wat eintlik kry ons hierdie punt.
Die heel eerste ding is dat my kliënt, die webblaaier,
op versoek en na verifikasie, laai die GUI en die plug-ins
van sommige CDN, van sommige Inhoud Delivery Network.
Dit kan eerlik enige plek wees.
>> En dit is eintlik afsonderlike van die onderliggende byvoorbeeld.
Dit is belangrik om te besef dat dit eintlik net 'n klomp van die statiese lêers.
Dit is 'n klomp van die JavaScript wat afgelaai word vanaf die CDN
op my webblaaier, en al die GUI dat jy
sien here-- dit is regtig key-- al die GUI wat jy hier sien
is loop op die kliënt kant.
Alles wat jy sien in die wolk 9 werkspasie
is eintlik loop in die leser.
En enigiets wat jy stuur saam na die onderliggende byvoorbeeld
gekommunikeer met die instansie langs hierdie tweede aparte kanaal,
en word dan gered op dat Docker byvoorbeeld.
>> So die rede dat ek sê dit is 'n Docker byvoorbeeld
is dat die onderliggende tegnologie is nie die gebruik van virtuele masjiene,
maar in plaas daarvan is die gebruik van 'n tegnologie genaamd Docker,
wat basies allows-- die naaste analogie is 'n virtuele masjien.
Maar dit is subtiel verskillende in dat daar
baie geleenthede om 'n loop kombinasie van verskillende Docker
gevalle op 'n masjien.
En hulle kan word gespin in 'n baie vinnige opvolging.
Dit is nie heeltemal die meer streng onderskeid
tussen verskillende Docker gevalle as daar in die virtuele masjiene,
maar nog steeds daar is 'n baie differensiasie en skeiding
tussen hierdie verskillende gevalle.
OK.
So het die twee stappe wat hier is belangrik om te besef
is dat wanneer ons gaan na CS50.io, ons is die aflaai van die GUI en die plug-ins,
wat geskryf is in JavaScript, op om die leser of in die leser.
En dit is miskien 'n paar megagrepe werd van inligting.
Op daardie punt, wanneer die GUI het gelaai en die plug-ins het begin,
dan is dit begin om te kommunikeer met die Docker byvoorbeeld, wat nie
noodwendig dieselfde bediener.
>> Nou is daar 'n uitsondering op hierdie.
Ons kan eintlik beide die leweringsmeganisme vir die GUI self
en die Docker byvoorbeeld in almal van dieselfde bediener, wat
is eintlik iets wat ons doen vir die regte weergawe van Cloud 9.
Dit is nie iets wat ons het gepubliseerde baie Dit val,
maar ons het nie ook 'n offline weergawe wat
kan jy 'n aflaai verpak weergawe van al hierdie dinge
en toelaat dat jy Wolk hardloop 9 in 'n regte omgewing.
>> Beweeg dit af en op die wolk jou plaaslike masjien het 'n impak.
In die besonder, het jy geen meer die vermoë
om jou werkspasie met ander te deel.
Jy nie meer kan oopmaak Cloud 9 uit, en die CS50 IDE, vanaf enige rekenaar
en sien dieselfde lêers wat jy werk met tevore.
Maar in plaas dit werk geheel en al op jou eie plaaslike masjien
sonder toegang tot die internet.
Maar nog steeds, selfs in daardie model, selfs al het ons een virtuele masjien
wat in wese hardloop hierdie dinge.
>> Ons het 'n aparte bediener wat lewering wese die Cloud 9
inhoud, en dan sal ons 'n Docker byvoorbeeld
wat verantwoordelik is vir die kommunikasie met daardie IDE vir die agterkant.
OK.
So die hele GUI is geskryf heeltemal in JavaScript
gebruik van Node.js en die wolk 9 SDK, wat ons kry in net 'n minuut.
En al die plug-ins is loop op die kliënt se kant.
So laat ons fokus dan 'n bietjie deur te aanvaar
dat dit die eerste stap het eintlik suksesvol voltooi,
en kyk net na hierdie Docker byvoorbeeld.
>> So in hierdie geval, is hierdie is die standaard manier
dink oor die doen Cloud 9 plug-in ontwikkeling is dat jy gaan
word kode skryf wat sal in die gebruiker se webblaaier te loop,
en jy het die geleentheid met behulp van 'n paar APIs om te kommunikeer
met die onderliggende Docker byvoorbeeld hardloop paar code daar en doen niks
wat jy dalk wil om te doen.
So dit gaan wees die konteks dat ons sal
gebruik word om vir die res van hierdie praat.
En hou net hierdie model in gedagte.
Dit sal baie belangrik wees in net 'n paar minute.
Daar is 'n paar van die links wil ek om jou te wys.
Eerste van alles, het Cloud 9 verskaf nogal 'n baie dokumentasie
dit is redelik goed, wat wys hoe om basiese plug-in die ontwikkeling te doen.
So as jy gaan na hierdie skakel, cloud9-sdk.readme.io,
jy sal die dokumentasie daar te sien.
En 'n baie van hierdie inligting dat jy oor om te sien
kan ook daar gevind, plus nog baie meer.
Jy kan ook die open source vind weergawe van Cloud 9 op hierdie URL,
github.com/c9/core, wat ons gebruik as deel van die regte weergawe van die IDE,
sodat jy in staat is om te hê sal dieselfde Cloud 9 ervaring,
maar in 'n regte manier.
Alles reg.
So laat ons neem 'n blik op 'n werklike Cloud 9 werkspasie hier.
En weer, ek wil om te wys uit 'n paar van die dinge.
Dit is, reg hier, 'n normale CS50 IDE.
En ek het 'n minder afgeskakel gemaklik af onder die kieslys
sodat ek kan almal sien van die opsies.
Wat ek wil jou regterkant wys is nou 'n paar dinge.
Eerstens, as ek gaan in die voorkeure en dan
klik op Plug-in-bestuurder, en tik in CS50 hier
ons kan sien dat daar, in werklikheid, 'n paar van CS50 plug-ins wat
geïnstalleer en ons loop om staat stel om die veranderinge wat ons het
gesien vir die CS50 IDE.
>> Nou is daar in wese twee plug-ins wat uitgevoer word.
Daar is een wat geroep Simple, wat is die vereenvoudig af wat
kan jy die getal te verminder spyskaart opsies langs die top,
en hulle het hierdie sogenaamde minder gemaklik af.
En dan is daar ook CS50 Statistiek, wat is dalk net effens Verkeerd benoem.
Want dit is wat wys jou die inligting
oor die onderliggende werkspasie.
Spuit dit hierdie knoppies langs die bo regs.
Spuit dit ook 'n menu-item in die venster item, in die menu venster
reg hier, CS50 IDE Info.
En dit is wat verantwoordelik is vir die instantiëren hierdie dialoog wat ons hier gesien het,
met al die inligting wat ons is gewoond om te sien in 'n CS50 IDE
werkspasie.
OK.
So daar is eintlik 'n meer plug-in dat ons so goed ontwikkel het.
En daar is 'n paar van die ander wat ons het ook nie publiek vrygestel.
Maar een van hulle is die algehele plug-in wat dit moontlik maak GDB om te funksioneer.
So een van die aspekte van Cloud 9 is dat hulle reeds voorsien
hierdie GUI te implementeer 'n debugger.
En een van die plug-ins wat ons het basies geskep
haak GDB met hierdie GUI gebaseerde weergawe van 'n debugger.
En is verantwoordelik vir bemiddeling al van die versoeke wat 'n gebruiker kan hê,
tussen versterking oor of skep inspeksiepunte of enigiets
langs die lyne, om die vertaling wat om opdragte wat GDB kan verstaan ​​nie,
uitreiking daardie opdragte te GDB.
En so gou as GDB reik 'n reaksie, dan
ons dat interpreteer en werk die GUI soos nodig.
>> Dit is waarskynlik een van die meer ingewikkelde
van die plug-ins, so in plaas wat ons gaan om te fokus op vandag is in werklikheid
die Statistiek plug-in, en ons sal praat 'n bietjie oor Simple, as well.
So ek voorheen genoem, en ek wil regtig om baie, baie duidelik dat weer maak,
al hierdie dat ons hier sien is in wese
wat op die kliënt kant.
Ons sien 'n terminale venster hieronder, en dat, natuurlik,
as ons tik opdragte in dat wat sal dan uitgereik word
om die onderliggende byvoorbeeld.
Net so, as ons 'n nuwe lêer oop te maak en tik 'n paar dinge in dit en stoor dit,
dat 'n lêer sal gered word op die onderliggende byvoorbeeld.
>> Maar die redakteur self, dit terminale venster self,
is al in werking gestel JavaScript en is al 'n plug-in
dat ons kan kommunikeer met, en dus verander.
Daar is 'n baie rekbaarheid hier.
Ek beveel die neem van 'n blik op Cloud 9 se GitHub rekening
die oorgrote hoeveelheid sien plug-ins wat beskikbaar is,
en net hoe goed geskryf baie van die kode is vir rekbaarheid.
So daar is iets wat ek wil noem
oor hierdie so goed, wat is dat daar 'n baie of-- daar
'n baie van die funksies wat voorsien in die voorkeure
venster, wat ons nou net gesien het verwys na 'n paar minute gelede.
>> Een van die dinge wat ons kan doen as IDE ontwikkelaars, of as Cloud 9 ontwikkelaars,
is om werklik te spuit sommige voorkeur panele van ons eie.
So het die eenvoudige modus, of die minder gemaklike af,
en ook die IDE inligting, of die statistieke plug-in,
het elke paar voorkeur panele wat ons toelaat om te verander
die gedrag van elk van daardie.
Jy sal sien dat as ek gaan na die Voorkeure en gaan na instellings wat
daar is 'n blad CS50, een wat sê IDE inligting.
En ek kan die verander inligting verfris tempo.
>> Effektief, wat gebeur in die statistieke plug-in
is dat elke N-sekondes, waar N-sekondes word gedefinieer deur hierdie voorkeur
paneel, word inligting gehaal van die onderliggende byvoorbeeld gestuur
terug na die kliënt se kant, die plug-in is dan
interpretasie van die inligting van die onderliggende byvoorbeeld
en die opdatering van die GUI soos nodig.
Ons kan sien dat die reg nou is dit gestel tot 30 sekondes, en dit is die standaard.
Maar ek kan beslis verander hoe vinnig dit gebeur net
deur die wysiging van hierdie waarde.
>> Nou een van die interessante dinge is dat hierdie voorkeur paneel, GUI,
is regtig net 'n GUI weergawe van 'n baie van die onderliggende instellings
wat aangebied word in into.
So as ek gaan, byvoorbeeld, onder die CS50 IDE menu, of die Cloud 9 menu,
afhangende van watter weergawe jy op soek is na,
en gaan na een van hierdie settings-- in hierdie geval,
die projek settings-- die projek instellings in hierdie geval
geld vir alle instellings vir hierdie een werkplek.
AANGESIEN gebruikers instellings van toepassing om al die werkruimtes
dat jy kan hê in jou rekening.
>> So, net soos 'n eenkant hier, om ekstra duidelik te wees,
daar is 'n skeiding tussen die twee want hoewel by verstek ons
een werkplek, wat is die CS50 IDE, as jy
was om te klik op jou klein avatar hier en gaan na dashboard,
sal jy vind dat jy kan eintlik skep bykomende werkruimtes as well.
Jy kan hier sien dat ek het nie 'n IDE 50 werkspasie, en ook
vir die doeleindes van hierdie seminaar, 'n werkplek
genoem werkspasie, wat is reg hier.
So in elk geval, ek het verskillende voorkeure.
Elkeen van hierdie mag hê aparte projek voorkeure,
maar die gebruiker voorkeure is gedeel tussen al my werkruimtes.
By the way, dit is ook baie handig as jy
wil 'n werkplek te skep met verskillende aanpassing opsies.
En dit is baie handig om skep 'n nuwe werkplek.
En kies die een wat kan wees vooraf ingestel in 'n ander manier,
miskien vir PHP spesifiek of Django spesifiek.
Of selfs net persoonlike.
Die CS50 werkspasie sjabloon is die een wat ons
gebruik wat outomaties installeer Update 50 en al die instellings
dat ons daar, insluitend al die plug-ins wat ons vir die CS50 IDE.
OK.
Maar laat ons terug kom.
So weer, daar is projekte instellings, en dit is die kinders
dat ons is op soek na hier.
En agterkom dat daar is 'n klomp van die instellings,
baie van hulle ooreenstem met voorkeur panele, maar nie almal van hulle.
Maar ons kan dit hier sien, in this-- oh Nee, ek het dit op die gebruikers instellings?
Miskien het ek dit in die gebruiker instellings.
En dit, hier gaan ons.
In die gebruikers instellings, kan ons sien dat ons 'n CS50 artikel,
en dit word geskryf om deur hierdie Cloud 9 plug-ins
wat ons het geïmplementeer.
Daar is die eenvoudige een tot ooreenstem met dié eenvoudige plug-in,
en die statistieke wat een ooreenstem met dié GUI gebaseer
weergawe van die voorkeur paneel.
Die refresh rate, in hierdie geval, is ingestel om 20 sekondes.
>> Dit is alles, hopelik, die begin van 'n paar inligting
dat ons eintlik sien in 'n bietjie bietjie meer detail, 'n oomblik.
OK.
So kom ons sê ons wil eintlik kry neer.
Ons verstaan ​​dat al die dinge wat gebeur op die kliënt kant
is eintlik gedoen op die leser, wat beteken dat enige plug-ins wat ek skryf
gaan geskryf word met die leser in gedagte.
En as ek wil eintlik te doen enigiets op die werkplek,
Ek sal dalk te inisieer 'n soort van kommunikasie
tussen die leser en die werkplek om seker te wees
dat dit eintlik vermag.
Maar laat ons sê dat dit nou Ek wil om te kry om dit te
en eintlik maak my eerste plug-in.
Wel, die manier wat jy wil in staat wees om te doen wat eintlik redelik maklik.
Dit is wat in die Cloud 9 SDK.
Maar dit is om te neem jou bestaande werkspasie naam, wat
is die URL wat jy het op die top van jou bar, en voeg die volgende om dit te.
?
SDK = 1 & debub = 2.
Nou wat dit gaan stel is dat die SDK = 1 sal eintlik het die SDK
af waar, wat in staat sal stel 'n paar van bykomende dinge.
En debug = 2 sal fout boodskappe toelaat te wees 'n bietjie meer verbose.
>> En so as jy bring die JavaScript konsole in jou Chrome blad ontwikkelaar,
sal jy eintlik in staat wees om sien 'n baie meer inligting
as jy sou anders.
So ek raai beide van hierdie draai op dieselfde tyd, want dit is werklik
nuttig om dit alles te hê Bykomende inligting.
Dit is belangrik om daarop te let, maar dat draai op debug om die waarde van 2
beteken dat dit baie verbose, en dit is eintlik
sal ietwat merkbaar stadiger jou IDE, veral wanneer die laai
of wanneer doen nie swaar take.
Dus net dit in gedagte hou.
Dit is nuttig vir die ontwikkeling, maar jy mag nie wil hê om dit op al die tyd te hê.
>> So laat eintlik dit te doen.
Maar in hierdie geval, ek het eintlik reeds 'n werkplek met hierdie.
So laat ons sien, SDK = 1 & debug = 2.
Met 'n paar van die plug-ins hopelik reeds geïnstalleer.
Alles reg.
So nou dat ek het op die SDK debug af, sien dat ons in debug modus
sodat ons kan kyk na die dev gereedskap om te sien enige foute wat ek sal agter skerm te doen.
Ons kan sien dat daar is 'n klomp van foute hier.
Nou is dit eintlik redelik algemeen vir Wolk 9 om 'n paar van die foute,
en ek wil nie bekommerd oor hulle totdat jy
iets sien wat dalk spesifiek te wees om die plug-in
dat jy gebeur skep.
>> So hier, byvoorbeeld, kry ons 'n paar van 404s-- nie gevind nie.
Ons sien ons nie 'n paar te laai inligting uit die onderliggende byvoorbeeld
self.
En daar is 'n klomp van die addisionele inligting, maar die meeste van hierdie is ons
eintlik gaan om te ignoreer vir nou.
Want dit is mooi algemeen vir 'n werkplek
om net 'n paar van die foute.
OK.
Ek gaan hierdie skuif uit die pad en terug te kom hier.
En nou het die maklike manier, die lekker ding oor met hierdie ontwikkelaar
geaktiveer is dat dit laat my om 'n nuwe plug-in maklik te skep.
>> So terwyl voordat ek het eintlik nie hierdie nuwe opsie plug-in wat beskikbaar is,
wat ons kan sien as ek gaan terug na my nie ontwikkelaar modus hier,
daar is geen nuwe plug-in.
Deur gebruik te maak van die SDK af, ek het 'n nuwe plug-in beskikbaar
en ek kan maklik 'n.
In hierdie geval, daar is 'n paar van verskillende opsies, eenvoudig,
'n leë plug-in, 'n volledige plug-in, installeerder, Cloud 9 bondel.
Kom ons kies net 'n leë plug-in vir nou
sodat ons 'n baie kan sien eenvoudige weergawe van die een.
>> Sien nou dat langs die linkerkant dis daar is nou
iets onder gunstelinge, wat is die lys van 'n paar van plug-ins
wat nou beskikbaar is vir my.
As ek dit uit te brei, sal ons in staat wees om die te sien.
Nou wil ek julle aan om in kennis iets hier, wat
is dat dit nie eintlik vervat binne die werkplek gids
op my onderliggende Ubuntu byvoorbeeld maar dit is vervat op die hardeskyf.
En waar dit geleë, want Dit is baie nuttig om te weet,
veral as jy gaan enigiets te doen met Git,
waar dit geleë is in 'n .c9 gids, / plugins.
So as ek daar gaan, kan ons nou sien dat die lys van plug-ins wat hier
ooreenstem met die lys van die plug-ins wat ek sien aan die linkerkant van my werkplek.
>> Nou by verstek, en dit is soort van vreemde,
deur verstek wanneer ek 'n nuwe plug-in in 'n werkplek,
dit hierdie plug-in wat deur skep verstek het 'n naam van 'n onderstreping.
Algemeen wat dalk veroorsaak dat sommige probleme.
So die volgende stap dat ek gewoonlik verrig
is net om te verwyder wat spesifieke plug-in
en laat slegs die eenvoudige plug-in wat was daar aanvanklik, plugin.simple.
En dit is die enigste een wat daar is.
OK.
>> So wat beteken dit eintlik lyk?
Wel, dit is, weer, 'n JavaScript pakket
wat sluit 'n paar lêers, insluitend 'n plugin.js lêer, waar
die belangrikste inhoud van my plug-in is geleë,
'n package.json lêer, wat eintlik spesifiseer
sommige metadata oor hierdie plug-in, soos wie die skrywer is,
enige bykomende inligting oor dit, 'n beskrywing van die plug-in, en so aan.
En ook by verstek, is dit skep 'n leeg README lêer,
en 'n leë toets lêer vir jou skep 'n paar addisionele dokumentasie,
en 'n toets harnas as jy wil om dit te doen.
>> So laat ons net 'n blik op die eerste, baie vinnig, by die package.json lêer.
Dit is maklik genoeg om net te gaan deur en dit in die gebiede van hierdie te vul
wat jy graag wil hê om in te vul, soos bied dit 'n naam, gee 'n beskrywing,
Itereer die weergawe elke so dikwels, verskaf
'n skrywer vir elke persoon wat bydra,
voeg dit by die bydraers artikel, en die res van dit wat jy
kan pretty much net laat as wat dit is vir nou.
>> Daar is een ding wat belangrik om op te let,
wat onder die afdeling plug-ins, daar is 'n sleutel genoem plug-in.
En dit is gekoppel aan die naam van die JavaScript lêer genaamd plugin.js.
So dit is hoe Cloud 9 weet, wanneer dit lees hierdie package.json lêer, wat
van die JS lêers om werklik te laai.
As ek skep bykomende js lêers of wil dat die JS lêer hernoem van plug-in,
Ek het ook om dit te verander in die package.json lêer.
>> Enige vrae uit die gehoor?
Geen.
Dat een persoon wat volgende saam met my so ver.
>> OK.
So ek eintlik geskep het 'n paar plug-ins reeds
Ek dink in hierdie werkspasie.
So laat ontslae te raak van 'n paar van hierdie, voeg SDK = 1 & debug = 2, herlaai die werkplek,
en laat ons kyk of ons het nou die plug-ins.
C9 / plugins.
Hier gaan ons.
Ons kan nou sien in my C9 / plugins van hierdie een, ons het plugin.1 en plugin.2.
So ons gaan net stap the-- net die verhoging van die bedrag van die probleme
in elk van hierdie plug-ins.
Maar hier as ek 'n nuwe plug-in, Ek kan dit by my gunstelinge.
En ek sal net verwyder diegene uit die onderliggende lêerstelsel.
>> Kom ons verwyder dit.
Nou as ek oop my eerste plug-in, en oop plugin.js,
kan ons hier sien die onderliggende eenvoudige weergawe van 'n plug-in.
Laat my eintlik terug te gaan hierdie ander werkplek
want jy kan ten minste, hier te sien, wat 'n leë plug-in lyk eintlik soos.
So onder die enjinkap, dit lyk baie soortgelyk aan tegnologie genoem,
Ek dink dit is RequireJS.
Let daarop dat dit nie regtig lyk, miskien,
dieselfde as 'n ander JavaScript lêers wat ons kan gesien.
Maar in plaas daarvan, daar is 'n paar van net basiese lyne dat dit eintlik.
>> Al hierdie dinge is die eerste vertolk deur die IDE,
maar dit is nie eintlik hardloop totdat gespesifiseerde.
En ek sal jou vertel oor wanneer daardie beteken eintlik in net 'n oomblik.
Maar let dat hier is daar 'n main.consumes lyn in lyn 2,
en dit bevat 'n lys van al die plug-ins dat dit plug-in is afhanklik van.
So by verstek, ons dalk te doen te hê nie enige afhanklikhede op ander plug-ins,
maar wanneer ons werklik nodig het om afhang van funksies verskaf
deur ander plug-ins in die IDE, ons nodig het om 'n lys van die plug-ins
in die main.consumes lyn.
En dan moet ons koppel aan die kode
hieronder, wat ek jou sal wys in net 'n oomblik oor hoe ons dit kan doen.
>> Main.provides gee 'n noem hierdie plug-in
dat die ander plug-ins kon gebruik in hul verbruik lyn.
So in hierdie geval, my plug-in is net daar te stel by verstek,
en ons moet verander om te wees van toepassing op ons eie plug-in,
soos ons sal sien in net oomblik.
Nou hier in die funksie belangrikste, hierdie funksie belangrikste
is eintlik loop en geïnterpreteer is, maar dit nie eintlik doen baie.
Dit raak net alles opgestel, maar dit nie eintlik die plug-in begin,
ten spyte van wat die naam klink soos.
Dit gebeur eintlik deur 'n reeks van metodes wat
vervat in hierdie plug-in.
>> So as ek rol af, kan ons sien dat ons 'n lewensiklus waar
op 'n gebeurtenis genaamd las, of 'n gebeurtenis genaamd los,
sommige gebeure werklik gebeur.
Dit is regtig hier waar as die plug-in begin dat diegene metodes genoem word.
So laat ons 'n bietjie meer konkrete oor hierdie en kyk na 'n voorbeeld.
So hier vir plugin.1, wat Ons is basies gaan doen
is om 'n menu-item te skep genoem CS50 Seminaar Dialog 1--
want ons het twee van them-- en ons gaan
om dit te spuit in die menu venster.
En wanneer ons kliek op dit, ons is gaan om oop te maak 'n dialoog wat
wys ons 'n paar baie basiese inligting.
>> In hierdie geval, net 'n hello world.
So, dit is 'n baie eenvoudige hello world dialoog
dat ons kan implementeer as 'n plug-in in Cloud 9.
So laat ons sien hoe dit eintlik lyk.
Ons sal stap vir stap deur dit net relatief vinnig, sodat ons
kan kyk na die volgende plug-in sowel.
Let daarop dat ons hier is inname van 'n verskeidenheid van plug-ins.
Ons inname van 'n dialoog plug-in, opdragte, spyskaarte, en UI.
Lyk soos ek eintlik is beslag dialoog twee keer, so ek kan verwyder nie.
>> En sien dat die pad dat Ek hulle is verbind,
dit is soort van metadata wat is vertel die plug-in-stelsel wat vereistes
is eintlik wat nodig is vir hierdie plug-in te laai.
Dit is ook belangrik om daarop te let dat volgorde plug-ins gelaai
word nie gewaarborg nie.
Maar wat is gewaarborg is dat as ek spesifiseer sommige plug-in as 'n vereiste,
dat plug-in sal gelaai word voor hierdie een is gelaai.
>> So dit beteken dat as jou plug-in vereis op sommige funksies wat
deur iets anders in die IDE, moet jy seker wees dat jou plug-in verbruik
dat plug-in sodat die afhanklikhede is sekere om jou plug-in te skep,
of instansieer jou plug-in, net nadat bestaande raamwerk bestaan.
So hier het ek genoem die metadata om die plug-in-bestuurder,
watter ek gaan om te verteer.
En in die belangrikste funksie hier Ek gaan dan koppel
my kode vir diegene ingevoer plug-ins.
>> So ek is net gaan om te skep 'n paar veranderlikes wat
ooreenstem met die name van elkeen van daardie so sodat Ek hulle kan baie vinnig verwys
regdeur my kode.
Die rede waarom ek die invoer dialoog is, want ek wil my plug-in
om op te tree as 'n dialoog plug-in.
En die manier waarop ek is in staat om dit te doen, is om, natuurlik,
koppel my kode om die dialoog plug-in deur die invoer van dit
en dan deur die spesifiseer deur skep van 'n nuwe dialoog veranderlike
en dit aan te sluit dat ingevoerde plug-in.
En dan deur die definisie van my plug-in 'n nuwe dialoog.
>> So in die inisialisering, ek wil my plug-in te definieer.
En hierdie veranderlike genoem plug-in wat jy sien
is net wat algemeen gebruik word regdeur Cloud 9 plug-ins.
Ek gaan 'n nuwe instansieer dialoog met 'n paar eienskappe,
gee dit 'n spesifieke naam, sê dat dit moontlik vir gebruikers om dit te sluit.
Dat dit 'n bietjie x in sal wys die boonste regterkantste hoek,
of 'n bietjie knoppie in die laer regterhoek.
Of ek kan teks kies uit dit wat die titel van die dialoog
sou wees, en so aan.
Nou is hierdie net definieer die dialoog, maar dit is nog nie wys nie.
Ek het eintlik 'n definieer aksie om dit te bewys.
>> En weer, ek wil u aanmoedig om neem 'n blik op die wolk 9 SDK,
want daar is 'n verskeidenheid dialoë en hulle is baie goed gedokumenteer.
Jy kan die verskillende tipes te sien dat daar, en hulle gebruik
in watter plug-in wat jy in gedagte het.
Nou is daar gaan 'n wees vrag artikel, en hierdie las
funksie as jy onthou is wat gebruik word deur die plug-in lewensiklus
om werklik alles instansieer en kry alles gereed om te gaan.
En toe hierdie plug-in vragte, doen ek nie, dit wil onmiddellik wys 'n dialoog,
want dit plug-in sal laai saam met die res van die IDE.
En toe ek las wat IDE, wil ek nie die dialoog outomaties vertoon.
Ek wil dit net om te wys wanneer ek op die kieslys opsie in my Venster kieslys item
dat ek vir 'n oomblik sal voeg by dit.
>> So is daar twee afsonderlike stappe hier wat gebeur.
Ek het 'n te skep bevel, en die opdrag
sal verantwoordelik wees vir eintlik wat die dialoog op die wolk 9 IDE.
En dan moet ek aansluit, ek 'n nuwe venster menu skep
item, wat loop dat opdrag.
Sodat wanneer ek op die venster menu-item, wat opdrag is dan run
en daarom is my dialoog word dan getoon.
En so is dit eintlik 'n mooi mooi manier van dink oor dit.
>> Omdat die eerste kan ek 'n opdrag te skep wie se naam is CS50 Seminaar Dialog 1,
wat bied 'n paar algemene konteks vir dit.
En die belangrike bietjie hier is om kennis van die EXEC kenmerk, wat
noem 'n funksie wat genoem sal word in my plug-in wanneer hierdie opdrag is hardloop.
So hierdie bevel is soort van soos a-- dit is net 'n arbitrêre Cloud 9
opdrag wat beskikbaar is enige Cloud 9 plug-in.
Maar die werklike funksie wat dit is gaan om te bel as hierdie opdrag is uitgevoer
is die show dialoog funksie in my plugin.js lêer.
>> En ons kan eintlik sien hierdie plug-ins en die lys
instruksies wat beskikbaar is vir ons in Voorkeure, blaai al die pad down--
Kom ons kyk, eintlik sien ons dit nou?
Plug-in-bestuurder, Nee, ek dink dit is I-- beslis hier rond iewers.
Wel, daar is 'n lys van instruksies iewers, maar ek moet,
Ek het vergeet waar dit is.
So OK, sal ons aan te beweeg.
Alles reg.
So het ons 'n lys van instruksies wat tot ons beskikking is,
en daardie opdragte is hierdie net arbitrêre Cloud 9
opdragte wat spesifieke kode hardloop.
Dus net dit in gedagte hou dat ons gaan die dialoog show hardloop
funksioneer oomblik.
Nou wanneer ek eintlik wil 'n spyskaart voeg item, ek kan daardie item by te voeg by die pad,
en net spesifiseer presies waar ek wil dit moet wees, Venster / CS50 Seminaar Dialog 1.
En op daardie punt, ek wil om 'n nuwe item te skep wat
gaan 'n opdrag uit te voer, CS50 Seminaar Dialog 1.
Let daarop dat weer, dit is die Wolk 9 opdrag Ek het net bokant geskep.
>> Nou wil ek ook skep 'n bietjie deler,
en so kan ek dieselfde doen in die daaropvolgende lyn.
Nou mag jy dalk agterkom dat as deel van die definisie van hierdie kieslys item,
daar is 'n aantal wat verband hou met dit wat
eintlik sê presies waar Ek wil hê dat die menu-item te wees
geleë in die lys van spyskaarte.
Maar jy dalk agterkom dat ek nie eintlik
sien enige nommers met hierdie spyskaarte, by verstek.
So is daar 'n bietjie verborge ding wat wat ons kan doen, 'n bietjie verandering aan ons URL.
So bykomend tot SDK = 1 & debug = 2, Ek sal spyskaart stel om 1--
en hopelik is dit menu, nie spyskaarte.
O, dit is spyskaarte = 1.
Hou op.
>> En wat ons sal oor herlaai die wat sien IDE is dat ek nog in debug modus
maar nou is daar nommers wat verband hou met al die spyskaarte.
En dit vir jou vertel presies wat die aantal
is wanneer jy probeer om te spuit iets op enige plek in die kieslys stelsel.
So in die menu venster, kan ek sien dat item 45 is saamwerk,
en item 38 voordat dit installeerder.
So wanneer ek wil spuit 'n item tussen die twee,
Ek wil net kies 'n aantal tussen die twee items.
So ek gekies 41 en plaas my Seminaar Dialog 1 menu-item op die plek.
>> En dit is hoekom hierdie nommer hier wat verskyn is nommer 41.
Dit is die plek van daardie menu-item in die wolk 9 spyskaart.
Nou insgelyks, ek wou 'n deler te skep
en voeg dit so dat daar 'n mooi skeiding tussen elk van hierdie spyskaart
items.
So ek het bygevoeg dat op plek 43.
So ver, so goed, ek hoop?
So nou, laat ons eintlik kyk na die spesifieke kode in dialoog show
dit is eintlik verantwoordelik vir die opening van hierdie dialoog venster.
>> Blaai af, ek sien dat ek wil om hierdie dialoog funksie show het,
en dit is baie eenvoudig.
Ek gaan die show hardloop metode op die plug-in veranderlike.
En onthou dat ons dit gedefinieer plug-in veranderlike hierbo as 'n dialoog.
So bar plug-in, in hierdie geval, is dit voorwerp wat ons intern het gedefinieer.
En dit gaan om 'n nuwe dialoog vervat in hierdie plug-in.
En so het ons eintlik hierdie verwys plug-in veranderlike in baie plekke
in 'n tipiese Cloud 9 ontwikkeling omgewing.
>> Ons sal dit hier te sien.
Let daarop dat as ons scroll down, daar is bykomende lewensiklusse.
So sien dat hierdie reageer om gebeure wat afgedank
deur hierdie voorwerp, hierdie dialoog voorwerp.
By verstek, is daar laai en los, wat
is beskikbaar vir alle Cloud 9 plug-ins.
Maar in die geval van hierdie dialoog, daar is
'n ander gebeurtenis wat kan vuur sowel genoem
Teken, wat afgevuur toe dat is oor getrek word op die skerm,
by die eerste instansie van die dialoog toon.
>> So wanneer dit is eintlik gaan word getoon,
daar gaan ' verskaf aan ons 'n paar HTML.
En die gebruik van net die standaard HTML praktyke kan ons
spuit 'n paar baie eenvoudige inligting, ons hello world, in dialoog.
So as ons dan scroll up, ons kan dan sien die optog van die dinge
dat dit plaasvind.
Eerste het ons 'n Cloud 9 opdrag dat wanneer uitgevoer deur Cloud 9,
gaan om hierdie funksie te vuur.
Dit gaan om hierdie funksie uit te voer genoem show dialoog, wat ek
geskryf in my kode.
>> Ek het 'n menu-item en geheg aan dit wat dieselfde opdrag
dat wanneer daardie item word gebruik in die spyskaart, wat beveel word dan hardloop
en daardie funksie word dan hardloop.
En binnekant van die funksie Ek is net gaan om te bel the-- Ek is
net gaan om die show te voer metode van hierdie plug-in, wat
gaan eerste oproep die trekking metode, en gaan
hierdie metode hieronder, is die vuur trek event handler, in ons lewe siklus.
En dan sal dit eintlik wys die dialoog.
>> Daar is ook 'n skuiling metode, sodat as ek nodig het die geleentheid om weg te steek
my dialoog, kan ek dieselfde ding te doen.
So dit is pretty much dit om al hierdie te kry om te werk.
Let daarop dat is as ons scroll down verder is daar 'n vries openbare API.
Dit het basies net sê dat ek wil hierdie metodes om effektief
wees publiek, maar nie overwriteable buite die konteks van hierdie plug-in.
En onder, op die heel onderste, is dalk die laaste ding
dat ons regtig nodig het om te betaal veel aandag hier, wat
is dat ons gaan om te registreer ons plug-in met die naam C9 Seminaar 1,
en die voorwerp plug-in.
>> Wat soos jy sal onthou, is dat plug-in wat plug-in
voorwerp wat ons het is die definisie dwarsdeur die hele van hierdie bron
kode.
En C9 Seminaar 1 is die string dat ons belowe
by die top om voorsiening te maak van hierdie definisie.
OK.
So laat oprit dit 'n bietjie en kyk of ons iets kan doen
'n bietjie meer interessant.
Nou is dit net so groot.
Ek bedoel, dit is, dit is eintlik redelik koel wat in so min reëls van die kode,
kan ons die bestaande IDE verander en voeg 'n bestaande menu-item
of voeg 'n nuwe menu-item, voeg 'n opdrag, en toon 'n dialoog,
en net 'n klomp van die funksies wat bestaan.
Dit is regtig mooi groot.
>> Maar dit beteken nie 'n baie te doen, want dit kan nie kommunikeer met die onderliggende Ubuntu
byvoorbeeld.
So kom ons sê dat ek eintlik wil uitvind
inligting oor die onderliggende Ubuntu byvoorbeeld
soos die statistieke plug-in nie.
So laat ons neem 'n blik op 'n bietjie meer inligting
oor hoe die statistieke plug-in werke.
En in die feit, dit is baie soortgelyk aan hierdie.
Jy sal onthou dat daar is 'n dialoog.
Jy sal onthou dat daar inligting wat
getoon net langs die menu bar saam die top, wat hopelik is jy nou
om 'n geur van hoe Ons geïmplementeer hierdie,
net deur die invoeging menu items op spesifieke punte en 'n dialoog instantiëren
en vertoon dialoog.
>> Maar ons het nog nie gewys hoe kan ons dit te koppel
om 'n bevel in die onderliggende Ubuntu byvoorbeeld.
So laat ons neem 'n blik dan ten plugin.2, wat doen juis hierdie ding.
Ons gaan oop plugin.js, wat is die kode vir hierdie.
Maar onder die menu venster As ek op dialoog 2,
ons kan sien dat dit op hierdie sê plaas, hello CS50, wat
nie al wat aanloklike kyk, reg?
Behalwe, kyk na hierdie.
Laat my iets te verander hier af.
>> Ek gaan om te gaan na my werkspasie en verandering seminaar
om iets anders, soos Hallo, Dan sê.
Ek gaan om dit te sluit en stoor dit.
En nou gaan ek weer run my dialoog menu-item.
En sien dat dit nou verander wat dit sê.
Hello, Dan.
Dit lyk asof ek het iets neer gedoen hier in die onderliggende Ubuntu byvoorbeeld
sonder dat enige gemanipuleer kode wat weer uitsluitlik loop
op die kliënt kant.
So is daar natuurlik 'n soort van kommunikasie wat hier gebeur.
>> Nou is dit waar 'n baie van die krag van die wolk 9 SDK kom in,
is dat in hierdie plugin.2, kan ons eintlik veroorsaak
'n oproep om te gebeur met die onderliggende byvoorbeeld
en hardloop 'n arbitrêre opdrag.
So in hierdie geval, ek het eintlik geskep 'n baie eenvoudige script bash
in my werkplek genoem Seminaar.
So laat my oop te maak.
En ons kan sien dat dit lyk soos hierdie.
Dit is net 'n baie eenvoudige bash script wie se enigste doel in die lewe
gaan wees om eggo uit hierdie teks, Hello, Dan.
Voor of dit, het hy gesê Hallo, CS50.
En dit is al wat dit gaan doen.
>> Want dit is nou 'n opdrag dat ek kan loop.
Ek kan eintlik loop dit af hier.
Ons kan sien dat dit eintlik net 'n opdrag wat ek natuurlik hardloop.
Ek kan my plug-in te vra om hierdie te voer opdrag op die onderliggende werkspasie
en ontleed die inligting wat weer van dit,
en iets te doen met dit, en verander my plug-in en die gedrag wat ek
in my plug-in as 'n gevolg. OK.
So laat ons sien hoe dit gebeur.
Ons het dit baie eenvoudig Seminaar joernaal script wat ek
[Onhoorbaar] dat dit eintlik kan hardloop.
>> En nou, laat ons sien die veranderinge wat nodig is om dit saam te bind is
met die dialoog venster, en voer dit uit.
Ons is so hier gaan mooi doen much dieselfde ding as wat ons voor gesien.
Maar let dat onder die dinge wat ek verteer now--
bykomend tot die dialoog, wat ek weer gebeur twee keer gedoen het,
wat nie necessary-- bykomend om die dialoog en die opdragte
en die spyskaarte plug-ins, wat was nodig is in die eerste een vir my
om 'n nuwe opdrag definieer en spuit 'n item in die spyskaarte,
Ek het ook hierdie proc plug-in.
>> En dit proc plug-in kan ons prosesse manipuleer
op die onderliggende byvoorbeeld.
Ek het dit verbind nadat ek het gesê dat my plug-in dit vereis.
Ek het dan verbind dit aan kode, soos ons gesien het in die belangrikste funksie.
Weereens, ek gaan inisialiseer my dialoog.
En as ons af beweeg nou, ons kan sien hoe dit is anders.
Die vrag funksie is dieselfde, so dit is net gaan om 'n bevel te skep
en die skep van 'n menu-item en verbind wat menu-item om opdrag.
Maar as ons nou blaai af na dialoog te wys,
ons kan begin om te sien waar die verskille ontstaan.
>> Ons het funksie show dialoog, wat net gaan om die dialoog te wys.
Maar toe ek sien hierdie dialoog, en toe die show metode genoem word,
dit brande die trekking funksie.
En ek gaan dan spesifiseer 'n paar inhoud binnekant van dit.
So ek is net gaan om te skep 'n div, bied dit
'n paar basiese teks, Hello, world.
Maar let dat hier Ek is gaan heg om dit 'n ID.
En die volgende lyn gaan ek dat die ID vind met behulp van JavaScript,
en bêre daardie voorwerp in 'n ander veranderlike
dat ek net gaan om die inhoud te bel.
>> So nou wanneer ek inhoud, al wat ek nodig het om te doen
is net verander innerlike HTML hierdie voorwerp.
En die dialoog HTML sal dan sowel verander.
En wanneer hierdie plug-in is dan getoon, wat kan gebeur
en dit is 'n nuwe gebeurtenis wat nuut is in hierdie plug-in,
maar gebeur in elke plug-in met die dialoog, as dit is nou getoon het,
Ek gaan om te bel 'n funksie genoem haal inligting.
En dit funksie is die vleis van dit hier.
Ek gaan dit proc plug-in gebruik wat ons voor beskryf, wat deur die pad,
is regtig net 'n Node.js biblioteek dat Cloud 9 word hier gebruik nie.
>> So jy kan eintlik kyk oor hoe om hierdie
werk as jy gaan in die Node.js dokumentasie
en kyk op die exec lêer metode vir die prosesse daar.
Ek gaan hierdie spesifieke hardloop opdrag, huis Ubuntu werkspasie
seminaar, wat is dat dieselfde een wat dieselfde opdrag wat Ek voor geskep.
Verskaf om dit 'n stroom werk gids, net
ultra veilig wees in terme van die konteks van waar dit loop.
En sodra dit was voltooi en teruggestuur,
Ek gaan hierdie hardloop funksie genoem parse uitset.
OK.
So dit dan gaan voer 'n opdrag op die plaaslike, of liewer
die afgeleë Ubuntu byvoorbeeld.
Wanneer ek terug sommige inligting, ek is dan
gaan 'n aparte funksie noem genoem parse uitset, wat
het hierdie handtekening hier dwaal stdout, stderr,
en 'n paar berekening op hierdie punt.
So as ek 'n fout ontvang van 'n soort te wees,
Ek sal eintlik gaan om te sien of fout het eintlik 'n paar data.
En as dit so is, dan sal ek die binneste verander HTML van die inhoud voorwerp, wat
is jy onthou, ons gekoppel aan die dialoog
by die instantiattion van daardie dialoog, of by die eerste teken
van daardie dialoog.
Ek gaan net sê dat sommige fout gebeur het.
>> Nou is dit té simplisties.
Die fout waarde sal tipies bevat iets wat nuttig was,
dalk 'n fout nommer en 'n fout van die script self.
Of indien die script geskryf iets om standaard fout,
dat data sal bevolk in daardie parameter as well.
En ek kon 'n bietjie wees meer versigtig oor wat fout
Ek is eintlik mense te wys.
Maar dit eenvoudige voorbeeld is goed genoeg vir nou
om ten minste sien hoe al hierdie funksies.
Anders as daar geen fout, dan is ek net
gaan die rou lewer uitset van daardie funksie
in die binneste van hierdie HTML inhoud element, en dan werk my plug-in
en wys dit hier.
En dit is pretty much al wat nodig om te kry hierdie om te hardloop.
En so laat dink oor dan hoe dit bedryf, algehele.
Toe ek die eerste gelaai hierdie plug-in, net soos die eerste plug-in,
Ek gaan 'n opdrag wat voeg beskikbaar is om enigiets, enige plug-in
in Cloud 9, genaamd CS50 Seminaar Dialog 2, wie se verantwoordelikheid
sal wees om hierdie show hardloop dialoog, wat jy onthou,
sal eintlik wys die dialoog dat ek hieronder versoek.
>> Dan sal ek byvoeg dat opdrag in 'n venster menu
sodat ek toegang tot dit.
En wanneer daardie dialoog versoek getoon word,
Ek sal 'n paar info van haal die onderliggende Ubuntu byvoorbeeld
deur die gebruik van die exec lêer opdrag.
Verskoon my.
Sodra dit teruggekeer en ek ontvang 'n inligting, dan op die kliënt kant
weer, sal ek in staat wees om te ontleed wees die uitset van daardie opdrag
en werk die innerlike HTML van die elemente
dat ons het verbind om vroeër.
>> En met die dat ons dan Hierdie ten volle funksionele plug-in
wat toelaat dat my om inligting te gaan haal Van hierdie arbitrêre script
wat ons geskep het op ons onderliggende byvoorbeeld.
Maar weereens, dit is regtig belangrike en werklik die sleutel
om te skei uit, waar elke hierdie dinge gebeur,
dat ons al hierdie kliënt kant kode wat word gelei in die leser,
en nog nie toegang om die onderliggende lêerstelsel
totdat ons eintlik loop sommige van hierdie opdragte wat deur die Wolk
9 SDK soos proc, en 'n paar ander kinders wat ons toelaat om 'n paar data te lees,
of lees 'n paar lêers as ons nodig om enigiets van die aard nie.
>> Nou is dit 'n ietwat eenvoudige voorbeeld.
Daar is ander dinge wat ons sou dalk wil so goed te doen.
Byvoorbeeld, miskien eintlik ons wil 'n paar inligting te red
om die voorkeure.
Of miskien wil ons voeg 'n nuwe voorkeur paneel
of iets langs die lyne.
Dan is dat iets wat jy kan 'n blik op die wolk 9 SDK neem
om meer inligting te kry.
Maar dit is regtig genoeg om te begin.
So net om 'n bietjie meer konkrete wees oor die manier waarop sommige van hierdie dinge
funksie, ek het net wil wys nog 'n voorbeeld, wat net 'n paar
van die kode van die Statistiek 50 plug-in.
>> En hierdie kode is basies gebaseer op hierdie voorbeelde
dat jy eintlik gesien het, maar het 'n paar meer voorsorgmaatreëls
en het 'n paar meer kompleksiteit ten einde om sommige van die bykomende dinge te bereik
wat ons wil bereik.
Byvoorbeeld, as ek wil wees in staat wees om 'n paar instellings te red,
dan moet ek om toegang te hê om die instellings plug-in,
en elke keer as ek wil sommige instellings te lees,
Ek kan, byvoorbeeld, heg aan verskeie gebeure in die instellings plug-in.
So elke keer as die instellings is rooi, Byvoorbeeld, in my eie plug-in,
as ek gaan 'n paar gelees instellings van die wat gered stoor
voorkeure van die gebruiker, dan kan ek Die verstek instellings vir 'n spesifieke plek,
vir spesifieke voorkeur, in daardie Into styl opsies lêer wat ons het
vroeër gered, sodat ons vroeër gesien het.
>> En as ek gaan skryf sommige instellings om dit,
dan can-- ek of so gou as ons spoor dat die instellings is geskryf
aan- omdat byvoorbeeld dié instellings is aangepas deur die gebruiker
hetsy direk in hul instellings lêer, of die paneel voorkeur
het die instellings verander lêer direk, dan
Ek kan eintlik werk sommige van die kode of die gedrag van my plug-in werk
gebaseer op die veranderinge wat plaasgevind het op die lêer instellings as well.
Maar regtig, die res van dit is redelik veel dit dat jy reeds gesien het.
>> Ons voeg 'n paar, miskien iets wat nuut.
So voeg ons 'n voorkeur lêer, of eerder 'n paneel voorkeur
om die voorkeure venster weer wat jy kan uitvind meer inligting
in die wolk 9 SDK lees my.
Maar alles anders is redelik baie, mooi
soortgelyk aan wat ons voor gesien, net met 'n paar ekstra foutopsporing
en 'n paar ekstra beskerming en 'n paar ekstra funksies
om al die verskillende funksie dinge wat ons gesien het.
As jy nie eintlik dit nog nie gesien is, kan jy
wonder wat die onderliggende opdrag is in die venster Statistiek 50.
Dit is eintlik funksioneer.
Wel, dit is-- O, dammit.
Een sekonde.
Hou op.
OK.
Laat my beweeg dit op sodat ons kan eintlik kyk wat gebeur wanneer ek tik Statistiek 50.
Let daarop dat in hierdie geval, die opdrag wat ek uit om
is regtig weer, net die script wat gaan uitset 'n klomp van die inligting
in into formaat.
En die rede dat ons dit doen hierdie manier is dat omdat ons
werksaam is, want ons het geskryf die kliënt se kant-kode in JavaScript,
ons kan baie maklik net ontleed JavaScript voorwerpe,
en werklik in staat wees om te manipuleer die voorwerpe net soos ons sou
enige ander JavaScript voorwerp.
>> En so dit is 'n baie gerieflike manier om 'n paar inligting
van die onderliggende Ubuntu byvoorbeeld soos die weergawe nommer, die gasheer
noem, of 'n bediener luister, wat die bediener is, so aan en so voort,
en ontleed daardie vinnig en maklik
in die plug-in wat dan gaan vir ons almal van daardie inligting te wys.
So weer, die sleutel insig hier in gedagte te hou
is hierdie skeiding tussen die onderliggende byvoorbeeld
en ook waar die kode is gelaai.
Dat wanneer ek 'n kliënt, dit is die eerste keer aan die laai.
Net hierdie statiese JavaScript-lêer uit iewers, miskien CDN van 'n soort.
Ons het nie regtig moet versorg te veel oor hierdie eerste stap.
>> Ons weet net dat dit is loop op die kliënt kant
en dit is wanneer ek gaan kommunikeer met hierdie Docker byvoorbeeld.
Dat ons gaan om dit te doen deur die wolk 9 SDK.
Ons het nie eintlik die vermoë, die gebruik van JavaScript of Node.js,
direk skryf.
Ons gebruik net diegene bestaande SDK APIs om die aksie te doen vir ons.
En weer, een van die regtig belangrike dinge
is dat wanneer ek dit geskep het, toe ek dit plug-in gemaak het,
en as Ek werk op hom, een van die belangrike dinge om te doen
is om die JavaScript konsole te bring.
>> Want sedert dit is al wat op die JavaScript,
op die kliënt kant, as ek 'n console.log method-- so net
om 'n voorbeeld hier wys.
Kom ons probeer verander hierdie eenvoudige plug-in om ook 'n paar data te meld.
En ons sal die standaard uit te voeg.
So laat verander na regs hier te wees.
Nou toe ek voer console.log, in gedagte hou
dat sedert hierdie loop op die kliënt kant,
Ek sal sien in my eie JavaScript konsole, wat
is hoe ek sal in staat wees om probeer om op te los en debug
sommige van die probleme wat ek het.
>> Let daarop dat, omdat Ek is in SDK af, ek is
dan in staat om te manipuleer plug-ins op hierdie geval.
So selfs al is dit gestoor op hierdie geval,
dit is die een voorbeeld van wat die vorige reël geskend word, waar die wolk 9
SDK sal eintlik trek plug-ins uit die onderliggende byvoorbeeld en dan hardloop hulle.
So dat op hierdie manier, ek is dan in staat wees om te manipuleer en te bou
sommige plug-ins hier.
Maar om vir my om te sien updates om hierdie plug-in,
want dit is op die kliënt kant, Ek moet daardie plug-in red
en dan herlaai die hele werkplek, sodat die nuwe plug-in is dan
afgelaai op my kliënt, op my webblaaier, en dan gebruik word.
>> So nou wanneer ek op hierdie Seminaar Dialog 2, het ons nog sien.
Maar nou hopelik in my JavaScript dialoog, moet ons sien my-- wag,
hou op.
Ek kan hê om die dialoog vars oop te maak.
Ons moet hier my ontvang data te sien.
Ontvang data, Hello, Dan, wat jy onthou,
was 'n operasie wat console.log Ons versoek die plug-in.
So hierdie beskrywing dan dat ek voorheen genoem,
hierdie dialoog, of dit diagram eerder dat ek
voorheen genoem is wat gebeur.
Maar daar is 'n belangrike uitsondering net vir ontwikkeling,
wat is dat die plug-in self kan eintlik
gestoor word op die Docker byvoorbeeld tydelik, want vermoedelik Cloud 9
nie wil hê ons moet in staat wees om manipuleer voorwerpe op hul CDN.
>> En die wolk 9 kliënte, op laai, sal diegene plug-ins in daardie vind.
C9 plug-in gids, en laai hulle.
Maar dit is nog steeds gebeur net op die kliënt kant.
So dan is dit net die 'n uitsondering dat slegs plaasvind
vir die ontwikkeling van Cloud 9 plug-ins.
Maar die res van die time-- en die rede
wat ons wil regtig hamer hierdie home--
is omdat die meeste van die tyd is dit gaan die loop van die CDN,
en net gaan om te loop suiwer uit die kliënt se kant.
>> Normaalweg sal geen wees daar interaksie met die plug-in,
of daar nie eens wees aan enige rede dat die plug-ins hulself
is eintlik gestoor word op die onderliggende Docker byvoorbeeld
behalwe in die geval van hierdie SDK ontwikkeling.
So weer, hierdie veranderinge net effens gevolg van die feit
dat ons hardloop SDK af.
Dit gaan dan laai die plug-ins van ontwikkeling,
en die uitsluitlike doel hier is, sodat Ek kan Cloud 9 gebruik om die ontwikkeling te doen
vir Cloud 9 plugins.
Maar selfs so, beteken dit nie verander weer hoe enige van hierdie werk.
Dit is nog steeds aan die gang is geheel en al op die kliënt kant.
>> Dit beteken net dat wanneer ek wil skep Cloud 9 plug-ins in Cloud 9,
Ek skep die plug-ins, sit hulle in my.
C9 gids / plugins in my huis gids, maak seker ek is in SDK af,
herlaai die bladsy elke keer as ek eintlik veranderinge aan dat plug-in maak,
en kyk wat gebeur in my JavaScript console.
Bestuur net my JavaScript troos om seker te maak
dat enige probleme oplos inligting wat ek plaas om te troos,
of enigiets anders wat mag voorkom as gevolg van foute wat ek geskryf het
in my kode of die wil, blyk daar.
>> En met dié, dit is regtig genoeg om te begin, dink ek,
met die wolk 9 plug-ins.
Veral 'n blik op die SDK dokumentasie wat Cloud 9 bied.
Dit is 'n goeie manier om te kry begin, en baie maklik
skep 'n paar plug-ins vir Cloud 9.
En met dié, ek wil dankie julle almal baie dankie vir saam met my.
Ek hoop jy sal pret hê skryf plug-ins vir Cloud 9.
Miskien verbetering plug-ins dat ons nou, of dalk selfs
voeg 'n paar funksies van jou eie.
Ons sien uit daarna om te sien hoe wat dit is wat jy skep.
Tot dan, bye.