1 00:00:00,000 --> 00:00:08,350 2 00:00:08,350 --> 00:00:09,710 >> KEVIN Schmid: Hello everybody. 3 00:00:09,710 --> 00:00:12,640 Selamat datang di seminar CS50 pada Node.js. 4 00:00:12,640 --> 00:00:13,955 Nama saya Kevin. 5 00:00:13,955 --> 00:00:15,580 Aku TF CS50. 6 00:00:15,580 --> 00:00:17,650 Dan aku semacam seperti benar-benar bersemangat tentang seminar ini. 7 00:00:17,650 --> 00:00:20,430 Saya pikir Node.js sangat dingin. 8 00:00:20,430 --> 00:00:24,200 Saya berharap agar seminar ini dapat digunakan sebagai baik, saya kira, loncatan untuk 9 00:00:24,200 --> 00:00:26,380 beberapa proyek akhir Anda jika Anda tertarik menggunakan 10 00:00:26,380 --> 00:00:27,630 sesuatu seperti Node.js. 11 00:00:27,630 --> 00:00:29,770 12 00:00:29,770 --> 00:00:33,320 >> Kami akan memulai semacam seminar off oleh hanya berbicara tentang sedikit dari 13 00:00:33,320 --> 00:00:36,970 jenis skalabilitas latar belakang perspektif Node.js, dan kemudian 14 00:00:36,970 --> 00:00:39,240 kami akan pindah ke beberapa contoh kode. 15 00:00:39,240 --> 00:00:42,340 Dan aku akan memiliki kode pada sebuah situs web, dan Anda dapat melihat kode. 16 00:00:42,340 --> 00:00:45,475 Dan setelah seminar, saya akan memilah bicara tentang bagaimana Anda dapat mengatur Node.js 17 00:00:45,475 --> 00:00:48,220 pada komputer Anda. 18 00:00:48,220 --> 00:00:48,710 >> OK. 19 00:00:48,710 --> 00:00:49,760 Jadi mari kita mulai. 20 00:00:49,760 --> 00:00:53,700 Jadi, saya kira saya hanya ingin berbicara tentang server web, benar-benar, pertama. 21 00:00:53,700 --> 00:00:59,730 Dan untuk memulai diskusi ini, saya pada dasarnya memiliki diagram yang dari 22 00:00:59,730 --> 00:01:04,269 buku teks yang digunakan untuk CS61, yang pada dasarnya menunjukkan interaksi 23 00:01:04,269 --> 00:01:08,510 antara proses client, seperti web Anda browser atau seperti klien tujuan Anda atau 24 00:01:08,510 --> 00:01:11,340 sesuatu seperti itu, dan server web. 25 00:01:11,340 --> 00:01:15,150 Jadi ini semacam terlihat mirip dengan gambar yang Anda lihat di kuliah tentang 26 00:01:15,150 --> 00:01:19,270 Rabu mana pada dasarnya kita memiliki beberapa proses klien seperti Google Chrome. 27 00:01:19,270 --> 00:01:22,980 >> Dan kemudian langkah pertama adalah client mengirimkan permintaan. 28 00:01:22,980 --> 00:01:27,510 Sehingga dapat menjadi sesuatu seperti baik mari kita kunjungi, saya tidak tahu, CS50.net. 29 00:01:27,510 --> 00:01:29,320 Jadi kita mengeluarkan permintaan itu. 30 00:01:29,320 --> 00:01:34,280 Dan apakah ada yang ingat nama protokol yang menentukan bagaimana 31 00:01:34,280 --> 00:01:35,610 permintaan harus terstruktur? 32 00:01:35,610 --> 00:01:36,382 Yep. 33 00:01:36,382 --> 00:01:37,650 >> AUDIENCE: [Tak terdengar]. 34 00:01:37,650 --> 00:01:38,150 >> KEVIN Schmid: Tepat. 35 00:01:38,150 --> 00:01:40,100 Jadi seperti HTTP, kan? 36 00:01:40,100 --> 00:01:44,720 Jadi pada dasarnya spesifikasi untuk bagaimana permintaan itu harus benar-benar diletakkan 37 00:01:44,720 --> 00:01:47,450 out, karena pada akhir hari, permintaan yang benar-benar hanya seperti 38 00:01:47,450 --> 00:01:50,240 string yang pada dasarnya bilang aku ingin ini. 39 00:01:50,240 --> 00:01:53,580 Dan spesifikasi untuk itu adalah HTTP. 40 00:01:53,580 --> 00:01:55,270 Jadi itu seperti protokol. 41 00:01:55,270 --> 00:01:57,920 >> Jadi server menerima permintaan itu. 42 00:01:57,920 --> 00:02:01,610 Jadi kalian memiliki web server diinstal dalam alat CS50. 43 00:02:01,610 --> 00:02:02,460 Ini Apache. 44 00:02:02,460 --> 00:02:06,230 Dan minggu ini ketika Anda bekerja pada masalah menetapkan tujuh, Anda benar-benar akan bekerja 45 00:02:06,230 --> 00:02:08,160 dengan server web. 46 00:02:08,160 --> 00:02:12,380 Jadi server menerima permintaan itu, dan maka harus jenis menggaruk nya 47 00:02:12,380 --> 00:02:15,090 kepala dan mengatakan seperti apa yang baik yang harus saya lakukan dengan ini? 48 00:02:15,090 --> 00:02:20,060 >> Jadi berdasarkan apa yang memutuskan untuk melakukannya, maka mungkin harus menghubungi beberapa jenis 49 00:02:20,060 --> 00:02:20,730 sumber daya. 50 00:02:20,730 --> 00:02:23,700 Dan sumber daya yang bisa menjadi banyak hal yang berbeda. 51 00:02:23,700 --> 00:02:26,810 Untuk satu, itu bisa saja seperti file HTML statis. 52 00:02:26,810 --> 00:02:29,820 Jadi bisa saja seperti beberapa HTML yang seperti untuk 53 00:02:29,820 --> 00:02:31,100 website pribadi Anda. 54 00:02:31,100 --> 00:02:35,360 Ini bisa jadi sebuah file statis seperti gambar atau seperti film yang Anda miliki. 55 00:02:35,360 --> 00:02:37,660 Bahkan bisa bicara beberapa jenis database 56 00:02:37,660 --> 00:02:39,530 seperti database MySQL. 57 00:02:39,530 --> 00:02:43,910 Jadi tidak selalu harus berkomunikasi dengan sumber daya, tetapi dalam 58 00:02:43,910 --> 00:02:45,700 beberapa kasus, itu bisa. 59 00:02:45,700 --> 00:02:47,800 >> Jadi apa yang akan dilakukan setelah itu adalah itu akan 60 00:02:47,800 --> 00:02:49,430 mengirim kembali respon. 61 00:02:49,430 --> 00:02:53,130 Dan respon untuk ini adalah juga ditentukan oleh HTTP. 62 00:02:53,130 --> 00:02:54,830 Jadi klien dapat menerimanya. 63 00:02:54,830 --> 00:02:56,740 Hal ini dapat merobeknya terpisah dan memprosesnya. 64 00:02:56,740 --> 00:03:00,900 Dan kemudian Anda mendapatkan halaman web seperti Google atau CS50.net atau 65 00:03:00,900 --> 00:03:02,240 apa pun yang Anda pergi ke. 66 00:03:02,240 --> 00:03:03,100 OK? 67 00:03:03,100 --> 00:03:06,080 >> Jadi ini adalah interaksi dasar yang kita akan berurusan dengan. 68 00:03:06,080 --> 00:03:08,770 Dan kita cukup banyak akan berfokus pada ini bagian dari 69 00:03:08,770 --> 00:03:10,640 interaksi, server. 70 00:03:10,640 --> 00:03:10,990 OK. 71 00:03:10,990 --> 00:03:12,210 Keren. 72 00:03:12,210 --> 00:03:15,500 Ada yang punya pertanyaan sejauh ini? 73 00:03:15,500 --> 00:03:17,720 OK. 74 00:03:17,720 --> 00:03:22,430 >> Jadi seperti yang kita katakan, web server menerima ini permintaan HTTP dan kemudian mengeluarkan ini 75 00:03:22,430 --> 00:03:24,760 Respon HTTP. 76 00:03:24,760 --> 00:03:29,100 Dan seperti yang kita bicarakan sebelumnya, Server web CS50 alat adalah Apache. 77 00:03:29,100 --> 00:03:32,490 Jadi, ketika kalian bekerja pada P ditetapkan tujuh, Anda akan bisa bekerja sama dengan 78 00:03:32,490 --> 00:03:34,120 Web server Apache. 79 00:03:34,120 --> 00:03:37,890 Anda tidak akan pernah benar-benar bekerja dengan Apache langsung terlalu banyak. 80 00:03:37,890 --> 00:03:41,920 Anda semacam mengkonfigurasi Apache sedikit ketika Anda menentukan virtual host atau 81 00:03:41,920 --> 00:03:44,970 host v, dan kita akan mendapatkan dengan yang di sedikit. 82 00:03:44,970 --> 00:03:50,620 >> Tapi pada dasarnya, web server Apache dibentuk untuk bekerja dengan PHP jenis 83 00:03:50,620 --> 00:03:51,730 dari luar kotak. 84 00:03:51,730 --> 00:03:56,170 Jadi apa yang sebenarnya terjadi adalah ketika Anda pergi ke salah satu website Anda seperti, katakanlah, 85 00:03:56,170 --> 00:04:00,360 tuan slash index.php lokal atau sesuatu, adalah browser Anda mengirimkan bahwa 86 00:04:00,360 --> 00:04:04,330 permintaan, dan kemudian Apache duduk ada dan angka keluar hubungannya dengan itu. 87 00:04:04,330 --> 00:04:08,840 Dan tindakan adalah untuk mengeksekusi kode di index.php dan 88 00:04:08,840 --> 00:04:11,330 kemudian kirimkan kembali. 89 00:04:11,330 --> 00:04:15,640 Jadi ada itu. 90 00:04:15,640 --> 00:04:16,980 Jadi kita semacam berbicara tentang hal ini. 91 00:04:16,980 --> 00:04:21,990 Jadi itu hanya bisa melayani file statis atau menjalankan beberapa kode PHP dan kemudian masalah 92 00:04:21,990 --> 00:04:23,510 respon. 93 00:04:23,510 --> 00:04:27,670 >> Jadi pertanyaan umum yang bisa datang up baik, bagaimana kita benar-benar berurusan 94 00:04:27,670 --> 00:04:31,750 dengan memiliki beberapa pengguna pada saat yang sama? 95 00:04:31,750 --> 00:04:36,930 Jadi bayangkan jika Anda sedang menulis web Server, jika Anda memiliki server web yang 96 00:04:36,930 --> 00:04:39,900 Anda mencoba untuk menulis sesuatu seperti C atau sesuatu seperti itu, 97 00:04:39,900 --> 00:04:45,150 pada dasarnya Anda dapat berpikir tentang bagaimana ada bisa menjadi semacam kode yang 98 00:04:45,150 --> 00:04:49,330 akan menerima permintaan tersebut, tapi kemudian itu harus melakukan semua pekerjaan ini di atasnya. 99 00:04:49,330 --> 00:04:53,060 Ini mungkin harus, misalnya, hubungi database atau sesuatu seperti itu. 100 00:04:53,060 --> 00:04:53,300 Benar? 101 00:04:53,300 --> 00:04:56,010 Dan kemudian akan melakukan seperti itu pengolahan dan kemudian 102 00:04:56,010 --> 00:04:57,060 dikirim kembali respon. 103 00:04:57,060 --> 00:04:58,950 Jadi itu seperti tinggi tingkat ikhtisar. 104 00:04:58,950 --> 00:05:04,210 >> Tapi itu tidak segera jelas bagaimana Anda bisa melakukan itu sehingga dua orang atau 105 00:05:04,210 --> 00:05:09,040 bahkan 1.000 orang bisa bekerja dengan Anda server web pada saat yang sama. 106 00:05:09,040 --> 00:05:14,880 Jadi solusi yang menggunakan Apache disebut benang atau proses. 107 00:05:14,880 --> 00:05:16,770 Jadi, Anda mungkin pernah mendengar tentang istilah-istilah ini sebelumnya. 108 00:05:16,770 --> 00:05:22,190 Tidak apa-apa jika Anda belum, tapi hanya berpikir tentang benang atau proses sebagai cara untuk 109 00:05:22,190 --> 00:05:26,290 sistem operasi atau program user atau sesuatu seperti itu atau server web 110 00:05:26,290 --> 00:05:28,810 untuk semacam menjalankan beberapa hal sekaligus. 111 00:05:28,810 --> 00:05:31,760 Jadi, Anda mungkin pernah mendengar istilah seperti benang eksekusi. 112 00:05:31,760 --> 00:05:34,140 Jadi jenis seperti Anda semacam multitasking. 113 00:05:34,140 --> 00:05:37,710 >> Dan jika Anda pernah melihat di kotak Anda laptop, atau sesuatu seperti itu, 114 00:05:37,710 --> 00:05:43,040 multicore, apa yang dapat Anda lakukan adalah Anda dapat menjalankan dua benang yang berbeda pada hari yang berbeda 115 00:05:43,040 --> 00:05:46,700 bagian dari CPU sehingga mereka dapat benar-benar terjadi pada waktu yang sama. 116 00:05:46,700 --> 00:05:48,100 Jadi ini benar-benar kuat. 117 00:05:48,100 --> 00:05:52,270 Dan ini adalah jenis Apache solusi untuk masalah ini. 118 00:05:52,270 --> 00:05:57,900 >> Jadi, apakah ada jenis seperti masalah apapun dengan pendekatan ini meskipun? 119 00:05:57,900 --> 00:05:59,870 Jadi kurasa aku agak menulis mereka di sana. 120 00:05:59,870 --> 00:06:03,440 Tapi keduanya semacam menggunakan banyak memori. 121 00:06:03,440 --> 00:06:07,490 Ini sangat mahal untuk membuat thread atau proses. 122 00:06:07,490 --> 00:06:11,750 >> Dan bagian dari penalaran adalah bahwa hanya seperti ketika Anda menjalankan program C 123 00:06:11,750 --> 00:06:15,090 seperti utama Anda dan kemudian bahwa panggilan fungsi lain, yang memiliki 124 00:06:15,090 --> 00:06:16,520 semacam stack. 125 00:06:16,520 --> 00:06:19,910 Jadi benang juga membutuhkan sekali tumpukan terpisah yang 126 00:06:19,910 --> 00:06:21,220 bisa sangat besar. 127 00:06:21,220 --> 00:06:25,170 Dan jika Anda dapat membayangkan memiliki ton pengguna di situs web Anda, Anda akan memiliki 128 00:06:25,170 --> 00:06:26,280 banyak benang yang berbeda. 129 00:06:26,280 --> 00:06:28,230 Itu banyak tumpukan untuk mengelola dan memelihara. 130 00:06:28,230 --> 00:06:31,280 Jadi konsumsi memori yang besar. 131 00:06:31,280 --> 00:06:35,650 >> Dan kemudian, juga, katakanlah Anda hanya memiliki satu CPU, atau katakanlah Anda memiliki 132 00:06:35,650 --> 00:06:38,460 benang lebih dari yang Anda miliki mereka multicores. 133 00:06:38,460 --> 00:06:38,730 Benar? 134 00:06:38,730 --> 00:06:43,280 Jadi katakanlah Anda memiliki 10 benang dan Anda hanya memiliki lima CPU. 135 00:06:43,280 --> 00:06:46,260 Anda semacam harus melakukan hal ini di mana Anda beralih di antara saat ini 136 00:06:46,260 --> 00:06:49,090 salah satu yang berjalan karena Anda tidak dapat menjalankan semua 10 sekaligus. 137 00:06:49,090 --> 00:06:50,980 Dan itu disebut context switch. 138 00:06:50,980 --> 00:06:54,260 Dan istilah tersebut sebenarnya memiliki beberapa konteks yang berbeda, tetapi mari kita hanya 139 00:06:54,260 --> 00:06:56,620 menganggapnya sebagai switching antara dua benang. 140 00:06:56,620 --> 00:06:59,730 Itu bisa sangat mahal karena pada dasarnya apa yang harus Anda lakukan adalah Anda 141 00:06:59,730 --> 00:07:03,340 harus berhenti apa yang Anda lakukan, menyimpan keadaan thread berjalan, dan 142 00:07:03,340 --> 00:07:05,440 kemudian beralih ke tempat lain. 143 00:07:05,440 --> 00:07:09,420 >> Jadi tidak semua orang seperti melihat motivasi mengapa benang dan 144 00:07:09,420 --> 00:07:12,030 proses mungkin sedikit besar? 145 00:07:12,030 --> 00:07:13,840 Dan apakah Anda memiliki pertanyaan? 146 00:07:13,840 --> 00:07:14,376 OK. 147 00:07:14,376 --> 00:07:15,070 Keren. 148 00:07:15,070 --> 00:07:18,090 Ada yang punya pertanyaan? 149 00:07:18,090 --> 00:07:19,620 OK. 150 00:07:19,620 --> 00:07:26,720 >> Jadi jika kita mengambil langkah mundur untuk kedua, ada jenis seperti 151 00:07:26,720 --> 00:07:30,350 pengamatan bahwa kita dapat membuat tentang banyak aplikasi web. 152 00:07:30,350 --> 00:07:34,810 Dan itu benar-benar bahwa banyak dari mereka sebenarnya tidak melakukan itu banyak berguna 153 00:07:34,810 --> 00:07:37,140 bekerja di dalam thread. 154 00:07:37,140 --> 00:07:41,170 Jadi telah ada yang dimulai pada P menetapkan tujuh sama sekali? 155 00:07:41,170 --> 00:07:45,650 Jadi Anda mungkin ingin menggambarkan beberapa bagian? 156 00:07:45,650 --> 00:07:47,850 Apakah Anda bekerja pada login atau sesuatu seperti itu? 157 00:07:47,850 --> 00:07:49,330 >> AUDIENCE: No 158 00:07:49,330 --> 00:07:49,780 >> KEVIN Schmid: OK. 159 00:07:49,780 --> 00:07:50,150 Jangan pikiran. 160 00:07:50,150 --> 00:07:50,900 Maaf. 161 00:07:50,900 --> 00:07:55,790 Tapi pada dasarnya, dalam P set, Anda akan membuat banyak semacam 162 00:07:55,790 --> 00:07:59,760 query ke database untuk mendapatkan beberapa informasi dari database tersebut. 163 00:07:59,760 --> 00:08:03,330 Dan apa kode Anda akan lakukan, apa itu proses Apache atau 164 00:08:03,330 --> 00:08:06,030 bahwa benang Apache akan melakukan sementara itu harus menghubungi 165 00:08:06,030 --> 00:08:08,990 database itu semacam akan menjadi duduk di sana dan itu akan menjadi 166 00:08:08,990 --> 00:08:12,130 menunggu database untuk membalas. 167 00:08:12,130 --> 00:08:16,290 >> Sekarang yang mungkin tidak terdengar seperti itu besar berurusan karena database adalah pada Anda 168 00:08:16,290 --> 00:08:18,240 CS50 alat, kan? 169 00:08:18,240 --> 00:08:22,930 Tapi ada beberapa jenis jaringan latency di sana karena sekarang web 170 00:08:22,930 --> 00:08:26,830 Server harus mengeluarkan permintaan sendiri untuk database untuk berkomunikasi dengan 171 00:08:26,830 --> 00:08:29,520 database dan kemudian mendapatkan bahwa informasi kembali. 172 00:08:29,520 --> 00:08:33,190 Jadi sekarang ini seperti juga menunggu untuk saya, saya akan pergi mendapatkan sesuatu dari 173 00:08:33,190 --> 00:08:35,770 database dan kemudian ada banyak menunggu terjadi. 174 00:08:35,770 --> 00:08:36,870 Apakah itu masuk akal? 175 00:08:36,870 --> 00:08:38,580 >> Dan untuk beberapa hal itu tidak terlalu buruk. 176 00:08:38,580 --> 00:08:41,950 Jika hanya harus, misalnya, akses memori, yang tidak seperti 177 00:08:41,950 --> 00:08:44,100 mengerikan I / O latency. 178 00:08:44,100 --> 00:08:47,110 Dan ketika aku berkata, I / O latency, apa yang saya maksudkan adalah seperti jenis seperti 179 00:08:47,110 --> 00:08:48,290 input output. 180 00:08:48,290 --> 00:08:52,950 Tetapi untuk mengakses file pada disk, seperti jika saya ingin melayani HTML statis 181 00:08:52,950 --> 00:08:57,850 mengajukan itu pada halaman web saya atau sesuatu seperti itu, aku agak harus 182 00:08:57,850 --> 00:09:02,310 berhenti sebentar, membaca file yang dalam dari disk, dan kemudian di 183 00:09:02,310 --> 00:09:04,400 proses yang saya sedang menunggu. 184 00:09:04,400 --> 00:09:06,700 Aku tidak melakukan pekerjaan yang bermanfaat. 185 00:09:06,700 --> 00:09:11,270 >> Hal ini tidak benar dari segala sesuatu, tetapi adalah umum dalam aplikasi seperti P set 186 00:09:11,270 --> 00:09:13,960 tujuh dan banyak aplikasi bahwa Anda tidak 187 00:09:13,960 --> 00:09:15,440 benar-benar melakukan banyak berpikir. 188 00:09:15,440 --> 00:09:19,090 Dan ketika saya mengatakan pemikiran, maksudku seperti kerja komputasi. 189 00:09:19,090 --> 00:09:23,270 Jadi pekerjaan komputasi bisa menjadi sesuatu seperti, katakanlah, Anda ingin 190 00:09:23,270 --> 00:09:26,590 menulis sebuah web server yang hanya dihitung nomor Fibonacci n. 191 00:09:26,590 --> 00:09:29,300 Itu tidak terdengar seperti khususnya web server yang menyenangkan. 192 00:09:29,300 --> 00:09:34,220 Seperti saya tidak akan mengharapkan situs bahwa untuk menjadi Facebook berikutnya, tapi itu adalah beberapa 193 00:09:34,220 --> 00:09:35,610 jenis pekerjaan komputasi. 194 00:09:35,610 --> 00:09:39,570 >> Dan Anda bisa membayangkan bahwa dengan mengganti beberapa jenis lain yang menarik 195 00:09:39,570 --> 00:09:43,070 pekerjaan komputasi. 196 00:09:43,070 --> 00:09:46,050 Katakanlah Anda sedang menulis sesuatu yang menghitung derajat 197 00:09:46,050 --> 00:09:49,170 pemisahan antara dua orang atau sesuatu seperti itu. 198 00:09:49,170 --> 00:09:51,860 Jadi yang tidak melibatkan beberapa jenis perhitungan, kan? 199 00:09:51,860 --> 00:09:56,630 Dan bahkan kemudian, untuk melakukan itu Anda masih memiliki untuk melakukan banyak menunggu mungkin 200 00:09:56,630 --> 00:09:59,550 Anda harus query database untuk melihat up siapa berteman dengan siapa atau 201 00:09:59,550 --> 00:10:00,600 sesuatu seperti itu. 202 00:10:00,600 --> 00:10:03,510 Jadi ada semacam gagasan pekerjaan komputasi. 203 00:10:03,510 --> 00:10:05,260 Apakah itu masuk akal? 204 00:10:05,260 --> 00:10:08,258 Apakah Ada yang punya pertanyaan? 205 00:10:08,258 --> 00:10:11,960 >> Oh dan saya kira saya menempatkan chat server ada karena chatting server jenis 206 00:10:11,960 --> 00:10:13,240 contoh yang baik dari ini. 207 00:10:13,240 --> 00:10:15,250 Sebuah server obrolan tidak memiliki untuk melakukan banyak berpikir. 208 00:10:15,250 --> 00:10:18,350 Ini hanya harus menunggu orang untuk mengirim pesan dan kemudian ketika 209 00:10:18,350 --> 00:10:19,800 mereka, mengirim mereka. 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 >> Jadi hanya untuk rekap lagi, Apache dan server web yang sama seperti itu garpu 213 00:10:28,180 --> 00:10:31,470 banyak benang dan proses yang bisa menjadi semacam boros. 214 00:10:31,470 --> 00:10:37,530 Jadi, saya kira pertanyaan yang mungkin datang dari yang kita perlu memiliki 215 00:10:37,530 --> 00:10:39,610 beberapa benang dan proses? 216 00:10:39,610 --> 00:10:41,890 Bagaimana jika kita hanya punya satu? 217 00:10:41,890 --> 00:10:45,710 >> Jadi mari kita jenis melukis gambar apa ini akan terlihat seperti. 218 00:10:45,710 --> 00:10:47,810 Jadi mari kita gunakan hanya satu thread. 219 00:10:47,810 --> 00:10:48,660 OK? 220 00:10:48,660 --> 00:10:52,790 Jadi bayangkan saja dengan satu thread. 221 00:10:52,790 --> 00:10:56,600 >> Mari kita misalkan kita tidak benar-benar melakukan yang banyak berguna - dan ketika saya mengatakan 222 00:10:56,600 --> 00:10:59,450 berguna, maksudku pekerjaan komputasi - 223 00:10:59,450 --> 00:11:01,130 pada mereka beberapa thread sebelumnya. 224 00:11:01,130 --> 00:11:04,180 Jadi mari kita jenis mengkonsolidasikan semuanya ke dalam satu thread. 225 00:11:04,180 --> 00:11:07,780 Jadi bagaimana jika kita memiliki satu thread seperti itu hanya terjadi di sekitar dalam lingkaran dan 226 00:11:07,780 --> 00:11:10,880 terus cek melakukan sesuatu baru terjadi. 227 00:11:10,880 --> 00:11:15,130 Jadi misalnya, terjadi sesuatu yang baru bisa berarti aku punya sesuatu yang kembali dari 228 00:11:15,130 --> 00:11:19,310 database, atau seseorang yang dikirim saya permintaan HTTP baru. 229 00:11:19,310 --> 00:11:22,290 Jadi mereka adalah jenis acara itu terjadi, kan? 230 00:11:22,290 --> 00:11:26,130 >> Lalu apa yang bisa saya lakukan ketika orang-orang baru hal-hal terjadi di thread yang sama ini 231 00:11:26,130 --> 00:11:30,120 eksekusi, ini thread tunggal eksekusi, saya dapat memanggil beberapa kode yang 232 00:11:30,120 --> 00:11:32,410 akan menangani hal tertentu. 233 00:11:32,410 --> 00:11:36,640 Jadi misalnya, jika saya punya sesuatu kembali dari database, aku bisa berlari saya 234 00:11:36,640 --> 00:11:40,960 bagian komputasi kecil itu yang sebenarnya hanya mempersiapkan hal untuk 235 00:11:40,960 --> 00:11:42,620 mengirim kembali ke pengguna. 236 00:11:42,620 --> 00:11:46,710 Begitu juga seperti itu masuk akal? 237 00:11:46,710 --> 00:11:49,940 >> Tapi apa yang benar-benar implikasi dari ini? 238 00:11:49,940 --> 00:11:50,660 Benar? 239 00:11:50,660 --> 00:11:53,730 Karena kita telah menulis banyak kode yang - 240 00:11:53,730 --> 00:11:58,330 dan aku hanya akan melompat ke depan dalam slide jika itu OK. 241 00:11:58,330 --> 00:12:00,930 Jadi, jika Anda tidak keberatan, aku hanya akan mengambil langkah mundur. 242 00:12:00,930 --> 00:12:03,410 Jadi hal semacam ini adalah disebut loop acara. 243 00:12:03,410 --> 00:12:04,070 OK? 244 00:12:04,070 --> 00:12:07,240 Dan itu semacam dasar Ide di balik Node.js. 245 00:12:07,240 --> 00:12:11,240 >> Jadi apa Node.js benar-benar melakukan sebagai web server ada satu benang 246 00:12:11,240 --> 00:12:14,850 yang pada dasarnya terjadi di sekitar dalam satu lingkaran seperti sementara satu jenis di bawah 247 00:12:14,850 --> 00:12:18,510 kap Node.js yang terus-menerus memeriksa, apakah kita menerima hal-hal baru? 248 00:12:18,510 --> 00:12:22,720 Dan kemudian akan berjalan penangan yang Anda tetapkan. 249 00:12:22,720 --> 00:12:26,720 Tapi pertanyaan yang baik untuk bertanya adalah, bagaimana kita bisa membuat hal ini terjadi 250 00:12:26,720 --> 00:12:28,090 dengan hal-hal yang ada? 251 00:12:28,090 --> 00:12:32,440 >> Jadi saya menempatkan baris kode C di sini bahwa pada dasarnya terlihat seperti itu membuka 252 00:12:32,440 --> 00:12:33,060 mengajukan, kan? 253 00:12:33,060 --> 00:12:36,090 Aku Dia baru saja keluar dengan album. 254 00:12:36,090 --> 00:12:39,600 Jadi saya harus membuka nya file baru. 255 00:12:39,600 --> 00:12:43,810 Jadi kode C untuk operasi jalan - 256 00:12:43,810 --> 00:12:47,890 dan saya kira alasan saya memilih file adalah karena ini adalah jenis sejauh 257 00:12:47,890 --> 00:12:52,000 dari I / O pekerjaan yang kami lakukan di C di perasaan bahwa ada input output. 258 00:12:52,000 --> 00:12:55,070 Jadi kita sebut kode ini yang apakah f ini terbuka. 259 00:12:55,070 --> 00:12:59,370 Dan kemudian pada baris berikutnya dari kami Program, kita sekarang dapat bekerja dengan f. 260 00:12:59,370 --> 00:13:02,710 >> Jadi ini akan menjadi contoh dari sesuatu yang seperti sinkron atau 261 00:13:02,710 --> 00:13:06,850 memblokir karena pada baris pertama ada kita menunggu sampai kita 262 00:13:06,850 --> 00:13:08,110 mendapatkan file terbuka. 263 00:13:08,110 --> 00:13:12,260 Jadi pada baris kedua, kita tahu bahwa kita dapat bekerja dengan f, tetapi ini berarti bahwa 264 00:13:12,260 --> 00:13:16,240 bahwa baris kedua tidak bisa benar-benar menjalankan sampai baris pertama dilakukan. 265 00:13:16,240 --> 00:13:17,760 Apakah itu masuk akal? 266 00:13:17,760 --> 00:13:20,890 >> Jadi ini akan menjadi buruk untuk menempatkan dalam event handler. 267 00:13:20,890 --> 00:13:23,920 Dan alasan untuk itu adalah bahwa semacam ini menunggu, kan? 268 00:13:23,920 --> 00:13:26,500 Jadi ini akan kembali kita kembali untuk hal yang sama. 269 00:13:26,500 --> 00:13:29,470 Dan sekarang kita bahkan tidak akan memiliki Manfaat dari beberapa benang atau 270 00:13:29,470 --> 00:13:32,390 proses karena kita punya satu thread di Node.js. 271 00:13:32,390 --> 00:13:35,496 Apakah itu masuk akal untuk semua orang? 272 00:13:35,496 --> 00:13:35,990 >> AUDIENCE: Tunggu. 273 00:13:35,990 --> 00:13:36,980 Jadi apa penggantinya? 274 00:13:36,980 --> 00:13:37,840 >> KEVIN Schmid: Oh, begitu ya. 275 00:13:37,840 --> 00:13:39,560 Jadi aku akan sampai ke penggantian. 276 00:13:39,560 --> 00:13:40,430 OK. 277 00:13:40,430 --> 00:13:42,960 Jadi bagaimana jika kita memiliki sesuatu yang tampak seperti ini? 278 00:13:42,960 --> 00:13:45,730 Jadi bagaimana jika sekarang saya edit f terbuka sedikit? 279 00:13:45,730 --> 00:13:48,370 Jadi aku lewat di sama dua argumen seperti sebelumnya. 280 00:13:48,370 --> 00:13:52,610 Aku masih mencintai lagu baru bahwa dia keluar dengan. 281 00:13:52,610 --> 00:13:57,260 Tapi aku melewati hal ketiga yang adalah variabel ini disebut kode. 282 00:13:57,260 --> 00:14:02,280 >> Tapi apa sebenarnya kode dalam konteks ini? 283 00:14:02,280 --> 00:14:05,360 Apakah seperti variabel C biasa? 284 00:14:05,360 --> 00:14:06,740 Ini fungsi, kan? 285 00:14:06,740 --> 00:14:09,450 Dan itu mungkin sedikit aneh karena Aku benar-benar seperti sekarang melewati 286 00:14:09,450 --> 00:14:12,320 berfungsi ke fungsi lain. 287 00:14:12,320 --> 00:14:14,400 >> Jadi beberapa hal yang perlu diperhatikan tentang hal ini. 288 00:14:14,400 --> 00:14:17,145 Satu, aku tidak benar-benar memanggil fungsi kode. 289 00:14:17,145 --> 00:14:20,650 Jadi Anda tidak melihat kode dengan paren kiri, kanan paren. 290 00:14:20,650 --> 00:14:23,010 Aku hanya lewat di kode. 291 00:14:23,010 --> 00:14:26,990 Dan di C, apa ini akan benar-benar melakukan adalah memberikan pointer ke yang sebenarnya 292 00:14:26,990 --> 00:14:29,740 kode, dan kemudian ini bisa menjalankannya. 293 00:14:29,740 --> 00:14:33,350 Tapi hanya berpikir tentang hal itu karena Anda lewat kode untuk menjalankan ketika 294 00:14:33,350 --> 00:14:35,150 file yang dibuka. 295 00:14:35,150 --> 00:14:41,430 >> Tapi apa artinya ini adalah bahwa sekarang sisa program saya yang bisa melakukan 296 00:14:41,430 --> 00:14:47,050 hal-hal lain, dapat terus melakukan lain barang sementara kita, tidak benar-benar menunggu, tapi 297 00:14:47,050 --> 00:14:50,890 hanya di belakang kepala kita yang ketika file itu terbuka, run yang 298 00:14:50,890 --> 00:14:52,130 kode di atas. 299 00:14:52,130 --> 00:14:53,390 Apakah itu masuk akal? 300 00:14:53,390 --> 00:14:58,060 >> Dan sekarang ide di balik Node.js adalah bahwa kode dalam hal-hal do dengan f 301 00:14:58,060 --> 00:15:04,590 bagian harus cukup singkat dan sederhana dan mudah dan tidak benar-benar 302 00:15:04,590 --> 00:15:06,160 sangat komputasi secara intensif. 303 00:15:06,160 --> 00:15:09,390 Ini mungkin harus membuka file lain, tetapi yang juga harus cukup cepat 304 00:15:09,390 --> 00:15:14,710 karena hanya harus mengatakan melakukan f lain membuka dan kemudian memanggil kode lain ini. 305 00:15:14,710 --> 00:15:19,100 >> Jadi hanya untuk menjadi benar-benar jelas, f buka yang melakukan lagu Katy Perry baru 306 00:15:19,100 --> 00:15:23,060 done mp3, itu akan cukup banyak kembali segera. 307 00:15:23,060 --> 00:15:27,820 Dan kemudian kita bisa terus melakukan hal-hal lain karena semua yang sekarang f 308 00:15:27,820 --> 00:15:33,410 panggilan terbuka tidak akan memberitahu pada dasarnya mendasari kode open f membuka file ini 309 00:15:33,410 --> 00:15:36,020 dan ketika Anda sudah selesai membuka ini file atau ketika Anda mendapatkannya kembali, 310 00:15:36,020 --> 00:15:37,480 kemudian jalankan kode tersebut. 311 00:15:37,480 --> 00:15:39,540 Tapi itu tidak benar-benar menjalankan kode tersebut. 312 00:15:39,540 --> 00:15:41,815 Dan Anda memiliki pertanyaan? 313 00:15:41,815 --> 00:15:46,180 >> AUDIENCE: Anda tampaknya menyiratkan beberapa kali bahwa menambahkan komputasi 314 00:15:46,180 --> 00:15:50,545 Kode intensif semacam mematahkan [Tak terdengar] didorong sistem. 315 00:15:50,545 --> 00:15:51,795 [Tak terdengar]? 316 00:15:51,795 --> 00:15:54,450 317 00:15:54,450 --> 00:15:55,290 >> KEVIN Schmid: Itu pertanyaan yang bagus. 318 00:15:55,290 --> 00:15:59,280 Jadi saya benar-benar memiliki contoh bagaimana Anda bisa mengintegrasikan komputasi 319 00:15:59,280 --> 00:16:01,090 kode intensif dalam sedikit. 320 00:16:01,090 --> 00:16:03,620 Jadi ketika kita sampai ke kode contoh, Aku akan pastikan untuk menarik satu itu. 321 00:16:03,620 --> 00:16:04,700 Apakah itu OK? 322 00:16:04,700 --> 00:16:05,950 Terima kasih. 323 00:16:05,950 --> 00:16:07,690 324 00:16:07,690 --> 00:16:08,750 >> Siapa nama Anda? 325 00:16:08,750 --> 00:16:10,620 >> AUDIENCE: Aaron. 326 00:16:10,620 --> 00:16:14,830 >> KEVIN Schmid: Aaron membawa sangat titik yang baik, yang adalah bahwa jika saya punya 327 00:16:14,830 --> 00:16:18,560 beberapa kode komputasi intensif di melakukan hal-hal dengan f bagian, sisa 328 00:16:18,560 --> 00:16:22,880 program saya tidak bisa lari dan tidak dapat mendengarkan untuk permintaan baru atau apa pun sampai semua 329 00:16:22,880 --> 00:16:24,270 hal itu selesai. 330 00:16:24,270 --> 00:16:27,390 Jadi jika saya sedang menulis kode Node pada umumnya kecuali kita melakukan sesuatu seperti aku akan 331 00:16:27,390 --> 00:16:33,060 menyarankan kemudian ketika kita melihat kode contoh, saya harus yakin bahwa 332 00:16:33,060 --> 00:16:36,060 kode saya tidak mengikat loop acara ini. 333 00:16:36,060 --> 00:16:38,120 Apakah itu masuk akal? 334 00:16:38,120 --> 00:16:38,350 OK. 335 00:16:38,350 --> 00:16:40,040 Keren. 336 00:16:40,040 --> 00:16:47,090 >> Jadi Node.js menawarkan kerangka kerja ini yang Anda dapat membangun event ini didorong 337 00:16:47,090 --> 00:16:48,210 server dengan. 338 00:16:48,210 --> 00:16:53,460 Sehingga memiliki semacam ini asynchronous non-blocking I / O perpustakaan, sedangkan 339 00:16:53,460 --> 00:16:56,800 C perpustakaan standar yang kita sudah bekerja dengan, seperti jika Anda hanya 340 00:16:56,800 --> 00:16:59,500 menggunakannya dengan cara yang sama bahwa kita telah telah menggunakan mereka dengan f terbuka dan 341 00:16:59,500 --> 00:17:03,000 hal, mereka memblokir karena Anda benar-benar harus menunggu 342 00:17:03,000 --> 00:17:04,470 file untuk membuka. 343 00:17:04,470 --> 00:17:09,290 >> Tapi Node.js memberi Anda itu dan itu pada dasarnya hubungan ke Google V8 344 00:17:09,290 --> 00:17:14,030 JavaScript engine yang merupakan alasan bahwa Chrome begitu cepat pada pengolahan 345 00:17:14,030 --> 00:17:17,040 JavaScript karena memiliki mesin V8 ini. 346 00:17:17,040 --> 00:17:22,460 Jadi saya tahu kedengarannya seperti salah satu WWDC konferensi pengembang hal 347 00:17:22,460 --> 00:17:25,390 di mana mereka hanya membuang sekelompok dari nomor surat hal untuk prosesor 348 00:17:25,390 --> 00:17:26,910 dan mengatakan ini sangat keren. 349 00:17:26,910 --> 00:17:34,200 Tapi itu keren yang mereka lakukan ini karena JavaScript - 350 00:17:34,200 --> 00:17:37,010 atau mungkin jika Anda tidak terbiasa dengan JavaScript namun karena kami belum punya 351 00:17:37,010 --> 00:17:38,180 kuliah di atasnya - 352 00:17:38,180 --> 00:17:40,770 tapi JavaScript adalah ditafsirkan bahasa. 353 00:17:40,770 --> 00:17:41,970 >> Dan ini adalah poin penting juga. 354 00:17:41,970 --> 00:17:45,790 Jadi penting untuk web kami server harus cepat, kan? 355 00:17:45,790 --> 00:17:49,970 Dan jika kita hanya menjalankan JavaScript kode yang ditafsirkan dengan hanya 356 00:17:49,970 --> 00:17:52,130 setiap juru tua mungkin lambat. 357 00:17:52,130 --> 00:17:55,980 Jadi manfaat dari memiliki Node ini interpreter V8 super cepat. 358 00:17:55,980 --> 00:17:59,580 Dan saya tidak tahu apakah mereka menamakannya karena tamparan V8 di dahi 359 00:17:59,580 --> 00:18:01,110 hal, tapi OK. 360 00:18:01,110 --> 00:18:07,070 >> Jadi saya sudah menyiapkan beberapa contoh di URL ini. 361 00:18:07,070 --> 00:18:10,490 Setelah seminar, saya semacam akan berbicara tentang bagaimana Anda bisa mendapatkan Node set 362 00:18:10,490 --> 00:18:13,570 up, tapi untuk saat ini, aku hanya semacam ingin berjalan melalui beberapa contoh kode. 363 00:18:13,570 --> 00:18:17,250 Jadi jika Anda ingin mengikuti bersama, semua kode sumber tersedia di sana. 364 00:18:17,250 --> 00:18:18,720 OK? 365 00:18:18,720 --> 00:18:22,280 >> Jadi aku akan meninggalkan URL ini up untuk sedikit. 366 00:18:22,280 --> 00:18:24,440 Dan kemudian aku hanya akan beralih ke terminal. 367 00:18:24,440 --> 00:18:29,670 368 00:18:29,670 --> 00:18:34,400 Apakah semua orang baik dengan URL ini? 369 00:18:34,400 --> 00:18:37,990 Jadi aku akan beralih ke terminal saya di sini. 370 00:18:37,990 --> 00:18:42,030 >> Jadi, inilah kode yang Aku punya untuk hari ini. 371 00:18:42,030 --> 00:18:43,960 Mengapa kita tidak mulai dengan simpler.js file? 372 00:18:43,960 --> 00:18:49,110 373 00:18:49,110 --> 00:18:52,100 Hal lain adalah bahwa semua ini kode akan ditulis dalam 374 00:18:52,100 --> 00:18:56,660 JavaScript yang Anda mungkin atau mungkin tidak akrab dengan. 375 00:18:56,660 --> 00:19:00,170 Saya kira beberapa hal adalah bahwa banyak kode JavaScript adalah jenis 376 00:19:00,170 --> 00:19:04,000 sintaks dan struktur sangat mirip dengan C, sehingga Anda dapat jenis mengambilnya sebagai 377 00:19:04,000 --> 00:19:05,020 Anda pergi bersama. 378 00:19:05,020 --> 00:19:08,750 Saya sudah mencoba untuk menulis banyak mulai kode untuk ini dengan cara yang 379 00:19:08,750 --> 00:19:11,230 mirip dengan C sehingga itu sedikit lebih mudah dibaca. 380 00:19:11,230 --> 00:19:15,980 Tapi seperti yang kita kemajuan, aku akan menunjukkan beberapa tambahan 381 00:19:15,980 --> 00:19:18,980 fitur JavaScript yang adalah jenis dingin. 382 00:19:18,980 --> 00:19:21,510 >> Tapi mari kita lihat contoh program ini. 383 00:19:21,510 --> 00:19:24,820 Saya kira semuanya sudah dipotong di sana. 384 00:19:24,820 --> 00:19:28,500 Aku hanya akan memperbaiki nyata yang cepat kalau itu OK atau tidak. 385 00:19:28,500 --> 00:19:31,400 Saya tidak tahu apa ini yang akan dilakukan. 386 00:19:31,400 --> 00:19:34,660 Apakah itu sedikit lebih baik? 387 00:19:34,660 --> 00:19:36,510 Dapatkah Anda melihat var dan barang? 388 00:19:36,510 --> 00:19:39,320 OK. 389 00:19:39,320 --> 00:19:44,120 >> Jadi baris pertama adalah seperti JavaScript versi variabel 390 00:19:44,120 --> 00:19:44,800 deklarasi. 391 00:19:44,800 --> 00:19:49,870 Jadi hanya untuk menyoroti apa yang akan ini terlihat seperti di C. Jadi ini adalah seperti 392 00:19:49,870 --> 00:19:52,620 saya mengatakan indeks sama dengan tiga atau sesuatu seperti itu. 393 00:19:52,620 --> 00:19:55,740 Jadi saya tidak menentukan tipe. 394 00:19:55,740 --> 00:20:00,780 JavaScript tidak memiliki tipe, tapi itu sangat dinamis diketik di alam, sehingga 395 00:20:00,780 --> 00:20:02,580 tidak menyediakan jenis tipe di atasnya. 396 00:20:02,580 --> 00:20:03,670 Jadi itu hanya memiliki var. 397 00:20:03,670 --> 00:20:05,320 Itu seperti variabel. 398 00:20:05,320 --> 00:20:05,920 OK? 399 00:20:05,920 --> 00:20:08,340 >> Dan aku akan menelepon HTTP variabel ini. 400 00:20:08,340 --> 00:20:12,480 Dan di sisi kanan saya, saya memiliki ekspresi yang saya ingin dimasukkan ke dalam HTTP. 401 00:20:12,480 --> 00:20:14,960 Dan ini mengatakan membutuhkan HTTP. 402 00:20:14,960 --> 00:20:18,500 Jadi ini adalah jenis yang sama untuk memasukkan. 403 00:20:18,500 --> 00:20:22,940 Ini sedikit lebih seperti kuat daripada termasuk dalam arti yang mencakup 404 00:20:22,940 --> 00:20:26,100 hanya akan copy dan paste header file untuk prototipe fungsi atau 405 00:20:26,100 --> 00:20:27,930 apapun dengan jenis definisi. 406 00:20:27,930 --> 00:20:30,590 Tetapi membutuhkan yang sebenarnya terjadi untuk mendapatkan kita kode. 407 00:20:30,590 --> 00:20:33,280 >> Sehingga Anda dapat menganggapnya sebagai mengimpor beberapa kode. 408 00:20:33,280 --> 00:20:37,960 Jadi di suatu tempat di modul Node.js sistem atau apa pun, mereka memiliki semua ini 409 00:20:37,960 --> 00:20:40,790 Kode server HTTP jadi aku hanya mengambil untuk saya sendiri 410 00:20:40,790 --> 00:20:43,130 penggunaan pribadi dalam program ini. 411 00:20:43,130 --> 00:20:44,260 OK? 412 00:20:44,260 --> 00:20:46,930 >> Jadi saya memiliki fungsi ini yang saya tulis. 413 00:20:46,930 --> 00:20:50,330 Dan perhatikan bahwa saya tidak harus menentukan jenis kembali atau jenis yang 414 00:20:50,330 --> 00:20:51,140 argumen lagi. 415 00:20:51,140 --> 00:20:54,440 Jadi semacam longgar diketik di semacam itu masuk akal. 416 00:20:54,440 --> 00:20:57,290 Dua argumen yang dibutuhkan dalam, permintaan dan respon. 417 00:20:57,290 --> 00:21:02,080 Jadi itulah konseptual jenis seperti akrab dari gambar yang kita miliki 418 00:21:02,080 --> 00:21:05,280 di layar sebelumnya karena kita mendapatkan permintaan ini yang kita 419 00:21:05,280 --> 00:21:06,410 memiliki dari pengguna. 420 00:21:06,410 --> 00:21:09,170 Dan kemudian kita memiliki respon yang kita bisa menulis hal-hal untuk. 421 00:21:09,170 --> 00:21:15,060 >> Jadi baris pertama ini tidak res.writeHead 200 dan kemudian ini 422 00:21:15,060 --> 00:21:17,070 Jenis konten biasa teks. 423 00:21:17,070 --> 00:21:19,300 Jadi mari kita potong ini terpisah sedikit. 424 00:21:19,300 --> 00:21:22,340 Jadi mari kita fokus pada res.write untuk sedikit. 425 00:21:22,340 --> 00:21:28,420 Jadi menulis pada dasarnya, dan menulis kepala, hanya cara untuk semacam menulis 426 00:21:28,420 --> 00:21:29,960 hal yang respon. 427 00:21:29,960 --> 00:21:30,770 OK? 428 00:21:30,770 --> 00:21:36,230 Jadi menulis kepala, kalau ada yang ingat dari kuliah HTTP, apakah kalian 429 00:21:36,230 --> 00:21:39,940 ingat header di atas hal HTTP? 430 00:21:39,940 --> 00:21:43,580 Jadi kenapa tidak saya hanya demo header cepat. 431 00:21:43,580 --> 00:21:44,640 Apakah itu bermanfaat? 432 00:21:44,640 --> 00:21:45,500 Atau harus kita hanya semacam - 433 00:21:45,500 --> 00:21:46,070 OK. 434 00:21:46,070 --> 00:21:46,740 Tentu. 435 00:21:46,740 --> 00:21:52,340 >> Jadi, ketika browser Anda pergi ke google.com atau sesuatu seperti itu, 436 00:21:52,340 --> 00:21:54,250 sebenarnya ada sedikit lebih - 437 00:21:54,250 --> 00:21:55,380 ini adalah seperti rahasia - 438 00:21:55,380 --> 00:21:58,340 ada seperti informasi sedikit lebih yang datang melalui pipa dari sekedar 439 00:21:58,340 --> 00:22:00,180 pencarian kecil dan semuanya. 440 00:22:00,180 --> 00:22:03,550 Jadi untuk menunjukkan ini, aku akan untuk menggunakan sebuah program bernama Curl. 441 00:22:03,550 --> 00:22:04,260 OK? 442 00:22:04,260 --> 00:22:08,020 Jadi ini adalah sesuatu yang dapat Anda jalankan di baris perintah Mac OSX atau di 443 00:22:08,020 --> 00:22:09,830 alat atau apa pun. 444 00:22:09,830 --> 00:22:17,050 Dan jadi jika saya Curl HTTP google.com, Aku akan melihat HTML. 445 00:22:17,050 --> 00:22:21,230 Dan ini, dalam keadilan, hanya HTML semacam itu memberitahu Anda untuk 446 00:22:21,230 --> 00:22:24,695 redirect ke www jika browser Anda tidak secara otomatis menangani 447 00:22:24,695 --> 00:22:27,110 redirection. 448 00:22:27,110 --> 00:22:33,390 >> Jadi ini hanya HTML, tapi aku akan untuk menambah Curl tanda hubung ini saya bendera. 449 00:22:33,390 --> 00:22:33,600 OK? 450 00:22:33,600 --> 00:22:35,600 Dan ini akan menunjukkan saya header. 451 00:22:35,600 --> 00:22:40,640 Jadi ini juga informasi yang berasal melalui ketika saya mendapatkan respon ini. 452 00:22:40,640 --> 00:22:41,260 OK? 453 00:22:41,260 --> 00:22:45,320 >> Jadi di atas, Anda melihat ini HTTP 301 pindah secara permanen. 454 00:22:45,320 --> 00:22:49,470 Dan ini adalah jenis penting karena ini mengacu pada kode status. 455 00:22:49,470 --> 00:22:53,750 Jadi 301 di sini adalah kode status, yang pada dasarnya hanya sebuah integer 456 00:22:53,750 --> 00:22:57,750 yang memberitahu browser atau siapa pun yang membaca ini, jika Anda berpura-pura bahwa 457 00:22:57,750 --> 00:23:01,460 Anda browser dan Anda melihat ini, pada dasarnya jika Anda melihat 458 00:23:01,460 --> 00:23:04,960 itu dan Anda melihat 301, Anda tahu aku punya untuk melakukan sesuatu yang khusus berdasarkan 459 00:23:04,960 --> 00:23:08,810 301, atau sesuatu yang istimewa terjadi didasarkan pada 301. 460 00:23:08,810 --> 00:23:12,640 Jadi dikatakan pindah secara permanen. 461 00:23:12,640 --> 00:23:17,700 >> Dan kemudian, pada dasarnya, kita memiliki sekelompok pasangan nilai kunci. 462 00:23:17,700 --> 00:23:22,100 Jadi kita mendapatkan lokasi adalah www.google.com. 463 00:23:22,100 --> 00:23:25,190 Dan kemudian jenis semua hal-hal lain, tetapi pada dasarnya, apa lokasi 464 00:23:25,190 --> 00:23:29,662 katakan adalah lokasi baru adalah di www.google.com. 465 00:23:29,662 --> 00:23:33,800 Jadi sekarang jika Anda pergi ke google.com, Anda akan semacam melihat jenis browser blink 466 00:23:33,800 --> 00:23:38,770 untuk kedua dan kemudian mengarahkan Anda segera kembali ke www.google.com. 467 00:23:38,770 --> 00:23:41,840 Jadi tanggapan dapat berisi header ini. 468 00:23:41,840 --> 00:23:43,330 >> Dan beberapa hal untuk menunjukkan. 469 00:23:43,330 --> 00:23:46,890 Jadi katakanlah kita benar-benar berhasil mengunjungi sebuah halaman web. 470 00:23:46,890 --> 00:23:49,040 Jadi biarkan aku pergi ke - 471 00:23:49,040 --> 00:23:51,080 apa website yang baik? 472 00:23:51,080 --> 00:23:53,285 Aku buruk dalam berpikir baik website di tempat. 473 00:23:53,285 --> 00:23:53,640 >> AUDIENCE: Wikipedia. 474 00:23:53,640 --> 00:23:54,160 >> KEVIN Schmid: OK. 475 00:23:54,160 --> 00:23:56,040 Mari kita lakukan Wikipedia. 476 00:23:56,040 --> 00:23:58,680 Jadi di sini saya dipindahkan. 477 00:23:58,680 --> 00:23:59,240 Oh, tunggu. 478 00:23:59,240 --> 00:24:00,160 Apakah saya? 479 00:24:00,160 --> 00:24:00,890 Ya, aku. 480 00:24:00,890 --> 00:24:01,100 OK. 481 00:24:01,100 --> 00:24:03,005 Jadi saya harus lakukan www. 482 00:24:03,005 --> 00:24:06,006 Jadi aku akan melakukan www. 483 00:24:06,006 --> 00:24:09,680 Dan seperti yang Anda lihat, inilah semua HTML bahwa browser akan memproses 484 00:24:09,680 --> 00:24:10,910 untuk Wikipedia. 485 00:24:10,910 --> 00:24:14,055 >> Tapi kalau aku terus bergulir di sini, apa yang akan saya lihat di atas - 486 00:24:14,055 --> 00:24:17,800 wow, ada banyak HTML di Wikipedia - 487 00:24:17,800 --> 00:24:22,550 tapi apa yang saya bisa lihat di atas sini adalah kode 200 status ini sebagai bertentangan dengan 488 00:24:22,550 --> 00:24:24,570 301 yang saya lihat sebelumnya. 489 00:24:24,570 --> 00:24:27,100 Dan melihat bahwa ia memiliki bagus ramah OK sebelahnya. 490 00:24:27,100 --> 00:24:29,470 Jadi ini seperti kode status yang baik. 491 00:24:29,470 --> 00:24:31,160 >> Apakah itu nomor 200 tampak akrab? 492 00:24:31,160 --> 00:24:34,120 493 00:24:34,120 --> 00:24:39,880 Ya karena ketika aku simpler.js, Aku menulis 200 sana. 494 00:24:39,880 --> 00:24:43,290 Sehingga pada dasarnya mengatakan memberitahu browser atau siapa pun yang mencoba untuk mendapatkan ke 495 00:24:43,290 --> 00:24:45,440 ini bahwa mereka berhasil. 496 00:24:45,440 --> 00:24:49,040 Atau semacam itu seperti kita berhasil juga. 497 00:24:49,040 --> 00:24:54,320 >> Dan ada semacam ini sintaks khusus di Javascript untuk mendeklarasikan 498 00:24:54,320 --> 00:24:59,870 peta tombol ini seperti jenis konten dan nilai-nilai ini seperti teks biasa. 499 00:24:59,870 --> 00:25:03,780 Jadi jika Anda melihat respon yang kami kembali dari Wikipedia sebelumnya, - 500 00:25:03,780 --> 00:25:06,200 Aku akan mencoba untuk menggulir up sedikit lebih cepat - 501 00:25:06,200 --> 00:25:09,900 Anda memiliki tombol ini seperti Server dan nilai-nilai Apache. 502 00:25:09,900 --> 00:25:12,120 Jadi Anda punya kunci dan nilai. 503 00:25:12,120 --> 00:25:15,930 Dan Anda dapat menentukan ini dalam Node apa yang harus mengirim kembali. 504 00:25:15,930 --> 00:25:19,380 >> Jadi ini sebenarnya jenis, di beberapa cara, dan dalam beberapa hal itu tidak 505 00:25:19,380 --> 00:25:23,170 benar-benar, tapi itu tingkat sedikit lebih rendah dari kode PHP yang Anda mungkin 506 00:25:23,170 --> 00:25:26,980 menulis untuk P menetapkan tujuh karena PHP dan Apache semacam mengurus beberapa 507 00:25:26,980 --> 00:25:28,150 hal ini untuk Anda. 508 00:25:28,150 --> 00:25:32,520 Di PHP, Anda dapat mengganti default perilaku dengan menulis header Anda sendiri. 509 00:25:32,520 --> 00:25:35,520 Tapi untuk tujuan ini, kita mendapatkan untuk menulis header kita sendiri. 510 00:25:35,520 --> 00:25:38,210 511 00:25:38,210 --> 00:25:41,105 >> Jadi, apakah garis yang masuk akal untuk semua orang, garis menulis kepala? 512 00:25:41,105 --> 00:25:41,380 OK. 513 00:25:41,380 --> 00:25:42,280 Mengagumkan. 514 00:25:42,280 --> 00:25:45,870 >> Jadi apa yang saya lakukan adalah saya mengakhiri respon dengan mengatakan hello world. 515 00:25:45,870 --> 00:25:47,040 OK. 516 00:25:47,040 --> 00:25:49,920 Tapi itu hanya fungsi disebut permintaan handler. 517 00:25:49,920 --> 00:25:53,510 Jadi sekarang aku benar-benar harus melakukan jenis sesuatu dengan fungsi ini, kan? 518 00:25:53,510 --> 00:25:59,170 >> Jadi di sini apa yang saya lakukan adalah ada ini garis yang tidak sama dengan server yang var 519 00:25:59,170 --> 00:26:03,530 HTTP.create server, dan kemudian saya lulus dalam penangan permintaan. 520 00:26:03,530 --> 00:26:06,080 Jadi ini adalah jenis Node cara membuat server. 521 00:26:06,080 --> 00:26:08,790 Dan perhatikan bahwa aku lewat dalam penangan permintaan. 522 00:26:08,790 --> 00:26:12,290 Jadi ini mengatakan createServer yang fungsi yang saya ingin Anda untuk membuat saya 523 00:26:12,290 --> 00:26:16,270 Server, dan ketika server yang menerima respon, aku ingin kau menyebutnya 524 00:26:16,270 --> 00:26:18,680 meminta fungsi pengendali. 525 00:26:18,680 --> 00:26:18,990 OK? 526 00:26:18,990 --> 00:26:22,290 >> Jadi baris yang cukup banyak selesai segera. 527 00:26:22,290 --> 00:26:28,780 Jadi garis server var dilakukan dengan benar setelah Anda melakukannya cukup banyak. 528 00:26:28,780 --> 00:26:31,770 Maksudku, ia harus menyiapkan beberapa intern negara untuk tahu bahwa Anda harus 529 00:26:31,770 --> 00:26:35,400 memanggil fungsi permintaan handler, tapi itu tidak akan duduk di sana dan 530 00:26:35,400 --> 00:26:37,730 katakanlah memiliki pengguna yang dikirim saya permintaan belum? 531 00:26:37,730 --> 00:26:39,270 Apakah pengguna mengirimi saya permintaan belum? 532 00:26:39,270 --> 00:26:40,780 Jadi tidak memblokir. 533 00:26:40,780 --> 00:26:41,650 OK? 534 00:26:41,650 --> 00:26:46,120 >> Jadi apa ini akan lakukan adalah pada dasarnya sekarang menyimpan pointer ke kode ini, 535 00:26:46,120 --> 00:26:49,670 permintaan ini fungsi pengendali, dan kemudian akan menjalankan kode bahwa ketika seseorang 536 00:26:49,670 --> 00:26:52,170 membuat permintaan. 537 00:26:52,170 --> 00:26:54,120 Dan kemudian kita lakukan server.listen. 538 00:26:54,120 --> 00:26:56,950 539 00:26:56,950 --> 00:26:59,960 >> The 1337 ada cukup sewenang-wenang. 540 00:26:59,960 --> 00:27:02,285 Aku tidak punya alasan tertentu untuk memilih nomor tersebut. 541 00:27:02,285 --> 00:27:03,860 Itu benar-benar acak. 542 00:27:03,860 --> 00:27:07,010 Tapi itu hanya menentukan port. 543 00:27:07,010 --> 00:27:10,640 Jadi kebanyakan server web Anda akan melihat bahwa mereka menggunakan port 80 karena itu jenis 544 00:27:10,640 --> 00:27:11,810 seperti konvensi. 545 00:27:11,810 --> 00:27:16,170 Jadi jika saya pergi ke sesuatu seperti, Aku tidak tahu, Wikipedia.org, 546 00:27:16,170 --> 00:27:17,700 dan saya menaruh usus 8 - 547 00:27:17,700 --> 00:27:18,610 oh wow, Anda tidak bisa melihat itu. 548 00:27:18,610 --> 00:27:19,370 Maafkan aku. 549 00:27:19,370 --> 00:27:21,820 Tapi kalau aku melakukan Wikipedia - 550 00:27:21,820 --> 00:27:24,810 Aku akan menulis di sini hanya agar jelas pada kamera. 551 00:27:24,810 --> 00:27:29,150 Tapi kalau aku mengambil ini ke browser dengan usus 80, yang menentukan pergi ke 552 00:27:29,150 --> 00:27:31,430 Wikipedia.org pada port 80. 553 00:27:31,430 --> 00:27:36,200 Jadi seperti bagaimana Amerika Serikat memiliki beberapa port seperti di mana Anda dapat kapal 554 00:27:36,200 --> 00:27:37,440 hal yang semacam. 555 00:27:37,440 --> 00:27:40,730 Jadi itu seperti pergi ke khusus ini tempatkan di server ini. 556 00:27:40,730 --> 00:27:40,990 OK. 557 00:27:40,990 --> 00:27:45,730 >> Jadi saya hanya memilih 1.337. 558 00:27:45,730 --> 00:27:47,910 Ada berbagai macam jenis nomor bahwa Anda dapat memilih. 559 00:27:47,910 --> 00:27:50,390 Itu tidak benar-benar istimewa. 560 00:27:50,390 --> 00:27:54,560 >> Tapi apa yang akan saya lakukan sekarang adalah aku akan menjalankan Node. 561 00:27:54,560 --> 00:27:59,730 Biarkan aku benar-benar masuk bahwa pasangan garis bawah sehingga Anda dapat melihatnya. 562 00:27:59,730 --> 00:28:03,130 Aku akan melakukan Node, dan aku akan menjalankan simpler.js. 563 00:28:03,130 --> 00:28:06,880 Dan kita akan berbicara tentang bagaimana untuk mendapatkan Node diatur dalam sedikit. 564 00:28:06,880 --> 00:28:09,350 Tapi sekarang itu hanya menjalankan server. 565 00:28:09,350 --> 00:28:14,360 >> Jadi salah satu hal yang kita dapat mencoba yang tidak mungkin jadi menarik adalah kita bisa benar-benar 566 00:28:14,360 --> 00:28:16,300 mencoba untuk mengaksesnya di Curl. 567 00:28:16,300 --> 00:28:20,680 Jadi saya bisa melakukan Curl, dan saya mesin adalah host lokal. 568 00:28:20,680 --> 00:28:24,600 Anda juga akan melihat ini ditulis seperti ini kadang-kadang. 569 00:28:24,600 --> 00:28:29,810 Host lokal dan 127.0.0.1 adalah jenis seperti komputer di rumah Anda. 570 00:28:29,810 --> 00:28:33,180 Jadi seperti berbicara dengan komputer Anda sendiri. 571 00:28:33,180 --> 00:28:33,760 OK. 572 00:28:33,760 --> 00:28:36,030 >> Dan kemudian saya dapat mengatakan 1337. 573 00:28:36,030 --> 00:28:39,630 Jadi jika saya menjalankan baris kode, ia mengatakan hello world. 574 00:28:39,630 --> 00:28:44,050 Dan jika saya ingin melihat hal-hal yang yang memiliki jenis konten teks biasa atau 575 00:28:44,050 --> 00:28:46,560 apapun, aku bahkan bisa menempatkan ini di sini. 576 00:28:46,560 --> 00:28:48,810 Dan melihat bahwa itu tidak mengatakan OK. 577 00:28:48,810 --> 00:28:50,810 Dan saya punya teks biasa. 578 00:28:50,810 --> 00:28:53,140 Dan kemudian ada semacam ini semua lainnya hal-hal yang Node akan menambahkan 579 00:28:53,140 --> 00:28:54,440 ada untukku. 580 00:28:54,440 --> 00:28:55,700 Itu tidak super penting. 581 00:28:55,700 --> 00:28:58,230 >> Maksudku, ada beberapa jenis teknis aspek pada yang baik 582 00:28:58,230 --> 00:29:02,280 keren untuk dibicarakan, tapi hanya untuk menunjukkan Anda, saya juga memiliki kekuatan untuk 583 00:29:02,280 --> 00:29:03,070 mengubah ini di sekitar. 584 00:29:03,070 --> 00:29:06,280 Jadi saya hanya bisa menambahkan a bunch hal-hal seperti itu. 585 00:29:06,280 --> 00:29:11,780 Dan kemudian sekarang, jika saya melihat di saya output, itu akan menjadi itu. 586 00:29:11,780 --> 00:29:19,740 Jadi header ini berarti hal-hal tertentu ke browser dan hal-hal seperti itu. 587 00:29:19,740 --> 00:29:23,040 >> Dan header pada dasarnya dapat memberitahu browser bagaimana menanggapi sesuatu. 588 00:29:23,040 --> 00:29:26,280 Jika Anda pernah mendengar tentang cookie sebelumnya, atau jika Anda pernah kesal 589 00:29:26,280 --> 00:29:29,330 oleh halaman web pengaturan cookies, atau dihidupkan kue blok atau 590 00:29:29,330 --> 00:29:30,320 sesuatu seperti itu. 591 00:29:30,320 --> 00:29:33,040 Anda benar-benar dapat mengatur cookie dalam header tersebut. 592 00:29:33,040 --> 00:29:36,990 Jadi mereka memberitahu browser bagaimana perilaku dalam beberapa kasus. 593 00:29:36,990 --> 00:29:37,750 OK. 594 00:29:37,750 --> 00:29:40,310 >> Jadi itu simpler.js. 595 00:29:40,310 --> 00:29:42,780 Apakah Ada yang punya pertanyaan pada file kode sumber? 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 Keren. 599 00:29:46,490 --> 00:29:50,780 >> Jadi mari kita menghapus r dari yang dan melihat simple.js. 600 00:29:50,780 --> 00:29:53,010 Jadi ini cukup banyak program yang sama. 601 00:29:53,010 --> 00:29:56,030 Aku hanya menulis sedikit berbeda karena saya ingin mengurutkan dari sorot 602 00:29:56,030 --> 00:29:57,850 beberapa fitur JavaScript. 603 00:29:57,850 --> 00:30:03,880 >> Jadi melihat bahwa permintaan handler Fungsi telah benar-benar lenyap. 604 00:30:03,880 --> 00:30:05,800 Oh ya, apakah Anda memiliki pertanyaan? 605 00:30:05,800 --> 00:30:08,200 >> AUDIENCE: Ya, argumen yang dilewatkan ke yang 606 00:30:08,200 --> 00:30:10,120 fungsi, apa yang mereka? 607 00:30:10,120 --> 00:30:12,050 >> KEVIN Schmid: Jadi mereka adalah JavaScript obyek. 608 00:30:12,050 --> 00:30:15,230 Dalam dokumentasi Node.js, itu pada dasarnya mengatakan apa metode yang 609 00:30:15,230 --> 00:30:15,910 tersedia pada mereka. 610 00:30:15,910 --> 00:30:19,602 Kami hanya kebetulan memiliki akses ke Metode ini disebut menulis kepala dan akhir 611 00:30:19,602 --> 00:30:20,730 dan hal-hal seperti itu. 612 00:30:20,730 --> 00:30:22,590 Tapi ada sekelompok keseluruhan metode yang lebih. 613 00:30:22,590 --> 00:30:27,670 >> Dan misalnya, seperti salah satu dari mereka khususnya pada rec, Anda dapat melakukan 614 00:30:27,670 --> 00:30:34,540 sesuatu seperti rec.method yang akan memberitahu Anda apakah itu HTTP get atau 615 00:30:34,540 --> 00:30:36,780 Permintaan pasca HTTP dan hal-hal seperti itu. 616 00:30:36,780 --> 00:30:39,100 Jadi ada semua jenis yang berbeda properti, tapi mereka berdua 617 00:30:39,100 --> 00:30:42,560 JavaScript objek, dan mereka hanya memiliki fungsi yang melekat pada mereka bahwa Anda 618 00:30:42,560 --> 00:30:43,850 dapat menulis hal yang. 619 00:30:43,850 --> 00:30:45,520 OK? 620 00:30:45,520 --> 00:30:49,030 >> Jadi melihat bahwa permintaan handler benar-benar hilang. 621 00:30:49,030 --> 00:30:52,650 Tapi kode yang saya miliki dalam permintaan handler masih ada. 622 00:30:52,650 --> 00:30:56,520 Aku masih memiliki res.writeHead ini dan saya masih memiliki res.end ini. 623 00:30:56,520 --> 00:31:00,270 Dan apa ini adalah contoh di JavaScript adalah ide tentang 624 00:31:00,270 --> 00:31:01,460 fungsi anonim. 625 00:31:01,460 --> 00:31:04,180 dan anonim seperti nama yang cocok untuk itu karena itu benar-benar tidak 626 00:31:04,180 --> 00:31:05,180 memiliki nama. 627 00:31:05,180 --> 00:31:07,900 Tidak ada permintaan fungsi handler di sana. 628 00:31:07,900 --> 00:31:10,110 >> Tidak memiliki nama, tetapi masih adalah mengambil argumen. 629 00:31:10,110 --> 00:31:12,250 Jadi aku masih punya rec dan res. 630 00:31:12,250 --> 00:31:16,180 Dan aku masih memiliki kode tersebut. 631 00:31:16,180 --> 00:31:18,930 Ini baik-baik saja JavaScript code. 632 00:31:18,930 --> 00:31:22,540 Jadi saya bisa menyatakan fungsi tanpa eksplisit memberi nama. 633 00:31:22,540 --> 00:31:24,250 Ini sedikit membingungkan pada awalnya. 634 00:31:24,250 --> 00:31:26,230 Ada beberapa hal-hal seperti yang berguna yang dapat Anda lakukan dengan 635 00:31:26,230 --> 00:31:28,450 ini fungsi anonim. 636 00:31:28,450 --> 00:31:32,100 Apakah Ada yang punya pertanyaan ini, atau itu hanya untuk OK, untuk saat ini, 637 00:31:32,100 --> 00:31:34,130 semacam hanya menerima bahwa itu akan melakukan hal yang sama? 638 00:31:34,130 --> 00:31:36,700 639 00:31:36,700 --> 00:31:37,125 Yep? 640 00:31:37,125 --> 00:31:38,680 >> AUDIENCE: Apakah fungsi pertama kelas dalam JavaScript? 641 00:31:38,680 --> 00:31:41,020 >> KEVIN Schmid: Mereka pertama kelas dalam JavaScript. 642 00:31:41,020 --> 00:31:45,490 Dan hanya tahu bahwa konsep-konsep ini dari lewat di fungsi anonim seperti 643 00:31:45,490 --> 00:31:49,600 ini berlaku untuk JavaScript yang Anda dapat menulis dalam proyek akhir Anda untuk 644 00:31:49,600 --> 00:31:51,260 web browser juga. 645 00:31:51,260 --> 00:31:56,700 Jadi misalnya, dalam JavaScript di browser Anda, itu juga agak event 646 00:31:56,700 --> 00:32:00,680 didorong dalam arti bahwa apa yang akan Anda miliki adalah ketika pengguna mengklik ini 647 00:32:00,680 --> 00:32:02,640 tombol, saya ingin Anda untuk menjalankan kode ini. 648 00:32:02,640 --> 00:32:07,070 >> Jadi jenis yang sama ide-ide dari sisi klien bila klik mouse atau mereka 649 00:32:07,070 --> 00:32:09,870 mouse di atas beberapa gambar pada Anda halaman web, menjalankan kode ini. 650 00:32:09,870 --> 00:32:11,350 Yang dapat diterapkan pada server. 651 00:32:11,350 --> 00:32:16,380 Jadi itulah jenis seperti menarik alasan mengapa JavaScript adalah benar-benar 652 00:32:16,380 --> 00:32:19,810 orang yang cocok atau beberapa berpikir itu adalah bahasa yang sesuai untuk jenis 653 00:32:19,810 --> 00:32:22,530 Server sopir acara karena Anda memiliki ini fungsi anonim. 654 00:32:22,530 --> 00:32:26,150 Anda memiliki ide seluruh kode asynchronous ini. 655 00:32:26,150 --> 00:32:27,060 OK. 656 00:32:27,060 --> 00:32:30,360 Ada yang punya pertanyaan? 657 00:32:30,360 --> 00:32:30,470 >> OK. 658 00:32:30,470 --> 00:32:33,440 Jadi itu simple.js. 659 00:32:33,440 --> 00:32:38,070 Jadi mari kita lihat satu lagi atau beberapa lagi. 660 00:32:38,070 --> 00:32:42,040 Jadi ini adalah sleep.js. 661 00:32:42,040 --> 00:32:47,160 Begitu pula orang akrab dengan C fungsi tidur? 662 00:32:47,160 --> 00:32:50,936 Dari mungkin salah satu dari kuliah sebelumnya atau sesuatu seperti itu? 663 00:32:50,936 --> 00:32:54,650 >> Jadi pada dasarnya Anda dapat lulus dalam saya pikir jumlah detik atau jika Anda menggunakan U 664 00:32:54,650 --> 00:32:57,080 tidur beberapa milidetik atau nanodetik. 665 00:32:57,080 --> 00:33:00,450 Dan pada dasarnya program ini hanya akan berhenti berjalan untuk jumlah waktu. 666 00:33:00,450 --> 00:33:01,280 Benar? 667 00:33:01,280 --> 00:33:06,970 Dan kemudian akan bangun akhirnya dan maka itu hanya akan terus berjalan 668 00:33:06,970 --> 00:33:08,340 program. 669 00:33:08,340 --> 00:33:12,740 >> Jadi server ini semacam memberi kesan tidur. 670 00:33:12,740 --> 00:33:17,580 Jadi melihat bahwa kita memiliki yang sama res.writeHead 200 dengan header sebagai 671 00:33:17,580 --> 00:33:22,130 sebelumnya, tapi kemudian kita panggil ini fungsi yang disebut set timeout. 672 00:33:22,130 --> 00:33:26,170 Mengatur batas waktu juga tersedia dalam web browser Anda Google Chrome 673 00:33:26,170 --> 00:33:28,000 atau Safari atau apa pun. 674 00:33:28,000 --> 00:33:31,720 Dan pada dasarnya apa yang dilakukannya di sini adalah itu berlangsung dalam suatu fungsi. 675 00:33:31,720 --> 00:33:33,360 Perhatikan, sekali lagi, ini merupakan fungsi anonim. 676 00:33:33,360 --> 00:33:36,310 Jadi itu agak dingin karena kita menggunakan fungsi anonim dalam sebuah 677 00:33:36,310 --> 00:33:38,950 fungsi anonim yang bisa menjadi sedikit aneh. 678 00:33:38,950 --> 00:33:42,270 >> Tapi itu mengambil fungsi itu, yang pada dasarnya mengatakan - dan cara ini 679 00:33:42,270 --> 00:33:47,430 karya di 5.000 milidetik, aku ingin Anda untuk menjalankan fungsi apa yang 680 00:33:47,430 --> 00:33:50,830 hanya berakhir respon dan menulis hey. 681 00:33:50,830 --> 00:33:56,730 Jadi ini memberikan kesan seperti tidur, tetapi cara ini benar-benar 682 00:33:56,730 --> 00:33:59,780 kerjanya adalah kita akan dijalankan melalui baris ini sangat cepat. 683 00:33:59,780 --> 00:34:01,190 Kami hanya menulis sesuatu. 684 00:34:01,190 --> 00:34:03,780 Dan kemudian kami juga akan dijalankan melalui baris ini sangat cepat. 685 00:34:03,780 --> 00:34:08,620 Jadi kita tidak benar-benar akan menunggu lima detik. 686 00:34:08,620 --> 00:34:11,370 Kami hanya akan menjalankan Kode ini langsung. 687 00:34:11,370 --> 00:34:14,219 >> Dan kemudian ada, sekali lagi, ini sedikit loop acara yang sekarang memiliki hal ini 688 00:34:14,219 --> 00:34:17,570 register yang pada dasarnya hanya terus-menerus terjadi di sekitar dalam lingkaran 689 00:34:17,570 --> 00:34:21,620 dan melihat jam dalam satu benang dan mengatakan, memiliki lima detik 690 00:34:21,620 --> 00:34:22,360 lulus belum? 691 00:34:22,360 --> 00:34:26,409 Dan kemudian ketika melihat bahwa kedua tangan telah bergerak seperti lima detik atau 692 00:34:26,409 --> 00:34:29,190 apapun, maka bangun dan berkata, oh, apa yang harus saya lakukan? 693 00:34:29,190 --> 00:34:30,350 Oh, aku harus menjalankan kode ini. 694 00:34:30,350 --> 00:34:33,110 Dan kemudian itu akan menjalankan res.end hey. 695 00:34:33,110 --> 00:34:35,360 >> Jadi sekali lagi, kita tidak pernah menunggu di sini. 696 00:34:35,360 --> 00:34:38,590 Jadi bukan bahwa kode ini dalam fungsi ini akan mengambil lima 697 00:34:38,590 --> 00:34:39,900 detik untuk menjalankan. 698 00:34:39,900 --> 00:34:43,090 Kode ini akan berjalan cukup banyak seketika, setidaknya relatif terhadap 699 00:34:43,090 --> 00:34:46,139 lima detik yang kami berbicara tentang sebelumnya sebelumnya. 700 00:34:46,139 --> 00:34:52,100 >> Jadi hanya untuk menunjukkan ini dalam tindakan, Aku bisa melakukan Node.sleep.js. 701 00:34:52,100 --> 00:34:55,159 Dan apakah saya mengacaukan sesuatu? 702 00:34:55,159 --> 00:34:56,310 Mungkin. 703 00:34:56,310 --> 00:34:57,410 Maaf. 704 00:34:57,410 --> 00:34:59,530 Mari kita lihat apa yang bisa kita lakukan untuk memperbaiki hal ini. 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 Jadi pasti menggunakan Node.js. 709 00:35:17,464 --> 00:35:19,440 Aku hanya bercanda. 710 00:35:19,440 --> 00:35:19,570 OK. 711 00:35:19,570 --> 00:35:20,820 Hanya satu detik. 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 Aku tahu apa itu. 715 00:35:29,130 --> 00:35:34,440 >> Jadi masalah ini adalah bahwa dalam tab saya yang lain di sini, aku berlari Node sudah di 716 00:35:34,440 --> 00:35:36,590 alamat yang sama, 1337. 717 00:35:36,590 --> 00:35:43,370 Jadi kesalahan yang ini melemparkan, jika kita melihat hal itu nyata erat, adalah alamat di 718 00:35:43,370 --> 00:35:45,180 gunakan, EADDRINUSE. 719 00:35:45,180 --> 00:35:47,970 Jadi saya sudah menggunakan 1337 di sini. 720 00:35:47,970 --> 00:35:52,210 Jadi jika saya menutup off ini, dan kemudian aku sekarang mencoba untuk menjalankan ini, mudah-mudahan, semuanya 721 00:35:52,210 --> 00:35:53,210 akan baik-baik saja. 722 00:35:53,210 --> 00:35:53,440 OK. 723 00:35:53,440 --> 00:35:57,020 Jadi Anda hanya dapat memiliki satu hal semacam mendengarkan pada port sekaligus. 724 00:35:57,020 --> 00:35:59,660 Solusi lain akan menjadi bagi saya hanya mengedit program itu dan membuat 725 00:35:59,660 --> 00:36:02,370 rasanya 1338 atau sesuatu seperti itu. 726 00:36:02,370 --> 00:36:04,100 >> Tapi sekarang tidur berjalan. 727 00:36:04,100 --> 00:36:06,400 Jadi mari kita benar-benar mencobanya dalam Browser saat ini karena itu adalah 728 00:36:06,400 --> 00:36:09,080 sedikit tanpa kegirangan untuk melihat dalam terminal. 729 00:36:09,080 --> 00:36:13,560 Jadi aku hanya akan pergi ke yang 127 alamat lagi di 1337. 730 00:36:13,560 --> 00:36:14,850 Dan jika Anda bisa melihatnya - 731 00:36:14,850 --> 00:36:18,050 Saya tidak tahu apakah Anda bisa - tapi saya browser mengambil sangat, sangat panjang 732 00:36:18,050 --> 00:36:20,600 waktu untuk memuat atau seperti lima detik. 733 00:36:20,600 --> 00:36:23,460 >> Dan kemudian setelah itu, akhirnya berakhir respon. 734 00:36:23,460 --> 00:36:29,070 Dan Anda tidak bisa melihatnya karena hal digerakkan diatas sedikit, tapi jika saya membuat 735 00:36:29,070 --> 00:36:32,500 ini lebih kecil sedikit, Anda bisa melihatnya mengatakan hey. 736 00:36:32,500 --> 00:36:35,130 Jadi saya mendapat hey, tetapi setelah lima detik. 737 00:36:35,130 --> 00:36:38,510 Dan mungkin sedikit lebih bersih untuk melihat di sini pada terminal, jadi aku 738 00:36:38,510 --> 00:36:40,980 akan melakukan - 739 00:36:40,980 --> 00:36:43,540 mari kita lakukan di sini - 740 00:36:43,540 --> 00:36:48,370 mari kita lakukan Curl alamat tersebut lagi dengan 1337. 741 00:36:48,370 --> 00:36:50,820 Dan aku hanya jenis harus duduk di sini selama lima detik. 742 00:36:50,820 --> 00:36:53,760 Tapi perhatikan bahwa server dapat menerima tanggapan baru. 743 00:36:53,760 --> 00:36:54,940 Jadi mencetak hey. 744 00:36:54,940 --> 00:36:58,720 >> Dan untuk demo ini, pada dasarnya apa yang Aku dapat dilakukan di tab lain ini - 745 00:36:58,720 --> 00:37:02,640 jadi katakanlah saya melakukan ini di tab lain, Aku akan melakukan Curl dan sama 746 00:37:02,640 --> 00:37:03,780 hal lagi. 747 00:37:03,780 --> 00:37:06,600 Dan aku akan mencoba untuk menendang ini orang off pada waktu yang sama. 748 00:37:06,600 --> 00:37:08,260 Jadi aku akan melakukan hal ini, dan aku akan berlomba di sini dan aku 749 00:37:08,260 --> 00:37:09,650 akan melakukannya lagi. 750 00:37:09,650 --> 00:37:14,030 >> Dan mari kita membuatnya sehingga Anda bisa melihat keduanya. 751 00:37:14,030 --> 00:37:20,250 Itu salah satu dicetak hey dan satu yang dicetak hey semua jalan di - 752 00:37:20,250 --> 00:37:22,550 mari kita lakukan percobaan itu lagi. 753 00:37:22,550 --> 00:37:25,100 Sebenarnya, mari kita gunakan ini trik, kalau itu OK. 754 00:37:25,100 --> 00:37:30,520 >> Jadi saya akan menggunakan hal shell yang memungkinkan saya untuk dasarnya menjalankan dua salinan 755 00:37:30,520 --> 00:37:32,630 program ini secara paralel. 756 00:37:32,630 --> 00:37:36,070 Jadi itu akan menjalankan program pertama dan program kedua secara paralel. 757 00:37:36,070 --> 00:37:39,060 Jadi sekarang jika saya tekan Enter, itu akan untuk membuat permintaan yang cukup banyak 758 00:37:39,060 --> 00:37:40,570 seketika pada saat yang sama. 759 00:37:40,570 --> 00:37:42,620 Jadi mari kita memberikan suntikan ini. 760 00:37:42,620 --> 00:37:44,950 >> Jadi sekarang melihat hal itu mengatakan dua proses. 761 00:37:44,950 --> 00:37:50,630 Dan jika Anda penasaran, bahwa 27.000 nomor pada dasarnya adalah proses ID. 762 00:37:50,630 --> 00:37:52,940 Dan kemudian melihat, mereka dicetak hey pada saat yang sama. 763 00:37:52,940 --> 00:37:56,820 Itu tidak seperti kami harus menunggu lima detik untuk satu dan kemudian setelah itu, 764 00:37:56,820 --> 00:37:59,640 lima detik kemudian mendapatkan kedua. 765 00:37:59,640 --> 00:38:03,300 Jadi itu semacam, dalam beberapa hal, itu tidak benar-benar bukti, tapi itu 766 00:38:03,300 --> 00:38:07,390 bukti intuitif bahwa itu bukan hanya seperti menunggu lima detik dan memblokir 767 00:38:07,390 --> 00:38:08,960 seluruh benang. 768 00:38:08,960 --> 00:38:10,720 OK keren. 769 00:38:10,720 --> 00:38:17,850 >> Jadi Aaron mengajukan pertanyaan sebelumnya bahwa itu, baik apa jika kita melakukan sesuatu - 770 00:38:17,850 --> 00:38:18,735 Yep? 771 00:38:18,735 --> 00:38:19,051 >> AUDIENCE: Tunggu. 772 00:38:19,051 --> 00:38:21,585 Bagaimana adalah bahwa berbeda dari printf penyangga, meskipun? 773 00:38:21,585 --> 00:38:23,010 Tidak secara otomatis melakukan itu? 774 00:38:23,010 --> 00:38:25,390 Mengapa kita perlu khawatir tentang hal itu? 775 00:38:25,390 --> 00:38:26,555 >> KEVIN Schmid: Oh, bisa Anda mengatakan bahwa sekali lagi? 776 00:38:26,555 --> 00:38:29,510 >> AUDIENCE: Tidak suka printf penyangga melakukan hal yang sama persis? 777 00:38:29,510 --> 00:38:31,280 >> KEVIN Schmid: The printf penyangga? 778 00:38:31,280 --> 00:38:32,753 >> AUDIENCE: Ya. 779 00:38:32,753 --> 00:38:33,244 OK. 780 00:38:33,244 --> 00:38:40,609 Bukankah di salah satu kuis mereka berbicara tentang bagaimana jika Anda benar printf 781 00:38:40,609 --> 00:38:42,899 sesuatu dan kemudian memilikinya jeda satu kedua, dan kemudian Anda memilikinya lingkaran sepuluh 782 00:38:42,899 --> 00:38:46,530 kali, itu akan menunggu sepuluh detik dan kemudian printf semuanya bersama-sama? 783 00:38:46,530 --> 00:38:47,460 >> KEVIN Schmid: Oh, OK. 784 00:38:47,460 --> 00:38:49,170 >> AUDIENCE: Apakah melakukan hal yang sama hal maka dalam hal ini? 785 00:38:49,170 --> 00:38:52,630 >> KEVIN Schmid: Jadi pertanyaannya adalah pada dasarnya di salah satu mantan kuis 786 00:38:52,630 --> 00:38:57,200 atau sesuatu, ada pertanyaan yang pada dasarnya jika Anda mengatakan print f 10 787 00:38:57,200 --> 00:39:01,490 hal pada suatu waktu dan kemudian tidur seperti di proses mencetak mereka keluar, 788 00:39:01,490 --> 00:39:04,850 pada akhir untuk beberapa alasan, itu akan hanya membuang mereka semua keluar di layar. 789 00:39:04,850 --> 00:39:06,740 Jadi ada semacam dua berbeda konsep di sini. 790 00:39:06,740 --> 00:39:10,400 >> Jadi saya kira satu hal adalah bahwa, dalam hal ini kasus, kita sedang berhadapan dengan dua berbeda 791 00:39:10,400 --> 00:39:13,510 semacam orang yang meminta server untuk hal-hal pada waktu yang sama. 792 00:39:13,510 --> 00:39:17,455 Dan alasan yang printf jenis menunggu seperti itu dan kesedihan semuanya 793 00:39:17,455 --> 00:39:21,760 sekaligus lebih terkait dengan bagaimana printf jenis - 794 00:39:21,760 --> 00:39:25,100 jadi cara printf sebenarnya dilaksanakan adalah pada dasarnya harus 795 00:39:25,100 --> 00:39:28,850 berbicara dengan sistem operasi untuk menulis bahwa barang-barang ke konsol. 796 00:39:28,850 --> 00:39:33,460 Jadi tidak ingin melakukan semua itu barang langsung ketika Anda mengatakan printf 797 00:39:33,460 --> 00:39:36,260 beberapa string karena yang bisa mahal jika itu harus 798 00:39:36,260 --> 00:39:37,340 melakukan itu setiap kali. 799 00:39:37,340 --> 00:39:41,530 >> Jadi jika Anda melakukan printf hey, program Anda mungkin tidak benar-benar mencetak bahwa 800 00:39:41,530 --> 00:39:43,040 segera ke konsol. 801 00:39:43,040 --> 00:39:46,080 Ini mungkin berkata, OK, aku menulisnya. 802 00:39:46,080 --> 00:39:49,570 Dan kemudian jenis menunggu Anda untuk memberikan sedikit lebih sebelum benar-benar 803 00:39:49,570 --> 00:39:51,380 menulis itu ke konsol. 804 00:39:51,380 --> 00:39:54,040 >> Jadi alasan bahwa itu terjadi - 805 00:39:54,040 --> 00:39:56,450 dan itu agak tidak berhubungan untuk tidur - 806 00:39:56,450 --> 00:40:00,060 adalah bahwa tidur adalah semacam hanya disuntikkan di sana untuk menunjukkan 807 00:40:00,060 --> 00:40:02,480 fakta bahwa ia tidak menulis itu serempak. 808 00:40:02,480 --> 00:40:06,210 Tapi alasan untuk itu hanya kinerja sehingga Anda tidak perlu 809 00:40:06,210 --> 00:40:08,920 membuat banyak kontak untuk sistem operasi. 810 00:40:08,920 --> 00:40:12,300 >> Tapi di sini, apa yang kita benar-benar mencoba untuk melakukan dengan hal tidur ini hanya menunjukkan 811 00:40:12,300 --> 00:40:17,730 bahwa ketika kita memiliki dua orang mengunjungi website ini, itu tidak akan menempatkan 812 00:40:17,730 --> 00:40:22,310 mereka dalam garis mana itu akan mengatakan Saya harus membantu Anda, dan kemudian ketika aku 813 00:40:22,310 --> 00:40:25,350 benar-benar selesai membantu Anda setelah ini lima detik, maka aku akan 814 00:40:25,350 --> 00:40:26,750 pindah ke orang berikutnya. 815 00:40:26,750 --> 00:40:29,515 Jadi permintaan orang pertama tidak mengikat bahwa loop acara 816 00:40:29,515 --> 00:40:31,610 jika itu masuk akal. 817 00:40:31,610 --> 00:40:34,980 >> Tapi di sini adalah benar-benar sebuah contoh sesuatu yang akan mengikat 818 00:40:34,980 --> 00:40:36,090 up loop acara. 819 00:40:36,090 --> 00:40:39,130 Jadi, inilah fungsi mengerikan untuk menghitung n Fibonacci. 820 00:40:39,130 --> 00:40:43,510 Ini benar-benar cara yang buruk Anda dapat menghitung jumlah Fibonacci n. 821 00:40:43,510 --> 00:40:48,480 Dan ini sebenarnya hanya untuk mengakui di mana hal ini berasal, 822 00:40:48,480 --> 00:40:49,330 sebenarnya ada - 823 00:40:49,330 --> 00:40:53,230 Maksudku, Anda dapat mencoba untuk pergi menemukannya - tapi ada seperti blog yang sangat panjang 824 00:40:53,230 --> 00:40:54,130 posting bahwa seseorang menulis. 825 00:40:54,130 --> 00:40:55,660 Ini seperti salah satu hal Reddit. 826 00:40:55,660 --> 00:40:59,650 Tetapi seseorang mengkritik Node.js, dan mereka menggunakan ini sebagai contoh. 827 00:40:59,650 --> 00:41:03,700 Jadi aku agak ingin hanya menunjukkan dua perspektif yang berbeda hanya untuk mendapatkan 828 00:41:03,700 --> 00:41:07,320 pemahaman umum tentang konsep-konsep balik dua hal. 829 00:41:07,320 --> 00:41:13,050 >> Tapi ini dipilih hanya sebagai mengerikan, komputasi sangat tidak efisien 830 00:41:13,050 --> 00:41:15,940 cara intensif untuk menghitung nomor Fibonacci n. 831 00:41:15,940 --> 00:41:21,180 Jadi hanya sebagai catatan samping, mengapa itu mengerikan seperti dalam satu cara? 832 00:41:21,180 --> 00:41:23,210 Yep? 833 00:41:23,210 --> 00:41:25,130 >> AUDIENCE: Katakanlah Anda mulai dengan 1.000. 834 00:41:25,130 --> 00:41:27,050 1.000 terbagi menjadi 999 dan 998. 835 00:41:27,050 --> 00:41:28,970 Masing-masing ini terbagi menjadi dua hal. 836 00:41:28,970 --> 00:41:30,890 Masing-masing ini terbagi menjadi dua hal. 837 00:41:30,890 --> 00:41:31,355 >> KEVIN Schmid: Benar. 838 00:41:31,355 --> 00:41:32,400 >> AUDIENCE: Semua jalan turun. 839 00:41:32,400 --> 00:41:32,840 >> KEVIN Schmid: Tepat. 840 00:41:32,840 --> 00:41:37,330 Jadi hanya untuk mengulang untuk kamera, jika saya panggilan bikinan on seperti 1.000 atau sesuatu 841 00:41:37,330 --> 00:41:41,810 seperti itu, itu jelas tidak kurang dari atau sama dengan satu jadi aku akan 842 00:41:41,810 --> 00:41:46,040 pergi ke lain kasus ini, dan kemudian aku akan untuk memanggil bikinan 999 ditambah bikinan 998. 843 00:41:46,040 --> 00:41:50,290 Dan kemudian cukup banyak semua itu pekerjaan yang dilakukan adalah bikinan 999 844 00:41:50,290 --> 00:41:52,950 jenis pada tingkat ini. 845 00:41:52,950 --> 00:41:55,620 Jika Anda pergi ke bawah, itu bahkan lebih berlebihan dari itu, tetapi jika Anda hanya 846 00:41:55,620 --> 00:42:01,390 berpikir komputasi fib 998 mendapat kita cukup dekat dengan bikinan 999. 847 00:42:01,390 --> 00:42:05,860 Jadi kita harus benar-benar menjadi sedikit lebih pintar tentang bagaimana kita menggunakan kembali jenis 848 00:42:05,860 --> 00:42:07,580 ini, tapi kami tidak menggunakan kembali hal-hal ini sama sekali. 849 00:42:07,580 --> 00:42:11,860 Jadi bisa dibayangkan raksasa ini, pohon raksasa itu hanya mengerikan. 850 00:42:11,860 --> 00:42:12,940 >> Tapi bagaimanapun, OK. 851 00:42:12,940 --> 00:42:14,040 Jadi itu bohong. 852 00:42:14,040 --> 00:42:15,530 Ini hanya membutuhkan beberapa saat untuk menjalankan. 853 00:42:15,530 --> 00:42:16,510 Yep? 854 00:42:16,510 --> 00:42:17,760 >> AUDIENCE: [Tak terdengar]. 855 00:42:17,760 --> 00:42:20,430 856 00:42:20,430 --> 00:42:22,481 >> KEVIN Schmid: Oh, bisa Anda ulangi pertanyaannya? 857 00:42:22,481 --> 00:42:23,731 >> AUDIENCE: [Tak terdengar]. 858 00:42:23,731 --> 00:42:30,840 859 00:42:30,840 --> 00:42:33,990 >> KEVIN Schmid: Oh jadi ini hanya kode itu akan menjadi semacam pada 860 00:42:33,990 --> 00:42:34,850 sisi server. 861 00:42:34,850 --> 00:42:38,100 Jadi ini tidak akan ditemukan di browser atau apa pun. 862 00:42:38,100 --> 00:42:42,160 Pada dasarnya apa yang kita miliki adalah bahwa ketika pengguna di sini cukup banyak merek 863 00:42:42,160 --> 00:42:45,300 permintaan mereka lagi, ketika kita semacam membuat permintaan, kita akan memanggil 864 00:42:45,300 --> 00:42:47,040 fungsi ini pada sisi server. 865 00:42:47,040 --> 00:42:50,480 Dan kemudian kita akan mendapatkan hasilnya kembali dari memanggil fungsi itu. 866 00:42:50,480 --> 00:42:52,460 Dan kemudian kita hanya akan mencetak kepada pengguna. 867 00:42:52,460 --> 00:42:54,580 Jadi pengguna tidak benar-benar berurusan dengan fungsi ini terlalu banyak. 868 00:42:54,580 --> 00:42:57,270 >> Apakah itu pertanyaan? 869 00:42:57,270 --> 00:42:58,470 Apakah itu masuk akal? 870 00:42:58,470 --> 00:42:58,810 OK. 871 00:42:58,810 --> 00:43:00,930 Keren. 872 00:43:00,930 --> 00:43:04,240 >> Jadi sekali lagi, kita melakukan seluruh res.writeHead ini hal mana kami mencetak 873 00:43:04,240 --> 00:43:05,150 header. 874 00:43:05,150 --> 00:43:09,730 Dan kemudian saya mengakhiri respon dengan melakukan angka ajaib adalah fib 45. 875 00:43:09,730 --> 00:43:12,100 Jadi mari kita menjalankan server ini. 876 00:43:12,100 --> 00:43:15,190 Jadi aku akan melakukan fib.js. Node 877 00:43:15,190 --> 00:43:17,340 Jadi sekarang Server fib saya berjalan. 878 00:43:17,340 --> 00:43:21,790 >> Dan kemudian di sini, aku akan untuk melakukan salah satu dari ini. 879 00:43:21,790 --> 00:43:22,200 OK? 880 00:43:22,200 --> 00:43:24,960 Jadi aku hanya akan mengatakan, Curl. 881 00:43:24,960 --> 00:43:32,226 Jadi itu akan mengambil sedikit waktu tapi mudah-mudahan segera cepat selesai dan 882 00:43:32,226 --> 00:43:35,660 itu akan mencetak 45 yang Fibonacci nomor. 883 00:43:35,660 --> 00:43:36,910 >> AUDIENCE: [Tak terdengar]. 884 00:43:36,910 --> 00:43:40,720 885 00:43:40,720 --> 00:43:42,050 >> KEVIN Schmid: Seharusnya bisa dilakukan segera. 886 00:43:42,050 --> 00:43:43,780 Jadi harus mengambil 5-6 detik. 887 00:43:43,780 --> 00:43:48,570 Saya tidak tahu itu hanya V8 menjadi super cepat, tetapi dalam hal apapun, ini adalah 888 00:43:48,570 --> 00:43:52,700 contoh yang sangat singkat dan sengaja janggal dari non-sepele 889 00:43:52,700 --> 00:43:54,200 perhitungan. 890 00:43:54,200 --> 00:43:56,700 Jadi setelah beberapa saat, itu tidak mendapatkan ini. 891 00:43:56,700 --> 00:44:02,130 >> Tapi sekarang, bagaimana jika saya melakukan itu jenis yang sama eksperimen seperti sebelumnya di mana saya membuat 892 00:44:02,130 --> 00:44:04,010 dua permintaan pada saat yang sama? 893 00:44:04,010 --> 00:44:06,990 Jadi di sini aku akan ke Curl pada alamat itu, dan aku akan 894 00:44:06,990 --> 00:44:08,260 untuk melakukan Curl lain. 895 00:44:08,260 --> 00:44:12,070 Dan ingat, ketika kita melakukan ini untuk tidur server, ketika kita pada dasarnya memiliki itu 896 00:44:12,070 --> 00:44:15,320 setelah lima detik, mereka cukup banyak keduanya kembali tepat 897 00:44:15,320 --> 00:44:16,380 sekitar waktu yang sama. 898 00:44:16,380 --> 00:44:18,650 Jadi itu tidak terlalu terikat. 899 00:44:18,650 --> 00:44:20,290 >> Tapi mari kita coba sekarang. 900 00:44:20,290 --> 00:44:22,370 OK, jadi kita punya dua proses kami. 901 00:44:22,370 --> 00:44:24,210 Ingat mereka adalah ID proses. 902 00:44:24,210 --> 00:44:25,900 Ini akan menjadi sedikit canggung sementara kami kios. 903 00:44:25,900 --> 00:44:31,340 904 00:44:31,340 --> 00:44:35,360 Jadi mari kita tinggal di sini dan menunggu. 905 00:44:35,360 --> 00:44:37,090 >> Jadi salah satu dari mereka harus datang kembali setelah seperti - 906 00:44:37,090 --> 00:44:39,190 OK, jadi satu kembali. 907 00:44:39,190 --> 00:44:43,570 Tapi mengapa tidak kedua satu kembali hanya belum? 908 00:44:43,570 --> 00:44:44,389 Yep? 909 00:44:44,389 --> 00:44:49,280 >> AUDIENCE: Server tidak dapat melakukan apa-apa sementara itu menghitung bahwa jumlah yang besar. 910 00:44:49,280 --> 00:44:51,620 >> KEVIN Schmid: Benar. 911 00:44:51,620 --> 00:44:55,395 Jadi respon itu hanya server benar-benar tidak bisa melakukan apa-apa sementara 912 00:44:55,395 --> 00:44:57,460 itu menghitung bahwa nomor Fibonacci. 913 00:44:57,460 --> 00:44:59,360 Jadi sekarang saya hanya punya saya dua hal kembali. 914 00:44:59,360 --> 00:45:03,210 Tapi kurasa hanya untuk berpikir tentang kode sedikit lebih, bagaimana itu bekerja 915 00:45:03,210 --> 00:45:05,030 dan segala sesuatu. 916 00:45:05,030 --> 00:45:11,750 >> Jadi fungsi ini di sini adalah kode yang Aku sudah mengatakan server ini untuk menjalankan ketika 917 00:45:11,750 --> 00:45:14,100 menerima permintaan yang masuk baru. 918 00:45:14,100 --> 00:45:17,940 Jadi itu hanya akan berjalan melalui ini seluruh kode, dan kemudian itu akan pergi 919 00:45:17,940 --> 00:45:21,120 kembali ke loop acara dan kemudian melanjutkan memeriksa untuk acara baru. 920 00:45:21,120 --> 00:45:23,670 Jadi pada dasarnya apa yang telah kita terjadi adalah server 921 00:45:23,670 --> 00:45:25,080 mendengarkan hal-hal baru. 922 00:45:25,080 --> 00:45:28,070 Orang pertama meminta apa 45 adalah. 923 00:45:28,070 --> 00:45:30,490 Kami menjalankan kode ini untuk menghitung itu. 924 00:45:30,490 --> 00:45:33,420 Kode ini diperlukan sekitar lima sampai enam detik untuk menjalankan. 925 00:45:33,420 --> 00:45:36,990 Kemudian kami kembali ke loop acara dan memeriksa permintaan baru. 926 00:45:36,990 --> 00:45:42,700 >> Jadi ini adalah sebuah contoh bagaimana, jika Anda memiliki hal-hal yang disebut menghitung 927 00:45:42,700 --> 00:45:48,140 terikat, atau menggunakan banyak komputasi, bukan kekuasaan, tapi seperti yang 928 00:45:48,140 --> 00:45:50,260 komputasi intensif - 929 00:45:50,260 --> 00:45:54,080 Saya kira satu hal untuk mengatakan tentang hal ini adalah bahwa fungsi ini benar-benar melakukan, 930 00:45:54,080 --> 00:45:56,310 untuk sebagian besar, cukup berguna kanan kerja. 931 00:45:56,310 --> 00:45:59,970 Seluruh waktu yang callback yang Fungsi berlari, itu cukup 932 00:45:59,970 --> 00:46:03,670 banyak menghabiskan sebagian besar waktunya hanya komputasi nomor yang n Fibonacci. 933 00:46:03,670 --> 00:46:05,930 >> Tetapi kami hanya memiliki satu thread untuk menangani. 934 00:46:05,930 --> 00:46:10,270 Dalam model Apache, ketika dua orang membuat permintaan untuk mendapatkan bikinan 45, kita 935 00:46:10,270 --> 00:46:11,610 akan memiliki dua benang yang berbeda. 936 00:46:11,610 --> 00:46:15,060 Dan kemudian pekerjaan sistem operasi pasti, atau tingkat pengguna 937 00:46:15,060 --> 00:46:18,660 kode yang mengelola benang, akan sudah telah mengiris bahwa sampai pada 938 00:46:18,660 --> 00:46:23,060 CPU, atau bahkan jika Anda memiliki beberapa CPU, mendistribusikannya secara merata di seluruh CPU 939 00:46:23,060 --> 00:46:26,130 sehingga mereka berdua finish kira-kira pada waktu yang sama. 940 00:46:26,130 --> 00:46:31,120 >> Jadi hanya untuk menunjukkan bagaimana kita bisa mengurutkan dari - dan ini bukan yang sempurna Total 941 00:46:31,120 --> 00:46:34,280 solusi, tapi semacam bagaimana kita bisa membuat kembali ke sini dan melakukan 942 00:46:34,280 --> 00:46:35,880 sedikit lebih baik. 943 00:46:35,880 --> 00:46:41,540 Jadi apa yang saya miliki di sini adalah sebuah program yang disebut Fib C. Dan ini pada dasarnya menggunakan 944 00:46:41,540 --> 00:46:45,690 satu lagi modul Node disebut Proses Child Modul. 945 00:46:45,690 --> 00:46:49,210 Jadi saya telah menyertakan bahwa di atas jenis seperti saya akan melakukan pound termasuk 946 00:46:49,210 --> 00:46:51,230 process.h anak atau sesuatu. 947 00:46:51,230 --> 00:46:56,210 Sekarang saya memiliki akses ke variabel CP ini yang memiliki semua fungsi saya. 948 00:46:56,210 --> 00:47:01,810 >> Jadi sekarang apa yang saya lakukan dalam menanggapi ini handler adalah saya sedang menjalankan program ini 949 00:47:01,810 --> 00:47:04,100 dot slash fib 45. 950 00:47:04,100 --> 00:47:06,820 Jadi apa yang saya lakukan - dan aku hanya akan untuk melangkah keluar dari program ini untuk 951 00:47:06,820 --> 00:47:07,620 sedikit - 952 00:47:07,620 --> 00:47:11,060 adalah saya telah menulis sebuah program C yang pada dasarnya menghitung 953 00:47:11,060 --> 00:47:12,630 nomor Fibonacci n. 954 00:47:12,630 --> 00:47:15,960 Jadi di sini hanya sebuah program yang kutulis di C yang menghitung ini. 955 00:47:15,960 --> 00:47:19,040 Saya dapat mengkompilasi, dan saya dapat menjalankan itu pada baris perintah. 956 00:47:19,040 --> 00:47:22,150 Dan itu akan menghitung Nomor 45 Fibonacci. 957 00:47:22,150 --> 00:47:24,510 >> Jadi melihat itu hanya membutuhkan cukup banyak selama. 958 00:47:24,510 --> 00:47:28,240 Aku mungkin bisa menggunakan dasbor 03 untuk mengoptimalkan atau sesuatu seperti itu, 959 00:47:28,240 --> 00:47:31,050 tapi aku hanya melakukan seperti biasa pengaturan compiler. 960 00:47:31,050 --> 00:47:33,260 Dan mencetak it out. 961 00:47:33,260 --> 00:47:36,830 >> Tapi sekarang, apa yang saya agak lakukan? 962 00:47:36,830 --> 00:47:39,800 Oh maaf, file yang salah. 963 00:47:39,800 --> 00:47:42,800 Jadi saya melakukan hal yang sama dengan header seperti sebelumnya. 964 00:47:42,800 --> 00:47:45,780 Lalu aku melakukan cp.exec ini. 965 00:47:45,780 --> 00:47:49,460 Jadi apa ini yang akan dilakukan adalah itu akan menjalankan program ini. 966 00:47:49,460 --> 00:47:51,960 Tapi cara ini bekerja adalah bahwa itu tidak akan menunggu 967 00:47:51,960 --> 00:47:53,400 program untuk menyelesaikan. 968 00:47:53,400 --> 00:47:56,000 Itu hanya pada dasarnya mengatakan mengeksekusi program ini. 969 00:47:56,000 --> 00:47:58,700 Jadi pada dasarnya jenis ini ke dalam perintah jenis prompt. 970 00:47:58,700 --> 00:48:02,350 >> Dan kemudian, ketika Anda sudah selesai dengan itu, menjalankan fungsi ini. 971 00:48:02,350 --> 00:48:04,800 Jadi sekarang kita mendapatkan semacam ini semuanya dipulihkan 972 00:48:04,800 --> 00:48:06,750 Sepertinya kita tidak menunggu. 973 00:48:06,750 --> 00:48:08,530 Apakah semacam itu masuk akal? 974 00:48:08,530 --> 00:48:08,990 Yep? 975 00:48:08,990 --> 00:48:11,060 >> AUDIENCE: [Tak terdengar]? 976 00:48:11,060 --> 00:48:13,610 >> KEVIN Schmid: Jadi ini benar-benar akan membuka proses baru untuk melakukannya. 977 00:48:13,610 --> 00:48:19,310 Jadi ini sebenarnya, dalam beberapa hal, jahat, tidak super jahat, tetapi 978 00:48:19,310 --> 00:48:22,990 penting untuk mengatakan bahwa ini adalah jenis akan kembali ke, di satu sisi, Apache 979 00:48:22,990 --> 00:48:26,450 Model mana yang kita lakukan benang dan proses untuk setiap permintaan atau 980 00:48:26,450 --> 00:48:29,280 proses untuk setiap permintaan. 981 00:48:29,280 --> 00:48:32,090 Jadi ini adalah jenis analog untuk apa Apache. 982 00:48:32,090 --> 00:48:35,110 Dalam beberapa kasus, itu hanya akan menggunakan baru benang, yang sedikit lebih banyak cahaya 983 00:48:35,110 --> 00:48:39,040 berat daripada proses, tapi Apache bisa berakhir forking proses baru 984 00:48:39,040 --> 00:48:43,370 yang merupakan jenis apa yang kita lakukan di sini implisit dengan melakukan dot slash fib 45. 985 00:48:43,370 --> 00:48:48,690 >> Dan kemudian dalam hal ini, kita seperti dikenakan biaya yang sama proses. 986 00:48:48,690 --> 00:48:50,710 Jadi ini hanya satu hal yang dapat Anda lakukan. 987 00:48:50,710 --> 00:48:52,600 Tapi hanya untuk menunjukkan semacam ini berjalan. 988 00:48:52,600 --> 00:48:57,120 Dan pembicaraan ini hanya benar-benar ditujukan untuk menyajikan program semacam ini sebagai 989 00:48:57,120 --> 00:49:00,710 cara untuk menunjukkan perspektif yang berbeda pada bagaimana merancang server seperti itu. 990 00:49:00,710 --> 00:49:08,300 Jadi ini berjalan, dan kemudian jika saya lakukan ini lagi, aku punya dua ID proses. 991 00:49:08,300 --> 00:49:10,320 >> Mari kita bicara tentang hal untuk menunjukkan. 992 00:49:10,320 --> 00:49:11,980 Jadi melihat bahwa mereka secara bertahap. 993 00:49:11,980 --> 00:49:12,700 Itu keren. 994 00:49:12,700 --> 00:49:15,140 Karena itu 27.122 sebelumnya. 995 00:49:15,140 --> 00:49:18,580 Tapi perhatikan sekarang, mereka kembali di sekitar waktu yang sama. 996 00:49:18,580 --> 00:49:23,960 >> Dan sekarang, pertanyaan yang bagus untuk bertanya tentang mengapa adalah bahwa kasus ini, pekerjaan yang 997 00:49:23,960 --> 00:49:27,590 adalah sekarang untuk membuat semacam hal-hal ini jenis bermain adil dengan masing-masing 998 00:49:27,590 --> 00:49:31,350 lain, ini dua contoh dot slash fib 45 bahwa aku berlari 999 00:49:31,350 --> 00:49:32,880 atau Node berlari? 1000 00:49:32,880 --> 00:49:36,940 Siapa yang semacam membuatnya adil bahwa mereka berdua mendapatkan jenis skor run time? 1001 00:49:36,940 --> 00:49:42,900 1002 00:49:42,900 --> 00:49:44,220 >> AUDIENCE: [Tak terdengar]. 1003 00:49:44,220 --> 00:49:44,620 >> KEVIN Schmid: Ya. 1004 00:49:44,620 --> 00:49:49,740 Jadi pada dasarnya, ketika saya melakukan dot slash fib 45 atau sesuatu seperti itu, sekarang 1005 00:49:49,740 --> 00:49:53,750 jenis hingga sistem operasi untuk menangani runtime dari program-program tersebut. 1006 00:49:53,750 --> 00:49:56,920 Dan sekarang mereka dapat menjadwalkan pada CPU yang berbeda atau 1007 00:49:56,920 --> 00:49:58,330 dapat jadwal mereka. 1008 00:49:58,330 --> 00:50:01,870 Hal ini dapat mengiris waktu yang CPU mendapatkannya atau bahwa mereka mendapatkan 1009 00:50:01,870 --> 00:50:03,330 untuk berjalan di satu CPU. 1010 00:50:03,330 --> 00:50:05,620 Jadi itulah ide di balik itu. 1011 00:50:05,620 --> 00:50:07,220 Apakah itu masuk akal untuk semua orang? 1012 00:50:07,220 --> 00:50:10,950 Jadi sekarang Node tidak benar-benar memainkan bagian dalam membagi tugas-tugas ini. 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 >> Sehingga hampir untuk contoh. 1016 00:50:17,840 --> 00:50:23,370 Saya hanya ingin menunjukkan satu hal lagi karena banyak sejauh ini telah 1017 00:50:23,370 --> 00:50:27,350 tidak benar-benar super praktis dalam beberapa kasus. 1018 00:50:27,350 --> 00:50:30,970 Aku bisa membayangkan pulang ke rumah setelah ini berbicara dan sesuatu dan berkata seperti, 1019 00:50:30,970 --> 00:50:35,710 baik saya agak keluar dari pembicaraan bahwa Aku bisa membuat Fibonacci Server untuk 1020 00:50:35,710 --> 00:50:37,360 tugas akhir saya. 1021 00:50:37,360 --> 00:50:40,770 Jadi di sini hanya semacam satu contoh lagi yang diharapkan akan menjadi - 1022 00:50:40,770 --> 00:50:44,620 mungkin tidak, tapi mungkin - sedikit lebih semacam relevan dengan tugas akhir dan 1023 00:50:44,620 --> 00:50:46,440 berpikir ke depan untuk hal-hal seperti itu. 1024 00:50:46,440 --> 00:50:48,870 >> Jadi ini adalah chat.js. 1025 00:50:48,870 --> 00:50:52,290 Jadi ini semacam seperti beberapa sampel kode sisi server yang dapat Anda gunakan untuk 1026 00:50:52,290 --> 00:50:55,700 mendirikan sebuah obrolan kecil server seperti Anda mungkin telah melihat pada 1027 00:50:55,700 --> 00:50:56,630 Facebook Chat atau apa pun. 1028 00:50:56,630 --> 00:50:59,990 Jadi saya tidak mengatakan ini adalah seperti Facebook Chatting, tapi ini adalah jenis 1029 00:50:59,990 --> 00:51:06,230 seperti baik - mungkin tidak baik, tapi mungkin baik - titik awal untuk mengobrol 1030 00:51:06,230 --> 00:51:08,560 server untuk website Anda untuk tugas akhir. 1031 00:51:08,560 --> 00:51:11,040 Jadi mari kita lihat apa yang dilakukannya. 1032 00:51:11,040 --> 00:51:15,500 >> Jadi kita mendapatkan hal yang khusus ini di atas, ini var SIO 1033 00:51:15,500 --> 00:51:17,050 sama membutuhkan Socket.IO. 1034 00:51:17,050 --> 00:51:20,280 Jadi ini adalah hal lain yang tidak benar-benar datang dibundel dengan 1035 00:51:20,280 --> 00:51:22,300 Node tetapi Anda dapat menginstalnya. 1036 00:51:22,300 --> 00:51:23,480 Ini adalah modul Node. 1037 00:51:23,480 --> 00:51:25,670 Jadi itu hanya seperti beberapa ekstensi untuk Node. 1038 00:51:25,670 --> 00:51:29,220 >> SocketIO sebenarnya sangat agak dingin. 1039 00:51:29,220 --> 00:51:32,550 Ini adalah abstraksi yang pada dasarnya apa itu yaitu adalah memungkinkan Anda untuk 1040 00:51:32,550 --> 00:51:35,770 memiliki aliran komunikasi antara web 1041 00:51:35,770 --> 00:51:39,430 browser dan web server. 1042 00:51:39,430 --> 00:51:45,250 Jadi untuk sebagian besar sejauh ini, kami sudah kedua sangat cepat satu detik atau 1043 00:51:45,250 --> 00:51:48,790 komunikasi antara kedua web browser dan web server. 1044 00:51:48,790 --> 00:51:53,310 Jadi pada dasarnya pergi ke google.com, get barang-barang itu, mengirim kembali, dan kemudian 1045 00:51:53,310 --> 00:51:53,770 kita sudah selesai. 1046 00:51:53,770 --> 00:51:56,560 Kita tidak pernah berbicara lagi sampai jenis pengguna dalam sesuatu yang lain. 1047 00:51:56,560 --> 00:52:01,090 >> Tapi apa Socket.IO dan serupa hal - dan SocketIO sebenarnya adalah salah satu 1048 00:52:01,090 --> 00:52:03,940 dari hal-hal yang dibangun sebagai WebSocket yang merupakan semacam tersedia 1049 00:52:03,940 --> 00:52:06,440 sebagai bagian dari HTML5 - 1050 00:52:06,440 --> 00:52:09,620 yang memungkinkan Anda untuk memiliki ini melanjutkan dialog. 1051 00:52:09,620 --> 00:52:13,990 Dan ini sangat berguna dalam server obrolan semacam itu karena 1052 00:52:13,990 --> 00:52:17,390 jenis seperti dialog berkelanjutan di beberapa hal karena jika Anda mengobrol 1053 00:52:17,390 --> 00:52:21,540 dengan seseorang, kini Anda dapat hanya mengirim pesan bawah pipa, dan kemudian 1054 00:52:21,540 --> 00:52:23,940 server dapat mengirim pesan ke bawah pipa ke orang lain Anda 1055 00:52:23,940 --> 00:52:24,520 mengobrol dengan. 1056 00:52:24,520 --> 00:52:26,903 Dan kemudian Anda dapat memiliki ini pertukaran seperti itu. 1057 00:52:26,903 --> 00:52:30,590 1058 00:52:30,590 --> 00:52:32,850 >> Jadi itulah jenis apa SocketIO baik untuk. 1059 00:52:32,850 --> 00:52:38,400 Alasan bahwa SocketIO menggunakan WebSockets sebagai salah satu hal adalah bahwa di 1060 00:52:38,400 --> 00:52:43,980 Selain WebSockets just plain tua, juga melakukan beberapa trik pada dasarnya 1061 00:52:43,980 --> 00:52:45,610 membuat browser yang kompatibel. 1062 00:52:45,610 --> 00:52:50,040 Jadi browser seperti Internet Explorer sayangnya tidak mendukung WebSockets 1063 00:52:50,040 --> 00:52:50,810 langsung dari kotak. 1064 00:52:50,810 --> 00:52:55,290 Jadi menggunakan beberapa jenis lain keren rapi hal dengan Adobe Flash untuk memungkinkan 1065 00:52:55,290 --> 00:52:57,170 Anda memiliki dukungan browser lintas. 1066 00:52:57,170 --> 00:52:58,800 Jadi itu benar-benar berguna. 1067 00:52:58,800 --> 00:53:02,440 >> Dan sebenarnya, aku tahu aku jenis berjalan pada waktu di sini, tapi CS50 1068 00:53:02,440 --> 00:53:08,490 Diskusikan, apakah Anda pernah melihat sesuatu seperti, saya tidak tahu, jadi kosong dan begitu juga 1069 00:53:08,490 --> 00:53:11,030 membalas posting ini atau sesuatu seperti itu, fitur itu? 1070 00:53:11,030 --> 00:53:12,250 Itu SocketIO. 1071 00:53:12,250 --> 00:53:15,580 Jadi, ketika seseorang mulai mengetik di mendiskusikan kotak untuk membuat balasan atau 1072 00:53:15,580 --> 00:53:20,040 sesuatu, browser Anda tidak apa disebut di SocketIO memancarkan semacam 1073 00:53:20,040 --> 00:53:22,660 Acara yang mengatakan seseorang yang membalas posting ini. 1074 00:53:22,660 --> 00:53:26,110 >> Kemudian server mengatakan, OK, apa yang harus saya lakukan? 1075 00:53:26,110 --> 00:53:29,270 Nah sekarang saya harus memberitahu orang-orang lain yang berada di CS50 Diskusikan mencari 1076 00:53:29,270 --> 00:53:31,170 di posting ini bahwa seseorang yang menjawab. 1077 00:53:31,170 --> 00:53:34,190 Jadi itulah jenis apa SocketIO adalah baik untuk, ini melanjutkan jenis 1078 00:53:34,190 --> 00:53:35,930 aliran dialog. 1079 00:53:35,930 --> 00:53:37,250 OK. 1080 00:53:37,250 --> 00:53:40,060 >> Jadi apa yang saya miliki di sini - dan kami hanya akan mengabaikan berbagai koneksi 1081 00:53:40,060 --> 00:53:41,390 untuk sedikit - 1082 00:53:41,390 --> 00:53:43,080 apa yang saya lakukan adalah saya mendengarkan lagi. 1083 00:53:43,080 --> 00:53:46,880 Jadi itu hanya cara di Socket.IO adalah mengatakan mari kita mendengarkan pada port ini. 1084 00:53:46,880 --> 00:53:50,060 Dan kemudian saya melakukan ini pada koneksi. 1085 00:53:50,060 --> 00:53:53,360 Jadi itu hanya pada dasarnya Socket IO cara untuk mengatakan, ketika kita menerima 1086 00:53:53,360 --> 00:53:55,840 koneksi, saya ingin Anda untuk menjalankan kode ini. 1087 00:53:55,840 --> 00:53:59,870 >> Dan melihat bahwa alih-alih memiliki rec dan res berlalu di sana aku punya Socket. 1088 00:53:59,870 --> 00:54:03,260 Dan ide Socket ini pada dasarnya adalah ini hal yang dapat Anda menulis dan membaca 1089 00:54:03,260 --> 00:54:05,750 dari yang memiliki pengguna pesan mungkin. 1090 00:54:05,750 --> 00:54:10,700 Dan pesan yang akan Anda kirim bisa melalui Socket itu. 1091 00:54:10,700 --> 00:54:12,140 Apakah itu masuk akal? 1092 00:54:12,140 --> 00:54:14,490 Jadi hal ini terus. 1093 00:54:14,490 --> 00:54:17,820 >> Jadi apa yang saya lakukan adalah saya sebut Socket.emit. 1094 00:54:17,820 --> 00:54:20,330 Dan memancarkan membutuhkan cukup banyak dua argumen. 1095 00:54:20,330 --> 00:54:24,100 Argumen pertama adalah string hanya mewakili jenis 1096 00:54:24,100 --> 00:54:25,270 hal yang Anda memancarkan. 1097 00:54:25,270 --> 00:54:28,120 Jadi untuk kasus ini, saya sudah menggunakan string pesan baru ini. 1098 00:54:28,120 --> 00:54:32,670 Dan itu hanya pada dasarnya mengatakan bahwa jenis hal ini, apa yang saya 1099 00:54:32,670 --> 00:54:34,750 pengiriman, adalah pesan baru. 1100 00:54:34,750 --> 00:54:38,460 Jadi, Anda dapat mendengarkan jenis tertentu seperti pesan baru atau apa pun 1101 00:54:38,460 --> 00:54:39,960 dengan menggunakan dot pada. 1102 00:54:39,960 --> 00:54:44,570 >> Jadi koneksi dan pengguna dikirim ke sana, jika Anda melihat di mana kita sebut titik pada, 1103 00:54:44,570 --> 00:54:48,150 mereka adalah string lain yang mewakili jenis pesan pengguna. 1104 00:54:48,150 --> 00:54:52,060 Jadi pada dasarnya Anda dapat memiliki memancarkan ini salah satu jenis pesan tersebut, dan 1105 00:54:52,060 --> 00:54:55,520 kemudian melakukan sesuatu dalam menanggapi salah satu jenis pesan tersebut 1106 00:54:55,520 --> 00:54:57,640 >> Jadi aku memancarkan pesan baru ini. 1107 00:54:57,640 --> 00:55:00,540 Kita akan mengabaikan connections.push untuk kedua. 1108 00:55:00,540 --> 00:55:03,360 Tapi kemudian saya katakan, Socket.on pengguna dikirim. 1109 00:55:03,360 --> 00:55:07,540 Jadi sekarang itu jenis seperti ketika pengguna mengirimkan saya pesan, saya ingin 1110 00:55:07,540 --> 00:55:09,240 Anda untuk menjalankan kode ini. 1111 00:55:09,240 --> 00:55:12,080 Dan perhatikan bahwa fungsi anonim adalah mengambil dalam variabel ini 1112 00:55:12,080 --> 00:55:16,300 disebut data yang pada dasarnya akan memiliki pesan pengguna. 1113 00:55:16,300 --> 00:55:20,700 >> Jadi sekarang mari kita bicara tentang jenis koneksi array. 1114 00:55:20,700 --> 00:55:24,590 Jadi ini dirancang untuk chat client di mana pada dasarnya semua orang semacam di 1115 00:55:24,590 --> 00:55:25,950 chat sama kamar. 1116 00:55:25,950 --> 00:55:29,640 Jadi pada dasarnya, apa yang kita butuhkan untuk menjaga sekitar beberapa array pada dasarnya 1117 00:55:29,640 --> 00:55:33,170 mewakili semua orang mengobrol di beberapa cara, jika itu masuk akal. 1118 00:55:33,170 --> 00:55:33,340 Benar? 1119 00:55:33,340 --> 00:55:37,190 Karena kita perlu tahu siapa orang-orang begitu kami dapat mengirimkan mereka pesan 1120 00:55:37,190 --> 00:55:39,140 bahwa orang lain mengirimkan kepada kami. 1121 00:55:39,140 --> 00:55:44,440 >> Jadi apa kode ini tidak adalah ketika pengguna mengirim pesan - itulah jenis 1122 00:55:44,440 --> 00:55:45,300 acara - 1123 00:55:45,300 --> 00:55:47,120 kita akan menjalankan kode ini. 1124 00:55:47,120 --> 00:55:51,240 Dan apa yang kita lakukan adalah kita jalankan melalui ini array itu kita telah disebut koneksi. 1125 00:55:51,240 --> 00:55:54,390 Dan cukup banyak untuk setiap koneksi kecuali satu yang kita, itu 1126 00:55:54,390 --> 00:55:59,520 apa kode ini mengatakan, kami mengirim baru pesan dengan pesan terlampir 1127 00:55:59,520 --> 00:56:01,210 informasi. 1128 00:56:01,210 --> 00:56:04,880 >> Jadi jika Anda melihat di sini, apa yang saya lakukan ketika pengguna benar-benar membuat baru 1129 00:56:04,880 --> 00:56:08,560 koneksi Saya telah menambahkan dengan Metode JavaScript.push, ini adalah 1130 00:56:08,560 --> 00:56:12,100 pada dasarnya hanya mengatakan seperti menambahkan bahwa Socket sebagai nilai ke 1131 00:56:12,100 --> 00:56:13,900 koneksi array kita. 1132 00:56:13,900 --> 00:56:20,560 Jadi sekarang ketika kode ini berjalan, maka akan mengirim hal-hal tertentu kepada mereka 1133 00:56:20,560 --> 00:56:22,020 koneksi. 1134 00:56:22,020 --> 00:56:26,980 Jadi ini bisa menjadi titik awal yang baik untuk membuat server obrolan 1135 00:56:26,980 --> 00:56:28,250 atau sesuatu yang serupa. 1136 00:56:28,250 --> 00:56:33,315 >> Dan jenis hal yang keren adalah bahwa kode yang Anda lihat di sini untuk seperti dan 1137 00:56:33,315 --> 00:56:36,390 memancarkan dan hal-hal seperti itu adalah sama jenis kode JavaScript yang akan Anda 1138 00:56:36,390 --> 00:56:39,260 menulis dalam browser untuk berinteraksi dengan server. 1139 00:56:39,260 --> 00:56:42,480 Jadi itu sebabnya SocketIO adalah jenis rapi dan berguna dengan cara itu. 1140 00:56:42,480 --> 00:56:45,680 1141 00:56:45,680 --> 00:56:49,250 >> Oh dan satu hal lagi cepat. 1142 00:56:49,250 --> 00:56:55,970 Ada tugas akhir CS50 tahun lalu yang pada dasarnya dilaksanakan chat 1143 00:56:55,970 --> 00:56:57,840 server Node.js. 1144 00:56:57,840 --> 00:57:01,350 Saya pikir itu Harvardchats.org tapi aku tidak - 1145 00:57:01,350 --> 00:57:02,940 OK. 1146 00:57:02,940 --> 00:57:06,190 Saya tidak yakin apa URL, tapi Saya dapat mengirim yang keluar setelah itu. 1147 00:57:06,190 --> 00:57:09,260 Tapi itu semacam dingin apa Anda dapat melakukannya dengan Node.js. 1148 00:57:09,260 --> 00:57:14,680 >> Jadi saya berharap, secara umum, kalian memiliki pengertian yang baik dari apa Node.js berguna 1149 00:57:14,680 --> 00:57:17,870 dan bagaimana Anda mungkin dapat diterapkan untuk tugas akhir Anda. 1150 00:57:17,870 --> 00:57:21,050 Saya akan mengirimkan lagi sumber daya bersama dengan ini. 1151 00:57:21,050 --> 00:57:23,170 Dan terima kasih untuk datang. 1152 00:57:23,170 --> 00:57:23,610 Terima kasih. 1153 00:57:23,610 --> 00:57:27,168 >> [Tepuk Tangan]