>> KEVIN Schmid: Halló allir.
Velkomin á CS50 málstofa á Node.js.
Mitt nafn er Kevin.
Ég er CS50 TF.
Og ég er tegund af eins og virkilega spennt um þetta námskeið.
Ég held að Node.js er mjög svalt.
Ég vona að þessi málstofa er hægt að nota sem góður, ég held, stökkbretti fyrir
sumir af lokaverkefnum þínar ef þú ert áhuga á að nýta
eitthvað eins Node.js.
>> Við munum konar byrja á námskeiðinu á því að bara að tala um smá í
konar bakgrunnur sveigjanleika sjónarmið Node.js, og þá
við munum fara að einhverju kóða dæmi.
Og ég ætla kóðann á vef, og þú getur að líta á kóðann.
Og eftir námskeiðið, ég flokka tal um hvernig þú getur sett upp Node.js
á tölvunni þinni.
>> OK.
Svo skulum við hefjast handa.
Svo ég held ég vil bara að tala um vefur framreiðslumaður, í raun, fyrst.
Og til að byrja þessa umræðu, ég í grundvallaratriðum með skýringarmynd sem er frá
Kennslubók notuð til CS61, sem grundvallaratriðum sýnir samspil
milli skjólstæðings ferli, eins og þinn vefur vafra eða eins markmiði þinn viðskiptavinur eða
eitthvað svoleiðis, og a vefur framreiðslumaður.
Svo af þessu tagi líkist þeirri mynd sem þú sást í fyrirlestri á
Miðvikudagur þar grundvallaratriðum höfum við nokkur viðskiptavinur ferli eins og Google Króm.
>> Og þá er skref eitt viðskiptavinur sendir beiðni.
Svo að geta vera eitthvað eins vel skulum heimsækja, ég veit ekki, CS50.net.
Svo við mál sem beiðni.
Og hefur einhver man nafnið á siðareglur sem skilgreinir hvernig þessi
Beiðni skal byggð?
Yep.
>> Áhorfendur: [inaudible].
>> KEVIN Schmid: Einmitt.
Svo er það eins og HTTP, ekki satt?
Svo í grundvallaratriðum það forskrift fyrir því hvernig ætti í raun að vera sett að beiðni
út, því að í lok dagsins, sem beiðni er í raun bara eins og
band sem í grundvallaratriðum segir að ég vil þetta.
Og forskrift fyrir það er HTTP.
Svo er það eins og siðareglur.
>> Svo þá þjóninn fær að beiðni.
Svo þú krakkar hafa a vefur framreiðslumaður uppsett í CS50 tæki.
Það er Apache.
Og í þessari viku þegar þú vinnur á vandamáli setja sjö, munt þú í raun að vera að vinna
með þessi vefur framreiðslumaður.
Svo þjóninn fær þá beiðni, og þá hefur það að eins konar klóra þess
höfuð og segja eins vel hvað á ég að gera með þetta?
>> Svo miðað við það sem það ákveður að gera, þá það gæti þurft að hafa samband við einhverja
auðlindar.
Og að úrræði gæti verið fullt af mismunandi hlutum.
Fyrir einn, gæti það verið bara eins og truflanir HTML skrá.
Svo það gæti bara verið eins og sumir HTML sem er eins og fyrir
persónulega vefsíðu þína.
Það gæti verið kyrrstæð skrá eins og mynd eða eins og bíómynd sem þú hefur.
Það gæti jafnvel þurft að tala til einhvers konar gagnagrunn
eins og MySQL gagnagrunnur.
Svo það er ekki alltaf að hafa samskipti með úrræði, en í
sumum tilvikum gætu það.
>> Svo þá hvað það er að fara að gera Eftir það er það að fara að
senda til baka svar.
Og viðbrögð fyrir þessu er einnig tilgreint með HTTP.
Svo þá er viðskiptavinurinn getur fengið það.
Það getur rífa það í sundur og vinna úr henni.
Og þá þú fá á vefsíðu eins og Google eða CS50.net eða
hvað þú fórst að.
OK?
>> Þannig að þetta er undirstöðu samspil sem við erum að fara að takast á við.
Og við erum nokkurn veginn að fara að vera áherslu á þessum hluta
samskipti, the framreiðslumaður.
OK.
Cool.
Hver hefur einhverjar spurningar svo langt?
OK.
>> Svo eins og ég sagði, sem vefur framreiðslumaður fær þetta HTTP beiðni og þá gefur þetta
HTTP svar.
Og eins og við ræddum um áður, CS50 tæki vefur framreiðslumaður er Apache.
Svo þegar þú krakkar vinna á P sett sjö, þú ert að fara að vinna með
Apache vefur framreiðslumaður.
Þú munt aldrei þurfa að virkilega að vinna með Apache beint of mikið.
Þú stilla konar Apache smá þegar þú tilgreinir raunverulegur vélar eða
V allsherjar, og við munum fá til að í litla bita.
>> En í grundvallaratriðum, Apache vefur framreiðslumaður sett upp til að vinna með PHP tagi
af út af the kassi.
Svo hvað raunverulega gerist er að þegar þú ferð á eina af vefsíðum eins og, segjum,
heimamaður gestgjafi slash index.php eða eitthvað, er vafrinn þinn sendir að
beiðni, og þá Apache situr þar og tölur út að gera við það.
Og aðgerðir er að framkvæma sem kóða í index.php og
þá senda það burt aftur.
Svo er það það.
Þannig að við ræddum konar um þetta.
Svo það gæti bara þjóna truflanir skrá eða hlaupa sumir PHP kóðann og þá gefa út
svar.
>> Svo þá algeng spurning sem getur komið upp er vel, hvernig eigum við að takast raunverulega
með því að hafa marga notendur á sama tíma?
Svo ímynda sér ef þú varst að skrifa á vefnum miðlara, ef þú had a vefur framreiðslumaður sem
þú varst að reyna að skrifa í eitthvað eins og C eða eitthvað svoleiðis,
í rauninni er hægt að hugsa um hvernig það gæti verið einhvers konar kóða sem
myndi fá beiðni, en þá það þarf að gera allt þetta verk á honum.
Það getur verið að, til dæmis, að hafa samband við gagnagrunnur eða eitthvað svoleiðis.
Satt?
Og þá væri ekki svona vinnslu og þá
sendi aptr svar.
Svo er það eins og hár stigi yfirlit.
>> En það er ekki strax augljóst hvernig þú getur gert það þannig að tvær manneskjur eða
jafnvel 1.000 manns gætu unnið með þinn vefþjónn á sama tíma.
Þannig að lausninni sem Apache notar heitir þræði eða ferli.
Svo þú gætir hafa heyrt um þessi hugtök áður.
Það er allt í lagi ef þú hefur ekki, en bara hugsa um þræði eða ferli sem leiðir til
stýrikerfi eða notandi forrit eða eitthvað svoleiðis eða vefþjóni
að svoleiðis framkvæma margar hluti í einu.
Svo þú kannt að hafa heyrt hugtakið eins inningarþræði.
Svo það er góður af eins og þú ert konar fjölverkavinnsla.
>> Og ef þú hefur séð á kassanum þínum fartölvu, eða eitthvað svoleiðis,
MultiCore, hvað þú getur gert er að þú getur hlaupa tvær mismunandi þræði á mismunandi
hlutar af CPU þannig að þeir geti í raun og veru gerast á sama tíma.
Þannig að þetta er mjög öflugt.
Og þetta er góður af Apache er lausn á þessu vandamáli.
>> Svo eru góður af eins og að málum með þessari nálgun þó?
Svo ég held ég skrifaði þá svona þar.
En báðir konar nota mikið af minni.
Það er mjög dýrt að búa þráður eða aðferð.
>> Og hluti af röksemdafærslu er það bara eins og þegar þú ert að keyra C forrit
eins helsta spýtur og þá sem kalla Annað fall, sem hefur
einhvers konar stakkur.
Svo þræðir þurfa einnig alveg aðskilin stakkur sem
getur verið mjög stór.
Og ef þú getur ímyndað þér að hafa tonn af notandi á vefsvæðið þitt, myndir þú hafa
a einhver fjöldi af mismunandi þræði.
Það er mikið af stafla til stjórna og viðhalda.
Svo er það stór minni neyslu.
>> Og þá líka, við skulum segja að þú hefur aðeins einn CPU, eða við skulum segja að þú hefur
fleiri þræði en þú hefur þessir multicores.
Satt?
Svo skulum segja að þú hefðir 10 þræði og þú hefðir aðeins fimm örgjörva.
Þú hefur konar að gera þetta þar sem þú skipt á milli núverandi
einn sem er í gangi vegna þess að þú getur ekki keyrt alla 10 í einu.
Og það er kallað samhengi skipta.
Og það orð hefur í raun nokkra mismunandi samhengi, en við skulum bara
hugsa af það eins og að skipta milli tveggja þræði.
Það getur verið ansi dýr því grundvallaratriðum það sem þú þarft að gera er að þú
þurfa að hætta því sem þú ert að gera, vista ástand að keyra þráður, og
síðan yfir á eitthvað annað.
>> Svo er allir góður af sjá hvatning hvers vegna þræði og
ferli gæti verið svolítið fyrirferðarmikill?
Og gerðir þú með spurningu?
OK.
Cool.
Hver hefur einhverjar spurningar?
OK.
>> Þannig að ef við tökum skref aftur fyrir annað, það er góður af eins og óákveðinn greinir
athugun sem við getum gert um a einhver fjöldi af vefur umsókn.
Og það er í raun að mikið af þeim reyndar gera það ekki mikið gagnlegt
vinna inni í þræði.
Svo hefur einhver byrjað á P sett sjö yfirleitt?
Svo viltu kannski lýsa sumir af þeim hlutum?
Hefur þú unnið á innskráningu eða eitthvað svoleiðis?
>> Áhorfendur: Nei
>> KEVIN Schmid: OK.
Aldrei hugur.
Sorry.
En í grundvallaratriðum, í P setja, þú ert að fara að gera mikið af konar
fyrirspurnir til gagnagrunn til að fá smá upplýsingar úr þeim gagnabanka.
Og hvað númerið þitt er að fara að vera að gera, hvað að Apache aðferð eða
að Apache þráður er að fara að vera að gera en það þarf að hafa samband við
Gagnagrunnurinn er það svoleiðis að fara að vera situr þarna og það er að fara að vera
bíða eftir gagnagrunninum til að svara.
>> Nú það gæti ekki hljóma það stór takast vegna þess að gagnagrunnurinn er í heimilistölvunni
CS50 tæki, ekki satt?
En það er einhvers konar net leynd þar því nú á vefnum
miðlara þarf að gefa eigin beiðni sína til gagnagrunninum til að hafa samskipti við
gagnagrunn og þá fá að upplýsingar til baka.
Svo er nú það eins vel að bíða eftir mér, ég er að fara að fara að fá eitthvað frá
gagnagrunn og þá er það fullt af bíða að gerast.
Er að skynsamleg?
>> Og fyrir sumum hlutum það er ekki svo slæmt.
Ef það hefur bara til, til dæmis, aðgangur minni, sem er ekki eins
hræðilegt I / O leynd.
Og þegar ég segi, I / O leynd, hvað ég er vísa til er eins og allir góður af eins og
inntak úttak.
En til að fá aðgang að skrá á disknum, eins og ef ég vildi þjóna truflanir HTML
skránni sem var á vefsíðu mína eða eitthvað svoleiðis, hef ég svona að
hætta fyrir a hluti, lesa þessi skrá frá diskur, og þá í
það ferli sem ég er að bíða.
Ég ætla ekki að gera gagnlegt starf.
>> Þetta er ekki satt um allt, en það er algengt í forritum eins og P sett
sjö og fullt af forritum að þú sért ekki
raun að gera mikið að hugsa.
Og þegar ég segi að hugsa, ég meina eins computational vinnu.
Svo computational vinna gæti verið eitthvað eins og td þú vildir
skrifa vefþjón sem bara reiknaður ta Fibonacci númer.
Þetta hljómar ekki eins og sérstaklega gaman vefur framreiðslumaður.
Eins og ég myndi ekki búast við því að staður til að vera næsta Facebook, en það er einhver
konar computational vinnu.
>> Og þú getur ímyndað sér stað að með annars konar áhugavert
computational vinna.
Segjum að þú værir að skrifa eitthvað sem reiknað gráður
aðskilnaður milli tveggja manna eða eitthvað svoleiðis.
Svo er falið einhverju tagi sem reikningsaðferð, ekki satt?
Og jafnvel þá, að gera það sem þú ert enn að gera a einhver fjöldi af að bíða eftir kannski
þú þarft að fyrirspurn gagnagrunn til að líta upp hver er vinur hver eða
eitthvað svoleiðis.
Svo er það þannig hugmynd computational vinna.
Er að skynsamleg?
Hefur einhver hefur einhverjar spurningar?
>> Ó og ég held ég setti spjallþjóna þar því spjallþjóna eru eins konar
Annað gott dæmi um þetta.
A spjall framreiðslumaður hefur ekki að gera mikið að hugsa.
Það hefur bara að bíða eftir fólki til senda skilaboð og svo þegar
þeir gera, senda þau.
OK?
>> Svo bara til ágrip aftur, Apache og svipað vefur framreiðslumaður eins og þessi punga A
mikið af þræði og ferli sem geta vera eins konar eyðslusamur.
Svo ég giska á spurningu sem kunna að koma frá því er þurfum við að hafa
margar þræði og ferli?
Hvað ef við hefðum bara einn?
>> Svo skulum konar mála mynd um hvað þetta myndi líta út.
Svo skulum nota aðeins einn þráður.
OK?
Svo bara ímynda sér þetta með einum þræði.
>> Skulum gera ráð við vorum í raun ekki að gera að mikið gagnlegt - og þegar ég segi
gagnlegur, ég meina computational vinna -
í þeim mörgum þráðum áður.
Svo skulum konar styrkja allt í einum þræði.
Svo hvað ef við hefðum einn þráð svona þess bara fer um í lykkju og
stöðugt eftirlit gerði eitthvað Ný gerast.
Svo til dæmis, eitthvað nýtt gerst gæti þýtt að ég fékk eitthvað til baka frá
gagnagrunninum, eða einhver sendi mér nýja HTTP beiðni.
Þannig að þeir eru eins konar viðburði það gerast, ekki satt?
>> Og þá hvað ég get gert þegar þeir nýju hlutir gerast er í þessu sama þræði
af framkvæmd, þetta einn þráður af framkvæmd, get ég hringt nokkur númer sem
myndi höndla þessi sérstakur hlutur.
Svo td ef ég fékk eitthvað til baka úr gagnagrunninum, ég gæti keyrt minn
lítill computational hluti af því að reyndar bara undirbýr málið til
senda til baka til notandans.
Svo er svona skynsamleg?
>> En hvað er í raun afleiðingar af þessu?
Satt?
Vegna þess að við höfum skrifað a einhver fjöldi af kóða sem -
og ég ætla bara að fara að stökkva á undan í skyggnur ef það er allt í lagi.
Þannig að ef þú dont 'hugur, ég er bara að fara að taka skref til baka.
Þannig að þetta er góður af hlutur kallast atburður lykkja.
OK?
Og það er góður af undirstöðu Hugmyndin á bak við Node.js.
>> Svo hvað Node.js er í raun að gera eins og a vefur framreiðslumaður er að það er einn þráður
sem er í grundvallaratriðum að fara í kring í lykkju eins og á meðan einn góður af samkvæmt
að hlíf Node.js sem er stöðugt stöðva, höfum vér fengið nýja hluti?
Og þá mun það hlaupa dýraþjálfari að þú stillir upp.
En góð spurning að spyrja er, hvernig getum við gert þetta gerast
með núverandi hlutum?
>> Þannig að ég setti línu af C kóða hér að grundvallaratriðum útlit eins og það er að opna
skrá, ekki satt?
Ég Hún kom bara út með plötu.
Þannig að ég þurfti að opna henni nýja skrá.
Svo leið C númerið okkar til starfa -
og ég held að ástæðan ég valdi skrár var því þetta er góður af því marki
af I / O vinnu sem við höfum lagt í C í tilfinningu að það er inntak úttak.
Þannig að við köllum þetta kóða sem er þetta F opinn.
Og síðan á næstu línu okkar program, getum við nú að vinna með f.
>> Þannig að þetta væri dæmi um eitthvað það er eins og samstilltur eða
sljór vegna á þessi fyrstu línu Þar ætlum við að bíða þar til við
fá the skrá opinn.
Svo á annarri línu, við vitum að við er hægt að vinna með F, en þetta þýðir að
að annarri línu getur ekki í raun að keyra þar til fyrsta línan er gert.
Er að skynsamleg?
>> Þannig að þetta væri slæmt að setja í atburði dýraþjálfari.
Og ástæðan fyrir því er sú að af þessu tagi bíður, ekki satt?
Þannig að þetta myndi snúa okkur aftur við það sama.
Og nú við myndum ekki einu sinni hafa Ávinningur af mörgum þráðum eða
ferli vegna þess að við fengum einn þráður í Node.js.
Er það skynsamleg til allra?
>> Áhorfendur: Bíddu.
Svo er það að skipta?
>> KEVIN Schmid: Ó, svo já.
Þannig að ég ætla að fá að til skiptingar.
OK.
Svo hvað ef við þurftum eitthvað sem leit út eins og þetta?
Svo hvað ef nú ég breytt F opna svolítið?
Þannig að ég ætla liggur í sama tvær breytur og áður.
Ég elska enn nýtt lag að hún kom út með.
En ég er að brottför þriðja hlutur sem er þessi breyta kallað númer.
>> En hvað er númer raun í þessu samhengi?
Er það eins og venjulegur C breytu?
Það er fall, ekki satt?
Og það getur verið svolítið skrýtið því Ég er reyndar eins og nú liggur fyrir
virka í annan valkost.
>> Svo nokkra atriði í huga varðandi þetta.
Eitt, ég er ekki í raun að hringja kóðann virka.
Svo þú sérð ekki kóðann með vinstri paren, rétt paren.
Ég er bara farið í kóða.
Og í C, hvað þetta væri í raun gert er gefa mér bendi að raunveruleg
númer, og þá er þetta gæti keyrt það.
En bara hugsa um það sem þú ert brottför kóðann til að keyra þegar
þessi skrá er opnuð.
>> En hvað þýðir þetta er að nú restin af áætlun minni, sem gæti gert
önnur efni, getur haldið áfram að gera aðra dót á meðan við, í raun ekki bíða, en
bara í bakinu á höfuð okkar sem þegar þessi skrá er opinn, hlaupa að
kóða efst.
Er að skynsamleg?
>> Og nú er hugmyndin á bak við Node.js að kóðinn í gera efni með f
hluti ætti að vera nokkuð stutt og einföld og einfalt og í raun ekki að vera
mjög computationally ákafur.
Það gæti þurft að opna aðra skrá, en sem ætti einnig að vera nokkuð fljótur
því það ætti bara að segja að gera annað f opna og þá kalla þetta annað númer.
>> Svo bara að vera alveg ljóst, f opna sem segir nýr Katy Perry SONG
gert mp3, það er að fara að nokkuð mikið aftur strax.
Og þá getum við bara halda áfram að gera önnur efni vegna þess að allt sem nú f-
opið boð gerir er að segja í grundvallaratriðum að undirliggjandi F opinn kóða opna þessa skrá
og þegar þú ert búinn að opna þetta skrá eða þegar þú færð hana til baka,
þá hlaupa kóðann.
En það er ekki í raun að keyra kóðann.
Og þú hefðir spurningu?
>> Áhorfendur: Þú virtist gefa til kynna nokkrar sinnum að bæta computationally
ákafur kóða konar brjóta [Inaudible] ekið kerfi.
[Inaudible]?
>> KEVIN Schmid: Þetta er frábær spurning.
Svo ég hef í raun dæmi um hvernig þú gætir fella computationally
ákafur kóða í smá.
Svo þegar við komum til kóða dæmi, Ég vera viss um að rífa þessi einn.
Er það í lagi?
Þakka þér.
>> Hvað var nafn þitt?
>> Áhorfendur: Aron.
>> KEVIN Schmid: Aron koma upp mjög góður punktur, sem er að ef ég hefði
sumir computationally ákafur kóða í að gera efni með f hluta, en afgangurinn af
áætlun mín getur ekki keyrt og getur ekki hlustað fyrir nýja beiðnir eða neitt fyrr en allir
þessi efni er lokið.
Þannig að ef ég er að skrifa Hnútur kóðann almennt nema við gerum eitthvað eins og ég er að fara
að benda síðar þegar við líta á dæmi númer, ég verð að vera viss um að
númerið mitt ekki lagst upp Þessi atburður lykkja.
Er að skynsamleg?
OK.
Cool.
>> Svo Node.js býður þessa ramma sem þú getur byggja þessar atburður ekið
netþjóna með.
Svo það hefur svona ósamstilltur ekki sljór I / O bókasöfnum, en
stöðluðu C bókasöfnum sem við höfum verið vinna með, eins og ef þú bara
nota þá á sama hátt sem við höfum verið að nota þá með f opnast og
efni, þeir eru sljór vegna þú ert í raun að bíða eftir
þessi skrá til að opna.
>> En Node.js gefur þér það og það grundvallaratriðum bindur inn Google V8
JavaScript vél sem er ástæðan að Króm er svo fljótur á vinnslu
JavaScript því það hefur þetta V8 vél.
Þannig að ég veit að hljómar eins og einn af þeim sem WWDC verktaki ráðstefnur hlutur
þar sem þeir henda bara fullt af því bréf tala það fyrir örgjörvum
og segja að þetta er svo flott.
En það er ótrúlegt að þeir gerðu þetta vegna þess að JavaScript -
eða kannski ef þú ert ekki kunnuglegur með JavaScript enn vegna þess að við höfum ekki haft
Fyrirlestrar á það -
en JavaScript er túlkað tungumál.
>> Og þetta er mikilvægt atriði líka.
Svo það er mikilvægt fyrir vefinn okkar netþjóna til að vera fljótur, ekki satt?
Og ef við vorum bara keyra JavaScript númer sem var túlkað með aðeins
allir gamall túlkur að það gæti verið hægt.
Svo Hnútur bætur frá því að hafa þetta frábær fljótur V8 túlkur.
Og ég veit ekki hvort þeir sem heitir það vegna þess að V8 smellu í enni
hlutur, en allt í lagi.
>> Svo ég hef undirbúið nokkur dæmi á þessari vefslóð.
Eftir námskeiðið, ég er svoleiðis að fara að tala um hvernig þú getur fengið Hnútur sett
upp, en nú, ég bara svona vilja að ganga í gegnum nokkur dæmi númer.
Svo ef þú vilt að fylgja eftir, allar Kóðinn er í boði þar.
OK?
>> Svo ég leyfi þessa vefslóð upp a lítill.
Og þá er ég bara að fara að kveikja í flugstöðinni.
Er allir góður með þessa slóð?
Þannig að ég ætla að skipta yfir að flugstöðinni mína hér.
>> Svo hér er kóðinn sem Ég hef í dag.
Hvers vegna eigum við ekki að byrja með simpler.js skrá?
The annar hlutur er að þetta allt númer er að fara að vera skrifuð í
JavaScript sem þú mega eða mega ekki þekki.
Ég giska nokkra hluti er þessi a einhver fjöldi Javascript kóða er eins konar
setningafræði og svipar því mjög til C, þannig að þú getur konar taka það upp eins og
og þú fara eftir.
Ég hef reynt að skrifa mikið af því byrja kóða fyrir þetta á þann hátt sem er
svipað og C þannig að það er svolítið læsilegri.
En eins og við vinnslu, ég vera sýna nokkrar af viðbótar
aðgerðir JavaScript sem eru góður af kaldur.
>> En við skulum líta á þetta sýnishorn program.
Ég giska á allt er skorið burt þar.
Ég ætla bara að fara að festa að Real hratt ef það er í lagi eða ekki.
Ég veit ekki hvað þetta er að fara að gera.
Er að lítið betra?
Getur þú séð Var og efni?
OK.
>> Svo er fyrsta línan eins og JavaScript útgáfa af breytu
yfirlýsingu.
Svo bara að sýna hvað þetta væri líta út eins og í C. Þannig að þetta er bara eins og
mér að segja vísitölu jafngildir þremur eða eitthvað svoleiðis.
Svo ég gerði ekki tilgreina tegund.
JavaScript hjartarskinn hafa gerðir, en það er mjög virk slegið í náttúrunni, svo
ekki veita neina tegund á það.
Svo hefur það bara var.
Það er eins og breytu.
OK?
>> Og ég er að kalla þessa breytu HTTP.
Og á hægri hönd mína, ég hef tjáning sem ég vil setja í HTTP.
Og þetta segir krefjast HTTP.
Þannig að þetta er góður af líkur til að fela.
Það er a lítill fleiri eins öflugur en fela í þeim skilningi að fela
myndi bara að afrita og líma haus skrá fyrir virka frumútgáfur eða
hvað við gerð skilgreiningar.
En þurfa er reyndar að fara að fá okkur kóðann.
>> Svo þú getur hugsað það eins og flytja nokkur númer.
Svo einhvers staðar í Node.js mát kerfi eða hvað, þeir hafa allt þetta
HTTP framreiðslumaður númer þannig að ég er bara aðlaðandi það fyrir mína eigin
eigin nota í þessu forriti.
OK?
>> Svo þá hef ég þessa aðgerð sem ég hef skrifað.
Og eftir ég þurfti ekki að tilgreina aftur gerð eða tegund sem
rök aftur.
Svo konar laus slegið í þannig skilningi.
Tvær breytur að það tekur í, beiðni og viðbrögð.
Svo er það eðli svona eins þekki úr myndinni sem við þurftum
á skjánum áður vegna fáum við þessa beiðni sem við
hafa frá notandanum.
Og þá höfum við svar sem við getum skrifað það til.
>> Þannig að fyrsta línan í þetta virkar res.writeHead 200 og þá er þetta
Content type texta látlaus.
Svo skulum stykki þetta sundur smá.
Þannig að við skulum einblína bara á res.write fyrir lítið.
Svo er skrifað í grundvallaratriðum, og skrifa höfuð, eru bara leiðir til að raða í að skrifa út
hlutir til svar.
OK?
Svo skrifa höfuð, ef einhver man frá HTTP fyrirlestur, gera þú krakkar
muna hausum á að Efst á HTTP hlutur?
Svo hvers vegna get ég ekki demo bara hausum raunverulegur fljótur.
Myndi það vera gagnlegt?
Eða ættum við bara svona -
OK.
Viss.
>> Svo þegar vafrinn þinn fer á google.com eða eitthvað svoleiðis,
there 'raunverulega a lítill fleiri -
þetta er eins og leyndarmál -
það er eins og a lítill fleiri upplýsingar sem kemur í gegnum pípa en bara
litli leitar og allt.
Svo til að sýna þér þetta, ég ætla að nota forrit sem heitir Curl.
OK?
Þannig að þetta er eitthvað sem þú getur keyrt á þinn Mac OSX stjórn lína eða í
tæki eða hvað.
Og svo ef ég Krulla HTTP google.com, Ég ætla að sjá HTML.
Og þetta er, í sanngirni, bara HTML þessi tegund af segir til
endurvísa www ef vafrinn þinn styður ekki sjálfkrafa annast
utanáskrift.
>> Svo er þetta bara HTML, en ég ætla til að bæta við Krulla þessum bandstrik ég merkja.
OK?
Og þetta er að fara að sýna mér haus.
Svo er þetta einnig upplýsingar sem koma gegnum þegar ég fæ þetta svar.
OK?
>> Svo efst sérðu þetta HTTP 301 færa varanlega.
Og þetta er góður af mikilvægt vegna þetta vísar til stöðukóðanum.
Svo 301 hér er staða númer, sem er í rauninni bara heiltala
sem segir vafranum eða hver er kominn að lesa þetta, ef þú þykjast að
þú ert a flettitæki og þú ert að sjá þetta, grundvallaratriðum núna ef þú horfir á
það og þú sérð 301, þú veist að ég hef að gera eitthvað sérstakt á grundvelli
301, eða eitthvað sérstakt gerðist byggt á 301.
Svá segir flutt til frambúðar.
>> Og þá, í ​​grundvallaratriðum, höfum við fullt af helstu gildi pör.
Svo fáum við staðsetninguna er www.google.com.
Og þá konar allt þetta hitt dót, en í grundvallaratriðum, hvað staðsetningin er
setningu er ný staðsetning er á www.google.com.
Svo nú ef þú ferð á google.com, þú munt konar sjá vafranum konar blikka
fyrir annað og þá sent þig strax aftur á www.google.com.
Svo viðbrögð geta innihaldið þessi haus.
>> Og a par af hlutum til að benda á.
Svo skulum segja að við vorum í raun vel í heimsókn á vefsíðu.
Svo láta mig fara til -
hvað er góð viðbót?
Ég er slæmur á að hugsa um gott vefsíður á staðnum.
>> Áhorfendur: Wikipedia.
>> KEVIN Schmid: OK.
Gerum Wikipedia.
Svo hér er ég var flutt.
Ó bíddu.
Var ég?
Já, ég var.
OK.
Svo ég fékk að gera www.
Þannig að ég ætla að gera www.
Og eins og þú geta sjá, hér er allt að HTML að vafrinn myndi vinna
fyrir Wikipedia.
>> En ef ég halda fletta upp hér, það sem ég ætla að sjá á the toppur -
vá, það er mikið af HTML á Wikipedia -
en það sem ég get séð efst hér er þetta 200 stöðukóði öfugt við
301 sem ég sá áðan.
Og eftir að það hefur a ágætur vingjarnlegur OK við hliðina á henni.
Þannig að þetta er eins og gott stöðukóðanum.
>> Er að 200 númer líta kunnuglega?
Já því þegar ég gerði simpler.js, Ég skrifaði 200 þar.
Svo það er í rauninni að segja að segja að vafra eða hver sem er að reyna að komast að
þetta að þeir voru vel.
Eða þannig eins og við voru vel líka.
>> Og það er af þessu tagi sérstökum setningafræði í Javascript til að lýsa yfir
Kort takkanna eins og efni gerð og þessi gildi eins og texta látlaus.
Þannig að ef þú horfir á viðbrögð sem við fékk til baka frá Wikipedia áður, -
Ég ætla að reyna að fletta upp aðeins hraðar -
þú hefur þessa lykla eins miðlara og þessi gildi Apache.
Svo þú hefur fengið lykla og gildi.
Og þú getur tilgreint þetta í Hnút hvað ég á að senda til baka.
>> Svo er þetta í raun eins konar, í sumum leiðir, og í sumum leiðum það er ekki
í raun, en það er lítið lægri en PHP kóðann sem þú might vera
skrifa fyrir P sett sjö vegna þess að PHP og Apache konar annast tiltekin
af þessum hlutum fyrir þig.
Í PHP, getur þú hefur forgang á sjálfgefið hegðun með því að skrifa eigin haus þínum.
En að því er varðar þetta, fáum við að skrifa út eigin hausum okkar.
>> Svo er þessi lína að gera skilningarvit til allir að skrifa höfuð línu?
OK.
Ógnvekjandi.
>> Svo þá er það sem ég geri ég enda viðbrögð með því að segja halló heimur.
OK.
En það er bara fall kallað beiðni dýraþjálfari.
Svo nú er ég í raun að eins konar gera eitthvað með þessari aðgerð, ekki satt?
>> Svo hér það sem ég geri er það er þetta lína sem gerir margvíslegu miðlara jafn
HTTP.create framreiðslumaður, og þá er ég fara í beiðninni dýraþjálfari.
Svo er af þessu tagi hnút leið til að búa til miðlara.
Og taka eftir því að ég er liggur í beiðninni dýraþjálfari.
Þannig að þetta er að segja createServer aðgerð sem ég vil að þú að sauma mér
miðlara, og þegar þessi miðlara fær svar, ég þarf að kalla þetta
óska Handler virka.
OK?
>> Þannig að línan ansi mikið lýkur strax.
Svo var framreiðslumaður lína er gert á réttan hátt eftir að þú gerir það ansi mikið.
Ég meina, það hefur til að setja upp einhver innri ástand að vita að þú þyrftir að
hringja í þessi beiðni Handler virka, en það er ekki að fara að sitja þarna og
segjum hefur notandi sendi mig beiðni ennþá?
Hefur notandinn sendi mér beiðni enn?
Svo það er ekki loka.
OK?
>> Svo er það þetta mun gera er það í rauninni nú geymir bendi á þessa kóða,
Þessi beiðni dýraþjálfari virka, og þá mun keyra kóðann þegar einhver
gerir beiðni.
Og þá gerum server.listen.
>> The 1337 er nokkuð handahófskennt.
Ég hafði enga sérstaka ástæðu til þess að tína þeim fjölda.
Það var algjörlega af handahófi.
En það bara skilgreinir höfn.
Svo vefur framreiðslumaður þú munt sjá að þeir nota höfn 80 vegna þess að það er góður
af eins samningsins.
Þannig að ef ég fer í eitthvað eins og, Ég veit ekki, Wikipedia.org,
og ég setti ristill 8 -
ó vá, þú getur ekki séð það.
Fyrirgefðu.
En ef ég vinn Wikipedia -
Ég skrifa það hér bara svo að það er ljóst á myndavélinni.
En ef ég tek þetta í vafra með tvípunktur 80, sem skilgreinir fara til
Wikipedia.org á höfn 80.
Svo er það eins og hvernig Bandaríkin hafa margar hafnir eins og hvar þú getur skip
Hlutur til hvers konar.
Svo er það eins og að fara á þetta tiltekna setja á þessum vefþjóni.
OK.
>> Svo ég valdi bara 1337.
There 'a heild svið af tölum sem þú getur valið.
Það var ekki alveg sérstakt.
>> En það sem ég ætla að gera núna er ég að fara að keyra hnút.
Leyfðu mér að koma inn í raun að nokkrum línur niður þannig að þú getur séð það.
Ég ætla að gera hnút, og ég er að fara að keyra simpler.js.
Og við munum tala um hvernig á að fá Hnút sett upp í smá.
En nú er það bara að keyra miðlara.
>> Svo einn hlutur sem við getum reynt sem kunna ekki vera að spennandi er að við getum í raun
reyna að opna hann í Curl.
Svo ég get gert Curl, og mín vél er heimamaður gestgjafi.
Þú munt einnig sjá þetta skrifað svona stundum.
Heimamaður gestgjafi og 127.0.0.1 eru konar af eins tölvunni heima.
Svo er það eins og að tala við í tölvunni þinni.
OK.
>> Og þá get ég sagt 1337.
Þannig að ef ég keyrt þessa línu af kóða, það segir halló heimur.
Og ef ég vildi sjá þessi efni sem hafði efni gerð texta látlaus eða
hvað, ég gæti jafnvel setja þetta hér.
Og taka eftir því að það er að segja OK.
Og ég hef texta látlaus.
Og þá er það góður af öllu þessu hinn efni sem Hnútur mun bæta í
þar fyrir mig.
Það er ekki frábær mikilvægt.
>> Ég meina, það eru einhvers konar tæknileg þættir á þeim eru eins konar
af kaldur að tala um, en bara til að sýna þú, ég hef líka vald til að
breyta þessir í kring.
Svo ég get bara að bæta við fullt af eitthvað svoleiðis.
Og þá nú, ef ég horfi á mína framleiðsla, það mun vera það.
Svo þessi haus meina ákveðna hluti að vafra og hlutum eins og þessi.
>> Og hausum getur í rauninni að segja að vafra hvernig á að bregðast við eitthvað.
Ef þú hefur einhvern tíma heyrt af smákökum áður, eða ef þú hefur einhvern tíma verið pirruð
með vefsíðu stilling kex, eða kveikt á kex blokk eða
eitthvað svoleiðis.
Þú getur í raun sett smákökur í þessum hausum.
Svo þeir segja vafranum hvernig á að hegðun í sumum tilfellum.
OK.
>> Svo sem var simpler.js.
Hefur einhver hefur einhverjar spurningar á þeim frumkóða skrá?
OK.
Cool.
>> Svo skulum við fjarlægja the r frá því og líta á simple.js.
Þannig að þetta er ansi mikið sama program.
Ég skrifaði það bara svolítið öðruvísi vegna þess að ég vildi að svoleiðis hápunktur
Sumar aðgerðir JavaScript.
>> Svo eftir því að beiðnin dýraþjálfari fall hefur algjörlega horfið.
Ó Já, varstu með spurningu?
>> Áhorfendur: Já, rökin sem eru liðin sem
virka, hvað eru þeir?
>> KEVIN Schmid: Svo þeir eru JavaScript hlutum.
Í Node.js skjöl, það grundvallaratriðum segir hvaða aðferðir eru
boði á þeim.
Við verður bara að hafa aðgang að Þessi aðferð kallast skrifa höfuð og endir
og eitthvað svoleiðis.
En það er allt fullt fleiri aðferðir.
>> Og til dæmis, eins og einn af þeim einkum á Rec, getur þú gert
eitthvað eins rec.method sem mun segja þér hvort það er HTTP fá eða
HTTP POST beiðnir og svoleidis.
Þannig að það er alls konar mismunandi eiginleika, en þeir eru báðir
JavaScript hlutum, og þeir hafa bara aðgerðir sem fylgir þeim sem þú
geta skrifað það til.
OK?
>> Svo taka að beiðni dýraþjálfari er algerlega búinn.
En númerið sem ég hafði í beiðni stjórnandinn er enn þar.
Ég hef enn þessa res.writeHead og ég hef enn þessa res.end.
Og hvað þetta er dæmi um í JavaScript er þessi hugmynd um að
nafnlaus virka.
og nafnlaus er eins mátun nafn fyrir það vegna þess að það gerir bókstaflega ekki
hafa nafn.
Það er engin aðgerð beiðni stjórnandinn í það.
>> Hefur ekkert nafn, en það er enn er að taka rifrildi.
Þannig að ég fékk samt rec og Res.
Og ég hef enn kóðann.
Þetta er fullkomlega í lagi JavaScript kóða.
Svo ég að lýsa yfir virka án sérstaklega að gefa honum nafn.
Það er svolítið ruglingslegt í fyrstu.
There ert sumir eins gagnleg atriði sem þú getur gert með
þessi nafnlaus föll.
Hefur einhver hefur einhverjar spurningar um þetta, eða er það í lagi bara að nú,
konar bara viðurkenna að það mun gera það sama?
Yep?
>> Áhorfendur: Eru aðgerðir fyrst bekk í JavaScript?
>> KEVIN Schmid: Þeir eru fyrst bekk í JavaScript.
Og bara veit að þessi hugtök brottför í nafnlaus virka eins
þetta gilda um JavaScript sem þú geta skrifað í síðasta verkefni fyrir
netvafrinn líka.
Svo til dæmis, í JavaScript í Vafrinn þinn er það líka nokkuð atburður
ekið í þeim skilningi að það sem þú munt hafa er þegar notandinn smellir þetta
hnappinn, ég vil að þú að keyra þennan kóða.
>> Svo er það sams konar hugmyndum um viðskiptavinur hlið þegar mús smellur eða þeir
mús yfir einhverjum myndina á þinn vefsíða, keyra þessa kóða.
Sem geta sótt um að netþjónum.
Svo það er góður af eins og spennandi ástæðan JavaScript er mjög
hæfi eða sumir fólk hugsa það er hentugur tungumál fyrir þessa tegund af
atburður bílstjóri miðlara vegna þess að þú ert þessi nafnlaus föll.
Þú hefur allt hugmynd um þetta ósamstilltur kóða.
OK.
Hver hefur einhverjar spurningar?
>> OK.
Svo sem var simple.js.
Svo skulum líta á eitt eða par fleiri.
Svo er þetta sleep.js.
Svo er einhver kunnugur C virka sofa?
Frá kannski einni af fyrri fyrirlestrum eða eitthvað svoleiðis?
>> Svo í rauninni þú geta fara framhjá í held ég fjöldi sekúndna eða ef þú ert að nota U
sofa fjölda millisekúndur eða nanoseconds.
Og í rauninni mun forritið bara að hætta gangi fyrir þessi magn af tími.
Satt?
Og þá mun það vakna á endanum og þá verður bara að halda áfram að keyra
forritið.
>> Þannig að þetta miðlara konar gefur far af svefn.
Svo eftir að við höfum sömu res.writeHead 200 með fyrirsögninni
áður, en þá erum við að kalla þetta fall sem kallast setja tími.
Setja tími er einnig í boði í þinn vefur flettitæki Google Króm
eða Safari eða hvað.
Og í rauninni hvað það er að gera hér er það tekur í aðgerð.
Fyrirvara, aftur, það er nafnlaus virka.
Svo það er góður af kaldur vegna þess að við erum nota nafnlaus virka innan
nafnlaus virka sem getur verið svolítið undarlegt.
>> En það tekur að virka, sem er í rauninni að segja - og hvernig þetta
verk er í 5000 millisekúndur, ég vil þér að framkvæma að virka sem
bara endar svar og skrifar hey.
Svo gefur þetta til kynna að eins sofa, en hvernig þetta í raun
virkar er að við munum keyra í gegnum Þessi lína mjög fljótt.
Við erum bara að skrifa eitthvað.
Og þá munum við líka keyrt í gegnum Þessi lína mjög fljótt.
Þannig að við erum í raun ekki að fara að bíða í fimm sekúndur.
Við erum bara að fara að keyra þetta númer í stað.
>> Og þá er það, aftur, þetta litla atburður lykkja sem nú hefur slíkt
skráir sem í rauninni er bara stöðugt að fara í kring í hring
og horfa á klukkuna í einu þráður og orðatiltæki, hefur fimm sekúndur
liðin enn?
Og svo þegar það sér að annar hönd hefur flutt eins og fimm sekúndur eða
hvað, þá vaknar það upp og segir, ó, hvað á ég að gera?
Oh ég þarf að keyra þennan kóða.
Og þá það er að fara að hlaupa res.end hey.
>> Svo aftur, erum við aldrei að bíða hér.
Svo það er ekki að þetta númer innan þessi aðgerð er að fara að taka fimm
sekúndur til að keyra.
Þessi kóði mun keyra ansi mikið samstundis, að minnsta kosti í samanburði við
fimm sekúndur sem við vorum að tala um áðan áður.
>> Svo bara að sýna þetta í aðgerð, Ég get gert Node.sleep.js.
Og gerði ég skipta upp eitthvað?
Hugsanlega.
Sorry.
Við skulum sjá hvað við getum gert til að laga þetta.
OK.
Svo ákveðið að nota Node.js.
Ég ætla bara að grínast.
OK.
Bara eitt sek.
OK.
Ég veit hvað það er.
>> Svo er málið að í öðrum flipa minn hér, ég var að keyra Hnútur þegar á
sama heimilisfang, 1337.
Svo villa að þetta kastaði, ef við lítum á það alvöru náið, er heimilisfang í
nota, EADDRINUSE.
Þannig að ég var nú þegar að nota 1337 hér.
Þannig að ef ég lokaði þetta burt, og þá er ég nú reyna að keyra þetta, vonandi, allt
verður allt í lagi.
OK.
Svo þú getur aðeins hafa eitt konar af að hlusta á höfn í einu.
Önnur lausn hefði verið fyrir mig bara breyta þeirri áætlun og gera
það vera eins og 1338 eða eitthvað svona.
>> En nú sofa er í gangi.
Svo skulum reyna í raun það út í Vafrinn að þessu sinni þar sem það er
lítið unexciting að sjá það í flugstöðinni.
Þannig að ég ætla bara að fara til að 127 heimilisfang aftur á 1337.
Og ef þú getur séð það -
Ég veit ekki hvort þú getur - en minn Vafrinn tekur mjög, mjög lengi
tími til að hlaða eða eins og fimm sekúndur.
>> Og síðan eftir það, að lokum það endaði svar.
Og þú getur ekki séð það vegna þess að hlutur er færður yfir lítið, en ef ég geri
þetta lítið minni, þú getur séð það segir hey.
Þannig að ég fékk að hey, en eftir fimm sekúndur.
Og það gæti verið smá hreinni að sjá það hér á flugstöðinni, þannig að ég er
að fara að gera -
skulum gera hér -
skulum gera Curl þetta netfang aftur með 1337.
Og ég bara svona að sitja hér í fimm sekúndur.
En taka eftir þessi the framreiðslumaður getur samþykkt ný viðbrögð.
Svo það prentar hey.
>> Og að kynningu þessa, í grundvallaratriðum það Ég get gert í þessu öðrum flipa -
þannig að við skulum segja að ég gera þetta í öðrum flipa, Ég ætla að gera Curl og sama
hlutur aftur.
Og ég ætla að reyna að sparka þeim krakkar burt á sama tíma.
Þannig að ég ætla að gera þetta, og ég er fara að kapp hérna og ég er
að fara að gera það aftur.
>> Og við skulum gera það þannig að þú getur séð þau bæði.
Það eitt prentuð hey og að einn prentuð hey alla leið -
við skulum gera þá tilraun aftur.
Reyndar, við skulum nota þetta bragð, ef það er í lagi.
>> Þannig að ég ætla að nota skel hlutur sem leyfir mér að í grundvallaratriðum að keyra tvö eintök
þessarar áætlunar í samhliða.
Svo það verður keyrt fyrsta forritið og Annað forrit á samfelldan hátt.
Svo nú ef ég ýta á Enter, það er að fara að gera að beiðni ansi mikið
samstundis á sama tíma.
Svo skulum gefa þetta skot.
>> Svo nú eftir það segir tvo ferla.
Og ef þú ert forvitinn, að 27.000 tala er sú aðferð ID.
Og þá taka þeir prenta hey á sama tíma.
Það var ekki eins og við þurftum að bíða í fimm sekúndur fyrir eitt og þá eftir það,
fimm sekúndum síðar fá sekúndu.
Svo er góður af, í sumu leyti, það er að raun ekki sönnun, en það er
leiðandi sönnun þess að það er ekki bara eins og að bíða í fimm sekúndur og sljór
allan þráðinn.
OK flott.
>> Aron spurði spurningu áðan að var vel hvað ef við gerum eitthvað -
Yep?
>> Áhorfendur: Bíddu.
Hvernig er það öðruvísi printf biðminni, þó?
Er það ekki sjálfkrafa að?
Hvers vegna eigum við að hafa áhyggjur óður í það?
>> KEVIN Schmid: Oh, gastu segja það einu sinni enn?
>> Áhorfendur: Er ekki eins printf biðminni gera nákvæmlega það sama?
>> KEVIN Schmid: The printf biðminni?
>> Áhorfendur: Já.
OK.
Var ekki í einu af Skyndipróf þeir voru tala um hvernig ef þú hægri printf
eitthvað og þá hafa það hlé einn annað, og þá að hafa það lykkju tíu
sinnum, verður það að bíða í tíu sekúndur og þá printf allt saman?
>> KEVIN Schmid: Oh, OK.
>> Áhorfendur: Er það að gera hið sama hlutur þá í þessu tilfelli?
>> KEVIN Schmid: Svo spurningin var grundvallaratriðum í einu af fyrrum Skyndipróf
eða eitthvað, það var spurning sem í rauninni ef þú segir Prenta f 10
hluti í einu og þá svaf eins og í ferlið við prentun þá út,
í lok fyrir sumir ástæða, það vildi bara hent þeim öllum út á skjánum.
Þannig að það er góður af tveimur mismunandi hugmyndir hér.
>> Svo ég giska á einn hlutur er þessi, í þessu ræða, við erum að fást við tvö mismunandi
konar fólk að biðja miðlara fyrir hluti á sama tíma.
Og ástæða þess að printf konar bíður svona og hugarangur það allt út
í einu er skyldari hvernig printf konar -
svo leið printf er í raun framkvæmda er það hefur í rauninni að
tala við the stýrikerfi til að skrifa þessi efni í vélinni.
Svo það þarf ekki að gera allt sem efni strax þegar þú segir printf
einhver strengur því sem gæti fá dýr ef það þarf að
að gera það í hvert skipti.
>> Svo ef þú gerir printf hey, program gæti ekki í raun prenta það
strax á vélinni.
Það gæti sagt, OK, ég skrifaði það.
Og þá konar bíða eftir þér að gefa það svolítið meira áður en þeir
skrifa það út að vélinni.
>> Svo ástæðan fyrir því að það var málið -
og það er góður af ótengd við svefn -
er að sofa var eins konar bara sprautað í það að sýna fram á
staðreynd að það er ekki skrifað það í réttri röð.
En ástæðan fyrir því er bara árangur svo að þú þarft ekki að
gert að margir tengiliði stýrikerfi.
>> En hér, hvað við erum í raun að reyna að gera með þessum svefni hlutur er bara sýning
að þegar við höfum tvær fólk í heimsókn þetta vefsvæði, það er ekki að fara að setja
þá í línu þar sem það er að fara að segja Ég verð að hjálpa þér, og svo þegar ég er
alveg búinn að hjálpa þér eftir þetta fimm sekúndur, þá ætla ég að
færa inn á næsta mann.
Óska fyrsta manneskjan stendur sig ekki binda upp þessi atburður lykkju
ef það er vit í.
>> En hér er í raun dæmi um eitthvað sem mun binda
upp atburði lykkju.
Svo hér er hræðilegt hlutverk að reikna tu Fibonacci.
Það er bókstaflega verra vegur þú geta reikna tu Fibonacci töluna.
Og þetta er í raun bara að viðurkenna þar sem þetta kom frá,
there 'raunverulega -
Ég meina, þú geta reyna að fara að finna það - en það er eins og a mjög langur blogg
staða að einhver skrifaði.
Það er eins og einn af þeim Rauðleitur hlutur.
En einhver gagnrýndi Node.js, og þeir nota þetta sem dæmi.
Svo ég vildi svona bara að sýna þér tvo mismunandi sjónarmið bara til að fá
almennan skilning á þeim hugtökum bak þessum tveimur hlutum.
>> En þetta er valið sem bara hræðilegt, hryllilegur óhagkvæm computationally
ákafur leið til að reikna NTH Fibonacci númer.
Svo bara eins og a hlið minnispunktur, hvers vegna er það hræðilegt eins og á einhvern hátt?
Yep?
>> Áhorfendur: Segjum að þú byrjar út með 1000.
1000 kljúfa í 999. og 998.
Hvert af þessu kljúfa í tvennt.
>> KEVIN Schmid: Hægri.
>> Áhorfendur: Alla leið niður.
>> KEVIN Schmid: Einmitt.
Svo bara að endurtaka fyrir myndavélina, ef ég kalla FÍB á eins 1000 eða eitthvað
svona, það er augljóslega ekki minna en eða jafnt einu þannig að ég ætla að
fara á þetta annað tilfelli, og þá er ég að fara að hringja FIB 999 plús FIB 998.
Og þá nánast öll þessi vinnu sem FIB 999 gerir er
konar á þessu stigi.
Ef þú ferð niður, er það enn meira óþarfi en það, en ef þú bara
held computing Fib 998 fær okkur ansi nærri FIB 999.
Þannig að við ættum í raun að vera svolítið meira snjall um hvernig við konar endurnýta
þessar, en við erum ekki að endurnýta þessum hlutum öllum.
Svo er hægt að ímynda sér þetta risa, risa tré sem er bara hræðilegt.
>> En engu að síður, OK.
Svo sem var Fib.
Það tekur bara smá stund til að keyra.
Yep?
>> Áhorfendur: [inaudible].
>> KEVIN Schmid: Oh, gastu endurtaka spurninguna?
>> Áhorfendur: [inaudible].
>> KEVIN Schmid: Oh svo er þetta bara númer það er að fara að vera eins konar á
framreiðslumaður hlið.
Þannig að þetta er ekki að fara að finna í vafranum eða neitt.
Það er í rauninni það sem við höfum er að þegar notandinn hér ansi mikið bráðabirgða
beiðni þeirra aftur, þegar við svoleiðis leggja fram beiðni, við erum að fara að hringja
þessi aðgerð á miðlara megin.
Og þá munum við fá niðurstöðuna baka frá starf að virka.
Og þá munum við bara prenta hana til notandans.
Þannig að notandi er í raun ekki að takast með þessari aðgerð of mikið.
>> Var að spurningin?
Er að skynsamleg?
OK.
Cool.
>> Svo aftur, gera við þetta allt res.writeHead hlutur þar sem við prenta út
haus.
Og þá er ég enda viðbrögð með því að gera galdur númer er Fib 45.
Svo skulum hlaupa bara þessa miðlara.
Þannig að ég ætla að gera hnút fib.js.
Svo nú Fib miðlara mitt er í gangi.
>> Og svo hérna, ég er að fara að gera einn svona.
OK?
Þannig að ég ætla bara að fara að segja, krulla.
Svo það er að fara að taka smá stund en vonandi bráðum það verður að klára og
það mun prenta út þessi 45 Fibonacci töluna.
>> Áhorfendur: [inaudible].
>> KEVIN Schmid: Það ætti fá gert fljótlega.
Svo það ætti að taka 5-6 sekúndur.
Ég veit ekki það er bara V8 vera frábær hratt, en í öllu falli, þetta er
mjög stutt dæmi og viljandi inelegant af a non-léttvæg
útreikningur.
Svo eftir smá stund, það fá þetta.
>> En nú, hvað ef ég að sams konar tilraun sem áður þar sem ég gera
tvær beiðnir á sama tíma?
Svo hér er ég að fara að krulla á að tölu, og ég ætla
að gera annað Curl.
Og muna, þegar við gerðum þetta fyrir sofa miðlara, þegar við þurftum í rauninni það
eftir fimm sekúndur, að þeir nánast mikið bæði komu aftur til hægri
um sama tíma.
Svo það var ekki sérstaklega bundinn upp.
>> En við skulum reyna það núna.
OK, þannig að við fengum tvo ferli okkar.
Man þá eru ferli auðkenni.
Þetta er að fara til vera a lítill óþægilega á meðan við þæfa.
Þannig að við skulum bara vera hér og bíða.
>> Svo einn þeirra ætti að koma til baka eftir svona -
OK, svo maður kom til baka.
En þá hvers vegna gerði ekki annað einn koma aftur bara enn?
Yep?
>> Áhorfendur: The framreiðslumaður geta ekki gert neitt á meðan það er að reikna þessi stór tala.
>> KEVIN Schmid: Hægri.
Svo svar var bara að þjóninum virkilega getur ekki gert neitt á meðan
það er að reikna þessi Fibonacci númer.
Svo nú er ég fékk bara tvennt mína aftur.
En ég giska bara að hugsa um númer smá meira, hvernig það er að vinna
og allt.
>> Svo er þessi aðgerð hér kóðinn sem Ég hef sagt þetta miðlara til að keyra þegar það
fær nýjan komandi beiðni.
Svo það er bara að fara að hlaupa í gegnum þetta allt, og þá er að fara að fara
aftur til the atburður lykkja og síðan áfram stöðva fyrir nýja viðburði.
Svo í rauninni það sem við höfum að gerast er the framreiðslumaður er
hlusta á nýja hluti.
Fyrsta manneskjan spyr fyrir hvað 45 er.
Hlaupum þennan kóða til að reikna það.
Þessi kóði tekur u.þ.b. fimm til sex sekúndur til að keyra.
Þá erum við að fara aftur til the atburður lykkja og leita að nýjum beiðnum.
>> Svo er þetta dæmi um hvernig, ef þú hafa hluti sem eru svokölluð reikna
bundið, eða nota mikið af computational, ekki vald, en eins eru
computationally ákafur -
Ég giska eitt að segja um þetta er að þessi aðgerð er að gera algerlega,
að mestu leyti, nokkuð gagnlegt að vinna rétt.
Allan tímann að þessi svarhringingu virka var í gangi, var það nokkuð
mikið að eyða mestum tíma sínum bara computing að NTH Fibonacci tala.
>> En við höfðum aðeins einn þráður að takast á við.
Í Apache fyrirmynd, þegar tvær manneskjur gerði beiðni um að fá FIB 45, við
hefði tvær mismunandi þræði.
Og þá starf Stýrikerfið er hefði verið, eða notandinn stigi
kóða sem stýrir þræði, myndi hef verið að sneiða að upp á
CPU, eða jafnvel ef þú hefðir marga örgjörva, dreifa þeim jafnt yfir örgjörva
svo að þeir voru báðir ljúka um það bil á sama tíma.
>> Svo bara að sýna þér hvernig við getum raða af - og þetta er ekki alls fullkomin
lausn, en svoleiðis hvernig við getum gera a koma aftur hingað og gera
svolítið betur.
Svo það sem ég hef hér er forrit sem heitir Fib C. Og þetta grundvallaratriðum notar
annað af mát hnúturinn er kallað The Child Process Module.
Þannig að ég hef sett það efst tagi af eins og ég myndi gera pund eru
barn process.h eða eitthvað.
Nú hef ég aðgang að þessum CP breytu sem hefur alla virkni mína.
>> Svo nú hvað ég er að gera í þessu svari stjórnandinn er ég er að keyra þetta forrit
punktur rista FIB 45.
Svo það sem ég hef gert - og ég ætla bara að fara að stíga út úr þessu forriti fyrir
svolítið -
er ég hef skrifað C forrit sem grundvallaratriðum reiknar
NTH Fibonacci númer.
Svo hér er bara forrit sem ég hef skrifað í C sem reiknar þetta.
Ég get þýða það, og ég get keyrt það á stjórn lína.
Og það er að fara að reikna 45th Fibonacci númer.
>> Svo eftir það tekur bara ansi mikið og lengi.
Ég gæti sennilega hafa notað bandstrik 03 til fínstilla það eða eitthvað svoleiðis,
en ég gerði bara eins og venjulegur þýðanda stillingar.
Og það prentar það út.
>> En nú, hvað er ég að gera svona?
Oh sorry, rangt skrá.
Svo ég gera það sama efni með haus eins og áður.
Þá er ég að gera þetta cp.exec.
Svo er það þetta er að fara að gera er að það er að fara að keyra þetta forrit.
En hvernig þetta virkar er að það er ekki að fara að bíða eftir
þessi forrit til að ljúka.
Það segir bara í rauninni framkvæma þessa áætlun.
Svo í rauninni tegund this inn í skipanakvaðningunni konar.
>> Og þá, þegar þú ert búinn með það, hlaupa þessa aðgerð.
Svo nú erum við konar fá þetta heild aftur hlutur af
eins og við erum ekki að bíða.
Er svona skynsamleg?
Yep?
>> Áhorfendur: [inaudible]?
>> KEVIN Schmid þannig að þetta verður í raun opna nýja aðferð til að gera það.
Svo er þetta í raun, í sumu leyti, illt, ekki frábær illt, en það er
mikilvægt að segja að þetta er eins konar að fara aftur til, annars vegar, Apache
líkan þar sem við gerum þræði og ferli fyrir hverja beiðni eða
ferli fyrir hverja beiðni.
Svo er af þessu tagi hliðstætt að það Apache gerir.
Í sumum tilvikum, það verður bara að nota nýja þráður, sem er lítið meira ljós
þyngd en ferli, en Apache gat endað gaffall nýja aðferð
sem er góður af því sem við gerum hér óbeint með því að gera punktur skástrik FIB 45.
>> Og þá í því tilfelli, við hvers konar fellur sömu gjöld ferlum.
Svo er þetta bara eitt sem þú getur gert.
En bara að sýna þessa tegund af gangi.
Og þetta tal er bara virkilega ætlað að kynna þessar tegundir af forritum sem
leið til að sýna mismunandi sjónarhorn á hvernig á að hanna netþjónum eins og þessi.
Þannig að þetta er í gangi, og þá nú ef ég geri þetta aftur, fékk ég tvo ferli auðkenni.
>> Við skulum tala bara um atriði sem þarf að benda á.
Svo eftir því að þeir eru í þrepum.
Það er svalt.
Vegna þess að það var 27.122 áður.
En tilkynning nú, komu þeir aftur á nokkurn veginn sama tíma.
>> Og nú, góð spurning til að spyrja um hvers vegna var sú raunin er, sem starf
var það nú til að svoleiðis gera þetta konar spila fair við hvert
önnur, þessi tvö dæmi af punktur slash Fib 45 sem ég hljóp
eða að Hnútur hljóp?
Sem eins konar gerir það sanngjarnt að þeir báðir fá eins konar jafnvægi hlaupa tíma?
>> Áhorfendur: [inaudible].
>> KEVIN Schmid: Já.
Svo í grundvallaratriðum, þegar ég punktur skástrik FÍB 45 eða eitthvað svoleiðis, núna er það
konar upp að stýrikerfi til að höndla Runtime af þeim áætlunum.
Og nú getur tímasett þá á mismunandi örgjörva eða það
getur tímasett þá.
Það getur sneið upp tíma og einn CPU fær það eða að þeir fá
að keyra á eitt CPU.
Svo er það hugmyndin að baki því.
Er það skynsamleg til allra?
Svo nú Hnútur er í raun ekki að spila á hluti í skiptingu þessara verkefna.
OK.
>> Svo það er næstum það um dæmi.
Mig langaði bara til að sýna einn í viðbót vegna þess að mikið af þessu svo langt hefur verið
ekki algerlega frábær hagnýt í sumum tilvikum.
Ég get ímyndað mér að koma heim eftir þetta tala og eitthvað og segja eins og,
Jæja ég fékk svona út úr því tala um að Ég get gert Fibonacci miðlara fyrir
Lokaverkefni mitt.
Svo hér er bara svoleiðis eitt dæmi sem vonandi verður -
kannski ekki, en kannski - aðeins meira konar viðeigandi að lokaverkefnum og
hugsa fram í tímann fyrir hlutum eins og þessi.
>> Svo er þetta chat.js.
Þannig að þetta er góður af eins og sumir sýnishorn framreiðslumaður hlið kóða sem þú getur notað til að
setja upp litla spjall miðlara eins þú gætir hafa séð á
Facebook Spjall eða hvað sem er.
Þannig að ég er ekki að segja þetta er eins og Facebook Spjall, en þetta er eins konar
eins gott - kannski ekki gott, en kannski góður - upphafið spjall
miðlara fyrir vefsvæðið þitt fyrir lokaverkefni.
Svo skulum líta á hvað það er að gera.
>> Þannig að við erum að fá þetta sérstaka hlutur efst, þetta VAR Sio
jafngildir krefjast Socket.IO.
Svo er þetta annar hlutur sem það gerir ekki reyndar koma búnt með
Hnútur en þú getur sett það.
Það er Hnútur mát.
Svo er það bara eins og sumir framlengingu á hnút.
>> SocketIO er reyndar mjög góður af kaldur.
Það er abstrakt sem í grundvallaratriðum það sem það gerir er það leyfir þér að
hafa þetta straum af samskiptum milli vefnum
flettitæki og vefþjóni.
Svo að mestu leyti svo langt, við höfum haft þessar mjög fljótur eina sekúndu eða tvö
second samskipti milli vefur vafra og the vefur framreiðslumaður.
Svo það er í grundvallaratriðum að fara á google.com, fá efni, senda það til baka, og þá
við erum búin.
Við erum aldrei að tala aftur þar til notandinn slær í eitthvað annað.
>> En hvað Socket.IO og svipað góður af hlutir - og SocketIO er í raun einn
af þeim hlutum sem er byggð á eins og WebSocket sem er tegund af boði
sem hluti af HTML5 -
sem leyfir þér að hafa þetta áframhaldandi umræðu.
Og þetta er mjög gagnlegt í spjall miðlara konar hlutur því það er
góður af eins og áframhaldandi umræðu í nokkrar leiðir því ef þú ert að spjalla
við einhvern, getur þú nú bara senda Skilaboðin niður í rörið, og þá
miðlara getur sent skilaboð niður pípa til annarra aðila sem þú ert
spjalla við.
Og þá er hægt að hafa þetta skiptast svona.
>> Svo er þannig hvað SocketIO er gott fyrir.
Ástæðan fyrir því að SocketIO notar WebSockets eins eitt er að í
Auk þess að bara venjulegur gamall WebSockets, það gerir líka sumir bragðarefur til að grundvallaratriðum
gera það vafranum samhæft.
Svo vöfrum eins og Internet Explorer Því miður styðja ekki WebSockets
réttur út af the kassi.
Svo notar annars konar kaldur snyrtilegur hluti með Adobe Flash til að leyfa
þú að hafa yfir vafra stuðning.
Svo er það mjög gagnlegt.
>> Og í raun, ég veit ég er svona keyra á réttum tíma hér, en CS50
Ræða, hefur þú einhvern tíma séð eitthvað eins, ég veit ekki, eyða svo og svo er
að svara þessum pósti eða eitthvað svona, að lögun?
Það er SocketIO.
Svo þegar einhver byrjar að slá inn í ræða reit til að gera svar eða
eitthvað, vafrinn þinn styður hvað er kallað í SocketIO gefur frá sér einhvers konar
atburður sem segir einhver er svara við þessa færslu.
>> Þá segir miðlara, OK, hvað þarf ég að gera?
Jæja nú þarf ég að segja þeim öðrum krakkar sem eru á CS50 Ræða leita
á þessum þræði að einhver er að svara.
Svo er þannig hvað SocketIO er gott fyrir, þetta áframhaldandi konar
straum af umræðu.
OK.
>> Svo það sem ég hef hér - og við erum bara fara að hunsa tengingar array
fyrir a lítill hluti -
það sem ég geri er ég annar hlusta.
Svo er það bara þannig í Socket.IO er segja við skulum hlusta á þessa höfn.
Og þá er ég að gera þetta við tengingu.
Svo er það bara í rauninni Socket IO er leið til að segja, þegar við fáum að
tengingu, ég vil þig að keyra þennan kóða.
>> Og taka eftir því að í stað þess að þurfa sæk og Res liðu í þar sem ég hef fals.
Og þetta Socket hugmynd er í grundvallaratriðum þetta hlutur sem þú getur skrifað og lesið
frá því hefur notandinn er skilaboð hugsanlega.
Og skilaboðin sem þú vilt senda getur farið í gegnum þessi fals.
Er að skynsamleg?
Svo er það þetta áframhaldandi hlutur.
>> Svo það sem ég geri er að ég kalla Socket.emit.
Og gefa frá sér tekur nokkuð mikið tvær breytur.
Fyrsta rifrildi er band bara representing the tegund af
hlutur sem þú ert að emitting.
Svo fyrir þessu tilviki, hef ég notað Þessi strengur ný skilaboð.
Og það er bara í rauninni að segja að gerð þetta, hvað ég er
sendingu, ný skilaboð.
Svo þú getur hlustað á tilteknum tegundum eins og nýtt skeyti eða hvað
með því að nota punkt á.
>> Svo tengingu og notandi sendi þar, ef þú horfir á þar sem við köllum punktur á,
þá eru aðrir strengir sem tákna gerðir notanda skilaboð.
Svo það er í grundvallaratriðum að þú getur haft þetta frá sér eitt af þessum tegundum skilaboða og
þá gera eitthvað til að bregðast við einn af þessum tegundum skilaboða
>> Þannig að ég ætla emitting þessa nýju skeyti.
Við erum að fara að hunsa connections.push fyrir a second.
En þá segi ég, Socket.on notandi sendi.
Svo nú er það er góður af eins þegar notandi sendir mér skilaboð, ég vil
þú að keyra þennan kóða.
Og taka eftir því að nafnlaus virka er að taka í þessari breytu
kallast gögn sem er í grundvallaratriðum að fara til að hafa skilaboðin notandans.
>> Svo nú skulum konar tala um tengingarnar array.
Þannig að þetta er hannað fyrir spjall viðskiptavinur þar grundvallaratriðum er allir góður yfir í
sama spjallrás.
Svo í grundvallaratriðum, það sem við þurfum á að halda um er nokkur fylki sem í grundvallaratriðum
táknar allt fólkið spjalla í nokkrar leiðir, ef það er vit í.
Satt?
Þar sem við þurfum að vita hverjir þessir krakkar eru þannig að við getum sent þeim skilaboð
sem aðrir hafa sent til okkar.
>> Svo er það þetta númer gerir er þegar notandi sendir skilaboð - það er tegund af
The atburður -
við erum að fara að keyra þennan kóða.
Og hvað við gerum er að við að keyra í gegnum þetta array sem við höfum kallað tengingar.
Og laglegur mikill fyrir hvert tengingu nema einn sem er okkar, sem er
hvað þessi kóði segir, sendu okkur ný skilaboð með því Viðhengi
upplýsingar.
>> Þannig að ef þú tekur eftir hér, það sem ég gerði þegar notandinn í raun gerir nýtt
tenging er Ég hef bætt við JavaScript.push aðferð, þetta er
í rauninni bara að segja eins og að bæta að Socket sem gildi í
tengsl okkar array.
Svo nú þegar þetta númer keyrir, það vilja senda það til þeirra sérstaklega
tengingar.
Þannig að þetta getur verið góður upphafspunktur til að smíða spjall miðlara
eða eitthvað svipað.
>> Og hvers konar kaldur hlutur er að númer sem þú sérð hér fyrir eins og á og
gefa frá sér og eitthvað svoleiðis er það sama konar JavaScript kóða sem þú myndir
skrifa í vafranum til að hafa samskipti við þjóninn.
Svo að hvers vegna SocketIO er góður af snyrtilegur og gagnlegt í þá áttina.
>> Ó og bara einn hlutur raunverulegur fljótur.
Það var CS50 lokaverkefni í fyrra sem í grundvallaratriðum innleitt spjall
miðlara í Node.js.
Ég held að það er Harvardchats.org en ég er ekki -
OK.
Ég er ekki viss hvað slóðin er, en Ég get sent það út síðan.
En það er góður af kaldur hvað þú getur gert með Node.js.
>> Svo ég vona, almennt, hefur þú krakkar á góða tilfinningu fyrir hvað Node.js er gagnlegt
fyrir og hvernig þú gætir kannski sótt að lokaverkefni þínu.
Ég mun vera að senda út meira auðlindir ásamt þessari.
Og þakka þér fyrir að koma.
Þakka þér.
>> [Applause]