1 00:00:00,000 --> 00:00:08,350 2 00:00:08,350 --> 00:00:09,710 >> Kevin Schmid: Saluton al ĉiuj. 3 00:00:09,710 --> 00:00:12,640 Bonvenon al la CS50 seminario sur Node.js. 4 00:00:12,640 --> 00:00:13,955 Mia nomo estas Kevin. 5 00:00:13,955 --> 00:00:15,580 Mi estas CS50 TF. 6 00:00:15,580 --> 00:00:17,650 Kaj mi estas speco de kiel vere ekscitita pri tiu seminario. 7 00:00:17,650 --> 00:00:20,430 Mi kredas Node.js estas tre cool. 8 00:00:20,430 --> 00:00:24,200 Mi esperas ke tiu seminario povas esti uzata kiel bona, mi supozas, saltotabulo por 9 00:00:24,200 --> 00:00:26,380 iuj viaj fina projektojn se vi interesiĝas uzi 10 00:00:26,380 --> 00:00:27,630 iu kiel Node.js. 11 00:00:27,630 --> 00:00:29,770 12 00:00:29,770 --> 00:00:33,320 >> Ni speco de komenci la seminarion off por nur parolas iomete de la 13 00:00:33,320 --> 00:00:36,970 ia fono amplekso perspektivoj de Node.js, kaj poste 14 00:00:36,970 --> 00:00:39,240 ni movi al iu kodo ekzemploj. 15 00:00:39,240 --> 00:00:42,340 Kaj mi havos la kodon sur paĝaro, kaj vi povas rigardi la kodon. 16 00:00:42,340 --> 00:00:45,475 Kaj post la seminario, mi ordigi de Diskuto pri kiel vi povas agordi Node.js 17 00:00:45,475 --> 00:00:48,220 sur via komputilo. 18 00:00:48,220 --> 00:00:48,710 >> OK. 19 00:00:48,710 --> 00:00:49,760 Do ni komencu. 20 00:00:49,760 --> 00:00:53,700 Do mi supozas ke mi simple deziras rakonti retserviloj, vere, unue. 21 00:00:53,700 --> 00:00:59,730 Kaj por komenci tiun diskuton, mi esence havas diagramon, kiu estas de 22 00:00:59,730 --> 00:01:04,269 La lernolibro uzata por CS61, kiuj esence montras la interago 23 00:01:04,269 --> 00:01:08,510 inter kliento procezo, kiel via retejo retumilo aŭ kiel via celo kliento aŭ 24 00:01:08,510 --> 00:01:11,340 io simila al tiu, kaj ret-servilo. 25 00:01:11,340 --> 00:01:15,150 Do ĉi tiu speco de aspektas simila al la bildo ke vi vidis en prelego pri 26 00:01:15,150 --> 00:01:19,270 Merkredo kie esence ni havas kelkajn kliento procezon kiel Google Chrome. 27 00:01:19,270 --> 00:01:22,980 >> Kaj tiam paŝon unu estas la kliento sendas peton. 28 00:01:22,980 --> 00:01:27,510 Do kiu povas esti io kiel bone ni viziti, mi ne scias, CS50.net. 29 00:01:27,510 --> 00:01:29,320 Do ni elsendos tiu peto. 30 00:01:29,320 --> 00:01:34,280 Kaj ĉu iu memoras la nomon de la protokolo kiu precizigas kiel tiu 31 00:01:34,280 --> 00:01:35,610 peto devus strukturi? 32 00:01:35,610 --> 00:01:36,382 Yep. 33 00:01:36,382 --> 00:01:37,650 >> Spektantaro: [inaudibles]. 34 00:01:37,650 --> 00:01:38,150 >> Kevin Schmid: Ekzakte. 35 00:01:38,150 --> 00:01:40,100 Do gxi estas kiel HTTP, ĉu ne? 36 00:01:40,100 --> 00:01:44,720 Do esence la specifo por kiel ke peto devus vere esti metata 37 00:01:44,720 --> 00:01:47,450 ekstere, ĉar fine de la tago, ke peto estas vere ĝuste kiel 38 00:01:47,450 --> 00:01:50,240 ŝnuro kiu esence Diras mi volas tion. 39 00:01:50,240 --> 00:01:53,580 Kaj la specifo cxar tio estas HTTP. 40 00:01:53,580 --> 00:01:55,270 Do jen kiel protokolo. 41 00:01:55,270 --> 00:01:57,920 >> Do tiam la servilo ricevas ke peton. 42 00:01:57,920 --> 00:02:01,610 Do you guys havas ttt-servilo instalita en la CS50 aparaton. 43 00:02:01,610 --> 00:02:02,460 Ĝi estas Apache. 44 00:02:02,460 --> 00:02:06,230 Kaj ĉi tiu semajno kiam vi laboras en tiu problemo starigis sep, vi vere laboros 45 00:02:06,230 --> 00:02:08,160 kun tiu ttt-servilo. 46 00:02:08,160 --> 00:02:12,380 Do la servilo ricevas tiun peton, kaj tiam ĝi havas al speco de skrapi lian 47 00:02:12,380 --> 00:02:15,090 kapon kaj diru kiel bone kion cxu mi faru tion? 48 00:02:15,090 --> 00:02:20,060 >> Do surbaze de kio decidas fari, tiam eble devos kontakti ian 49 00:02:20,060 --> 00:02:20,730 de rimedo. 50 00:02:20,730 --> 00:02:23,700 Kaj tiu rimedo povus esti multajn malsamajn aferojn. 51 00:02:23,700 --> 00:02:26,810 Por unu, ĝi povus esti simple kiel statikan HTML-dosiero. 52 00:02:26,810 --> 00:02:29,820 Do ĝi povus esti simple kiel iuj HTML kiu estas kiel por 53 00:02:29,820 --> 00:02:31,100 via persona retejo. 54 00:02:31,100 --> 00:02:35,360 Ĝi povus esti statika dosieron kiel bildo aŭ kiel filmo kiun vi havos. 55 00:02:35,360 --> 00:02:37,660 Ĝi povus eĉ paroli al ia datumaro 56 00:02:37,660 --> 00:02:39,530 kiel MySQL datenbazo. 57 00:02:39,530 --> 00:02:43,910 Do ĝi ne ĉiam devas komuniki per rimedo, sed en 58 00:02:43,910 --> 00:02:45,700 iuj kazoj, ĝi povis. 59 00:02:45,700 --> 00:02:47,800 >> Tial do kio okazos al fari post ĝi estas tiu, tuj 60 00:02:47,800 --> 00:02:49,430 redonu la respondo. 61 00:02:49,430 --> 00:02:53,130 Kaj la respondo por ĉi tiu estas Ankaŭ precizigita per HTTP. 62 00:02:53,130 --> 00:02:54,830 Do tiam la kliento povas ricevi ĝin. 63 00:02:54,830 --> 00:02:56,740 Ĝi povas disŝiri ĝin aparte kaj prilabori ĝin. 64 00:02:56,740 --> 00:03:00,900 Kaj tiam vi ricevas retpaĝo kiel Google aŭ CS50.net aŭ 65 00:03:00,900 --> 00:03:02,240 kion ajn vi iris. 66 00:03:02,240 --> 00:03:03,100 OK? 67 00:03:03,100 --> 00:03:06,080 >> Do tiu estas la baza interago kiu Ni tuj estos kontraktanta kun. 68 00:03:06,080 --> 00:03:08,770 Kaj ni preskaux tuj estos enfokusigante ĉi tiu parto de la 69 00:03:08,770 --> 00:03:10,640 interago, la servilo. 70 00:03:10,640 --> 00:03:10,990 OK. 71 00:03:10,990 --> 00:03:12,210 Cool. 72 00:03:12,210 --> 00:03:15,500 Iu ajn havas demandojn ĝis nun? 73 00:03:15,500 --> 00:03:17,720 OK. 74 00:03:17,720 --> 00:03:22,430 >> Do kiel ni diris, la TTT-servilo ricevas tiu HTTP-peto kaj tiam elsendas ĉi 75 00:03:22,430 --> 00:03:24,760 HTTP-respondo. 76 00:03:24,760 --> 00:03:29,100 Kaj kiel ni parolis pri antaŭe, la CS50 aparato ttt-servilo estas Apache. 77 00:03:29,100 --> 00:03:32,490 Do kiam vi uloj laboras sur P starigis sep, vi iras labori kun la 78 00:03:32,490 --> 00:03:34,120 Apache ttt-servilo. 79 00:03:34,120 --> 00:03:37,890 Vi neniam devas vere labori kun Apache rekte tro multe. 80 00:03:37,890 --> 00:03:41,920 Vi ian agordi Apache iom kiam vi specifas la virtuala gastigantoj aŭ 81 00:03:41,920 --> 00:03:44,970 la v Cebaot, kaj ni akiros por ke en iom. 82 00:03:44,970 --> 00:03:50,620 >> Sed esence, la Apache ttt-servilo decidis labori kun PHP speco 83 00:03:50,620 --> 00:03:51,730 de ekstere de la skatolo. 84 00:03:51,730 --> 00:03:56,170 Do kio vere okazas estas, kiam vi iros al unu el viaj retejoj kiel, ekzemple, 85 00:03:56,170 --> 00:04:00,360 loka gastiganta oblikvo index.php aŭ ion, Estas via retumilo ordonas ke 86 00:04:00,360 --> 00:04:04,330 peto, kaj tiam Apache sidas tie kaj ciferoj, por fari per ĝi. 87 00:04:04,330 --> 00:04:08,840 Tiam la ago estas ekzekuti ke kodo index.php kaj 88 00:04:08,840 --> 00:04:11,330 tiam sendu ĝin reen. 89 00:04:11,330 --> 00:04:15,640 Do tie estas tio. 90 00:04:15,640 --> 00:04:16,980 Do ni ia parolis pri tio. 91 00:04:16,980 --> 00:04:21,990 Do ĝi povus simple servas statika dosieron aŭ kuri iom PHP-kodo kaj do afero 92 00:04:21,990 --> 00:04:23,510 la respondo. 93 00:04:23,510 --> 00:04:27,670 >> Tial do komuna demando kiu povas veni ĝis estas bone, kial ni vere trakti 94 00:04:27,670 --> 00:04:31,750 kun havanta plurajn uzantojn en la sama tempo? 95 00:04:31,750 --> 00:04:36,930 Do imagu, se vi skribas retejo servilo, se vi havis ttt-servilo ke 96 00:04:36,930 --> 00:04:39,900 vi provis skribi en io kiel C aŭ io kiel tio, 97 00:04:39,900 --> 00:04:45,150 esence vi povas pensi pri kiel tie povus esti ia kodo, ke 98 00:04:45,150 --> 00:04:49,330 ricevus la peton, sed tiam ĝi devas vidi la tutan tiun verkon sur ĝi. 99 00:04:49,330 --> 00:04:53,060 Ĝi povas havi al, ekzemple, kontakti la datumbazo aŭ io kiel tio. 100 00:04:53,060 --> 00:04:53,300 Ĝuste? 101 00:04:53,300 --> 00:04:56,010 Kaj tiam ĝi farus tian de prilaborado kaj poste 102 00:04:56,010 --> 00:04:57,060 resendis la respondo. 103 00:04:57,060 --> 00:04:58,950 Do jen kiel la altan nivelo superrigardon. 104 00:04:58,950 --> 00:05:04,210 >> Sed ĝi ne estas tuj evidente kiel vi povas tion fari tiel, ke du personoj aŭ 105 00:05:04,210 --> 00:05:09,040 eĉ 1.000 homoj povis labori per viaj ttt-servilo samtempe. 106 00:05:09,040 --> 00:05:14,880 Do la solvo kiun Apache uzas nomas fadenoj aŭ procezoj. 107 00:05:14,880 --> 00:05:16,770 Do eble vi aŭdis de tiujn terminojn antaŭe. 108 00:05:16,770 --> 00:05:22,190 Estas bone se vi ne havas, sed simple opinias pri fadenoj aŭ procezoj kiel manieroj por 109 00:05:22,190 --> 00:05:26,290 mastruma sistemo aŭ uzanton programo aŭ io simila aŭ ttt-servilo 110 00:05:26,290 --> 00:05:28,810 por speco de ekzekuti multnombraj aferojn samtempe. 111 00:05:28,810 --> 00:05:31,760 Do vi eble auxdis la terminon kiel fadenoj de ekzekuto. 112 00:05:31,760 --> 00:05:34,140 Do ĝi estas speco de kiel vi estas speco de multitasking. 113 00:05:34,140 --> 00:05:37,710 >> Kaj se vi vidis sur la skatolo de via portebla komputilo, aŭ ion similan, 114 00:05:37,710 --> 00:05:43,040 multicore, kion vi povas fari estas vi povas kuri du malsamaj fadenoj pri diversaj 115 00:05:43,040 --> 00:05:46,700 partoj de la CPU tiel ke ili povas reale okazi samtempe. 116 00:05:46,700 --> 00:05:48,100 Do tiu estas vere potenca. 117 00:05:48,100 --> 00:05:52,270 Kaj ĉi tiu estas speco de Apache estas solvon al tiu problemo. 118 00:05:52,270 --> 00:05:57,900 >> Do, tie ili estas speco de kiel ajn temoj kun tiu alproksimiĝo kvankam? 119 00:05:57,900 --> 00:05:59,870 Do mi supozas ke mi specon de skribis ilin tie. 120 00:05:59,870 --> 00:06:03,440 Sed ambaux ian uzi multan memoron. 121 00:06:03,440 --> 00:06:07,490 Ĝi estas tre multekosta por krei fadenon aŭ procezo. 122 00:06:07,490 --> 00:06:11,750 >> Kaj parto de la rezonado estas ke nur kiel kiam vi uzas C-programo 123 00:06:11,750 --> 00:06:15,090 kiel via ĉefa kaj do ke alvokojn alian funkcion, kiu havas 124 00:06:15,090 --> 00:06:16,520 ia pilo. 125 00:06:16,520 --> 00:06:19,910 Do fadenoj ankaŭ postulas tute apartan stako kiu 126 00:06:19,910 --> 00:06:21,220 povas esti sufiĉe granda. 127 00:06:21,220 --> 00:06:25,170 Kaj se vi povas imagi havanta tunoj de uzantoj en via retejo, vi havus 128 00:06:25,170 --> 00:06:26,280 multe da malsamaj fadenoj. 129 00:06:26,280 --> 00:06:28,230 Tio estas multe da piloj al administri kaj subteni. 130 00:06:28,230 --> 00:06:31,280 Do estas granda konsumo de memoro. 131 00:06:31,280 --> 00:06:35,650 >> Kaj tiam, ankaŭ, diru vi havas nur CPU, aŭ ni diru vi havas 132 00:06:35,650 --> 00:06:38,460 pli fadenoj ol vi havos tiuj multicores. 133 00:06:38,460 --> 00:06:38,730 Ĝuste? 134 00:06:38,730 --> 00:06:43,280 Do diru al vi havis 10 fadenoj kaj vi nur havis kvin CPU. 135 00:06:43,280 --> 00:06:46,260 Vi speco de devos fari tion kie vi sxangxi inter la nuna 136 00:06:46,260 --> 00:06:49,090 kiu kuras, ĉar vi ne povas kuri ĉiuj 10 senprokraste. 137 00:06:49,090 --> 00:06:50,980 Kaj tiu nomiĝas kuntekston ŝaltilon. 138 00:06:50,980 --> 00:06:54,260 Kaj tiu termino vere havas kelkajn diversaj kuntekstoj, sed ni nur 139 00:06:54,260 --> 00:06:56,620 pensi pri tio kiel switching inter du fadenoj. 140 00:06:56,620 --> 00:06:59,730 Tio povas esti bela multekosta ĉar esence tion, kion vi devas fari, estas vi 141 00:06:59,730 --> 00:07:03,340 devas ĉesi kion vi faras, krom la stato de tiu kuranta fadeno, kaj 142 00:07:03,340 --> 00:07:05,440 tiam ŝanĝi al iu alia loko. 143 00:07:05,440 --> 00:07:09,420 >> Do ne ĉiu speco de vidi la motivado de kial fadenoj kaj 144 00:07:09,420 --> 00:07:12,030 procezoj povus esti iom dikigitaj? 145 00:07:12,030 --> 00:07:13,840 Kaj ĉu vi havas demandon? 146 00:07:13,840 --> 00:07:14,376 OK. 147 00:07:14,376 --> 00:07:15,070 Cool. 148 00:07:15,070 --> 00:07:18,090 Iu ajn havas demandojn? 149 00:07:18,090 --> 00:07:19,620 OK. 150 00:07:19,620 --> 00:07:26,720 >> Do, se ni prenas retropaŝon por la dua, tie estas iom kiel 151 00:07:26,720 --> 00:07:30,350 observo, ke ni povas fari pri multajn ttt aplikoj. 152 00:07:30,350 --> 00:07:34,810 Kaj tio estas vere ke multe el ili efektive ne faras tion multe utila 153 00:07:34,810 --> 00:07:37,140 labori ene de fadeno. 154 00:07:37,140 --> 00:07:41,170 Do estas iu komencis la P starigis sep cxe cxiuj? 155 00:07:41,170 --> 00:07:45,650 Do ĉu vi volas eble priskribi kelkaj el la partoj? 156 00:07:45,650 --> 00:07:47,850 Ĉu vi prilaboris ensaluto aŭ io simila? 157 00:07:47,850 --> 00:07:49,330 >> Spektantaro: N-ro 158 00:07:49,330 --> 00:07:49,780 >> Kevin Schmid: okej. 159 00:07:49,780 --> 00:07:50,150 Neniam menso. 160 00:07:50,150 --> 00:07:50,900 Pardonon. 161 00:07:50,900 --> 00:07:55,790 Sed esence, en la P aro, vi estas tuj konvinkos multajn ian 162 00:07:55,790 --> 00:07:59,760 pridemandojn al datumbazo por akiri iun informoj de tiu datumbazo. 163 00:07:59,760 --> 00:08:03,330 Kaj kion via kodo tuj estos faranta, kion tio Apache procezo aŭ 164 00:08:03,330 --> 00:08:06,030 ke Apache fadeno tuj estos faranta dum ĝi devas kontakti la 165 00:08:06,030 --> 00:08:08,990 datumbazo estas ĝi estas speco de tuj estos tie sidis kaj ĝi tuj estos 166 00:08:08,990 --> 00:08:12,130 atendante la datumbazo por respondi. 167 00:08:12,130 --> 00:08:16,290 >> Nun, ke eble ne sonas simila al tiu granda estu trakti ĉar la datumbazo estas en via 168 00:08:16,290 --> 00:08:18,240 CS50 aparaton, ĉu ne? 169 00:08:18,240 --> 00:08:22,930 Sed estas iu speco de reto latenta tie ĉar nun la TTT 170 00:08:22,930 --> 00:08:26,830 servilo devas elsendi lian propran peton al la datumbazo por komuniki kun la 171 00:08:26,830 --> 00:08:29,520 datumbazo kaj poste atingi tiun informoj dorso. 172 00:08:29,520 --> 00:08:33,190 Do nun estas kiel bone atendu min, mi estas tuj iros akiri ion el la 173 00:08:33,190 --> 00:08:35,770 datumbazo kaj tiam tie estas multe da atendado pasis. 174 00:08:35,770 --> 00:08:36,870 Ĉu tio havas sencon? 175 00:08:36,870 --> 00:08:38,580 >> Kaj por kelkaj aferoj ne estas tio malbona. 176 00:08:38,580 --> 00:08:41,950 Se ĝi nur havas al, ekzemple, aliro memoro, kiu ne estas kvazaý 177 00:08:41,950 --> 00:08:44,100 horora / Aŭ latenta. 178 00:08:44,100 --> 00:08:47,110 Kaj kiam mi diras, I / O latenta, kia mi estas raportante al Estas kiel iu ajn speco de kiel 179 00:08:47,110 --> 00:08:48,290 input output. 180 00:08:48,290 --> 00:08:52,950 Sed por aliri dosieron sur la disko, kiel se mi volis servi la statika HTML 181 00:08:52,950 --> 00:08:57,850 dosiero kiu estis sur mia retpaĝo aŭ io simila, mi specon de devos 182 00:08:57,850 --> 00:09:02,310 halti por iom, legi, ke la dosiero en de la disko, kaj poste en 183 00:09:02,310 --> 00:09:04,400 ke procezo mi atendas. 184 00:09:04,400 --> 00:09:06,700 Mi ne faras utilan laboron. 185 00:09:06,700 --> 00:09:11,270 >> Ĉi tio ne estas vera de ĉio, sed estas komuna en aplikoj kiel P aro 186 00:09:11,270 --> 00:09:13,960 sep kaj multajn aplikojn ke vi ne 187 00:09:13,960 --> 00:09:15,440 efektive faras multe pensante. 188 00:09:15,440 --> 00:09:19,090 Kaj kiam mi diras pensado, mi volas diri kiel komputila laboro. 189 00:09:19,090 --> 00:09:23,270 Do komputa laboro povus esti io kiel, ekzemple, vi volis 190 00:09:23,270 --> 00:09:26,590 skribi ret-servilo kiu egala komputita la n-a fibonaĉi-nombro. 191 00:09:26,590 --> 00:09:29,300 Tio ne sonas kiel aparte amuza ttt-servilo. 192 00:09:29,300 --> 00:09:34,220 Kiel mi ne atendas ke ejo estos la sekva Facebook, sed tio estas iom 193 00:09:34,220 --> 00:09:35,610 speco de komputa laboro. 194 00:09:35,610 --> 00:09:39,570 >> Kaj vi povas imagi anstataŭante ke kun alia speco de interesaj 195 00:09:39,570 --> 00:09:43,070 komputa laboro. 196 00:09:43,070 --> 00:09:46,050 Imagu ke vi skribis ion kiuj kalkulis la gradoj de 197 00:09:46,050 --> 00:09:49,170 disiĝo inter du personoj aŭ io kiel tio. 198 00:09:49,170 --> 00:09:51,860 Do kiu faras engaĝi ian de kalkulo, ĉu ne? 199 00:09:51,860 --> 00:09:56,630 Kaj eĉ tiam, por fari ke vi ankoraŭ havas fari multajn atendante eble 200 00:09:56,630 --> 00:09:59,550 vi havas demandojn datumbazon rigardi supren kiuj estas amikoj kun kiu aŭ 201 00:09:59,550 --> 00:10:00,600 io kiel tio. 202 00:10:00,600 --> 00:10:03,510 Do tie estas tia nocio de komputa laboro. 203 00:10:03,510 --> 00:10:05,260 Ĉu tio havas sencon? 204 00:10:05,260 --> 00:10:08,258 Ĉu iu havas demandojn? 205 00:10:08,258 --> 00:10:11,960 >> Ho, kaj mi supozas ke mi metis babilejon serviloj tie ĉar babilejon serviloj estas speco de 206 00:10:11,960 --> 00:10:13,240 alia bona ekzemplo de tio. 207 00:10:13,240 --> 00:10:15,250 A babilejon servilo ne devas fari multe pensante. 208 00:10:15,250 --> 00:10:18,350 Ĝi nur devas atendi por homoj sendu mesaĝojn kaj tiam kiam 209 00:10:18,350 --> 00:10:19,800 ili, sendu ilin. 210 00:10:19,800 --> 00:10:21,050 OK? 211 00:10:21,050 --> 00:10:23,410 212 00:10:23,410 --> 00:10:28,180 >> Do apenaŭ al Recap denove, Apache kaj simila retserviloj ŝatas ke forko a 213 00:10:28,180 --> 00:10:31,470 multaj fadenoj kaj procezoj kiuj povas esti speco de malŝparema. 214 00:10:31,470 --> 00:10:37,530 Do mi supozas ke la demando kiu povus veni el kiuj estas ĉu ni bezonas havi 215 00:10:37,530 --> 00:10:39,610 multnombraj fadenoj kaj procezoj? 216 00:10:39,610 --> 00:10:41,890 Kio, se ni nur havis unu? 217 00:10:41,890 --> 00:10:45,710 >> Do ni ia pentri bildon de kio estas tiu devus aspekti. 218 00:10:45,710 --> 00:10:47,810 Do ni uzu nur unu fadenon. 219 00:10:47,810 --> 00:10:48,660 OK? 220 00:10:48,660 --> 00:10:52,790 Do imagu tion kun unu fadeno. 221 00:10:52,790 --> 00:10:56,600 >> Ni supozu ni ne vere faras ke tre utila - kaj kiam mi diras 222 00:10:56,600 --> 00:10:59,450 utila, mi volas diri komputa laboro - 223 00:10:59,450 --> 00:11:01,130 en tiuj multnombraj fadenoj antaŭe. 224 00:11:01,130 --> 00:11:04,180 Do ni ia solidigi ĉio en unu fadeno. 225 00:11:04,180 --> 00:11:07,780 Do kio se ni havis unu fadeno kiu speco de ĵus ĉirkaŭiras en la buklo kaj 226 00:11:07,780 --> 00:11:10,880 senĉese ĉekojn faris ion nova okazos. 227 00:11:10,880 --> 00:11:15,130 Do ekzemple, iu nova okazis povus signifi Mi akiris ion el 228 00:11:15,130 --> 00:11:19,310 la datumbazo, aŭ iu sendis mi novan HTTP request. 229 00:11:19,310 --> 00:11:22,290 Do tiuj estas speco de eventoj kiuj okazas, ĉu ne? 230 00:11:22,290 --> 00:11:26,130 >> Kaj tiam tion, kion mi povas fari, kiam tiuj novaj aĵoj okazas estas en ĉi tiu sama fadeno 231 00:11:26,130 --> 00:11:30,120 de ekzekuto, tio sola fadeno ekzekuto, mi povas nomi iun kodon kiu 232 00:11:30,120 --> 00:11:32,410 devus manipuli tiu aparta afero. 233 00:11:32,410 --> 00:11:36,640 Do ekzemple, se mi havas ion reen el la datumbazo, mi povus kuri mia 234 00:11:36,640 --> 00:11:40,960 malgranda komputa parto de ĝi ke fakte ĝuste pretiĝas la afero 235 00:11:40,960 --> 00:11:42,620 redonu al la uzanto. 236 00:11:42,620 --> 00:11:46,710 Do faras tian sencon? 237 00:11:46,710 --> 00:11:49,940 >> Sed kio vere estas la implicojn de tiu? 238 00:11:49,940 --> 00:11:50,660 Ĝuste? 239 00:11:50,660 --> 00:11:53,730 Ĉar ni skribas multon de kodo ke - 240 00:11:53,730 --> 00:11:58,330 kaj mi simple tuj salti antaŭen en la diapozitivoj, se tio estas en ordo. 241 00:11:58,330 --> 00:12:00,930 Do se vi ne gravas, mi estas nur tuj prenos retropaŝon. 242 00:12:00,930 --> 00:12:03,410 Do ĉi tiu speco de afero estas nomita evento buklo. 243 00:12:03,410 --> 00:12:04,070 OK? 244 00:12:04,070 --> 00:12:07,240 Kaj ĝi estas speco de la bazaj ideo malantaŭ Node.js. 245 00:12:07,240 --> 00:12:11,240 >> Do kio Node.js estas vere faras kiel ttt servilo estas tie estas sola fadeno 246 00:12:11,240 --> 00:12:14,850 ke estas esence irante ĉirkaŭ en buklo kiel dum unu speco de sub 247 00:12:14,850 --> 00:12:18,510 la kapuĉon de Node.js tio konstante checking, ni ricevos novajn aferojn? 248 00:12:18,510 --> 00:12:22,720 Kaj tiam ĝi kuros kodogrupo except ke vi starigis. 249 00:12:22,720 --> 00:12:26,720 Sed bona demando demandi estas, kiel ni povas fari ĉi okazi 250 00:12:26,720 --> 00:12:28,090 kun ekzistantaj aĵoj? 251 00:12:28,090 --> 00:12:32,440 >> Do mi metis linion de C kodo tie esence aspektas kiel ĝi estos malferm 252 00:12:32,440 --> 00:12:33,060 fajliloj, ĉu ne? 253 00:12:33,060 --> 00:12:36,090 Mi Ŝi apenaŭ eliris kun albumo. 254 00:12:36,090 --> 00:12:39,600 Do mi devis malfermi sian novan dosieron. 255 00:12:39,600 --> 00:12:43,810 Do la vojon nian C-kodo por operacii - 256 00:12:43,810 --> 00:12:47,890 kaj mi supozas ke la kialo mi elektis dosierojn estis ĉar ĉi tio estas speco de la mezuro 257 00:12:47,890 --> 00:12:52,000 de la I / O laboro kiun ni faris en C en sento ke ekzistas input output. 258 00:12:52,000 --> 00:12:55,070 Do ni nomas ĉi-kodon faras ĉi f malfermita. 259 00:12:55,070 --> 00:12:59,370 Kaj poste la sekvantan linion de nia programo, ni povas nun laboras kun f. 260 00:12:59,370 --> 00:13:02,710 >> Do tio estus ekzemplo de io ke estas kvazaŭ síncronas aŭ 261 00:13:02,710 --> 00:13:06,850 blokanta ĉar sur tiu unua linio tie ni atendas gxis ni 262 00:13:06,850 --> 00:13:08,110 akiri la dosiero malfermita. 263 00:13:08,110 --> 00:13:12,260 Tial en la dua linio, ni scias, ke ni povas labori kun f, sed tio signifas, ke 264 00:13:12,260 --> 00:13:16,240 ke dua linio ne povas vere kuras ĝis la unua linio estas farita. 265 00:13:16,240 --> 00:13:17,760 Ĉu tio havas sencon? 266 00:13:17,760 --> 00:13:20,890 >> Do tio estus malbona por meti en okazaĵo traktilo. 267 00:13:20,890 --> 00:13:23,920 Kaj la kialo estas, ke tiu speco de atendu, ĉu ne? 268 00:13:23,920 --> 00:13:26,500 Do tiu revenus ni reen al la sama afero. 269 00:13:26,500 --> 00:13:29,470 Kaj nun ni ne eĉ havas la profito de multnombraj fadenoj aŭ 270 00:13:29,470 --> 00:13:32,390 procezoj, ĉar ni ricevis unu fadeno en Node.js. 271 00:13:32,390 --> 00:13:35,496 Ĉu tio havas sencon por ĉiuj? 272 00:13:35,496 --> 00:13:35,990 >> Spektantaro: Atendu. 273 00:13:35,990 --> 00:13:36,980 Do kio estas la anstataŭigo? 274 00:13:36,980 --> 00:13:37,840 >> Kevin Schmid: Oh, tiom jes. 275 00:13:37,840 --> 00:13:39,560 Do mi tuj alvenos al la anstataŭigo. 276 00:13:39,560 --> 00:13:40,430 OK. 277 00:13:40,430 --> 00:13:42,960 Do kio se ni havis ion kiu aspektis kiel tiu? 278 00:13:42,960 --> 00:13:45,730 Do kion se nun mi redaktis f malfermi iom? 279 00:13:45,730 --> 00:13:48,370 Do mi pasante en la sama du argumentoj, kiel antaŭe. 280 00:13:48,370 --> 00:13:52,610 Mi ankoraŭ amas la nova kanto ke ŝi eliris kun. 281 00:13:52,610 --> 00:13:57,260 Sed mi pasante la trian aferon, kiun Estas ĉi variablon nomitan kodo. 282 00:13:57,260 --> 00:14:02,280 >> Sed kia estas kodo reale en tiu kunteksto? 283 00:14:02,280 --> 00:14:05,360 Ĉu ĝi kiel regula C variablo? 284 00:14:05,360 --> 00:14:06,740 Ĝi estas funkcio, ĉu ne? 285 00:14:06,740 --> 00:14:09,450 Kaj tio povas esti iomete stranga ĉar Mi vere ŝatas nun pasi 286 00:14:09,450 --> 00:14:12,320 funkcii en alian funkcion. 287 00:14:12,320 --> 00:14:14,400 >> Do kelkaj aferoj noti pri ĉi tio. 288 00:14:14,400 --> 00:14:17,145 Unu, mi ne vere vokante La kodo de funkcio. 289 00:14:17,145 --> 00:14:20,650 Do vi ne vidas kodo kun la forlasis paren, dekstra paren. 290 00:14:20,650 --> 00:14:23,010 Mi simple pasante en kodo. 291 00:14:23,010 --> 00:14:26,990 Kaj en C, kio tio efektive fari estas doni al mi montrilo por ke efektiva 292 00:14:26,990 --> 00:14:29,740 kodo, kaj tiam tiu povus ruli ĝin. 293 00:14:29,740 --> 00:14:33,350 Sed pensu pri tio, kiel vi estas Ol la kodon por funkcii kiam 294 00:14:33,350 --> 00:14:35,150 ke dosiero estas malfermita. 295 00:14:35,150 --> 00:14:41,430 >> Sed kion tio signifas, ke nun la resto de mia programo, kiu povus fari 296 00:14:41,430 --> 00:14:47,050 aliajn aĵojn, povas daŭre fari aliajn stuff dum ni, ne vere atendas, sed 297 00:14:47,050 --> 00:14:50,890 simple devas en la malantaŭo de nia kapoj kiuj kiam tiu dosiero malfermita, run, ke 298 00:14:50,890 --> 00:14:52,130 kodo ĉe la supro. 299 00:14:52,130 --> 00:14:53,390 Ĉu tio havas sencon? 300 00:14:53,390 --> 00:14:58,060 >> Kaj nun la ideo malantaŭ Node.js estas ke La kodo en la Do stuff kun f 301 00:14:58,060 --> 00:15:04,590 parto estu sufiĉe mallonga kaj simpla kaj rekta kaj ne estos vere 302 00:15:04,590 --> 00:15:06,160 tre kompute intensiva. 303 00:15:06,160 --> 00:15:09,390 Ĝi povas havi por malfermi alian dosieron, sed kiuj devus ankaŭ esti bela rapida 304 00:15:09,390 --> 00:15:14,710 ĉar tio devas simple diri faru alian f malfermi kaj tiam nomas tiun alian kodon. 305 00:15:14,710 --> 00:15:19,100 >> Do simple por esti tute klara, la f malfermu, kiu faras la novan Katy Perry kanto 306 00:15:19,100 --> 00:15:23,060 done mp3, ke tuj bela multe revenu tuj. 307 00:15:23,060 --> 00:15:27,820 Kaj tiam ni povas nur daŭre fari aliaj aferoj pro ĉio, kion nun f 308 00:15:27,820 --> 00:15:33,410 malfermita alvoko ne estas diri baze la suba f malferma kodo malfermi ĉi dosieron 309 00:15:33,410 --> 00:15:36,020 kaj kiam vi finos malfermante ĉi dosiero aŭ kiam vi enretigos ĝin reen, 310 00:15:36,020 --> 00:15:37,480 tiam kuras tiu kodo. 311 00:15:37,480 --> 00:15:39,540 Sed ĝi ne vere kuras tiu kodo. 312 00:15:39,540 --> 00:15:41,815 Kaj vi havus demandon? 313 00:15:41,815 --> 00:15:46,180 >> Spektantaro: Vi ŝajnis implici kelkajn fojoj ke aldonante kompute 314 00:15:46,180 --> 00:15:50,545 intensivaj kodo ia rompi la [Inaudibles] pelita sistemo. 315 00:15:50,545 --> 00:15:51,795 [Inaudibles]? 316 00:15:51,795 --> 00:15:54,450 317 00:15:54,450 --> 00:15:55,290 >> Kevin Schmid: Tio estas bonega demando. 318 00:15:55,290 --> 00:15:59,280 Do mi efektive havas ekzemplon de kiel vi povus integri kompute 319 00:15:59,280 --> 00:16:01,090 intensivaj kodo en iomete. 320 00:16:01,090 --> 00:16:03,620 Do kiam ni atingos la kodo ekzemplojn, Mi estos certa tiri tiu. 321 00:16:03,620 --> 00:16:04,700 Ĉu tio estas OK? 322 00:16:04,700 --> 00:16:05,950 Dankon. 323 00:16:05,950 --> 00:16:07,690 324 00:16:07,690 --> 00:16:08,750 >> Kio estis via nomo? 325 00:16:08,750 --> 00:16:10,620 >> Spektantaro: Aaron. 326 00:16:10,620 --> 00:16:14,830 >> Kevin Schmid: Aaron alportas supren tre bona punkto, kiu estas, ke se mi havis 327 00:16:14,830 --> 00:16:18,560 iuj kompute intensivaj kodo La fari aferojn kun f parton, la ceteraj 328 00:16:18,560 --> 00:16:22,880 mia programo ne povas funkcii kaj ne povas aŭskulti por novaj petoj aux ion ĝis kiam ĉiuj 329 00:16:22,880 --> 00:16:24,270 Okaze estas finita. 330 00:16:24,270 --> 00:16:27,390 Do se mi skribas Nodo kodo ĝenerale se ni ne faru ion kiel Mi iras 331 00:16:27,390 --> 00:16:33,060 sugesti poste kiam ni rigardas la kodo ekzemploj, mi devas esti certa, ke 332 00:16:33,060 --> 00:16:36,060 mia kodo ne ligi tiu evento buklo. 333 00:16:36,060 --> 00:16:38,120 Ĉu tio havas sencon? 334 00:16:38,120 --> 00:16:38,350 OK. 335 00:16:38,350 --> 00:16:40,040 Cool. 336 00:16:40,040 --> 00:16:47,090 >> Do Node.js proponas ĉi kadro, ke vi povas konstrui tiujn evento gvidita 337 00:16:47,090 --> 00:16:48,210 servilojn kun. 338 00:16:48,210 --> 00:16:53,460 Do ĝi havas tiuj tipo de asincrónico ne-blokado / el bibliotekoj, dum 339 00:16:53,460 --> 00:16:56,800 la normo C bibliotekojn kiujn ni vizitis laborante kun, kiel se vi nur 340 00:16:56,800 --> 00:16:59,500 uzi ilin en la sama vojo, kiun ni estis uzante ilin kun f malfermas kaj 341 00:16:59,500 --> 00:17:03,000 stuff, tiuj blokas ĉar vi fakte devas atendi 342 00:17:03,000 --> 00:17:04,470 ke dosieron por malfermi. 343 00:17:04,470 --> 00:17:09,290 >> Sed Node.js donas al vi, ke kaj esence ligas al Google-V8 344 00:17:09,290 --> 00:17:14,030 Javascript motoro kiu estas la kialo ke Chrome estas tiel rapida ĉe prilaborado 345 00:17:14,030 --> 00:17:17,040 Javascript ĉar ĝi havas ĉi V8 motoro. 346 00:17:17,040 --> 00:17:22,460 Do mi scias, ke sonas kiel unu el tiuj, WWDC developer konferencoj afero 347 00:17:22,460 --> 00:17:25,390 kie oni simple jxeti faskon de la letero nombro aferojn por procesoroj 348 00:17:25,390 --> 00:17:26,910 kaj tion diras estas tiel malvarmeta. 349 00:17:26,910 --> 00:17:34,200 Sed ĝi estas malvarmeta, ke ili faris ĉar JavaScript - 350 00:17:34,200 --> 00:17:37,010 aŭ eble se vi ne estas familiara kun JavaScript ankoraŭ ĉar ni ne havis 351 00:17:37,010 --> 00:17:38,180 la prelegoj pri ĝi - 352 00:17:38,180 --> 00:17:40,770 sed JavaScript estas interpretita lingvo. 353 00:17:40,770 --> 00:17:41,970 >> Kaj tio estas grava punkto tro. 354 00:17:41,970 --> 00:17:45,790 Do estas grava por nia retejo serviloj por esti rapida, ĉu ne? 355 00:17:45,790 --> 00:17:49,970 Kaj se ni nur kurante JavaScript kodo kiu interpretis kun nur 356 00:17:49,970 --> 00:17:52,130 iu malnova interpretisto povus esti malrapida. 357 00:17:52,130 --> 00:17:55,980 Do Nodo profitoj de havanta ĉi super fast V8 interpretisto. 358 00:17:55,980 --> 00:17:59,580 Kaj mi ne scias se ili nomis ĝin ĉar la V8 vangofrapo en la frunto 359 00:17:59,580 --> 00:18:01,110 aĵo, sed en ordo. 360 00:18:01,110 --> 00:18:07,070 >> Do mi preparis kelkajn ekzemplojn en ĉi tiu retadreso. 361 00:18:07,070 --> 00:18:10,490 Post la seminario, mi ian tuj paroli pri tio, kiel vi povas akiri Nodo aro 362 00:18:10,490 --> 00:18:13,570 supren, sed nuntempe, mi nur ia volas marŝi tra iu kodo ekzemploj. 363 00:18:13,570 --> 00:18:17,250 Do se vi volas sekvi kune, ĉiuj fontkodo estas havebla tie. 364 00:18:17,250 --> 00:18:18,720 OK? 365 00:18:18,720 --> 00:18:22,280 >> Do mi devos forlasi ĉi retadreso ĉe iom. 366 00:18:22,280 --> 00:18:24,440 Kaj tiam mi simple tuj ŝalti en la terminalo. 367 00:18:24,440 --> 00:18:29,670 368 00:18:29,670 --> 00:18:34,400 Ĉu ĉiuj bone kun ĉi retadreso? 369 00:18:34,400 --> 00:18:37,990 Do mi tuj ŝanĝas super al mia fina tie. 370 00:18:37,990 --> 00:18:42,030 >> Do jen la kodo kiun Mi havas hodiaŭ. 371 00:18:42,030 --> 00:18:43,960 Kial ne ni komencos kun simpler.js dosieron? 372 00:18:43,960 --> 00:18:49,110 373 00:18:49,110 --> 00:18:52,100 La alia afero estas ke ĉio ĉi kodo tuj estos skribita en 374 00:18:52,100 --> 00:18:56,660 Javascript kiun vi povas nek povas ne esti familiara kun. 375 00:18:56,660 --> 00:19:00,170 Mi supozas paron aferoj estas, ke multo de JavaScript kodo estas la speco de 376 00:19:00,170 --> 00:19:04,000 sintakso kaj strukturo estas tre simila al C, do vi povas speco de repreni ĝin kiel 377 00:19:04,000 --> 00:19:05,020 vi iru kune. 378 00:19:05,020 --> 00:19:08,750 Mi provis skribi multon de la komencante kodon por tiu en maniero kiu estas 379 00:19:08,750 --> 00:19:11,230 simila al C tia ke ĝi estas iom pli legebla. 380 00:19:11,230 --> 00:19:15,980 Sed kiel ni progresos, mi estos pruvante kelkaj el la aldona 381 00:19:15,980 --> 00:19:18,980 trajtojn de JavaScript ke estas speco de malvarmeta. 382 00:19:18,980 --> 00:19:21,510 >> Sed ni rigardu tiun specimenon programo. 383 00:19:21,510 --> 00:19:24,820 Mi supozas ke ĉiu'S detrancxis tie. 384 00:19:24,820 --> 00:19:28,500 Mi simple tuj ripari ke reala rapida, se tio estas OK aŭ ne. 385 00:19:28,500 --> 00:19:31,400 Mi ne scias kio estas tiu tuj faros. 386 00:19:31,400 --> 00:19:34,660 Ĉu tio estas iom pli bona? 387 00:19:34,660 --> 00:19:36,510 Ĉu vi povas vidi la var kaj aĵoj? 388 00:19:36,510 --> 00:19:39,320 OK. 389 00:19:39,320 --> 00:19:44,120 >> Do la unua linio estas kiel la Javascript versio de variablo 390 00:19:44,120 --> 00:19:44,800 deklaro. 391 00:19:44,800 --> 00:19:49,870 Do nur por reliefigi kia farus aspektas kiel en C. Do tiu estas nur kvazaŭ 392 00:19:49,870 --> 00:19:52,620 mi jene indekso egalas tri aŭ io kiel tio. 393 00:19:52,620 --> 00:19:55,740 Do mi ne specifi la tipon. 394 00:19:55,740 --> 00:20:00,780 Javascript ja havas tipojn, sed estas tre dinamike tajpitaj en naturo, do 395 00:20:00,780 --> 00:20:02,580 ne havigis ia ajn tipo sur ĝi. 396 00:20:02,580 --> 00:20:03,670 Do ĝi nur havas var. 397 00:20:03,670 --> 00:20:05,320 Tio estas kiel ŝanĝiĝema. 398 00:20:05,320 --> 00:20:05,920 OK? 399 00:20:05,920 --> 00:20:08,340 >> Kaj mi nomante tiun variablon HTTP. 400 00:20:08,340 --> 00:20:12,480 Kaj sur mia dekstra flanko, mi havas la esprimon, kiun mi volas meti en HTTP. 401 00:20:12,480 --> 00:20:14,960 Kaj tion diras postulas HTTP. 402 00:20:14,960 --> 00:20:18,500 Do tiu estas speco de simila inkludi. 403 00:20:18,500 --> 00:20:22,940 Ĝi estas iom pli kiel potenca ol inkluzivi en la senco ke inkluzivi 404 00:20:22,940 --> 00:20:26,100 estus simple kopii kaj almeti la kaplinio dosiero por la funkcio prototipoj aŭ 405 00:20:26,100 --> 00:20:27,930 kio ajn kun la tipo difinoj. 406 00:20:27,930 --> 00:20:30,590 Sed postuli estas reale irante akiri al ni la kodon. 407 00:20:30,590 --> 00:20:33,280 >> Do vi povas pensi pri tio kiel importante iu kodo. 408 00:20:33,280 --> 00:20:37,960 Do ie en la Node.js modulo sistemon aŭ kio ajn, ili ĉiuj havas ĉi 409 00:20:37,960 --> 00:20:40,790 HTTP-servilo kodo do mi simple ricevado ĝin por miaj propraj 410 00:20:40,790 --> 00:20:43,130 persona uzo en tiu programo. 411 00:20:43,130 --> 00:20:44,260 OK? 412 00:20:44,260 --> 00:20:46,930 >> Tial do mi havas ĉi funkcio ke mi skribis. 413 00:20:46,930 --> 00:20:50,330 Kaj rimarkos mi ne devos specifi la reveno tipo aŭ la tipon de la 414 00:20:50,330 --> 00:20:51,140 argumentoj denove. 415 00:20:51,140 --> 00:20:54,440 Do ia loose tajpitaj en tian senton. 416 00:20:54,440 --> 00:20:57,290 Du argumentoj kiuj portas en, peto kaj respondo. 417 00:20:57,290 --> 00:21:02,080 Do tio estas koncepte ia kiel familiara de la bildo kiun ni havis 418 00:21:02,080 --> 00:21:05,280 sur la ekrano antaŭe pro ni atingos ĉi tiun peton, ke ni 419 00:21:05,280 --> 00:21:06,410 havas de la uzanto. 420 00:21:06,410 --> 00:21:09,170 Kaj tiam ni havi respondon, ke Ni povas skribi aferojn. 421 00:21:09,170 --> 00:21:15,060 >> Do la unua linio de tiu faras res.writeHead 200 kaj tiam ĉi 422 00:21:15,060 --> 00:21:17,070 enhavspeco teksto ebenaĵo. 423 00:21:17,070 --> 00:21:19,300 Do ni Peco ĉi krom iom. 424 00:21:19,300 --> 00:21:22,340 Do ni ĝuste enfokusigi res.write por iom. 425 00:21:22,340 --> 00:21:28,420 Do registran estas esence, kaj skribi la kapon, estas nur manierojn ia skribas el 426 00:21:28,420 --> 00:21:29,960 aĵojn al la respondo. 427 00:21:29,960 --> 00:21:30,770 OK? 428 00:21:30,770 --> 00:21:36,230 Do skribi la kapon, se iu memoras de la HTTP-konferenco, do you guys 429 00:21:36,230 --> 00:21:39,940 memori titolaj ĉe la supro de la HTTP-afero? 430 00:21:39,940 --> 00:21:43,580 Do kial mi ne nur demo titolaj reala rapida. 431 00:21:43,580 --> 00:21:44,640 Ĉu tio povus helpi? 432 00:21:44,640 --> 00:21:45,500 Aŭ ĉu ni nur speco de - 433 00:21:45,500 --> 00:21:46,070 OK. 434 00:21:46,070 --> 00:21:46,740 Certe. 435 00:21:46,740 --> 00:21:52,340 >> Do, kiam via retumilo iras al google.com aŭ io kiel tio, 436 00:21:52,340 --> 00:21:54,250 tie fakte iom pli - 437 00:21:54,250 --> 00:21:55,380 ĉi tio estas kiel sekretan - 438 00:21:55,380 --> 00:21:58,340 ekzistas kiel iom pli da informoj kiu venas tra la pipon ol nur 439 00:21:58,340 --> 00:22:00,180 la eta serĉo, kaj ĉio. 440 00:22:00,180 --> 00:22:03,550 Do por montri al vi ĉi tion, mi tuj uzi programon nomitan Curl. 441 00:22:03,550 --> 00:22:04,260 OK? 442 00:22:04,260 --> 00:22:08,020 Do tiu estas io kion vi povas kuri je Mac OSX komandlinio aŭ en la 443 00:22:08,020 --> 00:22:09,830 aparato aŭ kio ajn. 444 00:22:09,830 --> 00:22:17,050 Kaj tial, se mi ne frizas HTTP google.com, Mi iras vidi la HTML. 445 00:22:17,050 --> 00:22:21,230 Kaj ĉi tio estas, juste, nur la HTML kiu ia diras al vi 446 00:22:21,230 --> 00:22:24,695 redirekti al www se via retumilo ne aŭtomate tenantaj 447 00:22:24,695 --> 00:22:27,110 alidirekton. 448 00:22:27,110 --> 00:22:33,390 >> Do tiu estas simple la HTML, sed mi aldoni frizo tiu streketo mi flagon. 449 00:22:33,390 --> 00:22:33,600 OK? 450 00:22:33,600 --> 00:22:35,600 Kaj tion tuj montros mi la titolaj. 451 00:22:35,600 --> 00:22:40,640 Do tiu estas ankaŭ informo kiu venas tra kiam mi ricevas tiun respondon. 452 00:22:40,640 --> 00:22:41,260 OK? 453 00:22:41,260 --> 00:22:45,320 >> Do, je la supro, vi vidas tiun HTTP 301 movi konstante. 454 00:22:45,320 --> 00:22:49,470 Kaj jen estas ia grava ĉar tiu rilatas al la statuso kodo. 455 00:22:49,470 --> 00:22:53,750 Do la 301 ĉi tie estas la statuso kodo, kio estas esence nur entjero 456 00:22:53,750 --> 00:22:57,750 kiu rakontas la foliumilo aŭ kiu ajn estas legi ĉi tion, se vi pretendos ke 457 00:22:57,750 --> 00:23:01,460 vi estas legilo kaj vi nun vidas tion, esence nun se vi rigardas 458 00:23:01,460 --> 00:23:04,960 ke kaj vi vidas 301, vi scias ke mi havas fari ion specialan bazita sur 459 00:23:04,960 --> 00:23:08,810 301, aŭ io speciala okazis bazita sur la 301. 460 00:23:08,810 --> 00:23:12,640 Do ĝi diras kopiis konstante. 461 00:23:12,640 --> 00:23:17,700 >> Kaj tiam, esence, ni havi faskon da ŝlosilaj valoro paroj. 462 00:23:17,700 --> 00:23:22,100 Do ni ricevas la situo Estas www.google.com. 463 00:23:22,100 --> 00:23:25,190 Kaj tiam speco de ĉiuj ĉi aliajn necesajxojn, sed esence, kion la situo estas 464 00:23:25,190 --> 00:23:29,662 proverbo estas la nova situo Estas ĉe www.google.com. 465 00:23:29,662 --> 00:23:33,800 Do nun, se vi iros al google.com, vi ia vidi la retumilo speco de blink 466 00:23:33,800 --> 00:23:38,770 por dua kaj tiam ridirektanta vin dekstra reen al www.google.com. 467 00:23:38,770 --> 00:23:41,840 Do la respondoj povas enhavi tiuj titolaj. 468 00:23:41,840 --> 00:23:43,330 >> Kaj kelkaj aliaj aferoj atentigi. 469 00:23:43,330 --> 00:23:46,890 Do diru ni estis vere sukcesa en viziti retpaĝon. 470 00:23:46,890 --> 00:23:49,040 Do lasu min iri al - 471 00:23:49,040 --> 00:23:51,080 kio estas bona retejo? 472 00:23:51,080 --> 00:23:53,285 Mi malbonas en pensado de bona retejoj surloke. 473 00:23:53,285 --> 00:23:53,640 >> Spektantaro: Vikipedio. 474 00:23:53,640 --> 00:23:54,160 >> Kevin Schmid: okej. 475 00:23:54,160 --> 00:23:56,040 Ni faru Vikipedio. 476 00:23:56,040 --> 00:23:58,680 Do ĉi tie mi estis movita. 477 00:23:58,680 --> 00:23:59,240 Ho atendu. 478 00:23:59,240 --> 00:24:00,160 Mi estis? 479 00:24:00,160 --> 00:24:00,890 Jes, mi estis. 480 00:24:00,890 --> 00:24:01,100 OK. 481 00:24:01,100 --> 00:24:03,005 Do mi devas fari www. 482 00:24:03,005 --> 00:24:06,006 Do mi faros www. 483 00:24:06,006 --> 00:24:09,680 Kaj kiel vi povas vidi, jen ĉiuj la HTML ke la foliumilo devus procesi 484 00:24:09,680 --> 00:24:10,910 por Vikipedio. 485 00:24:10,910 --> 00:24:14,055 >> Sed se mi gardas rulumado supren tien, kion Mi vidos supre - 486 00:24:14,055 --> 00:24:17,800 wow, tie estas multa HTML en Vikipedio - 487 00:24:17,800 --> 00:24:22,550 sed kion mi povas vidi ĉe la supro tie estas ĉi 200 statuso kodo kiel kontraŭa al la 488 00:24:22,550 --> 00:24:24,570 301, kiun mi vidis antaŭe. 489 00:24:24,570 --> 00:24:27,100 Kaj rimarki ke ĝi havas belan amika OK apud ĝi. 490 00:24:27,100 --> 00:24:29,470 Do tiu estas kiel la bona statuso kodo. 491 00:24:29,470 --> 00:24:31,160 >> Ĉu tio 200 numeron aspektas familiara? 492 00:24:31,160 --> 00:24:34,120 493 00:24:34,120 --> 00:24:39,880 Jes, ĉar kiam mi faris simpler.js, Mi verkis 200 tie. 494 00:24:39,880 --> 00:24:43,290 Do tio estas esence dirante diri la retumilo aŭ kiu ajn provas atingi 495 00:24:43,290 --> 00:24:45,440 tio, ke ili sukcesis. 496 00:24:45,440 --> 00:24:49,040 Aŭ tian kiel ni estis sukcesa tro. 497 00:24:49,040 --> 00:24:54,320 >> Kaj tie estas tio ia speciala sintakso en JavaScript por deklari 498 00:24:54,320 --> 00:24:59,870 Mapo de ĉi tiuj klavoj kiel enhavspeco kaj tiujn valorojn kiel teksto klare. 499 00:24:59,870 --> 00:25:03,780 Do, se vi rigardas la respondo, ke ni reunuiĝis el Vikipedia antaŭe, - 500 00:25:03,780 --> 00:25:06,200 Mi tuj provos rulumu ĝis iom pli rapide - 501 00:25:06,200 --> 00:25:09,900 vi havas ĉi tiujn klavojn kiel servilo kaj tiujn valorojn Apache. 502 00:25:09,900 --> 00:25:12,120 Do vi havas klavojn kaj valorojn. 503 00:25:12,120 --> 00:25:15,930 Kaj vi povas indiki tiun en Node kion sendi al dorso. 504 00:25:15,930 --> 00:25:19,380 >> Do tiu estas fakte speco de, en iuj manieroj, kaj en iuj formoj ne estas 505 00:25:19,380 --> 00:25:23,170 vere, sed estas iom malalta nivelo ol la PHP-kodon kiu vi povus esti 506 00:25:23,170 --> 00:25:26,980 skribi por P starigis sep ĉar PHP kaj Apache ia prizorgi iun 507 00:25:26,980 --> 00:25:28,150 pri tiuj aferoj por vi. 508 00:25:28,150 --> 00:25:32,520 En PHP, vi povas nuligi la defaŭltan konduto skribante vian propran titolaj. 509 00:25:32,520 --> 00:25:35,520 Sed por la celoj de cxi tiu, ni preni skribi niajn proprajn kapojn de dokumentoj. 510 00:25:35,520 --> 00:25:38,210 511 00:25:38,210 --> 00:25:41,105 >> Do ne tiu linio havas sencon ĉiuj, la registran kapo-lineo? 512 00:25:41,105 --> 00:25:41,380 OK. 513 00:25:41,380 --> 00:25:42,280 Awesome. 514 00:25:42,280 --> 00:25:45,870 >> Tial do, kion mi faras estas mi finos la respondo dirante saluton mondo. 515 00:25:45,870 --> 00:25:47,040 OK. 516 00:25:47,040 --> 00:25:49,920 Sed tio estas nur funkcio vokis peto traktilo. 517 00:25:49,920 --> 00:25:53,510 Do nun mi vere devas speco de fari ion kun tiu funkcio, ĉu ne? 518 00:25:53,510 --> 00:25:59,170 >> Do jen, kion mi faras estas tie estas tiu linio, kiun faras var servilo egaluloj 519 00:25:59,170 --> 00:26:03,530 HTTP.create servilon, kaj poste mi Iam en la peto traktilo. 520 00:26:03,530 --> 00:26:06,080 Do tiu estas speco de la Nodo maniero de krei servilon. 521 00:26:06,080 --> 00:26:08,790 Kaj rimarki ke mi pasante en la peto traktilo. 522 00:26:08,790 --> 00:26:12,290 Do tiu estas diranta la createServer funkcio, kiun mi volas ke vi faru al mi 523 00:26:12,290 --> 00:26:16,270 servilo, kaj kiam tiu servilo ricevas respondon, mi bezonas vin nomi ĉi 524 00:26:16,270 --> 00:26:18,680 peti traktilo funkcio. 525 00:26:18,680 --> 00:26:18,990 OK? 526 00:26:18,990 --> 00:26:22,290 >> Do tiu lineo pretty much finas tuj. 527 00:26:22,290 --> 00:26:28,780 Do la var-servilo linio estas farita dekstra Post kiam vi faros, ke bela multe. 528 00:26:28,780 --> 00:26:31,770 Mi volas diri, ke ĝi havas starigi kelkajn internajn ŝtata scii, ke vi devus 529 00:26:31,770 --> 00:26:35,400 nomas tiun peton traktilo funkcion, sed ĝi ne estas tuj sidi tie kaj 530 00:26:35,400 --> 00:26:37,730 diru havas la uzanto sendis mi petis ankoraŭ? 531 00:26:37,730 --> 00:26:39,270 Ĉu la uzanto sendis al mi peton ankoraŭ? 532 00:26:39,270 --> 00:26:40,780 Do tio ne blokas. 533 00:26:40,780 --> 00:26:41,650 OK? 534 00:26:41,650 --> 00:26:46,120 >> Do kio estas tiu faros estas ĝi esence nun stokas montrilon al tiu kodo, 535 00:26:46,120 --> 00:26:49,670 tiun peton traktilo funkcio, kaj poste rulos tiun kodo kiam iu 536 00:26:49,670 --> 00:26:52,170 faras peton. 537 00:26:52,170 --> 00:26:54,120 Kaj tiam ni faros server.listen. 538 00:26:54,120 --> 00:26:56,950 539 00:26:56,950 --> 00:26:59,960 >> La 1337 tie estas sufiĉe arbitra. 540 00:26:59,960 --> 00:27:02,285 Mi havis nenian apartan motivon por pluki tiu numero. 541 00:27:02,285 --> 00:27:03,860 Ĝi estis tute hazarda. 542 00:27:03,860 --> 00:27:07,010 Sed tio nur precizigas la haveno. 543 00:27:07,010 --> 00:27:10,640 Do plej retserviloj vi vidos, ke ili uzi haveno 80 ĉar tio estas afabla 544 00:27:10,640 --> 00:27:11,810 de kiel la konvencio. 545 00:27:11,810 --> 00:27:16,170 Do, se mi iras al iu kiel, Mi ne scias, Wikipedia.org, 546 00:27:16,170 --> 00:27:17,700 kaj Mi metis dupunkto 8 - 547 00:27:17,700 --> 00:27:18,610 Oh wow, vi ne povas vidi tion. 548 00:27:18,610 --> 00:27:19,370 Mi bedaŭras. 549 00:27:19,370 --> 00:27:21,820 Sed se mi faras Vikipedio - 550 00:27:21,820 --> 00:27:24,810 Mi skribos ĝin ĉi tie nur por ke ĝi estas klara en la ĉambro. 551 00:27:24,810 --> 00:27:29,150 Sed se mi prenas ĉi enen retumilo kun dupunkto 80, kiu specifas iri 552 00:27:29,150 --> 00:27:31,430 Wikipedia.org ĉe haveno 80. 553 00:27:31,430 --> 00:27:36,200 Do ĝi estas kvazaŭ kiel Usono havas multnombraj havenoj kiel, kie vi povas sxipo 554 00:27:36,200 --> 00:27:37,440 tion al ia. 555 00:27:37,440 --> 00:27:40,730 Do gxi estas kiel iri al tiu aparta meti sur tiu ĉi servilo. 556 00:27:40,730 --> 00:27:40,990 OK. 557 00:27:40,990 --> 00:27:45,730 >> Do mi simple elektis 1337. 558 00:27:45,730 --> 00:27:47,910 Tie estas tuta gamo de nombroj ke vi povas elekti. 559 00:27:47,910 --> 00:27:50,390 Tio ne estis plene speciala. 560 00:27:50,390 --> 00:27:54,560 >> Sed kion mi faros nun Estas Mi tuj kuros Nodo. 561 00:27:54,560 --> 00:27:59,730 Lasu min reale eniri ke paro liniojn malsupren por ke vi povu vidi ĝin. 562 00:27:59,730 --> 00:28:03,130 Mi tuj faros Nodo, kaj mi estas tuj kuru simpler.js. 563 00:28:03,130 --> 00:28:06,880 Kaj ni parolos pri kiel akiri Nodo starigis en iomete. 564 00:28:06,880 --> 00:28:09,350 Sed nun ĝi estas ĵus kuras la servilo. 565 00:28:09,350 --> 00:28:14,360 >> Do unu afero ni povos provi kion may ne esti tiu ekscita estas ni povas reale 566 00:28:14,360 --> 00:28:16,300 provu aliri lin en Curl. 567 00:28:16,300 --> 00:28:20,680 Do mi povas fari Curl, kaj mia Maŝino estas loka gastiganto. 568 00:28:20,680 --> 00:28:24,600 Vi ankaux vidos ĉi skribitaj kiel ĉi foje. 569 00:28:24,600 --> 00:28:29,810 Loka gastiganto kaj 127.0.0.1 estas afabla de kiel via persona komputilo. 570 00:28:29,810 --> 00:28:33,180 Do ĝi estas kiel paroli al via propra komputilo. 571 00:28:33,180 --> 00:28:33,760 OK. 572 00:28:33,760 --> 00:28:36,030 >> Kaj tiam mi povas diri 1337. 573 00:28:36,030 --> 00:28:39,630 Do se mi kuros ĉi linio de kodo, diras saluton mondo. 574 00:28:39,630 --> 00:28:44,050 Kaj se mi volis vidi, ke aĵoj kiuj havis enhavspeco teksto ebenaĵo aŭ 575 00:28:44,050 --> 00:28:46,560 kion ajn, mi povus eĉ meti ĉi tien. 576 00:28:46,560 --> 00:28:48,810 Kaj rimarki ke ĝi dirus okej. 577 00:28:48,810 --> 00:28:50,810 Kaj mi ja havas tekston ebenaĵon. 578 00:28:50,810 --> 00:28:53,140 Kaj tiam tie estas speco de tiu tuta aliaj stuff ke Nodo aldonos en 579 00:28:53,140 --> 00:28:54,440 tie por mi. 580 00:28:54,440 --> 00:28:55,700 Tio ne estas super grava. 581 00:28:55,700 --> 00:28:58,230 >> Mi volas diri, ekzistas ia teknika aspektoj de ĉe kiuj estas afabla 582 00:28:58,230 --> 00:29:02,280 de cool paroli, sed nur por montri vi, mi ankaŭ havas la povon por 583 00:29:02,280 --> 00:29:03,070 ŝanĝi tiujn ĉirkaŭe. 584 00:29:03,070 --> 00:29:06,280 Do mi povas simple aldoni faskon da ŝtofo simila al tiu. 585 00:29:06,280 --> 00:29:11,780 Kaj tiam nun, se mi aspektas en mia eligo, estos tiel. 586 00:29:11,780 --> 00:29:19,740 Do tiuj titolaj signifas certaj aferoj por retumiloj kaj aferojn tiel. 587 00:29:19,740 --> 00:29:23,040 >> Kaj titolaj povas esence rakonti retumilo kiel respondi al io. 588 00:29:23,040 --> 00:29:26,280 Se vi iam aŭdis pri kuketojn antaŭ, aŭ, se vi iam estis tedita 589 00:29:26,280 --> 00:29:29,330 per retpaĝo opcio kuketojn, aŭ ŝaltis kuketon bloko aŭ 590 00:29:29,330 --> 00:29:30,320 io kiel tio. 591 00:29:30,320 --> 00:29:33,040 Vi povas fakte starigis kuketojn en tiuj titolaj. 592 00:29:33,040 --> 00:29:36,990 Do ili rakontu retumilo kiel konduto en iuj kazoj. 593 00:29:36,990 --> 00:29:37,750 OK. 594 00:29:37,750 --> 00:29:40,310 >> Por ke estis simpler.js. 595 00:29:40,310 --> 00:29:42,780 Ĉu iu havas demandojn sur tiu fontkodon dosiero? 596 00:29:42,780 --> 00:29:45,420 597 00:29:45,420 --> 00:29:45,610 OK. 598 00:29:45,610 --> 00:29:46,490 Cool. 599 00:29:46,490 --> 00:29:50,780 >> Do ni forigu la r de tiu kaj rigardi simple.js. 600 00:29:50,780 --> 00:29:53,010 Do tiu estas preskaux la sama programo. 601 00:29:53,010 --> 00:29:56,030 Mi nur skribis ĝin iom alimaniere ĉar mi volis ordigi de kolorigo 602 00:29:56,030 --> 00:29:57,850 iujn trajtojn de JavaScript. 603 00:29:57,850 --> 00:30:03,880 >> Do rimarkos, ke la peto traktilo funkcio tute malaperis. 604 00:30:03,880 --> 00:30:05,800 Ho Yep, ĉu vi havas demandon? 605 00:30:05,800 --> 00:30:08,200 >> Spektantaro: Jes, la argumentoj kiuj preterpasis tiun 606 00:30:08,200 --> 00:30:10,120 funkcio, kio ili estas? 607 00:30:10,120 --> 00:30:12,050 >> Kevin Schmid: Do tiuj estas Javascript celoj. 608 00:30:12,050 --> 00:30:15,230 En la Node.js dokumentado, ĝi esence diras kion metodoj estas 609 00:30:15,230 --> 00:30:15,910 disponebla sur ili. 610 00:30:15,910 --> 00:30:19,602 Ni nur hazarde havas la aliron al ĉi metodo nomata registran kapon kaj fino 611 00:30:19,602 --> 00:30:20,730 kaj da tio. 612 00:30:20,730 --> 00:30:22,590 Sed estas tuta aro da pli metodoj. 613 00:30:22,590 --> 00:30:27,670 >> Kaj ekzemple, kiel unu el ili precipe sur rec, vi povas fari 614 00:30:27,670 --> 00:30:34,540 iu kiel rec.method kiuj volas diru al vi, ĉu ĝi estas http akiri aŭ 615 00:30:34,540 --> 00:30:36,780 HTTP post petojn kaj aferojn tiel. 616 00:30:36,780 --> 00:30:39,100 Do tie estas ĉiaj malsamajn posedaĵoj, sed ili estas ambaŭ 617 00:30:39,100 --> 00:30:42,560 Javascript objektoj, kaj ili havas nur funkcioj alfiksis al ili, ke vi 618 00:30:42,560 --> 00:30:43,850 povas skribi aferojn. 619 00:30:43,850 --> 00:30:45,520 OK? 620 00:30:45,520 --> 00:30:49,030 >> Do rimarkos ke peto traktilo estas plene malaperis. 621 00:30:49,030 --> 00:30:52,650 Sed la kodo kiun mi havis en peto traktilo estas ankoraŭ tie. 622 00:30:52,650 --> 00:30:56,520 Mi ankoraŭ havas ĉi res.writeHead kaj mi ankoraŭ havas ĉi res.end. 623 00:30:56,520 --> 00:31:00,270 Kaj kion tio estas ekzemplo de en Javascript estas jena ideo de 624 00:31:00,270 --> 00:31:01,460 anonima funkcio. 625 00:31:01,460 --> 00:31:04,180 kaj anoniman estas kiel decan nomon por ĝi, ĉar ĝi laŭvorte ne 626 00:31:04,180 --> 00:31:05,180 havi nomon. 627 00:31:05,180 --> 00:31:07,900 Mankas funkcio peto traktilo en tie. 628 00:31:07,900 --> 00:31:10,110 >> Ne havas nomon, sed ĝi ankoraŭ Estas prenante argumento. 629 00:31:10,110 --> 00:31:12,250 Do mi ankoraŭ havas rec kaj rezolucio. 630 00:31:12,250 --> 00:31:16,180 Kaj mi ankoraŭ havas la kodon. 631 00:31:16,180 --> 00:31:18,930 Ĉi tiu estas perfekte bone Javascript-kodo. 632 00:31:18,930 --> 00:31:22,540 Do mi povas deklari funkcio sen eksplicite doni al li nomon. 633 00:31:22,540 --> 00:31:24,250 Ĝi estas iom konfuza en komenco. 634 00:31:24,250 --> 00:31:26,230 Tie estas kelkaj kiel utila aferoj ke vi povas fari kun 635 00:31:26,230 --> 00:31:28,450 tiuj anonima funkcioj. 636 00:31:28,450 --> 00:31:32,100 Ĉu iu havas demandojn pri tio, aŭ ĉu OK simple, por nun, 637 00:31:32,100 --> 00:31:34,130 speco de simple akcepti ke ĝi faros la samon? 638 00:31:34,130 --> 00:31:36,700 639 00:31:36,700 --> 00:31:37,125 Yep? 640 00:31:37,125 --> 00:31:38,680 >> Spektantaro: Chu funkcioj unua klaso en JavaScript? 641 00:31:38,680 --> 00:31:41,020 >> Kevin Schmid: Ili estas unue klaso en JavaScript. 642 00:31:41,020 --> 00:31:45,490 Kaj ĝuste scias ke ĉi tiuj konceptoj pri pasante en anoniman funkcion kiel 643 00:31:45,490 --> 00:31:49,600 tiu aplikas al la Javascript ke vi povas skribi en via fina projekto por 644 00:31:49,600 --> 00:31:51,260 la retumilo tro. 645 00:31:51,260 --> 00:31:56,700 Do ekzemple, en la Javascript en via retumilo, ĝi estas ankaŭ iom okazaĵo 646 00:31:56,700 --> 00:32:00,680 dispelitaj en la senco ke kion vi havi estas kiam la uzanto alklakas ĉi 647 00:32:00,680 --> 00:32:02,640 butono, mi volas ke vi kuras kun tiu kodo. 648 00:32:02,640 --> 00:32:07,070 >> Do ĝi estas la sama speco de ideoj de la kliento flanko kiam musklako aŭ ili 649 00:32:07,070 --> 00:32:09,870 muson super iun bildon sur via TTT-paĝo, kuri kun tiu kodo. 650 00:32:09,870 --> 00:32:11,350 Kiu povas turni sin al serviloj. 651 00:32:11,350 --> 00:32:16,380 Do tio estas speco de kiel la ekscita tial JavaScript estas vere 652 00:32:16,380 --> 00:32:19,810 taŭga aŭ kelkaj homoj kredas ke estas taŭga lingvo por tiu speco de 653 00:32:19,810 --> 00:32:22,530 okazaĵo ŝoforo servilon ĉar vi havas tiuj anonima funkcioj. 654 00:32:22,530 --> 00:32:26,150 Vi havas la tuta ideo de ĉi asincrónico kodo. 655 00:32:26,150 --> 00:32:27,060 OK. 656 00:32:27,060 --> 00:32:30,360 Iu ajn havas demandojn? 657 00:32:30,360 --> 00:32:30,470 >> OK. 658 00:32:30,470 --> 00:32:33,440 Por ke estis simple.js. 659 00:32:33,440 --> 00:32:38,070 Do ni rigardu pli aŭ paro pli. 660 00:32:38,070 --> 00:32:42,040 Do tiu estas sleep.js. 661 00:32:42,040 --> 00:32:47,160 Do estas iu familiara kun la C funkcio dormo? 662 00:32:47,160 --> 00:32:50,936 From eble unu el la fruaj prelegoj aŭ io simila? 663 00:32:50,936 --> 00:32:54,650 >> Do esence vi povas pasi en mi pensas numeron de duaj aŭ se vi uzas U 664 00:32:54,650 --> 00:32:57,080 dormi kelkaj milisekundoj aŭ nanosegundos. 665 00:32:57,080 --> 00:33:00,450 Kaj esence la programo estos simple ĉesi kurante por tiu kvanto de tempo. 666 00:33:00,450 --> 00:33:01,280 Ĝuste? 667 00:33:01,280 --> 00:33:06,970 Kaj tiam ĝi vekos eventuale kaj tiam povos nur daŭrigi kurante 668 00:33:06,970 --> 00:33:08,340 la programo. 669 00:33:08,340 --> 00:33:12,740 >> Do tiu servilo ian donas la impreson de dormante. 670 00:33:12,740 --> 00:33:17,580 Do rimarki, ke ni havas la saman res.writeHead 200 kun la kaplinion kiel 671 00:33:17,580 --> 00:33:22,130 antaŭe, sed tiam ni nomas ĉi funkcio nomita aro-tempolimo. 672 00:33:22,130 --> 00:33:26,170 Ŝanĝu timeout estas ankaŭ havebla en Via retumilo Google Chrome 673 00:33:26,170 --> 00:33:28,000 aŭ Safari aŭ kio ajn. 674 00:33:28,000 --> 00:33:31,720 Kaj esence kio ĝi estas faranta tie Estas ĝi estas prenante en funkcio. 675 00:33:31,720 --> 00:33:33,360 Avizo, denove, ĝi estas anonima funkcio. 676 00:33:33,360 --> 00:33:36,310 Do tio estas speco de cool ĉar ni estas uzante anonima funkcion ene de 677 00:33:36,310 --> 00:33:38,950 anonima funkcio kiu povas esti iom stranga. 678 00:33:38,950 --> 00:33:42,270 >> Sed gxi prenas tiun funkcion, kio estas esence diri - kaj la maniero ĉi 679 00:33:42,270 --> 00:33:47,430 verkoj estas en 5,000 milisekundoj, mi deziras vi ekzekuti tiu funkcio kiu 680 00:33:47,430 --> 00:33:50,830 nur finas la respondo kaj skribas hey. 681 00:33:50,830 --> 00:33:56,730 Do tio donas la impreson de kiel dormante, sed la maniero ĉi reale 682 00:33:56,730 --> 00:33:59,780 verkoj estas ni kuros tra tiun linion tre rapide. 683 00:33:59,780 --> 00:34:01,190 Ni nur skribi ion. 684 00:34:01,190 --> 00:34:03,780 Kaj tiam ni ankaŭ kuras tra tiun linion tre rapide. 685 00:34:03,780 --> 00:34:08,620 Do ni ne reale irante atendi kvin sekundoj. 686 00:34:08,620 --> 00:34:11,370 Ni nur tuj kuri tiun kodon tuj. 687 00:34:11,370 --> 00:34:14,219 >> Kaj tiam tie estas, denove, ĉi iom okazaĵo buklo kiu nun havas tiun aferon 688 00:34:14,219 --> 00:34:17,570 registroj kiu esence estas nur senĉese iras cirkle 689 00:34:17,570 --> 00:34:21,620 kaj rigardante la horloĝon en sola fadeno kaj parolo havas kvin sekundoj 690 00:34:21,620 --> 00:34:22,360 pasis ankoraŭ? 691 00:34:22,360 --> 00:34:26,409 Kaj poste, kiam li vidas ke la dua mano moviĝis kiel kvin sekundoj aŭ 692 00:34:26,409 --> 00:34:29,190 kion ajn, tiam ĝi vekas kaj diras, ho, kion mi devas fari? 693 00:34:29,190 --> 00:34:30,350 Ho mi devas kuri tiun kodon. 694 00:34:30,350 --> 00:34:33,110 Kaj tiam ĝi tuj kuri res.end hey. 695 00:34:33,110 --> 00:34:35,360 >> Do denove, ni neniam atendis tie ĉi. 696 00:34:35,360 --> 00:34:38,590 Do ĝi ne estas ke tiu kodo interne de tiun funkcion tuj prenos kvin 697 00:34:38,590 --> 00:34:39,900 sekundoj por kuri. 698 00:34:39,900 --> 00:34:43,090 Tiu kodo kuros pretty much fulmobatita, almenaŭ rilate al 699 00:34:43,090 --> 00:34:46,139 la kvin sekundoj, ke ni parolis pri pli fruaj antaŭe. 700 00:34:46,139 --> 00:34:52,100 >> Do simple por montri tion en agado, Mi povas fari Node.sleep.js. 701 00:34:52,100 --> 00:34:55,159 Kaj faris mi salaton ion? 702 00:34:55,159 --> 00:34:56,310 Eble. 703 00:34:56,310 --> 00:34:57,410 Pardonon. 704 00:34:57,410 --> 00:34:59,530 Ni vidu, kion ni povas fari por korekti tion. 705 00:34:59,530 --> 00:35:10,830 706 00:35:10,830 --> 00:35:12,080 OK. 707 00:35:12,080 --> 00:35:15,460 708 00:35:15,460 --> 00:35:17,464 Do certe uzos Node.js. 709 00:35:17,464 --> 00:35:19,440 Mi ŝercas. 710 00:35:19,440 --> 00:35:19,570 OK. 711 00:35:19,570 --> 00:35:20,820 Apenaŭ unu sek. 712 00:35:20,820 --> 00:35:27,380 713 00:35:27,380 --> 00:35:27,900 OK. 714 00:35:27,900 --> 00:35:29,130 Mi scias kion ĝi estas. 715 00:35:29,130 --> 00:35:34,440 >> Do la demando estas ke en mia alia langeto ĉi tie, mi kuris Nodo jam sur 716 00:35:34,440 --> 00:35:36,590 tiu sama adreso, 1337. 717 00:35:36,590 --> 00:35:43,370 Do la eraro, ke tiu jxetis, se ni rigardas ĉe ĝi realan proksime, estas adreso en 718 00:35:43,370 --> 00:35:45,180 uzi, EADDRINUSE. 719 00:35:45,180 --> 00:35:47,970 Do mi estis jam uzanta 1337 ĉi tie. 720 00:35:47,970 --> 00:35:52,210 Do se mi fermu ĉi malproksime, kaj tiam mi nun provu kuri ĉi, atendu, ĉio 721 00:35:52,210 --> 00:35:53,210 estos bone. 722 00:35:53,210 --> 00:35:53,440 OK. 723 00:35:53,440 --> 00:35:57,020 Do vi povas havi nur unu aferon speco aŭskulti havenon samtempe. 724 00:35:57,020 --> 00:35:59,660 Alia solvo estus por mi justaj redakti ke programo kaj fari 725 00:35:59,660 --> 00:36:02,370 gxi estu kiel 1338 aŭ io kiel tio. 726 00:36:02,370 --> 00:36:04,100 >> Sed nun dormo estas kuranta. 727 00:36:04,100 --> 00:36:06,400 Do ni vere ĝin provi en la retumilo tiu tempo ĉar ĝi estas 728 00:36:06,400 --> 00:36:09,080 iom unexciting vidi gxi en terminalo. 729 00:36:09,080 --> 00:36:13,560 Do mi simple tuj iros al tiu 127 adreso denove en 1337. 730 00:36:13,560 --> 00:36:14,850 Kaj se vi povos vidi ĝin - 731 00:36:14,850 --> 00:36:18,050 Mi ne scias se vi povas - sed mia foliumilo prenante tre, tre longa 732 00:36:18,050 --> 00:36:20,600 tempo ŝargi aŭ kiel kvin sekundoj. 733 00:36:20,600 --> 00:36:23,460 >> Kaj tuj poste, fine finis la respondon. 734 00:36:23,460 --> 00:36:29,070 Kaj vi ne povas vidi ĝin ĉar la afero estas movita trans iom, sed se mi faras 735 00:36:29,070 --> 00:36:32,500 tio iom pli malgranda, vi povas vidi ĝin diras hey. 736 00:36:32,500 --> 00:36:35,130 Kaj mi acxetis la bona, sed post kvin sekundoj. 737 00:36:35,130 --> 00:36:38,510 Kaj gxi povus esti iom pli puraj, por vidi ĝin ĉi tie je la fina, do mi estas 738 00:36:38,510 --> 00:36:40,980 tuj faros - 739 00:36:40,980 --> 00:36:43,540 ni faros ĉi tie - 740 00:36:43,540 --> 00:36:48,370 ni faru Curl tiu adreso denove kun la 1337. 741 00:36:48,370 --> 00:36:50,820 Kaj mi nur speco de devos sidi tien por kvin sekundoj. 742 00:36:50,820 --> 00:36:53,760 Sed rimarkos, ke la servilo povas akcepti novajn respondojn. 743 00:36:53,760 --> 00:36:54,940 Do ĝi presas hey. 744 00:36:54,940 --> 00:36:58,720 >> Kaj por demo tiu, esence kio Mi povas fari en tiu alia langeto - 745 00:36:58,720 --> 00:37:02,640 do ni diru mi faras tion en alian slipon, Mi tuj faros Curl kaj la sama 746 00:37:02,640 --> 00:37:03,780 afero denove. 747 00:37:03,780 --> 00:37:06,600 Kaj mi tuj provos piedbati tiujn infanoj ĉe la sama tempo. 748 00:37:06,600 --> 00:37:08,260 Do mi intencas fari tion, kaj mi estas irante al la raso super ĉi tie kaj mi 749 00:37:08,260 --> 00:37:09,650 faros tion denove. 750 00:37:09,650 --> 00:37:14,030 >> Kaj ni faru tiel ke vi povas vidi ambaux. 751 00:37:14,030 --> 00:37:20,250 Tiu presita hey kaj tiu presita hey tuta vojo, je - 752 00:37:20,250 --> 00:37:22,550 ni faru ke eksperimento denove. 753 00:37:22,550 --> 00:37:25,100 Efektive, ni uzas ĉi trompi, se tio estas en ordo. 754 00:37:25,100 --> 00:37:30,520 >> Do mi tuj uzos shell afero ke permesu al mi esence kuri du kopioj 755 00:37:30,520 --> 00:37:32,630 de tiu programo en paralela. 756 00:37:32,630 --> 00:37:36,070 Do ĝi kuros la unuan programon kaj la duan programon paralele. 757 00:37:36,070 --> 00:37:39,060 Do nun, se mi premi Enter, ĝi okazas fari ke peto pretty much 758 00:37:39,060 --> 00:37:40,570 fulmobatita samtempe. 759 00:37:40,570 --> 00:37:42,620 Do ni donas ĉi pafon. 760 00:37:42,620 --> 00:37:44,950 >> Do nun rimarkas diras du procezoj. 761 00:37:44,950 --> 00:37:50,630 Kaj se vi estas scivolema, ke 27.000 nombro estas esence la procezo ID. 762 00:37:50,630 --> 00:37:52,940 Kaj tiam rimarkos, ili presas hey samtempe. 763 00:37:52,940 --> 00:37:56,820 Ĝi ne plaĉas ni devis atendi kvin sekundoj por unu kaj tuj poste, 764 00:37:56,820 --> 00:37:59,640 kvin sekundoj poste ricevas la duan. 765 00:37:59,640 --> 00:38:03,300 Do tio estas speco de, en kelkaj manieroj, estas Ne vere evidenteco, sed estas 766 00:38:03,300 --> 00:38:07,390 intuicia evidentigas, ke ĝi estas ne nur kiel atendi kvin sekundoj kaj blokante 767 00:38:07,390 --> 00:38:08,960 la tutan fadenon. 768 00:38:08,960 --> 00:38:10,720 OK malvarmeta. 769 00:38:10,720 --> 00:38:17,850 >> Kaj Aaron demandis pli frue, ke estis, nu kio, se ni faras ion - 770 00:38:17,850 --> 00:38:18,735 Yep? 771 00:38:18,735 --> 00:38:19,051 >> Spektantaro: Atendu. 772 00:38:19,051 --> 00:38:21,585 Kiom estas malsimila printf buffer, kvankam? 773 00:38:21,585 --> 00:38:23,010 Ĉu ne aŭtomate faras tion? 774 00:38:23,010 --> 00:38:25,390 Kial ni devas zorgi pri ĝi? 775 00:38:25,390 --> 00:38:26,555 >> Kevin Schmid: Ho, vi povis diri, ke unu pli da tempo? 776 00:38:26,555 --> 00:38:29,510 >> Spektantaro: Ĉu ne plaĉas printf buffer fari la ĝustan saman aferon? 777 00:38:29,510 --> 00:38:31,280 >> Kevin Schmid: La printf buffer? 778 00:38:31,280 --> 00:38:32,753 >> Spektantaro: Jes. 779 00:38:32,753 --> 00:38:33,244 OK. 780 00:38:33,244 --> 00:38:40,609 Ne estis en unu el la kvizojn ili estis parolante pri kiel se vi rajtas printf 781 00:38:40,609 --> 00:38:42,899 io kaj tiam ili ŝin paŭzi unu la dua, kaj tiam vi havos ŝin buklo dek 782 00:38:42,899 --> 00:38:46,530 fojojn, tio atendos dek sekundoj kaj tiam printf ĉio kune? 783 00:38:46,530 --> 00:38:47,460 >> Kevin Schmid: Ho, okej. 784 00:38:47,460 --> 00:38:49,170 >> Spektantaro: Ĉu fari la saman afero tiam en tiu kazo? 785 00:38:49,170 --> 00:38:52,630 >> Kevin Schmid: Do la demando estis esence en unu el la iama kvizojn 786 00:38:52,630 --> 00:38:57,200 aŭ io, ne estis demando kiu esence, se vi diros print f 10 787 00:38:57,200 --> 00:39:01,490 aferojn samtempe, kaj poste ekdormis kiel en la procezo de presado tiuj eliris, 788 00:39:01,490 --> 00:39:04,850 fine por iu kialo, ŝi volis nur renversi tiujn cxiujn sur la ekrano. 789 00:39:04,850 --> 00:39:06,740 Do tie estas speco de du malsamaj konceptoj tie. 790 00:39:06,740 --> 00:39:10,400 >> Do mi supozas unu afero estas ke, en tiu kazo, ni kontraktanta kun du malsamaj 791 00:39:10,400 --> 00:39:13,510 speco de personoj petante la servilo por aferoj, je la sama tempo. 792 00:39:13,510 --> 00:39:17,455 Kaj la kialo ke la printf speco de atendas kiel tio kaj renversas ĉion 793 00:39:17,455 --> 00:39:21,760 samtempe estas pli rilataj al kiom printf specon de - 794 00:39:21,760 --> 00:39:25,100 tiel la vojon printf estas reale implementado estas esence devas 795 00:39:25,100 --> 00:39:28,850 paroli kun la mastruma sistemo por skribi Okaze de la konzolo. 796 00:39:28,850 --> 00:39:33,460 Do ĝi ne volas fari ĉiujn da ke stuff tuj kiam vi diras printf 797 00:39:33,460 --> 00:39:36,260 iuj kordoj ĉar tio povis akiri multekostan se ĝi devas 798 00:39:36,260 --> 00:39:37,340 faru, ke ĉiufoje. 799 00:39:37,340 --> 00:39:41,530 >> Do, se vi faros printf bona, via programo eble ne vere presi tiun 800 00:39:41,530 --> 00:39:43,040 tuj al la konzolo. 801 00:39:43,040 --> 00:39:46,080 Ĝi povus diri, OK, mi skribis ĝin. 802 00:39:46,080 --> 00:39:49,570 Kaj tiam ia atendos vin por doni ĝin iom pli antaŭ ol reale 803 00:39:49,570 --> 00:39:51,380 skribi gxin por la konzolo. 804 00:39:51,380 --> 00:39:54,040 >> Do la kialo, ke tio estis la kazo - 805 00:39:54,040 --> 00:39:56,450 kaj ĝi estas speco de nerilata al la dormo - 806 00:39:56,450 --> 00:40:00,060 estas, ke la dormo estis speco de simple injektita en tie por pruvi la 807 00:40:00,060 --> 00:40:02,480 fakto, ke ĝi ne skribi ĝi sincronizadamente. 808 00:40:02,480 --> 00:40:06,210 Sed la kialo por tio estas ĝuste agado por ke vi ne devas 809 00:40:06,210 --> 00:40:08,920 faru, ke multaj kontaktoj la mastruma sistemo. 810 00:40:08,920 --> 00:40:12,300 >> Sed ĉi tie, kion ni vere provas fari kun tiu dormo afero estas simple programo 811 00:40:12,300 --> 00:40:17,730 ke kiam ni havos du personoj vizitante ĉi retejo, ĝi ne estas tuj metis 812 00:40:17,730 --> 00:40:22,310 ilin en linio kie ĝi estas dironta Mi devas helpi vin, kaj tiam, kiam mi estas 813 00:40:22,310 --> 00:40:25,350 tute finita helpi vin post tiuj kvin sekundoj, do mi tuj 814 00:40:25,350 --> 00:40:26,750 movi sur la sekvanta persono. 815 00:40:26,750 --> 00:40:29,515 Do la unua persono petita ne ligi tiu evento buklo 816 00:40:29,515 --> 00:40:31,610 se tio havas sencon. 817 00:40:31,610 --> 00:40:34,980 >> Sed ĉi tie estas reale ekzemplo de iu kiu ligos 818 00:40:34,980 --> 00:40:36,090 ĝis la evento buklo. 819 00:40:36,090 --> 00:40:39,130 Do jen hidan funkcio komputi la n-a fibonaĉi. 820 00:40:39,130 --> 00:40:43,510 Ĝi estas laŭvorte la pli malbona maniero vi povas komputi la n-a fibonaĉi-nombro. 821 00:40:43,510 --> 00:40:48,480 Kaj tio estas efektive nur agnoski kie tiu venis, 822 00:40:48,480 --> 00:40:49,330 tie estas reale - 823 00:40:49,330 --> 00:40:53,230 Mi volas diri, vi povas provi iri trovos ĝin - sed ekzistas kiel tre longan blogo 824 00:40:53,230 --> 00:40:54,130 sendi ke iu skribis. 825 00:40:54,130 --> 00:40:55,660 Estas kiel unu el tiuj Reddit aferojn. 826 00:40:55,660 --> 00:40:59,650 Sed iu kritikis Node.js, kaj ili uzas tion kiel ekzemplon. 827 00:40:59,650 --> 00:41:03,700 Do mi specon de volis nur montri al vi du malsamaj perspektivoj simple akiri 828 00:41:03,700 --> 00:41:07,320 ĝenerala kompreno de la konceptoj malantaŭ tiuj du aferoj. 829 00:41:07,320 --> 00:41:13,050 >> Sed tio estas elektita kiel simplan hidaj, horore malkompetenta kompute 830 00:41:13,050 --> 00:41:15,940 intensivaj vojo al komputi la n-a fibonaĉi-nombro. 831 00:41:15,940 --> 00:41:21,180 Do nur kiel flanka noto, kial estas ĝi hidajn kiel en unu vojon? 832 00:41:21,180 --> 00:41:23,210 Yep? 833 00:41:23,210 --> 00:41:25,130 >> Spektantaro: Diru vi komencas evi 1,000. 834 00:41:25,130 --> 00:41:27,050 1.000 splits en 999 kaj 998. 835 00:41:27,050 --> 00:41:28,970 Ĉiu de ĉi disdividas en du aĵojn. 836 00:41:28,970 --> 00:41:30,890 Ĉiu de ĉi disdividas en du aĵojn. 837 00:41:30,890 --> 00:41:31,355 >> Kevin Schmid: Dekstra. 838 00:41:31,355 --> 00:41:32,400 >> Spektantaro: Ĉiuj vojon malsupren. 839 00:41:32,400 --> 00:41:32,840 >> Kevin Schmid: Ekzakte. 840 00:41:32,840 --> 00:41:37,330 Do ĝuste ripeti por la ĉambro, se mi voki fib sur ŝatas 1,000 aŭ io 841 00:41:37,330 --> 00:41:41,810 kiel tiu, ĝi estas evidente ne malpli ol aŭ egala al unu do mi tuj 842 00:41:41,810 --> 00:41:46,040 iru al tiu alia kazo, kaj tiam mi iros voki fib 999 plus fib 998. 843 00:41:46,040 --> 00:41:50,290 Kaj tiam preskaux cxiuj de tiu laboro kiu fib 999 faras estas 844 00:41:50,290 --> 00:41:52,950 speco de ĉe tiu nivelo. 845 00:41:52,950 --> 00:41:55,620 Se vi tien iru, ĝi estas eĉ pli redunda ol tio, sed se vi nur 846 00:41:55,620 --> 00:42:01,390 pensas komputanta fib 998 gets ni belajn proksime fib 999. 847 00:42:01,390 --> 00:42:05,860 Do ni devus vere esti iom pli clever pri kiel ni ia reuzi 848 00:42:05,860 --> 00:42:07,580 ĉi tiuj, sed ni ne reutilizando tion ajn. 849 00:42:07,580 --> 00:42:11,860 Do vi povas imagi ĉi giganta, giganta arbo, kiu estas nur terure. 850 00:42:11,860 --> 00:42:12,940 >> Sed ĉiukaze, OK. 851 00:42:12,940 --> 00:42:14,040 Por ke estis fib. 852 00:42:14,040 --> 00:42:15,530 Ĝi simple prenas tempon kuri. 853 00:42:15,530 --> 00:42:16,510 Yep? 854 00:42:16,510 --> 00:42:17,760 >> Spektantaro: [inaudibles]. 855 00:42:17,760 --> 00:42:20,430 856 00:42:20,430 --> 00:42:22,481 >> Kevin Schmid: Ho, vi povis ripetu la demandon? 857 00:42:22,481 --> 00:42:23,731 >> Spektantaro: [inaudibles]. 858 00:42:23,731 --> 00:42:30,840 859 00:42:30,840 --> 00:42:33,990 >> Kevin Schmid: Ho tia ĉi estas nur kodo ke tuj estos speco de sur la 860 00:42:33,990 --> 00:42:34,850 servilo flanko. 861 00:42:34,850 --> 00:42:38,100 Do tio ne tuj estos trovita en la foliumilo aŭ nenion. 862 00:42:38,100 --> 00:42:42,160 Ĝi estas esence kion ni havas estas ke kiam la uzanto ĉi tie sufiĉe tre fabrikas 863 00:42:42,160 --> 00:42:45,300 ilian deziron denove, kiam ni ian fari peton, ni tuj voki 864 00:42:45,300 --> 00:42:47,040 ĉi funkcio sur la flanko de la servanto. 865 00:42:47,040 --> 00:42:50,480 Kaj tiam ni ricevos la rezulton reen el nomante tiun funkcion. 866 00:42:50,480 --> 00:42:52,460 Kaj tiam ni nur presas ĝin al la uzanto. 867 00:42:52,460 --> 00:42:54,580 Do la uzanto ne vere trakti kun tiu funkcio tro multe. 868 00:42:54,580 --> 00:42:57,270 >> Estis, ke la demando? 869 00:42:57,270 --> 00:42:58,470 Ĉu tio havas sencon? 870 00:42:58,470 --> 00:42:58,810 OK. 871 00:42:58,810 --> 00:43:00,930 Cool. 872 00:43:00,930 --> 00:43:04,240 >> Do denove, ni faros tiun tutan res.writeHead afero, kie ni presi 873 00:43:04,240 --> 00:43:05,150 la ĉapon. 874 00:43:05,150 --> 00:43:09,730 Kaj tiam mi finos la respondon per farado La magia nombro estas fib 45. 875 00:43:09,730 --> 00:43:12,100 Do ni nur kuri ĉi servilo. 876 00:43:12,100 --> 00:43:15,190 Do mi tuj faros Nodo fib.js. 877 00:43:15,190 --> 00:43:17,340 Do nun mia fib servilo kuras. 878 00:43:17,340 --> 00:43:21,790 >> Kaj tiam tie, mi tuj fari unu el tiuj. 879 00:43:21,790 --> 00:43:22,200 OK? 880 00:43:22,200 --> 00:43:24,960 Do mi simple volis diri, Curl. 881 00:43:24,960 --> 00:43:32,226 Do ĝi estas tuj prenu iom da tempo sed espereble baldaŭ finos kaj 882 00:43:32,226 --> 00:43:35,660 tio estos presi ke 45 Fibonacci nombro. 883 00:43:35,660 --> 00:43:36,910 >> Spektantaro: [inaudibles]. 884 00:43:36,910 --> 00:43:40,720 885 00:43:40,720 --> 00:43:42,050 >> Kevin Schmid: Ĝi devus get farita baldaux. 886 00:43:42,050 --> 00:43:43,780 Do ĝi devus preni kvin ĝis ses sekundoj. 887 00:43:43,780 --> 00:43:48,570 Mi ne scias, ke estas nur V8 esti super rapida, sed ĉiukaze, temas pri 888 00:43:48,570 --> 00:43:52,700 tre mallonga ekzemplo kaj intence inelegant de ne-bagatela 889 00:43:52,700 --> 00:43:54,200 kalkulado. 890 00:43:54,200 --> 00:43:56,700 Do post kelka tempo, ĝi ricevas ĉi. 891 00:43:56,700 --> 00:44:02,130 >> Sed nun por kio, se mi faras tion saman specon de eksperimento kiel antaŭe kie mi faros 892 00:44:02,130 --> 00:44:04,010 du petojn samtempe? 893 00:44:04,010 --> 00:44:06,990 Do jen mi iras al buklo sur tiu adreso, kaj mi iros 894 00:44:06,990 --> 00:44:08,260 fari alian Curl. 895 00:44:08,260 --> 00:44:12,070 Kaj memoru, kiam ni faris tion por la dormi servilo, kiam ni esence havis ĝin 896 00:44:12,070 --> 00:44:15,320 post kvin sekundoj, ili bela multe ambaŭ revenis dekstra 897 00:44:15,320 --> 00:44:16,380 ĉirkaŭ la sama tempo. 898 00:44:16,380 --> 00:44:18,650 Do ĝi ne estas aparte ligitaj. 899 00:44:18,650 --> 00:44:20,290 >> Sed ni provu ĝin nun. 900 00:44:20,290 --> 00:44:22,370 OK, do ni havas nian du procezoj. 901 00:44:22,370 --> 00:44:24,210 Memoru tiuj estas la procezo IDs. 902 00:44:24,210 --> 00:44:25,900 Ĉi tuj estos iom mallerta dum ni eniris en perdon. 903 00:44:25,900 --> 00:44:31,340 904 00:44:31,340 --> 00:44:35,360 Do ni nur restu tie kaj atendu. 905 00:44:35,360 --> 00:44:37,090 >> Do unu el ili venu reen post kiel - 906 00:44:37,090 --> 00:44:39,190 OK, do unu revenis. 907 00:44:39,190 --> 00:44:43,570 Sed tiam kial ne la duan unu revenu nur ankoraŭ? 908 00:44:43,570 --> 00:44:44,389 Yep? 909 00:44:44,389 --> 00:44:49,280 >> Spektantaro: La servilo ne povas fari ion ajn dum ĝi komputanta, ke granda nombro. 910 00:44:49,280 --> 00:44:51,620 >> Kevin Schmid: Dekstra. 911 00:44:51,620 --> 00:44:55,395 Do la respondo estis simple, ke la servilo vere ne povas fari ion dum 912 00:44:55,395 --> 00:44:57,460 ĝi estas komputanta ke Fibonacci nombro. 913 00:44:57,460 --> 00:44:59,360 Do nun mi ĵus akiris miajn du aferoj dorso. 914 00:44:59,360 --> 00:45:03,210 Sed mi supozas ĝuste pensi pri la kodo iom pli, kiel ĝi funkcias 915 00:45:03,210 --> 00:45:05,030 kaj ĉiu. 916 00:45:05,030 --> 00:45:11,750 >> Do tiu funkcio ĉi tie estas la kodo kiun Mi jam diris al ĉi tiu servilo kuri kiam 917 00:45:11,750 --> 00:45:14,100 ricevas novajn envenantajn peton. 918 00:45:14,100 --> 00:45:17,940 Do ĝi estas ĝuste tuj kuri tra tiu tutan kodon, kaj tiam ĝi tuj iri 919 00:45:17,940 --> 00:45:21,120 Reen al la evento loop kaj poste daŭrigi kontrolanta por novaj eventoj. 920 00:45:21,120 --> 00:45:23,670 Do esence kion ni okazis Estas la servilo estas 921 00:45:23,670 --> 00:45:25,080 aŭskultante por novaj aĵoj. 922 00:45:25,080 --> 00:45:28,070 La unua persono petu kion 45 estas. 923 00:45:28,070 --> 00:45:30,490 Ni kuras tiun kodon al komputi ĝin. 924 00:45:30,490 --> 00:45:33,420 Tiu kodo prenas proksimume kvin al ses sekundoj por kuri. 925 00:45:33,420 --> 00:45:36,990 Tiam ni revenu al la evento buklo kaj kontrolas por novaj petoj. 926 00:45:36,990 --> 00:45:42,700 >> Do tiu estas ekzemplo de kiel, se vi havi tion, kio estas tn komputi 927 00:45:42,700 --> 00:45:48,140 ligis, aŭ uzi multajn komputa, Ne potencon, sed kiel estas 928 00:45:48,140 --> 00:45:50,260 kompute intensivaj - 929 00:45:50,260 --> 00:45:54,080 Mi supozas ion por diri pri tio ke tiu funkcio faras plene, 930 00:45:54,080 --> 00:45:56,310 plejparte, belaj utila laboro pravas. 931 00:45:56,310 --> 00:45:59,970 La tutan tempon, ke tiu callback funkcio kuris, ĝi estis sufiĉe 932 00:45:59,970 --> 00:46:03,670 multe elspezi grandan parton de lia tempo nur komputado ke n-a fibonaĉi-nombro. 933 00:46:03,670 --> 00:46:05,930 >> Sed ni havis nur unu fadeno trakti. 934 00:46:05,930 --> 00:46:10,270 En la Apache modelo, kiam du homoj faris la peton por akiri fib 45, ni 935 00:46:10,270 --> 00:46:11,610 estus havinta du malsamaj fadenoj. 936 00:46:11,610 --> 00:46:15,060 Kaj tiam la mastruma sistemo laborposteno estus estinta, aux la uzanto nivelo 937 00:46:15,060 --> 00:46:18,660 kodo kiu administras la fadenoj, estus jam estis por tranĉi ke sur la 938 00:46:18,660 --> 00:46:23,060 CPU, aŭ eĉ se vi havis multnombrajn CPU, disdoni ilin pare trans la CPU 939 00:46:23,060 --> 00:46:26,130 tiel, ke ili ambaŭ finas proksimume je la sama tempo. 940 00:46:26,130 --> 00:46:31,120 >> Do nur por montri al vi kiel ni povas ordigi de - kaj ĉi tiu ne estas entute perfekta 941 00:46:31,120 --> 00:46:34,280 solvo, sed speco de kiel ni povas fari revenu ĉi tien kaj fari 942 00:46:34,280 --> 00:46:35,880 iomete pli bone. 943 00:46:35,880 --> 00:46:41,540 Do kion mi havas ĉi tie estas programo nomata Fib C. Kaj ĉi esence uzas 944 00:46:41,540 --> 00:46:45,690 alia de Nodo de moduloj nomata Infano Procezo Modulo. 945 00:46:45,690 --> 00:46:49,210 Do mi inkludis, ke ĉe la supro speco de kiel mi farus funton inkluzivi 946 00:46:49,210 --> 00:46:51,230 infano process.h aŭ io. 947 00:46:51,230 --> 00:46:56,210 Nun mi havas aliron al tiu CP variablo kiuj havas ĉiujn miajn funkciojn. 948 00:46:56,210 --> 00:47:01,810 >> Do nun, kion mi faras en ĉi tiu respondo traktilo estas mi kurante ĉi programo 949 00:47:01,810 --> 00:47:04,100 dot oblikvo fib 45. 950 00:47:04,100 --> 00:47:06,820 Do kion mi faris - kaj mi simple irante eliri de tiu programo por 951 00:47:06,820 --> 00:47:07,620 iom - 952 00:47:07,620 --> 00:47:11,060 estas mi skribis C programon kiu esence komputas la 953 00:47:11,060 --> 00:47:12,630 n-a fibonaĉi-nombro. 954 00:47:12,630 --> 00:47:15,960 Do tie estas nur programo kiun mi skribis en C kiu komputas ĉi. 955 00:47:15,960 --> 00:47:19,040 Mi povas kompili ĝin, kaj mi povas kuri ĝin ĉe la komandlinio. 956 00:47:19,040 --> 00:47:22,150 Kaj tio okazas al komputi la 45 Fibonacci nombro. 957 00:47:22,150 --> 00:47:24,510 >> Do rimarkos ĝin nur prenas preskaux tiel longe. 958 00:47:24,510 --> 00:47:28,240 Mi verŝajne povus esti uzita haltostreko 03 al optimumigi ĝin aŭ io kiel tio, 959 00:47:28,240 --> 00:47:31,050 sed mi ĵus faris kiel regula tradukilo agordojn. 960 00:47:31,050 --> 00:47:33,260 Kaj presas ĝin. 961 00:47:33,260 --> 00:47:36,830 >> Sed nun, kion mi specon de faras? 962 00:47:36,830 --> 00:47:39,800 Ho bedaŭras, erara dosiero. 963 00:47:39,800 --> 00:47:42,800 Do mi faru la samajn aferojn kun la kaplinio kiel antaŭe. 964 00:47:42,800 --> 00:47:45,780 Poste mi faru tion cp.exec. 965 00:47:45,780 --> 00:47:49,460 Do kio estas tiu tuj fari estas ĝi estos tuj kuru ĉi programo. 966 00:47:49,460 --> 00:47:51,960 Sed la maniero ĉi verkoj estas ke ĝi ne estas tuj atendi 967 00:47:51,960 --> 00:47:53,400 ke programo por fini. 968 00:47:53,400 --> 00:47:56,000 Ĝi simple esence diras ekzekuti ĉi programo. 969 00:47:56,000 --> 00:47:58,700 Do esence tajpas ĉi tion en la ordonos prompto ia. 970 00:47:58,700 --> 00:48:02,350 >> Kaj tiam, kiam vi faris kun ĝin, kuros ĉi funkcion. 971 00:48:02,350 --> 00:48:04,800 Do nun ni ia get this tutajn restaŭrita afero de 972 00:48:04,800 --> 00:48:06,750 kiel ni ne atendas. 973 00:48:06,750 --> 00:48:08,530 Ĉu tian sencon? 974 00:48:08,530 --> 00:48:08,990 Yep? 975 00:48:08,990 --> 00:48:11,060 >> Spektantaro: [inaudibles]? 976 00:48:11,060 --> 00:48:13,610 >> Kevin Schmid: Do tio efektive malfermos novan procezon por fari ĝin. 977 00:48:13,610 --> 00:48:19,310 Do tiu estas efektive, en kelkaj manieroj, malbono, ne super malbono, sed estas 978 00:48:19,310 --> 00:48:22,990 grava por diri, ke ĉi tiu estas speco de reironta al, unuflanke, la Apache 979 00:48:22,990 --> 00:48:26,450 modelo kie ni fari fadenojn kaj procezoj por ĉiu peto aŭ 980 00:48:26,450 --> 00:48:29,280 procezojn por ĉiu peto. 981 00:48:29,280 --> 00:48:32,090 Do tiu estas speco de analoga al kio Apache faras. 982 00:48:32,090 --> 00:48:35,110 En kelkaj kazoj, simple uzi novan fadeno, kiu estas iom pli malpeza 983 00:48:35,110 --> 00:48:39,040 pezo ol procezo, sed Apache povis finas forking nova procezo 984 00:48:39,040 --> 00:48:43,370 kio estas speco de tio, kion ni faros ĉi tie implice per farado dot oblikvo fib 45. 985 00:48:43,370 --> 00:48:48,690 >> Kaj tiam en tiu kazo, ni ia fali la samaj elspezoj de procezoj. 986 00:48:48,690 --> 00:48:50,710 Do tiu estas nur unu afero vi povas fari. 987 00:48:50,710 --> 00:48:52,600 Sed nur por montri ĉi speco de kurado. 988 00:48:52,600 --> 00:48:57,120 Kaj ĉi tiu diskuto estas nur vere celas prezenti tiujn speco de programoj kiel 989 00:48:57,120 --> 00:49:00,710 maniero montri malsamaj vidpunktoj pri kiom desegni servilojn tiel. 990 00:49:00,710 --> 00:49:08,300 Do tiu estas kurante, kaj poste nun se mi faras ĉi denove, mi ricevis du procezo IDs. 991 00:49:08,300 --> 00:49:10,320 >> Ni simple paroli pri aferojn atentigi. 992 00:49:10,320 --> 00:49:11,980 Do rimarkos ke ili estas kreskante. 993 00:49:11,980 --> 00:49:12,700 Tio estas malvarmeta. 994 00:49:12,700 --> 00:49:15,140 Ĉar ĝi estis 27.122 antaŭe. 995 00:49:15,140 --> 00:49:18,580 Sed avizo nun, ili venis denove ĉe proksimume la sama tempo. 996 00:49:18,580 --> 00:49:23,960 >> Kaj nun, bonan demandon por demandi pri kial estis ke la kazo estas, kies tasko 997 00:49:23,960 --> 00:49:27,590 estis ĝin nun al ia fari tion speco de ludi foiro kun ĉiu 998 00:49:27,590 --> 00:49:31,350 aliaj, tiuj du ekzemploj de dot oblikvo fib 45 ke mi kuris 999 00:49:31,350 --> 00:49:32,880 aŭ kiu Nodo kuris? 1000 00:49:32,880 --> 00:49:36,940 Kiu speco de faras ĝin bela, ke ili ambaŭ get speco de balancitaj tempo de ekzekuto? 1001 00:49:36,940 --> 00:49:42,900 1002 00:49:42,900 --> 00:49:44,220 >> Spektantaro: [inaudibles]. 1003 00:49:44,220 --> 00:49:44,620 >> Kevin Schmid: Jes. 1004 00:49:44,620 --> 00:49:49,740 Do esence, kiam Mi faros dot oblikvo fib 45 aŭ io tia, nun estas 1005 00:49:49,740 --> 00:49:53,750 speco de ĝis la mastruma sistemo por manipuli la runtime de tiuj programoj. 1006 00:49:53,750 --> 00:49:56,920 Kaj nun ŝi povas plani ilin pri diversaj procesoroj aŭ ĝi 1007 00:49:56,920 --> 00:49:58,330 povas plani ilin. 1008 00:49:58,330 --> 00:50:01,870 Ĝi povas tranĉi la tempo, ke oni CPU gets ĝin aŭ ke ili ricevas 1009 00:50:01,870 --> 00:50:03,330 kuri sur CPU. 1010 00:50:03,330 --> 00:50:05,620 Do tio estas la ideo malantaŭ tio. 1011 00:50:05,620 --> 00:50:07,220 Ĉu tio havas sencon por ĉiuj? 1012 00:50:07,220 --> 00:50:10,950 Do nun Nodo ne vere ludas parto en dividanta tiujn taskojn. 1013 00:50:10,950 --> 00:50:12,200 OK. 1014 00:50:12,200 --> 00:50:14,050 1015 00:50:14,050 --> 00:50:17,840 >> Do tio estas preskaŭ gxin por ekzemploj. 1016 00:50:17,840 --> 00:50:23,370 Mi nur volis montri pli afero ĉar multe de tiu tiel nun estis 1017 00:50:23,370 --> 00:50:27,350 ne plene super praktika en kelkaj kazoj. 1018 00:50:27,350 --> 00:50:30,970 Mi povas imagi venas hejmen post tio paroli kaj iu kaj diris kiel, 1019 00:50:30,970 --> 00:50:35,710 bone mi specon de elvenis de tiu diskuto, ke Mi povas fari Fibonaĉi-servilo por 1020 00:50:35,710 --> 00:50:37,360 mia fina projekto. 1021 00:50:37,360 --> 00:50:40,770 Do tie estas nur ia unu ekzemplo pli kiuj espereble estos - 1022 00:50:40,770 --> 00:50:44,620 eble ne, sed eble - iom pli ia rilatajn al fina projektoj kaj 1023 00:50:44,620 --> 00:50:46,440 pensante antaŭen por aĵoj kiel tio. 1024 00:50:46,440 --> 00:50:48,870 >> Do tiu estas chat.js. 1025 00:50:48,870 --> 00:50:52,290 Do tiu estas speco de like kelkaj specimenaj servilo flanko kodo kiun vi povus uzi por 1026 00:50:52,290 --> 00:50:55,700 starigis malgrandan babilejon servilo kiel vi eble vidis en la 1027 00:50:55,700 --> 00:50:56,630 Facebook Babilejo aŭ kio ajn. 1028 00:50:56,630 --> 00:50:59,990 Do mi ne diras ĉi estas kiel Facebook Babili, sed ĉi tiu estas speco de 1029 00:50:59,990 --> 00:51:06,230 kiel bona - eble ne bona, sed eble bona - elirpunkto por la babilejon 1030 00:51:06,230 --> 00:51:08,560 servilo por via TTT-ejo por fina projekto. 1031 00:51:08,560 --> 00:51:11,040 Do ni rigardu, kio ĝi estas faranta. 1032 00:51:11,040 --> 00:51:15,500 >> Do ni ricevas tiu speciala afero ĉe la supro, ĉi var SIO 1033 00:51:15,500 --> 00:51:17,050 egalas postulas Socket.IO. 1034 00:51:17,050 --> 00:51:20,280 Do tio estas alia afero, ke ĝi ne efektive venis ekestos 1035 00:51:20,280 --> 00:51:22,300 Nodo sed vi povas instali gxin. 1036 00:51:22,300 --> 00:51:23,480 Estas Nodo modulo. 1037 00:51:23,480 --> 00:51:25,670 Do ĝi estas ĵus kiel iuj etendo al Nodo. 1038 00:51:25,670 --> 00:51:29,220 >> SocketIO estas efektive vere speco de malvarmeta. 1039 00:51:29,220 --> 00:51:32,550 Ĝi estas abstraktaĵo kiu esence kio ĝi estas ĉu vi permesas 1040 00:51:32,550 --> 00:51:35,770 havas tiun torenton da komunikado inter retejo 1041 00:51:35,770 --> 00:51:39,430 foliumilo kaj reta servilo. 1042 00:51:39,430 --> 00:51:45,250 Do plejparte ĝis nun, ni havis ĉi tiuj tre rapida unu aŭ du 1043 00:51:45,250 --> 00:51:48,790 dua konektoj inter retejo foliumilo kaj la TTT-servilo. 1044 00:51:48,790 --> 00:51:53,310 Do ĝi estas esence iri al google.com, akiru la vazaro, sendu ĝin, kaj poste 1045 00:51:53,310 --> 00:51:53,770 ni faris. 1046 00:51:53,770 --> 00:51:56,560 Ni neniam parolas denove ĝis la uzanto tajpas en iu alia. 1047 00:51:56,560 --> 00:52:01,090 >> Sed kion Socket.IO kaj simila speco de aferoj - kaj SocketIO estas fakte unu 1048 00:52:01,090 --> 00:52:03,940 de la aĵoj kiuj estas konstruita sur kiel WebSocket kiu estas speco de haveblaj 1049 00:52:03,940 --> 00:52:06,440 kiel parto de HTML5 - 1050 00:52:06,440 --> 00:52:09,620 kiu permesas al vi havi ĉi daŭrigi la dialogon. 1051 00:52:09,620 --> 00:52:13,990 Kaj tiu estas tre utila en babilejo servilo speco de afero, ĉar ĝi estas 1052 00:52:13,990 --> 00:52:17,390 ia kiel daŭra dialogo en iuj manieroj, ĉar se vi babilis 1053 00:52:17,390 --> 00:52:21,540 kun iu, vi povas nun nur sendos mesaĝo sube la pipon, kaj tiam la 1054 00:52:21,540 --> 00:52:23,940 servilo povas sendi mesaĝon malsupren la pipon al la alia persono vi estas 1055 00:52:23,940 --> 00:52:24,520 babili kun. 1056 00:52:24,520 --> 00:52:26,903 Kaj tiam vi povas havi tiun interŝanĝi ŝatas tion. 1057 00:52:26,903 --> 00:52:30,590 1058 00:52:30,590 --> 00:52:32,850 >> Do tio estas speco de kio SocketIO estas bona por. 1059 00:52:32,850 --> 00:52:38,400 La kialo ke SocketIO uzas WebSockets kiel unu afero estas, ke en 1060 00:52:38,400 --> 00:52:43,980 Krom nur ordinaraj malnovan WebSockets, ĝi ankaŭ faras kelkajn trukojn por esence 1061 00:52:43,980 --> 00:52:45,610 fari retumilo kongruaj. 1062 00:52:45,610 --> 00:52:50,040 Do retumiloj kiel Internet Explorer bedaŭrinde ne subtenas WebSockets 1063 00:52:50,040 --> 00:52:50,810 dekstra el la skatolo. 1064 00:52:50,810 --> 00:52:55,290 Do uzu iun alian specon de cool neta aferojn kun Adobe Flash permesi 1065 00:52:55,290 --> 00:52:57,170 vi havu krucon retumilo subteno. 1066 00:52:57,170 --> 00:52:58,800 Do tio estas vere utila. 1067 00:52:58,800 --> 00:53:02,440 >> Kaj vere, mi konas min speco de kurante al tempo ĉi tie, sed CS50 1068 00:53:02,440 --> 00:53:08,490 Diskuti, ĉu vi iam vidis ion kiel, mi ne scias, malplenan tiom kaj tiom estas 1069 00:53:08,490 --> 00:53:11,030 respondi al afiŝo aŭ io tiel, ke trajto? 1070 00:53:11,030 --> 00:53:12,250 Tio SocketIO. 1071 00:53:12,250 --> 00:53:15,580 Do kiam iu komencas tajpi en la diskuti skatolo fari respondo aŭ 1072 00:53:15,580 --> 00:53:20,040 io, via retumilo ne kio estas nomata en SocketIO elsendas ia 1073 00:53:20,040 --> 00:53:22,660 eventon kiu diras ies respondo al afiŝo. 1074 00:53:22,660 --> 00:53:26,110 >> Tiam la servilo diras, OK, Kion mi devas fari? 1075 00:53:26,110 --> 00:53:29,270 Nu nun mi devas diri al tiuj aliaj infanoj kiu estas sur CS50 Diskuti rigardis 1076 00:53:29,270 --> 00:53:31,170 ĉe afiŝo kiun iu'S respondi. 1077 00:53:31,170 --> 00:53:34,190 Do tio estas speco de tio, kion SocketIO estas bonan por ĉi tiu kontinua speco de 1078 00:53:34,190 --> 00:53:35,930 fluo da dialogo. 1079 00:53:35,930 --> 00:53:37,250 OK. 1080 00:53:37,250 --> 00:53:40,060 >> Do kion mi havas cxi tie, - kaj ni ĵus tuj ignori la rilatoj tabelo 1081 00:53:40,060 --> 00:53:41,390 por iom - 1082 00:53:41,390 --> 00:53:43,080 kion mi faras estas mi alia aŭskultas. 1083 00:53:43,080 --> 00:53:46,880 Do tio estas nur la vojo en Socket.IO estas dirante ni aŭskultos en ĉi tiu haveno. 1084 00:53:46,880 --> 00:53:50,060 Kaj tiam mi faras tion en rilato. 1085 00:53:50,060 --> 00:53:53,360 Do tio estas nur esence Socket IO la maniero diri, kiam ni ricevas 1086 00:53:53,360 --> 00:53:55,840 Tiurilate, mi volas ke vi kuri tiun kodon. 1087 00:53:55,840 --> 00:53:59,870 >> Kaj rimarki ke anstataŭ havi rec kaj rezolucio aprobita en tie mi havas konektilon. 1088 00:53:59,870 --> 00:54:03,260 Kaj tion Socket ideo estas esence ĉi afero, kiun vi povas skribi kaj legi 1089 00:54:03,260 --> 00:54:05,750 el kiuj havas la uzanto mesaĝojn eble. 1090 00:54:05,750 --> 00:54:10,700 Kaj la mesaĝoj kiujn vi sendus povas iri tra tiu Socket. 1091 00:54:10,700 --> 00:54:12,140 Ĉu tio havas sencon? 1092 00:54:12,140 --> 00:54:14,490 Do temas pri tiu ĉi daŭre afero. 1093 00:54:14,490 --> 00:54:17,820 >> Do kion mi faras estas mi vokas Socket.emit. 1094 00:54:17,820 --> 00:54:20,330 Kaj ili elsendas prenas bela multe du argumentojn. 1095 00:54:20,330 --> 00:54:24,100 La unua argumento estas ĉeno nur reprezentanta la tipo de 1096 00:54:24,100 --> 00:54:25,270 afero vi elsendas. 1097 00:54:25,270 --> 00:54:28,120 Do por tiu kazo, mi havas uzo tiun ĉenon novan mesaĝon. 1098 00:54:28,120 --> 00:54:32,670 Kaj tio estas nur esence dirante ke la tipo de tiu afero, kia mi estas 1099 00:54:32,670 --> 00:54:34,750 sendo, estas jam nova mesaĝo. 1100 00:54:34,750 --> 00:54:38,460 Do vi povas aŭskulti por specifaj tipoj kiel nova mesaĝo aŭ kiel ajn 1101 00:54:38,460 --> 00:54:39,960 uzante dot plu. 1102 00:54:39,960 --> 00:54:44,570 >> Do rilato kaj uzanto sendis tien, se vi rigardas al kie ni nomas dot on, 1103 00:54:44,570 --> 00:54:48,150 tiuj estas aliaj kordoj kiuj reprezentas tipoj de uzanto mesaĝoj. 1104 00:54:48,150 --> 00:54:52,060 Do ĝi estas esence vi povas havi ĉi eligi unu el ĉi tiuj mesaĝon tipoj, kaj 1105 00:54:52,060 --> 00:54:55,520 tiam faru ion en respondo al unu el ĉi tiuj mesaĝon tipoj 1106 00:54:55,520 --> 00:54:57,640 >> Do mi elsendas cxi tiu nova mesaĝo. 1107 00:54:57,640 --> 00:55:00,540 Ni iras al ignori connections.push por dua. 1108 00:55:00,540 --> 00:55:03,360 Sed tiam mi diros, Socket.on uzanto sendis. 1109 00:55:03,360 --> 00:55:07,540 Do nun ĝi estas speco de like kiam la uzulo sendas al mi mesaĝon, mi deziras 1110 00:55:07,540 --> 00:55:09,240 vi kuros ĉi-kodo. 1111 00:55:09,240 --> 00:55:12,080 Kaj rimarki ke tiu anonima funkcio prenas en tiu variablo 1112 00:55:12,080 --> 00:55:16,300 vokis datumoj kiuj estas esence irante por havi la uzanto mesaĝo. 1113 00:55:16,300 --> 00:55:20,700 >> Do nun ni ia diskuto pri la rilatoj tabelo. 1114 00:55:20,700 --> 00:55:24,590 Do tiu estas desegnita por babilejon kliento kie esence ĉies ia en 1115 00:55:24,590 --> 00:55:25,950 la sama babilejo. 1116 00:55:25,950 --> 00:55:29,640 Do esence, kion ni bezonas por subteni ĉirkaŭe estas iu tabelo kiu esence 1117 00:55:29,640 --> 00:55:33,170 reprezentas tutan popolon babili en iuj manieroj, se tio havas sencon. 1118 00:55:33,170 --> 00:55:33,340 Ĝuste? 1119 00:55:33,340 --> 00:55:37,190 Ĉar ni bezonas scii kiuj tiuj knaboj estas do ni povas sendi al ili la mesaĝojn 1120 00:55:37,190 --> 00:55:39,140 ke aliaj personoj sendas al ni. 1121 00:55:39,140 --> 00:55:44,440 >> Do kio estas tiu kodo faras estas kiam uzanto sendas mesaĝon - tio estas la tipo de 1122 00:55:44,440 --> 00:55:45,300 la evento - 1123 00:55:45,300 --> 00:55:47,120 Ni tuj kuri tiun kodon. 1124 00:55:47,120 --> 00:55:51,240 Kaj kion ni faros estas ni kuras tra tiu tabelo, kiun ni nomas rilatoj. 1125 00:55:51,240 --> 00:55:54,390 Kaj preskaux cxiu ligo krom tiun, kiu estas nia, tio estas 1126 00:55:54,390 --> 00:55:59,520 kio estas tiu kodo diras, ni sendu novan mesaĝo kun tiu alfiksis mesaĝon 1127 00:55:59,520 --> 00:56:01,210 informoj. 1128 00:56:01,210 --> 00:56:04,880 >> Do, se vi rimarkas tie ĉi, kion mi faris, kiam la uzanto reale faras novan 1129 00:56:04,880 --> 00:56:08,560 ligo estas Mi aldonis kun la JavaScript.push metodon, tio estas 1130 00:56:08,560 --> 00:56:12,100 esence nur diras kiel aldoni ke Socket kiel valoron en 1131 00:56:12,100 --> 00:56:13,900 niaj rilatoj tabelo. 1132 00:56:13,900 --> 00:56:20,560 Do nun, kiam tiu kodo kuras, gxi sendu tion al tiuj apartaj 1133 00:56:20,560 --> 00:56:22,020 rilatoj. 1134 00:56:22,020 --> 00:56:26,980 Do tio povas esti bona deirpunkto cxar farante babilejon servilo 1135 00:56:26,980 --> 00:56:28,250 aŭ io simila. 1136 00:56:28,250 --> 00:56:33,315 >> Kaj la specon de cool afero estas ke la kodo kiun vi vidas cxi tie por kia sur kaj 1137 00:56:33,315 --> 00:56:36,390 elsendas kaj necesajxojn kiel tiu estas la sama speco de JavaScript kodo kiun vi farus 1138 00:56:36,390 --> 00:56:39,260 skribu en la retumilo interagi kun la servilo. 1139 00:56:39,260 --> 00:56:42,480 Do jen kial SocketIO estas speco de neta kaj utila en tiu vojo. 1140 00:56:42,480 --> 00:56:45,680 1141 00:56:45,680 --> 00:56:49,250 >> Ho, kaj nur unu alia aĵo reala rapida. 1142 00:56:49,250 --> 00:56:55,970 Okazis CS50 fina projekto pasintjare kiu esence implementado babilejon 1143 00:56:55,970 --> 00:56:57,840 servilo en Node.js. 1144 00:56:57,840 --> 00:57:01,350 Mi kredas ke estas Harvardchats.org sed mi ne estas - 1145 00:57:01,350 --> 00:57:02,940 OK. 1146 00:57:02,940 --> 00:57:06,190 Mi ne certas kion la URL estas, sed Mi povas sendi kiuj eliris post tio. 1147 00:57:06,190 --> 00:57:09,260 Sed ĝi estas speco de malvarmigi kio vi povas fari kun Node.js. 1148 00:57:09,260 --> 00:57:14,680 >> Do mi esperas ke, ĝenerale, vi infanoj havas bona senso de kio Node.js estas utilaj 1149 00:57:14,680 --> 00:57:17,870 por kaj kiel vi povus eble apliki por via fina projekto. 1150 00:57:17,870 --> 00:57:21,050 Mi estos elsendanta iuj pli rimedoj kune kun tio. 1151 00:57:21,050 --> 00:57:23,170 Kaj dankon pro via vizito. 1152 00:57:23,170 --> 00:57:23,610 Dankon. 1153 00:57:23,610 --> 00:57:27,168 >> [Aplaŭdo]