1 00:00:00,000 --> 00:00:08,350 2 00:00:08,350 --> 00:00:09,710 >> KEVIN SCHMID: Здравейте всички. 3 00:00:09,710 --> 00:00:12,640 Добре дошли на семинара CS50 на Node.js. 4 00:00:12,640 --> 00:00:13,955 Моето име е Кевин. 5 00:00:13,955 --> 00:00:15,580 Аз съм CS50 TF. 6 00:00:15,580 --> 00:00:17,650 И аз съм нещо като наистина развълнуван за този семинар. 7 00:00:17,650 --> 00:00:20,430 Мисля Node.js е много готино. 8 00:00:20,430 --> 00:00:24,200 Надявам се, че този семинар може да се използва като добър, предполагам, трамплин за 9 00:00:24,200 --> 00:00:26,380 някои от вашите проекти, ако окончателните вие сте заинтересовани в използването на 10 00:00:26,380 --> 00:00:27,630 нещо като Node.js. 11 00:00:27,630 --> 00:00:29,770 12 00:00:29,770 --> 00:00:33,320 >> Ще вид начало на семинара на разстояние от просто говоря за малко на 13 00:00:33,320 --> 00:00:36,970 вид на фон мащабируемост перспективи на Node.js, а след това 14 00:00:36,970 --> 00:00:39,240 ние ще се премести в някои код примери. 15 00:00:39,240 --> 00:00:42,340 И аз ще трябва кода на уеб сайт, и можете да погледнете кода. 16 00:00:42,340 --> 00:00:45,475 И след края на семинара, ще сортирате на беседа за това как можете да настроите Node.js 17 00:00:45,475 --> 00:00:48,220 на вашия компютър. 18 00:00:48,220 --> 00:00:48,710 >> OK. 19 00:00:48,710 --> 00:00:49,760 Така че нека да започнем. 20 00:00:49,760 --> 00:00:53,700 Така че предполагам, аз просто искам да се говори за уеб сървъри, наистина, на първо място. 21 00:00:53,700 --> 00:00:59,730 И за да започне тази дискусия, аз основно има диаграма, която е от 22 00:00:59,730 --> 00:01:04,269 учебник, използван за CS61, които основно показва взаимодействието 23 00:01:04,269 --> 00:01:08,510 между процес на клиент, като вашия уеб браузър или като вашата цел клиент или 24 00:01:08,510 --> 00:01:11,340 нещо такова, и уеб сървър. 25 00:01:11,340 --> 00:01:15,150 Така че този вид изглежда подобно на картината, която видях в лекция на тема 26 00:01:15,150 --> 00:01:19,270 Сряда, където основно имаме някои процес клиент като Google Chrome. 27 00:01:19,270 --> 00:01:22,980 >> И след това стъпка едно е клиент изпраща заявка. 28 00:01:22,980 --> 00:01:27,510 Така че това може да бъде нещо като добре нека посетите, аз не знам, CS50.net. 29 00:01:27,510 --> 00:01:29,320 Така че ние издаваме това искане. 30 00:01:29,320 --> 00:01:34,280 И дали някой си спомня името на протокола, който определя как 31 00:01:34,280 --> 00:01:35,610 Искането трябва да бъде структурирана? 32 00:01:35,610 --> 00:01:36,382 Да. 33 00:01:36,382 --> 00:01:37,650 >> ПУБЛИКАТА: [недоловим]. 34 00:01:37,650 --> 00:01:38,150 >> KEVIN SCHMID: Точно така. 35 00:01:38,150 --> 00:01:40,100 Така че това е като HTTP, нали? 36 00:01:40,100 --> 00:01:44,720 Така че основно спецификацията за това как че това искане трябва действително да бъдат определени 37 00:01:44,720 --> 00:01:47,450 от, тъй като в края на деня, това искане е наистина точно като 38 00:01:47,450 --> 00:01:50,240 низ, който в общи линии казва, че аз искам това. 39 00:01:50,240 --> 00:01:53,580 И спецификацията за това е HTTP. 40 00:01:53,580 --> 00:01:55,270 Така че това е като протокол. 41 00:01:55,270 --> 00:01:57,920 >> Така че след това сървърът получи това искане. 42 00:01:57,920 --> 00:02:01,610 Така че вие ​​имате инсталиран уеб сървър в CS50 уреда. 43 00:02:01,610 --> 00:02:02,460 Това е Apache. 44 00:02:02,460 --> 00:02:06,230 И тази седмица, когато работите върху проблем настроите седем, вие всъщност ще се работи 45 00:02:06,230 --> 00:02:08,160 с този уеб сървър. 46 00:02:08,160 --> 00:02:12,380 Така че сървърът получи това искане, и След това тя трябва да вид надраскате 47 00:02:12,380 --> 00:02:15,090 главата и да кажа като добре какво да правя с това? 48 00:02:15,090 --> 00:02:20,060 >> Така че на базата на това, което тя реши да се направи, след това тя може да се наложи да се свържете с някакъв вид 49 00:02:20,060 --> 00:02:20,730 на ресурсите. 50 00:02:20,730 --> 00:02:23,700 И този ресурс може да бъде много различни неща. 51 00:02:23,700 --> 00:02:26,810 От една страна, тя може да бъде само като статичен HTML файл. 52 00:02:26,810 --> 00:02:29,820 Така че това може да бъде само като някаква HTML, че е като за 53 00:02:29,820 --> 00:02:31,100 личния си уебсайт. 54 00:02:31,100 --> 00:02:35,360 Тя може да бъде статичен файл като изображение или като филм, който имате. 55 00:02:35,360 --> 00:02:37,660 Тя дори може да се наложи да говоря на някаква база 56 00:02:37,660 --> 00:02:39,530 като база данни MySQL. 57 00:02:39,530 --> 00:02:43,910 Така че това не винаги се налага да комуникират с ресурс, но в 58 00:02:43,910 --> 00:02:45,700 някои случаи тя може. 59 00:02:45,700 --> 00:02:47,800 >> Така че след това, което ще направи след това е, че ще 60 00:02:47,800 --> 00:02:49,430 изпрати обратно отговора. 61 00:02:49,430 --> 00:02:53,130 И отговор за това е също е посочено от HTTP. 62 00:02:53,130 --> 00:02:54,830 Така че след това клиентът може да я получи. 63 00:02:54,830 --> 00:02:56,740 Тя може да го разкъсат и да го обработи. 64 00:02:56,740 --> 00:03:00,900 И тогава можете да получите на уеб страница като Google или CS50.net или 65 00:03:00,900 --> 00:03:02,240 каквото и да отиде. 66 00:03:02,240 --> 00:03:03,100 OK? 67 00:03:03,100 --> 00:03:06,080 >> Това е основният че взаимодействието ние ще трябва да се занимават с теб. 68 00:03:06,080 --> 00:03:08,770 И ние почти ще бъде фокусиране върху тази част от 69 00:03:08,770 --> 00:03:10,640 взаимодействие на сървъра. 70 00:03:10,640 --> 00:03:10,990 OK. 71 00:03:10,990 --> 00:03:12,210 Cool. 72 00:03:12,210 --> 00:03:15,500 Някой да има някакви въпроси досега? 73 00:03:15,500 --> 00:03:17,720 OK. 74 00:03:17,720 --> 00:03:22,430 >> Така че, както казахме, на уеб сървъра получава този HTTP заявка и след това издава тази 75 00:03:22,430 --> 00:03:24,760 HTTP отговор. 76 00:03:24,760 --> 00:03:29,100 И както говорихме по-рано, CS50 уред уеб сървър е Apache. 77 00:03:29,100 --> 00:03:32,490 Така че, когато вие работите върху P определя седем, ти започваш да се работи с 78 00:03:32,490 --> 00:03:34,120 Apache уеб сървър. 79 00:03:34,120 --> 00:03:37,890 Вие никога не ще трябва да наистина работят с Apache директно твърде много. 80 00:03:37,890 --> 00:03:41,920 Някак конфигурирате Apache малко когато укажете на виртуални хостове или 81 00:03:41,920 --> 00:03:44,970 на V домакините, и ние ще се до това малко. 82 00:03:44,970 --> 00:03:50,620 >> Но общо взето, на Apache уеб сървър настроена за работа с PHP вид 83 00:03:50,620 --> 00:03:51,730 на изваждането му от кутията. 84 00:03:51,730 --> 00:03:56,170 Така че това, което наистина се случва е, когато отидеш на един от уебсайтовете си, като, да речем, 85 00:03:56,170 --> 00:04:00,360 местно index.php домакин наклонена черта или нещо подобно, е вашият браузър изпраща че 86 00:04:00,360 --> 00:04:04,330 поискване, а след това Apache седи има и цифри, за да правите с него. 87 00:04:04,330 --> 00:04:08,840 И тази дейност е да се изпълни този код в index.php и 88 00:04:08,840 --> 00:04:11,330 след това го изпрати обратно. 89 00:04:11,330 --> 00:04:15,640 Така че там е това. 90 00:04:15,640 --> 00:04:16,980 Това е нещо като говорихме за това. 91 00:04:16,980 --> 00:04:21,990 Така тя може да служи само статичен файл или работят с някои PHP код и след издаване 92 00:04:21,990 --> 00:04:23,510 реакцията. 93 00:04:23,510 --> 00:04:27,670 >> Така след общ въпрос, че може да дойде нагоре е добре, как да се справят наистина 94 00:04:27,670 --> 00:04:31,750 с като множество потребители в същото време? 95 00:04:31,750 --> 00:04:36,930 Така че представете си, ако сте написването на уеб сървър, ако сте имали един уеб сървър, който 96 00:04:36,930 --> 00:04:39,900 Вие се опитвате да напишете нещо в като C или нещо подобно, 97 00:04:39,900 --> 00:04:45,150 По принцип трябва да се мисли за това как там би могло да бъде някакъв вид на код, който 98 00:04:45,150 --> 00:04:49,330 ще получи искане, но след това тя трябва да направи всичко това работата по него. 99 00:04:49,330 --> 00:04:53,060 Той може да има, например, се свържете с база данни или нещо подобно. 100 00:04:53,060 --> 00:04:53,300 Нали така? 101 00:04:53,300 --> 00:04:56,010 И след това ще направи този вид на обработка и тогава 102 00:04:56,010 --> 00:04:57,060 изпраща обратно отговора. 103 00:04:57,060 --> 00:04:58,950 Така че това е като голямата Преглед на ниво. 104 00:04:58,950 --> 00:05:04,210 >> Но това не е веднага ясно как ви мога да го направя така, че двама души или 105 00:05:04,210 --> 00:05:09,040 дори 1000 души биха могли да работят с вашата уеб сървър в същото време. 106 00:05:09,040 --> 00:05:14,880 Така че решението, че Apache използва се нарича нишки или процеси. 107 00:05:14,880 --> 00:05:16,770 Така че може би сте чували за тези термини и преди. 108 00:05:16,770 --> 00:05:22,190 Всичко е наред, ако не сте, но просто мисля, за нишки или процеси, като начини за 109 00:05:22,190 --> 00:05:26,290 операционна система или потребителска програма или нещо подобно или на уеб сървър 110 00:05:26,290 --> 00:05:28,810 някак да се изпълни многократно неща наведнъж. 111 00:05:28,810 --> 00:05:31,760 Така че може да сте чували понятието като нишки на изпълнение. 112 00:05:31,760 --> 00:05:34,140 Така че това е нещо като сте сортиране на мултитаскинг. 113 00:05:34,140 --> 00:05:37,710 >> И ако сте виждали върху кутията на вашия лаптоп, или нещо такова, 114 00:05:37,710 --> 00:05:43,040 многожилен, какво можете да направите, е да можеш тече два различни теми за различен 115 00:05:43,040 --> 00:05:46,700 части на процесора, така че те могат всъщност се случи в същото време. 116 00:05:46,700 --> 00:05:48,100 Така че това е наистина мощен. 117 00:05:48,100 --> 00:05:52,270 И това е вид на Apache решение на този проблем. 118 00:05:52,270 --> 00:05:57,900 >> Така че има нещо като някакви проблеми с този подход все пак? 119 00:05:57,900 --> 00:05:59,870 Така че аз предполагам, че вид на тях пише там. 120 00:05:59,870 --> 00:06:03,440 Но и двете от тях вид използва много памет. 121 00:06:03,440 --> 00:06:07,490 Това е много скъпо да се създаде нишка или процес. 122 00:06:07,490 --> 00:06:11,750 >> И част от мотивите е, че само като, когато сте стартирали програма C 123 00:06:11,750 --> 00:06:15,090 като вашия основен и след това, че на повикванията друга функция, която има 124 00:06:15,090 --> 00:06:16,520 някакъв вид на купчина. 125 00:06:16,520 --> 00:06:19,910 Така теми също се нуждаят от съвсем отделна купчина, която 126 00:06:19,910 --> 00:06:21,220 може да бъде доста голям. 127 00:06:21,220 --> 00:06:25,170 И ако можете да си представите като тон на потребители на вашия сайт, вие ще трябва 128 00:06:25,170 --> 00:06:26,280 много различни теми. 129 00:06:26,280 --> 00:06:28,230 Това е много купчини, за да управляват и поддържат. 130 00:06:28,230 --> 00:06:31,280 Така че това е голям разход на памет. 131 00:06:31,280 --> 00:06:35,650 >> И тогава, също така, нека кажем, че имате само един CPU, или нека да кажем, че имате 132 00:06:35,650 --> 00:06:38,460 повече теми, отколкото трябва тези multicores. 133 00:06:38,460 --> 00:06:38,730 Нали така? 134 00:06:38,730 --> 00:06:43,280 Така че нека да кажем, че имаше 10 теми и сте имали само пет процесори. 135 00:06:43,280 --> 00:06:46,260 Можете вид трябва да направя това нещо, където превключвате между ток 136 00:06:46,260 --> 00:06:49,090 едно, че е ход, тъй като не може да работи на всички 10 наведнъж. 137 00:06:49,090 --> 00:06:50,980 И това се нарича превключване на контекста. 138 00:06:50,980 --> 00:06:54,260 И този термин всъщност има няколко различни контексти, но нека просто 139 00:06:54,260 --> 00:06:56,620 мисля за него като за превключване между две нишки. 140 00:06:56,620 --> 00:06:59,730 Това може да бъде доста скъпо, защото основно това, което трябва да направите вие ​​е 141 00:06:59,730 --> 00:07:03,340 Трябва да спрем това, което правиш, да съхраните състояние, че играенето на конци, и 142 00:07:03,340 --> 00:07:05,440 След това преминете към някъде другаде. 143 00:07:05,440 --> 00:07:09,420 >> Същото прави и всеки вид видят мотивация защо теми и 144 00:07:09,420 --> 00:07:12,030 процеси, могат да бъдат малко обемисти? 145 00:07:12,030 --> 00:07:13,840 И си имам един въпрос? 146 00:07:13,840 --> 00:07:14,376 OK. 147 00:07:14,376 --> 00:07:15,070 Cool. 148 00:07:15,070 --> 00:07:18,090 Някой да има някакви въпроси? 149 00:07:18,090 --> 00:07:19,620 OK. 150 00:07:19,620 --> 00:07:26,720 >> Така че, ако ние се върнем назад за секунда, има нещо като 151 00:07:26,720 --> 00:07:30,350 наблюдение, което можем да направим за много уеб приложения. 152 00:07:30,350 --> 00:07:34,810 И това е наистина, че много от тях всъщност не го прави много по-полезен 153 00:07:34,810 --> 00:07:37,140 работят вътре на нишка. 154 00:07:37,140 --> 00:07:41,170 Така е някой започна на P определя седем изобщо? 155 00:07:41,170 --> 00:07:45,650 Значи искаш да се опише, може би някои от частите? 156 00:07:45,650 --> 00:07:47,850 Работили ли сте за влизане или нещо подобно? 157 00:07:47,850 --> 00:07:49,330 >> Публиката: Не. 158 00:07:49,330 --> 00:07:49,780 >> KEVIN SCHMID: OK. 159 00:07:49,780 --> 00:07:50,150 Няма нищо. 160 00:07:50,150 --> 00:07:50,900 Извинете. 161 00:07:50,900 --> 00:07:55,790 Но в основата си, в комплекта P, вие сте Ще се направи много нещо 162 00:07:55,790 --> 00:07:59,760 заявки към база данни, за да получите някои информация от тази база данни. 163 00:07:59,760 --> 00:08:03,330 И какъв е вашият код ще се прави, какво, че Apache процес или 164 00:08:03,330 --> 00:08:06,030 че Apache нишка ще се прави докато той трябва да се свърже с 165 00:08:06,030 --> 00:08:08,990 база данни е, че е нещо като ще бъде седи там и това ще бъде 166 00:08:08,990 --> 00:08:12,130 в очакване на базата данни, за да отговори. 167 00:08:12,130 --> 00:08:16,290 >> Сега, че не може да звучи като че голяма се справят, тъй като базата данни е на вашия 168 00:08:16,290 --> 00:08:18,240 CS50 уред, нали? 169 00:08:18,240 --> 00:08:22,930 Но има някаква мрежа латентност там, защото сега в интернет 170 00:08:22,930 --> 00:08:26,830 сървъра трябва да издаде своето собствено искане да базата данни да комуникира с 171 00:08:26,830 --> 00:08:29,520 база данни и след това да се получи, че информация обратно. 172 00:08:29,520 --> 00:08:33,190 Така че сега това е като добре ме чакай, аз съм Ще отида да взема нещо от 173 00:08:33,190 --> 00:08:35,770 база данни и след това да има много чакане става. 174 00:08:35,770 --> 00:08:36,870 Това прави ли смисъл? 175 00:08:36,870 --> 00:08:38,580 >> А за някои неща, че не е толкова лошо. 176 00:08:38,580 --> 00:08:41,950 Ако просто трябва да, например, достъп до паметта, че не е като 177 00:08:41,950 --> 00:08:44,100 ужасно I / O латентност. 178 00:08:44,100 --> 00:08:47,110 И когато казвам, I / O латентност, което аз съм позовавайки се е като всяко нещо като 179 00:08:47,110 --> 00:08:48,290 вход изход. 180 00:08:48,290 --> 00:08:52,950 Но за да имате достъп до файла на диска, като ако исках да служа на статичен HTML 181 00:08:52,950 --> 00:08:57,850 подаде, която беше на моята уеб страница или нещо такова, аз вид трябва да 182 00:08:57,850 --> 00:09:02,310 спрете за малко, да се чете този файл в от диска, а след това в 183 00:09:02,310 --> 00:09:04,400 този процес Чакам. 184 00:09:04,400 --> 00:09:06,700 Аз не правя полезна работа. 185 00:09:06,700 --> 00:09:11,270 >> Това не е вярно за всичко, но това е често срещана в приложения като P набор 186 00:09:11,270 --> 00:09:13,960 седем и много приложения че не сте 187 00:09:13,960 --> 00:09:15,440 всъщност прави много мислене. 188 00:09:15,440 --> 00:09:19,090 И когато казвам мислене, искам да кажа като изчислителна работа. 189 00:09:19,090 --> 00:09:23,270 Така изчислителна работа може да бъде нещо като, да речем, сте искали да 190 00:09:23,270 --> 00:09:26,590 напиши уеб сървър, който току-що се изчислява тото броя на Фибоначи. 191 00:09:26,590 --> 00:09:29,300 Това не звучи като особено забавно уеб сървър. 192 00:09:29,300 --> 00:09:34,220 Като че ли не можеше да се очаква, че сайт, за да бъде следващия Facebook, но това е малко 193 00:09:34,220 --> 00:09:35,610 вид изчислителна работа. 194 00:09:35,610 --> 00:09:39,570 >> И можете да си представите, че с подмяна на някакъв друг вид интересно 195 00:09:39,570 --> 00:09:43,070 изчислителна работа. 196 00:09:43,070 --> 00:09:46,050 Да кажем, че пишеш нещо че изчислява степента на 197 00:09:46,050 --> 00:09:49,170 разделение между двама души или нещо подобно. 198 00:09:49,170 --> 00:09:51,860 Така че това е свързано с някакъв вид на изчисление, нали? 199 00:09:51,860 --> 00:09:56,630 И дори тогава, за да се направи, че все още има да направи много за чакащите за може би 200 00:09:56,630 --> 00:09:59,550 трябва да задава въпроси на база данни да се търси до който е приятел с който или 201 00:09:59,550 --> 00:10:00,600 нещо подобно. 202 00:10:00,600 --> 00:10:03,510 Така че там е, че вид понятие на изчислителна работа. 203 00:10:03,510 --> 00:10:05,260 Това прави ли смисъл? 204 00:10:05,260 --> 00:10:08,258 Дали някой има някакви въпроси? 205 00:10:08,258 --> 00:10:11,960 >> О, и аз предполагам, че постави чат сървъри там защото чат сървъри са вид на 206 00:10:11,960 --> 00:10:13,240 друг добър пример за това. 207 00:10:13,240 --> 00:10:15,250 A чат сървър не разполага с да направи много мислене. 208 00:10:15,250 --> 00:10:18,350 Тя просто трябва да изчака хората да изпращане на съобщения и след това, когато 209 00:10:18,350 --> 00:10:19,800 те, да ги изпратите. 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 >> Така че просто да обобщим отново, Apache и подобни уеб сървър, като например, че една вилица 213 00:10:28,180 --> 00:10:31,470 много теми и процеси, които може да бъде нещо като разточително. 214 00:10:31,470 --> 00:10:37,530 Така че предполагам, въпросът, че може да дойде от която се ние трябва да имаме 215 00:10:37,530 --> 00:10:39,610 множество нишки и процеси? 216 00:10:39,610 --> 00:10:41,890 Какво става, ако имахме само една? 217 00:10:41,890 --> 00:10:45,710 >> Така че нека вид нарисува картина на това, което това ще изглежда така. 218 00:10:45,710 --> 00:10:47,810 Така че нека да се използва само една нишка. 219 00:10:47,810 --> 00:10:48,660 OK? 220 00:10:48,660 --> 00:10:52,790 Така че представете си само това с един конец. 221 00:10:52,790 --> 00:10:56,600 >> Да предположим, че ние не са били наистина правиш че много по-полезно - и когато казвам 222 00:10:56,600 --> 00:10:59,450 полезна, искам да кажа изчислителна работа - 223 00:10:59,450 --> 00:11:01,130 в тези множество нишки преди. 224 00:11:01,130 --> 00:11:04,180 Така че нека вид консолидира всичко в един конец. 225 00:11:04,180 --> 00:11:07,780 И какво от това, ако имахме една нишка, която вид само обикаля в течение и 226 00:11:07,780 --> 00:11:10,880 постоянно проверки направиха нещо Новият случват. 227 00:11:10,880 --> 00:11:15,130 Така например, нещо ново се е случило би могло да означава, че има нещо обратно от 228 00:11:15,130 --> 00:11:19,310 базата данни, или някой изпратен ми направи ново искане HTTP. 229 00:11:19,310 --> 00:11:22,290 Така че тези, които са вид събития това да се случи, нали? 230 00:11:22,290 --> 00:11:26,130 >> И тогава какво мога да направя, когато тези нови нещата да се случват, е в същата тази тема 231 00:11:26,130 --> 00:11:30,120 на изпълнение, тази единствена нишка от изпълнение, мога да се обадя на някои код, който 232 00:11:30,120 --> 00:11:32,410 ще се справиш с това специално нещо. 233 00:11:32,410 --> 00:11:36,640 Така например, ако имам нещо обратно от базата данни, мога да тичам ми 234 00:11:36,640 --> 00:11:40,960 малка изчислителна част от него, че всъщност само подготвя нещо, което да 235 00:11:40,960 --> 00:11:42,620 изпрати обратно на потребителя. 236 00:11:42,620 --> 00:11:46,710 Същото прави този вид има смисъл? 237 00:11:46,710 --> 00:11:49,940 >> Но това, което наистина са на последици от това? 238 00:11:49,940 --> 00:11:50,660 Нали така? 239 00:11:50,660 --> 00:11:53,730 Защото съм писал много код, който - 240 00:11:53,730 --> 00:11:58,330 и аз съм просто ще скочи напред в слайдовете, ако това е ОК. 241 00:11:58,330 --> 00:12:00,930 Така че, ако нямате нищо против, аз съм просто Ще се върнем малко назад. 242 00:12:00,930 --> 00:12:03,410 Така че този вид на нещо, което е нарича контур събитие. 243 00:12:03,410 --> 00:12:04,070 OK? 244 00:12:04,070 --> 00:12:07,240 И това е вид от основния регламент, Идеята зад Node.js. 245 00:12:07,240 --> 00:12:11,240 >> Така че това, което е наистина Node.js правиш като уеб сървъра е, че има една-единствена нишка 246 00:12:11,240 --> 00:12:14,850 това е основно става наоколо в цикъл като по време на един вид при 247 00:12:14,850 --> 00:12:18,510 качулката на Node.js, че е постоянно проверка, получихме нови неща? 248 00:12:18,510 --> 00:12:22,720 И тогава тя ще върви товарачи че сте настроили. 249 00:12:22,720 --> 00:12:26,720 Но един добър въпрос да се зададе, е, как можем да направим това да се случи 250 00:12:26,720 --> 00:12:28,090 със съществуващи неща? 251 00:12:28,090 --> 00:12:32,440 >> Така че сложих една линия на C код тук основно изглежда като че ли е отваряне на 252 00:12:32,440 --> 00:12:33,060 подаде, нали? 253 00:12:33,060 --> 00:12:36,090 I Тя просто излезе с албум. 254 00:12:36,090 --> 00:12:39,600 Така че аз трябваше да я отворите нов файл. 255 00:12:39,600 --> 00:12:43,810 Така че начина, по който нашият C код за работа - 256 00:12:43,810 --> 00:12:47,890 и аз предполагам, че причината, поради която избрахме беше файлове защото това е вид на степента 257 00:12:47,890 --> 00:12:52,000 на I / O работата, която сме направили в C в чувство, че има вход изход. 258 00:12:52,000 --> 00:12:55,070 Така че ние наричаме този код, който прави това, е отворен. 259 00:12:55,070 --> 00:12:59,370 И след това на следващия ред на нашата програма, ние вече могат да работят с ф. 260 00:12:59,370 --> 00:13:02,710 >> Така че това ще бъде един пример за нещо, това е като синхронна или 261 00:13:02,710 --> 00:13:06,850 блокиране, защото по този на първа линия там чакаме, докато ние 262 00:13:06,850 --> 00:13:08,110 получите файла отворен. 263 00:13:08,110 --> 00:13:12,260 Така че, на втора линия, ние знаем, че ние може да работи с F, но това означава, че 264 00:13:12,260 --> 00:13:16,240 че втората линия не може да не е бягал докато първата линия е направено. 265 00:13:16,240 --> 00:13:17,760 Това прави ли смисъл? 266 00:13:17,760 --> 00:13:20,890 >> Така че това би било лошо да се сложи в манипулатор на събитие. 267 00:13:20,890 --> 00:13:23,920 И причината за това е, че този вид чака, нали? 268 00:13:23,920 --> 00:13:26,500 Така че това ще ни върне обратно за едно и също нещо. 269 00:13:26,500 --> 00:13:29,470 И сега нямаше дори да има полза на множество нишки или 270 00:13:29,470 --> 00:13:32,390 процеси, защото имаме една нишка в Node.js. 271 00:13:32,390 --> 00:13:35,496 Това прави ли смисъл на всички? 272 00:13:35,496 --> 00:13:35,990 >> ПУБЛИКАТА: Изчакайте. 273 00:13:35,990 --> 00:13:36,980 Така че това, което е замяната? 274 00:13:36,980 --> 00:13:37,840 >> KEVIN SCHMID: О, така че да. 275 00:13:37,840 --> 00:13:39,560 Така че аз отивам да се стигне до замяната. 276 00:13:39,560 --> 00:13:40,430 OK. 277 00:13:40,430 --> 00:13:42,960 И какво от това, ако имахме нещо което изглеждаше като този? 278 00:13:42,960 --> 00:13:45,730 И какво, ако сега редактира F отвори малко? 279 00:13:45,730 --> 00:13:48,370 Така че аз съм преминаване в същата два аргумента, както преди. 280 00:13:48,370 --> 00:13:52,610 Аз все още обичам новата песен че тя излезе с. 281 00:13:52,610 --> 00:13:57,260 Но аз съм минаваща трето нещо, което е тази променлива, наречена код. 282 00:13:57,260 --> 00:14:02,280 >> Но какво е всъщност код в този контекст? 283 00:14:02,280 --> 00:14:05,360 Дали е като обикновен променлива C? 284 00:14:05,360 --> 00:14:06,740 Това е функция, нали? 285 00:14:06,740 --> 00:14:09,450 И това може да е малко странно, защото Аз всъщност съм като сега се премине 286 00:14:09,450 --> 00:14:12,320 функционира в друга функция. 287 00:14:12,320 --> 00:14:14,400 >> Така че няколко неща, за да обърнат внимание за това. 288 00:14:14,400 --> 00:14:17,145 One, аз не съм всъщност се обадите функцията код. 289 00:14:17,145 --> 00:14:20,650 Така че не виждам код с оставяли Paren, нали скоба. 290 00:14:20,650 --> 00:14:23,010 Аз съм просто преминава в код. 291 00:14:23,010 --> 00:14:26,990 И в C, какво всъщност ще направи е ми даде показалеца, че действителната 292 00:14:26,990 --> 00:14:29,740 код, а след това може да го стартирате. 293 00:14:29,740 --> 00:14:33,350 Но просто мисля за него като сте преминаване на кода да се изпълнява, когато 294 00:14:33,350 --> 00:14:35,150 този файл е отворен. 295 00:14:35,150 --> 00:14:41,430 >> Но какво означава това е, че сега останалата част от моята програма, която може да направи 296 00:14:41,430 --> 00:14:47,050 други неща, може да продължи да прави други неща, докато ние, всъщност не чакам, но 297 00:14:47,050 --> 00:14:50,890 Просто трябва в задната част на главите ни, че когато този файл е отворен, бягай, че 298 00:14:50,890 --> 00:14:52,130 код на върха. 299 00:14:52,130 --> 00:14:53,390 Това прави ли смисъл? 300 00:14:53,390 --> 00:14:58,060 >> И сега идеята зад Node.js е, че кода в правя неща с F 301 00:14:58,060 --> 00:15:04,590 част трябва да бъде доста кратък и прост и ясно, а не наистина да бъде 302 00:15:04,590 --> 00:15:06,160 много изчислително интензивни. 303 00:15:06,160 --> 00:15:09,390 Тя може да се наложи да се отвори друг файл, но че трябва да бъде доста бързо 304 00:15:09,390 --> 00:15:14,710 тъй като тя трябва само да кажа направя друг е отворите и след това да наричаме това друг код. 305 00:15:14,710 --> 00:15:19,100 >> Така, само за да бъде напълно ясно, Ф отворите, който прави нов Katy Perry песента 306 00:15:19,100 --> 00:15:23,060 Готово mp3, че това ще се доста много се върне веднага. 307 00:15:23,060 --> 00:15:27,820 И тогава ние можем просто да продължим да правим други неща, защото всичко, което сега е 308 00:15:27,820 --> 00:15:33,410 открита покана ли се каже в общи линии основното е отворен код отвори този файл 309 00:15:33,410 --> 00:15:36,020 и когато сте готови, отварянето на тази подаде или когато си го върне, 310 00:15:36,020 --> 00:15:37,480 след това да изпълните този код. 311 00:15:37,480 --> 00:15:39,540 Но това всъщност не тече този код. 312 00:15:39,540 --> 00:15:41,815 И трябваше въпрос? 313 00:15:41,815 --> 00:15:46,180 >> ПУБЛИКАТА: Можете също намекна за няколко пъти, че добавянето на изчисления 314 00:15:46,180 --> 00:15:50,545 интензивен код вид прекъсне [Недоловим] задвижва система. 315 00:15:50,545 --> 00:15:51,795 [Недоловим]? 316 00:15:51,795 --> 00:15:54,450 317 00:15:54,450 --> 00:15:55,290 >> KEVIN SCHMID: Това е чудесен въпрос. 318 00:15:55,290 --> 00:15:59,280 Така че аз всъщност имам един пример за това как бихте могли да се интегрират изчислителни 319 00:15:59,280 --> 00:16:01,090 интензивен код в малко. 320 00:16:01,090 --> 00:16:03,620 Така че, когато стигнем до примери на код, Ще бъдат сигурни, да дръпнеш една. 321 00:16:03,620 --> 00:16:04,700 Това ли е ОК? 322 00:16:04,700 --> 00:16:05,950 Благодаря. 323 00:16:05,950 --> 00:16:07,690 324 00:16:07,690 --> 00:16:08,750 >> Какво е вашето име? 325 00:16:08,750 --> 00:16:10,620 >> ПУБЛИКАТА: Аарон. 326 00:16:10,620 --> 00:16:14,830 >> KEVIN SCHMID: Aaron води до много Добър въпрос, което е, че ако имах 327 00:16:14,830 --> 00:16:18,560 някои изчисления интензивно код в нещата с е част, а останалата част се направи 328 00:16:18,560 --> 00:16:22,880 моята програма не може да работи и не може да слушате за нови искания или нищо, докато всички 329 00:16:22,880 --> 00:16:24,270 това нещо е свършено. 330 00:16:24,270 --> 00:16:27,390 Така че, ако аз пиша код Node като цяло освен ако не направим нещо, че аз ще 331 00:16:27,390 --> 00:16:33,060 да предложи по-късно, когато се вгледаме в кодови примери, аз трябва да бъдете сигурни, че 332 00:16:33,060 --> 00:16:36,060 моя код не връзвам това събитие контур. 333 00:16:36,060 --> 00:16:38,120 Това прави ли смисъл? 334 00:16:38,120 --> 00:16:38,350 OK. 335 00:16:38,350 --> 00:16:40,040 Cool. 336 00:16:40,040 --> 00:16:47,090 >> Така Node.js предлага тази рамка, която може да се изгради това събитие задвижване 337 00:16:47,090 --> 00:16:48,210 сървъри с. 338 00:16:48,210 --> 00:16:53,460 Така че тя има този вид на асинхронен без блокиране на I / O библиотеки, докато 339 00:16:53,460 --> 00:16:56,800 стандартните C библиотеки, че сме били работа с, като ако просто 340 00:16:56,800 --> 00:16:59,500 ги използват по същия начин, че сме ги използвате с F се отваря и 341 00:16:59,500 --> 00:17:03,000 неща, тези, които се блокира, защото всъщност трябва да се изчака 342 00:17:03,000 --> 00:17:04,470 този файл да се отвори. 343 00:17:04,470 --> 00:17:09,290 >> Но Node.js дава, че и да го основно връзва в V8 на Google 344 00:17:09,290 --> 00:17:14,030 JavaScript двигател, който е причината че Chrome е толкова бързо при преработката 345 00:17:14,030 --> 00:17:17,040 JavaScript защото има този V8 двигател. 346 00:17:17,040 --> 00:17:22,460 Така че аз знам, че звучи като един от тези, WWDC разработчик конференции нещо 347 00:17:22,460 --> 00:17:25,390 където те просто хвърлят един куп на писмо номер неща за процесори 348 00:17:25,390 --> 00:17:26,910 и да кажа това е толкова готино. 349 00:17:26,910 --> 00:17:34,200 Но това е готино, че те направиха това, защото JavaScript - 350 00:17:34,200 --> 00:17:37,010 или може би, ако не сте запознати с JavaScript, защото все още не сме имали 351 00:17:37,010 --> 00:17:38,180 лекциите на него - 352 00:17:38,180 --> 00:17:40,770 но JavaScript е интерпретиран език. 353 00:17:40,770 --> 00:17:41,970 >> И това е важен момент също. 354 00:17:41,970 --> 00:17:45,790 Така че това е важно за нашия уеб сървъри, за да бъде бързо, нали? 355 00:17:45,790 --> 00:17:49,970 И ако ние бяхме само с тичане JavaScript код, който се тълкува само с 356 00:17:49,970 --> 00:17:52,130 някакъв стар интерпретатор може да е бавен. 357 00:17:52,130 --> 00:17:55,980 Така възлите ползи от като тази супер бързо V8 преводач. 358 00:17:55,980 --> 00:17:59,580 И аз не знам дали те го нарекли защото V8 шамар в челото 359 00:17:59,580 --> 00:18:01,110 нещо, но OK. 360 00:18:01,110 --> 00:18:07,070 >> Така че аз съм подготвен някои примери На този URL. 361 00:18:07,070 --> 00:18:10,490 След семинара, аз съм нещо като ще говорим за това как можете да получите комплект Node 362 00:18:10,490 --> 00:18:13,570 нагоре, но за сега, аз просто някак искам да преминете през някои код примери. 363 00:18:13,570 --> 00:18:17,250 Така че, ако искате да следват заедно, всички изходен код е достъпен тук. 364 00:18:17,250 --> 00:18:18,720 OK? 365 00:18:18,720 --> 00:18:22,280 >> Така че аз ще напусна този URL за малко. 366 00:18:22,280 --> 00:18:24,440 И тогава аз съм просто ще превключите в терминала. 367 00:18:24,440 --> 00:18:29,670 368 00:18:29,670 --> 00:18:34,400 Всички ли са добре с този URL? 369 00:18:34,400 --> 00:18:37,990 Така че аз отивам за превключване на моя терминал тук. 370 00:18:37,990 --> 00:18:42,030 >> Така че тук е кодът, който се Имам за днес. 371 00:18:42,030 --> 00:18:43,960 Защо да не започнем с simpler.js файл? 372 00:18:43,960 --> 00:18:49,110 373 00:18:49,110 --> 00:18:52,100 Другото нещо е, че всичко това код ще бъде написана на 374 00:18:52,100 --> 00:18:56,660 JavaScript, които вие може или може да не е запознат с. 375 00:18:56,660 --> 00:19:00,170 Предполагам, че някои неща е, че много на JavaScript код е вид 376 00:19:00,170 --> 00:19:04,000 синтаксис и структура е много подобна на C, за да можете да вид го вземете като 377 00:19:04,000 --> 00:19:05,020 отидеш заедно. 378 00:19:05,020 --> 00:19:08,750 Опитах се да пиша много на започвайки код за това по начин, който е 379 00:19:08,750 --> 00:19:11,230 подобни на С, така че да е малко по-разбираемо. 380 00:19:11,230 --> 00:19:15,980 Но докато напредваме, аз ще бъда демонстрира някои от допълнителните 381 00:19:15,980 --> 00:19:18,980 характеристики на JavaScript, че са нещо страхотно. 382 00:19:18,980 --> 00:19:21,510 >> Но нека да разгледаме тази извадка програма. 383 00:19:21,510 --> 00:19:24,820 Предполагам, че всичко е отрязан там. 384 00:19:24,820 --> 00:19:28,500 Отивам да се определи, че истинското бързо, ако това е ОК, или не. 385 00:19:28,500 --> 00:19:31,400 Аз не знам какво ще правя. 386 00:19:31,400 --> 00:19:34,660 Това ли е малко по-добре? 387 00:19:34,660 --> 00:19:36,510 Можеш ли да видиш вар и такива неща? 388 00:19:36,510 --> 00:19:39,320 OK. 389 00:19:39,320 --> 00:19:44,120 >> Така че първата линия е като JavaScript версия на променлива 390 00:19:44,120 --> 00:19:44,800 декларация. 391 00:19:44,800 --> 00:19:49,870 Така че просто за да подчертае това, което би тази изглежда като в C. Така че, това е точно като 392 00:19:49,870 --> 00:19:52,620 ми казваше индекс е равен на три или нещо подобно. 393 00:19:52,620 --> 00:19:55,740 Така че аз не уточни вида. 394 00:19:55,740 --> 00:20:00,780 JavaScript наистина има видове, но това е много динамично въвели в природата, така че 395 00:20:00,780 --> 00:20:02,580 не предоставя каквато и да е вид върху него. 396 00:20:02,580 --> 00:20:03,670 Така че просто трябва VAR. 397 00:20:03,670 --> 00:20:05,320 Това е като променлива. 398 00:20:05,320 --> 00:20:05,920 OK? 399 00:20:05,920 --> 00:20:08,340 >> И аз ще се обадя на тази променлива HTTP. 400 00:20:08,340 --> 00:20:12,480 И от дясната ми страна ръка, имам израз, който искам да поставя в HTTP. 401 00:20:12,480 --> 00:20:14,960 И това казва изискват HTTP. 402 00:20:14,960 --> 00:20:18,500 Така че това е нещо подобно да се включи. 403 00:20:18,500 --> 00:20:22,940 Това е малко по-мощен, отколкото като включва в смисъл, че включва 404 00:20:22,940 --> 00:20:26,100 просто да копирате и поставите заглавката файл за прототипи на функции или 405 00:20:26,100 --> 00:20:27,930 независимо с определенията за тип. 406 00:20:27,930 --> 00:20:30,590 Но изисква всъщност ще да ни кода. 407 00:20:30,590 --> 00:20:33,280 >> Така че можете да мислите за него като вносител някакъв код. 408 00:20:33,280 --> 00:20:37,960 Така че някъде в модула Node.js система или каквото и да, те имат всичко това 409 00:20:37,960 --> 00:20:40,790 HTTP сървър код, така че аз съм просто изтеглянето му за собствената ми 410 00:20:40,790 --> 00:20:43,130 лична употреба в тази програма. 411 00:20:43,130 --> 00:20:44,260 OK? 412 00:20:44,260 --> 00:20:46,930 >> Така че след това имам тази функция че аз съм писал. 413 00:20:46,930 --> 00:20:50,330 И забележи, че не е трябвало да се уточни вида връщане или вида на 414 00:20:50,330 --> 00:20:51,140 аргументи отново. 415 00:20:51,140 --> 00:20:54,440 Така вид хлабав въвели в този вид чувство. 416 00:20:54,440 --> 00:20:57,290 Две аргументи, които предприема по, на искането и отговора. 417 00:20:57,290 --> 00:21:02,080 Така че това е концептуално нещо като познат от картината, която имахме 418 00:21:02,080 --> 00:21:05,280 на екрана, преди защото ние се получи това искане, което ние 419 00:21:05,280 --> 00:21:06,410 има от потребителя. 420 00:21:06,410 --> 00:21:09,170 И тогава ще имаме отговор, че можем да пишем неща, за да. 421 00:21:09,170 --> 00:21:15,060 >> Така че, на първа линия на това не res.writeHead 200 и след това 422 00:21:15,060 --> 00:21:17,070 тип съдържание текст обикновен. 423 00:21:17,070 --> 00:21:19,300 Така че нека да сглобя този апарт малко. 424 00:21:19,300 --> 00:21:22,340 Така че нека просто се съсредоточи върху res.write за малко. 425 00:21:22,340 --> 00:21:28,420 Така запис е в основата, и пишат на главата, са само начини за сортиране на напишеш 426 00:21:28,420 --> 00:21:29,960 неща за отговора. 427 00:21:29,960 --> 00:21:30,770 OK? 428 00:21:30,770 --> 00:21:36,230 Така че пиша главата, ако някой си спомня, от HTTP лекцията, мислиш ли, момчета 429 00:21:36,230 --> 00:21:39,940 помня заглавията в началото на нещо, на HTTP? 430 00:21:39,940 --> 00:21:43,580 Така че, защо да не мога просто демо хедъри бързо. 431 00:21:43,580 --> 00:21:44,640 Ще бъде ли полезно? 432 00:21:44,640 --> 00:21:45,500 Или трябва да просто нещо - 433 00:21:45,500 --> 00:21:46,070 OK. 434 00:21:46,070 --> 00:21:46,740 Разбира се. 435 00:21:46,740 --> 00:21:52,340 >> Така че, когато вашия браузър отива в google.com или нещо подобно, 436 00:21:52,340 --> 00:21:54,250 всъщност има малко повече - 437 00:21:54,250 --> 00:21:55,380 това е като една тайна - 438 00:21:55,380 --> 00:21:58,340 там е като малко повече информация който идва през тръбата от само 439 00:21:58,340 --> 00:22:00,180 малката търсенето и всичко. 440 00:22:00,180 --> 00:22:03,550 Така че, за да ви покажа това, аз ще съм да използвате програма, наречена Curl. 441 00:22:03,550 --> 00:22:04,260 OK? 442 00:22:04,260 --> 00:22:08,020 Така че това е нещо, което може да се движи с вашия Mac OSX командния ред или в 443 00:22:08,020 --> 00:22:09,830 уред или нещо такова. 444 00:22:09,830 --> 00:22:17,050 И така, ако аз Curl HTTP google.com, Отивам да видя HTML. 445 00:22:17,050 --> 00:22:21,230 И това е, в справедливост, само HTML, че нещо не Ви каже да 446 00:22:21,230 --> 00:22:24,695 пренасочи към WWW ако вашият браузър не автоматично се справят с 447 00:22:24,695 --> 00:22:27,110 пренасочване. 448 00:22:27,110 --> 00:22:33,390 >> Така че това е само HTML, но аз ще да добавите към Curl това тире I флаг. 449 00:22:33,390 --> 00:22:33,600 OK? 450 00:22:33,600 --> 00:22:35,600 И това се случва, за да се покаже ми заглавията. 451 00:22:35,600 --> 00:22:40,640 Това е също така информация, която идва чрез когато получа този отговор. 452 00:22:40,640 --> 00:22:41,260 OK? 453 00:22:41,260 --> 00:22:45,320 >> Така че най-отгоре, ще видите този HTTP 301 се движи постоянно. 454 00:22:45,320 --> 00:22:49,470 И това е нещо важно, защото това се отнася до кода на състоянието. 455 00:22:49,470 --> 00:22:53,750 Така че тук 301 е кода на състоянието, който е по същество само цяло число 456 00:22:53,750 --> 00:22:57,750 че казва на браузъра или който е четете това, ако се преструвам, че 457 00:22:57,750 --> 00:23:01,460 ти си браузър и вие виждате това, в общи линии сега, ако се вгледате в 458 00:23:01,460 --> 00:23:04,960 че и вие виждате 301, знаеш, че има да направя нещо специално въз основа на 459 00:23:04,960 --> 00:23:08,810 301, или нещо специално се е случило въз основа на 301. 460 00:23:08,810 --> 00:23:12,640 Така се казва преместена за постоянно. 461 00:23:12,640 --> 00:23:17,700 >> И след това, общо взето, ние имаме куп двойки ключови стойности. 462 00:23:17,700 --> 00:23:22,100 Така получаваме местоположението е www.google.com. 463 00:23:22,100 --> 00:23:25,190 И тогава някак всичко това други неща, но в общи линии, какво е местоположението 464 00:23:25,190 --> 00:23:29,662 поговорка е най-новото място е в www.google.com. 465 00:23:29,662 --> 00:23:33,800 Така че сега, ако отидете на google.com, ще вид видите вида на браузъра на мигане 466 00:23:33,800 --> 00:23:38,770 за секунда и след това ви пренасочи връщам към www.google.com. 467 00:23:38,770 --> 00:23:41,840 Така отговори могат да съдържат тези заглавки. 468 00:23:41,840 --> 00:23:43,330 >> И няколко неща, за да посоча. 469 00:23:43,330 --> 00:23:46,890 Така че нека да кажем, че всъщност са били успешно в посещение на уеб страница. 470 00:23:46,890 --> 00:23:49,040 Така че позволете ми да отида до - 471 00:23:49,040 --> 00:23:51,080 това, което е един добър сайт? 472 00:23:51,080 --> 00:23:53,285 Аз съм зле на мислене на добро уебсайтове на място. 473 00:23:53,285 --> 00:23:53,640 >> ПУБЛИКАТА: Wikipedia. 474 00:23:53,640 --> 00:23:54,160 >> KEVIN SCHMID: OK. 475 00:23:54,160 --> 00:23:56,040 Нека да направим Wikipedia. 476 00:23:56,040 --> 00:23:58,680 Така че тук съм бил преместен. 477 00:23:58,680 --> 00:23:59,240 О, чакайте. 478 00:23:59,240 --> 00:24:00,160 Аз ли бях? 479 00:24:00,160 --> 00:24:00,890 Да, аз бях. 480 00:24:00,890 --> 00:24:01,100 OK. 481 00:24:01,100 --> 00:24:03,005 Така че аз трябва да направя WWW. 482 00:24:03,005 --> 00:24:06,006 Така че аз ще направя WWW. 483 00:24:06,006 --> 00:24:09,680 И както можете да видите, тук всичко е на HTML че браузърът ще обработва 484 00:24:09,680 --> 00:24:10,910 за Wikipedia. 485 00:24:10,910 --> 00:24:14,055 >> Но ако продължавате да превъртате до тук, това, което ще видите в горната част - 486 00:24:14,055 --> 00:24:17,800 уау, има много HTML в Уикипедия - 487 00:24:17,800 --> 00:24:22,550 но това, което мога да видя най-отгоре тук е този код 200 статус, за разлика от 488 00:24:22,550 --> 00:24:24,570 301, които видях по-рано. 489 00:24:24,570 --> 00:24:27,100 И забележи, че тя е хубава приятелски OK в непосредствена близост до него. 490 00:24:27,100 --> 00:24:29,470 Така че това е като добър код статут. 491 00:24:29,470 --> 00:24:31,160 >> Погледнете ли това, че 200 броя познато? 492 00:24:31,160 --> 00:24:34,120 493 00:24:34,120 --> 00:24:39,880 Да, защото, когато аз направих simpler.js, Аз написах 200 там. 494 00:24:39,880 --> 00:24:43,290 Така че това е в общи линии казва, кажете на браузър или който се опитва да стигне до 495 00:24:43,290 --> 00:24:45,440 това, че те са били успешни. 496 00:24:45,440 --> 00:24:49,040 Или, че нещо като ние са били успешни също. 497 00:24:49,040 --> 00:24:54,320 >> И там е този вид на специален синтаксис в Javascript за обявяване на 498 00:24:54,320 --> 00:24:59,870 карта на тези клавиши като тип съдържание и тези стойности като текст обикновен. 499 00:24:59,870 --> 00:25:03,780 Така че, ако се вгледате в отговор, че ние се върнах от Wikipedia и преди, - 500 00:25:03,780 --> 00:25:06,200 Аз ще се опитам да превъртите , а малко по-бързо - 501 00:25:06,200 --> 00:25:09,900 имате тези клавиши като на сървъра и тези стойности Apache. 502 00:25:09,900 --> 00:25:12,120 Така че имаш ключове и стойности. 503 00:25:12,120 --> 00:25:15,930 И вие можете да укажете това в Node какво да изпрати обратно. 504 00:25:15,930 --> 00:25:19,380 >> Така че това всъщност е вид, в някои начини, и в някои отношения, това не е 505 00:25:19,380 --> 00:25:23,170 наистина, но това е малко по-ниско ниво от кода на PHP, че може да сте 506 00:25:23,170 --> 00:25:26,980 писане за P определя седем защото PHP и Apache вид се грижи за някои 507 00:25:26,980 --> 00:25:28,150 от тези неща за вас. 508 00:25:28,150 --> 00:25:32,520 В PHP, можете да отмените по подразбиране поведение, като пишете вашите собствени заглавки. 509 00:25:32,520 --> 00:25:35,520 Но за целите на това, ние се да пишат нашите собствени заглавки. 510 00:25:35,520 --> 00:25:38,210 511 00:25:38,210 --> 00:25:41,105 >> Същото прави и тази линия да има смисъл да всички, линията на запис на главата? 512 00:25:41,105 --> 00:25:41,380 OK. 513 00:25:41,380 --> 00:25:42,280 Awesome. 514 00:25:42,280 --> 00:25:45,870 >> Така че след това, което аз правя, е да се сложи край на отговор като казва здравей свят. 515 00:25:45,870 --> 00:25:47,040 OK. 516 00:25:47,040 --> 00:25:49,920 Но това е само една функция наречена искане манипулатор. 517 00:25:49,920 --> 00:25:53,510 Така че сега аз всъщност трябва да направя вид нещо с тази функция, нали? 518 00:25:53,510 --> 00:25:59,170 >> Така че тук това, което правя, е да има тази линия, която прави VAR сървър е равен 519 00:25:59,170 --> 00:26:03,530 HTTP.create сървър, а след това премине в по заявките. 520 00:26:03,530 --> 00:26:06,080 Така че това е един вид на възела начин за създаване на сървър. 521 00:26:06,080 --> 00:26:08,790 И забележи, че аз съм минаваща в заявките. 522 00:26:08,790 --> 00:26:12,290 Така че това се казва createServer функция, която аз искам да ми направи 523 00:26:12,290 --> 00:26:16,270 сървъра, и когато този сървър получава отговор, имам нужда от теб, за да наричаме това 524 00:26:16,270 --> 00:26:18,680 заявките функция. 525 00:26:18,680 --> 00:26:18,990 OK? 526 00:26:18,990 --> 00:26:22,290 >> Така че тази линия почти завършва веднага. 527 00:26:22,290 --> 00:26:28,780 Така сървъра линия VAR е направено право След като направите това доста много. 528 00:26:28,780 --> 00:26:31,770 Искам да кажа, че трябва да се създаде някаква вътрешна състояние да знаете, че вие ​​ще трябва да 529 00:26:31,770 --> 00:26:35,400 наричаме това искане манипулатор функция, но това няма да седи там и 530 00:26:35,400 --> 00:26:37,730 например има потребителят изпраща ми още един поискване? 531 00:26:37,730 --> 00:26:39,270 Дали потребителят ме изпрати искане все още? 532 00:26:39,270 --> 00:26:40,780 Така че това не блокира. 533 00:26:40,780 --> 00:26:41,650 OK? 534 00:26:41,650 --> 00:26:46,120 >> Така че това, което ще направите, тя е в основата сега съхранява указател към този код, 535 00:26:46,120 --> 00:26:49,670 това искане манипулатор функция, и след това ще тече този код, когато някой 536 00:26:49,670 --> 00:26:52,170 отправя искане. 537 00:26:52,170 --> 00:26:54,120 И след това, което правим server.listen. 538 00:26:54,120 --> 00:26:56,950 539 00:26:56,950 --> 00:26:59,960 >> В 1337 има доста произволно. 540 00:26:59,960 --> 00:27:02,285 Нямах никаква конкретна причина за бране на този номер. 541 00:27:02,285 --> 00:27:03,860 Това беше напълно случаен принцип. 542 00:27:03,860 --> 00:27:07,010 Но това просто уточнява пристанището. 543 00:27:07,010 --> 00:27:10,640 Така че повечето уеб сървъри, които ще видите, че те използва порт 80, защото това е вид 544 00:27:10,640 --> 00:27:11,810 подобно на конвенцията. 545 00:27:11,810 --> 00:27:16,170 Така че, ако аз отида в нещо подобно, Аз не знам, Wikipedia.org, 546 00:27:16,170 --> 00:27:17,700 и сложих на дебелото черво 8 - 547 00:27:17,700 --> 00:27:18,610 О, уау, не можеш да видиш това. 548 00:27:18,610 --> 00:27:19,370 Съжалявам. 549 00:27:19,370 --> 00:27:21,820 Но ако го направя Wikipedia - 550 00:27:21,820 --> 00:27:24,810 Аз ще го напиша тук, просто така, че това е ясно на фотоапарата. 551 00:27:24,810 --> 00:27:29,150 Но ако аз се възползвам от тази в браузъра с двоеточие 80, в който се посочва отидете 552 00:27:29,150 --> 00:27:31,430 Wikipedia.org на порт 80. 553 00:27:31,430 --> 00:27:36,200 Така че това е като начина, по който Съединените щати имат множество портове, като, където можете да превозва 554 00:27:36,200 --> 00:27:37,440 неща на вид. 555 00:27:37,440 --> 00:27:40,730 Така че това е като да отидете на този конкретен пусне на този сървър. 556 00:27:40,730 --> 00:27:40,990 OK. 557 00:27:40,990 --> 00:27:45,730 >> Така че аз просто избрах 1337. 558 00:27:45,730 --> 00:27:47,910 Има цял набор от числа , които можете да вземете. 559 00:27:47,910 --> 00:27:50,390 Това не беше съвсем специално. 560 00:27:50,390 --> 00:27:54,560 >> Но това, което аз ще направя сега е аз отивам да тичам Node. 561 00:27:54,560 --> 00:27:59,730 Нека всъщност влиза, че няколко линии вертикално, така че да можете да го видите. 562 00:27:59,730 --> 00:28:03,130 Отивам да направя Node, и аз съм ще избяга simpler.js. 563 00:28:03,130 --> 00:28:06,880 И ние ще говорим за това как да получите Node създаден през малко. 564 00:28:06,880 --> 00:28:09,350 Но сега това е просто пуснете сървъра. 565 00:28:09,350 --> 00:28:14,360 >> Така че едно нещо, което може да опитате, които не могат да бъде толкова вълнуващо е, че ние може действително 566 00:28:14,360 --> 00:28:16,300 опитайте да получите достъп до нея в Curl. 567 00:28:16,300 --> 00:28:20,680 Така че мога да направя Curl, и ми машина е локалния хост. 568 00:28:20,680 --> 00:28:24,600 Вие също така ще видите това писмено като това понякога. 569 00:28:24,600 --> 00:28:29,810 Локалния хост и 127.0.0.1 са вид на като вашия домашен компютър. 570 00:28:29,810 --> 00:28:33,180 Така че това е като да говориш собствения си компютър. 571 00:28:33,180 --> 00:28:33,760 OK. 572 00:28:33,760 --> 00:28:36,030 >> И след това мога да кажа, 1337. 573 00:28:36,030 --> 00:28:39,630 Така че, ако аз тичам този ред на код, тя казва здравей свят. 574 00:28:39,630 --> 00:28:44,050 И ако исках да видя тези неща, че имаше вид текстово съдържание обикновена или 575 00:28:44,050 --> 00:28:46,560 каквото и да, аз дори може да сложи това тук. 576 00:28:46,560 --> 00:28:48,810 И забележи, че го казва OK. 577 00:28:48,810 --> 00:28:50,810 И аз имам обикновен текст. 578 00:28:50,810 --> 00:28:53,140 И тогава там е нещо от всичко това друг неща, които Node ще добави в 579 00:28:53,140 --> 00:28:54,440 там за мен. 580 00:28:54,440 --> 00:28:55,700 Това не е супер важно. 581 00:28:55,700 --> 00:28:58,230 >> Искам да кажа, че има някаква техническа аспекти на които са вид 582 00:28:58,230 --> 00:29:02,280 на хладно да говоря за това, но само за да покаже вас, аз също имат правомощия да 583 00:29:02,280 --> 00:29:03,070 промените тези наоколо. 584 00:29:03,070 --> 00:29:06,280 Така че аз може просто да добавите един куп на подобни неща. 585 00:29:06,280 --> 00:29:11,780 И то сега, ако аз гледам в моята изход, ще бъде това. 586 00:29:11,780 --> 00:29:19,740 Така че тези заглавки означават някои неща за браузъри и такива неща. 587 00:29:19,740 --> 00:29:23,040 >> И заглавията може основно казват браузър как да отговори на нещо. 588 00:29:23,040 --> 00:29:26,280 Ако някога сте чували за бисквитки и преди, или ако някога сте били раздразнени 589 00:29:26,280 --> 00:29:29,330 от уеб страница за създаване бисквитки, или е включено бисквитка блок или 590 00:29:29,330 --> 00:29:30,320 нещо подобно. 591 00:29:30,320 --> 00:29:33,040 Всъщност можете да установите бисквитки в тези заглавки. 592 00:29:33,040 --> 00:29:36,990 Така казват на браузъра как да поведение в някои случаи. 593 00:29:36,990 --> 00:29:37,750 OK. 594 00:29:37,750 --> 00:29:40,310 >> Така че това е simpler.js. 595 00:29:40,310 --> 00:29:42,780 Дали някой има някакви въпроси на този файл с изходен код? 596 00:29:42,780 --> 00:29:45,420 597 00:29:45,420 --> 00:29:45,610 OK. 598 00:29:45,610 --> 00:29:46,490 Cool. 599 00:29:46,490 --> 00:29:50,780 >> Така че нека да премахнете R от тази и погледнете simple.js. 600 00:29:50,780 --> 00:29:53,010 Така че това е доста много една и съща програма. 601 00:29:53,010 --> 00:29:56,030 Току-що го написах малко по-различно защото исках да сортирате маркиране: 602 00:29:56,030 --> 00:29:57,850 някои функции на JavaScript. 603 00:29:57,850 --> 00:30:03,880 >> Така че забележите, че по заявките функция е напълно изчезнал. 604 00:30:03,880 --> 00:30:05,800 О да, имахте ли един въпрос? 605 00:30:05,800 --> 00:30:08,200 >> Публика: Да, аргументите които се предават, че 606 00:30:08,200 --> 00:30:10,120 функция, какви са те? 607 00:30:10,120 --> 00:30:12,050 >> KEVIN SCHMID: Така че тези, които са JavaScript обекти. 608 00:30:12,050 --> 00:30:15,230 В документацията Node.js, тя основно се казва, какви методи са 609 00:30:15,230 --> 00:30:15,910 разположение на тях. 610 00:30:15,910 --> 00:30:19,602 Ние просто се случи да имат достъп до този метод се нарича запис на главата и край 611 00:30:19,602 --> 00:30:20,730 и подобни неща. 612 00:30:20,730 --> 00:30:22,590 Но има и един куп повече методи. 613 00:30:22,590 --> 00:30:27,670 >> И за пример, като един от тях по-специално на REC, можете да направите 614 00:30:27,670 --> 00:30:34,540 нещо като rec.method която ще да ви кажа дали това е HTTP получите или 615 00:30:34,540 --> 00:30:36,780 HTTP публикувайте своите искания и такива неща. 616 00:30:36,780 --> 00:30:39,100 Така че има всички видове от различни свойства, но те са и двете 617 00:30:39,100 --> 00:30:42,560 JavaScript обекти, и те просто трябва функции, свързани с тях, които можете 618 00:30:42,560 --> 00:30:43,850 могат да пишат неща, за да. 619 00:30:43,850 --> 00:30:45,520 OK? 620 00:30:45,520 --> 00:30:49,030 >> Така че забележите, че заявките е напълно изчезнал. 621 00:30:49,030 --> 00:30:52,650 Но кода, който имах в заявка манипулатор е все още там. 622 00:30:52,650 --> 00:30:56,520 Аз все още имам тази res.writeHead и аз все още имам тази res.end. 623 00:30:56,520 --> 00:31:00,270 И какво е това е пример за в JavaScript е тази идея на 624 00:31:00,270 --> 00:31:01,460 анонимна функция. 625 00:31:01,460 --> 00:31:04,180 и анонимен е като подходящо име за него, защото той буквално не 626 00:31:04,180 --> 00:31:05,180 да има име. 627 00:31:05,180 --> 00:31:07,900 Няма по искане функция манипулатор там. 628 00:31:07,900 --> 00:31:10,110 >> Няма име, но тя все още е като аргумент. 629 00:31:10,110 --> 00:31:12,250 Така че аз все още имам РИК и ВЕИ. 630 00:31:12,250 --> 00:31:16,180 И аз все още имам кода. 631 00:31:16,180 --> 00:31:18,930 Това е съвършено глоба JavaScript код. 632 00:31:18,930 --> 00:31:22,540 Така че мога да декларира функция без изрично ще му даде име. 633 00:31:22,540 --> 00:31:24,250 Това е малко объркващо в началото. 634 00:31:24,250 --> 00:31:26,230 Има някои полезни неща, като , които можете да правите с 635 00:31:26,230 --> 00:31:28,450 тези анонимни функции. 636 00:31:28,450 --> 00:31:32,100 Дали някой има някакви въпроси за тази, или това е ОК, само за да, за сега, 637 00:31:32,100 --> 00:31:34,130 нещо просто приемам, че ще направи същото нещо? 638 00:31:34,130 --> 00:31:36,700 639 00:31:36,700 --> 00:31:37,125 Да? 640 00:31:37,125 --> 00:31:38,680 >> ПУБЛИКАТА: първо са функции клас в JavaScript? 641 00:31:38,680 --> 00:31:41,020 >> KEVIN SCHMID: Те са първи клас в JavaScript. 642 00:31:41,020 --> 00:31:45,490 И просто знам, че тези понятия на преминаване в анонимна функция като 643 00:31:45,490 --> 00:31:49,600 това се прилага за JavaScript, които можете може да пише в окончателния си проект за 644 00:31:49,600 --> 00:31:51,260 уеб браузъра също. 645 00:31:51,260 --> 00:31:56,700 Така например, в JavaScript в браузъра си, тя също е малко събитие 646 00:31:56,700 --> 00:32:00,680 задвижва в смисъл, че това, което ще имам е, когато потребителят кликне върху този 647 00:32:00,680 --> 00:32:02,640 бутон, искам да изпълня този код. 648 00:32:02,640 --> 00:32:07,070 >> Така че това е един и същи вид на идеите на от страна на клиента, когато едно кликване на мишката или те 649 00:32:07,070 --> 00:32:09,870 мишката върху някои изображения на вашия уеб страница, стартирайте този код. 650 00:32:09,870 --> 00:32:11,350 Това може да важи за сървъри. 651 00:32:11,350 --> 00:32:16,380 Така че това е нещо като вълнуващите причина JavaScript е наистина 652 00:32:16,380 --> 00:32:19,810 подходящи или някои хора си мислят, че това е подходящ език за този вид 653 00:32:19,810 --> 00:32:22,530 шофьор събитие на сървъра, защото имате тези анонимни функции. 654 00:32:22,530 --> 00:32:26,150 Имате цялата идея на този асинхронен код. 655 00:32:26,150 --> 00:32:27,060 OK. 656 00:32:27,060 --> 00:32:30,360 Някой да има някакви въпроси? 657 00:32:30,360 --> 00:32:30,470 >> OK. 658 00:32:30,470 --> 00:32:33,440 Така че това е simple.js. 659 00:32:33,440 --> 00:32:38,070 Така че нека да разгледаме един по- или още няколко. 660 00:32:38,070 --> 00:32:42,040 Така че това е sleep.js. 661 00:32:42,040 --> 00:32:47,160 Така е всеки, запознат с функцията сън C? 662 00:32:47,160 --> 00:32:50,936 От може би един от най-ранните лекциите или нещо подобно? 663 00:32:50,936 --> 00:32:54,650 >> Така че в общи линии може да премине в Мисля, че брой секунди или ако използвате U 664 00:32:54,650 --> 00:32:57,080 спя няколко милисекунди или наносекунди. 665 00:32:57,080 --> 00:33:00,450 И в общи линии програмата просто ще спре се кандидатира за този период от време. 666 00:33:00,450 --> 00:33:01,280 Нали така? 667 00:33:01,280 --> 00:33:06,970 И тогава той ще се събуди и в крайна сметка тогава той просто ще продължат да вървят 668 00:33:06,970 --> 00:33:08,340 програмата. 669 00:33:08,340 --> 00:33:12,740 >> Така че този сървър вид дава впечатлението за спане. 670 00:33:12,740 --> 00:33:17,580 Така че забележите, че имаме едни и същи res.writeHead 200 с и заглавката 671 00:33:17,580 --> 00:33:22,130 преди, но след това ние се обаждате този функция, наречена набор таймаут. 672 00:33:22,130 --> 00:33:26,170 Задайте таймаут също е на разположение в вашия уеб браузър Google Chrome 673 00:33:26,170 --> 00:33:28,000 или Safari или нещо такова. 674 00:33:28,000 --> 00:33:31,720 И в общи линии това, което го прави тук е, че е като във функция. 675 00:33:31,720 --> 00:33:33,360 Забележете, отново, това е анонимна функция. 676 00:33:33,360 --> 00:33:36,310 Така че това е нещо готино, защото сме използване на анонимни функции в рамките на един 677 00:33:36,310 --> 00:33:38,950 анонимна функция, която може да е малко странно. 678 00:33:38,950 --> 00:33:42,270 >> Но това е като тази функция, която е основно казва - и на начина, по който 679 00:33:42,270 --> 00:33:47,430 произведения е в 5000 милисекунди, искам да изпълнява тази функция, която 680 00:33:47,430 --> 00:33:50,830 просто завършва отговора и пише хей. 681 00:33:50,830 --> 00:33:56,730 Така че това създава впечатление за подобно спи, но начинът това всъщност 682 00:33:56,730 --> 00:33:59,780 работи е, че ние ще тече през тази линия много бързо. 683 00:33:59,780 --> 00:34:01,190 Ние просто пиша нещо. 684 00:34:01,190 --> 00:34:03,780 И тогава ние също ще преминават през тази линия много бързо. 685 00:34:03,780 --> 00:34:08,620 Така че ние не сме всъщност ще да се изчака пет секунди. 686 00:34:08,620 --> 00:34:11,370 Ние просто ще избяга този код незабавно. 687 00:34:11,370 --> 00:34:14,219 >> И тогава там е, отново, този малък събитие контур, който вече има това нещо 688 00:34:14,219 --> 00:34:17,570 регистри, които по същество е просто постоянно обикаля в кръг 689 00:34:17,570 --> 00:34:21,620 и гледайки часовника в един-единствен Нишки и поговорка, има пет секунда 690 00:34:21,620 --> 00:34:22,360 Все още премина? 691 00:34:22,360 --> 00:34:26,409 И тогава, когато тя вижда, че втората ръка се е преместило около пет секунди или 692 00:34:26,409 --> 00:34:29,190 каквото и да, тогава той се събужда и казва: ох, какво трябва да направя? 693 00:34:29,190 --> 00:34:30,350 О, аз трябва да изпълня този код. 694 00:34:30,350 --> 00:34:33,110 И след това ще тичам res.end хей. 695 00:34:33,110 --> 00:34:35,360 >> Така че отново, ние никога не чакаме тук. 696 00:34:35,360 --> 00:34:38,590 Така че това не е, че този код във вътрешността на тази функция ще отнеме пет 697 00:34:38,590 --> 00:34:39,900 секунди, за да се движат. 698 00:34:39,900 --> 00:34:43,090 Този код ще се изпълнява до голяма степен мигновено, най-малко по отношение на 699 00:34:43,090 --> 00:34:46,139 петте секундите, които ние говорим за по-рано, преди. 700 00:34:46,139 --> 00:34:52,100 >> Така, само за да покаже това в действие, Мога да го направя Node.sleep.js. 701 00:34:52,100 --> 00:34:55,159 И направих аз обърквам нещо? 702 00:34:55,159 --> 00:34:56,310 Вероятно. 703 00:34:56,310 --> 00:34:57,410 Извинете. 704 00:34:57,410 --> 00:34:59,530 Нека да видим какво можем да направим, за да се определи това. 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 Така че определено използвате Node.js. 709 00:35:17,464 --> 00:35:19,440 Аз съм просто се шегувам. 710 00:35:19,440 --> 00:35:19,570 OK. 711 00:35:19,570 --> 00:35:20,820 Само една секунда. 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 Аз знам какво е то. 715 00:35:29,130 --> 00:35:34,440 >> Така че въпросът е, че в другия ми раздела тук, бягах Node вече на 716 00:35:34,440 --> 00:35:36,590 същия адрес, 1337. 717 00:35:36,590 --> 00:35:43,370 Така че грешката, че това хвърли, ако се вгледаме при това реално тясно, е адрес в 718 00:35:43,370 --> 00:35:45,180 използвате, EADDRINUSE. 719 00:35:45,180 --> 00:35:47,970 Така че аз вече бях с 1337 тук. 720 00:35:47,970 --> 00:35:52,210 Така че, ако заключа това разстояние, а след това аз сега опитайте се да стартирате тази, надявам се, всичко 721 00:35:52,210 --> 00:35:53,210 ще се оправи. 722 00:35:53,210 --> 00:35:53,440 OK. 723 00:35:53,440 --> 00:35:57,020 Така че може да има само едно нещо, сортиране на слушане на порт наведнъж. 724 00:35:57,020 --> 00:35:59,660 Друго решение би било за мен просто да редактирате тази програма и да направи 725 00:35:59,660 --> 00:36:02,370 тя да бъде като 1338 или нещо така. 726 00:36:02,370 --> 00:36:04,100 >> Но сега сън работи. 727 00:36:04,100 --> 00:36:06,400 Така че нека действително да я изпробвате в браузър този път, защото това е 728 00:36:06,400 --> 00:36:09,080 малко скучен, за да видите това в терминал. 729 00:36:09,080 --> 00:36:13,560 Така че аз съм просто ще отиде в тази 127 адрес отново в 1337. 730 00:36:13,560 --> 00:36:14,850 И ако можете да го видите - 731 00:36:14,850 --> 00:36:18,050 Аз не знам, ако можете - но ми браузъра, като един много, много дълъг 732 00:36:18,050 --> 00:36:20,600 време, за да се зареди или около пет секунди. 733 00:36:20,600 --> 00:36:23,460 >> И тогава, след това, той най-накрая приключваща на отговора. 734 00:36:23,460 --> 00:36:29,070 И вие не може да го види, защото това нещо се премества върху малко, но ако направя 735 00:36:29,070 --> 00:36:32,500 това е малко по-малък, можете може да видите, че казва, хей. 736 00:36:32,500 --> 00:36:35,130 Така че аз имам Хей, но след пет секунди. 737 00:36:35,130 --> 00:36:38,510 И това може да е малко по-чисти, за да видите тук на терминала, така че аз съм 738 00:36:38,510 --> 00:36:40,980 ще направим - 739 00:36:40,980 --> 00:36:43,540 нека да направим тук - 740 00:36:43,540 --> 00:36:48,370 нека да направим Curl този адрес отново с 1337. 741 00:36:48,370 --> 00:36:50,820 И аз просто вид трябва да седи тук в продължение на пет секунди. 742 00:36:50,820 --> 00:36:53,760 Но забележете, че сървърът може да приеме нови отговори. 743 00:36:53,760 --> 00:36:54,940 Така че това отпечатва хей. 744 00:36:54,940 --> 00:36:58,720 >> И за това демо, основно това, което Мога да го направя в този друг раздел - 745 00:36:58,720 --> 00:37:02,640 така че нека да кажем, че правим това в друг раздел, Отивам да направя Curl и същото 746 00:37:02,640 --> 00:37:03,780 нещо отново. 747 00:37:03,780 --> 00:37:06,600 И аз ще се опитам да риташ тези момчета изключва в същото време. 748 00:37:06,600 --> 00:37:08,260 Така че аз ще направя това, и аз съм няма да се състезава повече тук, и аз съм 749 00:37:08,260 --> 00:37:09,650 няма да го направя отново. 750 00:37:09,650 --> 00:37:14,030 >> И нека да го направи, така че да може да види и двете от тях. 751 00:37:14,030 --> 00:37:20,250 Това една отпечатана хей и че един печатни хей целия път на - 752 00:37:20,250 --> 00:37:22,550 нека да направим този експеримент отново. 753 00:37:22,550 --> 00:37:25,100 Всъщност, нека използваме тази трик, ако това е ОК. 754 00:37:25,100 --> 00:37:30,520 >> Така че аз ще използвам нещо черупка, че ми позволява да основно тичам две копия 755 00:37:30,520 --> 00:37:32,630 на тази програма в паралел. 756 00:37:32,630 --> 00:37:36,070 Така ще стартирате първата програма и втората програма в паралел. 757 00:37:36,070 --> 00:37:39,060 Така че сега, ако натиснете Enter, то се случва да направи това искане почти 758 00:37:39,060 --> 00:37:40,570 мигновено в същото време. 759 00:37:40,570 --> 00:37:42,620 Така че нека да даде този шанс. 760 00:37:42,620 --> 00:37:44,950 >> Така че сега забележите пише два процеса. 761 00:37:44,950 --> 00:37:50,630 И ако сте любопитни, че 27 000 номер е основно ID процес. 762 00:37:50,630 --> 00:37:52,940 И след това забележите, те отпечатват хей в същото време. 763 00:37:52,940 --> 00:37:56,820 Тя не беше като ние трябваше да чакаме пет секунди за един и тогава, след това, 764 00:37:56,820 --> 00:37:59,640 пет секунди по-късно получи втори. 765 00:37:59,640 --> 00:38:03,300 Така че това е вид, в някои отношения, това е не наистина доказателство, но това е 766 00:38:03,300 --> 00:38:07,390 интуитивен доказателства, че това не е просто като чака пет секунди и блокиране 767 00:38:07,390 --> 00:38:08,960 цялата тема. 768 00:38:08,960 --> 00:38:10,720 OK готино. 769 00:38:10,720 --> 00:38:17,850 >> Така Аарон зададе въпрос по-рано, че е, добре какво ще стане ако ние направим нещо - 770 00:38:17,850 --> 00:38:18,735 Да? 771 00:38:18,735 --> 00:38:19,051 >> ПУБЛИКАТА: Изчакайте. 772 00:38:19,051 --> 00:38:21,585 Как е, че се различава от ФОРМАТ буфер, все пак? 773 00:38:21,585 --> 00:38:23,010 Не тя автоматично прави това? 774 00:38:23,010 --> 00:38:25,390 Защо ни е нужно да се притеснявате за него? 775 00:38:25,390 --> 00:38:26,555 >> KEVIN SCHMID: О, може ли се каже, че по едно и също време? 776 00:38:26,555 --> 00:38:29,510 >> ПУБЛИКАТА: не харесва ФОРМАТ буфер правя точно същото нещо? 777 00:38:29,510 --> 00:38:31,280 >> KEVIN SCHMID: буфер ФОРМАТ? 778 00:38:31,280 --> 00:38:32,753 >> Публика: Да. 779 00:38:32,753 --> 00:38:33,244 OK. 780 00:38:33,244 --> 00:38:40,609 Не беше в един от тестовете са били говорим за това как ако щракнете с десния ФОРМАТ 781 00:38:40,609 --> 00:38:42,899 нещо и след това да го спрете един второ, и след това го има контур десет 782 00:38:42,899 --> 00:38:46,530 пъти, тя ще Изчакайте десет секунди и се тогава ФОРМАТ всичко заедно? 783 00:38:46,530 --> 00:38:47,460 >> KEVIN SCHMID: О, OK. 784 00:38:47,460 --> 00:38:49,170 >> ПУБЛИКАТА: Е то прави същото нещо, след това в този случай? 785 00:38:49,170 --> 00:38:52,630 >> KEVIN SCHMID: Така че въпросът е основно в една от бившите викторини 786 00:38:52,630 --> 00:38:57,200 или нещо подобно, не е въпрос, който в общи линии, ако се каже, печат е 10 787 00:38:57,200 --> 00:39:01,490 неща, по време и след това спах като в процеса на отпечатване на тези навън, 788 00:39:01,490 --> 00:39:04,850 в края по някаква причина, то би просто зареже тези на всички, на екрана. 789 00:39:04,850 --> 00:39:06,740 Така че има вид на две различни концепции тук. 790 00:39:06,740 --> 00:39:10,400 >> Така че предполагам, едно нещо е, че в този случай, че си имаме работа с два различни 791 00:39:10,400 --> 00:39:13,510 сортиране на хората питат сървъра за неща, по едно и също време. 792 00:39:13,510 --> 00:39:17,455 И причината, че ФОРМАТ вид изчаква така и всичко сметища навън 793 00:39:17,455 --> 00:39:21,760 наведнъж е по-свързани с как ФОРМАТ вид - 794 00:39:21,760 --> 00:39:25,100 така че начин ФОРМАТ е всъщност приложени е то основно трябва да 795 00:39:25,100 --> 00:39:28,850 говори с операционната система, за да напишете тези неща на конзолата. 796 00:39:28,850 --> 00:39:33,460 Така че не искам да правя всичко това неща веднага, когато ти казват ФОРМАТ 797 00:39:33,460 --> 00:39:36,260 някои низ, защото това би могло да се скъпи, ако трябва да 798 00:39:36,260 --> 00:39:37,340 прави това всеки път. 799 00:39:37,340 --> 00:39:41,530 >> Така че, ако вие направите ФОРМАТ хей, вашата програма не може в действителност да отпечатате, че 800 00:39:41,530 --> 00:39:43,040 веднага към конзолата. 801 00:39:43,040 --> 00:39:46,080 Тя може да се каже, добре, аз го е написал. 802 00:39:46,080 --> 00:39:49,570 И тогава вид те чакам да се даде го прави по-малко, преди всъщност 803 00:39:49,570 --> 00:39:51,380 да я пиша, за да конзолата. 804 00:39:51,380 --> 00:39:54,040 >> Така че причината, че това е така - 805 00:39:54,040 --> 00:39:56,450 и това е вид на несвързани на сън - 806 00:39:56,450 --> 00:40:00,060 е, че сънят е нещо просто инжектира там да се демонстрира 807 00:40:00,060 --> 00:40:02,480 факта, че не пише то синхронно. 808 00:40:02,480 --> 00:40:06,210 Но причината за това е просто изпълнение, така че да не се налага да 809 00:40:06,210 --> 00:40:08,920 направи, че много контакти с операционната система. 810 00:40:08,920 --> 00:40:12,300 >> Но тук, това което наистина се опитва да направи с този сън нещо е просто шоу 811 00:40:12,300 --> 00:40:17,730 че когато имаме двама души, които посещават този сайт, тя няма да сложи 812 00:40:17,730 --> 00:40:22,310 ги в линия, където тя ще каже Аз трябва да ви помогне, и след това, когато съм 813 00:40:22,310 --> 00:40:25,350 напълно завършен ви помага след това пет секунди, а след това аз ще 814 00:40:25,350 --> 00:40:26,750 преминете към следващия човек. 815 00:40:26,750 --> 00:40:29,515 Така че искането на първия човек не прави връзвам това събитие контур 816 00:40:29,515 --> 00:40:31,610 ако това има смисъл. 817 00:40:31,610 --> 00:40:34,980 >> Но тук е всъщност пример на нещо, което ще вържеш 818 00:40:34,980 --> 00:40:36,090 до контура на събитието. 819 00:40:36,090 --> 00:40:39,130 Така че тук е ужасна функция, за да изчисли тото Фибоначи. 820 00:40:39,130 --> 00:40:43,510 Това е буквално най-лошия начин, по който може да изчисли тото номера на Фибоначи. 821 00:40:43,510 --> 00:40:48,480 И това е всъщност само да потвърдя когато това дойде от, 822 00:40:48,480 --> 00:40:49,330 всъщност има - 823 00:40:49,330 --> 00:40:53,230 Искам да кажа, можете да се опитате да отида да го намерите - но там е като един много дълъг блог 824 00:40:53,230 --> 00:40:54,130 пост, че някой е написал. 825 00:40:54,130 --> 00:40:55,660 Това е като един от онези Reddit неща. 826 00:40:55,660 --> 00:40:59,650 Но някой критикува Node.js, и те са използвали това като пример. 827 00:40:59,650 --> 00:41:03,700 Така че аз вид Исках просто да ви покажа две различни гледни точки, само за да получат 828 00:41:03,700 --> 00:41:07,320 общо разбиране на понятията зад тези две неща. 829 00:41:07,320 --> 00:41:13,050 >> Но това е избрано като просто ужасна, ужасно неефективна изчислително 830 00:41:13,050 --> 00:41:15,940 интензивен начин да се изчисли тото число на Фибоначи. 831 00:41:15,940 --> 00:41:21,180 Така че просто като страничен бележка, защо е това ужасно като по един начин? 832 00:41:21,180 --> 00:41:23,210 Да? 833 00:41:23,210 --> 00:41:25,130 >> Публика: Да речем, че започнем с 1000. 834 00:41:25,130 --> 00:41:27,050 1000 се разделя на 999 и 998. 835 00:41:27,050 --> 00:41:28,970 Всяка от това се разделя на две неща. 836 00:41:28,970 --> 00:41:30,890 Всяка от това се разделя на две неща. 837 00:41:30,890 --> 00:41:31,355 >> KEVIN SCHMID: Точно така. 838 00:41:31,355 --> 00:41:32,400 >> ПУБЛИКАТА: All пътя надолу. 839 00:41:32,400 --> 00:41:32,840 >> KEVIN SCHMID: Точно така. 840 00:41:32,840 --> 00:41:37,330 Така че просто да се повтаря за камерата, ако аз обадите на ПИБ като 1000 или нещо 841 00:41:37,330 --> 00:41:41,810 така, тя очевидно не е по-малко от или равна на едно, така че аз отивам да 842 00:41:41,810 --> 00:41:46,040 отида на друго дело, а след това аз ще да се обадя на ПИБ 999 плюс 998 ПИБ. 843 00:41:46,040 --> 00:41:50,290 И тогава почти всички от които работа, която ПИБ 999 прави, е 844 00:41:50,290 --> 00:41:52,950 вид на това ниво. 845 00:41:52,950 --> 00:41:55,620 Ако отидете надолу, това е още по-излишен от това, но ако просто 846 00:41:55,620 --> 00:42:01,390 мисля изчислителна ПИБ получава 998 ни доста близо до ПИБ 999. 847 00:42:01,390 --> 00:42:05,860 Така че ние наистина трябва да е малко по- умен за това как ние вид на повторно използване 848 00:42:05,860 --> 00:42:07,580 тези, но ние не сме повторно използване тези неща изобщо. 849 00:42:07,580 --> 00:42:11,860 Така че можете да си представите тази гигантска, гигантско дърво, което е просто ужасно. 850 00:42:11,860 --> 00:42:12,940 >> Но така или иначе, OK. 851 00:42:12,940 --> 00:42:14,040 Така че това е измислица. 852 00:42:14,040 --> 00:42:15,530 Той просто отнема известно време да се изпълнява. 853 00:42:15,530 --> 00:42:16,510 Да? 854 00:42:16,510 --> 00:42:17,760 >> ПУБЛИКАТА: [недоловим]. 855 00:42:17,760 --> 00:42:20,430 856 00:42:20,430 --> 00:42:22,481 >> KEVIN SCHMID: О, може ли повторя въпроса? 857 00:42:22,481 --> 00:42:23,731 >> ПУБЛИКАТА: [недоловим]. 858 00:42:23,731 --> 00:42:30,840 859 00:42:30,840 --> 00:42:33,990 >> KEVIN SCHMID: О, така че това е само код че ще бъде нещо като върху 860 00:42:33,990 --> 00:42:34,850 от страна на сървъра. 861 00:42:34,850 --> 00:42:38,100 Така че това не се случва, за да бъде намерен в браузъра или нещо подобно. 862 00:42:38,100 --> 00:42:42,160 Това е основно това, което имаме, е, че когато потребителят тук доста много марки 863 00:42:42,160 --> 00:42:45,300 тяхно искане отново, когато нещо отправят искане, ние ще да се обадя 864 00:42:45,300 --> 00:42:47,040 тази функция на сървъра страна. 865 00:42:47,040 --> 00:42:50,480 И тогава ние ще получите резултата обратно от обажда тази функция. 866 00:42:50,480 --> 00:42:52,460 И тогава ние просто ще отпечата това на потребителя. 867 00:42:52,460 --> 00:42:54,580 Така потребителят не наистина се справят с тази функция прекалено много. 868 00:42:54,580 --> 00:42:57,270 >> Това ли беше въпросът? 869 00:42:57,270 --> 00:42:58,470 Това прави ли смисъл? 870 00:42:58,470 --> 00:42:58,810 OK. 871 00:42:58,810 --> 00:43:00,930 Cool. 872 00:43:00,930 --> 00:43:04,240 >> Така че отново, ние правим всичко това res.writeHead нещо, където ние разпечатате 873 00:43:04,240 --> 00:43:05,150 заглавната си част. 874 00:43:05,150 --> 00:43:09,730 И тогава аз се сложи край на отговор чрез правене магическото число е ПИБ 45. 875 00:43:09,730 --> 00:43:12,100 Така че нека просто стартирате този сървър. 876 00:43:12,100 --> 00:43:15,190 Така че аз ще направя fib.js. възлите 877 00:43:15,190 --> 00:43:17,340 Така че сега ми ПИБ сървър е стартиран. 878 00:43:17,340 --> 00:43:21,790 >> И след това тук, аз отивам да направите едно от тези. 879 00:43:21,790 --> 00:43:22,200 OK? 880 00:43:22,200 --> 00:43:24,960 Така че аз съм просто ще кажа, Curl. 881 00:43:24,960 --> 00:43:32,226 Така че това ще отнеме малко повече време, но да се надяваме скоро ще завърши и 882 00:43:32,226 --> 00:43:35,660 тя ще отпечатва, че 45-та Фибоначи номер. 883 00:43:35,660 --> 00:43:36,910 >> ПУБЛИКАТА: [недоловим]. 884 00:43:36,910 --> 00:43:40,720 885 00:43:40,720 --> 00:43:42,050 >> KEVIN SCHMID: тя трябва да да се свърши много скоро. 886 00:43:42,050 --> 00:43:43,780 Така че тя трябва да вземе 5-6 секунди. 887 00:43:43,780 --> 00:43:48,570 Аз не знам, че е просто V8 е супер бързо, но във всеки случай, това е 888 00:43:48,570 --> 00:43:52,700 много кратък пример и нарочно грубоват на нетривиални 889 00:43:52,700 --> 00:43:54,200 изчисление. 890 00:43:54,200 --> 00:43:56,700 Така че след известно време, тя не се получи това. 891 00:43:56,700 --> 00:44:02,130 >> Но сега, какво ще стане ако го направя, че същия вид експеримент, както и преди, когато правя 892 00:44:02,130 --> 00:44:04,010 две искания в същото време? 893 00:44:04,010 --> 00:44:06,990 Така че тук аз отивам на Curl на този адрес, и аз отивам 894 00:44:06,990 --> 00:44:08,260 да се направи друг Curl. 895 00:44:08,260 --> 00:44:12,070 И не забравяйте, когато ние направихме това за спя на сървъра, когато ние основно това имаше 896 00:44:12,070 --> 00:44:15,320 след пет секунди те доста много двамата излязоха на задния десен 897 00:44:15,320 --> 00:44:16,380 по същото време. 898 00:44:16,380 --> 00:44:18,650 Така че това не е особено вързана. 899 00:44:18,650 --> 00:44:20,290 >> Но нека да опитаме сега. 900 00:44:20,290 --> 00:44:22,370 ОК, така че ние имаме нашите два процеса. 901 00:44:22,370 --> 00:44:24,210 Не забравяйте, това са документи за самоличност на процеса. 902 00:44:24,210 --> 00:44:25,900 Това ще бъде малко неловко, докато ние се забави. 903 00:44:25,900 --> 00:44:31,340 904 00:44:31,340 --> 00:44:35,360 Така че нека просто да остана тук и да чакам. 905 00:44:35,360 --> 00:44:37,090 >> Така че един от тях трябва да идват обратно, след като - 906 00:44:37,090 --> 00:44:39,190 ОК, така че се е върнал. 907 00:44:39,190 --> 00:44:43,570 Но тогава защо не го направи на втора един се върна, просто все още? 908 00:44:43,570 --> 00:44:44,389 Да? 909 00:44:44,389 --> 00:44:49,280 >> ПУБЛИКАТА: Сървърът не може да направи нищо , докато тя е изчислителна че голям брой. 910 00:44:49,280 --> 00:44:51,620 >> KEVIN SCHMID: Точно така. 911 00:44:51,620 --> 00:44:55,395 Така че отговорът е само, че сървърът Наистина не мога да направя нищо, докато 912 00:44:55,395 --> 00:44:57,460 това е изчислителна че числото на Фибоначи. 913 00:44:57,460 --> 00:44:59,360 Така че сега аз просто имам две мои неща обратно. 914 00:44:59,360 --> 00:45:03,210 Но аз предполагам, че просто да се мисли за кода малко повече, как се работи 915 00:45:03,210 --> 00:45:05,030 и всичко останало. 916 00:45:05,030 --> 00:45:11,750 >> Така че тази функция тук е кодът, който Казах на този сървър да работи, когато го 917 00:45:11,750 --> 00:45:14,100 получава ново входящо искане. 918 00:45:14,100 --> 00:45:17,940 Така че това е просто ще избяга през тази целия код, а след това ще отидем 919 00:45:17,940 --> 00:45:21,120 обратно към контура на събитието и след това да продължите проверка за нови събития. 920 00:45:21,120 --> 00:45:23,670 Така че основно това, което сме се случва е сървъра 921 00:45:23,670 --> 00:45:25,080 слушане за нови неща. 922 00:45:25,080 --> 00:45:28,070 Първият човек пита за какво е 45. 923 00:45:28,070 --> 00:45:30,490 В момента тече този код, за да го изчисли. 924 00:45:30,490 --> 00:45:33,420 Този код отнема около пет до шест секунди, за да се движат. 925 00:45:33,420 --> 00:45:36,990 Тогава можем да се върнем към контура на събитие и се проверява за нови искания. 926 00:45:36,990 --> 00:45:42,700 >> Така че това е един пример за това как, ако има неща, които са така наречените Compute 927 00:45:42,700 --> 00:45:48,140 обвързани, или да използвате много изчислителни не мощност, но като са 928 00:45:48,140 --> 00:45:50,260 изчислително интензивни - 929 00:45:50,260 --> 00:45:54,080 Предполагам, че едно нещо, което да се каже за това е че тази функция се справя напълно, 930 00:45:54,080 --> 00:45:56,310 в по-голямата си част, доста полезна работа прав. 931 00:45:56,310 --> 00:45:59,970 През цялото време, че обаждане функция е стартиран, той беше доста 932 00:45:59,970 --> 00:46:03,670 много прекарва повечето от времето си само изчислителни номер, който тото Фибоначи. 933 00:46:03,670 --> 00:46:05,930 >> Но имахме само една нишка да се справим. 934 00:46:05,930 --> 00:46:10,270 В модела на Apache, когато двама души отправил искането, да получите ПИБ 45, ние 935 00:46:10,270 --> 00:46:11,610 би трябвало да има две различни теми. 936 00:46:11,610 --> 00:46:15,060 И тогава работата на операционната система щеше да е, или на ниво потребител 937 00:46:15,060 --> 00:46:18,660 код, който управлява нишките, щеше да е да режа, че въз 938 00:46:18,660 --> 00:46:23,060 CPU, или дори ако сте имали множество процесори, ги разпределя равномерно по процесори 939 00:46:23,060 --> 00:46:26,130 така че и двамата са били покритие приблизително по едно и също време. 940 00:46:26,130 --> 00:46:31,120 >> Така, само за да ви покажа как може да се оправи от - и това не е общо перфектно 941 00:46:31,120 --> 00:46:34,280 решение, но някак това как можем да прави се върна тук и да направим 942 00:46:34,280 --> 00:46:35,880 малко по-добре. 943 00:46:35,880 --> 00:46:41,540 Така че това, което имаме тук е една програма, наречена Fib C. И това основно използва 944 00:46:41,540 --> 00:46:45,690 още един от модулите на възлите се нарича Модулът Process Child. 945 00:46:45,690 --> 00:46:49,210 Така че аз бях включен, че в горния вид от както аз ще направя един паунд включва 946 00:46:49,210 --> 00:46:51,230 process.h дете или нещо такова. 947 00:46:51,230 --> 00:46:56,210 Сега имам достъп до тази CP променлива , който притежава всички ми функционалност. 948 00:46:56,210 --> 00:47:01,810 >> Така че сега, какво правя в този отговор манипулатор е Бягам тази програма 949 00:47:01,810 --> 00:47:04,100 дот наклонена черта ПИБ 45. 950 00:47:04,100 --> 00:47:06,820 Така че това, което съм направил - и аз съм просто ще да излязат от тази програма за 951 00:47:06,820 --> 00:47:07,620 малко - 952 00:47:07,620 --> 00:47:11,060 е аз съм написал програма C, че основно Изчислява 953 00:47:11,060 --> 00:47:12,630 тото число на Фибоначи. 954 00:47:12,630 --> 00:47:15,960 Така че тук е само една програма, аз съм писал в C, която изчислява това. 955 00:47:15,960 --> 00:47:19,040 Мога да го компилирате, и мога да тичам то в командния ред. 956 00:47:19,040 --> 00:47:22,150 И това ще се изчисли 45-то число на Фибоначи. 957 00:47:22,150 --> 00:47:24,510 >> Така че забележите, че просто отнема доста много по-дълго. 958 00:47:24,510 --> 00:47:28,240 Вероятно би могъл да използва тире 03 до него или нещо такова оптимизиране, 959 00:47:28,240 --> 00:47:31,050 но аз просто направих като редовен настройки компилатор. 960 00:47:31,050 --> 00:47:33,260 И това го отпечатва. 961 00:47:33,260 --> 00:47:36,830 >> Но сега, аз какво вид правиш? 962 00:47:36,830 --> 00:47:39,800 О, съжалявам, грешен файл. 963 00:47:39,800 --> 00:47:42,800 Така че аз правя едно и също нещо с заглавието като преди. 964 00:47:42,800 --> 00:47:45,780 Тогава аз правя това cp.exec. 965 00:47:45,780 --> 00:47:49,460 И така, какво ще направи тя е е щеше да стартирате тази програма. 966 00:47:49,460 --> 00:47:51,960 Но начина, по който това работи е, че това няма да се чака 967 00:47:51,960 --> 00:47:53,400 тази програма да се завърши. 968 00:47:53,400 --> 00:47:56,000 Тя просто основно се казва, изпълни тази програма. 969 00:47:56,000 --> 00:47:58,700 Така че основно напишете това в командния ред вид. 970 00:47:58,700 --> 00:48:02,350 >> И тогава, когато сте готови с го, стартирайте тази функция. 971 00:48:02,350 --> 00:48:04,800 Така че сега ние вид се получи това Цялата възстановено нещо от 972 00:48:04,800 --> 00:48:06,750 като ние не чакаме. 973 00:48:06,750 --> 00:48:08,530 Дали този вид да има смисъл? 974 00:48:08,530 --> 00:48:08,990 Да? 975 00:48:08,990 --> 00:48:11,060 >> ПУБЛИКАТА: [недоловим]? 976 00:48:11,060 --> 00:48:13,610 >> KEVIN SCHMID: Така че това действително ще отвори нов процес, за да го направя. 977 00:48:13,610 --> 00:48:19,310 Така че това е всъщност, в някои отношения, зло, а не супер зло, но тя е 978 00:48:19,310 --> 00:48:22,990 важно да се каже, че това е вид Връщам се, от една страна, на Apache 979 00:48:22,990 --> 00:48:26,450 модел, при който правим теми и процеси за всяко искане или 980 00:48:26,450 --> 00:48:29,280 процеси за всяка заявка. 981 00:48:29,280 --> 00:48:32,090 Така че това е един вид аналогична на това, което прави Apache. 982 00:48:32,090 --> 00:48:35,110 В някои случаи, той просто ще използва нов нишка, която е малко по-лек 983 00:48:35,110 --> 00:48:39,040 тегло от един процес, но Apache може окажете разклоняване нов процес 984 00:48:39,040 --> 00:48:43,370 което е един вид на това, което правим тук имплицитно чрез правене точка наклонена черта ПИБ 45. 985 00:48:43,370 --> 00:48:48,690 >> И след това в този случай, ние вид понесат същите разходи на процеси. 986 00:48:48,690 --> 00:48:50,710 Така че това е само едно нещо, което може да направи. 987 00:48:50,710 --> 00:48:52,600 Но само за да се покаже този вид движение. 988 00:48:52,600 --> 00:48:57,120 И този разговор е просто наистина, насочени към представянето на тези видове програми, като 989 00:48:57,120 --> 00:49:00,710 начин да покаже различни гледни точки по как да проектирате сървъри като тази. 990 00:49:00,710 --> 00:49:08,300 Така че това е в ход, и то сега, ако го направя това отново, аз имам две технологични документи за самоличност. 991 00:49:08,300 --> 00:49:10,320 >> Нека просто да поговорим за неща, които да сочат навън. 992 00:49:10,320 --> 00:49:11,980 Така че забележите, че те са постепенно. 993 00:49:11,980 --> 00:49:12,700 Това е готино. 994 00:49:12,700 --> 00:49:15,140 Защото това беше преди 27 122. 995 00:49:15,140 --> 00:49:18,580 Но забележете сега, те се върнаха приблизително по едно и също време. 996 00:49:18,580 --> 00:49:23,960 >> И сега, добър въпрос да попитам за защо бе, че делото е, чиято работа 997 00:49:23,960 --> 00:49:27,590 е сега някак да се направят тези неща, вид играе честно с всеки 998 00:49:27,590 --> 00:49:31,350 други, тези два случая на дот наклонена черта ПИБ 45, че аз се завтече 999 00:49:31,350 --> 00:49:32,880 или че Ран Node? 1000 00:49:32,880 --> 00:49:36,940 Кой вид го прави справедливо, че те двамата се вид базирана тече в момента? 1001 00:49:36,940 --> 00:49:42,900 1002 00:49:42,900 --> 00:49:44,220 >> ПУБЛИКАТА: [недоловим]. 1003 00:49:44,220 --> 00:49:44,620 >> KEVIN SCHMID: Да. 1004 00:49:44,620 --> 00:49:49,740 Така че основно, когато правя точка наклонена черта ПИБ 45 или нещо подобно, сега е 1005 00:49:49,740 --> 00:49:53,750 вид до операционната система, за да се справя по време на работа на тези програми. 1006 00:49:53,750 --> 00:49:56,920 И сега той може да ги планирате на различни процесори или 1007 00:49:56,920 --> 00:49:58,330 да ги планирате. 1008 00:49:58,330 --> 00:50:01,870 Тя може да разреже момента, в който един CPU го получава или че те ще получат 1009 00:50:01,870 --> 00:50:03,330 да се движат по един CPU. 1010 00:50:03,330 --> 00:50:05,620 Така че това е идеята зад това. 1011 00:50:05,620 --> 00:50:07,220 Това прави ли смисъл на всички? 1012 00:50:07,220 --> 00:50:10,950 Така че сега Node не е наистина играе участие в разпределянето на тези задачи. 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 >> Така че това е почти го за примери. 1016 00:50:17,840 --> 00:50:23,370 Аз просто исках да покажа още нещо защото много от това досега е 1017 00:50:23,370 --> 00:50:27,350 не напълно супер практично в някои случаи. 1018 00:50:27,350 --> 00:50:30,970 Мога да си представя, идващи у дома, след това говорим и нещо и да казва като, 1019 00:50:30,970 --> 00:50:35,710 ами аз вид излезе от тези приказки, че Мога да направя Фибоначи сървър за 1020 00:50:35,710 --> 00:50:37,360 последния ми проект. 1021 00:50:37,360 --> 00:50:40,770 Така че тук е просто нещо като още един пример че ще се надяваме да бъде - 1022 00:50:40,770 --> 00:50:44,620 Може би не, но може би - малко по- вид от значение за окончателните проекти и 1023 00:50:44,620 --> 00:50:46,440 мисли в перспектива за такива неща. 1024 00:50:46,440 --> 00:50:48,870 >> Така че това е chat.js. 1025 00:50:48,870 --> 00:50:52,290 Така че това е нещо като някаква проба от страна на сървъра код, който можете да използвате, за да 1026 00:50:52,290 --> 00:50:55,700 създаде малък сървър за чат като вие може да се види на 1027 00:50:55,700 --> 00:50:56,630 Facebook чат или каквото. 1028 00:50:56,630 --> 00:50:59,990 Така че аз не казвам, че това е като Facebook Чат, но това е вид 1029 00:50:59,990 --> 00:51:06,230 като добро - може би не е добре, но може би добър - изходен пункт за чат 1030 00:51:06,230 --> 00:51:08,560 сървър за вашия сайт за окончателен проект. 1031 00:51:08,560 --> 00:51:11,040 Така че нека да погледнем какво прави. 1032 00:51:11,040 --> 00:51:15,500 >> Така че ние сме все това специално нещо в горната част, това VAR SIO 1033 00:51:15,500 --> 00:51:17,050 равнява изисква Socket.IO. 1034 00:51:17,050 --> 00:51:20,280 Така че, това е друго нещо, което не е така всъщност идват в пакет с 1035 00:51:20,280 --> 00:51:22,300 Node, но можете да го инсталирате. 1036 00:51:22,300 --> 00:51:23,480 Това е модул Node. 1037 00:51:23,480 --> 00:51:25,670 Така че това е просто като някакъв разширение на Node. 1038 00:51:25,670 --> 00:51:29,220 >> SocketIO е всъщност наистина някак страхотно. 1039 00:51:29,220 --> 00:51:32,550 Това е една абстракция, че основно това, което тя прави е да е тя ви позволява да 1040 00:51:32,550 --> 00:51:35,770 имат този поток на комуникация между уеб 1041 00:51:35,770 --> 00:51:39,430 браузър и уеб сървър. 1042 00:51:39,430 --> 00:51:45,250 Така че по-голямата си част до момента, сме имали тези много набързо втора или две 1043 00:51:45,250 --> 00:51:48,790 второ комуникации между уеб браузъра и уеб сървъра. 1044 00:51:48,790 --> 00:51:53,310 Така че това е основно отидете на google.com, GET нещата, да го изпрати обратно, и след това 1045 00:51:53,310 --> 00:51:53,770 сме готови. 1046 00:51:53,770 --> 00:51:56,560 Ние никога не говорим отново, докато типове потребители в нещо друго. 1047 00:51:56,560 --> 00:52:01,090 >> Но какво Socket.IO и подобен вид неща - и SocketIO е всъщност един 1048 00:52:01,090 --> 00:52:03,940 от нещата, които се строят в системата като WebSocket което е нещо достъпно 1049 00:52:03,940 --> 00:52:06,440 като част от HTML5 - 1050 00:52:06,440 --> 00:52:09,620 , която ви позволява да получите този продължаващия диалог. 1051 00:52:09,620 --> 00:52:13,990 И това е много полезно в сървър за лафче вид на нещо, защото това е 1052 00:52:13,990 --> 00:52:17,390 нещо като постоянен диалог в някои отношения, защото, ако сте в чата 1053 00:52:17,390 --> 00:52:21,540 с някого, сега можете просто да изпратите съобщение за определяне на тръбата, и тогава 1054 00:52:21,540 --> 00:52:23,940 сървър може да изпратите съобщение на установяване на тръба към другия човек сте 1055 00:52:23,940 --> 00:52:24,520 чатите с. 1056 00:52:24,520 --> 00:52:26,903 И тогава може да има този обменя по този начин. 1057 00:52:26,903 --> 00:52:30,590 1058 00:52:30,590 --> 00:52:32,850 >> Така че това е нещо, което SocketIO е добро за. 1059 00:52:32,850 --> 00:52:38,400 Причината, поради която SocketIO използва WebSockets като едно нещо е, че в 1060 00:52:38,400 --> 00:52:43,980 Освен просто стари WebSockets, тя също прави някои трикове, за да основно 1061 00:52:43,980 --> 00:52:45,610 направи съвместим браузър. 1062 00:52:45,610 --> 00:52:50,040 Така браузъри като Internet Explorer за съжаление не поддържат WebSockets 1063 00:52:50,040 --> 00:52:50,810 с изваждането от кутията. 1064 00:52:50,810 --> 00:52:55,290 Така че той използва някакъв друг вид хладно чист неща с Adobe Flash, за да позволят 1065 00:52:55,290 --> 00:52:57,170 да има кръстосано браузър подкрепа. 1066 00:52:57,170 --> 00:52:58,800 Така че това е наистина полезно. 1067 00:52:58,800 --> 00:53:02,440 >> И всъщност, аз знам, че съм един вид тичане на време тук, но CS50 1068 00:53:02,440 --> 00:53:08,490 Обсъждане, виждали ли сте някога нещо като, аз не знам, празно, така и така е 1069 00:53:08,490 --> 00:53:11,030 отговорите на този пост или нещо така, че функция? 1070 00:53:11,030 --> 00:53:12,250 Това е SocketIO. 1071 00:53:12,250 --> 00:53:15,580 Така че, когато някой започва да пишете в обсъдят поле, за да направи реплика или 1072 00:53:15,580 --> 00:53:20,040 нещо, вашият браузър е това, което е. наречен в SocketIO излъчва някаква 1073 00:53:20,040 --> 00:53:22,660 събитие, което се казва, че някой е отговорите на този пост. 1074 00:53:22,660 --> 00:53:26,110 >> След това сървърът казва, OK, какво трябва да направя? 1075 00:53:26,110 --> 00:53:29,270 Е, сега аз трябва да кажа на тези други момчета , които са на CS50 Обсъждане търсите 1076 00:53:29,270 --> 00:53:31,170 На този пост, че някой да отговори. 1077 00:53:31,170 --> 00:53:34,190 Така че това е нещо, което е SocketIO добре за това продължаващо вид 1078 00:53:34,190 --> 00:53:35,930 поток на диалога. 1079 00:53:35,930 --> 00:53:37,250 OK. 1080 00:53:37,250 --> 00:53:40,060 >> Така че това, което имам тук - и ние сме просто ще игнорира масива връзки 1081 00:53:40,060 --> 00:53:41,390 за малко - 1082 00:53:41,390 --> 00:53:43,080 това, което аз правя, е да направя друг слуша. 1083 00:53:43,080 --> 00:53:46,880 Така че това е просто начина, по Socket.IO се казвайки нека слуша на този порт. 1084 00:53:46,880 --> 00:53:50,060 И тогава аз правя това при връзка. 1085 00:53:50,060 --> 00:53:53,360 Така че това е просто основно Socket IO е начин да се каже, когато получите 1086 00:53:53,360 --> 00:53:55,840 връзка с това, което искате да тече този код. 1087 00:53:55,840 --> 00:53:59,870 >> И забележи, че вместо да се налага REC и ВЕИ преминали там имам Socket. 1088 00:53:59,870 --> 00:54:03,260 И това Socket идея е основно това нещо, което можете да пишете и четете 1089 00:54:03,260 --> 00:54:05,750 от които има потребителя съобщения Вероятно. 1090 00:54:05,750 --> 00:54:10,700 А посланията, които ще изпратят може да мине през това Socket. 1091 00:54:10,700 --> 00:54:12,140 Това прави ли смисъл? 1092 00:54:12,140 --> 00:54:14,490 Така че това е това нещо продължава. 1093 00:54:14,490 --> 00:54:17,820 >> Така че това, което аз правя, е да се обадя Socket.emit. 1094 00:54:17,820 --> 00:54:20,330 И отделят отнема доста много два аргумента. 1095 00:54:20,330 --> 00:54:24,100 Първият аргумент е низ просто представляващ тип 1096 00:54:24,100 --> 00:54:25,270 нещо, което излъчва. 1097 00:54:25,270 --> 00:54:28,120 Така че за този случай, аз употреба този низ ново съобщение. 1098 00:54:28,120 --> 00:54:32,670 И това е само в общи линии казва, че вида на това нещо, което аз съм 1099 00:54:32,670 --> 00:54:34,750 изпращане, е ново съобщение. 1100 00:54:34,750 --> 00:54:38,460 Така че можете да слушате за специфични видове като ново съобщение или каквото 1101 00:54:38,460 --> 00:54:39,960 с помощта на точка. 1102 00:54:39,960 --> 00:54:44,570 >> Така че връзка и потребителското изпратен там, ако погледнете където ние наричаме точка на, 1103 00:54:44,570 --> 00:54:48,150 това са други низове, които представляват видове потребителски съобщения. 1104 00:54:48,150 --> 00:54:52,060 Така че това е в общи линии може да имате тази емитират един от тези видове съобщения, и 1105 00:54:52,060 --> 00:54:55,520 след това направете нещо в отговор на един от тези видове съобщения 1106 00:54:55,520 --> 00:54:57,640 >> Така че аз съм този, излъчващи ново съобщение. 1107 00:54:57,640 --> 00:55:00,540 Отиваме да се игнорира connections.push за секунда. 1108 00:55:00,540 --> 00:55:03,360 Но след това аз казвам, Socket.on потребител е изпратил. 1109 00:55:03,360 --> 00:55:07,540 Така че сега това е нещо като, когато потребителското ми изпраща съобщение, искам 1110 00:55:07,540 --> 00:55:09,240 можете да изпълните този код. 1111 00:55:09,240 --> 00:55:12,080 И забележи, че тази анонимна функция предприема в тази променлива 1112 00:55:12,080 --> 00:55:16,300 нарича данни, което е основно ще да има съобщение на потребителя. 1113 00:55:16,300 --> 00:55:20,700 >> Така че сега нека вид говори за масива връзки. 1114 00:55:20,700 --> 00:55:24,590 Така че това е предназначено за чат клиент където основно всички са вид в 1115 00:55:24,590 --> 00:55:25,950 същото чата. 1116 00:55:25,950 --> 00:55:29,640 Така че основно, това, което ние трябва да се запази около някакъв масив, който в общи линии 1117 00:55:29,640 --> 00:55:33,170 представя всички народи в чата някои начини, ако това има смисъл. 1118 00:55:33,170 --> 00:55:33,340 Нали така? 1119 00:55:33,340 --> 00:55:37,190 Защото ние трябва да знаем кои са тези момчета са за да можем да ги изпращате съобщения 1120 00:55:37,190 --> 00:55:39,140 че други хора да ни изпратите. 1121 00:55:39,140 --> 00:55:44,440 >> Така че това, което прави този код е, когато потребител изпраща съобщение - това е вида на 1122 00:55:44,440 --> 00:55:45,300 събитието - 1123 00:55:45,300 --> 00:55:47,120 отиваме да тече този код. 1124 00:55:47,120 --> 00:55:51,240 И това, което ние правим, е да преминете през този масив, който ние нарекохме връзки. 1125 00:55:51,240 --> 00:55:54,390 И почти за всяка връзка с изключение на едно, че е наше, това е 1126 00:55:54,390 --> 00:55:59,520 това, което казва, че този код, ще изпратим нова съобщение с прикрепен съобщение, че 1127 00:55:59,520 --> 00:56:01,210 информация. 1128 00:56:01,210 --> 00:56:04,880 >> Така че, ако забележите тук, това, което аз направих, когато потребителят всъщност прави нов 1129 00:56:04,880 --> 00:56:08,560 връзка е добавил съм с Метод JavaScript.push, това е 1130 00:56:08,560 --> 00:56:12,100 основно просто казвам като добавите че Socket като стойност в 1131 00:56:12,100 --> 00:56:13,900 ни връзки масив. 1132 00:56:13,900 --> 00:56:20,560 Така че сега, когато този код се изпълнява, тя ще изпрати неща за тези, специално 1133 00:56:20,560 --> 00:56:22,020 връзки. 1134 00:56:22,020 --> 00:56:26,980 Така че това може да бъде добра отправна точка за вземане на сървър за лафче 1135 00:56:26,980 --> 00:56:28,250 или нещо подобно. 1136 00:56:28,250 --> 00:56:33,315 >> И вида на готино нещо е, че код, който виждате тук за подобно на и 1137 00:56:33,315 --> 00:56:36,390 излъчват и подобни неща, че е същото вид на JavaScript код, който бихте 1138 00:56:36,390 --> 00:56:39,260 напишете в браузъра, за да си взаимодействат със сървъра. 1139 00:56:39,260 --> 00:56:42,480 Така че това е защо SocketIO е вид спретнато и полезна по този начин. 1140 00:56:42,480 --> 00:56:45,680 1141 00:56:45,680 --> 00:56:49,250 >> О, и още едно нещо наистина бързо. 1142 00:56:49,250 --> 00:56:55,970 Имаше един окончателен проект CS50 миналата година която основно се осъществява на чат 1143 00:56:55,970 --> 00:56:57,840 сървър в Node.js. 1144 00:56:57,840 --> 00:57:01,350 Мисля, че е Harvardchats.org но аз не съм - 1145 00:57:01,350 --> 00:57:02,940 OK. 1146 00:57:02,940 --> 00:57:06,190 Аз не съм сигурен какво е URL адреса, но Мога да изпратя, че навън след това. 1147 00:57:06,190 --> 00:57:09,260 Но това е нещо, което се охлади можете да правите с Node.js. 1148 00:57:09,260 --> 00:57:14,680 >> Така че се надявам, като цяло, вие момчета имат добро чувство за това, което е полезно Node.js 1149 00:57:14,680 --> 00:57:17,870 и как вие може би може да се приложи до окончателното вашия проект. 1150 00:57:17,870 --> 00:57:21,050 Аз ще изпрати още малко ресурси, заедно с това. 1151 00:57:21,050 --> 00:57:23,170 И ви благодаря, че дойдохте. 1152 00:57:23,170 --> 00:57:23,610 Благодаря. 1153 00:57:23,610 --> 00:57:27,168 >> [APPLAUSE]