1 00:00:00,000 --> 00:00:08,350 2 00:00:08,350 --> 00:00:09,710 >> KEVIN Schmid: Tere kõigile. 3 00:00:09,710 --> 00:00:12,640 Tere tulemast CS50 seminar edasi Node.js. 4 00:00:12,640 --> 00:00:13,955 Minu nimi on Kevin. 5 00:00:13,955 --> 00:00:15,580 Olen CS50 TF. 6 00:00:15,580 --> 00:00:17,650 Ja ma olen omamoodi nagu väga põnevil sellest seminar. 7 00:00:17,650 --> 00:00:20,430 Arvan Node.js on väga lahe. 8 00:00:20,430 --> 00:00:24,200 Loodan, et see seminar on võimalik kasutada kui hea, ma arvan, hüppelaud 9 00:00:24,200 --> 00:00:26,380 mõned oma lõpliku projekti kui olete huvitatud, kasutades 10 00:00:26,380 --> 00:00:27,630 midagi Node.js. 11 00:00:27,630 --> 00:00:29,770 12 00:00:29,770 --> 00:00:33,320 >> Me justkui alustada seminar maha räägi natuke 13 00:00:33,320 --> 00:00:36,970 selline taust mastaapsuse perspektiivid Node.js ja seejärel 14 00:00:36,970 --> 00:00:39,240 me liikuda mõned koodi näited. 15 00:00:39,240 --> 00:00:42,340 Ja ma pean koodi veebilehel, ja saate vaadata koodi. 16 00:00:42,340 --> 00:00:45,475 Ja pärast seminari, ma ajame juttu kuidas saab luua Node.js 17 00:00:45,475 --> 00:00:48,220 arvutisse. 18 00:00:48,220 --> 00:00:48,710 >> OK. 19 00:00:48,710 --> 00:00:49,760 Niisiis alustame. 20 00:00:49,760 --> 00:00:53,700 Nii et ma arvan, et ma lihtsalt tahan rääkida veebiserverite tegelikult esimene. 21 00:00:53,700 --> 00:00:59,730 Ja alustada seda arutelu, I põhimõtteliselt on skeem, mis on pärit 22 00:00:59,730 --> 00:01:04,269 õpik kasutada CS61, mis Võrrand näitab interaktsiooni 23 00:01:04,269 --> 00:01:08,510 kliendi vahelise protsess, nagu veebi brauseri või nagu teie eesmärk kliendi või 24 00:01:08,510 --> 00:01:11,340 midagi sellist, ja veebiserver. 25 00:01:11,340 --> 00:01:15,150 Seega selline sarnaneb pilt, mida nägin loengu 26 00:01:15,150 --> 00:01:19,270 Kolmapäev, kus põhiliselt on meil mõned klient protsess nagu Google Chrome. 27 00:01:19,270 --> 00:01:22,980 >> Ja siis esimene etapp on klient saadab taotluse. 28 00:01:22,980 --> 00:01:27,510 Nii et võib olla midagi hästi olgem külastada, ma ei tea, CS50.net. 29 00:01:27,510 --> 00:01:29,320 Nii väljastame selle taotluse. 30 00:01:29,320 --> 00:01:34,280 Ja kas keegi mäleta nime protokoll, mis määrab, kuidas seda 31 00:01:34,280 --> 00:01:35,610 taotlus peab olema üles ehitatud? 32 00:01:35,610 --> 00:01:36,382 Yep. 33 00:01:36,382 --> 00:01:37,650 >> Publik: [kuuldamatu]. 34 00:01:37,650 --> 00:01:38,150 >> KEVIN Schmid: Täpselt. 35 00:01:38,150 --> 00:01:40,100 Nii et see on nagu HTTP, eks? 36 00:01:40,100 --> 00:01:44,720 Nii et põhimõtteliselt kirjelduse, kuidas et taotlus tuleks tegelikult ette 37 00:01:44,720 --> 00:01:47,450 välja, sest lõpuks päev et taotlus on tõesti lihtsalt meeldib 38 00:01:47,450 --> 00:01:50,240 string, et põhimõtteliselt ütleb, et ma tahan seda. 39 00:01:50,240 --> 00:01:53,580 Ja spetsifikatsioon eest, mis on HTTP. 40 00:01:53,580 --> 00:01:55,270 Nii et nagu protokoll. 41 00:01:55,270 --> 00:01:57,920 >> Nii siis server saab et taotluse. 42 00:01:57,920 --> 00:02:01,610 Nii kutid on web server installeeritud aastal CS50 aparaat. 43 00:02:01,610 --> 00:02:02,460 See on Apache. 44 00:02:02,460 --> 00:02:06,230 Ja sel nädalal, kui te töötate probleem pani seitse, saate tegelikult töötavad 45 00:02:06,230 --> 00:02:08,160 selle veebiserver. 46 00:02:08,160 --> 00:02:12,380 Nii server saab seda taotlust ja siis peab selline kriimustada oma 47 00:02:12,380 --> 00:02:15,090 head ja öelda, nagu ka see, mida ma teen seda? 48 00:02:15,090 --> 00:02:20,060 >> Nii selle põhjal, mida ta otsustab seda teha, siis ta pöörduma mingi 49 00:02:20,060 --> 00:02:20,730 ressursi. 50 00:02:20,730 --> 00:02:23,700 Ja see allikas võiks olla palju erinevaid asju. 51 00:02:23,700 --> 00:02:26,810 Ühe, see võib olla just nagu staatiline HTML faili. 52 00:02:26,810 --> 00:02:29,820 Nii et see võib olla lihtsalt nagu mõned HTML et on nagu 53 00:02:29,820 --> 00:02:31,100 oma isiklik veebileht. 54 00:02:31,100 --> 00:02:35,360 See võib olla staatiline fail nagu pilt või nagu film, mis sul on. 55 00:02:35,360 --> 00:02:37,660 Võiks isegi rääkida mingi andmebaas 56 00:02:37,660 --> 00:02:39,530 nagu MySQL andmebaasi. 57 00:02:39,530 --> 00:02:43,910 Nii et see ei pea alati suhelda koos ressurss, kuid 58 00:02:43,910 --> 00:02:45,700 Mõnel juhul võiks. 59 00:02:45,700 --> 00:02:47,800 >> Niisiis, mida ta kavatseb teha pärast, mis on see läheb 60 00:02:47,800 --> 00:02:49,430 tagasi saata vastuse. 61 00:02:49,430 --> 00:02:53,130 Ja vastuseks sellele on Samuti täpsustada poolt HTTP. 62 00:02:53,130 --> 00:02:54,830 Siis saab klient saada. 63 00:02:54,830 --> 00:02:56,740 See võib tükkideks rebida ja neid töödelda. 64 00:02:56,740 --> 00:03:00,900 Ja siis sa saad veebilehe nagu Google või CS50.net või 65 00:03:00,900 --> 00:03:02,240 mida iganes sa läksid. 66 00:03:02,240 --> 00:03:03,100 OK? 67 00:03:03,100 --> 00:03:06,080 >> Nii et see on põhiline vastasmõjud me tegelema. 68 00:03:06,080 --> 00:03:08,770 Ja me päris palju läheb keskendudes selle osa 69 00:03:08,770 --> 00:03:10,640 koostoime, server. 70 00:03:10,640 --> 00:03:10,990 OK. 71 00:03:10,990 --> 00:03:12,210 Lahe. 72 00:03:12,210 --> 00:03:15,500 Kas kellelgi on mingeid küsimusi nii palju? 73 00:03:15,500 --> 00:03:17,720 OK. 74 00:03:17,720 --> 00:03:22,430 >> Nii nagu me ütlesime, web server saab Selle HTTP taotluse ja seejärel väljastab selle 75 00:03:22,430 --> 00:03:24,760 HTTP vastus. 76 00:03:24,760 --> 00:03:29,100 Ja nagu me rääkisime enne, CS50 seade veebiserver Apache. 77 00:03:29,100 --> 00:03:32,490 Nii et kui te töötate P pani seitse, sa lähed koos töötama 78 00:03:32,490 --> 00:03:34,120 Apache veebiserver. 79 00:03:34,120 --> 00:03:37,890 Sa ei pea tegelikult töötavad Apache otse liiga palju. 80 00:03:37,890 --> 00:03:41,920 Sa justkui konfigureerida Apache vähe Kui määrate virtual hosts või 81 00:03:41,920 --> 00:03:44,970 v võõrustajate ja me jõuame et, et natuke. 82 00:03:44,970 --> 00:03:50,620 >> Aga põhimõtteliselt, Apache veebiserver loodud töötama PHP objekti 83 00:03:50,620 --> 00:03:51,730 out of the box. 84 00:03:51,730 --> 00:03:56,170 Mis siis tegelikult juhtub, on see, kui sa lähed ühe oma veebilehed nagu, ütleme, 85 00:03:56,170 --> 00:04:00,360 kohalik host kaldkriipsuga index.php või midagi, on teie brauser saadab, et 86 00:04:00,360 --> 00:04:04,330 taotluse ja seejärel Apache istub seal ja saab aru, et teha. 87 00:04:04,330 --> 00:04:08,840 Ja tegevus on täita et koodi index.php ja 88 00:04:08,840 --> 00:04:11,330 siis saadab selle tagasi. 89 00:04:11,330 --> 00:04:15,640 Nii et seal on see. 90 00:04:15,640 --> 00:04:16,980 Nii et me justkui sellest rääkinud. 91 00:04:16,980 --> 00:04:21,990 Nii et see võib lihtsalt olla staatiline fail või käivitada mõned PHP kood ja seejärel teema 92 00:04:21,990 --> 00:04:23,510 vastus. 93 00:04:23,510 --> 00:04:27,670 >> Nii siis üldine küsimus, mis võib tulla kuni on hästi, kuidas me üldse tegelema 94 00:04:27,670 --> 00:04:31,750 koos võttes mitu kasutajat samal ajal? 95 00:04:31,750 --> 00:04:36,930 Kujutlege, kui sa olid kirjalikult web server, kui teil on olnud web server et 96 00:04:36,930 --> 00:04:39,900 sa üritasid kirjutada midagi nagu C või midagi sellist, 97 00:04:39,900 --> 00:04:45,150 Põhimõtteliselt saab mõelda, kuidas seal võiks olla mingi kood, mis 98 00:04:45,150 --> 00:04:49,330 saaks taotluse, kuid siis ta peab tegema kõik selle töö peal. 99 00:04:49,330 --> 00:04:53,060 See võib olla näiteks ühendust andmebaasi või midagi sellist. 100 00:04:53,060 --> 00:04:53,300 Eks ole? 101 00:04:53,300 --> 00:04:56,010 Ja siis ta teeks seda liiki töötlemise ja seejärel 102 00:04:56,010 --> 00:04:57,060 tagasi saadetud vastus. 103 00:04:57,060 --> 00:04:58,950 Nii et nagu kõrge tasandil ülevaate. 104 00:04:58,950 --> 00:05:04,210 >> Aga see ei ole kohe selge, kuidas saab teha nii, et kaks inimest või 105 00:05:04,210 --> 00:05:09,040 isegi 1000 inimesed võiksid töötada oma veebiserver samaaegselt. 106 00:05:09,040 --> 00:05:14,880 Seega lahendus, et Apache kasutab nimetatakse teemad või protsesse. 107 00:05:14,880 --> 00:05:16,770 Nii et te võib-olla kuulnud need tingimused enne. 108 00:05:16,770 --> 00:05:22,190 See on OK, kui sa ei ole, vaid lihtsalt arvan, umbes niidid või protsesside võimalusi 109 00:05:22,190 --> 00:05:26,290 operatsioonisüsteemi või kasutaja programmi või midagi sellist või veebiserver 110 00:05:26,290 --> 00:05:28,810 et omamoodi täita mitmeid asja korraga. 111 00:05:28,810 --> 00:05:31,760 Nii et te võib-olla kuulnud sõna nagu niidid täitmine. 112 00:05:31,760 --> 00:05:34,140 Nii et see on selline nagu sa oled omamoodi asju koos. 113 00:05:34,140 --> 00:05:37,710 >> Ja kui sa oled näinud kasti oma laptop, või midagi sellist, 114 00:05:37,710 --> 00:05:43,040 mitmesoonelised, mida saate teha, on teil võimalik käivitada kahte erinevat niidid eri 115 00:05:43,040 --> 00:05:46,700 osad CPU nii et nad suudaksid tegelikult juhtub samal ajal. 116 00:05:46,700 --> 00:05:48,100 Nii et see on tõesti võimas. 117 00:05:48,100 --> 00:05:52,270 Ja see on omamoodi Apache lahendust sellele probleemile. 118 00:05:52,270 --> 00:05:57,900 >> Nii on seal selline nagu mingeid probleeme seda lähenemist, kuigi? 119 00:05:57,900 --> 00:05:59,870 Nii et ma arvan, et ma nagu kirjutasin need seal. 120 00:05:59,870 --> 00:06:03,440 Aga nad mõlemad omamoodi kasutada palju mälu. 121 00:06:03,440 --> 00:06:07,490 See on väga kallis luua niit või protsessi. 122 00:06:07,490 --> 00:06:11,750 >> Ja osa põhjendus on, et lihtsalt nagu siis, kui sa kasutad C programm 123 00:06:11,750 --> 00:06:15,090 nagu teie peamine ja siis kõned teine ​​funktsioon, mis on 124 00:06:15,090 --> 00:06:16,520 mingi virna. 125 00:06:16,520 --> 00:06:19,910 Nii mida nõuavad ka täiesti eraldi korsten, mis 126 00:06:19,910 --> 00:06:21,220 võib olla üsna suur. 127 00:06:21,220 --> 00:06:25,170 Ja kui te võite ette kujutada, millel tonni kasutajad oma veebilehel, siis oleks 128 00:06:25,170 --> 00:06:26,280 palju erinevaid teemasid. 129 00:06:26,280 --> 00:06:28,230 See on palju korstnad hallata ja säilitada. 130 00:06:28,230 --> 00:06:31,280 Nii et see on suur mälumaht. 131 00:06:31,280 --> 00:06:35,650 >> Ja siis ka, ütleme, et sul on ainult üks CPU või oletame, et sul on 132 00:06:35,650 --> 00:06:38,460 rohkem teemasid kui sul need Multicores. 133 00:06:38,460 --> 00:06:38,730 Eks ole? 134 00:06:38,730 --> 00:06:43,280 Nii oletame, et sul oli 10 niidid ja tuli ainult viis protsessoriga. 135 00:06:43,280 --> 00:06:46,260 Sa omamoodi on seda asja teha, kus sa vahetada praegune 136 00:06:46,260 --> 00:06:49,090 See, kes töötab, sest sa ei suuda kõiki 10 korraga. 137 00:06:49,090 --> 00:06:50,980 Ja seda nimetatakse kontekstis lüliti. 138 00:06:50,980 --> 00:06:54,260 Ja seda mõistet on tegelikult paar erinevates kontekstides, kuid olgem lihtsalt 139 00:06:54,260 --> 00:06:56,620 ma arvan et kui üleminek kahe niidid. 140 00:06:56,620 --> 00:06:59,730 See võib olla üsna kallis, sest Põhimõtteliselt, mida sa pead tegema, on teil 141 00:06:59,730 --> 00:07:03,340 on lõpetada see, mida sa teed, välja arvatud seisund, mis töötab niit, ja 142 00:07:03,340 --> 00:07:05,440 siis minna kuhugi mujale. 143 00:07:05,440 --> 00:07:09,420 >> Nii ei igaüks omamoodi näha motivatsiooni, miks niidid ja 144 00:07:09,420 --> 00:07:12,030 protsesse võib olla natuke kogukas? 145 00:07:12,030 --> 00:07:13,840 Ja kas teil on küsimusi? 146 00:07:13,840 --> 00:07:14,376 OK. 147 00:07:14,376 --> 00:07:15,070 Lahe. 148 00:07:15,070 --> 00:07:18,090 Kas kellelgi on küsimusi? 149 00:07:18,090 --> 00:07:19,620 OK. 150 00:07:19,620 --> 00:07:26,720 >> Nii et kui me võtame sammu tagasi teist, seal on nagu 151 00:07:26,720 --> 00:07:30,350 tähelepanek, et saame teha umbes palju veebirakendusi. 152 00:07:30,350 --> 00:07:34,810 Ja see on tõesti nii palju neid tegelikult ei tee seda palju kasulikku 153 00:07:34,810 --> 00:07:37,140 töö sees niit. 154 00:07:37,140 --> 00:07:41,170 Niisiis on keegi algas P pani seitse üldse? 155 00:07:41,170 --> 00:07:45,650 Nii et sa tahad olla kirjeldama mõned osad? 156 00:07:45,650 --> 00:07:47,850 Kas olete töötanud login või midagi sellist? 157 00:07:47,850 --> 00:07:49,330 >> Publik: Ei. 158 00:07:49,330 --> 00:07:49,780 >> KEVIN Schmid: OK. 159 00:07:49,780 --> 00:07:50,150 Pole viga. 160 00:07:50,150 --> 00:07:50,900 Vabandust. 161 00:07:50,900 --> 00:07:55,790 Aga põhimõtteliselt, et P komplekti, sa oled kavatsetakse teha palju sorti 162 00:07:55,790 --> 00:07:59,760 päringuid andmebaasi, et saaksin teavet selle andmebaasi. 163 00:07:59,760 --> 00:08:03,330 Ja mida teie kood on plaanid teha, mida see Apache protsessi või 164 00:08:03,330 --> 00:08:06,030 et Apache niit läheb tegema samas on ta pöörduda 165 00:08:06,030 --> 00:08:08,990 andmebaasis on see omamoodi kavatse olla istub seal ja see saab olema 166 00:08:08,990 --> 00:08:12,130 ootab andmebaasi vastata. 167 00:08:12,130 --> 00:08:16,290 >> Nüüd, mis ei pruugi tunduda, et suur tegelema, sest andmebaas on teie 168 00:08:16,290 --> 00:08:18,240 CS50 seade, eks? 169 00:08:18,240 --> 00:08:22,930 Aga seal on mingi võrgu latentsus seal, sest nüüd veebis 170 00:08:22,930 --> 00:08:26,830 server on ka oma taotluse Andmebaasi suhelda 171 00:08:26,830 --> 00:08:29,520 andmebaasi ja siis saad selle andmed tagasi. 172 00:08:29,520 --> 00:08:33,190 Nüüd see on nagu hästi oota mind, ma olen lähen võtan midagi 173 00:08:33,190 --> 00:08:35,770 andmebaasi ja siis on palju oodanud toimub. 174 00:08:35,770 --> 00:08:36,870 Kas see on mõtet? 175 00:08:36,870 --> 00:08:38,580 >> Ja mõned asjad, see ei ole nii halb. 176 00:08:38,580 --> 00:08:41,950 Kui see lihtsalt on näiteks juurdepääsu mälu, et ei meeldi 177 00:08:41,950 --> 00:08:44,100 jube I / O latency. 178 00:08:44,100 --> 00:08:47,110 Ja kui ma ütlen, I / O latentsus, mida ma viidates on nagu mingit moodi 179 00:08:47,110 --> 00:08:48,290 sisend väljund. 180 00:08:48,290 --> 00:08:52,950 Aga avada faili kettal, nagu kui ma tahtsin olla staatiline HTML 181 00:08:52,950 --> 00:08:57,850 faili, mis on minu veebilehe või midagi sellist, mul on 182 00:08:57,850 --> 00:09:02,310 peatus natuke, lugesin, et fail sealt disk ja seejärel 183 00:09:02,310 --> 00:09:04,400 et protsess Ma ootan. 184 00:09:04,400 --> 00:09:06,700 Ma ei tee kasulikku tööd. 185 00:09:06,700 --> 00:09:11,270 >> See ei ole tõsi kõike, kuid see on levinud rakendused nagu P komplekt 186 00:09:11,270 --> 00:09:13,960 seitse ja palju rakendusi et sa ei ole 187 00:09:13,960 --> 00:09:15,440 tegelikult teeme palju mõtlemist. 188 00:09:15,440 --> 00:09:19,090 Ja kui ma ütlen mõtlemine, ma mõtlen nagu arvutilingvistika töö. 189 00:09:19,090 --> 00:09:23,270 Nii arvutuslikke töö võiks olla midagi nagu, ütleme, et sa tahtsid 190 00:09:23,270 --> 00:09:26,590 kirjutada web server et lihtsalt arvutada nda Fibonacci number. 191 00:09:26,590 --> 00:09:29,300 See ei kõla eriti fun veebiserver. 192 00:09:29,300 --> 00:09:34,220 Nagu ma ei oota, et sait Järgmise Facebook, kuid see on teatud 193 00:09:34,220 --> 00:09:35,610 liiki arvutuslikke töö. 194 00:09:35,610 --> 00:09:39,570 >> Ja te võite ette kujutada, mis asendab nimetatud koos mõne muu huvitav 195 00:09:39,570 --> 00:09:43,070 arvutuslikku tööd. 196 00:09:43,070 --> 00:09:46,050 Oletame, et sa kirjutasid midagi et arvutada kraadi 197 00:09:46,050 --> 00:09:49,170 lahususe kaks inimest või midagi sellist. 198 00:09:49,170 --> 00:09:51,860 Nii et ei kaasne mingit arvutamise, eks? 199 00:09:51,860 --> 00:09:56,630 Ja isegi siis, mida teha, et sul on veel teha palju oodanud äkki 200 00:09:56,630 --> 00:09:59,550 teil on päringu andmebaasi vaadata up, kes on sõbrad, kes või 201 00:09:59,550 --> 00:10:00,600 midagi sellist. 202 00:10:00,600 --> 00:10:03,510 Seega on selline mõiste algoritmide tööd. 203 00:10:03,510 --> 00:10:05,260 Kas see on mõtet? 204 00:10:05,260 --> 00:10:08,258 Kas kellelgi on küsimusi? 205 00:10:08,258 --> 00:10:11,960 >> Oh ja ma arvan, et ma panen chat serverid seal sest jututuba serverid on omamoodi 206 00:10:11,960 --> 00:10:13,240 üks hea näide sellest. 207 00:10:13,240 --> 00:10:15,250 Chat server ei ole teha palju mõtlemist. 208 00:10:15,250 --> 00:10:18,350 See lihtsalt peab ootama inimesi sõnumeid saata ja siis, kui 209 00:10:18,350 --> 00:10:19,800 nad saadavad neid. 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 >> Nii lihtsalt sulgege uuesti Apache ja sarnane veebiserverite niimoodi kahvel 213 00:10:28,180 --> 00:10:31,470 palju niidid ja protsessid, mis saab selline raiskav. 214 00:10:31,470 --> 00:10:37,530 Nii et ma arvan, et küsimus, mis võib tulla sellest, kas meil on vaja olla 215 00:10:37,530 --> 00:10:39,610 mitme lõime ja protsesside uurimiseks? 216 00:10:39,610 --> 00:10:41,890 Mis siis, kui meil oli just üks? 217 00:10:41,890 --> 00:10:45,710 >> Teeme liiki maalida pilti mida see näeks. 218 00:10:45,710 --> 00:10:47,810 Teeme kasutada ainult üks teema. 219 00:10:47,810 --> 00:10:48,660 OK? 220 00:10:48,660 --> 00:10:52,790 Nii lihtsalt ette kujutada seda ühe teema. 221 00:10:52,790 --> 00:10:56,600 >> Oletame, et me tõesti ei tee et palju kasulikku - ja kui ma ütlen 222 00:10:56,600 --> 00:10:59,450 kasulik, ma mõtlen arvutuslikku tööd - 223 00:10:59,450 --> 00:11:01,130 neis mitme lõime enne. 224 00:11:01,130 --> 00:11:04,180 Teeme liiki koondada Kõike arvesse üks niit. 225 00:11:04,180 --> 00:11:07,780 Mis siis, kui meil oli üks niit, mis liiki lihtsalt läheb ümber silmuse ja 226 00:11:07,780 --> 00:11:10,880 pidevalt kontrolli tegid midagi uus juhtuda. 227 00:11:10,880 --> 00:11:15,130 Nii näiteks, midagi uut juhtunud võib tähendada, et mul on midagi tagasi 228 00:11:15,130 --> 00:11:19,310 andmebaasi või keegi saata minu uus HTTP taotluse. 229 00:11:19,310 --> 00:11:22,290 Nii et need on omamoodi sündmused mis juhtub, eks? 230 00:11:22,290 --> 00:11:26,130 >> Ja mis ma teha saan, kui need uued asju on see sama niit 231 00:11:26,130 --> 00:11:30,120 täitmise, selle ühe niit täitmine, võin helistada mõned kood, mis 232 00:11:30,120 --> 00:11:32,410 käsitleks seda konkreetset asja. 233 00:11:32,410 --> 00:11:36,640 Nii näiteks, kui mul on midagi tagasi andmebaasist, ma võiks joosta mu 234 00:11:36,640 --> 00:11:40,960 väike arvutuslikke osa, mis tegelikult lihtsalt valmistab asi 235 00:11:40,960 --> 00:11:42,620 Kirjuta kasutajale tagasi. 236 00:11:42,620 --> 00:11:46,710 Nii teeb sellist mõtet? 237 00:11:46,710 --> 00:11:49,940 >> Aga millised on tegelikult tähendab selline? 238 00:11:49,940 --> 00:11:50,660 Eks ole? 239 00:11:50,660 --> 00:11:53,730 Sest me oleme kirjutanud palju koodi, mis - 240 00:11:53,730 --> 00:11:58,330 ja ma lihtsalt hüpata edasi slaidide, kui see on OK. 241 00:11:58,330 --> 00:12:00,930 Nii et kui sa ei pahanda, ma olen lihtsalt kavatse astuda samm tagasi. 242 00:12:00,930 --> 00:12:03,410 Nii selline asi on nimetatakse sündmuse ahela. 243 00:12:03,410 --> 00:12:04,070 OK? 244 00:12:04,070 --> 00:12:07,240 Ja see on selline põhi Idee Node.js. 245 00:12:07,240 --> 00:12:11,240 >> Mis siis Node.js tegelikult teeb nagu web server on seal ühe niidi 246 00:12:11,240 --> 00:12:14,850 mis on põhiliselt ringi tsüklina nagu kui ühte liiki alla 247 00:12:14,850 --> 00:12:18,510 kapuuts Node.js see pidevalt kontrollides, kas me saame midagi uut? 248 00:12:18,510 --> 00:12:22,720 Ja siis see kestab käitleja et te luua. 249 00:12:22,720 --> 00:12:26,720 Aga hea küsimus küsida, kuidas me saame teha seda juhtub 250 00:12:26,720 --> 00:12:28,090 olemasolevate asju? 251 00:12:28,090 --> 00:12:32,440 >> Nii panin rida C koodi siin, et põhimõtteliselt tundub, et see avatakse 252 00:12:32,440 --> 00:12:33,060 fail, eks? 253 00:12:33,060 --> 00:12:36,090 I Ta lihtsalt tuli välja album. 254 00:12:36,090 --> 00:12:39,600 Pidin avama oma uue faili. 255 00:12:39,600 --> 00:12:43,810 Niisiis, kuidas meie C kood tegutsevad - 256 00:12:43,810 --> 00:12:47,890 ja ma arvan, et põhjus, miks ma valisin faili oli sest see on selline määral 257 00:12:47,890 --> 00:12:52,000 on I / O tööd, mida me teinud oleme C selles mõttes, et seal on sisend väljund. 258 00:12:52,000 --> 00:12:55,070 Nii et me nimetame seda koodi kas see f avatud. 259 00:12:55,070 --> 00:12:59,370 Ja siis järgmisel real meie programm, saame töötada koos f. 260 00:12:59,370 --> 00:13:02,710 >> Nii oleks see näiteks midagi see on nagu sünkroonse või 261 00:13:02,710 --> 00:13:06,850 blokeerides sest selle esimene rida seal me ootame, kuni me 262 00:13:06,850 --> 00:13:08,110 saada fail lahti. 263 00:13:08,110 --> 00:13:12,260 Seega on teine ​​rida, me teame, et me suudab töötada f, kuid see tähendab, et 264 00:13:12,260 --> 00:13:16,240 et teine ​​rida ei saa tõesti joosta kuni esimene rida on tehtud. 265 00:13:16,240 --> 00:13:17,760 Kas see on mõtet? 266 00:13:17,760 --> 00:13:20,890 >> Nii et see oleks halb panna aasta sündmus. 267 00:13:20,890 --> 00:13:23,920 Ja selle põhjuseks on see, et sedalaadi ootab, eks? 268 00:13:23,920 --> 00:13:26,500 Nii see tagasi meid tagasi sama asi. 269 00:13:26,500 --> 00:13:29,470 Ja nüüd me isegi ei pea kasuks mitme lõime või 270 00:13:29,470 --> 00:13:32,390 protsesse, sest meil üks niit Node.js. 271 00:13:32,390 --> 00:13:35,496 Kas see mõttekas kõik? 272 00:13:35,496 --> 00:13:35,990 >> Publik: Oota. 273 00:13:35,990 --> 00:13:36,980 Mis on asendaja? 274 00:13:36,980 --> 00:13:37,840 >> KEVIN Schmid: Oh, nii et jah. 275 00:13:37,840 --> 00:13:39,560 Ma lähen, et saada asendamine. 276 00:13:39,560 --> 00:13:40,430 OK. 277 00:13:40,430 --> 00:13:42,960 Mis siis, kui meil on midagi mis nägi välja nagu see on? 278 00:13:42,960 --> 00:13:45,730 Mis siis nüüd muutsin f avada vähe? 279 00:13:45,730 --> 00:13:48,370 Nii et ma olen möödaminnes samas kaks argumenti nagu enne. 280 00:13:48,370 --> 00:13:52,610 Ma ikka armastan uus laul et ta tuli välja. 281 00:13:52,610 --> 00:13:57,260 Aga ma möödaminnes Kolmas asi, mis on see muutuja nimega kood. 282 00:13:57,260 --> 00:14:02,280 >> Aga milline on kood tegelikult Selles kontekstis? 283 00:14:02,280 --> 00:14:05,360 Kas see on nagu tavaline C muutuja? 284 00:14:05,360 --> 00:14:06,740 See on funktsioon, mis? 285 00:14:06,740 --> 00:14:09,450 Ja see võib olla veidi imelik, sest Ma tegelikult nagu praegu kulgeb 286 00:14:09,450 --> 00:14:12,320 toimida teise funktsiooni. 287 00:14:12,320 --> 00:14:14,400 >> Nii paar asja, mida meeles pidada seda. 288 00:14:14,400 --> 00:14:17,145 Üks, ma ei tegelikult kutsudes koodi funktsiooni. 289 00:14:17,145 --> 00:14:20,650 Nii et sa ei näe koodi vasakule paren, parem paren. 290 00:14:20,650 --> 00:14:23,010 Ma lihtsalt möödaminnes kood. 291 00:14:23,010 --> 00:14:26,990 Ja C, mida see tegelikult ei on mulle viit, et tegelik 292 00:14:26,990 --> 00:14:29,740 kood ja siis võib see käivitada. 293 00:14:29,740 --> 00:14:33,350 Aga mõtle selle peale, kui sa oled kulgeb koodi käivitumise 294 00:14:33,350 --> 00:14:35,150 et fail on avatud. 295 00:14:35,150 --> 00:14:41,430 >> Aga mida see tähendab, et nüüd mu ülejäänud programmi, mis võiks teha 296 00:14:41,430 --> 00:14:47,050 muud kraami, võib jätkata teed muid stuff kuigi me tõesti ei oodata, kuid 297 00:14:47,050 --> 00:14:50,890 lihtsalt taga meie peade, et kui see fail on avatud, run, et 298 00:14:50,890 --> 00:14:52,130 kood ülaosas. 299 00:14:52,130 --> 00:14:53,390 Kas see on mõtet? 300 00:14:53,390 --> 00:14:58,060 >> Ja nüüd idee Node.js on see, et koodi teha asju koos f 301 00:14:58,060 --> 00:15:04,590 osa peaks olema üsna lühike ja lihtne ja arusaadav ja tegelikult ei ole 302 00:15:04,590 --> 00:15:06,160 väga arvutuslikult intensiivne. 303 00:15:06,160 --> 00:15:09,390 See võib-olla avada teise faili, kuid et peaks olema päris kiire 304 00:15:09,390 --> 00:15:14,710 sest see tuleb lihtsalt öelda seda veel f avada ja siis nimetame seda teiste koodi. 305 00:15:14,710 --> 00:15:19,100 >> Nii lihtsalt täiesti selge, f avatud, mis teeb uue Katy Perry laulu 306 00:15:19,100 --> 00:15:23,060 Valmis mp3, et läheb päris palju kohe tagasi. 307 00:15:23,060 --> 00:15:27,820 Ja siis me võime lihtsalt jätkata teed muud asjad, sest kõik, mis nüüd f 308 00:15:27,820 --> 00:15:33,410 Avatud kõne ei ei ütle põhimõtteliselt aluseks f avatud koodiga seda faili avada 309 00:15:33,410 --> 00:15:36,020 ja kui sa oled teinud avamisel faili või kui sa saad selle tagasi, 310 00:15:36,020 --> 00:15:37,480 seejärel käivitada selle koodi. 311 00:15:37,480 --> 00:15:39,540 Aga see ei ole tegelikult töötavad, et kood. 312 00:15:39,540 --> 00:15:41,815 Ja teil oli küsimus? 313 00:15:41,815 --> 00:15:46,180 >> Publik: Sa näisid viitavat, mõned korda, et lisades arvutuslikult 314 00:15:46,180 --> 00:15:50,545 intensiivne kood omamoodi murda [Kuuldamatu] juhitud süsteem. 315 00:15:50,545 --> 00:15:51,795 [Kuuldamatu]? 316 00:15:51,795 --> 00:15:54,450 317 00:15:54,450 --> 00:15:55,290 >> KEVIN Schmid: See on hea küsimus. 318 00:15:55,290 --> 00:15:59,280 Nii et ma tegelikult näide sellest, kuidas siis võiks integreerida arvutuslikult 319 00:15:59,280 --> 00:16:01,090 intensiivne koodi natuke. 320 00:16:01,090 --> 00:16:03,620 Nii et kui me saame koodi näiteid, Ma kindlasti tõmmata, et üks. 321 00:16:03,620 --> 00:16:04,700 Kas see on OK? 322 00:16:04,700 --> 00:16:05,950 Aitäh. 323 00:16:05,950 --> 00:16:07,690 324 00:16:07,690 --> 00:16:08,750 >> Mis oli su nimi on? 325 00:16:08,750 --> 00:16:10,620 >> Publik: Aaron. 326 00:16:10,620 --> 00:16:14,830 >> KEVIN Schmid: Aaron avab väga hea punkt, mis seisneb selles, et kui mul oleks 327 00:16:14,830 --> 00:16:18,560 mõned arvutusintensiivseid kood teha asju koos f osa, ülejäänud 328 00:16:18,560 --> 00:16:22,880 Minu programm ei tööta ja ei saa kuulata Uute taotluste või midagi, kuni kõik 329 00:16:22,880 --> 00:16:24,270 mis värk on lõppenud. 330 00:16:24,270 --> 00:16:27,390 Nii et kui ma olen kirjalikult Sõlme kood üldiselt kui me ei tee midagi, et ma lähen 331 00:16:27,390 --> 00:16:33,060 soovitada hiljem, kui me vaatame koodi näiteid, et ma pean olema kindel, et 332 00:16:33,060 --> 00:16:36,060 minu kood ei nöörima Selle ürituse silmus. 333 00:16:36,060 --> 00:16:38,120 Kas see on mõtet? 334 00:16:38,120 --> 00:16:38,350 OK. 335 00:16:38,350 --> 00:16:40,040 Lahe. 336 00:16:40,040 --> 00:16:47,090 >> Nii Node.js pakub see raamistik, mis saad ehitada need sündmustepõhine 337 00:16:47,090 --> 00:16:48,210 servereid. 338 00:16:48,210 --> 00:16:53,460 Nii et see on nende liiki asünkroonne mitte-blokeeriv I / O raamatukogud, samas 339 00:16:53,460 --> 00:16:56,800 standard C teegid, et me oleme olnud töötamisel, nagu siis, kui sa lihtsalt 340 00:16:56,800 --> 00:16:59,500 neid kasutada samamoodi, et oleme kasutanud neid f avaneb ja 341 00:16:59,500 --> 00:17:03,000 asjad, need takistavad sest siis tegelikult on oodata 342 00:17:03,000 --> 00:17:04,470 et faili avada. 343 00:17:04,470 --> 00:17:09,290 >> Aga Node.js annab teile, et ja see põhiliselt sidemed arvesse Google'i V8 344 00:17:09,290 --> 00:17:14,030 JavaScript mootori, mis on põhjuseks et Chrome on nii kiire töötlevate 345 00:17:14,030 --> 00:17:17,040 JavaScript sest on see V8 mootor. 346 00:17:17,040 --> 00:17:22,460 Nii et ma tean, et see kõlab nagu üks neist WWDC arendaja konverentside asi 347 00:17:22,460 --> 00:17:25,390 kus nad lihtsalt visata hunnik kirja number asjad töötlejatele 348 00:17:25,390 --> 00:17:26,910 ja öelda, et see on nii lahe. 349 00:17:26,910 --> 00:17:34,200 Aga see on lahe, et nad ei seda sellepärast, et JavaScript - 350 00:17:34,200 --> 00:17:37,010 või äkki kui sa ei ole tuttav JavaScript veel, sest meil ei ole olnud 351 00:17:37,010 --> 00:17:38,180 loenguid ta - 352 00:17:38,180 --> 00:17:40,770 aga JavaScript on tõlgendada keel. 353 00:17:40,770 --> 00:17:41,970 >> Ja see on oluline punkt ka. 354 00:17:41,970 --> 00:17:45,790 Seega on oluline, et meie web Serverid olema kiire, eks? 355 00:17:45,790 --> 00:17:49,970 Ja kui me lihtsalt töötab JavaScript koodi, mis oli tõlgendada lihtsalt 356 00:17:49,970 --> 00:17:52,130 iga vana tõlgi see võib olla aeglane. 357 00:17:52,130 --> 00:17:55,980 Nii Sõlme kasu võttes seda super kiire V8 tõlk. 358 00:17:55,980 --> 00:17:59,580 Ja ma ei tea, kas nad nimetasid seda sest V8 laksu otsaette 359 00:17:59,580 --> 00:18:01,110 asi, kuid OK. 360 00:18:01,110 --> 00:18:07,070 >> Nii et ma olen valmis mõned näited sellel aadressil. 361 00:18:07,070 --> 00:18:10,490 Pärast seminari Ma omamoodi kavatse rääkida, kuidas saad Sõlme komplekt 362 00:18:10,490 --> 00:18:13,570 up, aga praegu ma lihtsalt omamoodi taha kõndida läbi mõned koodi näited. 363 00:18:13,570 --> 00:18:17,250 Nii et kui soovite jälgida mööda, kõik Lähtekood on saadaval siin. 364 00:18:17,250 --> 00:18:18,720 OK? 365 00:18:18,720 --> 00:18:22,280 >> Nii et ma jätan selle URL sinna natuke. 366 00:18:22,280 --> 00:18:24,440 Ja siis ma lihtsalt läheb lülitub terminal. 367 00:18:24,440 --> 00:18:29,670 368 00:18:29,670 --> 00:18:34,400 Kas kõik on hea, see link? 369 00:18:34,400 --> 00:18:37,990 Nii et ma lähen minema üle minu terminal siin. 370 00:18:37,990 --> 00:18:42,030 >> Nii et siin on kood, mis Mul on täna. 371 00:18:42,030 --> 00:18:43,960 Miks me ei võiks alustada simpler.js faili? 372 00:18:43,960 --> 00:18:49,110 373 00:18:49,110 --> 00:18:52,100 Teine asi on see, et kõik käesoleva kood läheb kirjutatakse 374 00:18:52,100 --> 00:18:56,660 JavaScript mida võib või ei pruugi olla tuttav. 375 00:18:56,660 --> 00:19:00,170 Ma arvan, et paar asja on, et palju JavaScript kood on selline 376 00:19:00,170 --> 00:19:04,000 süntaks ja struktuur on väga sarnane C, siis võite omamoodi buffee nagu 377 00:19:04,000 --> 00:19:05,020 lähete mööda. 378 00:19:05,020 --> 00:19:08,750 Olen proovinud kirjutada palju alustades kood seda nii, et on 379 00:19:08,750 --> 00:19:11,230 sarnane C, nii et see veidi enam loetav. 380 00:19:11,230 --> 00:19:15,980 Aga nagu me edu, ma tulen näidates mõningaid täiendavaid 381 00:19:15,980 --> 00:19:18,980 funktsioonid JavaScript et on omamoodi lahe. 382 00:19:18,980 --> 00:19:21,510 >> Aga vaatame seda proovi programmi. 383 00:19:21,510 --> 00:19:24,820 Ma arvan, et kõik on ära lõigatud on. 384 00:19:24,820 --> 00:19:28,500 Ma lihtsalt määrata, et tõeline kiiresti, kui see on OK või mitte. 385 00:19:28,500 --> 00:19:31,400 Ma ei tea, mida see tegema hakkab. 386 00:19:31,400 --> 00:19:34,660 Kas see natuke parem? 387 00:19:34,660 --> 00:19:36,510 Kas te näete var ja värki? 388 00:19:36,510 --> 00:19:39,320 OK. 389 00:19:39,320 --> 00:19:44,120 >> Nii et esimene rida on nagu JavaScript versioon muutuja 390 00:19:44,120 --> 00:19:44,800 deklaratsioon. 391 00:19:44,800 --> 00:19:49,870 Nii lihtsalt rõhutada, mida see annaks nägema C. Nii et see on nagu 392 00:19:49,870 --> 00:19:52,620 mulle öelda indeks võrdub kolm või midagi sellist. 393 00:19:52,620 --> 00:19:55,740 Nii et ma ei täpsustanud tüüp. 394 00:19:55,740 --> 00:20:00,780 JavaScript ei ole tüüpi, kuid see on väga dünaamiliselt trükitud iseloomuga, nii 395 00:20:00,780 --> 00:20:02,580 ei näe mingit tüüpi ta. 396 00:20:02,580 --> 00:20:03,670 Nii see lihtsalt on var. 397 00:20:03,670 --> 00:20:05,320 See on nagu muutuv. 398 00:20:05,320 --> 00:20:05,920 OK? 399 00:20:05,920 --> 00:20:08,340 >> Ja ma helistan selle muutuja HTTP. 400 00:20:08,340 --> 00:20:12,480 Ja mu paremal pool, on mul väljend, mida ma tahan panna HTTP. 401 00:20:12,480 --> 00:20:14,960 Ja see ütleb nõuavad HTTP. 402 00:20:14,960 --> 00:20:18,500 Nii et see on omamoodi sarnased hulka. 403 00:20:18,500 --> 00:20:22,940 See on veidi rohkem nagu võimas kui lisada mõttes, et hõlmata 404 00:20:22,940 --> 00:20:26,100 oleks lihtsalt kopeerida ja kleepida kaudu faili funktsiooni prototüüpe või 405 00:20:26,100 --> 00:20:27,930 sõltumata tüübist mõisted. 406 00:20:27,930 --> 00:20:30,590 Aga vaja tegelikult toimub saada meile koodi. 407 00:20:30,590 --> 00:20:33,280 >> Nii et sa ei mõtle seda kui importiva mõned koodi. 408 00:20:33,280 --> 00:20:37,960 Nii kuskil Node.js moodul süsteem või mis iganes nad on kõik see 409 00:20:37,960 --> 00:20:40,790 HTTP server koodi, et ma olen lihtsalt edev see minu enda 410 00:20:40,790 --> 00:20:43,130 isiklikuks kasutamiseks selles programmis. 411 00:20:43,130 --> 00:20:44,260 OK? 412 00:20:44,260 --> 00:20:46,930 >> Nii siis on mul selle funktsiooni mis ma olen kirjutanud. 413 00:20:46,930 --> 00:20:50,330 Ja teate ma ei ole, et täpsustada tagastamise tüüp või liik 414 00:20:50,330 --> 00:20:51,140 argumendid uuesti. 415 00:20:51,140 --> 00:20:54,440 Nii omamoodi lahti kirjutada selline tunne. 416 00:20:54,440 --> 00:20:57,290 Kaks argumendid, mida ta võtab, päring ja vastus. 417 00:20:57,290 --> 00:21:02,080 Nii et põhimõtteliselt on nagu tuttav pilt, mis meil oli 418 00:21:02,080 --> 00:21:05,280 ekraanile enne, sest saame selle palve, et me 419 00:21:05,280 --> 00:21:06,410 on kasutaja. 420 00:21:06,410 --> 00:21:09,170 Ja siis on meil vastus, et saame kirjutada asju. 421 00:21:09,170 --> 00:21:15,060 >> Nii et esimene rida selles ei res.writeHead 200 ja siis see 422 00:21:15,060 --> 00:21:17,070 sisutüüp tekst tavaline. 423 00:21:17,070 --> 00:21:19,300 Teeme panema selle peale natuke. 424 00:21:19,300 --> 00:21:22,340 Teeme lihtsalt keskenduda res.write vähe. 425 00:21:22,340 --> 00:21:28,420 Nii kirjutab on põhimõtteliselt, ja kirjutada pea, on lihtsalt kuidas omamoodi kirjutada 426 00:21:28,420 --> 00:21:29,960 asjad vastust. 427 00:21:29,960 --> 00:21:30,770 OK? 428 00:21:30,770 --> 00:21:36,230 Nii kirjutab pea, kui keegi mäletab HTTP loeng, te poisid 429 00:21:36,230 --> 00:21:39,940 mäletan päised top HTTP asi? 430 00:21:39,940 --> 00:21:43,580 Nii et miks ei ma lihtsalt demo päised reaalne kiire. 431 00:21:43,580 --> 00:21:44,640 Kas see kasulik? 432 00:21:44,640 --> 00:21:45,500 Või peaksime justkui - 433 00:21:45,500 --> 00:21:46,070 OK. 434 00:21:46,070 --> 00:21:46,740 Muidugi. 435 00:21:46,740 --> 00:21:52,340 >> Nii et kui oma brauseri läheb google.com või midagi sellist, 436 00:21:52,340 --> 00:21:54,250 seal on tegelikult veidi rohkem - 437 00:21:54,250 --> 00:21:55,380 see on nagu saladus - 438 00:21:55,380 --> 00:21:58,340 seal on nagu natuke rohkem infot mis tuleb läbi toru kui lihtsalt 439 00:21:58,340 --> 00:22:00,180 väike otsing ja kõik. 440 00:22:00,180 --> 00:22:03,550 Nii, et näidata teile, ma lähen kasutada programmi nimega Curl. 441 00:22:03,550 --> 00:22:04,260 OK? 442 00:22:04,260 --> 00:22:08,020 Nii et see on midagi, mida saab käivitada Mac OSX käsureal või 443 00:22:08,020 --> 00:22:09,830 seade või mis iganes. 444 00:22:09,830 --> 00:22:17,050 Ja nii kui ma Curl HTTP google.com, Ma lähen, et näha HTML. 445 00:22:17,050 --> 00:22:21,230 Ja see on õigluse, vaid HTML et justkui käsib teil 446 00:22:21,230 --> 00:22:24,695 suunata www kui teie brauser ei toeta automaatselt hakkama 447 00:22:24,695 --> 00:22:27,110 ümbersuunamist. 448 00:22:27,110 --> 00:22:33,390 >> Nii et see on lihtsalt HTML, kuid ma lähen lisada Curl see sidekriips I lipp. 449 00:22:33,390 --> 00:22:33,600 OK? 450 00:22:33,600 --> 00:22:35,600 Ja see läheb näidata mind päiseid. 451 00:22:35,600 --> 00:22:40,640 Nii et see on ka teavet, mis pärineb kaudu, kui ma saan selle vastuse. 452 00:22:40,640 --> 00:22:41,260 OK? 453 00:22:41,260 --> 00:22:45,320 >> Nii ülaosas näete seda HTTP 301 liiguvad pidevalt. 454 00:22:45,320 --> 00:22:49,470 Ja see on selline oluline, sest see viitab seisundi kood. 455 00:22:49,470 --> 00:22:53,750 Nii 301 siin on staatuse kood, mis on põhimõtteliselt ainult täisarv 456 00:22:53,750 --> 00:22:57,750 mis ütleb brauseri või kes on lugedes seda, kui sa teeskled, et 457 00:22:57,750 --> 00:23:01,460 sa oled brauser ja te näete seda, põhimõtteliselt nüüd, kui te vaatate 458 00:23:01,460 --> 00:23:04,960 et ja sa näed 301, sa tead, et ma ei midagi erilist, mis põhineb 459 00:23:04,960 --> 00:23:08,810 301, või midagi erilist juhtunud põhineb 301. 460 00:23:08,810 --> 00:23:12,640 Nii ta ütleb püsivalt liigutatud. 461 00:23:12,640 --> 00:23:17,700 >> Ja siis põhimõtteliselt on meil hunnik põhiväärtus paari. 462 00:23:17,700 --> 00:23:22,100 Me saame asukoht on www.google.com. 463 00:23:22,100 --> 00:23:25,190 Ja siis selline see kõik muud asjad, aga põhimõtteliselt, mis koht on 464 00:23:25,190 --> 00:23:29,662 ütlus on uus asukoht on www.google.com. 465 00:23:29,662 --> 00:23:33,800 Nüüd, kui sul minna google.com, siis saad omamoodi näha brauseri tüüpi vilkuv 466 00:23:33,800 --> 00:23:38,770 teine ​​ja siis suunata sind õigus tagasi www.google.com. 467 00:23:38,770 --> 00:23:41,840 Nii vastused võivad sisaldada need pealkirjad. 468 00:23:41,840 --> 00:23:43,330 >> Ja paar asja välja tuua. 469 00:23:43,330 --> 00:23:46,890 Ütleme olime tegelikult edukas külastades veebilehekülge. 470 00:23:46,890 --> 00:23:49,040 Nii et lubage mul minna - 471 00:23:49,040 --> 00:23:51,080 Mis on hea veebileht? 472 00:23:51,080 --> 00:23:53,285 Ma olen halb mõtlemine hea veebilehed kohapeal. 473 00:23:53,285 --> 00:23:53,640 >> Publik: Wikipedia. 474 00:23:53,640 --> 00:23:54,160 >> KEVIN Schmid: OK. 475 00:23:54,160 --> 00:23:56,040 Teeme Wikipedia. 476 00:23:56,040 --> 00:23:58,680 Nii et siin ma liigutada. 477 00:23:58,680 --> 00:23:59,240 Oh oota. 478 00:23:59,240 --> 00:24:00,160 Ma olin? 479 00:24:00,160 --> 00:24:00,890 Jah, ma olen. 480 00:24:00,890 --> 00:24:01,100 OK. 481 00:24:01,100 --> 00:24:03,005 Nii et ma sain teha www. 482 00:24:03,005 --> 00:24:06,006 Nii et ma lähen tegema, www. 483 00:24:06,006 --> 00:24:09,680 Ja nagu näete, siin on kõik HTML et brauser ei töödelda 484 00:24:09,680 --> 00:24:10,910 Wikipedia. 485 00:24:10,910 --> 00:24:14,055 >> Aga kui ma saan kerida, siia Mida ma näen ülaosas - 486 00:24:14,055 --> 00:24:17,800 wow, seal on palju HTML Wikipedia - 487 00:24:17,800 --> 00:24:22,550 kuid mida ma näen üleval siin see 200 status code erinevalt 488 00:24:22,550 --> 00:24:24,570 301, mis ma nägin varem. 489 00:24:24,570 --> 00:24:27,100 Ja teate, et see on kena sõbralik OK kõrval. 490 00:24:27,100 --> 00:24:29,470 Nii et see on nagu hea seisundi kood. 491 00:24:29,470 --> 00:24:31,160 >> Kas see 200 number tundub tuttav? 492 00:24:31,160 --> 00:24:34,120 493 00:24:34,120 --> 00:24:39,880 Jah, sest kui ma tegin simpler.js, Kirjutasin 200 seal. 494 00:24:39,880 --> 00:24:43,290 Nii et põhimõtteliselt öelda öelda brauseri või kes üritab saada 495 00:24:43,290 --> 00:24:45,440 seda, et nad olid edukad. 496 00:24:45,440 --> 00:24:49,040 Või et selline nagu me olid edukad ka. 497 00:24:49,040 --> 00:24:54,320 >> Ja seal on selline eriline süntaks Javascript tunnistamise 498 00:24:54,320 --> 00:24:59,870 kaart neid klahve nagu sisutüübi ja need väärtused nagu teksti tavaline. 499 00:24:59,870 --> 00:25:03,780 Nii et kui te vaatate vastuseks, et me tulin tagasi Wikipedia enne, - 500 00:25:03,780 --> 00:25:06,200 Ma lähen, et proovida, et kerida natuke kiiremini - 501 00:25:06,200 --> 00:25:09,900 sul on need võtmed nagu server ja need väärtused Apache. 502 00:25:09,900 --> 00:25:12,120 Nii et sul on võtmed ja väärtused. 503 00:25:12,120 --> 00:25:15,930 Ja te võite täpsustada selle Sõlm, mida tagasi saata. 504 00:25:15,930 --> 00:25:19,380 >> Seega see on tegelikult selline, mõnel moel, ja mõnes mõttes see ei ole 505 00:25:19,380 --> 00:25:23,170 tõesti, aga see on veidi madalam kui PHP koodi, mis sa võiksid olla 506 00:25:23,170 --> 00:25:26,980 kirjalikult P pani seitse sest PHP ja Apache omamoodi hoolitseda mõned 507 00:25:26,980 --> 00:25:28,150 need asjad sinu jaoks. 508 00:25:28,150 --> 00:25:32,520 PHP, saate vaike käitumist kirjalikult oma pealkirjad. 509 00:25:32,520 --> 00:25:35,520 Kuid käesoleva saame kirjutada välja oma pealkirjad. 510 00:25:35,520 --> 00:25:38,210 511 00:25:38,210 --> 00:25:41,105 >> Nii see siis line mõtet kõik, kirjutada pea line? 512 00:25:41,105 --> 00:25:41,380 OK. 513 00:25:41,380 --> 00:25:42,280 Lahe. 514 00:25:42,280 --> 00:25:45,870 >> Niisiis, mida ma teha, on mul lõpuks vastus öeldes tere. 515 00:25:45,870 --> 00:25:47,040 OK. 516 00:25:47,040 --> 00:25:49,920 Aga see on lihtsalt funktsioon nimega päringu menetleja. 517 00:25:49,920 --> 00:25:53,510 Nüüd ma tegelikult on omamoodi teha midagi selle funktsiooni, eks? 518 00:25:53,510 --> 00:25:59,170 >> Nii et siin, mida ma teen seal on see line, mis ei var server võrdsete 519 00:25:59,170 --> 00:26:03,530 HTTP.create server, ja siis ma läbima teabenõude käsitleja. 520 00:26:03,530 --> 00:26:06,080 Nii et see on omamoodi sõlm võimalus luua serveris. 521 00:26:06,080 --> 00:26:08,790 Ja teate, mida ma möödaminnes taotluses käitleja. 522 00:26:08,790 --> 00:26:12,290 Nii et see räägib createServer funktsioon, mida ma tahan, et sa mind 523 00:26:12,290 --> 00:26:16,270 server, ja kui see server saab vastus, ma tahan, et sa nimetad seda 524 00:26:16,270 --> 00:26:18,680 päringu menetleja funktsioon. 525 00:26:18,680 --> 00:26:18,990 OK? 526 00:26:18,990 --> 00:26:22,290 >> Nii et joon päris palju lõpeb kohe. 527 00:26:22,290 --> 00:26:28,780 Nii var server rida paremalt pärast sa seda päris palju. 528 00:26:28,780 --> 00:26:31,770 Ma mõtlen, et see on loodud teatud sisemine riik on teada, et teil oleks 529 00:26:31,770 --> 00:26:35,400 helistada, et päringu menetleja ülesanne, kuid ta ei kavatse seal istuda ja 530 00:26:35,400 --> 00:26:37,730 ütleme on kasutaja saadetud minu taotluse veel? 531 00:26:37,730 --> 00:26:39,270 Kas kasutaja saatis mulle taotlust veel? 532 00:26:39,270 --> 00:26:40,780 Nii et see ei takista. 533 00:26:40,780 --> 00:26:41,650 OK? 534 00:26:41,650 --> 00:26:46,120 >> Niisiis, mida see teha on see põhimõtteliselt nüüd salvestab osuti selle koodi, 535 00:26:46,120 --> 00:26:49,670 Selle päringu menetleja funktsioon ja seejärel kestab see kood, kui keegi 536 00:26:49,670 --> 00:26:52,170 teeb taotluse. 537 00:26:52,170 --> 00:26:54,120 Ja siis me teeme server.listen. 538 00:26:54,120 --> 00:26:56,950 539 00:26:56,950 --> 00:26:59,960 >> 1337 on üsna meelevaldne. 540 00:26:59,960 --> 00:27:02,285 Mul polnud erilist põhjust korjamiseks, et number. 541 00:27:02,285 --> 00:27:03,860 See oli täiesti juhuslik. 542 00:27:03,860 --> 00:27:07,010 Aga see lihtsalt täpsustab sadama. 543 00:27:07,010 --> 00:27:10,640 Nii et enamik veebiserverite näete, et nad kasutada port 80, sest see on omamoodi 544 00:27:10,640 --> 00:27:11,810 samasuguste konventsioon. 545 00:27:11,810 --> 00:27:16,170 Nii et kui ma lähen midagi, Ma ei tea, Wikipedia.org, 546 00:27:16,170 --> 00:27:17,700 ja panin koolon 8 - 547 00:27:17,700 --> 00:27:18,610 oh wow, sa ei näe seda. 548 00:27:18,610 --> 00:27:19,370 Vabandust. 549 00:27:19,370 --> 00:27:21,820 Aga kui ma teen Wikipedia - 550 00:27:21,820 --> 00:27:24,810 Ma kirjutan selle siia lihtsalt selleks, et see on selge, kaamera. 551 00:27:24,810 --> 00:27:29,150 Aga kui ma seda arvesse brauseri koolon 80, mis täpsustab minna 552 00:27:29,150 --> 00:27:31,430 Wikipedia.org sadamas 80. 553 00:27:31,430 --> 00:27:36,200 Nii et see on nagu, kuidas Ameerika Ühendriigid on mitu sadamate nagu, kus saab saata 554 00:27:36,200 --> 00:27:37,440 asju omamoodi. 555 00:27:37,440 --> 00:27:40,730 Nii et see on nagu minna selle konkreetse koht selles serveris. 556 00:27:40,730 --> 00:27:40,990 OK. 557 00:27:40,990 --> 00:27:45,730 >> Nii et ma lihtsalt valis 1337. 558 00:27:45,730 --> 00:27:47,910 On terve hulk numbrid et saate valida. 559 00:27:47,910 --> 00:27:50,390 See ei olnud täiesti eriline. 560 00:27:50,390 --> 00:27:54,560 >> Aga mida ma teen nüüd on ma lähen jooksma sõlme. 561 00:27:54,560 --> 00:27:59,730 Lubage mul tegelikult selles paar liinid maha, nii et saate seda näha. 562 00:27:59,730 --> 00:28:03,130 Ma teen sõlme, ja ma olen jooksegi simpler.js. 563 00:28:03,130 --> 00:28:06,880 Ja siis me räägime, kuidas saada Sõlme loodud natuke. 564 00:28:06,880 --> 00:28:09,350 Aga nüüd on see lihtsalt töötab server. 565 00:28:09,350 --> 00:28:14,360 >> Nii et üks asi, mida me võib proovida, mida ei olla, et põnev on saame tegelikult 566 00:28:14,360 --> 00:28:16,300 üritada pääsu seda Curl. 567 00:28:16,300 --> 00:28:20,680 Ma võin teha lokke ja minu Masin on kohalik host. 568 00:28:20,680 --> 00:28:24,600 Näete ka selle kirjaliku niimoodi mõnikord. 569 00:28:24,600 --> 00:28:29,810 Kohalik host ja 127.0.0.1 on lahke kohta nagu oma kodus arvuti. 570 00:28:29,810 --> 00:28:33,180 Nii et see on nagu räägid oma arvutist. 571 00:28:33,180 --> 00:28:33,760 OK. 572 00:28:33,760 --> 00:28:36,030 >> Ja siis ma ei saa öelda 1337. 573 00:28:36,030 --> 00:28:39,630 Nii et kui ma saan seda rida koodi, ta ütleb tere. 574 00:28:39,630 --> 00:28:44,050 Ja kui ma tahtsin näha, et asjad, mis oli sisutüübi teksti liht-või 575 00:28:44,050 --> 00:28:46,560 mis iganes, ma võiks isegi selle siia pani. 576 00:28:46,560 --> 00:28:48,810 Ja teate, et see ei öelda OK. 577 00:28:48,810 --> 00:28:50,810 Ja mul on tekst tavaline. 578 00:28:50,810 --> 00:28:53,140 Ja siis on omamoodi kõik muu asju, mis sõlme lisada 579 00:28:53,140 --> 00:28:54,440 minu jaoks olemas. 580 00:28:54,440 --> 00:28:55,700 See pole super oluline. 581 00:28:55,700 --> 00:28:58,230 >> Ma mõtlen, et seal on mingi tehniline aspektide juures, mis on omamoodi 582 00:28:58,230 --> 00:29:02,280 lahe rääkida, kuid ainult selleks, et näidata sa, mul on ka õigus 583 00:29:02,280 --> 00:29:03,070 muuta need ümber. 584 00:29:03,070 --> 00:29:06,280 Ma võin vaid lisada kamp asju niimoodi. 585 00:29:06,280 --> 00:29:11,780 Ja siis nüüd, kui ma vaatan minu väljund, siis on see, et. 586 00:29:11,780 --> 00:29:19,740 Nii et need pealkirjad tähendab teatud asju brauserid ja asjad niimoodi. 587 00:29:19,740 --> 00:29:23,040 >> Ja pealkirjad on põhimõtteliselt öelda brauser kuidas vastata midagi. 588 00:29:23,040 --> 00:29:26,280 Kui olete kunagi kuulnud küpsised enne, või kui sa oled kunagi olnud pahane 589 00:29:26,280 --> 00:29:29,330 poolt veebilehe küpsiste seadistamine, või sisselülitatud cookie blokeerida või 590 00:29:29,330 --> 00:29:30,320 midagi sellist. 591 00:29:30,320 --> 00:29:33,040 Võite tegelikult küpsiseid Nende pealkirjad. 592 00:29:33,040 --> 00:29:36,990 Nii nad ütlevad brauser kuidas käitumist mingil juhul. 593 00:29:36,990 --> 00:29:37,750 OK. 594 00:29:37,750 --> 00:29:40,310 >> Nii et oli simpler.js. 595 00:29:40,310 --> 00:29:42,780 Kas kellelgi on küsimusi selle lähtekoodi faili? 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 Lahe. 599 00:29:46,490 --> 00:29:50,780 >> Teeme eemaldada r sellest ja vaata simple.js. 600 00:29:50,780 --> 00:29:53,010 Nii et see on üsna palju sama programmiga. 601 00:29:53,010 --> 00:29:56,030 Ma kirjutasin seda natuke teistmoodi sest ma tahtsin, et sortida esiletõstmise 602 00:29:56,030 --> 00:29:57,850 mõned funktsioonid JavaScript. 603 00:29:57,850 --> 00:30:03,880 >> Nii teate, et taotlus handler funktsioon on täiesti kadunud. 604 00:30:03,880 --> 00:30:05,800 Oh jah, sul oli küsimus? 605 00:30:05,800 --> 00:30:08,200 >> Publik: Jah, argumendid mis on vastu võetud selle 606 00:30:08,200 --> 00:30:10,120 funktsioon, mis need on? 607 00:30:10,120 --> 00:30:12,050 >> KEVIN Schmid: Nii et need on JavaScript objektid. 608 00:30:12,050 --> 00:30:15,230 In Node.js dokumentatsioon, see põhimõtteliselt ütleb milliseid meetodeid on 609 00:30:15,230 --> 00:30:15,910 saadaval neile. 610 00:30:15,910 --> 00:30:19,602 Me lihtsalt juhtub olema juurdepääs seda meetodit nimetatakse kirjutada pea ja lõpuks 611 00:30:19,602 --> 00:30:20,730 ja värki. 612 00:30:20,730 --> 00:30:22,590 Aga seal on terve hulk veel meetodeid. 613 00:30:22,590 --> 00:30:27,670 >> Ja näiteks nagu üks neist eelkõige rec, saate seda teha 614 00:30:27,670 --> 00:30:34,540 midagi rec.method mis öelda, kas see on HTTP GET või 615 00:30:34,540 --> 00:30:36,780 HTTP POST päringuid ja asjad niimoodi. 616 00:30:36,780 --> 00:30:39,100 Nii et seal on igasuguseid erinevaid omadused, kuid nad mõlemad 617 00:30:39,100 --> 00:30:42,560 JavaScript objektid ja nad lihtsalt on funktsioonid neile lisatud, et teil 618 00:30:42,560 --> 00:30:43,850 saab kirjutada asju. 619 00:30:43,850 --> 00:30:45,520 OK? 620 00:30:45,520 --> 00:30:49,030 >> Nii teate, et päringu menetleja on täiesti kadunud. 621 00:30:49,030 --> 00:30:52,650 Aga kood, mis mul oli taotluse käitleja on endiselt olemas. 622 00:30:52,650 --> 00:30:56,520 Mul on veel see res.writeHead ja mul on veel see res.end. 623 00:30:56,520 --> 00:31:00,270 Ja mis see on näide in JavaScript on see idee 624 00:31:00,270 --> 00:31:01,460 anonüümne funktsioon. 625 00:31:01,460 --> 00:31:04,180 ja anonüümsed nagu paigaldamise nimi jaoks, sest see sõna otseses mõttes ei 626 00:31:04,180 --> 00:31:05,180 nime. 627 00:31:05,180 --> 00:31:07,900 Ei ole nõudmine handler sinna. 628 00:31:07,900 --> 00:31:10,110 >> Tal ei ole nime, kuid siiski võtab argument. 629 00:31:10,110 --> 00:31:12,250 Nii et ma ikka sain rec ja res. 630 00:31:12,250 --> 00:31:16,180 Ja mul on veel kood. 631 00:31:16,180 --> 00:31:18,930 See on täiesti trahvi JavaScripti koodi. 632 00:31:18,930 --> 00:31:22,540 Ma võin tunnistada funktsioon ilma selgesõnaliselt andes talle nime. 633 00:31:22,540 --> 00:31:24,250 See on natuke segane alguses. 634 00:31:24,250 --> 00:31:26,230 Leidub nagu kasulikke asju , mida saate teha koos 635 00:31:26,230 --> 00:31:28,450 need anonüümsed funktsioonid. 636 00:31:28,450 --> 00:31:32,100 Kas kellelgi on mingeid küsimusi selle kohta, või on see OK lihtsalt, nüüd, 637 00:31:32,100 --> 00:31:34,130 omamoodi lihtsalt aktsepteerima, et see teeme sama asja? 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 >> Publik: Kas funktsioone esimene klassi JavaScript? 641 00:31:38,680 --> 00:31:41,020 >> KEVIN Schmid: Nad on esimene klassi JavaScript. 642 00:31:41,020 --> 00:31:45,490 Ja lihtsalt tean, et need mõisted kulgeb anonüümne funktsioon nagu 643 00:31:45,490 --> 00:31:49,600 seda kohaldada JavaScript, et sa võib kirjutada oma lõpliku projekti 644 00:31:49,600 --> 00:31:51,260 veebilehitseja liiga. 645 00:31:51,260 --> 00:31:56,700 Nii näiteks JavaScript brauseri, see on ka mõnevõrra sündmus 646 00:31:56,700 --> 00:32:00,680 ajendatud selles mõttes, et mida sa on, kui kasutaja klõpsab seda 647 00:32:00,680 --> 00:32:02,640 nuppu, ma tahan, et sa jooksed selle koodi. 648 00:32:02,640 --> 00:32:07,070 >> Nii et see on sama liiki ideid kliendi poolel, kui hiireklõpsuga või nad 649 00:32:07,070 --> 00:32:09,870 hiirega üle teatud pilti oma veebilehe käivitada koodi. 650 00:32:09,870 --> 00:32:11,350 See ei kehti servereid. 651 00:32:11,350 --> 00:32:16,380 Nii et see on nagu põnev miks JavaScript on tõesti 652 00:32:16,380 --> 00:32:19,810 sobib või mõned inimesed arvavad, et see on Sobiva keele sedalaadi 653 00:32:19,810 --> 00:32:22,530 Kui juht server, sest sa oled need anonüümsed funktsioonid. 654 00:32:22,530 --> 00:32:26,150 Sul on kogu idee see asünkroonne kood. 655 00:32:26,150 --> 00:32:27,060 OK. 656 00:32:27,060 --> 00:32:30,360 Kas kellelgi on küsimusi? 657 00:32:30,360 --> 00:32:30,470 >> OK. 658 00:32:30,470 --> 00:32:33,440 Nii et oli simple.js. 659 00:32:33,440 --> 00:32:38,070 Nii vaatame veel üks või paar rohkem. 660 00:32:38,070 --> 00:32:42,040 Nii et see on sleep.js. 661 00:32:42,040 --> 00:32:47,160 Niisiis on keegi tuttav C funktsioon magada? 662 00:32:47,160 --> 00:32:50,936 Alates võibolla üks varasem loengud või midagi sellist? 663 00:32:50,936 --> 00:32:54,650 >> Nii et põhimõtteliselt saab läbida ka ma arvan sekundite arvu või kui te kasutate U 664 00:32:54,650 --> 00:32:57,080 magada millisekundid või nanoseconds. 665 00:32:57,080 --> 00:33:00,450 Ja põhimõtteliselt programm lihtsalt lõpetada töötab selle ajaga. 666 00:33:00,450 --> 00:33:01,280 Eks ole? 667 00:33:01,280 --> 00:33:06,970 Ja siis ärkavad lõpuks ja siis lihtsalt jätkata jooksvate 668 00:33:06,970 --> 00:33:08,340 programmi. 669 00:33:08,340 --> 00:33:12,740 >> Nii et see server omamoodi annab mulje magada. 670 00:33:12,740 --> 00:33:17,580 Nii teate, et meil on sama res.writeHead 200 päises kui 671 00:33:17,580 --> 00:33:22,130 varem, kuid siis me nimetades seda funktsiooni nimetatakse set timeout. 672 00:33:22,130 --> 00:33:26,170 Seadke ooteaeg on saadaval ka oma veebilehitseja Google Chrome 673 00:33:26,170 --> 00:33:28,000 või Safari või mis iganes. 674 00:33:28,000 --> 00:33:31,720 Ja põhimõtteliselt mida ta siin teeb on see võtab funktsioonis. 675 00:33:31,720 --> 00:33:33,360 Teate, jälle, see on anonüümne funktsioon. 676 00:33:33,360 --> 00:33:36,310 Nii et omamoodi lahe, sest me oleme kasutades anonüümne funktsiooni 677 00:33:36,310 --> 00:33:38,950 anonüümne funktsioon, mis võib olla veidi imelik. 678 00:33:38,950 --> 00:33:42,270 >> Aga see võtab, et funktsioon, mis on põhimõtteliselt öelda - ja kuidas see 679 00:33:42,270 --> 00:33:47,430 teosed on 5000 millisekundit, ma tahan teil täita selle funktsiooni, mis 680 00:33:47,430 --> 00:33:50,830 lihtsalt lõpetab reageerimise ja kirjutab hei. 681 00:33:50,830 --> 00:33:56,730 Nii et see jätab mulje nagu magab, kuid viis, kuidas seda tegelikult 682 00:33:56,730 --> 00:33:59,780 töötab, on me joosta see rida väga kiiresti. 683 00:33:59,780 --> 00:34:01,190 Me lihtsalt kirjalikult midagi. 684 00:34:01,190 --> 00:34:03,780 Ja siis ka jookseb läbi see rida väga kiiresti. 685 00:34:03,780 --> 00:34:08,620 Nii et me tegelikult ei kavatse ootama viis sekundit. 686 00:34:08,620 --> 00:34:11,370 Me lihtsalt jookseks Selle koodi koheselt. 687 00:34:11,370 --> 00:34:14,219 >> Ja siis on jälle see väike Kui loop et nüüd on see asi 688 00:34:14,219 --> 00:34:17,570 registreid, et põhimõtteliselt on lihtsalt pidevalt käin ringi 689 00:34:17,570 --> 00:34:21,620 ja vaadates kella ühe niit ja ütlus on viis sekundit 690 00:34:21,620 --> 00:34:22,360 edasi veel? 691 00:34:22,360 --> 00:34:26,409 Ja siis, kui ta näeb, et teine käsi on liikunud nagu viis sekundit või 692 00:34:26,409 --> 00:34:29,190 mis iganes, siis ärkab ja ütleb: oh, mida ma pean tegema? 693 00:34:29,190 --> 00:34:30,350 Oh mul on käivitada koodi. 694 00:34:30,350 --> 00:34:33,110 Ja siis see läheb joosta res.end hei. 695 00:34:33,110 --> 00:34:35,360 >> Nii et taas, me ei oodanud siin. 696 00:34:35,360 --> 00:34:38,590 Nii see ei ole, et see kood sees Selle funktsiooni saab võtta viis 697 00:34:38,590 --> 00:34:39,900 sekundit joosta. 698 00:34:39,900 --> 00:34:43,090 See kood töötab päris palju silmapilkselt vähemalt võrreldes 699 00:34:43,090 --> 00:34:46,139 viis sekundit, et me ei räägi kohta varem enne. 700 00:34:46,139 --> 00:34:52,100 >> Nii lihtsalt, et näidata see toimib, Ma võin teha Node.sleep.js. 701 00:34:52,100 --> 00:34:55,159 Ja kas ma segi ajama midagi? 702 00:34:55,159 --> 00:34:56,310 Võib-olla. 703 00:34:56,310 --> 00:34:57,410 Vabandust. 704 00:34:57,410 --> 00:34:59,530 Vaatame, mida saame teha, et seda parandada. 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 Seega kindlasti kasutada Node.js. 709 00:35:17,464 --> 00:35:19,440 Ma tegin lihtsalt nalja. 710 00:35:19,440 --> 00:35:19,570 OK. 711 00:35:19,570 --> 00:35:20,820 Lihtsalt üks 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 Ma tean, mis see on. 715 00:35:29,130 --> 00:35:34,440 >> Seega on küsimus selles, et minu teisi tab siin, ma jooksin Sõlme juba 716 00:35:34,440 --> 00:35:36,590 et samal aadressil, 1337. 717 00:35:36,590 --> 00:35:43,370 Nii viga, et see viskas, kui me vaatame seda päris täpselt, on aadress 718 00:35:43,370 --> 00:35:45,180 kasutada, EADDRINUSE. 719 00:35:45,180 --> 00:35:47,970 Nii et ma kasutan juba 1337 siin. 720 00:35:47,970 --> 00:35:52,210 Nii et kui ma sulgeda selle ära ja siis ma nüüd proovite käivitada see loodetavasti kõik 721 00:35:52,210 --> 00:35:53,210 saab trahvi. 722 00:35:53,210 --> 00:35:53,440 OK. 723 00:35:53,440 --> 00:35:57,020 Nii saab olla ainult üks asi sort kuulamise kohta port korraga. 724 00:35:57,020 --> 00:35:59,660 Teine lahendus oleks olnud minu jaoks lihtsalt muuta, et programm ja teha 725 00:35:59,660 --> 00:36:02,370 see on nagu 1338 või midagi niimoodi. 726 00:36:02,370 --> 00:36:04,100 >> Aga nüüd magama töötab. 727 00:36:04,100 --> 00:36:06,400 Nii et tegelikult on seda proovida sisse brauseri seekord, sest see on 728 00:36:06,400 --> 00:36:09,080 vähe Jännityksetön näha see terminal. 729 00:36:09,080 --> 00:36:13,560 Nii et ma lähen lihtsalt minema, et 127 aadress uuesti 1337. 730 00:36:13,560 --> 00:36:14,850 Ja kui sa ei näe seda - 731 00:36:14,850 --> 00:36:18,050 Ma ei tea, kas saate - kuid minu brauseri võttes väga pikk 732 00:36:18,050 --> 00:36:20,600 aega laadida või nagu viis sekundit. 733 00:36:20,600 --> 00:36:23,460 >> Ja siis pärast seda, kui ta lõpuks lõpetas vastuse. 734 00:36:23,460 --> 00:36:29,070 Ja sa ei näe seda, sest asi liigub üle vähe, kuid kui ma teen 735 00:36:29,070 --> 00:36:32,500 see veidi väiksem, siis näen seda ütleb hei. 736 00:36:32,500 --> 00:36:35,130 Nii et ma sain Hei, aga viie sekundi jooksul. 737 00:36:35,130 --> 00:36:38,510 Ja see võib olla veidi puhtam näha see siin on terminal, nii et ma olen 738 00:36:38,510 --> 00:36:40,980 teeme - 739 00:36:40,980 --> 00:36:43,540 Teeme siin - 740 00:36:43,540 --> 00:36:48,370 Teeme Curl sellele aadressile uuesti 1337. 741 00:36:48,370 --> 00:36:50,820 Ja ma lihtsalt selline istuma siin viis sekundit. 742 00:36:50,820 --> 00:36:53,760 Aga teate, et server aktsepteerib uusi lahendusi. 743 00:36:53,760 --> 00:36:54,940 Nii et see prindib hei. 744 00:36:54,940 --> 00:36:58,720 >> Ja demo see, põhimõtteliselt mida Ma võin teha seda teiste tab - 745 00:36:58,720 --> 00:37:02,640 ütleme, et ma teen seda teises jaotises Ma lähen tegema, Curl ja sama 746 00:37:02,640 --> 00:37:03,780 asi uuesti. 747 00:37:03,780 --> 00:37:06,600 Ma lähen, et proovida lüüa neid poisid välja samal ajal. 748 00:37:06,600 --> 00:37:08,260 Nii et ma teen seda, ja ma olen kavatse rassi üle siin ja ma olen 749 00:37:08,260 --> 00:37:09,650 kavatse seda uuesti teha. 750 00:37:09,650 --> 00:37:14,030 >> Ja teeme seda nii, et te saab näha mõlemaid. 751 00:37:14,030 --> 00:37:20,250 See üks trükitud hei, ning et üks trükitud hei kõik viis - 752 00:37:20,250 --> 00:37:22,550 Teeme seda katset uuesti. 753 00:37:22,550 --> 00:37:25,100 Tegelikult kasutame seda trikk, kui see on OK. 754 00:37:25,100 --> 00:37:30,520 >> Nii et ma lähen kasutada koorega asi, võimaldab mul põhimõtteliselt kulgema kahes eksemplaris 755 00:37:30,520 --> 00:37:32,630 Selle programmi paralleelselt. 756 00:37:32,630 --> 00:37:36,070 Nii, et see käivitada esimene programm ja Teine programm paralleelselt. 757 00:37:36,070 --> 00:37:39,060 Nüüd, kui ma vajutage Enter, siis läheb teha selle taotluse päris palju 758 00:37:39,060 --> 00:37:40,570 silmapilkselt juures samal ajal. 759 00:37:40,570 --> 00:37:42,620 Nii anname selle maha. 760 00:37:42,620 --> 00:37:44,950 >> Nüüd märka seda ütleb kaks protsessi. 761 00:37:44,950 --> 00:37:50,630 Ja kui sa oled uudishimulik, et 27000 number on põhimõtteliselt protsessi ID. 762 00:37:50,630 --> 00:37:52,940 Ja siis märkate, nad trükitud hei samaaegselt. 763 00:37:52,940 --> 00:37:56,820 See ei olnud nagu meil tuli oodata viis sekundit ühe ja siis pärast seda, 764 00:37:56,820 --> 00:37:59,640 viis sekundit hiljem saad teise. 765 00:37:59,640 --> 00:38:03,300 Nii et on selline, mõnes mõttes on see ole tegelikult tõendeid, kuid see on 766 00:38:03,300 --> 00:38:07,390 intuitiivne tõendeid, et see ei ole lihtsalt nagu ootab viis sekundit ja blokeerimine 767 00:38:07,390 --> 00:38:08,960 kogu teema. 768 00:38:08,960 --> 00:38:10,720 OK cool. 769 00:38:10,720 --> 00:38:17,850 >> Aaron esitasin küsimuse varem, et oli hästi, mis siis, kui me ei tee midagi - 770 00:38:17,850 --> 00:38:18,735 Yep? 771 00:38:18,735 --> 00:38:19,051 >> Publik: Oota. 772 00:38:19,051 --> 00:38:21,585 Kuidas on see erinev printf puhver, kuigi? 773 00:38:21,585 --> 00:38:23,010 Kas see ei automaatselt teha? 774 00:38:23,010 --> 00:38:25,390 Miks me ei pea muretsema selle? 775 00:38:25,390 --> 00:38:26,555 >> KEVIN Schmid: Oh, sa võisid öelda, et veel üks kord? 776 00:38:26,555 --> 00:38:29,510 >> Publik: ei meeldi printf puhver teha täpselt sama asi? 777 00:38:29,510 --> 00:38:31,280 >> KEVIN Schmid: printf puhver? 778 00:38:31,280 --> 00:38:32,753 >> Publik: Jah. 779 00:38:32,753 --> 00:38:33,244 OK. 780 00:38:33,244 --> 00:38:40,609 Ei olnud üks viktoriinid olid räägi, kuidas, kui sa õige printf 781 00:38:40,609 --> 00:38:42,899 midagi ja siis on see paus üks teine, ja siis on see loop kümme 782 00:38:42,899 --> 00:38:46,530 korda, siis ootan kümme sekundit ja siis printf kõik koos? 783 00:38:46,530 --> 00:38:47,460 >> KEVIN Schmid: Oh, OK. 784 00:38:47,460 --> 00:38:49,170 >> Publik: Kas see teeb sama asi siis selles asjas? 785 00:38:49,170 --> 00:38:52,630 >> KEVIN Schmid: Nii et küsimus oli põhiliselt ühes endises viktoriinid 786 00:38:52,630 --> 00:38:57,200 või midagi, tekkis küsimus, et põhimõtteliselt, kui sa ütled print f 10 787 00:38:57,200 --> 00:39:01,490 asjad korraga ja siis magas nagu printimist need välja, 788 00:39:01,490 --> 00:39:04,850 aasta lõpus mingil põhjusel see oleks lihtsalt prügimäele need kõik välja ekraanile. 789 00:39:04,850 --> 00:39:06,740 Nii et seal on selline kahe erineva mõisted siin. 790 00:39:06,740 --> 00:39:10,400 >> Nii et ma arvan, et üks asi on see, et see juhul on meil tegemist kahe erineva 791 00:39:10,400 --> 00:39:13,510 sort inimesi küsib server asju samal ajal. 792 00:39:13,510 --> 00:39:17,455 Ja põhjus, et printf liiki ootab niimoodi ja puistab kõik välja 793 00:39:17,455 --> 00:39:21,760 korraga on rohkem seotud kuidas printf liiki - 794 00:39:21,760 --> 00:39:25,100 nii kuidas printf on tegelikult rakendatud on see põhimõtteliselt peab 795 00:39:25,100 --> 00:39:28,850 räägi operatsioonisüsteemi kirjutada mis värk konsooliga. 796 00:39:28,850 --> 00:39:33,460 Nii et ta ei soovi teha kõik, et asjad kohe, kui ütlete printf 797 00:39:33,460 --> 00:39:36,260 mõned string, sest see võib saada kallis kui see on 798 00:39:36,260 --> 00:39:37,340 seda iga kord. 799 00:39:37,340 --> 00:39:41,530 >> Nii et kui te printf hei, teie programm ei pruugi tegelikult printida, et 800 00:39:41,530 --> 00:39:43,040 kohe konsooli. 801 00:39:43,040 --> 00:39:46,080 Võib öelda, OK, ma kirjutasin selle. 802 00:39:46,080 --> 00:39:49,570 Ja siis selline ootama teil anda see veidi enne tegelikku 803 00:39:49,570 --> 00:39:51,380 kirjutades seda konsooli. 804 00:39:51,380 --> 00:39:54,040 >> Nii seetõttu, et see oli nii - 805 00:39:54,040 --> 00:39:56,450 ja see on selline sõltumatu und - 806 00:39:56,450 --> 00:40:00,060 on see, et uni oli omamoodi lihtsalt süstitakse seal näidata 807 00:40:00,060 --> 00:40:02,480 Asjaolu, et ta ei kirjuta see sünkroonselt. 808 00:40:02,480 --> 00:40:06,210 Aga põhjus on lihtsalt tulemuslikkuse, nii et sa ei pea 809 00:40:06,210 --> 00:40:08,920 teha, et paljud kontaktid operatsioonisüsteemi. 810 00:40:08,920 --> 00:40:12,300 >> Aga siin, mida me tõesti püüame teha Selle magada asi on lihtsalt näidata 811 00:40:12,300 --> 00:40:17,730 et kui meil on kaks inimest, kes külastavad sellel veebilehel, see ei kavatse panna 812 00:40:17,730 --> 00:40:22,310 neid joon, kus ta läheb öelda Mul on sind aidata, ja siis, kui ma olen 813 00:40:22,310 --> 00:40:25,350 täiesti valmis, et aidata teil pärast nende viis sekundit, siis ma lähen 814 00:40:25,350 --> 00:40:26,750 liikuge järgmisele isikule. 815 00:40:26,750 --> 00:40:29,515 Nii et esimese isiku taotlus ei nöörima juhul loop 816 00:40:29,515 --> 00:40:31,610 kui see on mõistlik. 817 00:40:31,610 --> 00:40:34,980 >> Aga siin on tegelikult näide midagi, mis seob 818 00:40:34,980 --> 00:40:36,090 kuni sündmus loop. 819 00:40:36,090 --> 00:40:39,130 Nii et siin on jube funktsiooni arvutage nda Fibonacci. 820 00:40:39,130 --> 00:40:43,510 See on sõna otseses mõttes halvem, kuidas sa saad arvutage nda Fibonacci number. 821 00:40:43,510 --> 00:40:48,480 Ja see on tegelikult lihtsalt tunnistada , kust see tuli, 822 00:40:48,480 --> 00:40:49,330 seal on tegelikult - 823 00:40:49,330 --> 00:40:53,230 Ma mõtlen, et sa võid proovida minna leida - aga seal on nagu väga pikk blogi 824 00:40:53,230 --> 00:40:54,130 lisada, et keegi kirjutas. 825 00:40:54,130 --> 00:40:55,660 See on nagu üks neist Reddit asju. 826 00:40:55,660 --> 00:40:59,650 Aga keegi kritiseeris Node.js ja nad kasutasid seda kui näidet. 827 00:40:59,650 --> 00:41:03,700 Nii et ma sellist tahtnud lihtsalt näitan sulle kaks erinevaid vaatenurki lihtsalt saada 828 00:41:03,700 --> 00:41:07,320 üldised teadmised mõisted taga need kaks asja. 829 00:41:07,320 --> 00:41:13,050 >> Aga see on valitud lihtsalt jube, kohutavalt ebaefektiivne arvutuslikult 830 00:41:13,050 --> 00:41:15,940 intensiivselt arvutada nda Fibonacci number. 831 00:41:15,940 --> 00:41:21,180 Nii nagu pool tähele, miks on see jube nagu ühes suunas? 832 00:41:21,180 --> 00:41:23,210 Yep? 833 00:41:23,210 --> 00:41:25,130 >> Publik: Ütle, et alustada läbi 1000. 834 00:41:25,130 --> 00:41:27,050 1000 jaguneb 999 ja 998. 835 00:41:27,050 --> 00:41:28,970 Kõik see jaguneb kahte asja. 836 00:41:28,970 --> 00:41:30,890 Kõik see jaguneb kahte asja. 837 00:41:30,890 --> 00:41:31,355 >> KEVIN Schmid: Õigus. 838 00:41:31,355 --> 00:41:32,400 >> Publik: Täiesti alla. 839 00:41:32,400 --> 00:41:32,840 >> KEVIN Schmid: Täpselt. 840 00:41:32,840 --> 00:41:37,330 Nii lihtsalt korrata kaamera, kui ma kutsuvad luiskama on nagu 1000 või midagi 841 00:41:37,330 --> 00:41:41,810 niimoodi, et see on ilmselt vähemalt või võrdne ühega, et ma lähen 842 00:41:41,810 --> 00:41:46,040 minna seda veel juhul, ja siis ma lähen helistada luiskama 999 pluss luiskama 998. 843 00:41:46,040 --> 00:41:50,290 Ja siis päris palju kõik, et töö luiskama 999 teeb, on 844 00:41:50,290 --> 00:41:52,950 objekti sellel tasemel. 845 00:41:52,950 --> 00:41:55,620 Kui sa lähed alla, see on isegi rohkem üleliigne kui, aga kui sa lihtsalt 846 00:41:55,620 --> 00:42:01,390 arvan, arvutid luiskama 998 saab meile üsna lähedal luiskama 999. 847 00:42:01,390 --> 00:42:05,860 Seega peaksime me tõesti olla natuke rohkem tark, kuidas me sellist taaskasutada 848 00:42:05,860 --> 00:42:07,580 need, kuid me ei taaskasutades need asjad üldse. 849 00:42:07,580 --> 00:42:11,860 Seega võite ette kujutada, see hiiglaslik, hiiglaslik puu see on lihtsalt jube. 850 00:42:11,860 --> 00:42:12,940 >> Aga ikkagi, OK. 851 00:42:12,940 --> 00:42:14,040 Nii et oli vale. 852 00:42:14,040 --> 00:42:15,530 See lihtsalt võtab aega joosta. 853 00:42:15,530 --> 00:42:16,510 Yep? 854 00:42:16,510 --> 00:42:17,760 >> Publik: [kuuldamatu]. 855 00:42:17,760 --> 00:42:20,430 856 00:42:20,430 --> 00:42:22,481 >> KEVIN Schmid: Oh, sa võisid küsimust korrata? 857 00:42:22,481 --> 00:42:23,731 >> Publik: [kuuldamatu]. 858 00:42:23,731 --> 00:42:30,840 859 00:42:30,840 --> 00:42:33,990 >> KEVIN Schmid: Oh nii et see on lihtsalt kood et see saab olema omamoodi kohta 860 00:42:33,990 --> 00:42:34,850 serveripoolne. 861 00:42:34,850 --> 00:42:38,100 Nii et see ei kavatse olla leitud brauseri või midagi. 862 00:42:38,100 --> 00:42:42,160 See on põhimõtteliselt see, mis meil on, et kui kasutaja siin päris palju marke 863 00:42:42,160 --> 00:42:45,300 oma taotluse uuesti, kui me omamoodi esitavad taotluse, me nimetame 864 00:42:45,300 --> 00:42:47,040 Selle funktsiooni serveripoolne. 865 00:42:47,040 --> 00:42:50,480 Ja siis me jõuame tulemus tagasi helistatakse, et funktsioon. 866 00:42:50,480 --> 00:42:52,460 Ja siis me lihtsalt printida selle alla. 867 00:42:52,460 --> 00:42:54,580 Nii et kasutaja ei ole tegelikult tegeleda Selle funktsiooni liiga palju. 868 00:42:54,580 --> 00:42:57,270 >> Kas see oli küsimus? 869 00:42:57,270 --> 00:42:58,470 Kas see on mõtet? 870 00:42:58,470 --> 00:42:58,810 OK. 871 00:42:58,810 --> 00:43:00,930 Lahe. 872 00:43:00,930 --> 00:43:04,240 >> Nii et taas, me teeme seda kogu res.writeHead asi, kui me välja printida 873 00:43:04,240 --> 00:43:05,150 päises. 874 00:43:05,150 --> 00:43:09,730 Ja siis ma lõpuks vastuse, tehes maagiline number on vale 45. 875 00:43:09,730 --> 00:43:12,100 Teeme lihtsalt käivitada server. 876 00:43:12,100 --> 00:43:15,190 Nii et ma lähen tegema Sõlme fib.js. 877 00:43:15,190 --> 00:43:17,340 Nüüd minu luiskama server töötab. 878 00:43:17,340 --> 00:43:21,790 >> Ja siis siin, ma lähen teha üks neist. 879 00:43:21,790 --> 00:43:22,200 OK? 880 00:43:22,200 --> 00:43:24,960 Nii et ma lihtsalt ütlen, Curl. 881 00:43:24,960 --> 00:43:32,226 Nii see läheb võtab natuke aega, kuid loodetavasti varsti see lõpeb ja 882 00:43:32,226 --> 00:43:35,660 see välja printida, et 45. Fibonacci number. 883 00:43:35,660 --> 00:43:36,910 >> Publik: [kuuldamatu]. 884 00:43:36,910 --> 00:43:40,720 885 00:43:40,720 --> 00:43:42,050 >> KEVIN Schmid: see peaks saad teha päris kiiresti. 886 00:43:42,050 --> 00:43:43,780 Nii et see peaks võtma 5-6 sekundit. 887 00:43:43,780 --> 00:43:48,570 Ma ei tea, see on lihtsalt V8 on super kiiresti, kuid igal juhul on see 888 00:43:48,570 --> 00:43:52,700 lühike ülevaade ja sihilikult maitsetu ja mitte-triviaalne 889 00:43:52,700 --> 00:43:54,200 arvutusvõimsus. 890 00:43:54,200 --> 00:43:56,700 Nii et pärast mõnda aega, see ei saa sellest aru. 891 00:43:56,700 --> 00:44:02,130 >> Aga nüüd, kui ma tean, et sama liiki eksperimendi enne, kui ma saan teha 892 00:44:02,130 --> 00:44:04,010 kaks taotlust samal ajal? 893 00:44:04,010 --> 00:44:06,990 Nii et siin ma lähen lokke edasi et aadress, ja ma lähen, 894 00:44:06,990 --> 00:44:08,260 teha teise Curl. 895 00:44:08,260 --> 00:44:12,070 Ja pidage meeles, kui me tegime seda magada server, kui me põhimõtteliselt oli see 896 00:44:12,070 --> 00:44:15,320 viie sekundi jooksul, siis päris palju mõlemad tulid tagasi õigus 897 00:44:15,320 --> 00:44:16,380 umbes samal ajal. 898 00:44:16,380 --> 00:44:18,650 Nii et see ei olnud eriti sidunud. 899 00:44:18,650 --> 00:44:20,290 >> Aga proovime nüüd. 900 00:44:20,290 --> 00:44:22,370 OK, nii et me saime kaks protsessi. 901 00:44:22,370 --> 00:44:24,210 Jäta need on protsessi IDd. 902 00:44:24,210 --> 00:44:25,900 See saab olema vähe piinlik, kui me varisemine. 903 00:44:25,900 --> 00:44:31,340 904 00:44:31,340 --> 00:44:35,360 Teeme lihtsalt siia jääda ja oodata. 905 00:44:35,360 --> 00:44:37,090 >> Nii et üks neist peaks tulema tagasi pärast nagu - 906 00:44:37,090 --> 00:44:39,190 OK, nii et üks tuli tagasi. 907 00:44:39,190 --> 00:44:43,570 Aga miks ei ole teise üks tagasi tulla lihtsalt veel? 908 00:44:43,570 --> 00:44:44,389 Yep? 909 00:44:44,389 --> 00:44:49,280 >> Publik: server ei saa midagi teha kuigi see arvuti nii suur number. 910 00:44:49,280 --> 00:44:51,620 >> KEVIN Schmid: Õigus. 911 00:44:51,620 --> 00:44:55,395 Seega vastus oli lihtsalt, et server tõesti ei saa midagi teha, kui 912 00:44:55,395 --> 00:44:57,460 see on arvuti, et Fibonacci number. 913 00:44:57,460 --> 00:44:59,360 Nüüd ma lihtsalt sain kahte asja tagasi. 914 00:44:59,360 --> 00:45:03,210 Aga ma arvan, lihtsalt mõelda kood veidi rohkem, kuidas see töötab 915 00:45:03,210 --> 00:45:05,030 ja kõik. 916 00:45:05,030 --> 00:45:11,750 >> Nii et see funktsioon siin on kood, Ma ütlesin seda server käivitada, kui see 917 00:45:11,750 --> 00:45:14,100 saab uue sissetuleva taotluse. 918 00:45:14,100 --> 00:45:17,940 Nii see lihtsalt läheb jookseb läbi selle kogu koodi ja siis ta läheb minema 919 00:45:17,940 --> 00:45:21,120 Tagasi ürituse silmus ja seejärel jätkata kontrollib uusi sündmusi. 920 00:45:21,120 --> 00:45:23,670 Ühesõnaga, mida oleme toimub on server on 921 00:45:23,670 --> 00:45:25,080 kuulates uusi asju. 922 00:45:25,080 --> 00:45:28,070 Esimene inimene, kes küsib, mida 45 on. 923 00:45:28,070 --> 00:45:30,490 Me kasutasime seda koodi arvutada seda. 924 00:45:30,490 --> 00:45:33,420 See kood võtab umbes viis kuni kuue sekundi joosta. 925 00:45:33,420 --> 00:45:36,990 Siis läheme tagasi sündmuse loop ja uute taotluste. 926 00:45:36,990 --> 00:45:42,700 >> Nii et see on näide sellest, kuidas, kui sa on asju, mis on nn arvutama 927 00:45:42,700 --> 00:45:48,140 seotud, või kasutan palju arvutilingvistika, mitte võimu, vaid nagu on 928 00:45:48,140 --> 00:45:50,260 arvutusintensiivseid - 929 00:45:50,260 --> 00:45:54,080 Ma arvan, et üks asi, mida öelda, on see, et see funktsioon teeb täiesti, 930 00:45:54,080 --> 00:45:56,310 enamasti, üsna kasulik töö paremale. 931 00:45:56,310 --> 00:45:59,970 Kogu aeg, et callback funktsiooni töötamise ajal, see oli päris 932 00:45:59,970 --> 00:46:03,670 palju kulutavad suurema osa oma ajast lihtsalt computing et nda Fibonacci number. 933 00:46:03,670 --> 00:46:05,930 >> Aga meil oli ainult üks niit tegeleda. 934 00:46:05,930 --> 00:46:10,270 Apache mudel, kui kaks inimest esitas taotluse saada luiskama 45, me 935 00:46:10,270 --> 00:46:11,610 oleks kaks eri teemad. 936 00:46:11,610 --> 00:46:15,060 Ja siis operatsioonisüsteemi töö oleks olnud, või kasutaja tasemel 937 00:46:15,060 --> 00:46:18,660 kood, mis haldab niidid, poleks olnud viil, et üles 938 00:46:18,660 --> 00:46:23,060 CPU või isegi kui teil on olnud mitme protsessoriga, levitada neid ühtlaselt kogu protsessoriga 939 00:46:23,060 --> 00:46:26,130 et nad olid mõlemad viimistlus vähem samal ajal. 940 00:46:26,130 --> 00:46:31,120 >> Nii lihtsalt, et näidata, kuidas me saame sorteerida ning - ja see ei ole kokku täiuslik 941 00:46:31,120 --> 00:46:34,280 lahendus, kuid omamoodi kuidas saame tee siia tagasi tulla ja teha 942 00:46:34,280 --> 00:46:35,880 natuke parem. 943 00:46:35,880 --> 00:46:41,540 Niisiis, mida ma olen siin on programm nimega Luiskama C. Ja see põhiliselt kasutab 944 00:46:41,540 --> 00:46:45,690 veel üks sõlm moodulit nimetatakse Lapse Moodul. 945 00:46:45,690 --> 00:46:49,210 Nii et ma olen lisatud, et tipus lahke ja nagu ma teeksin nael hulka 946 00:46:49,210 --> 00:46:51,230 laps process.h või midagi. 947 00:46:51,230 --> 00:46:56,210 Nüüd on sellele CP muutuja kus on kõik minu funktsionaalsust. 948 00:46:56,210 --> 00:47:01,810 >> Nüüd, mida ma teen selle vastus käitleja Ma töötab selle programmi 949 00:47:01,810 --> 00:47:04,100 dot kärpida luiskama 45. 950 00:47:04,100 --> 00:47:06,820 Niisiis, mida ma olen teinud - ja ma lihtsalt välja astuma selle programmi 951 00:47:06,820 --> 00:47:07,620 natuke - 952 00:47:07,620 --> 00:47:11,060 on mul kirjutatud C programm, mis põhimõtteliselt arvutab 953 00:47:11,060 --> 00:47:12,630 nda Fibonacci number. 954 00:47:12,630 --> 00:47:15,960 Nii et siin on ainult programm, olen kirjutanud C, mis arvutab selle. 955 00:47:15,960 --> 00:47:19,040 Ma ei kompileerida ja võin joosta seda käsurida. 956 00:47:19,040 --> 00:47:22,150 Ja see saab arvutada 45. Fibonacci number. 957 00:47:22,150 --> 00:47:24,510 >> Nii märkate see lihtsalt võtab päris palju nii kaua. 958 00:47:24,510 --> 00:47:28,240 Ma ilmselt oleks võinud kasutada kriips 03 optimeerida või midagi sellist, 959 00:47:28,240 --> 00:47:31,050 aga ma tegin nagu korrapärane kompilaatori sätted. 960 00:47:31,050 --> 00:47:33,260 Ja ta prindib. 961 00:47:33,260 --> 00:47:36,830 >> Aga nüüd, mida ma omamoodi teen? 962 00:47:36,830 --> 00:47:39,800 Oh vabandust, vale faili. 963 00:47:39,800 --> 00:47:42,800 Nii ma seda sama kraami header kui enne. 964 00:47:42,800 --> 00:47:45,780 Siis ma seda cp.exec. 965 00:47:45,780 --> 00:47:49,460 Mis siis, et see saab teha, on see toimub programmi käivitada. 966 00:47:49,460 --> 00:47:51,960 Aga kuidas see toimib on see, et see ei kavatse ootama 967 00:47:51,960 --> 00:47:53,400 et programmi lõpuni. 968 00:47:53,400 --> 00:47:56,000 See lihtsalt põhimõtteliselt ütleb programmi käivitamiseks. 969 00:47:56,000 --> 00:47:58,700 Nii et põhimõtteliselt kirjuta seda arvesse käsureale liiki. 970 00:47:58,700 --> 00:48:02,350 >> Ja siis, kui sa oled teinud käivita see funktsioon. 971 00:48:02,350 --> 00:48:04,800 Nüüd me sellist saada seda kogu taastatud asja 972 00:48:04,800 --> 00:48:06,750 nagu me ei oodanud. 973 00:48:06,750 --> 00:48:08,530 Kas sellist mõtet? 974 00:48:08,530 --> 00:48:08,990 Yep? 975 00:48:08,990 --> 00:48:11,060 >> Publik: [kuuldamatu]? 976 00:48:11,060 --> 00:48:13,610 >> KEVIN Schmid: Nii see tegelikult avada uue protsess seda teha. 977 00:48:13,610 --> 00:48:19,310 Nii et see on tegelikult mõnes mõttes, kurja, ei super paha, kuid see on 978 00:48:19,310 --> 00:48:22,990 oluline märkida, et see on selline läheb tagasi, ühelt poolt Apache 979 00:48:22,990 --> 00:48:26,450 mudel, kus me niidid ja protsesside iga taotluse või 980 00:48:26,450 --> 00:48:29,280 protsesside iga taotluse. 981 00:48:29,280 --> 00:48:32,090 Nii et see on omamoodi analoogne millises Apache teeb. 982 00:48:32,090 --> 00:48:35,110 Mõnel juhul on see lihtsalt kasutada uute niit, mis on veidi rohkem valgust 983 00:48:35,110 --> 00:48:39,040 kaal kui protsess, kuid Apache võiks lõpuks hargnevate uus protsess 984 00:48:39,040 --> 00:48:43,370 mis on selline, mida me teeme siin kaudselt, tehes dot kaldkriipsuga luiskama 45. 985 00:48:43,370 --> 00:48:48,690 >> Ja siis sel juhul me sellist tekkida Samal kulud protsesse. 986 00:48:48,690 --> 00:48:50,710 Nii et see on lihtsalt üks asi, mida sa teha saad. 987 00:48:50,710 --> 00:48:52,600 Aga lihtsalt näidata selline jooksmine. 988 00:48:52,600 --> 00:48:57,120 Ja see jutt on lihtsalt tõesti suunatud esitades Sellised programmid nagu 989 00:48:57,120 --> 00:49:00,710 võimalus näidata erinevaid vaatenurki kuidas kavandada servereid niimoodi. 990 00:49:00,710 --> 00:49:08,300 Nii see käib, ja siis nüüd kui ma see uuesti, sain kaks protsessi IDd. 991 00:49:08,300 --> 00:49:10,320 >> Lähme räägime asjad meelde. 992 00:49:10,320 --> 00:49:11,980 Nii teate, et nad on järk-järgult. 993 00:49:11,980 --> 00:49:12,700 See on lahe. 994 00:49:12,700 --> 00:49:15,140 Sest see oli 27.122 enne. 995 00:49:15,140 --> 00:49:18,580 Aga teate nüüd, nad tulid tagasi umbes sama aeg. 996 00:49:18,580 --> 00:49:23,960 >> Ja nüüd, hea küsimus küsida Miks see nii on, kelle töö 997 00:49:23,960 --> 00:49:27,590 oli see nüüd omamoodi teha neid asju omamoodi mängida õiglane iga 998 00:49:27,590 --> 00:49:31,350 teised on need kaks juhtumeid dot kaldkriipsuga luiskama 45 et ma jooksin 999 00:49:31,350 --> 00:49:32,880 või et sõlm jooksis? 1000 00:49:32,880 --> 00:49:36,940 Kes omamoodi muudab õiglane, et nad mõlemad saada omamoodi tasakaalustada tööaeg? 1001 00:49:36,940 --> 00:49:42,900 1002 00:49:42,900 --> 00:49:44,220 >> Publik: [kuuldamatu]. 1003 00:49:44,220 --> 00:49:44,620 >> KEVIN Schmid: Jah. 1004 00:49:44,620 --> 00:49:49,740 Ühesõnaga, kui ma dot kaldkriipsuga luiskama 45 või midagi sellist, nüüd on 1005 00:49:49,740 --> 00:49:53,750 objekti kuni operatsioonisüsteemi käepide runtime nende programmide. 1006 00:49:53,750 --> 00:49:56,920 Ja nüüd ta saab ajastada neid erinevatel protsessoriga või see 1007 00:49:56,920 --> 00:49:58,330 saab ajastada neid. 1008 00:49:58,330 --> 00:50:01,870 Seda saab viilutada aeg, et üks CPU läheb või et nad saavad 1009 00:50:01,870 --> 00:50:03,330 sõitma ühe protsessori. 1010 00:50:03,330 --> 00:50:05,620 Nii et see idee, et. 1011 00:50:05,620 --> 00:50:07,220 Kas see mõttekas kõik? 1012 00:50:07,220 --> 00:50:10,950 Nüüd Sõlme ei ole tegelikult mängib osa jagamisel nende ülesannete täitmisel. 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 >> Nii et peaaegu ta näiteid. 1016 00:50:17,840 --> 00:50:23,370 Tahtsin näidata, veel üks asi sest palju see on siiani olnud 1017 00:50:23,370 --> 00:50:27,350 mitte täiesti super praktiline teatud juhtudel. 1018 00:50:27,350 --> 00:50:30,970 Ma kujutan ette, tulen koju pärast seda rääkida ja midagi ja öelda, nagu, 1019 00:50:30,970 --> 00:50:35,710 noh, ma selline välja sain, et rääkida, et Võin teha Fibonacci server 1020 00:50:35,710 --> 00:50:37,360 minu lõplik projekt. 1021 00:50:37,360 --> 00:50:40,770 Nii et siin on justkui üks näide mis loodetavasti saab - 1022 00:50:40,770 --> 00:50:44,620 võib-olla mitte, aga võib-olla - veidi rohkem omamoodi seotud lõpliku projekti ja 1023 00:50:44,620 --> 00:50:46,440 mõtlemine asjad niimoodi. 1024 00:50:46,440 --> 00:50:48,870 >> Nii et see on chat.js. 1025 00:50:48,870 --> 00:50:52,290 Nii et see on selline nagu mõned proovi serveripoolne kood, mida võiks kasutada, et 1026 00:50:52,290 --> 00:50:55,700 luua väike chat server nagu olete näinud 1027 00:50:55,700 --> 00:50:56,630 Facebook Chat või mis iganes. 1028 00:50:56,630 --> 00:50:59,990 Nii et ma ei ütle, et see on nagu Facebook Vestlus, kuid see on selline 1029 00:50:59,990 --> 00:51:06,230 nagu hea - võib-olla ei ole hea, kuid võib-olla hea - lähtepunkt chat 1030 00:51:06,230 --> 00:51:08,560 server oma veebilehel lõpliku projekti. 1031 00:51:08,560 --> 00:51:11,040 Seega vaatame, mida ta teeb. 1032 00:51:11,040 --> 00:51:15,500 >> Nii et me saame selle eriline asi tipus, see var SIO 1033 00:51:15,500 --> 00:51:17,050 võrdub nõuavad Socket.IO. 1034 00:51:17,050 --> 00:51:20,280 Nii et see on teine ​​asi, et see ei tegelikult tulevad komplekteeritud 1035 00:51:20,280 --> 00:51:22,300 Sõlme kuid võite installida. 1036 00:51:22,300 --> 00:51:23,480 See sõlm moodul. 1037 00:51:23,480 --> 00:51:25,670 Nii et see on nagu mõned laiendamine sõlme. 1038 00:51:25,670 --> 00:51:29,220 >> SocketIO on tegelikult väga omamoodi lahe. 1039 00:51:29,220 --> 00:51:32,550 See on abstraktsioon, mis põhimõtteliselt mida see on, on see võimaldab teil 1040 00:51:32,550 --> 00:51:35,770 on see vool side vahel web 1041 00:51:35,770 --> 00:51:39,430 brauser ja veebiserver. 1042 00:51:39,430 --> 00:51:45,250 Nii et enamasti seni oleme olnud need väga kiire üks sekund või kaks 1043 00:51:45,250 --> 00:51:48,790 teine ​​suhtlemise web brauser ja veebiserver. 1044 00:51:48,790 --> 00:51:53,310 Nii et see on põhimõtteliselt minna google.com, saada kraami, saatke see tagasi, ja siis 1045 00:51:53,310 --> 00:51:53,770 me oleme valmis. 1046 00:51:53,770 --> 00:51:56,560 Me ei räägi enam, kuni kasutaja liigid midagi muud. 1047 00:51:56,560 --> 00:52:01,090 >> Aga mida Socket.IO jms liiki asju - ja SocketIO on tegelikult üks 1048 00:52:01,090 --> 00:52:03,940 asjad, mis on ehitatud nii WebSocket mis on omamoodi saadaval 1049 00:52:03,940 --> 00:52:06,440 osana HTML5 - 1050 00:52:06,440 --> 00:52:09,620 mis võimaldab teil on see pidev dialoog. 1051 00:52:09,620 --> 00:52:13,990 Ja see on väga kasulik chat server selline asi, sest see on 1052 00:52:13,990 --> 00:52:17,390 selline nagu pidev dialoog mõnes mõttes, sest kui sa oled jututoas 1053 00:52:17,390 --> 00:52:21,540 kellegagi, saate nüüd lihtsalt saata sõnumi alla toru ja seejärel 1054 00:52:21,540 --> 00:52:23,940 server saab saata sõnumi alla toru teisele isikule oled 1055 00:52:23,940 --> 00:52:24,520 vestlemas. 1056 00:52:24,520 --> 00:52:26,903 Ja siis võib olla selle vahetada niimoodi. 1057 00:52:26,903 --> 00:52:30,590 1058 00:52:30,590 --> 00:52:32,850 >> Nii et omamoodi mida SocketIO on hea. 1059 00:52:32,850 --> 00:52:38,400 Põhjusel, et SocketIO kasutab WebSockets üks asi on see, et 1060 00:52:38,400 --> 00:52:43,980 Lisaks lihtsalt vana WebSockets, Samuti ei teatud trikke põhiliselt 1061 00:52:43,980 --> 00:52:45,610 muudavad brauser ühilduvad. 1062 00:52:45,610 --> 00:52:50,040 Nii brausereid nagu Internet Explorer Kahjuks ei toeta WebSockets 1063 00:52:50,040 --> 00:52:50,810 õigus karbist. 1064 00:52:50,810 --> 00:52:55,290 Nii ta kasutab mõni muu lahe puhas asjad Adobe Flash, mis võimaldab 1065 00:52:55,290 --> 00:52:57,170 teil on rist brauseri tugi. 1066 00:52:57,170 --> 00:52:58,800 Nii et see on tõesti kasulik. 1067 00:52:58,800 --> 00:53:02,440 >> Ja tegelikult, ma tean, et ma olen selline töötab aeg siin, kuid CS50 1068 00:53:02,440 --> 00:53:08,490 Arutle, kas te olete kunagi näinud midagi nagu, ma ei tea, tühjaks, ja nii on 1069 00:53:08,490 --> 00:53:11,030 vastates postitus või midagi niimoodi, et funktsioon? 1070 00:53:11,030 --> 00:53:12,250 See SocketIO. 1071 00:53:12,250 --> 00:53:15,580 Nii et kui keegi hakkab kirjutama arutada kasti teha vastus või 1072 00:53:15,580 --> 00:53:20,040 midagi, kuid teie brauser ei mis kutsutud SocketIO kiirgab mingi 1073 00:53:20,040 --> 00:53:22,660 sündmus, mis ütleb, et keegi vastates sellele ametikohale. 1074 00:53:22,660 --> 00:53:26,110 >> Siis server ütleb, OK, Mida ma pean tegema? 1075 00:53:26,110 --> 00:53:29,270 Noh nüüd ma pean need teised poisid kes on CS50 Arutle vaadates 1076 00:53:29,270 --> 00:53:31,170 selles pärast, et keegi vastates. 1077 00:53:31,170 --> 00:53:34,190 Nii et omamoodi mida SocketIO on hea, seda jätkuvat laadi 1078 00:53:34,190 --> 00:53:35,930 oja dialoogi. 1079 00:53:35,930 --> 00:53:37,250 OK. 1080 00:53:37,250 --> 00:53:40,060 >> Niisiis, mida ma olen siin - ja me oleme lihtsalt kavatse ignoreerida ühendused massiivi 1081 00:53:40,060 --> 00:53:41,390 natuke aega - 1082 00:53:41,390 --> 00:53:43,080 mida ma teen on ma veel kuulata. 1083 00:53:43,080 --> 00:53:46,880 Nii see on lihtsalt viis, kuidas Socket.IO on öeldes kuulame selle port. 1084 00:53:46,880 --> 00:53:50,060 Ja siis ma teen seda ühendust. 1085 00:53:50,060 --> 00:53:53,360 Nii et lihtsalt põhimõtteliselt Socket IO viis öelda, kui oleme saanud 1086 00:53:53,360 --> 00:53:55,840 ühendus, ma tahan, et sa käivitada koodi. 1087 00:53:55,840 --> 00:53:59,870 >> Ja teate, mis selle asemel, rec ja res läbinud seal mul Socket. 1088 00:53:59,870 --> 00:54:03,260 Ja see Socket idee on põhimõtteliselt see asi, mida saab kirjutada ja lugeda 1089 00:54:03,260 --> 00:54:05,750 sellest on kasutaja Sõnumite võimalik. 1090 00:54:05,750 --> 00:54:10,700 Ja kirjad, mida saadaks ei lähe läbi, et pesa. 1091 00:54:10,700 --> 00:54:12,140 Kas see on mõtet? 1092 00:54:12,140 --> 00:54:14,490 Nii et see on see jätkuvalt asi. 1093 00:54:14,490 --> 00:54:17,820 >> Niisiis, mida ma teha, on Kutsun Socket.emit. 1094 00:54:17,820 --> 00:54:20,330 Ja paisata võtab päris palju kaks argumenti. 1095 00:54:20,330 --> 00:54:24,100 Esimene argument on string lihtsalt esindavad tüüpi 1096 00:54:24,100 --> 00:54:25,270 asi, mida sa kiirgavad. 1097 00:54:25,270 --> 00:54:28,120 Nii sel juhul, ma olen kasutus see string uus sõnum. 1098 00:54:28,120 --> 00:54:32,670 Ja see on lihtsalt põhimõtteliselt öelda, et tüüpi see asi, mida ma olen 1099 00:54:32,670 --> 00:54:34,750 saatmine on uus sõnum. 1100 00:54:34,750 --> 00:54:38,460 Nii saate kuulata teatud tüüpi nagu uus sõnum või mis iganes 1101 00:54:38,460 --> 00:54:39,960 abil täpiga. 1102 00:54:39,960 --> 00:54:44,570 >> Nii ühendus ja kasutaja sinna saata, kui te vaatate, kui me nimetame täpp, 1103 00:54:44,570 --> 00:54:48,150 need on ka teisi stringe, mis esindavad tüüpi kasutaja sõnumeid. 1104 00:54:48,150 --> 00:54:52,060 Nii et see on põhimõtteliselt saab olla see emit üks neist sõnumi tüüpi ning 1105 00:54:52,060 --> 00:54:55,520 siis midagi vastuseks üks neist sõnumi tüübi 1106 00:54:55,520 --> 00:54:57,640 >> Nii et ma olen kiirgavad seda uut sõnumit. 1107 00:54:57,640 --> 00:55:00,540 Me ignoreerida connections.push teine. 1108 00:55:00,540 --> 00:55:03,360 Aga siis ma ütlen, Socket.on kasutaja saadetud. 1109 00:55:03,360 --> 00:55:07,540 Nüüd see on nagu siis, kui kasutaja saadab mulle sõnumi, ma tahan 1110 00:55:07,540 --> 00:55:09,240 käivitada see kood. 1111 00:55:09,240 --> 00:55:12,080 Ja teate, et anonüümne funktsioon võtab selle muutuja 1112 00:55:12,080 --> 00:55:16,300 nimetatakse andmeid, mis on põhiliselt läheb on kasutaja sõnumit. 1113 00:55:16,300 --> 00:55:20,700 >> Nüüd lähme jutt umbes ühendused massiivi. 1114 00:55:20,700 --> 00:55:24,590 Nii et see on mõeldud vestlus kliendiga kus põhimõtteliselt kõik on kuidagi sisse 1115 00:55:24,590 --> 00:55:25,950 Samal jututuba. 1116 00:55:25,950 --> 00:55:29,640 Ühesõnaga, mida me peame hoidma ümber on mingi massiivi, et põhimõtteliselt 1117 00:55:29,640 --> 00:55:33,170 esindab kõiki inimesi jututoas sisse Mõnes mõttes, kui see on mõistlik. 1118 00:55:33,170 --> 00:55:33,340 Eks ole? 1119 00:55:33,340 --> 00:55:37,190 Sest meil on vaja teada, kes need mehed on, et saaksime saata neile sõnumeid 1120 00:55:37,190 --> 00:55:39,140 et teised inimesed Kirjuta meile. 1121 00:55:39,140 --> 00:55:44,440 >> Niisiis, mida see kood teeb, kui kasutaja saadab sõnumi - see tüüp 1122 00:55:44,440 --> 00:55:45,300 sündmus - 1123 00:55:45,300 --> 00:55:47,120 me kasutada seda koodi. 1124 00:55:47,120 --> 00:55:51,240 Ja mida me teeme, on meil jookseb läbi selle massiiv, et oleme kutsutud ühendused. 1125 00:55:51,240 --> 00:55:54,390 Ja päris palju iga ühendus välja arvatud see, mis on meie oma, see on 1126 00:55:54,390 --> 00:55:59,520 mida see kood ütleb, saadame uue sõnumi, et kinnitada sõnumi 1127 00:55:59,520 --> 00:56:01,210 teavet. 1128 00:56:01,210 --> 00:56:04,880 >> Nii et kui te märkate siin, mida ma tegin, kui kasutaja tegelikult teeb uue 1129 00:56:04,880 --> 00:56:08,560 ühendus on mul lisatud koos JavaScript.push meetod on see 1130 00:56:08,560 --> 00:56:12,100 põhimõtteliselt lihtsalt öeldes nagu lisada et Socket kui väärtuse 1131 00:56:12,100 --> 00:56:13,900 Meie ühendused massiivi. 1132 00:56:13,900 --> 00:56:20,560 Nüüd, kui see kood töötab, siis on see Kirjuta asju nende konkreetsete 1133 00:56:20,560 --> 00:56:22,020 ühendusi. 1134 00:56:22,020 --> 00:56:26,980 Nii et see võib olla hea lähtepunkt tegemise chat server 1135 00:56:26,980 --> 00:56:28,250 või midagi sarnast. 1136 00:56:28,250 --> 00:56:33,315 >> Ja selline lahe asi on see, et koodi, mis sa näed siin nagu on ja 1137 00:56:33,315 --> 00:56:36,390 kiirgama ja asju, mis on sama objekti JavaScript kood, mida oleks 1138 00:56:36,390 --> 00:56:39,260 kirjutada brauser suhelda with the server. 1139 00:56:39,260 --> 00:56:42,480 Nii et miks SocketIO on selline puhas ja kasulikud nii. 1140 00:56:42,480 --> 00:56:45,680 1141 00:56:45,680 --> 00:56:49,250 >> Oh ja veel üks asi, reaalne kiire. 1142 00:56:49,250 --> 00:56:55,970 Oli CS50 lõplik projekt mullu et põhimõtteliselt rakendada chat 1143 00:56:55,970 --> 00:56:57,840 server Node.js. 1144 00:56:57,840 --> 00:57:01,350 Ma arvan, et see on Harvardchats.org aga ma ei ole - 1145 00:57:01,350 --> 00:57:02,940 OK. 1146 00:57:02,940 --> 00:57:06,190 Ma ei tea, mida URL on, kuid Võin saata see välja hiljem. 1147 00:57:06,190 --> 00:57:09,260 Aga see on selline lahe mis saate teha Node.js. 1148 00:57:09,260 --> 00:57:14,680 >> Nii et ma loodan, et üldiselt kutid on heas mõttes mida Node.js kasulik 1149 00:57:14,680 --> 00:57:17,870 ja kuidas sa võiksid olla kohaldada oma lõpliku projekti. 1150 00:57:17,870 --> 00:57:21,050 Ma saadan mõned rohkem vahendid koos selle. 1151 00:57:21,050 --> 00:57:23,170 Ja aitäh, et tulite. 1152 00:57:23,170 --> 00:57:23,610 Aitäh. 1153 00:57:23,610 --> 00:57:27,168 >> [APLAUS]