>> KEVIN Schmid: Tere kõigile.
Tere tulemast CS50 seminar edasi Node.js.
Minu nimi on Kevin.
Olen CS50 TF.
Ja ma olen omamoodi nagu väga põnevil sellest seminar.
Arvan Node.js on väga lahe.
Loodan, et see seminar on võimalik kasutada kui hea, ma arvan, hüppelaud
mõned oma lõpliku projekti kui olete huvitatud, kasutades
midagi Node.js.
>> Me justkui alustada seminar maha räägi natuke
selline taust mastaapsuse perspektiivid Node.js ja seejärel
me liikuda mõned koodi näited.
Ja ma pean koodi veebilehel, ja saate vaadata koodi.
Ja pärast seminari, ma ajame juttu kuidas saab luua Node.js
arvutisse.
>> OK.
Niisiis alustame.
Nii et ma arvan, et ma lihtsalt tahan rääkida veebiserverite tegelikult esimene.
Ja alustada seda arutelu, I põhimõtteliselt on skeem, mis on pärit
õpik kasutada CS61, mis Võrrand näitab interaktsiooni
kliendi vahelise protsess, nagu veebi brauseri või nagu teie eesmärk kliendi või
midagi sellist, ja veebiserver.
Seega selline sarnaneb pilt, mida nägin loengu
Kolmapäev, kus põhiliselt on meil mõned klient protsess nagu Google Chrome.
>> Ja siis esimene etapp on klient saadab taotluse.
Nii et võib olla midagi hästi olgem külastada, ma ei tea, CS50.net.
Nii väljastame selle taotluse.
Ja kas keegi mäleta nime protokoll, mis määrab, kuidas seda
taotlus peab olema üles ehitatud?
Yep.
>> Publik: [kuuldamatu].
>> KEVIN Schmid: Täpselt.
Nii et see on nagu HTTP, eks?
Nii et põhimõtteliselt kirjelduse, kuidas et taotlus tuleks tegelikult ette
välja, sest lõpuks päev et taotlus on tõesti lihtsalt meeldib
string, et põhimõtteliselt ütleb, et ma tahan seda.
Ja spetsifikatsioon eest, mis on HTTP.
Nii et nagu protokoll.
>> Nii siis server saab et taotluse.
Nii kutid on web server installeeritud aastal CS50 aparaat.
See on Apache.
Ja sel nädalal, kui te töötate probleem pani seitse, saate tegelikult töötavad
selle veebiserver.
Nii server saab seda taotlust ja siis peab selline kriimustada oma
head ja öelda, nagu ka see, mida ma teen seda?
>> Nii selle põhjal, mida ta otsustab seda teha, siis ta pöörduma mingi
ressursi.
Ja see allikas võiks olla palju erinevaid asju.
Ühe, see võib olla just nagu staatiline HTML faili.
Nii et see võib olla lihtsalt nagu mõned HTML et on nagu
oma isiklik veebileht.
See võib olla staatiline fail nagu pilt või nagu film, mis sul on.
Võiks isegi rääkida mingi andmebaas
nagu MySQL andmebaasi.
Nii et see ei pea alati suhelda koos ressurss, kuid
Mõnel juhul võiks.
>> Niisiis, mida ta kavatseb teha pärast, mis on see läheb
tagasi saata vastuse.
Ja vastuseks sellele on Samuti täpsustada poolt HTTP.
Siis saab klient saada.
See võib tükkideks rebida ja neid töödelda.
Ja siis sa saad veebilehe nagu Google või CS50.net või
mida iganes sa läksid.
OK?
>> Nii et see on põhiline vastasmõjud me tegelema.
Ja me päris palju läheb keskendudes selle osa
koostoime, server.
OK.
Lahe.
Kas kellelgi on mingeid küsimusi nii palju?
OK.
>> Nii nagu me ütlesime, web server saab Selle HTTP taotluse ja seejärel väljastab selle
HTTP vastus.
Ja nagu me rääkisime enne, CS50 seade veebiserver Apache.
Nii et kui te töötate P pani seitse, sa lähed koos töötama
Apache veebiserver.
Sa ei pea tegelikult töötavad Apache otse liiga palju.
Sa justkui konfigureerida Apache vähe Kui määrate virtual hosts või
v võõrustajate ja me jõuame et, et natuke.
>> Aga põhimõtteliselt, Apache veebiserver loodud töötama PHP objekti
out of the box.
Mis siis tegelikult juhtub, on see, kui sa lähed ühe oma veebilehed nagu, ütleme,
kohalik host kaldkriipsuga index.php või midagi, on teie brauser saadab, et
taotluse ja seejärel Apache istub seal ja saab aru, et teha.
Ja tegevus on täita et koodi index.php ja
siis saadab selle tagasi.
Nii et seal on see.
Nii et me justkui sellest rääkinud.
Nii et see võib lihtsalt olla staatiline fail või käivitada mõned PHP kood ja seejärel teema
vastus.
>> Nii siis üldine küsimus, mis võib tulla kuni on hästi, kuidas me üldse tegelema
koos võttes mitu kasutajat samal ajal?
Kujutlege, kui sa olid kirjalikult web server, kui teil on olnud web server et
sa üritasid kirjutada midagi nagu C või midagi sellist,
Põhimõtteliselt saab mõelda, kuidas seal võiks olla mingi kood, mis
saaks taotluse, kuid siis ta peab tegema kõik selle töö peal.
See võib olla näiteks ühendust andmebaasi või midagi sellist.
Eks ole?
Ja siis ta teeks seda liiki töötlemise ja seejärel
tagasi saadetud vastus.
Nii et nagu kõrge tasandil ülevaate.
>> Aga see ei ole kohe selge, kuidas saab teha nii, et kaks inimest või
isegi 1000 inimesed võiksid töötada oma veebiserver samaaegselt.
Seega lahendus, et Apache kasutab nimetatakse teemad või protsesse.
Nii et te võib-olla kuulnud need tingimused enne.
See on OK, kui sa ei ole, vaid lihtsalt arvan, umbes niidid või protsesside võimalusi
operatsioonisüsteemi või kasutaja programmi või midagi sellist või veebiserver
et omamoodi täita mitmeid asja korraga.
Nii et te võib-olla kuulnud sõna nagu niidid täitmine.
Nii et see on selline nagu sa oled omamoodi asju koos.
>> Ja kui sa oled näinud kasti oma laptop, või midagi sellist,
mitmesoonelised, mida saate teha, on teil võimalik käivitada kahte erinevat niidid eri
osad CPU nii et nad suudaksid tegelikult juhtub samal ajal.
Nii et see on tõesti võimas.
Ja see on omamoodi Apache lahendust sellele probleemile.
>> Nii on seal selline nagu mingeid probleeme seda lähenemist, kuigi?
Nii et ma arvan, et ma nagu kirjutasin need seal.
Aga nad mõlemad omamoodi kasutada palju mälu.
See on väga kallis luua niit või protsessi.
>> Ja osa põhjendus on, et lihtsalt nagu siis, kui sa kasutad C programm
nagu teie peamine ja siis kõned teine ​​funktsioon, mis on
mingi virna.
Nii mida nõuavad ka täiesti eraldi korsten, mis
võib olla üsna suur.
Ja kui te võite ette kujutada, millel tonni kasutajad oma veebilehel, siis oleks
palju erinevaid teemasid.
See on palju korstnad hallata ja säilitada.
Nii et see on suur mälumaht.
>> Ja siis ka, ütleme, et sul on ainult üks CPU või oletame, et sul on
rohkem teemasid kui sul need Multicores.
Eks ole?
Nii oletame, et sul oli 10 niidid ja tuli ainult viis protsessoriga.
Sa omamoodi on seda asja teha, kus sa vahetada praegune
See, kes töötab, sest sa ei suuda kõiki 10 korraga.
Ja seda nimetatakse kontekstis lüliti.
Ja seda mõistet on tegelikult paar erinevates kontekstides, kuid olgem lihtsalt
ma arvan et kui üleminek kahe niidid.
See võib olla üsna kallis, sest Põhimõtteliselt, mida sa pead tegema, on teil
on lõpetada see, mida sa teed, välja arvatud seisund, mis töötab niit, ja
siis minna kuhugi mujale.
>> Nii ei igaüks omamoodi näha motivatsiooni, miks niidid ja
protsesse võib olla natuke kogukas?
Ja kas teil on küsimusi?
OK.
Lahe.
Kas kellelgi on küsimusi?
OK.
>> Nii et kui me võtame sammu tagasi teist, seal on nagu
tähelepanek, et saame teha umbes palju veebirakendusi.
Ja see on tõesti nii palju neid tegelikult ei tee seda palju kasulikku
töö sees niit.
Niisiis on keegi algas P pani seitse üldse?
Nii et sa tahad olla kirjeldama mõned osad?
Kas olete töötanud login või midagi sellist?
>> Publik: Ei.
>> KEVIN Schmid: OK.
Pole viga.
Vabandust.
Aga põhimõtteliselt, et P komplekti, sa oled kavatsetakse teha palju sorti
päringuid andmebaasi, et saaksin teavet selle andmebaasi.
Ja mida teie kood on plaanid teha, mida see Apache protsessi või
et Apache niit läheb tegema samas on ta pöörduda
andmebaasis on see omamoodi kavatse olla istub seal ja see saab olema
ootab andmebaasi vastata.
>> Nüüd, mis ei pruugi tunduda, et suur tegelema, sest andmebaas on teie
CS50 seade, eks?
Aga seal on mingi võrgu latentsus seal, sest nüüd veebis
server on ka oma taotluse Andmebaasi suhelda
andmebaasi ja siis saad selle andmed tagasi.
Nüüd see on nagu hästi oota mind, ma olen lähen võtan midagi
andmebaasi ja siis on palju oodanud toimub.
Kas see on mõtet?
>> Ja mõned asjad, see ei ole nii halb.
Kui see lihtsalt on näiteks juurdepääsu mälu, et ei meeldi
jube I / O latency.
Ja kui ma ütlen, I / O latentsus, mida ma viidates on nagu mingit moodi
sisend väljund.
Aga avada faili kettal, nagu kui ma tahtsin olla staatiline HTML
faili, mis on minu veebilehe või midagi sellist, mul on
peatus natuke, lugesin, et fail sealt disk ja seejärel
et protsess Ma ootan.
Ma ei tee kasulikku tööd.
>> See ei ole tõsi kõike, kuid see on levinud rakendused nagu P komplekt
seitse ja palju rakendusi et sa ei ole
tegelikult teeme palju mõtlemist.
Ja kui ma ütlen mõtlemine, ma mõtlen nagu arvutilingvistika töö.
Nii arvutuslikke töö võiks olla midagi nagu, ütleme, et sa tahtsid
kirjutada web server et lihtsalt arvutada nda Fibonacci number.
See ei kõla eriti fun veebiserver.
Nagu ma ei oota, et sait Järgmise Facebook, kuid see on teatud
liiki arvutuslikke töö.
>> Ja te võite ette kujutada, mis asendab nimetatud koos mõne muu huvitav
arvutuslikku tööd.
Oletame, et sa kirjutasid midagi et arvutada kraadi
lahususe kaks inimest või midagi sellist.
Nii et ei kaasne mingit arvutamise, eks?
Ja isegi siis, mida teha, et sul on veel teha palju oodanud äkki
teil on päringu andmebaasi vaadata up, kes on sõbrad, kes või
midagi sellist.
Seega on selline mõiste algoritmide tööd.
Kas see on mõtet?
Kas kellelgi on küsimusi?
>> Oh ja ma arvan, et ma panen chat serverid seal sest jututuba serverid on omamoodi
üks hea näide sellest.
Chat server ei ole teha palju mõtlemist.
See lihtsalt peab ootama inimesi sõnumeid saata ja siis, kui
nad saadavad neid.
OK?
>> Nii lihtsalt sulgege uuesti Apache ja sarnane veebiserverite niimoodi kahvel
palju niidid ja protsessid, mis saab selline raiskav.
Nii et ma arvan, et küsimus, mis võib tulla sellest, kas meil on vaja olla
mitme lõime ja protsesside uurimiseks?
Mis siis, kui meil oli just üks?
>> Teeme liiki maalida pilti mida see näeks.
Teeme kasutada ainult üks teema.
OK?
Nii lihtsalt ette kujutada seda ühe teema.
>> Oletame, et me tõesti ei tee et palju kasulikku - ja kui ma ütlen
kasulik, ma mõtlen arvutuslikku tööd -
neis mitme lõime enne.
Teeme liiki koondada Kõike arvesse üks niit.
Mis siis, kui meil oli üks niit, mis liiki lihtsalt läheb ümber silmuse ja
pidevalt kontrolli tegid midagi uus juhtuda.
Nii näiteks, midagi uut juhtunud võib tähendada, et mul on midagi tagasi
andmebaasi või keegi saata minu uus HTTP taotluse.
Nii et need on omamoodi sündmused mis juhtub, eks?
>> Ja mis ma teha saan, kui need uued asju on see sama niit
täitmise, selle ühe niit täitmine, võin helistada mõned kood, mis
käsitleks seda konkreetset asja.
Nii näiteks, kui mul on midagi tagasi andmebaasist, ma võiks joosta mu
väike arvutuslikke osa, mis tegelikult lihtsalt valmistab asi
Kirjuta kasutajale tagasi.
Nii teeb sellist mõtet?
>> Aga millised on tegelikult tähendab selline?
Eks ole?
Sest me oleme kirjutanud palju koodi, mis -
ja ma lihtsalt hüpata edasi slaidide, kui see on OK.
Nii et kui sa ei pahanda, ma olen lihtsalt kavatse astuda samm tagasi.
Nii selline asi on nimetatakse sündmuse ahela.
OK?
Ja see on selline põhi Idee Node.js.
>> Mis siis Node.js tegelikult teeb nagu web server on seal ühe niidi
mis on põhiliselt ringi tsüklina nagu kui ühte liiki alla
kapuuts Node.js see pidevalt kontrollides, kas me saame midagi uut?
Ja siis see kestab käitleja et te luua.
Aga hea küsimus küsida, kuidas me saame teha seda juhtub
olemasolevate asju?
>> Nii panin rida C koodi siin, et põhimõtteliselt tundub, et see avatakse
fail, eks?
I Ta lihtsalt tuli välja album.
Pidin avama oma uue faili.
Niisiis, kuidas meie C kood tegutsevad -
ja ma arvan, et põhjus, miks ma valisin faili oli sest see on selline määral
on I / O tööd, mida me teinud oleme C selles mõttes, et seal on sisend väljund.
Nii et me nimetame seda koodi kas see f avatud.
Ja siis järgmisel real meie programm, saame töötada koos f.
>> Nii oleks see näiteks midagi see on nagu sünkroonse või
blokeerides sest selle esimene rida seal me ootame, kuni me
saada fail lahti.
Seega on teine ​​rida, me teame, et me suudab töötada f, kuid see tähendab, et
et teine ​​rida ei saa tõesti joosta kuni esimene rida on tehtud.
Kas see on mõtet?
>> Nii et see oleks halb panna aasta sündmus.
Ja selle põhjuseks on see, et sedalaadi ootab, eks?
Nii see tagasi meid tagasi sama asi.
Ja nüüd me isegi ei pea kasuks mitme lõime või
protsesse, sest meil üks niit Node.js.
Kas see mõttekas kõik?
>> Publik: Oota.
Mis on asendaja?
>> KEVIN Schmid: Oh, nii et jah.
Ma lähen, et saada asendamine.
OK.
Mis siis, kui meil on midagi mis nägi välja nagu see on?
Mis siis nüüd muutsin f avada vähe?
Nii et ma olen möödaminnes samas kaks argumenti nagu enne.
Ma ikka armastan uus laul et ta tuli välja.
Aga ma möödaminnes Kolmas asi, mis on see muutuja nimega kood.
>> Aga milline on kood tegelikult Selles kontekstis?
Kas see on nagu tavaline C muutuja?
See on funktsioon, mis?
Ja see võib olla veidi imelik, sest Ma tegelikult nagu praegu kulgeb
toimida teise funktsiooni.
>> Nii paar asja, mida meeles pidada seda.
Üks, ma ei tegelikult kutsudes koodi funktsiooni.
Nii et sa ei näe koodi vasakule paren, parem paren.
Ma lihtsalt möödaminnes kood.
Ja C, mida see tegelikult ei on mulle viit, et tegelik
kood ja siis võib see käivitada.
Aga mõtle selle peale, kui sa oled kulgeb koodi käivitumise
et fail on avatud.
>> Aga mida see tähendab, et nüüd mu ülejäänud programmi, mis võiks teha
muud kraami, võib jätkata teed muid stuff kuigi me tõesti ei oodata, kuid
lihtsalt taga meie peade, et kui see fail on avatud, run, et
kood ülaosas.
Kas see on mõtet?
>> Ja nüüd idee Node.js on see, et koodi teha asju koos f
osa peaks olema üsna lühike ja lihtne ja arusaadav ja tegelikult ei ole
väga arvutuslikult intensiivne.
See võib-olla avada teise faili, kuid et peaks olema päris kiire
sest see tuleb lihtsalt öelda seda veel f avada ja siis nimetame seda teiste koodi.
>> Nii lihtsalt täiesti selge, f avatud, mis teeb uue Katy Perry laulu
Valmis mp3, et läheb päris palju kohe tagasi.
Ja siis me võime lihtsalt jätkata teed muud asjad, sest kõik, mis nüüd f
Avatud kõne ei ei ütle põhimõtteliselt aluseks f avatud koodiga seda faili avada
ja kui sa oled teinud avamisel faili või kui sa saad selle tagasi,
seejärel käivitada selle koodi.
Aga see ei ole tegelikult töötavad, et kood.
Ja teil oli küsimus?
>> Publik: Sa näisid viitavat, mõned korda, et lisades arvutuslikult
intensiivne kood omamoodi murda [Kuuldamatu] juhitud süsteem.
[Kuuldamatu]?
>> KEVIN Schmid: See on hea küsimus.
Nii et ma tegelikult näide sellest, kuidas siis võiks integreerida arvutuslikult
intensiivne koodi natuke.
Nii et kui me saame koodi näiteid, Ma kindlasti tõmmata, et üks.
Kas see on OK?
Aitäh.
>> Mis oli su nimi on?
>> Publik: Aaron.
>> KEVIN Schmid: Aaron avab väga hea punkt, mis seisneb selles, et kui mul oleks
mõned arvutusintensiivseid kood teha asju koos f osa, ülejäänud
Minu programm ei tööta ja ei saa kuulata Uute taotluste või midagi, kuni kõik
mis värk on lõppenud.
Nii et kui ma olen kirjalikult Sõlme kood üldiselt kui me ei tee midagi, et ma lähen
soovitada hiljem, kui me vaatame koodi näiteid, et ma pean olema kindel, et
minu kood ei nöörima Selle ürituse silmus.
Kas see on mõtet?
OK.
Lahe.
>> Nii Node.js pakub see raamistik, mis saad ehitada need sündmustepõhine
servereid.
Nii et see on nende liiki asünkroonne mitte-blokeeriv I / O raamatukogud, samas
standard C teegid, et me oleme olnud töötamisel, nagu siis, kui sa lihtsalt
neid kasutada samamoodi, et oleme kasutanud neid f avaneb ja
asjad, need takistavad sest siis tegelikult on oodata
et faili avada.
>> Aga Node.js annab teile, et ja see põhiliselt sidemed arvesse Google'i V8
JavaScript mootori, mis on põhjuseks et Chrome on nii kiire töötlevate
JavaScript sest on see V8 mootor.
Nii et ma tean, et see kõlab nagu üks neist WWDC arendaja konverentside asi
kus nad lihtsalt visata hunnik kirja number asjad töötlejatele
ja öelda, et see on nii lahe.
Aga see on lahe, et nad ei seda sellepärast, et JavaScript -
või äkki kui sa ei ole tuttav JavaScript veel, sest meil ei ole olnud
loenguid ta -
aga JavaScript on tõlgendada keel.
>> Ja see on oluline punkt ka.
Seega on oluline, et meie web Serverid olema kiire, eks?
Ja kui me lihtsalt töötab JavaScript koodi, mis oli tõlgendada lihtsalt
iga vana tõlgi see võib olla aeglane.
Nii Sõlme kasu võttes seda super kiire V8 tõlk.
Ja ma ei tea, kas nad nimetasid seda sest V8 laksu otsaette
asi, kuid OK.
>> Nii et ma olen valmis mõned näited sellel aadressil.
Pärast seminari Ma omamoodi kavatse rääkida, kuidas saad Sõlme komplekt
up, aga praegu ma lihtsalt omamoodi taha kõndida läbi mõned koodi näited.
Nii et kui soovite jälgida mööda, kõik Lähtekood on saadaval siin.
OK?
>> Nii et ma jätan selle URL sinna natuke.
Ja siis ma lihtsalt läheb lülitub terminal.
Kas kõik on hea, see link?
Nii et ma lähen minema üle minu terminal siin.
>> Nii et siin on kood, mis Mul on täna.
Miks me ei võiks alustada simpler.js faili?
Teine asi on see, et kõik käesoleva kood läheb kirjutatakse
JavaScript mida võib või ei pruugi olla tuttav.
Ma arvan, et paar asja on, et palju JavaScript kood on selline
süntaks ja struktuur on väga sarnane C, siis võite omamoodi buffee nagu
lähete mööda.
Olen proovinud kirjutada palju alustades kood seda nii, et on
sarnane C, nii et see veidi enam loetav.
Aga nagu me edu, ma tulen näidates mõningaid täiendavaid
funktsioonid JavaScript et on omamoodi lahe.
>> Aga vaatame seda proovi programmi.
Ma arvan, et kõik on ära lõigatud on.
Ma lihtsalt määrata, et tõeline kiiresti, kui see on OK või mitte.
Ma ei tea, mida see tegema hakkab.
Kas see natuke parem?
Kas te näete var ja värki?
OK.
>> Nii et esimene rida on nagu JavaScript versioon muutuja
deklaratsioon.
Nii lihtsalt rõhutada, mida see annaks nägema C. Nii et see on nagu
mulle öelda indeks võrdub kolm või midagi sellist.
Nii et ma ei täpsustanud tüüp.
JavaScript ei ole tüüpi, kuid see on väga dünaamiliselt trükitud iseloomuga, nii
ei näe mingit tüüpi ta.
Nii see lihtsalt on var.
See on nagu muutuv.
OK?
>> Ja ma helistan selle muutuja HTTP.
Ja mu paremal pool, on mul väljend, mida ma tahan panna HTTP.
Ja see ütleb nõuavad HTTP.
Nii et see on omamoodi sarnased hulka.
See on veidi rohkem nagu võimas kui lisada mõttes, et hõlmata
oleks lihtsalt kopeerida ja kleepida kaudu faili funktsiooni prototüüpe või
sõltumata tüübist mõisted.
Aga vaja tegelikult toimub saada meile koodi.
>> Nii et sa ei mõtle seda kui importiva mõned koodi.
Nii kuskil Node.js moodul süsteem või mis iganes nad on kõik see
HTTP server koodi, et ma olen lihtsalt edev see minu enda
isiklikuks kasutamiseks selles programmis.
OK?
>> Nii siis on mul selle funktsiooni mis ma olen kirjutanud.
Ja teate ma ei ole, et täpsustada tagastamise tüüp või liik
argumendid uuesti.
Nii omamoodi lahti kirjutada selline tunne.
Kaks argumendid, mida ta võtab, päring ja vastus.
Nii et põhimõtteliselt on nagu tuttav pilt, mis meil oli
ekraanile enne, sest saame selle palve, et me
on kasutaja.
Ja siis on meil vastus, et saame kirjutada asju.
>> Nii et esimene rida selles ei res.writeHead 200 ja siis see
sisutüüp tekst tavaline.
Teeme panema selle peale natuke.
Teeme lihtsalt keskenduda res.write vähe.
Nii kirjutab on põhimõtteliselt, ja kirjutada pea, on lihtsalt kuidas omamoodi kirjutada
asjad vastust.
OK?
Nii kirjutab pea, kui keegi mäletab HTTP loeng, te poisid
mäletan päised top HTTP asi?
Nii et miks ei ma lihtsalt demo päised reaalne kiire.
Kas see kasulik?
Või peaksime justkui -
OK.
Muidugi.
>> Nii et kui oma brauseri läheb google.com või midagi sellist,
seal on tegelikult veidi rohkem -
see on nagu saladus -
seal on nagu natuke rohkem infot mis tuleb läbi toru kui lihtsalt
väike otsing ja kõik.
Nii, et näidata teile, ma lähen kasutada programmi nimega Curl.
OK?
Nii et see on midagi, mida saab käivitada Mac OSX käsureal või
seade või mis iganes.
Ja nii kui ma Curl HTTP google.com, Ma lähen, et näha HTML.
Ja see on õigluse, vaid HTML et justkui käsib teil
suunata www kui teie brauser ei toeta automaatselt hakkama
ümbersuunamist.
>> Nii et see on lihtsalt HTML, kuid ma lähen lisada Curl see sidekriips I lipp.
OK?
Ja see läheb näidata mind päiseid.
Nii et see on ka teavet, mis pärineb kaudu, kui ma saan selle vastuse.
OK?
>> Nii ülaosas näete seda HTTP 301 liiguvad pidevalt.
Ja see on selline oluline, sest see viitab seisundi kood.
Nii 301 siin on staatuse kood, mis on põhimõtteliselt ainult täisarv
mis ütleb brauseri või kes on lugedes seda, kui sa teeskled, et
sa oled brauser ja te näete seda, põhimõtteliselt nüüd, kui te vaatate
et ja sa näed 301, sa tead, et ma ei midagi erilist, mis põhineb
301, või midagi erilist juhtunud põhineb 301.
Nii ta ütleb püsivalt liigutatud.
>> Ja siis põhimõtteliselt on meil hunnik põhiväärtus paari.
Me saame asukoht on www.google.com.
Ja siis selline see kõik muud asjad, aga põhimõtteliselt, mis koht on
ütlus on uus asukoht on www.google.com.
Nüüd, kui sul minna google.com, siis saad omamoodi näha brauseri tüüpi vilkuv
teine ​​ja siis suunata sind õigus tagasi www.google.com.
Nii vastused võivad sisaldada need pealkirjad.
>> Ja paar asja välja tuua.
Ütleme olime tegelikult edukas külastades veebilehekülge.
Nii et lubage mul minna -
Mis on hea veebileht?
Ma olen halb mõtlemine hea veebilehed kohapeal.
>> Publik: Wikipedia.
>> KEVIN Schmid: OK.
Teeme Wikipedia.
Nii et siin ma liigutada.
Oh oota.
Ma olin?
Jah, ma olen.
OK.
Nii et ma sain teha www.
Nii et ma lähen tegema, www.
Ja nagu näete, siin on kõik HTML et brauser ei töödelda
Wikipedia.
>> Aga kui ma saan kerida, siia Mida ma näen ülaosas -
wow, seal on palju HTML Wikipedia -
kuid mida ma näen üleval siin see 200 status code erinevalt
301, mis ma nägin varem.
Ja teate, et see on kena sõbralik OK kõrval.
Nii et see on nagu hea seisundi kood.
>> Kas see 200 number tundub tuttav?
Jah, sest kui ma tegin simpler.js, Kirjutasin 200 seal.
Nii et põhimõtteliselt öelda öelda brauseri või kes üritab saada
seda, et nad olid edukad.
Või et selline nagu me olid edukad ka.
>> Ja seal on selline eriline süntaks Javascript tunnistamise
kaart neid klahve nagu sisutüübi ja need väärtused nagu teksti tavaline.
Nii et kui te vaatate vastuseks, et me tulin tagasi Wikipedia enne, -
Ma lähen, et proovida, et kerida natuke kiiremini -
sul on need võtmed nagu server ja need väärtused Apache.
Nii et sul on võtmed ja väärtused.
Ja te võite täpsustada selle Sõlm, mida tagasi saata.
>> Seega see on tegelikult selline, mõnel moel, ja mõnes mõttes see ei ole
tõesti, aga see on veidi madalam kui PHP koodi, mis sa võiksid olla
kirjalikult P pani seitse sest PHP ja Apache omamoodi hoolitseda mõned
need asjad sinu jaoks.
PHP, saate vaike käitumist kirjalikult oma pealkirjad.
Kuid käesoleva saame kirjutada välja oma pealkirjad.
>> Nii see siis line mõtet kõik, kirjutada pea line?
OK.
Lahe.
>> Niisiis, mida ma teha, on mul lõpuks vastus öeldes tere.
OK.
Aga see on lihtsalt funktsioon nimega päringu menetleja.
Nüüd ma tegelikult on omamoodi teha midagi selle funktsiooni, eks?
>> Nii et siin, mida ma teen seal on see line, mis ei var server võrdsete
HTTP.create server, ja siis ma läbima teabenõude käsitleja.
Nii et see on omamoodi sõlm võimalus luua serveris.
Ja teate, mida ma möödaminnes taotluses käitleja.
Nii et see räägib createServer funktsioon, mida ma tahan, et sa mind
server, ja kui see server saab vastus, ma tahan, et sa nimetad seda
päringu menetleja funktsioon.
OK?
>> Nii et joon päris palju lõpeb kohe.
Nii var server rida paremalt pärast sa seda päris palju.
Ma mõtlen, et see on loodud teatud sisemine riik on teada, et teil oleks
helistada, et päringu menetleja ülesanne, kuid ta ei kavatse seal istuda ja
ütleme on kasutaja saadetud minu taotluse veel?
Kas kasutaja saatis mulle taotlust veel?
Nii et see ei takista.
OK?
>> Niisiis, mida see teha on see põhimõtteliselt nüüd salvestab osuti selle koodi,
Selle päringu menetleja funktsioon ja seejärel kestab see kood, kui keegi
teeb taotluse.
Ja siis me teeme server.listen.
>> 1337 on üsna meelevaldne.
Mul polnud erilist põhjust korjamiseks, et number.
See oli täiesti juhuslik.
Aga see lihtsalt täpsustab sadama.
Nii et enamik veebiserverite näete, et nad kasutada port 80, sest see on omamoodi
samasuguste konventsioon.
Nii et kui ma lähen midagi, Ma ei tea, Wikipedia.org,
ja panin koolon 8 -
oh wow, sa ei näe seda.
Vabandust.
Aga kui ma teen Wikipedia -
Ma kirjutan selle siia lihtsalt selleks, et see on selge, kaamera.
Aga kui ma seda arvesse brauseri koolon 80, mis täpsustab minna
Wikipedia.org sadamas 80.
Nii et see on nagu, kuidas Ameerika Ühendriigid on mitu sadamate nagu, kus saab saata
asju omamoodi.
Nii et see on nagu minna selle konkreetse koht selles serveris.
OK.
>> Nii et ma lihtsalt valis 1337.
On terve hulk numbrid et saate valida.
See ei olnud täiesti eriline.
>> Aga mida ma teen nüüd on ma lähen jooksma sõlme.
Lubage mul tegelikult selles paar liinid maha, nii et saate seda näha.
Ma teen sõlme, ja ma olen jooksegi simpler.js.
Ja siis me räägime, kuidas saada Sõlme loodud natuke.
Aga nüüd on see lihtsalt töötab server.
>> Nii et üks asi, mida me võib proovida, mida ei olla, et põnev on saame tegelikult
üritada pääsu seda Curl.
Ma võin teha lokke ja minu Masin on kohalik host.
Näete ka selle kirjaliku niimoodi mõnikord.
Kohalik host ja 127.0.0.1 on lahke kohta nagu oma kodus arvuti.
Nii et see on nagu räägid oma arvutist.
OK.
>> Ja siis ma ei saa öelda 1337.
Nii et kui ma saan seda rida koodi, ta ütleb tere.
Ja kui ma tahtsin näha, et asjad, mis oli sisutüübi teksti liht-või
mis iganes, ma võiks isegi selle siia pani.
Ja teate, et see ei öelda OK.
Ja mul on tekst tavaline.
Ja siis on omamoodi kõik muu asju, mis sõlme lisada
minu jaoks olemas.
See pole super oluline.
>> Ma mõtlen, et seal on mingi tehniline aspektide juures, mis on omamoodi
lahe rääkida, kuid ainult selleks, et näidata sa, mul on ka õigus
muuta need ümber.
Ma võin vaid lisada kamp asju niimoodi.
Ja siis nüüd, kui ma vaatan minu väljund, siis on see, et.
Nii et need pealkirjad tähendab teatud asju brauserid ja asjad niimoodi.
>> Ja pealkirjad on põhimõtteliselt öelda brauser kuidas vastata midagi.
Kui olete kunagi kuulnud küpsised enne, või kui sa oled kunagi olnud pahane
poolt veebilehe küpsiste seadistamine, või sisselülitatud cookie blokeerida või
midagi sellist.
Võite tegelikult küpsiseid Nende pealkirjad.
Nii nad ütlevad brauser kuidas käitumist mingil juhul.
OK.
>> Nii et oli simpler.js.
Kas kellelgi on küsimusi selle lähtekoodi faili?
OK.
Lahe.
>> Teeme eemaldada r sellest ja vaata simple.js.
Nii et see on üsna palju sama programmiga.
Ma kirjutasin seda natuke teistmoodi sest ma tahtsin, et sortida esiletõstmise
mõned funktsioonid JavaScript.
>> Nii teate, et taotlus handler funktsioon on täiesti kadunud.
Oh jah, sul oli küsimus?
>> Publik: Jah, argumendid mis on vastu võetud selle
funktsioon, mis need on?
>> KEVIN Schmid: Nii et need on JavaScript objektid.
In Node.js dokumentatsioon, see põhimõtteliselt ütleb milliseid meetodeid on
saadaval neile.
Me lihtsalt juhtub olema juurdepääs seda meetodit nimetatakse kirjutada pea ja lõpuks
ja värki.
Aga seal on terve hulk veel meetodeid.
>> Ja näiteks nagu üks neist eelkõige rec, saate seda teha
midagi rec.method mis öelda, kas see on HTTP GET või
HTTP POST päringuid ja asjad niimoodi.
Nii et seal on igasuguseid erinevaid omadused, kuid nad mõlemad
JavaScript objektid ja nad lihtsalt on funktsioonid neile lisatud, et teil
saab kirjutada asju.
OK?
>> Nii teate, et päringu menetleja on täiesti kadunud.
Aga kood, mis mul oli taotluse käitleja on endiselt olemas.
Mul on veel see res.writeHead ja mul on veel see res.end.
Ja mis see on näide in JavaScript on see idee
anonüümne funktsioon.
ja anonüümsed nagu paigaldamise nimi jaoks, sest see sõna otseses mõttes ei
nime.
Ei ole nõudmine handler sinna.
>> Tal ei ole nime, kuid siiski võtab argument.
Nii et ma ikka sain rec ja res.
Ja mul on veel kood.
See on täiesti trahvi JavaScripti koodi.
Ma võin tunnistada funktsioon ilma selgesõnaliselt andes talle nime.
See on natuke segane alguses.
Leidub nagu kasulikke asju , mida saate teha koos
need anonüümsed funktsioonid.
Kas kellelgi on mingeid küsimusi selle kohta, või on see OK lihtsalt, nüüd,
omamoodi lihtsalt aktsepteerima, et see teeme sama asja?
Yep?
>> Publik: Kas funktsioone esimene klassi JavaScript?
>> KEVIN Schmid: Nad on esimene klassi JavaScript.
Ja lihtsalt tean, et need mõisted kulgeb anonüümne funktsioon nagu
seda kohaldada JavaScript, et sa võib kirjutada oma lõpliku projekti
veebilehitseja liiga.
Nii näiteks JavaScript brauseri, see on ka mõnevõrra sündmus
ajendatud selles mõttes, et mida sa on, kui kasutaja klõpsab seda
nuppu, ma tahan, et sa jooksed selle koodi.
>> Nii et see on sama liiki ideid kliendi poolel, kui hiireklõpsuga või nad
hiirega üle teatud pilti oma veebilehe käivitada koodi.
See ei kehti servereid.
Nii et see on nagu põnev miks JavaScript on tõesti
sobib või mõned inimesed arvavad, et see on Sobiva keele sedalaadi
Kui juht server, sest sa oled need anonüümsed funktsioonid.
Sul on kogu idee see asünkroonne kood.
OK.
Kas kellelgi on küsimusi?
>> OK.
Nii et oli simple.js.
Nii vaatame veel üks või paar rohkem.
Nii et see on sleep.js.
Niisiis on keegi tuttav C funktsioon magada?
Alates võibolla üks varasem loengud või midagi sellist?
>> Nii et põhimõtteliselt saab läbida ka ma arvan sekundite arvu või kui te kasutate U
magada millisekundid või nanoseconds.
Ja põhimõtteliselt programm lihtsalt lõpetada töötab selle ajaga.
Eks ole?
Ja siis ärkavad lõpuks ja siis lihtsalt jätkata jooksvate
programmi.
>> Nii et see server omamoodi annab mulje magada.
Nii teate, et meil on sama res.writeHead 200 päises kui
varem, kuid siis me nimetades seda funktsiooni nimetatakse set timeout.
Seadke ooteaeg on saadaval ka oma veebilehitseja Google Chrome
või Safari või mis iganes.
Ja põhimõtteliselt mida ta siin teeb on see võtab funktsioonis.
Teate, jälle, see on anonüümne funktsioon.
Nii et omamoodi lahe, sest me oleme kasutades anonüümne funktsiooni
anonüümne funktsioon, mis võib olla veidi imelik.
>> Aga see võtab, et funktsioon, mis on põhimõtteliselt öelda - ja kuidas see
teosed on 5000 millisekundit, ma tahan teil täita selle funktsiooni, mis
lihtsalt lõpetab reageerimise ja kirjutab hei.
Nii et see jätab mulje nagu magab, kuid viis, kuidas seda tegelikult
töötab, on me joosta see rida väga kiiresti.
Me lihtsalt kirjalikult midagi.
Ja siis ka jookseb läbi see rida väga kiiresti.
Nii et me tegelikult ei kavatse ootama viis sekundit.
Me lihtsalt jookseks Selle koodi koheselt.
>> Ja siis on jälle see väike Kui loop et nüüd on see asi
registreid, et põhimõtteliselt on lihtsalt pidevalt käin ringi
ja vaadates kella ühe niit ja ütlus on viis sekundit
edasi veel?
Ja siis, kui ta näeb, et teine käsi on liikunud nagu viis sekundit või
mis iganes, siis ärkab ja ütleb: oh, mida ma pean tegema?
Oh mul on käivitada koodi.
Ja siis see läheb joosta res.end hei.
>> Nii et taas, me ei oodanud siin.
Nii see ei ole, et see kood sees Selle funktsiooni saab võtta viis
sekundit joosta.
See kood töötab päris palju silmapilkselt vähemalt võrreldes
viis sekundit, et me ei räägi kohta varem enne.
>> Nii lihtsalt, et näidata see toimib, Ma võin teha Node.sleep.js.
Ja kas ma segi ajama midagi?
Võib-olla.
Vabandust.
Vaatame, mida saame teha, et seda parandada.
OK.
Seega kindlasti kasutada Node.js.
Ma tegin lihtsalt nalja.
OK.
Lihtsalt üks sec.
OK.
Ma tean, mis see on.
>> Seega on küsimus selles, et minu teisi tab siin, ma jooksin Sõlme juba
et samal aadressil, 1337.
Nii viga, et see viskas, kui me vaatame seda päris täpselt, on aadress
kasutada, EADDRINUSE.
Nii et ma kasutan juba 1337 siin.
Nii et kui ma sulgeda selle ära ja siis ma nüüd proovite käivitada see loodetavasti kõik
saab trahvi.
OK.
Nii saab olla ainult üks asi sort kuulamise kohta port korraga.
Teine lahendus oleks olnud minu jaoks lihtsalt muuta, et programm ja teha
see on nagu 1338 või midagi niimoodi.
>> Aga nüüd magama töötab.
Nii et tegelikult on seda proovida sisse brauseri seekord, sest see on
vähe Jännityksetön näha see terminal.
Nii et ma lähen lihtsalt minema, et 127 aadress uuesti 1337.
Ja kui sa ei näe seda -
Ma ei tea, kas saate - kuid minu brauseri võttes väga pikk
aega laadida või nagu viis sekundit.
>> Ja siis pärast seda, kui ta lõpuks lõpetas vastuse.
Ja sa ei näe seda, sest asi liigub üle vähe, kuid kui ma teen
see veidi väiksem, siis näen seda ütleb hei.
Nii et ma sain Hei, aga viie sekundi jooksul.
Ja see võib olla veidi puhtam näha see siin on terminal, nii et ma olen
teeme -
Teeme siin -
Teeme Curl sellele aadressile uuesti 1337.
Ja ma lihtsalt selline istuma siin viis sekundit.
Aga teate, et server aktsepteerib uusi lahendusi.
Nii et see prindib hei.
>> Ja demo see, põhimõtteliselt mida Ma võin teha seda teiste tab -
ütleme, et ma teen seda teises jaotises Ma lähen tegema, Curl ja sama
asi uuesti.
Ma lähen, et proovida lüüa neid poisid välja samal ajal.
Nii et ma teen seda, ja ma olen kavatse rassi üle siin ja ma olen
kavatse seda uuesti teha.
>> Ja teeme seda nii, et te saab näha mõlemaid.
See üks trükitud hei, ning et üks trükitud hei kõik viis -
Teeme seda katset uuesti.
Tegelikult kasutame seda trikk, kui see on OK.
>> Nii et ma lähen kasutada koorega asi, võimaldab mul põhimõtteliselt kulgema kahes eksemplaris
Selle programmi paralleelselt.
Nii, et see käivitada esimene programm ja Teine programm paralleelselt.
Nüüd, kui ma vajutage Enter, siis läheb teha selle taotluse päris palju
silmapilkselt juures samal ajal.
Nii anname selle maha.
>> Nüüd märka seda ütleb kaks protsessi.
Ja kui sa oled uudishimulik, et 27000 number on põhimõtteliselt protsessi ID.
Ja siis märkate, nad trükitud hei samaaegselt.
See ei olnud nagu meil tuli oodata viis sekundit ühe ja siis pärast seda,
viis sekundit hiljem saad teise.
Nii et on selline, mõnes mõttes on see ole tegelikult tõendeid, kuid see on
intuitiivne tõendeid, et see ei ole lihtsalt nagu ootab viis sekundit ja blokeerimine
kogu teema.
OK cool.
>> Aaron esitasin küsimuse varem, et oli hästi, mis siis, kui me ei tee midagi -
Yep?
>> Publik: Oota.
Kuidas on see erinev printf puhver, kuigi?
Kas see ei automaatselt teha?
Miks me ei pea muretsema selle?
>> KEVIN Schmid: Oh, sa võisid öelda, et veel üks kord?
>> Publik: ei meeldi printf puhver teha täpselt sama asi?
>> KEVIN Schmid: printf puhver?
>> Publik: Jah.
OK.
Ei olnud üks viktoriinid olid räägi, kuidas, kui sa õige printf
midagi ja siis on see paus üks teine, ja siis on see loop kümme
korda, siis ootan kümme sekundit ja siis printf kõik koos?
>> KEVIN Schmid: Oh, OK.
>> Publik: Kas see teeb sama asi siis selles asjas?
>> KEVIN Schmid: Nii et küsimus oli põhiliselt ühes endises viktoriinid
või midagi, tekkis küsimus, et põhimõtteliselt, kui sa ütled print f 10
asjad korraga ja siis magas nagu printimist need välja,
aasta lõpus mingil põhjusel see oleks lihtsalt prügimäele need kõik välja ekraanile.
Nii et seal on selline kahe erineva mõisted siin.
>> Nii et ma arvan, et üks asi on see, et see juhul on meil tegemist kahe erineva
sort inimesi küsib server asju samal ajal.
Ja põhjus, et printf liiki ootab niimoodi ja puistab kõik välja
korraga on rohkem seotud kuidas printf liiki -
nii kuidas printf on tegelikult rakendatud on see põhimõtteliselt peab
räägi operatsioonisüsteemi kirjutada mis värk konsooliga.
Nii et ta ei soovi teha kõik, et asjad kohe, kui ütlete printf
mõned string, sest see võib saada kallis kui see on
seda iga kord.
>> Nii et kui te printf hei, teie programm ei pruugi tegelikult printida, et
kohe konsooli.
Võib öelda, OK, ma kirjutasin selle.
Ja siis selline ootama teil anda see veidi enne tegelikku
kirjutades seda konsooli.
>> Nii seetõttu, et see oli nii -
ja see on selline sõltumatu und -
on see, et uni oli omamoodi lihtsalt süstitakse seal näidata
Asjaolu, et ta ei kirjuta see sünkroonselt.
Aga põhjus on lihtsalt tulemuslikkuse, nii et sa ei pea
teha, et paljud kontaktid operatsioonisüsteemi.
>> Aga siin, mida me tõesti püüame teha Selle magada asi on lihtsalt näidata
et kui meil on kaks inimest, kes külastavad sellel veebilehel, see ei kavatse panna
neid joon, kus ta läheb öelda Mul on sind aidata, ja siis, kui ma olen
täiesti valmis, et aidata teil pärast nende viis sekundit, siis ma lähen
liikuge järgmisele isikule.
Nii et esimese isiku taotlus ei nöörima juhul loop
kui see on mõistlik.
>> Aga siin on tegelikult näide midagi, mis seob
kuni sündmus loop.
Nii et siin on jube funktsiooni arvutage nda Fibonacci.
See on sõna otseses mõttes halvem, kuidas sa saad arvutage nda Fibonacci number.
Ja see on tegelikult lihtsalt tunnistada , kust see tuli,
seal on tegelikult -
Ma mõtlen, et sa võid proovida minna leida - aga seal on nagu väga pikk blogi
lisada, et keegi kirjutas.
See on nagu üks neist Reddit asju.
Aga keegi kritiseeris Node.js ja nad kasutasid seda kui näidet.
Nii et ma sellist tahtnud lihtsalt näitan sulle kaks erinevaid vaatenurki lihtsalt saada
üldised teadmised mõisted taga need kaks asja.
>> Aga see on valitud lihtsalt jube, kohutavalt ebaefektiivne arvutuslikult
intensiivselt arvutada nda Fibonacci number.
Nii nagu pool tähele, miks on see jube nagu ühes suunas?
Yep?
>> Publik: Ütle, et alustada läbi 1000.
1000 jaguneb 999 ja 998.
Kõik see jaguneb kahte asja.
>> KEVIN Schmid: Õigus.
>> Publik: Täiesti alla.
>> KEVIN Schmid: Täpselt.
Nii lihtsalt korrata kaamera, kui ma kutsuvad luiskama on nagu 1000 või midagi
niimoodi, et see on ilmselt vähemalt või võrdne ühega, et ma lähen
minna seda veel juhul, ja siis ma lähen helistada luiskama 999 pluss luiskama 998.
Ja siis päris palju kõik, et töö luiskama 999 teeb, on
objekti sellel tasemel.
Kui sa lähed alla, see on isegi rohkem üleliigne kui, aga kui sa lihtsalt
arvan, arvutid luiskama 998 saab meile üsna lähedal luiskama 999.
Seega peaksime me tõesti olla natuke rohkem tark, kuidas me sellist taaskasutada
need, kuid me ei taaskasutades need asjad üldse.
Seega võite ette kujutada, see hiiglaslik, hiiglaslik puu see on lihtsalt jube.
>> Aga ikkagi, OK.
Nii et oli vale.
See lihtsalt võtab aega joosta.
Yep?
>> Publik: [kuuldamatu].
>> KEVIN Schmid: Oh, sa võisid küsimust korrata?
>> Publik: [kuuldamatu].
>> KEVIN Schmid: Oh nii et see on lihtsalt kood et see saab olema omamoodi kohta
serveripoolne.
Nii et see ei kavatse olla leitud brauseri või midagi.
See on põhimõtteliselt see, mis meil on, et kui kasutaja siin päris palju marke
oma taotluse uuesti, kui me omamoodi esitavad taotluse, me nimetame
Selle funktsiooni serveripoolne.
Ja siis me jõuame tulemus tagasi helistatakse, et funktsioon.
Ja siis me lihtsalt printida selle alla.
Nii et kasutaja ei ole tegelikult tegeleda Selle funktsiooni liiga palju.
>> Kas see oli küsimus?
Kas see on mõtet?
OK.
Lahe.
>> Nii et taas, me teeme seda kogu res.writeHead asi, kui me välja printida
päises.
Ja siis ma lõpuks vastuse, tehes maagiline number on vale 45.
Teeme lihtsalt käivitada server.
Nii et ma lähen tegema Sõlme fib.js.
Nüüd minu luiskama server töötab.
>> Ja siis siin, ma lähen teha üks neist.
OK?
Nii et ma lihtsalt ütlen, Curl.
Nii see läheb võtab natuke aega, kuid loodetavasti varsti see lõpeb ja
see välja printida, et 45. Fibonacci number.
>> Publik: [kuuldamatu].
>> KEVIN Schmid: see peaks saad teha päris kiiresti.
Nii et see peaks võtma 5-6 sekundit.
Ma ei tea, see on lihtsalt V8 on super kiiresti, kuid igal juhul on see
lühike ülevaade ja sihilikult maitsetu ja mitte-triviaalne
arvutusvõimsus.
Nii et pärast mõnda aega, see ei saa sellest aru.
>> Aga nüüd, kui ma tean, et sama liiki eksperimendi enne, kui ma saan teha
kaks taotlust samal ajal?
Nii et siin ma lähen lokke edasi et aadress, ja ma lähen,
teha teise Curl.
Ja pidage meeles, kui me tegime seda magada server, kui me põhimõtteliselt oli see
viie sekundi jooksul, siis päris palju mõlemad tulid tagasi õigus
umbes samal ajal.
Nii et see ei olnud eriti sidunud.
>> Aga proovime nüüd.
OK, nii et me saime kaks protsessi.
Jäta need on protsessi IDd.
See saab olema vähe piinlik, kui me varisemine.
Teeme lihtsalt siia jääda ja oodata.
>> Nii et üks neist peaks tulema tagasi pärast nagu -
OK, nii et üks tuli tagasi.
Aga miks ei ole teise üks tagasi tulla lihtsalt veel?
Yep?
>> Publik: server ei saa midagi teha kuigi see arvuti nii suur number.
>> KEVIN Schmid: Õigus.
Seega vastus oli lihtsalt, et server tõesti ei saa midagi teha, kui
see on arvuti, et Fibonacci number.
Nüüd ma lihtsalt sain kahte asja tagasi.
Aga ma arvan, lihtsalt mõelda kood veidi rohkem, kuidas see töötab
ja kõik.
>> Nii et see funktsioon siin on kood, Ma ütlesin seda server käivitada, kui see
saab uue sissetuleva taotluse.
Nii see lihtsalt läheb jookseb läbi selle kogu koodi ja siis ta läheb minema
Tagasi ürituse silmus ja seejärel jätkata kontrollib uusi sündmusi.
Ühesõnaga, mida oleme toimub on server on
kuulates uusi asju.
Esimene inimene, kes küsib, mida 45 on.
Me kasutasime seda koodi arvutada seda.
See kood võtab umbes viis kuni kuue sekundi joosta.
Siis läheme tagasi sündmuse loop ja uute taotluste.
>> Nii et see on näide sellest, kuidas, kui sa on asju, mis on nn arvutama
seotud, või kasutan palju arvutilingvistika, mitte võimu, vaid nagu on
arvutusintensiivseid -
Ma arvan, et üks asi, mida öelda, on see, et see funktsioon teeb täiesti,
enamasti, üsna kasulik töö paremale.
Kogu aeg, et callback funktsiooni töötamise ajal, see oli päris
palju kulutavad suurema osa oma ajast lihtsalt computing et nda Fibonacci number.
>> Aga meil oli ainult üks niit tegeleda.
Apache mudel, kui kaks inimest esitas taotluse saada luiskama 45, me
oleks kaks eri teemad.
Ja siis operatsioonisüsteemi töö oleks olnud, või kasutaja tasemel
kood, mis haldab niidid, poleks olnud viil, et üles
CPU või isegi kui teil on olnud mitme protsessoriga, levitada neid ühtlaselt kogu protsessoriga
et nad olid mõlemad viimistlus vähem samal ajal.
>> Nii lihtsalt, et näidata, kuidas me saame sorteerida ning - ja see ei ole kokku täiuslik
lahendus, kuid omamoodi kuidas saame tee siia tagasi tulla ja teha
natuke parem.
Niisiis, mida ma olen siin on programm nimega Luiskama C. Ja see põhiliselt kasutab
veel üks sõlm moodulit nimetatakse Lapse Moodul.
Nii et ma olen lisatud, et tipus lahke ja nagu ma teeksin nael hulka
laps process.h või midagi.
Nüüd on sellele CP muutuja kus on kõik minu funktsionaalsust.
>> Nüüd, mida ma teen selle vastus käitleja Ma töötab selle programmi
dot kärpida luiskama 45.
Niisiis, mida ma olen teinud - ja ma lihtsalt välja astuma selle programmi
natuke -
on mul kirjutatud C programm, mis põhimõtteliselt arvutab
nda Fibonacci number.
Nii et siin on ainult programm, olen kirjutanud C, mis arvutab selle.
Ma ei kompileerida ja võin joosta seda käsurida.
Ja see saab arvutada 45. Fibonacci number.
>> Nii märkate see lihtsalt võtab päris palju nii kaua.
Ma ilmselt oleks võinud kasutada kriips 03 optimeerida või midagi sellist,
aga ma tegin nagu korrapärane kompilaatori sätted.
Ja ta prindib.
>> Aga nüüd, mida ma omamoodi teen?
Oh vabandust, vale faili.
Nii ma seda sama kraami header kui enne.
Siis ma seda cp.exec.
Mis siis, et see saab teha, on see toimub programmi käivitada.
Aga kuidas see toimib on see, et see ei kavatse ootama
et programmi lõpuni.
See lihtsalt põhimõtteliselt ütleb programmi käivitamiseks.
Nii et põhimõtteliselt kirjuta seda arvesse käsureale liiki.
>> Ja siis, kui sa oled teinud käivita see funktsioon.
Nüüd me sellist saada seda kogu taastatud asja
nagu me ei oodanud.
Kas sellist mõtet?
Yep?
>> Publik: [kuuldamatu]?
>> KEVIN Schmid: Nii see tegelikult avada uue protsess seda teha.
Nii et see on tegelikult mõnes mõttes, kurja, ei super paha, kuid see on
oluline märkida, et see on selline läheb tagasi, ühelt poolt Apache
mudel, kus me niidid ja protsesside iga taotluse või
protsesside iga taotluse.
Nii et see on omamoodi analoogne millises Apache teeb.
Mõnel juhul on see lihtsalt kasutada uute niit, mis on veidi rohkem valgust
kaal kui protsess, kuid Apache võiks lõpuks hargnevate uus protsess
mis on selline, mida me teeme siin kaudselt, tehes dot kaldkriipsuga luiskama 45.
>> Ja siis sel juhul me sellist tekkida Samal kulud protsesse.
Nii et see on lihtsalt üks asi, mida sa teha saad.
Aga lihtsalt näidata selline jooksmine.
Ja see jutt on lihtsalt tõesti suunatud esitades Sellised programmid nagu
võimalus näidata erinevaid vaatenurki kuidas kavandada servereid niimoodi.
Nii see käib, ja siis nüüd kui ma see uuesti, sain kaks protsessi IDd.
>> Lähme räägime asjad meelde.
Nii teate, et nad on järk-järgult.
See on lahe.
Sest see oli 27.122 enne.
Aga teate nüüd, nad tulid tagasi umbes sama aeg.
>> Ja nüüd, hea küsimus küsida Miks see nii on, kelle töö
oli see nüüd omamoodi teha neid asju omamoodi mängida õiglane iga
teised on need kaks juhtumeid dot kaldkriipsuga luiskama 45 et ma jooksin
või et sõlm jooksis?
Kes omamoodi muudab õiglane, et nad mõlemad saada omamoodi tasakaalustada tööaeg?
>> Publik: [kuuldamatu].
>> KEVIN Schmid: Jah.
Ühesõnaga, kui ma dot kaldkriipsuga luiskama 45 või midagi sellist, nüüd on
objekti kuni operatsioonisüsteemi käepide runtime nende programmide.
Ja nüüd ta saab ajastada neid erinevatel protsessoriga või see
saab ajastada neid.
Seda saab viilutada aeg, et üks CPU läheb või et nad saavad
sõitma ühe protsessori.
Nii et see idee, et.
Kas see mõttekas kõik?
Nüüd Sõlme ei ole tegelikult mängib osa jagamisel nende ülesannete täitmisel.
OK.
>> Nii et peaaegu ta näiteid.
Tahtsin näidata, veel üks asi sest palju see on siiani olnud
mitte täiesti super praktiline teatud juhtudel.
Ma kujutan ette, tulen koju pärast seda rääkida ja midagi ja öelda, nagu,
noh, ma selline välja sain, et rääkida, et Võin teha Fibonacci server
minu lõplik projekt.
Nii et siin on justkui üks näide mis loodetavasti saab -
võib-olla mitte, aga võib-olla - veidi rohkem omamoodi seotud lõpliku projekti ja
mõtlemine asjad niimoodi.
>> Nii et see on chat.js.
Nii et see on selline nagu mõned proovi serveripoolne kood, mida võiks kasutada, et
luua väike chat server nagu olete näinud
Facebook Chat või mis iganes.
Nii et ma ei ütle, et see on nagu Facebook Vestlus, kuid see on selline
nagu hea - võib-olla ei ole hea, kuid võib-olla hea - lähtepunkt chat
server oma veebilehel lõpliku projekti.
Seega vaatame, mida ta teeb.
>> Nii et me saame selle eriline asi tipus, see var SIO
võrdub nõuavad Socket.IO.
Nii et see on teine ​​asi, et see ei tegelikult tulevad komplekteeritud
Sõlme kuid võite installida.
See sõlm moodul.
Nii et see on nagu mõned laiendamine sõlme.
>> SocketIO on tegelikult väga omamoodi lahe.
See on abstraktsioon, mis põhimõtteliselt mida see on, on see võimaldab teil
on see vool side vahel web
brauser ja veebiserver.
Nii et enamasti seni oleme olnud need väga kiire üks sekund või kaks
teine ​​suhtlemise web brauser ja veebiserver.
Nii et see on põhimõtteliselt minna google.com, saada kraami, saatke see tagasi, ja siis
me oleme valmis.
Me ei räägi enam, kuni kasutaja liigid midagi muud.
>> Aga mida Socket.IO jms liiki asju - ja SocketIO on tegelikult üks
asjad, mis on ehitatud nii WebSocket mis on omamoodi saadaval
osana HTML5 -
mis võimaldab teil on see pidev dialoog.
Ja see on väga kasulik chat server selline asi, sest see on
selline nagu pidev dialoog mõnes mõttes, sest kui sa oled jututoas
kellegagi, saate nüüd lihtsalt saata sõnumi alla toru ja seejärel
server saab saata sõnumi alla toru teisele isikule oled
vestlemas.
Ja siis võib olla selle vahetada niimoodi.
>> Nii et omamoodi mida SocketIO on hea.
Põhjusel, et SocketIO kasutab WebSockets üks asi on see, et
Lisaks lihtsalt vana WebSockets, Samuti ei teatud trikke põhiliselt
muudavad brauser ühilduvad.
Nii brausereid nagu Internet Explorer Kahjuks ei toeta WebSockets
õigus karbist.
Nii ta kasutab mõni muu lahe puhas asjad Adobe Flash, mis võimaldab
teil on rist brauseri tugi.
Nii et see on tõesti kasulik.
>> Ja tegelikult, ma tean, et ma olen selline töötab aeg siin, kuid CS50
Arutle, kas te olete kunagi näinud midagi nagu, ma ei tea, tühjaks, ja nii on
vastates postitus või midagi niimoodi, et funktsioon?
See SocketIO.
Nii et kui keegi hakkab kirjutama arutada kasti teha vastus või
midagi, kuid teie brauser ei mis kutsutud SocketIO kiirgab mingi
sündmus, mis ütleb, et keegi vastates sellele ametikohale.
>> Siis server ütleb, OK, Mida ma pean tegema?
Noh nüüd ma pean need teised poisid kes on CS50 Arutle vaadates
selles pärast, et keegi vastates.
Nii et omamoodi mida SocketIO on hea, seda jätkuvat laadi
oja dialoogi.
OK.
>> Niisiis, mida ma olen siin - ja me oleme lihtsalt kavatse ignoreerida ühendused massiivi
natuke aega -
mida ma teen on ma veel kuulata.
Nii see on lihtsalt viis, kuidas Socket.IO on öeldes kuulame selle port.
Ja siis ma teen seda ühendust.
Nii et lihtsalt põhimõtteliselt Socket IO viis öelda, kui oleme saanud
ühendus, ma tahan, et sa käivitada koodi.
>> Ja teate, mis selle asemel, rec ja res läbinud seal mul Socket.
Ja see Socket idee on põhimõtteliselt see asi, mida saab kirjutada ja lugeda
sellest on kasutaja Sõnumite võimalik.
Ja kirjad, mida saadaks ei lähe läbi, et pesa.
Kas see on mõtet?
Nii et see on see jätkuvalt asi.
>> Niisiis, mida ma teha, on Kutsun Socket.emit.
Ja paisata võtab päris palju kaks argumenti.
Esimene argument on string lihtsalt esindavad tüüpi
asi, mida sa kiirgavad.
Nii sel juhul, ma olen kasutus see string uus sõnum.
Ja see on lihtsalt põhimõtteliselt öelda, et tüüpi see asi, mida ma olen
saatmine on uus sõnum.
Nii saate kuulata teatud tüüpi nagu uus sõnum või mis iganes
abil täpiga.
>> Nii ühendus ja kasutaja sinna saata, kui te vaatate, kui me nimetame täpp,
need on ka teisi stringe, mis esindavad tüüpi kasutaja sõnumeid.
Nii et see on põhimõtteliselt saab olla see emit üks neist sõnumi tüüpi ning
siis midagi vastuseks üks neist sõnumi tüübi
>> Nii et ma olen kiirgavad seda uut sõnumit.
Me ignoreerida connections.push teine.
Aga siis ma ütlen, Socket.on kasutaja saadetud.
Nüüd see on nagu siis, kui kasutaja saadab mulle sõnumi, ma tahan
käivitada see kood.
Ja teate, et anonüümne funktsioon võtab selle muutuja
nimetatakse andmeid, mis on põhiliselt läheb on kasutaja sõnumit.
>> Nüüd lähme jutt umbes ühendused massiivi.
Nii et see on mõeldud vestlus kliendiga kus põhimõtteliselt kõik on kuidagi sisse
Samal jututuba.
Ühesõnaga, mida me peame hoidma ümber on mingi massiivi, et põhimõtteliselt
esindab kõiki inimesi jututoas sisse Mõnes mõttes, kui see on mõistlik.
Eks ole?
Sest meil on vaja teada, kes need mehed on, et saaksime saata neile sõnumeid
et teised inimesed Kirjuta meile.
>> Niisiis, mida see kood teeb, kui kasutaja saadab sõnumi - see tüüp
sündmus -
me kasutada seda koodi.
Ja mida me teeme, on meil jookseb läbi selle massiiv, et oleme kutsutud ühendused.
Ja päris palju iga ühendus välja arvatud see, mis on meie oma, see on
mida see kood ütleb, saadame uue sõnumi, et kinnitada sõnumi
teavet.
>> Nii et kui te märkate siin, mida ma tegin, kui kasutaja tegelikult teeb uue
ühendus on mul lisatud koos JavaScript.push meetod on see
põhimõtteliselt lihtsalt öeldes nagu lisada et Socket kui väärtuse
Meie ühendused massiivi.
Nüüd, kui see kood töötab, siis on see Kirjuta asju nende konkreetsete
ühendusi.
Nii et see võib olla hea lähtepunkt tegemise chat server
või midagi sarnast.
>> Ja selline lahe asi on see, et koodi, mis sa näed siin nagu on ja
kiirgama ja asju, mis on sama objekti JavaScript kood, mida oleks
kirjutada brauser suhelda with the server.
Nii et miks SocketIO on selline puhas ja kasulikud nii.
>> Oh ja veel üks asi, reaalne kiire.
Oli CS50 lõplik projekt mullu et põhimõtteliselt rakendada chat
server Node.js.
Ma arvan, et see on Harvardchats.org aga ma ei ole -
OK.
Ma ei tea, mida URL on, kuid Võin saata see välja hiljem.
Aga see on selline lahe mis saate teha Node.js.
>> Nii et ma loodan, et üldiselt kutid on heas mõttes mida Node.js kasulik
ja kuidas sa võiksid olla kohaldada oma lõpliku projekti.
Ma saadan mõned rohkem vahendid koos selle.
Ja aitäh, et tulite.
Aitäh.
>> [APLAUS]