1 00:00:00,000 --> 00:00:08,350 2 00:00:08,350 --> 00:00:09,710 >> KEVIN SCHMID: Hola a tots. 3 00:00:09,710 --> 00:00:12,640 Benvingut al seminari CS50 en Node.js. 4 00:00:12,640 --> 00:00:13,955 El meu nom és Kevin. 5 00:00:13,955 --> 00:00:15,580 Sóc TF CS50. 6 00:00:15,580 --> 00:00:17,650 I jo sóc una espècie de molt emocionat sobre aquest seminari. 7 00:00:17,650 --> 00:00:20,430 Crec Node.js és molt cool. 8 00:00:20,430 --> 00:00:24,200 Espero que aquest seminari es pot utilitzar com un bé, suposo, trampolí per 9 00:00:24,200 --> 00:00:26,380 alguns dels seus projectes de final si vostè està interessat en l'ús de 10 00:00:26,380 --> 00:00:27,630 una mena Node.js. 11 00:00:27,630 --> 00:00:29,770 12 00:00:29,770 --> 00:00:33,320 >> Tindrem sort de començar el seminari fos per parlant només d'una mica de la 13 00:00:33,320 --> 00:00:36,970 tipus de fons escalabilitat perspectives de Node.js, a continuació, 14 00:00:36,970 --> 00:00:39,240 anem a passar a alguns exemples de codi. 15 00:00:39,240 --> 00:00:42,340 I vaig a tenir el codi en un lloc web, i es pot veure en el codi. 16 00:00:42,340 --> 00:00:45,475 I després del seminari, vaig a classe de discurs sobre com es pot configurar Node.js 17 00:00:45,475 --> 00:00:48,220 al seu ordinador. 18 00:00:48,220 --> 00:00:48,710 >> D'acord. 19 00:00:48,710 --> 00:00:49,760 Així que anem a començar. 20 00:00:49,760 --> 00:00:53,700 Així que suposo que només volia parlar de servidors web, de veritat, en primer lloc. 21 00:00:53,700 --> 00:00:59,730 I per començar aquesta discussió, bàsicament, tenen un diagrama que és de 22 00:00:59,730 --> 00:01:04,269 el llibre de text utilitzat per CS61, que bàsicament mostra la interacció 23 00:01:04,269 --> 00:01:08,510 entre un procés de client, igual que la seva web explorador o com el seu client objectiu o 24 00:01:08,510 --> 00:01:11,340 alguna cosa per l'estil, i un servidor web. 25 00:01:11,340 --> 00:01:15,150 Així que aquest tipus d'aparença similar a la imatge que es va veure en conferència sobre 26 00:01:15,150 --> 00:01:19,270 Dimecres on bàsicament tenim una mica de procés del client com Google Chrome. 27 00:01:19,270 --> 00:01:22,980 >> I després, el pas un és el client envia una sol · licitud. 28 00:01:22,980 --> 00:01:27,510 Així que pot ser com a bo anem a visitar, no sé, CS50.net. 29 00:01:27,510 --> 00:01:29,320 Així que emetem aquesta sol · licitud. 30 00:01:29,320 --> 00:01:34,280 I algú recorda el nom de el protocol que especifica com 31 00:01:34,280 --> 00:01:35,610 sol · licitud ha d'estar estructurat? 32 00:01:35,610 --> 00:01:36,382 Sip. 33 00:01:36,382 --> 00:01:37,650 >> AUDIÈNCIA: [inaudible]. 34 00:01:37,650 --> 00:01:38,150 >> KEVIN SCHMID: Exactament. 35 00:01:38,150 --> 00:01:40,100 Així que és com HTTP, oi? 36 00:01:40,100 --> 00:01:44,720 Així que, bàsicament, l'especificació de la forma aquesta sol · licitud en realitat s'han d'establir 37 00:01:44,720 --> 00:01:47,450 cap a fora, perquè al final del dia, la sol · licitud es realment com un 38 00:01:47,450 --> 00:01:50,240 cadena que bàsicament diu que vull això. 39 00:01:50,240 --> 00:01:53,580 I l'especificació perquè és HTTP. 40 00:01:53,580 --> 00:01:55,270 Així que això és com un protocol. 41 00:01:55,270 --> 00:01:57,920 >> Llavors el servidor rep aquesta sol · licitud. 42 00:01:57,920 --> 00:02:01,610 Així que vostès tenen un servidor web instal · lat en l'aparell CS50. 43 00:02:01,610 --> 00:02:02,460 És Apache. 44 00:02:02,460 --> 00:02:06,230 I aquesta setmana, quan es treballa en un problema establir 07:00, en realitat es va a treballar 45 00:02:06,230 --> 00:02:08,160 amb aquest servidor web. 46 00:02:08,160 --> 00:02:12,380 Així que el servidor rep aquesta sol · licitud, i llavors ha de tipus de ratllar la seva 47 00:02:12,380 --> 00:02:15,090 cap i dir, com bé ho Què faig amb això? 48 00:02:15,090 --> 00:02:20,060 >> Així que en base al que decideixi fer, llavors potser hagi de posar-se en contacte amb algun tipus 49 00:02:20,060 --> 00:02:20,730 de recursos. 50 00:02:20,730 --> 00:02:23,700 I aquest recurs podria ser un munt de coses diferents. 51 00:02:23,700 --> 00:02:26,810 D'una banda, podria ser només com un arxiu HTML estàtic. 52 00:02:26,810 --> 00:02:29,820 Així que podria ser simplement com un HTML que és com per 53 00:02:29,820 --> 00:02:31,100 seu lloc web personal. 54 00:02:31,100 --> 00:02:35,360 Podria ser un arxiu estàtic com una imatge o com una pel · lícula que té. 55 00:02:35,360 --> 00:02:37,660 Fins i tot podria haver de parlar a algun tipus de base de dades 56 00:02:37,660 --> 00:02:39,530 com una base de dades MySQL. 57 00:02:39,530 --> 00:02:43,910 Així que no sempre ha de comunicar amb un recurs, però en 58 00:02:43,910 --> 00:02:45,700 alguns casos, és possible. 59 00:02:45,700 --> 00:02:47,800 >> Llavors, què farà després d'això és que va a 60 00:02:47,800 --> 00:02:49,430 tornar la resposta. 61 00:02:49,430 --> 00:02:53,130 I la resposta d'això és També especifica HTTP. 62 00:02:53,130 --> 00:02:54,830 Amb això, el client pot rebre. 63 00:02:54,830 --> 00:02:56,740 Es pot destrossar i processar-la. 64 00:02:56,740 --> 00:03:00,900 I llavors vostè aconsegueix una pàgina web com Google o CS50.net o 65 00:03:00,900 --> 00:03:02,240 el que vas anar a. 66 00:03:02,240 --> 00:03:03,100 ¿D'acord? 67 00:03:03,100 --> 00:03:06,080 >> Per tant aquesta és la interacció bàsica que estarem tractant amb. 68 00:03:06,080 --> 00:03:08,770 I estem més o menys serem centrant-se en aquesta part de la 69 00:03:08,770 --> 00:03:10,640 interacció, el servidor. 70 00:03:10,640 --> 00:03:10,990 D'acord. 71 00:03:10,990 --> 00:03:12,210 Genial. 72 00:03:12,210 --> 00:03:15,500 Algú té alguna pregunta fins ara? 73 00:03:15,500 --> 00:03:17,720 D'acord. 74 00:03:17,720 --> 00:03:22,430 >> Així com hem dit, el lloc web rep aquesta petició HTTP i després emet aquest 75 00:03:22,430 --> 00:03:24,760 Resposta HTTP. 76 00:03:24,760 --> 00:03:29,100 I com parlem abans, la Servidor web aparell CS50 és Apache. 77 00:03:29,100 --> 00:03:32,490 Així que quan vostès treballa a P va fixar 07:00, vostè estarà treballant amb el 78 00:03:32,490 --> 00:03:34,120 Servidor web Apache. 79 00:03:34,120 --> 00:03:37,890 Vostè mai haurà de treballar molt amb Apache directament massa. 80 00:03:37,890 --> 00:03:41,920 Vostè espècie de configurar Apache una mica en especificar els hosts virtuals o 81 00:03:41,920 --> 00:03:44,970 v els amfitrions, i ens posarem en contacte perquè d'aquí a una estona. 82 00:03:44,970 --> 00:03:50,620 >> Però, bàsicament, el servidor web Apache creat per treballar amb PHP tipus 83 00:03:50,620 --> 00:03:51,730 de fora de la caixa. 84 00:03:51,730 --> 00:03:56,170 Així que el que realment passa és quan es va a un dels seus llocs web com, per exemple, 85 00:03:56,170 --> 00:04:00,360 amfitrió index.php barra local o alguna cosa, és el navegador envia aquesta 86 00:04:00,360 --> 00:04:04,330 sol · licitud, i després d'Apache està assegut allà i s'adona que fer amb ell. 87 00:04:04,330 --> 00:04:08,840 I l'acció és executar aquest codi a index.php i 88 00:04:08,840 --> 00:04:11,330 a continuació, l'envia fora de nou. 89 00:04:11,330 --> 00:04:15,640 Així que cal. 90 00:04:15,640 --> 00:04:16,980 Així que tipus de parlat d'això. 91 00:04:16,980 --> 00:04:21,990 Per tant, només podria servir a un arxiu estàtic o executar algun codi PHP i després tema 92 00:04:21,990 --> 00:04:23,510 la resposta. 93 00:04:23,510 --> 00:04:27,670 >> Així que una pregunta comuna que pot venir up és així, com podem realment ocupem 94 00:04:27,670 --> 00:04:31,750 amb tenir múltiples usuaris a la vegada? 95 00:04:31,750 --> 00:04:36,930 Així que imagina't si estigués escrivint una web servidor, si tinguessis un servidor web que 96 00:04:36,930 --> 00:04:39,900 que estava intentant escriure en alguna cosa com C o alguna cosa per l'estil, 97 00:04:39,900 --> 00:04:45,150 bàsicament es pot pensar en com hi ha podria ser algun tipus de codi que 98 00:04:45,150 --> 00:04:49,330 rebria la sol · licitud, però després el que ha de fer tota aquesta feina en ell. 99 00:04:49,330 --> 00:04:53,060 Potser, per exemple, en contacte amb el base de dades o alguna cosa per l'estil. 100 00:04:53,060 --> 00:04:53,300 Cert? 101 00:04:53,300 --> 00:04:56,010 I llavors seria fer aquest tipus de processament i després 102 00:04:56,010 --> 00:04:57,060 enviat de tornada la resposta. 103 00:04:57,060 --> 00:04:58,950 Així que això és com l'alt visió general de nivell. 104 00:04:58,950 --> 00:05:04,210 >> Però no és immediatament obvi com pot fer això perquè dues persones o 105 00:05:04,210 --> 00:05:09,040 fins i tot 1.000 persones podrien treballar amb el seu servidor web al mateix temps. 106 00:05:09,040 --> 00:05:14,880 Així que la solució que utilitza Apache es diu fils o processos. 107 00:05:14,880 --> 00:05:16,770 Així que vostè pot haver sentit parlar de aquests termes abans. 108 00:05:16,770 --> 00:05:22,190 Està bé si vostè no té, però només pensar sobre temes o processos com a mitjans per 109 00:05:22,190 --> 00:05:26,290 un sistema operatiu o un programa d'usuari o una mena o un servidor web 110 00:05:26,290 --> 00:05:28,810 per executar espècie de múltiples coses alhora. 111 00:05:28,810 --> 00:05:31,760 Així que vostè pot haver escoltat el terme com fils d'execució. 112 00:05:31,760 --> 00:05:34,140 Així que és una mica com si estiguessis tipus de multitasca. 113 00:05:34,140 --> 00:05:37,710 >> I si t'he vist a la caixa de la seva portàtil, o alguna cosa així, 114 00:05:37,710 --> 00:05:43,040 multinucli, el que pot fer és que es pot executar dos fils diferents en diferents 115 00:05:43,040 --> 00:05:46,700 parts de la CPU perquè puguin de fet passar a la vegada. 116 00:05:46,700 --> 00:05:48,100 Així que això és realment de gran abast. 117 00:05:48,100 --> 00:05:52,270 I això és una espècie d'Apache de solució a aquest problema. 118 00:05:52,270 --> 00:05:57,900 >> Així que hi ha alguna cosa així com totes les qüestions amb aquest enfocament, encara? 119 00:05:57,900 --> 00:05:59,870 Així que suposo que tipus de les vaig escriure allà. 120 00:05:59,870 --> 00:06:03,440 Però els dos tipus de utilitzar una gran quantitat de memòria. 121 00:06:03,440 --> 00:06:07,490 És molt car per crear un fil o un procés. 122 00:06:07,490 --> 00:06:11,750 >> I part de la raó és que només com quan s'està executant un programa de C 123 00:06:11,750 --> 00:06:15,090 com el seu principal i després que les trucades altra funció, que té 124 00:06:15,090 --> 00:06:16,520 algun tipus de pila. 125 00:06:16,520 --> 00:06:19,910 Així fils també requereixen un completament pila separada que 126 00:06:19,910 --> 00:06:21,220 poden ser bastant grans. 127 00:06:21,220 --> 00:06:25,170 I si vostè pot imaginar tenir tones de els usuaris del seu lloc web, vostè hauria 128 00:06:25,170 --> 00:06:26,280 un munt de diferents temes. 129 00:06:26,280 --> 00:06:28,230 Això és un munt de piles de gestionar i mantenir. 130 00:06:28,230 --> 00:06:31,280 Així que és el consum de memòria de grans dimensions. 131 00:06:31,280 --> 00:06:35,650 >> I després, també, diguem que vostè té només una CPU, o diguem que vostè té 132 00:06:35,650 --> 00:06:38,460 més subprocessos que tingui aquests multicores. 133 00:06:38,460 --> 00:06:38,730 Cert? 134 00:06:38,730 --> 00:06:43,280 Així que anem a dir que tenia 10 temes i que només tenia cinc CPU. 135 00:06:43,280 --> 00:06:46,260 D'alguna manera has de fer aquesta cosa on canviar entre el corrent 136 00:06:46,260 --> 00:06:49,090 un que està en marxa, ja que no es pot executar en els 10 alhora. 137 00:06:49,090 --> 00:06:50,980 I això es diu un canvi de context. 138 00:06:50,980 --> 00:06:54,260 I aquest terme en realitat té un parell de diferents contextos, però anem a 139 00:06:54,260 --> 00:06:56,620 pensar en ell com el canvi entre dos fils. 140 00:06:56,620 --> 00:06:59,730 Això pot ser bastant car, perquè bàsicament el que ha de fer vostè és 141 00:06:59,730 --> 00:07:03,340 ha de deixar de fer el que estàs fent, guardar l' estat d'aquest fil conductor, i 142 00:07:03,340 --> 00:07:05,440 després canviar a un altre lloc. 143 00:07:05,440 --> 00:07:09,420 >> Així que no tothom veu la classe de la motivació de per què les discussions i 144 00:07:09,420 --> 00:07:12,030 processos podrien ser una mica voluminós? 145 00:07:12,030 --> 00:07:13,840 I vostè té una pregunta? 146 00:07:13,840 --> 00:07:14,376 D'acord. 147 00:07:14,376 --> 00:07:15,070 Genial. 148 00:07:15,070 --> 00:07:18,090 Algú té alguna pregunta? 149 00:07:18,090 --> 00:07:19,620 D'acord. 150 00:07:19,620 --> 00:07:26,720 >> Així que si fem un pas enrere per un segon, hi ha com una mena de 151 00:07:26,720 --> 00:07:30,350 observació que podem fer sobre una gran quantitat d'aplicacions web. 152 00:07:30,350 --> 00:07:34,810 I això és realment que molts d'ells en realitat no ho facis molt útil 153 00:07:34,810 --> 00:07:37,140 treballar a l'interior d'un fil. 154 00:07:37,140 --> 00:07:41,170 Així que algú s'ha iniciat a P va fixar set a absolut? 155 00:07:41,170 --> 00:07:45,650 Així que és el que vols per descriure potser algunes de les parts? 156 00:07:45,650 --> 00:07:47,850 Ha treballat en iniciar sessió o alguna cosa per l'estil? 157 00:07:47,850 --> 00:07:49,330 >> AUDIÈNCIA: No 158 00:07:49,330 --> 00:07:49,780 >> KEVIN SCHMID: OK. 159 00:07:49,780 --> 00:07:50,150 No importa. 160 00:07:50,150 --> 00:07:50,900 Ho sento. 161 00:07:50,900 --> 00:07:55,790 Però, bàsicament, en el conjunt P, ets estarà fent un munt de tipus de 162 00:07:55,790 --> 00:07:59,760 consultes a una base de dades per obtenir alguna la informació que la base de dades. 163 00:07:59,760 --> 00:08:03,330 I el que tu codi estarà fent, el que aquest procés Apache o 164 00:08:03,330 --> 00:08:06,030 aquest fil Apache estarà fent mentre que s'ha de posar en contacte amb el 165 00:08:06,030 --> 00:08:08,990 base de dades és que és una cosa així serà assegut allà i que serà 166 00:08:08,990 --> 00:08:12,130 a l'espera de la base de dades per respondre. 167 00:08:12,130 --> 00:08:16,290 >> Ara que pot no semblar tan gran la tractar pel fet que la base de dades està en el seu 168 00:08:16,290 --> 00:08:18,240 Aparell CS50, oi? 169 00:08:18,240 --> 00:08:22,930 Però hi ha una espècie de xarxa latència allà perquè ara la web 170 00:08:22,930 --> 00:08:26,830 servidor ha d'emetre la seva pròpia petició al la base de dades per comunicar-se amb el 171 00:08:26,830 --> 00:08:29,520 base de dades i després aconseguir que la informació de nou. 172 00:08:29,520 --> 00:08:33,190 Així que ara és com bé espérame, jo sóc anirà a buscar alguna cosa de la 173 00:08:33,190 --> 00:08:35,770 base de dades i després hi ha un molta espera passant. 174 00:08:35,770 --> 00:08:36,870 Això té sentit? 175 00:08:36,870 --> 00:08:38,580 >> I per a algunes coses no és tan dolent. 176 00:08:38,580 --> 00:08:41,950 Si només ha de, per exemple, memòria d'accés, que no és com 177 00:08:41,950 --> 00:08:44,100 latència d'E / S horrible. 178 00:08:44,100 --> 00:08:47,110 I quan dic, oh latència / I, ho estic referint és com qualsevol mena de 179 00:08:47,110 --> 00:08:48,290 d'entrada i sortida. 180 00:08:48,290 --> 00:08:52,950 No obstant això, per accedir a un arxiu en el disc, igual que si volia servir l'estàtica HTML 181 00:08:52,950 --> 00:08:57,850 arxiu que estava a la meva pàgina web o cosa així, com que ha de 182 00:08:57,850 --> 00:09:02,310 parar una mica, llegir aquest arxiu a des del disc i, a continuació, en 183 00:09:02,310 --> 00:09:04,400 aquest procés estic esperant. 184 00:09:04,400 --> 00:09:06,700 No estic fent un treball útil. 185 00:09:06,700 --> 00:09:11,270 >> Això no és cert del tot, però és és comú en aplicacions com P setembre 186 00:09:11,270 --> 00:09:13,960 07:01 munt d'aplicacions que no ets 187 00:09:13,960 --> 00:09:15,440 realment fent molt pensament. 188 00:09:15,440 --> 00:09:19,090 I quan dic que el pensament, vull dir com el treball computacional. 189 00:09:19,090 --> 00:09:23,270 Així que el treball computacional podria ser alguna cosa com, per exemple, que volia 190 00:09:23,270 --> 00:09:26,590 escriure un servidor web que només computa l'enèsim nombre de Fibonacci. 191 00:09:26,590 --> 00:09:29,300 Això no sona com un tot servidor web diversió. 192 00:09:29,300 --> 00:09:34,220 Igual que jo no esperaria que el lloc sigui el proper Facebook, però això és una mica de 193 00:09:34,220 --> 00:09:35,610 tipus de treball computacional. 194 00:09:35,610 --> 00:09:39,570 >> I vostè pot imaginar que amb la substitució de algun altre tipus d'interès 195 00:09:39,570 --> 00:09:43,070 treball computacional. 196 00:09:43,070 --> 00:09:46,050 Diguem que estàs escrivint alguna cosa que calculen els graus de 197 00:09:46,050 --> 00:09:49,170 la separació entre dues persones o alguna cosa per l'estil. 198 00:09:49,170 --> 00:09:51,860 Així que sí involucra algun tipus de càlcul, oi? 199 00:09:51,860 --> 00:09:56,630 I tot i així, fer que vostè encara té de fer un munt d'espera per a tal 200 00:09:56,630 --> 00:09:59,550 vostè ha de consultar una base de dades per buscar fins qui és amic de qui o 201 00:09:59,550 --> 00:10:00,600 alguna cosa així. 202 00:10:00,600 --> 00:10:03,510 Així que no és aquest tipus de noció el treball de càlcul. 203 00:10:03,510 --> 00:10:05,260 Això té sentit? 204 00:10:05,260 --> 00:10:08,258 Algú té alguna pregunta? 205 00:10:08,258 --> 00:10:11,960 >> Ah, i suposo que em vaig posar els servidors de xat que hi ha perquè els servidors de xat són una mena de 206 00:10:11,960 --> 00:10:13,240 un altre bon exemple d'això. 207 00:10:13,240 --> 00:10:15,250 Un servidor de xat no té fer molt pensament. 208 00:10:15,250 --> 00:10:18,350 Només ha d'esperar perquè la gent enviar missatges i després quan 209 00:10:18,350 --> 00:10:19,800 ells, els envien. 210 00:10:19,800 --> 00:10:21,050 ¿D'acord? 211 00:10:21,050 --> 00:10:23,410 212 00:10:23,410 --> 00:10:28,180 >> Així que per recapitular de nou, Apache i servidors web similars, com que una forquilla 213 00:10:28,180 --> 00:10:31,470 gran quantitat de temes i processos que pot ser una mica un malbaratament. 214 00:10:31,470 --> 00:10:37,530 Així que suposo que la pregunta que pot venir que és què hem de tenir 215 00:10:37,530 --> 00:10:39,610 diversos subprocessos i processos? 216 00:10:39,610 --> 00:10:41,890 Què passa si només teníem un? 217 00:10:41,890 --> 00:10:45,710 >> Així que anem a classe de pintura una imatge del que això es veuria així. 218 00:10:45,710 --> 00:10:47,810 Així que farem servir només un fil. 219 00:10:47,810 --> 00:10:48,660 ¿D'acord? 220 00:10:48,660 --> 00:10:52,790 Així que imagineu això amb un fil. 221 00:10:52,790 --> 00:10:56,600 >> Suposem que no estàvem fent realment que gran utilitat - i quan dic 222 00:10:56,600 --> 00:10:59,450 útil, em refereixo a la feina computacional - 223 00:10:59,450 --> 00:11:01,130 en aquests múltiples fils abans. 224 00:11:01,130 --> 00:11:04,180 Així que anem a classe de consolidar tot en un sol fil. 225 00:11:04,180 --> 00:11:07,780 I què si teníem un fil aquest tipus de poc va, en el llaç i 226 00:11:07,780 --> 00:11:10,880 constantment xecs van fer alguna cosa nou succeeixi. 227 00:11:10,880 --> 00:11:15,130 Així, per exemple, una cosa nova succeir podria significar que tinc una mica de volta de 228 00:11:15,130 --> 00:11:19,310 la base de dades, o algú enviat a mi una nova petició HTTP. 229 00:11:19,310 --> 00:11:22,290 Així que aquests són tipus d'esdeveniments que això passi, oi? 230 00:11:22,290 --> 00:11:26,130 >> I llavors, què puc fer quan els nous coses succeeixen és en aquest mateix fil 231 00:11:26,130 --> 00:11:30,120 de l'execució, aquest sol fil de execució, puc trucar a un codi que 232 00:11:30,120 --> 00:11:32,410 s'ocuparia d'aquesta cosa en particular. 233 00:11:32,410 --> 00:11:36,640 Així per exemple, si tinc una mica de volta de la base de dades, que podia córrer la meva 234 00:11:36,640 --> 00:11:40,960 petita part de càlcul de la mateixa que en realitat només prepara la cosa per 235 00:11:40,960 --> 00:11:42,620 enviar de tornada a l'usuari. 236 00:11:42,620 --> 00:11:46,710 Així que fa aquest tipus de sentit? 237 00:11:46,710 --> 00:11:49,940 >> Però el que en realitat són la implicacions d'això? 238 00:11:49,940 --> 00:11:50,660 Cert? 239 00:11:50,660 --> 00:11:53,730 Com que hem escrit una gran quantitat de codi que - 240 00:11:53,730 --> 00:11:58,330 i jo només vaig a anar per davant en les diapositives si això està bé. 241 00:11:58,330 --> 00:12:00,930 Així que si no t'importa, estic va a fer un pas enrere. 242 00:12:00,930 --> 00:12:03,410 Així que aquest tipus de coses és anomenat un bucle d'esdeveniments. 243 00:12:03,410 --> 00:12:04,070 ¿D'acord? 244 00:12:04,070 --> 00:12:07,240 I és cosa de la bàsic idea darrere Node.js. 245 00:12:07,240 --> 00:12:11,240 >> Llavors, què està fent realment Node.js com una xarxa servidor és que hi ha un sol fil 246 00:12:11,240 --> 00:12:14,850 és a dir, bàsicament, donar voltes en un bucle com un temps un tipus de baix 247 00:12:14,850 --> 00:12:18,510 el capó d'Node.js que està constantment xecs, rebre coses noves? 248 00:12:18,510 --> 00:12:22,720 I llavors s'executarà manipuladors que ha configurat. 249 00:12:22,720 --> 00:12:26,720 Però una bona pregunta que ens hem de fer és, Com podem fer que això passi 250 00:12:26,720 --> 00:12:28,090 amb les coses existents? 251 00:12:28,090 --> 00:12:32,440 >> Així que vaig posar una línia de codi C que aquí bàsicament sembla que s'està obrint una 252 00:12:32,440 --> 00:12:33,060 presentar, oi? 253 00:12:33,060 --> 00:12:36,090 Ella només em va sortir amb un àlbum. 254 00:12:36,090 --> 00:12:39,600 Així que vaig haver de obrir el seu arxiu nou. 255 00:12:39,600 --> 00:12:43,810 Així que la forma en que el nostre codi C per al funcionament - 256 00:12:43,810 --> 00:12:47,890 i crec que la raó per la qual vaig triar era arxius perquè això és una espècie de l'extensió 257 00:12:47,890 --> 00:12:52,000 del treball d'E / S que hem fet en C a una sensació que no hi ha sortida d'entrada. 258 00:12:52,000 --> 00:12:55,070 Així que cridem a aquest codi que fa f oberta. 259 00:12:55,070 --> 00:12:59,370 I després a la línia següent de la nostra programa, ara podem treballar amb f. 260 00:12:59,370 --> 00:13:02,710 >> Així que aquest seria un exemple d'alguna cosa això és com síncron o 261 00:13:02,710 --> 00:13:06,850 bloqueig perquè en aquesta primera línia no estem a l'espera fins que 262 00:13:06,850 --> 00:13:08,110 descarregar el fitxer obert. 263 00:13:08,110 --> 00:13:12,260 Així que en la segona línia, sabem que pot treballar amb F, però això significa que 264 00:13:12,260 --> 00:13:16,240 aquesta segona línia no pot realment funcionar fins que la primera línia es porta a terme. 265 00:13:16,240 --> 00:13:17,760 Això té sentit? 266 00:13:17,760 --> 00:13:20,890 >> Així que això seria dolent per posar en un controlador d'esdeveniments. 267 00:13:20,890 --> 00:13:23,920 I la raó d'això és que aquest tipus d'espera, no? 268 00:13:23,920 --> 00:13:26,500 Així que això es revertiria de nou amb nosaltres a la mateixa cosa. 269 00:13:26,500 --> 00:13:29,470 I ara no podríem fins i tot tenir l' benefici de múltiples fils o 270 00:13:29,470 --> 00:13:32,390 processos perquè tenim un fil a Node.js. 271 00:13:32,390 --> 00:13:35,496 Això té sentit per a tothom? 272 00:13:35,496 --> 00:13:35,990 >> AUDIÈNCIA: Esperi. 273 00:13:35,990 --> 00:13:36,980 Així que quin és el reemplaçament? 274 00:13:36,980 --> 00:13:37,840 >> KEVIN SCHMID: Oh, així que si. 275 00:13:37,840 --> 00:13:39,560 Així que vaig a arribar a la substitució. 276 00:13:39,560 --> 00:13:40,430 D'acord. 277 00:13:40,430 --> 00:13:42,960 I què si teníem alguna cosa que s'assemblava a això? 278 00:13:42,960 --> 00:13:45,730 I què si ara he editat f obrir una mica? 279 00:13:45,730 --> 00:13:48,370 Així que estic passant en el mateix dos arguments que abans. 280 00:13:48,370 --> 00:13:52,610 Encara m'encanta la nova cançó que ella va sortir amb. 281 00:13:52,610 --> 00:13:57,260 Però jo estic passant una tercera cosa que aquesta variable es denomina codi. 282 00:13:57,260 --> 00:14:02,280 >> Però, què és en realitat codi en aquest context? 283 00:14:02,280 --> 00:14:05,360 És com una variable C regular? 284 00:14:05,360 --> 00:14:06,740 És una funció, no? 285 00:14:06,740 --> 00:14:09,450 I això pot ser una mica estrany perquè En realitat sóc com ara passant un 286 00:14:09,450 --> 00:14:12,320 funcionar en una altra funció. 287 00:14:12,320 --> 00:14:14,400 >> Així que un parell de coses a tenir en compte sobre aquesta. 288 00:14:14,400 --> 00:14:17,145 Un, no estic realment cridar la funció de codi. 289 00:14:17,145 --> 00:14:20,650 Així que vostè no veu el codi amb el parin parin esquerra, dreta. 290 00:14:20,650 --> 00:14:23,010 Estic de pas en codi. 291 00:14:23,010 --> 00:14:26,990 I en C, el que això realment fer m'és donar-li un punter a la real 292 00:14:26,990 --> 00:14:29,740 codi, i llavors això podria executar-lo. 293 00:14:29,740 --> 00:14:33,350 Però només pensar-hi com ets passant el codi que s'executarà quan 294 00:14:33,350 --> 00:14:35,150 s'obre aquest arxiu. 295 00:14:35,150 --> 00:14:41,430 >> Però el que això significa és que ara el resta de la meva programa que podria fer 296 00:14:41,430 --> 00:14:47,050 altres coses, pot continuar fent altres coses mentre que, en realitat no esperem, però 297 00:14:47,050 --> 00:14:50,890 només hi ha a la part posterior del cap que quan està obert, la carrera d'aquest arxiu que 298 00:14:50,890 --> 00:14:52,130 codi a la part superior. 299 00:14:52,130 --> 00:14:53,390 Això té sentit? 300 00:14:53,390 --> 00:14:58,060 >> I ara, la idea darrere de Node.js és que el codi en la matèria acord amb f 301 00:14:58,060 --> 00:15:04,590 part ha de ser bastant curt i simple i directe i no ser realment 302 00:15:04,590 --> 00:15:06,160 molt computacionalment intensives. 303 00:15:06,160 --> 00:15:09,390 És possible que hagi de obrir un altre arxiu, però que també hauria de ser bastant ràpid 304 00:15:09,390 --> 00:15:14,710 perquè simplement ha de dir fer una altra f obrir i després trucar a aquest altre codi. 305 00:15:14,710 --> 00:15:19,100 >> Així que per ser totalment clar, la f obrir que funciona la nova cançó de Katy Perry 306 00:15:19,100 --> 00:15:23,060 done mp3, això va a bastant molt tornar immediatament. 307 00:15:23,060 --> 00:15:27,820 I llavors podem simplement seguir fent altres coses, perquè tot el que ara f 308 00:15:27,820 --> 00:15:33,410 convocatòria oberta no es digui bàsicament el codi obert f subjacent obrir aquest arxiu 309 00:15:33,410 --> 00:15:36,020 i quan hagi acabat d'obrir aquest presentar o quan t'ho retorna, 310 00:15:36,020 --> 00:15:37,480 a continuació, executeu el codi. 311 00:15:37,480 --> 00:15:39,540 Però en realitat no executar aquest codi. 312 00:15:39,540 --> 00:15:41,815 I tenies una pregunta? 313 00:15:41,815 --> 00:15:46,180 >> AUDIÈNCIA: Vostè sembla donar a entendre alguns vegades que l'addició de computacionalment 314 00:15:46,180 --> 00:15:50,545 Codi intensiva espècie de trencar el [Inaudible] sistema impulsat. 315 00:15:50,545 --> 00:15:51,795 [Inaudible]? 316 00:15:51,795 --> 00:15:54,450 317 00:15:54,450 --> 00:15:55,290 >> KEVIN SCHMID: Aquesta és una gran pregunta. 318 00:15:55,290 --> 00:15:59,280 Així que en realitat tenen un exemple de com vostè podria integrar computacionalment 319 00:15:59,280 --> 00:16:01,090 Codi intensiva en una miqueta. 320 00:16:01,090 --> 00:16:03,620 Així que quan arribem als exemples de codi, Vaig a estar segur per tirar aquesta. 321 00:16:03,620 --> 00:16:04,700 Està bé? 322 00:16:04,700 --> 00:16:05,950 Gràcies. 323 00:16:05,950 --> 00:16:07,690 324 00:16:07,690 --> 00:16:08,750 >> Quin era el seu nom? 325 00:16:08,750 --> 00:16:10,620 >> AUDIÈNCIA: Aaron. 326 00:16:10,620 --> 00:16:14,830 >> KEVIN SCHMID: Aaron ens porta a una molt bon punt, que és que si tingués 327 00:16:14,830 --> 00:16:18,560 un codi de còmput intensiu en les coses a veure amb la part f, la resta de 328 00:16:18,560 --> 00:16:22,880 el meu programa no es pot executar i no es pot escoltar per a noves sol · licituds ni res fins que tots 329 00:16:22,880 --> 00:16:24,270 això ha acabat. 330 00:16:24,270 --> 00:16:27,390 Així que si estic escrivint codi de node en general llevat que fem alguna cosa que vaig 331 00:16:27,390 --> 00:16:33,060 suggerir més tard, quan ens fixem en la exemples de codi, he d'estar segur que 332 00:16:33,060 --> 00:16:36,060 el meu codi no ocupa aquest bucle d'esdeveniments. 333 00:16:36,060 --> 00:16:38,120 Això té sentit? 334 00:16:38,120 --> 00:16:38,350 D'acord. 335 00:16:38,350 --> 00:16:40,040 Genial. 336 00:16:40,040 --> 00:16:47,090 >> Així Node.js ofereix aquest marc que també pot crear per esdeveniments 337 00:16:47,090 --> 00:16:48,210 servidors amb. 338 00:16:48,210 --> 00:16:53,460 Pel que té aquest tipus de asíncron sense bloqueig d'E / S biblioteques, mentre que 339 00:16:53,460 --> 00:16:56,800 les biblioteques estàndard de C que hem estat treballant, com si només 340 00:16:56,800 --> 00:16:59,500 utilitzar-los de la mateixa manera que hem estat utilitzant amb F s'obre i 341 00:16:59,500 --> 00:17:03,000 coses, els que estan bloquejant perquè vostè realment ha d'esperar que 342 00:17:03,000 --> 00:17:04,470 aquest arxiu per obrir. 343 00:17:04,470 --> 00:17:09,290 >> Però Node.js et dóna això i bàsicament corbates en V8 de Google 344 00:17:09,290 --> 00:17:14,030 Motor de JavaScript que és la raó que Chrome és tan ràpid en el processament 345 00:17:14,030 --> 00:17:17,040 JavaScript perquè té aquest motor V8. 346 00:17:17,040 --> 00:17:22,460 Així que sé que sona com un d'aquests Conferències de desenvolupadors WWDC cosa 347 00:17:22,460 --> 00:17:25,390 on s'acaba de llançar un grapat de la nombre de carta coses per a processadors 348 00:17:25,390 --> 00:17:26,910 i dir que això és tan genial. 349 00:17:26,910 --> 00:17:34,200 Però és genial que ho van fer això perquè Javascript - 350 00:17:34,200 --> 00:17:37,010 o potser si vostè no està familiaritzat amb JavaScript encara perquè no hem tingut 351 00:17:37,010 --> 00:17:38,180 les conferències sobre el mateix - 352 00:17:38,180 --> 00:17:40,770 però Javascript és una interpretació idioma. 353 00:17:40,770 --> 00:17:41,970 >> I aquest és un punt important també. 354 00:17:41,970 --> 00:17:45,790 Així que és important per a la nostra web servidors per ser ràpid, oi? 355 00:17:45,790 --> 00:17:49,970 I si només estàvem corrent JavaScript codi que es va interpretar amb només 356 00:17:49,970 --> 00:17:52,130 qualsevol edat intèrpret podria ser lent. 357 00:17:52,130 --> 00:17:55,980 Així que els beneficis de tenir aquest node intèrpret V8 súper ràpid. 358 00:17:55,980 --> 00:17:59,580 I jo no sé si ho van nomenar perquè la bufetada V8 al front 359 00:17:59,580 --> 00:18:01,110 cosa, però està bé. 360 00:18:01,110 --> 00:18:07,070 >> Així que m'he preparat alguns exemples en aquesta adreça URL. 361 00:18:07,070 --> 00:18:10,490 Després del seminari, jo sóc una mena d'anar a parlar de com vostè pot aconseguir conjunt de nodes 362 00:18:10,490 --> 00:18:13,570 , Però per ara, només una espècie de desig caminar a través d'alguns exemples de codi. 363 00:18:13,570 --> 00:18:17,250 Així que si vols seguir al llarg de tot el codi font està disponible. 364 00:18:17,250 --> 00:18:18,720 ¿D'acord? 365 00:18:18,720 --> 00:18:22,280 >> Així que vaig a deixar aquesta URL per una mica. 366 00:18:22,280 --> 00:18:24,440 I llavors jo només vaig a canviar en el terminal. 367 00:18:24,440 --> 00:18:29,670 368 00:18:29,670 --> 00:18:34,400 Estan tots bé amb aquesta URL? 369 00:18:34,400 --> 00:18:37,990 Així que vaig a canviar el al meu terminal aquí. 370 00:18:37,990 --> 00:18:42,030 >> Així que aquí està el codi que Que tinc per avui. 371 00:18:42,030 --> 00:18:43,960 Per què no comencem per file simpler.js? 372 00:18:43,960 --> 00:18:49,110 373 00:18:49,110 --> 00:18:52,100 L'altra cosa és que tot això codi serà escrit en 374 00:18:52,100 --> 00:18:56,660 Que JavaScript vostè pot o poden no estar familiaritzats amb. 375 00:18:56,660 --> 00:19:00,170 Suposo que un parell de coses és que molts de codi JavaScript és el tipus de 376 00:19:00,170 --> 00:19:04,000 sintaxi i l'estructura és molt similar a C, perquè puguis tipus de recollir com 377 00:19:04,000 --> 00:19:05,020 que avança. 378 00:19:05,020 --> 00:19:08,750 He tractat d'escriure un munt de la codi de partida per això d'una manera que és 379 00:19:08,750 --> 00:19:11,230 similar a C, de manera que és una mica més llegible. 380 00:19:11,230 --> 00:19:15,980 Però a mesura que avancem, estaré demostrant alguns dels addicionals 381 00:19:15,980 --> 00:19:18,980 característiques de JavaScript que són una mena de fresc. 382 00:19:18,980 --> 00:19:21,510 >> Però donem una ullada a aquest programa d'exemple. 383 00:19:21,510 --> 00:19:24,820 Suposo que tot està tallat allà. 384 00:19:24,820 --> 00:19:28,500 Jo només vaig a arreglar això de veritat ràpida si això està bé o no. 385 00:19:28,500 --> 00:19:31,400 No sé el que això farà. 386 00:19:31,400 --> 00:19:34,660 És això una mica millor? 387 00:19:34,660 --> 00:19:36,510 Pots veure la var i aquestes coses? 388 00:19:36,510 --> 00:19:39,320 D'acord. 389 00:19:39,320 --> 00:19:44,120 >> Així que la primera línia és com el codi JavaScript versió d'una variable 390 00:19:44,120 --> 00:19:44,800 declaració. 391 00:19:44,800 --> 00:19:49,870 Així que per posar de relleu el que això faria sembla en C. Així que això és igual que 392 00:19:49,870 --> 00:19:52,620 índex de mi dient igual a tres o alguna cosa per l'estil. 393 00:19:52,620 --> 00:19:55,740 Així que jo no vaig especificar el tipus. 394 00:19:55,740 --> 00:20:00,780 JavaScript té tipus, però és molt dinàmicament mecanografiat en la naturalesa, de manera que 395 00:20:00,780 --> 00:20:02,580 no va proporcionar cap tipus de tipus sobre el mateix. 396 00:20:02,580 --> 00:20:03,670 Pel que només té var. 397 00:20:03,670 --> 00:20:05,320 Això és com a variable. 398 00:20:05,320 --> 00:20:05,920 ¿D'acord? 399 00:20:05,920 --> 00:20:08,340 >> I estic trucant aquesta HTTP variable. 400 00:20:08,340 --> 00:20:12,480 I a la meva mà dreta, tinc el expressió que vull posar en HTTP. 401 00:20:12,480 --> 00:20:14,960 I això diu requereix HTTP. 402 00:20:14,960 --> 00:20:18,500 Així que això és una mica similar a incloure. 403 00:20:18,500 --> 00:20:22,940 És una mica més com poderós que incloure en el sentit que inclou 404 00:20:22,940 --> 00:20:26,100 seria simplement copiar i enganxar la capçalera presentar per als prototips de funcions o 405 00:20:26,100 --> 00:20:27,930 el que sigui amb les definicions de tipus. 406 00:20:27,930 --> 00:20:30,590 Però requerirà que realment està succeint per treure'ns el codi. 407 00:20:30,590 --> 00:20:33,280 >> Així que vostè pot pensar en ella com importar una mica de codi. 408 00:20:33,280 --> 00:20:37,960 Així en algun lloc en el mòdul de Node.js sistema o el que sigui, tenen tot això 409 00:20:37,960 --> 00:20:40,790 Codi del servidor HTTP així que estic anar a buscar pel meu propi 410 00:20:40,790 --> 00:20:43,130 ús personal en aquest programa. 411 00:20:43,130 --> 00:20:44,260 ¿D'acord? 412 00:20:44,260 --> 00:20:46,930 >> Així que tinc aquesta funció que he escrit. 413 00:20:46,930 --> 00:20:50,330 I noti que no tenia d'especificar el tipus de devolució o el tipus de la 414 00:20:50,330 --> 00:20:51,140 arguments de nou. 415 00:20:51,140 --> 00:20:54,440 Així que tipus de solta escrit en quin tipus de sentit. 416 00:20:54,440 --> 00:20:57,290 Dos arguments que adopti en, la sol · licitud i la resposta. 417 00:20:57,290 --> 00:21:02,080 Així que això és conceptualment una mena familiar de la imatge que teníem 418 00:21:02,080 --> 00:21:05,280 a la pantalla abans perquè obtenim aquesta sol · licitud que 419 00:21:05,280 --> 00:21:06,410 tenir des de l'usuari. 420 00:21:06,410 --> 00:21:09,170 I després tenim una resposta que podem escriure coses que. 421 00:21:09,170 --> 00:21:15,060 >> Així que la primera línia d'aquest fa res.writeHead 200 i després aquest 422 00:21:15,060 --> 00:21:17,070 tipus de contingut de text sense format. 423 00:21:17,070 --> 00:21:19,300 Així que anem a peça Aquest part una mica. 424 00:21:19,300 --> 00:21:22,340 Així que anem a centrar-nos en res.write per una mica. 425 00:21:22,340 --> 00:21:28,420 Així que escriure és, bàsicament, i escriure el cap, són només formes d'escriure una mena de terme 426 00:21:28,420 --> 00:21:29,960 les coses a la resposta. 427 00:21:29,960 --> 00:21:30,770 ¿D'acord? 428 00:21:30,770 --> 00:21:36,230 Així que escriure el cap, si algú se'n recorda de la conferència de HTTP, és que vostès 429 00:21:36,230 --> 00:21:39,940 recordar encapçalats a la part superior de la cosa HTTP? 430 00:21:39,940 --> 00:21:43,580 Per què no puc simplement Demo capçaleres ràpid. 431 00:21:43,580 --> 00:21:44,640 Seria útil? 432 00:21:44,640 --> 00:21:45,500 O hem simplement una mena de - 433 00:21:45,500 --> 00:21:46,070 D'acord. 434 00:21:46,070 --> 00:21:46,740 Clar. 435 00:21:46,740 --> 00:21:52,340 >> Així que quan el navegador va a google.com o alguna cosa per l'estil, 436 00:21:52,340 --> 00:21:54,250 en realitat hi ha una mica més - 437 00:21:54,250 --> 00:21:55,380 això és com un secret - 438 00:21:55,380 --> 00:21:58,340 hi ha com una mica més d'informació que ve a través de la canonada que només 439 00:21:58,340 --> 00:22:00,180 el poc de recerca i tot. 440 00:22:00,180 --> 00:22:03,550 Així que li mostri això, em vaig utilitzar un programa anomenat Curl. 441 00:22:03,550 --> 00:22:04,260 ¿D'acord? 442 00:22:04,260 --> 00:22:08,020 Així que això és una cosa que es pot executar en la línia d'ordres de Mac OSX o al 443 00:22:08,020 --> 00:22:09,830 aparell o el que sigui. 444 00:22:09,830 --> 00:22:17,050 I pel que si em ris HTTP google.com, Vaig a veure el codi HTML. 445 00:22:17,050 --> 00:22:21,230 I això és, per ser justos, només el HTML quin tipus de et diu que 446 00:22:21,230 --> 00:22:24,695 redirigir a www si el teu navegador si no gestionar automàticament el 447 00:22:24,695 --> 00:22:27,110 redirecció. 448 00:22:27,110 --> 00:22:33,390 >> Així que això és només HTML, però vaig afegir a crespar aquest guió puc etiquetar. 449 00:22:33,390 --> 00:22:33,600 ¿D'acord? 450 00:22:33,600 --> 00:22:35,600 I això va a mostrar me les capçaleres. 451 00:22:35,600 --> 00:22:40,640 Així que aquesta és també la informació que ve a través de quan arribi aquesta resposta. 452 00:22:40,640 --> 00:22:41,260 ¿D'acord? 453 00:22:41,260 --> 00:22:45,320 >> Així que a la part superior, apareix aquest HTTP 301 es mouen de manera permanent. 454 00:22:45,320 --> 00:22:49,470 I això és una cosa important perquè això es refereix al codi d'estat. 455 00:22:49,470 --> 00:22:53,750 De manera que el 301 aquí és el codi d'estat, que és bàsicament només un sencer 456 00:22:53,750 --> 00:22:57,750 que li diu al navegador o qui estigui llegint això, si pretens que 457 00:22:57,750 --> 00:23:01,460 vostè és un navegador i que s'està veient això, bàsicament, ara si ens fixem en 458 00:23:01,460 --> 00:23:04,960 això i veus un 301, vostè sap que tinc fer alguna cosa especial amb base a 459 00:23:04,960 --> 00:23:08,810 301, o alguna cosa va succeir especial basat en el 301. 460 00:23:08,810 --> 00:23:12,640 Pel que diu es va traslladar permanentment. 461 00:23:12,640 --> 00:23:17,700 >> I llavors, en el fons, tenim un munt de parells de valors clau. 462 00:23:17,700 --> 00:23:22,100 Així que tenim la ubicació és www.google.com. 463 00:23:22,100 --> 00:23:25,190 I després classe de totes aquestes altres coses, però en el fons, el que la ubicació és 464 00:23:25,190 --> 00:23:29,662 dit és la nova ubicació és a www.google.com. 465 00:23:29,662 --> 00:23:33,800 Així que ara si vas a google.com, se li sort de veure el tipus de navegador parpelleig 466 00:23:33,800 --> 00:23:38,770 per un segon i després se li redirigirà de tornada a www.google.com. 467 00:23:38,770 --> 00:23:41,840 Així les respostes poden contenir aquestes capçaleres. 468 00:23:41,840 --> 00:23:43,330 >> I un parell de coses a destacar. 469 00:23:43,330 --> 00:23:46,890 Així que diguem que en realitat estàvem amb èxit en visitar una pàgina web. 470 00:23:46,890 --> 00:23:49,040 Així que permetin-me anar a - 471 00:23:49,040 --> 00:23:51,080 el que és un bon lloc web? 472 00:23:51,080 --> 00:23:53,285 Sóc dolent en el pensament de bona llocs web a l'acte. 473 00:23:53,285 --> 00:23:53,640 >> AUDIÈNCIA: Wikipedia. 474 00:23:53,640 --> 00:23:54,160 >> KEVIN SCHMID: OK. 475 00:23:54,160 --> 00:23:56,040 Fem Wikipedia. 476 00:23:56,040 --> 00:23:58,680 Així que aquí em va commoure. 477 00:23:58,680 --> 00:23:59,240 Oh, espera. 478 00:23:59,240 --> 00:24:00,160 Era jo? 479 00:24:00,160 --> 00:24:00,890 Sí, ho era. 480 00:24:00,890 --> 00:24:01,100 D'acord. 481 00:24:01,100 --> 00:24:03,005 Així que he de fer www. 482 00:24:03,005 --> 00:24:06,006 Així que em faré www. 483 00:24:06,006 --> 00:24:09,680 I com poden veure, aquí està tot l'HTML que el navegador processaria 484 00:24:09,680 --> 00:24:10,910 per a Wikipedia. 485 00:24:10,910 --> 00:24:14,055 >> Però si em quedo amb el desplaçament cap amunt aquí, el que vaig a veure a la part superior - 486 00:24:14,055 --> 00:24:17,800 wow, hi ha una gran quantitat de HTML en Wikipedia - 487 00:24:17,800 --> 00:24:22,550 però el que puc veure a la part superior aquí és el codi 200 d'estat com oposat a la 488 00:24:22,550 --> 00:24:24,570 301 que vaig veure abans. 489 00:24:24,570 --> 00:24:27,100 I adonar que té un bon Acceptar i al costat d'ella. 490 00:24:27,100 --> 00:24:29,470 Així que això és com el bon codi d'estat. 491 00:24:29,470 --> 00:24:31,160 >> S'assembla familiar aquest nombre 200? 492 00:24:31,160 --> 00:24:34,120 493 00:24:34,120 --> 00:24:39,880 Sí, perquè quan ho vaig fer simpler.js, Vaig escriure un 200 allà. 494 00:24:39,880 --> 00:24:43,290 Així que això és bàsicament dient dir-li al navegador o qui està tractant d'arribar a 495 00:24:43,290 --> 00:24:45,440 això que van tenir èxit. 496 00:24:45,440 --> 00:24:49,040 O que alguna cosa així com que van tenir èxit també. 497 00:24:49,040 --> 00:24:54,320 >> I no hi ha aquest tipus de sintaxi especial en Javascript per declarar una 498 00:24:54,320 --> 00:24:59,870 mapa d'aquestes tecles com a tipus de contingut i aquests valors com a text sense format. 499 00:24:59,870 --> 00:25:03,780 Així que si ens fixem en la resposta que tornar de Wikipedia abans, - 500 00:25:03,780 --> 00:25:06,200 Vaig a tractar de desplaçar una mica més ràpid - 501 00:25:06,200 --> 00:25:09,900 vostè té aquestes tecles com a servidor i aquests valors d'Apache. 502 00:25:09,900 --> 00:25:12,120 Així que tens les claus i valors. 503 00:25:12,120 --> 00:25:15,930 I vostè pot especificar en Node què enviar de tornada. 504 00:25:15,930 --> 00:25:19,380 >> Així que això és en realitat una mena de, d'alguna maneres, i en certa manera no és 505 00:25:19,380 --> 00:25:23,170 realment, però és una mica més baix nivell que el codi PHP que vostè pot ser 506 00:25:23,170 --> 00:25:26,980 escriure per a P va fixar 07:00 perquè PHP i Apache espècie de tenir cura d'alguns 507 00:25:26,980 --> 00:25:28,150 d'aquestes coses per a vostè. 508 00:25:28,150 --> 00:25:32,520 En PHP, pot reemplaçar el valor predeterminat comportament per escriure les seves pròpies capçaleres. 509 00:25:32,520 --> 00:25:35,520 No obstant això, per als fins del present, obtenim per escriure les nostres pròpies capçaleres. 510 00:25:35,520 --> 00:25:38,210 511 00:25:38,210 --> 00:25:41,105 >> Llavors, aquesta línia té sentit tothom, la línia del cap d'escriptura? 512 00:25:41,105 --> 00:25:41,380 D'acord. 513 00:25:41,380 --> 00:25:42,280 Impressionant. 514 00:25:42,280 --> 00:25:45,870 >> Així que el que faig és que acabo la resposta dient hola món. 515 00:25:45,870 --> 00:25:47,040 D'acord. 516 00:25:47,040 --> 00:25:49,920 Però això és només una funció anomenat controlador de sol · licituds. 517 00:25:49,920 --> 00:25:53,510 Així que ara realment he de tipus de fer alguna cosa amb aquesta funció, no? 518 00:25:53,510 --> 00:25:59,170 >> Així que aquí el que faig és no és present línia que fa iguals servidor var 519 00:25:59,170 --> 00:26:03,530 HTTP.create servidor, i després em Va esdevenir al controlador de sol · licituds. 520 00:26:03,530 --> 00:26:06,080 Així que aquest és el tipus de node manera de crear un servidor. 521 00:26:06,080 --> 00:26:08,790 I noto que estic passant al controlador de sol · licituds. 522 00:26:08,790 --> 00:26:12,290 Així que això està dient la createServer funció que vull que em facis una 523 00:26:12,290 --> 00:26:16,270 servidor, i quan el servidor rep una resposta, necessito que truquis a aquesta 524 00:26:16,270 --> 00:26:18,680 sol · licitar funció de controlador. 525 00:26:18,680 --> 00:26:18,990 ¿D'acord? 526 00:26:18,990 --> 00:26:22,290 >> Perquè la línia més o menys acaba immediatament. 527 00:26:22,290 --> 00:26:28,780 De manera que la línia de servidors var es fa bé després de fer això més o menys. 528 00:26:28,780 --> 00:26:31,770 Vull dir, ha d'establir algun intern estat de saber que hauria de 529 00:26:31,770 --> 00:26:35,400 cridar a aquesta funció controlador de sol · licituds, però que no va a seure allà i 530 00:26:35,400 --> 00:26:37,730 per exemple té l'usuari va enviar em una petició encara? 531 00:26:37,730 --> 00:26:39,270 M'ha enviat a l'usuari una petició encara? 532 00:26:39,270 --> 00:26:40,780 Per tant, no es bloqueja. 533 00:26:40,780 --> 00:26:41,650 ¿D'acord? 534 00:26:41,650 --> 00:26:46,120 >> Així que el que això va a fer és que, bàsicament, ara emmagatzema un punter a aquest codi, 535 00:26:46,120 --> 00:26:49,670 aquesta funció controlador de sol · licituds, i després s'executarà aquest codi quan algú 536 00:26:49,670 --> 00:26:52,170 formuli una sol · licitud. 537 00:26:52,170 --> 00:26:54,120 I després fem server.listen. 538 00:26:54,120 --> 00:26:56,950 539 00:26:56,950 --> 00:26:59,960 >> El 1337 no és prou arbitrària. 540 00:26:59,960 --> 00:27:02,285 No tenia cap raó en particular per recollir aquest número. 541 00:27:02,285 --> 00:27:03,860 Va ser totalment a l'atzar. 542 00:27:03,860 --> 00:27:07,010 Però això només especifica el port. 543 00:27:07,010 --> 00:27:10,640 Així que la majoria dels servidors web veuràs que utilitzar el port 80, ja que és una espècie 544 00:27:10,640 --> 00:27:11,810 de com la convenció. 545 00:27:11,810 --> 00:27:16,170 Així que si vaig a una cosa així com: No ho sé, Wikipedia.org, 546 00:27:16,170 --> 00:27:17,700 i vaig posar dos punts 8 - 547 00:27:17,700 --> 00:27:18,610 oh wow, no es pot veure això. 548 00:27:18,610 --> 00:27:19,370 Ho sento. 549 00:27:19,370 --> 00:27:21,820 Però si ho faig Viquipèdia - 550 00:27:21,820 --> 00:27:24,810 Vaig a escriure aquí només perquè està clar que a la cambra. 551 00:27:24,810 --> 00:27:29,150 Però si prenc això en un navegador dos punts 80, que especifica anar a 552 00:27:29,150 --> 00:27:31,430 Wikipedia.org al port 80. 553 00:27:31,430 --> 00:27:36,200 Així que és com la forma en que els Estats Units té múltiples ports com on es pot enviar 554 00:27:36,200 --> 00:27:37,440 coses a classe de. 555 00:27:37,440 --> 00:27:40,730 Així que és com anar a aquest particular, col · locar en aquest servidor. 556 00:27:40,730 --> 00:27:40,990 D'acord. 557 00:27:40,990 --> 00:27:45,730 >> Així que em vaig decidir 1337. 558 00:27:45,730 --> 00:27:47,910 Hi ha tot un seguit de nombres que es pot recollir. 559 00:27:47,910 --> 00:27:50,390 Això no era totalment especial. 560 00:27:50,390 --> 00:27:54,560 >> Però, què faré ara és que vaig a córrer Node. 561 00:27:54,560 --> 00:27:59,730 Déjame entrar realment que una parella línies més avall perquè puguis veure-ho. 562 00:27:59,730 --> 00:28:03,130 Jo faré Node, i estic va a córrer simpler.js. 563 00:28:03,130 --> 00:28:06,880 I parlarem de com arribar Node creat en una mica. 564 00:28:06,880 --> 00:28:09,350 Però ara s'acaba d'executar el servidor. 565 00:28:09,350 --> 00:28:14,360 >> Així que una cosa que podem intentar que no podrà els que ho emocionant és que podem realment 566 00:28:14,360 --> 00:28:16,300 tractar d'accedir-hi en Curl. 567 00:28:16,300 --> 00:28:20,680 Així que jo puc fer Curl, i la meva màquina host local. 568 00:28:20,680 --> 00:28:24,600 També veurà aquest escrit com això de vegades. 569 00:28:24,600 --> 00:28:29,810 Host local i 127.0.0.1 són amables de com l'ordinador de casa. 570 00:28:29,810 --> 00:28:33,180 Així que és com parlar amb seu propi ordinador. 571 00:28:33,180 --> 00:28:33,760 D'acord. 572 00:28:33,760 --> 00:28:36,030 >> I llavors puc dir 1337. 573 00:28:36,030 --> 00:28:39,630 Així que si em quedo aquesta línia de codi, que diu hola món. 574 00:28:39,630 --> 00:28:44,050 I si jo volia veure aquestes coses que tingut de text sense format o tipus de contingut 575 00:28:44,050 --> 00:28:46,560 el que sigui, jo podria fins i tot posar això aquí. 576 00:28:46,560 --> 00:28:48,810 I noti que sí diu a D'acord. 577 00:28:48,810 --> 00:28:50,810 I tinc text sense format. 578 00:28:50,810 --> 00:28:53,140 I després hi ha el tipus de totes aquestes altres coses que node es sumarà en 579 00:28:53,140 --> 00:28:54,440 allà per a mi. 580 00:28:54,440 --> 00:28:55,700 Això no és molt important. 581 00:28:55,700 --> 00:28:58,230 >> Vull dir, hi ha algun tipus de tècnica aspectes de pel que són una espècie 582 00:28:58,230 --> 00:29:02,280 del cool que parlar, però només per mostrar vostè, també té el poder de 583 00:29:02,280 --> 00:29:03,070 canviar aquests en tot. 584 00:29:03,070 --> 00:29:06,280 Així que només puc afegir un munt d'aquest tipus de coses. 585 00:29:06,280 --> 00:29:11,780 I llavors ara, si em veig en el meu de sortida, serà que. 586 00:29:11,780 --> 00:29:19,740 Així doncs, aquestes capçaleres signifiquen certes coses als navegadors i coses per l'estil. 587 00:29:19,740 --> 00:29:23,040 >> I capçaleres, bàsicament, pot dir-li al navegador com respondre a alguna cosa. 588 00:29:23,040 --> 00:29:26,280 Si alguna vegada has sentit parlar de les galetes abans, o si alguna vegada has estat molest 589 00:29:26,280 --> 00:29:29,330 per una pàgina web establint galetes, o es converteix en el bloc de galetes o 590 00:29:29,330 --> 00:29:30,320 alguna cosa així. 591 00:29:30,320 --> 00:29:33,040 En realitat es pot establir galetes en aquests capçaleres. 592 00:29:33,040 --> 00:29:36,990 Així li diuen a un navegador com el comportament en alguns casos. 593 00:29:36,990 --> 00:29:37,750 D'acord. 594 00:29:37,750 --> 00:29:40,310 >> Així que això va ser simpler.js. 595 00:29:40,310 --> 00:29:42,780 Algú té alguna pregunta en aquest arxiu de codi font? 596 00:29:42,780 --> 00:29:45,420 597 00:29:45,420 --> 00:29:45,610 D'acord. 598 00:29:45,610 --> 00:29:46,490 Genial. 599 00:29:46,490 --> 00:29:50,780 >> Així que anem a eliminar l'r aquest i mirar simple.js. 600 00:29:50,780 --> 00:29:53,010 Així que això és més o menys el mateix programa. 601 00:29:53,010 --> 00:29:56,030 Acabo d'escriure una mica diferent perquè volia a una espècie de punt culminant 602 00:29:56,030 --> 00:29:57,850 algunes característiques de JavaScript. 603 00:29:57,850 --> 00:30:03,880 >> Així que adonar-se que el controlador de sol · licituds funció ha desaparegut totalment. 604 00:30:03,880 --> 00:30:05,800 Oh sí, li van fer una pregunta? 605 00:30:05,800 --> 00:30:08,200 >> AUDIÈNCIA: Sí, els arguments que passen a que 606 00:30:08,200 --> 00:30:10,120 funció, què són? 607 00:30:10,120 --> 00:30:12,050 >> KEVIN SCHMID: Així que aquests són JavaScript objectes. 608 00:30:12,050 --> 00:30:15,230 En la documentació de Node.js, es bàsicament diu quins mètodes són 609 00:30:15,230 --> 00:30:15,910 disponible en ells. 610 00:30:15,910 --> 00:30:19,602 Simplement passa que té l'accés a la aquest mètode anomenat capçal d'escriptura i al final 611 00:30:19,602 --> 00:30:20,730 i coses per l'estil. 612 00:30:20,730 --> 00:30:22,590 Però hi ha un munt més mètodes. 613 00:30:22,590 --> 00:30:27,670 >> I per exemple, com un d'ells en particular, sobre rec, pot fer-ho 614 00:30:27,670 --> 00:30:34,540 alguna cosa així com el que es rec.method li dirà si és un get d'HTTP o 615 00:30:34,540 --> 00:30:36,780 Peticions HTTP POST i coses així. 616 00:30:36,780 --> 00:30:39,100 Així que hi ha tot tipus de diferents propietats, però els dos són 617 00:30:39,100 --> 00:30:42,560 JavaScript objectes, i l'únic que tenen existeixen funcions vinculades als que us 618 00:30:42,560 --> 00:30:43,850 pot escriure coses que. 619 00:30:43,850 --> 00:30:45,520 ¿D'acord? 620 00:30:45,520 --> 00:30:49,030 >> Així que adonar-se que controlador de sol · licituds està totalment anat. 621 00:30:49,030 --> 00:30:52,650 Però el codi que tenia a la sol · licitud de gestor segueix aquí. 622 00:30:52,650 --> 00:30:56,520 Encara tinc aquesta res.writeHead i encara tinc aquest res.end. 623 00:30:56,520 --> 00:31:00,270 I el que aquest és un exemple de a Javascript és aquesta idea d'un 624 00:31:00,270 --> 00:31:01,460 funció anònima. 625 00:31:01,460 --> 00:31:04,180 i anònim és com un nom apropiat per això, ja que fa, literalment, no 626 00:31:04,180 --> 00:31:05,180 tenir un nom. 627 00:31:05,180 --> 00:31:07,900 No hi ha sol · licitud funció gestor d'aquí. 628 00:31:07,900 --> 00:31:10,110 >> No té nom, però encara està tenint una discussió. 629 00:31:10,110 --> 00:31:12,250 Així que encara tinc rec i res. 630 00:31:12,250 --> 00:31:16,180 I encara tinc el codi. 631 00:31:16,180 --> 00:31:18,930 Això és perfectament normal El codi JavaScript. 632 00:31:18,930 --> 00:31:22,540 Així que puc declarar una funció sense donar explícitament un nom. 633 00:31:22,540 --> 00:31:24,250 És una mica confús al principi. 634 00:31:24,250 --> 00:31:26,230 Hi ha algunes coses útils, com que vostè pot fer amb 635 00:31:26,230 --> 00:31:28,450 aquestes funcions anònimes. 636 00:31:28,450 --> 00:31:32,100 Algú té alguna pregunta sobre això, o està bé només per, per ara, 637 00:31:32,100 --> 00:31:34,130 espècie de simplement acceptar que va a fer el mateix? 638 00:31:34,130 --> 00:31:36,700 639 00:31:36,700 --> 00:31:37,125 Sip? 640 00:31:37,125 --> 00:31:38,680 >> AUDIÈNCIA: Són funcions de primera classe en JavaScript? 641 00:31:38,680 --> 00:31:41,020 >> KEVIN SCHMID: Ells són els primers classe en JavaScript. 642 00:31:41,020 --> 00:31:45,490 I només sé que aquests conceptes de que passa en una funció anònima com 643 00:31:45,490 --> 00:31:49,600 aplica el JavaScript que pot escriure en el seu projecte final per 644 00:31:49,600 --> 00:31:51,260 el navegador web també. 645 00:31:51,260 --> 00:31:56,700 Així, per exemple, en el codi JavaScript en el seu navegador, també és cert esdeveniment 646 00:31:56,700 --> 00:32:00,680 impulsat en el sentit que el que vas a tenir és quan l'usuari fa clic en aquest 647 00:32:00,680 --> 00:32:02,640 botó, vull que executar aquest codi. 648 00:32:02,640 --> 00:32:07,070 >> Així que és el mateix tipus d'idees de la costat del client quan un clic del ratolí o 649 00:32:07,070 --> 00:32:09,870 ratolí sobre alguna Imatge en màxima pàgina web, executa aquest codi. 650 00:32:09,870 --> 00:32:11,350 Això pot aplicar-se a servidors. 651 00:32:11,350 --> 00:32:16,380 Així que això és una cosa així com l'apassionant raó per la qual Javascript és un molt 652 00:32:16,380 --> 00:32:19,810 persones idònies o alguns pensen que és una llenguatge adequat per a aquest tipus de 653 00:32:19,810 --> 00:32:22,530 servidor de controlador d'esdeveniments perquè té aquestes funcions anònimes. 654 00:32:22,530 --> 00:32:26,150 Vostè té tota la idea d' aquest codi asíncron. 655 00:32:26,150 --> 00:32:27,060 D'acord. 656 00:32:27,060 --> 00:32:30,360 Algú té alguna pregunta? 657 00:32:30,360 --> 00:32:30,470 >> D'acord. 658 00:32:30,470 --> 00:32:33,440 Així que això va ser simple.js. 659 00:32:33,440 --> 00:32:38,070 Així que donem una ullada a una més o un parell més. 660 00:32:38,070 --> 00:32:42,040 Així que això és sleep.js. 661 00:32:42,040 --> 00:32:47,160 Així és que ningú coneix la funció de repòs C? 662 00:32:47,160 --> 00:32:50,936 Des potser una de les conferències anteriors o alguna cosa per l'estil? 663 00:32:50,936 --> 00:32:54,650 >> Així que, bàsicament, es pot passar d'un pinso nombre de segons, o utilitzant U 664 00:32:54,650 --> 00:32:57,080 dormir un nombre de milisegons o nanosegons. 665 00:32:57,080 --> 00:33:00,450 I, bàsicament, el programa només deixarà de corrent per aquesta quantitat de temps. 666 00:33:00,450 --> 00:33:01,280 Cert? 667 00:33:01,280 --> 00:33:06,970 I llavors es despertarà amb el temps i llavors només seguirà funcionant 668 00:33:06,970 --> 00:33:08,340 el programa. 669 00:33:08,340 --> 00:33:12,740 >> Així que aquest tipus de servidor dóna la impressió de dormir. 670 00:33:12,740 --> 00:33:17,580 Així que adonar-se que tenim la mateixa res.writeHead 200 amb la capçalera com 671 00:33:17,580 --> 00:33:22,130 abans, però llavors estem trucant a aquest funció crida conjunt de temps d'espera. 672 00:33:22,130 --> 00:33:26,170 Establir temps d'espera també està disponible en el navegador web Google Chrome 673 00:33:26,170 --> 00:33:28,000 o Safari o el que sigui. 674 00:33:28,000 --> 00:33:31,720 I bàsicament el que està fent aquí Es tracta de prendre en una funció. 675 00:33:31,720 --> 00:33:33,360 Cal notar, de nou, és un funció anònima. 676 00:33:33,360 --> 00:33:36,310 Així que és una mena de fresc perquè som utilitzant una funció anònima dins d'un 677 00:33:36,310 --> 00:33:38,950 funció anònima que pot ser una mica estrany. 678 00:33:38,950 --> 00:33:42,270 >> Però està prenent aquesta funció, que és bàsicament dient - i la forma en què aquest 679 00:33:42,270 --> 00:33:47,430 obres és de 5000 mil · lisegons, vull vostè executi aquesta funció que 680 00:33:47,430 --> 00:33:50,830 només acaba la resposta i escriu sent. 681 00:33:50,830 --> 00:33:56,730 Així que això fa l'efecte com dormir, però la forma en que aquesta realitat 682 00:33:56,730 --> 00:33:59,780 Works és anem a córrer a través d' aquesta línia molt ràpidament. 683 00:33:59,780 --> 00:34:01,190 Només estem escrivint alguna cosa. 684 00:34:01,190 --> 00:34:03,780 I després també a córrer a través d' aquesta línia molt ràpidament. 685 00:34:03,780 --> 00:34:08,620 Així que no estem realment va esperar cinc segons. 686 00:34:08,620 --> 00:34:11,370 Només anem a córrer aquest codi a l'instant. 687 00:34:11,370 --> 00:34:14,219 >> I després hi ha, de nou, aquest petit cicle d'esdeveniments que té ara aquesta cosa 688 00:34:14,219 --> 00:34:17,570 registres que, bàsicament, és només constantment donant voltes en un cercle 689 00:34:17,570 --> 00:34:21,620 i mirant el rellotge en una sola fil i refrany, té cinc segons 690 00:34:21,620 --> 00:34:22,360 però va passar? 691 00:34:22,360 --> 00:34:26,409 I després, quan es veu que el segon la mà s'ha mogut com cinc segons, o 692 00:34:26,409 --> 00:34:29,190 el que sigui, llavors es desperta i diu: oh, què he de fer? 693 00:34:29,190 --> 00:34:30,350 Oh he de executar aquest codi. 694 00:34:30,350 --> 00:34:33,110 I després es va a executar res.end bo. 695 00:34:33,110 --> 00:34:35,360 >> Així que de nou, mai estem esperant aquí. 696 00:34:35,360 --> 00:34:38,590 Així que no és que aquest codi dins de aquesta funció es prendrà 05:00 697 00:34:38,590 --> 00:34:39,900 segons per córrer. 698 00:34:39,900 --> 00:34:43,090 Aquest codi s'executarà més o menys instantàniament, almenys en relació a 699 00:34:43,090 --> 00:34:46,139 els cinc segons que estàvem parlant sobre anterior abans. 700 00:34:46,139 --> 00:34:52,100 >> Així que per mostrar això en acció, Jo puc fer Node.sleep.js. 701 00:34:52,100 --> 00:34:55,159 I ho va fer m'equivoco alguna cosa? 702 00:34:55,159 --> 00:34:56,310 És possible. 703 00:34:56,310 --> 00:34:57,410 Ho sento. 704 00:34:57,410 --> 00:34:59,530 Anem a veure el que podem fer per arreglar això. 705 00:34:59,530 --> 00:35:10,830 706 00:35:10,830 --> 00:35:12,080 D'acord. 707 00:35:12,080 --> 00:35:15,460 708 00:35:15,460 --> 00:35:17,464 Així que sens dubte utilitzar Node.js. 709 00:35:17,464 --> 00:35:19,440 Només estic fent broma. 710 00:35:19,440 --> 00:35:19,570 D'acord. 711 00:35:19,570 --> 00:35:20,820 Només un segon. 712 00:35:20,820 --> 00:35:27,380 713 00:35:27,380 --> 00:35:27,900 D'acord. 714 00:35:27,900 --> 00:35:29,130 Jo sé el que és. 715 00:35:29,130 --> 00:35:34,440 >> Així que la qüestió és que a la meva altra pestanya aquí, jo estava corrent node que ja estan en 716 00:35:34,440 --> 00:35:36,590 aquesta mateixa direcció, 1337. 717 00:35:36,590 --> 00:35:43,370 Així que l'error que aquest va llançar, si mirem en real de prop, és la direcció en 718 00:35:43,370 --> 00:35:45,180 utilitzar, EADDRINUSE. 719 00:35:45,180 --> 00:35:47,970 Així que ja estava utilitzant 1337 aquí. 720 00:35:47,970 --> 00:35:52,210 Així que si tanco això endavant, i llavors ara tractar d'executar aquest, és d'esperar, tot 721 00:35:52,210 --> 00:35:53,210 estarà bé. 722 00:35:53,210 --> 00:35:53,440 D'acord. 723 00:35:53,440 --> 00:35:57,020 Pel que només es pot tenir una cosa tipus d'escoltar en un port alhora. 724 00:35:57,020 --> 00:35:59,660 Una altra solució hauria estat per a mi simplement editar aquest programa i fer 725 00:35:59,660 --> 00:36:02,370 que sigui com 1338 o alguna cosa així així. 726 00:36:02,370 --> 00:36:04,100 >> Però ara el somni s'està executant. 727 00:36:04,100 --> 00:36:06,400 Així que anem a intentar-ho en realitat en el navegador aquesta vegada perquè és un 728 00:36:06,400 --> 00:36:09,080 mica avorrit per veure en un terminal. 729 00:36:09,080 --> 00:36:13,560 Així que només vaig a anar a aquest 127 direcció una altra vegada en 1337. 730 00:36:13,560 --> 00:36:14,850 I si vostè pot veure - 731 00:36:14,850 --> 00:36:18,050 No sé si és possible - però el meu el navegador de prendre un temps molt, molt llarg 732 00:36:18,050 --> 00:36:20,600 temps per carregar o com cinc segons. 733 00:36:20,600 --> 00:36:23,460 >> I a continuació, després que, finalment va posar fi a la resposta. 734 00:36:23,460 --> 00:36:29,070 I no es pot veure perquè la cosa es mou sobre una mica, però si faig 735 00:36:29,070 --> 00:36:32,500 això una mica més petit, pot veure que diu hola. 736 00:36:32,500 --> 00:36:35,130 Així que em va donar la sent, però després de cinc segons. 737 00:36:35,130 --> 00:36:38,510 I pot ser que sigui una mica més net per veure aquí a la terminal, de manera que estic 738 00:36:38,510 --> 00:36:40,980 anem a fer una - 739 00:36:40,980 --> 00:36:43,540 farem aquí - 740 00:36:43,540 --> 00:36:48,370 fem-ho Curl aquesta direcció de nou amb el 1337. 741 00:36:48,370 --> 00:36:50,820 I acabo de classe que seure aquí durant cinc segons. 742 00:36:50,820 --> 00:36:53,760 Però cal notar que el servidor pot acceptar noves respostes. 743 00:36:53,760 --> 00:36:54,940 Així que imprimeix bo. 744 00:36:54,940 --> 00:36:58,720 >> I per a una demostració d'això, bàsicament, el que Que puc fer en aquest altre tab - 745 00:36:58,720 --> 00:37:02,640 així que diguem que faig això en una altra pestanya, Jo faré Curl i el mateix 746 00:37:02,640 --> 00:37:03,780 alguna cosa nova. 747 00:37:03,780 --> 00:37:06,600 I jo vaig a intentar expulsar aquests nois fora al mateix temps. 748 00:37:06,600 --> 00:37:08,260 Així que vaig a fer això, i estic anar a córrer per aquí i estic 749 00:37:08,260 --> 00:37:09,650 va a fer-ho de nou. 750 00:37:09,650 --> 00:37:14,030 >> I ho farem de manera que pot veure els dos. 751 00:37:14,030 --> 00:37:20,250 Aquest imprès sent i que un impresa sent tot el camí a - 752 00:37:20,250 --> 00:37:22,550 farem aquest experiment nou. 753 00:37:22,550 --> 00:37:25,100 En realitat, farem servir aquest enganyar, si això està bé. 754 00:37:25,100 --> 00:37:30,520 >> Així que vaig a utilitzar una mica de shell que em permet córrer bàsicament dues còpies 755 00:37:30,520 --> 00:37:32,630 d'aquest programa en paral · lel. 756 00:37:32,630 --> 00:37:36,070 Així que va a executar el primer programa i el segon programa en paral · lel. 757 00:37:36,070 --> 00:37:39,060 Així que ara si pressiono Enter, es va per fer aquesta petició més o menys 758 00:37:39,060 --> 00:37:40,570 instantàniament al mateix temps. 759 00:37:40,570 --> 00:37:42,620 Així que anem a donar-li una oportunitat a això. 760 00:37:42,620 --> 00:37:44,950 >> Així que ara ho nota diu dos processos. 761 00:37:44,950 --> 00:37:50,630 I si vostè és curiós, que 27.000 nombre és, bàsicament, l'ID del procés. 762 00:37:50,630 --> 00:37:52,940 I després avís, van imprimir Ei, a la vegada. 763 00:37:52,940 --> 00:37:56,820 No era com que havíem d'esperar cinc segons per un i després d'això, 764 00:37:56,820 --> 00:37:59,640 Cinc segons després aconseguir el segon. 765 00:37:59,640 --> 00:38:03,300 Així que això és una cosa, d'alguna manera, és en realitat no prova, però és 766 00:38:03,300 --> 00:38:07,390 evidència intuïtiva que no es tracta només com esperar cinc segons i el bloqueig 767 00:38:07,390 --> 00:38:08,960 tot el fil. 768 00:38:08,960 --> 00:38:10,720 Acceptar cool. 769 00:38:10,720 --> 00:38:17,850 >> I Aaron va fer una pregunta anterior que era, bé, i si nosaltres fem alguna cosa - 770 00:38:17,850 --> 00:38:18,735 Sip? 771 00:38:18,735 --> 00:38:19,051 >> AUDIÈNCIA: Esperi. 772 00:38:19,051 --> 00:38:21,585 Com és diferent de memòria intermèdia printf, però? 773 00:38:21,585 --> 00:38:23,010 No és el que fa automàticament que? 774 00:38:23,010 --> 00:38:25,390 Per què hem de preocupar per això? 775 00:38:25,390 --> 00:38:26,555 >> KEVIN SCHMID: Oh, podries dir que una vegada més? 776 00:38:26,555 --> 00:38:29,510 >> AUDIÈNCIA: No li agrada memòria intermèdia printf fer exactament el mateix? 777 00:38:29,510 --> 00:38:31,280 >> KEVIN SCHMID: El buffer printf? 778 00:38:31,280 --> 00:38:32,753 >> AUDIÈNCIA: Si. 779 00:38:32,753 --> 00:38:33,244 D'acord. 780 00:38:33,244 --> 00:38:40,609 No va ser en una de les proves que eren parlant de com si fa printf 781 00:38:40,609 --> 00:38:42,899 alguna cosa i després l'han pausar 1 segons, i després ho tens bucle de deu 782 00:38:42,899 --> 00:38:46,530 temps, que va a esperar deu segons i llavors printf tot junt? 783 00:38:46,530 --> 00:38:47,460 >> KEVIN SCHMID: Oh, està bé. 784 00:38:47,460 --> 00:38:49,170 >> AUDIÈNCIA: Està fent el mateix cosa, llavors en aquest cas? 785 00:38:49,170 --> 00:38:52,630 >> KEVIN SCHMID: tant el dubte era bàsicament, en una de les antigues proves 786 00:38:52,630 --> 00:38:57,200 o alguna cosa així, hi havia una pregunta que bàsicament, si vostè diu print f 10 787 00:38:57,200 --> 00:39:01,490 coses alhora i després vaig dormir com a el procés d'impressió dels terme, 788 00:39:01,490 --> 00:39:04,850 al final, per alguna raó, ho faria simplement bolcar els tots fora de la pantalla. 789 00:39:04,850 --> 00:39:06,740 Així que hi ha una espècie de dos diferents conceptes aquí. 790 00:39:06,740 --> 00:39:10,400 >> Així que suposo que una cosa és que, en aquest cas, estem tractant amb dos diferents 791 00:39:10,400 --> 00:39:13,510 classe de gent que demana el servidor coses a la vegada. 792 00:39:13,510 --> 00:39:17,455 I la raó que el tipus de printf espera d'aquesta manera i ho bolca amb magnificència 793 00:39:17,455 --> 00:39:21,760 alhora es relaciona més amb com tipus de printf - 794 00:39:21,760 --> 00:39:25,100 Així que la forma printf és en realitat implementat és que, bàsicament, ha de 795 00:39:25,100 --> 00:39:28,850 parlar amb el sistema operatiu per escriure aquestes coses a la consola. 796 00:39:28,850 --> 00:39:33,460 Pel que no vol fer tot això coses immediatament quan dius printf 797 00:39:33,460 --> 00:39:36,260 alguna cadena ja que podrien ser car si ha de 798 00:39:36,260 --> 00:39:37,340 fer això tot el temps. 799 00:39:37,340 --> 00:39:41,530 >> Així que si vostè fa printf sent, el seu programa podria no imprimir realitat que 800 00:39:41,530 --> 00:39:43,040 immediatament a la consola. 801 00:39:43,040 --> 00:39:46,080 Es podria dir, OK, el vaig escriure. 802 00:39:46,080 --> 00:39:49,570 I llavors espècie d'esperar que li donis una mica més abans que realment 803 00:39:49,570 --> 00:39:51,380 s'escriuen a la consola. 804 00:39:51,380 --> 00:39:54,040 >> Així que la raó que aquest era el cas - 805 00:39:54,040 --> 00:39:56,450 i és una espècie de relació el somni - 806 00:39:56,450 --> 00:40:00,060 és que el somni era una espècie de just injectat allà per demostrar l' 807 00:40:00,060 --> 00:40:02,480 fet que no escriu sincrònicament. 808 00:40:02,480 --> 00:40:06,210 Però la raó que és només rendiment de manera que vostè no ha de 809 00:40:06,210 --> 00:40:08,920 fer que molts contactes a el sistema operatiu. 810 00:40:08,920 --> 00:40:12,300 >> Però aquí, el que realment estem tractant de fer amb aquesta cosa de son és només espectacle 811 00:40:12,300 --> 00:40:17,730 que quan tenim dues persones que visiten Aquest lloc web, que no posarà 812 00:40:17,730 --> 00:40:22,310 en una línia en la qual es dirà He d'ajudar a vostè i, a continuació, quan estic 813 00:40:22,310 --> 00:40:25,350 totalment acabat ajudar-després que aquests cinc segons i després em vaig a 814 00:40:25,350 --> 00:40:26,750 passar a la següent persona. 815 00:40:26,750 --> 00:40:29,515 Així que la petició de la primera persona no lligar aquest bucle d'esdeveniments 816 00:40:29,515 --> 00:40:31,610 si això té sentit. 817 00:40:31,610 --> 00:40:34,980 >> Però aquí és en realitat un exemple d'alguna cosa que va a lligar 818 00:40:34,980 --> 00:40:36,090 el bucle d'esdeveniments. 819 00:40:36,090 --> 00:40:39,130 Així que aquí està una funció horrible calcular el n-èsim de Fibonacci. 820 00:40:39,130 --> 00:40:43,510 És, literalment, la pitjor manera que pugui calcular l'enèsim nombre de Fibonacci. 821 00:40:43,510 --> 00:40:48,480 I això és realment només per reconèixer d'on va sortir, 822 00:40:48,480 --> 00:40:49,330 hi ha realment - 823 00:40:49,330 --> 00:40:53,230 Vull dir, vostè pot tractar d'anar a buscar-hi - però hi ha com un molt llarg el blog 824 00:40:53,230 --> 00:40:54,130 Post que algú va escriure. 825 00:40:54,130 --> 00:40:55,660 És com una d'aquelles coses de Reddit. 826 00:40:55,660 --> 00:40:59,650 Però algú va criticar Node.js i van usar això com un exemple. 827 00:40:59,650 --> 00:41:03,700 Així que com que volia que vostè acaba de mostrar dues diferents perspectives, per simplement 828 00:41:03,700 --> 00:41:07,320 un coneixement general dels conceptes darrere d'aquestes dues coses. 829 00:41:07,320 --> 00:41:13,050 >> Però aquesta és triat com només un horrible, computacionalment horriblement ineficient 830 00:41:13,050 --> 00:41:15,940 de forma intensiva per a calcular la enèsim nombre de Fibonacci. 831 00:41:15,940 --> 00:41:21,180 Així com una nota al marge, per què és és horrible com d'una manera? 832 00:41:21,180 --> 00:41:23,210 Sip? 833 00:41:23,210 --> 00:41:25,130 >> AUDIÈNCIA: Diguem que vostè comença amb 1000. 834 00:41:25,130 --> 00:41:27,050 1000 es divideix en 999 i 998. 835 00:41:27,050 --> 00:41:28,970 Cadascuna d'aquesta es divideix en dues coses. 836 00:41:28,970 --> 00:41:30,890 Cadascuna d'aquesta es divideix en dues coses. 837 00:41:30,890 --> 00:41:31,355 >> KEVIN SCHMID: així. 838 00:41:31,355 --> 00:41:32,400 >> AUDIÈNCIA: Durant tot el camí cap avall. 839 00:41:32,400 --> 00:41:32,840 >> KEVIN SCHMID: Exactament. 840 00:41:32,840 --> 00:41:37,330 Així que per repetir per la càmera, si trucar a fib sobre com 1000 o alguna cosa així 841 00:41:37,330 --> 00:41:41,810 així, no és, òbviament, menys de o igual a un, així que vaig a 842 00:41:41,810 --> 00:41:46,040 vaig a aquest cas més, i després em vaig trucar a fib 999 més fib 998. 843 00:41:46,040 --> 00:41:50,290 I després, més o menys tot això treball que FIB 999 fa és 844 00:41:50,290 --> 00:41:52,950 tipus d'a aquest nivell. 845 00:41:52,950 --> 00:41:55,620 Si vostè va avall, és encara més redundant que això, però si només 846 00:41:55,620 --> 00:42:01,390 crec fib computar 998 aconsegueix nosaltres molt a prop de la FIB 999. 847 00:42:01,390 --> 00:42:05,860 Així que realment hauríem de ser una mica més intel · ligent sobre la forma en què tipus de reutilitzem 848 00:42:05,860 --> 00:42:07,580 aquests, però no estem reutilitzant aquestes coses en absolut. 849 00:42:07,580 --> 00:42:11,860 Així que vostè pot imaginar aquesta gegantina, arbre gegantí que és simplement horrible. 850 00:42:11,860 --> 00:42:12,940 >> Però de totes maneres, està bé. 851 00:42:12,940 --> 00:42:14,040 Així que això era mentida. 852 00:42:14,040 --> 00:42:15,530 Només es necessita un temps per funcionar. 853 00:42:15,530 --> 00:42:16,510 Sip? 854 00:42:16,510 --> 00:42:17,760 >> AUDIÈNCIA: [inaudible]. 855 00:42:17,760 --> 00:42:20,430 856 00:42:20,430 --> 00:42:22,481 >> KEVIN SCHMID: Oh, podries repetir la pregunta? 857 00:42:22,481 --> 00:42:23,731 >> AUDIÈNCIA: [inaudible]. 858 00:42:23,731 --> 00:42:30,840 859 00:42:30,840 --> 00:42:33,990 >> KEVIN SCHMID: Oh així que això és només el codi això serà una espècie de sobre la 860 00:42:33,990 --> 00:42:34,850 costat del servidor. 861 00:42:34,850 --> 00:42:38,100 Així que això no serà trobat al navegador o qualsevol cosa. 862 00:42:38,100 --> 00:42:42,160 És bàsicament el que tenim és que quan l'usuari aquí més o menys marques 863 00:42:42,160 --> 00:42:45,300 seva petició de nou, quan una mena de fer una sol · licitud, anem a trucar a 864 00:42:45,300 --> 00:42:47,040 aquesta funció en el costat del servidor. 865 00:42:47,040 --> 00:42:50,480 I després anem a arribar el resultat de nou de cridar a aquesta funció. 866 00:42:50,480 --> 00:42:52,460 I llavors només haurem d'imprimir l'usuari. 867 00:42:52,460 --> 00:42:54,580 De manera que l'usuari no té realment tractar amb aquesta funció massa. 868 00:42:54,580 --> 00:42:57,270 >> No va ser aquesta la pregunta? 869 00:42:57,270 --> 00:42:58,470 Això té sentit? 870 00:42:58,470 --> 00:42:58,810 D'acord. 871 00:42:58,810 --> 00:43:00,930 Genial. 872 00:43:00,930 --> 00:43:04,240 >> Així que de nou, ho fem tot aquest res.writeHead cosa on imprimim 873 00:43:04,240 --> 00:43:05,150 la capçalera. 874 00:43:05,150 --> 00:43:09,730 I llavors va acabar la resposta en fer el nombre màgic és fib 45. 875 00:43:09,730 --> 00:43:12,100 Així que anem a executar aquest servidor. 876 00:43:12,100 --> 00:43:15,190 Així que em vaig a fer un fib.js. Node 877 00:43:15,190 --> 00:43:17,340 Així que ara el meu servidor fib s'està executant. 878 00:43:17,340 --> 00:43:21,790 >> I llavors aquí vaig fer una d'aquestes. 879 00:43:21,790 --> 00:43:22,200 ¿D'acord? 880 00:43:22,200 --> 00:43:24,960 Així que només vaig a dir, Curl. 881 00:43:24,960 --> 00:43:32,226 Així que prendrà una mica de temps, però espero que aviat va a acabar i 882 00:43:32,226 --> 00:43:35,660 s'imprimirà que 45a Fibonacci nombre. 883 00:43:35,660 --> 00:43:36,910 >> AUDIÈNCIA: [inaudible]. 884 00:43:36,910 --> 00:43:40,720 885 00:43:40,720 --> 00:43:42,050 >> KEVIN SCHMID: ha aconseguir fer molt aviat. 886 00:43:42,050 --> 00:43:43,780 Per tant, ha de prendre de cinc a sis segons. 887 00:43:43,780 --> 00:43:48,570 No sé que és només V8 ser super ràpid, però en qualsevol cas, es tracta d'un 888 00:43:48,570 --> 00:43:52,700 exemple molt curt i propòsit poc elegant d'un no-trivial 889 00:43:52,700 --> 00:43:54,200 càlcul. 890 00:43:54,200 --> 00:43:56,700 Així que després d'un temps, es posa això. 891 00:43:56,700 --> 00:44:02,130 >> Però ara, què passa si faig el mateix tipus de experiment com abans on faig 892 00:44:02,130 --> 00:44:04,010 dues sol · licituds a la vegada? 893 00:44:04,010 --> 00:44:06,990 Així que aquí vaig a un Curl en aquesta direcció, i vaig 894 00:44:06,990 --> 00:44:08,260 fer una altra Curl. 895 00:44:08,260 --> 00:44:12,070 I recordi, quan vam fer això per a la dormir servidor, al qual bàsicament havíem de 896 00:44:12,070 --> 00:44:15,320 després de cinc segons, que pràcticament tant tots dos van tornar a la dreta 897 00:44:15,320 --> 00:44:16,380 gairebé al mateix temps. 898 00:44:16,380 --> 00:44:18,650 Així que no va ser particularment lligat. 899 00:44:18,650 --> 00:44:20,290 >> Però ho intentarem ara. 900 00:44:20,290 --> 00:44:22,370 OK, així que ens van donar els nostres dos processos. 901 00:44:22,370 --> 00:44:24,210 Recorda aquests són els identificadors de procés. 902 00:44:24,210 --> 00:44:25,900 Això serà una mica maldestre, mentre que la parada. 903 00:44:25,900 --> 00:44:31,340 904 00:44:31,340 --> 00:44:35,360 Així que anem a quedar-nos aquí i esperar. 905 00:44:35,360 --> 00:44:37,090 >> Així que un d'ells ha de venir tornar després de com - 906 00:44:37,090 --> 00:44:39,190 OK, així que un va tornar. 907 00:44:39,190 --> 00:44:43,570 Però llavors per què no ho va fer el segon un ve de tornada encara? 908 00:44:43,570 --> 00:44:44,389 Sip? 909 00:44:44,389 --> 00:44:49,280 >> AUDIÈNCIA: El servidor no pot fer res mentre s'està calculant que gran nombre. 910 00:44:49,280 --> 00:44:51,620 >> KEVIN SCHMID: així. 911 00:44:51,620 --> 00:44:55,395 Així que la resposta va ser simplement que el servidor Realment no es pot fer res mentre 912 00:44:55,395 --> 00:44:57,460 està calculant que el nombre de Fibonacci. 913 00:44:57,460 --> 00:44:59,360 Així que ara acabo de rebre els meus dos coses de nou. 914 00:44:59,360 --> 00:45:03,210 Però crec que només de pensar en el codi una mica més, la manera com està funcionant 915 00:45:03,210 --> 00:45:05,030 i tot. 916 00:45:05,030 --> 00:45:11,750 >> Així que aquesta funció aquí és el codi que Li he dit a aquest servidor per executar quan es 917 00:45:11,750 --> 00:45:14,100 rep una nova petició entrant. 918 00:45:14,100 --> 00:45:17,940 Així que només va a córrer a través d'aquest Codi de tot, i després es va a anar 919 00:45:17,940 --> 00:45:21,120 enrere per al bucle d'esdeveniments i després continuar la comprovació de nous esdeveniments. 920 00:45:21,120 --> 00:45:23,670 Així que bàsicament el que hem succeint és el servidor és 921 00:45:23,670 --> 00:45:25,080 escoltar coses noves. 922 00:45:25,080 --> 00:45:28,070 La primera persona que demana el 45 és. 923 00:45:28,070 --> 00:45:30,490 Correm aquest codi per computar. 924 00:45:30,490 --> 00:45:33,420 Aquest codi pren al voltant de cinc sis segons per córrer. 925 00:45:33,420 --> 00:45:36,990 Llavors tornem al bucle d'esdeveniments i comprovar si hi ha noves sol · licituds. 926 00:45:36,990 --> 00:45:42,700 >> Així que aquest és un exemple de com, si tenen coses que són cridats computi 927 00:45:42,700 --> 00:45:48,140 obligat, o utilitzar una gran quantitat de còmput, no el poder, però com són 928 00:45:48,140 --> 00:45:50,260 computacionalment intensives - 929 00:45:50,260 --> 00:45:54,080 Crec que una cosa a dir sobre això és que aquesta funció està fent totalment, 930 00:45:54,080 --> 00:45:56,310 en la seva major part, bastant utilitat dret del treball. 931 00:45:56,310 --> 00:45:59,970 Durant tot el temps que la devolució de trucada funció corria, era bastant 932 00:45:59,970 --> 00:46:03,670 gastar molt més del seu temps només computing nombre que Fibonacci nth. 933 00:46:03,670 --> 00:46:05,930 >> Però només teníem un fil de tractar. 934 00:46:05,930 --> 00:46:10,270 En el model d'Apache, quan dues persones fet la sol · licitud per obtenir fib 45, és 935 00:46:10,270 --> 00:46:11,610 hauria tingut dos temes diferents. 936 00:46:11,610 --> 00:46:15,060 I llavors el treball del sistema operatiu Hauria estat, o el nivell d'usuari 937 00:46:15,060 --> 00:46:18,660 codi que maneja els fils, hagués estat la de tallar que fins al 938 00:46:18,660 --> 00:46:23,060 CPU, o encara que tenia diverses CPU, distribuir de manera uniforme a través de la CPU 939 00:46:23,060 --> 00:46:26,130 pel que ambdós estaven acabats més o menys al mateix temps. 940 00:46:26,130 --> 00:46:31,120 >> Així que per mostrar com podem classificar de - i això no és un perfecte totals 941 00:46:31,120 --> 00:46:34,280 solució, però alguna cosa del que puguem fer un tornar aquí i fer 942 00:46:34,280 --> 00:46:35,880 una mica millor. 943 00:46:35,880 --> 00:46:41,540 Així que el que tenim aquí és un programa que es diu FIB C. I això s'utilitza bàsicament 944 00:46:41,540 --> 00:46:45,690 un altre dels mòduls de node anomenat El mòdul de procés fill. 945 00:46:45,690 --> 00:46:49,210 Així que he inclòs a la classe superior de com m'agradaria fer una lliura incloure 946 00:46:49,210 --> 00:46:51,230 process.h nen o alguna cosa així. 947 00:46:51,230 --> 00:46:56,210 Ara tinc accés a aquesta variable CP que té tot el meu funcionalitat. 948 00:46:56,210 --> 00:47:01,810 >> Així que ara el que estic fent en aquesta resposta handler és que estic corrent aquest programa 949 00:47:01,810 --> 00:47:04,100 dot slash fib 45. 950 00:47:04,100 --> 00:47:06,820 Així que el que he fet - i jo només vaig per sortir d'aquest programa per un 951 00:47:06,820 --> 00:47:07,620 poc - 952 00:47:07,620 --> 00:47:11,060 és que m'he escrit un programa en C que bàsicament calcula la 953 00:47:11,060 --> 00:47:12,630 enèsim nombre de Fibonacci. 954 00:47:12,630 --> 00:47:15,960 Així que aquí és només un programa que he escrit en C que calcula això. 955 00:47:15,960 --> 00:47:19,040 Puc compilar, i puc córrer que en la línia d'ordres. 956 00:47:19,040 --> 00:47:22,150 I es va a calcular el Nombre 45a Fibonacci. 957 00:47:22,150 --> 00:47:24,510 >> Llavors va notar que només pren més o menys com sempre. 958 00:47:24,510 --> 00:47:28,240 Probablement podria haver utilitzat el tauler 03 a optimitzar o alguna cosa així, 959 00:47:28,240 --> 00:47:31,050 però jo només vaig fer com a normal configuració del compilador. 960 00:47:31,050 --> 00:47:33,260 I ho imprimeix. 961 00:47:33,260 --> 00:47:36,830 >> Però ara, què estic fent mena de? 962 00:47:36,830 --> 00:47:39,800 Oh, ho sento, arxiu incorrecte. 963 00:47:39,800 --> 00:47:42,800 Així que faig el mateix amb la capçalera com abans. 964 00:47:42,800 --> 00:47:45,780 Llavors faig això cp.exec. 965 00:47:45,780 --> 00:47:49,460 Així que el que això farà és que està va a executar aquest programa. 966 00:47:49,460 --> 00:47:51,960 Però la forma en que funciona és que que no esperar que 967 00:47:51,960 --> 00:47:53,400 aquest programa fins al final. 968 00:47:53,400 --> 00:47:56,000 Simplement diu bàsicament executar aquest programa. 969 00:47:56,000 --> 00:47:58,700 Així que, bàsicament, escriure el següent en el indicatiu de tipus d'. 970 00:47:58,700 --> 00:48:02,350 >> I després, quan hagis acabat amb ella, executar aquesta funció. 971 00:48:02,350 --> 00:48:04,800 Així que ara que tipus d'aconseguir aquest Tot restaurat de 972 00:48:04,800 --> 00:48:06,750 com que no estem esperant. 973 00:48:06,750 --> 00:48:08,530 ¿Aquest tipus de sentit? 974 00:48:08,530 --> 00:48:08,990 Sip? 975 00:48:08,990 --> 00:48:11,060 >> AUDIÈNCIA: [inaudible]? 976 00:48:11,060 --> 00:48:13,610 >> KEVIN SCHMID: Així que això va a obrir un nou procés per fer-ho. 977 00:48:13,610 --> 00:48:19,310 Així que això és en realitat, en alguns aspectes, malament, no molt malament, però és 978 00:48:19,310 --> 00:48:22,990 important dir que això és una mena de que es remunta a, d'una banda, l'Apache 979 00:48:22,990 --> 00:48:26,450 model en què fem les discussions i processos Per a cada sol · licitud o 980 00:48:26,450 --> 00:48:29,280 processos per a cada sol · licitud. 981 00:48:29,280 --> 00:48:32,090 Així que això és una espècie d'anàleg al que fa Apache. 982 00:48:32,090 --> 00:48:35,110 En alguns casos, s'acaba d'utilitzar una nova fil, que és una mica més de llum 983 00:48:35,110 --> 00:48:39,040 pes que un procés, però Apache podria acabar bifurcar un nou procés 984 00:48:39,040 --> 00:48:43,370 que és una espècie del que fem aquí implícitament fent punt fib barra 45. 985 00:48:43,370 --> 00:48:48,690 >> I llavors en aquest cas, quin tipus de incorrem les mateixes despeses de processos. 986 00:48:48,690 --> 00:48:50,710 Així que això és només una cosa que pots fer. 987 00:48:50,710 --> 00:48:52,600 Però només per mostrar aquest tipus de carrera. 988 00:48:52,600 --> 00:48:57,120 I aquesta xerrada és simplement molt dirigit a presentant aquest tipus de programes com 989 00:48:57,120 --> 00:49:00,710 manera de mostrar diferents perspectives sobre com dissenyar servidors així. 990 00:49:00,710 --> 00:49:08,300 Així que això està en marxa, i llavors ara si ho faig aquesta vegada, tinc dos identificadors de procés. 991 00:49:08,300 --> 00:49:10,320 >> Anem a parlar de coses que assenyalen. 992 00:49:10,320 --> 00:49:11,980 Així que noten que són de forma incremental. 993 00:49:11,980 --> 00:49:12,700 Això està bé. 994 00:49:12,700 --> 00:49:15,140 Perquè era 27.122 abans. 995 00:49:15,140 --> 00:49:18,580 Però notin ara, es va tornar més o menys al mateix temps. 996 00:49:18,580 --> 00:49:23,960 >> I ara, una bona pregunta per preguntar sobre per això va ser que el cas és, el treball 997 00:49:23,960 --> 00:49:27,590 era ara per fer una espècie d'aquestes coses tipus de jugar net amb cada 998 00:49:27,590 --> 00:49:31,350 altres, aquestes dues instàncies de dot fib barra 45 que vaig córrer 999 00:49:31,350 --> 00:49:32,880 o que va córrer Node? 1000 00:49:32,880 --> 00:49:36,940 Qui espècie de fa just que tots dos aconseguir espècie d'equilibri en temps d'execució? 1001 00:49:36,940 --> 00:49:42,900 1002 00:49:42,900 --> 00:49:44,220 >> AUDIÈNCIA: [inaudible]. 1003 00:49:44,220 --> 00:49:44,620 >> KEVIN SCHMID: Si. 1004 00:49:44,620 --> 00:49:49,740 Així que, bàsicament, quan ho faig fib slash dot 45 o alguna cosa així, ara és el 1005 00:49:49,740 --> 00:49:53,750 tipus de fins al sistema operatiu per gestionar el temps d'execució d'aquests programes. 1006 00:49:53,750 --> 00:49:56,920 I ara es pot programar en diferents CPU o 1007 00:49:56,920 --> 00:49:58,330 pot programar. 1008 00:49:58,330 --> 00:50:01,870 Es pot tallar a la vegada que un CPU rep o que rebin 1009 00:50:01,870 --> 00:50:03,330 per executar-se en una CPU. 1010 00:50:03,330 --> 00:50:05,620 Així que aquesta és la idea darrere d'això. 1011 00:50:05,620 --> 00:50:07,220 Això té sentit per a tothom? 1012 00:50:07,220 --> 00:50:10,950 Així que ara node no està realment jugant un participar a dividir aquestes tasques. 1013 00:50:10,950 --> 00:50:12,200 D'acord. 1014 00:50:12,200 --> 00:50:14,050 1015 00:50:14,050 --> 00:50:17,840 >> Així que això és gairebé el d'exemples. 1016 00:50:17,840 --> 00:50:23,370 Només volia mostrar una cosa més perquè molt d'això ha estat fins ara 1017 00:50:23,370 --> 00:50:27,350 no totalment pràctic fantàstic en alguns casos. 1018 00:50:27,350 --> 00:50:30,970 Em puc imaginar tornar a casa després d'aquesta parlar i alguna cosa i dient com, 1019 00:50:30,970 --> 00:50:35,710 així que tipus de aixecar del que parla que Puc fer que un servidor de Fibonacci 1020 00:50:35,710 --> 00:50:37,360 el meu projecte final. 1021 00:50:37,360 --> 00:50:40,770 Així que aquí és només una espècie d'un exemple més que s'espera que sigui - 1022 00:50:40,770 --> 00:50:44,620 potser no, però potser - una mica més tipus d'interès per a projectes fi de carrera i 1023 00:50:44,620 --> 00:50:46,440 pensant en el futur d'aquest tipus de coses. 1024 00:50:46,440 --> 00:50:48,870 >> Així que això és chat.js. 1025 00:50:48,870 --> 00:50:52,290 Així que això és com la classe d'alguna mostra codi del costat del servidor que es pot utilitzar per 1026 00:50:52,290 --> 00:50:55,700 establir un petit servidor de xat com vostè va poder haver vist al 1027 00:50:55,700 --> 00:50:56,630 Facebook Xat o el que sigui. 1028 00:50:56,630 --> 00:50:59,990 Així que no estic dient que això és com Facebook Xateja, però això és una mena de 1029 00:50:59,990 --> 00:51:06,230 com una bona - potser no és bo, però potser punt de partida per a una xerrada - bona 1030 00:51:06,230 --> 00:51:08,560 servidor per al seu lloc web per a un projecte final. 1031 00:51:08,560 --> 00:51:11,040 Així que donem una ullada al que està fent. 1032 00:51:11,040 --> 00:51:15,500 >> Així que estem aconseguint aquesta cosa especial a la part superior, aquesta var SIO 1033 00:51:15,500 --> 00:51:17,050 iguals requereix Socket.IO. 1034 00:51:17,050 --> 00:51:20,280 Així que això és una altra cosa que no és així en realitat vénen inclòs amb 1035 00:51:20,280 --> 00:51:22,300 Node però pot instal · lar. 1036 00:51:22,300 --> 00:51:23,480 És un mòdul de node. 1037 00:51:23,480 --> 00:51:25,670 Així com alguns extensió a node. 1038 00:51:25,670 --> 00:51:29,220 >> SocketIO és realment molt una mena de fresc. 1039 00:51:29,220 --> 00:51:32,550 És una abstracció que, bàsicament, el que el que fa és és el que permet 1040 00:51:32,550 --> 00:51:35,770 tenir aquest flux de comunicació entre una tela 1041 00:51:35,770 --> 00:51:39,430 navegador i un servidor web. 1042 00:51:39,430 --> 00:51:45,250 Així que en la seva major part fins ara, hem tingut aquestes molt ràpida d'un segon o dos 1043 00:51:45,250 --> 00:51:48,790 segones comunicacions entre una xarxa navegador i el servidor web. 1044 00:51:48,790 --> 00:51:53,310 Així que és bàsicament anar a google.com, get les coses, enviar de tornada, i després 1045 00:51:53,310 --> 00:51:53,770 hem acabat. 1046 00:51:53,770 --> 00:51:56,560 Mai anem a parlar de nou fins que el usuari escriu en una altra cosa. 1047 00:51:56,560 --> 00:52:01,090 >> Però, què Socket.IO i el mateix tipus de coses - i SocketIO és en realitat un 1048 00:52:01,090 --> 00:52:03,940 de les coses que es construeixen sobre com WebSocket que és una espècie de disposició 1049 00:52:03,940 --> 00:52:06,440 com a part d'HTML5 - 1050 00:52:06,440 --> 00:52:09,620 que li permet tenir aquesta diàleg continu. 1051 00:52:09,620 --> 00:52:13,990 I això és molt útil en un servidor de xat tipus de coses, ja que és 1052 00:52:13,990 --> 00:52:17,390 una mena diàleg continu en alguna manera, perquè si vostè està conversant 1053 00:52:17,390 --> 00:52:21,540 amb algú, ara pot simplement enviar un missatge pel tub, i a continuació, la 1054 00:52:21,540 --> 00:52:23,940 servidor pot enviar un missatge per la canonada a l'altra persona que està 1055 00:52:23,940 --> 00:52:24,520 xerrant amb. 1056 00:52:24,520 --> 00:52:26,903 I llavors vostè pot tenir aquesta intercanviar així. 1057 00:52:26,903 --> 00:52:30,590 1058 00:52:30,590 --> 00:52:32,850 >> Així que això és una cosa del que SocketIO és bo per. 1059 00:52:32,850 --> 00:52:38,400 La raó que SocketIO utilitza WebSockets com una cosa és que en 1060 00:52:38,400 --> 00:52:43,980 A més de WebSockets simplement vells, també fa alguns trucs per, bàsicament, 1061 00:52:43,980 --> 00:52:45,610 compatibilitzar navegador ella. 1062 00:52:45,610 --> 00:52:50,040 Així navegadors com Internet Explorer per desgràcia no són compatibles amb WebSockets 1063 00:52:50,040 --> 00:52:50,810 només treure'l de la caixa. 1064 00:52:50,810 --> 00:52:55,290 Per tant, utilitza algun altre tipus de fresc net coses amb Adobe Flash per permetre 1065 00:52:55,290 --> 00:52:57,170 que tingui el suport de tots navegador. 1066 00:52:57,170 --> 00:52:58,800 Així que és realment útil. 1067 00:52:58,800 --> 00:53:02,440 >> I, de fet, sé que sóc una mena de que s'executa en el temps aquí, però CS50 1068 00:53:02,440 --> 00:53:08,490 Discutir, alguna vegada has vist alguna cosa com, no sé, en blanc i així és 1069 00:53:08,490 --> 00:53:11,030 responent a aquest missatge o alguna cosa així, aquesta característica? 1070 00:53:11,030 --> 00:53:12,250 Això és SocketIO. 1071 00:53:12,250 --> 00:53:15,580 Així que quan algú comença a escriure a la quadre de discutir per fer una rèplica o 1072 00:53:15,580 --> 00:53:20,040 alguna cosa, el seu navegador no ho és trucada en SocketIO emet algun tipus de 1073 00:53:20,040 --> 00:53:22,660 cas que diu que hi ha algú respondre a aquest missatge. 1074 00:53:22,660 --> 00:53:26,110 >> A continuació, el servidor diu, OK, Què he de fer? 1075 00:53:26,110 --> 00:53:29,270 Bé, ara he de dir a aquests altres nois que estan en CS50 Discutiu buscant 1076 00:53:29,270 --> 00:53:31,170 en aquest post que algú està responent. 1077 00:53:31,170 --> 00:53:34,190 Així que això és una cosa del que és SocketIO bo per a aquest tipus de continuació de 1078 00:53:34,190 --> 00:53:35,930 corrent de diàleg. 1079 00:53:35,930 --> 00:53:37,250 D'acord. 1080 00:53:37,250 --> 00:53:40,060 >> Així que el que tinc aquí - i estem just va a fer cas omís de la matriu connexions 1081 00:53:40,060 --> 00:53:41,390 per una mica - 1082 00:53:41,390 --> 00:53:43,080 el que faig és que no escolto altra. 1083 00:53:43,080 --> 00:53:46,880 Així que això és només la forma en Socket.IO es dient anem a escoltar en aquest port. 1084 00:53:46,880 --> 00:53:50,060 I llavors faig això en la connexió. 1085 00:53:50,060 --> 00:53:53,360 Així que això és bàsicament Socket IO de manera de dir, quan vam rebre una 1086 00:53:53,360 --> 00:53:55,840 connexió, vull que per executar aquest codi. 1087 00:53:55,840 --> 00:53:59,870 >> I adonar-se que en lloc de tenir rec dors i van passar allà tinc Socket. 1088 00:53:59,870 --> 00:54:03,260 I aquesta idea és, bàsicament, aquest sòcol cosa que es pot escriure i llegir 1089 00:54:03,260 --> 00:54:05,750 que té l'usuari de missatges, possiblement. 1090 00:54:05,750 --> 00:54:10,700 I els missatges que vostè enviï pot passar per això Socket. 1091 00:54:10,700 --> 00:54:12,140 Això té sentit? 1092 00:54:12,140 --> 00:54:14,490 Així que és aquesta cosa de continuar. 1093 00:54:14,490 --> 00:54:17,820 >> Així que el que faig és que dic Socket.emit. 1094 00:54:17,820 --> 00:54:20,330 I emeten menys pren el molt dos arguments. 1095 00:54:20,330 --> 00:54:24,100 El primer argument és una cadena només representa el tipus de 1096 00:54:24,100 --> 00:54:25,270 El que està emetent. 1097 00:54:25,270 --> 00:54:28,120 Així que per a aquest cas, no tinc ús aquest nou missatge de cadena. 1098 00:54:28,120 --> 00:54:32,670 I això és només bàsicament dient que el tipus d'aquesta cosa, el que estic 1099 00:54:32,670 --> 00:54:34,750 l'enviament, és un nou missatge. 1100 00:54:34,750 --> 00:54:38,460 Perquè pugui escoltar per tipus específics com un nou missatge o el que sigui 1101 00:54:38,460 --> 00:54:39,960 mitjançant l'ús de punt a. 1102 00:54:39,960 --> 00:54:44,570 >> Així que la connexió i l'usuari enviats allà, si ens fixem on anomenem punt en, 1103 00:54:44,570 --> 00:54:48,150 els altres són cadenes que representen tipus de missatges d'usuari. 1104 00:54:48,150 --> 00:54:52,060 Pel que és, bàsicament, que pot tenir aquest emit un d'aquests tipus de missatges, i 1105 00:54:52,060 --> 00:54:55,520 a continuació, fer alguna cosa en resposta a un d'aquests tipus de missatges 1106 00:54:55,520 --> 00:54:57,640 >> Així que estic emetent aquest nou missatge. 1107 00:54:57,640 --> 00:55:00,540 Anem a ignorar connections.push per un segon. 1108 00:55:00,540 --> 00:55:03,360 Però llavors jo dic, va enviar usuari Socket.on. 1109 00:55:03,360 --> 00:55:07,540 Així que ara és una mica com quan el usuari m'envia un missatge, vull 1110 00:55:07,540 --> 00:55:09,240 executar aquest codi. 1111 00:55:09,240 --> 00:55:12,080 I adonar-se que aquesta funció anònima està tenint en aquesta variable 1112 00:55:12,080 --> 00:55:16,300 trucada de dades que és bàsicament van tenir de missatges de l'usuari. 1113 00:55:16,300 --> 00:55:20,700 >> Així que ara anem a tipus de conversa sobre la matriu de connexions. 1114 00:55:20,700 --> 00:55:24,590 Així que això està dissenyat per a un client de xat on bàsicament tot el món és una espècie de a 1115 00:55:24,590 --> 00:55:25,950 la mateixa sala de xat. 1116 00:55:25,950 --> 00:55:29,640 Així que, bàsicament, el que necessitem per mantenir al voltant d'una certa matriu que bàsicament 1117 00:55:29,640 --> 00:55:33,170 representa totes les persones en el xat en D'alguna manera, si això té sentit. 1118 00:55:33,170 --> 00:55:33,340 Cert? 1119 00:55:33,340 --> 00:55:37,190 Perquè hem de saber qui són aquests nois som així que els podem enviar els missatges 1120 00:55:37,190 --> 00:55:39,140 que altres persones ens envien. 1121 00:55:39,140 --> 00:55:44,440 >> Així que el que aquest codi fa és quan l'usuari envia un missatge - que és el tipus de 1122 00:55:44,440 --> 00:55:45,300 l'esdeveniment - 1123 00:55:45,300 --> 00:55:47,120 anem a executar aquest codi. 1124 00:55:47,120 --> 00:55:51,240 I el que fem és que correm a través d'aquest matriu que hem anomenat les connexions. 1125 00:55:51,240 --> 00:55:54,390 I més o menys per a cada connexió excepte el que és nostre, això és 1126 00:55:54,390 --> 00:55:59,520 el que diu el codi, vam enviar una nova missatge amb aquest missatge adjunt 1127 00:55:59,520 --> 00:56:01,210 informació. 1128 00:56:01,210 --> 00:56:04,880 >> Així que si vostè nota aquí, el que vaig fer quan l'usuari realment fa que un nou 1129 00:56:04,880 --> 00:56:08,560 connexió és que he afegit a la Mètode JavaScript.push, això és 1130 00:56:08,560 --> 00:56:12,100 bàsicament dient com afegir que Sòcol com un valor en 1131 00:56:12,100 --> 00:56:13,900 la nostra gamma de connexions. 1132 00:56:13,900 --> 00:56:20,560 Així que ara quan s'executa aquest codi, ho farà enviar coses a aquells particulars 1133 00:56:20,560 --> 00:56:22,020 connexions. 1134 00:56:22,020 --> 00:56:26,980 Així que aquest pot ser un bon punt de partida per a la fabricació d'un servidor de xat 1135 00:56:26,980 --> 00:56:28,250 o alguna cosa semblant. 1136 00:56:28,250 --> 00:56:33,315 >> I el tipus de cosa interessant és que la codi que veus aquí com a i 1137 00:56:33,315 --> 00:56:36,390 emeten i coses per l'estil és el mateix tipus de codi JavaScript que ho faria 1138 00:56:36,390 --> 00:56:39,260 escriure al navegador per interactuar amb el servidor. 1139 00:56:39,260 --> 00:56:42,480 Així que per això SocketIO és una espècie de ordenada i útil d'aquesta manera. 1140 00:56:42,480 --> 00:56:45,680 1141 00:56:45,680 --> 00:56:49,250 >> Ah, i una cosa més aviat ràpid. 1142 00:56:49,250 --> 00:56:55,970 Hi va haver un projecte final CS50 any passat que bàsicament van implementar una xerrada 1143 00:56:55,970 --> 00:56:57,840 servidor Node.js. 1144 00:56:57,840 --> 00:57:01,350 Crec que és Harvardchats.org però no estic - 1145 00:57:01,350 --> 00:57:02,940 D'acord. 1146 00:57:02,940 --> 00:57:06,190 No estic segur del que l'URL és, però Puc enviar això després. 1147 00:57:06,190 --> 00:57:09,260 Però és una espècie de fresc el que pot fer amb Node.js. 1148 00:57:09,260 --> 00:57:14,680 >> Així que espero que, en general, vostès tenen una bon sentit del Node.js és útil 1149 00:57:14,680 --> 00:57:17,870 i com es podria aplicar tal al seu projecte final. 1150 00:57:17,870 --> 00:57:21,050 Estaré enviant cap a fora major recursos al llarg d'aquesta. 1151 00:57:21,050 --> 00:57:23,170 I gràcies per venir. 1152 00:57:23,170 --> 00:57:23,610 Gràcies. 1153 00:57:23,610 --> 00:57:27,168 >> [Aplaudiments]