1 00:00:00,000 --> 00:00:08,350 2 00:00:08,350 --> 00:00:09,710 >> KEVIN SCHMID: Pozdravljeni vsi. 3 00:00:09,710 --> 00:00:12,640 Dobrodošli na CS50 seminarja na Node.js. 4 00:00:12,640 --> 00:00:13,955 Moje ime je Kevin. 5 00:00:13,955 --> 00:00:15,580 Jaz sem CS50 TF. 6 00:00:15,580 --> 00:00:17,650 In jaz sem nekako kot resnično razburjen O tem seminarju. 7 00:00:17,650 --> 00:00:20,430 Mislim, da Node.js je zelo kul. 8 00:00:20,430 --> 00:00:24,200 Upam, da se lahko uporablja ta seminar kot dober, mislim, odskočna deska za 9 00:00:24,200 --> 00:00:26,380 nekatere od vaših končnih projektov, če ste zainteresirani za uporabo 10 00:00:26,380 --> 00:00:27,630 nekaj podobnega Node.js. 11 00:00:27,630 --> 00:00:29,770 12 00:00:29,770 --> 00:00:33,320 >> Bomo nekako začetek seminarja izklopite s govorimo le o malo 13 00:00:33,320 --> 00:00:36,970 nekako v ozadju razširljivosti perspektive Node.js, nato 14 00:00:36,970 --> 00:00:39,240 bomo premakniti na nekaj primerov kode. 15 00:00:39,240 --> 00:00:42,340 In jaz imam kodo na spletni strani, in si lahko ogledate na kodo. 16 00:00:42,340 --> 00:00:45,475 In po seminarju, bom nekako govori o tem, kako lahko nastavite Node.js 17 00:00:45,475 --> 00:00:48,220 na vašem računalniku. 18 00:00:48,220 --> 00:00:48,710 >> OK. 19 00:00:48,710 --> 00:00:49,760 Torej, začnimo. 20 00:00:49,760 --> 00:00:53,700 Zato mislim, da želim govoriti o spletni strežniki, res prvi. 21 00:00:53,700 --> 00:00:59,730 In začeti to razpravo, sem imajo v bistvu diagram, ki je od 22 00:00:59,730 --> 00:01:04,269 učbenik uporablja za CS61, ki v bistvu kaže, interakcija 23 00:01:04,269 --> 00:01:08,510 med procesom odjemalca, kot je vaša spletna brskalnik ali kot vaš cilj stranke ali 24 00:01:08,510 --> 00:01:11,340 nekaj takega, in spletni strežnik. 25 00:01:11,340 --> 00:01:15,150 Torej ta vrsta izgleda podobno slika, ki ste videli na predavanju o 26 00:01:15,150 --> 00:01:19,270 Sreda, kjer v bistvu imamo nekaj Proces odjemalec, kot so Google Chrome. 27 00:01:19,270 --> 00:01:22,980 >> In nato korak ena Odjemalec pošlje zahtevo. 28 00:01:22,980 --> 00:01:27,510 Tako, da se lahko nekaj podobnega tudi dajmo obisk, ne vem, CS50.net. 29 00:01:27,510 --> 00:01:29,320 Torej izdamo to zahtevo. 30 00:01:29,320 --> 00:01:34,280 In ne pozabite, kdo ime protokol, ki določa, kako se je to 31 00:01:34,280 --> 00:01:35,610 Zahteva mora biti oblikovana? 32 00:01:35,610 --> 00:01:36,382 Jap. 33 00:01:36,382 --> 00:01:37,650 >> PUBLIKA: [neslišno]. 34 00:01:37,650 --> 00:01:38,150 >> KEVIN SCHMID: Točno tako. 35 00:01:38,150 --> 00:01:40,100 Tako da je kot HTTP, kajne? 36 00:01:40,100 --> 00:01:44,720 Torej v bistvu specifikacija za koliko Zahteva, da je treba dejansko določiti 37 00:01:44,720 --> 00:01:47,450 ven, ker na koncu dneva Zahteva, da je res tako kot 38 00:01:47,450 --> 00:01:50,240 Niz, ki v bistvu pravi, da želim to. 39 00:01:50,240 --> 00:01:53,580 In specifikacija za to je HTTP. 40 00:01:53,580 --> 00:01:55,270 Tako, da je kot protokol. 41 00:01:55,270 --> 00:01:57,920 >> Torej strežnik prejme to zahtevo. 42 00:01:57,920 --> 00:02:01,610 Torej vi imate nameščen spletni strežnik v CS50 aparata. 43 00:02:01,610 --> 00:02:02,460 To je Apache. 44 00:02:02,460 --> 00:02:06,230 In ta teden, ko delate na problem nastavite sedem, boste dejansko delajo 45 00:02:06,230 --> 00:02:08,160 S tem spletnim strežnikom. 46 00:02:08,160 --> 00:02:12,380 Torej strežnik prejme to zahtevo, in potem je nekako praska njene 47 00:02:12,380 --> 00:02:15,090 glava in reči, kot tudi tisto, kar naj naredim s tem? 48 00:02:15,090 --> 00:02:20,060 >> Torej, ki temelji na tisto, kar se je odločil, da ne, potem morda morali obrniti na neke vrste 49 00:02:20,060 --> 00:02:20,730 VIR. 50 00:02:20,730 --> 00:02:23,700 In bi, da je vir lahko veliko različnih stvari. 51 00:02:23,700 --> 00:02:26,810 Za eno, bi bilo prav kot statične HTML datoteke. 52 00:02:26,810 --> 00:02:29,820 Tako bi bilo le kot nekateri HTML, ki je kot za 53 00:02:29,820 --> 00:02:31,100 vaš osebni spletni strani. 54 00:02:31,100 --> 00:02:35,360 To je lahko statična slika kot sliko ali kot film, ki ga imate. 55 00:02:35,360 --> 00:02:37,660 Lahko bi celo govoriti na nekakšno zbirko podatkov 56 00:02:37,660 --> 00:02:39,530 kot so podatkovne baze MySQL. 57 00:02:39,530 --> 00:02:43,910 Tako da ne vedno komunicirati z virom, vendar 58 00:02:43,910 --> 00:02:45,700 V nekaterih primerih bi lahko. 59 00:02:45,700 --> 00:02:47,800 >> Torej, kaj se dogaja, da storijo Po tem je, da se dogaja, da 60 00:02:47,800 --> 00:02:49,430 poslali nazaj odgovor. 61 00:02:49,430 --> 00:02:53,130 In odgovor na to je, opredeljeno tudi z HTTP. 62 00:02:53,130 --> 00:02:54,830 Torej jo lahko stranka prejme. 63 00:02:54,830 --> 00:02:56,740 Prav tako lahko raztrgala in jih obdela. 64 00:02:56,740 --> 00:03:00,900 In potem boste dobili spletno stran kot so Google ali CS50.net ali 65 00:03:00,900 --> 00:03:02,240 karkoli si šel. 66 00:03:02,240 --> 00:03:03,100 OK? 67 00:03:03,100 --> 00:03:06,080 >> Torej je to osnovna interakcija, ki bomo se ukvarjajo s. 68 00:03:06,080 --> 00:03:08,770 In mi smo precej bo s poudarkom na tem delu 69 00:03:08,770 --> 00:03:10,640 interakcija, strežnik. 70 00:03:10,640 --> 00:03:10,990 OK. 71 00:03:10,990 --> 00:03:12,210 Cool. 72 00:03:12,210 --> 00:03:15,500 Ima kdo kakšna vprašanja doslej? 73 00:03:15,500 --> 00:03:17,720 OK. 74 00:03:17,720 --> 00:03:22,430 >> Tako kot smo rekli, spletni strežnik prejme to zahtevo HTTP in nato izda to 75 00:03:22,430 --> 00:03:24,760 Odziv HTTP. 76 00:03:24,760 --> 00:03:29,100 In kot sva govorila prej, CS50 aparat spletni strežnik Apache. 77 00:03:29,100 --> 00:03:32,490 Tako da, ko fantje delajo na P nastavite sedem, boš delal z 78 00:03:32,490 --> 00:03:34,120 Apache spletni strežnik. 79 00:03:34,120 --> 00:03:37,890 Nikoli ne boste morali res deluje z Apache neposredno preveč. 80 00:03:37,890 --> 00:03:41,920 Nekako si nastaviti Apache malo Ko določite število virtualnih gostiteljev ali 81 00:03:41,920 --> 00:03:44,970 V. gostitelji, in bomo dobili da se da v malo. 82 00:03:44,970 --> 00:03:50,620 >> Ampak v bistvu, spletni strežnik Apache ustanovljen za delo z PHP naravi 83 00:03:50,620 --> 00:03:51,730 dne iz škatle. 84 00:03:51,730 --> 00:03:56,170 Torej, kaj se v resnici dogaja, je, ko greš na eno od vaših spletnih strani, kot so, recimo, 85 00:03:56,170 --> 00:04:00,360 Lokalne slash index.php ali nekaj gostitelj, vaš brskalnik pošilja, da 86 00:04:00,360 --> 00:04:04,330 Zahteva, nato pa Apache je sedel tam in številke, storiti z njim. 87 00:04:04,330 --> 00:04:08,840 In dejanje izvršiti da kodo v index.php in 88 00:04:08,840 --> 00:04:11,330 nato pa ga pošlje off nazaj. 89 00:04:11,330 --> 00:04:15,640 Torej, to je to. 90 00:04:15,640 --> 00:04:16,980 Tako smo nekako govorila o tem. 91 00:04:16,980 --> 00:04:21,990 Tako da bi lahko služila samo statično sliko ali teči nekaj PHP kodo in nato vprašanje 92 00:04:21,990 --> 00:04:23,510 odziv. 93 00:04:23,510 --> 00:04:27,670 >> Torej skupno vprašanje, ki lahko pridejo se je tudi, kako v resnici ukvarjajo 94 00:04:27,670 --> 00:04:31,750 z ki imajo več uporabnikov hkrati? 95 00:04:31,750 --> 00:04:36,930 Torej, zamisliti, če ste pisali web strežnik, če bi imeli spletni strežnik, ki 96 00:04:36,930 --> 00:04:39,900 ste bili poskuša pisati v nečem kot so C ali kaj podobnega, 97 00:04:39,900 --> 00:04:45,150 v bistvu si lahko misliš o tem, kako je bi lahko bila nekakšna koda, ki 98 00:04:45,150 --> 00:04:49,330 bi prejeli prošnjo, potem pa ima opraviti vsega dela na njej. 99 00:04:49,330 --> 00:04:53,060 To lahko, na primer, se obrnite baze podatkov ali nekaj takega. 100 00:04:53,060 --> 00:04:53,300 Kajne? 101 00:04:53,300 --> 00:04:56,010 In potem bi to naredil, da se vrste obdelave in nato 102 00:04:56,010 --> 00:04:57,060 poslali nazaj odgovor. 103 00:04:57,060 --> 00:04:58,950 Tako, da je kot visoka Pregled ravni. 104 00:04:58,950 --> 00:05:04,210 >> Ampak to ni takoj jasno, kako lahko to storite tako, da dve osebi ali 105 00:05:04,210 --> 00:05:09,040 celo 1000 ljudi, bi lahko delali z vašim spletni strežnik hkrati. 106 00:05:09,040 --> 00:05:14,880 Tako rešitev, ki Apache uporablja se imenuje niti ali procesov. 107 00:05:14,880 --> 00:05:16,770 Torej, ste morda že slišali za pred temi pogoji. 108 00:05:16,770 --> 00:05:22,190 To je v redu, če še niste, ampak mislim, pa niti ali procese, kot načina za 109 00:05:22,190 --> 00:05:26,290 operacijski sistem ali uporabniški program ali nekaj takega, ali spletni strežnik 110 00:05:26,290 --> 00:05:28,810 da nekako izvesti večkratne stvari naenkrat. 111 00:05:28,810 --> 00:05:31,760 Torej, ste morda slišali izraz všeč niti izvršbe. 112 00:05:31,760 --> 00:05:34,140 Torej, to je nekako tako kot ste nekako večopravilnost. 113 00:05:34,140 --> 00:05:37,710 >> In če ste videli na škatli vašega laptop, ali nekaj takega, 114 00:05:37,710 --> 00:05:43,040 jedri, kaj lahko naredite, je, da lahko teči dva različna teme na različnih 115 00:05:43,040 --> 00:05:46,700 deli CPU, tako da lahko dejansko zgodi istočasno. 116 00:05:46,700 --> 00:05:48,100 Torej je to res močna. 117 00:05:48,100 --> 00:05:52,270 In to je nekako Apache je Rešitev tega problema. 118 00:05:52,270 --> 00:05:57,900 >> Torej so tam nekako kot vseh vprašanjih s tem pristopom, čeprav? 119 00:05:57,900 --> 00:05:59,870 Torej, mislim, da sem nekako jih je napisal tam. 120 00:05:59,870 --> 00:06:03,440 Toda oba nekako porabijo veliko pomnilnika. 121 00:06:03,440 --> 00:06:07,490 To je zelo drago, da ustvarite nit ali proces. 122 00:06:07,490 --> 00:06:11,750 >> In del obrazložitve je, da je samo kot takrat, ko ste tekmovanje v teku program C 123 00:06:11,750 --> 00:06:15,090 kot vaš glavni in nato, da klici Druga funkcija, ki ima 124 00:06:15,090 --> 00:06:16,520 nekakšen dimnik. 125 00:06:16,520 --> 00:06:19,910 Torej teme zahtevajo tudi povsem ločena dimnika, ki 126 00:06:19,910 --> 00:06:21,220 je lahko precej velik. 127 00:06:21,220 --> 00:06:25,170 In če si lahko predstavljate, ton Uporabniki na vaši spletni strani, bi morali 128 00:06:25,170 --> 00:06:26,280 Veliko različnih niti. 129 00:06:26,280 --> 00:06:28,230 To je veliko nizov za upravljanje in vzdrževanje. 130 00:06:28,230 --> 00:06:31,280 Tako da je velika poraba pomnilnika. 131 00:06:31,280 --> 00:06:35,650 >> In potem, tudi, recimo, imate samo en CPU, ali recimo, da imate 132 00:06:35,650 --> 00:06:38,460 več teme, kot ste jih ti multicores. 133 00:06:38,460 --> 00:06:38,730 Kajne? 134 00:06:38,730 --> 00:06:43,280 Torej, recimo, da imaš 10 teme in bi imeli le pet procesorjev. 135 00:06:43,280 --> 00:06:46,260 Nekako moraš narediti to stvar, kjer preklapljate med tokom 136 00:06:46,260 --> 00:06:49,090 tista, ki teče, ker ste ne more zagnati, vse 10 naenkrat. 137 00:06:49,090 --> 00:06:50,980 In da se imenuje stikalo kontekst. 138 00:06:50,980 --> 00:06:54,260 In ta izraz dejansko ima nekaj različnih kontekstih, vendar naj samo 139 00:06:54,260 --> 00:06:56,620 pomislite, da je preklapljanje med dvema niti. 140 00:06:56,620 --> 00:06:59,730 To je lahko precej drago, saj v bistvu tisto, kar morate storiti, je, da 141 00:06:59,730 --> 00:07:03,340 morali ustaviti, kaj počnete, razen stanje tega teče nit, in 142 00:07:03,340 --> 00:07:05,440 nato pa preklopite na nekje drugje. 143 00:07:05,440 --> 00:07:09,420 >> Torej se vsi nekako glej motivacija zakaj teme in 144 00:07:09,420 --> 00:07:12,030 procesi lahko malo kosovni? 145 00:07:12,030 --> 00:07:13,840 In ali imate vprašanje? 146 00:07:13,840 --> 00:07:14,376 OK. 147 00:07:14,376 --> 00:07:15,070 Cool. 148 00:07:15,070 --> 00:07:18,090 Ima kdo kakšna vprašanja? 149 00:07:18,090 --> 00:07:19,620 OK. 150 00:07:19,620 --> 00:07:26,720 >> Torej, če naredimo korak nazaj za sekundo, tam je nekako kot 151 00:07:26,720 --> 00:07:30,350 opažanje, da bomo lahko o Veliko spletnih aplikacij. 152 00:07:30,350 --> 00:07:34,810 In to je res, da je veliko od njih dejansko ne naredi, da je veliko uporabno 153 00:07:34,810 --> 00:07:37,140 deluje znotraj navoja. 154 00:07:37,140 --> 00:07:41,170 Torej se je kdo začel P določiti sedem sploh? 155 00:07:41,170 --> 00:07:45,650 Torej hočeš, da mogoče opisati nekateri deli? 156 00:07:45,650 --> 00:07:47,850 Ste delali na prijavo ali kaj podobnega? 157 00:07:47,850 --> 00:07:49,330 >> PUBLIKA: Ne 158 00:07:49,330 --> 00:07:49,780 >> KEVIN SCHMID: OK. 159 00:07:49,780 --> 00:07:50,150 Never mind. 160 00:07:50,150 --> 00:07:50,900 Žal mi je. 161 00:07:50,900 --> 00:07:55,790 Ampak v bistvu, v P set, da si bodo kar veliko vrste 162 00:07:55,790 --> 00:07:59,760 poizvedbe v zbirki podatkov, da bi dobili nekaj podatki iz te baze podatkov. 163 00:07:59,760 --> 00:08:03,330 In kaj je vaša koda je, da se delaš, kaj to Apache proces ali 164 00:08:03,330 --> 00:08:06,030 da Apache nit je, da se delaš medtem ko ima v stik 165 00:08:06,030 --> 00:08:08,990 Podatkovna baza je, da je nekako bo sedel tam in se dogaja, da se 166 00:08:08,990 --> 00:08:12,130 čaka baze podatkov za odgovor. 167 00:08:12,130 --> 00:08:16,290 >> Zdaj, morda ne zveni tako velika obravnavati, ker je baza podatkov o vašem 168 00:08:16,290 --> 00:08:18,240 CS50 aparat, kajne? 169 00:08:18,240 --> 00:08:22,930 Vendar pa obstaja neke vrste omrežja latentnem tam, ker zdaj web 170 00:08:22,930 --> 00:08:26,830 Strežnik mora izdati svojo zahtevo baza podatkov za komunikacijo z 171 00:08:26,830 --> 00:08:29,520 baze podatkov, nato pa dobil, da informacije nazaj. 172 00:08:29,520 --> 00:08:33,190 Torej, zdaj je to kot dobro me počakaj, sem šel bi dobili nekaj od 173 00:08:33,190 --> 00:08:35,770 podatkovne baze in potem je tukaj Veliko čakanja dogaja. 174 00:08:35,770 --> 00:08:36,870 Ali to smiselno? 175 00:08:36,870 --> 00:08:38,580 >> In za nekatere stvari ni tako slabo. 176 00:08:38,580 --> 00:08:41,950 Če se je le, da, na primer, Pomnilnik dostop, da ni všeč 177 00:08:41,950 --> 00:08:44,100 Grozno I / O latence. 178 00:08:44,100 --> 00:08:47,110 In ko rečem, I / O latence, kaj sem ki se nanašajo na je kot kakršnokoli kot 179 00:08:47,110 --> 00:08:48,290 vhod izhod. 180 00:08:48,290 --> 00:08:52,950 Ampak za dostop do datoteke na disku, kot so če sem hotel, da služi statične HTML 181 00:08:52,950 --> 00:08:57,850 datoteko, ki je bila na moji spletni strani ali nekaj takega, sem nekako moral 182 00:08:57,850 --> 00:09:02,310 stop za malo preberi datoteko v iz diska, in nato v 183 00:09:02,310 --> 00:09:04,400 Ta proces Čakam. 184 00:09:04,400 --> 00:09:06,700 Jaz ne opravlja koristno delo. 185 00:09:06,700 --> 00:09:11,270 >> To ne velja za vse, vendar pa je pogost v aplikacijah, kot so P niz 186 00:09:11,270 --> 00:09:13,960 sedem in veliko aplikacij da nisi 187 00:09:13,960 --> 00:09:15,440 pravzaprav delaš veliko razmišljanja. 188 00:09:15,440 --> 00:09:19,090 In ko rečem razmišljanje, mislim kot računske dela. 189 00:09:19,090 --> 00:09:23,270 Torej računalniško delo bi lahko bilo kaj kot, recimo, si je želel 190 00:09:23,270 --> 00:09:26,590 pisanje spletnega strežnika, ki preprosto izračunajo n-število Fibonacci. 191 00:09:26,590 --> 00:09:29,300 To ne zveni kot posebno zabavno spletni strežnik. 192 00:09:29,300 --> 00:09:34,220 Tako kot jaz ne bi pričakoval, da je na mestu, da se Naslednji Facebook, ampak, da je nekaj 193 00:09:34,220 --> 00:09:35,610 vrsta računske dela. 194 00:09:35,610 --> 00:09:39,570 >> In si lahko predstavljate, da z zamenjavo nekatere druge vrste zanimivih 195 00:09:39,570 --> 00:09:43,070 računalniško delo. 196 00:09:43,070 --> 00:09:46,050 Recimo, da ste pisali nekaj , ki je izračunana na stopnjo 197 00:09:46,050 --> 00:09:49,170 ločitev med dvema človekoma ali nekaj takega. 198 00:09:49,170 --> 00:09:51,860 Tako da ne gre za kakšno vrsto izračuna, kajne? 199 00:09:51,860 --> 00:09:56,630 In tudi takrat, da to, da imate še vedno narediti veliko čakanja morda 200 00:09:56,630 --> 00:09:59,550 imate, da se pozanima bazo podatkov za iskanje up, kdo je prijatelj, kdo ali 201 00:09:59,550 --> 00:10:00,600 nekaj takega. 202 00:10:00,600 --> 00:10:03,510 Tako da je ta vrsta pojma za računalniško delo. 203 00:10:03,510 --> 00:10:05,260 Ali to smiselno? 204 00:10:05,260 --> 00:10:08,258 Ima kdo kakšna vprašanja? 205 00:10:08,258 --> 00:10:11,960 >> Oh, in mislim, da sem dal chat strežnikov tam ker so chat strežniki vrste 206 00:10:11,960 --> 00:10:13,240 še en dober primer tega. 207 00:10:13,240 --> 00:10:15,250 Chat strežnik nima storiti veliko razmišljanja. 208 00:10:15,250 --> 00:10:18,350 Čakati na ljudi, da ga je le pošiljanje sporočil in potem, ko 209 00:10:18,350 --> 00:10:19,800 ti, jih pošljite. 210 00:10:19,800 --> 00:10:21,050 OK? 211 00:10:21,050 --> 00:10:23,410 212 00:10:23,410 --> 00:10:28,180 >> Torej samo še enkrat povzamem, Apache in podobnih spletnih strežnikov, kot to vilic a 213 00:10:28,180 --> 00:10:31,470 Veliko niti in procesov, ki lahko nekako potratno. 214 00:10:31,470 --> 00:10:37,530 Tako da mislim, da vprašanje, ki lahko pride iz da je ne potrebujemo 215 00:10:37,530 --> 00:10:39,610 več niti in procesov? 216 00:10:39,610 --> 00:10:41,890 Kaj pa, če smo imeli enega? 217 00:10:41,890 --> 00:10:45,710 >> Torej, kaj je nekako narisati kaj bi to izgledal. 218 00:10:45,710 --> 00:10:47,810 Torej, kaj je le eno nit. 219 00:10:47,810 --> 00:10:48,660 OK? 220 00:10:48,660 --> 00:10:52,790 Torej, predstavljajte si to z eno nitjo. 221 00:10:52,790 --> 00:10:56,600 >> Recimo, da smo bili v resnici ne gre da veliko koristnega - in ko rečem 222 00:10:56,600 --> 00:10:59,450 koristna, mislim Računalniške vaje - 223 00:10:59,450 --> 00:11:01,130 V teh več niti pred. 224 00:11:01,130 --> 00:11:04,180 Torej, kaj je nekako utrditi Vse v enem nit. 225 00:11:04,180 --> 00:11:07,780 Pa kaj, če smo imeli eno nit te vrste da samo gre okoli v zanki in 226 00:11:07,780 --> 00:11:10,880 nenehno pregledi naredil nekaj Nova zgodilo. 227 00:11:10,880 --> 00:11:15,130 Tako na primer, novo se je zgodilo nekaj, bi lahko pomenilo, da imam nekaj nazaj od 228 00:11:15,130 --> 00:11:19,310 baze podatkov, ali nekdo pošlje me nov zahtevek HTTP. 229 00:11:19,310 --> 00:11:22,290 Torej, to so neke vrste dogodkov da se to zgodi, kajne? 230 00:11:22,290 --> 00:11:26,130 >> In potem, kaj lahko storim, ko tiste nove Stvari se dogajajo v tej isti navoj 231 00:11:26,130 --> 00:11:30,120 o izvršbi, ta enotna nit izvedba, lahko pokličete nekaj kode, ki 232 00:11:30,120 --> 00:11:32,410 bi ročaj to posebno stvar. 233 00:11:32,410 --> 00:11:36,640 Tako na primer, če sem dobil nekaj nazaj iz baze podatkov, bi jaz vodim 234 00:11:36,640 --> 00:11:40,960 majhen računski del tega, da pravzaprav šele pripravlja stvar 235 00:11:40,960 --> 00:11:42,620 pošlje nazaj uporabniku. 236 00:11:42,620 --> 00:11:46,710 Torej ne da nekako smiselno? 237 00:11:46,710 --> 00:11:49,940 >> Ampak kaj so v resnici posledice tega? 238 00:11:49,940 --> 00:11:50,660 Kajne? 239 00:11:50,660 --> 00:11:53,730 Ker smo pisno Veliko kode, ki - 240 00:11:53,730 --> 00:11:58,330 in jaz bom samo, da skoči naprej v diapozitivih, če je to v redu. 241 00:11:58,330 --> 00:12:00,930 Torej, če vas ne moti, da sem pravkar dogaja, da naredimo korak nazaj. 242 00:12:00,930 --> 00:12:03,410 Tako da je ta vrsta stvari je, imenujemo dogodek zanka. 243 00:12:03,410 --> 00:12:04,070 OK? 244 00:12:04,070 --> 00:12:07,240 In to je nekako osnovna Ideja Node.js. 245 00:12:07,240 --> 00:12:11,240 >> Torej, kaj Node.js je res delal kot spletni Strežnik je tam ena tema 246 00:12:11,240 --> 00:12:14,850 da se v bistvu dogaja okoli v zanki kot while ene vrste nezadostno 247 00:12:14,850 --> 00:12:18,510 kapuco Node.js, da je nenehno preverjanje, ali bomo prejeli nove stvari? 248 00:12:18,510 --> 00:12:22,720 In potem bo trajal viličarji , ki ga ustanovi. 249 00:12:22,720 --> 00:12:26,720 Ampak, dobro vprašanje vprašati, kako lahko to zgodilo 250 00:12:26,720 --> 00:12:28,090 z obstoječimi stvarmi? 251 00:12:28,090 --> 00:12:32,440 >> Zato sem dal linijo oznako C tukaj, da v bistvu izgleda, kot da je odpiranje 252 00:12:32,440 --> 00:12:33,060 datoteko, kajne? 253 00:12:33,060 --> 00:12:36,090 Pravkar sem prišel ven z albuma. 254 00:12:36,090 --> 00:12:39,600 Torej, sem jo moral odpreti novo datoteko. 255 00:12:39,600 --> 00:12:43,810 Torej, pot je naša C koda za delovanje - 256 00:12:43,810 --> 00:12:47,890 in mislim, da razlog, zakaj sem izbral datoteke je ker je to nekako v obsegu 257 00:12:47,890 --> 00:12:52,000 od I / O delo, ki smo opravili v C Občutek, da je vhod izhod. 258 00:12:52,000 --> 00:12:55,070 Zato pravimo, da je to kodo pa to f odprta. 259 00:12:55,070 --> 00:12:59,370 In potem v naslednji vrstici našega Program smo lahko zdaj delajo z f. 260 00:12:59,370 --> 00:13:02,710 >> Torej bi bil to primer nečesa to je kot sinhrono ali 261 00:13:02,710 --> 00:13:06,850 blokiranje, ker na tej prvi vrstici tam smo čakali, dokler ne bomo 262 00:13:06,850 --> 00:13:08,110 dobili datoteka odprta. 263 00:13:08,110 --> 00:13:12,260 Torej, v drugi vrstici, vemo, da lahko delo s F, vendar to pomeni, da 264 00:13:12,260 --> 00:13:16,240 da druga vrstica ne morem teči dokler se izvaja prva vrstica. 265 00:13:16,240 --> 00:13:17,760 Ali to smiselno? 266 00:13:17,760 --> 00:13:20,890 >> Torej, to bi bilo slabo, da dajo V obravnavo dogodkov. 267 00:13:20,890 --> 00:13:23,920 In razlog za to je, da ta vrsta čaka, kajne? 268 00:13:23,920 --> 00:13:26,500 Torej bi nam to vrne nazaj za isto stvar. 269 00:13:26,500 --> 00:13:29,470 In zdaj ne bi imeli niti korist več niti ali 270 00:13:29,470 --> 00:13:32,390 procesov, saj imamo ena nit Node.js. 271 00:13:32,390 --> 00:13:35,496 Ali to smiselno, da se vse? 272 00:13:35,496 --> 00:13:35,990 >> PUBLIKA: Počakajte. 273 00:13:35,990 --> 00:13:36,980 Torej, kaj je zamenjava? 274 00:13:36,980 --> 00:13:37,840 >> KEVIN SCHMID: Oh, ja. 275 00:13:37,840 --> 00:13:39,560 Torej bom priti do zamenjava. 276 00:13:39,560 --> 00:13:40,430 OK. 277 00:13:40,430 --> 00:13:42,960 Pa kaj, če smo imeli nekaj , ki je izgledal takole? 278 00:13:42,960 --> 00:13:45,730 Pa kaj, če zdaj sem uredil f odpreti malo? 279 00:13:45,730 --> 00:13:48,370 Torej sem poteka v isti dva argumenta kot prej. 280 00:13:48,370 --> 00:13:52,610 Še vedno ljubim novo pesem da je prišla ven s. 281 00:13:52,610 --> 00:13:57,260 Ampak jaz sem mimo tretjo stvar, ki je ta spremenljivka se imenuje koda. 282 00:13:57,260 --> 00:14:02,280 >> Toda kaj je oznaka dejansko v zvezi s tem? 283 00:14:02,280 --> 00:14:05,360 Je kot redni spremenljivko C? 284 00:14:05,360 --> 00:14:06,740 To je funkcija, kajne? 285 00:14:06,740 --> 00:14:09,450 In da je lahko malo čudno, ker Jaz sem pravzaprav kot sedaj poteka 286 00:14:09,450 --> 00:14:12,320 deluje v drugo funkcijo. 287 00:14:12,320 --> 00:14:14,400 >> Torej nekaj stvari, na opombo o tem. 288 00:14:14,400 --> 00:14:17,145 Ena, ne bom dejansko kliče funkcijsko kodo. 289 00:14:17,145 --> 00:14:20,650 Torej ne vidite kodo, s levo, desno paren paren. 290 00:14:20,650 --> 00:14:23,010 Jaz sem samo mimo v kodi. 291 00:14:23,010 --> 00:14:26,990 In v C, kaj bi to dejansko storiti se mi kazalec, da je dejanska 292 00:14:26,990 --> 00:14:29,740 kodo, in potem bi to lahko prost. 293 00:14:29,740 --> 00:14:33,350 Ampak samo pomisli, kot ste posreduje kodo teči, ko 294 00:14:33,350 --> 00:14:35,150 Ta datoteka se odpre. 295 00:14:35,150 --> 00:14:41,430 >> Toda kaj to pomeni, da zdaj Preostali del mojega programa, ki bi lahko naredil 296 00:14:41,430 --> 00:14:47,050 druge stvari, lahko še naprej delaš drugo stvari, medtem ko mi, ni res čakati, ampak 297 00:14:47,050 --> 00:14:50,890 samo še v zadnji del naših glavah, da ko te datoteke je odprt, rok, da 298 00:14:50,890 --> 00:14:52,130 oznaka na vrhu. 299 00:14:52,130 --> 00:14:53,390 Ali to smiselno? 300 00:14:53,390 --> 00:14:58,060 >> In zdaj ideja Node.js je, da kodo v ne stvari z F 301 00:14:58,060 --> 00:15:04,590 del mora biti precej kratka in preprosta in enostavna in ne zares 302 00:15:04,590 --> 00:15:06,160 Zelo računsko intenzivne. 303 00:15:06,160 --> 00:15:09,390 To morda morali odpreti še eno datoteko, vendar da bi morala biti precej hitro 304 00:15:09,390 --> 00:15:14,710 ker naj bi samo rekel, naredite novo f odpreti in potem to imenujemo drugo kodo. 305 00:15:14,710 --> 00:15:19,100 >> Torej, samo, da je popolnoma jasno, f odpreti, da v novi Katy Perry pesem 306 00:15:19,100 --> 00:15:23,060 done mp3, da se bo to precej veliko se takoj vrne. 307 00:15:23,060 --> 00:15:27,820 In potem bomo lahko samo še delaš druge stvari, ker je vse to zdaj f 308 00:15:27,820 --> 00:15:33,410 javni razpis pa je povedal, v bistvu Osnovna f odprta koda odpreti to datoteko 309 00:15:33,410 --> 00:15:36,020 in ko ste končali odpiranje tem datoteko ali ko ga boste dobili nazaj, 310 00:15:36,020 --> 00:15:37,480 nato zagnati kodo. 311 00:15:37,480 --> 00:15:39,540 Vendar dejansko ne vodijo to kodo. 312 00:15:39,540 --> 00:15:41,815 In ti si imel vprašanje? 313 00:15:41,815 --> 00:15:46,180 >> PUBLIKA: Nakazali ste, da nekaj krat, da dodajanje računsko 314 00:15:46,180 --> 00:15:50,545 intenzivna koda nekako zlomil Sistem poganja [neslišno]. 315 00:15:50,545 --> 00:15:51,795 [Neslišno]? 316 00:15:51,795 --> 00:15:54,450 317 00:15:54,450 --> 00:15:55,290 >> KEVIN SCHMID: To je veliko vprašanje. 318 00:15:55,290 --> 00:15:59,280 Tako da sem dejansko imajo zgled, kako bi lahko vključili računsko 319 00:15:59,280 --> 00:16:01,090 intenzivna koda v malo. 320 00:16:01,090 --> 00:16:03,620 Torej, ko smo prišli do oznako primerov, Jaz bom se prepričajte, da potegnite, da je eden. 321 00:16:03,620 --> 00:16:04,700 Je to v redu? 322 00:16:04,700 --> 00:16:05,950 Hvala vam. 323 00:16:05,950 --> 00:16:07,690 324 00:16:07,690 --> 00:16:08,750 >> Kaj vam je ime? 325 00:16:08,750 --> 00:16:10,620 >> PUBLIKA: Aaron. 326 00:16:10,620 --> 00:16:14,830 >> KEVIN SCHMID: Aaron pripelje do zelo Dobra točka, ki je, da če bi imel 327 00:16:14,830 --> 00:16:18,560 nekateri računsko intenzivne kodo v narediti stvari z ž del, preostalo 328 00:16:18,560 --> 00:16:22,880 moj program ne more zagnati in ne morete poslušati nove zahteve ali karkoli, dokler se vse 329 00:16:22,880 --> 00:16:24,270 ta stvar je končana. 330 00:16:24,270 --> 00:16:27,390 Torej, če pišem Node kode na splošno če naredimo nekaj, da bom 331 00:16:27,390 --> 00:16:33,060 Predlagam, da se kasneje, ko gledamo kodo za primere, moram biti prepričan, da 332 00:16:33,060 --> 00:16:36,060 moja koda ne zvezal ta dogodek zanka. 333 00:16:36,060 --> 00:16:38,120 Ali to smiselno? 334 00:16:38,120 --> 00:16:38,350 OK. 335 00:16:38,350 --> 00:16:40,040 Cool. 336 00:16:40,040 --> 00:16:47,090 >> Torej Node.js ponuja ta okvir, ki lahko gradijo te dogodkovno 337 00:16:47,090 --> 00:16:48,210 strežnikov z. 338 00:16:48,210 --> 00:16:53,460 Tako da je te vrste asinhrono Neblokirna I / O knjižnice, medtem ko je 339 00:16:53,460 --> 00:16:56,800 standardne knjižnice C, da smo bili delo z, kot če si 340 00:16:56,800 --> 00:16:59,500 jih uporabljajo na enak način, ki smo ga bilo jih uporabljajo pri f odpre in 341 00:16:59,500 --> 00:17:03,000 stvari, tiste, ki blokirajo, ker boste dejansko morali počakati 342 00:17:03,000 --> 00:17:04,470 Ta datoteka odpreti. 343 00:17:04,470 --> 00:17:09,290 >> Ampak Node.js vam daje to in to v bistvu vezi v Googlov V8 344 00:17:09,290 --> 00:17:14,030 JavaScript motor, ki je razlog da je Chrome tako hitro, pri predelavi 345 00:17:14,030 --> 00:17:17,040 JavaScript saj ima ta motor V8. 346 00:17:17,040 --> 00:17:22,460 Tako da vem, da se sliši kot eden izmed tistih, WWDC razvijalec konference stvar 347 00:17:22,460 --> 00:17:25,390 kjer so samo vrgel kup Pismo število stvari za procesorje 348 00:17:25,390 --> 00:17:26,910 in reči, to je tako kul. 349 00:17:26,910 --> 00:17:34,200 Ampak to je kul, da so to storili to zato, ker JavaScript - 350 00:17:34,200 --> 00:17:37,010 ali pa, če niste seznanjeni z JavaScript ni, ker nismo imeli 351 00:17:37,010 --> 00:17:38,180 predavanja o njej - 352 00:17:38,180 --> 00:17:40,770 vendar JavaScript je razlaga jezik. 353 00:17:40,770 --> 00:17:41,970 >> In to je pomembna točka tudi. 354 00:17:41,970 --> 00:17:45,790 Zato je pomembno za našo spletno strežniki, da bo hitro, kajne? 355 00:17:45,790 --> 00:17:49,970 In če smo pravkar teče brskalniku kodo, ki je bila razlaga s samo 356 00:17:49,970 --> 00:17:52,130 vsaka stara tolmač bi bilo počasno. 357 00:17:52,130 --> 00:17:55,980 Torej Node koristi ob tem super hitro V8 tolmač. 358 00:17:55,980 --> 00:17:59,580 In ne vem, če so ga poimenovali ker V8 klofuta v čelo 359 00:17:59,580 --> 00:18:01,110 stvar, ampak OK. 360 00:18:01,110 --> 00:18:07,070 >> Zato sem pripravil nekaj primerov Na tem URL. 361 00:18:07,070 --> 00:18:10,490 Po seminarju, sem nekako bo govori o tem, kako lahko dobiš Node niz 362 00:18:10,490 --> 00:18:13,570 gor, ampak za zdaj sem nekako želim sprehod skozi nekatere primere kode. 363 00:18:13,570 --> 00:18:17,250 Torej, če želite slediti skupaj, vse Izvorna koda je na voljo tukaj. 364 00:18:17,250 --> 00:18:18,720 OK? 365 00:18:18,720 --> 00:18:22,280 >> Torej bom zapustil ta URL up za malo. 366 00:18:22,280 --> 00:18:24,440 In potem grem do preklopi na terminalu. 367 00:18:24,440 --> 00:18:29,670 368 00:18:29,670 --> 00:18:34,400 So vsi dobro s tem URL-ju? 369 00:18:34,400 --> 00:18:37,990 Torej bom za preklapljanje na mojo terminal tukaj. 370 00:18:37,990 --> 00:18:42,030 >> Torej, tukaj je koda, ki Imam za danes. 371 00:18:42,030 --> 00:18:43,960 Zakaj ne bi začeli z simpler.js datoteko? 372 00:18:43,960 --> 00:18:49,110 373 00:18:49,110 --> 00:18:52,100 Druga je, da vse to Koda se bo napisana v 374 00:18:52,100 --> 00:18:56,660 JavaScript, ki ga lahko ali ne sme biti seznanjeni s. 375 00:18:56,660 --> 00:19:00,170 Mislim, da nekaj stvari je, da je veliko kode JavaScript je vrsta 376 00:19:00,170 --> 00:19:04,000 skladnja in struktura je zelo podobna C, tako da lahko nekako to dvignili, kot je 377 00:19:04,000 --> 00:19:05,020 greste skupaj. 378 00:19:05,020 --> 00:19:08,750 Poskušal sem napisati veliko začenši koda za to na način, ki je 379 00:19:08,750 --> 00:19:11,230 podobnih C, tako da je Malo bolj berljiva. 380 00:19:11,230 --> 00:19:15,980 Toda, kot smo napredek, bom dokazuje nekaj dodatnih 381 00:19:15,980 --> 00:19:18,980 funkcije JavaScript, da so nekako kul. 382 00:19:18,980 --> 00:19:21,510 >> Toda poglejmo na tem programu vzorca. 383 00:19:21,510 --> 00:19:24,820 Mislim, da vse, kar je odrezan tam. 384 00:19:24,820 --> 00:19:28,500 Jaz bom samo, da se določi, da je pravi hitro, če ti je prav ali ne. 385 00:19:28,500 --> 00:19:31,400 Ne vem, kaj bo to naredil. 386 00:19:31,400 --> 00:19:34,660 Je, da je malo bolje? 387 00:19:34,660 --> 00:19:36,510 Lahko vidite var in stvari? 388 00:19:36,510 --> 00:19:39,320 OK. 389 00:19:39,320 --> 00:19:44,120 >> Torej, prva vrstica je kot JavaScript verzijo spremenljivke 390 00:19:44,120 --> 00:19:44,800 deklaracija. 391 00:19:44,800 --> 00:19:49,870 Torej samo poudariti, kaj bi to izgledal v C. Torej, to je tako kot 392 00:19:49,870 --> 00:19:52,620 jaz pravim indeks znaša tri ali nekaj takega. 393 00:19:52,620 --> 00:19:55,740 Torej nisem navesti vrsto. 394 00:19:55,740 --> 00:20:00,780 JavaScript ima vrst, vendar je zelo dinamično vnesli v naravi, tako da 395 00:20:00,780 --> 00:20:02,580 ni predložila kakršne koli vrste na njej. 396 00:20:02,580 --> 00:20:03,670 Tako da ima le var. 397 00:20:03,670 --> 00:20:05,320 To je kot spremenljivko. 398 00:20:05,320 --> 00:20:05,920 OK? 399 00:20:05,920 --> 00:20:08,340 >> In kličem te spremenljivo HTTP. 400 00:20:08,340 --> 00:20:12,480 In na moji desni strani, imam izraz, ki bi rad dal v HTTP. 401 00:20:12,480 --> 00:20:14,960 In to pravi zahtevajo HTTP. 402 00:20:14,960 --> 00:20:18,500 Torej, to je nekako podobna vključiti. 403 00:20:18,500 --> 00:20:22,940 To je malo več kot močnejši od vključujejo v smislu, da vključuje 404 00:20:22,940 --> 00:20:26,100 bi samo kopirajte in prilepite glavo datoteko za funkcijo prototipov ali 405 00:20:26,100 --> 00:20:27,930 karkoli z opredelitvami tipa. 406 00:20:27,930 --> 00:20:30,590 Vendar zahteva se dejansko dogaja da nam bi dobili kodo. 407 00:20:30,590 --> 00:20:33,280 >> Torej si lahko pomislite, da je uvažanje nekaj kode. 408 00:20:33,280 --> 00:20:37,960 Torej nekje v modulu Node.js sistem ali karkoli, da imajo vse to 409 00:20:37,960 --> 00:20:40,790 HTTP strežnik kodo, tako da sem samo ga pridobivam za moje 410 00:20:40,790 --> 00:20:43,130 osebna uporaba v tem programu. 411 00:20:43,130 --> 00:20:44,260 OK? 412 00:20:44,260 --> 00:20:46,930 >> Torej imam to funkcijo , ki sem jih napisal. 413 00:20:46,930 --> 00:20:50,330 In opazila nisem imela opredeliti Tip donos ali vrsta 414 00:20:50,330 --> 00:20:51,140 argumenti znova. 415 00:20:51,140 --> 00:20:54,440 Tako nekako ohlapen vnesli v da nekako smislu. 416 00:20:54,440 --> 00:20:57,290 Dva argumenta, da je potrebno v, zaprosilo in odgovor. 417 00:20:57,290 --> 00:21:02,080 Tako da je konceptualno nekako kot seznanjeni s slike, ki smo jih imeli 418 00:21:02,080 --> 00:21:05,280 na zaslonu pred ker smo dobili to prošnjo, da smo 419 00:21:05,280 --> 00:21:06,410 imajo od uporabnika. 420 00:21:06,410 --> 00:21:09,170 In potem imamo odgovor, ki nam lahko pišete stvari. 421 00:21:09,170 --> 00:21:15,060 >> Torej prva linija to ne res.writeHead 200 in potem je to 422 00:21:15,060 --> 00:21:17,070 Vrsta vsebine besedila navaden. 423 00:21:17,070 --> 00:21:19,300 Torej, kaj je ta kos narazen malo. 424 00:21:19,300 --> 00:21:22,340 Torej, kaj je osredotočil samo na res.write za malo. 425 00:21:22,340 --> 00:21:28,420 Tako pisanje je v bistvu, in pisati glavo, so le načini, da nekako napiši 426 00:21:28,420 --> 00:21:29,960 Stvari od odziva. 427 00:21:29,960 --> 00:21:30,770 OK? 428 00:21:30,770 --> 00:21:36,230 Torej pisanje glave, če kdo spomni Iz HTTP predavanja, vidva 429 00:21:36,230 --> 00:21:39,940 zapomni si glave na Vrh HTTP stvar? 430 00:21:39,940 --> 00:21:43,580 Torej, zakaj ne bi jaz samo demo Glave resnično hitro. 431 00:21:43,580 --> 00:21:44,640 Bi bilo to v pomoč? 432 00:21:44,640 --> 00:21:45,500 Ali bi se morala sva nekako - 433 00:21:45,500 --> 00:21:46,070 OK. 434 00:21:46,070 --> 00:21:46,740 Prepričan. 435 00:21:46,740 --> 00:21:52,340 >> Torej, če vaš brskalnik gre google.com ali nekaj takega, 436 00:21:52,340 --> 00:21:54,250 tam je pravzaprav malo več - 437 00:21:54,250 --> 00:21:55,380 to je kot skrivnost - 438 00:21:55,380 --> 00:21:58,340 tam je všeč malo več informacij ki prihaja skozi cev kot le 439 00:21:58,340 --> 00:22:00,180 malo search in vse ostalo. 440 00:22:00,180 --> 00:22:03,550 Torej, da vam pokažem to, bom za uporabo program, imenovan Curl. 441 00:22:03,550 --> 00:22:04,260 OK? 442 00:22:04,260 --> 00:22:08,020 Torej je to nekaj, kar lahko poteka na vaš ukazni vrstici Mac OSX ali v 443 00:22:08,020 --> 00:22:09,830 naprave ali karkoli. 444 00:22:09,830 --> 00:22:17,050 In tako, če mi Curl HTTP google.com, Bom videl HTML. 445 00:22:17,050 --> 00:22:21,230 In to je, v pravičnosti, samo HTML, ki nekako vam pove, da 446 00:22:21,230 --> 00:22:24,695 preusmeriti na www, če vaš brskalnik ne samodejno ročaj 447 00:22:24,695 --> 00:22:27,110 preusmeritev. 448 00:22:27,110 --> 00:22:33,390 >> Torej, to je samo HTML, ampak bom dodati Curl to vezaj sem zastavo. 449 00:22:33,390 --> 00:22:33,600 OK? 450 00:22:33,600 --> 00:22:35,600 In to se dogaja, da pokažejo mi glave. 451 00:22:35,600 --> 00:22:40,640 Torej to je tudi podatek, da prihaja skozi, ko sem dobil ta odgovor. 452 00:22:40,640 --> 00:22:41,260 OK? 453 00:22:41,260 --> 00:22:45,320 >> Torej, na vrhu, vidiš to HTTP 301 premaknete trajno. 454 00:22:45,320 --> 00:22:49,470 In to je nekako pomembno, ker to se nanaša na kode stanja. 455 00:22:49,470 --> 00:22:53,750 Torej, 301, tukaj je koda stanja, , ki je v bistvu samo celo število 456 00:22:53,750 --> 00:22:57,750 , ki pove brskalniku ali kdorkoli že branju tega, če se pretvarjamo, da 457 00:22:57,750 --> 00:23:01,460 si brskalnik in si to videl, v bistvu zdaj, če pogledaš na 458 00:23:01,460 --> 00:23:04,960 da in vidite 301, veš imam narediti nekaj posebnega, ki temelji na 459 00:23:04,960 --> 00:23:08,810 Posebno se je zgodilo 301, ali nekaj takega temelji na 301. 460 00:23:08,810 --> 00:23:12,640 Tako pravi preselila za stalno. 461 00:23:12,640 --> 00:23:17,700 >> In potem, v bistvu, imamo kup parov vrednosti ključev. 462 00:23:17,700 --> 00:23:22,100 Tako smo dobili lokacijo je www.google.com. 463 00:23:22,100 --> 00:23:25,190 In potem nekako vse te druge stvari, ampak v bistvu, kaj lokacija 464 00:23:25,190 --> 00:23:29,662 Pregovor je nova lokacija je na www.google.com. 465 00:23:29,662 --> 00:23:33,800 Torej, zdaj, če greš na google.com, boste nekako glej brskalnika vrste blink 466 00:23:33,800 --> 00:23:38,770 za drugo, nato pa vas preusmeri nazaj na www.google.com. 467 00:23:38,770 --> 00:23:41,840 Tako da lahko odgovori vsebujejo te glave. 468 00:23:41,840 --> 00:23:43,330 >> In nekaj stvari poudariti. 469 00:23:43,330 --> 00:23:46,890 Torej, recimo, da smo bili dejansko uspešni pri obisku spletne strani. 470 00:23:46,890 --> 00:23:49,040 Naj gre za - 471 00:23:49,040 --> 00:23:51,080 kaj je dobro spletno stran? 472 00:23:51,080 --> 00:23:53,285 Jaz sem slab v razmišljanju dobro spletne strani, na kraju samem. 473 00:23:53,285 --> 00:23:53,640 >> PUBLIKA: Wikipedia. 474 00:23:53,640 --> 00:23:54,160 >> KEVIN SCHMID: OK. 475 00:23:54,160 --> 00:23:56,040 Naredimo Wikipedia. 476 00:23:56,040 --> 00:23:58,680 Torej, tukaj sem se preselil. 477 00:23:58,680 --> 00:23:59,240 Oh, počakajte. 478 00:23:59,240 --> 00:24:00,160 Sem bil? 479 00:24:00,160 --> 00:24:00,890 Ja, sem bila. 480 00:24:00,890 --> 00:24:01,100 OK. 481 00:24:01,100 --> 00:24:03,005 Torej moram storiti www. 482 00:24:03,005 --> 00:24:06,006 Tako bom naredil www. 483 00:24:06,006 --> 00:24:09,680 In kot vidite, tu je vse HTML da bo brskalnik obdeluje 484 00:24:09,680 --> 00:24:10,910 na Wikipediji. 485 00:24:10,910 --> 00:24:14,055 >> Ampak, če jaz vztrajati pomikanjem tukaj gor, kaj bom videl na vrhu - 486 00:24:14,055 --> 00:24:17,800 wow, tam je veliko HTML na Wikipediji - 487 00:24:17,800 --> 00:24:22,550 ampak kar vidim na vrhu tu to 200 Status koda za razliko od 488 00:24:22,550 --> 00:24:24,570 301, da sem videl že prej. 489 00:24:24,570 --> 00:24:27,100 In opazili, da je lepo prijazen OK poleg nje. 490 00:24:27,100 --> 00:24:29,470 Torej, to je kot dober kode stanja. 491 00:24:29,470 --> 00:24:31,160 >> Ali to 200 številka zdi znano? 492 00:24:31,160 --> 00:24:34,120 493 00:24:34,120 --> 00:24:39,880 Da, ker ko sem simpler.js, Napisal sem 200 tam. 494 00:24:39,880 --> 00:24:43,290 Tako da je v bistvu rekel, povej brskalnik ali kdorkoli poskuša priti do 495 00:24:43,290 --> 00:24:45,440 to, da so bili uspešni. 496 00:24:45,440 --> 00:24:49,040 Ali pa, da nekako, kot smo bili preveč uspešni. 497 00:24:49,040 --> 00:24:54,320 >> In tam je ta vrsta posebne sintakse v Javascript za razglasitev 498 00:24:54,320 --> 00:24:59,870 Karta od teh tipk, kot vrsto vsebine in te vrednosti kot besedilni ravnini. 499 00:24:59,870 --> 00:25:03,780 Torej, če pogledaš na odgovor, ki smo vrnila iz Wikipedije prej - 500 00:25:03,780 --> 00:25:06,200 Bom poskusil, da se pomaknete gor malo hitreje - 501 00:25:06,200 --> 00:25:09,900 imate te tipke kot strežnik in te vrednosti Apache. 502 00:25:09,900 --> 00:25:12,120 Torej imaš ključe in vrednosti. 503 00:25:12,120 --> 00:25:15,930 In lahko to določite v Node kaj poslati nazaj. 504 00:25:15,930 --> 00:25:19,380 >> Torej, to je pravzaprav neke vrste, v nekaterih načine, in v nekaterih pogledih to ni 505 00:25:19,380 --> 00:25:23,170 res, ampak to je malo nižja raven kot PHP kodo, ki bi jih lahko 506 00:25:23,170 --> 00:25:26,980 pisanje za P nastavite sedem, ker PHP in Apache nekako poskrbel za nekaj 507 00:25:26,980 --> 00:25:28,150 od teh stvari za vas. 508 00:25:28,150 --> 00:25:32,520 V PHP lahko prepiše privzeto vedenje s pisanjem lastne glave. 509 00:25:32,520 --> 00:25:35,520 Ampak za to, smo dobili pisati iz naše glave. 510 00:25:35,520 --> 00:25:38,210 511 00:25:38,210 --> 00:25:41,105 >> Da ne bi linija smiselna vsi, pisalna glava linija? 512 00:25:41,105 --> 00:25:41,380 OK. 513 00:25:41,380 --> 00:25:42,280 Super. 514 00:25:42,280 --> 00:25:45,870 >> Torej, kaj sem naredil, potem je končam odgovor z besedami, hello svetu. 515 00:25:45,870 --> 00:25:47,040 OK. 516 00:25:47,040 --> 00:25:49,920 Ampak to je samo funkcija imenovano odpravnika. 517 00:25:49,920 --> 00:25:53,510 Torej, zdaj sem dejansko moral nekako narediti nekaj s to funkcijo, kajne? 518 00:25:53,510 --> 00:25:59,170 >> Tako da tukaj kaj storiti, je da je to linija, ki naredi strežnik, je enako var 519 00:25:59,170 --> 00:26:03,530 HTTP.create strežnik, potem pa sem preide v odpravnika. 520 00:26:03,530 --> 00:26:06,080 Torej je to neke vrste vozlišče, način oblikovanja strežnika. 521 00:26:06,080 --> 00:26:08,790 In opazil, da sem mimo V zahtevi trener. 522 00:26:08,790 --> 00:26:12,290 Torej je to povedal createServer Funkcija, ki Želim si, da bi me 523 00:26:12,290 --> 00:26:16,270 strežnik, in ko je ta strežnik prejme odgovor, moram vam to imenujemo 524 00:26:16,270 --> 00:26:18,680 zahteva funkcijo trener. 525 00:26:18,680 --> 00:26:18,990 OK? 526 00:26:18,990 --> 00:26:22,290 >> Tako da črta precej konča takoj. 527 00:26:22,290 --> 00:26:28,780 Torej je vrstica strežnika var storiti prav ko si to naredil precej. 528 00:26:28,780 --> 00:26:31,770 Mislim, da mora ustanoviti nekaj notranjih Država vedeti, da bi morali 529 00:26:31,770 --> 00:26:35,400 pokličite to funkcijo zahteva trener, vendar da se ne bo tam sedel in 530 00:26:35,400 --> 00:26:37,730 recimo ima uporabnik poslano mi zahteva še? 531 00:26:37,730 --> 00:26:39,270 Je uporabnik mi je poslal prošnjo še? 532 00:26:39,270 --> 00:26:40,780 Tako da ne blokira. 533 00:26:40,780 --> 00:26:41,650 OK? 534 00:26:41,650 --> 00:26:46,120 >> Torej, kaj bo to storiti, je, da v bistvu zdaj shranjuje kazalec tega kodeksa, 535 00:26:46,120 --> 00:26:49,670 Ta funkcija zahteva trener, nato pa bo potekal to kodo, ko nekdo 536 00:26:49,670 --> 00:26:52,170 vloži zahtevo. 537 00:26:52,170 --> 00:26:54,120 In potem mi server.listen. 538 00:26:54,120 --> 00:26:56,950 539 00:26:56,950 --> 00:26:59,960 >> 1337 je precej samovoljno. 540 00:26:59,960 --> 00:27:02,285 Nisem imel posebnega razloga za obiranje to številko. 541 00:27:02,285 --> 00:27:03,860 To je bil povsem naključno. 542 00:27:03,860 --> 00:27:07,010 Ampak to samo določa pristanišča. 543 00:27:07,010 --> 00:27:10,640 Torej je večina spletnih strežnikov boste videli, da so uporablja vrata 80, ker je to nekako 544 00:27:10,640 --> 00:27:11,810 podobnega konvencije. 545 00:27:11,810 --> 00:27:16,170 Torej, če grem na nekaj podobnega, Ne vem, Wikipedia.org, 546 00:27:16,170 --> 00:27:17,700 in sem dal kolona 8 - 547 00:27:17,700 --> 00:27:18,610 oh wow, ne morete videti. 548 00:27:18,610 --> 00:27:19,370 Žal mi je. 549 00:27:19,370 --> 00:27:21,820 Ampak, če jaz Wikipedia - 550 00:27:21,820 --> 00:27:24,810 Bom napisati tukaj samo zato, da to je jasno, na kameri. 551 00:27:24,810 --> 00:27:29,150 Ampak, če vzamem v brskalnik s debelo črevo 80, ki določa, pojdite na 552 00:27:29,150 --> 00:27:31,430 Wikipedia.org na vrata 80. 553 00:27:31,430 --> 00:27:36,200 Torej je všeč, kako je United States več pristanišč, kot je, kjer si lahko ladja 554 00:27:36,200 --> 00:27:37,440 stvari na vrsto. 555 00:27:37,440 --> 00:27:40,730 Tako da je kot iti v to zlasti postavite na tem strežniku. 556 00:27:40,730 --> 00:27:40,990 OK. 557 00:27:40,990 --> 00:27:45,730 >> Zato sem izbral 1337. 558 00:27:45,730 --> 00:27:47,910 Obstaja cela vrsta številk , ki lahko poberete. 559 00:27:47,910 --> 00:27:50,390 To ni bil povsem posebnega. 560 00:27:50,390 --> 00:27:54,560 >> Ampak, kaj bom storil sedaj se bom teči Node. 561 00:27:54,560 --> 00:27:59,730 Dovolite mi, da dejansko začne, da par črte navzdol, tako da boste lahko videli. 562 00:27:59,730 --> 00:28:03,130 Jaz bom naredil Node, in sem tekoč teči simpler.js. 563 00:28:03,130 --> 00:28:06,880 In se bova pogovorila o tem, kako priti do Node ustanovljen v malo. 564 00:28:06,880 --> 00:28:09,350 Zdaj pa je samo teče strežnik. 565 00:28:09,350 --> 00:28:14,360 >> Torej, ena stvar, ki jo lahko poskusite, ki ne sme je, da je razburljivo bomo lahko dejansko 566 00:28:14,360 --> 00:28:16,300 poskusite dostopati do njega v Curl. 567 00:28:16,300 --> 00:28:20,680 Tako da sem lahko naredil Curl in my Stroj je lokalni gostitelj. 568 00:28:20,680 --> 00:28:24,600 Prav tako boste videli to napisano kot včasih. 569 00:28:24,600 --> 00:28:29,810 Lokalni gostitelj in 127.0.0.1 so prijazni podobnega vašem domačem računalniku. 570 00:28:29,810 --> 00:28:33,180 Torej, to je kot bi govoril svoj računalnik. 571 00:28:33,180 --> 00:28:33,760 OK. 572 00:28:33,760 --> 00:28:36,030 >> In potem lahko rečem 1337. 573 00:28:36,030 --> 00:28:39,630 Torej, če jaz vodim to vrstico kode, pravi zdravo svet. 574 00:28:39,630 --> 00:28:44,050 In če sem hotel videti, da stvari, ki imeli vrsto vsebine besedila navaden ali 575 00:28:44,050 --> 00:28:46,560 karkoli, lahko bi celo dal to tukaj. 576 00:28:46,560 --> 00:28:48,810 In opazil, da to ne rečem OK. 577 00:28:48,810 --> 00:28:50,810 In imam besedilno ravnino. 578 00:28:50,810 --> 00:28:53,140 In potem je tukaj še nekako vse to drugo stvari, ki bodo Node dodali v 579 00:28:53,140 --> 00:28:54,440 tam za mene. 580 00:28:54,440 --> 00:28:55,700 To ni zelo pomembno. 581 00:28:55,700 --> 00:28:58,230 >> Mislim, da so nekatere vrste tehničnih vidiki AT, ki so nekako 582 00:28:58,230 --> 00:29:02,280 kul govoriti o tem, ampak samo prikazati vi, sem imela tudi pooblastilo, da 583 00:29:02,280 --> 00:29:03,070 spremenite te okoli. 584 00:29:03,070 --> 00:29:06,280 Tako da sem lahko samo dodate kup stvari, kot je ta. 585 00:29:06,280 --> 00:29:11,780 In potem zdaj, če pogledam v moji izhod, bo to. 586 00:29:11,780 --> 00:29:19,740 Torej te glave pomenijo nekatere stvari na brskalnikih in takih stvari. 587 00:29:19,740 --> 00:29:23,040 >> In glave v bistvu lahko povem brskalnik kako se odzvati na nekaj. 588 00:29:23,040 --> 00:29:26,280 Če ste kdaj slišali za piškote prej, ali če ste kdaj bili moti, 589 00:29:26,280 --> 00:29:29,330 s spletne strani, ki določa piškotke, ali vklopljen piškotek blok ali 590 00:29:29,330 --> 00:29:30,320 nekaj takega. 591 00:29:30,320 --> 00:29:33,040 Lahko dejansko nastavi piškotke V te glave. 592 00:29:33,040 --> 00:29:36,990 Tako da povem brskalnik, kako Vedenje v nekaterih primerih. 593 00:29:36,990 --> 00:29:37,750 OK. 594 00:29:37,750 --> 00:29:40,310 >> Tako da je bil simpler.js. 595 00:29:40,310 --> 00:29:42,780 Ima kdo kakšna vprašanja na tej izvorno kodo datoteke? 596 00:29:42,780 --> 00:29:45,420 597 00:29:45,420 --> 00:29:45,610 OK. 598 00:29:45,610 --> 00:29:46,490 Cool. 599 00:29:46,490 --> 00:29:50,780 >> Torej, kaj je odstraniti r od in pogled na simple.js. 600 00:29:50,780 --> 00:29:53,010 Torej, to je precej isti program. 601 00:29:53,010 --> 00:29:56,030 Pravkar sem jo napisal malo drugače ker sem želel nekako poudarjajo 602 00:29:56,030 --> 00:29:57,850 nekatere funkcije JavaScript. 603 00:29:57,850 --> 00:30:03,880 >> Tako opazili, da odpravnika Funkcija je popolnoma izginil. 604 00:30:03,880 --> 00:30:05,800 Oh ja, pa imate vprašanje? 605 00:30:05,800 --> 00:30:08,200 >> Ciljna publika: Ja, argumenti da se predajo, da 606 00:30:08,200 --> 00:30:10,120 Funkcija, kaj so? 607 00:30:10,120 --> 00:30:12,050 >> KEVIN SCHMID: To so torej JavaScript predmeti. 608 00:30:12,050 --> 00:30:15,230 V dokumentaciji Node.js, da v bistvu govori, katere metode so 609 00:30:15,230 --> 00:30:15,910 na voljo na njih. 610 00:30:15,910 --> 00:30:19,602 Samo se zgodi, da imajo dostop do Ta metoda se imenuje pisalna glava in konec 611 00:30:19,602 --> 00:30:20,730 in podobne stvari. 612 00:30:20,730 --> 00:30:22,590 Ampak tam je cel kup več metod. 613 00:30:22,590 --> 00:30:27,670 >> In, na primer, kot oni zlasti na odpad, lahko to storite 614 00:30:27,670 --> 00:30:34,540 nekaj podobnega rec.method, ki bo vam povem, ali je HTTP dobiti ali 615 00:30:34,540 --> 00:30:36,780 HTTP objave prijave in take stvari. 616 00:30:36,780 --> 00:30:39,100 Torej je vse vrste razlikuje lastnosti, vendar sta oba 617 00:30:39,100 --> 00:30:42,560 JavaScript predmeti, in so samo še Funkcije, povezani z njimi, ki vam 618 00:30:42,560 --> 00:30:43,850 Lahko napišete stvari. 619 00:30:43,850 --> 00:30:45,520 OK? 620 00:30:45,520 --> 00:30:49,030 >> Tako opazili, da je zahtevek za prekladanje je popolnoma izginil. 621 00:30:49,030 --> 00:30:52,650 Vendar je koda, ki sem ga imel v zahtevi Vodnik je še vedno tam. 622 00:30:52,650 --> 00:30:56,520 Še vedno imam to res.writeHead in jaz imam še vedno ta res.end. 623 00:30:56,520 --> 00:31:00,270 In kaj je to primer v JavaScript je ta ideja 624 00:31:00,270 --> 00:31:01,460 anonimni funkcija. 625 00:31:01,460 --> 00:31:04,180 in anonimno je kot montažni ime za to, ker dobesedno ne 626 00:31:04,180 --> 00:31:05,180 imeti ime. 627 00:31:05,180 --> 00:31:07,900 Tam je zahteva funkcija ni Vodnik tam. 628 00:31:07,900 --> 00:31:10,110 >> Nima imena, vendar je še vedno je ob argument. 629 00:31:10,110 --> 00:31:12,250 Zato sem še vedno dobil rec in res. 630 00:31:12,250 --> 00:31:16,180 In še vedno imam kodo. 631 00:31:16,180 --> 00:31:18,930 To je popolnoma v redu JavaScript kode. 632 00:31:18,930 --> 00:31:22,540 Tako da sem lahko razglasi funkcijo brez izrecno ji daje ime. 633 00:31:22,540 --> 00:31:24,250 To je malo zmedeno na prvi. 634 00:31:24,250 --> 00:31:26,230 Obstaja nekaj kot uporabne stvari ki jih lahko naredite s 635 00:31:26,230 --> 00:31:28,450 Ti anonimni funkcije. 636 00:31:28,450 --> 00:31:32,100 Ima kdo kakršne koli vprašanja o tem, ali je to v redu, samo da za zdaj, 637 00:31:32,100 --> 00:31:34,130 nekako samo sprejeti, da bo naredil isto stvar? 638 00:31:34,130 --> 00:31:36,700 639 00:31:36,700 --> 00:31:37,125 Ja? 640 00:31:37,125 --> 00:31:38,680 >> PUBLIKA: najprej so funkcije razred v JavaScript? 641 00:31:38,680 --> 00:31:41,020 >> KEVIN SCHMID: So prvi razred v JavaScript. 642 00:31:41,020 --> 00:31:45,490 In samo vem, da so ti koncepti poteka anonimno funkcijo kot 643 00:31:45,490 --> 00:31:49,600 to velja tudi za JavaScript, ki ga lahko pišejo v svojem zadnjem projektu 644 00:31:49,600 --> 00:31:51,260 Spletni brskalnik preveč. 645 00:31:51,260 --> 00:31:56,700 Tako na primer, v JavaScript Vaš brskalnik, je tudi nekoliko dogodek 646 00:31:56,700 --> 00:32:00,680 usmerjenih v smislu, da tisto, kar boste še je, ko uporabnik klikne to 647 00:32:00,680 --> 00:32:02,640 Gumb, hočem zagnati to kodo. 648 00:32:02,640 --> 00:32:07,070 >> Torej, to je isto vrsto idej odjemalca, ko klik ali pa 649 00:32:07,070 --> 00:32:09,870 miško preko neke slike na vašem spletna stran, vodijo to kodo. 650 00:32:09,870 --> 00:32:11,350 , Ki se lahko uporabljajo za strežnike. 651 00:32:11,350 --> 00:32:16,380 Tako da je nekako kot razburljivo Razlog, zakaj JavaScript je res 652 00:32:16,380 --> 00:32:19,810 primerni ali nekateri ljudje mislijo, da je primeren jezik za tovrstno 653 00:32:19,810 --> 00:32:22,530 Voznik dogodek strežnik, ker imate Ti anonimni funkcije. 654 00:32:22,530 --> 00:32:26,150 Imate celotno idejo To asinhrona koda. 655 00:32:26,150 --> 00:32:27,060 OK. 656 00:32:27,060 --> 00:32:30,360 Ima kdo kakšna vprašanja? 657 00:32:30,360 --> 00:32:30,470 >> OK. 658 00:32:30,470 --> 00:32:33,440 Tako da je bil simple.js. 659 00:32:33,440 --> 00:32:38,070 Zato si oglejmo še eno ali nekaj več. 660 00:32:38,070 --> 00:32:42,040 Torej, to je sleep.js. 661 00:32:42,040 --> 00:32:47,160 Torej kdo pozna C funkcija spanja? 662 00:32:47,160 --> 00:32:50,936 Od morda eno izmed prejšnjih predavanj ali kaj podobnega? 663 00:32:50,936 --> 00:32:54,650 >> Torej v bistvu lahko prenese v mislim, število sekund ali če uporabljate U 664 00:32:54,650 --> 00:32:57,080 spati število milisekund ali nanosekund. 665 00:32:57,080 --> 00:33:00,450 In v bistvu se bo program nehat teče v tem času. 666 00:33:00,450 --> 00:33:01,280 Kajne? 667 00:33:01,280 --> 00:33:06,970 In potem se bo zbudil in na koncu potem bo to samo še teče 668 00:33:06,970 --> 00:33:08,340 Program. 669 00:33:08,340 --> 00:33:12,740 >> Torej ta strežnik nekako daje vtis spanjem. 670 00:33:12,740 --> 00:33:17,580 Tako opazili, da imamo enak res.writeHead 200 z glavo kot 671 00:33:17,580 --> 00:33:22,130 prej, potem pa smo kličeš to Funkcija se imenuje set timeout. 672 00:33:22,130 --> 00:33:26,170 Set timeout je na voljo tudi vaš spletni brskalnik Google Chrome 673 00:33:26,170 --> 00:33:28,000 ali Safari ali karkoli. 674 00:33:28,000 --> 00:33:31,720 In v bistvu tisto, kar počne tukaj se je pokazal v funkciji. 675 00:33:31,720 --> 00:33:33,360 Obvestilo, še enkrat, to je anonimni funkcija. 676 00:33:33,360 --> 00:33:36,310 Tako da je kar v redu, ker smo uporabi anonimno funkcijo v 677 00:33:36,310 --> 00:33:38,950 anonimno funkcijo, ki mogoče malo čudno. 678 00:33:38,950 --> 00:33:42,270 >> Vendar je pri tem, da je funkcija, ki je v bistvu rekel - in kako ta 679 00:33:42,270 --> 00:33:47,430 Dela je 5000 milisekund, želim ste za izvršitev te funkcije, ki 680 00:33:47,430 --> 00:33:50,830 Pravkar se konča odziv in piše hej. 681 00:33:50,830 --> 00:33:56,730 Torej, to daje vtis, kot spanje, ampak način to dejansko 682 00:33:56,730 --> 00:33:59,780 dela, se bomo teči skozi ta vrstica zelo hitro. 683 00:33:59,780 --> 00:34:01,190 Mi samo pisanje nekaj. 684 00:34:01,190 --> 00:34:03,780 In potem bomo delovali tudi skozi ta vrstica zelo hitro. 685 00:34:03,780 --> 00:34:08,620 Torej ne bomo dejansko dogaja počakati pet sekund. 686 00:34:08,620 --> 00:34:11,370 Mi smo šele tekoč teči to kodo takoj. 687 00:34:11,370 --> 00:34:14,219 >> In potem je tukaj še enkrat, ta mali Dogodek zanke, ki ima zdaj to stvar 688 00:34:14,219 --> 00:34:17,570 Registri, ki je v bistvu samo nenehno dogaja okoli v krogu 689 00:34:17,570 --> 00:34:21,620 in gledamo na uro v eno samo nit in pravi, ima pet sekund 690 00:34:21,620 --> 00:34:22,360 še minilo? 691 00:34:22,360 --> 00:34:26,409 In potem, ko se vidi, da je drugi roko se je preselil kot pet sekund ali 692 00:34:26,409 --> 00:34:29,190 karkoli, potem se zbudi in reče: oh, kaj moram storiti? 693 00:34:29,190 --> 00:34:30,350 Oh moram teči to kodo. 694 00:34:30,350 --> 00:34:33,110 In potem se dogaja, da teči res.end hej. 695 00:34:33,110 --> 00:34:35,360 >> Torej, še enkrat, ne bomo nikoli čaka tukaj. 696 00:34:35,360 --> 00:34:38,590 Torej, to ni, da se ta oznaka v notranjosti To funkcijo bo trajalo pet 697 00:34:38,590 --> 00:34:39,900 sekund za zagon. 698 00:34:39,900 --> 00:34:43,090 Ta koda bo trajal precej sprašuje, vsaj glede na 699 00:34:43,090 --> 00:34:46,139 pet sekund, da se pogovarjava O prej, preden. 700 00:34:46,139 --> 00:34:52,100 >> Torej samo pokazati to v akciji, Lahko storim Node.sleep.js. 701 00:34:52,100 --> 00:34:55,159 In Sem nered kaj? 702 00:34:55,159 --> 00:34:56,310 Morebiti. 703 00:34:56,310 --> 00:34:57,410 Žal mi je. 704 00:34:57,410 --> 00:34:59,530 Poglejmo, kaj lahko storimo, da to popravimo. 705 00:34:59,530 --> 00:35:10,830 706 00:35:10,830 --> 00:35:12,080 OK. 707 00:35:12,080 --> 00:35:15,460 708 00:35:15,460 --> 00:35:17,464 Torej vsekakor uporabiti Node.js. 709 00:35:17,464 --> 00:35:19,440 Jaz sem samo hecam. 710 00:35:19,440 --> 00:35:19,570 OK. 711 00:35:19,570 --> 00:35:20,820 Samo eno sec. 712 00:35:20,820 --> 00:35:27,380 713 00:35:27,380 --> 00:35:27,900 OK. 714 00:35:27,900 --> 00:35:29,130 Vem, kaj je. 715 00:35:29,130 --> 00:35:34,440 >> Torej, problem je, da v moji drugi kartici Tukaj sem bil teče Node že na 716 00:35:34,440 --> 00:35:36,590 isti naslov, 1337. 717 00:35:36,590 --> 00:35:43,370 Tako napako, da je ta vrgel, če pogledamo pri tem resnično tesno, je naslov v 718 00:35:43,370 --> 00:35:45,180 uporabo, EADDRINUSE. 719 00:35:45,180 --> 00:35:47,970 Zato sem bil že uporabljate 1337 tukaj. 720 00:35:47,970 --> 00:35:52,210 Torej, če sem to izklopiti, potem pa sem zdaj začeti teči to, upajmo, vse 721 00:35:52,210 --> 00:35:53,210 bo v redu. 722 00:35:53,210 --> 00:35:53,440 OK. 723 00:35:53,440 --> 00:35:57,020 Tako da lahko imajo samo eno stvar neke za poslušanje na vratih naenkrat. 724 00:35:57,020 --> 00:35:59,660 Druga rešitev bi bila za mene samo urediti ta program in se 725 00:35:59,660 --> 00:36:02,370 bilo všeč 1.338 ali nekaj tako. 726 00:36:02,370 --> 00:36:04,100 >> Toda zdaj spanja teče. 727 00:36:04,100 --> 00:36:06,400 Torej, kaj je dejansko jo preizkusite na Brskalnik ta čas, ker je 728 00:36:06,400 --> 00:36:09,080 Malo nezanimive za prikaz je v terminalu. 729 00:36:09,080 --> 00:36:13,560 Torej grem iti, da Spet 127 naslov na 1337. 730 00:36:13,560 --> 00:36:14,850 In če jo lahko vidite - 731 00:36:14,850 --> 00:36:18,050 Ne vem, če je to mogoče - ampak moja Brskalnik je pokazal zelo, zelo dolgo 732 00:36:18,050 --> 00:36:20,600 Čas je, da vstavite ali kot pet sekund. 733 00:36:20,600 --> 00:36:23,460 >> In nato po tem, da končno končalo odziv. 734 00:36:23,460 --> 00:36:29,070 In ga ne morete videti, ker stvar je preselila malo, ampak če naredim 735 00:36:29,070 --> 00:36:32,500 to malo manjši, saj lahko vidite, da piše, hej. 736 00:36:32,500 --> 00:36:35,130 Tako sem dobil hej, vendar po petih sekundah. 737 00:36:35,130 --> 00:36:38,510 In morda malo čistejše videti je tukaj na terminal, tako da sem 738 00:36:38,510 --> 00:36:40,980 boš naredil - 739 00:36:40,980 --> 00:36:43,540 Naredimo tukaj - 740 00:36:43,540 --> 00:36:48,370 Naredimo Curl tem naslovu spet z 1337. 741 00:36:48,370 --> 00:36:50,820 In sem nekako moral sedeti tukaj za pet sekund. 742 00:36:50,820 --> 00:36:53,760 Ampak obvestilo, da je strežnik lahko sprejme nove odzive. 743 00:36:53,760 --> 00:36:54,940 Tako da natisne hej. 744 00:36:54,940 --> 00:36:58,720 >> In demo to, v bistvu tisto, Jaz lahko naredim v tej drugi kartici - 745 00:36:58,720 --> 00:37:02,640 Torej, recimo, to sem naredil v drugem zavihku, Jaz bom naredil Curl in isto 746 00:37:02,640 --> 00:37:03,780 stvar znova. 747 00:37:03,780 --> 00:37:06,600 In bom poskusil brcati ti fantje off hkrati. 748 00:37:06,600 --> 00:37:08,260 Torej bom to storil, in sem dirkati sem in sem 749 00:37:08,260 --> 00:37:09,650 bom še enkrat. 750 00:37:09,650 --> 00:37:14,030 >> In da bi bilo tako, da si vidi oba. 751 00:37:14,030 --> 00:37:20,250 To eno tiskano Ej in da je eden tiskani hej vso pot na - 752 00:37:20,250 --> 00:37:22,550 Naredimo to poskus znova. 753 00:37:22,550 --> 00:37:25,100 Pravzaprav, kaj je to uporabijo trik, če je to v redu. 754 00:37:25,100 --> 00:37:30,520 >> Torej bom uporabo lupine stvar, ki mi omogoča, da v bistvu teči dva izvoda 755 00:37:30,520 --> 00:37:32,630 tega programa vzporedno. 756 00:37:32,630 --> 00:37:36,070 Tako da bomo teči prvi program in Drugi program vzporedno. 757 00:37:36,070 --> 00:37:39,060 Torej, zdaj, če sem pritisnite tipko Enter, da se dogaja da to zahteva precej 758 00:37:39,060 --> 00:37:40,570 sprašuje hkrati. 759 00:37:40,570 --> 00:37:42,620 Torej, dajmo to strel. 760 00:37:42,620 --> 00:37:44,950 >> Torej, zdaj opazili pravi dva procesa. 761 00:37:44,950 --> 00:37:50,630 In če ste radovedni, da 27.000 Številka je v bistvu proces ID. 762 00:37:50,630 --> 00:37:52,940 In potem opazili, so natisnjene Ej hkrati. 763 00:37:52,940 --> 00:37:56,820 To ni bilo všeč, smo morali čakati pet sekund za eno in potem po tistem, 764 00:37:56,820 --> 00:37:59,640 pet sekund pozneje dobili drugi. 765 00:37:59,640 --> 00:38:03,300 Tako, da je vrsta, v nekaterih pogledih, to je ni res dokaz, vendar je 766 00:38:03,300 --> 00:38:07,390 intuitivno dokaz, da to ni samo kot čaka pet sekund in blokiranje 767 00:38:07,390 --> 00:38:08,960 celoten navoj. 768 00:38:08,960 --> 00:38:10,720 OK kul. 769 00:38:10,720 --> 00:38:17,850 >> Torej Aaron vprašal prej, da je bil, no, kaj če ne bomo nekaj storiti - 770 00:38:17,850 --> 00:38:18,735 Ja? 771 00:38:18,735 --> 00:38:19,051 >> PUBLIKA: Počakajte. 772 00:38:19,051 --> 00:38:21,585 Kako je, da se razlikuje od printf buffer, čeprav? 773 00:38:21,585 --> 00:38:23,010 Ne bo samodejno naredil? 774 00:38:23,010 --> 00:38:25,390 Zakaj moramo skrbeti za to? 775 00:38:25,390 --> 00:38:26,555 >> KEVIN SCHMID: Oh, bi lahko pravijo, da še enkrat? 776 00:38:26,555 --> 00:38:29,510 >> PUBLIKA: Ali ni všeč printf buffer narediti točno isto stvar? 777 00:38:29,510 --> 00:38:31,280 >> KEVIN SCHMID: printf buffer? 778 00:38:31,280 --> 00:38:32,753 >> OBČINSTVO: Ja. 779 00:38:32,753 --> 00:38:33,244 OK. 780 00:38:33,244 --> 00:38:40,609 Ni bil v enem od kvizov so bili Govorimo o tem, kako, če ste prav printf 781 00:38:40,609 --> 00:38:42,899 nekaj, nato pa so ga začasno ustavite enega po drugi strani, nato pa ste to zanko deset 782 00:38:42,899 --> 00:38:46,530 krat, boste počakati deset sekund in printf nato vse skupaj? 783 00:38:46,530 --> 00:38:47,460 >> KEVIN SCHMID: Oh, OK. 784 00:38:47,460 --> 00:38:49,170 >> PUBLIKA: Je to počne isto stvar, potem pa v tem primeru? 785 00:38:49,170 --> 00:38:52,630 >> KEVIN SCHMID: Torej, vprašanje je bilo v bistvu v eni od prejšnjih kvizov 786 00:38:52,630 --> 00:38:57,200 ali kaj podobnega, je bilo vprašanje, ki v bistvu, če rečeš tiskalne F 10 787 00:38:57,200 --> 00:39:01,490 stvari naenkrat in potem spala kot v Postopek tiskanja tistih ven, 788 00:39:01,490 --> 00:39:04,850 Na koncu nekega razloga, kajne samo smetišče tiste, vsi ven na zaslonu. 789 00:39:04,850 --> 00:39:06,740 Tako da je nekako dveh različnih koncepti tukaj. 790 00:39:06,740 --> 00:39:10,400 >> Torej, mislim, da je ena stvar, da se v tem primeru, da imamo opravka z dvema različnima 791 00:39:10,400 --> 00:39:13,510 vrsta ljudi sprašuje strežnik za stvari hkrati. 792 00:39:13,510 --> 00:39:17,455 In razlog, da printf vrste čaka tako in tako vse odlagališč ven 793 00:39:17,455 --> 00:39:21,760 naenkrat je bolj povezana z kako printf vrste - 794 00:39:21,760 --> 00:39:25,100 tako način printf dejansko izvajal, da ima v bistvu 795 00:39:25,100 --> 00:39:28,850 govoriti z operacijskim sistemom za pisanje da se stvari na konzoli. 796 00:39:28,850 --> 00:39:33,460 Tako da ne želijo, da stori vse, da stvari takoj, ko rečeš printf 797 00:39:33,460 --> 00:39:36,260 nekateri niz, saj da bi lahko dobili drag če mora 798 00:39:36,260 --> 00:39:37,340 narediti, da vsakič. 799 00:39:37,340 --> 00:39:41,530 >> Torej, če vam printf hej, svoj program dejansko ni mogoče natisniti, da 800 00:39:41,530 --> 00:39:43,040 Takoj na konzolo. 801 00:39:43,040 --> 00:39:46,080 To bi lahko rekli, v redu, sem to napisal. 802 00:39:46,080 --> 00:39:49,570 In potem nekako čakati na vas, da je pred dejansko malo več 803 00:39:49,570 --> 00:39:51,380 to pisanje ven na konzoli. 804 00:39:51,380 --> 00:39:54,040 >> Torej razlog, da je bil primer - 805 00:39:54,040 --> 00:39:56,450 in to je nekako nepovezani za spanje - 806 00:39:56,450 --> 00:40:00,060 je, da je spanja nekako le injicira tam prikazati 807 00:40:00,060 --> 00:40:02,480 Dejstvo, da se ne pišejo pa sinhrono. 808 00:40:02,480 --> 00:40:06,210 Vendar je razlog za to je le zmogljivost, tako da vam ne bo treba 809 00:40:06,210 --> 00:40:08,920 da to veliko stikov v operacijski sistem. 810 00:40:08,920 --> 00:40:12,300 >> Ampak tukaj, kaj smo res poskušali narediti s tem spanjem stvar je samo predstava 811 00:40:12,300 --> 00:40:17,730 da ko imamo dva človeka na obisku Ta spletna stran, ki je ne bo dal 812 00:40:17,730 --> 00:40:22,310 jim v liniji, kjer se dogaja, da reči Moram vam pomagati, in potem, ko sem 813 00:40:22,310 --> 00:40:25,350 popolnoma končana vam bomo pomagali, ko ti pet sekund, nato pa bom 814 00:40:25,350 --> 00:40:26,750 premakniti na naslednjo osebo. 815 00:40:26,750 --> 00:40:29,515 Zato zahteva od prve osebe ne zvezal ta dogodek zanko 816 00:40:29,515 --> 00:40:31,610 če je to smiselno. 817 00:40:31,610 --> 00:40:34,980 >> Ampak tukaj je dejansko primer nekaj, kar bo tie 818 00:40:34,980 --> 00:40:36,090 do dogodka zanke. 819 00:40:36,090 --> 00:40:39,130 Torej, tukaj je grozno funkcijo izračunati n-Fibonacci. 820 00:40:39,130 --> 00:40:43,510 To je dobesedno slabši način lahko izračunati n-število Fibonaccijevo. 821 00:40:43,510 --> 00:40:48,480 In to je pravzaprav samo priznati če ta prišel, 822 00:40:48,480 --> 00:40:49,330 tam je pravzaprav - 823 00:40:49,330 --> 00:40:53,230 Mislim, da ga lahko poskusite, da gredo najti - vendar tam je kot zelo dolgem blog 824 00:40:53,230 --> 00:40:54,130 objavili, da je nekdo napisal. 825 00:40:54,130 --> 00:40:55,660 To je kot enega od teh Reddit stvari. 826 00:40:55,660 --> 00:40:59,650 Ampak nekdo kritiziral Node.js, in jih ta uporablja kot primer. 827 00:40:59,650 --> 00:41:03,700 Tako da sem nekako želela, da bi vam samo pokazal dva različne perspektive, samo da bi dobili 828 00:41:03,700 --> 00:41:07,320 splošno razumevanje konceptov ozadju teh dveh stvari. 829 00:41:07,320 --> 00:41:13,050 >> Vendar je ta izbran kot samo grozno, strašno neučinkovita računsko 830 00:41:13,050 --> 00:41:15,940 intenziven način za izračun n-število Fibonacci. 831 00:41:15,940 --> 00:41:21,180 Torej samo kot stran pismo, zakaj je je grozno všeč na en način? 832 00:41:21,180 --> 00:41:23,210 Ja? 833 00:41:23,210 --> 00:41:25,130 >> PUBLIKA: Povejte, da ste začeli ven s 1000. 834 00:41:25,130 --> 00:41:27,050 1000 razdeli na 999 in 998. 835 00:41:27,050 --> 00:41:28,970 Vsak to razdeli na dve stvari. 836 00:41:28,970 --> 00:41:30,890 Vsak to razdeli na dve stvari. 837 00:41:30,890 --> 00:41:31,355 >> KEVIN SCHMID: Right. 838 00:41:31,355 --> 00:41:32,400 >> PUBLIKA: Vse pot navzdol. 839 00:41:32,400 --> 00:41:32,840 >> KEVIN SCHMID: Točno tako. 840 00:41:32,840 --> 00:41:37,330 Torej samo ponoviti za kamero, če sem pokličite FIB na kot 1000 ali kaj podobnega 841 00:41:37,330 --> 00:41:41,810 tako, da je očitno ne manj kot ali enaka enemu zato bom 842 00:41:41,810 --> 00:41:46,040 pojdite na to drugega primera, in potem bom poklicati FIB 999 plus Lagati 998. 843 00:41:46,040 --> 00:41:50,290 In potem precej vse to Delo, ki FIB 999 pa je 844 00:41:50,290 --> 00:41:52,950 nekako na tem nivoju. 845 00:41:52,950 --> 00:41:55,620 Če greš navzdol, to je še bolj odveč kot to, ampak, če ste le 846 00:41:55,620 --> 00:42:01,390 mislim, računalništvo Lagati 998 bolnikih nam zelo blizu Lagati 999. 847 00:42:01,390 --> 00:42:05,860 Zato moramo res biti malo bolj pameten o tem, kako smo se nekako ponovno uporabo 848 00:42:05,860 --> 00:42:07,580 ti, a ne bomo ponovno uporabo te stvari sploh. 849 00:42:07,580 --> 00:42:11,860 Torej si lahko predstavljate to velikanski, orjaška drevesa, ki je samo grozno. 850 00:42:11,860 --> 00:42:12,940 >> Ampak vseeno, OK. 851 00:42:12,940 --> 00:42:14,040 Tako da je bil Lagati. 852 00:42:14,040 --> 00:42:15,530 Samo traja nekaj časa teči. 853 00:42:15,530 --> 00:42:16,510 Ja? 854 00:42:16,510 --> 00:42:17,760 >> PUBLIKA: [neslišno]. 855 00:42:17,760 --> 00:42:20,430 856 00:42:20,430 --> 00:42:22,481 >> KEVIN SCHMID: Oh, bi lahko Ponavljam vprašanje? 857 00:42:22,481 --> 00:42:23,731 >> PUBLIKA: [neslišno]. 858 00:42:23,731 --> 00:42:30,840 859 00:42:30,840 --> 00:42:33,990 >> KEVIN SCHMID: Oh, tako je to samo code da se dogaja, da se nekako na 860 00:42:33,990 --> 00:42:34,850 strani strežnika. 861 00:42:34,850 --> 00:42:38,100 Tako da to ne bo mogoče najti v brskalniku ali kaj podobnega. 862 00:42:38,100 --> 00:42:42,160 To je v bistvu tisto, kar imamo, je, da ko uporabnik tukaj zelo veliko naredi 863 00:42:42,160 --> 00:42:45,300 njihovo ponovno zahteva, ko smo nekako vložijo zahtevo, bomo klic 864 00:42:45,300 --> 00:42:47,040 ta funkcija na strani strežnika. 865 00:42:47,040 --> 00:42:50,480 In potem bomo dobili rezultat nazaj kliče to funkcijo. 866 00:42:50,480 --> 00:42:52,460 In potem bomo samo tiskanje je za uporabnika. 867 00:42:52,460 --> 00:42:54,580 Torej, ali je uporabnik v resnici ne ukvarjajo s to funkcijo preveč. 868 00:42:54,580 --> 00:42:57,270 >> Je bilo to vprašanje? 869 00:42:57,270 --> 00:42:58,470 Ali to smiselno? 870 00:42:58,470 --> 00:42:58,810 OK. 871 00:42:58,810 --> 00:43:00,930 Cool. 872 00:43:00,930 --> 00:43:04,240 >> Torej, še enkrat, to storimo celo res.writeHead stvar, kjer smo natisnete 873 00:43:04,240 --> 00:43:05,150 glava. 874 00:43:05,150 --> 00:43:09,730 In potem sem na koncu odgovor na ta način magična številka Lagati 45. 875 00:43:09,730 --> 00:43:12,100 Zato naj samo teče ta strežnik. 876 00:43:12,100 --> 00:43:15,190 Tako bom naredil vozlišča fib.js. 877 00:43:15,190 --> 00:43:17,340 Torej, zdaj moja Lagati strežnik teče. 878 00:43:17,340 --> 00:43:21,790 >> In potem tukaj, bom narediti eno od teh. 879 00:43:21,790 --> 00:43:22,200 OK? 880 00:43:22,200 --> 00:43:24,960 Torej, jaz sem samo reči, Curl. 881 00:43:24,960 --> 00:43:32,226 Tako da bo trajalo nekaj časa, vendar upajmo, da bo kmalu končati in 882 00:43:32,226 --> 00:43:35,660 se bo izpisal, da je 45. Fibonaccijevo število. 883 00:43:35,660 --> 00:43:36,910 >> PUBLIKA: [neslišno]. 884 00:43:36,910 --> 00:43:40,720 885 00:43:40,720 --> 00:43:42,050 >> KEVIN SCHMID: mora dobili storiti kmalu. 886 00:43:42,050 --> 00:43:43,780 Zato bi ga bilo treba pet do šest sekund. 887 00:43:43,780 --> 00:43:48,570 Ne vem, to je samo da V8 super hitro, vendar v vsakem primeru pa je to 888 00:43:48,570 --> 00:43:52,700 zelo kratek zgled in namenoma Neelegantan za nepomembno 889 00:43:52,700 --> 00:43:54,200 računanje. 890 00:43:54,200 --> 00:43:56,700 Torej čez nekaj časa, to ne razumem tega. 891 00:43:56,700 --> 00:44:02,130 >> Toda zdaj, kaj pa če naredim to isto vrsto Eksperiment kot prej, kjer sem se 892 00:44:02,130 --> 00:44:04,010 dve zahtevi hkrati? 893 00:44:04,010 --> 00:44:06,990 Torej, tukaj bom do Curl o da naslov in bom 894 00:44:06,990 --> 00:44:08,260 storiti še Curl. 895 00:44:08,260 --> 00:44:12,070 In zapomnite si, ko smo to naredili za spati strežnik, ko smo v bistvu je imela 896 00:44:12,070 --> 00:44:15,320 po petih sekundah, so precej precej sta se vrnila pravica 897 00:44:15,320 --> 00:44:16,380 približno ob istem času. 898 00:44:16,380 --> 00:44:18,650 Torej ni bil posebej povezan. 899 00:44:18,650 --> 00:44:20,290 >> Vendar poskusiva zdaj. 900 00:44:20,290 --> 00:44:22,370 OK, tako da imamo naša dva procesa. 901 00:44:22,370 --> 00:44:24,210 Ne pozabite, to so ID-ji procesa. 902 00:44:24,210 --> 00:44:25,900 To se dogaja, da se malo nerodno, ko smo se zavlekle. 903 00:44:25,900 --> 00:44:31,340 904 00:44:31,340 --> 00:44:35,360 Zato naj samo ostati tukaj in počakati. 905 00:44:35,360 --> 00:44:37,090 >> Torej, eden izmed njih naj bi prišli nazaj po všeč - 906 00:44:37,090 --> 00:44:39,190 OK, tako da eden prišel nazaj. 907 00:44:39,190 --> 00:44:43,570 Ampak zakaj potem ni naredil drugega eden prišel samo še nazaj? 908 00:44:43,570 --> 00:44:44,389 Ja? 909 00:44:44,389 --> 00:44:49,280 >> PUBLIKA: Strežnik ne more storiti ničesar medtem ko je računski da veliko število. 910 00:44:49,280 --> 00:44:51,620 >> KEVIN SCHMID: Right. 911 00:44:51,620 --> 00:44:55,395 Tako je bil odziv le da strežnik res ne more storiti ničesar, medtem 912 00:44:55,395 --> 00:44:57,460 to je računalništvo to številko Fibonaccijevo. 913 00:44:57,460 --> 00:44:59,360 Torej, zdaj sem dobil moji dve stvari nazaj. 914 00:44:59,360 --> 00:45:03,210 Ampak mislim, da samo zato, da razmišljajo o zakoniku malo več, kako se to dela 915 00:45:03,210 --> 00:45:05,030 in vse. 916 00:45:05,030 --> 00:45:11,750 >> Tako da je ta funkcija tu je koda, ki Povedal sem ta strežnik teči, ko je 917 00:45:11,750 --> 00:45:14,100 dobi nov dohodni zahtevo. 918 00:45:14,100 --> 00:45:17,940 Tako da je šele tekoč teči skozi to Celoten kodo, in potem je šel 919 00:45:17,940 --> 00:45:21,120 Nazaj na dogodek zanke in nato nadaljevati preverjanje novih dogodkov. 920 00:45:21,120 --> 00:45:23,670 Torej v bistvu to, kar smo se dogaja je strežnik 921 00:45:23,670 --> 00:45:25,080 poslušanje za nove stvari. 922 00:45:25,080 --> 00:45:28,070 Prva oseba, ki prosi za to, kar je 45. 923 00:45:28,070 --> 00:45:30,490 Vodimo to kodo to izračunati. 924 00:45:30,490 --> 00:45:33,420 Ta oznaka traja približno pet za šest sekund teči. 925 00:45:33,420 --> 00:45:36,990 Potem gremo nazaj na dogodek zanke in preverjanje novih prijav. 926 00:45:36,990 --> 00:45:42,700 >> Torej je to primer, kako je, če si imajo stvari, ki so tako imenovani izračunati 927 00:45:42,700 --> 00:45:48,140 zavezuje, ali pa uporabite veliko računskih, ne moči, ampak kot so 928 00:45:48,140 --> 00:45:50,260 računsko intenzivne - 929 00:45:50,260 --> 00:45:54,080 Mislim, da ena stvar za povedati o tem, je Ta funkcija počne v celoti, 930 00:45:54,080 --> 00:45:56,310 Za večino del, precej koristno delo v redu. 931 00:45:56,310 --> 00:45:59,970 Ves čas, da to callback Funkcija je tekel, je bilo precej 932 00:45:59,970 --> 00:46:03,670 veliko preživela večino svojega časa samo računalništvo številko, da n-to Fibonaccijevo. 933 00:46:03,670 --> 00:46:05,930 >> Vendar pa smo imeli samo eno nit obravnavati. 934 00:46:05,930 --> 00:46:10,270 V modelu Apache, ko dve osebi podala zahtevo, da se FIB 45, smo 935 00:46:10,270 --> 00:46:11,610 bi imela dva različna teme. 936 00:46:11,610 --> 00:46:15,060 In potem naloga operacijskega sistema bi bilo, ali raven uporabnik 937 00:46:15,060 --> 00:46:18,660 kodo, ki upravlja teme, bi si je, da rezina, da se na 938 00:46:18,660 --> 00:46:23,060 CPU, ali celo, če ste imeli več mikroprocesorjev, jih razdelili enakomerno čez procesorjev 939 00:46:23,060 --> 00:46:26,130 tako da sta bila oba zasluge približno ob istem času. 940 00:46:26,130 --> 00:46:31,120 >> Torej, samo, da vam pokaže, kako lahko nekako - in to ni skupna popoln 941 00:46:31,120 --> 00:46:34,280 rešitev, ampak nekako, kako smo lahko da pridejo nazaj in narediti 942 00:46:34,280 --> 00:46:35,880 malo bolje. 943 00:46:35,880 --> 00:46:41,540 Torej, kaj imam tukaj je program, imenovan Fib C in to v bistvu uporablja 944 00:46:41,540 --> 00:46:45,690 še eden od modulov vozlišče se imenuje Otrok proces modul. 945 00:46:45,690 --> 00:46:49,210 Tako da sem vključen da na vrhu vrste podobnega Jaz bi naredil funt vključuje 946 00:46:49,210 --> 00:46:51,230 Otrok process.h ali kaj podobnega. 947 00:46:51,230 --> 00:46:56,210 Zdaj imam dostop do te CP spremenljivke ki ima vse svoje funkcije. 948 00:46:56,210 --> 00:47:01,810 >> Torej, kaj zdaj delam na tem odgovoru Vodnik je tečem ta program 949 00:47:01,810 --> 00:47:04,100 dot poševnica FIB 45. 950 00:47:04,100 --> 00:47:06,820 Torej, kaj sem naredil - in grem izstopiti iz tega programa 951 00:47:06,820 --> 00:47:07,620 malo - 952 00:47:07,620 --> 00:47:11,060 je sem napisal program C, ki osnovi izračuna 953 00:47:11,060 --> 00:47:12,630 n-število Fibonacci. 954 00:47:12,630 --> 00:47:15,960 Torej, tukaj je samo program sem napisal v C, ki izračuna to. 955 00:47:15,960 --> 00:47:19,040 Lahko ga pripravijo, in lahko tečem da v ukazni vrstici. 956 00:47:19,040 --> 00:47:22,150 In to se dogaja, izračun 45. Fibonaccijevo število. 957 00:47:22,150 --> 00:47:24,510 >> Torej opazil to šele zalotiti precej dlje. 958 00:47:24,510 --> 00:47:28,240 Jaz bi verjetno uporablja pomišljaj 03 do to ali kaj podobnega, da optimizirajo, 959 00:47:28,240 --> 00:47:31,050 vendar sem naredil tako kot redni nastavitve prevajalnika. 960 00:47:31,050 --> 00:47:33,260 In jo natisne. 961 00:47:33,260 --> 00:47:36,830 >> Toda zdaj, kaj sem nekako počne? 962 00:47:36,830 --> 00:47:39,800 Oh oprosti, napačno datoteko. 963 00:47:39,800 --> 00:47:42,800 Zato sem naredil iste stvari s glava kot prej. 964 00:47:42,800 --> 00:47:45,780 Potem sem naredil to cp.exec. 965 00:47:45,780 --> 00:47:49,460 Torej, kaj bo to storiti, je, da je bo za zagon tega programa. 966 00:47:49,460 --> 00:47:51,960 Ampak način to deluje, je, da da je ne bo treba čakati na 967 00:47:51,960 --> 00:47:53,400 ta program do konca. 968 00:47:53,400 --> 00:47:56,000 To samo v bistvu pravi, izvedbo tega programa. 969 00:47:56,000 --> 00:47:58,700 Tako da v bistvu ta tip v zapoved uren vrste. 970 00:47:58,700 --> 00:48:02,350 >> In potem, ko ste končali s da, prost dostop to funkcijo. 971 00:48:02,350 --> 00:48:04,800 Torej sedaj smo nekako dobili to Celoten obnovljena stvar 972 00:48:04,800 --> 00:48:06,750 tako kot ne bomo čakali. 973 00:48:06,750 --> 00:48:08,530 Ali to nekako smiselno? 974 00:48:08,530 --> 00:48:08,990 Ja? 975 00:48:08,990 --> 00:48:11,060 >> PUBLIKA: [neslišno]? 976 00:48:11,060 --> 00:48:13,610 >> KEVIN SCHMID: Torej bo to dejansko odprli nov postopek, da to storite. 977 00:48:13,610 --> 00:48:19,310 Torej, to je pravzaprav na nek način, zlo, zlo ne super, vendar je 978 00:48:19,310 --> 00:48:22,990 pomembno, da rečemo, da je ta vrsta vrača, na eni strani, Apache 979 00:48:22,990 --> 00:48:26,450 model, kjer bomo naredili teme in procesov za vsako zahtevo, ali 980 00:48:26,450 --> 00:48:29,280 procesov za vsako zahtevo. 981 00:48:29,280 --> 00:48:32,090 Torej, to je nekako analogno s tem, kar počne Apache. 982 00:48:32,090 --> 00:48:35,110 V nekaterih primerih bo samo uporabo novega nit, ki je malo več svetlobe 983 00:48:35,110 --> 00:48:39,040 teža kot na proces, vendar Apache lahko na koncu odcepitev nov proces 984 00:48:39,040 --> 00:48:43,370 ki je nekako kar delamo tukaj posredno s tem dot slash FIB 45. 985 00:48:43,370 --> 00:48:48,690 >> In potem v tem primeru smo nekako nastali enake stroške postopkov. 986 00:48:48,690 --> 00:48:50,710 Torej je to samo ena stvar, ki jo lahko narediš. 987 00:48:50,710 --> 00:48:52,600 Ampak samo prikazati te vrste teka. 988 00:48:52,600 --> 00:48:57,120 In to govori samo res namenjen predstavljanje tovrstnih programov, 989 00:48:57,120 --> 00:49:00,710 način prikazati različne poglede na kako oblikovati strežnikov, kot je ta. 990 00:49:00,710 --> 00:49:08,300 Torej, to je tekmovanje v teku, nato pa zdaj, če jaz to še enkrat, imam dva procesa ID. 991 00:49:08,300 --> 00:49:10,320 >> Pogovoriva se o tem Stvari poudariti. 992 00:49:10,320 --> 00:49:11,980 Tako opazili, da oni postopoma. 993 00:49:11,980 --> 00:49:12,700 To je v redu. 994 00:49:12,700 --> 00:49:15,140 Ker je bilo 27.122 prej. 995 00:49:15,140 --> 00:49:18,580 Ampak obvestilo sedaj, so se vrnili ob približno istem času. 996 00:49:18,580 --> 00:49:23,960 >> In zdaj, dobro vprašanje vprašati o Zato je bil, da je v primeru, čigar delo 997 00:49:23,960 --> 00:49:27,590 je to zdaj nekako bi te stvari vrsta igrajo sejem z vsako 998 00:49:27,590 --> 00:49:31,350 druga, ta dva primera dot slash Lagati 45, da sem tekel 999 00:49:31,350 --> 00:49:32,880 ali da Node tekel? 1000 00:49:32,880 --> 00:49:36,940 Ki nekako omogoča pošteno, da sta oba se nekako uravnoteženo čas delovanja? 1001 00:49:36,940 --> 00:49:42,900 1002 00:49:42,900 --> 00:49:44,220 >> PUBLIKA: [neslišno]. 1003 00:49:44,220 --> 00:49:44,620 >> KEVIN SCHMID: Ja. 1004 00:49:44,620 --> 00:49:49,740 Torej v bistvu, ko sem naredil dot slash FIB 45 ali nekaj takega, zdaj je 1005 00:49:49,740 --> 00:49:53,750 nekako do operacijskega sistema ročaj čas delovanja teh programov. 1006 00:49:53,750 --> 00:49:56,920 Zdaj pa jih lahko razporedite na različnih procesorjev ali njej 1007 00:49:56,920 --> 00:49:58,330 jih lahko urnik. 1008 00:49:58,330 --> 00:50:01,870 To lahko razdelijo največ časa, da je eden CPU ga dobi ali da bi dobili 1009 00:50:01,870 --> 00:50:03,330 teči na enem procesorju. 1010 00:50:03,330 --> 00:50:05,620 Tako da je ideja, da. 1011 00:50:05,620 --> 00:50:07,220 Ali to smiselno, da se vse? 1012 00:50:07,220 --> 00:50:10,950 Torej, zdaj Node v resnici ni igral del v razdelitev teh nalog. 1013 00:50:10,950 --> 00:50:12,200 OK. 1014 00:50:12,200 --> 00:50:14,050 1015 00:50:14,050 --> 00:50:17,840 >> Torej, to je skoraj to za primere. 1016 00:50:17,840 --> 00:50:23,370 Hotel sem samo pokazati eno stvar ker veliko tega je bila doslej 1017 00:50:23,370 --> 00:50:27,350 ne povsem super praktična v nekaterih primerih. 1018 00:50:27,350 --> 00:50:30,970 Lahko si predstavljam, prihaja domov po tem govori in nekaj rekel in podobno, 1019 00:50:30,970 --> 00:50:35,710 tudi jaz nekako prišel iz tega pogovora, ki Lahko bi Fibonaccijevo strežnik za 1020 00:50:35,710 --> 00:50:37,360 moj zadnji projekt. 1021 00:50:37,360 --> 00:50:40,770 Torej, tukaj je nekako še en primer , ki bo, upajmo, - 1022 00:50:40,770 --> 00:50:44,620 Morda ne, toda morda - malo več nekako pomembne za končnih projektov in 1023 00:50:44,620 --> 00:50:46,440 mislim vnaprej za stvari, kot to. 1024 00:50:46,440 --> 00:50:48,870 >> Torej je to chat.js. 1025 00:50:48,870 --> 00:50:52,290 Torej, to je nekako kot nekaj vzorcev strani strežnika kodo, ki jo lahko uporabite za 1026 00:50:52,290 --> 00:50:55,700 ustanoviti majhno chat strežnik, kot je ki ste jih videli na 1027 00:50:55,700 --> 00:50:56,630 Facebook Chat ali karkoli. 1028 00:50:56,630 --> 00:50:59,990 Torej, jaz ne pravim, da je to, kot Facebook Klepet, ampak to je nekako 1029 00:50:59,990 --> 00:51:06,230 kot dobro - morda ni dobro, ampak morda dobra - izhodišče za klepet 1030 00:51:06,230 --> 00:51:08,560 strežnik za vašo spletno stran za končno projekta. 1031 00:51:08,560 --> 00:51:11,040 Zato si oglejmo, kaj se počne. 1032 00:51:11,040 --> 00:51:15,500 >> Tako da smo dobili to posebno stvar na vrhu, to VAR SIO 1033 00:51:15,500 --> 00:51:17,050 enaka zahteva Socket.IO. 1034 00:51:17,050 --> 00:51:20,280 Torej je to še ena stvar, ki pa ne dejansko pridejo v paketu z 1035 00:51:20,280 --> 00:51:22,300 Node, vendar ga lahko namestite. 1036 00:51:22,300 --> 00:51:23,480 To je Node modul. 1037 00:51:23,480 --> 00:51:25,670 Torej, to je tako kot nekateri razširitev Node. 1038 00:51:25,670 --> 00:51:29,220 >> SocketIO je dejansko res nekako kul. 1039 00:51:29,220 --> 00:51:32,550 To je abstrakcija, ki v bistvu tisto, kar to pa je, je, da vam omogoča, da 1040 00:51:32,550 --> 00:51:35,770 ima ta tok komunikacije med web 1041 00:51:35,770 --> 00:51:39,430 brskalnik in spletni strežnik. 1042 00:51:39,430 --> 00:51:45,250 Torej, za večino del Doslej smo imeli ti zelo hitro eno sekundo ali dve 1043 00:51:45,250 --> 00:51:48,790 Drugi komunikacije med web brskalnik in spletni strežnik. 1044 00:51:48,790 --> 00:51:53,310 Tako da je v bistvu pojdite na google.com, get stvari, ga pošljejo nazaj, nato pa 1045 00:51:53,310 --> 00:51:53,770 končali smo. 1046 00:51:53,770 --> 00:51:56,560 Bomo nikoli več govoril, dokler uporabnik vnese v nekaj drugega. 1047 00:51:56,560 --> 00:52:01,090 >> Toda kaj Socket.IO in podobne vrste stvari - in SocketIO je dejansko eden 1048 00:52:01,090 --> 00:52:03,940 stvari, ki je zgrajena na tako WebSocket ki je nekako na voljo 1049 00:52:03,940 --> 00:52:06,440 kot del HTML5 - 1050 00:52:06,440 --> 00:52:09,620 , ki vam omogoča, da imate to nadaljuje dialog. 1051 00:52:09,620 --> 00:52:13,990 To pa je zelo koristna v streľnikom takšne stvari, saj je 1052 00:52:13,990 --> 00:52:17,390 nekako kot stalen dialog v nekaj načinov, ker če ste klepetali 1053 00:52:17,390 --> 00:52:21,540 z nekom, zdaj lahko samo pošlji Sporočilo navzdol cevi, nato pa 1054 00:52:21,540 --> 00:52:23,940 Strežnik lahko pošljete sporočilo navzdol cev na drugo osebo, ki vas 1055 00:52:23,940 --> 00:52:24,520 klepet s. 1056 00:52:24,520 --> 00:52:26,903 In potem si lahko to izmenjujejo tako. 1057 00:52:26,903 --> 00:52:30,590 1058 00:52:30,590 --> 00:52:32,850 >> Tako da je nekako kar SocketIO je dobro. 1059 00:52:32,850 --> 00:52:38,400 Razlog, da SocketIO uporablja WebSockets kot ena stvar je, da v 1060 00:52:38,400 --> 00:52:43,980 Poleg samo navaden stare WebSockets, to počne tudi nekaj trikov, da v bistvu 1061 00:52:43,980 --> 00:52:45,610 da bo brskalnik združljive. 1062 00:52:45,610 --> 00:52:50,040 Torej brskalniki, kot so Internet Explorer žal ne podpirajo WebSockets 1063 00:52:50,040 --> 00:52:50,810 pravico iz škatle. 1064 00:52:50,810 --> 00:52:55,290 Tako, da uporablja kakšno drugo vrsto cool gladka stvari z Adobe Flash, da omogočajo 1065 00:52:55,290 --> 00:52:57,170 da imate navzkrižno brskalnik podporo. 1066 00:52:57,170 --> 00:52:58,800 Tako da je res uporabno. 1067 00:52:58,800 --> 00:53:02,440 >> In dejansko, vem, da sem nekako vožnjo na čas tukaj, ampak CS50 1068 00:53:02,440 --> 00:53:08,490 Pogovorite se, ste že kdaj videli kaj kot, ne vem, prazno, in tako je 1069 00:53:08,490 --> 00:53:11,030 odgovarjanje na ta post ali kaj podobnega tako, da je funkcija? 1070 00:53:11,030 --> 00:53:12,250 To je SocketIO. 1071 00:53:12,250 --> 00:53:15,580 Torej, ko se začne nekdo pisati v razpravljali polje, da bi odgovor ali 1072 00:53:15,580 --> 00:53:20,040 Nekaj ​​Vaš brskalnik ne, kaj je pozval SocketIO oddaja nekakšen 1073 00:53:20,040 --> 00:53:22,660 Dogodek, ki pravi, da je nekdo odgovarjanje na ta post. 1074 00:53:22,660 --> 00:53:26,110 >> Potem strežnik pravi, OK, Kaj moram narediti? 1075 00:53:26,110 --> 00:53:29,270 No sedaj moram povedati tistih fantov ki so na CS50 Pogovorite se išče 1076 00:53:29,270 --> 00:53:31,170 na ta post, da nekdo odgovor. 1077 00:53:31,170 --> 00:53:34,190 Tako da je nekako tisto, kar je SocketIO dobro, to stalno vrste 1078 00:53:34,190 --> 00:53:35,930 Tok dialoga. 1079 00:53:35,930 --> 00:53:37,250 OK. 1080 00:53:37,250 --> 00:53:40,060 >> Torej, kaj imam tukaj - in smo pravkar gre prezreti povezave niz 1081 00:53:40,060 --> 00:53:41,390 za malo - 1082 00:53:41,390 --> 00:53:43,080 kaj sem naredil je, da sem se še poslušati. 1083 00:53:43,080 --> 00:53:46,880 Torej to je samo način, kako se Socket.IO pravijo, dajmo poslušati na ta vrata. 1084 00:53:46,880 --> 00:53:50,060 In potem sem to naredil na povezavo. 1085 00:53:50,060 --> 00:53:53,360 Tako, da je samo v bistvu Socket IO je način rekel, ko smo prejeli 1086 00:53:53,360 --> 00:53:55,840 povezava, vam želim zagnati to kodo. 1087 00:53:55,840 --> 00:53:59,870 >> In opazil, da namesto da rec in res je minilo tam imam vtičnice. 1088 00:53:59,870 --> 00:54:03,260 In to Socket ideja je v bistvu to stvar, ki jo lahko pišeš in branje 1089 00:54:03,260 --> 00:54:05,750 s tem, da ima uporabnikov Sporočila morebiti. 1090 00:54:05,750 --> 00:54:10,700 In sporočila, ki bi jih pošiljate Lahko greš skozi to vtičnico. 1091 00:54:10,700 --> 00:54:12,140 Ali to smiselno? 1092 00:54:12,140 --> 00:54:14,490 Tako da je ta nenehna stvar. 1093 00:54:14,490 --> 00:54:17,820 >> Torej, kaj sem naredil je, da sem poklical Socket.emit. 1094 00:54:17,820 --> 00:54:20,330 In oddajanja traja precej veliko dva argumenta. 1095 00:54:20,330 --> 00:54:24,100 Prvi argument je niz Samo predstavlja vrsto 1096 00:54:24,100 --> 00:54:25,270 stvar, ki ste oddajajo. 1097 00:54:25,270 --> 00:54:28,120 Torej, v tem primeru, sem uporabo ta niz novo sporočilo. 1098 00:54:28,120 --> 00:54:32,670 In to je samo v bistvu pravi, da tip to stvar, kar sem 1099 00:54:32,670 --> 00:54:34,750 pošiljanje, je novo sporočilo. 1100 00:54:34,750 --> 00:54:38,460 Tako da lahko poslušate za posebne vrste kot novo sporočilo, ali karkoli 1101 00:54:38,460 --> 00:54:39,960 s piko na. 1102 00:54:39,960 --> 00:54:44,570 >> Torej povezava in uporabniku poslal tja, če pogledate, če rečemo piko, 1103 00:54:44,570 --> 00:54:48,150 tistih, ki so ostali nizi, ki predstavljajo Vrste uporabniških sporočil. 1104 00:54:48,150 --> 00:54:52,060 Torej, to je v bistvu lahko imaš to oddajajo ena od teh vrst sporočil, in 1105 00:54:52,060 --> 00:54:55,520 naredite nekaj v odgovor na eden od teh tipov sporočil 1106 00:54:55,520 --> 00:54:57,640 >> Torej sem oddaja novo sporočilo. 1107 00:54:57,640 --> 00:55:00,540 Bomo prezreti connections.push za sekundo. 1108 00:55:00,540 --> 00:55:03,360 Ampak potem sem rekel, Socket.on uporabnik pošlje. 1109 00:55:03,360 --> 00:55:07,540 Torej, zdaj je nekako všeč, ko Uporabnik mi pošlje sporočilo, želim 1110 00:55:07,540 --> 00:55:09,240 da zaženete to kodo. 1111 00:55:09,240 --> 00:55:12,080 In opazil, da je ta anonimna funkcija je pokazal v tej spremenljivki 1112 00:55:12,080 --> 00:55:16,300 imenovano podatki, ki se v bistvu dogaja da ima sporočilo uporabnikov. 1113 00:55:16,300 --> 00:55:20,700 >> Torej, zdaj pa nekako govori o povezave matrika. 1114 00:55:20,700 --> 00:55:24,590 Torej je to namenjeno za stranko klepet kjer je v bistvu vsi nekako v 1115 00:55:24,590 --> 00:55:25,950 Enako klepetalnica. 1116 00:55:25,950 --> 00:55:29,640 Torej v bistvu, kaj moramo ohraniti okrog je nekaj matrika, ki v bistvu 1117 00:55:29,640 --> 00:55:33,170 zastopa vse ljudi v klepet nekaj načinov, če je to smiselno. 1118 00:55:33,170 --> 00:55:33,340 Kajne? 1119 00:55:33,340 --> 00:55:37,190 Ker moramo vedeti, kdo te fante tako da jim lahko pošiljate sporočila 1120 00:55:37,190 --> 00:55:39,140 da drugi ljudje pošljejo nas. 1121 00:55:39,140 --> 00:55:44,440 >> Torej, kaj ta oznaka pa je, ko uporabnik pošlje sporočilo - da je vrsta 1122 00:55:44,440 --> 00:55:45,300 dogodek - 1123 00:55:45,300 --> 00:55:47,120 bomo zagnati to kodo. 1124 00:55:47,120 --> 00:55:51,240 In kaj moramo storiti, je tečemo skozi to matrika, ki smo jih imenujemo povezave. 1125 00:55:51,240 --> 00:55:54,390 In precej za vsako povezavo razen tistega, ki je naša, ki je 1126 00:55:54,390 --> 00:55:59,520 kaj ta koda pravi, smo poslali novo sporočilo s tem, priloženega sporočilu 1127 00:55:59,520 --> 00:56:01,210 informacije. 1128 00:56:01,210 --> 00:56:04,880 >> Torej, če ste opazili, tukaj, kaj sem storil, ko uporabnik dejansko daje novo 1129 00:56:04,880 --> 00:56:08,560 je povezava Dodal sem z JavaScript.push način, to je 1130 00:56:08,560 --> 00:56:12,100 v bistvu samo pravim, kot dodajanje da Socket kot vrednost v 1131 00:56:12,100 --> 00:56:13,900 naša povezave matrika. 1132 00:56:13,900 --> 00:56:20,560 Torej, zdaj, ko je ta koda deluje, bo pošljete stvari tistim, zlasti 1133 00:56:20,560 --> 00:56:22,020 povezave. 1134 00:56:22,020 --> 00:56:26,980 Torej je to lahko dobro izhodišče za izdelavo strežnika za klepet 1135 00:56:26,980 --> 00:56:28,250 ali kaj podobnega. 1136 00:56:28,250 --> 00:56:33,315 >> In nekako kul stvar je, da kodo, ki jo vidite tu, kot na in 1137 00:56:33,315 --> 00:56:36,390 oddajajo in stvari, kot da je enako vrsta JavaScript kodo, ki bi jo 1138 00:56:36,390 --> 00:56:39,260 pisati v brskalniku za interakcijo s strežnikom. 1139 00:56:39,260 --> 00:56:42,480 Tako da je, zakaj SocketIO je nekako gladka in uporabna na ta način. 1140 00:56:42,480 --> 00:56:45,680 1141 00:56:45,680 --> 00:56:49,250 >> Oh, in samo ena stvar zelo hitro. 1142 00:56:49,250 --> 00:56:55,970 Lani je bilo CS50 končni projekt , ki v bistvu izvaja klepet 1143 00:56:55,970 --> 00:56:57,840 Strežnik v Node.js. 1144 00:56:57,840 --> 00:57:01,350 Mislim, da je Harvardchats.org ampak jaz nisem - 1145 00:57:01,350 --> 00:57:02,940 OK. 1146 00:57:02,940 --> 00:57:06,190 Nisem prepričan, kaj je URL, vendar Ne morem poslati, da ven kasneje. 1147 00:57:06,190 --> 00:57:09,260 Ampak to je nekako kul, kaj lahko to storite z Node.js. 1148 00:57:09,260 --> 00:57:14,680 >> Zato upam, da na splošno, fantje imajo Dober občutek, kaj Node.js je koristno 1149 00:57:14,680 --> 00:57:17,870 in kako bi lahko morda veljajo na svoj končni projekt. 1150 00:57:17,870 --> 00:57:21,050 Bom poslala nekaj več Sredstva skupaj s tem. 1151 00:57:21,050 --> 00:57:23,170 In hvala ker ste prišli. 1152 00:57:23,170 --> 00:57:23,610 Hvala vam. 1153 00:57:23,610 --> 00:57:27,168 >> [APPLAUSE]