>> DAN Armendáriz: Saluton, kaj bonvenon al CS50 seminario pri Agordigo Nubo 9,
kaj la CS50 IDE.
Do hodiaŭ ni iras por nur paroli iomete
pri kelkaj de la teknika informo ke
iras malantaŭ la arkitekturo de Cloud 9, kaj kiel
ni implementado iuj de la plug-ins kiel parto de Cloud 9 disponigi CS50 IDE.
Do ni nur salti bone kaj komenci paroli pri plug-ins.
>> Do plug-ins estas vere ĉe la kerno de la Nubo 9 sperto.
Nubo 9 estas la subkuŝanta teknologio kiu havigas al ni la IDE,
kaj ankaŭ la fina stacio fenestro en la fundo, kune kun la workspace--
Ubuntu workspace-- ke ni uzi kompili ĉiuj niaj projektoj
kaj elfari nia problemo aroj, kompletigi nia problemo aroj.
Sed ĉe la koro de ĉiuj de ĝi, la tuta teknologio
estas vere nur aro de plug-ins.
Ĉio estas kromprogramo kiu povas esti modifita,
etendita, kreu vian propran plug-ins,
vi povas forigi aliajn plug-ins, por vere ŝanĝi
multon de la funcionalidad de la ekzistantaj Cloud 9 IDE.
>> Do tiu estas ekzistanta Cloud 9 medio.
Tiu estas vere nur la default Cloud 9 medio.
Kaj rigardu kiamaniere ĝi reale estas malsama de la CS50 IDE.
Do tiu estas la CS50 IDE.
Rimarku ke estas kelkaj vida ŝanĝoj inter la regula Nubo 9
medio kaj la CS50 IDE.
Specife, vi rimarki kelkajn ŝanĝojn.
Unue, ekzistas pli malmultaj menueroj por komenci.
Ekzistas fakte vojo ke vi povas ŝanĝi tion.
Ĝi nomiĝas Simpla Mode.
>> Defaŭlte, Simpla Mode estas aktivigita, kaj kiu simpligas iom de la menueroj.
Ĝi forigas iujn de la pli progresintaj,
ĉar sincere, multan studentoj kiuj venas en
kaj ne bezonas scii pri iuj de la pli progresintaj ecoj
ne superŝutita kun amaso de ebloj.
Sed ni ja provizas la kapablon preni malproksime tiuj tn trejnado radoj
kaj forigi tiun trabaro por ke homoj
povas fariĝi pli alkutimiĝis al la progresintaj ecoj de la IDE.
Tuj al la Dekstre de tiu, ekzistas
ankaŭ debug butono, kiun en la norma Nubo
9 medio nomas simple kuri.
Sed implicite, ni agordita la debug butono en la CS50 IDE
por porti la erarserĉilo, aŭtomate tradukigi la fontkodon,
konekti la erarserĉilo al la suba GDB--
kaj ekde tiu estas kurante elfari la debugging-- kaj iuj aliaj paŝoj
ankaŭ.
Ankaŭ la terminala fenestro ĉe la very-- aŭ prefere la terminalo
langeton konzolo sekcio ĉe la fenestro ĉe la malsupro de la ekrano,
estis renomita al simple esti fina stacio.
Dum kiu en la norma Nubo 9 medio,
ĝi fakte montras la kuranta apliko.
Tiel, ĝi simpligas, denove, la GUI, nur iomete.
>> Ni ankaŭ aldonis iom butonoj al la supra rajto de la IDE
montri kelkajn bazajn informojn pri la suba ekzemplo.
Kaj ankaŭ ni forigis unu de la ebloj sur la erojn
de la ekstremdekstro.
Do ĉio ĉi estas implementado ne modifante nepre la Nubo 9
fontkodon, sed anstataŭe tra paro
de plug-ins kiu ni implementado tra la pasinta jaro aŭ sekve.
Kaj Cloud 9 gastigis kaj havas kurante en la CS50 laborspaca.
Aŭ pli ĝuste en la workspaces ke estas designados kiel CS50 IDEs.
>> Do vere tio estas la ĉefa diferenco inter la Nubo 9 kaj la CS50
workspaces.
Ekzistas ankaux, en la suba Ekzemple, la ĉefa ŝanĝo estas
ke ni instalu iun antaŭ- agordita erojn kiel GDB,
kaj kelkaj aliaj bazaj aferoj ni kreis, kiel Ĝisdate 50,
kaj paro de aliaj paŝoj kiuj faras la tuta sperto iomete pli
unuigita.
Sed ĝenerale, tio estas nur modifo de ekzistanta sistemo
kiu Cloud 9 kreis por ni.
Kion ni tuj montri iom poste
Tiel efektive krei iom baza kromprogramo ke
permesas al ni enmeti ion en la menuaro kaj malfermi dialogon.
Kaj se ni havas sufiĉan tempo, Ni efektive
scias kiel ni povus popoli ke dialogo kun iu informo
el la suba ekzemplo.
Por ke ni atingos tion punkto, Ni unue parolos iomete
pri la arkitekturo de Cloud 9.
>> Do la vojo ke ni estas kutimitaj por interagi kun Cloud 9
estas tute tra la kliento.
Ni malfermu retumilo, ni entajpu la CS50.io.
Ni eventuale, post autenticación, estas prezentitaj kun la IDE.
Sed rimarkas ke ekzistas paro de paŝoj
ke reale preni nin al tiu punkto.
La unua afero estas ke mia kliento, la navegador retejo,
sur peto kaj post autenticación, ŝarĝas la GUI kaj la plug-ins
de iu CDN, de iuj Content Delivery Network.
Tio povas esti sincere ie.
>> Kaj tio estas fakte apartaj el la suba ekzemplo.
Ĝi estas grava al kompreni ke tiu estas fakte nur aro de statikaj dosieroj.
Estas aro de JavaScript ke estas malŝarĝita de la CDN
al mia retumilo, kaj ĉiuj GUI ke vi
vidi here-- ĉi estas vere key-- ĉiuj GUI ke vi vidu ĉi tie
kuras sur la kliento flanko.
Ĉio, kion vi vidas en la Nubo 9 laborspaca
fakte kuras en la retumilo.
Kaj ion ke vi sendu kune al la suba ekzemplo
Estas komunikita kun la petskribo laŭ tiu dua aparta kanalo,
kaj tiam estas savita sur ke Docker ekz.
>> Do la kialo ke mi estas diranta ĉi estas Docker ekzemple
estas ke la subkuŝantaj teknologio ne uzante virtualajn maŝinojn,
sed anstataŭe estas uzanta teknologio nomita Docker,
kiu esence allows-- la plej proksima analogio estas virtuala maŝino.
Sed estas subtile malsama en tiu ekzistas
multe de ŝancoj por kuri kombino de malsamaj Docker
petskribojn sur ununura maŝino.
Kaj ili povas esti turnadita supren en tre rapida sinsekvo.
Ĝi ne estas la pli strikta diferencialado
inter malsamaj Docker petskribojn kiel ekzistas en virtualaj maŝinoj,
sed ankoraŭ ekzistas multe de diferenciación kaj disiĝo
inter tiuj malsamaj petskriboj.
BONE.
Do la du paŝojn tie ke estas grava por realigi
estas ke kiam ni iros al CS50.io ni estas elŝuti la GUI kaj la plug-ins,
kio estas skribita en JavaScript, sur al la retumilo aŭ en la retumilo.
Kaj tiu estas eble paro megabajtoj valoras de informo.
Ĉe tiu punkto, unufoje la GUI havas ŝarĝita kaj la plug-ins komencis,
tiam komencas komuniki kun la Docker kazon, kiu ne
nepre devas esti la sama servilo.
>> Nun ekzistas unu escepto al tiu.
Ni povas fakte havi ambaŭ la transdono mekanismo por la GUI mem
kaj la Docker ekzemple en ĉiuj de la sama servilo, kiu
estas efektive io kion ni faras por la eksterreta versio de Cloud 9.
Tio ne estas io ke ni diskonigita tre multe ĉi Falo,
sed ni ankaŭ havas eksterreta versio kiu
permesas al vi elŝuti pakita versio de cxio tio
kaj permesi al vi kuri Nubo 9 en senkonekta medio.
>> Movanta ĉi ekstere la nubo kaj sur via loka maŝino havas iun efikon.
En aparta, vi nenian plu havas la kapablon
kunhavigi vian laborspaca kun aliaj.
Vi ne plu povas malfermi Cloud 9 el, kaj la CS50 IDE, de ajna komputilo
kaj vidas la samajn dosierojn kiuj vi laboris kun antaŭe.
Sed anstataŭe ĝi funkcias tute sur via loka maŝino
sen bezoni aliro al la interreto.
Sed ankoraŭ eĉ en tiu modelo, eĉ kvankam ni havas unu virtuala maŝino
ke estas esence kurante tion.
>> Ni havas apartan servilon kiu estas transdonante esence la Nubo 9
enhavon, kaj tiam ni havi Docker ekzemple
kiu respondecas por komuniki kun tiu IDE por la dorso fino.
BONE.
Do la tuta GUI estas skribita tute en JavaScript
uzante Node.js kaj la Nubo 9 SDK, kiun ni atingos en nur unu minuto.
Kaj ĉiuj de la plug-ins estas kuri sur la kliento flanko.
Do ni enfokusigi tiam iomete per alprenanta
ke tiu unua paŝo havas fakte kompletigis sukcese,
kaj rigardu nur en ĉi Docker ekz.
>> Do en ĉi tiu kazo, ĉi estas la norma maniero
pensi pri faranta Cloud 9 kromprogramo evoluo estas ke vi estas iranta
esti skribanta kodo kiu kuri en la uzanto retumilo,
kaj vi havos la ŝancon de uzante iuj APIs por komuniki
kun la subkuŝantaj Docker ekzemple kuri iuj kodon tie, kaj fari ion
ke vi volus fari.
Do tiu tuj estos la kunteksto ke ni
esti uzante por la resto de ĉi tiu diskuto.
Kaj nur konservi tiun modelon en menso.
Tio estos tre grava en nur kelkaj minutoj.
Ekzistas kelkaj ligoj mi volas montri al vi.
Unue, Cloud 9 havigis sufiĉe multe da dokumentado
ke estas sufiĉe bonaj, kiuj montras kiom fari bazan kromprogramo disvolviĝo.
Do se vi iros al tiu URL, cloud9-sdk.readme.io,
vi vidos la dokumentado tie.
Kaj multan tiu informo ke vi estas estonta vidos
ankaŭ troviĝas tie, Plus pli.
Vi povas ankaŭ trovi la malfermita versio de Cloud 9 ĉe ĉi URL,
github.com/c9/core, kiun ni uzas kiel parto de la eksterreta versio de la IDE,
por ke vi povos havi la sama Cloud 9 sperto,
sed en eksterreta maniero.
Bone.
Do ni rigardu kiel fakta Cloud 9 laborspaca tie.
Kaj denove, mi volas atentigi eksteren kelkajn aferojn.
Jen, ĉi tie, normala CS50 IDE.
Mi malebligita malpli komforta reĝimo sub la menuo View
tiel ke mi povas vidi la tutan de la menuo opcioj.
Kion mi volas montri al vi rajton nun estas paro de aĵoj.
Unue ekstere, se mi iros en la Preferoj kaj tiam
alklaku Konektu direktisto, kaj entajpi CS50 tie,
ni povas vidi ke estas, fakte, paro de CS50 plug-ins kiu
estis instalitaj kaj nia kurado al ebligi la modifoj kiujn ni
irprenu CS50 IDE.
>> Ĝuste nun ekzistas esence du plug-ins kiu kuras.
Ekzistas unu nomita Simpla, kiuj estas la simpligita mode ke
permesas redukti la nombron de menuo ebloj kune la supro,
kaj tiu tiel nomata malpli komforta modo.
Kaj tiam ekzistas ankaŭ CS50 Stats, kiu estas eble nur iomete misnamed.
Ĉar tiu estas kio montras vin la informo
pri la suba laborspaca.
Injektas tiuj butonoj laŭ la supra dekstra.
Ĝi ankaŭ injektas menuero en la fenestro ero, en la Fenestro menuo
ĉi tie, CS50 IDE Info.
Kaj estas priresponda por instantiating tiu dialogo kiujn ni vidis ĉi tie,
kun ĉiuj informoj kiujn ni estas kutimis vidi en CS50 IDE
laborspaca.
BONE.
Do ekzistas reale pli kromprogramo ke ni evoluigis ankaŭ.
Kaj estas kelkaj aliaj kiuj ni ankaŭ ne publike liberigita.
Sed unu el ili estas la entuta plug-in kiu permesas GDB funkcii.
Do unu el la aspektoj de Cloud 9 estas ke ili provizis jam
ĉi GUI implementar erarserĉilo.
Kaj unu el la plug-ins kiu ni kreis esence
engancha GDB kun ĉi GUI bazita versio de erarserĉilo.
Kaj estas respondeca por la mediar ĉiuj de la petoj kiujn uzanto povas havi,
inter paŝanta super aŭ kreanta breakpoints aŭ ion
kune tiujn liniojn, por ke tradukado al ordonoj kiuj GDB povas kompreni,
emisii tiujn komandojn al GDB.
Kaj tuj kiam GDB diktas respondo, tiam
ni interpretas ke kaj ĝisdatigi la GUI kiel necese.
>> Tio probable unu el la pli komplikaj
de la plug-ins, tiel anstataŭe kio ni estas tuj enfokusigi hodiaŭ estas fakte
la Stats plug-in, kaj ni parolos iomete pri Simpla, ankaŭ.
Do mi menciis antaŭe, kaj mi vere volas fari tre, tre klara, ke denove,
ĉio ĉi tio ni estas vidante tie estas esence
funkcianta sur la kliento flanko.
Ni faras vidi terminalprograo sube, kaj tio, kompreneble,
se ni tajpi komandojn en ke, kiu estos tiam emisiis
al la suba ekzemplo.
Simile, se ni malfermas novan dosieron kaj tajpu kelkajn aĵojn en ĝin kaj savi ĝin,
ke dosiero estos konservita sur la suba ekzemplo.
>> Sed la redaktoro mem, ĉi terminalfenestro mem,
Estas ĉiuj implementado en JavaScript kaj estas ĉiu la kromprogramo
ke ni povas interagi kun, kaj do modifi.
Ekzistas multe de extensibilidad tie.
Mi rekomendas prenanta rigardon ĉe Nubo 9 La GitHub konton
vidi la vasta kvanto de ŝtopilo-ins kiu estas disponeblaj,
kaj kiom bone skribita multe de la kodo estas por extensibilidad.
Do estas io ke mi volas mencii
pri tiu tiel, kiu estas ke ekzistas multe of-- ekzistas
multajn funkciojn tio provizitaj en la preferoj
fenestro, kiun ni vidis ĵus aludis nur kelkaj minutoj.
>> Unu el la aĵoj kiujn ni povas fari kiel IDE programistoj, aŭ kiel Cloud 9 programistoj
estas efektive injekti iuj prefero panelojn de nia propra.
Do la simpla maniero, aŭ la malpli komforta maniero,
kaj ankaŭ la IDE informo, aŭ la statistikojn plug-in,
havas ĉiu iuj prefero paneloj kiuj nin permesas modifi
la konduto de ĉiu el tiuj.
Vi rimarkos ke se mi iros al la Preferoj kaj iras al Uzanto agordojn,
Tie estas CS50 langeto, unu kiu diras IDE informo.
Kaj mi povas ŝanĝi la informo refresh imposto.
>> Efike, kio okazas en la statistikojn plug-in
estas ke ĉiu n-sekundoj, kie n-sekundoj estas difinita per tiu prefero
panelo, informo estas estanta dubinda el la suba ekzemplo, forkondukite
reen al la kliento flanko la plug-in estas tiam
interpreti la informojn el la subkuŝantaj ekzemple
kaj ĝisdatiganta la GUI kiel necese.
Ni povas vidi ke nun tiu estas metita 30 sekundoj, kaj tio estas la defaŭlta.
Sed mi povas definitive ŝanĝi kiel rapide tiu okazas nur
modifante tiun valoron.
>> Nun unu el la interesaj aferoj estas ke tiu prefero panelo, GUI,
Estas vere nur GUI versio de multaj subkuŝanta agordojn
kiuj estas prezentitaj en JSON.
Do se mi iras, ekzemple, sub la CS50 IDE menuo, aŭ la Nubo 9 menuo,
Dependanta sur kiu versio vi rigardas,
kaj iri al unu el tiuj settings-- tiukaze
la projekto settings-- la projekto agordojn tiukaze
validas por ĉiuj la fiksoj pri unu laborspaco.
Dum uzanto aplikiĝas al ĉiuj la workspaces
ke vi havu en via konto.
>> Do ĝuste kiel flanken tie, esti ekstra klara,
Tie estas apartigi la du ĉar kvankam defaŭlte ni
havas unu laborspaca, kiu estas la CS50 IDE, se vi
estis klaki sur via malgranda Avatar tie supre kaj iri al panelo,
Vi trovos ke vi povas reale krei aldonan workspaces tiel.
Vi povas vidi ĉi tie ke mi havas IDE 50 laborspaca, kaj ankaŭ
por la celoj de ĉi tiu seminario, a laborspaca
nomata laborspaca, kiu estas tie.
Do ĉiuokaze, mi havas malsamajn preferojn.
Ĉiu unu el tiuj povus havi aparta projekto preferoj,
sed la preferojn estas dividita inter ĉiuj miaj workspaces.
Parenteze, tiu estas ankaŭ tre oportuna se vi
deziras krei laborspaca kun malsamaj ebloj.
Kaj ĝi estas tre utila al krei novan laborspaca.
Kaj elektu unu kiu povus esti Antaŭ- agordita alimaniere,
eble por PHP specife, aŭ Django specife.
Aŭ eĉ nur kutimo.
La CS50 laborspaca ŝablono estas kiu ni
uzi kiu aŭtomate instalas Ĝisdatigo 50 Kaj ĉiuj la fiksoj
ke ni havas tie, inkluzive de ĉiuj plug-ins kiu ni havas por la CS50 IDE.
BONE.
Sed ni revenu al tio.
Do denove, ekzistas projektoj agordojn, kaj tiuj estas kiuj estas
ke ni estas rigardantaj tie.
Kaj rimarki ke Estas aro de difinoj,
multaj el ili respondas al prefero paneloj, sed ne ĉiuj el ili.
Sed ni povas vidi ke ĉi tie, en this-- OH ne, ĉu mi metis ĝin en la uzanto agordojn?
Eble mi metis ĝin en la uzanto agordojn.
Kaj tiu, ĉi tie ni iras.
En la uzanto kadretoj, ni povas vidi ke ni havas CS50 sekcio,
kaj tiu estas skribita al cxi tiuj Cloud 9 plug-ins
ke ni implementado.
Ekzistas simpla al korespondi kun tiu simpla plug-in,
kaj statistikoj unu kiu respondas al tiu GUI bazita
versio de la prefero panelo.
La aktualiga ofteco, en ĉi kazo, estas fiksita al 20 sekundoj.
>> Tio estas ĉio, espereble, la komencoj de iu informo
ke ni vere vidos en iom iom pli detale, momente.
BONE.
Do diru ni volas reale preni gxin.
Ni komprenas ke ĉiu de la aĵoj ke estas okazanta sur la kliento flanko
estas farita reale sur la retumilo, kiun signifas ke ajna plug-ins kiu mi skribas
tuj estos skribita kun la retumilo en menso.
Kaj se mi vere volas fari ion sur la laborspaca,
Mi eble devas komenci ia komunikado
inter la retumilo kaj la laborspaca certi
ke tio estas efektive plenumita.
Sed diru ke nun Mi volas reiri malsupren al ĝi
kaj fakte krei mian unuan kromprogramon.
Nu, la vojo ke vi povus fari tion estas efektive sufiĉe facila.
Ĝi estas donita en la Nubo 9 SDK.
Sed estas preni vian ekzistanta laborspaca nomon,
estas la URL kiu vi havas ĉe la supro de via trinkejo, kaj aldonu la sekvan al ĝi.
?
SDK = 1 & Debub = 2.
Nun kio ĉi tuj ebligi estas ke la SDK = 1 efektive starigis la SDK
regimon vera, kio ebligos kelkaj aldonaj aferoj.
Kaj elpurigi = 2 permesos erarmesaĝoj esti iomete pli parolema.
>> Kaj do se vi alportu la Ĝavoskripto konzolon en via Chrome ellaboranto langeto,
vi efektive povos vidi multa pli informo
ol vi farus alie.
Do mi rekomendas turnante ambaŭ sur samtempe, ĉar ĝi vere
Estas utile havi ĉiuj ĉi aldona informo.
Estas grave noti, aliflanke, ke ŝaltante elpurigi al la valoro de 2
signifas ke ĝi estas tre parolema, kaj ĝi efektive
estos iom rimarkinde malrapidigi via IDE, speciale kiam ŝarĝo
aŭ kiam fari faras pezajn taskojn.
Do ĝuste teni ke en menso.
Ĝi estas utila por evoluo, sed vi eble ne volas havi ĝin sur la tutan tempon.
>> Do ni vere faru tion.
Sed en ĉi tiu kazo, mi efektive havas jam starigis laborspaca kun tiu.
Do ni vidu, SDK = 1 & debug = 2.
Kun paro de plug-ins espereble jam instalita.
Bone.
Do nun ke mi ŝaltis la SDK debug reĝimo, rimarki ke ni estas en debug mode,
tial ni povas rigardi la dev iloj por vidi ajna eraroj, kiujn Mi faros offscreen.
Ni povas vidi ke ekzistas faskon da eraroj tie.
Nun estas efektive sufiĉe komuna por Nubo 9 havi kelkajn erarojn,
kaj mi ne maltrankviliĝas pri ili ĝis vi
vidi iun kiu povus estu specifaj al la plug-in
ke vi okazas esti kreanta.
>> Do jen, ekzemple, ni preni kelkaj 404s-- ne trovis.
Ni vidas ke ni estas nekapablaj ŝarĝi iun informo ekstere la suba ekzemplo
mem.
Kaj estas aro da aldonaj informon, sed la plejparto de tiu ni estas
efektive tuj ignori nun.
Ĉar tiu estas sufiĉe komuna por laborspaca
havi nur kelkaj eraroj.
BONE.
Mi tuj movas tiu el la vojo, kaj revenu ĉi tien.
Kaj nun la facila maniero, la belan afero pri havi ĉi ellaboranto
reĝimo aktivigita estas kiu permesas min facile krei novajn kromprogramon.
>> Do dum antaŭe mi efektive ne havas ĉi nova kromprogramo havebla opcio,
kion ni povas vidi se mi reirus al mia ne ellaboranto mode tien,
Tie estas neniu nova kromprogramo.
Ebligante la SDK moduso, mi havas novan kromprogramo havebla
kaj mi povas facile krei unu.
En tiu kazo, ekzistas paro de malsamaj ebloj, simpla,
malplena ŝtopilo-en, plena kromprogramo, instalilo, Cloud 9 pakaĵo.
Ni simple elekti malplena kromprogramon por nun
tiel ke ni povas vidi tre simpla versio de unu.
>> Nun rimarkas ke laŭ la maldekstre tio estas nun
io sub ŝatatajn, kiu estas listigante kelkajn plug-ins
ke estas nun disponebla al mi.
Se mi vastigi ke ni aŭskultas povos vidi tiujn.
Nun mi volas vin rimarki ion tie, kiun
estas ke tio ĉi ne vere enhavis ene la laborspaca dosierujo
sur mia subkuŝanta Ubuntu ekzemple, sed ĝi estas enhavita sur la durdisko.
Kaj kie ĉi situas, ĉar tiu estas tre utile koni ilin,
speciale se vi tuj faranta ion kun Git,
kie tiu situas estas en .c9 dosierujo, / plugins.
Do, se mi iros tien, ni povas vidi ke nun la listo de plug-ins kiu estas tie
egalas la listo la plug-ins kiu mi vidis sur la maldekstra flanko de mia laborspaco.
>> Nun defaŭlte, kaj tio estas speco de stranga,
defaŭlte kiam mi kreas nova kromprogramo en laborspaca,
ĝi kreas tiu kromprogramo ke per defaŭlta havas nomon de substreko.
Ĝenerale tio eble kaŭzi iujn problemojn.
Do la sekvan paŝon ke mi kutime elfari
estas simple forigi tiun aparta kromprogramo
kaj lasi nur la simpla plug-in, kiu estis tie komence, plugin.simple.
Kaj tio estas la sola kiu estas tie.
BONE.
>> Do kion signifas ĉi reale aspektas?
Nu, tiu estas, denove, JavaScript pako
kiu inkludas iujn dosierojn, inkludante plugin.js dosiero, kie
la ĉefa enhavo de miaj kromprogramo situas,
a package.json dosiero, kiu fakte precizigas
iuj metadatumoj pri ĉi plug-in, kiel kiu la aŭtoro estas,
ajna aldona informo pri ĝi, priskribo de la plug-in, kaj tiel plu.
Kaj ankaŭ defaŭlte, ĝi Kreas malplenan README dosiero,
kaj malplena testo dosiero por vi krei plian dokumentadon,
kaj testado jungilaron se vi ŝatus fari tion.
>> Do ni nur rigardu unue ĉe, tre rapide, ĉe la package.json dosiero.
Ĝi estas sufiĉe facile simple iru tra ĝin kaj plenigi en la areoj de ĉi
ke vi volas plenigi, kiel havigi al li nomon, doni priskribon,
persisti la versia numero ĉiu malmulta, provizi
aŭtoro por ĉiu persono kiu kontribuas,
aldoni ilin al la kontribuantoj sekcio, kaj la resto de tio vi
povas sufiĉe tre nur forlasi kiel ĝi estas nun.
>> Tie estas unu afero tio Gravas rimarki,
ke sub la plug-ins sekcio, estas ŝlosilo nomita kromprogramon.
Kaj tiu estas egalita al la nomo de la JavaScript dosiero nomata plugin.js.
Do jen kiel Cloud 9 scias, kiam legas ĉi package.json dosieron, kiu
de la js dosierojn al efektive ŝarĝas.
Se mi kreas aldonan js dosieroj aŭ volas renomi ke js dosiero de ŝtopilo-en,
Mi ankaŭ devas ŝanĝi ĝin en la package.json dosiero.
>> Demandojn de la spektantaro?
No.
Tiu persono kiu estas sekvante kune kun mi ĝis nun.
>> BONE.
Do mi efektive kreis paro de plug-ins jam,
Mi pensas, en tiu spaco de laboro.
Do ni malfari de iuj de ĉi tiuj, aldoni SDK = 1 & debug = 2, reŝarĝi ĉi laborspaca,
kaj ni vidu, se ni havas tiuj plug-ins nun.
C9 / plugins.
Ĉi tie ni iras.
Ni povas vidi nun en mia C9 / kromaĵojn de tiu unu, ni havos plugin.1 kaj plugin.2.
Do ni tuj simple pliigu the-- nur pliigi la kvanton de malfacilo
en ĉiu de ĉi tiuj plug-ins.
Sed ĉi tie, se mi kreas novan kromprogramo, Mi povas aldoni ĝin al miaj favoritos.
Kaj mi nur forigi tiujn el la suba dosiersistemo.
>> Ni forigu tion.
Nun, se mi malfermos mian unuan plug-in, kaj malfermita plugin.js,
ni povas vidi tie la subkuŝanta simpla versio de ŝtopilo-en.
Lasu min reale reiri al tiu alia laborspaca
ĉar vi povas almenaŭ, ĉi tie vidi, kio malplenan kromprogramo reale aspektas.
Do sub la kapuĉo, tio aspektas tre simila al teknologio nomita,
Mi pensas, ĝi estas RequireJS.
Rimarku ke tio ne vere aspektas, eble,
la sama kiel iuj aliaj Ĝavoskripto dosierojn, ke ni eble vidis.
Sed anstataŭe, ekzistas paro de ĵus bazaj linioj ke ĝi efektive havas.
>> Ĉiuj ĉi aferoj estas unua interpretita de la IDE,
sed ĝi ne estas vere kuri ĝis precizigita.
Kaj mi rakontos al vi pri kiam tiu fakte signifas en nur momento.
Sed rimarki ke tie ekzistas main.consumes linio en linio 2,
kaj tio listigas ĉiujn la ŝtopilo-ins ke tiu kromprogramo estas dependaj.
Do defaŭlte, ni eble ne havi ajna dependaĵojn en aliaj ŝtopilo-ins,
sed kiam ni efektive bezonas dependas karakterizaĵoj provizita
de aliaj ŝtopilo-ins en la IDE, ni devas listo tiuj plug-ins
en la main.consumes linio.
Kaj tiam ni bezonas ligi ilin al la kodo
sube, kiun Mi montros al vi en nur momento pri kiel ni povas fari tion.
>> Main.provides donas nomon al ĉi kromprogramon
ke aliaj plug-ins povis uzi en siaj konsumas linio.
Do en ĉi tiu kazo, mia kromprogramo estas simple metitaj defaŭlte,
kaj ni devus ŝanĝi ke esti Taŭga por nia propra kromprogramo,
kiel ni vidos en nur momento.
Nun tie en la funkcio ĉefa, tiun funkcion ĉefa
fakte kuri kaj interpretita, sed ĝi ne reale fari tre multe.
Ĝi nur prenas ĉiun starigita, sed ĝi ne vere komencos la plug-in,
malgraŭ kion la nomo sonas.
Tio vere okazas tra vico de metodoj kiuj
estas enhavita ĉie ĉi kromprogramo.
>> Do se mi rulumu malsupren, ni povas vidi ke ni havas vivociklo kie
sur iu okazaĵo nomita ŝarĝo, aŭ iu okazaĵo nomita malŝarĝi,
iuj okazaĵoj fakte okazas.
Estas vere tien kie kiel la ŝtopilo-en startas ke tiuj metodoj estas vokita.
Do ni esti iomete pli konkretaj pri tiu kaj rigardu ekzemplon.
Do jen por plugin.1, kio ni esence tuj faros
estas krei menuero nomata CS50 Seminario Dialogo 1--
ĉar ni havas du el them-- kaj ni tuj
injekti ĝin en la Fenestro menuo.
Kaj kiam ni premas sur ĝi, ni estas tuj malfermos dialogon kiu
montras nin iuj tre bazaj informoj.
>> En tiu kazo, nur saluton mondo.
Do tiu estas tre simpla saluton mondo dialogo
ke ni povu efektivigi kiel kromprogramo en Cloud 9.
Do ni vidu kiel ĉi efektive aspektas.
Ni treti tra ĝi, same Relative rapide do ni
povas rigardi la sekva kromprogramo ankaŭ.
Rimarku, ke ĉi tie ni estas konsumanta vario de plug-ins.
Ni konsumanta dialogo plug-in, komandojn, menuoj, kaj UI.
Aspektas kiel mi efektive estas konsumanta dialogon dufoje, do mi povas forigi tion.
>> Kaj rimarki ke la vojo ke mi konektanta ilin,
ĉi tiu estas speco de metadatos kiu estas rakontanta la plug-in sistemo kio postuloj
estas efektive necesa por tiu kromprogramo ŝarĝi.
Estas ankaŭ grave noti ke la ordon ke ŝtopilo-ins estas ŝarĝita
ne estas garantiita.
Sed kio estas garantiita estas ke se mi specifi iuj plug-in kiel kondiĉo,
ke kromprogramo estos ŝarĝitaj antaŭ ĉi tiu estas ŝarĝita.
>> Do tio signifas ke se via ŝtopilo-en postulas sur iu funcionalidad provizita
per io ajn alia en la IDE, vi devus certi ke via kromprogramo konsumas
ke ŝtopilo-en por ke la dependaĵojn Estas certaj krei vian kromprogramo,
aŭ instantiate via ŝtopilo-en, nur post tiu ekzistanta kadro ekzistas.
Do jen mi menciis la metadatuma al la plug-in manager,
kiu ones mi tuj konsumi.
Kaj en la ĉefa funkcio ĉi tie, Mi tuj poste konekti
mian kodon al tiuj importitaj plug-ins.
>> Do mi simple tuj krei iuj variabloj kiuj
parigi la nomojn de ĉiu de tiuj tiel ke mi povas tre rapide referenci ilin
tra mia kodo.
La kialo Mi importanta dialogo Estas ĉar mi volas mian kromprogramo
agi kiel dialogo kromprogramon.
Kaj la vojo ke mi povas fari tion estas, kompreneble,
konekti mian kodon por la dialogo plug-in per importanta ĝi
kaj tiam per preciziganta per kreante novan dialogon ŝanĝiĝema
kaj konektante ĝin al ke importitaj kromprogramon.
Kaj tiam per difino mia plug-in kiel novan dialogon.
>> Do en la inicialización, mi volas difini mian kromprogramon.
Kaj tiu variablo nomata plug-in, vi vidos
estas nur uzata komune tra Cloud 9 ŝtopilo-ins.
Mi tuj instantiate nova dialogo kun iuj atributoj,
doni specifan nomon, diru ke ĝi eblas por uzantoj por fermi ĝin.
Ke ĝi montros iom x en la supra dekstra mano angulo,
aŭ iom butono en la malsupra dekstra mano angulo.
Ĉu mi povas elekti tekston de ĝin, kion la titolo de tiu dialogo
estus, kaj tiel plu.
Nun tio simple difinas la dialogo, sed ne ankoraŭ montri ĝin.
Mi vere devas difini agado por ĝi montriĝos.
>> Kaj cetere, mi kuraĝigas vin rigardu la Nubo 9 SDK,
ĉar estas vario dialogoj kaj ili vere bone dokumentita.
Vi povas vidi la malsamajn tipojn ke estas, kaj uzi ilin
en kio ajn kromprogramo vi havas en menso.
Nun tie okazas esti ŝarĝo sekcio, kaj tiu ŝarĝo
funkcion kiel vi memoras estas uzita de la plug-in vivociklo
efektive instantiate ĉio kaj akiri ĉion preta iri.
Nun kiam tiu kromprogramo ŝarĝoj, mi ne faras deziras ĝin tuj montros dialogon,
ĉar ĉi kromprogramo ŝarĝos kune kun la resto de la IDE.
Kaj kiam mi ŝarĝi ke IDE, mi ne volas la dialogo montri supren aŭtomate.
Mi nur volas ĝin montri kiam mi alklakas la menuo en mia Fenestro menuero
Mi aldonu al gxi momente.
>> Do ekzistas du klaraj paŝoj tie ke devas okazi.
Mi devas krei komando, kaj la komando
estos respondeca praktiko montrante la dialogo sur la Nubo 9 IDE.
Kaj tiam mi devas konekti, mi devi krei novan fenestron menuo
eron, kiu kuras ke komando.
Por ke kiam mi alklakas tiun fenestron menuero, ke komando estas poste ekzekuti
sekve mia dialogo estas tiam montrita.
Kaj tiel tio estas fakte bela bela vojo pensi pri ĝi.
>> Ĉar unue mi kreu komando kies nomo estas CS50 Seminario Dialogo 1,
kiu disponigas iun ĝenerala kunteksto por ĝi.
Kaj la grava iom tie estas rimarki la EXEC atributo, kiu
listigas funkcio kiu nomos en mia kromprogramo kiam ĉi komando estas kuri.
Do tiu komando estas ia kiel a-- estas nur arbitra Nubo 9
komando kiu estas disponeblaj al ajna Cloud 9 kromprogramon.
Sed la fakta funkcio kiu estas tuj nomos kiam ĉi komando estas prizorgita
estas la spektaklo dialogo funkcio en mia plugin.js dosiero.
>> Kaj ni povas reale vidu tiuj plug-ins kaj la listo
de komandojn kiuj estas disponeblaj al ni en Agordoj, rulumu tuta vojo down--
ni vidu, fakte ni vidas tion nun?
Konektu direktisto, ne, mi pensas I-- estas definitive ĉirkaŭ ĉi tie ie.
Nu, tie estas listo de komandoj ie, sed mi devas havi,
Mi forgesis kie estas.
Do bone, ni pluiru.
Bone.
Do ni havas liston de komandoj kiuj estas disponeblaj al ni,
kaj tiuj komandoj estas tiuj nur arbitra Nubo 9
komandojn kiuj kuras specifan kodon.
Do ĝuste teni ke en menso, ke ni tuj kuras la spektaklo dialogo
funkcii momente.
Nun kiam mi fakte volas aldoni menuo ero, mi povas aldoni la eron per pado,
kaj nur specifi ĝuste kie mi volas ĝin esti, Fenestro / CS50 Seminario Dialogo 1.
Kaj je tiu punkto, mi volas krei novan eron kiu
tuj kuri komando, CS50 Seminario Dialogo 1.
Rimarku ke denove, ĉi tiu estas la Nubo 9 komando mi kreis ĝuste supre.
>> Nun mi volas ankaŭ krei iom dividanton,
kaj tial mi povas fari la saman en la posta linio.
Nun vi eble rimarkis ke kiel parto de la difino ĉi menuero,
ekzistas kelkaj asociita kun ĝi kiu
fakte diras kie ĝuste Mi volas ke menuero esti
lokitaj en la listo de menuoj.
Sed vi eble rimarkos ke mi ne vere
vidas ian nombroj kun tiujn menuojn, defaŭlte.
Do ekzistas iom kasxitan ke ni povas fari, iom ŝanĝo al nia URL.
Do krom SDK = 1 & debug = 2, Mi starigis menuo 1--
kaj espereble ĝi estas menuo, ne menuoj.
Ho, estas menuoj = 1.
Atendu.
>> Kaj kion ni vidos sur reŝargi ke Ide estas ke mi ankoraux estas en debug mode,
sed nun estas nombroj asociita kun ĉiuj menuoj.
Kaj tion diras vi precize kio la nombro
Estas kiam vi provas injekti io ajn en ĉi menuaro.
Do en la Fenestro menuo, mi povas vidu artikolon 45 estas kunlabori,
kaj listero 38 antaŭ ol estas instalilo.
Do kiam mi volas injekti ero inter tiuj du,
Mi simple elektu kelkajn inter tiuj du artikoloj.
Do mi elektis 41 kaj enmetita mia Seminario Dialogo 1 menuero ĉe tiu loko.
>> Kaj tio estas kial ĉi numeron kiu aperas tie estas numero 41.
Tio estas la loko de tiu menuero en la Nubo 9 menuo.
Nun simile, mi volis krei dividanton
kaj aldoni ĝin por ke tie estas bela divido inter ĉiu de tiuj menuo
erojn.
Do mi aldonis ke en loko 43.
Ĝis nun, tiel bona, mi esperas?
Do nun ni vere rigardi la specifa kodo en programo dialogo
ke estas fakte priresponda por malfermi tiu dialogo fenestro.
>> Scrolling malsupren, mi vidas ke mi volas havi tiun funkcion spektaklo dialogo,
kaj ĝi estas ekstreme simpla.
Mi tuj kuros la spektaklo metodo sur la ŝtopilo-en variablo.
Kaj memoru ke ni difinis tiun plug-in variablo supre kiel dialogo.
Do trinkejo plug-in, en tiu kazo, estas tiu celo kiun ni difinis interne.
Kaj ĝi tuj estu nova dialogo enhavis ene de tiu kromprogramo.
Kaj do ni efektive referencita ĉi plug-in variablo en multaj lokoj
en tipa Nubo 9 disvolviĝo medio.
>> Ni vidos ŝin tie.
Rimarku ke kiel ni rulumu malsupren, ekzistas aldona vivon cikloj.
Do rimarki ke ĉi tiuj respondas al okazaĵoj kiuj ekbriliĝis
per tiu objekto, tiu dialogo objekto.
Defaŭlte, ekzistas ŝarĝi kaj malŝarĝi, kiu
estas haveblaj al ĉiuj Cloud 9 ŝtopilo-ins.
Sed en la evento de tiu dialogo, ekzistas
alia okazaĵo kiu povas fajro tiel nomata
Draw, kiu estas pafita kiam tiu estas ronde esti tirita sur ekrano,
ĉe la unua petskribo de la dialogo montras.
>> Do kiam ĝi estas fakte tuj montriĝos,
tie tuj havigi al ni iom da HTML.
Kaj uzante nur normo HTML praktikoj povas ni
injekti iuj tre simpla informo, nian saluton mondo, en tiu dialogo.
Do se ni tiam rulumu supren, ni povas vidu tiam la procesio de aferoj
ke ĝi estas okazanta.
Unue ni kreis Cloud 9 komando ke kiam ekzekutita de Cloud 9
tuj ekbruliĝis tiu funkcio.
Ĝi tuj kuri ĉi funkcio show nomita dialogo, ke mi havas
skribita en mia kodo.
>> Mi kreis menuero kaj alkroĉita al ĝi ke sama komando
ke kiam tiu ero estas klakita en la menuo, tiu komando estas poste ekzekuti
kaj tio funkcio estas tiam ruli.
Kaj ene de la funkcio mi estas nur tuj voki the-- mi
nur tuj ekzekuti la spektaklo metodo de tiu kromprogramo, kiu
tuj unua alvoko la remizon metodo kaj foririnte
maldungi tiun metodon malsupre, la desegni okazaĵo traktilo, en nia viva ciklo.
Kaj tiam ĝi estos reale montri la dialogon.
>> Ekzistas ankaŭ kaŝi metodo, por ke se mi bezonas la eblecon kaŝi
mia dialogo, mi povas fari la samon.
Do jen preskaux ĝi akiri ĉion ĉi labori.
Rimarku ke estas se ni rulumu malsupren plu ekzistas frostigon publika API.
Ĉi esence nur diras ke mi volas tiujn metodojn por efike
estu publika, sed ne overwriteable ekster la kunteksto de ĉi tiu ŝtopilo-je.
Kaj malsupre, ĉe la malsupro, estas eble la lasta afero
ke ni vere bezonas pagi da atento ĉi tie, kiu
estas ke ni intencas enskribi nian plug-in kun la nomo C9 Seminario 1,
kaj la objekto kromprogramon.
>> Kiu kiel vi memoras, estas ke ŝtopilo-en kiuj kromprogramo
celo kiun ni estis difinanta tra la tuteco de tiu fonto
kodo.
Kaj C9 Seminario 1 estas la ĉeno kiu ni promesis
provizi je la supro de tiu difino.
BONE.
Do ni ramplo ĝin iomete kaj vidi se ni povas fari ion
iomete pli interesa.
Nun tiu estas nur tiel granda.
Mi volas diri, jen, ĝi estas vere bela malvarmigi ke en tiel malmultaj linioj de kodo,
ni povas modifi la ekzistantan IDE kaj aldoni ekzistantan menuero
aŭ aldoni novan menuero, aldoni komando, montranta dialogo,
kaj nur aro da funcionalidad kiu ekzistas.
Estas vere bela granda.
>> Sed ĝi ne faras tre ĉar ĝi ne povas komuniki kun la subaj Ubuntu
Ekzemple.
Do diru ke mi fakte volas eltrovi
kelkajn informojn pri la subkuŝantaj Ubuntu ekzemple,
kiel la statistikojn plug-in faras.
Do ni rigardu kiel iomete pli informo
pri kiel la statistikojn plug-agoj.
Kaj fakte, ĝi estas tre simila al tiu.
Vi eble memoras ke Tie estas dialogo.
Vi eble memoras, ke tie estas iuj informoj tio
montrita nur laŭ la menuo trinkejo kune la supro, kiun espereble vi nun
prenanta guston de kiel ni implementado ĉi,
nur enigante menueroj ĉe specifa punktoj kaj per instantiating dialogo
kaj montri ke dialogo.
>> Sed ni ankoraŭ ne montrita vi kiom ni povas konekti ĝin
la ordono en la suba Ubuntu ekzemple.
Do ni rigardu tiam ĉe plugin.2, kiuj faras precize tion.
Ni tuj malfermu plugin.js, kiu estas la kodo por tio.
Sed sub la Fenestro menuo, se mi klakas sur dialogo 2,
ni povas vidi ke ĝi diras ĉi anstataŭe, saluton CS50, kiu
ne aspektas ĉiuj ke tentanta, dekstra?
Krom, spekti ĉi.
Lasu min ŝanĝi ion tie.
>> Mi tuj iros al mia laborspaca kaj ŝanĝo seminario
diri ion alian, kiel Saluton, Dan.
Mi tuj fermos ĝin kaj savi ĝin.
Kaj nun mi iras al re-run mia dialogo menuero.
Kaj rimarki ke ĝi havas nun ŝanĝis kion ĝi diras.
Saluton, Dan.
Mi ŝajne faris ion malsupren tie en la subkuŝantaj Ubuntu ekzemple
sen esti manipulitaj ajna kodo kiu denove kuras nur
sur la kliento flanko.
Do ekzistas evidente ian konekto kiu okazas tie.
>> Nun ĉi tiu estas kie multaj el la potenco de la Nubo 9 SDK envenas,
estas ke en ĉi plugin.2, ni povas fakte kaŭzi
alvokon al okazi al la suba ekzemple
kaj kuri iuj arbitraj komando.
Do en ĉi tiu kazo, mi devas reale kreis tre simplan bash skripton
en mia laborspaca nomita Seminario.
Do lasu min malfermi ke ĝis.
Kaj ni povas vidi ke ĝi aspektas kiel ĉi tio.
Estas nur tre simplaj bash skripto kies sola celo en la vivo
tuj estos eĥi tiun tekston, Saluton, Dan.
Aŭ antaŭ ĝi, ĝi diris Saluton, CS50.
Kaj jen ĉio estas tuj faros.
>> Ĉar tiu estas nun komando ke mi povas kuri.
Mi povas efektive ruli ĝin malsupren tie.
Ni povas vidi ke ĝi reale estas nur ordono kiun mi kuras nature.
Mi povas demandi miajn kromprogramo ekzekuti ĉi komando sur la suba laborspaca
kaj analizi la informo kiu revenis de ĝi,
kaj fari ion kun ĝi, kaj modifi miaj ŝtopilo-en kaj la konduto kiun mi
havas en mia kromprogramon kiel rezulto. BONE.
Do ni vidu kiel ĉi tio okazas.
Ni vidis tiun tre simplan Seminario batch skripto kiu mi
[Inaudible] ke ĝi povas efektive ruli.
>> Kaj nun ni vidu la modifoj kiuj estas necesaj por ligi ĉi kune
kun la dialogo fenestro kaj kuri ĝin.
Do jen ni tuj faros belan multe la samon kiel ni vidis antaŭe.
Sed rimarki, ke inter la aferojn mi konsumis now--
krom la dialogon, kiun denove mi hazarde faris dufoje,
kiu ne necessary-- aldone al la dialogo kaj la komandoj
kaj la menuoj plug-ins, kiuj estis necesa en la unua unu por mi
difini novan ordonon kaj injekti ero en la menuoj,
Mi ankaŭ havas ĉi proc kromprogramon.
>> Kaj tiu proc kromprogramo permesas nin manipuli procezoj
sur la suba ekzemplo.
Mi konektis ĝin post mi havas diris ke mia kromprogramo postulas.
Mi tiam konektita al kodo, kiel ni vidis en la ĉefa funkcio.
Denove, mi tuj pravalorizi miaj dialogo.
Kaj se ni movas malsupreniros, ni povas vidi kiel ĉi tiu estas malsama.
La ŝarĝo funkcio estas la sama, tial Ĝi simple tuj krei komandon
kaj krei menuero kaj konekti ke menuero al tiu komando.
Sed se ni nun rulumi malsupren montri dialogo,
ni povas komenci al vidi kie la disputoj okazas.
>> Ni havas funkcion spektaklo dialogon, kiun estas nur tuj montros la dialogon.
Sed kiam mi montros dialogon, kaj kiam la spektaklo metodo nomiĝas,
ĝi pafas la remizon funkcio.
Kaj mi tuj tiam specifi iuj enhavon ene de tiu.
Do mi simple tuj krei div, havigi al ĝi
iu baza teksto, Saluton, mondo.
Sed rimarki ke tie mi tuj alfiksi al ĝi IRU.
Kaj la tre sekvanta linio mi iras trovi ke ID uzante JavaScript,
kaj stoki ke objekto en alian variablon
ke mi simple tuj voki enhavo.
>> Do nun, kiam mi havas enhavo, ĉiuj mi bezonas fari
estas nur modifi ĉi objekto interna HTML.
Kaj la dialogo HTML volo tiam esti modifita ankaŭ.
Kaj post tiu kromprogramo estas tiam montrita, kio povas okazi
kaj ĉi estas nova okazaĵo ke estas nova al ĉi tiu ŝtopilo-je,
sed okazas en ĉiu kromprogramo kun la dialogo, kiam tio estas nun montritaj,
Mi tuj vokos funkcio nomita fetch info.
Kaj ĉi tiu funkcio estas la viando de ŝin tie.
Mi tuj uzas tiun proc kromprogramo ke ni priskribis antaŭe, kiu por iu,
Estas vere nur Node.js biblioteko ke Nubo 9 estas uzanta tie.
>> Do vi efektive povas rigardi supren pri kiel ĉi
funkcias se vi iras en la Node.js dokumentado
kaj fikse rigardis la exec dosieron metodo por procezoj tie.
Mi tuj kuros ĉi specifa komando, hejmo Ubuntu laborspaca
seminario, kiu estas tiu sama, kiu saman ordonon ke mi kreis antaŭe.
Provizu al ĝi fluon laborante dosierujo, nur
esti ultra sekuraj en terminoj de la kunteksto de kie tio estas kuranta.
Kaj fojo kiu estis kompletigita kaj rehejmigxis
Mi tuj kuros ĉi funkcio nomita parse eligo.
BONE.
Do ĉi tiam tuj ekzekuti iu komando sur la loka, aŭ prefere
la fora Ubuntu ekzemple.
Kiam mi reiros informo, mi estas tiam
tuj nomas aparta funkcio nomata parse eligo, ke
havas tiun subskribon ĉi tie, eraras, stdout, stderr,
kaj elfari iuj komputado sur tiu.
Do se mi ricevis eraran iaj ajn,
Mi fakte kontroli ĉu eraro fakte havas iujn datumojn.
Kaj se jes, tiam mi modifos la internan HTML de tiu enhavo kontestas, kiu
Estas vi memoras, ni konektita al la dialogo
ĉe la instantiattion de tiu dialogo, aŭ ĉe la unua desegno
de tiu dialogo.
Mi tuj ĝuste diri ke iu eraro okazis.
>> Nun tiu estas tro simplista.
La eraro valoro tipe enhavas ion kio estis utila,
eble eraro nombro kaj eraro de la skripto mem.
Aŭ se la skripto skribis ion al norma eraro,
ke datumoj estus popolitaj en tiu parametro ankaŭ.
Kaj mi povus esti iomete pli zorga pri kio eraro
Mi fakte montrante personoj.
Sed ĉi simplista ekzemplo estas sufiĉe bona por nun
almenaŭ kompreni ke tiu funkcioj.
Alie se ekzistas neniu eraro, tiam mi estas nur
iranta provizi la kruda eligo de tiu funkcio
en la internan HTML de ĉi enhavo elemento, kaj tiam ĝisdatigi mian kromprogramo
kaj montri ĝin ĉi tie.
Kaj tio estas sufiĉe tre ĉiuj tio necesa akiri tiun kuri.
Kaj do ni pensu pri tiam kiel tiu funkcias, entuta.
Kiam mi unue ŝarĝis ĉi plug-in, nur kiel la unua plug-in,
Mi tuj aldonu komandon tio disponebla al io, al iu kromprogramo
en Cloud 9, nomata CS50 Seminario Dialogo 2, kies respondeco
Estos kuri ĉi programo dialogo, kiu estas vi memoras,
efektive montri la dialogon ke mi petis sube.
>> Tiam Mi aldonos ke komando al fenestro menuo
tiel ke mi havas aliron al tiu.
Kaj kiam tiu dialogo petas montriĝos,
Mi prenos iuj info el la subkuŝantaj Ubuntu ekzemple
uzante la exec dosiero komando.
Pardonu min.
Fojo kiu revenis kaj mi ricevas iun informo, tiam sur la kliento flanko
denove mi povos analizi la eligo de tiu komando
kaj ĝisdatigi la internan HTML de la elementoj
ke ni konektitaj antaŭe.
>> Kaj kun tiu, ni tiam havas tiu plene funkcia kromprogramo
kiu permesas min alvenigi informo de tiu arbitra skripton
ke ni kreis sur nia subkuŝanta ekz.
Sed denove, estas vere grava kaj vere kernaj
apartigi eksteren kie ĉiu tiuj aferoj okazas,
ke ni havas ĉiujn ĉi kliento flanko kodo kiu estas kuri en la navegador,
kaj ankoraŭ ne havas aliron al la suba dosiersistemo
ĝis ni efektive kuri iuj de tiuj komandojn kiuj estas provizita per la Nubo
9 SDK kiel proc, kaj iuj aliaj aĵoj kiuj nin permesas legi iuj datumoj,
aŭ legis kelkajn dosierojn se ni bezonas fari ion tian.
>> Nun tiu estas iom simpla ekzemplo.
Estas aliaj aferoj, kiujn ni estus eble volas fari tiel.
Ekzemple, eble ni efektive volas konservi informojn
al la preferoj.
Aŭ eble ni volas aldoni novan prefero pane
aŭ io kune tiujn liniojn.
Tiam tio estas iu kiu vi povas preni rigardi la Nubo 9 SDK
akiri pli informo sur.
Sed tio vere estas sufiĉe por starti.
Do simple estu iomete pli konkretaj pri la maniero, ke kelkaj el tiuj aferoj
funkcio, mi volas montri nur unu pli ekzemplo, kiu estas nur iuj
de la kodo de la Stats 50 kromprogramon.
>> Kaj tiu kodo estas esence bazita sur ĉi tiuj ekzemploj
ke vi efektive vidis, sed havas iuj pli sekurigilojn
kaj havas kelkajn pli komplekseco en ordo por atingi iun el la aldona aferoj
ke ni volas atingi.
Ekzemple, se mi volas esti povos savi kelkajn agordojn,
tiam mi bezonas havi aliro al la Fiksoj plug-in,
kaj ĉiufoje mi volas legi kelkajn agordojn,
Mi povas, ekzemple, alfiksi al diversaj okazaĵoj en la Fiksoj plug-in.
Do ĉiam kiam la difinoj estas ruĝaj, ekzemple, en mian propran plug-in,
se mi legos iuj agordojn de la savita stokado
preferoj de la uzanto, tiam mi povas fiksita defaŭltojn specifa loko,
por specifaj preferon, en kiuj JSON stilo ebloj dosieron kiu havas ni
savis pli frue, ke ni vidis antaŭe.
>> Kaj se mi tuj skribos iuj agordojn por ĝi,
tiam mi can-- aŭ kiam ni detekti ke la fiksoj estis skribita
to-- ĉar ekzemple, tiuj fiksoj estis modifitaj de la uzanto
ĉu rekte en siaj vicoj dosiero, aŭ la prefero pane
ŝanĝis la agordojn file rekte, tiam
Mi povas fakte ĝisdatigi iuj de la kodo aŭ ĝisdatigi la konduto de mia kromprogramo
bazitaj sur tiuj ŝanĝoj kiuj havas okazis sur la agordojn dosiero ankaŭ.
Sed vere, la resto de ĝi estas sufiĉe Tiel ĉi, ke vi jam vidis.
>> Ni aldonas iom, eble iu kiu estas nova.
Do ni aldonas prefero dosiero, plivere prefero pane,
al la fenestro de preferoj, kiuj denove vi povas trovi ekstere pli da informo
en la Nubo 9 SDK legi min.
Sed ĉio alia Estas sufiĉe multe, belan
simila al kion ni vidis antaŭe, nur kun iu aldona eraro kontrolanta
kaj iujn kromajn protektojn kaj iu funcionalidad plia
reliefiganta ĉiu el la diversaj kion ni vidis.
Se vi ne reale vidis ankoraŭ, vi eble
esti scivolanta kion la subaj komando estas en la Stats 50 fenestron.
Estas vere funkcio.
Nu, is-- ho, Dammit.
Unu sekundo.
Atendu.
BONE.
Lasu min movi ĉi supren do ni povas reale vidi kio okazas kiam mi tajpas Stats 50.
Rimarku ke en ĉi tiu kazo, la komando ke mi estas ekstere metante
Estas vere denove, nur la skripto tio tuj eligo faskon da informo
en JSON-formato.
Kaj la kialo ke ni faru ĝin tiu maniero estas ke ĉar ni
agas, ĉar ni skribis la kliento flanko kodo en Javascript,
ni povas tre facile simple analizi Javascript objektoj,
kaj vere povi manipuli tiuj objektoj Samkiel ni farus
ajna alia JavaScript objekto.
>> Kaj tiel tio estas tre konvena maniero de havigi informojn
el la subkuŝantaj Ubuntu ekzemple, kiel la numero de versio, la gastiganto
nomi, ĉu servilo aŭskultas, kion la servilo estas tiel plu kaj tiel plu,
kaj analizi, ke tre facile kaj tre rapide
en la ŝtopilo-en kiuj estas tiam iranta por montri nin ĉiuj de tiu informo.
Do denove, la ŝlosilo enrigardo tie memoru
estas tiu apartigo inter la suba ekzemplo,
kaj ankaŭ kie la kodo estas estanta ŝarĝita.
Ke kiam mi havas klienton, ĝi estas unua ŝarĝo.
Nur tiun statika JavaScript dosiero de ie, eble CDN de iu speco.
Ni ne vere havas zorgi tro multe pri tiu unua paŝo.
>> Ni nur scias ke ĝi estas kurante sur la kliento flanko
kaj tio estas kiam mi tuj komuniki kun ĉi Docker ekz.
Ke ni tuj faros tiel tra la Nubo 9 SDK.
Ni ne vere havas la kapablecon, uzante JavaScript aŭ Node.js,
skribi rekte al ĝi.
Ni simple uzu tiujn ekzistantajn SDK APIs por fari ke ago por ni.
Kaj cetere, unu el la vere gravaj aferoj
estas ke kiam mi kreis ĉi, kiam mi kreis ĉi kromprogramo,
kaj kiel mi laboras sur ĝi, unu de la gravaj aĵoj fari
estas alporti supren la JavaScript konzolo.
>> Ĉar ekde tiu estas ĉiuj funkcianta sur la JavaScript,
sur la kliento flanko, se mi uzas a console.log method-- tiel simple
montri ekzemplon tie.
Ni provu modifi ĉi simpla plug-in por ensaluti ankaŭ iuj datumoj.
Kaj ni aldonos normo eksteren.
Do ni ŝanĝu tion esti ĉi tie.
Nun kiam mi ekzekuti console.log, memoru
ke ekde ĉi kuras sur la kliento flanko
Mi vidas tion en mia propra Ĝavoskripto konzolo, kiu
Tiel mi tiam povos provu solvi kaj elpurigi
iuj de la problemoj kiujn mi havas.
>> Rimarku ke ĉar Mi estas en SDK reĝimo, mi estas
tiam povis manipuli plug-ins sur ĉi tiu petskribo.
Do kvankam ĝi estas konservita en tiu okazo,
tiu estas la ekzemplo de tiu antaŭa regulo estanta seksperfortita, kie la Nubo 9
SDK efektive tiri plug-ins de la subkuŝantaj petskribo kaj poste ekzekuti ilin.
Tial tiamaniere, mi estas tiam povi manipuli kaj konstrui
iuj plug-ins tie.
Sed en ordo por mi vidi ĝisdatigoj por ĉi plug-in,
ĉar ĝi estas sur la kliento flanko Mi bezonas savi kromprogramo
kaj tiam reŝarĝi la tutan laborspaca, por ke la nova kromprogramo estas tiam
elŝutita sur mia kliento, sur mia foliumilo, kaj tiam estas uzita.
>> Do nun, kiam mi alklakas tiun Seminarion Dialogo 2, ni ankoraŭ vidos tiun.
Sed nun espereble en mia Ĝavoskripto dialogo, devus ni vidos my-- atendi,
atendu.
Mi eble devus malfermi la dialogon freŝa.
Ni devus vidi mian ricevis datumojn tie.
Ricevitaj datumoj, Saluton, Dan, kiu estas vi memoras,
Estis console.log operacio ke ni petis en la ŝtopilo-je.
Do tiu priskribo tiam ke mi menciis antaŭe,
tiu dialogo, aŭ tiun diagramo prefere, ke mi
menciis antaŭe estas kio okazas.
Sed estas grava escepto nur por evoluo,
kio estas ke la plug-in mem povus reale
esti stokita sur la Docker ekzemple provizore, ekde supozeble Nubo 9
ne volas, ke ni povos manipuli objektojn sur ilian CDN.
>> Kaj la Nubo 9 klientoj, sur loading, trovos tiuj plug-ins en tio.
C9 kromprogramo dosierujo, kaj ŝarĝi tiujn.
Sed tiuj estas ankoraŭ okazanta nur sur la kliento flanko.
Tial do tio estas nur la de escepto kiu okazas nur
por disvolviĝo de Cloud 9 ŝtopilo-ins.
Sed la resto de la time-- kaj la kialo
ke ni volas vere marteli ĉi home--
Estas ĉar plejofte ĉi estas tuj estos kuranta de la CDN,
kaj simple tuj kuri pure de la kliento flanko.
>> Kutime ni havas neniun interago kun la plug-in,
aŭ ekzistas ne eĉ devas esti ajna kialo ke la plug-ins sin
efektive stokita sur la subkuŝantaj Docker ekzemple
krom en la kazo de tiu SDK disvolviĝo.
Do denove, ĉi tiu ŝanĝas nur iomete pro la fakto
ke ni kuras SDK modo.
Ĝi tuj poste ŝarĝi tiujn plug-ins de disvolviĝo,
kaj la sola celo tie estas por ke Mi povas uzi Nubo 9 fari evoluo
por Cloud 9 kromaĵojn.
Sed eĉ tiel, tio ne ŝanĝos denove kiel ajna el tio funkcias.
Ĝi estas ankoraŭ estanta kurita tute sur la kliento flanko.
>> Ĝi nur signifas ke kiam ajn mi volas krei Nubo 9 plug-ins en Cloud 9
Mi kreos tiuj plug-ins, metis ilin en miajn.
C9 / plugins dosierujo en mia hejmo dosierujo, certigu Mi estas en SDK moduso,
reŝarĝi la paĝon ĉiufoje mi reale fari ŝanĝojn ke ŝtopilo-en,
kaj vidu kio okazas en miaj Javascript konzolo.
Nur administri mian Ĝavoskripto konsoli certigi
ke iu troubleshooting informo, ke mi metas konsoli,
aŭ io ajn alia ke povus okazi pro eraroj kiujn mi verkis
en mia kodo aŭ simile, aperas tie.
>> Kaj kun tio, estas vere por starti sufiĉas, mi opinias,
kun la Nubo 9 ŝtopilo-ins.
Speciale prenante rigardu la SDK dokumentado kiu Cloud 9 provizas.
Ĝi estas granda vojo akiri komenciĝis, kaj tre facile
krei iuj plug-ins por Cloud 9.
Kaj kun tio, mi volas danki vi cxiuj tre multe por aliĝanta min.
Mi esperas ke vi havas amuzan skribanta plug-ins por Cloud 9.
Eble plibonigo plug-ins ke ni havas nun, aŭ eble eĉ
aldonante iuj funcionalidad de via propra.
Ni rigardas antaŭen al vidanta kio estas vi kreos.
Ĝis tiam, ĝis.