1 00:00:00,000 --> 00:00:08,350 2 00:00:08,350 --> 00:00:09,710 >> KEVIN Schmid: Hola a todos. 3 00:00:09,710 --> 00:00:12,640 Benvido ao seminario CS50 en Node.js. 4 00:00:12,640 --> 00:00:13,955 O meu nome é Kevin. 5 00:00:13,955 --> 00:00:15,580 Eu son un TF CS50. 6 00:00:15,580 --> 00:00:17,650 E eu son unha especie de como realmente animado deste seminario. 7 00:00:17,650 --> 00:00:20,430 Creo Node.js é moi legal. 8 00:00:20,430 --> 00:00:24,200 Esperamos que este seminario poden usar como unha boa, eu creo, trampolín para 9 00:00:24,200 --> 00:00:26,380 algúns dos seus proxectos finais, se vostede está interesado en usar 10 00:00:26,380 --> 00:00:27,630 algo así como Node.js. 11 00:00:27,630 --> 00:00:29,770 12 00:00:29,770 --> 00:00:33,320 >> Imos especie de iniciar o seminario fóra por falando só de un pouco do 13 00:00:33,320 --> 00:00:36,970 tipo de escalabilidade fondo perspectivas de Node.js e logo 14 00:00:36,970 --> 00:00:39,240 imos pasar a algúns exemplos de código. 15 00:00:39,240 --> 00:00:42,340 E eu vou ter o código nun sitio web, e pode ollar para o código. 16 00:00:42,340 --> 00:00:45,475 E despois do seminario, vou tipo de conversa sobre como pode configurar Node.js 17 00:00:45,475 --> 00:00:48,220 no seu computador. 18 00:00:48,220 --> 00:00:48,710 >> Aceptar. 19 00:00:48,710 --> 00:00:49,760 Entón, imos comezar. 20 00:00:49,760 --> 00:00:53,700 Entón, eu creo que eu só quero falar de servidores web, de feito, por primeira vez. 21 00:00:53,700 --> 00:00:59,730 E para comezar esa discusión, teñen basicamente un diagrama que é de 22 00:00:59,730 --> 00:01:04,269 o libro didáctico utilizado para CS61, que basicamente mostra a interacción 23 00:01:04,269 --> 00:01:08,510 entre un proceso cliente, como a súa web navegador ou como o seu cliente obxectivo ou 24 00:01:08,510 --> 00:01:11,340 algo parecido, e un servidor web. 25 00:01:11,340 --> 00:01:15,150 Polo tanto, este tipo de parecido co imaxe que viu na charla sobre 26 00:01:15,150 --> 00:01:19,270 Mércores, onde basicamente temos algúns proceso do cliente, como Google Chrome. 27 00:01:19,270 --> 00:01:22,980 >> E, a continuación, o primeiro paso é a cliente envía unha petición. 28 00:01:22,980 --> 00:01:27,510 Entón isto pode ser algo así como Ben, imos visitar, eu non sei, CS50.net. 29 00:01:27,510 --> 00:01:29,320 Entón, nós emitir este pedido. 30 00:01:29,320 --> 00:01:34,280 E será que alguén se lembra do nome do protocolo que especifica como que 31 00:01:34,280 --> 00:01:35,610 solicitude debe ser estruturada? 32 00:01:35,610 --> 00:01:36,382 Yep. 33 00:01:36,382 --> 00:01:37,650 >> Audiencia: [inaudível]. 34 00:01:37,650 --> 00:01:38,150 >> KEVIN Schmid: Exactamente. 35 00:01:38,150 --> 00:01:40,100 Entón, é como HTTP, non? 36 00:01:40,100 --> 00:01:44,720 Entón, basicamente, a especificación de como esta proposta debe realmente ser establecidas 37 00:01:44,720 --> 00:01:47,450 fóra, porque ao final do día, esta proposta é realmente só como un 38 00:01:47,450 --> 00:01:50,240 cadea que basicamente di que quero iso. 39 00:01:50,240 --> 00:01:53,580 E a especificación para iso é HTTP. 40 00:01:53,580 --> 00:01:55,270 Entón, iso é como un protocolo. 41 00:01:55,270 --> 00:01:57,920 >> Entón o servidor recibe este pedido. 42 00:01:57,920 --> 00:02:01,610 Entón, vostedes teñen un servidor web instalado no aparello CS50. 43 00:02:01,610 --> 00:02:02,460 É Apache. 44 00:02:02,460 --> 00:02:06,230 E esta semana, cando se traballa en problema establecer sete, vai realmente estar traballando 45 00:02:06,230 --> 00:02:08,160 co servidor web. 46 00:02:08,160 --> 00:02:12,380 Entón, o servidor recibe a petición, e el ten unha especie de rabuñar a súa 47 00:02:12,380 --> 00:02:15,090 cabeza e dicir, como ben o que fago con isto? 48 00:02:15,090 --> 00:02:20,060 >> Así, con base no que decide facer, a continuación, Pode poñerse en contacto con algún tipo 49 00:02:20,060 --> 00:02:20,730 de recurso. 50 00:02:20,730 --> 00:02:23,700 E este recurso pode ser un chea de cousas distintas. 51 00:02:23,700 --> 00:02:26,810 Por unha banda, pode ser só como un arquivo HTML estático. 52 00:02:26,810 --> 00:02:29,820 Así, podería ser como algúns HTML que é como para 53 00:02:29,820 --> 00:02:31,100 súa páxina persoal. 54 00:02:31,100 --> 00:02:35,360 Pode ser un ficheiro estático como unha imaxe ou como unha película que ten. 55 00:02:35,360 --> 00:02:37,660 Podería ata ter que falar a algún tipo de base de datos 56 00:02:37,660 --> 00:02:39,530 como unha base de datos MySQL 57 00:02:39,530 --> 00:02:43,910 Por iso, non sempre ten de comunicarse cun recurso, pero en 58 00:02:43,910 --> 00:02:45,700 Nalgúns casos, podería. 59 00:02:45,700 --> 00:02:47,800 >> Entón o que vai facer despois diso é que vai 60 00:02:47,800 --> 00:02:49,430 enviar de volta a resposta. 61 00:02:49,430 --> 00:02:53,130 E a resposta a iso é tamén especificado por HTTP. 62 00:02:53,130 --> 00:02:54,830 Entón o cliente pode recibir. 63 00:02:54,830 --> 00:02:56,740 Pode resgala e proceso-la. 64 00:02:56,740 --> 00:03:00,900 E así que ten unha páxina web como Google ou CS50.net ou 65 00:03:00,900 --> 00:03:02,240 todo o que foi. 66 00:03:02,240 --> 00:03:03,100 OK? 67 00:03:03,100 --> 00:03:06,080 >> Polo tanto, esta é a interacción básica que imos estar lidando. 68 00:03:06,080 --> 00:03:08,770 E nós estamos moi bonito será centrar esta parte do 69 00:03:08,770 --> 00:03:10,640 interacción, o servidor. 70 00:03:10,640 --> 00:03:10,990 Aceptar. 71 00:03:10,990 --> 00:03:12,210 Legal. 72 00:03:12,210 --> 00:03:15,500 Alguén ten algunha pregunta? 73 00:03:15,500 --> 00:03:17,720 Aceptar. 74 00:03:17,720 --> 00:03:22,430 >> Entón, como dixemos, o servidor web recibe esta solicitude HTTP e, a continuación, emite o presente 75 00:03:22,430 --> 00:03:24,760 Resposta HTTP. 76 00:03:24,760 --> 00:03:29,100 E, como falamos antes, o Servidor web aparello CS50 é o Apache. 77 00:03:29,100 --> 00:03:32,490 Entón, cando vostedes traballan en I definir sete, vai estar a traballar co 78 00:03:32,490 --> 00:03:34,120 Un servidor Apache. 79 00:03:34,120 --> 00:03:37,890 Vostede non terá que realmente funcionan con Apache directamente de máis. 80 00:03:37,890 --> 00:03:41,920 Vostede especie de configurar Apache algo cando se especifica os hosts virtuais ou 81 00:03:41,920 --> 00:03:44,970 os anfitrións v, e nós imos chegar para que, en un pouco. 82 00:03:44,970 --> 00:03:50,620 >> Pero, basicamente, o servidor web Apache configurado para funcionar co tipo PHP 83 00:03:50,620 --> 00:03:51,730 de fóra da caixa. 84 00:03:51,730 --> 00:03:56,170 Entón, o que realmente pasa é que cando vai a un dos seus sitios web, como, por exemplo, 85 00:03:56,170 --> 00:04:00,360 index.php barra lugares de acollida ou algo así, é o seu navegador envía que 86 00:04:00,360 --> 00:04:04,330 solicitude, e, a continuación, Apache está sentado alí e descobre que facer con el. 87 00:04:04,330 --> 00:04:08,840 E a acción é realizar este código no index.php e 88 00:04:08,840 --> 00:04:11,330 logo envialo de volta. 89 00:04:11,330 --> 00:04:15,640 Polo tanto, non é iso. 90 00:04:15,640 --> 00:04:16,980 Entón nós medio que falamos sobre iso. 91 00:04:16,980 --> 00:04:21,990 Así, podería servir só un arquivo estático ou realizar algún código PHP e, a continuación, pregunta 92 00:04:21,990 --> 00:04:23,510 a resposta. 93 00:04:23,510 --> 00:04:27,670 >> Entón unha pregunta común que pode chegar se é así, como é que imos realmente lidan 94 00:04:27,670 --> 00:04:31,750 con ter varios usuarios á vez? 95 00:04:31,750 --> 00:04:36,930 Entón, imaxine se está escribindo unha web servidor, se tivese un servidor web que 96 00:04:36,930 --> 00:04:39,900 que estaba intentando escribir en algo como C ou algo así, 97 00:04:39,900 --> 00:04:45,150 basicamente, pode pensar sobre como alí podería ser algún tipo de código que 98 00:04:45,150 --> 00:04:49,330 ía recibir a petición, pero, a continuación, ten que facer todo este traballo sobre el. 99 00:04:49,330 --> 00:04:53,060 Pode ter, por exemplo, poñerse en contacto co base de datos ou algo parecido. 100 00:04:53,060 --> 00:04:53,300 Non? 101 00:04:53,300 --> 00:04:56,010 E entón ía facer este tipo de procesamento e, a continuación, 102 00:04:56,010 --> 00:04:57,060 enviado de volta a resposta. 103 00:04:57,060 --> 00:04:58,950 Entón, iso é como a alta visión xeral nivel. 104 00:04:58,950 --> 00:05:04,210 >> Pero non é inmediatamente evidente como pode facelo de xeito que dúas persoas ou 105 00:05:04,210 --> 00:05:09,040 ata 1.000 persoas poderían traballar co seu servidor web, á vez. 106 00:05:09,040 --> 00:05:14,880 Polo tanto, a solución que Apache usa chámase fíos ou procesos. 107 00:05:14,880 --> 00:05:16,770 Entón vostede pode ter oído de estes termos antes. 108 00:05:16,770 --> 00:05:22,190 Todo ben se non ten, pero só creo que preto de fíos ou procesos como formas de 109 00:05:22,190 --> 00:05:26,290 un sistema operativo ou un programa de usuario ou algo así ou un servidor web 110 00:05:26,290 --> 00:05:28,810 a sorte de realizar múltiples cousas á vez. 111 00:05:28,810 --> 00:05:31,760 Así, pode ter oído o termo como fíos de execución. 112 00:05:31,760 --> 00:05:34,140 Entón é medio como se está tipo de multitarefa. 113 00:05:34,140 --> 00:05:37,710 >> E se xa viu no cadro do seu portátil, ou algo así, 114 00:05:37,710 --> 00:05:43,040 multicore, o que podes facer é que pode executar dous fíos diferentes en diferentes 115 00:05:43,040 --> 00:05:46,700 partes do procesador de xeito que poidan de feito, teñen lugar ao mesmo tempo. 116 00:05:46,700 --> 00:05:48,100 Polo tanto, esta é realmente poderoso. 117 00:05:48,100 --> 00:05:52,270 E este é o tipo de Apache do solución a este problema. 118 00:05:52,270 --> 00:05:57,900 >> Entón, hai máis ou menos como calquera cuestión con esta visión aínda? 119 00:05:57,900 --> 00:05:59,870 Entón eu creo que eu medio que escribiu-los alí. 120 00:05:59,870 --> 00:06:03,440 Pero ambos tipo de usar unha morea de memoria. 121 00:06:03,440 --> 00:06:07,490 É moi caro para crear un fío ou un proceso. 122 00:06:07,490 --> 00:06:11,750 >> E parte da razón é que só como cando está executando un programa C 123 00:06:11,750 --> 00:06:15,090 como o seu principal e, a continuación, que as chamadas outra función, que ten 124 00:06:15,090 --> 00:06:16,520 algún tipo de pila. 125 00:06:16,520 --> 00:06:19,910 Entón temas tamén esixen un completo pila separada que 126 00:06:19,910 --> 00:06:21,220 pode ser moi grande. 127 00:06:21,220 --> 00:06:25,170 E se pode imaxinar ter de toneladas de usuarios na súa páxina web, que tería 128 00:06:25,170 --> 00:06:26,280 unha morea de diferentes threads. 129 00:06:26,280 --> 00:06:28,230 Iso é unha chea de pilas para xestionar e manter. 130 00:06:28,230 --> 00:06:31,280 Por iso, é grande o consumo de memoria. 131 00:06:31,280 --> 00:06:35,650 >> E entón, tamén, digamos que só ten unha CPU, ou imos dicir que ten 132 00:06:35,650 --> 00:06:38,460 máis segmentos do que ten eses multicolores. 133 00:06:38,460 --> 00:06:38,730 Non? 134 00:06:38,730 --> 00:06:43,280 Entón, digamos que tivese 10 temas e só tiña cinco CPUs 135 00:06:43,280 --> 00:06:46,260 Vostede medio que ten que facer esa cousa onde cambiar entre a corrente 136 00:06:46,260 --> 00:06:49,090 aquel que está correndo, porque non pode executar as 10 dunha soa vez. 137 00:06:49,090 --> 00:06:50,980 E iso chámase cambio de contexto. 138 00:06:50,980 --> 00:06:54,260 E ese termo realmente ten unha parella de contextos diferentes, pero imos 139 00:06:54,260 --> 00:06:56,620 pense nisto como o cambio entre dous segmentos. 140 00:06:56,620 --> 00:06:59,730 Isto pode ser moi caro, porque basicamente o que tes que facer é vostede 141 00:06:59,730 --> 00:07:03,340 Ten que deixar o que está facendo, salva o Estado dese fío condutor, e 142 00:07:03,340 --> 00:07:05,440 a continuación, cambiar a outro lugar. 143 00:07:05,440 --> 00:07:09,420 >> Así que todo o mundo tipo de ver o motivación do por de temas e 144 00:07:09,420 --> 00:07:12,030 procesos pode ser un pouco voluminoso? 145 00:07:12,030 --> 00:07:13,840 E ten unha pregunta? 146 00:07:13,840 --> 00:07:14,376 Aceptar. 147 00:07:14,376 --> 00:07:15,070 Legal. 148 00:07:15,070 --> 00:07:18,090 Alguén ten algunha dúbida? 149 00:07:18,090 --> 00:07:19,620 Aceptar. 150 00:07:19,620 --> 00:07:26,720 >> Entón, se tomamos un paso atrás por un segundo, non hai como unha especie de 151 00:07:26,720 --> 00:07:30,350 observación que podemos facer sobre unha gran cantidade de aplicacións web. 152 00:07:30,350 --> 00:07:34,810 E iso é realmente que moitos deles realmente non fago isto moi útil 153 00:07:34,810 --> 00:07:37,140 traballar dentro dun segmento. 154 00:07:37,140 --> 00:07:41,170 Entón, ten alguén comezou en P establecer sete en todo? 155 00:07:41,170 --> 00:07:45,650 Entón quere para describir quizais algunhas das partes? 156 00:07:45,650 --> 00:07:47,850 Xa traballou no login ou algo así? 157 00:07:47,850 --> 00:07:49,330 >> Audiencia: Non 158 00:07:49,330 --> 00:07:49,780 >> KEVIN Schmid: Aceptar. 159 00:07:49,780 --> 00:07:50,150 Nunca mente. 160 00:07:50,150 --> 00:07:50,900 Sentímolo. 161 00:07:50,900 --> 00:07:55,790 Pero, basicamente, no conxunto P, está vai estar facendo unha morea de tipo de 162 00:07:55,790 --> 00:07:59,760 consultas a unha base de datos para obter un información deste base de datos. 163 00:07:59,760 --> 00:08:03,330 E o que o código está indo facer, o que este proceso Apache ou 164 00:08:03,330 --> 00:08:06,030 ese segmento Apache estará facendo á vez que ten que poñerse en contacto co 165 00:08:06,030 --> 00:08:08,990 base de datos é que é unha especie de será sentado alí e será 166 00:08:08,990 --> 00:08:12,130 esperando a base de datos para responder. 167 00:08:12,130 --> 00:08:16,290 >> Agora que non pode soar como que un gran tratar, xa que a base de datos está no seu 168 00:08:16,290 --> 00:08:18,240 Aparello CS50, non? 169 00:08:18,240 --> 00:08:22,930 Pero hai algún tipo de rede latencia alí porque agora a web 170 00:08:22,930 --> 00:08:26,830 servidor ten que emitir a súa propia proposta de a base de datos para comunicarse co 171 00:08:26,830 --> 00:08:29,520 base de datos e, a continuación, obter este información de volta. 172 00:08:29,520 --> 00:08:33,190 Entón, agora é como ben esperar por min, eu son indo a ir buscar algo do 173 00:08:33,190 --> 00:08:35,770 base de datos e, a continuación, hai unha moita espera suceder. 174 00:08:35,770 --> 00:08:36,870 Será que isto ten sentido? 175 00:08:36,870 --> 00:08:38,580 >> E para algunhas cousas, non é tan malo así. 176 00:08:38,580 --> 00:08:41,950 Se só ten que, por exemplo, memoria de acceso, que non é como 177 00:08:41,950 --> 00:08:44,100 horrible E / latencia. 178 00:08:44,100 --> 00:08:47,110 E cando digo, eu O latencia /, o que eu son referíndose se é como calquera tipo como 179 00:08:47,110 --> 00:08:48,290 de entrada e saída. 180 00:08:48,290 --> 00:08:52,950 Pero para acceder a un ficheiro no disco, como se eu quería servir HTML estático 181 00:08:52,950 --> 00:08:57,850 ficheiro que foi na miña páxina web ou algo así, eu medio que teño que 182 00:08:57,850 --> 00:09:02,310 parar un pouco, ler este ficheiro en a partir do disco e, en 183 00:09:02,310 --> 00:09:04,400 ese proceso que eu estou esperando. 184 00:09:04,400 --> 00:09:06,700 Eu non estou facendo un traballo útil. 185 00:09:06,700 --> 00:09:11,270 >> Iso non é verdade de todo, pero é común en aplicacións como o conxunto P 186 00:09:11,270 --> 00:09:13,960 sete anos e unha morea de aplicacións que non é 187 00:09:13,960 --> 00:09:15,440 realmente facendo moito pensar. 188 00:09:15,440 --> 00:09:19,090 E cando digo pensamento, quero dicir como o traballo computacional. 189 00:09:19,090 --> 00:09:23,270 Así, o traballo computacional podería ser algo como, por exemplo, vostede quería 190 00:09:23,270 --> 00:09:26,590 escribir un servidor web que calcular o número de Fibonacci enésima. 191 00:09:26,590 --> 00:09:29,300 Isto non soa como un particular servidor web divertido. 192 00:09:29,300 --> 00:09:34,220 Como eu non esperaría que o lugar a ser o seguinte Facebook, pero iso é un pouco 193 00:09:34,220 --> 00:09:35,610 tipo de traballo computacional. 194 00:09:35,610 --> 00:09:39,570 >> E pode imaxinar que, coa substitución algún outro tipo de interesantes 195 00:09:39,570 --> 00:09:43,070 traballo computacional. 196 00:09:43,070 --> 00:09:46,050 Imos dicir que estaba escribindo algo que calculou os graos de 197 00:09:46,050 --> 00:09:49,170 separación entre dúas persoas ou algo parecido. 198 00:09:49,170 --> 00:09:51,860 Así que implica algún tipo de cálculo, non? 199 00:09:51,860 --> 00:09:56,630 E aínda así, para facelo aínda ten para facer unha chea de espera para quizais 200 00:09:56,630 --> 00:09:59,550 ten que consultar unha base de datos para ollar ata quen é amigo de quen ou 201 00:09:59,550 --> 00:10:00,600 algo parecido. 202 00:10:00,600 --> 00:10:03,510 Polo tanto, non hai ese tipo de noción traballo de computacional. 203 00:10:03,510 --> 00:10:05,260 Será que isto ten sentido? 204 00:10:05,260 --> 00:10:08,258 Alguén ten algunha dúbida? 205 00:10:08,258 --> 00:10:11,960 >> Ah, e eu creo que eu poñer os servidores de chat alí porque os servidores de chat son unha especie de 206 00:10:11,960 --> 00:10:13,240 outro bo exemplo diso. 207 00:10:13,240 --> 00:10:15,250 Un servidor de chat non ten facer moito pensar. 208 00:10:15,250 --> 00:10:18,350 El só ten que esperar a que a xente enviar mensaxes e logo, cando 209 00:10:18,350 --> 00:10:19,800 eles, envialos. 210 00:10:19,800 --> 00:10:21,050 OK? 211 00:10:21,050 --> 00:10:23,410 212 00:10:23,410 --> 00:10:28,180 >> Entón, só para recapitular novo, Apache e servidores web similares, como que un garfo 213 00:10:28,180 --> 00:10:31,470 chea de rutas e procesos que pode tipo de desperdicio. 214 00:10:31,470 --> 00:10:37,530 Entón eu creo que a cuestión que pode vir de que é o que necesitamos ter 215 00:10:37,530 --> 00:10:39,610 múltiples rutas e procesos? 216 00:10:39,610 --> 00:10:41,890 E se a xente só tiña un? 217 00:10:41,890 --> 00:10:45,710 >> Entón imos especie de pintar un cadro do que esta sería semellante. 218 00:10:45,710 --> 00:10:47,810 Entón, imos usar só un segmento. 219 00:10:47,810 --> 00:10:48,660 OK? 220 00:10:48,660 --> 00:10:52,790 Entón, só tes que imaxinar iso cun segmento. 221 00:10:52,790 --> 00:10:56,600 >> Imos supor que nós non estabamos realmente facendo que moi útil - e cando digo 222 00:10:56,600 --> 00:10:59,450 útil, quero dicir traballo computacional - 223 00:10:59,450 --> 00:11:01,130 nos múltiples rutas antes. 224 00:11:01,130 --> 00:11:04,180 Entón imos tipo de consolidar todo nun segmento. 225 00:11:04,180 --> 00:11:07,780 Entón, o que se tivésemos un thread que tipo de só dá a volta no circuíto e 226 00:11:07,780 --> 00:11:10,880 constantemente cheques fixo algo novo acontecer. 227 00:11:10,880 --> 00:11:15,130 Así, por exemplo, algo novo pasou podería dicir que eu teño algo de volta de 228 00:11:15,130 --> 00:11:19,310 a base de datos, ou alguén enviado me unha nova solicitude HTTP. 229 00:11:19,310 --> 00:11:22,290 Polo tanto, estas son o tipo de eventos isto acontecer, non? 230 00:11:22,290 --> 00:11:26,130 >> E entón o que podo facer cando as novas as cousas acontecen é neste mesmo segmento 231 00:11:26,130 --> 00:11:30,120 da execución, este único segmento de execución, podo chamar a un código que 232 00:11:30,120 --> 00:11:32,410 ía xestionar esa cousa particular. 233 00:11:32,410 --> 00:11:36,640 Así, por exemplo, se eu teño algo de volta da base de datos, eu podería executar o meu 234 00:11:36,640 --> 00:11:40,960 pequena parte computacional do que en realidade, só prepara a cousa a 235 00:11:40,960 --> 00:11:42,620 mandar de volta para o usuario. 236 00:11:42,620 --> 00:11:46,710 O mesmo acontece con este tipo de ten sentido? 237 00:11:46,710 --> 00:11:49,940 >> Pero o que son realmente a implicacións desa? 238 00:11:49,940 --> 00:11:50,660 Non? 239 00:11:50,660 --> 00:11:53,730 Porque nós escribimos unha morea de código que - 240 00:11:53,730 --> 00:11:58,330 e eu só vou pasar por diante nos diapositivas se está todo OK. 241 00:11:58,330 --> 00:12:00,930 Entón, se non se importar, eu son só vai dar un paso atrás. 242 00:12:00,930 --> 00:12:03,410 Polo tanto, este tipo de cousas é chamado un ciclo de eventos. 243 00:12:03,410 --> 00:12:04,070 OK? 244 00:12:04,070 --> 00:12:07,240 E iso é o tipo de base idea detrás Node.js. 245 00:12:07,240 --> 00:12:11,240 >> Entón, o que está realmente facendo Node.js como unha web servidor é que non hai un único segmento 246 00:12:11,240 --> 00:12:14,850 que é, basicamente, camiñando en un loop como un tempo un tipo de baixo 247 00:12:14,850 --> 00:12:18,510 o capó do Node.js é constantemente verificación, fixo recibimos cousas novas? 248 00:12:18,510 --> 00:12:22,720 E entón el será executado manipuladores que configurou. 249 00:12:22,720 --> 00:12:26,720 Pero unha boa pregunta que facer é: como podemos facer isto acontecer 250 00:12:26,720 --> 00:12:28,090 coas cousas existentes? 251 00:12:28,090 --> 00:12:32,440 >> Entón engada unha liña de código C aquí que basicamente parece que está abrindo unha 252 00:12:32,440 --> 00:12:33,060 ficheiro, non? 253 00:12:33,060 --> 00:12:36,090 Eu Ela saíu só cun disco. 254 00:12:36,090 --> 00:12:39,600 Así que tiven que abrir un novo arquivo. 255 00:12:39,600 --> 00:12:43,810 Así, a forma na que o noso código C para a operación - 256 00:12:43,810 --> 00:12:47,890 e eu creo que a razón pola que eu escollín ficheiros se porque este é o tipo de medida 257 00:12:47,890 --> 00:12:52,000 do traballo I / O que fixemos en C en unha sensación de que hai saída de entrada. 258 00:12:52,000 --> 00:12:55,070 Entón, chamamos iso de código que fai iso f aberta. 259 00:12:55,070 --> 00:12:59,370 E, a continuación, na liña seguinte do noso programa, podemos agora traballar con f. 260 00:12:59,370 --> 00:13:02,710 >> Polo tanto, este sería un exemplo de algo que é como síncrona ou 261 00:13:02,710 --> 00:13:06,850 bloqueado porque nesa primeira liña Non estamos esperando ata que 262 00:13:06,850 --> 00:13:08,110 obter o ficheiro aberto. 263 00:13:08,110 --> 00:13:12,260 Entón, na segunda liña, sabemos que pode traballar con f, pero iso significa que 264 00:13:12,260 --> 00:13:16,240 que a segunda liña non pode realmente realizar ata que a primeira liña está feito. 265 00:13:16,240 --> 00:13:17,760 Será que isto ten sentido? 266 00:13:17,760 --> 00:13:20,890 >> Entón, iso sería malo para poñer nun manipulador de eventos. 267 00:13:20,890 --> 00:13:23,920 E a razón para iso é que este tipo de espera, non? 268 00:13:23,920 --> 00:13:26,500 Polo tanto, este sería revertido nos de volta o mesmo. 269 00:13:26,500 --> 00:13:29,470 E agora nós non tería sequera a beneficio de varios segmentos ou 270 00:13:29,470 --> 00:13:32,390 procesos porque temos un segmento en Node.js. 271 00:13:32,390 --> 00:13:35,496 Isto ten sentido para todo o mundo? 272 00:13:35,496 --> 00:13:35,990 >> Audiencia: Agarde. 273 00:13:35,990 --> 00:13:36,980 Entón cal é o substituto? 274 00:13:36,980 --> 00:13:37,840 >> KEVIN Schmid: Ah, entón si. 275 00:13:37,840 --> 00:13:39,560 Entón, eu estou indo a obter a a substitución. 276 00:13:39,560 --> 00:13:40,430 Aceptar. 277 00:13:40,430 --> 00:13:42,960 Entón, o que se tivésemos algo que quedou así? 278 00:13:42,960 --> 00:13:45,730 Entón, o que agora eu editei f abrir un pouco? 279 00:13:45,730 --> 00:13:48,370 Entón, eu estou pasando o mesmo dous argumentos como antes. 280 00:13:48,370 --> 00:13:52,610 Eu aínda amo a nova música que saíu con. 281 00:13:52,610 --> 00:13:57,260 Pero eu estou pasando un terceiro que é esta variable chamada código. 282 00:13:57,260 --> 00:14:02,280 >> Pero o que é o código de feito Neste contexto? 283 00:14:02,280 --> 00:14:05,360 É como unha variable C regular? 284 00:14:05,360 --> 00:14:06,740 É unha función, non? 285 00:14:06,740 --> 00:14:09,450 E iso pode ser un pouco raro, porque En realidade, estou como agora pasando un 286 00:14:09,450 --> 00:14:12,320 funcionar en outra función. 287 00:14:12,320 --> 00:14:14,400 >> Así, un par de cousas a notar sobre iso. 288 00:14:14,400 --> 00:14:17,145 Un, eu non estou realmente chamando a función de código. 289 00:14:17,145 --> 00:14:20,650 Entón, non ve o código co paréntese esquerdo, paréntese dereita. 290 00:14:20,650 --> 00:14:23,010 Estou só de paso no código. 291 00:14:23,010 --> 00:14:26,990 E en C, o que iso realmente facer é me dar un punteiro para este real 292 00:14:26,990 --> 00:14:29,740 código, e entón isto podería executalo. 293 00:14:29,740 --> 00:14:33,350 Pero basta pensar niso como está pasando o código a executar cando 294 00:14:33,350 --> 00:14:35,150 que arquivo é aberto. 295 00:14:35,150 --> 00:14:41,430 >> Pero o que isto significa que agora o resto do meu programa que podería facer 296 00:14:41,430 --> 00:14:47,050 outras cousas, pode continuar a facer outro cousas, mentres nós, en realidade non esperar, pero 297 00:14:47,050 --> 00:14:50,890 só ten na parte de atrás das nosas cabezas que cando aberta, carreira daquel ficheiro 298 00:14:50,890 --> 00:14:52,130 código na parte superior. 299 00:14:52,130 --> 00:14:53,390 Será que isto ten sentido? 300 00:14:53,390 --> 00:14:58,060 >> E agora, a idea detrás do Node.js é que o código do material facer con f 301 00:14:58,060 --> 00:15:04,590 parte debe ser moi curto e sinxelo e sinxela e non ser realmente 302 00:15:04,590 --> 00:15:06,160 moi computacionalmente intensivas. 303 00:15:06,160 --> 00:15:09,390 Pode ter que abrir outro ficheiro, pero que tamén debe ser moi rápido 304 00:15:09,390 --> 00:15:14,710 porque debe só dicir facer outra f abrir e, a continuación, chamar iso de outro código. 305 00:15:14,710 --> 00:15:19,100 >> Entón, só para ser completamente claro, o f que fai abrir a nova música de Katy Perry 306 00:15:19,100 --> 00:15:23,060 done mp3, que vai moito moi regresar inmediatamente. 307 00:15:23,060 --> 00:15:27,820 E entón podemos só seguir facendo outras cousas, porque todo o que agora f 308 00:15:27,820 --> 00:15:33,410 licitación fai é dicir basicamente o código aberto f subxacente abrir este ficheiro 309 00:15:33,410 --> 00:15:36,020 e cando estea listo abrir este ficheiro ou cando recibe de volta, 310 00:15:36,020 --> 00:15:37,480 a continuación, realizar este código. 311 00:15:37,480 --> 00:15:39,540 Pero realmente non executar este código. 312 00:15:39,540 --> 00:15:41,815 E tiña unha pregunta? 313 00:15:41,815 --> 00:15:46,180 >> Audiencia: Vostede parece implicar algúns veces que a adición computacionalmente 314 00:15:46,180 --> 00:15:50,545 código intensivo tipo de romper o [Inaudível] sistema orientado. 315 00:15:50,545 --> 00:15:51,795 [Inaudível]? 316 00:15:51,795 --> 00:15:54,450 317 00:15:54,450 --> 00:15:55,290 >> KEVIN Schmid: Esta é unha boa pregunta. 318 00:15:55,290 --> 00:15:59,280 Entón, eu realmente teño un exemplo de como pode integrar computacionalmente 319 00:15:59,280 --> 00:16:01,090 código intensivo en algo. 320 00:16:01,090 --> 00:16:03,620 Así, cando chegamos aos exemplos de código, Vou ter a certeza de tirar esa. 321 00:16:03,620 --> 00:16:04,700 Todo ben? 322 00:16:04,700 --> 00:16:05,950 Grazas. 323 00:16:05,950 --> 00:16:07,690 324 00:16:07,690 --> 00:16:08,750 >> Cal era o seu nome? 325 00:16:08,750 --> 00:16:10,620 >> Audiencia: Aaron. 326 00:16:10,620 --> 00:16:14,830 >> KEVIN Schmid: Aaron trae unha moi bo punto, que é o que se eu tivese 327 00:16:14,830 --> 00:16:18,560 algún código computacionalmente intensivo en as cousas ver coa parte f, o resto da 328 00:16:18,560 --> 00:16:22,880 meu programa non pode ser executado e non pode escoitar para os novos pedidos ou calquera cousa ata que todo 329 00:16:22,880 --> 00:16:24,270 este material está rematado. 330 00:16:24,270 --> 00:16:27,390 Entón, se eu estou escribindo código Node en xeral a menos que fagamos algo que eu vou 331 00:16:27,390 --> 00:16:33,060 suxerir máis tarde, cando miramos para o exemplos de código, eu teño que estar seguro de que 332 00:16:33,060 --> 00:16:36,060 meu código non amarre este ciclo de eventos. 333 00:16:36,060 --> 00:16:38,120 Será que isto ten sentido? 334 00:16:38,120 --> 00:16:38,350 Aceptar. 335 00:16:38,350 --> 00:16:40,040 Legal. 336 00:16:40,040 --> 00:16:47,090 >> Entón Node.js ofrece neste cadro que pode construír estes evento dirixido 337 00:16:47,090 --> 00:16:48,210 servidores con. 338 00:16:48,210 --> 00:16:53,460 Por iso, ten este tipo de asíncrono non-blocking E / bibliotecas, mentres 339 00:16:53,460 --> 00:16:56,800 as bibliotecas estándar C que fomos traballar, como se só 340 00:16:56,800 --> 00:16:59,500 usalos do mesmo xeito que temos de usalos con f abre e 341 00:16:59,500 --> 00:17:03,000 cousas, aqueles están bloqueando porque realmente ten que esperar 342 00:17:03,000 --> 00:17:04,470 que ficheiro a abrir. 343 00:17:04,470 --> 00:17:09,290 >> Pero Node.js dálle iso e basicamente lazos en V8 de Google 344 00:17:09,290 --> 00:17:14,030 JavaScript engine que é a razón que Chrome é tan rápido en procesamento 345 00:17:14,030 --> 00:17:17,040 JavaScript por ten este motor V8. 346 00:17:17,040 --> 00:17:22,460 Entón, sei que soa como un dos Conferencias de desenvolvedores WWDC cousa 347 00:17:22,460 --> 00:17:25,390 onde só xogar unha morea de a número carta cousas para procesadores 348 00:17:25,390 --> 00:17:26,910 e dicir que iso é tan legal. 349 00:17:26,910 --> 00:17:34,200 Pero é legal que fixeron iso porque JavaScript - 350 00:17:34,200 --> 00:17:37,010 ou que se non está familiarizado con JavaScript aínda porque non tivemos 351 00:17:37,010 --> 00:17:38,180 as conferencias sobre el - 352 00:17:38,180 --> 00:17:40,770 pero JavaScript é unha interpretación lingua. 353 00:17:40,770 --> 00:17:41,970 >> E este é un punto importante tamén. 354 00:17:41,970 --> 00:17:45,790 Polo tanto, é importante para o noso web servidores para ser rápido, non? 355 00:17:45,790 --> 00:17:49,970 E si estabamos correndo JavaScript código que foi interpretado con só 356 00:17:49,970 --> 00:17:52,130 calquera intérprete de idade, pode ser lenta. 357 00:17:52,130 --> 00:17:55,980 Beneficios Entón Nó de ter este intérprete V8 super rápido. 358 00:17:55,980 --> 00:17:59,580 E eu non sei se ela foi bautizada como porque o tapa V8 na testa 359 00:17:59,580 --> 00:18:01,110 cousa, pero Aceptar. 360 00:18:01,110 --> 00:18:07,070 >> Entón eu preparei algúns exemplos neste URL. 361 00:18:07,070 --> 00:18:10,490 Despois do seminario, eu estou medio que vai falar de como pode obter conxunto no 362 00:18:10,490 --> 00:18:13,570 Pero, por agora, eu só unha especie de querer para percorrer algúns exemplos de código. 363 00:18:13,570 --> 00:18:17,250 Entón, se quere seguir, todo o código fonte está dispoñible alí. 364 00:18:17,250 --> 00:18:18,720 OK? 365 00:18:18,720 --> 00:18:22,280 >> Entón, eu vou deixar esa URL se para un pouco. 366 00:18:22,280 --> 00:18:24,440 E entón eu só vou amosar no terminal. 367 00:18:24,440 --> 00:18:29,670 368 00:18:29,670 --> 00:18:34,400 Está todo o mundo ben con esta URL? 369 00:18:34,400 --> 00:18:37,990 Entón eu vou pasar para o meu terminal aquí. 370 00:18:37,990 --> 00:18:42,030 >> Entón, aquí está o código que Teño para hoxe. 371 00:18:42,030 --> 00:18:43,960 Por que non comezan con simpler.js arquivo? 372 00:18:43,960 --> 00:18:49,110 373 00:18:49,110 --> 00:18:52,100 A outra cousa é que todo isto código será escrito en 374 00:18:52,100 --> 00:18:56,660 JavaScript que pode ou pode non estar familiarizado. 375 00:18:56,660 --> 00:19:00,170 Eu creo que algunhas cousas é que moitas de código JavaScript é o tipo de 376 00:19:00,170 --> 00:19:04,000 sintaxe e estrutura é moi semellante á C, de modo que pode tipo de busca-lo como 377 00:19:04,000 --> 00:19:05,020 vaia xunto. 378 00:19:05,020 --> 00:19:08,750 Intento escribir unha morea de código de partida para iso dun xeito que é 379 00:19:08,750 --> 00:19:11,230 semellante ao C de xeito que sexa algo máis lexible. 380 00:19:11,230 --> 00:19:15,980 Pero a medida que progredimos, eu vou estar demostrando algunhas das adicional 381 00:19:15,980 --> 00:19:18,980 características do JavaScript que son legal. 382 00:19:18,980 --> 00:19:21,510 >> Pero imos mirar para este programa de exemplo. 383 00:19:21,510 --> 00:19:24,820 Eu creo que todo é cortado alí. 384 00:19:24,820 --> 00:19:28,500 Eu só vou fixar iso de verdade rápido se está todo OK ou non. 385 00:19:28,500 --> 00:19:31,400 Eu non sei o que iso vai facer. 386 00:19:31,400 --> 00:19:34,660 Isto é un pouco mellor? 387 00:19:34,660 --> 00:19:36,510 Podes ver a var e cousas así? 388 00:19:36,510 --> 00:19:39,320 Aceptar. 389 00:19:39,320 --> 00:19:44,120 >> Así, a primeira liña é como o JavaScript versión dunha variable 390 00:19:44,120 --> 00:19:44,800 declaración. 391 00:19:44,800 --> 00:19:49,870 Entón, só para destacar o que iso sería parecer en C. Polo tanto, este é só como 392 00:19:49,870 --> 00:19:52,620 Índice me dicindo é igual a tres ou algo parecido. 393 00:19:52,620 --> 00:19:55,740 Entón, eu non especifica o tipo. 394 00:19:55,740 --> 00:20:00,780 JavaScript ten tipos, pero é moi dinámica ingresaran na natureza, así 395 00:20:00,780 --> 00:20:02,580 non proporcionar calquera tipo de tipo sobre el. 396 00:20:02,580 --> 00:20:03,670 El só ten var. 397 00:20:03,670 --> 00:20:05,320 É como variable. 398 00:20:05,320 --> 00:20:05,920 OK? 399 00:20:05,920 --> 00:20:08,340 >> E eu estou chamando este HTTP variable. 400 00:20:08,340 --> 00:20:12,480 E ao meu lado dereito, eu teño a expresión que quero poñer en HTTP. 401 00:20:12,480 --> 00:20:14,960 E iso di esixir HTTP. 402 00:20:14,960 --> 00:20:18,500 Polo tanto, esta é unha especie de similar para incluír. 403 00:20:18,500 --> 00:20:22,940 É un pouco máis como poderoso do que incluír, no sentido de incluír 404 00:20:22,940 --> 00:20:26,100 sería só copia e pega a cabeceira ficheiro para os prototipos de función ou 405 00:20:26,100 --> 00:20:27,930 Sexa o que sexa, coas definicións de tipo. 406 00:20:27,930 --> 00:20:30,590 Pero esixen que realmente está a suceder para levar o código. 407 00:20:30,590 --> 00:20:33,280 >> Así, pode pensar niso como importación de varios códigos. 408 00:20:33,280 --> 00:20:37,960 Entón, en algún lugar do módulo Node.js sistema ou calquera outra cousa, eles teñen todo isto 409 00:20:37,960 --> 00:20:40,790 Código do servidor HTTP para que eu son só buscar isto para o meu propio 410 00:20:40,790 --> 00:20:43,130 uso persoal neste programa. 411 00:20:43,130 --> 00:20:44,260 OK? 412 00:20:44,260 --> 00:20:46,930 >> Entón eu teño esa función que escribín. 413 00:20:46,930 --> 00:20:50,330 E teña en conta que eu non teño que especificar o tipo de retorno ou o tipo de 414 00:20:50,330 --> 00:20:51,140 argumentos de novo. 415 00:20:51,140 --> 00:20:54,440 Así, tipo de solto escriba que tipo de sentido. 416 00:20:54,440 --> 00:20:57,290 Dous argumentos que leva en, a solicitude e resposta. 417 00:20:57,290 --> 00:21:02,080 Entón, iso é conceptualmente tipo como familiar a partir da imaxe que tiñamos 418 00:21:02,080 --> 00:21:05,280 na pantalla antes porque temos esta solicitude que nós 419 00:21:05,280 --> 00:21:06,410 ter do usuario. 420 00:21:06,410 --> 00:21:09,170 E entón nós temos unha resposta que podemos escribir cousas. 421 00:21:09,170 --> 00:21:15,060 >> Así, a primeira liña deste fai res.writeHead 200 e, a continuación, este 422 00:21:15,060 --> 00:21:17,070 tipo de contidos de texto simple. 423 00:21:17,070 --> 00:21:19,300 Entón, imos remendar este apart un pouco. 424 00:21:19,300 --> 00:21:22,340 Entón imos centrar res.write para un pouco. 425 00:21:22,340 --> 00:21:28,420 Entón escribir é basicamente e escribir cabeza, son só formas de escribir unha especie de fóra 426 00:21:28,420 --> 00:21:29,960 cousas para a resposta. 427 00:21:29,960 --> 00:21:30,770 OK? 428 00:21:30,770 --> 00:21:36,230 Entón escriba cabeza, se alguén se lembra da charla HTTP, é que vostedes 429 00:21:36,230 --> 00:21:39,940 lembrar cabeceiras no principio da cousa HTTP? 430 00:21:39,940 --> 00:21:43,580 Entón por que non eu só demostración cabeceiras rápido. 431 00:21:43,580 --> 00:21:44,640 Iso sería útil? 432 00:21:44,640 --> 00:21:45,500 Ou debemos só unha especie de - 433 00:21:45,500 --> 00:21:46,070 Aceptar. 434 00:21:46,070 --> 00:21:46,740 Claro. 435 00:21:46,740 --> 00:21:52,340 >> Entón, cando o navegador vai a google.com ou algo parecido, 436 00:21:52,340 --> 00:21:54,250 hai realmente un pouco máis - 437 00:21:54,250 --> 00:21:55,380 é dicir como un segredo - 438 00:21:55,380 --> 00:21:58,340 non hai como un pouco máis de información que vén a través do tubo que 439 00:21:58,340 --> 00:22:00,180 o pouco de busca e todo máis. 440 00:22:00,180 --> 00:22:03,550 Entón, para amosar iso, eu vou para usar un programa chamado Curl. 441 00:22:03,550 --> 00:22:04,260 OK? 442 00:22:04,260 --> 00:22:08,020 Entón, iso é algo que pode realizar en súa liña de ordes Mac OSX ou no 443 00:22:08,020 --> 00:22:09,830 dispositivo ou o que sexa. 444 00:22:09,830 --> 00:22:17,050 E así se eu Enrolar HTTP google.com, Vou ver o HTML. 445 00:22:17,050 --> 00:22:21,230 E esta é, con xustiza, só o HTML este tipo de conta que 446 00:22:21,230 --> 00:22:24,695 redireccionar para www O seu navegador non ten tratar automaticamente o 447 00:22:24,695 --> 00:22:27,110 redirección. 448 00:22:27,110 --> 00:22:33,390 >> Polo tanto, esta é só HTML, pero eu vou Engadir para ondular este guión Eu bandeira. 449 00:22:33,390 --> 00:22:33,600 OK? 450 00:22:33,600 --> 00:22:35,600 E iso vai amosar mos cabeceiras. 451 00:22:35,600 --> 00:22:40,640 Polo tanto, esta é tamén a información que vén través cando chegar esta resposta. 452 00:22:40,640 --> 00:22:41,260 OK? 453 00:22:41,260 --> 00:22:45,320 >> Así, na parte superior, ve iso HTTP 301 mover permanentemente. 454 00:22:45,320 --> 00:22:49,470 E iso é importante porque o tipo de refírese ao código de estado. 455 00:22:49,470 --> 00:22:53,750 Así, o 301 aquí é o código de estado, que é, basicamente, só un número enteiro 456 00:22:53,750 --> 00:22:57,750 que informa ao navegador ou quen queira que estea lendo isto, se finxir que 457 00:22:57,750 --> 00:23:01,460 vostede é un navegador e que está a ver iso, basicamente agora se ollar para 458 00:23:01,460 --> 00:23:04,960 iso e ver un 301, vostede sabe que eu teño para facer algo especial en base a 459 00:23:04,960 --> 00:23:08,810 301, ou pasou algo especial baseado na 301. 460 00:23:08,810 --> 00:23:12,640 El di que mudouse permanentemente. 461 00:23:12,640 --> 00:23:17,700 >> E entón, basicamente, temos unha morea de pares de valores clave. 462 00:23:17,700 --> 00:23:22,100 Entón, nós temos o local é www.google.com. 463 00:23:22,100 --> 00:23:25,190 E, a continuación, tipo de todas esas outras cousas, pero basicamente o que o local é 464 00:23:25,190 --> 00:23:29,662 proverbio é o novo local está en www.google.com. 465 00:23:29,662 --> 00:23:33,800 Polo tanto, agora se vai a google.com, vai tipo de ver o tipo de navegador palpebrar 466 00:23:33,800 --> 00:23:38,770 por un segundo e, a continuación, redireccionándoos lo de volta a www.google.com. 467 00:23:38,770 --> 00:23:41,840 Así, as respostas poden conter eses cabeceiras. 468 00:23:41,840 --> 00:23:43,330 >> E un par de cousas a apuntar. 469 00:23:43,330 --> 00:23:46,890 Entón, imos dicir que estabamos realmente exitosa en visitar unha páxina web. 470 00:23:46,890 --> 00:23:49,040 Entón deixe-me ir a - 471 00:23:49,040 --> 00:23:51,080 o que é un bo sitio? 472 00:23:51,080 --> 00:23:53,285 Eu son mal no pensamento do ben sitios no lugar. 473 00:23:53,285 --> 00:23:53,640 >> Audiencia: Wikipedia. 474 00:23:53,640 --> 00:23:54,160 >> KEVIN Schmid: Aceptar. 475 00:23:54,160 --> 00:23:56,040 Imos facer Wikipedia. 476 00:23:56,040 --> 00:23:58,680 Entón, aquí eu estaba emocionado. 477 00:23:58,680 --> 00:23:59,240 Oh wait. 478 00:23:59,240 --> 00:24:00,160 Estaba? 479 00:24:00,160 --> 00:24:00,890 Si, eu estaba. 480 00:24:00,890 --> 00:24:01,100 Aceptar. 481 00:24:01,100 --> 00:24:03,005 Entón, eu teño que facer www. 482 00:24:03,005 --> 00:24:06,006 Entón, eu vou facer www. 483 00:24:06,006 --> 00:24:09,680 E como se pode ver, aquí está todo o HTML que o navegador vai procesar 484 00:24:09,680 --> 00:24:10,910 para a Wikipédia. 485 00:24:10,910 --> 00:24:14,055 >> Pero se eu continuar rolando aquí enriba, o que eu vou ver na parte superior - 486 00:24:14,055 --> 00:24:17,800 wow, hai unha morea de HTML na Wikipedia - 487 00:24:17,800 --> 00:24:22,550 pero o que podo ver na parte superior aquí é este código 200 status como oposta á 488 00:24:22,550 --> 00:24:24,570 301 que vin antes. 489 00:24:24,570 --> 00:24:27,100 E teña en conta que ten un bo OK agradable ao lado del. 490 00:24:27,100 --> 00:24:29,470 Entón, iso é como o bo código de estado. 491 00:24:29,470 --> 00:24:31,160 >> Será que 200 número parece familiar? 492 00:24:31,160 --> 00:24:34,120 493 00:24:34,120 --> 00:24:39,880 Si, porque cando eu fixen simpler.js, Eu escribín un 200 alí. 494 00:24:39,880 --> 00:24:43,290 Entón, que é basicamente dicindo contar a navegador ou quen está intentando chegar ao 495 00:24:43,290 --> 00:24:45,440 este que foron exitosos. 496 00:24:45,440 --> 00:24:49,040 Ou que tipo de como nós foron exitosos tamén. 497 00:24:49,040 --> 00:24:54,320 >> E non hai este tipo de sintaxe especial en Javascript para declarar unha 498 00:24:54,320 --> 00:24:59,870 mapa destas claves, como tipo de contido e eses valores como texto simple. 499 00:24:59,870 --> 00:25:03,780 Entón, se ollar para a resposta que nós volvín da Wikipedia antes, - 500 00:25:03,780 --> 00:25:06,200 Vou probar rolar ata un pouco máis rápido - 501 00:25:06,200 --> 00:25:09,900 ten esas claves como servidor e estes valores Apache. 502 00:25:09,900 --> 00:25:12,120 Entón tes as claves e valores. 503 00:25:12,120 --> 00:25:15,930 E pode especificar tanto en Nó o que enviar de volta. 504 00:25:15,930 --> 00:25:19,380 >> Polo tanto, esta é, en realidade, medio que, nalgúns camiños, e nalgúns aspectos, non é 505 00:25:19,380 --> 00:25:23,170 realmente, pero é un pouco máis baixo nivel que o código PHP que pode ser 506 00:25:23,170 --> 00:25:26,980 escribir para P establecer sete por PHP e Apache tipo de coidar dalgúns 507 00:25:26,980 --> 00:25:28,150 destas cousas para ti. 508 00:25:28,150 --> 00:25:32,520 No PHP, pode substituír o patrón comportamento escribindo os seus propios cabeceiras. 509 00:25:32,520 --> 00:25:35,520 Pero, para os fins do presente, temos para escribir os nosos propios cabeceiras. 510 00:25:35,520 --> 00:25:38,210 511 00:25:38,210 --> 00:25:41,105 >> Entón, iso liña ten sentido todo, a liña da cabeza de gravación? 512 00:25:41,105 --> 00:25:41,380 Aceptar. 513 00:25:41,380 --> 00:25:42,280 Incrible. 514 00:25:42,280 --> 00:25:45,870 >> Entón o que fago é acabar coa resposta dicindo Hola mundo. 515 00:25:45,870 --> 00:25:47,040 Aceptar. 516 00:25:47,040 --> 00:25:49,920 Pero isto é só unha función chamado manipulador de solicitude. 517 00:25:49,920 --> 00:25:53,510 Entón, agora eu realmente teño que tipo de facer algo con esa función, non? 518 00:25:53,510 --> 00:25:59,170 >> Entón, aquí o que fago é que hai esta liña que fai iguais servidor var 519 00:25:59,170 --> 00:26:03,530 HTTP.create servidor, e entón eu pasar o manipulador de solicitude. 520 00:26:03,530 --> 00:26:06,080 Polo tanto, este é o tipo de nodo forma de realización dun servidor. 521 00:26:06,080 --> 00:26:08,790 E teña en conta que eu estou pasando no manipulador de solicitude. 522 00:26:08,790 --> 00:26:12,290 Entón, iso está dicindo a createServer función que quero que me faga unha 523 00:26:12,290 --> 00:26:16,270 servidor, e cando este servidor recibe unha resposta, eu teño de ti para chamar este 524 00:26:16,270 --> 00:26:18,680 solicitar función de manipulador. 525 00:26:18,680 --> 00:26:18,990 OK? 526 00:26:18,990 --> 00:26:22,290 >> Así que a liña practicamente remata inmediatamente. 527 00:26:22,290 --> 00:26:28,780 Así, a liña de servidores var é ben feito despois fai isto moi ben. 528 00:26:28,780 --> 00:26:31,770 Quero dicir, ten que configurar algún interno estado para saber que tería que 529 00:26:31,770 --> 00:26:35,400 chamar esa función manipulador de solicitudes, pero non vai se sentir alí e 530 00:26:35,400 --> 00:26:37,730 digamos que o usuario ten enviado me unha proposta aínda? 531 00:26:37,730 --> 00:26:39,270 Será que o usuario me enviou unha proposta aínda? 532 00:26:39,270 --> 00:26:40,780 Por iso, non bloquear. 533 00:26:40,780 --> 00:26:41,650 OK? 534 00:26:41,650 --> 00:26:46,120 >> Entón, o que isto vai facer é, basicamente, agora almacena un punteiro a este código, 535 00:26:46,120 --> 00:26:49,670 esta función de manipulador de solicitude, e, a continuación, executará este código, cando alguén 536 00:26:49,670 --> 00:26:52,170 fai un pedido. 537 00:26:52,170 --> 00:26:54,120 E entón nós facemos server.listen. 538 00:26:54,120 --> 00:26:56,950 539 00:26:56,950 --> 00:26:59,960 >> O 1337 non é moi arbitraria. 540 00:26:59,960 --> 00:27:02,285 Eu non tiña ningunha razón especial para escoller ese número. 541 00:27:02,285 --> 00:27:03,860 Foi totalmente aleatorio. 542 00:27:03,860 --> 00:27:07,010 Pero iso só especifica a porta. 543 00:27:07,010 --> 00:27:10,640 Así, a maioría dos servidores web que vai ver que eles usar a porta 80, pois ese é o tipo 544 00:27:10,640 --> 00:27:11,810 de como a convención. 545 00:27:11,810 --> 00:27:16,170 Entón, se eu for a algo como: Eu non sei, Wikipedia.org, 546 00:27:16,170 --> 00:27:17,700 e engada dous puntos 8 - 547 00:27:17,700 --> 00:27:18,610 oh wow, non pode ver iso. 548 00:27:18,610 --> 00:27:19,370 Sinto moito. 549 00:27:19,370 --> 00:27:21,820 Pero se eu fai Wikipedia - 550 00:27:21,820 --> 00:27:24,810 Vou escribir aquí só para que queda claro na cámara. 551 00:27:24,810 --> 00:27:29,150 Pero se eu levar isto en un navegador con dous puntos de 80, que especifica ir 552 00:27:29,150 --> 00:27:31,430 Wikipedia.org na porta 80. 553 00:27:31,430 --> 00:27:36,200 Entón, é como como Estados Unidos varias portas, como onde podes enviar 554 00:27:36,200 --> 00:27:37,440 as cousas a medio. 555 00:27:37,440 --> 00:27:40,730 Entón, é como ir a este particular poñer no servidor. 556 00:27:40,730 --> 00:27:40,990 Aceptar. 557 00:27:40,990 --> 00:27:45,730 >> Entón, eu só escollín 1337. 558 00:27:45,730 --> 00:27:47,910 Hai toda unha serie de números que pode escoller. 559 00:27:47,910 --> 00:27:50,390 Isto non foi totalmente especial. 560 00:27:50,390 --> 00:27:54,560 >> Pero o que eu vou facer agora é que eu vou correr Node. 561 00:27:54,560 --> 00:27:59,730 Déixeme realmente entrar que unha parella liñas para abaixo para que poida velo. 562 00:27:59,730 --> 00:28:03,130 Vou facer Node, e estou vai realizar simpler.js. 563 00:28:03,130 --> 00:28:06,880 E imos falar sobre como obter Nó creado en un pouco. 564 00:28:06,880 --> 00:28:09,350 Pero agora é só executar o servidor. 565 00:28:09,350 --> 00:28:14,360 >> Entón, unha cousa que pode probar o que non pode ser tan emocionante é que podemos realmente 566 00:28:14,360 --> 00:28:16,300 tentar acceder a ela en Curl. 567 00:28:16,300 --> 00:28:20,680 Entón eu podo facer Curl, e miña máquina é servidor local. 568 00:28:20,680 --> 00:28:24,600 Tamén vai ver iso escrito así ás veces. 569 00:28:24,600 --> 00:28:29,810 Auxiliares e 127.0.0.1 local son unha especie de como o seu ordenador de casa. 570 00:28:29,810 --> 00:28:33,180 Entón, é como falar con seu propio ordenador. 571 00:28:33,180 --> 00:28:33,760 Aceptar. 572 00:28:33,760 --> 00:28:36,030 >> E entón eu podo dicir que 1337. 573 00:28:36,030 --> 00:28:39,630 Entón, se eu executar esta liña de código, el di Ola mundo. 574 00:28:39,630 --> 00:28:44,050 E se eu quería ver o material que tiña texto simple ou tipo de contido 575 00:28:44,050 --> 00:28:46,560 Sexa o que sexa, eu podería incluso poñer iso aquí. 576 00:28:46,560 --> 00:28:48,810 E teña en conta que di Aceptar. 577 00:28:48,810 --> 00:28:50,810 E eu teño de texto simple. 578 00:28:50,810 --> 00:28:53,140 E despois hai o tipo de todas estas outras cousas que Node vai engadir en 579 00:28:53,140 --> 00:28:54,440 alí para min. 580 00:28:54,440 --> 00:28:55,700 Isto non é super importante. 581 00:28:55,700 --> 00:28:58,230 >> Quero dicir, hai algún tipo de técnico aspectos en que son unha especie 582 00:28:58,230 --> 00:29:02,280 de legal para falar, pero só para mostrar ti, eu tamén teño o poder de 583 00:29:02,280 --> 00:29:03,070 cambia-las por preto. 584 00:29:03,070 --> 00:29:06,280 Entón eu só podo engadir unha chea de cousas así. 585 00:29:06,280 --> 00:29:11,780 E entón agora, se eu ollar no meu de saída, será que. 586 00:29:11,780 --> 00:29:19,740 Entón, eses cabeceiras dicir certas cousas para navegadores e cousas así. 587 00:29:19,740 --> 00:29:23,040 >> E cabeceiras pode basicamente dicir un navegador como responder a algo. 588 00:29:23,040 --> 00:29:26,280 Se vostede xa escoitou falar de cookies antes, ou se xa estivo irritado 589 00:29:26,280 --> 00:29:29,330 por unha páxina web creación cookies, ou conectado bloque cookie ou 590 00:29:29,330 --> 00:29:30,320 algo parecido. 591 00:29:30,320 --> 00:29:33,040 Realmente pode definir cookies nestes cabeceiras. 592 00:29:33,040 --> 00:29:36,990 Entón, eles din un navegador como comportamento nalgúns casos. 593 00:29:36,990 --> 00:29:37,750 Aceptar. 594 00:29:37,750 --> 00:29:40,310 >> Así que foi simpler.js. 595 00:29:40,310 --> 00:29:42,780 Alguén ten algunha dúbida en que ficheiro de código fonte? 596 00:29:42,780 --> 00:29:45,420 597 00:29:45,420 --> 00:29:45,610 Aceptar. 598 00:29:45,610 --> 00:29:46,490 Legal. 599 00:29:46,490 --> 00:29:50,780 >> Polo tanto, imos eliminar o r de que e mirar para simple.js. 600 00:29:50,780 --> 00:29:53,010 Entón, iso é moi fermoso o mesmo programa. 601 00:29:53,010 --> 00:29:56,030 Eu só escribín un pouco diferente porque eu quería resolver destacados 602 00:29:56,030 --> 00:29:57,850 algunhas características do JavaScript. 603 00:29:57,850 --> 00:30:03,880 >> Entón, teña en conta que o manipulador de solicitude función teña completamente desaparecido. 604 00:30:03,880 --> 00:30:05,800 Ah si, se tes algunha pregunta? 605 00:30:05,800 --> 00:30:08,200 >> Audiencia: Si, os argumentos que son pasadas para o 606 00:30:08,200 --> 00:30:10,120 función, o que son? 607 00:30:10,120 --> 00:30:12,050 >> KEVIN Schmid: Polo tanto, estas son JavaScript obxectos. 608 00:30:12,050 --> 00:30:15,230 Na documentación do Node.js, el basicamente di que métodos son 609 00:30:15,230 --> 00:30:15,910 dispoñible sobre eles. 610 00:30:15,910 --> 00:30:19,602 Nós só terá lugar a ter acceso a este método chamado cabeza de gravación e final 611 00:30:19,602 --> 00:30:20,730 e cousas así. 612 00:30:20,730 --> 00:30:22,590 Pero hai un grupo enteiro máis métodos. 613 00:30:22,590 --> 00:30:27,670 >> E por exemplo, como un deles en particular, sobre rec, pode facer 614 00:30:27,670 --> 00:30:34,540 algo así como rec.method que será dicirlle se é un HTTP GET ou 615 00:30:34,540 --> 00:30:36,780 Solicitudes HTTP POST e cousas así. 616 00:30:36,780 --> 00:30:39,100 Polo tanto, hai todo tipo de diferente propiedades, pero son dous 617 00:30:39,100 --> 00:30:42,560 JavaScript obxectos, e eles só teñen funcións que lles son inherentes que 618 00:30:42,560 --> 00:30:43,850 pode escribir cousas. 619 00:30:43,850 --> 00:30:45,520 OK? 620 00:30:45,520 --> 00:30:49,030 >> Entón entender que manipulador de solicitudes é totalmente desaparecido. 621 00:30:49,030 --> 00:30:52,650 Pero o código que eu tiña en solicitude manipulador aínda está alí. 622 00:30:52,650 --> 00:30:56,520 Eu aínda teño ese res.writeHead e aínda teño este res.end. 623 00:30:56,520 --> 00:31:00,270 E que este é un exemplo de en JavaScript é a idea dun 624 00:31:00,270 --> 00:31:01,460 función anónima. 625 00:31:01,460 --> 00:31:04,180 e anónimo é como un nome apropiado para el, porque, literalmente, non fai 626 00:31:04,180 --> 00:31:05,180 ter un nome. 627 00:31:05,180 --> 00:31:07,900 Non hai solicitude de función manipulador de alí. 628 00:31:07,900 --> 00:31:10,110 >> Non ten nome, pero aínda é tomar un argumento. 629 00:31:10,110 --> 00:31:12,250 Entón eu teño rec e res. 630 00:31:12,250 --> 00:31:16,180 E eu aínda teño o código. 631 00:31:16,180 --> 00:31:18,930 Isto é perfectamente normal O código JavaScript. 632 00:31:18,930 --> 00:31:22,540 Entón, podo declarar unha función sen explicitamente dándolle un nome. 633 00:31:22,540 --> 00:31:24,250 É un pouco confuso no inicio. 634 00:31:24,250 --> 00:31:26,230 Hai algunhas cousas útiles, como que se pode facer con 635 00:31:26,230 --> 00:31:28,450 estas funcións anónimas. 636 00:31:28,450 --> 00:31:32,100 Alguén ten algunha dúbida sobre iso, ou é OK só para, por agora, 637 00:31:32,100 --> 00:31:34,130 tipo de simplemente aceptar que vai facer o mesmo? 638 00:31:34,130 --> 00:31:36,700 639 00:31:36,700 --> 00:31:37,125 Yep? 640 00:31:37,125 --> 00:31:38,680 >> Audiencia: primeiro son funcións clase en JavaScript? 641 00:31:38,680 --> 00:31:41,020 >> KEVIN Schmid: Son os primeiros clase en JavaScript. 642 00:31:41,020 --> 00:31:45,490 E só sei que estes conceptos de pasando nunha función anónima como 643 00:31:45,490 --> 00:31:49,600 isto é aplicable ao JavaScript que pode escribir no seu proxecto final para 644 00:31:49,600 --> 00:31:51,260 o navegador web tamén. 645 00:31:51,260 --> 00:31:56,700 Así, por exemplo, no Javascript o navegador, é tamén un pouco do evento 646 00:31:56,700 --> 00:32:00,680 dirixido no sentido de que o que vai ten é cando o usuario fai clic neste 647 00:32:00,680 --> 00:32:02,640 botón, quero que executar este código. 648 00:32:02,640 --> 00:32:07,070 >> Entón, é o mesmo tipo de ideas da lado do cliente cando un click do rato ou eles 649 00:32:07,070 --> 00:32:09,870 rato sobre algunha imaxe no seu páxina web, executar este código. 650 00:32:09,870 --> 00:32:11,350 Isto pode aplicarse a servidores. 651 00:32:11,350 --> 00:32:16,380 Entón, iso é máis ou menos como o emocionante polo que JavaScript é realmente un 652 00:32:16,380 --> 00:32:19,810 persoas adecuadas ou algúns pensan que é unha linguaxe adecuada para este tipo de 653 00:32:19,810 --> 00:32:22,530 servidor condutor evento, porque ten estas funcións anónimas. 654 00:32:22,530 --> 00:32:26,150 Ten toda a idea de este código asíncrono. 655 00:32:26,150 --> 00:32:27,060 Aceptar. 656 00:32:27,060 --> 00:32:30,360 Alguén ten algunha dúbida? 657 00:32:30,360 --> 00:32:30,470 >> Aceptar. 658 00:32:30,470 --> 00:32:33,440 Así que foi simple.js. 659 00:32:33,440 --> 00:32:38,070 Entón, imos ollar a unha ou máis un par. 660 00:32:38,070 --> 00:32:42,040 Polo tanto, esta é sleep.js. 661 00:32:42,040 --> 00:32:47,160 Entón é alguén familiarizado con a función durmir C? 662 00:32:47,160 --> 00:32:50,936 De quizais unha das conferencias anteriores ou algo así? 663 00:32:50,936 --> 00:32:54,650 >> Entón, basicamente, pode pasar en Eu creo que un número de segundos ou se está a usar U 664 00:32:54,650 --> 00:32:57,080 durmir un número de milisegundos ou nanosegundos. 665 00:32:57,080 --> 00:33:00,450 E, basicamente, o programa só pode parar correndo para a mesma cantidade de tempo. 666 00:33:00,450 --> 00:33:01,280 Non? 667 00:33:01,280 --> 00:33:06,970 E entón el vai espertar e, finalmente, a continuación, el vai só continuar executando 668 00:33:06,970 --> 00:33:08,340 o programa. 669 00:33:08,340 --> 00:33:12,740 >> Polo tanto, este tipo de servidor dá a impresión de durmir. 670 00:33:12,740 --> 00:33:17,580 Entón, teña en conta que temos o mesmo res.writeHead 200 co cabeceira 671 00:33:17,580 --> 00:33:22,130 antes, pero, a continuación, nós estamos chamando esta función chamada set timeout. 672 00:33:22,130 --> 00:33:26,170 Establecer tempo de espera tamén está dispoñible en o navegador Google Chrome 673 00:33:26,170 --> 00:33:28,000 ou Safari ou o que sexa. 674 00:33:28,000 --> 00:33:31,720 E basicamente o que está facendo aquí se está tomando en unha función. 675 00:33:31,720 --> 00:33:33,360 Teña en conta, de novo, é unha función anónima. 676 00:33:33,360 --> 00:33:36,310 Entón, iso é ben legal porque estamos usando unha función anónima dentro dunha 677 00:33:36,310 --> 00:33:38,950 función anónima que pode ser un pouco raro. 678 00:33:38,950 --> 00:33:42,270 >> Pero el está tomando esa función, que é basicamente dicindo - e de como este 679 00:33:42,270 --> 00:33:47,430 obras é en 5.000 milisegundos, quero que executa esta función que 680 00:33:47,430 --> 00:33:50,830 só remata a resposta e grava hey. 681 00:33:50,830 --> 00:33:56,730 Entón, iso dá a impresión de como durmindo, pero o xeito no que isto realmente 682 00:33:56,730 --> 00:33:59,780 funciona é que imos percorrer esta liña moi rapidamente. 683 00:33:59,780 --> 00:34:01,190 Nós só estamos escribindo algo. 684 00:34:01,190 --> 00:34:03,780 E entón nós tamén imos percorrer esta liña moi rapidamente. 685 00:34:03,780 --> 00:34:08,620 Polo tanto, non estamos realmente indo esperar cinco segundos. 686 00:34:08,620 --> 00:34:11,370 Nós só estamos indo a executar este código instantaneamente. 687 00:34:11,370 --> 00:34:14,219 >> E despois hai, unha vez máis, este pequeno ciclo de acontecementos que agora ten esa cousa 688 00:34:14,219 --> 00:34:17,570 registradores que basicamente é só constantemente camiñando nun círculo 689 00:34:17,570 --> 00:34:21,620 e mirando para o reloxo nunha única fíos e dito, ten cinco segundo 690 00:34:21,620 --> 00:34:22,360 pasou aínda? 691 00:34:22,360 --> 00:34:26,409 E entón, cando ve que o segundo man moveuse uns cinco segundos ou 692 00:34:26,409 --> 00:34:29,190 o que quere, el acorda e di: Oh, o que eu teño que facer? 693 00:34:29,190 --> 00:34:30,350 Oh eu teño que realizar este código. 694 00:34:30,350 --> 00:34:33,110 E entón el vai realizar res.end hey. 695 00:34:33,110 --> 00:34:35,360 >> Entón, de novo, nunca estamos esperando aquí. 696 00:34:35,360 --> 00:34:38,590 Entón non é que este código dentro esta función vai levar cinco 697 00:34:38,590 --> 00:34:39,900 segundos para ser executado. 698 00:34:39,900 --> 00:34:43,090 Este código será executado practicamente instantáneamente, polo menos con respecto a 699 00:34:43,090 --> 00:34:46,139 os cinco segundos que estabamos falando aproximadamente máis cedo antes. 700 00:34:46,139 --> 00:34:52,100 >> Entón, só para mostrar isto en acción, Eu podo facer Node.sleep.js. 701 00:34:52,100 --> 00:34:55,159 E fixo eu romper algo? 702 00:34:55,159 --> 00:34:56,310 Posiblemente. 703 00:34:56,310 --> 00:34:57,410 Sentímolo. 704 00:34:57,410 --> 00:34:59,530 Imos ver o que podemos facer para corrixir isto. 705 00:34:59,530 --> 00:35:10,830 706 00:35:10,830 --> 00:35:12,080 Aceptar. 707 00:35:12,080 --> 00:35:15,460 708 00:35:15,460 --> 00:35:17,464 Entón, en definitiva usar Node.js. 709 00:35:17,464 --> 00:35:19,440 Estou só xogar. 710 00:35:19,440 --> 00:35:19,570 Aceptar. 711 00:35:19,570 --> 00:35:20,820 Só un segundo. 712 00:35:20,820 --> 00:35:27,380 713 00:35:27,380 --> 00:35:27,900 Aceptar. 714 00:35:27,900 --> 00:35:29,130 Sei o que é. 715 00:35:29,130 --> 00:35:34,440 >> Así, o importante é que o meu outro guía aquí, eu estaba correndo Nodo xa en 716 00:35:34,440 --> 00:35:36,590 que mesmo enderezo, 1337. 717 00:35:36,590 --> 00:35:43,370 Así, o erro que este xogou, se miramos no-lo real de preto, é o enderezo en 718 00:35:43,370 --> 00:35:45,180 usar, EADDRINUSE. 719 00:35:45,180 --> 00:35:47,970 Entón, eu xa estaba usando 1337 aquí. 720 00:35:47,970 --> 00:35:52,210 Entón, se eu pechar esta ruta, e entón eu agora tentar executar este, por sorte, o único 721 00:35:52,210 --> 00:35:53,210 se ve ben. 722 00:35:53,210 --> 00:35:53,440 Aceptar. 723 00:35:53,440 --> 00:35:57,020 Entón só pode ter unha cousa tipo de escoitar nunha porta á vez. 724 00:35:57,020 --> 00:35:59,660 Outra solución sería para min só para modificar este programa e facer 725 00:35:59,660 --> 00:36:02,370 sexa como 1338 ou algo así así. 726 00:36:02,370 --> 00:36:04,100 >> Pero agora o soño está a ser executado. 727 00:36:04,100 --> 00:36:06,400 Entón, imos realmente probalo no navegador esta vez porque é un 728 00:36:06,400 --> 00:36:09,080 pouco desinteressante para ver lo nun terminal. 729 00:36:09,080 --> 00:36:13,560 Entón, eu estou indo só para ir a ese 127 dirección novo en 1337. 730 00:36:13,560 --> 00:36:14,850 E se pode ve-lo - 731 00:36:14,850 --> 00:36:18,050 Eu non sei se pode - pero o meu navegador de tomar un tempo moi, moi 732 00:36:18,050 --> 00:36:20,600 tempo para subir ou como cinco segundos. 733 00:36:20,600 --> 00:36:23,460 >> E despois diso, el finalmente acabou coa resposta. 734 00:36:23,460 --> 00:36:29,070 E non pode velo porque a cousa é movido sobre un pouco, pero se eu fai 735 00:36:29,070 --> 00:36:32,500 esta un pouco menor, ten podes ver que di hey. 736 00:36:32,500 --> 00:36:35,130 Entón, eu teño o hey, pero despois de cinco segundos. 737 00:36:35,130 --> 00:36:38,510 E iso pode ser un pouco de ver aquí na terminal, polo que estou 738 00:36:38,510 --> 00:36:40,980 fará a - 739 00:36:40,980 --> 00:36:43,540 imos facer aquí - 740 00:36:43,540 --> 00:36:48,370 imos facer onda este enderezo novo co 1337. 741 00:36:48,370 --> 00:36:50,820 E eu medio que teño que sentir aquí por cinco segundos. 742 00:36:50,820 --> 00:36:53,760 Pero teña en conta que o servidor pode aceptar novas respostas. 743 00:36:53,760 --> 00:36:54,940 Entón, el imprime hey. 744 00:36:54,940 --> 00:36:58,720 >> E a demostración diso, basicamente o que Podo facer neste outro guía - 745 00:36:58,720 --> 00:37:02,640 entón imos dicir que eu fago isto noutra guía, Vou facer Curl e ao mesmo 746 00:37:02,640 --> 00:37:03,780 cousa de novo. 747 00:37:03,780 --> 00:37:06,600 E eu vou tentar chutar estes caras fóra á vez. 748 00:37:06,600 --> 00:37:08,260 Entón, eu vou facer iso, e eu son correrá para aquí e estou 749 00:37:08,260 --> 00:37:09,650 vai facelo de novo. 750 00:37:09,650 --> 00:37:14,030 >> E imos facelo de xeito que podes ver os dous. 751 00:37:14,030 --> 00:37:20,250 Aquel impreso hey e que un impreso hey todo o camiño na - 752 00:37:20,250 --> 00:37:22,550 imos facer esta experiencia de novo. 753 00:37:22,550 --> 00:37:25,100 De feito, imos empregar este enganar, se está todo OK. 754 00:37:25,100 --> 00:37:30,520 >> Entón eu vou usar unha cousa que shell me permite realizar basicamente dúas copias 755 00:37:30,520 --> 00:37:32,630 deste programa en paralelo. 756 00:37:32,630 --> 00:37:36,070 Entón, que vai realizar o primeiro programa e o segundo programa en paralelo. 757 00:37:36,070 --> 00:37:39,060 Polo tanto, agora que eu premer Intro, que vai para facer esta proposta moi bonito 758 00:37:39,060 --> 00:37:40,570 instantáneamente á vez. 759 00:37:40,570 --> 00:37:42,620 Entón, imos dar a este un tiro. 760 00:37:42,620 --> 00:37:44,950 >> Entón, agora di conta dous procesos. 761 00:37:44,950 --> 00:37:50,630 E se está curioso, que 27.000 número é basicamente o proceso de identificación. 762 00:37:50,630 --> 00:37:52,940 E, a continuación, entender, eles imprimiram ei á vez. 763 00:37:52,940 --> 00:37:56,820 Non foi como tivemos que esperar cinco segundos para unha e despois diso, 764 00:37:56,820 --> 00:37:59,640 Cinco segundos despois conseguir o segundo. 765 00:37:59,640 --> 00:38:03,300 Entón, este é o tipo de, de certa forma, é realmente non evidenciar, pero é 766 00:38:03,300 --> 00:38:07,390 evidencia intuitiva de que non é só como agardando cinco segundos, impedindo 767 00:38:07,390 --> 00:38:08,960 todo o segmento. 768 00:38:08,960 --> 00:38:10,720 Aceptar legal. 769 00:38:10,720 --> 00:38:17,850 >> Entón Aaron fixo unha pregunta anterior que era moito o que se nós facer algo - 770 00:38:17,850 --> 00:38:18,735 Yep? 771 00:38:18,735 --> 00:38:19,051 >> Audiencia: Agarde. 772 00:38:19,051 --> 00:38:21,585 Como é que diferente de tapón printf, aínda? 773 00:38:21,585 --> 00:38:23,010 Non fai iso automaticamente facelo? 774 00:38:23,010 --> 00:38:25,390 Por que temos que preocuparnos con iso? 775 00:38:25,390 --> 00:38:26,555 >> KEVIN Schmid: Oh, podería dicir que unha vez máis? 776 00:38:26,555 --> 00:38:29,510 >> Audiencia: Non lle gusta tapón printf facer exactamente a mesma cousa? 777 00:38:29,510 --> 00:38:31,280 >> KEVIN Schmid: O buffer printf? 778 00:38:31,280 --> 00:38:32,753 >> Audiencia: Yeah. 779 00:38:32,753 --> 00:38:33,244 Aceptar. 780 00:38:33,244 --> 00:38:40,609 Non se nun das probas que eran fala de como se dereita printf 781 00:38:40,609 --> 00:38:42,899 algo e, a continuación, telo deter unha segundo, e así que ten que circular dez 782 00:38:42,899 --> 00:38:46,530 veces, que vai esperar dez segundos, e printf entón todo xunto? 783 00:38:46,530 --> 00:38:47,460 >> KEVIN Schmid: Oh, Aceptar. 784 00:38:47,460 --> 00:38:49,170 >> Audiencia: É facer o mesmo cousa, entón, neste caso? 785 00:38:49,170 --> 00:38:52,630 >> KEVIN Schmid: Entón, a pregunta era basicamente, nun dos antigos quizzes 786 00:38:52,630 --> 00:38:57,200 ou algo así, había unha cuestión que basicamente, se di print f 10 787 00:38:57,200 --> 00:39:01,490 cousas dunha vez e despois durmín como en o proceso de imprimir os para fóra, 788 00:39:01,490 --> 00:39:04,850 ao final, por algún motivo, sería simplemente botan os todos para fóra da pantalla. 789 00:39:04,850 --> 00:39:06,740 Polo tanto, hai unha especie de dous diferentes conceptos aquí. 790 00:39:06,740 --> 00:39:10,400 >> Entón eu creo que unha cousa é que, neste caso estamos lidando con dous diferentes 791 00:39:10,400 --> 00:39:13,510 tipo de persoas pregunta o servidor para as cousas á vez. 792 00:39:13,510 --> 00:39:17,455 E a razón que o tipo de printf espera así e botan todo para fóra 793 00:39:17,455 --> 00:39:21,760 dunha soa vez está máis relacionado coa como printf tipo de - 794 00:39:21,760 --> 00:39:25,100 de xeito que o camiño é realmente printf aplicado é que ten, basicamente, a 795 00:39:25,100 --> 00:39:28,850 falar co sistema operativo para escribir ese material para a consola. 796 00:39:28,850 --> 00:39:33,460 Por iso, non quero facer todo isto cousas inmediatamente cando di printf 797 00:39:33,460 --> 00:39:36,260 algunha corda, porque iso podería estar caro se ten de 798 00:39:36,260 --> 00:39:37,340 facelo todas as veces. 799 00:39:37,340 --> 00:39:41,530 >> Entón, se fai printf hey, o seu programa non pode realmente imprimir esta 800 00:39:41,530 --> 00:39:43,040 inmediatamente para a consola. 801 00:39:43,040 --> 00:39:46,080 El podería dicir, OK, eu escribín. 802 00:39:46,080 --> 00:39:49,570 E, a continuación, tipo de esperar por ti para dar un pouco máis antes de que realmente 803 00:39:49,570 --> 00:39:51,380 gravala-lo para a consola. 804 00:39:51,380 --> 00:39:54,040 >> Así, a razón que fose ese o caso - 805 00:39:54,040 --> 00:39:56,450 e é unha especie de non relacionado para o sono - 806 00:39:56,450 --> 00:40:00,060 é que o soño era unha especie de só inxectado alí para demostrar a 807 00:40:00,060 --> 00:40:02,480 feito de que non escribe lo de forma síncrona. 808 00:40:02,480 --> 00:40:06,210 Pero a razón para iso é só actuación de xeito que non ten que 809 00:40:06,210 --> 00:40:08,920 facer que moitos contactos para o sistema operativo. 810 00:40:08,920 --> 00:40:12,300 >> Pero aquí, o que estamos realmente intentando facer con esa cousa de sono é só amosar 811 00:40:12,300 --> 00:40:17,730 que, cando temos dúas persoas que visitan Nesta web, non está indo a poñer 812 00:40:17,730 --> 00:40:22,310 los nunha liña onde vai dicir Teño que axudar, e entón cando estou 813 00:40:22,310 --> 00:40:25,350 totalmente concluído axudar tras estes de cinco segundos, entón eu vou 814 00:40:25,350 --> 00:40:26,750 ir á seguinte persoa. 815 00:40:26,750 --> 00:40:29,515 Entón petición da primeira persoa non amarre este ciclo de eventos 816 00:40:29,515 --> 00:40:31,610 se iso ten sentido. 817 00:40:31,610 --> 00:40:34,980 >> Pero aquí é realmente un exemplo de algo que vai amarrar 818 00:40:34,980 --> 00:40:36,090 o ciclo de eventos. 819 00:40:36,090 --> 00:40:39,130 Entón aquí está unha función horrible calcular o Fibonacci enésima. 820 00:40:39,130 --> 00:40:43,510 É literalmente a peor forma posible calcular o número de Fibonacci enésima. 821 00:40:43,510 --> 00:40:48,480 E iso é realmente só para recoñecer de onde veu iso, 822 00:40:48,480 --> 00:40:49,330 hai realmente - 823 00:40:49,330 --> 00:40:53,230 Quero dicir, pode tentar ir atopalo -, pero non hai como un blog moi lento 824 00:40:53,230 --> 00:40:54,130 post que alguén escribiu. 825 00:40:54,130 --> 00:40:55,660 É como unha desas cousas Reddit. 826 00:40:55,660 --> 00:40:59,650 Pero alguén criticou Node.js e utilizaban tanto como un exemplo. 827 00:40:59,650 --> 00:41:03,700 Entón eu medio que quería só amosar-lle dúas perspectivas diferentes só para obter 828 00:41:03,700 --> 00:41:07,320 unha comprensión xeral dos conceptos detrás destas dúas cousas. 829 00:41:07,320 --> 00:41:13,050 >> Pero iso é escollido como só un terrible, computacionalmente horrible ineficiente 830 00:41:13,050 --> 00:41:15,940 forma intensiva para calcular o enésimo número de Fibonacci. 831 00:41:15,940 --> 00:41:21,180 Así como unha nota lateral, polo que é el terrible como, dunha forma? 832 00:41:21,180 --> 00:41:23,210 Yep? 833 00:41:23,210 --> 00:41:25,130 >> Audiencia: Digamos que comece con 1.000. 834 00:41:25,130 --> 00:41:27,050 1000 divídese en 999 e 998. 835 00:41:27,050 --> 00:41:28,970 Cada desta divídese en dúas cousas. 836 00:41:28,970 --> 00:41:30,890 Cada desta divídese en dúas cousas. 837 00:41:30,890 --> 00:41:31,355 >> KEVIN Schmid: Certo. 838 00:41:31,355 --> 00:41:32,400 >> Audiencia: Todo o camiño cara a abaixo. 839 00:41:32,400 --> 00:41:32,840 >> KEVIN Schmid: Exactamente. 840 00:41:32,840 --> 00:41:37,330 Entón, só para repetir para a cámara, se eu chamar FIB en 1000 ou algo así 841 00:41:37,330 --> 00:41:41,810 así, é evidente que non é menos que ou igual a un, entón eu vou 842 00:41:41,810 --> 00:41:46,040 ir a este problema o máis, e entón eu vou para chamar FIB 999 máis FIB 998. 843 00:41:46,040 --> 00:41:50,290 E, a continuación, practicamente todos os que traballo que FIB 999 fai é 844 00:41:50,290 --> 00:41:52,950 tipo de, a este nivel. 845 00:41:52,950 --> 00:41:55,620 Se descender, é aínda máis redundante do que iso, pero se só 846 00:41:55,620 --> 00:42:01,390 creo computación lorota 998 recibe nos moi preto de fib 999. 847 00:42:01,390 --> 00:42:05,860 Entón, nós realmente debe ser un pouco máis intelixente sobre como nós tipo de reutilización 848 00:42:05,860 --> 00:42:07,580 estes, pero non estamos reutilizando isto en todo. 849 00:42:07,580 --> 00:42:11,860 Entón podes imaxinar este xigantesco, xigantesca árbore que é simplemente horrible. 850 00:42:11,860 --> 00:42:12,940 >> Pero de calquera xeito, Aceptar. 851 00:42:12,940 --> 00:42:14,040 Entón era lorota. 852 00:42:14,040 --> 00:42:15,530 El só ten un tempo para ser executado. 853 00:42:15,530 --> 00:42:16,510 Yep? 854 00:42:16,510 --> 00:42:17,760 >> Audiencia: [inaudível]. 855 00:42:17,760 --> 00:42:20,430 856 00:42:20,430 --> 00:42:22,481 >> KEVIN Schmid: Oh, podería repetir a pregunta? 857 00:42:22,481 --> 00:42:23,731 >> Audiencia: [inaudível]. 858 00:42:23,731 --> 00:42:30,840 859 00:42:30,840 --> 00:42:33,990 >> KEVIN Schmid: Ah entón iso é só un código que vai ser unha especie de no 860 00:42:33,990 --> 00:42:34,850 lado do servidor. 861 00:42:34,850 --> 00:42:38,100 Entón, iso non vai ser atopada no navegador ou nada. 862 00:42:38,100 --> 00:42:42,160 É basicamente o que temos é que, cando o usuario aquí practicamente marcas 863 00:42:42,160 --> 00:42:45,300 súa solicitude de novo, cando unha especie de facer unha proposta, imos chamar 864 00:42:45,300 --> 00:42:47,040 esta función no lado do servidor. 865 00:42:47,040 --> 00:42:50,480 E entón nós imos obter o resultado de volta de chamar esa función. 866 00:42:50,480 --> 00:42:52,460 E entón nós imos só imprimir lo para o usuario. 867 00:42:52,460 --> 00:42:54,580 Así, o usuario non realmente tratar con esta función moito. 868 00:42:54,580 --> 00:42:57,270 >> Foi esa a pregunta? 869 00:42:57,270 --> 00:42:58,470 Será que isto ten sentido? 870 00:42:58,470 --> 00:42:58,810 Aceptar. 871 00:42:58,810 --> 00:43:00,930 Legal. 872 00:43:00,930 --> 00:43:04,240 >> Entón, de novo, nós facemos toda esa res.writeHead cousa na que imprimir 873 00:43:04,240 --> 00:43:05,150 a cabeceira. 874 00:43:05,150 --> 00:43:09,730 E entón eu rematar a resposta, facendo o número máxico é 45 lorota. 875 00:43:09,730 --> 00:43:12,100 Entón imos realizar este servidor. 876 00:43:12,100 --> 00:43:15,190 Entón, eu vou facer un nó fib.js. 877 00:43:15,190 --> 00:43:17,340 Entón agora meu servidor lorota está en execución. 878 00:43:17,340 --> 00:43:21,790 >> E entón, aquí, eu vou para facer un deses. 879 00:43:21,790 --> 00:43:22,200 OK? 880 00:43:22,200 --> 00:43:24,960 Entón, eu só vou dicir: Curl. 881 00:43:24,960 --> 00:43:32,226 Entón, que vai levar un pouco, pero espero que en breve vai rematar e 882 00:43:32,226 --> 00:43:35,660 ha imprimir que 45 Fibonacci número. 883 00:43:35,660 --> 00:43:36,910 >> Audiencia: [inaudível]. 884 00:43:36,910 --> 00:43:40,720 885 00:43:40,720 --> 00:43:42,050 >> KEVIN Schmid: debe pode facer en breve. 886 00:43:42,050 --> 00:43:43,780 Por iso, debe levar de cinco a seis segundos. 887 00:43:43,780 --> 00:43:48,570 Eu non sei que é só ser super V8 rápido, pero en calquera caso, esta é unha 888 00:43:48,570 --> 00:43:52,700 moi curto exemplo e propositadamente deselegante dun non-trivial 889 00:43:52,700 --> 00:43:54,200 computación. 890 00:43:54,200 --> 00:43:56,700 Entón, despois dun tempo, el non conseguir isto. 891 00:43:56,700 --> 00:44:02,130 >> Pero agora, o que se eu fai o mesmo tipo de experiencia como antes, onde fago 892 00:44:02,130 --> 00:44:04,010 dous peticións á vez? 893 00:44:04,010 --> 00:44:06,990 Entón, aquí eu estou indo a unha onda de este enderezo, e eu vou 894 00:44:06,990 --> 00:44:08,260 facer outro Curl. 895 00:44:08,260 --> 00:44:12,070 E lembre, cando fixemos isto para o durmir servidor, cando estamos basicamente tivo que 896 00:44:12,070 --> 00:44:15,320 despois de cinco segundos, eles moi moito tanto volveu dereita 897 00:44:15,320 --> 00:44:16,380 en torno ao mesmo tempo. 898 00:44:16,380 --> 00:44:18,650 Por iso, non foi particularmente amarre. 899 00:44:18,650 --> 00:44:20,290 >> Pero imos tentar iso agora. 900 00:44:20,290 --> 00:44:22,370 OK, polo que temos os nosos dous procesos. 901 00:44:22,370 --> 00:44:24,210 Teña en conta que estes son os IDs de proceso. 902 00:44:24,210 --> 00:44:25,900 Este vai ser un pouco desajeitado, mentres nós parar. 903 00:44:25,900 --> 00:44:31,340 904 00:44:31,340 --> 00:44:35,360 Entón imos estar aquí e esperar. 905 00:44:35,360 --> 00:44:37,090 >> Entón, un deles debe vir volta despois como - 906 00:44:37,090 --> 00:44:39,190 OK, entón un deles volveu. 907 00:44:39,190 --> 00:44:43,570 Pero, entón, por que non fixo o segundo un volver só aínda? 908 00:44:43,570 --> 00:44:44,389 Yep? 909 00:44:44,389 --> 00:44:49,280 >> Audiencia: O servidor non pode facer nada mentres el está computando que gran número. 910 00:44:49,280 --> 00:44:51,620 >> KEVIN Schmid: Certo. 911 00:44:51,620 --> 00:44:55,395 Entón, a resposta foi só que o servidor realmente non pode facer nada mentres 912 00:44:55,395 --> 00:44:57,460 está computando o número de Fibonacci. 913 00:44:57,460 --> 00:44:59,360 Entón agora eu só teño as miñas dúas cousas de volta. 914 00:44:59,360 --> 00:45:03,210 Pero eu creo que só de pensar sobre o código un pouco máis, como está a traballar 915 00:45:03,210 --> 00:45:05,030 e todo máis. 916 00:45:05,030 --> 00:45:11,750 >> Polo tanto, esta función aquí é o código que Eu dixen a este servidor para realizar cando se 917 00:45:11,750 --> 00:45:14,100 recibe unha nova solicitude de entrada. 918 00:45:14,100 --> 00:45:17,940 Por iso, só vai percorrer este código enteiro e, a continuación, que vai ir 919 00:45:17,940 --> 00:45:21,120 volver ao ciclo de eventos e, a continuación, continuar comprobación de novos eventos. 920 00:45:21,120 --> 00:45:23,670 Entón, basicamente o que temos que pasar é o servidor está 921 00:45:23,670 --> 00:45:25,080 escoitando cousas novas. 922 00:45:25,080 --> 00:45:28,070 A primeira persoa que pide o que é 45. 923 00:45:28,070 --> 00:45:30,490 Corremos este código para calcular iso. 924 00:45:30,490 --> 00:45:33,420 Este código ten preto de cinco seis segundos para realizar. 925 00:45:33,420 --> 00:45:36,990 Entón imos voltar ao ciclo de eventos e comprobar se hai novas solicitudes. 926 00:45:36,990 --> 00:45:42,700 >> Polo tanto, este é un exemplo de como, ten cousas que son chamados de computación 927 00:45:42,700 --> 00:45:48,140 grazas, ou usar unha morea de computacional, non poder, pero como son 928 00:45:48,140 --> 00:45:50,260 computacionalmente intensiva - 929 00:45:50,260 --> 00:45:54,080 Eu creo que unha cousa que dicir sobre iso é que esta función está facendo totalmente, 930 00:45:54,080 --> 00:45:56,310 na súa maior parte, bastante dereito traballo útil. 931 00:45:56,310 --> 00:45:59,970 O tempo de que esa chamada de retorno función estaba funcionando, foi moi 932 00:45:59,970 --> 00:46:03,670 moito pasar a maior parte do seu tempo só computación número que Fibonacci enésima. 933 00:46:03,670 --> 00:46:05,930 >> Pero nós só tiña un fío para tratar con eles. 934 00:46:05,930 --> 00:46:10,270 No modelo Apache, cando dúas persoas fixo a solicitude para obter FIB 45, nós 935 00:46:10,270 --> 00:46:11,610 tería dous segmentos diferentes. 936 00:46:11,610 --> 00:46:15,060 E entón o traballo do sistema operativo sería, ou o nivel de usuario 937 00:46:15,060 --> 00:46:18,660 código que xestiona os fíos, tería foi a porción que enriba da 938 00:46:18,660 --> 00:46:23,060 CPU, ou mesmo se tivese varias CPUs, distribuí-las uniformemente en todo o CPUs 939 00:46:23,060 --> 00:46:26,130 co fin de que ambos foron acabado practicamente á vez. 940 00:46:26,130 --> 00:46:31,120 >> Entón, só para mostrar como podemos clasificar de - e este non é un perfecto total de 941 00:46:31,120 --> 00:46:34,280 solución, senón unha especie de como podemos facer unha volta aquí e facer 942 00:46:34,280 --> 00:46:35,880 un pouco mellor. 943 00:46:35,880 --> 00:46:41,540 Entón, o que eu teño aquí é un programa chamado Fib C. E este úsase basicamente 944 00:46:41,540 --> 00:46:45,690 máis un dos módulos do nodo chamada O Módulo de proceso fillo. 945 00:46:45,690 --> 00:46:49,210 Entón eu teño que incluíu na parte superior tipo de como eu faría un quilo inclúen 946 00:46:49,210 --> 00:46:51,230 PROCESS.H neno ou algo así. 947 00:46:51,230 --> 00:46:56,210 Agora eu teño acceso a esta variable CP que ten todo o meu funcionalidade. 948 00:46:56,210 --> 00:47:01,810 >> Entón agora o que estou facendo nesta resposta manipulador é que eu estou a execución deste programa 949 00:47:01,810 --> 00:47:04,100 dot cortar FIB 45. 950 00:47:04,100 --> 00:47:06,820 Entón o que eu fixen - e eu só vou para saír deste programa a un 951 00:47:06,820 --> 00:47:07,620 pouco - 952 00:47:07,620 --> 00:47:11,060 é que escribín un programa en C que basicamente, calcula o 953 00:47:11,060 --> 00:47:12,630 enésimo número de Fibonacci. 954 00:47:12,630 --> 00:47:15,960 Entón, aquí é só un programa que escribín en C, que calcula este. 955 00:47:15,960 --> 00:47:19,040 Podo recompila-lo, e podo correr lo na liña de comandos. 956 00:47:19,040 --> 00:47:22,150 E vai a calcular a Número 45 Fibonacci. 957 00:47:22,150 --> 00:47:24,510 >> Entón, teña en conta que só leva practicamente o mesmo tempo. 958 00:47:24,510 --> 00:47:28,240 Eu probablemente podería usar trazo 03 a optimiza-lo ou algo así, 959 00:47:28,240 --> 00:47:31,050 pero eu só fixen como regulares configuración do compilador. 960 00:47:31,050 --> 00:47:33,260 E el imprime-lo. 961 00:47:33,260 --> 00:47:36,830 >> Pero agora, o que estou facendo unha especie de? 962 00:47:36,830 --> 00:47:39,800 Oh, desculpe, arquivo mal. 963 00:47:39,800 --> 00:47:42,800 Entón fago o mesmo con a cabeceira como antes. 964 00:47:42,800 --> 00:47:45,780 Entón fago este cp.exec. 965 00:47:45,780 --> 00:47:49,460 Entón o que é que isto vai facer é que é indo para executar este programa. 966 00:47:49,460 --> 00:47:51,960 Pero a forma como funciona isto é que non vai esperar por 967 00:47:51,960 --> 00:47:53,400 que o programa termine. 968 00:47:53,400 --> 00:47:56,000 Di só, basicamente, executar este programa. 969 00:47:56,000 --> 00:47:58,700 Entón, basicamente, escriba isto no ventá de consola tipo de. 970 00:47:58,700 --> 00:48:02,350 >> E entón, cando se fai con Lo, executa esta función. 971 00:48:02,350 --> 00:48:04,800 Entón, agora nós tipo de obter este cousa toda restaurada de 972 00:48:04,800 --> 00:48:06,750 como non estamos á espera. 973 00:48:06,750 --> 00:48:08,530 Será que este tipo de ten sentido? 974 00:48:08,530 --> 00:48:08,990 Yep? 975 00:48:08,990 --> 00:48:11,060 >> Audiencia: [inaudível]? 976 00:48:11,060 --> 00:48:13,610 >> KEVIN Schmid: Entón, iso vai realmente abrir un novo proceso para facelo. 977 00:48:13,610 --> 00:48:19,310 Polo tanto, este é, en realidade, nalgúns aspectos, mal, non super mal, pero é 978 00:48:19,310 --> 00:48:22,990 importante dicir que esta é unha especie de voltar, por unha banda, o Apache 979 00:48:22,990 --> 00:48:26,450 modelo onde facemos rutas e procesos para cada solicitude ou 980 00:48:26,450 --> 00:48:29,280 procesos para cada solicitude. 981 00:48:29,280 --> 00:48:32,090 Polo tanto, esta é unha especie de análogo ao que fai Apache. 982 00:48:32,090 --> 00:48:35,110 Nalgúns casos, só utilizará un novo segmento, que é un pouco máis de luz 983 00:48:35,110 --> 00:48:39,040 peso do que un proceso, pero podería Apache acaban se bifurcar un novo proceso 984 00:48:39,040 --> 00:48:43,370 que é unha especie do que facemos aquí implicitamente, facendo punto barra FIB 45. 985 00:48:43,370 --> 00:48:48,690 >> E entón, nese caso, nós medio que incurrirían os mesmos gastos de procesos. 986 00:48:48,690 --> 00:48:50,710 Polo tanto, esta é só unha cousa que podes facer. 987 00:48:50,710 --> 00:48:52,600 Pero só para mostrar este tipo de execución. 988 00:48:52,600 --> 00:48:57,120 E esa conversa é só realmente destinado a presentar este tipo de programas como 989 00:48:57,120 --> 00:49:00,710 forma de mostrar diferentes perspectivas sobre como crear servidores así. 990 00:49:00,710 --> 00:49:08,300 Polo tanto, este está en execución e logo, agora se eu fai iso de novo, eu teño dúas IDs de proceso. 991 00:49:08,300 --> 00:49:10,320 >> Imos falar sobre cousas a apuntar. 992 00:49:10,320 --> 00:49:11,980 Entón, entende que son poucos. 993 00:49:11,980 --> 00:49:12,700 Isto é legal. 994 00:49:12,700 --> 00:49:15,140 Porque era 27.122 antes. 995 00:49:15,140 --> 00:49:18,580 Pero teña en conta o momento, eles volveron máis ou menos á vez. 996 00:49:18,580 --> 00:49:23,960 >> E agora, unha boa pregunta para preguntar sobre por que foi que o caso é, cuxo traballo 997 00:49:23,960 --> 00:49:27,590 era agora a sorte de facer isto tipo de xogo limpo con cada 998 00:49:27,590 --> 00:49:31,350 outras, estas dúas instancias da dot barra FIB 45 que eu corrín 999 00:49:31,350 --> 00:49:32,880 ou que foi Node? 1000 00:49:32,880 --> 00:49:36,940 Quen tipo de fai xusto que ambos O tipo de tempo de execución equilibrada? 1001 00:49:36,940 --> 00:49:42,900 1002 00:49:42,900 --> 00:49:44,220 >> Audiencia: [inaudível]. 1003 00:49:44,220 --> 00:49:44,620 >> KEVIN Schmid: Yeah. 1004 00:49:44,620 --> 00:49:49,740 Entón, basicamente, cando fago punto lorota barra 45 ou algo así, agora é 1005 00:49:49,740 --> 00:49:53,750 tipo de arriba que o sistema operativo xestionar o tempo de execución destes programas. 1006 00:49:53,750 --> 00:49:56,920 E agora pode programa-los en diferentes CPUs ou 1007 00:49:56,920 --> 00:49:58,330 pode programa-los. 1008 00:49:58,330 --> 00:50:01,870 Pode cortar-se o tempo en que un CPU recibe-lo ou que obteñan 1009 00:50:01,870 --> 00:50:03,330 para ser executado nunha CPU. 1010 00:50:03,330 --> 00:50:05,620 Así que esta é a idea detrás diso. 1011 00:50:05,620 --> 00:50:07,220 Isto ten sentido para todo o mundo? 1012 00:50:07,220 --> 00:50:10,950 Entón agora Node non é realmente xogando un parte en dividir estas tarefas. 1013 00:50:10,950 --> 00:50:12,200 Aceptar. 1014 00:50:12,200 --> 00:50:14,050 1015 00:50:14,050 --> 00:50:17,840 >> Entón, iso é case que a exemplos. 1016 00:50:17,840 --> 00:50:23,370 Eu só quería amosar unha cousa porque unha morea de presente ata agora foi 1017 00:50:23,370 --> 00:50:27,350 non totalmente super-práctico nalgúns casos. 1018 00:50:27,350 --> 00:50:30,970 Podo imaxinar volvendo a casa tras este falar e algo e dicindo como, 1019 00:50:30,970 --> 00:50:35,710 ben, eu medio que teño de que a conversa que Eu podo facer un servidor de Fibonacci para 1020 00:50:35,710 --> 00:50:37,360 meu proxecto final. 1021 00:50:37,360 --> 00:50:40,770 Entón aquí está só unha especie de un exemplo que espero veña a ser - 1022 00:50:40,770 --> 00:50:44,620 quizais non, pero quizais - un pouco máis tipo de pertinente a proxectos finais e 1023 00:50:44,620 --> 00:50:46,440 pensando no futuro para cousas así. 1024 00:50:46,440 --> 00:50:48,870 >> Polo tanto, esta é chat.js. 1025 00:50:48,870 --> 00:50:52,290 Polo tanto, esta é unha especie de un pouco de mostra código do lado do servidor que pode usar para 1026 00:50:52,290 --> 00:50:55,700 configurar un servidor de chat pequeno como podes ver no 1027 00:50:55,700 --> 00:50:56,630 Facebook Chat ou o que sexa. 1028 00:50:56,630 --> 00:50:59,990 Entón eu non estou dicindo que iso é como Facebook Chat, pero este é o tipo de 1029 00:50:59,990 --> 00:51:06,230 como unha boa - quizais non é bo, pero quizais punto de partida para unha conversa - bo 1030 00:51:06,230 --> 00:51:08,560 servidor para a súa web para un proxecto final. 1031 00:51:08,560 --> 00:51:11,040 Entón, imos ollar para o que está facendo. 1032 00:51:11,040 --> 00:51:15,500 >> Entón, nós estamos a recibir esa cousa especial , Na parte superior, este var SIO 1033 00:51:15,500 --> 00:51:17,050 é igual a esixir Socket.IO. 1034 00:51:17,050 --> 00:51:20,280 Entón, iso é outra cousa que non fai realmente vir xunto con 1035 00:51:20,280 --> 00:51:22,300 Node pero pode instala-lo. 1036 00:51:22,300 --> 00:51:23,480 É un módulo Node. 1037 00:51:23,480 --> 00:51:25,670 Entón, é como algúns extensión para o nodo. 1038 00:51:25,670 --> 00:51:29,220 >> SocketIO é realmente moi legal. 1039 00:51:29,220 --> 00:51:32,550 É unha abstracción que, basicamente, o que que fai é se el permite que 1040 00:51:32,550 --> 00:51:35,770 ten ese fluxo de comunicación entre unha web 1041 00:51:35,770 --> 00:51:39,430 navegador e un servidor web. 1042 00:51:39,430 --> 00:51:45,250 Entón, na súa maior parte, ata agora, tivemos estes moi rápida un segundo ou dous 1043 00:51:45,250 --> 00:51:48,790 segundo as comunicacións entre un web navegador eo servidor web. 1044 00:51:48,790 --> 00:51:53,310 Entón, é basicamente ir google.com, get o material, envialo de volta, e, a continuación, 1045 00:51:53,310 --> 00:51:53,770 estamos a facer. 1046 00:51:53,770 --> 00:51:56,560 Nunca estamos a falar de novo ata que o tipo de usuario noutra cousa. 1047 00:51:56,560 --> 00:52:01,090 >> Pero o que Socket.IO e mesmo tipo de cousas - e SocketIO é realmente un 1048 00:52:01,090 --> 00:52:03,940 das cousas que está construído sobre como WebSocket que é unha especie de dispoñible 1049 00:52:03,940 --> 00:52:06,440 como parte do HTML5 - 1050 00:52:06,440 --> 00:52:09,620 que permite que teña esta diálogo continuo. 1051 00:52:09,620 --> 00:52:13,990 E isto é moi útil para un servidor de chat tipo de cousas, porque é 1052 00:52:13,990 --> 00:52:17,390 como unha especie de diálogo continuo en certa forma, porque se está a falar 1053 00:52:17,390 --> 00:52:21,540 con alguén, agora pode só enviar un mensaxe para dentro do tubo, e, a continuación, o 1054 00:52:21,540 --> 00:52:23,940 servidor pode enviar unha mensaxe a abaixo a tubos para a outra persoa que é 1055 00:52:23,940 --> 00:52:24,520 charlar. 1056 00:52:24,520 --> 00:52:26,903 E entón pode que este intercambiar así. 1057 00:52:26,903 --> 00:52:30,590 1058 00:52:30,590 --> 00:52:32,850 >> Entón, iso é o tipo que SocketIO é bo para. 1059 00:52:32,850 --> 00:52:38,400 A razón que SocketIO usa WebSockets como unha cousa é que en 1060 00:52:38,400 --> 00:52:43,980 Ademais de WebSockets simplemente vellos, Tamén fai algúns trucos para, basicamente, 1061 00:52:43,980 --> 00:52:45,610 compatibilizar iso web. 1062 00:52:45,610 --> 00:52:50,040 Así, navegadores como o Internet Explorer sentímolo non soportan WebSockets 1063 00:52:50,040 --> 00:52:50,810 dereito fóra da caixa. 1064 00:52:50,810 --> 00:52:55,290 Entón, el usa algún outro tipo de puro legal cousas con Adobe Flash para permitir 1065 00:52:55,290 --> 00:52:57,170 vostede o apoio ao navegador cruz. 1066 00:52:57,170 --> 00:52:58,800 Entón, iso é realmente útil. 1067 00:52:58,800 --> 00:53:02,440 >> E de feito, sei que eu son o tipo de execución en tempo aquí, pero CS50 1068 00:53:02,440 --> 00:53:08,490 Discutir, xa viu algo como, eu non sei, en branco así e así é 1069 00:53:08,490 --> 00:53:11,030 responder a este post ou algo así, esta característica? 1070 00:53:11,030 --> 00:53:12,250 Isto é SocketIO. 1071 00:53:12,250 --> 00:53:15,580 Entón, cando alguén comeza a escribir no caixa de discutir a dar unha resposta ou 1072 00:53:15,580 --> 00:53:20,040 algo, o seu navegador non ten o que hai de chamado SocketIO emite algún tipo de 1073 00:53:20,040 --> 00:53:22,660 caso en que di que alguén é responder a este post. 1074 00:53:22,660 --> 00:53:26,110 >> A continuación, o servidor di: OK, o que eu teño que facer? 1075 00:53:26,110 --> 00:53:29,270 Ben, agora eu teño que dicir a eses outros caras que están no CS50 Discutir buscando 1076 00:53:29,270 --> 00:53:31,170 neste post que alguén está a responder. 1077 00:53:31,170 --> 00:53:34,190 Entón, iso é o tipo do que é SocketIO bo para este tipo continuo de 1078 00:53:34,190 --> 00:53:35,930 fluxo de diálogo. 1079 00:53:35,930 --> 00:53:37,250 Aceptar. 1080 00:53:37,250 --> 00:53:40,060 >> Entón, o que eu teño aquí - e estamos só vai ignorar a matriz conexións 1081 00:53:40,060 --> 00:53:41,390 para un pouco - 1082 00:53:41,390 --> 00:53:43,080 o que fago é que eu escoitar outra. 1083 00:53:43,080 --> 00:53:46,880 Entón, iso é só a forma como é Socket.IO dicindo imos escoitar nesta porta. 1084 00:53:46,880 --> 00:53:50,060 E entón eu fago iso na conexión. 1085 00:53:50,060 --> 00:53:53,360 Entón, iso é basicamente só soquete IO de forma de dicir, cando recibimos unha 1086 00:53:53,360 --> 00:53:55,840 conexión, quero que para realizar este código. 1087 00:53:55,840 --> 00:53:59,870 >> E teña en conta que en vez de ter rec e res pasaron alí teño Socket. 1088 00:53:59,870 --> 00:54:03,260 E esa idea de soquete é basicamente iso cousa que pode gravar e ler 1089 00:54:03,260 --> 00:54:05,750 de que ten o usuario do mensaxes posiblemente. 1090 00:54:05,750 --> 00:54:10,700 E as mensaxes que publique pode pasar por iso Socket. 1091 00:54:10,700 --> 00:54:12,140 Será que isto ten sentido? 1092 00:54:12,140 --> 00:54:14,490 Entón é esa cousa de continuar. 1093 00:54:14,490 --> 00:54:17,820 >> Entón, o que fago é chamar Socket.emit. 1094 00:54:17,820 --> 00:54:20,330 E emiten leva moito moito dous argumentos. 1095 00:54:20,330 --> 00:54:24,100 O primeiro argumento é unha cadea só representa o tipo de 1096 00:54:24,100 --> 00:54:25,270 cousa que está emitindo. 1097 00:54:25,270 --> 00:54:28,120 Polo tanto, para este caso, eu teño uso esta nova mensaxe cadea. 1098 00:54:28,120 --> 00:54:32,670 E iso é só basicamente dicindo que o tipo de tal cousa, o que eu son 1099 00:54:32,670 --> 00:54:34,750 enviando, é unha nova mensaxe. 1100 00:54:34,750 --> 00:54:38,460 Así, pode escoitar a tipos específicos como nova mensaxe ou calquera outra cousa 1101 00:54:38,460 --> 00:54:39,960 usando o punto en. 1102 00:54:39,960 --> 00:54:44,570 >> Entón conexión eo usuario enviado a alí, se mira a onde chamamos punto en diante, 1103 00:54:44,570 --> 00:54:48,150 esas son outras cordas que representan tipos de mensaxes do usuario. 1104 00:54:48,150 --> 00:54:52,060 Entón, é basicamente pode ter este emiten un destes tipos de mensaxes, e 1105 00:54:52,060 --> 00:54:55,520 a continuación, facer algo en resposta a un destes tipos de mensaxes 1106 00:54:55,520 --> 00:54:57,640 >> Entón, eu estou emitindo esta mensaxe nova. 1107 00:54:57,640 --> 00:55:00,540 Imos ignorar connections.push por un segundo. 1108 00:55:00,540 --> 00:55:03,360 Pero, entón, digo, usuario Socket.on enviada. 1109 00:55:03,360 --> 00:55:07,540 Entón, agora é unha especie de gusto cando o user me envía unha mensaxe, quero 1110 00:55:07,540 --> 00:55:09,240 executar este código. 1111 00:55:09,240 --> 00:55:12,080 E teña en conta que esta función anónima está tomando nesta variable 1112 00:55:12,080 --> 00:55:16,300 chamada de datos que vai basicamente para ter a mensaxe do usuario. 1113 00:55:16,300 --> 00:55:20,700 >> Tipo Entón, agora imos falar de a matriz conexións. 1114 00:55:20,700 --> 00:55:24,590 Polo tanto, este está deseñado para un cliente de chat onde basicamente todo o mundo é medio en 1115 00:55:24,590 --> 00:55:25,950 mesma sala de chat. 1116 00:55:25,950 --> 00:55:29,640 Entón, basicamente, o que necesitamos para manter en torno a certa matriz que, basicamente, 1117 00:55:29,640 --> 00:55:33,170 representa toda a xente a falar en certo xeito, se iso ten sentido. 1118 00:55:33,170 --> 00:55:33,340 Non? 1119 00:55:33,340 --> 00:55:37,190 Porque necesitamos a saber quen son estes faces son para que poidamos enviar-lles mensaxes 1120 00:55:37,190 --> 00:55:39,140 que outras persoas envían a nós. 1121 00:55:39,140 --> 00:55:44,440 >> Entón, o que este código fai é cando o usuario envía unha mensaxe - que é o tipo de 1122 00:55:44,440 --> 00:55:45,300 o evento - 1123 00:55:45,300 --> 00:55:47,120 imos realizar este código. 1124 00:55:47,120 --> 00:55:51,240 E o que nós facemos é percorrer este matriz que chamamos de conexións. 1125 00:55:51,240 --> 00:55:54,390 E practicamente para cada conexión excepto o que é noso, que é 1126 00:55:54,390 --> 00:55:59,520 o que este código di, nós enviar unha nova mensaxe que adxunto mensaxe 1127 00:55:59,520 --> 00:56:01,210 información. 1128 00:56:01,210 --> 00:56:04,880 >> Entón, se observar aquí, o que eu fixen cando o usuario realmente fai unha nova 1129 00:56:04,880 --> 00:56:08,560 conexión é que eu engade co JavaScript.push método, é dicir 1130 00:56:08,560 --> 00:56:12,100 basicamente, só dicindo como engadir que soquete como un valor en 1131 00:56:12,100 --> 00:56:13,900 nosa disposición conexións. 1132 00:56:13,900 --> 00:56:20,560 Agora, cando este código é executado, el será enviar as cousas a quen especial 1133 00:56:20,560 --> 00:56:22,020 conexións. 1134 00:56:22,020 --> 00:56:26,980 Polo tanto, este pode ser un bo punto de partida para facer un servidor de chat 1135 00:56:26,980 --> 00:56:28,250 ou algo semellante. 1136 00:56:28,250 --> 00:56:33,315 >> E o tipo de cousa legal é que a código que ve aquí para como en e 1137 00:56:33,315 --> 00:56:36,390 emitir e cousas así é o mesmo tipo de código JavaScript que faría 1138 00:56:36,390 --> 00:56:39,260 escribir no navegador para interactuar co servidor. 1139 00:56:39,260 --> 00:56:42,480 Entón é por iso SocketIO é unha especie de puro e útil na medida en que forma. 1140 00:56:42,480 --> 00:56:45,680 1141 00:56:45,680 --> 00:56:49,250 >> Ah, e só unha cousa rapidamente. 1142 00:56:49,250 --> 00:56:55,970 Había un proxecto final CS50 ano pasado que basicamente aplicou un chat 1143 00:56:55,970 --> 00:56:57,840 servidor en Node.js. 1144 00:56:57,840 --> 00:57:01,350 Creo que é Harvardchats.org pero eu non son - 1145 00:57:01,350 --> 00:57:02,940 Aceptar. 1146 00:57:02,940 --> 00:57:06,190 Eu non estou seguro o que o URL é, pero Podo enviar isto despois. 1147 00:57:06,190 --> 00:57:09,260 Pero é legal o que podes facer con Node.js. 1148 00:57:09,260 --> 00:57:14,680 >> Así que espero que, en xeral, vostedes teñen un boa idea do que Node.js é útil 1149 00:57:14,680 --> 00:57:17,870 e como podería talvez aplicar ao seu proxecto final. 1150 00:57:17,870 --> 00:57:21,050 Eu vou estar enviando un pouco máis recursos xunto con este. 1151 00:57:21,050 --> 00:57:23,170 E grazas por teren benvida. 1152 00:57:23,170 --> 00:57:23,610 Grazas. 1153 00:57:23,610 --> 00:57:27,168 >> [Aplausos]