1 00:00:00,000 --> 00:00:08,350 2 00:00:08,350 --> 00:00:09,710 >> KEVIN SCHMID: Pozdrav svima. 3 00:00:09,710 --> 00:00:12,640 Dobrodošli na CS50 seminara 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 Ja sam CS50 TF. 6 00:00:15,580 --> 00:00:17,650 I ja sam nešto kao jako uzbuđeni o ovom seminaru. 7 00:00:17,650 --> 00:00:20,430 Mislim Node.js je vrlo cool. 8 00:00:20,430 --> 00:00:24,200 Nadam se da je ovaj seminar može se koristiti kao dobro, pretpostavljam, dasku za 9 00:00:24,200 --> 00:00:26,380 neke od svojih završnih projekata, ukoliko da ste zainteresirani za korištenje 10 00:00:26,380 --> 00:00:27,630 nešto poput Node.js. 11 00:00:27,630 --> 00:00:29,770 12 00:00:29,770 --> 00:00:33,320 >> Mi ćemo svojevrsni početak seminar isključiti samo govori o malo 13 00:00:33,320 --> 00:00:36,970 vrsta pozadinskog skalabilnost perspektive Node.js, a zatim 14 00:00:36,970 --> 00:00:39,240 ćemo premjestiti na neke primjere koda. 15 00:00:39,240 --> 00:00:42,340 I ja ću imati kod na web stranicama, a možete pogledati kôd. 16 00:00:42,340 --> 00:00:45,475 I nakon seminara, Sredit ću govoriti o tome kako se postaviti Node.js 17 00:00:45,475 --> 00:00:48,220 na vašem računalu. 18 00:00:48,220 --> 00:00:48,710 >> OK. 19 00:00:48,710 --> 00:00:49,760 Pa počnimo. 20 00:00:49,760 --> 00:00:53,700 Pa mislim da samo želim razgovarati o tome Web poslužitelji, zapravo, prvi put. 21 00:00:53,700 --> 00:00:59,730 A za početak ovu raspravu, ja osnovi imaju dijagram koji je od 22 00:00:59,730 --> 00:01:04,269 Udžbenik koristi za CS61, koji osnovi pokazuje interakcija 23 00:01:04,269 --> 00:01:08,510 između procesa klijenta, kao što je vaš web preglednik ili kao što je vaš cilj klijenta ili 24 00:01:08,510 --> 00:01:11,340 nešto slično, i web poslužitelja. 25 00:01:11,340 --> 00:01:15,150 Dakle, ta vrsta izgleda slično sliku koju je vidio u predavanju o 26 00:01:15,150 --> 00:01:19,270 Srijeda, gdje zapravo imamo neke Proces kao što su Google Chrome klijenta. 27 00:01:19,270 --> 00:01:22,980 >> A onda je jedan korak Klijent šalje zahtjev. 28 00:01:22,980 --> 00:01:27,510 Tako da može biti nešto kao i neka je posjetiti, ne znam, CS50.net. 29 00:01:27,510 --> 00:01:29,320 Tako smo izdati taj zahtjev. 30 00:01:29,320 --> 00:01:34,280 I ne bilo tko sjetiti imena protokol koji određuje kako se to 31 00:01:34,280 --> 00:01:35,610 Zahtjev treba biti strukturiran? 32 00:01:35,610 --> 00:01:36,382 Yep. 33 00:01:36,382 --> 00:01:37,650 >> PUBLIKA: [nečujan]. 34 00:01:37,650 --> 00:01:38,150 >> KEVIN SCHMID: Točno. 35 00:01:38,150 --> 00:01:40,100 Dakle, to je kao HTTP, zar ne? 36 00:01:40,100 --> 00:01:44,720 Tako je u osnovi specifikacija za koliko Zahtjev da se zapravo trebao biti položen 37 00:01:44,720 --> 00:01:47,450 van, jer je na kraju dan, taj zahtjev zapravo samo željeli 38 00:01:47,450 --> 00:01:50,240 niz koji u osnovi kaže želim to. 39 00:01:50,240 --> 00:01:53,580 I specifikacija za koji je HTTP. 40 00:01:53,580 --> 00:01:55,270 Dakle, to je kao protokol. 41 00:01:55,270 --> 00:01:57,920 >> Pa onda poslužitelj prima taj zahtjev. 42 00:01:57,920 --> 00:02:01,610 Dakle, vi imate instaliran web poslužitelj u CS50 aparata. 43 00:02:01,610 --> 00:02:02,460 To je Apache. 44 00:02:02,460 --> 00:02:06,230 I ovaj tjedan kad radite na problemu postaviti sedam, zapravo ćete biti rad 45 00:02:06,230 --> 00:02:08,160 s tim web poslužitelja. 46 00:02:08,160 --> 00:02:12,380 Dakle, poslužitelj primi taj zahtjev, a onda to mora nekako ispočetka njegova 47 00:02:12,380 --> 00:02:15,090 glavu i reći kao i ono što da radim s ovim? 48 00:02:15,090 --> 00:02:20,060 >> Dakle, na temelju onoga što se odluči na to, onda možda morati obratiti nekakav 49 00:02:20,060 --> 00:02:20,730 od resursa. 50 00:02:20,730 --> 00:02:23,700 I koji bi mogao biti izvor mnogo različitih stvari. 51 00:02:23,700 --> 00:02:26,810 Za jednu, to bi mogao biti samo poput statičkog HTML datoteke. 52 00:02:26,810 --> 00:02:29,820 Dakle, to samo može biti kao neki HTML koji je kao za 53 00:02:29,820 --> 00:02:31,100 Vaša osobna web stranica. 54 00:02:31,100 --> 00:02:35,360 To bi mogao biti statična sliku kao slika ili kao film koji imate. 55 00:02:35,360 --> 00:02:37,660 To čak može razgovarati do neke vrste baze podataka 56 00:02:37,660 --> 00:02:39,530 poput MySQL baze podataka. 57 00:02:39,530 --> 00:02:43,910 Dakle, to ne mora uvijek komunicirati s resursima, ali u 58 00:02:43,910 --> 00:02:45,700 U nekim slučajevima, to može. 59 00:02:45,700 --> 00:02:47,800 >> Pa onda ono što će učiniti Nakon toga je da će 60 00:02:47,800 --> 00:02:49,430 poslati natrag odgovor. 61 00:02:49,430 --> 00:02:53,130 A odgovor na to je Također je navedeno od strane HTTP. 62 00:02:53,130 --> 00:02:54,830 Pa onda klijent može primiti. 63 00:02:54,830 --> 00:02:56,740 To ga razdire i obraditi. 64 00:02:56,740 --> 00:03:00,900 I onda ste dobili web stranicu poput Google ili CS50.net ili 65 00:03:00,900 --> 00:03:02,240 god otišao. 66 00:03:02,240 --> 00:03:03,100 OK? 67 00:03:03,100 --> 00:03:06,080 >> Dakle, to je osnovni interakcija koje ćemo se baviti. 68 00:03:06,080 --> 00:03:08,770 I mi smo prilično mnogo će biti s naglaskom na ovom dijelu 69 00:03:08,770 --> 00:03:10,640 interakcija, poslužitelja. 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 Bilo tko imati bilo kakvih pitanja do sada? 73 00:03:15,500 --> 00:03:17,720 OK. 74 00:03:17,720 --> 00:03:22,430 >> Dakle, kao što smo rekli, web poslužitelj prima ovo HTTP zahtjev, a zatim donosi ovaj 75 00:03:22,430 --> 00:03:24,760 HTTP odgovor. 76 00:03:24,760 --> 00:03:29,100 I kao što smo razgovarali o tome i prije, CS50 aparata web poslužitelj Apache. 77 00:03:29,100 --> 00:03:32,490 Dakle, kada ste dečki rade na P postaviti sedam, idete da se radi s 78 00:03:32,490 --> 00:03:34,120 Apache web poslužitelj. 79 00:03:34,120 --> 00:03:37,890 Vi nikada nećete morati jako raditi sa Apache izravno previše. 80 00:03:37,890 --> 00:03:41,920 Vi vrsta konfiguriranje Apache malo Kada navedete virtualni domaćini ili 81 00:03:41,920 --> 00:03:44,970 V domaćini, te da ćemo dobiti to da u malo. 82 00:03:44,970 --> 00:03:50,620 >> Ali u osnovi, Apache web poslužitelja postavljen za rad sa PHP vrste 83 00:03:50,620 --> 00:03:51,730 od out of the box. 84 00:03:51,730 --> 00:03:56,170 Dakle, što se zapravo događa je kada idete na jednu od vaših web stranica kao što su, recimo, 85 00:03:56,170 --> 00:04:00,360 lokalni domaćin slash index.php ili tako nešto, Je li vaš preglednik šalje da 86 00:04:00,360 --> 00:04:04,330 Zahtjev, a zatim Apache sjedi postoje i figure out učiniti s njom. 87 00:04:04,330 --> 00:04:08,840 I akcija je izvršiti da je kod u index.php i 88 00:04:08,840 --> 00:04:11,330 a zatim ga poslati natrag. 89 00:04:11,330 --> 00:04:15,640 Dakle, tamo je. 90 00:04:15,640 --> 00:04:16,980 Tako smo nekako razgovarali o tome. 91 00:04:16,980 --> 00:04:21,990 Dakle, to samo može poslužiti statičnu sliku ili pokrenuti neke PHP kod i onda problem 92 00:04:21,990 --> 00:04:23,510 odgovor. 93 00:04:23,510 --> 00:04:27,670 >> Pa onda zajedničko pitanje koje može doći gore je dobro, kako ćemo zaista bave 94 00:04:27,670 --> 00:04:31,750 sa što više korisnika u isto vrijeme? 95 00:04:31,750 --> 00:04:36,930 Pa zamislite da ste bili pisanju web poslužitelj, ako je web poslužitelj koji 96 00:04:36,930 --> 00:04:39,900 da si pokušavao pisati u nečemu kao C ili nešto slično, 97 00:04:39,900 --> 00:04:45,150 osnovi možete razmišljati o tome kako postoji bi mogla biti neka vrsta koda koji 98 00:04:45,150 --> 00:04:49,330 će primiti zahtjev, ali onda to mora učiniti sve to raditi na njemu. 99 00:04:49,330 --> 00:04:53,060 To možda ima, primjerice, obratite baza podataka ili nešto slično. 100 00:04:53,060 --> 00:04:53,300 Zar ne? 101 00:04:53,300 --> 00:04:56,010 I onda bi napraviti takvu obrade, a zatim 102 00:04:56,010 --> 00:04:57,060 poslao natrag odgovor. 103 00:04:57,060 --> 00:04:58,950 Tako da je kao visoki Pregled razini. 104 00:04:58,950 --> 00:05:04,210 >> No, to nije odmah očito kako možete to učiniti tako da se dvije osobe ili 105 00:05:04,210 --> 00:05:09,040 čak 1.000 ljudi mogli raditi sa svojim Web poslužitelj istovremeno. 106 00:05:09,040 --> 00:05:14,880 Dakle, rješenje koje Apache koristi naziva teme ili procesi. 107 00:05:14,880 --> 00:05:16,770 Dakle, možda ste čuli ti termini prije. 108 00:05:16,770 --> 00:05:22,190 To je u redu ako niste, ali samo mislim o niti ili procesa kao načina za 109 00:05:22,190 --> 00:05:26,290 operativni sustav ili program korisnika ili nešto slično ili web poslužitelj 110 00:05:26,290 --> 00:05:28,810 na neki način izvršiti više stvari odjednom. 111 00:05:28,810 --> 00:05:31,760 Dakle, možda ste čuli za pojam kao niti izvršenja. 112 00:05:31,760 --> 00:05:34,140 Dakle, to je vrsta kao što ste svojevrsni multitasking. 113 00:05:34,140 --> 00:05:37,710 >> A ako ste vidjeli na kutiji od svoje laptop, ili nešto slično, 114 00:05:37,710 --> 00:05:43,040 višežilni, što možete učiniti je možete izvoditi dvije različite teme na drugačiji 115 00:05:43,040 --> 00:05:46,700 dijelovi procesora, tako da oni mogu zapravo dogoditi istovremeno. 116 00:05:46,700 --> 00:05:48,100 Dakle, ovo je stvarno moćan. 117 00:05:48,100 --> 00:05:52,270 A to je vrsta Apache-a Rješenje ovog problema. 118 00:05:52,270 --> 00:05:57,900 >> Dakle, postoje li vrste poput bilo kojeg pitanja s ovim pristupom, iako? 119 00:05:57,900 --> 00:05:59,870 Pa mislim da sam nekako ih je napisao tamo. 120 00:05:59,870 --> 00:06:03,440 No, obojica su nekako koriste mnogo memorije. 121 00:06:03,440 --> 00:06:07,490 To je vrlo skupo za izradu nit ili procesa. 122 00:06:07,490 --> 00:06:11,750 >> I dio obrazloženja je da je samo kao kad radite C program 123 00:06:11,750 --> 00:06:15,090 kao što je vaš glavni, a zatim da se pozivi još jedna funkcija, koja ima 124 00:06:15,090 --> 00:06:16,520 neka vrsta dimnjaka. 125 00:06:16,520 --> 00:06:19,910 Dakle, niti je također zahtijevaju cijelosti odvojeno stog koji 126 00:06:19,910 --> 00:06:21,220 može biti vrlo velik. 127 00:06:21,220 --> 00:06:25,170 A ako možete zamisliti da tone Korisnici na svoju web stranicu, te će imati 128 00:06:25,170 --> 00:06:26,280 Mnogo različite teme. 129 00:06:26,280 --> 00:06:28,230 To je puno dimnjaka na upravljanje i održavanje. 130 00:06:28,230 --> 00:06:31,280 Tako da je velika potrošnja memorije. 131 00:06:31,280 --> 00:06:35,650 >> A onda, također, recimo imate samo jedan procesor, ili recimo imate 132 00:06:35,650 --> 00:06:38,460 više niti nego što imaju ti multicores. 133 00:06:38,460 --> 00:06:38,730 Zar ne? 134 00:06:38,730 --> 00:06:43,280 Pa recimo da je imao 10 teme i vama je samo pet procesora. 135 00:06:43,280 --> 00:06:46,260 Vi vrsta morati učiniti nešto takvo, gdje prebacujete između struje 136 00:06:46,260 --> 00:06:49,090 onaj koji je pokrenut jer ste Ne mogu izvoditi svi 10 odjednom. 137 00:06:49,090 --> 00:06:50,980 I to se zove switch kontekst. 138 00:06:50,980 --> 00:06:54,260 I da pojam zapravo ima par različitim kontekstima, ali neka je samo 139 00:06:54,260 --> 00:06:56,620 mislim da je to kao prebacivanje između dvije teme. 140 00:06:56,620 --> 00:06:59,730 To može biti prilično skupo, jer osnovi ono što morate učiniti je što 141 00:06:59,730 --> 00:07:03,340 morate zaustaviti ono što radite, spasiti stanje tog tekućeg nit, a 142 00:07:03,340 --> 00:07:05,440 zatim se prebacite na negdje drugdje. 143 00:07:05,440 --> 00:07:09,420 >> Dakle nema svatko vrsta vidjeti motivacija zašto teme i 144 00:07:09,420 --> 00:07:12,030 procesi mogu biti malo prostran? 145 00:07:12,030 --> 00:07:13,840 A jeste li pitanje? 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 li tko kakvih pitanja? 149 00:07:18,090 --> 00:07:19,620 OK. 150 00:07:19,620 --> 00:07:26,720 >> Dakle, ako ćemo uzeti jedan korak natrag za drugi, Tu je vrsta kao što 151 00:07:26,720 --> 00:07:30,350 Kad kažemo da možemo napraviti oko Mnogo web aplikacija. 152 00:07:30,350 --> 00:07:34,810 I to je stvarno tako puno njih zapravo, ne radite to puno korisniji 153 00:07:34,810 --> 00:07:37,140 raditi unutar nit. 154 00:07:37,140 --> 00:07:41,170 Tako je bilo tko je započeo P postaviti sedam uopće? 155 00:07:41,170 --> 00:07:45,650 Dakle, želite li možda opisati Neki od dijelova? 156 00:07:45,650 --> 00:07:47,850 Jeste li radili na prijavu ili nešto slično? 157 00:07:47,850 --> 00:07:49,330 >> Ivanković: Ne. 158 00:07:49,330 --> 00:07:49,780 >> KEVIN SCHMID: OK. 159 00:07:49,780 --> 00:07:50,150 Ništa za to. 160 00:07:50,150 --> 00:07:50,900 Oprostite. 161 00:07:50,900 --> 00:07:55,790 Ali u osnovi, u P skupa, ti si će biti stvaranje mnogo vrsta 162 00:07:55,790 --> 00:07:59,760 upita na bazu podataka kako bi dobili neki Informacije iz te baze podataka. 163 00:07:59,760 --> 00:08:03,330 I ono što je kod ispravno ćete da se radi, što to Apache proces ili 164 00:08:03,330 --> 00:08:06,030 da Apache nit će biti događaj a to je da se obratite 165 00:08:06,030 --> 00:08:08,990 Baza je to vrsta će biti sjedi tamo i to će biti 166 00:08:08,990 --> 00:08:12,130 čeka baza za odgovor. 167 00:08:12,130 --> 00:08:16,290 >> Sada da možda ne zvuči kao neka velika nositi, jer je baza podataka na vašem 168 00:08:16,290 --> 00:08:18,240 CS50 aparata, zar ne? 169 00:08:18,240 --> 00:08:22,930 Ali postoji neka vrsta mreže latencija tamo, jer sada web 170 00:08:22,930 --> 00:08:26,830 poslužitelj mora izdati svoj zahtjev za baza za komunikaciju s 171 00:08:26,830 --> 00:08:29,520 baza podataka, a zatim se da Informacije natrag. 172 00:08:29,520 --> 00:08:33,190 Dakle, sada je kao i čekaj me, ja sam ići dobiti nešto od 173 00:08:33,190 --> 00:08:35,770 baze podataka i zatim tu je Puno čeka događa. 174 00:08:35,770 --> 00:08:36,870 Ima li to smisla? 175 00:08:36,870 --> 00:08:38,580 >> A za neke stvari to nije tako loše. 176 00:08:38,580 --> 00:08:41,950 Ako se samo ima, na primjer, Access Memory, koji nije kao 177 00:08:41,950 --> 00:08:44,100 strašno I / O latencija. 178 00:08:44,100 --> 00:08:47,110 A kad kažem, I / O latencije, što sam koji se odnosi na je poput bilo koje vrste kao 179 00:08:47,110 --> 00:08:48,290 ulaz izlaz. 180 00:08:48,290 --> 00:08:52,950 Ali za pristup datoteku na disku, kao i ako sam želio služiti statički HTML 181 00:08:52,950 --> 00:08:57,850 datoteku koja je bila na mojoj web stranici ili nešto slično, nekako moraju 182 00:08:57,850 --> 00:09:02,310 zaustavi za malo, pročitati tu datoteku u iz diska, a zatim u 183 00:09:02,310 --> 00:09:04,400 taj proces čekam. 184 00:09:04,400 --> 00:09:06,700 Neću to korisnog rada. 185 00:09:06,700 --> 00:09:11,270 >> To ne vrijedi za sve, ali to što je uobičajeno u aplikacijama kao što su P setu 186 00:09:11,270 --> 00:09:13,960 sedam i puno aplikacija da ti nisi 187 00:09:13,960 --> 00:09:15,440 zapravo radiš puno razmišljanja. 188 00:09:15,440 --> 00:09:19,090 A kad kažem razmišljanje, mislim kao i računalne rada. 189 00:09:19,090 --> 00:09:23,270 Dakle, računalna posao mogao biti nešto kao što je, recimo, vi htjeli 190 00:09:23,270 --> 00:09:26,590 napisati web poslužitelj koji samo izračunanoga n-ti broj Fibonacci. 191 00:09:26,590 --> 00:09:29,300 To ne zvuči kao posebno zabavno web poslužitelja. 192 00:09:29,300 --> 00:09:34,220 Kao i ja ne očekujem da stranice biti Sljedeći Facebook, ali to je neki 193 00:09:34,220 --> 00:09:35,610 vrsta računalne rada. 194 00:09:35,610 --> 00:09:39,570 >> A možete zamisliti zamjenu da s neka druga vrsta zanimljiva 195 00:09:39,570 --> 00:09:43,070 računalna rad. 196 00:09:43,070 --> 00:09:46,050 Recimo da ste pisali nešto koji izračunava stupnjeva 197 00:09:46,050 --> 00:09:49,170 razdvajanja između dvoje ljudi ili nešto slično. 198 00:09:49,170 --> 00:09:51,860 Tako da ne uključuje neku vrstu obračuna, zar ne? 199 00:09:51,860 --> 00:09:56,630 Pa čak i tada, za to još uvijek ima učiniti puno čekanja za možda 200 00:09:56,630 --> 00:09:59,550 imate na upit bazu podataka za pogledati up koji je prijatelj s tko ili 201 00:09:59,550 --> 00:10:00,600 nešto slično. 202 00:10:00,600 --> 00:10:03,510 Dakle, ne postoji takav pojam računske rad. 203 00:10:03,510 --> 00:10:05,260 Ima li to smisla? 204 00:10:05,260 --> 00:10:08,258 Ima li tko kakvih pitanja? 205 00:10:08,258 --> 00:10:11,960 >> Oh i ja valjda stavio sam chat poslužiteljima postoji jer chat poslužitelji su vrste 206 00:10:11,960 --> 00:10:13,240 još jedan dobar primjer za to. 207 00:10:13,240 --> 00:10:15,250 Chat poslužitelj nema učiniti mnogo razmišljanja. 208 00:10:15,250 --> 00:10:18,350 To samo treba čekati za ljude da slati poruke i onda kada 209 00:10:18,350 --> 00:10:19,800 oni, poslati ih. 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 >> Dakle, samo da se opet recap, Apache i slični web poslužitelja kao što je to vilica a 213 00:10:28,180 --> 00:10:31,470 Mnogo teme i procesa koji može biti vrsta rastrošna. 214 00:10:31,470 --> 00:10:37,530 Pa mislim da se pitanje kako mogu doći iz koje se trebamo imati 215 00:10:37,530 --> 00:10:39,610 više niti i procesa? 216 00:10:39,610 --> 00:10:41,890 Što ako smo upravo imali jedan? 217 00:10:41,890 --> 00:10:45,710 >> Dakle, neka je vrsta slikati sliku što bi to izgledati. 218 00:10:45,710 --> 00:10:47,810 Tako ćemo koristiti samo jednu nit. 219 00:10:47,810 --> 00:10:48,660 OK? 220 00:10:48,660 --> 00:10:52,790 Dakle, samo zamislite ovo s jedne niti. 221 00:10:52,790 --> 00:10:56,600 >> Pretpostavimo da doista ne radi toliko korisna - a kad kažem 222 00:10:56,600 --> 00:10:59,450 korisno, mislim računalne rad - 223 00:10:59,450 --> 00:11:01,130 u tim više niti prije. 224 00:11:01,130 --> 00:11:04,180 Dakle, neka je vrsta konsolidirati sve u jednu nit. 225 00:11:04,180 --> 00:11:07,780 Pa što ako smo imali jednu nit koja ljubaznu samo ide okolo u petlji i 226 00:11:07,780 --> 00:11:10,880 stalno provjerava učinio nešto Nova dogoditi. 227 00:11:10,880 --> 00:11:15,130 Tako na primjer, nešto novo dogodilo bi moglo značiti da je dobio nešto natrag od 228 00:11:15,130 --> 00:11:19,310 baza podataka, ili netko poslao mi novi HTTP zahtjev. 229 00:11:19,310 --> 00:11:22,290 Dakle, oni su vrsta događaja to dogodilo, zar ne? 230 00:11:22,290 --> 00:11:26,130 >> I onda ono što ja mogu učiniti kad oni novi stvari koje se događaju u tom istom thread 231 00:11:26,130 --> 00:11:30,120 izvršenja, taj jedan nit izvršenja, mogu nazvati neki kod koji 232 00:11:30,120 --> 00:11:32,410 će nositi tu određenu stvar. 233 00:11:32,410 --> 00:11:36,640 Tako primjerice, ako sam dobio nešto natrag iz baze podataka, mogao sam pokrenuti moje 234 00:11:36,640 --> 00:11:40,960 Mali računalna dio toga da zapravo samo priprema stvar 235 00:11:40,960 --> 00:11:42,620 poslati natrag korisniku. 236 00:11:42,620 --> 00:11:46,710 Tako se ta vrsta ima smisla? 237 00:11:46,710 --> 00:11:49,940 >> No, ono što su stvarno Posljedica toga? 238 00:11:49,940 --> 00:11:50,660 Zar ne? 239 00:11:50,660 --> 00:11:53,730 Zato što sam napisao Mnogo kod tog - 240 00:11:53,730 --> 00:11:58,330 a ja sam samo idući u skok naprijed u slajdovima, ako je to u redu. 241 00:11:58,330 --> 00:12:00,930 Dakle, ako vam ne smeta, ja sam samo ide se korak unatrag. 242 00:12:00,930 --> 00:12:03,410 Dakle, ovako nešto je zove događaj petlje. 243 00:12:03,410 --> 00:12:04,070 OK? 244 00:12:04,070 --> 00:12:07,240 I nekako je osnovni Ideja Node.js. 245 00:12:07,240 --> 00:12:11,240 >> Pa što Node.js stvarno radi kao webu poslužitelj postoji jedna nit 246 00:12:11,240 --> 00:12:14,850 da je u osnovi se vrtimo u petlji kao dok je jedna vrsta nedovoljne 247 00:12:14,850 --> 00:12:18,510 napa od Node.js koji je stalno ček, jesmo li primati nove stvari? 248 00:12:18,510 --> 00:12:22,720 I onda će se izvoditi rukuju koje ste postavili. 249 00:12:22,720 --> 00:12:26,720 No, dobro pitanje to pitati je, kako možemo napraviti ovo dogodilo 250 00:12:26,720 --> 00:12:28,090 s postojećim stvarima? 251 00:12:28,090 --> 00:12:32,440 >> Zato sam stavio liniju C kod ovdje osnovi izgleda kao da je otvaranje 252 00:12:32,440 --> 00:12:33,060 podnijeti, zar ne? 253 00:12:33,060 --> 00:12:36,090 Ja je upravo izašao s albuma. 254 00:12:36,090 --> 00:12:39,600 Zato sam morao joj otvoriti novu datoteku. 255 00:12:39,600 --> 00:12:43,810 Dakle, način na koji naš C kod za operativni - 256 00:12:43,810 --> 00:12:47,890 i mislim da razlog izabrao sam bio datoteke jer je to vrsta mjeri 257 00:12:47,890 --> 00:12:52,000 od I / O poslu koji smo učinili u C u Osjećaj da je ulaz izlaz. 258 00:12:52,000 --> 00:12:55,070 Dakle, mi to nazivamo kod koji čini f otvorene. 259 00:12:55,070 --> 00:12:59,370 A onda je u sljedećem retku naših Program, sada možemo raditi s f. 260 00:12:59,370 --> 00:13:02,710 >> Dakle, to će biti primjer nešto to je kao sinkroni ili 261 00:13:02,710 --> 00:13:06,850 blokiranja, jer na toj prvoj crti postoji čekamo dok ne 262 00:13:06,850 --> 00:13:08,110 dobili file otvoren. 263 00:13:08,110 --> 00:13:12,260 Dakle, u drugom redu, znamo da smo može raditi s F, a to znači da se 264 00:13:12,260 --> 00:13:16,240 da je druga linija stvarno ne mogu izvoditi dok se prva linija je učinio. 265 00:13:16,240 --> 00:13:17,760 Ima li to smisla? 266 00:13:17,760 --> 00:13:20,890 >> Dakle, to bi bilo loše da se stavi u događaj rukovatelj. 267 00:13:20,890 --> 00:13:23,920 A razlog za to je da ova vrsta čeka, zar ne? 268 00:13:23,920 --> 00:13:26,500 Dakle, to bi nas vratili natrag na istu stvar. 269 00:13:26,500 --> 00:13:29,470 I sada mi se ne bi ni korist od više niti ili 270 00:13:29,470 --> 00:13:32,390 procesi, jer smo dobili jedna nit u Node.js. 271 00:13:32,390 --> 00:13:35,496 Da li to smisla svima? 272 00:13:35,496 --> 00:13:35,990 >> PUBLIKA: Čekajte. 273 00:13:35,990 --> 00:13:36,980 Dakle, ono što je zamjena? 274 00:13:36,980 --> 00:13:37,840 >> KEVIN SCHMID: Oh, pa da. 275 00:13:37,840 --> 00:13:39,560 Tako da ću doći do zamjena. 276 00:13:39,560 --> 00:13:40,430 OK. 277 00:13:40,430 --> 00:13:42,960 Pa što ako smo imali nešto koji je izgledao ovako? 278 00:13:42,960 --> 00:13:45,730 Pa što ako sad sam uredio f otvoriti malo? 279 00:13:45,730 --> 00:13:48,370 Pa ja sam u prolazu isto dva argumenta kao i prije. 280 00:13:48,370 --> 00:13:52,610 Ja još uvijek volim novu pjesmu da je izašao s. 281 00:13:52,610 --> 00:13:57,260 Ali ja sam prolazi treću stvar koja je ova varijabla zove code. 282 00:13:57,260 --> 00:14:02,280 >> No, ono što je kod zapravo u ovom kontekstu? 283 00:14:02,280 --> 00:14:05,360 Je li to kao redoviti C varijablu? 284 00:14:05,360 --> 00:14:06,740 To je funkcija, zar ne? 285 00:14:06,740 --> 00:14:09,450 I to može biti malo čudno, jer Ja sam zapravo kao sada prolazi 286 00:14:09,450 --> 00:14:12,320 funkcionirati u drugu funkciju. 287 00:14:12,320 --> 00:14:14,400 >> Dakle, par stvari koje trebate imati na umu to. 288 00:14:14,400 --> 00:14:17,145 Jedan, nisam zapravo zove Kod funkcije. 289 00:14:17,145 --> 00:14:20,650 Tako da ne vidim kod s lijeva zagrada, zar zagr. 290 00:14:20,650 --> 00:14:23,010 Ja sam samo u prolazu u kodu. 291 00:14:23,010 --> 00:14:26,990 A u C, što bi to zapravo učiniti je dati mi pokazivač da stvarna 292 00:14:26,990 --> 00:14:29,740 broj, i onda bi to moglo pokrenuti ga. 293 00:14:29,740 --> 00:14:33,350 Ali samo razmišljati o tome što ste položenog koda pri 294 00:14:33,350 --> 00:14:35,150 da je datoteka otvorena. 295 00:14:35,150 --> 00:14:41,430 >> No, što to znači da je sada Ostatak mog programa koji bi mogao napraviti 296 00:14:41,430 --> 00:14:47,050 druga stvar, može nastaviti raditi druge stvari, a mi, stvarno ne čekati, ali 297 00:14:47,050 --> 00:14:50,890 samo u stražnjem dijelu glave koji Kada se to dokumenti su otvorene, staza na kojoj se 298 00:14:50,890 --> 00:14:52,130 Kod na vrhu. 299 00:14:52,130 --> 00:14:53,390 Ima li to smisla? 300 00:14:53,390 --> 00:14:58,060 >> I sada Ideja je da Node.js Kod u napraviti stvari s f 301 00:14:58,060 --> 00:15:04,590 dio bi trebao biti prilično kratko i jednostavno i jasan, a ne stvarno biti 302 00:15:04,590 --> 00:15:06,160 Vrlo računski intenzivna. 303 00:15:06,160 --> 00:15:09,390 To će možda morati otvoriti još jednu sliku, ali koji je također trebao biti prilično brzo 304 00:15:09,390 --> 00:15:14,710 jer to samo treba reći napraviti još jedan f otvoriti i onda to nazivamo drugog koda. 305 00:15:14,710 --> 00:15:19,100 >> Dakle, samo da bude potpuno jasno, f otvoriti da se novi Katy Perry pjesmu 306 00:15:19,100 --> 00:15:23,060 učinio mp3, da će se to prilično koliko vratiti odmah. 307 00:15:23,060 --> 00:15:27,820 I onda mi samo možemo nastaviti raditi druga stvar, jer sve što je sada f 308 00:15:27,820 --> 00:15:33,410 Otvoreni poziv nema je reći osnovi Temeljni f otvoren kod otvoriti ovu datoteku 309 00:15:33,410 --> 00:15:36,020 i kada ste gotovi s otvaranjem ove datoteku ili kada ga dobiti natrag, 310 00:15:36,020 --> 00:15:37,480 zatim pokrenuti taj kod. 311 00:15:37,480 --> 00:15:39,540 No, to ne zapravo pokrenuti taj kod. 312 00:15:39,540 --> 00:15:41,815 I što je pitanje? 313 00:15:41,815 --> 00:15:46,180 >> PUBLIKA: Kao da si podrazumijeva nekoliko puta da dodavanje računski 314 00:15:46,180 --> 00:15:50,545 intenzivna kod vrsta razbiti [Nečujan] upravljan sustav. 315 00:15:50,545 --> 00:15:51,795 [Nečujan]? 316 00:15:51,795 --> 00:15:54,450 317 00:15:54,450 --> 00:15:55,290 >> KEVIN SCHMID: To je veliko pitanje. 318 00:15:55,290 --> 00:15:59,280 Tako sam zapravo primjer kako možete integrirati računski 319 00:15:59,280 --> 00:16:01,090 intenzivna kod u malo. 320 00:16:01,090 --> 00:16:03,620 Dakle, kada smo dobili na primjere koda, Ja ću biti sigurni da će se povući taj jedan. 321 00:16:03,620 --> 00:16:04,700 Je li to u 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 >> Koje je tvoje ime? 325 00:16:08,750 --> 00:16:10,620 >> PUBLIKA: Aaron. 326 00:16:10,620 --> 00:16:14,830 >> KEVIN SCHMID: Aaron dovodi do vrlo dobra stvar, a to je da, ako sam imao 327 00:16:14,830 --> 00:16:18,560 Neki računski intenzivna kod u učiniti stvari s f dijela, ostatak 328 00:16:18,560 --> 00:16:22,880 moj program ne može pokrenuti i ne mogu slušati za nove zahtjeve ili ništa dok se sve 329 00:16:22,880 --> 00:16:24,270 ta stvar je gotova. 330 00:16:24,270 --> 00:16:27,390 Dakle, ako ja pišem čvora kod u cjelini osim ako mi nešto kao da ću 331 00:16:27,390 --> 00:16:33,060 predložiti kasnije, kada pogledamo kod primjera, moram biti siguran da 332 00:16:33,060 --> 00:16:36,060 moj broj ne vezati ovaj događaj petlje. 333 00:16:36,060 --> 00:16:38,120 Ima li to smisla? 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 >> Dakle Node.js nudi ovaj okvir koji možete izgraditi tih događaja odvezao 337 00:16:47,090 --> 00:16:48,210 poslužitelje s. 338 00:16:48,210 --> 00:16:53,460 Tako da je ova vrsta asinkroni ne-blokiranje I / O knjižnice, dok je 339 00:16:53,460 --> 00:16:56,800 standardne C biblioteke da smo bili rad s, kao i ako ste upravo 340 00:16:56,800 --> 00:16:59,500 koristiti ih na isti način na koji smo bio koristeći ih s f otvara i 341 00:16:59,500 --> 00:17:03,000 stvari, one blokiraju jer vi ste zapravo morati čekati 342 00:17:03,000 --> 00:17:04,470 tu datoteku otvoriti. 343 00:17:04,470 --> 00:17:09,290 >> Ali Node.js daje vam da se i to osnovi veže na Googleov V8 344 00:17:09,290 --> 00:17:14,030 JavaScript engine koji je razlog da Chrome je tako brzo na obradu 345 00:17:14,030 --> 00:17:17,040 JavaScript jer ima tu V8 motor. 346 00:17:17,040 --> 00:17:22,460 Pa znam da zvuči kao jedan od onih WWDC razvojne konferencije stvar 347 00:17:22,460 --> 00:17:25,390 gdje su samo baciti hrpu Pismo broj stvari za procesore 348 00:17:25,390 --> 00:17:26,910 i kažu da je to super. 349 00:17:26,910 --> 00:17:34,200 Ali, to je super da su učinili to zato JavaScript - 350 00:17:34,200 --> 00:17:37,010 ili možda ako niste upoznati s JavaScript još, jer nismo imali 351 00:17:37,010 --> 00:17:38,180 Predavanja na njega - 352 00:17:38,180 --> 00:17:40,770 ali JavaScript je tumačiti jezik. 353 00:17:40,770 --> 00:17:41,970 >> A to je važna točka previše. 354 00:17:41,970 --> 00:17:45,790 Dakle, to je važno za našu webu poslužitelji biti brza, zar ne? 355 00:17:45,790 --> 00:17:49,970 A ako smo samo trčanje JavaScript kod koji se tumači sa samo 356 00:17:49,970 --> 00:17:52,130 bilo staro tumač to bi moglo biti spor. 357 00:17:52,130 --> 00:17:55,980 Dakle Čvor koristi od toga imaju super brzo V8 tumač. 358 00:17:55,980 --> 00:17:59,580 A ja ne znam da li su ga nazvali jer V8 slap u čelo 359 00:17:59,580 --> 00:18:01,110 stvar, ali u redu. 360 00:18:01,110 --> 00:18:07,070 >> Tako sam pripremio neke primjere na ovom URL-u. 361 00:18:07,070 --> 00:18:10,490 Nakon seminara, ja sam nekako ide govoriti o tome kako možete dobiti čvora set 362 00:18:10,490 --> 00:18:13,570 gore, ali za sada, samo sam nekako žele šetati kroz neke primjere koda. 363 00:18:13,570 --> 00:18:17,250 Dakle, ako želite pratiti zajedno, sve Izvorni kod je dostupan ovdje. 364 00:18:17,250 --> 00:18:18,720 OK? 365 00:18:18,720 --> 00:18:22,280 >> Tako da ću napustiti ovaj URL za malo. 366 00:18:22,280 --> 00:18:24,440 I onda sam samo ću prebaciti u terminal. 367 00:18:24,440 --> 00:18:29,670 368 00:18:29,670 --> 00:18:34,400 Jesu li svi dobro s ovom URL-u? 369 00:18:34,400 --> 00:18:37,990 Tako da ću prijeći mom terminala ovdje. 370 00:18:37,990 --> 00:18:42,030 >> Dakle, ovdje je kod koji Imam za danas. 371 00:18:42,030 --> 00:18:43,960 Zašto ne počnemo s simpler.js podnijeti? 372 00:18:43,960 --> 00:18:49,110 373 00:18:49,110 --> 00:18:52,100 Druga stvar je da je sve to Kod će biti zapisano u 374 00:18:52,100 --> 00:18:56,660 JavaScript koju svibanj ili Ne može biti upoznati. 375 00:18:56,660 --> 00:19:00,170 Valjda par stvari je da je puno JavaScript kod je vrsta 376 00:19:00,170 --> 00:19:04,000 sintaksa i struktura je vrlo sličan C, tako da se nekako ga pokupiti što 377 00:19:04,000 --> 00:19:05,020 što ide zajedno. 378 00:19:05,020 --> 00:19:08,750 Pokušao sam napisati puno počevši kod za to na način koji je 379 00:19:08,750 --> 00:19:11,230 slično C, tako da je Malo više čitati. 380 00:19:11,230 --> 00:19:15,980 No, kao što smo napredak, ja ću biti pokazujući neke od dodatnih 381 00:19:15,980 --> 00:19:18,980 značajke JavaScript da su vrsta cool. 382 00:19:18,980 --> 00:19:21,510 >> No pogledajmo ovog uzorka programa. 383 00:19:21,510 --> 00:19:24,820 Mislim da je sve to cut off postoji. 384 00:19:24,820 --> 00:19:28,500 Samo ću se popraviti da je Real brzo, ako je to u redu ili ne. 385 00:19:28,500 --> 00:19:31,400 Ne znam što to će učiniti. 386 00:19:31,400 --> 00:19:34,660 Je li to malo bolje? 387 00:19:34,660 --> 00:19:36,510 Možete li vidjeti var i stvari? 388 00:19:36,510 --> 00:19:39,320 OK. 389 00:19:39,320 --> 00:19:44,120 >> Dakle, prva linija je poput JavaScripta verzija varijable 390 00:19:44,120 --> 00:19:44,800 deklaracija. 391 00:19:44,800 --> 00:19:49,870 Dakle, samo istaknuti ono što bi to izgledati u C. Dakle, to je isto kao 392 00:19:49,870 --> 00:19:52,620 mene govoreći indeks jednako je tri ili nešto slično. 393 00:19:52,620 --> 00:19:55,740 Pa nisam navesti vrstu. 394 00:19:55,740 --> 00:20:00,780 JavaScript ima vrste, ali to je vrlo dinamično upisali u prirodi, tako 395 00:20:00,780 --> 00:20:02,580 nije pružio bilo kakve vrste na njega. 396 00:20:02,580 --> 00:20:03,670 Dakle, to je samo var. 397 00:20:03,670 --> 00:20:05,320 To je kao varijable. 398 00:20:05,320 --> 00:20:05,920 OK? 399 00:20:05,920 --> 00:20:08,340 >> Zovem ovu varijablu HTTP. 400 00:20:08,340 --> 00:20:12,480 I s moje desne strane, moram Izraz koji želim staviti u HTTP. 401 00:20:12,480 --> 00:20:14,960 A to, kaže zahtijevaju HTTP. 402 00:20:14,960 --> 00:20:18,500 Dakle, ovo je neka vrsta slična uključiti. 403 00:20:18,500 --> 00:20:22,940 To je malo više kao moćniji od su u smislu da uključuju 404 00:20:22,940 --> 00:20:26,100 bi samo kopirati i zalijepiti zaglavlje podnijeti za funkciju prototipa ili 405 00:20:26,100 --> 00:20:27,930 god s definicijama tipa. 406 00:20:27,930 --> 00:20:30,590 No, zahtijevaju se zapravo događa da bi nam kod. 407 00:20:30,590 --> 00:20:33,280 >> Dakle, možete misliti o njemu kao uvoza neki kod. 408 00:20:33,280 --> 00:20:37,960 Dakle, negdje u Node.js modula Sustav ili što god, oni su sve to 409 00:20:37,960 --> 00:20:40,790 HTTP poslužitelj koda, tako da sam samo je donijeli za moje vlastito 410 00:20:40,790 --> 00:20:43,130 osobnu uporabu u ovom programu. 411 00:20:43,130 --> 00:20:44,260 OK? 412 00:20:44,260 --> 00:20:46,930 >> Pa onda imam tu funkciju koji sam napisao. 413 00:20:46,930 --> 00:20:50,330 I primijetiti nisam morati navesti Povrat tip ili vrsta 414 00:20:50,330 --> 00:20:51,140 Argumenti opet. 415 00:20:51,140 --> 00:20:54,440 Tako nekako labav upisali u takvog smisla. 416 00:20:54,440 --> 00:20:57,290 Dva argumenti da je potrebno u, Zahtjev i odgovor. 417 00:20:57,290 --> 00:21:02,080 Tako da je konceptualno vrsta kao upoznati sa slike koje smo imali 418 00:21:02,080 --> 00:21:05,280 na zaslonu prije, jer smo dobili ovaj zahtjev koji smo 419 00:21:05,280 --> 00:21:06,410 ima od korisnika. 420 00:21:06,410 --> 00:21:09,170 I onda imamo odgovor koji možemo pisati stvari. 421 00:21:09,170 --> 00:21:15,060 >> Dakle, prva linija to ne res.writeHead 200, a onda je to 422 00:21:15,060 --> 00:21:17,070 Vrsta sadržaja teksta običan. 423 00:21:17,070 --> 00:21:19,300 Pa neka je to komad osim malo. 424 00:21:19,300 --> 00:21:22,340 Tako ćemo se fokusirati na res.write za malo. 425 00:21:22,340 --> 00:21:28,420 Tako je u osnovi pisati, i pisati glavu, su samo načini na neki način napisati 426 00:21:28,420 --> 00:21:29,960 stvari na odgovoru. 427 00:21:29,960 --> 00:21:30,770 OK? 428 00:21:30,770 --> 00:21:36,230 Dakle, pisati glavu, ako itko sjeća iz HTTP predavanju, da li vi momci 429 00:21:36,230 --> 00:21:39,940 zapamtite zaglavlja na Vrh HTTP stvar? 430 00:21:39,940 --> 00:21:43,580 Pa zašto ne ja samo demo zaglavlja vrlo brzo. 431 00:21:43,580 --> 00:21:44,640 Bi li to bilo korisno? 432 00:21:44,640 --> 00:21:45,500 Ili bi mi samo vrsta - 433 00:21:45,500 --> 00:21:46,070 OK. 434 00:21:46,070 --> 00:21:46,740 Naravno. 435 00:21:46,740 --> 00:21:52,340 >> Dakle, kada vaš preglednik ide na google.com ili nešto slično, 436 00:21:52,340 --> 00:21:54,250 tu je zapravo malo više - 437 00:21:54,250 --> 00:21:55,380 to je kao tajna - 438 00:21:55,380 --> 00:21:58,340 Tu je kao malo više informacija koji dolazi kroz cijev nego samo 439 00:21:58,340 --> 00:22:00,180 malo pretraživanja i sve. 440 00:22:00,180 --> 00:22:03,550 Tako da vam pokazati ovo, idem koristiti program koji se zove Curl. 441 00:22:03,550 --> 00:22:04,260 OK? 442 00:22:04,260 --> 00:22:08,020 Dakle, to je nešto što možete raditi na Mac OSX naredbenog retka ili u 443 00:22:08,020 --> 00:22:09,830 aparata ili bilo što drugo. 444 00:22:09,830 --> 00:22:17,050 I tako, ako sam ne Curl HTTP google.com, Idem vidjeti HTML. 445 00:22:17,050 --> 00:22:21,230 A to je, u pravednosti, samo HTML da ti nekako govori da 446 00:22:21,230 --> 00:22:24,695 preusmjeriti na www ako vaš browser ne automatski obrađuju 447 00:22:24,695 --> 00:22:27,110 preusmjeravanje. 448 00:22:27,110 --> 00:22:33,390 >> Dakle, ovo je samo HTML, ali idem dodati Curl ovu crticu sam zastavu. 449 00:22:33,390 --> 00:22:33,600 OK? 450 00:22:33,600 --> 00:22:35,600 I to će se pokazati mene su zaglavlja. 451 00:22:35,600 --> 00:22:40,640 Dakle, ovo je i podatak da je u pitanju kroz kad dobijem ovaj odgovor. 452 00:22:40,640 --> 00:22:41,260 OK? 453 00:22:41,260 --> 00:22:45,320 >> Tako se na vrhu, vidiš ovo HTTP 301 presele trajno. 454 00:22:45,320 --> 00:22:49,470 A to je vrsta važno jer ovo se odnosi na status kod. 455 00:22:49,470 --> 00:22:53,750 Dakle, 301 ovdje je stanje kod, što je zapravo samo cijeli broj 456 00:22:53,750 --> 00:22:57,750 koji govori preglednika ili onaj tko je ovo čitate, ako se pretvarati da 457 00:22:57,750 --> 00:23:01,460 ti si browser i vidite ovo, osnovi sada ako pogledate 458 00:23:01,460 --> 00:23:04,960 da i vi vidite 301, znate ja imam učiniti nešto posebno na temelju 459 00:23:04,960 --> 00:23:08,810 301, ili nešto posebno dogodilo temelji na 301. 460 00:23:08,810 --> 00:23:12,640 Tako je, kaže preselili trajno. 461 00:23:12,640 --> 00:23:17,700 >> A onda je, u osnovi, imamo hrpa ključnih parova vrijednosti. 462 00:23:17,700 --> 00:23:22,100 Tako smo dobili mjesto je www.google.com. 463 00:23:22,100 --> 00:23:25,190 I onda nekako sve to druge stvari, ali u osnovi, ono mjesto je 464 00:23:25,190 --> 00:23:29,662 izreka je nova lokacija je na www.google.com. 465 00:23:29,662 --> 00:23:33,800 Pa sad, ako idete na google.com, vi ćete svojevrsni vidjeti preglednik kakve tren 466 00:23:33,800 --> 00:23:38,770 za drugi i onda preusmjeriti vas vraćam na www.google.com. 467 00:23:38,770 --> 00:23:41,840 Dakle odgovori mogu sadržavati ovi zaglavlja. 468 00:23:41,840 --> 00:23:43,330 >> I par stvari koje treba istaknuti. 469 00:23:43,330 --> 00:23:46,890 Pa recimo da smo bili zapravo uspješna u posjeti web stranicu. 470 00:23:46,890 --> 00:23:49,040 Zato me pusti da se - 471 00:23:49,040 --> 00:23:51,080 Što je dobar website? 472 00:23:51,080 --> 00:23:53,285 Ja sam loše na razmišljanje dobra web stranice na licu mjesta. 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 Učinimo Wikipediju. 476 00:23:56,040 --> 00:23:58,680 Dakle, ovdje sam se preselio. 477 00:23:58,680 --> 00:23:59,240 Oh čekati. 478 00:23:59,240 --> 00:24:00,160 Je li? 479 00:24:00,160 --> 00:24:00,890 Da, bio sam. 480 00:24:00,890 --> 00:24:01,100 OK. 481 00:24:01,100 --> 00:24:03,005 Tako sam dobio za napraviti www. 482 00:24:03,005 --> 00:24:06,006 Tako ću učiniti www. 483 00:24:06,006 --> 00:24:09,680 I kao što možete vidjeti, ovdje je sve HTML koji browser će obraditi 484 00:24:09,680 --> 00:24:10,910 za Wikipediju. 485 00:24:10,910 --> 00:24:14,055 >> Ali, ako sam držati pomicanje gore, ono što ću vidjeti na vrhu - 486 00:24:14,055 --> 00:24:17,800 wow, ima puno HTML na Wikipediji - 487 00:24:17,800 --> 00:24:22,550 ali ono što vidim na vrhu ovdje ovo 200 status code za razliku 488 00:24:22,550 --> 00:24:24,570 301 koji sam vidio ranije. 489 00:24:24,570 --> 00:24:27,100 I primijetiti da ima lijep prijateljski redu uz njega. 490 00:24:27,100 --> 00:24:29,470 Dakle, to je kao dobar status kod. 491 00:24:29,470 --> 00:24:31,160 >> Je li to 200 broj izgleda poznato? 492 00:24:31,160 --> 00:24:34,120 493 00:24:34,120 --> 00:24:39,880 Da, jer kad sam simpler.js, Napisao sam 200 tamo. 494 00:24:39,880 --> 00:24:43,290 Tako da je u osnovi govori reći preglednik ili tko pokušava doći do 495 00:24:43,290 --> 00:24:45,440 to da su oni bili uspješni. 496 00:24:45,440 --> 00:24:49,040 Ili da je vrsta kao što smo mi bili su uspješni. 497 00:24:49,040 --> 00:24:54,320 >> I tu je ta vrsta posebnog sintakse u JavaScript za proglašavanje 498 00:24:54,320 --> 00:24:59,870 Karta tih tipki kao vrstu sadržaja i te vrijednosti kao tekst ravnici. 499 00:24:59,870 --> 00:25:03,780 Dakle, ako pogledate u odgovoru koji smo vratio iz Wikipedije prije, - 500 00:25:03,780 --> 00:25:06,200 Ja ću pokušati pomicanje do malo brže - 501 00:25:06,200 --> 00:25:09,900 Imate li ove tipke kao poslužitelj i te vrijednosti Apache. 502 00:25:09,900 --> 00:25:12,120 Tako ste dobili ključeve i vrijednosti. 503 00:25:12,120 --> 00:25:15,930 I vi možete odrediti u Čvora što poslati natrag. 504 00:25:15,930 --> 00:25:19,380 >> Dakle, ovo je zapravo vrsta, u nekim načina, i na neki način to nije 505 00:25:19,380 --> 00:25:23,170 stvarno, ali to je nešto niža razina od PHP koda da bi moglo biti 506 00:25:23,170 --> 00:25:26,980 pisanja za P postaviti sedam, jer PHP i Apache nekako srediti neke 507 00:25:26,980 --> 00:25:28,150 od tih stvari za vas. 508 00:25:28,150 --> 00:25:32,520 U PHP-u, što može nadjačati zadane ponašanje pisanjem vlastitih zaglavlja. 509 00:25:32,520 --> 00:25:35,520 No, za potrebe ovoga, dobili smo pisati iz vlastita zaglavlja. 510 00:25:35,520 --> 00:25:38,210 511 00:25:38,210 --> 00:25:41,105 >> Dakle, to linija smisla svi, pisati glavu linija? 512 00:25:41,105 --> 00:25:41,380 OK. 513 00:25:41,380 --> 00:25:42,280 Strašan. 514 00:25:42,280 --> 00:25:45,870 >> Dakle, ono što mi je činiti onda je sam kraj odgovor rekavši hello world. 515 00:25:45,870 --> 00:25:47,040 OK. 516 00:25:47,040 --> 00:25:49,920 No, to je samo funkcija zove Zahtjev rukovatelj. 517 00:25:49,920 --> 00:25:53,510 Dakle, sad sam zapravo na neki način učiniti nešto s tom funkcijom, zar ne? 518 00:25:53,510 --> 00:25:59,170 >> Pa evo što ja radim je tu je to linija koja ne var poslužitelja dosegne 519 00:25:59,170 --> 00:26:03,530 HTTP.create server, a onda sam prolaze u zahtjevu rukovatelj. 520 00:26:03,530 --> 00:26:06,080 Dakle, ovo je neka vrsta čvoru način stvaranja poslužitelj. 521 00:26:06,080 --> 00:26:08,790 I obavijest da sam prolazi u dogovoru rukovatelj. 522 00:26:08,790 --> 00:26:12,290 Dakle, ovo je priča o createServer funkcija koja želim da mi napravite 523 00:26:12,290 --> 00:26:16,270 poslužitelja, a kad se to poslužitelj prima odgovor, trebam li se to zvati 524 00:26:16,270 --> 00:26:18,680 zatražiti rukovatelj funkciju. 525 00:26:18,680 --> 00:26:18,990 OK? 526 00:26:18,990 --> 00:26:22,290 >> Tako da je linija prilično završava odmah. 527 00:26:22,290 --> 00:26:28,780 Dakle var linija poslužitelja je učinio pravu Nakon što to učinite prilično mnogo. 528 00:26:28,780 --> 00:26:31,770 Mislim, to je postaviti neke unutarnje Država je znati da će morati 529 00:26:31,770 --> 00:26:35,400 nazvati taj zahtjev rukovatelj funkciju, ali to neće sjediti i 530 00:26:35,400 --> 00:26:37,730 recimo ima korisnik poslao ja još želja? 531 00:26:37,730 --> 00:26:39,270 Je user mi je poslao zahtjev još? 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 >> Pa što će to učiniti je to u osnovi Sada pohranjuje kazaljka na ovom kodeksu, 535 00:26:46,120 --> 00:26:49,670 ovaj zahtjev rukovatelj funkciju, a zatim će pokrenuti taj kod kad netko 536 00:26:49,670 --> 00:26:52,170 čini zahtjev. 537 00:26:52,170 --> 00:26:54,120 I onda mi server.listen. 538 00:26:54,120 --> 00:26:56,950 539 00:26:56,950 --> 00:26:59,960 >> 1337 je prilično proizvoljna. 540 00:26:59,960 --> 00:27:02,285 Nisam imao poseban razlog za branje taj broj. 541 00:27:02,285 --> 00:27:03,860 To je potpuno slučajna. 542 00:27:03,860 --> 00:27:07,010 Ali to samo specificira port. 543 00:27:07,010 --> 00:27:10,640 Dakle, većina web poslužitelja vidjet ćete da su oni koristiti port 80, jer to je vrsta 544 00:27:10,640 --> 00:27:11,810 poput konvencije. 545 00:27:11,810 --> 00:27:16,170 Dakle, ako sam ići na nešto slično, Ne znam, Wikipedia.org, 546 00:27:16,170 --> 00:27:17,700 i ja staviti debelo crijevo 8 - 547 00:27:17,700 --> 00:27:18,610 oh wow, ne možete vidjeti. 548 00:27:18,610 --> 00:27:19,370 Žao mi je. 549 00:27:19,370 --> 00:27:21,820 Ali, ako mi je činiti Wikipediju - 550 00:27:21,820 --> 00:27:24,810 Ja ću ga napisati ovdje samo kako bi to je jasno na fotoaparatu. 551 00:27:24,810 --> 00:27:29,150 Ali, ako sam uzeti u pregledniku sa kolona 80, koji određuje ići na 552 00:27:29,150 --> 00:27:31,430 Wikipedia.org na port 80. 553 00:27:31,430 --> 00:27:36,200 Dakle, to je kao kako Sjedinjene Države imaju više luka poput gdje možete brod 554 00:27:36,200 --> 00:27:37,440 Stvari koje vrste. 555 00:27:37,440 --> 00:27:40,730 Dakle, to je kao da ide na ovaj mjesto na ovom poslužitelju. 556 00:27:40,730 --> 00:27:40,990 OK. 557 00:27:40,990 --> 00:27:45,730 >> Zato sam samo izabrao 1337. 558 00:27:45,730 --> 00:27:47,910 Postoji čitav niz brojeva koje možete pokupiti. 559 00:27:47,910 --> 00:27:50,390 To nije bio potpuno posebna. 560 00:27:50,390 --> 00:27:54,560 >> No, ono što ću učiniti sada se da ću pokrenuti čvor. 561 00:27:54,560 --> 00:27:59,730 Dopustite mi zapravo ušli u to par linije prema dolje, tako da ga mogu vidjeti. 562 00:27:59,730 --> 00:28:03,130 Ja ću učiniti čvor, a ja sam će pokrenuti simpler.js. 563 00:28:03,130 --> 00:28:06,880 A mi ćemo govoriti o tome kako dobiti Čvora postavili u malo. 564 00:28:06,880 --> 00:28:09,350 No, sada je to samo trčanje poslužitelj. 565 00:28:09,350 --> 00:28:14,360 >> Dakle, jedna stvar mi možete pokušati koje nije dopušteno biti uzbudljive je možemo zapravo 566 00:28:14,360 --> 00:28:16,300 pokušati pristupiti u Curl. 567 00:28:16,300 --> 00:28:20,680 Dakle, ja mogu učiniti Curl, a moj Stroj je lokalni domaćin. 568 00:28:20,680 --> 00:28:24,600 Također ćete vidjeti ovo napisano kao što je to ponekad. 569 00:28:24,600 --> 00:28:29,810 Lokalni domaćin i 127.0.0.1 su ljubazni poput kućnom računalu. 570 00:28:29,810 --> 00:28:33,180 Dakle, to je kao da u razgovoru s svoje računalo. 571 00:28:33,180 --> 00:28:33,760 OK. 572 00:28:33,760 --> 00:28:36,030 >> I onda ja mogu reći 1337. 573 00:28:36,030 --> 00:28:39,630 Dakle, ako sam pokrenuti ovu liniju koda, piše hello world. 574 00:28:39,630 --> 00:28:44,050 A ako sam želio vidjeti te stvari koje je vrsta sadržaja teksta običan ili 575 00:28:44,050 --> 00:28:46,560 god, mogao sam čak stavio ovo ovdje. 576 00:28:46,560 --> 00:28:48,810 I primjetite da se to ne kažu OK. 577 00:28:48,810 --> 00:28:50,810 I ja imam tekst ravnicu. 578 00:28:50,810 --> 00:28:53,140 A tu je i vrsta sve ovo drugo stvari koje će čvor dodati u 579 00:28:53,140 --> 00:28:54,440 tu za mene. 580 00:28:54,440 --> 00:28:55,700 To nije super važno. 581 00:28:55,700 --> 00:28:58,230 >> Mislim, postoje neki tehnički aspekti U to su neka vrsta 582 00:28:58,230 --> 00:29:02,280 cool pričati o tome, ali samo pokazati ti, ja također imaju moć 583 00:29:02,280 --> 00:29:03,070 promijenili okolo. 584 00:29:03,070 --> 00:29:06,280 Dakle, ja mogu samo dodati hrpa o takvim stvarima. 585 00:29:06,280 --> 00:29:11,780 I onda sad, ako pogledam u mom izlaz, to će biti tako. 586 00:29:11,780 --> 00:29:19,740 Dakle, ove zaglavlja znači određene stvari na preglednicima i takvim stvarima. 587 00:29:19,740 --> 00:29:23,040 >> I zaglavlja može osnovi ispričati preglednik kako reagirati na nešto. 588 00:29:23,040 --> 00:29:26,280 Ako ste ikada čuli za kolačiće i prije, ili ako ste ikada bili annoyed 589 00:29:26,280 --> 00:29:29,330 od strane web stranice se kolačiće, ili uključen cookie blok ili 590 00:29:29,330 --> 00:29:30,320 nešto slično. 591 00:29:30,320 --> 00:29:33,040 Vi zapravo možete postaviti kolačiće u tim zaglavlja. 592 00:29:33,040 --> 00:29:36,990 Tako kažu preglednik kako bi ponašanje u nekim slučajevima. 593 00:29:36,990 --> 00:29:37,750 OK. 594 00:29:37,750 --> 00:29:40,310 >> Tako da je simpler.js. 595 00:29:40,310 --> 00:29:42,780 Da li itko ima bilo kakvih pitanja Na taj izvorni kod 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 >> Tako ćemo ukloniti r iz toga i pogledati simple.js. 600 00:29:50,780 --> 00:29:53,010 Dakle, ovo je prilično mnogo isti program. 601 00:29:53,010 --> 00:29:56,030 Upravo sam to napisao malo drugačije jer sam htjela sortirati označavanja 602 00:29:56,030 --> 00:29:57,850 neke značajke JavaScript. 603 00:29:57,850 --> 00:30:03,880 >> Dakle, primijetite da je zahtjev rukovatelj Funkcija je potpuno nestao. 604 00:30:03,880 --> 00:30:05,800 Oh yep, jeste li pitanje? 605 00:30:05,800 --> 00:30:08,200 >> Publika: Da, argumenti koji se prenose na koje 606 00:30:08,200 --> 00:30:10,120 funkcija, što su oni? 607 00:30:10,120 --> 00:30:12,050 >> KEVIN SCHMID: Pa oni su JavaScript objekti. 608 00:30:12,050 --> 00:30:15,230 U Node.js dokumentaciji, osnovi kaže ono što su metode 609 00:30:15,230 --> 00:30:15,910 dostupni na njih. 610 00:30:15,910 --> 00:30:19,602 Upravo smo se dogoditi da imaju pristup ova metoda zove pisati glavu i kraj 611 00:30:19,602 --> 00:30:20,730 i takve stvari. 612 00:30:20,730 --> 00:30:22,590 No, tu je cijela hrpa više metoda. 613 00:30:22,590 --> 00:30:27,670 >> I na primjer, kao što je jedan od njih posebice na rec, to možete učiniti 614 00:30:27,670 --> 00:30:34,540 nešto kao rec.method koji će vam reći da li je HTTP dobiti ili 615 00:30:34,540 --> 00:30:36,780 HTTP POST zahtjeva i takve stvari. 616 00:30:36,780 --> 00:30:39,100 Dakle, tu je sve moguće svojstva, ali su obojica 617 00:30:39,100 --> 00:30:42,560 JavaScript objekti, a oni samo imaju funkcija povezanih s njima da vam 618 00:30:42,560 --> 00:30:43,850 može pisati stvari. 619 00:30:43,850 --> 00:30:45,520 OK? 620 00:30:45,520 --> 00:30:49,030 >> Dakle, primijetite da je zahtjev rukovatelj je potpuno nestala. 621 00:30:49,030 --> 00:30:52,650 Ali kod koji sam imao na zahtjev rukovatelj je još uvijek tamo. 622 00:30:52,650 --> 00:30:56,520 Još uvijek imam taj res.writeHead i još uvijek imam tu res.end. 623 00:30:56,520 --> 00:31:00,270 A što je to primjer u JavaScript je to ideja 624 00:31:00,270 --> 00:31:01,460 anonimna funkcija. 625 00:31:01,460 --> 00:31:04,180 i anonimno je poput dolikuje imenu za to, jer je to doslovno ne 626 00:31:04,180 --> 00:31:05,180 imati ime. 627 00:31:05,180 --> 00:31:07,900 Nema zahtjeva funkcija rukovatelj tamo. 628 00:31:07,900 --> 00:31:10,110 >> Nema ime, ali to još uvijek je vodeći argument. 629 00:31:10,110 --> 00:31:12,250 Dakle, ja još uvijek dobio rec i res. 630 00:31:12,250 --> 00:31:16,180 A ja još uvijek imam kod. 631 00:31:16,180 --> 00:31:18,930 To je savršeno u redu JavaScript kod. 632 00:31:18,930 --> 00:31:22,540 Dakle, ja mogu proglasiti funkciju bez izričito mu daje ime. 633 00:31:22,540 --> 00:31:24,250 To je malo zbunjujuće na prvi. 634 00:31:24,250 --> 00:31:26,230 Postoje neke poput korisnih stvari koje možete učiniti s 635 00:31:26,230 --> 00:31:28,450 ove anonimne funkcije. 636 00:31:28,450 --> 00:31:32,100 Da li itko ima bilo kakvih pitanja o tome, ili je to u redu samo da, za sada, 637 00:31:32,100 --> 00:31:34,130 vrsta samo prihvatiti da je će učiniti istu stvar? 638 00:31:34,130 --> 00:31:36,700 639 00:31:36,700 --> 00:31:37,125 Yep? 640 00:31:37,125 --> 00:31:38,680 >> PUBLIKA: Jeste funkcije prvog klasa u JavaScriptu? 641 00:31:38,680 --> 00:31:41,020 >> KEVIN SCHMID: Oni su prvi klase u JavaScript. 642 00:31:41,020 --> 00:31:45,490 I samo znam da su ti pojmovi prolazi u anonimnom funkcije poput 643 00:31:45,490 --> 00:31:49,600 to odnosi na JavaScript da može napisati u svoj konačni projekt za 644 00:31:49,600 --> 00:31:51,260 web preglednik previše. 645 00:31:51,260 --> 00:31:56,700 Tako na primjer, u JavaScriptu u Vaš preglednik, to je također nešto događanje 646 00:31:56,700 --> 00:32:00,680 prešao u smislu da ono što ćete ima je kada korisnik klikne to 647 00:32:00,680 --> 00:32:02,640 gumb, želim vam da pokrenete ovaj kod. 648 00:32:02,640 --> 00:32:07,070 >> Dakle, to je ista vrsta idejama strani klijenta kada klik miša ili ih 649 00:32:07,070 --> 00:32:09,870 miša iznad neke slike na vašem web stranica, pokrenuti ovaj kod. 650 00:32:09,870 --> 00:32:11,350 To se može primijeniti na poslužiteljima. 651 00:32:11,350 --> 00:32:16,380 Dakle, to je vrsta kao što je uzbudljivo Razlog zašto je JavaScript je stvarno 652 00:32:16,380 --> 00:32:19,810 pogodni ili neki ljudi misle da je pogodan jezik za ovu vrstu 653 00:32:19,810 --> 00:32:22,530 Vozač poslužitelj događaja, jer imate ove anonimne funkcije. 654 00:32:22,530 --> 00:32:26,150 Imate cijelu ideju to asinkroni kod. 655 00:32:26,150 --> 00:32:27,060 OK. 656 00:32:27,060 --> 00:32:30,360 Ima li tko kakvih pitanja? 657 00:32:30,360 --> 00:32:30,470 >> OK. 658 00:32:30,470 --> 00:32:33,440 Tako da je simple.js. 659 00:32:33,440 --> 00:32:38,070 Pa pogledajmo još jednom ili par više. 660 00:32:38,070 --> 00:32:42,040 Dakle, ovo je sleep.js. 661 00:32:42,040 --> 00:32:47,160 Tako je bilo tko upoznat s C Funkcija spavanja? 662 00:32:47,160 --> 00:32:50,936 Od možda jednom od ranijih predavanja ili nešto slično? 663 00:32:50,936 --> 00:32:54,650 >> Tako je u osnovi možete proći u mislim broj sekundi ili ako koristite ü 664 00:32:54,650 --> 00:32:57,080 spavati broj milisekundi ili nanosekundi. 665 00:32:57,080 --> 00:33:00,450 A u osnovi program će jednostavno prestati trčanje za taj iznos od vrijeme. 666 00:33:00,450 --> 00:33:01,280 Zar ne? 667 00:33:01,280 --> 00:33:06,970 I onda će se probuditi i na kraju onda ću samo nastaviti prikazivati 668 00:33:06,970 --> 00:33:08,340 Program. 669 00:33:08,340 --> 00:33:12,740 >> Dakle, ovaj server vrsta daje Dojam spavanje. 670 00:33:12,740 --> 00:33:17,580 Dakle, primijetite da imamo isti res.writeHead 200 s zaglavlje 671 00:33:17,580 --> 00:33:22,130 prije, ali onda smo se zove to funkcija zove set timeout. 672 00:33:22,130 --> 00:33:26,170 Postavite timeout je također dostupan u Vaš web preglednik Google Chrome 673 00:33:26,170 --> 00:33:28,000 ili Safari ili bilo što drugo. 674 00:33:28,000 --> 00:33:31,720 A u osnovi ono što se radi ovdje je da je uzimanje u funkciji. 675 00:33:31,720 --> 00:33:33,360 Obavijest, opet, to je anonimna funkcija. 676 00:33:33,360 --> 00:33:36,310 Dakle, to je vrsta cool jer smo pomoću anonimni funkciju unutar 677 00:33:36,310 --> 00:33:38,950 anonimna funkcija koje može biti malo čudno. 678 00:33:38,950 --> 00:33:42,270 >> No, to je uzimanje tu funkciju, što je osnovi govoreći - način na koji se 679 00:33:42,270 --> 00:33:47,430 Radovi se u 5000 milisekundi, želim izvršavanje tu funkciju koja 680 00:33:47,430 --> 00:33:50,830 Upravo završava odgovor i piše hej. 681 00:33:50,830 --> 00:33:56,730 Dakle, to ostavlja dojam kao da spavanje, ali način na koji je to zapravo 682 00:33:56,730 --> 00:33:59,780 radi je da ćemo pokrenuti kroz ova linija vrlo brzo. 683 00:33:59,780 --> 00:34:01,190 Mi samo pisanje nešto. 684 00:34:01,190 --> 00:34:03,780 A onda ćemo također prolaze kroz ova linija vrlo brzo. 685 00:34:03,780 --> 00:34:08,620 Dakle, nismo zapravo ide čekati pet sekundi. 686 00:34:08,620 --> 00:34:11,370 Samo ćemo pokrenuti ovaj broj odmah. 687 00:34:11,370 --> 00:34:14,219 >> A tu je, opet, ovaj mali Događaj petlja koja sada ima ovu stvar 688 00:34:14,219 --> 00:34:17,570 registri koji u osnovi je samo stalno vrtimo u krug 689 00:34:17,570 --> 00:34:21,620 i gleda na sat u jednom Niti i rekao, ima pet sekundi 690 00:34:21,620 --> 00:34:22,360 prošao još? 691 00:34:22,360 --> 00:34:26,409 I onda kad se vidi da je druga Ruka je preselio kao pet sekundi ili 692 00:34:26,409 --> 00:34:29,190 god, onda se probudi i kaže: oh, što moram učiniti? 693 00:34:29,190 --> 00:34:30,350 Ma moram pokrenuti ovaj kod. 694 00:34:30,350 --> 00:34:33,110 I onda se događa da pokrenuti res.end hej. 695 00:34:33,110 --> 00:34:35,360 >> Pa opet, mi nikada ne čekamo ovdje. 696 00:34:35,360 --> 00:34:38,590 Dakle, nije da se to kod unutar ova funkcija će potrajati pet 697 00:34:38,590 --> 00:34:39,900 sekunde za pokretanje. 698 00:34:39,900 --> 00:34:43,090 Ovaj broj će se izvoditi prilično istovremeno, barem u odnosu na 699 00:34:43,090 --> 00:34:46,139 pet sekundi da smo razgovarali o tome prije nego što ranije. 700 00:34:46,139 --> 00:34:52,100 >> Dakle, samo da se to pokazati u akciji, Ja mogu učiniti Node.sleep.js. 701 00:34:52,100 --> 00:34:55,159 I učinio zabrljam nešto? 702 00:34:55,159 --> 00:34:56,310 Moguće je. 703 00:34:56,310 --> 00:34:57,410 Oprostite. 704 00:34:57,410 --> 00:34:59,530 Da vidimo što možemo učiniti kako bi riješili ovaj. 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 Dakle, svakako koristite Node.js. 709 00:35:17,464 --> 00:35:19,440 Samo se šalim. 710 00:35:19,440 --> 00:35:19,570 OK. 711 00:35:19,570 --> 00:35:20,820 Samo jedan sek. 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 Ja znam što je to. 715 00:35:29,130 --> 00:35:34,440 >> Dakle, problem je u tome što je u mojoj drugoj kartici ovdje, bio sam trčanje čvor već na 716 00:35:34,440 --> 00:35:36,590 da je ista adresa, 1337. 717 00:35:36,590 --> 00:35:43,370 Dakle pogreška da se to bacio, ako ćemo gledati na to stvarna blisko, je adresa u 718 00:35:43,370 --> 00:35:45,180 koristiti, EADDRINUSE. 719 00:35:45,180 --> 00:35:47,970 Tako sam već koristio 1337 ovdje. 720 00:35:47,970 --> 00:35:52,210 Dakle, ako sam zatvorio to off, a onda sam se sada pokušati pokrenuti to, nadamo se, sve 721 00:35:52,210 --> 00:35:53,210 će biti u redu. 722 00:35:53,210 --> 00:35:53,440 OK. 723 00:35:53,440 --> 00:35:57,020 Dakle, možete samo imati jednu stvar kakav slušanja na portu odjednom. 724 00:35:57,020 --> 00:35:59,660 Drugo rješenje bi bilo za mene samo urediti taj program i napraviti 725 00:35:59,660 --> 00:36:02,370 to bilo kao 1338 ili tako nešto kao što je to. 726 00:36:02,370 --> 00:36:04,100 >> Ali sada spavati radi. 727 00:36:04,100 --> 00:36:06,400 Tako ćemo zapravo ga isprobati u Preglednik ovaj put, jer je to 728 00:36:06,400 --> 00:36:09,080 Malo nezabavan vidjeti je u terminalu. 729 00:36:09,080 --> 00:36:13,560 Tako ću i ići na to 127 adresa opet na 1337. 730 00:36:13,560 --> 00:36:14,850 A ako se to vidjeti - 731 00:36:14,850 --> 00:36:18,050 Ne znam, ako je moguće - ali moj browser je uzimanje jako, jako dugo 732 00:36:18,050 --> 00:36:20,600 Vrijeme za učitavanje ili poput pet sekundi. 733 00:36:20,600 --> 00:36:23,460 >> A nakon toga, konačno završio odgovor. 734 00:36:23,460 --> 00:36:29,070 A ne možete ga vidjeti, jer je stvar se preselio na malo, ali ako sam napraviti 735 00:36:29,070 --> 00:36:32,500 ovo malo manji, što Možete vidjeti što kaže hej. 736 00:36:32,500 --> 00:36:35,130 Tako sam dobio hej, ali nakon pet sekundi. 737 00:36:35,130 --> 00:36:38,510 A to bi moglo biti malo čišći vidjeti to ovdje na terminalu, pa sam 738 00:36:38,510 --> 00:36:40,980 će učiniti - 739 00:36:40,980 --> 00:36:43,540 neka je to ovdje - 740 00:36:43,540 --> 00:36:48,370 Učinimo Curl toj adresi opet s 1337. 741 00:36:48,370 --> 00:36:50,820 A ja nekako morati sjesti Ovdje za pet sekundi. 742 00:36:50,820 --> 00:36:53,760 Ali primijetite da server može prihvatiti nove odgovore. 743 00:36:53,760 --> 00:36:54,940 Tako da ispisuje hej. 744 00:36:54,940 --> 00:36:58,720 >> I na demo to, u osnovi ono što Ja mogu učiniti u ovoj drugoj kartici - 745 00:36:58,720 --> 00:37:02,640 pa recimo da sam to učiniti na drugu karticu, Ja ću učiniti Curl i ista 746 00:37:02,640 --> 00:37:03,780 stvar opet. 747 00:37:03,780 --> 00:37:06,600 A ja ću pokušati udariti njih Dečki off u isto vrijeme. 748 00:37:06,600 --> 00:37:08,260 Dakle, ja ću to učiniti, a ja sam ide u utrku ovamo i ja sam 749 00:37:08,260 --> 00:37:09,650 će to učiniti opet. 750 00:37:09,650 --> 00:37:14,030 >> I neka je to učiniti tako da možete vidjeti oboje. 751 00:37:14,030 --> 00:37:20,250 To je jedan tiskani hej i da je jedan tiskana hej sve na - 752 00:37:20,250 --> 00:37:22,550 Učinimo to eksperiment opet. 753 00:37:22,550 --> 00:37:25,100 Zapravo, neka je koristiti to trik, ako je to u redu. 754 00:37:25,100 --> 00:37:30,520 >> Tako da ću koristiti shell stvar koja mi omogućuje osnovi pokrenuti dva primjerka 755 00:37:30,520 --> 00:37:32,630 ovog programa paralelno. 756 00:37:32,630 --> 00:37:36,070 Dakle, to će pokrenuti prvi program i Drugi program paralelno. 757 00:37:36,070 --> 00:37:39,060 Pa sad, ako sam na tipkovnici, to se događa da bi takav zahtjev prilično mnogo 758 00:37:39,060 --> 00:37:40,570 trenutačno u isto vrijeme. 759 00:37:40,570 --> 00:37:42,620 Dakle, dajmo ovo metak. 760 00:37:42,620 --> 00:37:44,950 >> Tako sada primijetiti piše dva procesa. 761 00:37:44,950 --> 00:37:50,630 A ako vas zanima, da je 27.000 broj je u osnovi proces ID. 762 00:37:50,630 --> 00:37:52,940 A onda primjetiti, oni tiskaju Hey istovremeno. 763 00:37:52,940 --> 00:37:56,820 Nije bilo kao da smo morali čekati pet sekundi za jedan i onda nakon toga, 764 00:37:56,820 --> 00:37:59,640 Pet sekundi kasnije dobiti drugi. 765 00:37:59,640 --> 00:38:03,300 Dakle, to je vrsta, na neki način, to je zapravo i nije dokaz, ali je 766 00:38:03,300 --> 00:38:07,390 intuitivno dokaz da to nije samo kao što je čekao pet sekundi i blokira 767 00:38:07,390 --> 00:38:08,960 Cijeli thread. 768 00:38:08,960 --> 00:38:10,720 OK super. 769 00:38:10,720 --> 00:38:17,850 >> Dakle Aaron postavio pitanje ranije da bio, i što ako se ne učini nešto - 770 00:38:17,850 --> 00:38:18,735 Yep? 771 00:38:18,735 --> 00:38:19,051 >> PUBLIKA: Čekajte. 772 00:38:19,051 --> 00:38:21,585 Kako je to drugačije od printf tampon, iako? 773 00:38:21,585 --> 00:38:23,010 Ne to automatski napraviti to? 774 00:38:23,010 --> 00:38:25,390 Zašto moramo brinuti o tome? 775 00:38:25,390 --> 00:38:26,555 >> KEVIN SCHMID: Oh, zar ne kažu da još jednom? 776 00:38:26,555 --> 00:38:29,510 >> Ivanković: Ne bih printf tampon učiniti točno istu stvar? 777 00:38:29,510 --> 00:38:31,280 >> KEVIN SCHMID: printf tampon? 778 00:38:31,280 --> 00:38:32,753 >> Publika: Da. 779 00:38:32,753 --> 00:38:33,244 OK. 780 00:38:33,244 --> 00:38:40,609 Nije bio u jednom od kvizova su bili govori o tome kako, ako ste u pravu printf 781 00:38:40,609 --> 00:38:42,899 nešto, a onda su ga pauzirati jednu Drugi, a zatim ga imate petlju deset 782 00:38:42,899 --> 00:38:46,530 puta, to će pričekati deset sekundi i onda printf sve zajedno? 783 00:38:46,530 --> 00:38:47,460 >> KEVIN SCHMID: Oh, u redu. 784 00:38:47,460 --> 00:38:49,170 >> PUBLIKA: Je li to isto , onda je u ovom slučaju? 785 00:38:49,170 --> 00:38:52,630 >> KEVIN SCHMID: Dakle, pitanje je bilo osnovi u jednom od bivših kvizova 786 00:38:52,630 --> 00:38:57,200 ili tako nešto, bilo je pitanje koje Uglavnom, ako ti kažeš ispisati F 10 787 00:38:57,200 --> 00:39:01,490 stvari u isto vrijeme i onda spavao kao u Proces ispisa one out, 788 00:39:01,490 --> 00:39:04,850 Na kraju, iz nekih razloga, to bi samo izvatkom one sve na zaslonu. 789 00:39:04,850 --> 00:39:06,740 Dakle, tu je vrsta dvaju različitih pojmovi ovdje. 790 00:39:06,740 --> 00:39:10,400 >> Pa mislim da je jedna stvar je da se, u ovo slučaju, imamo posla s dva različita 791 00:39:10,400 --> 00:39:13,510 vrsta ljudi tražeći poslužitelj stvari u isto vrijeme. 792 00:39:13,510 --> 00:39:17,455 A razlog da printf vrsta čeka kao da i potištenost sve van 793 00:39:17,455 --> 00:39:21,760 odjednom se više odnosi na Kako printf vrsta - 794 00:39:21,760 --> 00:39:25,100 pa kako printf je zapravo proveden je to u osnovi mora 795 00:39:25,100 --> 00:39:28,850 razgovarati s operativnim sustavom pisati te stvari na konzoli. 796 00:39:28,850 --> 00:39:33,460 Dakle, to ne želi učiniti sve da se stvari odmah kada kažeš printf 797 00:39:33,460 --> 00:39:36,260 neki string, jer da bi dobiti skupo, ako to mora 798 00:39:36,260 --> 00:39:37,340 to svaki put. 799 00:39:37,340 --> 00:39:41,530 >> Dakle, ako vam je činiti printf hej, svoj program Ne zapravo mogli ispisati da 800 00:39:41,530 --> 00:39:43,040 odmah na konzoli. 801 00:39:43,040 --> 00:39:46,080 To bi se moglo reći, OK, to sam napisao. 802 00:39:46,080 --> 00:39:49,570 I onda vrsta čekati da daju je malo više prije nego što zapravo 803 00:39:49,570 --> 00:39:51,380 to pisanje na konzolu. 804 00:39:51,380 --> 00:39:54,040 >> Dakle, razlog zbog kojeg je to bio slučaj - 805 00:39:54,040 --> 00:39:56,450 i to je neka vrsta nevezano na spavanje - 806 00:39:56,450 --> 00:40:00,060 je da je spavanje vrsta samo ubrizgava u tu pokazati 807 00:40:00,060 --> 00:40:02,480 činjenica da se ne piše je sinkronizirano. 808 00:40:02,480 --> 00:40:06,210 No, razlog za to je upravo performanse, tako da ne morate 809 00:40:06,210 --> 00:40:08,920 bi se to mnogo kontakata u operativni sustav. 810 00:40:08,920 --> 00:40:12,300 >> Ali ovdje, ono što smo zapravo pokušava učiniti s ovim spavanja stvar je samo predstava 811 00:40:12,300 --> 00:40:17,730 da kad imamo dvije osobe koje posjećuju Ova web stranica, to neće staviti 812 00:40:17,730 --> 00:40:22,310 ih u liniji gdje će reći Moram ti pomoći, a onda kada sam 813 00:40:22,310 --> 00:40:25,350 potpuno završili pomažući vam nakon njih pet sekundi, a zatim ću 814 00:40:25,350 --> 00:40:26,750 premjestiti na sljedeću osobu. 815 00:40:26,750 --> 00:40:29,515 Dakle, zahtjev je prva osoba a ne vezati taj događaj petlju 816 00:40:29,515 --> 00:40:31,610 ako to ima smisla. 817 00:40:31,610 --> 00:40:34,980 >> Ali ovdje je zapravo primjer nečega što će se vezati 818 00:40:34,980 --> 00:40:36,090 do događaja petlje. 819 00:40:36,090 --> 00:40:39,130 Dakle, ovdje je strašno funkcijom izračunati n-tu Fibonacci. 820 00:40:39,130 --> 00:40:43,510 To je doslovno gori način možete izračunati n-ti Fibonaccijev broj. 821 00:40:43,510 --> 00:40:48,480 A to je zapravo samo priznati gdje je ovaj došao, 822 00:40:48,480 --> 00:40:49,330 tu je zapravo - 823 00:40:49,330 --> 00:40:53,230 Mislim, možete pokušati ići ga naći - ali Tu je kao vrlo dugotrajan blogu 824 00:40:53,230 --> 00:40:54,130 objaviti da je netko pisao. 825 00:40:54,130 --> 00:40:55,660 To je kao jedan od onih Reddit stvari. 826 00:40:55,660 --> 00:40:59,650 No, netko je kritizirao Node.js, a se koristi kao ovaj primjer. 827 00:40:59,650 --> 00:41:03,700 Tako nekako sam htjela da vam pokazati dva različite perspektive samo da bi dobili 828 00:41:03,700 --> 00:41:07,320 opće razumijevanje pojmova iza ove dvije stvari. 829 00:41:07,320 --> 00:41:13,050 >> No, to je izabran kao samo strašno, užasno neučinkovita računski 830 00:41:13,050 --> 00:41:15,940 intenzivna način izračunati n-ti broj Fibonacci. 831 00:41:15,940 --> 00:41:21,180 Dakle, baš kao strani bilješku, zašto je to strašno kao u jednom smjeru? 832 00:41:21,180 --> 00:41:23,210 Yep? 833 00:41:23,210 --> 00:41:25,130 >> PUBLIKA: Recite što počnete s 1000. 834 00:41:25,130 --> 00:41:27,050 1.000 dijeli na 999 i 998. 835 00:41:27,050 --> 00:41:28,970 Svaki od ova dijeli u dvije stvari. 836 00:41:28,970 --> 00:41:30,890 Svaki od ova dijeli u dvije stvari. 837 00:41:30,890 --> 00:41:31,355 >> KEVIN SCHMID: Točno. 838 00:41:31,355 --> 00:41:32,400 >> Ivanković: Sve putu prema dolje. 839 00:41:32,400 --> 00:41:32,840 >> KEVIN SCHMID: Točno. 840 00:41:32,840 --> 00:41:37,330 Dakle, samo ponoviti za kameru, ako sam nazvati lagali na poput 1000 ili tako nešto 841 00:41:37,330 --> 00:41:41,810 kao što je to, to je očito ne manje od ili jednaka jedan, tako da ću 842 00:41:41,810 --> 00:41:46,040 ići na ovom drugom slučaju, a onda idem nazvati lagali 999 plus 998 lagali. 843 00:41:46,040 --> 00:41:50,290 A onda je prilično puno sve to Djelo koje mi lagali 999 se je 844 00:41:50,290 --> 00:41:52,950 vrsta na ovoj razini. 845 00:41:52,950 --> 00:41:55,620 Ako ide dolje, to je čak i više suvišne od toga, ali ako samo 846 00:41:55,620 --> 00:42:01,390 mislim računanje FIB 998 dobiva us prilično blizu lagali 999. 847 00:42:01,390 --> 00:42:05,860 Dakle, mi stvarno treba biti malo više pametan o tome kako smo vrsta ponovno 848 00:42:05,860 --> 00:42:07,580 to, ali nismo ponovnog te stvari uopće. 849 00:42:07,580 --> 00:42:11,860 Tako da možete zamisliti ovaj gigantski, Gigantski stablo koje je jednostavno strašno. 850 00:42:11,860 --> 00:42:12,940 >> No, u svakom slučaju, u redu. 851 00:42:12,940 --> 00:42:14,040 Tako da je lagati. 852 00:42:14,040 --> 00:42:15,530 To traje neko vrijeme za pokretanje. 853 00:42:15,530 --> 00:42:16,510 Yep? 854 00:42:16,510 --> 00:42:17,760 >> PUBLIKA: [nečujan]. 855 00:42:17,760 --> 00:42:20,430 856 00:42:20,430 --> 00:42:22,481 >> KEVIN SCHMID: Oh, zar ne ponoviti pitanje? 857 00:42:22,481 --> 00:42:23,731 >> PUBLIKA: [nečujan]. 858 00:42:23,731 --> 00:42:30,840 859 00:42:30,840 --> 00:42:33,990 >> KEVIN SCHMID: Oh pa to je samo broj da će biti neka vrsta na 860 00:42:33,990 --> 00:42:34,850 strani poslužitelja. 861 00:42:34,850 --> 00:42:38,100 Dakle, ovo se ne događa da se naći u pregledniku ili ništa. 862 00:42:38,100 --> 00:42:42,160 To je zapravo ono što mi imamo je da kada Po prvi put ovdje prilično velik dio čini 863 00:42:42,160 --> 00:42:45,300 njihov zahtjev opet, kad smo vrsta uputiti zahtjev, mi ćemo nazvati 864 00:42:45,300 --> 00:42:47,040 ova funkcija na strani poslužitelja. 865 00:42:47,040 --> 00:42:50,480 I onda ćemo dobiti rezultat natrag nazivati ​​tu funkciju. 866 00:42:50,480 --> 00:42:52,460 I onda ćemo samo ispisati je korisniku. 867 00:42:52,460 --> 00:42:54,580 Tako korisnik zapravo ne bave s tom funkcijom previše. 868 00:42:54,580 --> 00:42:57,270 >> Je li to bilo pitanje? 869 00:42:57,270 --> 00:42:58,470 Ima li to smisla? 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 >> Pa opet, mi radimo cijelu ovu res.writeHead stvar gdje smo ispisali 873 00:43:04,240 --> 00:43:05,150 header. 874 00:43:05,150 --> 00:43:09,730 A onda sam na kraju odgovor na taj magični broj je lagati 45. 875 00:43:09,730 --> 00:43:12,100 Pa neka je samo pokrenuti ovaj poslužitelj. 876 00:43:12,100 --> 00:43:15,190 Pa ja ću učiniti čvor fib.js. 877 00:43:15,190 --> 00:43:17,340 Dakle, sada je moja izmišljotina poslužitelj je trčanje. 878 00:43:17,340 --> 00:43:21,790 >> I onda ovdje, ja ću napraviti jedan od tih. 879 00:43:21,790 --> 00:43:22,200 OK? 880 00:43:22,200 --> 00:43:24,960 Dakle, ja sam samo htio reći, Curl. 881 00:43:24,960 --> 00:43:32,226 Dakle, to će potrajati neko vrijeme, ali nadam se uskoro će završiti i 882 00:43:32,226 --> 00:43:35,660 to će ispisati da je 45. Fibonaccijev niz. 883 00:43:35,660 --> 00:43:36,910 >> PUBLIKA: [nečujan]. 884 00:43:36,910 --> 00:43:40,720 885 00:43:40,720 --> 00:43:42,050 >> KEVIN SCHMID: To bi trebalo obaviti uskoro. 886 00:43:42,050 --> 00:43:43,780 Dakle, to bi trebalo trajati pet do šest sekundi. 887 00:43:43,780 --> 00:43:48,570 Ne znam da je samo V8 je super brz, ali u svakom slučaju, ovo je 888 00:43:48,570 --> 00:43:52,700 Vrlo kratko je primjer i namjerno inelegant od ne-beznačajan 889 00:43:52,700 --> 00:43:54,200 računanja. 890 00:43:54,200 --> 00:43:56,700 Dakle, nakon nekog vremena, to ne shvaćam. 891 00:43:56,700 --> 00:44:02,130 >> Ali sada, što ako ja to ista vrsta Eksperiment kao i prije, gdje sam napraviti 892 00:44:02,130 --> 00:44:04,010 dva zahtjeva u isto vrijeme? 893 00:44:04,010 --> 00:44:06,990 Dakle, ovdje ću rotor na da je adresa, a ja ću 894 00:44:06,990 --> 00:44:08,260 učiniti još Curl. 895 00:44:08,260 --> 00:44:12,070 I zapamtite, kad smo to učinili za spavati poslužitelj, kada smo u osnovi ga imali 896 00:44:12,070 --> 00:44:15,320 nakon pet sekundi, što prilično koliko i vratio u pravu 897 00:44:15,320 --> 00:44:16,380 otprilike u isto vrijeme. 898 00:44:16,380 --> 00:44:18,650 Dakle, to nije bio posebno vezan. 899 00:44:18,650 --> 00:44:20,290 >> No, pokušajmo sada. 900 00:44:20,290 --> 00:44:22,370 U redu, tako da smo dobili naše dvije procese. 901 00:44:22,370 --> 00:44:24,210 Zapamtite to su proces iskaznice. 902 00:44:24,210 --> 00:44:25,900 To će biti malo nespretan dok odugovlačiti. 903 00:44:25,900 --> 00:44:31,340 904 00:44:31,340 --> 00:44:35,360 Tako ćemo ostati ovdje i čekati. 905 00:44:35,360 --> 00:44:37,090 >> Tako je jedan od njih trebao doći natrag nakon što se kao - 906 00:44:37,090 --> 00:44:39,190 U redu, tako da se vratio. 907 00:44:39,190 --> 00:44:43,570 Ali zašto onda nije drugi jedan se vratiti samo još? 908 00:44:43,570 --> 00:44:44,389 Yep? 909 00:44:44,389 --> 00:44:49,280 >> PUBLIKA: poslužitelj ne može učiniti ništa dok je računalstvo taj veliki broj. 910 00:44:49,280 --> 00:44:51,620 >> KEVIN SCHMID: Točno. 911 00:44:51,620 --> 00:44:55,395 Dakle, odgovor je bio upravo to server stvarno ne mogu učiniti ništa dok se 912 00:44:55,395 --> 00:44:57,460 to je računanje taj Fibonacci broj. 913 00:44:57,460 --> 00:44:59,360 Pa sad sam upravo dobio moje dvije stvari natrag. 914 00:44:59,360 --> 00:45:03,210 Ali valjda samo razmišljati o kodu malo više, kako se to radi 915 00:45:03,210 --> 00:45:05,030 i sve. 916 00:45:05,030 --> 00:45:11,750 >> Dakle, ova funkcija je ovdje kod koji Ja sam rekao ovo poslužitelja za rad kada je 917 00:45:11,750 --> 00:45:14,100 dobiva novi dolazni zahtjev. 918 00:45:14,100 --> 00:45:17,940 Dakle, to je samo idući u trčanje kroz ovaj cijeli broj, a onda će otići 919 00:45:17,940 --> 00:45:21,120 Natrag na događaj petlje, a zatim nastaviti provjere za nove događaje. 920 00:45:21,120 --> 00:45:23,670 Tako je u osnovi ono što smo se događa je poslužitelj 921 00:45:23,670 --> 00:45:25,080 sluša za nove stvari. 922 00:45:25,080 --> 00:45:28,070 Prva osoba pita za ono 45 je. 923 00:45:28,070 --> 00:45:30,490 Mi smo pokrenuti ovaj kod kako bi ga izračunati. 924 00:45:30,490 --> 00:45:33,420 Ovaj kod traje otprilike pet na šest sekundi za pokretanje. 925 00:45:33,420 --> 00:45:36,990 Onda ćemo se vratiti na događaj petlje i provjerite za nove zahtjeve. 926 00:45:36,990 --> 00:45:42,700 >> Dakle, ovo je primjer kako se, ako ima stvari koje su tzv izračunali 927 00:45:42,700 --> 00:45:48,140 dužni, ili koristite mnogo računske, Ne snaga, ali kao su 928 00:45:48,140 --> 00:45:50,260 računski intenzivna - 929 00:45:50,260 --> 00:45:54,080 Mislim da jedna stvar za reći o tome je da je ova funkcija radi potpuno, 930 00:45:54,080 --> 00:45:56,310 za najveći dio, prilično koristan rad u pravu. 931 00:45:56,310 --> 00:45:59,970 Cijeli put da se u povratnom Funkcija je trčanje, to je bio prilično 932 00:45:59,970 --> 00:46:03,670 koliko je proveo većinu svog vremena samo computing broj koji po tko zna koji Fibonacci. 933 00:46:03,670 --> 00:46:05,930 >> No, imali smo samo jednu nit da se bave. 934 00:46:05,930 --> 00:46:10,270 U Apache modelu, kada se dvije osobe podnijela zahtjev da se mi lagali 45, mi 935 00:46:10,270 --> 00:46:11,610 ne bi imali dvije različite teme. 936 00:46:11,610 --> 00:46:15,060 I onda je posao operativnog sustava bi bio, ili na razini korisnika 937 00:46:15,060 --> 00:46:18,660 kod koji upravlja teme, nebi bila kriška da se na 938 00:46:18,660 --> 00:46:23,060 CPU, ili čak i ako ste imali više procesora, distribuirati ih ravnomjerno CPU 939 00:46:23,060 --> 00:46:26,130 tako da su oboje završiti otprilike u isto vrijeme. 940 00:46:26,130 --> 00:46:31,120 >> Dakle, samo da vam pokazati kako možemo izdvojiti od - a to ne znači savršena 941 00:46:31,120 --> 00:46:34,280 rješenje, ali nekako kako možemo bi se vratiti ovdje i napraviti 942 00:46:34,280 --> 00:46:35,880 malo bolje. 943 00:46:35,880 --> 00:46:41,540 Dakle, ono što imam ovdje je program pod nazivom FIB C. I to u osnovi koristi 944 00:46:41,540 --> 00:46:45,690 još jedna od čvora modula zove Dijete Proces modul. 945 00:46:45,690 --> 00:46:49,210 Dakle, ja sam uključen da na gornjem vrste poput bih napraviti funta uključuju 946 00:46:49,210 --> 00:46:51,230 Dijete proces.h ili nešto. 947 00:46:51,230 --> 00:46:56,210 Sada imam pristup tom varijablom CP koji ima sve moje funkcionalnost. 948 00:46:56,210 --> 00:47:01,810 >> I što sad da radim u ovom odgovoru rukovatelj bježim ovaj program 949 00:47:01,810 --> 00:47:04,100 dot slash FIB 45. 950 00:47:04,100 --> 00:47:06,820 Dakle, ono što sam učinio - a ja sam samo ide izaći iz ovog programa za 951 00:47:06,820 --> 00:47:07,620 malo - 952 00:47:07,620 --> 00:47:11,060 je napisao sam C program koji osnovi računa 953 00:47:11,060 --> 00:47:12,630 n-ti broj Fibonacci. 954 00:47:12,630 --> 00:47:15,960 Dakle, ovdje je samo program sam napisao u C koji izračunava ovaj. 955 00:47:15,960 --> 00:47:19,040 Mogu ga sastaviti, a ja mogu pokrenuti je na zapovjednoj liniji. 956 00:47:19,040 --> 00:47:22,150 I to će se izračunati 45. Fibonacci broj. 957 00:47:22,150 --> 00:47:24,510 >> Dakle primijetiti samo je potrebno prilično dugo. 958 00:47:24,510 --> 00:47:28,240 I vjerojatno bi mogao imati koristi crticu 03 do optimizirati ga ili nešto slično, 959 00:47:28,240 --> 00:47:31,050 , ali upravo sam se kao redoviti Postavke prevodilac. 960 00:47:31,050 --> 00:47:33,260 I to ga ispisuje. 961 00:47:33,260 --> 00:47:36,830 >> Ali sada, ono što sam ja vrsta radiš? 962 00:47:36,830 --> 00:47:39,800 Oh ispričavam se, krivo datoteka. 963 00:47:39,800 --> 00:47:42,800 Tako radim iste stvari s header kao i prije. 964 00:47:42,800 --> 00:47:45,780 Onda sam napraviti ovaj cp.exec. 965 00:47:45,780 --> 00:47:49,460 Dakle, što to će učiniti je to će pokrenuti ovaj program. 966 00:47:49,460 --> 00:47:51,960 No, način na koji to radi je da to se neće čekati 967 00:47:51,960 --> 00:47:53,400 taj program do kraja. 968 00:47:53,400 --> 00:47:56,000 To samo u osnovi govori izvršiti ovaj program. 969 00:47:56,000 --> 00:47:58,700 Tako je u osnovi ovaj tip u naredba brz vrste. 970 00:47:58,700 --> 00:48:02,350 >> A onda, kada završite s to, pokrenuti ovu funkciju. 971 00:48:02,350 --> 00:48:04,800 Dakle, sada smo nekako dobiti ovo Cijela obnovljena stvar 972 00:48:04,800 --> 00:48:06,750 kao što nismo čekali. 973 00:48:06,750 --> 00:48:08,530 Znači li to da vrsta ima smisla? 974 00:48:08,530 --> 00:48:08,990 Yep? 975 00:48:08,990 --> 00:48:11,060 >> PUBLIKA: [nečujan]? 976 00:48:11,060 --> 00:48:13,610 >> KEVIN SCHMID: Dakle, ovo će zapravo otvoriti novi postupak za to. 977 00:48:13,610 --> 00:48:19,310 Dakle, ovo je zapravo, na neki način, zlo, ne super zla, ali je 978 00:48:19,310 --> 00:48:22,990 važno je reći da je ova vrsta vraćajući se, s jedne strane, Apache 979 00:48:22,990 --> 00:48:26,450 Model u kojem radimo teme i procese za svaki zahtjev ili 980 00:48:26,450 --> 00:48:29,280 procesi za svaki zahtjev. 981 00:48:29,280 --> 00:48:32,090 Dakle, ovo je neka vrsta analogna da ono Apache radi. 982 00:48:32,090 --> 00:48:35,110 U nekim slučajevima, to će samo koristiti novi nit, što je malo više svjetla 983 00:48:35,110 --> 00:48:39,040 Težina od procesa, ali Apache mogli završiti vilica novi proces 984 00:48:39,040 --> 00:48:43,370 koja je vrsta ono što mi radimo ovdje implicitno obavljajući dot kose crte FIB 45. 985 00:48:43,370 --> 00:48:48,690 >> A onda je u tom slučaju, mi vrsta nastati isti troškovi procesa. 986 00:48:48,690 --> 00:48:50,710 Dakle, to je samo jedna stvar koju možete učiniti. 987 00:48:50,710 --> 00:48:52,600 Ali samo pokazati ovu vrstu trčanja. 988 00:48:52,600 --> 00:48:57,120 I ovaj razgovor samo je jako usmjeren na predstavljanja ove vrste programa, kao 989 00:48:57,120 --> 00:49:00,710 način da pokazuju različite poglede na kako dizajnirati servera kao što je to. 990 00:49:00,710 --> 00:49:08,300 Dakle, to je trčanje, a onda ako sada radim to opet, dobio sam dva procesa iskaznice. 991 00:49:08,300 --> 00:49:10,320 >> Ajmo govoriti o stvari koje treba istaknuti. 992 00:49:10,320 --> 00:49:11,980 Dakle primijetiti da su oni postupno. 993 00:49:11,980 --> 00:49:12,700 To je super. 994 00:49:12,700 --> 00:49:15,140 Budući da je prije 27.122. 995 00:49:15,140 --> 00:49:18,580 No, obavijest sada su se vratili u otprilike isto vrijeme. 996 00:49:18,580 --> 00:49:23,960 >> I sad, dobro pitanje to pitati o zašto je to slučaj, čiji je posao 997 00:49:23,960 --> 00:49:27,590 Bio je to sada na neki način bi ove stvari vrsta igrati pošteno jedni 998 00:49:27,590 --> 00:49:31,350 drugi, ove dvije instance dot slash lagati 45 koje sam vodio 999 00:49:31,350 --> 00:49:32,880 ili da Node ran? 1000 00:49:32,880 --> 00:49:36,940 Tko vrsta čini fer da su obojica dobiti vrsta uravnotežena vrijeme rada? 1001 00:49:36,940 --> 00:49:42,900 1002 00:49:42,900 --> 00:49:44,220 >> PUBLIKA: [nečujan]. 1003 00:49:44,220 --> 00:49:44,620 >> KEVIN SCHMID: Da. 1004 00:49:44,620 --> 00:49:49,740 Tako je u osnovi, kada radim dot kose crte FIB 45 ili nešto slično, sad je 1005 00:49:49,740 --> 00:49:53,750 vrsta do operativnog sustava za nositi izvođenja tih programa. 1006 00:49:53,750 --> 00:49:56,920 I sada to može ih raspored na različitim CPU ili njega 1007 00:49:56,920 --> 00:49:58,330 Možete ih raspored. 1008 00:49:58,330 --> 00:50:01,870 To može narezati na vrijeme da je jedan CPU dobiva ili da su dobili 1009 00:50:01,870 --> 00:50:03,330 za rad na jednom CPU. 1010 00:50:03,330 --> 00:50:05,620 Dakle, to je ideja iza toga. 1011 00:50:05,620 --> 00:50:07,220 Da li to smisla svima? 1012 00:50:07,220 --> 00:50:10,950 Tako sada Node nije stvarno svira dio u podjelu tih zadataka. 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 >> Dakle, to je gotovo to za primjere. 1016 00:50:17,840 --> 00:50:23,370 Samo sam htjela pokazati još jednu stvar jer je puno toga do sada nije bilo 1017 00:50:23,370 --> 00:50:27,350 Nije potpuno super praktično u nekim slučajevima. 1018 00:50:27,350 --> 00:50:30,970 Mogu zamisliti dolazak kući nakon ovoga razgovarati i nešto i govori kao, 1019 00:50:30,970 --> 00:50:35,710 i nekako sam dobio iz tog razgovora koji Mogu napraviti Fibonacci poslužitelj za 1020 00:50:35,710 --> 00:50:37,360 moj konačni projekt. 1021 00:50:37,360 --> 00:50:40,770 Dakle, ovdje je samo kakve još jedan primjer nadamo se da će biti - 1022 00:50:40,770 --> 00:50:44,620 možda i ne, ali možda - nešto više kakve relevantne za konačnih projekata i 1023 00:50:44,620 --> 00:50:46,440 razmišljam unaprijed za takve stvari. 1024 00:50:46,440 --> 00:50:48,870 >> Dakle, ovo je chat.js. 1025 00:50:48,870 --> 00:50:52,290 Dakle, to je vrsta kao neki uzorak poslužitelj strana kod koji možete koristiti za 1026 00:50:52,290 --> 00:50:55,700 postaviti mali chat poslužitelj poput možda ste vidjeli na 1027 00:50:55,700 --> 00:50:56,630 Facebook Chat ili bilo što drugo. 1028 00:50:56,630 --> 00:50:59,990 Dakle, ne govorim da je to kao što su Facebook Chat, ali to je neka vrsta 1029 00:50:59,990 --> 00:51:06,230 kao što je dobro - možda nije dobro, ali možda Dobar - polazna točka za razgovor 1030 00:51:06,230 --> 00:51:08,560 poslužitelj za vaše web stranice za konačni projekt. 1031 00:51:08,560 --> 00:51:11,040 Pa pogledajmo što to radi. 1032 00:51:11,040 --> 00:51:15,500 >> Dakle, mi smo sve to posebnu stvar na vrhu, ovaj var Državni inspektorat 1033 00:51:15,500 --> 00:51:17,050 jednako zahtijevaju Socket.IO. 1034 00:51:17,050 --> 00:51:20,280 Dakle, ovo je još jedna stvar koja se ne zapravo dolaze u paketu s 1035 00:51:20,280 --> 00:51:22,300 Čvora, ali možete ga instalirati. 1036 00:51:22,300 --> 00:51:23,480 To je čvor modul. 1037 00:51:23,480 --> 00:51:25,670 Pa to je baš kao i neki proširenje na čvoru. 1038 00:51:25,670 --> 00:51:29,220 >> SocketIO je zapravo jako vrsta cool. 1039 00:51:29,220 --> 00:51:32,550 To je apstrakcija koja u osnovi ono što To je to je li vam omogućuje da 1040 00:51:32,550 --> 00:51:35,770 imati taj tok komunikacije između webu 1041 00:51:35,770 --> 00:51:39,430 preglednik i web server. 1042 00:51:39,430 --> 00:51:45,250 Dakle, za najveći dio, tako daleko, da smo imali te vrlo brzo jednu sekundu ili dvije 1043 00:51:45,250 --> 00:51:48,790 Drugi komunikacija između web preglednik i web server. 1044 00:51:48,790 --> 00:51:53,310 Tako je to u osnovi je ići na google.com, get stvari, poslati natrag, a zatim 1045 00:51:53,310 --> 00:51:53,770 smo gotovi. 1046 00:51:53,770 --> 00:51:56,560 Nikad nećemo opet govori sve korisnik upiše u nešto drugo. 1047 00:51:56,560 --> 00:52:01,090 >> No, ono što Socket.IO i slična vrsta stvari - i SocketIO je zapravo jedan 1048 00:52:01,090 --> 00:52:03,940 od stvari koja je izgrađena na što WebSocket koja je vrsta dostupan 1049 00:52:03,940 --> 00:52:06,440 kao dio HTML5 - 1050 00:52:06,440 --> 00:52:09,620 koji vam omogućuje da imaju ovo nastavka dijaloga. 1051 00:52:09,620 --> 00:52:13,990 A to je vrlo korisno u chat poslužitelju Takve stvari, jer je 1052 00:52:13,990 --> 00:52:17,390 vrsta kao što su nastavak dijaloga u neki način, jer ako razgovarate 1053 00:52:17,390 --> 00:52:21,540 s nekim, sada možete jednostavno poslati Poruka niz cijevi, a zatim 1054 00:52:21,540 --> 00:52:23,940 poslužitelj može poslati poruku prema dolje cijevi na drugu osobu s kojom 1055 00:52:23,940 --> 00:52:24,520 razgovor sa. 1056 00:52:24,520 --> 00:52:26,903 A onda možete imati ovo razmjenjivati ​​tako. 1057 00:52:26,903 --> 00:52:30,590 1058 00:52:30,590 --> 00:52:32,850 >> Dakle, to je vrsta ono što SocketIO je dobro za. 1059 00:52:32,850 --> 00:52:38,400 Razlog da SocketIO koristi WebSockets kao jedna stvar je da se u 1060 00:52:38,400 --> 00:52:43,980 dodatak samo običan stari WebSockets, Također ne neke trikove na osnovi 1061 00:52:43,980 --> 00:52:45,610 bi ga preglednik kompatibilan. 1062 00:52:45,610 --> 00:52:50,040 Dakle preglednike poput Internet Explorera nažalost ne podržavaju WebSockets 1063 00:52:50,040 --> 00:52:50,810 Pravo iz kutije. 1064 00:52:50,810 --> 00:52:55,290 Tako da koristi neku drugu vrstu super uredan stvari s Adobe Flash kako bi se omogućilo 1065 00:52:55,290 --> 00:52:57,170 li imati križ preglednik podrška. 1066 00:52:57,170 --> 00:52:58,800 Dakle, to je stvarno koristan. 1067 00:52:58,800 --> 00:53:02,440 >> I zapravo, znam da sam vrsta pokrenut na vrijeme ovdje, ali CS50 1068 00:53:02,440 --> 00:53:08,490 Raspravljati, jeste li ikada vidjeli nešto kao, ne znam, prazno, tako i tako je 1069 00:53:08,490 --> 00:53:11,030 odgovarate na ovaj post ili nešto kao što je to, taj lik? 1070 00:53:11,030 --> 00:53:12,250 To je SocketIO. 1071 00:53:12,250 --> 00:53:15,580 Dakle, kada netko počne upisivati ​​u raspravljati okvir da bi odgovor ili 1072 00:53:15,580 --> 00:53:20,040 nešto, vaš preglednik ne ono što je pozvao u SocketIO emitira neku vrstu 1073 00:53:20,040 --> 00:53:22,660 događaj koji kaže da je netko odgovaranje na ovom postu. 1074 00:53:22,660 --> 00:53:26,110 >> Zatim poslužitelja, kaže, u redu, što moram učiniti? 1075 00:53:26,110 --> 00:53:29,270 Pa sad moram reći tim drugim dečkima koji su na CS50 Razgovarajte potrazi 1076 00:53:29,270 --> 00:53:31,170 na ovom postu da netko odgovarate. 1077 00:53:31,170 --> 00:53:34,190 Dakle, to je vrsta ono što je SocketIO dobro, ovaj nastavak vrste 1078 00:53:34,190 --> 00:53:35,930 tok dijaloga. 1079 00:53:35,930 --> 00:53:37,250 OK. 1080 00:53:37,250 --> 00:53:40,060 >> Pa što ja imam ovdje - i mi smo samo će ignorirati veze niz 1081 00:53:40,060 --> 00:53:41,390 za malo - 1082 00:53:41,390 --> 00:53:43,080 ono što radim ja to još jedna slušaju. 1083 00:53:43,080 --> 00:53:46,880 Dakle, to je samo način na Socket.IO se rekavši Poslušajmo ovu luku. 1084 00:53:46,880 --> 00:53:50,060 I onda sam to učiniti na vezi. 1085 00:53:50,060 --> 00:53:53,360 Dakle, to je u biti samo Socket IO-a način da se kaže, kad primimo 1086 00:53:53,360 --> 00:53:55,840 veze, ja vam želim pokrenuti taj kod. 1087 00:53:55,840 --> 00:53:59,870 >> I primjetite da se, umjesto da REC i res prošli tamo imam utičnicu. 1088 00:53:59,870 --> 00:54:03,260 A to Socket Ideja je u osnovi to stvar koju možete pisati i čitati 1089 00:54:03,260 --> 00:54:05,750 iz koje je korisnik ' Poruke Moguće. 1090 00:54:05,750 --> 00:54:10,700 I poruke koje će poslati može proći kroz taj socket. 1091 00:54:10,700 --> 00:54:12,140 Ima li to smisla? 1092 00:54:12,140 --> 00:54:14,490 Tako da je ovo nastavak stvar. 1093 00:54:14,490 --> 00:54:17,820 >> Dakle, ono što radim ja zovem Socket.emit. 1094 00:54:17,820 --> 00:54:20,330 I čuje se prilično mnogo dva argumenta. 1095 00:54:20,330 --> 00:54:24,100 Prvi argument je string samo predstavlja tip 1096 00:54:24,100 --> 00:54:25,270 stvar koju emitiraju. 1097 00:54:25,270 --> 00:54:28,120 Dakle, u ovom slučaju, ja sam iskoristiti ovaj niz nova poruka. 1098 00:54:28,120 --> 00:54:32,670 A to je samo u osnovi kaže da Vrsta ovu stvar, ono što sam 1099 00:54:32,670 --> 00:54:34,750 slanja, je nova poruka. 1100 00:54:34,750 --> 00:54:38,460 Tako možete slušati za određene vrste kao nova poruka ili što god 1101 00:54:38,460 --> 00:54:39,960 pomoću točku na. 1102 00:54:39,960 --> 00:54:44,570 >> Dakle, veza i korisnik poslao tamo, ako je pogledate gdje mi zovemo točka na, 1103 00:54:44,570 --> 00:54:48,150 one su ostale žice koje predstavljaju vrste korisničkih poruka. 1104 00:54:48,150 --> 00:54:52,060 Dakle, to je u osnovi možete imati ovaj emitiraju jedan od tih vrsta poruka, te 1105 00:54:52,060 --> 00:54:55,520 zatim učinite nešto u odgovoru na jedan od tih tipova poruka 1106 00:54:55,520 --> 00:54:57,640 >> Tako sam emitira ovu novu poruku. 1107 00:54:57,640 --> 00:55:00,540 Idemo ignorirati connections.push na sekundu. 1108 00:55:00,540 --> 00:55:03,360 No, tada sam rekao, poslao Socket.on korisnika. 1109 00:55:03,360 --> 00:55:07,540 Dakle, sada je nešto kao kad Korisnik šalje mi poruku, ja želim 1110 00:55:07,540 --> 00:55:09,240 da pokrenete ovaj kod. 1111 00:55:09,240 --> 00:55:12,080 I primijetiti da je ta anonimna funkcija poduzima u tom varijablom 1112 00:55:12,080 --> 00:55:16,300 zove podaci koji u osnovi se događa imati korisnikovu poruku. 1113 00:55:16,300 --> 00:55:20,700 >> Pa sada neka vrsta govoriti o priključci polje. 1114 00:55:20,700 --> 00:55:24,590 Dakle, to je dizajniran za chat klijenta gdje su u osnovi svi su nekako u 1115 00:55:24,590 --> 00:55:25,950 Isto chat room. 1116 00:55:25,950 --> 00:55:29,640 Tako je u osnovi, ono što nam je potrebno da bi okolo je neki niz koji u osnovi 1117 00:55:29,640 --> 00:55:33,170 predstavlja sve ljude razgovor u neki način, ako to ima smisla. 1118 00:55:33,170 --> 00:55:33,340 Zar ne? 1119 00:55:33,340 --> 00:55:37,190 Zato moramo znati tko su ti momci tako možemo im poslati poruke 1120 00:55:37,190 --> 00:55:39,140 da drugi ljudi poslati na nas. 1121 00:55:39,140 --> 00:55:44,440 >> Pa što se to kod radi je kada korisnik šalje poruku - da je vrsta 1122 00:55:44,440 --> 00:55:45,300 događaj - 1123 00:55:45,300 --> 00:55:47,120 ćemo pokrenuti taj kod. 1124 00:55:47,120 --> 00:55:51,240 A što mi radimo je da prolaze kroz to niz koji smo nazvali veze. 1125 00:55:51,240 --> 00:55:54,390 I prilično mnogo za svaku vezu osim onoga koji je naš, to je 1126 00:55:54,390 --> 00:55:59,520 što se to kod kaže, šaljemo novi Poruka s tom prilogu poruke 1127 00:55:59,520 --> 00:56:01,210 informacije. 1128 00:56:01,210 --> 00:56:04,880 >> Dakle, ako primijetite ovdje, ono što sam učinio kad korisnik zapravo čini novi 1129 00:56:04,880 --> 00:56:08,560 veza je sam dodao sa JavaScript.push način, to 1130 00:56:08,560 --> 00:56:12,100 zapravo samo govori kao dodajte da Socket kao vrijednost u 1131 00:56:12,100 --> 00:56:13,900 naša veza polje. 1132 00:56:13,900 --> 00:56:20,560 Dakle, sada kada je ovaj kod radi, to će slanje stvari za one posebno 1133 00:56:20,560 --> 00:56:22,020 priključci. 1134 00:56:22,020 --> 00:56:26,980 Dakle, to može biti dobra polazna točka za izradu chat poslužitelj 1135 00:56:26,980 --> 00:56:28,250 ili nešto slično. 1136 00:56:28,250 --> 00:56:33,315 >> A vrsta cool stvar je da kod koji vidite ovdje kao i na i 1137 00:56:33,315 --> 00:56:36,390 emitiraju i stvari kao što je ista vrsta JavaScript kôd koji bi 1138 00:56:36,390 --> 00:56:39,260 pisati u pregledniku za interakciju s poslužitelja. 1139 00:56:39,260 --> 00:56:42,480 Zato SocketIO je vrsta uredno i korisno na taj način. 1140 00:56:42,480 --> 00:56:45,680 1141 00:56:45,680 --> 00:56:49,250 >> Oh i samo još jedna stvar jako brzo. 1142 00:56:49,250 --> 00:56:55,970 Bilo je CS50 konačni projekt prošle godine da je u osnovi provodi chat 1143 00:56:55,970 --> 00:56:57,840 poslužitelj u Node.js. 1144 00:56:57,840 --> 00:57:01,350 Mislim da je to Harvardchats.org ali ja nisam - 1145 00:57:01,350 --> 00:57:02,940 OK. 1146 00:57:02,940 --> 00:57:06,190 Nisam siguran što je URL, ali Ja mogu poslati da se nakon toga. 1147 00:57:06,190 --> 00:57:09,260 No, to je vrsta cool što možete učiniti s Node.js. 1148 00:57:09,260 --> 00:57:14,680 >> Dakle, nadam se, u cjelini, vi imate Dobar osjećaj za ono što je korisno Node.js 1149 00:57:14,680 --> 00:57:17,870 i kako ste možda mogli primijeniti do konačnog projekta. 1150 00:57:17,870 --> 00:57:21,050 Ja ću biti poslane iz neke više resursi uz ovaj. 1151 00:57:21,050 --> 00:57:23,170 I hvala vam što ste došli. 1152 00:57:23,170 --> 00:57:23,610 Hvala Vam. 1153 00:57:23,610 --> 00:57:27,168 >> [PLJESAK]