1 00:00:00,000 --> 00:00:08,350 2 00:00:08,350 --> 00:00:09,710 >> Кевин Шмид: Здраво на сите. 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 ТФ. 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 >> Кевин Шмид: Токму така. 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 Тоа е Апачи. 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 Во ред? 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 Кул. 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 апаратот веб серверот е Апачи. 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 барање, а потоа Апачи седи има и бројки надвор да се направи со неа. 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 >> Па тогаш често прашање што може да дојде up е добро, како ние да навистина се справи 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 >> А потоа, исто така, да речеме имаш само еден процесор, или ајде да речеме дека имате 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 Кул. 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 >> Кевин Шмид: 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 И она што вашиот код се случува да се прави, она што Апачи процес или 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 Како да сум не би очекувал дека сајт да биде следниот Фејсбук, но тоа е некој 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 А разговор сервер нема да се направи многу размислување. 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 Во ред? 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 Во ред? 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 Во ред? 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 Јас Таа само излезе со албум. 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 А потоа на следната линија на нашиот програма, ние сега можат да работат со f. 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 >> Кевин Шмид: О, па да. 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 Па што ако сега јас изменето ѓ отвори малку? 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 Еден, јас не сум, всушност, повикувајќи код функција. 289 00:14:17,145 --> 00:14:20,650 Значи, вие не гледате код со лево paren, нели 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 >> Па само да биде целосно јасно, ѓ отвори таа го прави новиот Кети Пери песна 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 >> Кевин Шмид: Тоа е големо прашање. 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 >> Кевин Шмид: Арон носи до една многу добра поента, а тоа е дека ако имав 327 00:16:14,830 --> 00:16:18,560 некои изчислителна кодот во на го работи со f дел, остатокот од 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 Значи, ако јас пишувам Јазол код општо освен ако не се направи нешто како јас ќе одам 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 Кул. 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-мотор што е причина дека Хром е толку брзо во обработка 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 работа, но во ред. 360 00:18:01,110 --> 00:18:07,070 >> Па јас сум подготвен некои примери на оваа адреса. 361 00:18:07,070 --> 00:18:10,490 По завршувањето на семинарот, јас сум вид на ќе зборува за тоа како може да се добијат Јазол сет 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 Во ред? 365 00:18:18,720 --> 00:18:22,280 >> Па јас ќе ја напушти оваа рачно за малку. 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 синтакса и структура е многу слична на Ц, па можете вид на може да го земам како 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 сличен на C, така што тоа е малку повеќе да се чита. 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 Можете да видите на var и нешта? 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 Во ред? 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 Во ред? 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 Во ред? 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 Па да ви го покаже тоа, јас ќе одам да користат програма наречена навивам. 441 00:22:03,550 --> 00:22:04,260 Во ред? 442 00:22:04,260 --> 00:22:08,020 Па ова е нешто што можете да го извршите на вашиот Mac OSX командната линија или во 443 00:22:08,020 --> 00:22:09,830 апаратот или whatever. 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, но јас ќе одам за да додадете да навивам овој цртичка јас знаме. 449 00:22:33,390 --> 00:22:33,600 Во ред? 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 Во ред? 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 >> Публика: Википедија. 474 00:23:53,640 --> 00:23:54,160 >> Кевин Шмид: OK. 475 00:23:54,160 --> 00:23:56,040 Ајде да направиме Википедија. 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 за Википедија. 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 И забележувате дека таа има убав пријателски ред до него. 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 Значи, ако се погледне на одговор дека ние се вративте од Википедија порано, - 500 00:25:03,780 --> 00:25:06,200 Одам да се обиде да дојдете до малку побрзо - 501 00:25:06,200 --> 00:25:09,900 имате овие копчиња како сервер и овие вредности Апачи. 502 00:25:09,900 --> 00:25:12,120 Значи имаш клучеви и вредности. 503 00:25:12,120 --> 00:25:15,930 И можете да определи тоа во Јазол што да се испрати назад. 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 Страшни. 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 Во ред? 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 Во ред? 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 Но ако го направам Википедија - 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 >> Но, она што јас ќе одам да направите сега е јас ќе одам да се кандидира Јазол. 561 00:27:54,560 --> 00:27:59,730 Дозволете ми да всушност внесете дека неколку линии надолу така што можете да го видите. 562 00:27:59,730 --> 00:28:03,130 Одам да се направи јазол, и јас сум случува да се кандидира simpler.js. 563 00:28:03,130 --> 00:28:06,880 И ние ќе зборуваме за тоа како да се добие Јазол формирана во малку. 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 Така што можам да направам навивам, и мојот машина е локалниот компјутер. 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 И ќе забележите дека тоа не се каже во ред. 577 00:28:48,810 --> 00:28:50,810 И имам текст рамнина. 578 00:28:50,810 --> 00:28:53,140 А потоа, тука е вид на сето ова и други работи кои јазол ќе го додадете во 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 Кул. 599 00:29:46,490 --> 00:29:50,780 >> Значи, да се отстранат на Р тоа и се погледне на 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 >> Кевин Шмид: Значи тоа се Го вклучите 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 >> И на пример, како еден од нив особено за КН, можете да направите 614 00:30:27,670 --> 00:30:34,540 нешто како rec.method кој ќе ви кажам дали тоа е HTTP GET или 615 00:30:34,540 --> 00:30:36,780 HTTP POST побарување и работи како што. 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 Во ред? 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 Па јас сеуште имам REC и ОИЕ. 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 >> Кевин Шмид: Тие се првите класа во 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 Така на пример, во вклучите во Вашиот прелистувач, тоа е, исто така, малку настан 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 >> Значи, во основа може да се помине во Мислам дека бројот на секунди или ако сте со користење У 664 00:32:54,650 --> 00:32:57,080 спијам бројот на милисекунди или Nanoseconds. 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 или whatever. 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 >> Значи прашањето е што во мојата друга табот тука, трчав Јазол веќе на 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 малку unexciting за да ја видите тоа во терминал. 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 па да речеме јас го направите ова во друга табот, Одам да се направи навивам и истата 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 број е основа на процесот проект. 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 Добро кул. 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 Како е тоа различно од printf тампон, иако? 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 >> Кевин Шмид: О, може да ви велат дека еден повеќе време? 776 00:38:26,555 --> 00:38:29,510 >> Публика: не му се допаѓа printf тампон направи иста работа? 777 00:38:29,510 --> 00:38:31,280 >> Кевин Шмид: На printf тампон? 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 Не беше во една од квизови тие беа зборува за тоа како, ако десната printf 781 00:38:40,609 --> 00:38:42,899 нешто, а потоа да го имаат пауза еден Вториот, а потоа ќе ја имаат јамка десет 782 00:38:42,899 --> 00:38:46,530 пати, тоа ќе се чека десет секунди и тогаш printf сето заедно? 783 00:38:46,530 --> 00:38:47,460 >> Кевин Шмид: Ох, во ред. 784 00:38:47,460 --> 00:38:49,170 >> Публика: Дали е тоа го прават истото нешто тогаш во овој случај? 785 00:38:49,170 --> 00:38:52,630 >> Кевин Шмид: Значи, прашањето беше основа во една од поранешните квизови 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 И причината што на printf вид на чека како што и депонии сите надвор 793 00:39:17,455 --> 00:39:21,760 одеднаш е повеќе поврзана со како printf вид на - 794 00:39:21,760 --> 00:39:25,100 па начинот на кој printf е, всушност, спроведува е тоа во основа треба да 795 00:39:25,100 --> 00:39:28,850 разговара со оперативниот систем да се напише тој звук на конзола. 796 00:39:28,850 --> 00:39:33,460 Така што не сакате да го направите сето тоа нешта, веднаш кога ќе се каже printf 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 >> Значи, ако правиш printf еј, вашата програма не, всушност може да печати дека 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 >> Кевин Шмид: Право. 838 00:41:31,355 --> 00:41:32,400 >> Публика: Сите патот надолу. 839 00:41:32,400 --> 00:41:32,840 >> Кевин Шмид: Токму така. 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 >> Но сепак, во ред. 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 >> Кевин Шмид: О, може да ви го повторам прашањето? 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 >> Кевин Шмид: Ох, па ова е само код што се случува да се вид на на 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 Кул. 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 Во ред? 880 00:43:22,200 --> 00:43:24,960 Па јас сум само ќе кажам, навивам. 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 >> Кевин Шмид: Требаше се направи наскоро. 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 да се направи уште еден навивам. 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 >> Кевин Шмид: Право. 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 >> Значи ова е пример за тоа како, ако имаат работи кои се т.н. пресмета 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 Процесорот, или дури и ако сте имале повеќе процесори, да ги дистрибуирате рамномерно низ процесори 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 Значи она што го имаме тука е програма наречена Фантазија В И ова во основа користи 944 00:46:41,540 --> 00:46:45,690 уште една од модули јазол наречен Модул подпроцесот. 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 Сега имам пристап до овој ЦП променлива која ги има сите ми функционалност. 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 >> Кевин Шмид: Значи ова всушност ќе отвори нов процес да го направи тоа. 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 Значи ова е вид на аналогни на она што Апачи прави. 982 00:48:32,090 --> 00:48:35,110 Во некои случаи, тоа само ќе користи нова навој, што е малку повеќе светлина 983 00:48:35,110 --> 00:48:39,040 тежина од процесот, но Апачи може да заврши forking нов процес 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 или дека Јазол трчаше? 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 >> Кевин Шмид: Да. 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 Тоа може да парче на времето што еден Процесорот добива или дека тие се 1009 00:50:01,870 --> 00:50:03,330 да се кандидира на еден процесор. 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 Па сега Јазол не е навистина игра учество во поделба на овие задачи. 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 Фејсбук разговор или whatever. 1028 00:50:56,630 --> 00:50:59,990 Па јас не велам дека ова е како што се Фејсбук Чет, но ова е вид на 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 Јазол, но можете да го инсталирате. 1036 00:51:22,300 --> 00:51:23,480 Тоа е Јазол модул. 1037 00:51:23,480 --> 00:51:25,670 Па тоа е исто како и некои продолжување на Јазол. 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, да добијат работи, да го испрати назад, а потоа 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 >> Тогаш серверот вели, во ред, она што можам да сторам? 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 Па тоа е само основа Грло на Ио начин да се каже, кога ќе добиеме една 1086 00:53:53,360 --> 00:53:55,840 конекција, Те сакам да ја извршите оваа код. 1087 00:53:55,840 --> 00:53:59,870 >> И ќе забележите дека наместо rec и ОИЕ помина таму имам Грло. 1088 00:53:59,870 --> 00:54:03,260 И ова Грло идеја е во основа овој нешто што можете да пишете на и читање 1089 00:54:03,260 --> 00:54:05,750 од кои има корисникот пораки можеби. 1090 00:54:05,750 --> 00:54:10,700 И пораките што ќе испрати може да оди преку кој штекер. 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 во основа, само велејќи како додадете дека Грло како вредност во 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 >> [Аплауз]