1 00:00:00,000 --> 00:00:08,350 2 00:00:08,350 --> 00:00:09,710 >> KEVIN SCHMID: Bună ziua tuturor. 3 00:00:09,710 --> 00:00:12,640 Bine ați venit la seminarul CS50 pe Node.js. 4 00:00:12,640 --> 00:00:13,955 Numele meu este Kevin. 5 00:00:13,955 --> 00:00:15,580 Sunt un TF CS50. 6 00:00:15,580 --> 00:00:17,650 Și eu sunt un fel de foarte incantati cu privire la acest seminar. 7 00:00:17,650 --> 00:00:20,430 Cred că Node.js este foarte cool. 8 00:00:20,430 --> 00:00:24,200 Sper că acest seminar poate fi utilizat ca un bun, cred, rampă de lansare pentru 9 00:00:24,200 --> 00:00:26,380 unele dintre proiectele finale dacă sunteți interesat în utilizarea 10 00:00:26,380 --> 00:00:27,630 ceva de genul Node.js. 11 00:00:27,630 --> 00:00:29,770 12 00:00:29,770 --> 00:00:33,320 >> Vom fel de a începe prin a seminarului doar vorbesc despre un pic de 13 00:00:33,320 --> 00:00:36,970 fel de scalabilitate fundal perspective de Node.js, și apoi 14 00:00:36,970 --> 00:00:39,240 vom trece la câteva exemple de cod. 15 00:00:39,240 --> 00:00:42,340 Și voi avea codul de pe un site web, si poti sa te uiti la codul. 16 00:00:42,340 --> 00:00:45,475 Și după seminar, voi sorta a vorbi despre modul în care puteți configura Node.js 17 00:00:45,475 --> 00:00:48,220 pe computer. 18 00:00:48,220 --> 00:00:48,710 >> OK. 19 00:00:48,710 --> 00:00:49,760 Așa că hai să începem. 20 00:00:49,760 --> 00:00:53,700 Deci, cred eu vreau doar să vorbim despre servere de web, într-adevăr, în primul rând. 21 00:00:53,700 --> 00:00:59,730 Și pentru a începe această discuție, am practic au o diagramă care este de la 22 00:00:59,730 --> 00:01:04,269 manualul folosit pentru CS61, care practic arată interacțiunea 23 00:01:04,269 --> 00:01:08,510 între un proces de client, cum ar fi dvs. de web Browser-ul sau ca clientul dvs. scop sau 24 00:01:08,510 --> 00:01:11,340 ceva de genul asta, si un server web. 25 00:01:11,340 --> 00:01:15,150 Deci, acest tip de arata similar cu imagine pe care ați văzut-o în curs pe 26 00:01:15,150 --> 00:01:19,270 Miercuri, unde, practic, avem unele Procesul client ca Google Chrome. 27 00:01:19,270 --> 00:01:22,980 >> Și apoi pas este client trimite o cerere. 28 00:01:22,980 --> 00:01:27,510 Astfel că poate fi ceva de genul Ei bine, să vizita, eu nu știu, CS50.net. 29 00:01:27,510 --> 00:01:29,320 Așa că am emite această cerere. 30 00:01:29,320 --> 00:01:34,280 Și nu oricine amintesc numele de protocol care specifică modul în care 31 00:01:34,280 --> 00:01:35,610 cerere ar trebui să fie structurat? 32 00:01:35,610 --> 00:01:36,382 Da. 33 00:01:36,382 --> 00:01:37,650 >> Audiența: [inaudibil]. 34 00:01:37,650 --> 00:01:38,150 >> KEVIN SCHMID: Exact. 35 00:01:38,150 --> 00:01:40,100 Deci, e ca HTTP, corect? 36 00:01:40,100 --> 00:01:44,720 Deci, practic caietul de sarcini pentru modul în care că cererea ar trebui să fie de fapt stabilite 37 00:01:44,720 --> 00:01:47,450 afară, pentru că la sfârșitul zilei, că cererea este într-adevăr la fel ca un 38 00:01:47,450 --> 00:01:50,240 șir care, practic, spune eu vreau asta. 39 00:01:50,240 --> 00:01:53,580 Și caietul de sarcini pentru care este HTTP. 40 00:01:53,580 --> 00:01:55,270 Deci, asta e ca un protocol. 41 00:01:55,270 --> 00:01:57,920 >> Deci, atunci serverul primește această cerere. 42 00:01:57,920 --> 00:02:01,610 Deci, voi avea un server de web instalata în aparatul CS50. 43 00:02:01,610 --> 00:02:02,460 E Apache. 44 00:02:02,460 --> 00:02:06,230 Și în această săptămână, atunci când lucrați pe probleme set de șapte, veți fi de fapt de lucru 45 00:02:06,230 --> 00:02:08,160 cu serverul web. 46 00:02:08,160 --> 00:02:12,380 Deci, serverul primește această cerere, și atunci trebuie să fel de zgârie sale 47 00:02:12,380 --> 00:02:15,090 cap si spune ca bine ce să fac cu asta? 48 00:02:15,090 --> 00:02:20,060 >> Deci, bazat pe ceea ce se decide să facă, atunci ar putea fi necesar să contactați un fel 49 00:02:20,060 --> 00:02:20,730 de resurse. 50 00:02:20,730 --> 00:02:23,700 Și că resursa ar putea fi o mulțime de lucruri diferite. 51 00:02:23,700 --> 00:02:26,810 Pentru unul, ar putea fi doar ca un fisier HTML static. 52 00:02:26,810 --> 00:02:29,820 Așa că ar putea fi la fel ca și unele HTML, care este ca pentru 53 00:02:29,820 --> 00:02:31,100 site-ul tau personal. 54 00:02:31,100 --> 00:02:35,360 Acesta ar putea fi un fișier static ca o imagine sau ca un film pe care le au. 55 00:02:35,360 --> 00:02:37,660 S-ar putea avea chiar pentru a vorbi la un fel de baze de date 56 00:02:37,660 --> 00:02:39,530 cum ar fi o bază de date MySQL. 57 00:02:39,530 --> 00:02:43,910 Așa că nu trebuie întotdeauna să comunice cu o resursă, dar în 58 00:02:43,910 --> 00:02:45,700 unele cazuri, ar putea. 59 00:02:45,700 --> 00:02:47,800 >> Deci, atunci ce se va face după ce că este o să 60 00:02:47,800 --> 00:02:49,430 trimite înapoi răspunsul. 61 00:02:49,430 --> 00:02:53,130 Și răspunsul pentru acest lucru este de asemenea, specificate de HTTP. 62 00:02:53,130 --> 00:02:54,830 Deci, atunci clientul poate primi. 63 00:02:54,830 --> 00:02:56,740 Se poate rupe în afară și-l proceseze. 64 00:02:56,740 --> 00:03:00,900 Și atunci veți obține o pagină web cum ar fi Google sau CS50.net sau 65 00:03:00,900 --> 00:03:02,240 tot ce te-ai dus la. 66 00:03:02,240 --> 00:03:03,100 OK? 67 00:03:03,100 --> 00:03:06,080 >> Deci, aceasta este interacțiunea de bază care am de gând să se ocupe cu. 68 00:03:06,080 --> 00:03:08,770 Și suntem destul de mult va fi concentrându-se pe această parte a 69 00:03:08,770 --> 00:03:10,640 interacțiune, serverul. 70 00:03:10,640 --> 00:03:10,990 OK. 71 00:03:10,990 --> 00:03:12,210 Rece. 72 00:03:12,210 --> 00:03:15,500 Oricine are orice întrebări până acum? 73 00:03:15,500 --> 00:03:17,720 OK. 74 00:03:17,720 --> 00:03:22,430 >> Așa cum am spus, serverul de web primește această cerere HTTP și apoi emite această 75 00:03:22,430 --> 00:03:24,760 Răspuns HTTP. 76 00:03:24,760 --> 00:03:29,100 Și, ca și cum am vorbit despre înainte, Server web aparat CS50 este Apache. 77 00:03:29,100 --> 00:03:32,490 Deci, atunci când voi lucra la P set de șapte, ai de gând să fie de lucru cu 78 00:03:32,490 --> 00:03:34,120 Server web Apache. 79 00:03:34,120 --> 00:03:37,890 Nu vei mai avea de a lucra într-adevăr cu Apache direct prea mult. 80 00:03:37,890 --> 00:03:41,920 Ai un fel de a configura Apache un pic Când specificați gazdele virtuale sau 81 00:03:41,920 --> 00:03:44,970 a v gazde, și vom obține pentru că într-un pic. 82 00:03:44,970 --> 00:03:50,620 >> Dar, în esență, serverul de web Apache configurat pentru a lucra cu PHP fel 83 00:03:50,620 --> 00:03:51,730 a scos din cutie. 84 00:03:51,730 --> 00:03:56,170 Deci, ce se întâmplă cu adevărat este atunci când te duci la unul dintre site-urile dvs., cum ar fi, să zicem, 85 00:03:56,170 --> 00:04:00,360 locale slash index.php gazdă sau ceva, este browser-ul dvs., care trimite 86 00:04:00,360 --> 00:04:04,330 cerere, și apoi Apache este așezat acolo și da seama de a face cu ea. 87 00:04:04,330 --> 00:04:08,840 Iar acțiunea este de a executa acest cod în index.php și 88 00:04:08,840 --> 00:04:11,330 apoi trimite-l înapoi. 89 00:04:11,330 --> 00:04:15,640 Deci nu e asta. 90 00:04:15,640 --> 00:04:16,980 Așa că am un fel de vorbit despre asta. 91 00:04:16,980 --> 00:04:21,990 Așa că ar putea servi doar un fișier static sau rula unele cod PHP și apoi problema 92 00:04:21,990 --> 00:04:23,510 răspunsul. 93 00:04:23,510 --> 00:04:27,670 >> Deci, apoi o întrebare comună, care poate veni up este bine, cum nu avem de a face cu adevărat 94 00:04:27,670 --> 00:04:31,750 cu care au mai mulți utilizatori în același timp? 95 00:04:31,750 --> 00:04:36,930 Deci, imaginați-vă, dacă ați scrie un web de server, dacă ați avut un server de web care 96 00:04:36,930 --> 00:04:39,900 ați încercat să scrie în ceva cum ar fi C sau ceva de genul asta, 97 00:04:39,900 --> 00:04:45,150 în principiu, vă puteți gândi despre modul în care există ar putea fi un fel de cod care 98 00:04:45,150 --> 00:04:49,330 ar primi cererea, dar apoi o are de a face toată această muncă pe ea. 99 00:04:49,330 --> 00:04:53,060 Acesta poate avea, de exemplu, contactați baze de date sau ceva de genul asta. 100 00:04:53,060 --> 00:04:53,300 Corect? 101 00:04:53,300 --> 00:04:56,010 Și apoi s-ar face acest tip de prelucrare și apoi 102 00:04:56,010 --> 00:04:57,060 trimis înapoi răspunsul. 103 00:04:57,060 --> 00:04:58,950 Deci, asta e ca și cum high Privire de ansamblu asupra nivel. 104 00:04:58,950 --> 00:05:04,210 >> Dar nu este imediat evident cum te poate face acest lucru pentru ca doi oameni sau 105 00:05:04,210 --> 00:05:09,040 chiar și 1.000 de oameni ar putea lucra cu dvs. server web, în ​​același timp. 106 00:05:09,040 --> 00:05:14,880 Deci, soluția care utilizează Apache se numește fire sau procese. 107 00:05:14,880 --> 00:05:16,770 Deci, este posibil să fi auzit de acești termeni înainte. 108 00:05:16,770 --> 00:05:22,190 E în regulă, dacă nu ai, dar gândește-te cu privire la subiectele sau procese ca moduri de 109 00:05:22,190 --> 00:05:26,290 un sistem de operare sau un program de utilizator sau ceva de genul asta sau un server web 110 00:05:26,290 --> 00:05:28,810 pentru a executa un fel de multiple lucruri de la o dată. 111 00:05:28,810 --> 00:05:31,760 Deci, este posibil să fi auzit termenul de cum ar fi fire de execuție. 112 00:05:31,760 --> 00:05:34,140 Deci e un fel de ai un fel de multitasking. 113 00:05:34,140 --> 00:05:37,710 >> Și dacă ați văzut pe caseta de dvs. laptop, sau ceva de genul asta, 114 00:05:37,710 --> 00:05:43,040 multicore, ceea ce poate face este posibil alerga două fire de diferite pe diferite 115 00:05:43,040 --> 00:05:46,700 părți ale procesorului, astfel încât să poată întâmpla, de fapt, în același timp. 116 00:05:46,700 --> 00:05:48,100 Deci, acest lucru este cu adevărat puternic. 117 00:05:48,100 --> 00:05:52,270 Și aceasta este un fel de a lui Apache soluție la această problemă. 118 00:05:52,270 --> 00:05:57,900 >> Deci, există un fel de probleme cu această abordare, deși? 119 00:05:57,900 --> 00:05:59,870 Deci cred ca am facut un fel de le-a scris acolo. 120 00:05:59,870 --> 00:06:03,440 Dar ambele dintre ele un fel de folosi o mulțime de memorie. 121 00:06:03,440 --> 00:06:07,490 Este foarte scump pentru a crea un fir sau un proces. 122 00:06:07,490 --> 00:06:11,750 >> Și o parte din raționamentul este că doar ca atunci când rulați un program C 123 00:06:11,750 --> 00:06:15,090 ca principal și apoi că apelurile o altă funcție, care are 124 00:06:15,090 --> 00:06:16,520 un fel de stivă. 125 00:06:16,520 --> 00:06:19,910 Deci, fire necesită, de asemenea, un complet stivă separată care 126 00:06:19,910 --> 00:06:21,220 poate fi destul de mare. 127 00:06:21,220 --> 00:06:25,170 Și dacă vă puteți imagina cu tone de utilizatorii de pe site-ul dvs., va trebui 128 00:06:25,170 --> 00:06:26,280 o mulțime de fire diferite. 129 00:06:26,280 --> 00:06:28,230 Aceasta este o mulțime de stive de gestiona și să mențină. 130 00:06:28,230 --> 00:06:31,280 Deci, este un consum mare de memorie. 131 00:06:31,280 --> 00:06:35,650 >> Și apoi, de asemenea, să presupunem că aveți doar un procesor, sau să presupunem că aveți 132 00:06:35,650 --> 00:06:38,460 mai multe fire decât ați aceste multicores. 133 00:06:38,460 --> 00:06:38,730 Corect? 134 00:06:38,730 --> 00:06:43,280 Deci, să spunem că ai avut 10 de fire și ați avut doar cinci procesoare. 135 00:06:43,280 --> 00:06:46,260 Ai un fel de trebuie să fac acest lucru în cazul în care comutați între curentul 136 00:06:46,260 --> 00:06:49,090 unul care se execută pentru că nu poate rula toate 10 dintr-o dată. 137 00:06:49,090 --> 00:06:50,980 Și care se numește o schimbare de context. 138 00:06:50,980 --> 00:06:54,260 Și că termenul are de fapt o pereche de contexte diferite, dar hai să 139 00:06:54,260 --> 00:06:56,620 cred că de ea ca de comutare între două fire. 140 00:06:56,620 --> 00:06:59,730 Care poate fi destul de costisitoare, deoarece de fapt ceea ce trebuie să faceți este să vă 141 00:06:59,730 --> 00:07:03,340 trebuie sa te opresti ceea ce faci, salva de stat de care fir de funcționare, și 142 00:07:03,340 --> 00:07:05,440 apoi trece în altă parte. 143 00:07:05,440 --> 00:07:09,420 >> Deci, nu toată lumea fel de vedea motivația de ce fire și 144 00:07:09,420 --> 00:07:12,030 procese ar putea fi un pic mai voluminos? 145 00:07:12,030 --> 00:07:13,840 Și ai avut o întrebare? 146 00:07:13,840 --> 00:07:14,376 OK. 147 00:07:14,376 --> 00:07:15,070 Rece. 148 00:07:15,070 --> 00:07:18,090 Are cineva vreo întrebare? 149 00:07:18,090 --> 00:07:19,620 OK. 150 00:07:19,620 --> 00:07:26,720 >> Deci, dacă am lua un pas înapoi pentru un al doilea, nu e ca un fel de 151 00:07:26,720 --> 00:07:30,350 observație pe care o putem face despre o mulțime de aplicații web. 152 00:07:30,350 --> 00:07:34,810 Și că este într-adevăr că o mulțime de ei de fapt, nu face atât de mult utile 153 00:07:34,810 --> 00:07:37,140 locul de muncă în interiorul de un fir. 154 00:07:37,140 --> 00:07:41,170 Așa a început cineva pe P stabilit șapte la toate? 155 00:07:41,170 --> 00:07:45,650 Deci, nu vrei să descrie, poate unele părți? 156 00:07:45,650 --> 00:07:47,850 Ai lucrat la autentificare sau ceva de genul asta? 157 00:07:47,850 --> 00:07:49,330 >> Audiența: Nu. 158 00:07:49,330 --> 00:07:49,780 >> KEVIN SCHMID: OK. 159 00:07:49,780 --> 00:07:50,150 Nu face nimic. 160 00:07:50,150 --> 00:07:50,900 Scuze. 161 00:07:50,900 --> 00:07:55,790 Dar, în esență, în setul P, esti va fi a face o mulțime de fel de 162 00:07:55,790 --> 00:07:59,760 interogări la o bază de date pentru a obține unele informații din baza de date. 163 00:07:59,760 --> 00:08:03,330 Și ce codul este de gând să faci, ce acest proces Apache sau 164 00:08:03,330 --> 00:08:06,030 care fir Apache se va face în timp ce trebuie să contacteze 165 00:08:06,030 --> 00:08:08,990 Baza de date este un fel de a merge pentru a fi stând acolo și că va fi 166 00:08:08,990 --> 00:08:12,130 așteptare pentru baza de date pentru a răspunde. 167 00:08:12,130 --> 00:08:16,290 >> Acum, că nu ar putea suna ca-i mare a face, deoarece baza de date este pe dvs. 168 00:08:16,290 --> 00:08:18,240 Aparat CS50, corect? 169 00:08:18,240 --> 00:08:22,930 Dar există un fel de rețea latenta acolo pentru că acum web 170 00:08:22,930 --> 00:08:26,830 server are de a emite propria sa cerere de a baza de date pentru a comunica cu 171 00:08:26,830 --> 00:08:29,520 baze de date și apoi obține că informații înapoi. 172 00:08:29,520 --> 00:08:33,190 Deci, acum e ca si cum bine așteptați pentru mine, eu sunt duc să iau ceva de la 173 00:08:33,190 --> 00:08:35,770 baze de date și apoi există o mulțime de așteptare se întâmplă. 174 00:08:35,770 --> 00:08:36,870 Asta face sens? 175 00:08:36,870 --> 00:08:38,580 >> Și pentru unele lucruri nu-i așa de rău. 176 00:08:38,580 --> 00:08:41,950 Dacă are doar la, de exemplu, memorie de acces, că nu e ca 177 00:08:41,950 --> 00:08:44,100 oribil I / O latență. 178 00:08:44,100 --> 00:08:47,110 Și când spun, I / O latenta, ceea ce am referindu-se la este la fel ca orice fel de 179 00:08:47,110 --> 00:08:48,290 ieșire de intrare. 180 00:08:48,290 --> 00:08:52,950 Dar pentru a accesa un fișier de pe disc, cum ar fi dacă am vrut să servi static HTML 181 00:08:52,950 --> 00:08:57,850 fișier care a fost pe pagina mea de web sau ceva de genul asta, un fel de trebuie să 182 00:08:57,850 --> 00:09:02,310 opri pentru un pic, citit acel fișier in de pe disc, și apoi în 183 00:09:02,310 --> 00:09:04,400 acest proces Aștept. 184 00:09:04,400 --> 00:09:06,700 Eu nu fac de lucru util. 185 00:09:06,700 --> 00:09:11,270 >> Acest lucru nu este valabil pentru tot ceea ce, dar se este comun în aplicații cum ar fi set P 186 00:09:11,270 --> 00:09:13,960 șapte și o mulțime de aplicații că tu nu ești 187 00:09:13,960 --> 00:09:15,440 a face de fapt mult de gândire. 188 00:09:15,440 --> 00:09:19,090 Și când spun gândire, vreau să spun cum ar fi munca de calcul. 189 00:09:19,090 --> 00:09:23,270 De lucru, astfel de calcul ar putea fi ceva cum ar fi, să zicem, ai vrut să 190 00:09:23,270 --> 00:09:26,590 Trimite un server web care doar calculată numărul Fibonacci n-lea. 191 00:09:26,590 --> 00:09:29,300 Asta nu suna ca o deosebit de server web distractiv. 192 00:09:29,300 --> 00:09:34,220 Ca și cum nu s-ar aștepta ca site-ul să fie următoarea Facebook, dar că este un 193 00:09:34,220 --> 00:09:35,610 un fel de muncă de calcul. 194 00:09:35,610 --> 00:09:39,570 >> Și vă puteți imagina că înlocuirea cu un alt fel de interesant 195 00:09:39,570 --> 00:09:43,070 lucru de calcul. 196 00:09:43,070 --> 00:09:46,050 Să presupunem că s-au scris ceva că calculate gradele de 197 00:09:46,050 --> 00:09:49,170 separare între două persoane sau ceva de genul asta. 198 00:09:49,170 --> 00:09:51,860 Astfel că nu implică un fel de calcul, corect? 199 00:09:51,860 --> 00:09:56,630 Și chiar și atunci, pentru a face acest lucru aveți în continuare pentru a face o mulțime de așteptare pentru, poate, 200 00:09:56,630 --> 00:09:59,550 aveți pentru a interoga o bază de date pentru a căuta up care sunt prietenii cu care sau 201 00:09:59,550 --> 00:10:00,600 ceva de genul asta. 202 00:10:00,600 --> 00:10:03,510 Deci, nu există acest tip de noțiune lucru de calcul. 203 00:10:03,510 --> 00:10:05,260 Asta face sens? 204 00:10:05,260 --> 00:10:08,258 Are cineva vreo întrebare? 205 00:10:08,258 --> 00:10:11,960 >> Oh, și cred că am pus servere de chat acolo deoarece serverele de chat sunt un fel de 206 00:10:11,960 --> 00:10:13,240 un alt bun exemplu în acest sens. 207 00:10:13,240 --> 00:10:15,250 Un server de chat nu are pentru a face mai mult de gândire. 208 00:10:15,250 --> 00:10:18,350 Ea are doar să așteptați pentru ca oamenii să trimite mesaje și atunci când 209 00:10:18,350 --> 00:10:19,800 ei nu, trimite-le. 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 >> Deci, doar pentru a recapitula din nou, Apache și servere de web similare, cum ar fi faptul că o furculiță 213 00:10:28,180 --> 00:10:31,470 mulțime de fire și procese care poate fi un fel de risipitor. 214 00:10:31,470 --> 00:10:37,530 Deci, cred că întrebarea care ar putea veni din care este avem nevoie pentru a avea 215 00:10:37,530 --> 00:10:39,610 mai multe fire și procese? 216 00:10:39,610 --> 00:10:41,890 Ce se întâmplă dacă am avut doar unul? 217 00:10:41,890 --> 00:10:45,710 >> Deci, haideți să fel de vopsea o imagine de ce acest lucru ar arata ca. 218 00:10:45,710 --> 00:10:47,810 Deci, haideți să folosim un singur fir. 219 00:10:47,810 --> 00:10:48,660 OK? 220 00:10:48,660 --> 00:10:52,790 Deci, doar imagina acest lucru cu un singur fir. 221 00:10:52,790 --> 00:10:56,600 >> Să presupunem că nu au fost într-adevăr a face că mult util - și când spun 222 00:10:56,600 --> 00:10:59,450 util, vreau să spun de lucru de calcul - 223 00:10:59,450 --> 00:11:01,130 în cele mai multe fire înainte. 224 00:11:01,130 --> 00:11:04,180 Deci, haideți să fel de a consolida totul într-un singur fir. 225 00:11:04,180 --> 00:11:07,780 Deci, ce se întâmplă dacă am avut un fir de acest tip a merge doar în jurul valorii de bucla și 226 00:11:07,780 --> 00:11:10,880 în mod constant controale făcut ceva nou întâmpla. 227 00:11:10,880 --> 00:11:15,130 Deci, de exemplu, ceva nou sa întâmplat ar putea însemna Am ceva înapoi de la 228 00:11:15,130 --> 00:11:19,310 baza de date, sau cineva a trimis mi-o nouă cerere HTTP. 229 00:11:19,310 --> 00:11:22,290 Deci, acestea sunt un fel de evenimente să se întâmple asta, nu? 230 00:11:22,290 --> 00:11:26,130 >> Și atunci ce pot face atunci când cele noi lucrurile sa se intample este în același fir 231 00:11:26,130 --> 00:11:30,120 de execuție, acest singur fir de execuție, pot suna un cod care 232 00:11:30,120 --> 00:11:32,410 se va ocupa de chestia aia special. 233 00:11:32,410 --> 00:11:36,640 Deci, de exemplu, dacă am ceva înapoi din baza de date, am putea alerga meu 234 00:11:36,640 --> 00:11:40,960 mică parte de calcul a acesteia, care de fapt, pregătește doar un lucru pentru 235 00:11:40,960 --> 00:11:42,620 trimite înapoi la utilizator. 236 00:11:42,620 --> 00:11:46,710 Deci, nu ca un fel de sens? 237 00:11:46,710 --> 00:11:49,940 >> Dar ceea ce sunt cu adevărat implicații ale acestei? 238 00:11:49,940 --> 00:11:50,660 Corect? 239 00:11:50,660 --> 00:11:53,730 Pentru că am scris o mulțime de cod care - 240 00:11:53,730 --> 00:11:58,330 și eu sunt doar de gând să sari mai departe în slide-uri, dacă e în regulă. 241 00:11:58,330 --> 00:12:00,930 Deci, dacă nu te superi, eu sunt doar de gând să ia un pas înapoi. 242 00:12:00,930 --> 00:12:03,410 Deci, acest tip de lucru este numit o buclă eveniment. 243 00:12:03,410 --> 00:12:04,070 OK? 244 00:12:04,070 --> 00:12:07,240 Și e un fel de bază Ideea din spatele Node.js. 245 00:12:07,240 --> 00:12:11,240 >> Deci, ceea ce este cu adevărat Node.js face ca un web server este există un singur fir 246 00:12:11,240 --> 00:12:14,850 care este, în principiu întâmplă în jurul într-o buclă ca de ceva vreme un fel de sub 247 00:12:14,850 --> 00:12:18,510 capota Node.js care este în mod constant verificarea, am primi lucruri noi? 248 00:12:18,510 --> 00:12:22,720 Și apoi se va rula Stivuitoare că ați configurat. 249 00:12:22,720 --> 00:12:26,720 Dar o întrebare bună care se pune este, cum putem face acest lucru 250 00:12:26,720 --> 00:12:28,090 cu lucruri existente? 251 00:12:28,090 --> 00:12:32,440 >> Așa că am pus o linie de cod C de aici că de fapt arata ca si cum ar deschide o 252 00:12:32,440 --> 00:12:33,060 fișier, corect? 253 00:12:33,060 --> 00:12:36,090 Am Ea a venit cu un album. 254 00:12:36,090 --> 00:12:39,600 Așa că a trebuit să-i deschidă un nou fișier. 255 00:12:39,600 --> 00:12:43,810 Deci, modul în care codul nostru C pentru funcționare - 256 00:12:43,810 --> 00:12:47,890 și cred că motivul pentru care am ales fisiere fost deoarece aceasta este un fel de măsură 257 00:12:47,890 --> 00:12:52,000 de muncă I / O pe care le-am făcut în C în un sentiment că există ieșire de intrare. 258 00:12:52,000 --> 00:12:55,070 Deci, noi numim acest cod care face acest lucru f deschis. 259 00:12:55,070 --> 00:12:59,370 Și apoi pe următoarea linie de nostru Programul, putem lucra acum cu f. 260 00:12:59,370 --> 00:13:02,710 >> Deci, acest lucru ar fi un exemplu de ceva e ca și cum sincron sau 261 00:13:02,710 --> 00:13:06,850 blocarea, deoarece pe care prima linie nu așteptăm până când vom 262 00:13:06,850 --> 00:13:08,110 obține fișierul deschis. 263 00:13:08,110 --> 00:13:12,260 Deci, pe a doua linie, știm că poate lucra cu f, dar acest lucru înseamnă că 264 00:13:12,260 --> 00:13:16,240 că a doua linie nu poate rula într-adevăr până la prima linie se face. 265 00:13:16,240 --> 00:13:17,760 Asta face sens? 266 00:13:17,760 --> 00:13:20,890 >> Deci, acest lucru ar fi rău să pună într-un handler eveniment. 267 00:13:20,890 --> 00:13:23,920 Și motivul pentru care este faptul că acest tip de asteapta, nu? 268 00:13:23,920 --> 00:13:26,500 Deci, acest lucru ne-ar reveni pentru același lucru. 269 00:13:26,500 --> 00:13:29,470 Iar acum nici măcar nu ar avea beneficia de mai multe fire sau 270 00:13:29,470 --> 00:13:32,390 procese pentru că avem un fir în Node.js. 271 00:13:32,390 --> 00:13:35,496 Asta face sens pentru toată lumea? 272 00:13:35,496 --> 00:13:35,990 >> Audiența: Așteaptă. 273 00:13:35,990 --> 00:13:36,980 Deci, ce-i înlocuirea? 274 00:13:36,980 --> 00:13:37,840 >> KEVIN SCHMID: Oh, așa da. 275 00:13:37,840 --> 00:13:39,560 Așa că am de gând să ajung la înlocuirea. 276 00:13:39,560 --> 00:13:40,430 OK. 277 00:13:40,430 --> 00:13:42,960 Și ce dacă am avea ceva care arata ca aceasta? 278 00:13:42,960 --> 00:13:45,730 Deci, ce dacă acum am editat f deschide un pic? 279 00:13:45,730 --> 00:13:48,370 Deci, eu sunt trece în aceeași două argumente ca înainte. 280 00:13:48,370 --> 00:13:52,610 Eu încă place noua piesa că ea a venit cu. 281 00:13:52,610 --> 00:13:57,260 Dar eu sunt trece printr-un al treilea lucru care este această variabilă numită cod. 282 00:13:57,260 --> 00:14:02,280 >> Dar ceea ce este de fapt codul de în acest context? 283 00:14:02,280 --> 00:14:05,360 Este ca o variabila C regulat? 284 00:14:05,360 --> 00:14:06,740 Este o funcție, nu? 285 00:14:06,740 --> 00:14:09,450 Și care ar putea fi un pic ciudat, deoarece Sunt de fapt ca acum trece printr-un 286 00:14:09,450 --> 00:14:12,320 funcționeze într-o altă funcție. 287 00:14:12,320 --> 00:14:14,400 >> Deci, câteva lucruri de reținut despre acest lucru. 288 00:14:14,400 --> 00:14:17,145 Unul, eu nu sunt de fapt de asteptare funcția de cod. 289 00:14:17,145 --> 00:14:20,650 Deci, tu nu vezi codul cu paren stânga, paren corect. 290 00:14:20,650 --> 00:14:23,010 Sunt doar în trecere în cod. 291 00:14:23,010 --> 00:14:26,990 Și în C, ceea ce ar face de fapt este da-mi un pointer la care efectiv 292 00:14:26,990 --> 00:14:29,740 cod, iar atunci acest lucru ar putea rula. 293 00:14:29,740 --> 00:14:33,350 Dar gandeste-te la asta ca esti trece codul pentru a rula atunci când 294 00:14:33,350 --> 00:14:35,150 că fișierul este deschis. 295 00:14:35,150 --> 00:14:41,430 >> Dar ce înseamnă acest lucru este că acum restul de programul meu, care ar putea face 296 00:14:41,430 --> 00:14:47,050 alte lucruri, pot continua să facă alte lucruri în timp ce noi, nu într-adevăr așteaptă, dar 297 00:14:47,050 --> 00:14:50,890 doar în partea din spate a capului nostru că atunci când sunt deschise, alerga ca fișier care 298 00:14:50,890 --> 00:14:52,130 cod în partea de sus. 299 00:14:52,130 --> 00:14:53,390 Asta face sens? 300 00:14:53,390 --> 00:14:58,060 >> Și acum, ideea din spatele Node.js este că codul în chestii face cu f 301 00:14:58,060 --> 00:15:04,590 parte ar trebui să fie destul de scurte și simple și simplu și să nu fie adevărat 302 00:15:04,590 --> 00:15:06,160 foarte intens in calcule. 303 00:15:06,160 --> 00:15:09,390 Aceasta poate avea pentru a deschide un alt dosar, dar că ar trebui să fie, de asemenea, destul de rapid 304 00:15:09,390 --> 00:15:14,710 pentru că ar trebui să spun doar face o altă f deschideți și apoi apel această alt cod. 305 00:15:14,710 --> 00:15:19,100 >> Deci, doar pentru a fi pe deplin clar, f deschide care face noua piesa Katy Perry 306 00:15:19,100 --> 00:15:23,060 făcut mp3, care va destul de mult reveni imediat. 307 00:15:23,060 --> 00:15:27,820 Și apoi putem pur și simplu să continue a face alte lucruri pentru că tot ceea ce acum f 308 00:15:27,820 --> 00:15:33,410 apel deschis nu se spune, practic, cod deschis f stau la baza deschide acest fișier 309 00:15:33,410 --> 00:15:36,020 și atunci când ați terminat deschiderea acestui fișier sau atunci când l înapoi, 310 00:15:36,020 --> 00:15:37,480 apoi executați codul. 311 00:15:37,480 --> 00:15:39,540 Dar ea nu se execută de fapt acest cod. 312 00:15:39,540 --> 00:15:41,815 Si tu ai avut o întrebare? 313 00:15:41,815 --> 00:15:46,180 >> Audiența: Ai părea să sugereze câteva ori că adăugarea de calcul 314 00:15:46,180 --> 00:15:50,545 Codul intensiv fel de pauză [Inaudibil] sistem de condus. 315 00:15:50,545 --> 00:15:51,795 [Inaudibil]? 316 00:15:51,795 --> 00:15:54,450 317 00:15:54,450 --> 00:15:55,290 >> KEVIN SCHMID: Asta este o întrebare mare. 318 00:15:55,290 --> 00:15:59,280 Așa că am de fapt, un exemplu de cât de ai putea integra calcul 319 00:15:59,280 --> 00:16:01,090 cod intensivă într-un pic. 320 00:16:01,090 --> 00:16:03,620 Așa că atunci când vom ajunge la exemple de cod, Voi fi sigur de a trage asta. 321 00:16:03,620 --> 00:16:04,700 Este că OK? 322 00:16:04,700 --> 00:16:05,950 Mulțumesc. 323 00:16:05,950 --> 00:16:07,690 324 00:16:07,690 --> 00:16:08,750 >> Care era numele tău? 325 00:16:08,750 --> 00:16:10,620 >> Audiența: Aaron. 326 00:16:10,620 --> 00:16:14,830 >> KEVIN SCHMID: Aaron aduce o foarte bun punct, ceea ce este că, dacă am avut 327 00:16:14,830 --> 00:16:18,560 un cod intensive de calcul în chestii-a face cu partea F, restul de 328 00:16:18,560 --> 00:16:22,880 Programul meu nu poate rula și nu pot asculta pentru cererile noi sau nimic până când toate 329 00:16:22,880 --> 00:16:24,270 chestii, care este terminat. 330 00:16:24,270 --> 00:16:27,390 Deci, dacă eu scriu cod Node, în general, dacă nu facem ceva ca și cum am de gând 331 00:16:27,390 --> 00:16:33,060 pentru a sugera mai târziu, atunci când ne uităm la exemple de cod, trebuie să fii sigur că 332 00:16:33,060 --> 00:16:36,060 codul meu nu se lega această buclă eveniment. 333 00:16:36,060 --> 00:16:38,120 Asta face sens? 334 00:16:38,120 --> 00:16:38,350 OK. 335 00:16:38,350 --> 00:16:40,040 Rece. 336 00:16:40,040 --> 00:16:47,090 >> Deci Node.js oferă acest cadru care puteți construi aceste determinate de un eveniment 337 00:16:47,090 --> 00:16:48,210 servere cu. 338 00:16:48,210 --> 00:16:53,460 Așa că are aceste tipuri de asincron non-blocking I / O biblioteci, în timp ce 339 00:16:53,460 --> 00:16:56,800 bibliotecile C standard pe care le-am fost de lucru cu, cum ar fi dacă ai doar 340 00:16:56,800 --> 00:16:59,500 le folosesc în același mod în care ne-am fost folosindu-le cu F se deschide și 341 00:16:59,500 --> 00:17:03,000 lucruri, acestea sunt blocarea, deoarece va trebui de fapt să așteptați pentru 342 00:17:03,000 --> 00:17:04,470 care fișier pentru al deschide. 343 00:17:04,470 --> 00:17:09,290 >> Dar Node.js vă oferă ca și o practic leagă în V8 Google 344 00:17:09,290 --> 00:17:14,030 JavaScript motor care este motivul că Chrome este atât de rapid la procesarea 345 00:17:14,030 --> 00:17:17,040 JavaScript deoarece are acest motor V8. 346 00:17:17,040 --> 00:17:22,460 Deci, eu știu că sună ca unul dintre cei WWDC conferințe dezvoltator lucru 347 00:17:22,460 --> 00:17:25,390 în cazul în care arunca doar o adunatura de Număr scrisoare lucruri de procesoare 348 00:17:25,390 --> 00:17:26,910 și spun acest lucru este atât de cool. 349 00:17:26,910 --> 00:17:34,200 Dar este rece că au făcut aceasta pentru că JavaScript - 350 00:17:34,200 --> 00:17:37,010 sau, poate, dacă nu sunteți familiarizați cu JavaScript dar pentru că nu am avut 351 00:17:37,010 --> 00:17:38,180 prelegeri pe ea - 352 00:17:38,180 --> 00:17:40,770 dar JavaScript este un interpretată limbă. 353 00:17:40,770 --> 00:17:41,970 >> Și acesta este un punct important de asemenea. 354 00:17:41,970 --> 00:17:45,790 Asa ca este important pentru web nostru servere pentru a fi rapid, corect? 355 00:17:45,790 --> 00:17:49,970 Și dacă am fost doar rularea JavaScript cod care a fost interpretată cu doar 356 00:17:49,970 --> 00:17:52,130 orice interpret vechi ar putea fi lent. 357 00:17:52,130 --> 00:17:55,980 Beneficii astfel încât nodul din care au acest super rapid interpret V8. 358 00:17:55,980 --> 00:17:59,580 Și nu știu dacă l-au numit deoarece palmă V8 în frunte 359 00:17:59,580 --> 00:18:01,110 lucru, dar OK. 360 00:18:01,110 --> 00:18:07,070 >> Așa că am pregătit câteva exemple la acest URL. 361 00:18:07,070 --> 00:18:10,490 După seminar, am un fel de a merge la vorbesc despre modul în care puteți obține set Node 362 00:18:10,490 --> 00:18:13,570 , dar pentru acum, am doar un fel de doresc sa se plimbe prin câteva exemple de cod. 363 00:18:13,570 --> 00:18:17,250 Deci, dacă doriți să urmați de-a lungul, toate Codul sursă este disponibil acolo. 364 00:18:17,250 --> 00:18:18,720 OK? 365 00:18:18,720 --> 00:18:22,280 >> Așa că vom lăsa acest URL pentru un pic. 366 00:18:22,280 --> 00:18:24,440 Și apoi eu voi face la fel trece în terminal. 367 00:18:24,440 --> 00:18:29,670 368 00:18:29,670 --> 00:18:34,400 Toată lumea e bine cu această adresă URL? 369 00:18:34,400 --> 00:18:37,990 Așa că am de gând să treacă peste la terminalul meu aici. 370 00:18:37,990 --> 00:18:42,030 >> Deci, aici e codul care Am pentru ziua de azi. 371 00:18:42,030 --> 00:18:43,960 De ce nu începem cu simpler.js fișier? 372 00:18:43,960 --> 00:18:49,110 373 00:18:49,110 --> 00:18:52,100 Un alt lucru este că toate acestea Codul va fi scris în 374 00:18:52,100 --> 00:18:56,660 JavaScript care s-ar putea sau ar putea să nu fie familiarizați cu. 375 00:18:56,660 --> 00:19:00,170 Cred că un cuplu de lucruri este faptul că o mulțime de cod JavaScript este un fel de 376 00:19:00,170 --> 00:19:04,000 sintaxa și structura este foarte asemănătoare cu C, astfel încât să puteți fel de-l ridic ca 377 00:19:04,000 --> 00:19:05,020 te duci de-a lungul. 378 00:19:05,020 --> 00:19:08,750 Am încercat să scrie o mulțime de Codul de pornire pentru acest lucru într-un mod care este 379 00:19:08,750 --> 00:19:11,230 similar cu C, astfel că este un pic mai ușor de citit. 380 00:19:11,230 --> 00:19:15,980 Dar, așa cum am progres, voi fi demonstrând o parte din informațiile suplimentare 381 00:19:15,980 --> 00:19:18,980 caracteristici ale JavaScript care sunt un fel de rece. 382 00:19:18,980 --> 00:19:21,510 >> Dar să ne uităm la acest program de probă. 383 00:19:21,510 --> 00:19:24,820 Cred că totul se taie acolo. 384 00:19:24,820 --> 00:19:28,500 Mă duc să se stabilească faptul că reale repede, dacă e OK sau nu. 385 00:19:28,500 --> 00:19:31,400 Nu știu de ce acest lucru este de gând să faci. 386 00:19:31,400 --> 00:19:34,660 Este că un pic mai bine? 387 00:19:34,660 --> 00:19:36,510 Poți vedea var și alte chestii? 388 00:19:36,510 --> 00:19:39,320 OK. 389 00:19:39,320 --> 00:19:44,120 >> Deci, prima linie este ca JavaScript versiune a unei variabile 390 00:19:44,120 --> 00:19:44,800 declarație. 391 00:19:44,800 --> 00:19:49,870 Deci, doar pentru a sublinia ceea ce ar fi aceasta arata ca in C. Deci, aceasta este la fel ca 392 00:19:49,870 --> 00:19:52,620 index-mi spune este egal cu trei sau ceva de genul asta. 393 00:19:52,620 --> 00:19:55,740 Asa ca nu am specifica tipul. 394 00:19:55,740 --> 00:20:00,780 JavaScript are tipuri, dar e foarte dinamic tastat în natură, așa 395 00:20:00,780 --> 00:20:02,580 nu a oferit nici un fel de tip de pe ea. 396 00:20:02,580 --> 00:20:03,670 Așa că are doar var. 397 00:20:03,670 --> 00:20:05,320 Asta e ca și variabilă. 398 00:20:05,320 --> 00:20:05,920 OK? 399 00:20:05,920 --> 00:20:08,340 >> Și am sunat acest HTTP variabile. 400 00:20:08,340 --> 00:20:12,480 Și pe partea mea dreapta, i-au expresie pe care vreau să pună în HTTP. 401 00:20:12,480 --> 00:20:14,960 Și aceasta spune necesita HTTP. 402 00:20:14,960 --> 00:20:18,500 Deci, aceasta este un fel de asemănătoare pentru a include. 403 00:20:18,500 --> 00:20:22,940 Este un pic mai mult ca puternic decât includ în sensul că includ 404 00:20:22,940 --> 00:20:26,100 va copia doar și lipiți antetul fișier pentru prototipurile de funcții sau 405 00:20:26,100 --> 00:20:27,930 indiferent cu definițiile de tip. 406 00:20:27,930 --> 00:20:30,590 Dar necesită se intampla de fapt pentru a ne obține codul. 407 00:20:30,590 --> 00:20:33,280 >> Deci, vă puteți gândi la ea ca la importam niște cod. 408 00:20:33,280 --> 00:20:37,960 Deci, undeva în modulul Node.js sistem sau orice altceva, ei au toate aceste 409 00:20:37,960 --> 00:20:40,790 Cod server HTTP așa că eu sunt doar aducere pentru propria mea 410 00:20:40,790 --> 00:20:43,130 uz personal în acest program. 411 00:20:43,130 --> 00:20:44,260 OK? 412 00:20:44,260 --> 00:20:46,930 >> Deci, atunci am avea această funcție pe care le-am scris. 413 00:20:46,930 --> 00:20:50,330 Și observați nu am avut de a preciza tipul de returnare sau de tipul 414 00:20:50,330 --> 00:20:51,140 argumente din nou. 415 00:20:51,140 --> 00:20:54,440 Deci, un fel de liber scris în ca un fel de sens. 416 00:20:54,440 --> 00:20:57,290 Două argumente pe care le ia în, cererea și răspunsul. 417 00:20:57,290 --> 00:21:02,080 Deci, asta e conceptual fel de familiar de la imaginea pe care am avut 418 00:21:02,080 --> 00:21:05,280 pe ecran înainte, deoarece vom obține această cerere pe care le 419 00:21:05,280 --> 00:21:06,410 au de la utilizator. 420 00:21:06,410 --> 00:21:09,170 Și atunci avem un răspuns care putem scrie lucruri la. 421 00:21:09,170 --> 00:21:15,060 >> Deci, prima linie de acest lucru nu res.writeHead 200 și apoi acest lucru 422 00:21:15,060 --> 00:21:17,070 tip de conținut text simplu. 423 00:21:17,070 --> 00:21:19,300 Deci, haideți să cap la aceasta în afară un pic. 424 00:21:19,300 --> 00:21:22,340 Așa că haideți să ne concentrăm pe res.write pentru un pic. 425 00:21:22,340 --> 00:21:28,420 Deci, scrie este, în principiu, și de a scrie cap, sunt doar modalități de a fel de a scrie în 426 00:21:28,420 --> 00:21:29,960 lucruri la răspunsul. 427 00:21:29,960 --> 00:21:30,770 OK? 428 00:21:30,770 --> 00:21:36,230 Deci scrie cap, dacă cineva își amintește de curs HTTP, nu voi 429 00:21:36,230 --> 00:21:39,940 amintiți-vă anteturile la top de lucru HTTP? 430 00:21:39,940 --> 00:21:43,580 Deci, de ce nu am doar demo antetele repede. 431 00:21:43,580 --> 00:21:44,640 Ar fi de ajutor? 432 00:21:44,640 --> 00:21:45,500 Sau ar trebui să ne-am doar un fel de - 433 00:21:45,500 --> 00:21:46,070 OK. 434 00:21:46,070 --> 00:21:46,740 Sigur. 435 00:21:46,740 --> 00:21:52,340 >> Deci, atunci când browser-ul se duce la google.com sau ceva de genul asta, 436 00:21:52,340 --> 00:21:54,250 există de fapt un pic mai mult - 437 00:21:54,250 --> 00:21:55,380 aceasta este ca un secret - 438 00:21:55,380 --> 00:21:58,340 nu e ca și cum un pic mai mult informații care vine prin conducta decât 439 00:21:58,340 --> 00:22:00,180 micul căutare și totul. 440 00:22:00,180 --> 00:22:03,550 Deci, să vă arăt acest lucru, am de gând de a utiliza un program numit Curl. 441 00:22:03,550 --> 00:22:04,260 OK? 442 00:22:04,260 --> 00:22:08,020 Deci, acest lucru este ceva pe care le poate rula la linia de comandă Mac OSX sau în 443 00:22:08,020 --> 00:22:09,830 aparat sau orice altceva. 444 00:22:09,830 --> 00:22:17,050 Și așa că dacă eu nu Curl HTTP google.com, Mă duc să văd HTML. 445 00:22:17,050 --> 00:22:21,230 Și acest lucru este, în corectitudine, drepți HTML ca un fel de ai spune la 446 00:22:21,230 --> 00:22:24,695 redirecționare a www dacă browser-ul dvs. nu ocupa în mod automat 447 00:22:24,695 --> 00:22:27,110 redirecționare. 448 00:22:27,110 --> 00:22:33,390 >> Deci, aceasta este doar HTML, dar am de gând pentru a adăuga la Curl acest cratimă I pavilion. 449 00:22:33,390 --> 00:22:33,600 OK? 450 00:22:33,600 --> 00:22:35,600 Și acest lucru se întâmplă pentru a arăta mi antetele. 451 00:22:35,600 --> 00:22:40,640 Deci, acest lucru este, de asemenea, informații care vine prin atunci când am obține acest răspuns. 452 00:22:40,640 --> 00:22:41,260 OK? 453 00:22:41,260 --> 00:22:45,320 >> Deci, în partea de sus, veți vedea acest HTTP 301 se mute definitiv. 454 00:22:45,320 --> 00:22:49,470 Și acest lucru este destul de important, deoarece aceasta se referă la codul de stare. 455 00:22:49,470 --> 00:22:53,750 Deci, 301 aici este codul de stare, care este de fapt doar un număr întreg 456 00:22:53,750 --> 00:22:57,750 care spune browser-ul sau oricine e citit acest lucru, dacă te prefaci că 457 00:22:57,750 --> 00:23:01,460 esti un browser și vedeți acest lucru, practic, acum, dacă te uiți la 458 00:23:01,460 --> 00:23:04,960 că și veți vedea un 301, știi că am de a face ceva special pe baza 459 00:23:04,960 --> 00:23:08,810 301, sau sa întâmplat ceva special bazat pe 301. 460 00:23:08,810 --> 00:23:12,640 Deci, se spune mutat definitiv. 461 00:23:12,640 --> 00:23:17,700 >> Și apoi, de fapt, ne-am o grămadă de perechi de valori-cheie. 462 00:23:17,700 --> 00:23:22,100 Așa că am obține locația este www.google.com. 463 00:23:22,100 --> 00:23:25,190 Și apoi un fel de toate aceste alte lucruri, dar în esență, ceea ce locația este 464 00:23:25,190 --> 00:23:29,662 zicală este noua locație este la www.google.com. 465 00:23:29,662 --> 00:23:33,800 Deci, acum, dacă te duci la google.com, veți un fel de a vedea tipul de browser de clipire 466 00:23:33,800 --> 00:23:38,770 pentru o secundă și apoi vă va redirecționa înapoi la www.google.com. 467 00:23:38,770 --> 00:23:41,840 Astfel încât răspunsurile pot conține aceste antete. 468 00:23:41,840 --> 00:23:43,330 >> Și un cuplu de lucruri să sublinieze. 469 00:23:43,330 --> 00:23:46,890 Deci, haideți să spunem că au fost de fapt de succes în vizita o pagină web. 470 00:23:46,890 --> 00:23:49,040 Deci, lasă-mă să merg la - 471 00:23:49,040 --> 00:23:51,080 ceea ce este un bun site-ul? 472 00:23:51,080 --> 00:23:53,285 Sunt prost la gândire de bun site-uri de la fața locului. 473 00:23:53,285 --> 00:23:53,640 >> Audiența: Wikipedia. 474 00:23:53,640 --> 00:23:54,160 >> KEVIN SCHMID: OK. 475 00:23:54,160 --> 00:23:56,040 Să facem Wikipedia. 476 00:23:56,040 --> 00:23:58,680 Deci, aici am fost mutat. 477 00:23:58,680 --> 00:23:59,240 Oh, așteptați. 478 00:23:59,240 --> 00:24:00,160 Am fost? 479 00:24:00,160 --> 00:24:00,890 Da, am fost. 480 00:24:00,890 --> 00:24:01,100 OK. 481 00:24:01,100 --> 00:24:03,005 Așa că am ajuns să fac www. 482 00:24:03,005 --> 00:24:06,006 Așa că am de gând să fac www. 483 00:24:06,006 --> 00:24:09,680 Și, după cum puteți vedea, aici e tot HTML că browser-ul va procesa 484 00:24:09,680 --> 00:24:10,910 pentru Wikipedia. 485 00:24:10,910 --> 00:24:14,055 >> Dar dacă am ține defilare aici, ceea ce veți vedea în partea de sus - 486 00:24:14,055 --> 00:24:17,800 wow, există o mulțime de HTML pe Wikipedia - 487 00:24:17,800 --> 00:24:22,550 dar ceea ce pot vedea în partea de sus de aici este acest cod de 200 de stare, spre deosebire de 488 00:24:22,550 --> 00:24:24,570 301 pe care l-am văzut mai devreme. 489 00:24:24,570 --> 00:24:27,100 Și observați că acesta are un frumos OK prietenos lângă el. 490 00:24:27,100 --> 00:24:29,470 Deci, acest lucru este ca codul de stare de bine. 491 00:24:29,470 --> 00:24:31,160 >> Se că 200 număr pare cunoscut? 492 00:24:31,160 --> 00:24:34,120 493 00:24:34,120 --> 00:24:39,880 Da, pentru că atunci când am făcut simpler.js, I-am scris un 200 acolo. 494 00:24:39,880 --> 00:24:43,290 Deci, care este, practic, spune spune Browser-ul sau oricine este încercarea de a ajunge la 495 00:24:43,290 --> 00:24:45,440 aceasta că ei au avut succes. 496 00:24:45,440 --> 00:24:49,040 Sau ca un fel de noi au avut succes prea. 497 00:24:49,040 --> 00:24:54,320 >> Și nu există acest tip de sintaxă specială în Javascript pentru declararea unei 498 00:24:54,320 --> 00:24:59,870 harta din aceste taste, cum ar fi tipul de conținut și aceste valori, cum ar fi simplu text. 499 00:24:59,870 --> 00:25:03,780 Deci, dacă te uiți la răspunsul pe care noi am întors de la Wikipedia înainte, - 500 00:25:03,780 --> 00:25:06,200 Am de gând să încerc pentru a defila un pic mai repede - 501 00:25:06,200 --> 00:25:09,900 aveți aceste taste, cum ar fi server de și aceste valori Apache. 502 00:25:09,900 --> 00:25:12,120 Deci, v-ați luat cheile și valorile. 503 00:25:12,120 --> 00:25:15,930 Și aveți posibilitatea să specificați acest lucru în Nodul ce pentru a trimite înapoi. 504 00:25:15,930 --> 00:25:19,380 >> Deci, aceasta este de fapt un fel de, în unele moduri, și în unele moduri nu este 505 00:25:19,380 --> 00:25:23,170 într-adevăr, dar este un nivel puțin mai jos decât codul PHP pe care le-ar putea fi 506 00:25:23,170 --> 00:25:26,980 scris pentru P setat șapte deoarece PHP și Apache fel de a avea grijă de unele 507 00:25:26,980 --> 00:25:28,150 de aceste lucruri pentru tine. 508 00:25:28,150 --> 00:25:32,520 În PHP, puteți suprascrie implicit Comportamentul de scris propriile antete. 509 00:25:32,520 --> 00:25:35,520 Dar, în scopul de acest lucru, vom obține pentru a scrie propriile antete. 510 00:25:35,520 --> 00:25:38,210 511 00:25:38,210 --> 00:25:41,105 >> Deci, nu că linie face sens pentru a toată lumea, linia capului de scriere? 512 00:25:41,105 --> 00:25:41,380 OK. 513 00:25:41,380 --> 00:25:42,280 Minunat. 514 00:25:42,280 --> 00:25:45,870 >> Deci, atunci ceea ce fac este să se încheie răspunsul prin a spune salut lume. 515 00:25:45,870 --> 00:25:47,040 OK. 516 00:25:47,040 --> 00:25:49,920 Dar asta e doar o funcție numita cerere handler. 517 00:25:49,920 --> 00:25:53,510 Deci, acum am de fapt, trebuie să fel de a face ceva cu această funcție, nu? 518 00:25:53,510 --> 00:25:59,170 >> Deci, aici ceea ce fac este acolo este aceasta linie care nu este egal de server var 519 00:25:59,170 --> 00:26:03,530 HTTP.create de server, și apoi am trece în de gestionare a cererii. 520 00:26:03,530 --> 00:26:06,080 Deci, aceasta este un fel de Node modalitate de a crea un server. 521 00:26:06,080 --> 00:26:08,790 Și observați că eu trec in de gestionare a cererii. 522 00:26:08,790 --> 00:26:12,290 Deci, acest lucru este de a spune createServer Funcția pe care vreau să-mi facă o 523 00:26:12,290 --> 00:26:16,270 server și atunci când serverul primește un răspuns, am nevoie de tine pentru a apela acest 524 00:26:16,270 --> 00:26:18,680 solicita funcție handler. 525 00:26:18,680 --> 00:26:18,990 OK? 526 00:26:18,990 --> 00:26:22,290 >> Astfel că linia destul de mult se termină imediat. 527 00:26:22,290 --> 00:26:28,780 Deci, linia de servere var se face dreptate după ce faci asta destul de mult. 528 00:26:28,780 --> 00:26:31,770 Adică, trebuie să configurați unele interne de stat să știe că va trebui să 529 00:26:31,770 --> 00:26:35,400 apela că funcția cerere handler, dar ea nu va sta acolo și 530 00:26:35,400 --> 00:26:37,730 zicem are utilizatorul trimis mi-o cerere încă? 531 00:26:37,730 --> 00:26:39,270 A utilizatorului mi-a trimis o cerere încă? 532 00:26:39,270 --> 00:26:40,780 Astfel încât să nu blocheze. 533 00:26:40,780 --> 00:26:41,650 OK? 534 00:26:41,650 --> 00:26:46,120 >> Deci, despre ce va face este de fapt acum stochează un pointer la acest cod, 535 00:26:46,120 --> 00:26:49,670 această funcție de gestionare a cererii, și apoi va rula acest cod, atunci când cineva 536 00:26:49,670 --> 00:26:52,170 face o cerere. 537 00:26:52,170 --> 00:26:54,120 Și apoi vom face server.listen. 538 00:26:54,120 --> 00:26:56,950 539 00:26:56,950 --> 00:26:59,960 >> 1337 este destul de arbitrar. 540 00:26:59,960 --> 00:27:02,285 Nu am avut nici un motiv special pentru a alege acel număr. 541 00:27:02,285 --> 00:27:03,860 Acesta a fost complet aleatoare. 542 00:27:03,860 --> 00:27:07,010 Dar care specifică doar portul. 543 00:27:07,010 --> 00:27:10,640 Deci, cele mai multe servere de web, veți vedea că ele folosi portul 80 pentru că e un fel 544 00:27:10,640 --> 00:27:11,810 a cum ar fi convenția. 545 00:27:11,810 --> 00:27:16,170 Deci, dacă mă duc la ceva de genul, Nu știu, Wikipedia.org, 546 00:27:16,170 --> 00:27:17,700 și am pus colon 8 - 547 00:27:17,700 --> 00:27:18,610 oh wow, nu puteți vedea asta. 548 00:27:18,610 --> 00:27:19,370 Îmi pare rău. 549 00:27:19,370 --> 00:27:21,820 Dar dacă fac Wikipedia - 550 00:27:21,820 --> 00:27:24,810 Voi scrie aici doar pentru ca e clar pe aparatul de fotografiat. 551 00:27:24,810 --> 00:27:29,150 Dar dacă iau asta într-un browser cu un colon 80, care specifică du-te la 552 00:27:29,150 --> 00:27:31,430 Wikipedia.org la portul 80. 553 00:27:31,430 --> 00:27:36,200 Deci, e ca si cum modul în care Statele Unite au mai multe porturi, cum ar fi în cazul în care aveți posibilitatea să navă 554 00:27:36,200 --> 00:27:37,440 lucruri la fel de. 555 00:27:37,440 --> 00:27:40,730 Deci, e ca si cum merge la acest special loc pe acest server. 556 00:27:40,730 --> 00:27:40,990 OK. 557 00:27:40,990 --> 00:27:45,730 >> Așa că am ales 1337. 558 00:27:45,730 --> 00:27:47,910 Există o întreagă gamă de numere pe care le puteți alege. 559 00:27:47,910 --> 00:27:50,390 Asta nu a fost totul special. 560 00:27:50,390 --> 00:27:54,560 >> Dar ceea ce am de gând să fac acum este am de gând să ruleze Nod. 561 00:27:54,560 --> 00:27:59,730 Permiteți-mi să introduceți de fapt că un cuplu linii de jos, astfel încât să puteți vedea. 562 00:27:59,730 --> 00:28:03,130 Am de gând să fac nod, și eu sunt de gând să ruleze simpler.js. 563 00:28:03,130 --> 00:28:06,880 Și vom vorbi despre cum să obțineți Nod înființat într-un pic. 564 00:28:06,880 --> 00:28:09,350 Dar acum e doar rulează pe server. 565 00:28:09,350 --> 00:28:14,360 >> Deci, un singur lucru, putem încerca, care nu pot fie că este interesant putem de fapt 566 00:28:14,360 --> 00:28:16,300 încercați să-l accesați în Curl. 567 00:28:16,300 --> 00:28:20,680 Deci, eu pot face Curl, și meu Masina este gazda locala. 568 00:28:20,680 --> 00:28:24,600 Veți vedea, de asemenea, acest scris ca acest lucru uneori. 569 00:28:24,600 --> 00:28:29,810 Gazdă locale și 127.0.0.1 sunt un fel a cum ar fi computerul de acasă. 570 00:28:29,810 --> 00:28:33,180 Deci, e ca si cum vorbesc cu propriul computer. 571 00:28:33,180 --> 00:28:33,760 OK. 572 00:28:33,760 --> 00:28:36,030 >> Și atunci pot să spun 1337. 573 00:28:36,030 --> 00:28:39,630 Deci, dacă am alerga aceasta linie de cod, se spune salut lume. 574 00:28:39,630 --> 00:28:44,050 Și dacă am vrut să văd chestia asta că a textului de tip conținut simplu sau 575 00:28:44,050 --> 00:28:46,560 orice, am putea pune chiar asta aici. 576 00:28:46,560 --> 00:28:48,810 Și observați că acesta nu spune OK. 577 00:28:48,810 --> 00:28:50,810 Și eu nu am simplu text. 578 00:28:50,810 --> 00:28:53,140 Și apoi există un fel de tot acest celelalte lucruri care Nodul se va adăuga în 579 00:28:53,140 --> 00:28:54,440 acolo pentru mine. 580 00:28:54,440 --> 00:28:55,700 Asta nu e foarte important. 581 00:28:55,700 --> 00:28:58,230 >> Vreau să spun, există un fel de tehnic aspecte de la care sunt un fel 582 00:28:58,230 --> 00:29:02,280 de rece pentru a vorbi despre, dar doar pentru a arăta te, am, de asemenea, puterea de a 583 00:29:02,280 --> 00:29:03,070 schimba aceste jur. 584 00:29:03,070 --> 00:29:06,280 Deci, eu pot adăuga doar o adunatura de chestii de genul asta. 585 00:29:06,280 --> 00:29:11,780 Și apoi acum, dacă mă uit în mea ieșire, va fi ca. 586 00:29:11,780 --> 00:29:19,740 Deci, aceste antete înseamnă anumite lucruri la browsere și lucruri de genul asta. 587 00:29:19,740 --> 00:29:23,040 >> Și antete poate spune de fapt un browser cum să răspundă la ceva. 588 00:29:23,040 --> 00:29:26,280 Dacă ați auzit vreodată de cookie-uri înainte, sau dacă ați fost vreodată contrariat 589 00:29:26,280 --> 00:29:29,330 de către o pagină web setare cookie-uri, sau pornit bloc cookie sau 590 00:29:29,330 --> 00:29:30,320 ceva de genul asta. 591 00:29:30,320 --> 00:29:33,040 Puteți seta de fapt, cookie-uri în aceste anteturi. 592 00:29:33,040 --> 00:29:36,990 Deci, ei spun un browser cum a Comportamentul în unele cazuri. 593 00:29:36,990 --> 00:29:37,750 OK. 594 00:29:37,750 --> 00:29:40,310 >> Astfel că a fost simpler.js. 595 00:29:40,310 --> 00:29:42,780 Are cineva intrebari pe acel fișier de cod sursă? 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 Rece. 599 00:29:46,490 --> 00:29:50,780 >> Deci, haideți să scoateți r din care si uita-te la simple.js. 600 00:29:50,780 --> 00:29:53,010 Deci, acest lucru este destul de mult același program. 601 00:29:53,010 --> 00:29:56,030 Tocmai am scris un pic diferit pentru că am vrut pentru a sorta de a evidenția 602 00:29:56,030 --> 00:29:57,850 unele caracteristici ale JavaScript. 603 00:29:57,850 --> 00:30:03,880 >> Astfel observa că de gestionare a cererii Funcția a dispărut în totalitate. 604 00:30:03,880 --> 00:30:05,800 Oh da, ai avut o întrebare? 605 00:30:05,800 --> 00:30:08,200 >> Audiența: Da, argumentele care sunt transmise la acea 606 00:30:08,200 --> 00:30:10,120 funcție, ce sunt ei? 607 00:30:10,120 --> 00:30:12,050 >> KEVIN SCHMID: Deci, acestea sunt JavaScript obiecte. 608 00:30:12,050 --> 00:30:15,230 În documentația Node.js, ea de fapt spune ce metode sunt 609 00:30:15,230 --> 00:30:15,910 disponibil pe ele. 610 00:30:15,910 --> 00:30:19,602 Noi doar se întâmplă să aibă acces la aceasta metoda numita cap de scriere și la sfârșitul 611 00:30:19,602 --> 00:30:20,730 și chestii de genul asta. 612 00:30:20,730 --> 00:30:22,590 Dar există o grămadă mai multe metode. 613 00:30:22,590 --> 00:30:27,670 >> Și, de exemplu, ca unul dintre ei în special cu privire la REC, puteți face 614 00:30:27,670 --> 00:30:34,540 ceva de genul rec.method care va să vă spun dacă este o HTTP obține sau 615 00:30:34,540 --> 00:30:36,780 Cereri HTTP post și lucruri de genul asta. 616 00:30:36,780 --> 00:30:39,100 Deci, există tot felul de diferite proprietăți, dar ambele sunt 617 00:30:39,100 --> 00:30:42,560 JavaScript obiecte, și ei doar au funcțiile care le sunt atașate pe care le 618 00:30:42,560 --> 00:30:43,850 pot scrie lucruri la. 619 00:30:43,850 --> 00:30:45,520 OK? 620 00:30:45,520 --> 00:30:49,030 >> Astfel observa că handler cerere este complet plecat. 621 00:30:49,030 --> 00:30:52,650 Dar codul pe care am avut-o în cerere handler este încă acolo. 622 00:30:52,650 --> 00:30:56,520 Încă mai am această res.writeHead și încă mai am această res.end. 623 00:30:56,520 --> 00:31:00,270 Și ce acesta este un exemplu de la JavaScript este această idee de o 624 00:31:00,270 --> 00:31:01,460 Funcția anonim. 625 00:31:01,460 --> 00:31:04,180 și anonim este ca un nume potrivit pentru ea, pentru că pur și simplu nu 626 00:31:04,180 --> 00:31:05,180 au un nume. 627 00:31:05,180 --> 00:31:07,900 Nu e nici o cerere de funcție handler acolo. 628 00:31:07,900 --> 00:31:10,110 >> Nu are nume, dar încă este a lua un argument. 629 00:31:10,110 --> 00:31:12,250 Deci, eu încă am rec și res. 630 00:31:12,250 --> 00:31:16,180 Și încă mai am codul. 631 00:31:16,180 --> 00:31:18,930 Acest lucru este perfect în regulă JavaScript cod. 632 00:31:18,930 --> 00:31:22,540 Deci, eu pot declara o funcție fără oferind în mod explicit un nume. 633 00:31:22,540 --> 00:31:24,250 Este un pic confuz la început. 634 00:31:24,250 --> 00:31:26,230 Există unele lucruri utile cum ar fi pe care le puteți face cu 635 00:31:26,230 --> 00:31:28,450 aceste funcții anonime. 636 00:31:28,450 --> 00:31:32,100 Are cineva orice întrebări cu privire la acest lucru, sau este OK doar la, de acum, 637 00:31:32,100 --> 00:31:34,130 un fel de doar accepte că va face același lucru? 638 00:31:34,130 --> 00:31:36,700 639 00:31:36,700 --> 00:31:37,125 Da? 640 00:31:37,125 --> 00:31:38,680 >> Audiența: sunt funcții în primul rând clasă în JavaScript? 641 00:31:38,680 --> 00:31:41,020 >> KEVIN SCHMID: Ei sunt în primul rând clasă în JavaScript. 642 00:31:41,020 --> 00:31:45,490 Și doar știu că aceste concepte de trecerea într-o funcție anonim ca 643 00:31:45,490 --> 00:31:49,600 acest lucru se aplică JavaScript pe care le pot scrie în proiectul final pentru 644 00:31:49,600 --> 00:31:51,260 browser-ul web prea. 645 00:31:51,260 --> 00:31:56,700 Deci, de exemplu, în JavaScript în browser-ul dvs., este, de asemenea, oarecum eveniment 646 00:31:56,700 --> 00:32:00,680 condus în sensul că ceea ce veți au este atunci când utilizatorul face clic pe acest 647 00:32:00,680 --> 00:32:02,640 buton, vreau să rulați acest cod. 648 00:32:02,640 --> 00:32:07,070 >> Deci, este același tip de idei ale partea de client atunci când un clic de mouse sau au 649 00:32:07,070 --> 00:32:09,870 mouse-ul peste unele imagini pe dvs. pagina web, rula acest cod. 650 00:32:09,870 --> 00:32:11,350 Care se pot aplica la servere. 651 00:32:11,350 --> 00:32:16,380 Deci, asta e un fel de incitante motiv pentru care JavaScript este un adevărat 652 00:32:16,380 --> 00:32:19,810 persoane adecvate sau a unor cred că este o limbaj adecvat pentru acest tip de 653 00:32:19,810 --> 00:32:22,530 server de șofer eveniment pentru ca ai aceste funcții anonime. 654 00:32:22,530 --> 00:32:26,150 Ai ideea de acest cod asincron. 655 00:32:26,150 --> 00:32:27,060 OK. 656 00:32:27,060 --> 00:32:30,360 Are cineva vreo întrebare? 657 00:32:30,360 --> 00:32:30,470 >> OK. 658 00:32:30,470 --> 00:32:33,440 Astfel că a fost simple.js. 659 00:32:33,440 --> 00:32:38,070 Așa că haideți să ne uităm la o mai sau un cuplu mai. 660 00:32:38,070 --> 00:32:42,040 Deci, aceasta este sleep.js. 661 00:32:42,040 --> 00:32:47,160 Deci, este cineva familiarizat cu C funcția de somn? 662 00:32:47,160 --> 00:32:50,936 Din poate una din prelegerile anterioare sau ceva de genul asta? 663 00:32:50,936 --> 00:32:54,650 >> Deci, practic se poate trece într-Cred că o numărul de secunde sau dacă folosiți U 664 00:32:54,650 --> 00:32:57,080 dormi un număr de milisecunde sau nanosecunde. 665 00:32:57,080 --> 00:33:00,450 Și, practic, programul se va opri doar de funcționare pentru această sumă de timp. 666 00:33:00,450 --> 00:33:01,280 Corect? 667 00:33:01,280 --> 00:33:06,970 Și atunci se va trezi în cele din urmă și atunci acesta va continua doar de funcționare 668 00:33:06,970 --> 00:33:08,340 programului. 669 00:33:08,340 --> 00:33:12,740 >> Deci, acest server de tip dă impresia de dormit. 670 00:33:12,740 --> 00:33:17,580 Astfel observa că avem la fel res.writeHead 200 cu antetul 671 00:33:17,580 --> 00:33:22,130 înainte, dar apoi ne-am numesc asta Funcția numit set timeout. 672 00:33:22,130 --> 00:33:26,170 Setați timeout este de asemenea disponibil în browser-ul web Google Chrome 673 00:33:26,170 --> 00:33:28,000 sau Safari sau orice altceva. 674 00:33:28,000 --> 00:33:31,720 Și, practic, ceea ce se face aici este se ia într-o funcție. 675 00:33:31,720 --> 00:33:33,360 Notificare, din nou, este un Funcția anonim. 676 00:33:33,360 --> 00:33:36,310 Deci, asta e un fel de misto ca suntem folosind o funcție anonim cadrul unei 677 00:33:36,310 --> 00:33:38,950 Funcția anonim care poate fi un pic ciudat. 678 00:33:38,950 --> 00:33:42,270 >> Dar se ia această funcție, ceea ce este practic spune - și modul în care acest 679 00:33:42,270 --> 00:33:47,430 lucrări este în 5000 de milisecunde, vreau să execute funcții care 680 00:33:47,430 --> 00:33:50,830 doar se termină răspunsul și scrie hei. 681 00:33:50,830 --> 00:33:56,730 Deci, acest lucru dă impresia de ca dormit, dar modul în care acest fapt 682 00:33:56,730 --> 00:33:59,780 funcționează este vom rula prin intermediul această linie foarte repede. 683 00:33:59,780 --> 00:34:01,190 Noi doar scris ceva. 684 00:34:01,190 --> 00:34:03,780 Și apoi vom rula, de asemenea, prin această linie foarte repede. 685 00:34:03,780 --> 00:34:08,620 Deci, noi nu suntem de fapt merge să aștepte cinci secunde. 686 00:34:08,620 --> 00:34:11,370 Mergem să ruleze acest cod instantaneu. 687 00:34:11,370 --> 00:34:14,219 >> Și apoi există, din nou, acest mic bucla eveniment care are acum acest lucru 688 00:34:14,219 --> 00:34:17,570 registre care, practic, este doar în mod constant merge în jurul într-un cerc 689 00:34:17,570 --> 00:34:21,620 și se uită la ceas într-o singură fir și spune, are cinci secunde 690 00:34:21,620 --> 00:34:22,360 trecut încă? 691 00:34:22,360 --> 00:34:26,409 Și apoi, când se vede că a doua mână-a mutat ca cinci secunde sau 692 00:34:26,409 --> 00:34:29,190 oricare ar fi, atunci se trezește și spune, oh, ce trebuie să fac? 693 00:34:29,190 --> 00:34:30,350 Oh, am pentru a rula acest cod. 694 00:34:30,350 --> 00:34:33,110 Și apoi se va rula res.end hei. 695 00:34:33,110 --> 00:34:35,360 >> Deci, din nou, vom nu asteapta aici. 696 00:34:35,360 --> 00:34:38,590 Deci, nu e ca acest cod în interiorul această funcție este de gând să ia cinci 697 00:34:38,590 --> 00:34:39,900 secunde pentru a rula. 698 00:34:39,900 --> 00:34:43,090 Acest cod va rula destul de mult instantaneu, cel puțin în raport cu 699 00:34:43,090 --> 00:34:46,139 cele cinci secunde pe care le-au vorbit mai devreme înainte. 700 00:34:46,139 --> 00:34:52,100 >> Deci, doar pentru a arăta acest lucru în acțiune, Eu pot face Node.sleep.js. 701 00:34:52,100 --> 00:34:55,159 Și a făcut-am strica ceva? 702 00:34:55,159 --> 00:34:56,310 Posibil. 703 00:34:56,310 --> 00:34:57,410 Scuze. 704 00:34:57,410 --> 00:34:59,530 Să vedem ce putem face pentru a remedia acest lucru. 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 Astfel folosi cu siguranta Node.js. 709 00:35:17,464 --> 00:35:19,440 Glumesc. 710 00:35:19,440 --> 00:35:19,570 OK. 711 00:35:19,570 --> 00:35:20,820 Doar unul sec. 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 Eu știu ce este. 715 00:35:29,130 --> 00:35:34,440 >> Deci, problema este că în altă filă mea aici, am fost difuzate Nodul deja pe 716 00:35:34,440 --> 00:35:36,590 că aceeași adresă, 1337. 717 00:35:36,590 --> 00:35:43,370 Astfel eroarea că această aruncat, dacă privim la real strâns, este adresa la 718 00:35:43,370 --> 00:35:45,180 folosesc, EADDRINUSE. 719 00:35:45,180 --> 00:35:47,970 Așa că am fost deja folosind 1337 aici. 720 00:35:47,970 --> 00:35:52,210 Deci, dacă am închide asta, iar apoi eu acum încercați să executați acest lucru, sperăm, totul 721 00:35:52,210 --> 00:35:53,210 va fi bine. 722 00:35:53,210 --> 00:35:53,440 OK. 723 00:35:53,440 --> 00:35:57,020 Astfel încât să puteți avea doar un singur fel de lucru de a asculta pe un port la o dată. 724 00:35:57,020 --> 00:35:59,660 O altă soluție ar fi fost pentru mine pentru a edita doar că programul și face 725 00:35:59,660 --> 00:36:02,370 fi ca 1338 sau ceva de genul asta. 726 00:36:02,370 --> 00:36:04,100 >> Dar acum somn se execută. 727 00:36:04,100 --> 00:36:06,400 Deci, haideți să-l încercați de fapt, în Browser-ul de data aceasta, pentru că este un 728 00:36:06,400 --> 00:36:09,080 puțin mai puțin senzaționale pentru a vedea într-un terminal. 729 00:36:09,080 --> 00:36:13,560 Așa că eu sunt doar de gând să meargă la acea 127 adresa din nou în 1337. 730 00:36:13,560 --> 00:36:14,850 Și dacă puteți să-l văd - 731 00:36:14,850 --> 00:36:18,050 Nu știu dacă se poate - dar meu Browser-ul lui de a lua o foarte, foarte mult timp 732 00:36:18,050 --> 00:36:20,600 timp pentru a încărca sau ca cinci secunde. 733 00:36:20,600 --> 00:36:23,460 >> Și apoi, după care, în cele din urmă încheiat răspunsul. 734 00:36:23,460 --> 00:36:29,070 Și nu se poate vedea că lucrul este mutat peste un pic, dar dacă am face 735 00:36:29,070 --> 00:36:32,500 acest lucru un pic mai mic, tu se poate vedea o spune hey. 736 00:36:32,500 --> 00:36:35,130 Așa că am luat hei, dar după cinci secunde. 737 00:36:35,130 --> 00:36:38,510 Și ar putea fi un pic mai curat pentru a vedea l aici pe terminal, așa că eu sunt 738 00:36:38,510 --> 00:36:40,980 de gând să faci o - 739 00:36:40,980 --> 00:36:43,540 hai sa facem aici - 740 00:36:43,540 --> 00:36:48,370 hai să facem Curl că adresa din nou cu 1337. 741 00:36:48,370 --> 00:36:50,820 Și am doar un fel de trebuie să stea aici timp de cinci secunde. 742 00:36:50,820 --> 00:36:53,760 Dar observați că serverul poate accepta raspunsuri noi. 743 00:36:53,760 --> 00:36:54,940 Deci, se imprimă hei. 744 00:36:54,940 --> 00:36:58,720 >> Și la acest demo, practic ceea ce Eu pot face în acest alt tab - 745 00:36:58,720 --> 00:37:02,640 deci haideți să spun că fac acest lucru într-o altă filă, Am de gând să fac Curl și același lucru 746 00:37:02,640 --> 00:37:03,780 lucru din nou. 747 00:37:03,780 --> 00:37:06,600 Și am de gând să încerce să lovi cu piciorul aceste baieti off în același timp. 748 00:37:06,600 --> 00:37:08,260 Așa că am de gând să fac asta, și eu sunt va concura pe aici si eu sunt 749 00:37:08,260 --> 00:37:09,650 de gând să o facă din nou. 750 00:37:09,650 --> 00:37:14,030 >> Și să se facă astfel încât să se poate vedea ambele dintre ele. 751 00:37:14,030 --> 00:37:20,250 Că o imprimată hei și că o imprimate hei tot drumul la - 752 00:37:20,250 --> 00:37:22,550 hai să facem din nou că experiment. 753 00:37:22,550 --> 00:37:25,100 De fapt, hai să folosim acest truc, dacă e în regulă. 754 00:37:25,100 --> 00:37:30,520 >> Așa că am de gând să utilizeze un lucru shell care permite-mi pentru a rula în principiu, două exemplare 755 00:37:30,520 --> 00:37:32,630 acestui program în paralel. 756 00:37:32,630 --> 00:37:36,070 Deci, acesta va rula primul program și al doilea program în paralel. 757 00:37:36,070 --> 00:37:39,060 Deci, acum, dacă am apăsați Enter, se va pentru a face această cerere destul de mult 758 00:37:39,060 --> 00:37:40,570 instantaneu, în același timp. 759 00:37:40,570 --> 00:37:42,620 Deci, haideți să facem o încercare. 760 00:37:42,620 --> 00:37:44,950 >> Deci, acum, observa el spune două procese. 761 00:37:44,950 --> 00:37:50,630 Si daca esti curios, care 27.000 numărul este de fapt ID-ul de proces. 762 00:37:50,630 --> 00:37:52,940 Și apoi observa, ei imprimate hei, în același timp. 763 00:37:52,940 --> 00:37:56,820 Nu a fost ca a trebuit să aștepte cinci secunde, pentru o și apoi, după care, 764 00:37:56,820 --> 00:37:59,640 obține cinci secunde mai târziu a doua. 765 00:37:59,640 --> 00:38:03,300 Astfel că e un fel de, în unele moduri, este nu într-adevăr dovezi, dar este 766 00:38:03,300 --> 00:38:07,390 dovezi intuitiv că nu este vorba doar cum ar fi de așteptare cinci secunde și blocarea 767 00:38:07,390 --> 00:38:08,960 întreaga firul. 768 00:38:08,960 --> 00:38:10,720 OK rece. 769 00:38:10,720 --> 00:38:17,850 >> Aaron a pus o întrebare mai devreme că a fost, și ce dacă am face ceva - 770 00:38:17,850 --> 00:38:18,735 Da? 771 00:38:18,735 --> 00:38:19,051 >> Audiența: Așteaptă. 772 00:38:19,051 --> 00:38:21,585 Cum este diferit de tampon printf, deși? 773 00:38:21,585 --> 00:38:23,010 Nu o face în mod automat că? 774 00:38:23,010 --> 00:38:25,390 De ce nu trebuie să vă faceți griji despre asta? 775 00:38:25,390 --> 00:38:26,555 >> KEVIN SCHMID: Oh, ai putea spune că o dată? 776 00:38:26,555 --> 00:38:29,510 >> Audiența: Nu-i place tampon printf face exact același lucru? 777 00:38:29,510 --> 00:38:31,280 >> KEVIN SCHMID: tampon printf? 778 00:38:31,280 --> 00:38:32,753 >> Audienta: Da. 779 00:38:32,753 --> 00:38:33,244 OK. 780 00:38:33,244 --> 00:38:40,609 Nu a fost într-una din chestionare erau vorbesc despre modul în care, dacă ai dreptate printf 781 00:38:40,609 --> 00:38:42,899 ceva și apoi l-au pauză o în al doilea rând, și apoi l-ați buclă zece 782 00:38:42,899 --> 00:38:46,530 ori, o să aștept zece secunde și apoi printf totul împreună? 783 00:38:46,530 --> 00:38:47,460 >> KEVIN SCHMID: Oh, OK. 784 00:38:47,460 --> 00:38:49,170 >> Audiența: Este o fac același lucru lucru atunci în acest caz? 785 00:38:49,170 --> 00:38:52,630 >> KEVIN SCHMID: Deci, întrebarea a fost în principiu, într-una din fostele chestionare 786 00:38:52,630 --> 00:38:57,200 sau ceva, a existat o întrebare care în principiu, dacă spui de imprimare f 10 787 00:38:57,200 --> 00:39:01,490 lucruri la un moment dat și apoi a dormit ca în procesul de imprimare aceste afară, 788 00:39:01,490 --> 00:39:04,850 la sfârșitul pentru un motiv oarecare, ar fi doar arunca toate cele de pe ecran. 789 00:39:04,850 --> 00:39:06,740 Deci, există un fel de două tipuri diferite concepte de aici. 790 00:39:06,740 --> 00:39:10,400 >> Deci, cred că un lucru este că, în acest caz, avem de-a face cu două tipuri diferite 791 00:39:10,400 --> 00:39:13,510 fel de oameni cer server de lucruri în același timp. 792 00:39:13,510 --> 00:39:17,455 Și motivul pentru care tipul printf de așteaptă ca asta și haldele totul afară 793 00:39:17,455 --> 00:39:21,760 la o dată este legata mai mult de cum fel de printf - 794 00:39:21,760 --> 00:39:25,100 așa fel printf este de fapt implementat este are practic la 795 00:39:25,100 --> 00:39:28,850 vorbesc cu sistemul de operare pentru a scrie că lucrurile la consola. 796 00:39:28,850 --> 00:39:33,460 Deci, nu vreau să fac toate astea lucruri imediat atunci când spui printf 797 00:39:33,460 --> 00:39:36,260 unele șir, pentru că ar putea obține scump dacă trebuie să 798 00:39:36,260 --> 00:39:37,340 face acest lucru de fiecare dată. 799 00:39:37,340 --> 00:39:41,530 >> Deci, dacă ai face printf hei, programul nu s-ar putea imprima de fapt, că 800 00:39:41,530 --> 00:39:43,040 imediat la consola. 801 00:39:43,040 --> 00:39:46,080 S-ar putea spune, OK, l-am scris. 802 00:39:46,080 --> 00:39:49,570 Și apoi un fel de așteptați pentru tine de a da un pic mai mult înainte de fapt, 803 00:39:49,570 --> 00:39:51,380 scrie-l la consola. 804 00:39:51,380 --> 00:39:54,040 >> Deci, motivul pentru care acesta a fost cazul - 805 00:39:54,040 --> 00:39:56,450 și e un fel de legătură de somn - 806 00:39:56,450 --> 00:40:00,060 este că somnul a fost un fel de doar injectat acolo pentru a demonstra 807 00:40:00,060 --> 00:40:02,480 faptul că nu se scrie ea sincron. 808 00:40:02,480 --> 00:40:06,210 Dar motivul pentru care este doar de performanță, astfel încât să nu trebuie să 809 00:40:06,210 --> 00:40:08,920 face că multe persoane de contact la sistemul de operare. 810 00:40:08,920 --> 00:40:12,300 >> Dar aici, ceea ce suntem cu adevărat încearcă să facă cu acest lucru somnul este doar spectacol 811 00:40:12,300 --> 00:40:17,730 că atunci când avem două persoane care vizitează acest site, aceasta nu va pune 812 00:40:17,730 --> 00:40:22,310 le într-o linie în care se va spune Am să te ajut, iar apoi, când am 813 00:40:22,310 --> 00:40:25,350 complet terminat ajutându-vă după aceste cinci secunde, apoi am de gând să 814 00:40:25,350 --> 00:40:26,750 muta pe următoarea persoană. 815 00:40:26,750 --> 00:40:29,515 Astfel încât cererea primului persoanei nu lega că bucla eveniment 816 00:40:29,515 --> 00:40:31,610 în cazul în care are sens. 817 00:40:31,610 --> 00:40:34,980 >> Dar aici este de fapt un exemplu de ceva care va lega 818 00:40:34,980 --> 00:40:36,090 până bucla eveniment. 819 00:40:36,090 --> 00:40:39,130 Deci, aici este o funcție oribil pentru calcula n-lea Fibonacci. 820 00:40:39,130 --> 00:40:43,510 Este literalmente modul în mai rău se poate calcula numărul Fibonacci n-lea. 821 00:40:43,510 --> 00:40:48,480 Și aceasta este de fapt doar să recunoască în cazul în care aceasta a venit de la, 822 00:40:48,480 --> 00:40:49,330 există de fapt - 823 00:40:49,330 --> 00:40:53,230 Adică, puteți încerca să găsim o - dar nu e ca un blog foarte lungă 824 00:40:53,230 --> 00:40:54,130 posta că cineva a scris. 825 00:40:54,130 --> 00:40:55,660 E ca unul din acele lucruri Reddit. 826 00:40:55,660 --> 00:40:59,650 Dar cineva a criticat Node.js, și au folosit aceasta ca un exemplu. 827 00:40:59,650 --> 00:41:03,700 Așa că am un fel de dorit să vă arăt doar doi perspective diferite doar pentru a obține 828 00:41:03,700 --> 00:41:07,320 o înțelegere generală a conceptelor în spatele acestor două lucruri. 829 00:41:07,320 --> 00:41:13,050 >> Dar acest lucru este ales ca doar un oribil, de calcul oribil ineficiente 830 00:41:13,050 --> 00:41:15,940 mod intensiv pentru a calcula număr Fibonacci n-lea. 831 00:41:15,940 --> 00:41:21,180 Deci, doar ca o notă separată, de ce este se oribil ca într-un fel? 832 00:41:21,180 --> 00:41:23,210 Da? 833 00:41:23,210 --> 00:41:25,130 >> Audiența: Spune începe cu 1.000. 834 00:41:25,130 --> 00:41:27,050 1000 se împarte în 999 și 998. 835 00:41:27,050 --> 00:41:28,970 Fiecare din aceasta se imparte in doua lucruri. 836 00:41:28,970 --> 00:41:30,890 Fiecare din aceasta se imparte in doua lucruri. 837 00:41:30,890 --> 00:41:31,355 >> KEVIN SCHMID: Corect. 838 00:41:31,355 --> 00:41:32,400 >> Audiența: Tot drumul în jos. 839 00:41:32,400 --> 00:41:32,840 >> KEVIN SCHMID: Exact. 840 00:41:32,840 --> 00:41:37,330 Deci, doar pentru a repeta pentru aparatul de fotografiat, dacă am apel fib pe cum ar fi 1000 sau ceva 841 00:41:37,330 --> 00:41:41,810 cum ar fi faptul că, nu este în mod evident mai puțin sau egal cu una, așa că am de gând să 842 00:41:41,810 --> 00:41:46,040 du-te la acest caz altcineva, și apoi am de gând pentru a apela fib 999 plus fib 998. 843 00:41:46,040 --> 00:41:50,290 Și apoi destul de mult tot de care lucru care fib 999 nu este 844 00:41:50,290 --> 00:41:52,950 un fel de la acest nivel. 845 00:41:52,950 --> 00:41:55,620 Dacă te duci în jos, e chiar mai mult redundant decât atât, dar dacă doar 846 00:41:55,620 --> 00:42:01,390 Cred FIB de calcul 998 se ne destul de aproape de fib 999. 847 00:42:01,390 --> 00:42:05,860 Așa că ar trebui să fie într-adevăr un pic mai mult inteligent despre modul în care un fel de reutilizare 848 00:42:05,860 --> 00:42:07,580 acestea, dar nu suntem reutilizarea aceste lucruri, la toate. 849 00:42:07,580 --> 00:42:11,860 Deci, vă puteți imagina acest gigantic, arbore gigantic care este doar oribil. 850 00:42:11,860 --> 00:42:12,940 >> Dar oricum, OK. 851 00:42:12,940 --> 00:42:14,040 Deci asta a fost minciună. 852 00:42:14,040 --> 00:42:15,530 Este nevoie de doar un timp pentru a rula. 853 00:42:15,530 --> 00:42:16,510 Da? 854 00:42:16,510 --> 00:42:17,760 >> Audiența: [inaudibil]. 855 00:42:17,760 --> 00:42:20,430 856 00:42:20,430 --> 00:42:22,481 >> KEVIN SCHMID: Oh, ai putea repet întrebarea? 857 00:42:22,481 --> 00:42:23,731 >> Audiența: [inaudibil]. 858 00:42:23,731 --> 00:42:30,840 859 00:42:30,840 --> 00:42:33,990 >> KEVIN SCHMID: Oh, deci asta este codul doar care va fi un fel de pe 860 00:42:33,990 --> 00:42:34,850 partea de server. 861 00:42:34,850 --> 00:42:38,100 Deci, acest lucru nu va fi găsit în browser-ul sau nimic. 862 00:42:38,100 --> 00:42:42,160 Este practic ceea ce avem este că, atunci când utilizatorul de aici destul de mult mărci 863 00:42:42,160 --> 00:42:45,300 cererea lor din nou, atunci când am un fel de face o cerere, vom apela 864 00:42:45,300 --> 00:42:47,040 această funcție pe partea de server. 865 00:42:47,040 --> 00:42:50,480 Și apoi vom obține rezultatul înapoi de asteptare această funcție. 866 00:42:50,480 --> 00:42:52,460 Și apoi vom imprima doar l pentru utilizator. 867 00:42:52,460 --> 00:42:54,580 Astfel încât utilizatorul nu se referă într-adevăr cu această funcție prea mult. 868 00:42:54,580 --> 00:42:57,270 >> A fost că problema? 869 00:42:57,270 --> 00:42:58,470 Asta face sens? 870 00:42:58,470 --> 00:42:58,810 OK. 871 00:42:58,810 --> 00:43:00,930 Rece. 872 00:43:00,930 --> 00:43:04,240 >> Deci, din nou, vom face tot acest res.writeHead lucru care ne imprima 873 00:43:04,240 --> 00:43:05,150 antet. 874 00:43:05,150 --> 00:43:09,730 Și apoi m-am încheia răspunsul de a face numărul magic este FIB 45. 875 00:43:09,730 --> 00:43:12,100 Așa că hai să rulați acest server. 876 00:43:12,100 --> 00:43:15,190 Așa că am de gând să fac un nod fib.js. 877 00:43:15,190 --> 00:43:17,340 Deci, acum serverul meu minciună se execută. 878 00:43:17,340 --> 00:43:21,790 >> Și apoi aici, mă duc pentru a face una dintre acestea. 879 00:43:21,790 --> 00:43:22,200 OK? 880 00:43:22,200 --> 00:43:24,960 Așa că eu sunt doar de gând să spun, Curl. 881 00:43:24,960 --> 00:43:32,226 Asa ca va dura ceva timp, dar sperăm că în curând se va termina și 882 00:43:32,226 --> 00:43:35,660 se va imprima ca al 45-lea Fibonacci număr. 883 00:43:35,660 --> 00:43:36,910 >> Audiența: [inaudibil]. 884 00:43:36,910 --> 00:43:40,720 885 00:43:40,720 --> 00:43:42,050 >> KEVIN SCHMID: Aceasta ar trebui se face destul de repede. 886 00:43:42,050 --> 00:43:43,780 Deci, ar trebui să ia cinci la șase secunde. 887 00:43:43,780 --> 00:43:48,570 Nu știu că e doar V8 fi super- rapid, dar în orice caz, aceasta este o 888 00:43:48,570 --> 00:43:52,700 exemplu foarte scurt și intenționat neelegant de un non-trivial 889 00:43:52,700 --> 00:43:54,200 calcul. 890 00:43:54,200 --> 00:43:56,700 Deci, după un timp, ea nu obține acest lucru. 891 00:43:56,700 --> 00:44:02,130 >> Dar acum, dacă eu fac același tip de experiment ca și mai înainte, unde fac 892 00:44:02,130 --> 00:44:04,010 două cereri în același timp? 893 00:44:04,010 --> 00:44:06,990 Deci, aici am de gând să o Curl pe adresa, și am de gând 894 00:44:06,990 --> 00:44:08,260 a face o altă Curl. 895 00:44:08,260 --> 00:44:12,070 Și amintiți-vă, atunci când am făcut acest lucru pentru somn de server, atunci când l-am avut, practic, 896 00:44:12,070 --> 00:44:15,320 după cinci secunde, ei destul de atât de mult s-au întors din dreapta 897 00:44:15,320 --> 00:44:16,380 cam în același timp. 898 00:44:16,380 --> 00:44:18,650 Deci, nu a fost deosebit de legat. 899 00:44:18,650 --> 00:44:20,290 >> Dar hai să încercăm acum. 900 00:44:20,290 --> 00:44:22,370 OK, deci avem două procese noastre. 901 00:44:22,370 --> 00:44:24,210 Amintiți-vă acestea sunt ID-urile de proces. 902 00:44:24,210 --> 00:44:25,900 Acest lucru va fi un pic ciudat în timp ce trage de timp. 903 00:44:25,900 --> 00:44:31,340 904 00:44:31,340 --> 00:44:35,360 Deci, haideți să stai aici și să aștepte. 905 00:44:35,360 --> 00:44:37,090 >> Deci, unul dintre ei ar trebui să vină înapoi după cum ar fi - 906 00:44:37,090 --> 00:44:39,190 OK, așa că a venit înapoi. 907 00:44:39,190 --> 00:44:43,570 Dar atunci de ce nu a făcut de-a doua o întoarce încă? 908 00:44:43,570 --> 00:44:44,389 Da? 909 00:44:44,389 --> 00:44:49,280 >> Audiența: Serverul nu poate face nimic în timp ce se calcul ca număr mare. 910 00:44:49,280 --> 00:44:51,620 >> KEVIN SCHMID: Corect. 911 00:44:51,620 --> 00:44:55,395 Deci, răspunsul a fost doar faptul că serverul într-adevăr nu se poate face nimic în timp ce 912 00:44:55,395 --> 00:44:57,460 se calcul că numărul Fibonacci. 913 00:44:57,460 --> 00:44:59,360 Așa că acum tocmai am primit-mi două lucruri înapoi. 914 00:44:59,360 --> 00:45:03,210 Dar cred doar să se gândească la codul un pic mai mult, modul în care este de lucru 915 00:45:03,210 --> 00:45:05,030 și totul. 916 00:45:05,030 --> 00:45:11,750 >> Deci, această funcție aici este codul care I-am spus acest server pentru a rula atunci când 917 00:45:11,750 --> 00:45:14,100 primește o nouă solicitare de intrare. 918 00:45:14,100 --> 00:45:17,940 Deci, este doar de gând să trec prin această întregul cod, și apoi se va merge 919 00:45:17,940 --> 00:45:21,120 înapoi la bucla de evenimente și apoi continuați de verificare pentru noi evenimente. 920 00:45:21,120 --> 00:45:23,670 Deci, practic, ceea ce am întâmplă este serverul este 921 00:45:23,670 --> 00:45:25,080 ascultare de lucruri noi. 922 00:45:25,080 --> 00:45:28,070 Prima persoana care cere pentru ceea ce este de 45. 923 00:45:28,070 --> 00:45:30,490 Vom rula acest cod pentru a calcula. 924 00:45:30,490 --> 00:45:33,420 Acest cod are aproximativ cinci la șase secunde pentru a alerga. 925 00:45:33,420 --> 00:45:36,990 Apoi ne întoarcem la bucla eveniment și verificați de noi cereri. 926 00:45:36,990 --> 00:45:42,700 >> Deci, acesta este un exemplu de modul în care, dacă au lucruri care sunt așa-numita de calcul 927 00:45:42,700 --> 00:45:48,140 legat, sau de a folosi o mulțime de calcul, nu de putere, dar ca sunt 928 00:45:48,140 --> 00:45:50,260 de calcul intensiv - 929 00:45:50,260 --> 00:45:54,080 Cred că un singur lucru de spus despre acest lucru este că această funcție este de a face în totalitate, 930 00:45:54,080 --> 00:45:56,310 pentru cea mai mare parte, destul de drept de lucru util. 931 00:45:56,310 --> 00:45:59,970 Tot timpul că de apel invers funcție a fost de funcționare, a fost destul de 932 00:45:59,970 --> 00:46:03,670 mult petrece majoritatea timpului doar de calcul număr care Fibonacci n-lea. 933 00:46:03,670 --> 00:46:05,930 >> Dar am avut doar un singur fir pentru a face față. 934 00:46:05,930 --> 00:46:10,270 În modelul Apache, atunci când doi oameni a făcut cererea pentru a obține fib 45, ne-am 935 00:46:10,270 --> 00:46:11,610 ar fi avut două fire diferite. 936 00:46:11,610 --> 00:46:15,060 Și apoi de locuri de muncă al sistemului de operare ar fi fost, sau la nivel de utilizator 937 00:46:15,060 --> 00:46:18,660 cod care gestionează firele, s-ar fi a fost de a felie că până pe 938 00:46:18,660 --> 00:46:23,060 CPU, sau chiar dacă ai avea mai multe procesoare, le distribuie uniform pe procesoare 939 00:46:23,060 --> 00:46:26,130 astfel încât acestea au fost atât de finisaj aproximativ în același timp. 940 00:46:26,130 --> 00:46:31,120 >> Deci, doar să-ți arăt cum putem rezolva de - iar acest lucru nu este o perfectă totală 941 00:46:31,120 --> 00:46:34,280 soluție, ci un fel de modul în care putem face un vin aici și să facă 942 00:46:34,280 --> 00:46:35,880 un pic mai bine. 943 00:46:35,880 --> 00:46:41,540 Deci, ceea ce am aici este un program numit FIB C. Și acest principiu, foloseste 944 00:46:41,540 --> 00:46:45,690 un alt unul dintre modulele nod numit Modulul Process Copilului. 945 00:46:45,690 --> 00:46:49,210 Deci, am inclus că la fel de sus ca și cum mi-ar face o jumătate de kilogram includ 946 00:46:49,210 --> 00:46:51,230 process.h copil sau ceva. 947 00:46:51,230 --> 00:46:56,210 Acum am acces la această variabilă CP care are toate funcțiile mea. 948 00:46:56,210 --> 00:47:01,810 >> Deci, acum ce fac în acest răspuns handler este Eu conduc acest program 949 00:47:01,810 --> 00:47:04,100 dot slash FIB 45. 950 00:47:04,100 --> 00:47:06,820 Deci, ceea ce am făcut - și Mă duc pentru a ieși din acest program pentru o 951 00:47:06,820 --> 00:47:07,620 pic - 952 00:47:07,620 --> 00:47:11,060 Este Am scris un program C care practic calculează 953 00:47:11,060 --> 00:47:12,630 număr Fibonacci n-lea. 954 00:47:12,630 --> 00:47:15,960 Deci, aici e doar un program am scris în C, care calculeaza acest lucru. 955 00:47:15,960 --> 00:47:19,040 Eu pot compila, și eu pot rula se la linia de comandă. 956 00:47:19,040 --> 00:47:22,150 Și se va calcula Număr de 45 Fibonacci. 957 00:47:22,150 --> 00:47:24,510 >> Deci, observați că doar nevoie de destul de mult la fel de mult. 958 00:47:24,510 --> 00:47:28,240 Eu, probabil, ar fi putut folosi de bord 03 de optimizarea sau ceva de genul asta, 959 00:47:28,240 --> 00:47:31,050 dar am făcut-o ca regulat setările de compilator. 960 00:47:31,050 --> 00:47:33,260 Și îl imprimă. 961 00:47:33,260 --> 00:47:36,830 >> Dar acum, ce am eu un fel de a face? 962 00:47:36,830 --> 00:47:39,800 Oh pare rău, fișier greșit. 963 00:47:39,800 --> 00:47:42,800 Așa că am face aceleași lucruri cu antetul ca mai înainte. 964 00:47:42,800 --> 00:47:45,780 Apoi am face acest lucru cp.exec. 965 00:47:45,780 --> 00:47:49,460 Deci, despre ce este de gând să faceți este să se va rula acest program. 966 00:47:49,460 --> 00:47:51,960 Dar modul în care aceasta funcționează este faptul că ea nu va aștepta 967 00:47:51,960 --> 00:47:53,400 acest program pentru a termina. 968 00:47:53,400 --> 00:47:56,000 Pur și simplu, practic, spune executa acest program. 969 00:47:56,000 --> 00:47:58,700 Deci, practic acest tip în comanda fel de promptă. 970 00:47:58,700 --> 00:48:02,350 >> Și apoi, când ați terminat cu aceasta, rulați această funcție. 971 00:48:02,350 --> 00:48:04,800 Deci, acum am un fel de a obține acest lucru întreg restaurat de 972 00:48:04,800 --> 00:48:06,750 ca și cum nu ne asteptam. 973 00:48:06,750 --> 00:48:08,530 Oare acest tip de sens? 974 00:48:08,530 --> 00:48:08,990 Da? 975 00:48:08,990 --> 00:48:11,060 >> Audiența: [inaudibil]? 976 00:48:11,060 --> 00:48:13,610 >> KEVIN SCHMID: Deci, acest lucru va de fapt, deschide un nou proces de a face acest lucru. 977 00:48:13,610 --> 00:48:19,310 Deci, aceasta este, de fapt, în unele privințe, rău, nu super-rău, dar este 978 00:48:19,310 --> 00:48:22,990 important să spunem că aceasta este un fel de merge înapoi la, pe de o parte, Apache 979 00:48:22,990 --> 00:48:26,450 model în care vom face fire și procese pentru fiecare cerere sau 980 00:48:26,450 --> 00:48:29,280 procese pentru fiecare cerere. 981 00:48:29,280 --> 00:48:32,090 Deci, aceasta este un fel de analog la ceea ce face Apache. 982 00:48:32,090 --> 00:48:35,110 În unele cazuri, se va folosi doar un nou fir, care este un pic mai multă lumină 983 00:48:35,110 --> 00:48:39,040 greutate decât un proces, dar ar putea Apache sfârșesc prin bifurcare un nou proces 984 00:48:39,040 --> 00:48:43,370 care este un fel de ceea ce facem noi aici implicit, de a face punct slash FIB 45. 985 00:48:43,370 --> 00:48:48,690 >> Și apoi, în acest caz, ne-am cam suporta aceleași cheltuieli de procese. 986 00:48:48,690 --> 00:48:50,710 Deci, acesta este doar un singur lucru pe care îl pot face. 987 00:48:50,710 --> 00:48:52,600 Dar doar pentru a arăta acest tip de funcționare. 988 00:48:52,600 --> 00:48:57,120 Și această discuție este doar într-adevăr vizează prezintă aceste tipuri de programe ca o 989 00:48:57,120 --> 00:49:00,710 mod de a arata perspective diferite asupra cum să se proiecteze servere de genul asta. 990 00:49:00,710 --> 00:49:08,300 Deci, acest lucru se execută, iar apoi, dacă acum fac acest lucru din nou, am primit două ID-uri de proces. 991 00:49:08,300 --> 00:49:10,320 >> Hai să vorbim despre lucrurile să se arate. 992 00:49:10,320 --> 00:49:11,980 Astfel observa că acestea sunt treptat. 993 00:49:11,980 --> 00:49:12,700 Asta-i grozav. 994 00:49:12,700 --> 00:49:15,140 Pentru că a fost 27122 înainte. 995 00:49:15,140 --> 00:49:18,580 Dar aviz acum, s-au întors la aproximativ în același timp. 996 00:49:18,580 --> 00:49:23,960 >> Și acum, o întrebare bună de a cere despre de ce a fost că acest caz este, al cărui loc de muncă 997 00:49:23,960 --> 00:49:27,590 a fost acum la un fel de a face aceste lucruri un fel de fair-play cu fiecare 998 00:49:27,590 --> 00:49:31,350 alte, aceste două cazuri de dot slash FIB 45 că am fugit 999 00:49:31,350 --> 00:49:32,880 sau Nod fugit? 1000 00:49:32,880 --> 00:49:36,940 Cine fel de face corect că ambele a lua un fel de echilibrat timp a alerga? 1001 00:49:36,940 --> 00:49:42,900 1002 00:49:42,900 --> 00:49:44,220 >> Audiența: [inaudibil]. 1003 00:49:44,220 --> 00:49:44,620 >> KEVIN SCHMID: Da. 1004 00:49:44,620 --> 00:49:49,740 Deci, practic, atunci când fac dot FIB slash 45 sau ceva de genul asta, acum e 1005 00:49:49,740 --> 00:49:53,750 cam până la sistemul de operare pentru a ocupa runtime acestor programe. 1006 00:49:53,750 --> 00:49:56,920 Și acum se poate programa pe diferite procesoare sau 1007 00:49:56,920 --> 00:49:58,330 le poate programa. 1008 00:49:58,330 --> 00:50:01,870 Se poate felie de timp pe care o CPU devine sau care primesc 1009 00:50:01,870 --> 00:50:03,330 pentru a rula pe un procesor. 1010 00:50:03,330 --> 00:50:05,620 Deci, asta e ideea din spatele acest lucru. 1011 00:50:05,620 --> 00:50:07,220 Asta face sens pentru toată lumea? 1012 00:50:07,220 --> 00:50:10,950 Deci, acum Nod nu joacă într-adevăr o parte la împărțirea acestor sarcini. 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 >> Astfel că e aproape o pentru exemple. 1016 00:50:17,840 --> 00:50:23,370 Am vrut doar să arate un singur lucru mai mult pentru că o mulțime de acest lucru a fost până acum 1017 00:50:23,370 --> 00:50:27,350 Nu în totalitate super-practic în unele cazuri. 1018 00:50:27,350 --> 00:50:30,970 Îmi pot imagina venind acasă după această vorbi și ceva și spune ca, 1019 00:50:30,970 --> 00:50:35,710 ei bine, un fel de ieșit din acea convorbire care Pot face un server de Fibonacci pentru 1020 00:50:35,710 --> 00:50:37,360 proiectul meu final. 1021 00:50:37,360 --> 00:50:40,770 Deci, aici e doar un fel de un exemplu mai mult care sperăm că va fi - 1022 00:50:40,770 --> 00:50:44,620 poate nu, dar poate - un pic mai mult fel de relevante pentru proiecte finale și 1023 00:50:44,620 --> 00:50:46,440 gândire înainte de lucruri de genul asta. 1024 00:50:46,440 --> 00:50:48,870 >> Deci, aceasta este chat.js. 1025 00:50:48,870 --> 00:50:52,290 Deci, aceasta este un fel de ca o probă Codul partea de server pe care le-ar putea folosi pentru a 1026 00:50:52,290 --> 00:50:55,700 configura un server de chat mic ca este posibil să fi văzut pe 1027 00:50:55,700 --> 00:50:56,630 Facebook Chat sau orice altceva. 1028 00:50:56,630 --> 00:50:59,990 Deci, eu nu spun acest lucru este ca Facebook Chat-ul, dar acest lucru este un fel de 1029 00:50:59,990 --> 00:51:06,230 ca un bun - poate nu e bun, dar poate punct de plecare pentru o discuție - bun 1030 00:51:06,230 --> 00:51:08,560 serverului pentru site-ul dvs. pentru un proiect final. 1031 00:51:08,560 --> 00:51:11,040 Așa că haideți să ne uităm la ceea ce face. 1032 00:51:11,040 --> 00:51:15,500 >> Deci, suntem obtinerea acestui lucru special în partea de sus, acest var SIO 1033 00:51:15,500 --> 00:51:17,050 este egal necesita Socket.IO. 1034 00:51:17,050 --> 00:51:20,280 Deci, acesta este un alt lucru pe care ea nu vin de fapt, la pachet cu 1035 00:51:20,280 --> 00:51:22,300 Nod, dar puteți să-l instalați. 1036 00:51:22,300 --> 00:51:23,480 Este un modul de Nod. 1037 00:51:23,480 --> 00:51:25,670 Deci, e la fel ca unele extensie de Nod. 1038 00:51:25,670 --> 00:51:29,220 >> SocketIO este de fapt într-adevăr un fel de rece. 1039 00:51:29,220 --> 00:51:32,550 Este o abstracție care, practic, ceea ce ce face este este că vă permite să 1040 00:51:32,550 --> 00:51:35,770 au acest flux de comunicare între un web 1041 00:51:35,770 --> 00:51:39,430 browser și un server web. 1042 00:51:39,430 --> 00:51:45,250 Deci, pentru cea mai mare parte până acum, am avut acestea foarte rapid o secundă sau două 1043 00:51:45,250 --> 00:51:48,790 două comunicări între un web browser și serverul web. 1044 00:51:48,790 --> 00:51:53,310 Deci, este, practic merge la google.com, get chestii, trimite înapoi, și apoi 1045 00:51:53,310 --> 00:51:53,770 am terminat. 1046 00:51:53,770 --> 00:51:56,560 Noi nu vorbim din nou până la utilizator tipuri în altceva. 1047 00:51:56,560 --> 00:52:01,090 >> Dar ce Socket.IO și fel similar de lucruri - și SocketIO este de fapt o 1048 00:52:01,090 --> 00:52:03,940 din lucrurile pe care este construit pe ca WebSocket care este un fel de disponibil 1049 00:52:03,940 --> 00:52:06,440 ca parte a HTML5 - 1050 00:52:06,440 --> 00:52:09,620 care vă permite să aibă această continuarea dialogului. 1051 00:52:09,620 --> 00:52:13,990 Și acest lucru este foarte util într-un server de chat tip de lucru, pentru că este 1052 00:52:13,990 --> 00:52:17,390 ca un fel de dialog continuu în câteva modalități pentru că dacă sunteți pe chat 1053 00:52:17,390 --> 00:52:21,540 cu cineva, puteți acum doar trimite un mesaj prin conductă, și apoi 1054 00:52:21,540 --> 00:52:23,940 server poate trimite un mesaj în jos țeavă la o altă persoană ești 1055 00:52:23,940 --> 00:52:24,520 chat cu. 1056 00:52:24,520 --> 00:52:26,903 Și apoi puteți avea această schimb de genul asta. 1057 00:52:26,903 --> 00:52:30,590 1058 00:52:30,590 --> 00:52:32,850 >> Deci, asta e un fel de ceea ce SocketIO este bun pentru. 1059 00:52:32,850 --> 00:52:38,400 Motivul pentru care SocketIO utilizează WebSockets ca un lucru este faptul că, în 1060 00:52:38,400 --> 00:52:43,980 plus față de WebSockets pur și simplu vechi, face, de asemenea, unele trucuri pentru a practic 1061 00:52:43,980 --> 00:52:45,610 face browser-ul compatibil. 1062 00:52:45,610 --> 00:52:50,040 Deci, browsere, cum ar fi Internet Explorer din păcate nu acceptă WebSockets 1063 00:52:50,040 --> 00:52:50,810 drept afară de la cutie. 1064 00:52:50,810 --> 00:52:55,290 Asa ca foloseste un alt fel de rece curat lucruri cu Adobe Flash pentru a permite 1065 00:52:55,290 --> 00:52:57,170 tine de a avea un sprijin browser-ul cruce. 1066 00:52:57,170 --> 00:52:58,800 Așa că e foarte util. 1067 00:52:58,800 --> 00:53:02,440 >> Și, de fapt, eu știu că sunt un fel de care rulează pe timp aici, dar CS50 1068 00:53:02,440 --> 00:53:08,490 Discuta, ai văzut vreodată ceva ca și, nu știu, gol este așa și așa 1069 00:53:08,490 --> 00:53:11,030 răspuns la acest post sau ceva cum ar fi faptul că, această caracteristică? 1070 00:53:11,030 --> 00:53:12,250 Asta e SocketIO. 1071 00:53:12,250 --> 00:53:15,580 Așa că atunci când cineva începe tastarea în discuta despre box pentru a face un răspuns sau 1072 00:53:15,580 --> 00:53:20,040 ceva, browser-ul dvs. nu ceea ce-i denumit în SocketIO emite un fel de 1073 00:53:20,040 --> 00:53:22,660 eveniment care spune că cineva este răspuns la acest post. 1074 00:53:22,660 --> 00:53:26,110 >> Atunci serverul spune, OK, Ce trebuie să fac? 1075 00:53:26,110 --> 00:53:29,270 Ei bine, acum trebuie să-i spun ceilalți tipi care sunt pe CS50 Discutați despre căutarea 1076 00:53:29,270 --> 00:53:31,170 la acest post că cineva a răspuns. 1077 00:53:31,170 --> 00:53:34,190 Deci, asta e un fel de ceea ce este SocketIO bun pentru, acest tip continuă a 1078 00:53:34,190 --> 00:53:35,930 flux de dialog. 1079 00:53:35,930 --> 00:53:37,250 OK. 1080 00:53:37,250 --> 00:53:40,060 >> Deci, ceea ce am aici - și noi suntem doar O să ignore matrice de conexiuni 1081 00:53:40,060 --> 00:53:41,390 pentru un pic - 1082 00:53:41,390 --> 00:53:43,080 ceea ce fac este să fac un alt ascult. 1083 00:53:43,080 --> 00:53:46,880 Deci asta e doar modul în Socket.IO este a zis să ascultăm pe acest port. 1084 00:53:46,880 --> 00:53:50,060 Și apoi m-am face acest lucru pe conexiune. 1085 00:53:50,060 --> 00:53:53,360 Deci, asta e doar practic Socket IO fel de a spune, atunci când primim o 1086 00:53:53,360 --> 00:53:55,840 conexiune, te vreau pentru a rula acest cod. 1087 00:53:55,840 --> 00:53:59,870 >> Și observați că în loc de a avea rec și res trecut acolo am Socket. 1088 00:53:59,870 --> 00:54:03,260 Și această idee Socket este de fapt acest lucru pe care le puteți scrie și să citească 1089 00:54:03,260 --> 00:54:05,750 de care are utilizator mesaje, eventual. 1090 00:54:05,750 --> 00:54:10,700 Și mesajele pe care le-ar trimite pot trece prin asta Socket. 1091 00:54:10,700 --> 00:54:12,140 Asta face sens? 1092 00:54:12,140 --> 00:54:14,490 Deci, este acest lucru în continuare. 1093 00:54:14,490 --> 00:54:17,820 >> Deci, ceea ce fac eu numesc Socket.emit. 1094 00:54:17,820 --> 00:54:20,330 Și emit ia destul de mult două argumente. 1095 00:54:20,330 --> 00:54:24,100 Primul argument este un șir reprezentând doar tipul 1096 00:54:24,100 --> 00:54:25,270 lucru te emit. 1097 00:54:25,270 --> 00:54:28,120 Deci, pentru acest caz, am utilizare acest șir mesaj nou. 1098 00:54:28,120 --> 00:54:32,670 Si acesta este doar practic spune că tipul de acest lucru, ceea ce am 1099 00:54:32,670 --> 00:54:34,750 trimiterea, este un nou mesaj. 1100 00:54:34,750 --> 00:54:38,460 Astfel încât să puteți asculta pentru anumite tipuri cum ar fi un mesaj nou sau orice 1101 00:54:38,460 --> 00:54:39,960 prin utilizarea punct pe. 1102 00:54:39,960 --> 00:54:44,570 >> Astfel de conexiune și de utilizare a trimis acolo, în cazul în care te uiți la care ne numim punct pe, 1103 00:54:44,570 --> 00:54:48,150 acestea sunt alte siruri de caractere care reprezintă tipuri de mesaje de utilizatori. 1104 00:54:48,150 --> 00:54:52,060 Deci, practic, puteți avea această emit unul dintre aceste tipuri de mesaje, și 1105 00:54:52,060 --> 00:54:55,520 apoi face ceva ca răspuns la unul dintre aceste tipuri de mesaje 1106 00:54:55,520 --> 00:54:57,640 >> Așa că eu sunt emițătoare de acest nou mesaj. 1107 00:54:57,640 --> 00:55:00,540 Vom ignora connections.push pentru o secundă. 1108 00:55:00,540 --> 00:55:03,360 Dar apoi mi-am spus, utilizatorul Socket.on trimis. 1109 00:55:03,360 --> 00:55:07,540 Deci, acum e cam ca atunci când user-mi trimite un mesaj, vreau 1110 00:55:07,540 --> 00:55:09,240 vă pentru a rula acest cod. 1111 00:55:09,240 --> 00:55:12,080 Și observați că această funcție anonim este de a lua în această variabilă 1112 00:55:12,080 --> 00:55:16,300 numit de date care este de fapt întâmplă pentru a avea un mesaj utilizatorului. 1113 00:55:16,300 --> 00:55:20,700 >> Un fel de a vorbi despre așa că acum haideți matrice de conexiuni. 1114 00:55:20,700 --> 00:55:24,590 Deci, aceasta este proiectat pentru un client de chat în cazul în care, practic, toată lumea e un fel de in 1115 00:55:24,590 --> 00:55:25,950 aceeași cameră de chat. 1116 00:55:25,950 --> 00:55:29,640 Deci, practic, ceea ce avem nevoie pentru a păstra în jurul valorii de unele matrice care, practic, 1117 00:55:29,640 --> 00:55:33,170 reprezintă toți oamenii sunt conectati pe chat în unele puncte de vedere, în cazul în care are sens. 1118 00:55:33,170 --> 00:55:33,340 Corect? 1119 00:55:33,340 --> 00:55:37,190 Pentru că avem nevoie să știm cine ăia sunt astfel încât să le putem trimite mesaje 1120 00:55:37,190 --> 00:55:39,140 că alte persoane trimite la noi. 1121 00:55:39,140 --> 00:55:44,440 >> Deci, ceea ce acest cod nu este atunci când utilizatorul trimite un mesaj - care este tipul de 1122 00:55:44,440 --> 00:55:45,300 eveniment - 1123 00:55:45,300 --> 00:55:47,120 Vom rula acest cod. 1124 00:55:47,120 --> 00:55:51,240 Și ceea ce facem este să rulați prin intermediul acestui matrice care le-am numit conexiuni. 1125 00:55:51,240 --> 00:55:54,390 Și destul de mult pentru fiecare conexiune cu excepția celui care e al nostru, asta e 1126 00:55:54,390 --> 00:55:59,520 ceea ce spune acest cod, vom trimite o nouă mesaj cu mesajul atașat 1127 00:55:59,520 --> 00:56:01,210 informații. 1128 00:56:01,210 --> 00:56:04,880 >> Deci, dacă observați aici, ce am făcut când utilizatorul de fapt face un nou 1129 00:56:04,880 --> 00:56:08,560 este conexiunea Am adăugat cu Metoda JavaScript.push, aceasta este 1130 00:56:08,560 --> 00:56:12,100 în principiu, doar spun ca adăuga care Socket ca o valoare în 1131 00:56:12,100 --> 00:56:13,900 conexiuni nostru matrice. 1132 00:56:13,900 --> 00:56:20,560 Deci, acum, când acest cod se execută, acesta va trimite lucruri la cele special 1133 00:56:20,560 --> 00:56:22,020 conexiuni. 1134 00:56:22,020 --> 00:56:26,980 Deci, acest lucru poate fi un bun punct de plecare pentru a face un server de chat 1135 00:56:26,980 --> 00:56:28,250 sau ceva similar. 1136 00:56:28,250 --> 00:56:33,315 >> Și tipul de lucru cool este ca cod pe care le vezi aici, pentru ca pe și 1137 00:56:33,315 --> 00:56:36,390 emit și chestii de genul asta este aceeași un fel de cod JavaScript pe care le-ar 1138 00:56:36,390 --> 00:56:39,260 scrie în browser-ul pentru a interactiona cu serverul. 1139 00:56:39,260 --> 00:56:42,480 Deci, de aceea SocketIO este un fel de elegant și util în acest fel. 1140 00:56:42,480 --> 00:56:45,680 1141 00:56:45,680 --> 00:56:49,250 >> Oh, și doar un lucru foarte repede. 1142 00:56:49,250 --> 00:56:55,970 Nu a fost un proiect final CS50 anul trecut care a implementat practic o discuție 1143 00:56:55,970 --> 00:56:57,840 server din Node.js. 1144 00:56:57,840 --> 00:57:01,350 Cred că e Harvardchats.org dar eu nu sunt - 1145 00:57:01,350 --> 00:57:02,940 OK. 1146 00:57:02,940 --> 00:57:06,190 Eu nu sunt sigur ce URL-ul este, dar Eu pot trimite asta ulterior. 1147 00:57:06,190 --> 00:57:09,260 Dar este un fel de ceea ce se răcească puteți face cu Node.js. 1148 00:57:09,260 --> 00:57:14,680 >> Asa ca sper ca, in general, voi avea o bun simț a ceea ce este util Node.js 1149 00:57:14,680 --> 00:57:17,870 pentru și cum ai putea aplica, poate la proiectul final. 1150 00:57:17,870 --> 00:57:21,050 Eu va trimit ceva mai mult resurse, împreună cu aceasta. 1151 00:57:21,050 --> 00:57:23,170 Și vă mulțumesc că ați venit. 1152 00:57:23,170 --> 00:57:23,610 Mulțumesc. 1153 00:57:23,610 --> 00:57:27,168 >> [Aplauze]