>> KEVIN SCHMID: Sveiki visi.
Sveiki atvykę į CS50 seminare ant Node.js.
Mano vardas Kevinas.
Aš CS50 TF.
Ir aš tikiu, tarsi tikrai malonu apie šio seminaro.
Manau Node.js yra labai kietas.
Tikiuosi, kad šis seminaras gali būti naudojamas kaip gera, manau, tramplinas
kai kurie iš jūsų galutinius projektus, jei jus domina naudojant
kažkas panašaus Node.js.
>> Mes tarsi pradėti seminarą išjungti tik kalbame apie šiek tiek
rūšies fone mastelio perspektyvos Node.js, tada
mes pereiti prie kai kurių kodo pavyzdžius.
Ir aš turiu dėl svetainės kodą ir jūs galite peržvelgti kodą.
Ir po seminaro, aš rūšiuoti kalbama apie tai, kaip galite sukurti Node.js
jūsų kompiuteryje.
>> Gerai.
Taigi, galime pradėti.
Taigi, manau, aš tiesiog noriu kalbėti apie interneto serverių, tikrai, pirma.
Ir pradėti šią diskusiją, aš iš esmės turi schema, kuri iš
vadovėlis naudojama CS61, kuris iš esmės rodo sąveika
tarp kliento procesą, pavyzdžiui, jūsų interneto naršyklė ar kaip jūsų tikslas klientas ar
kažkas panašaus, kad ir web serveris.
Taigi tai tipo panašus į paveikslėlio, kurį mačiau paskaitos apie
Trečiadienis, kur iš esmės mes turime keletą klientas procesas kaip "Google Chrome".
>> Ir tada vienas žingsnis Klientas siunčia prašymą.
Taigi, kad gali būti kažkas panašaus į gerai tegul aplankyti, aš nežinau, CS50.net.
Taigi, mes skelbiame šį prašymą.
Ir ar kas nors prisimena pavadinimą protokolas, nurodantis, kaip ta
Prašymas turėtų būti struktūrizuotos?
Taip.
>> PUBLIKA: [nesigirdi].
>> KEVIN SCHMID: Būtent.
Taigi, tai kaip HTTP, tiesa?
Taigi, iš esmės, kiek specifikacija šis prašymas iš tiesų turėtų būti nustatytos
iš, nes bent dienos pabaigoje, šis prašymas yra tikrai tik norite
eilutę, kad iš esmės sako noriu tai.
Ir specifikacija už tai yra HTTP.
Štai kaip protokolą.
>> Taigi serveris gauna šis prašymas.
Taigi vaikinai įdiegta žiniatinklio serveris į CS50 prietaisu.
Tai Apache.
Ir šią savaitę, kai dirbate su problema septynis, jūs iš tikrųjų dirba
su tuo serveryje.
Taigi serveris gauna šį prašymą, ir tada jis turi tipo subraižyti savo
galvos ir pasakyti, kaip gerai, kas man daryti su tuo?
>> Taigi, remiantis tuo, kas ji nusprendžia taip padaryti, tada jai gali tekti kreiptis į kokio nors
Išteklių.
Ir, kad šaltinis gali būti daug įvairių dalykų.
Už vieną, tai gali būti tik kaip statinis HTML failą.
Taigi, tai gali būti tiesiog kaip kai kurie HTML, kad yra panašūs
Jūsų asmeninė svetainė.
Tai gali būti statinis failas kaip paveikslėlį arba kaip filmą, kad jūs turite.
Tai gali net kalbėti tam tikra duomenų bazės natūra
kaip MySQL duomenų bazė.
Taigi ji ne visada turi bendrauti su išteklių, tačiau
kai kuriais atvejais, jis gali.
>> Taigi, ką jis ruošiasi daryti Po to, kai jis ketina
siųsti atgal atsakymą.
Ir už tai atsakas taip pat nurodyti HTTP.
Taigi klientas gali gauti.
Jis gali ašara jį išskiria ir tvarkyti.
Ir tada jums tinklalapį kaip "Google" arba CS50.net arba
ką nuvyko į.
Gerai?
>> Taigi tai yra pagrindinis sąveikos kad mes ketiname būti susijusios su.
Ir mes labai daug bus sutelkiant dėmesį į šią dalį
sąveika, serveryje.
Gerai.
Cool.
Kas nors turi kokių nors klausimų iki šiol?
Gerai.
>> Taigi, kaip mes sakėme, web serveris gauna tai HTTP užklausa ir tada išduoda tai
HTTP atsakymo.
Ir kaip mes kalbėjome apie prieš, CS50 prietaisas web serveris Apache.
Taigi, kai jūs vaikinai dirbti P septynis, jūs ketinate dirbti su
Apache web serveris.
Jūs niekada tikrai veikia su Apache tiesiogiai per daug.
Jūs tarsi konfigūruoti Apache mažai kai nurodyti virtualiais kompiuteriais ar
"V" šeimininkai, ir mes susisieksime į, kad šiek tiek.
>> Bet iš esmės, Apache web serveris įsteigti dirbti su PHP natūra
iš out of the box.
Taigi, kas iš tikrųjų atsitinka, kai jūs einate į vieną iš savo svetainių, kaip, tarkim,
vietinio kompiuterio velniop index.php ar kažką, jūsų naršyklė siunčia, kad
prašymas, tada Apache sėdi ten ir skaičiai, su juo daryti.
Ir veiksmai yra įvykdyti kad kodas index.php ir
tada siųsti jį išjungti atgal.
Taigi kad.
Taigi, mes tarsi kalbėjo apie tai.
Taigi, tai gali tiesiog būti statinis failą arba paleisti kai PHP kodą ir tada klausimas
atsakas.
>> Taigi bendras klausimas, kad gali ateiti up yra gerai, kaip mes iš tikrųjų spręsti
su turintys daug vartotojų tuo pačiu metu?
Taigi, įsivaizduokite, jei buvo raštu internete serverio, jei jūs turėjote interneto serverį, kad
bandėte rašyti kažką kaip C ar kažką panašaus, kad,
Iš esmės jūs galite galvoti apie tai, kaip yra gali būti šiek tiek kodo natūra, kad
gaus prašymą, bet tada ji turi padaryti viską, šį darbą apie tai.
Jis gali turėti, pavyzdžiui, kreipkitės duomenų bazė ar kažkas panašaus.
Teisė?
Ir tai būtų padaryti, kad natūra tvarkymo ir tada
išsiuntė atgal atsakymą.
Štai kaip aukštos lygis apžvalga.
>> Bet tai ne iš karto aišku, kaip jūs gali padaryti taip, kad du žmonės ar
net 1000 žmonės galėtų dirbti su savo web serveris tuo pačiu metu.
Taigi sprendimas Apache naudoja vadinamas temas ar procesus.
Taigi, jūs galbūt girdėjote apie šie terminai anksčiau.
Tai gerai, jei turite ne, bet tiesiog manau, apie temas ar procesams būdų
operacinės sistemos ar vartotojo programa arba kažkas panašaus arba žiniatinklio serveris
rūšiuoti vykdyti keletą viskas iš karto.
Taigi, jūs galbūt girdėjote terminą kaip siūlų vykdymą.
Taigi, tai lyg jūs rūšiuoti multitasking.
>> Ir jei jūs mačiau ant dėžutės savo nešiojamas kompiuteris, ar kažkas panašaus,
daugiagysliai, ką galite padaryti, tai galite paleisti dvi skirtingas temas apie įvairias
dalys CPU, kad jie gali tikrųjų vyksta tuo pačiu metu.
Taigi, tai tikrai galingas.
Ir tai yra rūšies Apache šios problemos sprendimas.
>> Taigi ten lyg jokių klausimų Šio požiūrio nors?
Taigi, manau, I rūšies rašė juos ten.
Tačiau abu tarsi naudoti daug atminties.
Tai labai brangu sukurti trinyčio arba procesas.
>> Ir dalis argumentų yra tai, kad tik pavyzdžiui, kai jūs dirbate C programa
kaip jūsų pagrindinis ir tada, kad skambučiai kita funkcija, kuri turi
kai kamino natūra.
Taigi temas taip pat reikalauja visiškai atskiras kaminas, kuris
gali būti gana didelis.
Ir jeigu jūs galite įsivaizduoti tonų Vartotojų jūsų svetainę, jums reikės
Įvairių siūlų daug.
Štai iš kaminai daug valdyti ir prižiūrėti.
Taigi tai didelės atminties vartojimas.
>> Ir tada, ir, tarkime, jūs turite tik vienas procesorius, arba tarkim jūs turite
daugiau temų nei turite tie multicores.
Teisė?
Taigi, tarkime, jūs turėjo 10 temas ir jūs tik turėjo penkis procesorių.
Jūs tarsi turi daryti tai, ką, kur jums persijungti tarp srovės
vienas, kad veikia, nes jūs negali paleisti visus 10 vienu metu.
Ir tai vadinama kontekste jungiklis.
Ir ši sąvoka iš tikrųjų turi pora skirtinguose kontekstuose, tačiau galime tik
galvoti apie tai, kaip pereiti dviejų siūlų.
Tai gali būti gana brangus, nes Iš esmės tai, ką turite padaryti, tai jums
turi sustabdyti, ką jūs darote, išskyrus būklė Tekančio siūlų ir
tada pereiti į kažkur kitur.
>> Taigi ar visi rūšies pamatyti motyvacija, kodėl siūlai ir
procesai gali būti šiek tiek didelių gabaritų?
Ir ar turite klausimų?
Gerai.
Cool.
Kas nors turi kokių nors klausimų?
Gerai.
>> Taigi, jei mes žengiame žingsnį atgal sekundę, ten lyg
pastebėjimas, kad mes galime padaryti apie interneto programų aikštelė.
Ir tai tikrai, kad daug jų tikrai nereikia daryti, kad daug naudingos
dirbti viduje siūlus.
Taigi yra kas prasidėjo P septynis ne visi?
Taigi jūs norite gal apibūdinti kai kurios dalys?
Ar dirbote prisijungęs ar kažkas panašaus?
>> PUBLIKA: Ne
>> KEVIN SCHMID: Gerai.
Nieko tokio.
Atsiprašau.
Bet iš esmės, o P rinkinį, jūs ketiname būti padaryti iš rūšies aikštelė
užklausų į duomenų bazę kažkiek informacija iš šios duomenų bazės.
Ir tai, ką jūsų kodas bus padaryti, kas Apache procesas ar
Apache siūlai ketinate daryti o jis turi kreiptis
duomenų bazė yra tai tarsi bus sėdi ten ir jis bus
laukia duomenų bazė atsakyti.
>> Dabar, kai gali ne atrodo, kad didelis spręsti, nes duomenų bazė yra jūsų
CS50 prietaisas, tiesa?
Tačiau yra tam tikrų tinklo natūra yra latentinis, nes dabar interneto
serveris turi išduoti savo prašymą duomenų bazė bendrauti su
duomenų bazę ir tada gauti, kad informacija atgal.
Taigi, dabar kaip gerai laukti mane, aš ketina eiti gauti kažką iš
duomenų bazę ir tada ten daug laukia vyksta.
Ar tai prasminga?
>> Ir kai kurių dalykų, tai nereiškia, kad blogai.
Jei jis tiesiog turi, pavyzdžiui, kreipties atmintinė, tai nepatinka
siaubinga I / O latentinis.
Ir kai aš sakau, I / O latentinis, ką aš nuoroda į tai, kaip bet kaip rūšies
įvesties ir išvesties.
Tačiau prieiti prie diske failą, kaip jei aš norėjau būti statinis HTML
failą, kad buvo mano puslapyje arba kažkas panašaus, kad aš tipo turiu
sustoti šiek tiek skaityti tą failą nuo disko, ir tada
kad procesas laukiu.
Aš ne daro naudingą darbą.
>> Tai nėra tiesa viskas, bet tai yra bendras programas, pavyzdžiui P rinkinys
septynis ir daug paraiškų kad nesate
iš tikrųjų daro daug mąstymo.
Ir kai aš sakau mąstymą, aš turiu galvoje kaip kompiuterinės darbo.
Taigi skaičiuojamoji darbas galėtų būti kažkas kaip, tarkim, jūs norite
rašyti žiniatinklio serverio, kad tik kompiuterinės n-tasis Fibonačio skaičius.
Tai neturi skambėti kaip ypač įdomus web serveris.
Kaip aš ne tikėtis, kad svetainė turi būti šalia "Facebook", bet tai kai
tipo skaičiavimų darbą.
>> Ir jūs galite įsivaizduoti, pakeisti, kad su kitokios įdomu
skaičiuojamoji darbas.
Tarkime, jums buvo rašyti kažką apskaičiuota laipsnių
atskyrimas tarp dviejų žmonių ar kažkas panašaus.
Taigi, kad nėra įtraukti tam tikrą rūšį apskaičiavimo, tiesa?
Ir net tada, padaryti, kad jūs vis dar turite daryti laukimo aikštelė gal
turite užklausą duomenų bazę ieškoti iki kas draugauja su kas ir
kažkas panašaus.
Taigi yra, kad sąvoka natūra Kompiuterinės darbas.
Ar tai prasminga?
Ar kas nors turi kokių nors klausimų?
>> O ir manau įdėti pokalbiai serverius ten nes chat serveriai rūšies
dar vienas geras pavyzdys.
Pokalbiai serveris neturi padaryti daug mąstymo.
Jis tiesiog turi laukti, kad žmonės galėtų siųsti pranešimus ir tada, kai
jie, siųsti juos.
Gerai?
>> Taigi, tiesiog užsukite vėl, Apache ir panašios interneto serverių, pavyzdžiui, kad šakės a
daug siūlų ir procesų, kurie gali būti natūra išlaidavimas.
Taigi, manau, kad klausimas, kuris gali ateiti iš kuri mes turime turėti
daug temų ir procesus?
Ką daryti, jei mes tiesiog turėjo vieną?
>> Taigi leiskite rūšies dažų paveikslėlį ką tai turėtų atrodyti.
Taigi, galime naudoti tik vieną siūlą.
Gerai?
Taigi, įsivaizduokite tai su viena gija.
>> Sakykime, mes ne tikrai daro kad daug naudingos - ir kai aš sakau,
naudinga, aš tai skaičiuojamasis darbą -
tais keliais siūlais anksčiau.
Taigi leiskite rūšies konsoliduoti viskas į vieną siūlų.
Taigi ką daryti, jei mes turėjome vieną siūlą, kad natūra tiesiog eina aplink kilpą ir
nuolat patikrinimai padarė kažką nauja atsitikti.
Taigi, pavyzdžiui, ką nors naujo nutiko gali reikšti, aš turiu kažką atgal nuo
duomenų bazės, ar kas nors atsiuntė man naują HTTP užklausos.
Taigi tie, kurie tipo įvykių kad taip atsitiktų, tiesa?
>> Ir tada, ką aš galiu padaryti, kai tie nauji dalykų atsitikti yra toje pačioje temoje
vykdymo, ši bendra gija vykdymas, galiu paskambinti tam tikrą kodą, kad
tvarkytų tą konkretų.
Taigi, pavyzdžiui, jei aš kažką atgal iš duomenų bazės, galėčiau paleisti mano
mažas skaičiuojamoji dalis ja, kad tikrųjų tik rengia dalykas
siųsti atgal į vartotojo.
Todėl nėra, kad turi prasmę natūra?
>> Bet kas yra tikrai pasekmes tai?
Teisė?
Kadangi mes parašiau kodo to daug -
ir aš tik ketina šokti į priekį į skaidres, jei tai Gerai.
Taigi, jei jūs neprieštaraujate, aš tiesiog ketiname žengti žingsnį atgal.
Taigi šios rūšies dalykas yra vadinamas įvykis linijos.
Gerai?
Ir tai tipo pagrindinis idėja Node.js.
>> Taigi, kas Node.js tikrai daro, web serveris yra ten vienas sriegis
kad iš esmės vyksta aplink kilpą kaip while vienos rūšies nepakankamo
iš Node.js dangtis tai nuolat tikrinti, ar gausime naujų dalykų?
Ir tada jis bus rodomas tvarkytojai kad jūs sukuriate.
Bet geras klausimas yra, kaip mes galime padaryti tai atsitiks
su esamų dalykų?
>> Taigi, aš įdėti C kodo eilutę, kad čia Iš esmės atrodo, kad jis manimi atidarymo
failą, tiesa?
Aš Ji tiesiog išėjo su albumo.
Taigi turėjau atidaryti jai naują failą.
Taigi, kaip mūsų C kodas veikia -
ir aš manau, priežastis, kodėl aš pasirinkau failus buvo nes tai yra rūšies, kiek
iš I / O darbą, kurį mes padarėme per C ta prasme, kad ten įvesties ir išvesties.
Taigi mes vadiname šį kodą, kad tai daro f atidaryti.
Ir tada į kitą eilutę iš mūsų programa, dabar mes galime dirbti su f.
>> Taigi tai būtų kažkas pavyzdys tai kaip sinchroninės ar
blokuoja, nes tą pirmą eilutę ten mes laukiame, kol mes
gauti failą atidaryti.
Taigi antroje eilutėje, mes žinome, kad gali dirbti su F, o tai reiškia, kad
kad antroje eilutėje tikrai negali paleisti iki pirmos eilutės daroma.
Ar tai prasminga?
>> Taigi tai būtų blogas įdėti renginyje prižiūrėtojas.
Ir dėl šios priežasties yra ta, kad tai laukia natūra, tiesa?
Taigi tai vėl grąžina mus į tą patį.
Ir dabar mes net nebūtų naudos iš kelių siūlų
procesai, nes mes turime viena gija Node.js.
Ar tai prasminga visiems?
>> PUBLIKA: palaukti.
Taigi, kas yra pakaitalas?
>> KEVIN SCHMID: O, taip, taip.
Taigi, aš ruošiuosi gauti pakeitimo.
Gerai.
Taigi ką daryti, jei mes turėjome kažką kad atrodė taip?
Taigi ką daryti, jei aš dabar redaguoti f atidaryti mažai?
Taigi, aš einančios pats du argumentai, kaip ir anksčiau.
Aš vis dar myliu naują dainą kad ji išėjo su.
Bet aš artimųjų Trečias dalykas, kuris yra šis kintamasis vadinamas kodas.
>> Bet kas yra kodas iš tikrųjų šiame kontekste?
Tai kaip įprastas C kintamojo?
Tai funkcija, tiesa?
Ir tai gali būti šiek tiek keista, nes Aš iš tikrųjų, kaip dabar artimųjų
veikti į kitas pareigas.
>> Taigi pora dalykų, kuriuos reikia atminti apie tai.
Vienas iš jų, aš ne iš tikrųjų raginama kodas funkcija.
Taigi jūs nematote kodą liko skliaustas, teisė skliaustas.
Aš tiesiog einančios kodą.
Ir C, ką tai iš tikrųjų yra duoti man žymiklį, kad tikrasis
kodas, o tai gali paleisti jį.
Bet tiesiog galvoti apie tai, kaip jūs išlaikęs kodui veikti, kai
kad failas yra atidarytas.
>> Bet ką tai reiškia, kad dabar Likusi mano programos, kuri galėtų padaryti
kitų dalykų, gali ir toliau atlikti kitą Daiktai, o mes, tikrai ne laukti, bet
tiesiog į mūsų galvų atgal, kad kai tas failas yra atidarytas, paleisti, kad
kodas viršuje.
Ar tai prasminga?
>> Ir dabar už Node.js idėja yra ta, kad į do stuff su f kodas
dalis turėtų būti gana trumpas ir paprastas ir paprasta, o ne tikrai
labai reiklios kompiuterio resursams.
Jis gali turėti atidaryti kitą failą, bet kad taip pat turėtų būti gana greitai
nes tiesiog reikia pasakyti padaryti kitą f atidaryti ir tada skambinti šiuo kitas kodas.
>> Taigi, tiesiog, kad būtų visiškai aišku, f atidaryti, kad Naująjį Katy Perry dainą
padaryta mp3, kad vyksta gana daug nedelsiant grąžinti.
Ir tada mes galime tiesiog toliau daryti kitų dalykų, nes visi, kad dabar f
Atviras kvietimas ar yra pasakyti iš esmės pagrindinė f atviras kodas atidaryti šį failą
ir, kai baigsite atidarymo tai failą arba kai jūs gaunate jį atgal,
tada paleisti šį kodą.
Bet jis nėra iš tikrųjų paleisti šį kodą.
Ir jūs turėjote klausimą?
>> Auditorija: Jūs atrodė reiškia mažai kartų, kad pridedant skaičiavimais
intensyvus kodas tarsi sulaužyti [Nesigirdi] varoma sistema.
[Nesigirdi]?
>> KEVIN SCHMID: Tai puikus klausimas.
Taigi aš iš tikrųjų turi tai, kaip pavyzdį galima integruoti skaičiavimais
intensyvus kodas trupučiu.
Taigi, kai mes į kodo pavyzdžius, Aš būtinai traukti, kad vienas.
Ar tai gerai?
Ačiū.
>> Koks buvo jūsų vardas?
>> PUBLIKA: Aaronas.
>> KEVIN SCHMID: Aaronas pakelia labai gera vieta, yra tai, kad, jei aš turėjo
kai kompiuterio resursams kodas daryti stuff su f dalimi, likusia
mano programa negali paleisti ir negali klausytis naujų prašymų ar nieko, kol visi
kad medžiaga yra baigtas.
Taigi, jei aš rašau Mazgas kodą apskritai jei mes ką nors, kaip aš ruošiuosi
pasiūlyti vėliau, kai mes žiūrime į kodo pavyzdžius, turiu būti tikras, kad
mano kodas ne prisirišti šis renginys kilpa.
Ar tai prasminga?
Gerai.
Cool.
>> Taigi Node.js siūlo šią sistemą, Jūs galite kurti skatino šias renginį
serveriai su.
Taigi ji turi šias asinchroninių natūra ne blokuoti I / O bibliotekos, tuo tarpu
standartinės C bibliotekos, kad mes buvo dirbti su, pavyzdžiui, jei jūs tiesiog
juos naudoti tokiu pačiu būdu, kad mes naudoju juos su f atsidaro ir
Daiktai, tie, blokuoja, nes jūs iš tikrųjų turite laukti
kad failą atidaryti.
>> Bet Node.js suteikia jums, kad ir jai iš esmės suriša į "Google" V8
"JavaScript" variklis, kuris yra priežastis kad "Chrome" yra toks greitas, ne perdirbimui
"JavaScript", nes ji turi šią V8 variklį.
Taigi žinau, kad skamba kaip vienas iš tų WWDC kūrėjas konferencijos dalykas
kur jie tiesiog mesti krūva laiškas numeris dalykų procesorių
ir pasakyti, kad tai toks kietas.
Bet tai kietas, kad jie tai padarė , nes "JavaScript" -
arba gal jei nesate susipažinę su JavaScript nėra, nes mes neturėjome
kad ant jo paskaitos -
bet "JavaScript" yra aiškinama kalba.
>> Ir tai yra svarbus klausimas, taip pat.
Todėl svarbu, kad mūsų interneto serveriai turi būti greitai, tiesa?
Ir jei mes buvome tik veikia JavaScript kodas buvo interpretuojamas tik
koks senas vertėjas gali būti lėtas.
Taigi Mazgas naudos iš turintys šį super greitai V8 vertėjas.
Ir aš nežinau, jei jie pavadino jį nes V8 SLAP į kaktą
dalykas, tačiau Gerai.
>> Taigi, aš parengė keletą pavyzdžių šiuo adresu.
Po seminaro, aš tarsi vyksta kalbėti apie tai, kaip galite gauti Mazgas rinkinys
iki, bet dabar aš tiesiog tarsi nori eiti per kai kurias kodo pavyzdžius.
Taigi, jei norite laikytis kartu, visi šaltinis kodas yra prieinamas čia.
Gerai?
>> Taigi, aš paliksiu šią nuorodą iki šiek tiek.
Ir tada aš tik ketina pereiti į terminalą.
Ar visi gerai su šiuo URL?
Taigi, aš ruošiuosi perjungti mano terminalo čia.
>> Taigi čia yra kodas, kuris Turiu šiandien.
Kodėl ne mes pradėti su simpler.js failą?
Kitas dalykas yra tai, kad visa tai kodas bus parašyta
JavaScript kurį gali arba negali būti susipažinę su.
Manau pora dalykų yra tai, kad daug JavaScript kodas yra natūra
sintaksė ir struktūra yra labai panaši į C, todėl jūs galite rūšies pasiimti kaip
jūs einate kartu.
Bandžiau parašyti daug pradedant kodas tai taip, kad yra
panaši į C, kad tai šiek tiek daugiau aiškumo.
Bet kaip mes pažangą, aš būsiu parodyti kai kurie iš papildomų
savybės JavaScript, kad yra tipo kietas.
>> Bet pažvelkime į šio mėginio programa.
Manau, viskas manimi nutraukė ten.
Aš tik ketina nustatyti, kad nekilnojamojo greitai, jei tai gerai, ar ne.
Aš nežinau, kas tai ketina daryti.
Yra tai, kad šiek tiek geriau?
Ar matote var ir stuff?
Gerai.
>> Taigi, pirmoji eilutė yra tarsi JavaScript versija kintamojo
deklaracija.
Taigi tik pabrėžti, kas tai būtų atrodys C. Taigi, tai tik kaip
man sakydamas indeksas yra lygus trijų ar kažkas panašaus.
Taigi aš nenurodė tipą.
"JavaScript" tikrai turi tipus, bet tai labai dinamiškai įvedėte pobūdžio, todėl
nepateikė jokių tipo rūšies į jį.
Taigi, jis tiesiog turi var.
Štai kaip kintamąjį.
Gerai?
>> Ir aš telefonu šį kintamąjį HTTP.
Ir mano dešinėje, aš turiu išraiška, aš noriu įdėti HTTP.
Ir tai sako reikalauti HTTP.
Taigi tai yra rūšies panašus įtraukti.
Tai šiek tiek daugiau kaip galingesnis nei yra ta prasme, kad apima
tiesiog nukopijuokite ir įklijuokite antraštę failą funkcinių prototipų arba
ką su tipo apibrėžimų.
Tačiau reikalauja iš tikrųjų vyksta gauti mums kodą.
>> Taigi, jūs galite galvoti apie tai, kaip importuoti tam tikrą kodą.
Taigi kažkur Node.js modulio sistema ar kas, jie visa tai
HTTP serveris kodas todėl aš tiesiog žavingas jį mano
asmeninio naudojimo šioje programoje.
Gerai?
>> Taigi aš turiu šią funkciją kad aš parašiau.
Ir pranešimas aš neturėjau nurodyti grįžimo tipo ar tipas
argumentai dar kartą.
Taigi rūšies laisvas įvestas kad prasmės natūra.
Du argumentai, kad ji imasi, prašymas ir atsakymas.
Štai konceptualiai lyg susipažinęs iš paveikslėlio kad mes turėjome
ekrane prieš, nes mes šį prašymą, kad mes
turi iš vartotojo.
Ir tada mes turime imtis veiksmų, kad galime rašyti dalykus.
>> Taigi, pirmoji eilutė tai daro res.writeHead 200 ir tai
Turinio tipas tekstas paprastas.
Taigi leiskite gabalas tai be mažai.
Taigi galime tik sutelkti dėmesį į res.write šiek tiek.
Taigi rašyti iš esmės, ir rašymo galvutės, yra tik būdų, kaip rūšiuoti surašyti
viskas į atsaką.
Gerai?
Taigi rašyti galvą, jei kas prisimena iš HTTP paskaitoje jūs vaikinai
prisiminti antraštes ne viršuje HTTP dalykas?
Tad kodėl gi ne aš tiesiog demo antraštes nekilnojamojo greitai.
Ar tai naudinga?
Arba mes turėtume tiesiog tarsi -
Gerai.
Tikrai.
>> Taigi, jei jūsų naršyklė eina į google.com ar kažkas panašaus,
ten tikrai šiek tiek daugiau -
tai kaip paslaptis -
ten lyg šiek tiek daugiau informacijos , kuris ateina per vamzdį ne tik
tiek paieškos ir viskas.
Taigi, norint parodyti jums tai, aš ruošiuosi naudoti programą "Curl.
Gerai?
Taigi, tai yra kažkas, kad jūs galite paleisti Mac OSX komandinės eilutės arba
prietaisą ar whatever.
Ir jeigu aš Curl HTTP google.com, Aš ruošiuosi pamatyti HTML.
Ir tai, tiesą sakant, tik HTML, kad tarsi pasakys
nukreipti į www jei naršyklė nėra automatiškai tvarkyti
peradresavimas.
>> Taigi tai yra tik HTML, bet aš ruošiuosi įtraukti į Curl šį brūkšnelį aš vėliava.
Gerai?
Ir tai ketina parodyti man antraštes.
Taigi tai taip pat informaciją, kuri ateina per kai gausiu šį atsakymą.
Gerai?
>> Taigi viršuje matote šį HTTP 301 visam laikui.
Ir tai yra rūšies svarbu, nes tai reiškia būsenos kodą.
Taigi 301 čia padėtis kodas, kuris iš esmės yra tik sveikasis skaičius
kad naršyklei ar kas manimi skaityti tai, jei jūs apsimesti, kad
jūs naršyklė ir matote šį, iš esmės dabar jei peržvelgsite
kad ir pamatysite 301, žinote, turiu daryti kažką ypatingo remiantis
301, ar kažkas ypatingo atsitiko remiantis 301.
Taigi jis sako persikėlė visam laikui.
>> Ir tada, iš esmės, mes turime pagrindinių vertės porų krūva.
Taigi, mes turime vietą yra www.google.com.
Ir tada tipo visa tai kitų dalykų, bet iš esmės, kas vieta
posakis yra nauja vieta yra šiuo adresu: www.google.com.
Taigi dabar, jei jūs einate į google.com, jums rūšiuoti pamatyti naršyklės rūšies akimirksniu
už antrą ir tada nukreipti atgal į www.google.com.
Taigi atsakymai gali būti šie pavadinimai.
>> Ir pora dalykų atkreipti dėmesį.
Taigi galime sakyti, kad mes iš tikrųjų buvo sėkmingas aplankyti tinklalapį.
Taigi leiskite man eiti -
kas gera svetainė?
Aš neblogai mąstymo geras svetainės vietoje.
>> PUBLIKA: Wikipedia.
>> KEVIN SCHMID: Gerai.
Darom Wikipedia.
Taigi čia aš persikėlė.
O laukti.
Aš buvau?
Taip, aš buvau.
Gerai.
Taigi aš turiu daryti www.
Taigi, aš ruošiuosi daryti www.
Ir, kaip matote, čia viskas HTML kad naršyklė būtų apdoroti
"Wikipedia.
>> Bet jei aš judame čia, ką matote viršuje -
Oho, ten yra daug HTML Vikipedijoje -
tačiau tai, ką matau, viršuje čia šis 200 kodas statuso kitaip nei
301, kad aš mačiau anksčiau.
Ir pastebėsite, kad jis yra gražus draugiškas Gerai šalia jos.
Taigi tai yra kaip geros būsenos kodą.
>> Ar tai 200 numeris atrodo pažįstamas?
Taip, nes kai aš simpler.js, Aš parašiau 200 ten.
Taigi tai iš esmės sakydamas pasakyti naršyklė ar kas bando gauti
tai, kad jie buvo sėkmingi.
Arba, kad kaip mes natūra buvo sėkmingai per.
>> Ir dar šis specialią sintaksę natūra Javascript deklaravimo
žemėlapis iš šių mygtukų, pavyzdžiui, turinio tipą ir šie kaip teksto lygumoje vertės.
Taigi, jei jums pažvelgti į atsaką, kad mes grįžo iš Vikipedijos, prieš -
Aš ruošiuosi pabandyti pereiti iki šiek tiek greičiau -
jūs turite šiuos raktus, pavyzdžiui, serverio ir šie dydžiai Apache.
Taigi, jūs turite raktus ir reikšmes.
Ir jūs galite tai nurodyti Mazgas, ką siųsti atgal.
>> Taigi, iš tikrųjų tai yra natūra, kai būdų, ir tam tikrais būdais, tai ne
tikrai, bet tai šiek tiek žemesnio lygio nei PHP kodo, kad jums gali būti
raštu P septynis nes PHP Apache tarsi rūpintis kai
šių dalykų už jus.
PHP programavimo kalba, galite pakeisti numatytuosius elgesys rašyti savo antraštes.
Tačiau šio tikslais, mes parašyti iš mūsų pačių antraštes.
>> Taigi ar tai linija prasmės visi, rašymo galvutės linija?
Gerai.
Nuostabus.
>> Taigi, ką aš padaryti, tai aš galų atsakymą sakydamas hello world.
Gerai.
Bet tai tik funkcija vadinamas prašymų tvarkytoju.
Taigi, dabar aš iš tikrųjų turi natūra padaryti kažkas su šia funkcija, tiesa?
>> Taigi čia, ką aš padaryti, tai ten yra šis linija, kuri daro var serverio lygu
HTTP.create serverį, ir tada aš praeiti prašymo nagrinėjimą.
Taigi tai yra tipo mazgas būdas sukurti serverį.
Ir pastebėsite, kad aš artimųjų prašyme prižiūrėtojas.
Taigi tai pasakoja createServer funkcija, kad aš noriu, kad man
serverio, o kai šis serveris gauna atsakas, man reikia tai vadiname
prašyti funkcija rankenos.
Gerai?
>> Taigi, kad linija gana daug baigiasi iš karto.
Taigi var serverio linija padaryta teisė po to, kai tai padaryti gana daug.
Aš turiu galvoje, jis turi parengti kai vidaus valstybė žinoti, kad jūs turite
skambinti, kad prašymas prižiūrėtojas funkciją, tačiau jis nesiruošia sėdėti ten ir
tarkim turi vartotojui siunčiama man prašymas dar?
Ar vartotojas atsiuntė man prašymą dar?
Taigi jis neblokuoja.
Gerai?
>> Taigi, kas tai darys tai iš esmės dabar saugo rodyklė į šio kodekso,
šis prašymas prižiūrėtojas funkcija, ir tada bus paleisti šį kodą, kai kas nors
pateikia prašymą.
Ir tada mes server.listen.
>> 1337 yra gana savavališkas.
Aš neturėjo ypatingos priežasties skinti ta, skaičių.
Tai buvo visiškai atsitiktinai.
Bet tai tik nurodo uostą.
Taigi, dauguma interneto serverių pamatysite, kad jie naudoti uosto 80, nes tai tipo
panašaus konvencijos.
Taigi, jei aš einu į kažką panašaus, Aš nežinau, Wikipedia.org,
ir aš įdėti dvitaškis 8 -
Oh wow, jūs negalite matyti.
Aš atsiprašau.
Bet jei aš Wikipedia -
Aš parašiau jį čia tik todėl, kad tai aišku, fotoaparatą.
Bet jei aš į naršyklę į tai Dvitaškis 80, kuris nurodo eiti į
Wikipedia.org uoste 80.
Taigi, tai, pavyzdžiui, kaip Jungtinės Valstijos turi Daug uostų, pavyzdžiui, kur galima vežti
viskas iki rūšies.
Taigi, tai kaip eiti į tai ypač vieta šiame serveryje.
Gerai.
>> Taigi aš tiesiog pasirinko 1337.
Yra daugybė skaičių kad jūs galite pasirinkti.
Tai buvo ne visiškai ypatinga.
>> Bet ką aš ruošiuosi daryti dabar yra aš ruošiuosi paleisti mazgas.
Leiskite man iš tikrųjų įvesti, kad pora linijos žemyn taip, kad jūs galite matyti jį.
Aš ruošiuosi padaryti mazgas, ir aš ketina paleisti simpler.js.
Ir mes kalbame apie tai, kaip gauti Mazgas įsteigtas truputį.
Bet dabar tai tik paleisti serverį.
>> Taigi vienas dalykas, mes galime pabandyti, kuri negali būti, kad įdomu, tai mes iš tiesų gali
pabandykite pasiekti jį Curl.
Taigi aš galiu padaryti, Curl, ir mano mašina yra vietinio kompiuterio.
Taip pat matysite tai parašyta kaip tai kartais.
Vietinio kompiuterio ir 127.0.0.1 yra natūra panašaus savo namų kompiuterį.
Taigi, tai lyg kalbėtis su savo kompiuterio.
Gerai.
>> Ir tada galiu pasakyti, 1337.
Taigi, jei aš paleisti šią kodo eilutę, ji sako hello world.
Ir jei aš norėjau matyti, kad stuff, kad turėjo Turinio tipas tekstas paprastas arba
kas, galėčiau net įdėti šią nuorodą čia.
Ir pastebėsite, kad ji sako, Gerai.
Ir aš turiu teksto lyguma.
Ir ten tipo visa tai kita stuff, kad Mazgas bus įtraukti į
ten man.
Tai nėra itin svarbus.
>> Aš turiu galvoje, yra keletas techninių natūra AT aspektų, kurie yra natūra
cool kalbėti, bet tiesiog parodyti jūs, aš taip pat turi teisę
pakeisti šių aplink.
Taigi, galiu tik pridėti krūva stuff like that.
Ir tai dabar, jei aš ieškoti mano produkcija, tai bus kad.
Taigi šios antraštės reiškia tam tikrus dalykus naršyklėse ir panašių dalykų.
>> Ir antraštes iš esmės gali pasakyti naršyklę kaip reaguoti į kažką.
Jeigu jūs kada nors girdėjote apie slapukus ir anksčiau, arba, jei jūs kada nors buvo Sapīcis
per tinklalapį, kuriame slapukus arba įjungtas slapukų bloko ar
kažkas panašaus.
Jūs iš tikrųjų galite nustatyti slapukus Šiose antraštėse.
Taigi jie pasakys naršyklę kaip elgesys kai kuriais atvejais.
Gerai.
>> Taigi, tai buvo simpler.js.
Ar kas nors turi kokių nors klausimų, tą kodo failą?
Gerai.
Cool.
>> Taigi galime pašalinti r nuo ir pažvelgti simple.js.
Taigi, tai yra gana daug ta pati programa.
Aš tiesiog parašiau šiek tiek kitaip nes norėjau rūšiuoti kaip išryškinti
kai JavaScript funkcijų.
>> Taigi pastebime, kad prašymas prižiūrėtojas funkcija visiškai išnyko.
O yep, ar turite klausimų?
>> Auditorija: Taip, argumentai kad perduodamos kad
funkcija, kas jie?
>> KEVIN SCHMID: Taigi tie, kurie JavaScript objektai.
Į Node.js dokumentų, jis iš esmės sako, kokie metodai yra
galima ant jų.
Mes tiesiog atsitikti, kad prieiga prie šis metodas vadinamas rašymo galvutės ir pabaiga
ir stuff like that.
Bet yra visa krūva daugiau metodų.
>> Ir, pavyzdžiui, kaip vienas iš jų ypač rec, tai galite padaryti
kažkas panašaus rec.method kuris bus pasakyti, ar tai HTTP GET arba
HTTP POST užklausų ir dalykų, pavyzdžiui, kad.
Taigi, čia yra visi skirtingų rūšių savybės, bet jie abu
JavaScript objektai, ir jie tiesiog turi funkcijos susietos su jais, kad jums
galite parašyti ką.
Gerai?
>> Taigi pastebėti, kad prašymą prižiūrėtojas yra visiškai dingo.
Bet kodas, kad aš prašyme prižiūrėtojas vis dar egzistuoja.
Aš vis dar turiu šį res.writeHead ir aš vis dar turite šią res.end.
O kas tai yra iš visų pavyzdys JavaScript šis idėja
anoniminis funkcija.
ir anonimiška yra tarsi montavimo vardą už jį, nes jis tiesiog nėra
turėti pavadinimą.
Nėra funkcija prašymas prižiūrėtojas ten.
>> Neturi pavadinimo, tačiau jis vis dar yra atsižvelgiant argumentas.
Taigi, aš vis dar turiu rec ir res.
Ir aš vis dar turiu kodą.
Tai puikiai baudą JavaScript kodas.
Taigi aš galiu deklaruoti funkciją be aiškiai suteikiant jam pavadinimą.
Tai šiek tiek klaidina ne pirmas.
Yra keletas, pavyzdžiui, naudingų dalykų kad jūs galite padaryti su
šios anoniminės funkcijos.
Ar kas nors turi kokių nors klausimų apie tai, ar tai gerai tik, dabar,
tarsi tik pripažinti, kad ji bus daryti tą patį?
Taip?
>> Auditorija: Ar veikia pirmoji klasė JavaScript?
>> KEVIN SCHMID: Pirmiausia jie yra klasė JavaScript.
Ir tiesiog žinau, kad šios sąvokos artimųjų anonimiškai funkcijas kaip
tai taikoma JavaScript, kad jūs gali parašyti savo galutinį projektą
interneto naršyklė taip pat.
Taigi, pavyzdžiui, į "JavaScript" Jūsų naršyklė, jis taip pat šiek tiek renginys
varoma ta prasme, kad tai, ką jūs turėti kai vartotojas paspaudžia šį
mygtuką, aš noriu paleisti šį kodą.
>> Taigi, tai tos pačios rūšies idėjų kliento pusėje, kai pelės paspaudimu arba jie
pele per tam tikrą įvaizdį apie savo interneto puslapį, paleisti šį kodą.
Tai gali būti taikoma serverių.
Štai lyg įdomus Priežastis, kodėl "JavaScript" yra tikrai
vienas arba kai kurie žmonės mano, kad tai tinka kalba šios rūšies
Renginys vairuotojas serverį, nes jūs turite šios anoniminės funkcijos.
Turite idėja tai asinchroninis kodas.
Gerai.
Kas nors turi kokių nors klausimų?
>> Gerai.
Taigi, tai buvo simple.js.
Taigi pažvelkime į dar vieną ar pora daugiau.
Taigi tai yra sleep.js.
Taigi yra kas nors susipažinę su C funkcija miego?
Nuo Gal iš ankstesnių paskaitų ar kažkas panašaus?
>> Taigi iš esmės jūs galite praeiti manau skaičius sekundžių arba jei jūs naudojate U
miegoti milisekundžių skaičių arba nanosekundžių.
Ir iš esmės programa tiesiog sustabdyti veikia tam tikrą sumą.
Teisė?
Ir tada jis bus pabusti galiausiai ir tada jis bus tiesiog toliau veikia
programa.
>> Taigi šis serveris tarsi suteikia miega įspūdį.
Taigi pastebime, kad mes turime tą patį res.writeHead 200 su galva kaip
anksčiau, bet tada mes skambina tai funkcija vadinama nustatyti skirtojo laiko.
Nustatyti skirtojo laiko taip pat yra Jūsų interneto naršyklė "Google Chrome"
ar "Safari" ar whatever.
Ir iš esmės tai, ką jis daro čia jis manimi atsižvelgiant į funkciją.
Pastebėkite, vėl, tai anoniminis funkcija.
Taigi, tai tipo kietas, nes mes naudojant anoniminę funkciją
anoniminis funkcija, kuri gali būti šiek tiek keista.
>> Bet tai atsižvelgiant, kad funkcija, kuri yra iš esmės sako - ir būdas tai
darbai yra 5000 milisekundžių, aš noriu jums vykdyti šią funkciją,
tiesiog baigiasi atsakas ir rašo ei.
Taigi tai suteikia įspūdį lyg miega, bet būdas tai iš tikrųjų
veikia tai mes paleisti per ši linija labai greitai.
Mes tik rašyti kažką.
Ir tada mes taip pat eina per ši linija labai greitai.
Taigi mes ne iš tikrųjų vyksta palaukti penkias sekundes.
Mes tiesiog ketinate paleisti šis kodas akimirksniu.
>> Ir tada ten vėl yra, tai tiek Renginys kilpa, kad dabar yra tai, ką
registrai, kurie iš esmės yra tik nuolat vyksta aplink ratu
ir žiūri į vieną parą siūlai ir sakoma, turi penkias sekundes
praėjo dar?
Ir tada, kai jis mato, kad antrasis rankų perėjo kaip penkias sekundes ar
kas, tada jis atsibunda ir sako: oi, ką aš turiu daryti?
O aš turiu paleisti šį kodą.
Ir tada jis ketina paleisti res.end ei.
>> Taigi dar kartą, mes niekada laukia čia.
Taigi, tai nereiškia, kad šis kodas viduje ši funkcija truks penkias
sekundžių paleisti.
Šis kodas bus paleisti gana daug akimirksniu, bent jau lyginant su
penkių sekundžių, kad mes kalbame apie anksčiau anksčiau.
>> Taigi tiesiog rodo, kad tai veiksmų, Galiu padaryti Node.sleep.js.
Ir aš bałagan kažką?
Galbūt.
Atsiprašau.
Pažiūrėkime, ką mes galime padaryti, kad išspręsti šią problemą.
Gerai.
Taigi tikrai pravers Node.js.
Aš tik juokauju.
Gerai.
Tik vienas sek.
Gerai.
Aš žinau, kas tai yra.
>> Taigi klausimas yra tai, kad mano kiti skirtuką čia buvau veikia mazgas jau
tas pats adresas, 1337.
Taigi klaida, kad tai retai, jei pažvelgtume į jį nekilnojamojo atidžiai, yra adresas
naudoti, EADDRINUSE.
Taigi, aš jau naudojau 1337 čia.
Taigi, jei aš išjungti šią funkciją, ir tada aš dabar pabandykite paleisti tai, tikiuosi, viskas
bus gerai.
Gerai.
Taigi, jūs galite turėti tik vienas dalykas rūšiuoti klausytis dėl uosto iškart.
Kitas sprendimas būtų buvę man tiesiog redaguoti šią programą ir padaryti
tai būtų kaip 1338 ar kažką panašaus.
>> Bet dabar miegas veikia.
Tad faktiškai jį išbandyti naršyklė šiuo metu, nes tai
tiek unexciting pamatyti tai terminale.
Taigi aš tik ketina eiti į, kad 127 adresas vėl 1337.
Ir jeigu jūs galite matyti jį -
Aš nežinau, jei galite - bet mano naršyklės vartojate labai, labai ilgas
laikas pakrauti ar kaip penkias sekundes.
>> Ir po to, jis pagaliau baigėsi atsakymą.
Ir tu negali matyti, nes dalykas persikėlė per mažai, bet jei aš
tai šiek tiek mažesnis, jūs matote ji sako ei.
Taigi aš Ei, bet po penkių sekundžių.
Ir ji gali būti šiek tiek švaresnis pamatyti tai čia terminalo, todėl aš
ketina daryti -
darykime čia -
darykime Curl šiuo adresu vėl su 1337.
Ir aš tiesiog rūšies sėdėti čia penkias sekundes.
Tačiau pastebime, kad serveris gali priimti naujų sprendimų.
Taigi jis spausdina ei.
>> Ir demo tai, iš esmės, ką Galiu padaryti šioje kitoje kortelėje -
todėl galime pasakyti, kad aš tai padaryti kitoje kortelėje, Aš ruošiuosi padaryti Curl ir pats
dalykas dar kartą.
Ir aš pasistengsiu, kad ateityje jie vaikinai išjungti tuo pačiu metu.
Taigi, aš ruošiuosi tai padaryti, ir aš ketina lenktyniauti čia ir aš
ketina padaryti jį dar kartą.
>> Ir tegul padaryti taip, kad jūs galima pamatyti abu.
Tai vienas atspausdintas ei ir, kad vienas atspausdintas hey all būdas ne -
darykime, kad eksperimentas dar kartą.
Tiesą sakant, galime naudoti šią apgauti, jei tai viskas OK.
>> Taigi, aš ruošiuosi naudoti lukštais dalykas, kad leidžia man iš esmės paleisti dvi kopijas
Šios programos tuo pačiu metu.
Taigi, tai bus paleisti pirmąją programą ir Antroji programa lygiagrečiai.
Taigi dabar, jei aš paspauskite "Enter", ji ketina padaryti, kad prašymas gana daug
akimirksniu tuo pačiu metu.
Taigi, galime duoti tai kulka.
>> Taigi dabar pastebėsite, kad jis sako du procesus.
Ir jei jums įdomu, kad 27.000 skaičius yra iš esmės procesas vardą.
Ir tada pastebėsite, jie išspausdinti ei tuo pačiu metu.
Tai buvo ne taip, kaip mes turėjome laukti penkis sekundžių vieną ir tada po to,
vėliau penkias sekundes gauti sekundę.
Taigi, tai tipo, tam tikrais būdais, tai tikrai ne įrodyti, bet tai
intuityvus įrodymų, kad tai ne tik kaip laukia penkias sekundes ir blokavimas
visa gija.
Gerai gerai.
>> Aaronas uždavė klausimą anksčiau, kad buvo, gerai ką daryti, jei mes ką nors padaryti -
Taip?
>> PUBLIKA: palaukti.
Kaip tai skiriasi nuo printf buferis, nors?
Ar ne jis automatiškai tai padaryti?
Kodėl mes turime jaudintis dėl to?
>> KEVIN SCHMID: Oi, tu galėjai pasakyti, kad vienas daugiau laiko?
>> Auditorija: Ar ne taip, kaip printf buferį daryti tą patį dalyką?
>> KEVIN SCHMID: printf buferis?
>> PUBLIKA: Taip.
Gerai.
Nebuvo vienas iš viktorinos jie buvo kalbame apie tai, kaip jei dešiniuoju printf
kažkas ir tada jį sustabdyti vieną antra, ir tada jūs turite kilpa dešimt
kartų, tai lauksiu dešimt sekundžių ir tada printf viskas kartu?
>> KEVIN SCHMID: O, gerai.
>> Auditorija: Ar tai daro pats dalykas, tada tokiu atveju?
>> KEVIN SCHMID: Taigi klausimas buvo Iš esmės vienas iš buvusių viktorinų
ar kažkas, ten buvo klausimas, Iš esmės, jei jūs sakote print F 10
dalykų vienu metu ir tada miegojo, kaip ir spausdinti tuos nutraukimo procesas,
ne dėl kokios nors priežasties tikslu būtų tiesiog iškelties tie visi ant ekrano.
Taigi tipo dviejų skirtingų sąvokos čia.
>> Taigi, manau, vienas dalykas yra tai, kad šis atveju, mes susiduriame su dviem skirtingais
tarsi žmonės klausia serverį dalykų vienu metu.
Ir todėl, kad printf rūšies laukia, kaip kad ir išverčia jį iš visų jėgų
vienu metu yra labiau susijęs su kaip printf rūšies -
taip, kaip printf yra iš tikrųjų įgyvendinti tai iš esmės turi
pasikalbėti su operacine sistema rašyti kad kita prie konsolės.
Taigi jis nenori daryti visa, kad Daiktai iš karto, kai jūs sakote printf
kai eilutę, nes tai gali gauti brangus, jei jis turi
padaryti, kad kiekvieną kartą.
>> Taigi, jei jūs printf ei, savo programą ne iš tikrųjų gali spausdinti, kad
nedelsiant konsolės.
Jis gali pasakyti, gerai, aš jį.
Ir tada natūra laukti jums duoti tai šiek tiek daugiau, kol iš tikrųjų
raštu jį į konsolę.
>> Taigi todėl, kad tai buvo atvejis -
ir tai tipo nesusiję su miego -
yra tai, kad miego buvo tarsi ką tik švirkščiamas ten įrodyti
Tai, kad jis nerašo tai sinchroniškai.
Tačiau dėl šios priežasties yra tik kokybės, kad jūs neturite
padaryti, kad daug ryšius su operacinė sistema.
>> Bet čia, ko mes iš tikrųjų bando daryti su šio miego dalykas yra tik šou
kad kai mes turime dvi žmonių aplankė ši svetainė, ji nesiruošia pateikti
juos į liniją, kur jis ketina pasakyti Turiu jums padėti, ir tada, kai aš
visiškai baigtas padėti jums po šių penkias sekundes, tada aš ruošiuosi
perkelti į kitą asmenį.
Taigi pirmojo asmens prašymas nėra prisirišti Tokiu atveju kilpa
jei tai turi prasmę.
>> Bet čia yra iš tikrųjų pavyzdys kažką, kad derinsis
iki renginio kilpą.
Taigi čia baisus funkcija apskaičiuoti n-tąjį Fibonačio.
Tai tiesiog dar blogiau, kaip jūs galite apskaičiuoti n-tąjį Fibonačio skaičių.
Ir iš tikrųjų tai yra tik pripažinti kur tai atsirado,
Ar iš tikrųjų -
Aš turiu galvoje, jūs galite pabandyti eiti rasti - tačiau ten lyg labai ilgas dienoraštį
rašyti, kad kažkas parašė.
Tai tarsi vienas iš tų Reddit dalykų.
Bet kažkas kritikavo Node.js ir jie naudojami tai kaip pavyzdys.
Taigi I rūšies norėjo tiesiog parodyti jums du skirtingi požiūriai tik gauti
bendrą supratimą apie koncepcijas Už šių dviejų dalykų.
>> Bet tai yra pasirinkta kaip tiesiog siaubinga, siaubingai neefektyvus skaičiavimais
intensyvus būdas apskaičiuoti n-tasis Fibonačio skaičius.
Taigi, kaip šalutinis dėmesį, kodėl tai siaubinga kaip vienaip?
Taip?
>> PUBLIKA: Pasakykite pradėdami iš su 1000.
1000 skyla į 999 ir 998.
Kiekviena ši skyla į du dalykus.
>> KEVIN SCHMID: Teisė.
>> PUBLIKA: Visi galo.
>> KEVIN SCHMID: Būtent.
Taigi, tiesiog pakartokite kamera, jei aš skambinti fib dėl kaip 1000 ar kažką
pavyzdžiui, kad tai akivaizdžiai ne mažiau kaip arba lygus vienam, todėl aš ruošiuosi
eiti į šį kitam, o paskui aš ruošiuosi skambinti fib 999 plius fib 998.
Ir tada beveik visi, kad darbas, fib 999 vertė yra
kokios šiuo lygmeniu.
Jeigu jūs einate žemyn, tai dar labiau nereikalingas nei, bet jei jūs tiesiog
manau Kompiuterija fantazuoti 998 gauna mums gana arti fib 999.
Taigi mes tikrai turėtų būti šiek tiek daugiau protingas apie tai, kaip mes tipo pakartotinai
tai, bet mes ne pakartotinai šie dalykai ne visiems.
Taigi galite įsivaizduoti, šis milžiniškas, milžiniškas medis, kuris tiesiog siaubinga.
>> Bet vistiek, Gerai.
Taigi, tai buvo fantazuoti.
Tai tik mano, o paleisti.
Taip?
>> PUBLIKA: [nesigirdi].
>> KEVIN SCHMID: Oi, tu galėjai pakartoti klausimą?
>> PUBLIKA: [nesigirdi].
>> KEVIN SCHMID: O taip, tai tik kodas tai bus tarsi ant
serverio pusėje.
Taigi šis nesiruošia rasti naršyklėje arba nieko.
Tai iš esmės tai, ką mes turime, kad kai čia vartotojo gana daug daro
jų prašymas vėl, kai mes tarsi pateikti prašymą, mes ketiname kreiptis
ši funkcija serverio pusėje.
Ir tada mes gauti rezultatą atgal nuo skambina šią funkciją.
Ir tada mes tiesiog spausdinti tai vartotojui.
Taigi vartotojui nereikia tikrai susidoroti su šia funkcija per daug.
>> Buvo ta, kad klausimas?
Ar tai prasminga?
Gerai.
Cool.
>> Taigi dar kartą, mes visą šią res.writeHead dalykas, kur mes spausdinti
antraštė.
Ir tada aš galų atsakymą daro Magiškas skaičius yra fantazuoti 45.
Taigi galime tiesiog paleisti šį serverį.
Taigi, aš ruošiuosi padaryti mazgas fib.js.
Taigi dabar mano fantazuoti serveris veikia.
>> Ir tada čia aš ruošiuosi atlikite vieną iš šių.
Gerai?
Taigi, aš tiesiog ketinate pasakyti, Curl.
Taigi jis ketina šiek tiek užtrukti, bet tikiuosi, netrukus baigs ir
jis bus atspausdintas, kad 45. Fibonačio skaičius.
>> PUBLIKA: [nesigirdi].
>> KEVIN SCHMID: jis turi gauti padaryti gana greitai.
Todėl reikėtų atsižvelgti 05:55 sekundžių.
Aš nežinau, tai tik V8 yra super greitai, bet kuriuo atveju, tai yra
labai trumpas pavyzdys ir sąmoningai Niewykwintny iš ne trivialus
apskaičiavimas.
Taigi po kurio laiko, ji gauti tai.
>> Bet dabar, ką daryti, jei aš galiu padaryti, kad tos pačios rūšies eksperimentas, kaip ir anksčiau, kai aš padaryti
du prašymai tuo pačiu metu?
Taigi čia aš dėl Curl kad adresas, ir aš ruošiuosi
daryti kitą Curl.
Ir atminkite, kad kai mes tai padarė miegoti serverį, kai mes iš esmės turėjo jį
po penkias sekundes, jie gana daug ir grįžo į dešinę
maždaug tuo pačiu metu.
Taigi tai buvo ne itin surišo.
>> Bet pabandykime jį dabar.
Gerai, kad mes turime savo du procesus.
Prisiminti jie yra proceso ID.
Tai bus šiek tiek nepatogu, o mes sustoti.
Taigi, tegul tiesiog likti čia ir laukti.
>> Taigi, vienas iš jų turėtų būti atgal po kaip -
Gerai, kad vienas grįžo.
Bet tada kodėl ne antra viena grįžti tik dar?
Taip?
>> PUBLIKA: serverio nieko negaliu padaryti o tai skaičiuojant, kad didelis skaičius.
>> KEVIN SCHMID: Teisė.
Taigi, atsakymas buvo tik tai, kad serveris tikrai nieko negalime padaryti, o
tai skaičiuojant, kad Fibonačio skaičių.
Taigi, dabar aš ką tik gavo mano du dalykus.
Bet aš manau, tiesiog galvoti apie kodą šiek tiek daugiau, kaip jis veikia
ir viskas.
>> Taigi, ši funkcija čia yra kodas, kuris Aš sakė šį serverį paleisti, kai ji
gauna naują priimamą prašymą.
Taigi, tai tik ketina paleisti per šį Visas kodas, tada jis ketina eiti
Grįžti į renginių linijos ir tada tęsti tikrinant naujus įvykius.
Taigi, iš esmės tai, ką mes turime vyksta yra serveris
klausytis naujų dalykų.
Pirmasis asmuo klausia, kas yra 45.
Mes paleisti šį kodą apskaičiuoti jį.
Šis kodas trunka maždaug penkių šešių sekundžių paleisti.
Tada mes einame atgal į renginių ciklo ir ieškoti naujų prašymų.
>> Taigi tai yra kaip pavyzdys, jei turėti tai, kas yra vadinamasis apskaičiuoti
privalomas, arba naudoti Kompiuterinės daug, ne galia, bet kaip yra
kompiuterio resursams -
Manau vienas dalykas pasakyti apie tai kad ši funkcija daro visiškai,
didžiąja dalimi, gana naudingo darbo teisė.
Visą laiką, kad šis atgalinių funkcija buvo paleisti, tai buvo gana
daug išleisti didžiąją dalį savo laiko tiesiog Kompiuterija, kad n-tasis Fibonačio skaičius.
>> Bet mes turėjo tik vieną giją spręsti.
Apache modelis, kai du žmonės pateikė prašymą gauti fib 45, mes
turėjo dvi skirtingas temas.
Ir tada operacinės sistemos darbas būtų buvę, ar vartotojo lygis
kodas, kuris valdo temas, tai jau buvo gabaliuką, kad ant
CPU, ar net jei jūs turėjo daug procesorių, juos paskirstyti tolygiai procesorių
taip, kad jie abu apdaila maždaug tuo pačiu metu.
>> Taigi tiesiog parodyti jums, kaip mes galime išspręsti iš - ir tai ne iš viso tobula
sprendimas, bet tarsi kaip mes galime kad grįžti čia ir daryti
šiek tiek geriau.
Taigi, ką aš čia yra programa, vadinama Fantazuoti C. Ir tai iš esmės naudoja
kitas mazgas modulių vienas vadinamas Vaiko procesas modulis.
Taigi, aš įtraukta, kad viršuje rūšies panašaus daryčiau svaras yra
vaikas process.h ar kažką.
Dabar aš turiu priėjimą prie šio CP kintamojo kuris turi visas savo funkcijas.
>> Taigi dabar, ką aš darau šį atsakymą prižiūrėtojas yra Bėgu šią programą
dot slash fantazuoti 45.
Taigi, ką aš padariau - ir aš tik ketina išeiti iš šios programos
šiek tiek -
yra aš parašiau C programa, kad iš esmės apskaičiuoja
n-tasis Fibonačio skaičius.
Taigi čia yra tik programa parašiau C, kad apskaičiuoja tai.
Galiu surinkti, ir galiu paleisti tai į komandų eilutę.
Ir ji ketina apskaičiuoti 45. Fibonačio skaičius.
>> Taigi, pastebėsite, kad jis tik mano gana daug, kaip ilgai.
Aš tikriausiai galėjo naudoti brūkšnį 03 į optimizuoti ar kažką panašaus,
bet aš tiesiog patiko reguliariai kompiliatoriaus nustatymus.
Ir jis spausdina jį.
>> Bet dabar, ką aš tipo darai?
O gaila, negerai failas.
Taigi, aš tuos pačius dalykus su galva, kaip ir anksčiau.
Tada aš šį cp.exec.
Taigi, kas tai ketina padaryti, tai jis ketina paleisti šią programą.
Bet būdas tai veikia, kad jis nesiruošia laukti
kad programa baigti.
Jis tiesiog iš esmės sako vykdyti šią programą.
Taigi, iš esmės įvesti į šį komandų eilutę rūšies.
>> Ir tada, kai jūs baigsite su tai, paleiskite šią funkciją.
Taigi dabar mes natūra gauti šią Visa restored dalykas
kaip mes nelaukia.
Ar tai natūra prasmės?
Taip?
>> PUBLIKA: [nesigirdi]?
>> KEVIN SCHMID: Taigi tai iš tikrųjų atverti naują procesą daryti.
Taigi, iš tikrųjų tai yra, tam tikrais būdais, blogis, nėra itin bloga, tačiau tai
Svarbu pasakyti, kad tai rūšies grįžta į, viena vertus, "Apache"
modelis, kai mes darome temas ir procesus kiekvieno prašymo ar
procesus kiekvieno prašymo.
Taigi tai yra rūšies analogiškas ką Apache veikia.
Kai kuriais atvejais, jis tiesiog naudokite naują giją, kuri yra šiek tiek daugiau šviesos
svoris kaip procesą, bet Apache gali baigti išsišakojimas naują procesą,
kuris yra tipo, ką mes darome čia netiesiogiai daro dot velniop fantazuoti 45.
>> Ir tada tokiu atveju mes tipo patirti tos pačios sąnaudos procesus.
Taigi tai yra tik vienas dalykas, jūs galite padaryti.
Bet tik parodyti šią važiavimo rūšiuoti.
Ir tai kalbėti yra tiesiog tikrai siekiama pateikti šių programų natūra kaip
būdas parodyti skirtingas perspektyvas kaip kurti serverius, pavyzdžiui, kad.
Taigi tai veikia, tada dabar, jei aš tai dar kartą, aš turiu du proceso identifikatorius.
>> Tegul tik kalbėti apie ką atkreipti dėmesį.
Taigi, pastebėsite, kad jie palaipsniui.
Štai atvėsti.
Kadangi tai buvo 27.122 anksčiau.
Tačiau pranešimas dabar jie sugrįžo bent maždaug tuo pačiu metu.
>> Ir dabar, geras klausimas paklausti apie kodėl buvo, kad byla, kurių darbas
jis dabar tarsi padaryti šiuos dalykus Tokiose rungtynėse mugę tarpusavyje
kitų, šie du atvejai dot velniop fantazuoti 45 kad išbėgau
arba kad Mazgas nubėgęs?
Kas rūšiuoti todėl teisinga, kad jie abu gauti tipo subalansuotas veikimo laikas?
>> PUBLIKA: [nesigirdi].
>> KEVIN SCHMID: Taip.
Taigi, iš esmės, kai aš dot velniop fantazuoti 45 ar kažkas panašaus, dabar tai
natūra iki operacinės sistemos tvarkyti šių programų runtime.
Ir dabar jis gali planuoti jų dėl skirtingų procesorių ar jį
gali planuoti jų.
Jis gali suraikyti laiką, kad vienas CPU gauna tai arba kad jie gauna
paleisti ant vieno procesoriaus.
Štai už tai idėja.
Ar tai prasminga visiems?
Taigi dabar mazgas tikrai ne žaisti dalis dalijant šias užduotis.
Gerai.
>> Štai beveik ji pavyzdžių.
Aš tik norėjau parodyti dar vieną dalyką nes tai daug iki šiol buvo
nėra visiškai super praktiškas kai kuriais atvejais.
Galiu įsivaizduoti, grįžo namo po to kalbėti ir ką nors ir pasakyti, kaip,
gerai aš tipo turiu iš to pokalbio, kad Galiu padaryti Fibonačio serverį
mano galutinis projektas.
Taigi čia yra tiesiog tarsi dar vienas pavyzdys kad tikiuosi bus -
o gal ir ne, bet gal - šiek tiek daugiau rūšiuoti svarbūs galutinių projektų ir
Perspektyva dalykų, pavyzdžiui, kad.
>> Taigi tai yra chat.js.
Taigi tai yra natūra patinka kai mėginį serverio pusėje kodas, galite naudoti
įsteigti nedidelę pokalbių serverį kaip Jums gali būti matomas
"Facebook" Pokalbiai ar whatever.
Taigi aš nesakau, tai kaip "Facebook" Pokalbiai, bet tai rūšies
kaip gerai - o gal ir ne geras, bet gal geras - atspirties taškas pokalbiui
serveris Jūsų svetainę galutiniam projektui.
Taigi pažiūrėkime, ką ji daro.
>> Taigi mes vis šį specialų dalyką viršuje, tai var SiO
Lygu reikalauja Socket.IO.
Taigi, tai yra dar vienas dalykas, kad jis nėra iš tikrųjų ateina siejama su
Mazgas, bet jūs galite ją įdiegti.
Tai Mazgas modulis.
Taigi, tai tik, kaip kai kurie išplėtimas mazgo.
>> SocketIO yra tikrai tikrai tipo kietas.
Tai abstrakcija, kad iš esmės tai, ką ji yra, tai leidžia jums
turėti šią komunikacijos srautas tarp interneto
naršyklė ir web serveris.
Taigi, iki šiol didžioji dalis, mes jau tai labai greitai vieną sekundę ar du
antra ryšiai web naršyklė ir web serveris.
Taigi tai iš esmės eiti į google.com ir gaukite Daiktai, siųsti jį atgal, ir tada
baigsime.
Mes niekada kalbėti dar kartą, kol vartotojas įveda į ką nors kita.
>> Bet kas Socket.IO ir panašaus pobūdžio viskas - ir SocketIO iš tikrųjų yra viena
iš dalykų, kad yra pastatytas kaip WebSocket kuri yra tarsi rasti
kaip HTML5 -
, kuri leidžia jums turėti tai nuolatinis dialogas.
Ir tai yra labai naudinga pokalbių serverio rūšies dalykas, nes tai yra
tipo kaip tęstinio dialogo keletas būdų, nes jei jūs kalbasi
su kuo nors, dabar galite tiesiog atsiųsti pranešimas žemyn vamzdžio, ir tada
serveris gali siųsti žinutę žemyn vamzdis prie kito asmens, esate
kalbasi su.
Ir tada jūs galite turėti tai keistis, pavyzdžiui, kad.
>> Taigi, tai tipo kas SocketIO yra geras.
Priežasties, kad SocketIO naudoja WebSockets kaip vienas dalykas yra tai, kad
Be tiesiog senas WebSockets, ji taip pat daro kai triukus esmės
kad ji naršyklė suderinama.
Taigi naršyklių "Internet Explorer deja nepalaiko WebSockets
teisę out of the box.
Taigi jis naudoja kitokios kietas tvarkingas ką su Adobe Flash, leidžiančios
jums turėti kryžminio naršyklės pagalba.
Taigi, tai tikrai naudinga.
>> Ir iš tikrųjų, aš žinau, kad aš tipo veikia laiko čia, bet CS50
Aptarti, ar jūs kada nors matė kažką patinka, aš nežinau, Blankas, kad ir taip yra
Atsakydami į šį postą ar kažkas kaip kad, kad funkcija?
Štai SocketIO.
Taigi, kai kas nors pradeda rašyti aptarti langelį padaryti atsakymo arba
kažkas, Jūsų naršyklė nesuderinama kas vadinamas SocketIO skleidžia tam tikrą rūšį
įvykis, kuris sako kažkieno Atsakydami į šį postą.
>> Tada serveris sako, gerai, ką man daryti?
Na dabar turiu pasakyti tie kiti vaikinai kurie dėl CS50 Aptarti ieškote
šį pranešimą, kad kažkas manimi atsakymo.
Taigi, tai tipo kas SocketIO yra gera, šio tęstinio pobūdžio
srautas dialogą.
Gerai.
>> Taigi, ką aš čia - ir mes tiesiog ketina ignoruoti jungtys masyvas
už truputį -
ką aš padaryti, tai aš dar klausytis.
Taigi, tai tik į Socket.IO būdas yra sakydamas, tegul klausosi šio prievado.
Ir tada aš tai padaryti ryšį.
Taigi, tai tik iš esmės Lizdas IO s būdas pasakyti, kai gausime
ryšys, aš noriu, kad jūs paleisti šį kodą.
>> Ir pastebėsite, kad vietoj to, kad rec ir res praėjo ten turiu lizdą.
Ir tai Lizdas idėja yra iš esmės tai dalykas skaityti, kad jūs galite parašyti ir
nuo yra vartotojo pranešimai galbūt.
Ir pranešimai, kad galėtumėte siųsti gali eiti per tą lizdą.
Ar tai prasminga?
Taigi, tai tik nuolatinis dalykas.
>> Taigi, ką aš padaryti, tai aš vadinu Socket.emit.
Ir išmeta užima gana daug du argumentai.
Pirmasis argumentas yra eilutė tiesiog atstovaujanti tipas
dalykas, kurį jūs spinduliuojantis.
Taigi, šiuo atveju, aš naudoti šios eilutės naujas pranešimas.
Ir tai tik iš esmės sakydamas, kad Šio dalyko tipas, ką aš
siuntimas, yra nauja žinutė.
Taigi galite klausytis konkrečių rūšių kaip naują žinutę ar kas
naudojant tašką ant.
>> Taigi ryšys ir vartotojo siunčiami ten, jei pažvelgti, kur mes vadiname taškas įjungtas,
jie yra kitos stygos, kurios atstovauja tipų naudotojų pranešimus.
Taigi iš esmės jūs galite turėti šį išmeta viena iš šių rūšių pranešimų ir
tada kažką daryti, atsižvelgiant į viena iš šių rūšių pranešimų
>> Taigi, aš skleidžiantys šią naują pranešimą.
Mes ketiname ignoruoti connections.push sekundę.
Bet tada aš sakau, Socket.on vartotojo išsiųstas.
Taigi dabar jis tipo patinka, kai vartotojas siunčia man žinutę, noriu
paleisti šį kodą.
Ir pastebėsite, kad šis anoniminis funkcija imasi šio kintamojo
vadinami duomenys, kurie iš esmės vyksta turėti vartotojo pranešimą.
>> Taigi dabar galime natūra kalbama apie jungtys masyvo.
Taigi, šis yra skirtas pokalbių programą kur iš esmės visi tipo ir
pats čatas.
Taigi, iš esmės tai, ką mes turime išlaikyti aplink yra keletas masyvas, kad iš esmės
atstovauja visiems žmonėms Kalbasi keletas būdų, jei tai turi prasmę.
Teisė?
Nes mes turime žinoti, kas tie vaikinai taip, mes galime siųsti jiems pranešimus
kad kiti žmonės siunčia mums.
>> Taigi, ką šis kodas daro, kai vartotojas siunčia pranešimą - tai Tipo
Renginys -
mes ketiname paleisti šį kodą.
Ir ką mes darome, yra mes paleisti per šį matrica, mes vadinami jungtis.
Ir beveik kiekvienas ryšys išskyrus vieną, kad mūsų, tai
ką šis kodas sako, mes siunčiame nauja pranešimas su tuo pridedamu pranešimu
informacija.
>> Taigi, jei pastebėsite čia, ką aš padariau, kai vartotojas padaro nauja
ryšys aš pridėjo su JavaScript.push metodas, tai yra
iš esmės tik sakau kaip pridėti kad Lizdas kaip vertė į
mūsų jungtys masyvo.
Taigi dabar, kai šis kodas veikia, tai bus siųsti dalykus tiems, ypač
jungtys.
Taigi, tai gali būti geras atspirties taškas už pokalbių serverį
ar kažkas panašaus.
>> Ir cool dalykas, yra tai, kad kodas, kurį matote čia kaip ant ir
skleidžia ir stuff like that yra pats rūšies JavaScript, kad galėtumėte
parašyti naršyklėje bendrauti su serveriu.
Štai kodėl SocketIO rūšies tvarkingas ir naudinga tokiu būdu.
>> O ir dar vienas dalykas, nekilnojamojo greitai.
Nebuvo CS50 galutinis projektas pernai kad iš esmės įgyvendino pokalbiai
serverio Node.js.
Manau, kad tai Harvardchats.org bet aš ne -
Gerai.
Aš nesu įsitikinęs, ką URL, bet Galiu siųsti, kad iš po jo.
Bet tai tipo kietas, kas jūs galite padaryti su Node.js.
>> Taigi, aš tikiuosi, kad, apskritai, jus vaikinai geras jausmas, kas Node.js naudinga
ir kaip jūs galite galbūt taikyti į galutinį projektą.
Aš būsiu siunčiant šiek tiek daugiau ištekliai kartu su tai.
Ir ačiū, kad atvykote.
Ačiū.
>> [Plojimai]