1 00:00:00,000 --> 00:00:08,350 2 00:00:08,350 --> 00:00:09,710 >> KEVIN SCHMID: Ahoj všichni. 3 00:00:09,710 --> 00:00:12,640 Vítejte na CS50 seminář na Node.js. 4 00:00:12,640 --> 00:00:13,955 Jmenuji se Kevin. 5 00:00:13,955 --> 00:00:15,580 Jsem CS50 TF. 6 00:00:15,580 --> 00:00:17,650 A já jsem něco jako opravdu nadšená o tomto semináři. 7 00:00:17,650 --> 00:00:20,430 Myslím, že Node.js je velmi cool. 8 00:00:20,430 --> 00:00:24,200 Doufám, že tento seminář je možné použít jako dobrý, myslím, odrazový můstek pro 9 00:00:24,200 --> 00:00:26,380 některé z vašich závěrečných projektů, pokud máte zájem o využití 10 00:00:26,380 --> 00:00:27,630 něco jako Node.js. 11 00:00:27,630 --> 00:00:29,770 12 00:00:29,770 --> 00:00:33,320 >> Budeme nějak začít seminář off jenom o trochu 13 00:00:33,320 --> 00:00:36,970 druh pozadí škálovatelnost Perspektivy Node.js, a pak 14 00:00:36,970 --> 00:00:39,240 budeme pohybovat na některé příklady kódu. 15 00:00:39,240 --> 00:00:42,340 A já budu mít kód na webových stránkách, a můžete se podívat na kód. 16 00:00:42,340 --> 00:00:45,475 A po semináři, budu třídit mluvit o tom, jak si můžete nastavit Node.js 17 00:00:45,475 --> 00:00:48,220 na vašem počítači. 18 00:00:48,220 --> 00:00:48,710 >> OK. 19 00:00:48,710 --> 00:00:49,760 Tak pojďme začít. 20 00:00:49,760 --> 00:00:53,700 Takže myslím, že jsem chtěl mluvit o webové servery, opravdu, jako první. 21 00:00:53,700 --> 00:00:59,730 A začít tuto diskusi, jsem v podstatě mají diagram, který je od 22 00:00:59,730 --> 00:01:04,269 učebnice používá pro CS61, které v podstatě ukazuje interakce 23 00:01:04,269 --> 00:01:08,510 mezi procesu klienta, jako je váš web prohlížeče nebo jako váš cíl klienta nebo 24 00:01:08,510 --> 00:01:11,340 něco takového, a webový server. 25 00:01:11,340 --> 00:01:15,150 Takže tento druh vypadá podobně jako obrázek, který jste viděli v přednášce na 26 00:01:15,150 --> 00:01:19,270 Středa, kde v podstatě máme nějaké Proces klienta jako je Google Chrome. 27 00:01:19,270 --> 00:01:22,980 >> A pak první krok je klient odešle požadavek. 28 00:01:22,980 --> 00:01:27,510 Takže to může být něco jako dobře pojďme návštěvu, nevím, CS50.net. 29 00:01:27,510 --> 00:01:29,320 Tak jsme se vydat tento požadavek. 30 00:01:29,320 --> 00:01:34,280 A nemá někdo vzpomenout na jméno protokol, který specifikuje, jak to 31 00:01:34,280 --> 00:01:35,610 Žádost by měla být strukturována? 32 00:01:35,610 --> 00:01:36,382 Jo. 33 00:01:36,382 --> 00:01:37,650 >> DIVÁKŮ: [neslyšitelné]. 34 00:01:37,650 --> 00:01:38,150 >> KEVIN SCHMID: Přesně tak. 35 00:01:38,150 --> 00:01:40,100 Takže je to jako HTTP, ne? 36 00:01:40,100 --> 00:01:44,720 Takže v podstatě, jak specifikace že žádost by měla ve skutečnosti být stanovena 37 00:01:44,720 --> 00:01:47,450 ven, protože na konci dne, že žádost je opravdu jen rád 38 00:01:47,450 --> 00:01:50,240 Řetězec, který v podstatě říká, že to chci. 39 00:01:50,240 --> 00:01:53,580 A specifikace pro které je HTTP. 40 00:01:53,580 --> 00:01:55,270 Takže to je jako protokol. 41 00:01:55,270 --> 00:01:57,920 >> Takže server obdrží že žádost. 42 00:01:57,920 --> 00:02:01,610 Takže vy máte nainstalován webový server v CS50 spotřebiče. 43 00:02:01,610 --> 00:02:02,460 Je to Apache. 44 00:02:02,460 --> 00:02:06,230 A tento týden, když budete pracovat na problému nastavit sedm, budete skutečně pracovat 45 00:02:06,230 --> 00:02:08,160 s tímto webovým serverem. 46 00:02:08,160 --> 00:02:12,380 Takže server obdrží tuto žádost, a pak se musí trochu poškrábat jeho 47 00:02:12,380 --> 00:02:15,090 hlavu a říci, jak dobře to, co mám dělat s tím? 48 00:02:15,090 --> 00:02:20,060 >> Takže na základě toho, co se rozhodne udělat, pak to může mít kontaktovat nějakou 49 00:02:20,060 --> 00:02:20,730 ze zdroje. 50 00:02:20,730 --> 00:02:23,700 A že zdroj by mohl být mnoho různých věcí. 51 00:02:23,700 --> 00:02:26,810 Pro jednoho, by to mohlo být jen jako statické HTML souboru. 52 00:02:26,810 --> 00:02:29,820 Takže to může být jen jako nějaký HTML, která je stejně jako u 53 00:02:29,820 --> 00:02:31,100 vaše osobní webové stránky. 54 00:02:31,100 --> 00:02:35,360 Mohlo by to být statický obrázek jako obrázek nebo jako film, který máte. 55 00:02:35,360 --> 00:02:37,660 Mohlo by to mít i mluvit do nějaké databáze 56 00:02:37,660 --> 00:02:39,530 jako databázi MySQL. 57 00:02:39,530 --> 00:02:43,910 Takže to nemusí vždy komunikovat se zdrojem, ale v 58 00:02:43,910 --> 00:02:45,700 V některých případech by to mohlo. 59 00:02:45,700 --> 00:02:47,800 >> Tak co to bude dělat poté, co to je, že to bude 60 00:02:47,800 --> 00:02:49,430 poslat zpět odpověď. 61 00:02:49,430 --> 00:02:53,130 A odpověď je to, rovněž určuje HTTP. 62 00:02:53,130 --> 00:02:54,830 Takže pak může klient obdržet. 63 00:02:54,830 --> 00:02:56,740 To může roztrhat na kusy a zpracovat ji. 64 00:02:56,740 --> 00:03:00,900 A pak dostanete webovou stránku jako je Google nebo CS50.net nebo 65 00:03:00,900 --> 00:03:02,240 co šel. 66 00:03:02,240 --> 00:03:03,100 OK? 67 00:03:03,100 --> 00:03:06,080 >> Tak to je základní interakce, které budeme se zabývají. 68 00:03:06,080 --> 00:03:08,770 A my jsme docela hodně bude zaměřené na této části 69 00:03:08,770 --> 00:03:10,640 interakce, server. 70 00:03:10,640 --> 00:03:10,990 OK. 71 00:03:10,990 --> 00:03:12,210 V pohodě. 72 00:03:12,210 --> 00:03:15,500 Má někdo nějaké dotazy tak daleko? 73 00:03:15,500 --> 00:03:17,720 OK. 74 00:03:17,720 --> 00:03:22,430 >> Tak, jak jsme si řekli, webový server obdrží tento požadavek HTTP a poté vydá toto 75 00:03:22,430 --> 00:03:24,760 Odpověď HTTP. 76 00:03:24,760 --> 00:03:29,100 A jak jsme o tom mluvili dříve, CS50 spotřebiče webový server Apache. 77 00:03:29,100 --> 00:03:32,490 Takže když kluci pracovat na P set sedm, budete pracovat s 78 00:03:32,490 --> 00:03:34,120 Webový server Apache. 79 00:03:34,120 --> 00:03:37,890 Už nikdy nebudete muset skutečně pracovat Apache přímo příliš mnoho. 80 00:03:37,890 --> 00:03:41,920 Můžete nějak konfigurovat Apache trochu když zadáte na virtuální hostitele nebo 81 00:03:41,920 --> 00:03:44,970 Klínové hostitelé, a dostaneme se, že v trochu. 82 00:03:44,970 --> 00:03:50,620 >> Ale v podstatě, web server Apache nastavit pro práci s PHP druhu 83 00:03:50,620 --> 00:03:51,730 ze po vybalení z krabice. 84 00:03:51,730 --> 00:03:56,170 Takže to, co se skutečně děje je, když jdete do jedné ze svých webových stránek, jako je, řekněme, 85 00:03:56,170 --> 00:04:00,360 místního hostitele lomítko index.php, nebo tak něco, je váš prohlížeč odešle že 86 00:04:00,360 --> 00:04:04,330 žádost, a pak Apache sedí tam a vyřeší s tím dělat. 87 00:04:04,330 --> 00:04:08,840 A akce je provést že kód v index.php a 88 00:04:08,840 --> 00:04:11,330 pak jej odeslat zpět. 89 00:04:11,330 --> 00:04:15,640 Takže tam je to. 90 00:04:15,640 --> 00:04:16,980 Tak jsme trochu mluvili o tom. 91 00:04:16,980 --> 00:04:21,990 Takže by to mohlo sloužit pouze statický soubor nebo spustit nějaký PHP kód a pak problém 92 00:04:21,990 --> 00:04:23,510 odpověď. 93 00:04:23,510 --> 00:04:27,670 >> Tak častá otázka, která může přijít up je dobře, jak to opravdu řešit 94 00:04:27,670 --> 00:04:31,750 s tím více uživatelů ve stejnou dobu? 95 00:04:31,750 --> 00:04:36,930 Takže si představte, že jste psali web serveru, pokud jste měl webový server, který 96 00:04:36,930 --> 00:04:39,900 jste se snažili napsat něco jako je C nebo něco takového, 97 00:04:39,900 --> 00:04:45,150 v podstatě můžete přemýšlet o tom, jak se tam by mohl být nějaký druh kódu, který 98 00:04:45,150 --> 00:04:49,330 obdrží žádost, ale pak to má dělat všechnu tuto práci na něm. 99 00:04:49,330 --> 00:04:53,060 To může mít, například, kontaktujte databáze nebo něco takového. 100 00:04:53,060 --> 00:04:53,300 Je to tak? 101 00:04:53,300 --> 00:04:56,010 A pak, že by to ten druh zpracování a pak 102 00:04:56,010 --> 00:04:57,060 vráceno zpět do reakce. 103 00:04:57,060 --> 00:04:58,950 Takže to je jako vysoce Přehled úrovni. 104 00:04:58,950 --> 00:05:04,210 >> Ale to není na první pohled zřejmé, jak se Můžete to udělat tak, že dva lidé, nebo 105 00:05:04,210 --> 00:05:09,040 dokonce 1000 lidí by mohlo fungovat s vaším webový server, ve stejnou dobu. 106 00:05:09,040 --> 00:05:14,880 Takže řešení, které využívá Apache se nazývá vlákna nebo procesy. 107 00:05:14,880 --> 00:05:16,770 Tak jste možná slyšeli o tyto pojmy před. 108 00:05:16,770 --> 00:05:22,190 To je v pořádku, pokud nemáte, ale jen, že o závitu nebo procesů jako způsoby 109 00:05:22,190 --> 00:05:26,290 operační systém nebo uživatelský program nebo něco takového, nebo webový server 110 00:05:26,290 --> 00:05:28,810 na druh provádět více věci najednou. 111 00:05:28,810 --> 00:05:31,760 Tak jste možná slyšeli termín jako závity provedení. 112 00:05:31,760 --> 00:05:34,140 Takže je to něco jako, že jsi druh multitasking. 113 00:05:34,140 --> 00:05:37,710 >> A pokud jste viděli na krabici vašeho notebook, nebo něco takového, 114 00:05:37,710 --> 00:05:43,040 multicore, co můžete udělat, je můžete spustit dva různé závity na různé 115 00:05:43,040 --> 00:05:46,700 části procesoru tak, aby mohly ve skutečnosti se stalo ve stejnou dobu. 116 00:05:46,700 --> 00:05:48,100 Tak tohle je opravdu silný. 117 00:05:48,100 --> 00:05:52,270 A to je druh Apache řešení tohoto problému. 118 00:05:52,270 --> 00:05:57,900 >> Takže je tam něco jako případné problémy s tímto přístupem by? 119 00:05:57,900 --> 00:05:59,870 Takže myslím, že jsem trochu psal je tam. 120 00:05:59,870 --> 00:06:03,440 Ale oba tak nějak používají velké množství paměti. 121 00:06:03,440 --> 00:06:07,490 Je to velmi drahé, na vytvoření vlákno nebo proces. 122 00:06:07,490 --> 00:06:11,750 >> A část odůvodnění je, že právě jako když jste spuštění programu C 123 00:06:11,750 --> 00:06:15,090 jako vaše hlavní a pak, že hovory další funkce, které má 124 00:06:15,090 --> 00:06:16,520 nějaký zásobníku. 125 00:06:16,520 --> 00:06:19,910 Takže vlákna také vyžadují zcela samostatný zásobník, který 126 00:06:19,910 --> 00:06:21,220 mohou být poměrně velké. 127 00:06:21,220 --> 00:06:25,170 A pokud si můžete představit, že spoustu uživatelů na vaše webové stránky, měli byste mít 128 00:06:25,170 --> 00:06:26,280 mnoho různých vláken. 129 00:06:26,280 --> 00:06:28,230 To je hodně stohů spravovat a udržovat. 130 00:06:28,230 --> 00:06:31,280 Tak to je velká spotřeba paměti. 131 00:06:31,280 --> 00:06:35,650 >> A pak, i, řekněme, že máte jen jeden CPU, nebo řekněme, že máte 132 00:06:35,650 --> 00:06:38,460 více závitů, než máte ty multicores. 133 00:06:38,460 --> 00:06:38,730 Je to tak? 134 00:06:38,730 --> 00:06:43,280 Takže řekněme, že jste měl 10 vláken a před sebou měli jen pět procesorů. 135 00:06:43,280 --> 00:06:46,260 Tak nějak udělat tuto věc, kde můžete přepínat mezi proudem 136 00:06:46,260 --> 00:06:49,090 ten, který je spuštěn, protože jste nelze spustit všechny 10 najednou. 137 00:06:49,090 --> 00:06:50,980 A to se říká přepnutí kontextu. 138 00:06:50,980 --> 00:06:54,260 A že pojem má ve skutečnosti několik různé kontexty, ale řekněme, 139 00:06:54,260 --> 00:06:56,620 myslet na to jako spínací mezi dvěma závity. 140 00:06:56,620 --> 00:06:59,730 To může být velmi nákladné, protože v podstatě to, co musíte udělat, je si 141 00:06:59,730 --> 00:07:03,340 muset zastavit to, co děláte, uložit stav tohoto spuštěný podproces, a 142 00:07:03,340 --> 00:07:05,440 pak přejít někam jinam. 143 00:07:05,440 --> 00:07:09,420 >> Takže se všichni trochu vidět motivace, proč závity a 144 00:07:09,420 --> 00:07:12,030 procesy by mohly být trochu objemný? 145 00:07:12,030 --> 00:07:13,840 A už máte nějakou otázku? 146 00:07:13,840 --> 00:07:14,376 OK. 147 00:07:14,376 --> 00:07:15,070 V pohodě. 148 00:07:15,070 --> 00:07:18,090 Má někdo nějaké otázky? 149 00:07:18,090 --> 00:07:19,620 OK. 150 00:07:19,620 --> 00:07:26,720 >> Takže když jsme se o krok zpět za sekundu, tam je něco jako 151 00:07:26,720 --> 00:07:30,350 Zjištění, že bychom mohli o Mnoho webových aplikací. 152 00:07:30,350 --> 00:07:34,810 A to je fakt, že mnoho z nich ve skutečnosti nedělají to hodně užitečné 153 00:07:34,810 --> 00:07:37,140 pracovat uvnitř závitu. 154 00:07:37,140 --> 00:07:41,170 Takže se někdo začal na P set sedm vůbec? 155 00:07:41,170 --> 00:07:45,650 Takže chceš snad popsat některé části? 156 00:07:45,650 --> 00:07:47,850 Pracoval jste na přihlášení nebo něco takového? 157 00:07:47,850 --> 00:07:49,330 >> Diváků: Ne 158 00:07:49,330 --> 00:07:49,780 >> KEVIN SCHMID: OK. 159 00:07:49,780 --> 00:07:50,150 To nic. 160 00:07:50,150 --> 00:07:50,900 Promiňte. 161 00:07:50,900 --> 00:07:55,790 Ale v podstatě, v sadě P, jste bude dělat spoustu druhu 162 00:07:55,790 --> 00:07:59,760 dotazy na databázi, jak získat některé Informace z této databáze. 163 00:07:59,760 --> 00:08:03,330 A co váš kód se bude dělat, co tento proces Apache nebo 164 00:08:03,330 --> 00:08:06,030 že Apache vlákno se bude dělat zatímco to má kontaktovat 165 00:08:06,030 --> 00:08:08,990 Databáze je to trochu bude tam sedí, a to bude 166 00:08:08,990 --> 00:08:12,130 čekání na databáze odpovědět. 167 00:08:12,130 --> 00:08:16,290 >> Teď, když nemusí znít jako tak velký zabývat, protože databáze je na vaší 168 00:08:16,290 --> 00:08:18,240 CS50 zařízení, ne? 169 00:08:18,240 --> 00:08:22,930 Ale tam je nějaký druh sítě Latence tam, protože teď webu 170 00:08:22,930 --> 00:08:26,830 server má vydat svou vlastní žádost databáze pro komunikaci s 171 00:08:26,830 --> 00:08:29,520 databáze a pak se, že informace zpět. 172 00:08:29,520 --> 00:08:33,190 Takže teď je to jako dobře čekat na mě, já jsem jít dostat něco z 173 00:08:33,190 --> 00:08:35,770 databáze a pak je tu Mnoho čekání děje. 174 00:08:35,770 --> 00:08:36,870 Má to smysl? 175 00:08:36,870 --> 00:08:38,580 >> A některé věci, že to není tak špatné. 176 00:08:38,580 --> 00:08:41,950 Je-li to jen má, například, přístup k paměti, že to není jako 177 00:08:41,950 --> 00:08:44,100 hrozný I / O latence. 178 00:08:44,100 --> 00:08:47,110 A když říkám, I / O latence, co jsem odkazuje na je jako jakékoliv podobné 179 00:08:47,110 --> 00:08:48,290 vstup a výstup. 180 00:08:48,290 --> 00:08:52,950 Ale přístup k souboru na disku, jako je kdybych chtěl sloužit statické HTML 181 00:08:52,950 --> 00:08:57,850 soubor, který byl na mé webové stránce, nebo něco jako, že jsem tak trochu musel 182 00:08:57,850 --> 00:09:02,310 zastavit na chvíli, přečtěte si tento soubor od disku, a pak 183 00:09:02,310 --> 00:09:04,400 že proces čekám. 184 00:09:04,400 --> 00:09:06,700 Nebudu dělat užitečnou práci. 185 00:09:06,700 --> 00:09:11,270 >> To není pravda všechno, ale je to je běžné u aplikací, jako je P sady 186 00:09:11,270 --> 00:09:13,960 sedm a mnoho aplikací že nejste 187 00:09:13,960 --> 00:09:15,440 vlastně dělá hodně přemýšlet. 188 00:09:15,440 --> 00:09:19,090 A když říkám myšlení, mám na mysli jako výpočetní práci. 189 00:09:19,090 --> 00:09:23,270 Takže výpočetní práce by mohlo být něco, jako, řekněme, co jste chtěli 190 00:09:23,270 --> 00:09:26,590 napsat webový server, který právě vypočítanou nth Fibonacci číslo. 191 00:09:26,590 --> 00:09:29,300 To nezní jako zvláště zábava webový server. 192 00:09:29,300 --> 00:09:34,220 Jako bych nečekal, že místo, aby se další Facebook, ale to je nějaký 193 00:09:34,220 --> 00:09:35,610 druh výpočetní práce. 194 00:09:35,610 --> 00:09:39,570 >> A můžete si představit, že s výměnou nějaký jiný druh zajímavý 195 00:09:39,570 --> 00:09:43,070 výpočetní práce. 196 00:09:43,070 --> 00:09:46,050 Řekněme, že jste psali něco který počítal stupňů 197 00:09:46,050 --> 00:09:49,170 separace mezi dvěma lidmi nebo něco takového. 198 00:09:49,170 --> 00:09:51,860 Takže to dělá zahrnovat nějaký druh výpočtu, ne? 199 00:09:51,860 --> 00:09:56,630 A i pak, k tomu, že stále máte udělat hodně čekání na možná 200 00:09:56,630 --> 00:09:59,550 Máte dotaz na databázi se podívat up, který je přítelem, který nebo 201 00:09:59,550 --> 00:10:00,600 něco takového. 202 00:10:00,600 --> 00:10:03,510 Takže tam je to trochu pojmu z výpočetní práce. 203 00:10:03,510 --> 00:10:05,260 Má to smysl? 204 00:10:05,260 --> 00:10:08,258 Má někdo nějaké otázky? 205 00:10:08,258 --> 00:10:11,960 >> Jo a myslím, že jsem dal chatovací servery zde protože chatovací servery jsou druh 206 00:10:11,960 --> 00:10:13,240 Dalším dobrým příkladem. 207 00:10:13,240 --> 00:10:15,250 Chatu server nemá dělat hodně přemýšlet. 208 00:10:15,250 --> 00:10:18,350 To prostě musí čekat na lidi, aby posílání zpráv a pak, když 209 00:10:18,350 --> 00:10:19,800 oni, pošlete je. 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 >> Takže jen proto, aby znovu rekapitulovat, Apache a podobné webové servery, jako že vidlice 213 00:10:28,180 --> 00:10:31,470 Mnoho procesů a podprocesů, které může být trochu marnotratné. 214 00:10:31,470 --> 00:10:37,530 Takže myslím, že na otázku, která může přijít ze které je potřebujeme mít 215 00:10:37,530 --> 00:10:39,610 více podprocesů a procesů? 216 00:10:39,610 --> 00:10:41,890 Co kdybychom měli jedno? 217 00:10:41,890 --> 00:10:45,710 >> Takže pojďme se trochu namalovat obrázek o tom, co by to vypadat. 218 00:10:45,710 --> 00:10:47,810 Takže pojďme použít pouze jeden závit. 219 00:10:47,810 --> 00:10:48,660 OK? 220 00:10:48,660 --> 00:10:52,790 Tak jen si to s jedním závitem. 221 00:10:52,790 --> 00:10:56,600 >> Předpokládejme, že jsme opravdu dělá že hodně užitečné - a když říkám 222 00:10:56,600 --> 00:10:59,450 užitečné, myslím výpočetní práce - 223 00:10:59,450 --> 00:11:01,130 v těch několika vláken předtím. 224 00:11:01,130 --> 00:11:04,180 Takže pojďme trochu konsolidovat vše v jednom vlákně. 225 00:11:04,180 --> 00:11:07,780 Tak co kdybychom měli jedno vlákno tohoto druhu ze jen jde kolem smyčky a 226 00:11:07,780 --> 00:11:10,880 neustále kontroluje udělal něco nový stát. 227 00:11:10,880 --> 00:11:15,130 Tak například, něco nového se stalo mohl říct, že jsem něco zpět od 228 00:11:15,130 --> 00:11:19,310 databáze, nebo někdo poslal mi nový požadavek HTTP. 229 00:11:19,310 --> 00:11:22,290 Takže to jsou druhy akcí aby se to stalo, ne? 230 00:11:22,290 --> 00:11:26,130 >> A pak, co mohu dělat, když ty nové věci se dějí v tomto stejném podprocesu 231 00:11:26,130 --> 00:11:30,120 realizace, tento jediný závit provedení, můžu zavolat nějaký kód, který 232 00:11:30,120 --> 00:11:32,410 by zvládnout tuto konkrétní věc. 233 00:11:32,410 --> 00:11:36,640 Tak například, když jsem něco zpět z databáze, mohl jsem běžet můj 234 00:11:36,640 --> 00:11:40,960 malá výpočetní část, která vlastně jen připravuje na věc 235 00:11:40,960 --> 00:11:42,620 zaslat zpět uživateli. 236 00:11:42,620 --> 00:11:46,710 Tak to dělá trochu smysl? 237 00:11:46,710 --> 00:11:49,940 >> Ale co je opravdu důsledky to? 238 00:11:49,940 --> 00:11:50,660 Je to tak? 239 00:11:50,660 --> 00:11:53,730 Vzhledem k tomu, že jsme napsal spousta kódu, který - 240 00:11:53,730 --> 00:11:58,330 a já jen tak na skok dopředu na diapozitivy, jestli je to v pořádku. 241 00:11:58,330 --> 00:12:00,930 Takže pokud vám to nevadí, já jsem jen chystá udělat krok zpět. 242 00:12:00,930 --> 00:12:03,410 Takže tento druh věcí je tzv. smyčky událostí. 243 00:12:03,410 --> 00:12:04,070 OK? 244 00:12:04,070 --> 00:12:07,240 A to je docela základní Myšlenka Node.js. 245 00:12:07,240 --> 00:12:11,240 >> Takže to, co Node.js je opravdu dělá jako web Server je tam jeden závit 246 00:12:11,240 --> 00:12:14,850 , který je v podstatě děje kolem ve smyčce jako, zatímco jedna druhů nedostatečně 247 00:12:14,850 --> 00:12:18,510 kapuce v Node.js to neustále kontroly, jsme přijímat nové věci? 248 00:12:18,510 --> 00:12:22,720 A pak to bude fungovat manipulátory které jste nastavili. 249 00:12:22,720 --> 00:12:26,720 Ale dobrý na něco zeptat, je, jak můžeme udělat to stalo 250 00:12:26,720 --> 00:12:28,090 s existujícími věcmi? 251 00:12:28,090 --> 00:12:32,440 >> Tak jsem dal řádek kódu C zde, že v podstatě vypadá to, že otevření 252 00:12:32,440 --> 00:12:33,060 soubor, ne? 253 00:12:33,060 --> 00:12:36,090 I ona právě vyšel s albem. 254 00:12:36,090 --> 00:12:39,600 Tak jsem ji musel otevřít nový soubor. 255 00:12:39,600 --> 00:12:43,810 Takže jak naše C kód pro provoz - 256 00:12:43,810 --> 00:12:47,890 a myslím, že důvod, proč jsem si vybral souborů byl protože to je druh rozsahu 257 00:12:47,890 --> 00:12:52,000 o I / O práci, kterou jsme udělali v C pocit, že tam je vstup a výstup. 258 00:12:52,000 --> 00:12:55,070 Tak nazýváme tento kód, který dělá to f otevřený. 259 00:12:55,070 --> 00:12:59,370 A pak na další řádek našich Program, nyní můžeme pracovat s f.. 260 00:12:59,370 --> 00:13:02,710 >> Takže by to být příkladem něčeho to je jako synchronní nebo 261 00:13:02,710 --> 00:13:06,850 blokování, protože na tomto prvním řádku tam čekáme, dokud se 262 00:13:06,850 --> 00:13:08,110 získat soubor otevřen. 263 00:13:08,110 --> 00:13:12,260 Takže na druhém řádku, víme, že může pracovat s f, ale to znamená, že 264 00:13:12,260 --> 00:13:16,240 že druhý řádek nemůžu spustit do první řádek je hotovo. 265 00:13:16,240 --> 00:13:17,760 Má to smysl? 266 00:13:17,760 --> 00:13:20,890 >> Tak to by bylo špatné, aby v obslužné rutině události. 267 00:13:20,890 --> 00:13:23,920 A důvodem je, že tento druh čeká, že jo? 268 00:13:23,920 --> 00:13:26,500 Tak to by nás vrátit zpět na stejnou věc. 269 00:13:26,500 --> 00:13:29,470 A teď bychom ani přínosem více vláken nebo 270 00:13:29,470 --> 00:13:32,390 procesy, protože jsme dostali jeden závit Node.js. 271 00:13:32,390 --> 00:13:35,496 Znamená to, že smysl pro každého? 272 00:13:35,496 --> 00:13:35,990 >> DIVÁKŮ: Počkejte. 273 00:13:35,990 --> 00:13:36,980 Takže to, co je výměna? 274 00:13:36,980 --> 00:13:37,840 >> KEVIN SCHMID: Oh, tak ano. 275 00:13:37,840 --> 00:13:39,560 Takže budu se dostat do náhradní. 276 00:13:39,560 --> 00:13:40,430 OK. 277 00:13:40,430 --> 00:13:42,960 Tak co kdybychom měli něco který vypadal takhle? 278 00:13:42,960 --> 00:13:45,730 Takže co když teď jsem upravil f otevřít trochu? 279 00:13:45,730 --> 00:13:48,370 Takže jsem kolem ve stejné dva argumenty jako předtím. 280 00:13:48,370 --> 00:13:52,610 Pořád tě miluju novou píseň která vyšla s. 281 00:13:52,610 --> 00:13:57,260 Ale já jsem kolem třetí věc, která je tato proměnná nazývá kód. 282 00:13:57,260 --> 00:14:02,280 >> Ale co je vlastně kód v této souvislosti? 283 00:14:02,280 --> 00:14:05,360 Je to jako běžné proměnné C? 284 00:14:05,360 --> 00:14:06,740 Je to funkce, ne? 285 00:14:06,740 --> 00:14:09,450 A to může být proto, že trochu divný Jsem vlastně jako teď kolem 286 00:14:09,450 --> 00:14:12,320 funkce do jiné funkce. 287 00:14:12,320 --> 00:14:14,400 >> Takže pár postřehů o tom. 288 00:14:14,400 --> 00:14:17,145 Za prvé, já nejsem ve skutečnosti volání kód funkce. 289 00:14:17,145 --> 00:14:20,650 Takže nevidíte kód vlevo závorka, pravá závorka. 290 00:14:20,650 --> 00:14:23,010 Jen jsem kolem v kódu. 291 00:14:23,010 --> 00:14:26,990 A v C, co by to vlastně dělat je mi dát ukazatel, že skutečná 292 00:14:26,990 --> 00:14:29,740 kód, a pak by to mohlo spustit. 293 00:14:29,740 --> 00:14:33,350 Ale jen přemýšlet o tom, jak jste absolvování spuštění kódu, pokud 294 00:14:33,350 --> 00:14:35,150 že soubor je otevřen. 295 00:14:35,150 --> 00:14:41,430 >> Ale co to znamená, že nyní Zbytek mého programu, který by mohl dělat 296 00:14:41,430 --> 00:14:47,050 další věci, mohou pokračovat v tom jiný věci, zatímco my, opravdu ne čekat, ale 297 00:14:47,050 --> 00:14:50,890 jen v zadní části našich hlavách, že při otevření, běh tohoto souboru je, že 298 00:14:50,890 --> 00:14:52,130 Kód na vrcholu. 299 00:14:52,130 --> 00:14:53,390 Má to smysl? 300 00:14:53,390 --> 00:14:58,060 >> A teď myšlenkou Node.js je, že kód ve dělat věci s f 301 00:14:58,060 --> 00:15:04,590 část by měla být dost krátké a jednoduché a jednoduché a není opravdu být 302 00:15:04,590 --> 00:15:06,160 velmi výpočetně náročné. 303 00:15:06,160 --> 00:15:09,390 To může otevřít jiný soubor, ale které by měly být také docela rychle 304 00:15:09,390 --> 00:15:14,710 protože to by prostě říct, udělat další f otevřít a pak volat toto další kód. 305 00:15:14,710 --> 00:15:19,100 >> Takže jen zcela jasné, f otevření, které přináší nová Katy Perry píseň 306 00:15:19,100 --> 00:15:23,060 done mp3, že to bude dost moc se okamžitě vrátí. 307 00:15:23,060 --> 00:15:27,820 A pak se můžeme jen pokračovat v tom, další věci, protože vše, co nyní f 308 00:15:27,820 --> 00:15:33,410 Otevřená výzva se je říci v podstatě Základním f otevřený kód otevřít tento soubor 309 00:15:33,410 --> 00:15:36,020 a když jste hotovi otevření této souboru, nebo když si to zpátky, 310 00:15:36,020 --> 00:15:37,480 spusťte tento kód. 311 00:15:37,480 --> 00:15:39,540 Ale to není ve skutečnosti spuštěn tento kód. 312 00:15:39,540 --> 00:15:41,815 A vy jste měl otázku? 313 00:15:41,815 --> 00:15:46,180 >> DIVÁKŮ: Zdálo se mi naznačit, pár časy, že přidání výpočetně 314 00:15:46,180 --> 00:15:50,545 intenzivní kód nějak rozbít [Neslyšitelný] řízený systém. 315 00:15:50,545 --> 00:15:51,795 [Neslyšitelný]? 316 00:15:51,795 --> 00:15:54,450 317 00:15:54,450 --> 00:15:55,290 >> KEVIN SCHMID: To je velká otázka. 318 00:15:55,290 --> 00:15:59,280 Takže jsem vlastně máme příklad toho, jak můžete integrovat výpočetně 319 00:15:59,280 --> 00:16:01,090 intenzivní kód v trochu. 320 00:16:01,090 --> 00:16:03,620 Takže, když se dostaneme do příkladech kódu, Budu určitě vytáhnout, že jeden. 321 00:16:03,620 --> 00:16:04,700 Je to v pořádku? 322 00:16:04,700 --> 00:16:05,950 Děkuju. 323 00:16:05,950 --> 00:16:07,690 324 00:16:07,690 --> 00:16:08,750 >> Jaké bylo vaše jméno? 325 00:16:08,750 --> 00:16:10,620 >> DIVÁKŮ: Aaron. 326 00:16:10,620 --> 00:16:14,830 >> KEVIN SCHMID: Aaron přináší až velmi dobrý bod, což je to, že když jsem měl 327 00:16:14,830 --> 00:16:18,560 některé výpočetně náročné kód dělat věci s f část, zbytek 328 00:16:18,560 --> 00:16:22,880 můj program nelze spustit a nemůže poslouchat pro nové žádosti, nebo nic, dokud všichni 329 00:16:22,880 --> 00:16:24,270 že věc je dokončena. 330 00:16:24,270 --> 00:16:27,390 Takže když píšu kód uzlu obecně pokud uděláme něco jako já jdu 331 00:16:27,390 --> 00:16:33,060 navrhnout později, když se podíváme na příklady kódu, musím si být jisti, že 332 00:16:33,060 --> 00:16:36,060 můj kód není přivázat tato smyčka událost. 333 00:16:36,060 --> 00:16:38,120 Má to smysl? 334 00:16:38,120 --> 00:16:38,350 OK. 335 00:16:38,350 --> 00:16:40,040 V pohodě. 336 00:16:40,040 --> 00:16:47,090 >> Takže Node.js nabízí tento rámec, který můžete vytvořit tyto události řízený 337 00:16:47,090 --> 00:16:48,210 Servery se. 338 00:16:48,210 --> 00:16:53,460 Tak to má tento druh asynchronní neblokující I / O knihovny, vzhledem k tomu, 339 00:16:53,460 --> 00:16:56,800 standardní knihovny C, které jsme byli práci s, jako když jste právě 340 00:16:56,800 --> 00:16:59,500 používat stejným způsobem, že jsme Používám je s f otevře a 341 00:16:59,500 --> 00:17:03,000 věci, které jsou blokování, protože jste skutečně muset počkat 342 00:17:03,000 --> 00:17:04,470 tento soubor otevřít. 343 00:17:04,470 --> 00:17:09,290 >> Ale Node.js vám to dává, a to v podstatě navazuje na Google V8 344 00:17:09,290 --> 00:17:14,030 JavaScript engine, který je důvod, že Chrome je ve zpracování tak rychle, 345 00:17:14,030 --> 00:17:17,040 JavaScript, protože má tento motor V8. 346 00:17:17,040 --> 00:17:22,460 Takže vím, že to zní jako jeden z těch, WWDC vývojářské konference věc 347 00:17:22,460 --> 00:17:25,390 kde se jen hodit spoustu číslo písmeno věci pro procesory 348 00:17:25,390 --> 00:17:26,910 a říkají, že je to v pohodě. 349 00:17:26,910 --> 00:17:34,200 Ale to je v pohodě, že to udělali to proto, že JavaScript - 350 00:17:34,200 --> 00:17:37,010 nebo možná, pokud nejste obeznámeni s JavaScript přesto, protože jsme neměli 351 00:17:37,010 --> 00:17:38,180 přednášky na něm - 352 00:17:38,180 --> 00:17:40,770 ale JavaScript je interpretovaný jazyk. 353 00:17:40,770 --> 00:17:41,970 >> A to je důležité také. 354 00:17:41,970 --> 00:17:45,790 Takže je to důležité pro náš web Servery být rychlý, že jo? 355 00:17:45,790 --> 00:17:49,970 A když jsme byli jen běh kódu JavaScript kód, který byl vyložen jen s 356 00:17:49,970 --> 00:17:52,130 nějaký starý interpret by to mohlo být pomalé. 357 00:17:52,130 --> 00:17:55,980 Takže uzlu těží z nutnosti tento super rychlý V8 tlumočníka. 358 00:17:55,980 --> 00:17:59,580 A já nevím, jestli se jmenoval jej protože V8 facka do čela 359 00:17:59,580 --> 00:18:01,110 věc, ale OK. 360 00:18:01,110 --> 00:18:07,070 >> Tak jsem si připravil několik příkladů na této adrese URL. 361 00:18:07,070 --> 00:18:10,490 Po semináři, jsem nějak bude mluvit o tom, jak můžete získat sadu uzlu 362 00:18:10,490 --> 00:18:13,570 , ale teď, jsem jen trochu chtít projít několik příkladů kódu. 363 00:18:13,570 --> 00:18:17,250 Takže pokud chcete sledovat spolu, všechny Zdrojový kód je k dispozici zde. 364 00:18:17,250 --> 00:18:18,720 OK? 365 00:18:18,720 --> 00:18:22,280 >> Tak jsem si nechat tuto adresu URL pro málo. 366 00:18:22,280 --> 00:18:24,440 A pak jsem jen tak přepnutí do terminálu. 367 00:18:24,440 --> 00:18:29,670 368 00:18:29,670 --> 00:18:34,400 Jsou všichni dobře s tímto URL? 369 00:18:34,400 --> 00:18:37,990 Takže budu přepínat k mému terminálu zde. 370 00:18:37,990 --> 00:18:42,030 >> Tak tady je kód, který Mám na dnešek. 371 00:18:42,030 --> 00:18:43,960 Proč ne začneme s simpler.js soubor? 372 00:18:43,960 --> 00:18:49,110 373 00:18:49,110 --> 00:18:52,100 Druhá věc je, že to všechno kód se bude napsán v 374 00:18:52,100 --> 00:18:56,660 JavaScript které mohou nebo nemusí být znát. 375 00:18:56,660 --> 00:19:00,170 Myslím, že pár věcí je to, že mnoho kódu JavaScript je druh 376 00:19:00,170 --> 00:19:04,000 syntaxe a struktura je velmi podobná C, takže můžete trochu zvednout jako 377 00:19:04,000 --> 00:19:05,020 jdete spolu. 378 00:19:05,020 --> 00:19:08,750 Snažil jsem se napsat mnoho výchozí kód pro tento takovým způsobem, který je 379 00:19:08,750 --> 00:19:11,230 podobně jako C, tak, že je trochu čitelnější. 380 00:19:11,230 --> 00:19:15,980 Ale jak postupovat, budu demonstrovat některé dodatečné 381 00:19:15,980 --> 00:19:18,980 funkce JavaScript, které jsou docela v pohodě. 382 00:19:18,980 --> 00:19:21,510 >> Ale pojďme se podívat na tento ukázkový program. 383 00:19:21,510 --> 00:19:24,820 Myslím, že všechno, co je odříznout tam. 384 00:19:24,820 --> 00:19:28,500 Já jsem prostě jít opravit, že skutečná rychle, pokud je to v pořádku, nebo ne. 385 00:19:28,500 --> 00:19:31,400 Já nevím, co to bude dělat. 386 00:19:31,400 --> 00:19:34,660 Je to trochu lepší? 387 00:19:34,660 --> 00:19:36,510 Vidíte var a tak? 388 00:19:36,510 --> 00:19:39,320 OK. 389 00:19:39,320 --> 00:19:44,120 >> Takže první řádek je jako JavaScript version proměnné 390 00:19:44,120 --> 00:19:44,800 prohlášení. 391 00:19:44,800 --> 00:19:49,870 Takže jen upozornit na to, co to by vypadat jako v C. Takže je to jen jako 392 00:19:49,870 --> 00:19:52,620 mi říká, index se rovná tři nebo něco takového. 393 00:19:52,620 --> 00:19:55,740 Tak jsem neuvedl typ. 394 00:19:55,740 --> 00:20:00,780 JavaScript má mít typ, ale je to velmi dynamicky napsaný v přírodě, tak 395 00:20:00,780 --> 00:20:02,580 neposkytla žádný druh druhu na něj. 396 00:20:02,580 --> 00:20:03,670 Tak to prostě je var. 397 00:20:03,670 --> 00:20:05,320 To je jako proměnné. 398 00:20:05,320 --> 00:20:05,920 OK? 399 00:20:05,920 --> 00:20:08,340 >> A já volám tuto proměnnou HTTP. 400 00:20:08,340 --> 00:20:12,480 A na mé pravé straně, mám Výraz, který chci dát do HTTP. 401 00:20:12,480 --> 00:20:14,960 A to říká vyžaduje HTTP. 402 00:20:14,960 --> 00:20:18,500 Tak to je docela podobný obsahovat. 403 00:20:18,500 --> 00:20:22,940 Je to trochu jako silnější než jsou v tom smyslu, že zahrnují 404 00:20:22,940 --> 00:20:26,100 by jen zkopírovat a vložit záhlaví soubor pro funkční prototypy nebo 405 00:20:26,100 --> 00:20:27,930 co s definicemi typu. 406 00:20:27,930 --> 00:20:30,590 Ale třeba se ve skutečnosti děje k nám dostanete kód. 407 00:20:30,590 --> 00:20:33,280 >> Takže si můžete myslet na to, jak import nějaký kód. 408 00:20:33,280 --> 00:20:37,960 Takže někde v modulu Node.js systém nebo co, že mají vše 409 00:20:37,960 --> 00:20:40,790 Kód HTTP server, takže jsem jen načítání je pro mé vlastní 410 00:20:40,790 --> 00:20:43,130 osobní využití tohoto programu. 411 00:20:43,130 --> 00:20:44,260 OK? 412 00:20:44,260 --> 00:20:46,930 >> Tak jsem si tuto funkci které jsem napsal. 413 00:20:46,930 --> 00:20:50,330 A Všiml jsem si nemusel specifikovat návratový typ nebo typ 414 00:20:50,330 --> 00:20:51,140 argumenty znovu. 415 00:20:51,140 --> 00:20:54,440 Tak trochu volné zadali tento druh smyslu. 416 00:20:54,440 --> 00:20:57,290 Dva argumenty, že se bere v, požadavek a odpověď. 417 00:20:57,290 --> 00:21:02,080 Tak to je koncepčně něco jako známé z obrázku, že jsme měli 418 00:21:02,080 --> 00:21:05,280 Na obrazovce se dříve, protože dostaneme tento požadavek, že 419 00:21:05,280 --> 00:21:06,410 mají od uživatele. 420 00:21:06,410 --> 00:21:09,170 A pak máme odpověď, která můžeme psát věci. 421 00:21:09,170 --> 00:21:15,060 >> Takže první řádek to dělá res.writeHead 200 a pak to 422 00:21:15,060 --> 00:21:17,070 Typ obsahu textu jasné. 423 00:21:17,070 --> 00:21:19,300 Takže pojďme se tento kousek od sebe trochu. 424 00:21:19,300 --> 00:21:22,340 Takže pojďme se soustředit jen na res.write pro málo. 425 00:21:22,340 --> 00:21:28,420 Takže zápis je v podstatě, a zapisovací hlavy, jsou jen způsoby, jak se trochu vypsat 426 00:21:28,420 --> 00:21:29,960 věci na odpověď. 427 00:21:29,960 --> 00:21:30,770 OK? 428 00:21:30,770 --> 00:21:36,230 Takže psát hlavu, jestli někdo pamatuje z přednášky HTTP, si kluci 429 00:21:36,230 --> 00:21:39,940 pamatovat záhlaví na Horní věci HTTP? 430 00:21:39,940 --> 00:21:43,580 Tak proč ne já jen demo záhlaví opravdu rychle. 431 00:21:43,580 --> 00:21:44,640 Bylo by to užitečné? 432 00:21:44,640 --> 00:21:45,500 Nebo bychom měli jen trochu - 433 00:21:45,500 --> 00:21:46,070 OK. 434 00:21:46,070 --> 00:21:46,740 Jistě. 435 00:21:46,740 --> 00:21:52,340 >> Takže když váš prohlížeč přejde na google.com nebo něco takového, 436 00:21:52,340 --> 00:21:54,250 je to vlastně trochu víc - 437 00:21:54,250 --> 00:21:55,380 je to jako tajemství - 438 00:21:55,380 --> 00:21:58,340 tam je jako trochu více informací která přichází skrze potrubí, než jen 439 00:21:58,340 --> 00:22:00,180 Trochu hledání a všechno. 440 00:22:00,180 --> 00:22:03,550 Takže vám to ukázat, jdu použít program s názvem Curl. 441 00:22:03,550 --> 00:22:04,260 OK? 442 00:22:04,260 --> 00:22:08,020 Tak to je něco, co můžete spustit na váš Mac OSX příkazového řádku nebo v 443 00:22:08,020 --> 00:22:09,830 zařízení nebo cokoliv jiného. 444 00:22:09,830 --> 00:22:17,050 A tak když jsem se Curl HTTP google.com, Jdu vidět HTML. 445 00:22:17,050 --> 00:22:21,230 A to je, ve spravedlnost, jen HTML, který druh vám řekne 446 00:22:21,230 --> 00:22:24,695 přesměrování na www, pokud váš prohlížeč nepodporuje automaticky zpracovávat 447 00:22:24,695 --> 00:22:27,110 přesměrování. 448 00:22:27,110 --> 00:22:33,390 >> Tak to je jen HTML, ale jdu přidat k Curl tuto pomlčku jsem vlajku. 449 00:22:33,390 --> 00:22:33,600 OK? 450 00:22:33,600 --> 00:22:35,600 A to bude ukázat mi záhlaví. 451 00:22:35,600 --> 00:22:40,640 Takže to je také informace, že je až když jsem si tuto odpověď. 452 00:22:40,640 --> 00:22:41,260 OK? 453 00:22:41,260 --> 00:22:45,320 >> Takže nahoře, vidíte to HTTP 301 přesunout natrvalo. 454 00:22:45,320 --> 00:22:49,470 A to je docela důležité, protože toto se odkazuje na stavovém kódu. 455 00:22:49,470 --> 00:22:53,750 Takže 301 je zde stavový kód, což je v podstatě jen číslo 456 00:22:53,750 --> 00:22:57,750 která říká prohlížeči, nebo ten, kdo je čtení tohoto, pokud se předstírat, že 457 00:22:57,750 --> 00:23:01,460 jste prohlížeč a vidíte to, v podstatě teď když se podíváte na 458 00:23:01,460 --> 00:23:04,960 to a uvidíte 301, víte, mám udělat něco speciálního na základě 459 00:23:04,960 --> 00:23:08,810 301, nebo něco zvláštního se stalo vztaženo na 301. 460 00:23:08,810 --> 00:23:12,640 Tak to říká přestěhoval natrvalo. 461 00:23:12,640 --> 00:23:17,700 >> A pak, v podstatě, máme banda klíče a hodnoty. 462 00:23:17,700 --> 00:23:22,100 Tak jsme se na místo je www.google.com. 463 00:23:22,100 --> 00:23:25,190 A pak se trochu všechno ostatní věci, ale v podstatě to, co místo je 464 00:23:25,190 --> 00:23:29,662 rčení je nové umístění je na www.google.com. 465 00:23:29,662 --> 00:23:33,800 Takže teď, pokud půjdete do google.com, budete si muset vybrat trochu vidět druh prohlížeče na mrknutí 466 00:23:33,800 --> 00:23:38,770 za druhé a pak přesměrovat zpátky na www.google.com. 467 00:23:38,770 --> 00:23:41,840 Takže odpovědi mohou obsahovat Tyto hlavičky. 468 00:23:41,840 --> 00:23:43,330 >> A pár věcí, které poukazují. 469 00:23:43,330 --> 00:23:46,890 Takže řekněme, že jsme byli opravdu úspěšní při návštěvě webové stránky. 470 00:23:46,890 --> 00:23:49,040 Tak nech mě jít do - 471 00:23:49,040 --> 00:23:51,080 Co je dobré webové stránky? 472 00:23:51,080 --> 00:23:53,285 Jsem špatný myšlení dobré webové stránky na místě. 473 00:23:53,285 --> 00:23:53,640 >> DIVÁKŮ: Wikipedia. 474 00:23:53,640 --> 00:23:54,160 >> KEVIN SCHMID: OK. 475 00:23:54,160 --> 00:23:56,040 Pojďme udělat Wikipedii. 476 00:23:56,040 --> 00:23:58,680 Tak tady jsem byl dojatý. 477 00:23:58,680 --> 00:23:59,240 Ale počkejte. 478 00:23:59,240 --> 00:24:00,160 Byla jsem? 479 00:24:00,160 --> 00:24:00,890 Ano, byl jsem. 480 00:24:00,890 --> 00:24:01,100 OK. 481 00:24:01,100 --> 00:24:03,005 Tak jsem se dostal k tomu www. 482 00:24:03,005 --> 00:24:06,006 Takže budu dělat www. 483 00:24:06,006 --> 00:24:09,680 A jak vidíte, tady je všechno HTML , že prohlížeč zpracuje 484 00:24:09,680 --> 00:24:10,910 pro Wikipedii. 485 00:24:10,910 --> 00:24:14,055 >> Ale když jsem se držet rolování tady, co budu vidět nahoře - 486 00:24:14,055 --> 00:24:17,800 wow, je tu spousta HTML na Wikipedii - 487 00:24:17,800 --> 00:24:22,550 ale to, co vidím na vrcholu je zde Tento 200 stavový kód, jak protichůdný k 488 00:24:22,550 --> 00:24:24,570 301, že jsem viděl dříve. 489 00:24:24,570 --> 00:24:27,100 A všimněte si, že to má pěkný přátelský OK vedle ní. 490 00:24:27,100 --> 00:24:29,470 Takže je to jako dobrý stavovým kódem. 491 00:24:29,470 --> 00:24:31,160 >> Znamená to, že 200 počet vypadají povědomě? 492 00:24:31,160 --> 00:24:34,120 493 00:24:34,120 --> 00:24:39,880 Ano, protože když jsem simpler.js, Jsem napsal 200 tam. 494 00:24:39,880 --> 00:24:43,290 Tak to je v podstatě říká, řekněte prohlížeč nebo ten, kdo se snaží dostat do 495 00:24:43,290 --> 00:24:45,440 to, že byli úspěšní. 496 00:24:45,440 --> 00:24:49,040 Nebo, že druh jako my byly úspěšné příliš. 497 00:24:49,040 --> 00:24:54,320 >> A tam je to trochu zvláštní syntaxe v JavaScriptu pro vyhlášení 498 00:24:54,320 --> 00:24:59,870 mapa z těchto tlačítek, jako je typ obsahu a tyto hodnoty jako textové rovině. 499 00:24:59,870 --> 00:25:03,780 Takže když se podíváte na odpověď, že jsme se vrátil z Wikipedie dříve, - 500 00:25:03,780 --> 00:25:06,200 Budu se snažit posunout se trochu rychleji - 501 00:25:06,200 --> 00:25:09,900 máte tyto klávesy jako serveru a tyto hodnoty Apache. 502 00:25:09,900 --> 00:25:12,120 Takže máš klíče a hodnoty. 503 00:25:12,120 --> 00:25:15,930 A můžete specifikovat v Node, co odeslat zpět. 504 00:25:15,930 --> 00:25:19,380 >> Takže je to vlastně druh, v některých způsoby, a v některých ohledech to není 505 00:25:19,380 --> 00:25:23,170 Opravdu, ale to je trochu nižší úroveň než PHP kód, který by mohl být 506 00:25:23,170 --> 00:25:26,980 písemně P nastavit sedm, protože PHP a Apache nějak postarat se o některé 507 00:25:26,980 --> 00:25:28,150 z těchto věcí pro vás. 508 00:25:28,150 --> 00:25:32,520 V PHP můžete přepsat výchozí chování psaní vlastních záhlaví. 509 00:25:32,520 --> 00:25:35,520 Ale pro účely tohoto, dostaneme psát naše vlastní hlavičky. 510 00:25:35,520 --> 00:25:38,210 511 00:25:38,210 --> 00:25:41,105 >> Takže to, že linka smysl všichni, zapisovací hlavy linie? 512 00:25:41,105 --> 00:25:41,380 OK. 513 00:25:41,380 --> 00:25:42,280 Úžasné. 514 00:25:42,280 --> 00:25:45,870 >> Tak co mám dělat pak je, že jsem konec odpověď tím, hello world. 515 00:25:45,870 --> 00:25:47,040 OK. 516 00:25:47,040 --> 00:25:49,920 Ale to je jen funkce tzv. handler žádost. 517 00:25:49,920 --> 00:25:53,510 Takže teď jsem vlastně musel trochu dělat něco, co se této funkce, že jo? 518 00:25:53,510 --> 00:25:59,170 >> Tak tady to, co dělám, je, že je to čára, která dělá serveru rovná var 519 00:25:59,170 --> 00:26:03,530 HTTP.create serveru, a pak jsem předat psovoda vyžádání. 520 00:26:03,530 --> 00:26:06,080 Takže je to trochu z uzlu způsob, jak vytvořit server. 521 00:26:06,080 --> 00:26:08,790 A všimněte si, že jsem kolem v obslužné rutině žádosti. 522 00:26:08,790 --> 00:26:12,290 Takže je to říká createServer funkce, které chci, abys mě dělat 523 00:26:12,290 --> 00:26:16,270 serveru, a když to server obdrží odpověď, musím si zavolat to 524 00:26:16,270 --> 00:26:18,680 požádat o funkci zpracování. 525 00:26:18,680 --> 00:26:18,990 OK? 526 00:26:18,990 --> 00:26:22,290 >> Tak, že linka do značné míry končí hned. 527 00:26:22,290 --> 00:26:28,780 Takže server linka var se provádí přímo poté, co děláte, že docela hodně. 528 00:26:28,780 --> 00:26:31,770 Myslím, že to má nastavit některé vnitřní stát, že budete muset 529 00:26:31,770 --> 00:26:35,400 volání této funkce manipulačního žádost, ale že to nebude sedět a 530 00:26:35,400 --> 00:26:37,730 dejme tomu má uživatel odeslal mi ještě žádost? 531 00:26:37,730 --> 00:26:39,270 Má uživatel mi poslal žádost ještě? 532 00:26:39,270 --> 00:26:40,780 Takže to neblokuje. 533 00:26:40,780 --> 00:26:41,650 OK? 534 00:26:41,650 --> 00:26:46,120 >> Tak co to bude dělat, je to v podstatě se uloží ukazatel na tento kód, 535 00:26:46,120 --> 00:26:49,670 tato funkce zpracování žádosti, a poté poběží tento kód, když někdo 536 00:26:49,670 --> 00:26:52,170 vytvoří požadavek. 537 00:26:52,170 --> 00:26:54,120 A pak jsme to server.listen. 538 00:26:54,120 --> 00:26:56,950 539 00:26:56,950 --> 00:26:59,960 >> 1337 je dost subjektivní. 540 00:26:59,960 --> 00:27:02,285 Neměl jsem žádný zvláštní důvod pro uchopení toto číslo. 541 00:27:02,285 --> 00:27:03,860 Bylo to zcela náhodné. 542 00:27:03,860 --> 00:27:07,010 Ale to jen určuje port. 543 00:27:07,010 --> 00:27:10,640 Takže většina webových serverů, uvidíte, že použít port 80, protože to je něco 544 00:27:10,640 --> 00:27:11,810 ze jako konvence. 545 00:27:11,810 --> 00:27:16,170 Takže když jsem se jít na něco jako, Nevím, Wikipedia.org, 546 00:27:16,170 --> 00:27:17,700 a dal jsem dvojtečku 8 - 547 00:27:17,700 --> 00:27:18,610 oh wow, nemůžete vidět, že. 548 00:27:18,610 --> 00:27:19,370 Je mi to líto. 549 00:27:19,370 --> 00:27:21,820 Ale když to udělám Wikipedii - 550 00:27:21,820 --> 00:27:24,810 Napíšu to sem jen proto, aby je jasné, že na fotoaparátu. 551 00:27:24,810 --> 00:27:29,150 Ale když jsem si to do prohlížeče se tlustého střeva 80, který stanoví, přejděte na 552 00:27:29,150 --> 00:27:31,430 Wikipedia.org na portu 80. 553 00:27:31,430 --> 00:27:36,200 Takže je to jako, jak Spojené státy mají více porty, jako je, kde se můžete dopravit 554 00:27:36,200 --> 00:27:37,440 věci na druhu. 555 00:27:37,440 --> 00:27:40,730 Takže je to jako jít na tento konkrétní místo na tomto serveru. 556 00:27:40,730 --> 00:27:40,990 OK. 557 00:27:40,990 --> 00:27:45,730 >> Tak jsem si vybral 1337. 558 00:27:45,730 --> 00:27:47,910 K dispozici je celá řada čísel že si můžete vybrat. 559 00:27:47,910 --> 00:27:50,390 To nebylo zcela zvláštní. 560 00:27:50,390 --> 00:27:54,560 >> Ale co budu dělat teď se budu běžet uzel. 561 00:27:54,560 --> 00:27:59,730 Dovolte mi, abych vlastně zadejte, že pár řádky dolů, takže ji můžete vidět. 562 00:27:59,730 --> 00:28:03,130 Chystám se udělat uzel, a já jsem chystá spustit simpler.js. 563 00:28:03,130 --> 00:28:06,880 A budeme mluvit o tom, jak se dostat Uzel nastavit v trochu. 564 00:28:06,880 --> 00:28:09,350 Ale teď je to jen běh serveru. 565 00:28:09,350 --> 00:28:14,360 >> Takže jedna věc, kterou můžete vyzkoušet, které nemusí se stát, že vzrušující je, že může skutečně 566 00:28:14,360 --> 00:28:16,300 pokusu o přístup k jej Curl. 567 00:28:16,300 --> 00:28:20,680 Takže můžu dělat Curl, a my Stroj je místní hostitel. 568 00:28:20,680 --> 00:28:24,600 Budete také vidět písemné takhle někdy. 569 00:28:24,600 --> 00:28:29,810 Místního hostitele a 127.0.0.1 jsou druh ze jako v domácím počítači. 570 00:28:29,810 --> 00:28:33,180 Takže je to jako mluvit do vlastní počítač. 571 00:28:33,180 --> 00:28:33,760 OK. 572 00:28:33,760 --> 00:28:36,030 >> A pak můžu říct, 1337. 573 00:28:36,030 --> 00:28:39,630 Takže když jsem spustit tento řádek kódu, se říká, že hello world. 574 00:28:39,630 --> 00:28:44,050 A když jsem chtěl vidět, že věci, které Měl textu typ obsahu hladké nebo 575 00:28:44,050 --> 00:28:46,560 co bych mohl ještě dát to sem. 576 00:28:46,560 --> 00:28:48,810 A všimněte si, že to říkají v pořádku. 577 00:28:48,810 --> 00:28:50,810 A mám textu pláň. 578 00:28:50,810 --> 00:28:53,140 A pak je tu trochu všechno ostatní věci, které Uzel se přidá do 579 00:28:53,140 --> 00:28:54,440 tam pro mě. 580 00:28:54,440 --> 00:28:55,700 To není velmi důležitá. 581 00:28:55,700 --> 00:28:58,230 >> Myslím, že tam jsou nějaké technické aspekty na to jsou druh 582 00:28:58,230 --> 00:29:02,280 v pohodě mluvit, ale jen ukázat, vy, mám také moc 583 00:29:02,280 --> 00:29:03,070 změnit to kolem. 584 00:29:03,070 --> 00:29:06,280 Takže můžu jen přidat spoustu o takové věci. 585 00:29:06,280 --> 00:29:11,780 A pak teď, když se podívám na můj výstup, bude se stát, že. 586 00:29:11,780 --> 00:29:19,740 Takže tyto hlavičky znamenají určité věci do prohlížeče a podobné věci. 587 00:29:19,740 --> 00:29:23,040 >> A hlavičky lze v zásadě říci prohlížeč jak reagovat na něco. 588 00:29:23,040 --> 00:29:26,280 Pokud jste někdy slyšeli cookies dříve, nebo pokud jste někdy byli naštvaný 589 00:29:26,280 --> 00:29:29,330 o webové stránce nastavení cookies nebo zapnuté cookies bloku nebo 590 00:29:29,330 --> 00:29:30,320 něco takového. 591 00:29:30,320 --> 00:29:33,040 Můžete dokonce nastavit soubory cookie v těchto záhlaví. 592 00:29:33,040 --> 00:29:36,990 Takže říct prohlížeči, jak chování v některých případech. 593 00:29:36,990 --> 00:29:37,750 OK. 594 00:29:37,750 --> 00:29:40,310 >> Tak to byl simpler.js. 595 00:29:40,310 --> 00:29:42,780 Má někdo nějaké otázky, Na tomto zdrojový kód souboru? 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 V pohodě. 599 00:29:46,490 --> 00:29:50,780 >> Takže pojďme odstranit r od a podívat se na simple.js. 600 00:29:50,780 --> 00:29:53,010 Tak to je docela hodně stejný program. 601 00:29:53,010 --> 00:29:56,030 Jen jsem to napsal trochu jinak protože jsem chtěl vyřešit odlesku 602 00:29:56,030 --> 00:29:57,850 některé funkce JavaScriptu. 603 00:29:57,850 --> 00:30:03,880 >> Tak zjistíte, že psovod žádost Funkce je úplně zmizel. 604 00:30:03,880 --> 00:30:05,800 Ach jo, jsi na něco zeptat? 605 00:30:05,800 --> 00:30:08,200 >> Diváků: Jo, argumenty které jsou předávány, že 606 00:30:08,200 --> 00:30:10,120 funkce, k čemu jsou? 607 00:30:10,120 --> 00:30:12,050 >> KEVIN SCHMID: Tak to jsou JavaScript objekty. 608 00:30:12,050 --> 00:30:15,230 V dokumentaci Node.js, že v podstatě říká, jaké metody jsou 609 00:30:15,230 --> 00:30:15,910 k dispozici na ně. 610 00:30:15,910 --> 00:30:19,602 Právě jsme se náhodou mají přístup k tato metoda nazývá zapisovací hlava a konec 611 00:30:19,602 --> 00:30:20,730 a tak podobně. 612 00:30:20,730 --> 00:30:22,590 Ale je tu celá parta více metod. 613 00:30:22,590 --> 00:30:27,670 >> A například, jako jeden z nich zejména pokud jde o rek, můžete to udělat 614 00:30:27,670 --> 00:30:34,540 něco jako rec.method, které bude říci, zda je to HTTP GET nebo 615 00:30:34,540 --> 00:30:36,780 HTTP POST požadavku a podobné věci. 616 00:30:36,780 --> 00:30:39,100 Takže je tu všechny druhy liší vlastnosti, ale jsou i 617 00:30:39,100 --> 00:30:42,560 JavaScript objekty, a oni prostě mají funkce s nimi spojené, které vám 618 00:30:42,560 --> 00:30:43,850 Můžete psát věci. 619 00:30:43,850 --> 00:30:45,520 OK? 620 00:30:45,520 --> 00:30:49,030 >> Takže všimnout, že obslužná rutina žádosti je zcela pryč. 621 00:30:49,030 --> 00:30:52,650 Ale kód, který jsem měl v žádosti Psovod je tam pořád. 622 00:30:52,650 --> 00:30:56,520 Stále mám tento res.writeHead a stále mám tuto res.end. 623 00:30:56,520 --> 00:31:00,270 A co to je příklad v JavaScript je tato myšlenka 624 00:31:00,270 --> 00:31:01,460 anonymní funkce. 625 00:31:01,460 --> 00:31:04,180 a anonymní je jako název armatury , z důvodu, že doslova není 626 00:31:04,180 --> 00:31:05,180 mají jméno. 627 00:31:05,180 --> 00:31:07,900 Neexistuje žádný požadavek funkce Psovod tam. 628 00:31:07,900 --> 00:31:10,110 >> Nemá jméno, ale je to stále je při argument. 629 00:31:10,110 --> 00:31:12,250 Tak jsem ještě dostal rec a res. 630 00:31:12,250 --> 00:31:16,180 A stále mám kód. 631 00:31:16,180 --> 00:31:18,930 To je naprosto v pořádku JavaScript kód. 632 00:31:18,930 --> 00:31:22,540 Takže mohu deklarovat funkci bez výslovně dávat to jméno. 633 00:31:22,540 --> 00:31:24,250 Je to na první pohled trochu matoucí. 634 00:31:24,250 --> 00:31:26,230 Tam jsou některé, jako užitečné věci které můžete dělat s 635 00:31:26,230 --> 00:31:28,450 Tyto anonymní funkce. 636 00:31:28,450 --> 00:31:32,100 Má někdo nějaké dotazy na toto téma, nebo je to v pořádku jen pro teď, 637 00:31:32,100 --> 00:31:34,130 nějak prostě přijmout, že bude dělat to samé? 638 00:31:34,130 --> 00:31:36,700 639 00:31:36,700 --> 00:31:37,125 Jo? 640 00:31:37,125 --> 00:31:38,680 >> DIVÁKŮ: Jsou funkce první třídy v JavaScriptu? 641 00:31:38,680 --> 00:31:41,020 >> KEVIN SCHMID: Jsou to první třídy v JavaScriptu. 642 00:31:41,020 --> 00:31:45,490 A jen vím, že tyto pojmy procházející v anonymní funkce, jako je 643 00:31:45,490 --> 00:31:49,600 to platí pro JavaScript, abyste může napsat v posledním projektu 644 00:31:49,600 --> 00:31:51,260 webový prohlížeč příliš. 645 00:31:51,260 --> 00:31:56,700 Tak například, v kódu JavaScript Váš prohlížeč, je to také trochu akce 646 00:31:56,700 --> 00:32:00,680 řízený v tom smyslu, že to, co budete mají je, když uživatel klepne na to 647 00:32:00,680 --> 00:32:02,640 tlačítko, chci, abys spuštěním tohoto kódu. 648 00:32:02,640 --> 00:32:07,070 >> Takže je to stejný druh myšlenek na straně klienta, když kliknutím myši, nebo se 649 00:32:07,070 --> 00:32:09,870 myši nad nějakým obrazem na vašem webové stránky, spustit tento kód. 650 00:32:09,870 --> 00:32:11,350 Které lze použít k serverům. 651 00:32:11,350 --> 00:32:16,380 Takže je to něco jako vzrušující Důvodem, proč JavaScript je opravdu 652 00:32:16,380 --> 00:32:19,810 vhodné nebo někteří lidé si myslí, že je to vhodný jazyk pro tento druh 653 00:32:19,810 --> 00:32:22,530 Server Driver událost, protože máte Tyto anonymní funkce. 654 00:32:22,530 --> 00:32:26,150 Máte celou myšlenku Tento asynchronní kód. 655 00:32:26,150 --> 00:32:27,060 OK. 656 00:32:27,060 --> 00:32:30,360 Má někdo nějaké otázky? 657 00:32:30,360 --> 00:32:30,470 >> OK. 658 00:32:30,470 --> 00:32:33,440 Tak to byl simple.js. 659 00:32:33,440 --> 00:32:38,070 Takže pojďme se podívat na jeden nebo pár dalších. 660 00:32:38,070 --> 00:32:42,040 Tak tohle je sleep.js. 661 00:32:42,040 --> 00:32:47,160 Takže je někdo zná Funkce sleep C? 662 00:32:47,160 --> 00:32:50,936 Asi z jedné z dřívějších přednášek nebo něco takového? 663 00:32:50,936 --> 00:32:54,650 >> Takže v podstatě se můžete projít v Myslím, že počet sekund, nebo pokud používáte ú 664 00:32:54,650 --> 00:32:57,080 spát počet milisekund nebo nanosekund. 665 00:32:57,080 --> 00:33:00,450 A v podstatě program zastavit systémem pro tuto dobu. 666 00:33:00,450 --> 00:33:01,280 Je to tak? 667 00:33:01,280 --> 00:33:06,970 A pak, že se probudí a nakonec pak to bude jen pokračovat v jízdě 668 00:33:06,970 --> 00:33:08,340 programu. 669 00:33:08,340 --> 00:33:12,740 >> Takže tento server nějak dává dojem spaní. 670 00:33:12,740 --> 00:33:17,580 Takže si všimnout, že máme stejný res.writeHead 200 s hlavičkou jako 671 00:33:17,580 --> 00:33:22,130 předtím, ale pak jsme volat to Funkce tzv. set timeout. 672 00:33:22,130 --> 00:33:26,170 Nastavte časový limit je také k dispozici v váš webový prohlížeč Google Chrome 673 00:33:26,170 --> 00:33:28,000 nebo Safari nebo cokoliv jiného. 674 00:33:28,000 --> 00:33:31,720 A v podstatě to, co to dělá tady Je to trvá do funkce. 675 00:33:31,720 --> 00:33:33,360 Všimněte si, opět, je to anonymní funkce. 676 00:33:33,360 --> 00:33:36,310 Tak to je docela v pohodě, protože jsme pomocí anonymní funkce v rámci 677 00:33:36,310 --> 00:33:38,950 anonymní funkce, která může být trochu divné. 678 00:33:38,950 --> 00:33:42,270 >> Ale to brát tuto funkci, která je v podstatě říká - a jak to 679 00:33:42,270 --> 00:33:47,430 Práce je 5000 milisekund, chci můžete spustit tuto funkci, která 680 00:33:47,430 --> 00:33:50,830 právě končí odpověď a píše hej. 681 00:33:50,830 --> 00:33:56,730 Takže to působí dojmem, jako spí, ale jak to ve skutečnosti 682 00:33:56,730 --> 00:33:59,780 Pracuje se budeme projít tato linie velmi rychle. 683 00:33:59,780 --> 00:34:01,190 Právě jsme něco psát. 684 00:34:01,190 --> 00:34:03,780 A pak budeme také projít tato linie velmi rychle. 685 00:34:03,780 --> 00:34:08,620 Takže jsme vlastně děje na počkejte pět sekund. 686 00:34:08,620 --> 00:34:11,370 Jsme jen tak běžet Tento kód okamžitě. 687 00:34:11,370 --> 00:34:14,219 >> A pak je tu opět, tento malý událost smyčka, která má tuto věc 688 00:34:14,219 --> 00:34:17,570 registry, které v podstatě je jen Neustále se točí v kruhu 689 00:34:17,570 --> 00:34:21,620 a při pohledu na hodiny v jeden nitě a říká, má pět sekund 690 00:34:21,620 --> 00:34:22,360 prošel ještě? 691 00:34:22,360 --> 00:34:26,409 A pak, když vidí, že druhý ruka se přesunula tak pět sekund nebo 692 00:34:26,409 --> 00:34:29,190 cokoliv, pak se probudí a řekne, oh, co mám dělat? 693 00:34:29,190 --> 00:34:30,350 No musím se spuštěním tohoto kódu. 694 00:34:30,350 --> 00:34:33,110 A pak, že to bude spustit res.end hej. 695 00:34:33,110 --> 00:34:35,360 >> Takže znovu, my nikdy čekat tady. 696 00:34:35,360 --> 00:34:38,590 Takže to není, že tento kód uvnitř tato funkce bude trvat pět 697 00:34:38,590 --> 00:34:39,900 sekund běžet. 698 00:34:39,900 --> 00:34:43,090 Tento kód bude běžet do značné míry okamžitě, alespoň ve vztahu k 699 00:34:43,090 --> 00:34:46,139 pět sekund, po které jsme mluvili o dříve předtím. 700 00:34:46,139 --> 00:34:52,100 >> Takže jen to ukázat v akci, Můžu dělat Node.sleep.js. 701 00:34:52,100 --> 00:34:55,159 A dělal jsem to bordel až něco? 702 00:34:55,159 --> 00:34:56,310 Možná. 703 00:34:56,310 --> 00:34:57,410 Promiňte. 704 00:34:57,410 --> 00:34:59,530 Podívejme se, co můžeme udělat, opravit to. 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 Takže určitě používat Node.js. 709 00:35:17,464 --> 00:35:19,440 Já jsem si srandu. 710 00:35:19,440 --> 00:35:19,570 OK. 711 00:35:19,570 --> 00:35:20,820 Jen jeden 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 Já vím, co to je. 715 00:35:29,130 --> 00:35:34,440 >> Takže problém je, že v mé druhé záložce tady, jsem běžel Uzel již na 716 00:35:34,440 --> 00:35:36,590 že stejná adresa, 1337. 717 00:35:36,590 --> 00:35:43,370 Takže chyba, že to hodil, podíváme-li se na to skutečná pozorně, je adresa 718 00:35:43,370 --> 00:35:45,180 použití, EADDRINUSE. 719 00:35:45,180 --> 00:35:47,970 Tak jsem se už s použitím 1337 zde. 720 00:35:47,970 --> 00:35:52,210 Takže když jsem zavřel to pryč, a pak jsem se podnikem zkuste spustit to, doufejme, že vše, co 721 00:35:52,210 --> 00:35:53,210 bude v pořádku. 722 00:35:53,210 --> 00:35:53,440 OK. 723 00:35:53,440 --> 00:35:57,020 Takže můžete mít pouze jednu věc druhu naslouchání na portu najednou. 724 00:35:57,020 --> 00:35:59,660 Dalším řešením by bylo pro mě jen editovat tento program a zkontrolujte, 725 00:35:59,660 --> 00:36:02,370 to bude jako 1338 nebo tak něco takhle. 726 00:36:02,370 --> 00:36:04,100 >> Ale teď spánek běží. 727 00:36:04,100 --> 00:36:06,400 Takže pojďme vlastně to vyzkoušet v Prohlížeč tentokrát, protože je to 728 00:36:06,400 --> 00:36:09,080 trochu nezajímavý vidět , že v terminálu. 729 00:36:09,080 --> 00:36:13,560 Takže jsem prostě jít na to 127 adresa opět na 1337. 730 00:36:13,560 --> 00:36:14,850 A pokud jste jej vidět - 731 00:36:14,850 --> 00:36:18,050 Já nevím, jestli je to možné - ale my Prohlížeč je brát velmi, velmi dlouho 732 00:36:18,050 --> 00:36:20,600 čas k načtení nebo jako pět sekund. 733 00:36:20,600 --> 00:36:23,460 >> A potom to, že konečně ukončil odpověď. 734 00:36:23,460 --> 00:36:29,070 A nemůžete vidět, protože to se přesunul trochu, ale když udělám 735 00:36:29,070 --> 00:36:32,500 to o něco menší, můžete můžete vidět, že říká, že hej. 736 00:36:32,500 --> 00:36:35,130 Tak jsem hej, ale po pěti sekundách. 737 00:36:35,130 --> 00:36:38,510 A to by mohlo být trochu čistší vidět je to tady na terminálu, takže jsem 738 00:36:38,510 --> 00:36:40,980 dělat - 739 00:36:40,980 --> 00:36:43,540 Pojďme udělat tady - 740 00:36:43,540 --> 00:36:48,370 Pojďme udělat Curl této adrese opět s 1337. 741 00:36:48,370 --> 00:36:50,820 A já jsem tak nějak sedět Zde po dobu pěti sekund. 742 00:36:50,820 --> 00:36:53,760 Ale všimněte si, že server může přijmout nová opatření. 743 00:36:53,760 --> 00:36:54,940 Tak to vytiskne hej. 744 00:36:54,940 --> 00:36:58,720 >> A demo to, v podstatě to, co Můžu dělat v této druhé záložce - 745 00:36:58,720 --> 00:37:02,640 takže řekněme, že jsem to udělat v jiném kartě, Budu dělat Curl a stejný 746 00:37:02,640 --> 00:37:03,780 věc znovu. 747 00:37:03,780 --> 00:37:06,600 A budu se snažit, aby kopat těchto kluci pryč ve stejnou dobu. 748 00:37:06,600 --> 00:37:08,260 Tak jdu na to, a já jsem bude závodit tady a já jsem 749 00:37:08,260 --> 00:37:09,650 dělat to znovu. 750 00:37:09,650 --> 00:37:14,030 >> A udělejme to tak, že si Můžete vidět oba. 751 00:37:14,030 --> 00:37:20,250 To je jeden tištěný hej, a že jeden tištěný hej celou cestu na - 752 00:37:20,250 --> 00:37:22,550 pojďme dělat tento experiment znovu. 753 00:37:22,550 --> 00:37:25,100 Ve skutečnosti, pojďme použít trik, jestli je to v pořádku. 754 00:37:25,100 --> 00:37:30,520 >> Takže budu používat shell věc, která mi umožňuje v podstatě spustit dvě kopie 755 00:37:30,520 --> 00:37:32,630 tohoto programu paralelně. 756 00:37:32,630 --> 00:37:36,070 Takže to bude běžet první program a druhý program paralelně. 757 00:37:36,070 --> 00:37:39,060 Takže teď, když jsem stiskněte klávesu Enter, bude to aby tato žádost do značné míry 758 00:37:39,060 --> 00:37:40,570 okamžitě ve stejnou dobu. 759 00:37:40,570 --> 00:37:42,620 Takže pojďme to dát šanci. 760 00:37:42,620 --> 00:37:44,950 >> Takže teď Všimněte si, že říká, že dva procesy. 761 00:37:44,950 --> 00:37:50,630 A pokud jste zvědaví, že 27,000 číslo je v podstatě proces ID. 762 00:37:50,630 --> 00:37:52,940 A pak všimnete, že tištěné hej ve stejnou dobu. 763 00:37:52,940 --> 00:37:56,820 Bylo to, jako bychom museli čekat pět sekund pro jednu a pak po tom, 764 00:37:56,820 --> 00:37:59,640 pět sekund později se na druhé. 765 00:37:59,640 --> 00:38:03,300 Tak to je druh, v některých ohledech, je to opravdu důkaz, ale je to 766 00:38:03,300 --> 00:38:07,390 intuitivní důkazy o tom, že to není jen jako čekat pět sekund a blokování 767 00:38:07,390 --> 00:38:08,960 celý závit. 768 00:38:08,960 --> 00:38:10,720 OK v pohodě. 769 00:38:10,720 --> 00:38:17,850 >> Takže Aaron zeptal dříve, že bylo dobře, co když to něco udělat - 770 00:38:17,850 --> 00:38:18,735 Jo? 771 00:38:18,735 --> 00:38:19,051 >> DIVÁKŮ: Počkejte. 772 00:38:19,051 --> 00:38:21,585 Jak se to liší od printf vyrovnávací paměti, i když? 773 00:38:21,585 --> 00:38:23,010 Není to automaticky dělat, že? 774 00:38:23,010 --> 00:38:25,390 Proč se musíme starat o to? 775 00:38:25,390 --> 00:38:26,555 >> KEVIN SCHMID: Oh, mohl bys říkají, že ještě jednou? 776 00:38:26,555 --> 00:38:29,510 >> DIVÁKŮ: Nemá rád printf vyrovnávací paměti dělat přesně to samé? 777 00:38:29,510 --> 00:38:31,280 >> KEVIN SCHMID: printf vyrovnávací paměť? 778 00:38:31,280 --> 00:38:32,753 >> DIVÁKŮ: Jo. 779 00:38:32,753 --> 00:38:33,244 OK. 780 00:38:33,244 --> 00:38:40,609 Nebyl v jednom z kvízů, které byly mluví o tom, jak, pokud klepnete pravým printf 781 00:38:40,609 --> 00:38:42,899 něco, a pak si to pauza jeden druhé, a pak máte to smyčku deset 782 00:38:42,899 --> 00:38:46,530 časy, bude to čekat deset sekund a pak printf všechno dohromady? 783 00:38:46,530 --> 00:38:47,460 >> KEVIN SCHMID: Oh, OK. 784 00:38:47,460 --> 00:38:49,170 >> DIVÁKŮ: Je to to samé věc, pak v tomto případě? 785 00:38:49,170 --> 00:38:52,630 >> KEVIN SCHMID: Takže otázka byla v podstatě v jedné z bývalých kvízů 786 00:38:52,630 --> 00:38:57,200 nebo tak něco, tam byla otázka, která v podstatě, pokud říkáte, tiskové F 10 787 00:38:57,200 --> 00:39:01,490 věcí najednou a pak spal jako v proces tisku z těch, 788 00:39:01,490 --> 00:39:04,850 na konci nějakého důvodu, by to jen výpis těch, všichni ven na obrazovce. 789 00:39:04,850 --> 00:39:06,740 Takže tam to docela dvou různých pojmy zde. 790 00:39:06,740 --> 00:39:10,400 >> Takže myslím, že jedna věc je, že v tomto případ, máme co do činění se dvěma různými 791 00:39:10,400 --> 00:39:13,510 druh lidí ptát na serveru věci, ve stejnou dobu. 792 00:39:13,510 --> 00:39:17,455 A důvod, proč printf druh čeká takhle a vypíše to všechno 793 00:39:17,455 --> 00:39:21,760 najednou se více týká jak printf druh - 794 00:39:21,760 --> 00:39:25,100 Způsob, jakým je ve skutečnosti printf proveden, je to v podstatě má 795 00:39:25,100 --> 00:39:28,850 mluvit s operačním systémem psát že věci na konzole. 796 00:39:28,850 --> 00:39:33,460 Takže to nechce dělat všechno věci okamžitě, když říkáte printf 797 00:39:33,460 --> 00:39:36,260 nějaký řetězec, protože to by mohlo prodražit, pokud má 798 00:39:36,260 --> 00:39:37,340 to, že pokaždé. 799 00:39:37,340 --> 00:39:41,530 >> Takže pokud jste to printf hej, program nemusí ve skutečnosti tisku, že 800 00:39:41,530 --> 00:39:43,040 bezprostředně na konzoli. 801 00:39:43,040 --> 00:39:46,080 Mohlo by se říci, OK, napsal jsem to. 802 00:39:46,080 --> 00:39:49,570 A pak trochu čekat na vás, aby je to trochu víc, než ve skutečnosti 803 00:39:49,570 --> 00:39:51,380 psát to do konzole. 804 00:39:51,380 --> 00:39:54,040 >> Takže důvod, proč tomu tak bylo - 805 00:39:54,040 --> 00:39:56,450 a je to docela nesouvisí k spánku - 806 00:39:56,450 --> 00:40:00,060 je, že spánek byl trochu jen injekčně prokázat tam 807 00:40:00,060 --> 00:40:02,480 Skutečnost, že se nepíše to synchronně. 808 00:40:02,480 --> 00:40:06,210 Ale důvod, proč to je jen výkon, takže nemusíte 809 00:40:06,210 --> 00:40:08,920 dělat, že mnoho kontaktů na operační systém. 810 00:40:08,920 --> 00:40:12,300 >> Ale tady, co jsme opravdu snaží dělat s tímto spánku věc je prostě ukázat 811 00:40:12,300 --> 00:40:17,730 že když máme dva lidi návštěvě Tato webová stránka, že to nebude dát 812 00:40:17,730 --> 00:40:22,310 je v řádku, kde je to chystá říct, Musím vám pomohl, a pak, když jsem 813 00:40:22,310 --> 00:40:25,350 zcela dokončena vám pomůže po nich pět sekund, pak budu 814 00:40:25,350 --> 00:40:26,750 přesunete na další osoby. 815 00:40:26,750 --> 00:40:29,515 Takže požadavek prvního člověka není přivázat, že smyčka pro pořádání akcí, 816 00:40:29,515 --> 00:40:31,610 pokud to dává smysl. 817 00:40:31,610 --> 00:40:34,980 >> Ale zde je ve skutečnosti příkladem něco, co naváže 818 00:40:34,980 --> 00:40:36,090 do smyčky událostí. 819 00:40:36,090 --> 00:40:39,130 Tak tady je to hrozný funkci výpočet n-tého Fibonacciho. 820 00:40:39,130 --> 00:40:43,510 Je to doslova horší způsob, jak můžete výpočet n-tého Fibonacciho čísla. 821 00:40:43,510 --> 00:40:48,480 A to je vlastně jen na vědomí kde to přišlo z, 822 00:40:48,480 --> 00:40:49,330 je to vlastně - 823 00:40:49,330 --> 00:40:53,230 Myslím, můžete zkusit jít najít - ale tam to jako velmi zdlouhavé blog 824 00:40:53,230 --> 00:40:54,130 příspěvek, který někdo napsal. 825 00:40:54,130 --> 00:40:55,660 Je to jako jedna z těch Reddit věcí. 826 00:40:55,660 --> 00:40:59,650 Ale někdo kritizoval Node.js, a oni používali to jako příklad. 827 00:40:59,650 --> 00:41:03,700 Tak nějak jsem chtěl jen ukázat vám dva různé pohledy jen proto, aby 828 00:41:03,700 --> 00:41:07,320 obecné chápání pojmů Za těmito dvěma věcmi. 829 00:41:07,320 --> 00:41:13,050 >> Ale to je zvolena jen jako hrozné, strašně neefektivní výpočetně 830 00:41:13,050 --> 00:41:15,940 Intenzivní způsob, jak vypočítat nth Fibonacci číslo. 831 00:41:15,940 --> 00:41:21,180 Takže jen jako vedlejší poznámku, proč je je to hrozné, jako v jedné cestě? 832 00:41:21,180 --> 00:41:23,210 Jo? 833 00:41:23,210 --> 00:41:25,130 >> DIVÁKŮ: Řekněme, že začnete se s 1000. 834 00:41:25,130 --> 00:41:27,050 1000 se dělí na 999 a 998. 835 00:41:27,050 --> 00:41:28,970 Každý to se rozdělí na dvě věci. 836 00:41:28,970 --> 00:41:30,890 Každý to se rozdělí na dvě věci. 837 00:41:30,890 --> 00:41:31,355 >> KEVIN SCHMID: Správně. 838 00:41:31,355 --> 00:41:32,400 >> DIVÁKŮ: Celou cestu dolů. 839 00:41:32,400 --> 00:41:32,840 >> KEVIN SCHMID: Přesně tak. 840 00:41:32,840 --> 00:41:37,330 Takže jen opakovat pro kameru, když jsem volání fib na jako 1000 nebo tak něco 841 00:41:37,330 --> 00:41:41,810 stejně jako to, že je to samozřejmě ne méně než nebo rovno jedné, takže budu 842 00:41:41,810 --> 00:41:46,040 přejít na tento případ jiný, a pak jdu volání fib 999 a fib 998. 843 00:41:46,040 --> 00:41:50,290 A pak skoro všechno práce, která fib 999 dělá, je 844 00:41:50,290 --> 00:41:52,950 druh na této úrovni. 845 00:41:52,950 --> 00:41:55,620 Vydáte-li se dolů, je to ještě redundantní než to, ale pokud jste právě 846 00:41:55,620 --> 00:42:01,390 myslíte, že výpočetní fib 998 dostane nám docela blízko fib 999. 847 00:42:01,390 --> 00:42:05,860 Takže bychom měli být opravdu trochu více chytrý o tom, jak jsme trochu znovu 848 00:42:05,860 --> 00:42:07,580 ty, ale my nejsme znovupoužití tyto věci vůbec. 849 00:42:07,580 --> 00:42:11,860 Takže si dovedete představit to obrovské, obrovský strom, který je prostě hrozné. 850 00:42:11,860 --> 00:42:12,940 >> Ale tak jako tak, v pořádku. 851 00:42:12,940 --> 00:42:14,040 Tak to byla lež. 852 00:42:14,040 --> 00:42:15,530 Je to jen chvíli trvá, než spustit. 853 00:42:15,530 --> 00:42:16,510 Jo? 854 00:42:16,510 --> 00:42:17,760 >> DIVÁKŮ: [neslyšitelné]. 855 00:42:17,760 --> 00:42:20,430 856 00:42:20,430 --> 00:42:22,481 >> KEVIN SCHMID: Oh, mohl bys zopakovat otázku? 857 00:42:22,481 --> 00:42:23,731 >> DIVÁKŮ: [neslyšitelné]. 858 00:42:23,731 --> 00:42:30,840 859 00:42:30,840 --> 00:42:33,990 >> KEVIN SCHMID: Aha, takže to je jen kód že to bude trochu na 860 00:42:33,990 --> 00:42:34,850 na straně serveru. 861 00:42:34,850 --> 00:42:38,100 Takže to nebude nalezena v prohlížeči, nebo tak něco. 862 00:42:38,100 --> 00:42:42,160 Je to v podstatě to, co máme, je, že když uživatel zde do značné míry značky 863 00:42:42,160 --> 00:42:45,300 opět jejich žádost, když jsme se trochu podat žádost, budeme nazývat 864 00:42:45,300 --> 00:42:47,040 tato funkce na straně serveru. 865 00:42:47,040 --> 00:42:50,480 A pak dostaneme výsledek zpět od volání této funkce. 866 00:42:50,480 --> 00:42:52,460 A pak jsme si jen vytisknout je pro uživatele. 867 00:42:52,460 --> 00:42:54,580 Takže uživatel není opravdu řešit Pomocí této funkce příliš. 868 00:42:54,580 --> 00:42:57,270 >> Byla to otázka? 869 00:42:57,270 --> 00:42:58,470 Má to smysl? 870 00:42:58,470 --> 00:42:58,810 OK. 871 00:42:58,810 --> 00:43:00,930 V pohodě. 872 00:43:00,930 --> 00:43:04,240 >> Takže znovu, co děláme celou tu res.writeHead věc, kde jsme vytisknout 873 00:43:04,240 --> 00:43:05,150 záhlaví. 874 00:43:05,150 --> 00:43:09,730 A pak jsem se ukončit reakci tím, že dělá magické číslo je fib 45. 875 00:43:09,730 --> 00:43:12,100 Takže pojďme stačí spustit tento server. 876 00:43:12,100 --> 00:43:15,190 Takže budu dělat uzlu fib.js. 877 00:43:15,190 --> 00:43:17,340 Takže teď moje fib je spuštěn server. 878 00:43:17,340 --> 00:43:21,790 >> A pak tady, jdu k tomu jeden z nich. 879 00:43:21,790 --> 00:43:22,200 OK? 880 00:43:22,200 --> 00:43:24,960 Tak jsem jen chtěl říct, Curl. 881 00:43:24,960 --> 00:43:32,226 Takže to bude chvíli trvat, ale doufejme, že brzy skončí a 882 00:43:32,226 --> 00:43:35,660 to bude tisknout, že 45. Fibonacci číslo. 883 00:43:35,660 --> 00:43:36,910 >> DIVÁKŮ: [neslyšitelné]. 884 00:43:36,910 --> 00:43:40,720 885 00:43:40,720 --> 00:43:42,050 >> KEVIN SCHMID: Mělo by si udělal docela brzy. 886 00:43:42,050 --> 00:43:43,780 Tak to by mělo trvat pět-šestsekunda. 887 00:43:43,780 --> 00:43:48,570 Já nevím, to je jen V8 je velmi rychle, ale v každém případě, to je 888 00:43:48,570 --> 00:43:52,700 velmi krátký příklad a záměrně nevkusný z non-triviální 889 00:43:52,700 --> 00:43:54,200 výpočet. 890 00:43:54,200 --> 00:43:56,700 Takže po nějaké době, to si to. 891 00:43:56,700 --> 00:44:02,130 >> Ale teď, co když to udělám, že stejný druh experiment jako předtím, kdy jsem se udělat 892 00:44:02,130 --> 00:44:04,010 dvě žádosti na stejnou dobu? 893 00:44:04,010 --> 00:44:06,990 Tak tady jdu do Curl na že adresa, a jdu 894 00:44:06,990 --> 00:44:08,260 udělat další Curl. 895 00:44:08,260 --> 00:44:12,070 A pamatujte si, když jsme dělali to pro spát serveru, když jsme v podstatě měli to 896 00:44:12,070 --> 00:44:15,320 po pěti sekundách, se docela hodně jak se vrátil hned 897 00:44:15,320 --> 00:44:16,380 přibližně ve stejnou dobu. 898 00:44:16,380 --> 00:44:18,650 Takže to nebylo zvlášť svázaný. 899 00:44:18,650 --> 00:44:20,290 >> Ale zkusme to teď. 900 00:44:20,290 --> 00:44:22,370 OK, takže jsme dostali naše dva procesy. 901 00:44:22,370 --> 00:44:24,210 Nezapomeňte, ty jsou procesní ID. 902 00:44:24,210 --> 00:44:25,900 To bude trochu trapné, když se zastaví. 903 00:44:25,900 --> 00:44:31,340 904 00:44:31,340 --> 00:44:35,360 Takže pojďme zůstat tady a čekat. 905 00:44:35,360 --> 00:44:37,090 >> Takže jeden z nich by měla přijít zpět poté, co jako - 906 00:44:37,090 --> 00:44:39,190 OK, tak jeden se vrátil. 907 00:44:39,190 --> 00:44:43,570 Ale proč ne druhý jeden se vrátil ještě ne? 908 00:44:43,570 --> 00:44:44,389 Jo? 909 00:44:44,389 --> 00:44:49,280 >> Diváků: Server nemůže nic dělat zatímco to je výpočetní že velký počet. 910 00:44:49,280 --> 00:44:51,620 >> KEVIN SCHMID: Správně. 911 00:44:51,620 --> 00:44:55,395 Takže odpověď byla jen, že server opravdu nemůže nic dělat, zatímco 912 00:44:55,395 --> 00:44:57,460 je to výpočetní toto číslo Fibonacci. 913 00:44:57,460 --> 00:44:59,360 Takže teď jsem zrovna moje dvě věci zpět. 914 00:44:59,360 --> 00:45:03,210 Ale myslím, že jen přemýšlet o kodexu trochu, jak to funguje 915 00:45:03,210 --> 00:45:05,030 a všechno. 916 00:45:05,030 --> 00:45:11,750 >> Takže tato funkce tady je kód, který Řekl jsem tento server spustit, když to 917 00:45:11,750 --> 00:45:14,100 přijímá nové příchozí požadavek. 918 00:45:14,100 --> 00:45:17,940 Takže to jen tak projít tento Celý kód, a pak to půjde 919 00:45:17,940 --> 00:45:21,120 zpět do smyčky událostí a pak pokračovat kontrola nové události. 920 00:45:21,120 --> 00:45:23,670 Takže v podstatě to, co jsme se děje je server 921 00:45:23,670 --> 00:45:25,080 poslech nových věcí. 922 00:45:25,080 --> 00:45:28,070 První osoba žádá o to, co 45. 923 00:45:28,070 --> 00:45:30,490 Provozujeme tento kód do jeho výpočtu. 924 00:45:30,490 --> 00:45:33,420 Tento kód má zhruba pět šest sekund běžet. 925 00:45:33,420 --> 00:45:36,990 Pak jsme se vrátit do smyčky událostí a zkontrolujte, zda nové požadavky. 926 00:45:36,990 --> 00:45:42,700 >> Tak to je příklad toho, jak, pokud jsou věci, které jsou tak-zvané výpočetní 927 00:45:42,700 --> 00:45:48,140 vázána, nebo použít hodně výpočetních, není moc, ale jako jsou 928 00:45:48,140 --> 00:45:50,260 výpočetně náročné - 929 00:45:50,260 --> 00:45:54,080 Myslím, že jedna věc je říct, o tom je , že tato funkce dělá úplně, 930 00:45:54,080 --> 00:45:56,310 z větší části, pěkný užitečné práce v pořádku. 931 00:45:56,310 --> 00:45:59,970 Po celou dobu, že zpětné volání funkce běžel, to bylo docela 932 00:45:59,970 --> 00:46:03,670 hodně tráví většinu svého času jen výpočetní číslo, které nth Fibonacci. 933 00:46:03,670 --> 00:46:05,930 >> Ale my jsme měli jen jedno vlákno řešit. 934 00:46:05,930 --> 00:46:10,270 V modelu Apache, když se dva lidé podal žádost, aby si fib 45, se 935 00:46:10,270 --> 00:46:11,610 by měl dvě různé závity. 936 00:46:11,610 --> 00:46:15,060 A pak úkolem operačního systému by bylo, nebo uživatelské úrovni 937 00:46:15,060 --> 00:46:18,660 Kód, který spravuje vlákna, by si bylo plátek, který se na 938 00:46:18,660 --> 00:46:23,060 CPU, nebo dokonce, pokud jste měli více procesorů, distribuovat rovnoměrně na CPU 939 00:46:23,060 --> 00:46:26,130 tak, aby byly oba úprava zhruba ve stejnou dobu. 940 00:46:26,130 --> 00:46:31,120 >> Takže jen proto, aby vám ukázat, jak můžeme třídit z - a to není celkem ideální 941 00:46:31,120 --> 00:46:34,280 řešení, ale trochu o tom, jak můžeme aby se sem vrátit a dělat 942 00:46:34,280 --> 00:46:35,880 trochu lépe. 943 00:46:35,880 --> 00:46:41,540 Takže to, co jsem tady, je program s názvem Fib C. A to v podstatě používá 944 00:46:41,540 --> 00:46:45,690 další z modulů uzlu s názvem Dítě proces modul. 945 00:46:45,690 --> 00:46:49,210 Tak jsem součástí, že v pravém horním druhu ze jako bych to libru patří 946 00:46:49,210 --> 00:46:51,230 dítě process.h nebo tak něco. 947 00:46:51,230 --> 00:46:56,210 Teď mám přístup k této CP proměnné který má všechny své funkce. 948 00:46:56,210 --> 00:47:01,810 >> Takže teď, co dělám v této odpovědi Psovod je Běžím tento program 949 00:47:01,810 --> 00:47:04,100 tečka lomítko fib 45. 950 00:47:04,100 --> 00:47:06,820 Takže to, co jsem udělal - a já jsem prostě jít vystoupit z tohoto programu pro 951 00:47:06,820 --> 00:47:07,620 trochu - 952 00:47:07,620 --> 00:47:11,060 Je Napsal jsem program C, který v podstatě počítá 953 00:47:11,060 --> 00:47:12,630 nth Fibonacci číslo. 954 00:47:12,630 --> 00:47:15,960 Tak tady je to jen program, co jsem napsal v C, který počítá to. 955 00:47:15,960 --> 00:47:19,040 Mohu zkompilovat, a můžu běžet že na příkazovém řádku. 956 00:47:19,040 --> 00:47:22,150 A to bude pro výpočet Číslo 45. Fibonacci. 957 00:47:22,150 --> 00:47:24,510 >> Takže všimnout, to prostě trvá skoro tak dlouho. 958 00:47:24,510 --> 00:47:28,240 Asi jsem mohl použít pomlčku 03 k optimalizovat, nebo něco takového, 959 00:47:28,240 --> 00:47:31,050 ale já to udělal jako pravidelný Nastavení kompilátoru. 960 00:47:31,050 --> 00:47:33,260 A vytiskne ji. 961 00:47:33,260 --> 00:47:36,830 >> Ale teď, co mám trochu dělat? 962 00:47:36,830 --> 00:47:39,800 Oh sorry, špatný soubor. 963 00:47:39,800 --> 00:47:42,800 Tak jsem se dělat stejné věci s záhlaví jako předtím. 964 00:47:42,800 --> 00:47:45,780 Pak jsem to udělat cp.exec. 965 00:47:45,780 --> 00:47:49,460 Tak co to bude dělat, je to chystá spustit tento program. 966 00:47:49,460 --> 00:47:51,960 Ale způsob, jakým to funguje tak, že že to nebude čekat na 967 00:47:51,960 --> 00:47:53,400 tento program až do konce. 968 00:47:53,400 --> 00:47:56,000 Je to v podstatě jen říká, spustit tento program. 969 00:47:56,000 --> 00:47:58,700 Takže v podstatě napište to do příkazového řádku druh. 970 00:47:58,700 --> 00:48:02,350 >> A pak, když budete hotovi s to, spusťte tuto funkci. 971 00:48:02,350 --> 00:48:04,800 Takže teď jsme trochu si to Celá obnovena věc 972 00:48:04,800 --> 00:48:06,750 jako bychom to čekali. 973 00:48:06,750 --> 00:48:08,530 Znamená to, že trochu smysl? 974 00:48:08,530 --> 00:48:08,990 Jo? 975 00:48:08,990 --> 00:48:11,060 >> DIVÁKŮ: [neslyšitelné]? 976 00:48:11,060 --> 00:48:13,610 >> KEVIN SCHMID: Tak to bude skutečně otevřít nový proces, jak to udělat. 977 00:48:13,610 --> 00:48:19,310 Takže je to vlastně v některých ohledech, zlo, ne velmi zlé, ale je to 978 00:48:19,310 --> 00:48:22,990 důležité říci, že je to druh návrat do, na jedné straně, Apache 979 00:48:22,990 --> 00:48:26,450 model, kdy budeme dělat závity a procesy Pro každou žádost nebo 980 00:48:26,450 --> 00:48:29,280 procesy pro každý požadavek. 981 00:48:29,280 --> 00:48:32,090 Tak to je docela podobný s tím, co dělá Apache. 982 00:48:32,090 --> 00:48:35,110 V některých případech, bude to stačí použít nový závit, který je trochu více světla 983 00:48:35,110 --> 00:48:39,040 hmotnost než proces, ale Apache mohl skončit větvení nový proces 984 00:48:39,040 --> 00:48:43,370 který je tak trochu o tom, co děláme tady implicitně tím, že dělá tečka lomítko fib 45. 985 00:48:43,370 --> 00:48:48,690 >> A pak v tom případě, jsme trochu vzniknou stejné náklady procesů. 986 00:48:48,690 --> 00:48:50,710 Tak to je jen jedna věc, kterou můžete udělat. 987 00:48:50,710 --> 00:48:52,600 Ale jen proto, aby ukažte tento druh provozu. 988 00:48:52,600 --> 00:48:57,120 A tato diskuse je opravdu jen zaměřena na prezentovat tyto druhy programů 989 00:48:57,120 --> 00:49:00,710 způsob, jak ukázat různé pohledy na jak navrhnout servery, jako je to. 990 00:49:00,710 --> 00:49:08,300 Tak to běží, a pak nyní, když to to znovu, mám dvě ID procesů. 991 00:49:08,300 --> 00:49:10,320 >> Pojďme si o tom promluvit věci, poukázat. 992 00:49:10,320 --> 00:49:11,980 Tak zjistíte, že jsou postupně. 993 00:49:11,980 --> 00:49:12,700 To je v pohodě. 994 00:49:12,700 --> 00:49:15,140 Vzhledem k tomu, že se před 27122. 995 00:49:15,140 --> 00:49:18,580 Ale Oznámení teď se vrátili zhruba ve stejnou dobu. 996 00:49:18,580 --> 00:49:23,960 >> A teď, dobrá otázka se zeptat proč bylo to, že případ je, jehož úkolem 997 00:49:23,960 --> 00:49:27,590 to bylo teď nějak, aby se tyto věci druh hrát fér mezi sebou 998 00:49:27,590 --> 00:49:31,350 jiné, tyto dva případy tečka lomítko fib 45, že jsem běžel 999 00:49:31,350 --> 00:49:32,880 nebo že RAN uzel? 1000 00:49:32,880 --> 00:49:36,940 Kdo trochu je to fér, že oba se druh dáno běhu času? 1001 00:49:36,940 --> 00:49:42,900 1002 00:49:42,900 --> 00:49:44,220 >> DIVÁKŮ: [neslyšitelné]. 1003 00:49:44,220 --> 00:49:44,620 >> KEVIN SCHMID: Jo. 1004 00:49:44,620 --> 00:49:49,740 Takže v podstatě, když jsem si dot lomítko lež 45, nebo něco takového, teď je to 1005 00:49:49,740 --> 00:49:53,750 druh do operačního systému zvládnout runtime těchto programů. 1006 00:49:53,750 --> 00:49:56,920 A teď se jim může naplánovat na různých CPU, nebo to 1007 00:49:56,920 --> 00:49:58,330 je možné naplánovat. 1008 00:49:58,330 --> 00:50:01,870 Je možné krájet až doba, kterou člověk CPU dostane to, nebo že se 1009 00:50:01,870 --> 00:50:03,330 běžet na jednom procesoru. 1010 00:50:03,330 --> 00:50:05,620 Tak to je myšlenka, že. 1011 00:50:05,620 --> 00:50:07,220 Znamená to, že smysl pro každého? 1012 00:50:07,220 --> 00:50:10,950 Takže teď Uzel není opravdu hrát část v rozdělování těchto úkolů. 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 >> Tak to je skoro to na příkladech. 1016 00:50:17,840 --> 00:50:23,370 Jen jsem chtěl ukázat ještě jednu věc protože hodně z toho byla dosud 1017 00:50:23,370 --> 00:50:27,350 není zcela Super praktické v některých případech. 1018 00:50:27,350 --> 00:50:30,970 Dovedu si představit, se vrací domů poté, co tato mluvit a něco a říkat jako, 1019 00:50:30,970 --> 00:50:35,710 tak nějak jsem se dostal z té řeči, že Můžu udělat Fibonacciho server 1020 00:50:35,710 --> 00:50:37,360 můj konečný projekt. 1021 00:50:37,360 --> 00:50:40,770 Tak tady je to jen trochu jeden příklad že snad bude - 1022 00:50:40,770 --> 00:50:44,620 Možná ne, ale možná - trochu víc druh relevantní závěrečných prací a 1023 00:50:44,620 --> 00:50:46,440 myslet dopředu na takové věci. 1024 00:50:46,440 --> 00:50:48,870 >> Tak tohle je chat.js. 1025 00:50:48,870 --> 00:50:52,290 Takže je to něco jako nějaký vzorek Server side kód, který můžete použít k 1026 00:50:52,290 --> 00:50:55,700 nastavit malou chatu serveru, jako je jste mohli vidět na 1027 00:50:55,700 --> 00:50:56,630 Facebook Chat nebo cokoliv jiného. 1028 00:50:56,630 --> 00:50:59,990 Takže já neříkám, že je to jako Facebook Chat, ale je to druh 1029 00:50:59,990 --> 00:51:06,230 jako dobrý - možná není dobré, ale možná dobrý - výchozí bod pro chat 1030 00:51:06,230 --> 00:51:08,560 server pro vaše webové stránky pro finální projekt. 1031 00:51:08,560 --> 00:51:11,040 Tak se pojďme podívat na to, co to dělá. 1032 00:51:11,040 --> 00:51:15,500 >> Takže se dostáváme tuto speciální věc v horní části, to var SIO 1033 00:51:15,500 --> 00:51:17,050 rovná vyžadují Socket.IO. 1034 00:51:17,050 --> 00:51:20,280 Takže to je další věc, že ​​to není vlastně přijít svázaný s 1035 00:51:20,280 --> 00:51:22,300 Uzel, ale můžete jej nainstalovat. 1036 00:51:22,300 --> 00:51:23,480 Je to modul Node. 1037 00:51:23,480 --> 00:51:25,670 Takže je to jen jako nějaký rozšíření uzlu. 1038 00:51:25,670 --> 00:51:29,220 >> SocketIO je ve skutečnosti opravdu docela fajn. 1039 00:51:29,220 --> 00:51:32,550 Je to abstrakce, která v podstatě to, co to znamená je, že vám umožní 1040 00:51:32,550 --> 00:51:35,770 mít tento proud komunikace mezi web 1041 00:51:35,770 --> 00:51:39,430 prohlížeč a webový server. 1042 00:51:39,430 --> 00:51:45,250 Takže z velké části dosud jsme měli Tyto velmi rychlé sekundu nebo dvě 1043 00:51:45,250 --> 00:51:48,790 druhá komunikace mezi web prohlížeč a webový server. 1044 00:51:48,790 --> 00:51:53,310 Takže je to v podstatě jít na google.com, get věci, zašlete jej zpět, a pak 1045 00:51:53,310 --> 00:51:53,770 jsme hotovi. 1046 00:51:53,770 --> 00:51:56,560 My nikdy mluvit, dokud uživatel zadá v něčem jiném. 1047 00:51:56,560 --> 00:52:01,090 >> Ale co Socket.IO a podobné druhy věci - a SocketIO je vlastně jedním 1048 00:52:01,090 --> 00:52:03,940 z věcí, která je postavena na jako WebSocket, který je jakýmsi k dispozici 1049 00:52:03,940 --> 00:52:06,440 jako součást HTML5 - 1050 00:52:06,440 --> 00:52:09,620 které vám umožní mít tento pokračující dialog. 1051 00:52:09,620 --> 00:52:13,990 A to je velmi užitečné v chatu serveru takové věci, protože to je 1052 00:52:13,990 --> 00:52:17,390 něco jako pokračujícího dialogu některé způsoby, protože pokud jste chatování 1053 00:52:17,390 --> 00:52:21,540 s někým, můžete nyní stačí poslat Zpráva se potrubí, a poté 1054 00:52:21,540 --> 00:52:23,940 server může poslat zprávu dolů potrubí na jinou osobu, kterou jste 1055 00:52:23,940 --> 00:52:24,520 chatování s. 1056 00:52:24,520 --> 00:52:26,903 A pak můžete mít tento vyměňovat takhle. 1057 00:52:26,903 --> 00:52:30,590 1058 00:52:30,590 --> 00:52:32,850 >> Tak to je něco, co SocketIO je dobré pro. 1059 00:52:32,850 --> 00:52:38,400 Důvod, že SocketIO používá WebSockets protože jedna věc je, že v 1060 00:52:38,400 --> 00:52:43,980 Kromě prostě staré WebSockets, to také dělá nějaké triky v podstatě 1061 00:52:43,980 --> 00:52:45,610 aby bylo kompatibilní se všemi prohlížeči. 1062 00:52:45,610 --> 00:52:50,040 Takže prohlížeče jako Internet Explorer bohužel nepodporují WebSockets 1063 00:52:50,040 --> 00:52:50,810 hned po vybalení z krabice. 1064 00:52:50,810 --> 00:52:55,290 Tak to používá nějaký jiný druh chlazení čistý věci s Adobe Flash, které umožní 1065 00:52:55,290 --> 00:52:57,170 budete mít průřez podporu prohlížeče. 1066 00:52:57,170 --> 00:52:58,800 Tak to je opravdu užitečné. 1067 00:52:58,800 --> 00:53:02,440 >> A vlastně, vím, že jsem trochu běh na čas tady, ale CS50 1068 00:53:02,440 --> 00:53:08,490 Diskutujte, už jste někdy viděli něco jako, já nevím, prázdné, a tak je 1069 00:53:08,490 --> 00:53:11,030 odpovědi na tento příspěvek, nebo tak něco jako to, že funkce? 1070 00:53:11,030 --> 00:53:12,250 To je SocketIO. 1071 00:53:12,250 --> 00:53:15,580 Takže když někdo začne psát v roce diskutovat pole, aby odpověď nebo 1072 00:53:15,580 --> 00:53:20,040 něco, váš prohlížeč nepodporuje to, co je zavolal SocketIO vyzařuje určitý druh 1073 00:53:20,040 --> 00:53:22,660 událost, která říká, že někdo je odpovědi na tento příspěvek. 1074 00:53:22,660 --> 00:53:26,110 >> Pak serveru říká, OK, co mám dělat? 1075 00:53:26,110 --> 00:53:29,270 Tak teď musím říct, ty ostatní kluky kteří jsou na CS50 Diskutujte hledáte 1076 00:53:29,270 --> 00:53:31,170 u tohoto příspěvku, že někdo odpověděl. 1077 00:53:31,170 --> 00:53:34,190 Tak to je něco, co SocketIO je dobrý, tento pokračující druhu 1078 00:53:34,190 --> 00:53:35,930 proud dialogu. 1079 00:53:35,930 --> 00:53:37,250 OK. 1080 00:53:37,250 --> 00:53:40,060 >> Takže to, co jsem tady - a my jsme jen bude ignorovat pole připojení 1081 00:53:40,060 --> 00:53:41,390 pro trochu - 1082 00:53:41,390 --> 00:53:43,080 co mám dělat, je mi to poslechnout znovu. 1083 00:53:43,080 --> 00:53:46,880 Tak to je jen způsob, jak v Socket.IO se říká pojďme naslouchat na tomto portu. 1084 00:53:46,880 --> 00:53:50,060 A pak jsem si to na připojení. 1085 00:53:50,060 --> 00:53:53,360 Tak to je v podstatě jen Socket IO je způsob, jak říct, když jsme obdrželi 1086 00:53:53,360 --> 00:53:55,840 připojení, chci tě Ke spuštění tohoto kódu. 1087 00:53:55,840 --> 00:53:59,870 >> A všimněte si, že místo toho, aby rec a res prošel tam mám Socket. 1088 00:53:59,870 --> 00:54:03,260 A to Socket myšlenka je v podstatě to věc, kterou můžete psát a číst 1089 00:54:03,260 --> 00:54:05,750 z toho má uživatele Zprávy možná. 1090 00:54:05,750 --> 00:54:10,700 A zprávy, které byste poslat může projít tímto Socket. 1091 00:54:10,700 --> 00:54:12,140 Má to smysl? 1092 00:54:12,140 --> 00:54:14,490 Takže to je to pokračující věc. 1093 00:54:14,490 --> 00:54:17,820 >> Takže to, co dělám, je říkám Socket.emit. 1094 00:54:17,820 --> 00:54:20,330 A vydávat se docela hodně dva argumenty. 1095 00:54:20,330 --> 00:54:24,100 První argument je řetězec jen představující typ 1096 00:54:24,100 --> 00:54:25,270 co jste emisemi. 1097 00:54:25,270 --> 00:54:28,120 Takže v tomto případě, jsem použití Tento řetězec nová zpráva. 1098 00:54:28,120 --> 00:54:32,670 A to je jen v podstatě říká, že typ této věci, co jsem 1099 00:54:32,670 --> 00:54:34,750 odeslání, je nová zpráva. 1100 00:54:34,750 --> 00:54:38,460 Takže si můžete poslechnout na konkrétní typy Zánovní zprávy nebo cokoliv 1101 00:54:38,460 --> 00:54:39,960 pomocí tečku. 1102 00:54:39,960 --> 00:54:44,570 >> Takže spojení a uživatel tam poslal, pokud se podíváte na to, kde říkáme tečka na, 1103 00:54:44,570 --> 00:54:48,150 to jsou další řetězce, které představují typy uživatelských zpráv. 1104 00:54:48,150 --> 00:54:52,060 Takže je to v podstatě můžete mít tento emitovat jeden z těchto typů zpráv, a 1105 00:54:52,060 --> 00:54:55,520 pak něco v reakci na jeden z těchto typů zpráv 1106 00:54:55,520 --> 00:54:57,640 >> Takže jsem vyzařující tuto novou zprávu. 1107 00:54:57,640 --> 00:55:00,540 Budeme ignorovat connections.push za vteřinu. 1108 00:55:00,540 --> 00:55:03,360 Ale pak jsem si řekl, Socket.on uživatel odeslal. 1109 00:55:03,360 --> 00:55:07,540 Takže teď je to trochu, jako když uživatel mi pošle zprávu, chci 1110 00:55:07,540 --> 00:55:09,240 spustit tento kód. 1111 00:55:09,240 --> 00:55:12,080 A všimněte si, že anonymní funkce bere v této proměnné 1112 00:55:12,080 --> 00:55:16,300 tzv. data, která je v podstatě děje mít zprávy uživatele. 1113 00:55:16,300 --> 00:55:20,700 >> Takže teď pojďme trochu mluvit o pole připojení. 1114 00:55:20,700 --> 00:55:24,590 Tak tohle je určen pro chat klienta kde v podstatě každý je trochu v 1115 00:55:24,590 --> 00:55:25,950 stejné místnosti. 1116 00:55:25,950 --> 00:55:29,640 Takže v podstatě to, co budeme potřebovat, aby asi je nějaká pole, které v podstatě 1117 00:55:29,640 --> 00:55:33,170 zastupuje všechny občany chatování v některé způsoby, pokud to dává smysl. 1118 00:55:33,170 --> 00:55:33,340 Je to tak? 1119 00:55:33,340 --> 00:55:37,190 Vzhledem k tomu, že potřebujeme vědět, kdo ty kluky tak jsme jim mohou posílat zprávy 1120 00:55:37,190 --> 00:55:39,140 že ostatní lidé posílají k nám. 1121 00:55:39,140 --> 00:55:44,440 >> Takže to, co tento kód dělá, je-li uživatel pošle zprávu - to je typ 1122 00:55:44,440 --> 00:55:45,300 událost - 1123 00:55:45,300 --> 00:55:47,120 budeme spuštěním tohoto kódu. 1124 00:55:47,120 --> 00:55:51,240 A to, co děláme, je, že jsme projít tento pole, které jsme nazvali připojení. 1125 00:55:51,240 --> 00:55:54,390 A skoro pro každé připojení kromě toho, že je naše, to je 1126 00:55:54,390 --> 00:55:59,520 co tento kód říká, zašleme nový Zpráva s touto zprávou připojenou 1127 00:55:59,520 --> 00:56:01,210 informace. 1128 00:56:01,210 --> 00:56:04,880 >> Takže pokud si všimnete zde, co jsem udělal, když uživatel skutečně je nový 1129 00:56:04,880 --> 00:56:08,560 Připojení je, že jsem přidal s Způsob JavaScript.push, to je 1130 00:56:08,560 --> 00:56:12,100 v podstatě jen říkám, jak přidat že Socket jako hodnota do 1131 00:56:12,100 --> 00:56:13,900 naše připojení pole. 1132 00:56:13,900 --> 00:56:20,560 Takže teď, když tento kód spustí, bude to Poslat věci těm, zejména 1133 00:56:20,560 --> 00:56:22,020 připojení. 1134 00:56:22,020 --> 00:56:26,980 Takže to může být dobrým výchozím bodem pro výrobu chatu serveru 1135 00:56:26,980 --> 00:56:28,250 nebo něco podobného. 1136 00:56:28,250 --> 00:56:33,315 >> A docela fajn věc je, že kód, který vidíte zde, jako na a 1137 00:56:33,315 --> 00:56:36,390 vysílat a tak podobně, že je stejný druh kódu JavaScript, který by 1138 00:56:36,390 --> 00:56:39,260 psát v prohlížeči komunikovat se serverem. 1139 00:56:39,260 --> 00:56:42,480 Takže to je důvod, proč SocketIO je druh elegantní a užitečné tímto způsobem. 1140 00:56:42,480 --> 00:56:45,680 1141 00:56:45,680 --> 00:56:49,250 >> Jo a ještě jedna věc, kterou opravdu rychle. 1142 00:56:49,250 --> 00:56:55,970 Tam byl konečný projekt CS50 v loňském roce že v podstatě zaveden chat 1143 00:56:55,970 --> 00:56:57,840 server Node.js. 1144 00:56:57,840 --> 00:57:01,350 Myslím, že je to Harvardchats.org ale já nejsem - 1145 00:57:01,350 --> 00:57:02,940 OK. 1146 00:57:02,940 --> 00:57:06,190 Nejsem si jistý, co URL je, ale Mohu poslat, že se později. 1147 00:57:06,190 --> 00:57:09,260 Ale je to trochu vychladnout, co můžete dělat s Node.js. 1148 00:57:09,260 --> 00:57:14,680 >> Takže doufám, že obecně, vy kluci mají dobrý pocit z toho, co Node.js je užitečný 1149 00:57:14,680 --> 00:57:17,870 a jak byste mohli možná platit do konečného projektu. 1150 00:57:17,870 --> 00:57:21,050 Budu rozesílat víc zdroje spolu s tím. 1151 00:57:21,050 --> 00:57:23,170 A děkuji, že jste přišli. 1152 00:57:23,170 --> 00:57:23,610 Děkuju. 1153 00:57:23,610 --> 00:57:27,168 >> [APPLAUSE]