1 00:00:00,000 --> 00:00:08,350 2 00:00:08,350 --> 00:00:09,710 >> KEVIN Schmid: Hello semua orang. 3 00:00:09,710 --> 00:00:12,640 Selamat datang ke seminar CS50 yang pada Node.js. 4 00:00:12,640 --> 00:00:13,955 Nama saya Kevin. 5 00:00:13,955 --> 00:00:15,580 Saya TF CS50. 6 00:00:15,580 --> 00:00:17,650 Dan saya jenis seperti benar-benar teruja mengenai seminar ini. 7 00:00:17,650 --> 00:00:20,430 Saya rasa Node.js adalah sangat sejuk. 8 00:00:20,430 --> 00:00:24,200 Saya berharap seminar ini boleh digunakan sebagai yang baik, saya rasa, batu loncatan untuk 9 00:00:24,200 --> 00:00:26,380 beberapa projek-projek akhir anda jika anda berminat untuk 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 jenis memulakan seminar kira oleh hanya bercakap tentang sedikit daripada 13 00:00:33,320 --> 00:00:36,970 jenis berskala latar belakang perspektif Node.js, dan kemudian 14 00:00:36,970 --> 00:00:39,240 kami akan berpindah ke beberapa contoh kod. 15 00:00:39,240 --> 00:00:42,340 Dan saya akan mempunyai kod di laman web, dan anda boleh melihat kod. 16 00:00:42,340 --> 00:00:45,475 Dan selepas seminar itu, saya akan menyusun bercakap tentang bagaimana anda boleh menyediakan 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 memulakan. 20 00:00:49,760 --> 00:00:53,700 Jadi saya rasa saya hanya mahu bercakap tentang pelayan web, benar-benar, pertama. 21 00:00:53,700 --> 00:00:59,730 Dan untuk memulakan perbincangan ini, saya pada dasarnya mempunyai gambarajah 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 pelanggan, seperti web anda penyemak imbas atau seperti pelanggan matlamat anda atau 24 00:01:08,510 --> 00:01:11,340 sesuatu seperti itu, dan pelayan web. 25 00:01:11,340 --> 00:01:15,150 Jadi ini jenis kelihatan serupa dengan gambar yang anda lihat dalam syarahan mengenai 26 00:01:15,150 --> 00:01:19,270 Rabu di mana pada asasnya kami mempunyai beberapa proses pelanggan seperti Google Chrome. 27 00:01:19,270 --> 00:01:22,980 >> Dan kemudian satu langkah adalah pelanggan menghantar permintaan. 28 00:01:22,980 --> 00:01:27,510 Jadi yang boleh menjadi sesuatu yang seperti juga mari kita melawat, saya tidak tahu, CS50.net. 29 00:01:27,510 --> 00:01:29,320 Oleh itu, kita mengeluarkan permintaan itu. 30 00:01:29,320 --> 00:01:34,280 Dan adakah sesiapa ingat nama protokol yang menentukan cara yang 31 00:01:34,280 --> 00:01:35,610 permintaan hendaklah distrukturkan? 32 00:01:35,610 --> 00:01:36,382 Yep. 33 00:01:36,382 --> 00:01:37,650 >> PENONTON: [didengar]. 34 00:01:37,650 --> 00:01:38,150 >> KEVIN Schmid: Tepat sekali. 35 00:01:38,150 --> 00:01:40,100 Jadi ia seperti HTTP, bukan? 36 00:01:40,100 --> 00:01:44,720 Jadi, pada asasnya spesifikasi untuk bagaimana permintaan yang benar-benar perlu dibentangkan 37 00:01:44,720 --> 00:01:47,450 keluar, kerana pada akhir hari, permintaan yang benar-benar sama seperti yang 38 00:01:47,450 --> 00:01:50,240 tali yang pada dasarnya kata saya mahu ini. 39 00:01:50,240 --> 00:01:53,580 Dan spesifikasi yang untuk yang HTTP. 40 00:01:53,580 --> 00:01:55,270 Jadi itu seperti protokol. 41 00:01:55,270 --> 00:01:57,920 >> Demikian maka server menerima permintaan itu. 42 00:01:57,920 --> 00:02:01,610 Jadi anda lelaki itu mempunyai pelayan web dipasang perkakas CS50 itu. 43 00:02:01,610 --> 00:02:02,460 Ia Apache. 44 00:02:02,460 --> 00:02:06,230 Dan minggu ini apabila anda bekerja pada masalah ditetapkan tujuh, anda akan benar-benar bekerja 45 00:02:06,230 --> 00:02:08,160 dengan pelayan web. 46 00:02:08,160 --> 00:02:12,380 Jadi server menerima permintaan itu, dan maka ia perlu jenis calar yang 47 00:02:12,380 --> 00:02:15,090 kepala dan berkata seperti juga apa yang yang saya lakukan dengan ini? 48 00:02:15,090 --> 00:02:20,060 >> Jadi berdasarkan apa yang ia memutuskan untuk berbuat demikian, maka ia mungkin perlu menghubungi beberapa jenis 49 00:02:20,060 --> 00:02:20,730 sumber. 50 00:02:20,730 --> 00:02:23,700 Dan sumber yang boleh menjadi banyak perkara yang berbeza. 51 00:02:23,700 --> 00:02:26,810 Untuk satu, ia boleh menjadi hanya seperti fail HTML statik. 52 00:02:26,810 --> 00:02:29,820 Jadi ia hanya boleh menjadi seperti beberapa HTML yang seperti untuk 53 00:02:29,820 --> 00:02:31,100 laman web peribadi anda. 54 00:02:31,100 --> 00:02:35,360 Ia boleh menjadi fail statik seperti imej atau seperti sebuah filem yang anda ada. 55 00:02:35,360 --> 00:02:37,660 Ia juga boleh perlu bercakap untuk beberapa jenis pangkalan data 56 00:02:37,660 --> 00:02:39,530 seperti pangkalan data MySQL. 57 00:02:39,530 --> 00:02:43,910 Jadi ia tidak sentiasa perlu berkomunikasi dengan sumber, tetapi dalam 58 00:02:43,910 --> 00:02:45,700 beberapa kes, ia boleh. 59 00:02:45,700 --> 00:02:47,800 >> Jadi maka apa yang ia akan lakukan selepas itu ia akan 60 00:02:47,800 --> 00:02:49,430 menghantar kembali sambutan. 61 00:02:49,430 --> 00:02:53,130 Dan tindak balas ini adalah juga dinyatakan oleh HTTP. 62 00:02:53,130 --> 00:02:54,830 Demikian maka pelanggan boleh menerimanya. 63 00:02:54,830 --> 00:02:56,740 Ia boleh pemedih mata selain ia dan memprosesnya. 64 00:02:56,740 --> 00:03:00,900 Dan kemudian anda mendapatkan laman web seperti Google atau CS50.net atau 65 00:03:00,900 --> 00:03:02,240 apa sahaja 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 asas yang kita akan berurusan dengan. 68 00:03:06,080 --> 00:03:08,770 Dan kita cukup banyak akan menjadi memberi tumpuan kepada bahagian ini 69 00:03:08,770 --> 00:03:10,640 interaksi, pelayan. 70 00:03:10,640 --> 00:03:10,990 OK. 71 00:03:10,990 --> 00:03:12,210 Sejuk. 72 00:03:12,210 --> 00:03:15,500 Sesiapa mempunyai sebarang soalan setakat ini? 73 00:03:15,500 --> 00:03:17,720 OK. 74 00:03:17,720 --> 00:03:22,430 >> Jadi seperti yang kita kata, pelayan web itu menerima permintaan HTTP ini dan kemudian mengeluarkan ini 75 00:03:22,430 --> 00:03:24,760 Sambutan HTTP. 76 00:03:24,760 --> 00:03:29,100 Dan seperti yang kita bercakap tentang sebelum ini, Perkakas CS50 web server Apache. 77 00:03:29,100 --> 00:03:32,490 Oleh itu, apabila anda semua bekerja di P ditetapkan tujuh, anda akan bekerja 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 mempunyai untuk benar-benar berkesan dengan Apache secara langsung terlalu banyak. 80 00:03:37,890 --> 00:03:41,920 Anda jenis konfigurasi Apache sedikit apabila anda menentukan tuan rumah maya atau 81 00:03:41,920 --> 00:03:44,970 tuan rumah v, dan kami akan mendapat dengan dalam sedikit. 82 00:03:44,970 --> 00:03:50,620 >> Tetapi pada dasarnya, web server Apache ditubuhkan untuk bekerja dengan PHP jenis 83 00:03:50,620 --> 00:03:51,730 keluar dari kotak. 84 00:03:51,730 --> 00:03:56,170 Jadi apa yang sebenarnya berlaku ialah apabila anda pergi untuk salah satu laman web anda seperti, katakan, 85 00:03:56,170 --> 00:04:00,360 tuan rumah tempatan slash index.php atau sesuatu, adalah pelayar anda menghantar yang 86 00:04:00,360 --> 00:04:04,330 permintaan, dan kemudian Apache sedang duduk sana dan angka kaitan dengan ia. 87 00:04:04,330 --> 00:04:08,840 Dan tindakan ini adalah untuk melaksanakan kod yang di index.php dan 88 00:04:08,840 --> 00:04:11,330 kemudian hantar dari belakang. 89 00:04:11,330 --> 00:04:15,640 Jadi ada itu. 90 00:04:15,640 --> 00:04:16,980 Oleh itu, kita semacam bercakap tentang perkara ini. 91 00:04:16,980 --> 00:04:21,990 Jadi ia hanya boleh menyampaikan suatu fail statik atau menjalankan beberapa kod PHP dan kemudian isu 92 00:04:21,990 --> 00:04:23,510 sambutan. 93 00:04:23,510 --> 00:04:27,670 >> Jadi maka soalan yang sama yang boleh datang up adalah dengan baik, bagaimana kita benar-benar menangani 94 00:04:27,670 --> 00:04:31,750 dengan mempunyai beberapa pengguna pada masa yang sama? 95 00:04:31,750 --> 00:04:36,930 Jadi bayangkan jika anda telah menulis web pelayan, jika anda mempunyai pelayan web yang 96 00:04:36,930 --> 00:04:39,900 anda cuba untuk menulis dalam sesuatu seperti C atau sesuatu seperti itu, 97 00:04:39,900 --> 00:04:45,150 pada dasarnya anda boleh berfikir tentang bagaimana ada boleh menjadi beberapa jenis kod yang 98 00:04:45,150 --> 00:04:49,330 akan menerima permintaan itu, tetapi kemudian ia melakukan semua kerja ini di atasnya. 99 00:04:49,330 --> 00:04:53,060 Ia mungkin perlu, contohnya, hubungi pangkalan data atau sesuatu seperti itu. 100 00:04:53,060 --> 00:04:53,300 Betul? 101 00:04:53,300 --> 00:04:56,010 Dan kemudian ia akan melakukan apa yang pemprosesan dan kemudian 102 00:04:56,010 --> 00:04:57,060 dihantar pulang sambutan. 103 00:04:57,060 --> 00:04:58,950 Jadi itu seperti yang tinggi gambaran tahap. 104 00:04:58,950 --> 00:05:04,210 >> Tetapi ia tidak segera jelas bagaimana anda boleh berbuat demikian supaya dua orang atau 105 00:05:04,210 --> 00:05:09,040 walaupun 1,000 orang boleh bekerja dengan anda pelayan web pada masa yang sama. 106 00:05:09,040 --> 00:05:14,880 Jadi penyelesaian yang menggunakan Apache dipanggil benang atau proses. 107 00:05:14,880 --> 00:05:16,770 Jadi anda mungkin pernah mendengar syarat-syarat ini sebelum ini. 108 00:05:16,770 --> 00:05:22,190 Tidak mengapa jika anda tidak mempunyai, tetapi hanya berfikir kira-kira benang atau proses sebagai cara untuk 109 00:05:22,190 --> 00:05:26,290 sistem operasi atau program pengguna atau sesuatu seperti itu atau pelayan web 110 00:05:26,290 --> 00:05:28,810 untuk jenis melaksanakan pelbagai perkara sekaligus. 111 00:05:28,810 --> 00:05:31,760 Jadi, anda mungkin telah mendengar istilah seperti benang pelaksanaan. 112 00:05:31,760 --> 00:05:34,140 Jadi ia adalah jenis seperti anda jenis multitasking. 113 00:05:34,140 --> 00:05:37,710 >> Dan jika anda lihat pada kotak anda komputer riba, atau sesuatu seperti itu, 114 00:05:37,710 --> 00:05:43,040 multicore, apa yang anda boleh lakukan ialah anda boleh menjalankan dua benang yang berbeza di berbeza 115 00:05:43,040 --> 00:05:46,700 bahagian CPU supaya mereka boleh sebenarnya berlaku pada masa yang sama. 116 00:05:46,700 --> 00:05:48,100 Jadi ini adalah benar-benar kuat. 117 00:05:48,100 --> 00:05:52,270 Dan ini adalah jenis ini Apache Penyelesaian kepada masalah ini. 118 00:05:52,270 --> 00:05:57,900 >> Jadi ada jenis seperti mana-mana isu-isu dengan pendekatan ini walaupun? 119 00:05:57,900 --> 00:05:59,870 Jadi saya rasa saya jenis menulis mereka di sana. 120 00:05:59,870 --> 00:06:03,440 Tetapi kedua-dua mereka bentuk menggunakan banyak memori. 121 00:06:03,440 --> 00:06:07,490 Ia sangat mahal untuk mewujudkan benang atau proses. 122 00:06:07,490 --> 00:06:11,750 >> Dan sebahagian daripada hujah adalah bahawa hanya seperti apabila anda menjalankan program C 123 00:06:11,750 --> 00:06:15,090 seperti utama anda dan kemudian bahawa panggilan fungsi yang lain, yang mempunyai 124 00:06:15,090 --> 00:06:16,520 beberapa jenis timbunan. 125 00:06:16,520 --> 00:06:19,910 Jadi benang juga memerlukan yang sama sekali timbunan berasingan yang 126 00:06:19,910 --> 00:06:21,220 boleh agak besar. 127 00:06:21,220 --> 00:06:25,170 Dan jika anda boleh bayangkan mempunyai tan pengguna di laman web anda, anda perlu 128 00:06:25,170 --> 00:06:26,280 banyak benang yang berbeza. 129 00:06:26,280 --> 00:06:28,230 Itu banyak susunan untuk mengurus dan mengekalkan. 130 00:06:28,230 --> 00:06:31,280 Jadi ia penggunaan memori yang besar. 131 00:06:31,280 --> 00:06:35,650 >> Dan kemudian, juga, katakan anda hanya mempunyai satu CPU, atau katakan anda mempunyai 132 00:06:35,650 --> 00:06:38,460 lebih benang daripada anda mereka multicores. 133 00:06:38,460 --> 00:06:38,730 Betul? 134 00:06:38,730 --> 00:06:43,280 Jadi katakan anda mempunyai 10 benang dan anda hanya mempunyai lima CPU. 135 00:06:43,280 --> 00:06:46,260 Anda jenis perlu melakukan perkara ini di mana anda bertukar-tukar antara semasa 136 00:06:46,260 --> 00:06:49,090 satu yang berjalan kerana anda tidak boleh menjalankan semua 10 sekaligus. 137 00:06:49,090 --> 00:06:50,980 Dan itu dipanggil suis konteks. 138 00:06:50,980 --> 00:06:54,260 Dan istilah yang benar-benar mempunyai beberapa konteks yang berbeza, tetapi mari kita hanya 139 00:06:54,260 --> 00:06:56,620 menganggapnya sebagai beralih antara dua benang. 140 00:06:56,620 --> 00:06:59,730 Yang boleh agak mahal kerana asasnya apa yang anda perlu lakukan adalah anda 141 00:06:59,730 --> 00:07:03,340 perlu berhenti apa yang anda lakukan, simpan keadaan yang thread berjalan, dan 142 00:07:03,340 --> 00:07:05,440 kemudian bertukar ke tempat lain. 143 00:07:05,440 --> 00:07:09,420 >> Begitu juga semua orang jenis 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 adakah anda mempunyai soalan? 146 00:07:13,840 --> 00:07:14,376 OK. 147 00:07:14,376 --> 00:07:15,070 Sejuk. 148 00:07:15,070 --> 00:07:18,090 Sesiapa mempunyai apa-apa soalan? 149 00:07:18,090 --> 00:07:19,620 OK. 150 00:07:19,620 --> 00:07:26,720 >> Jadi, jika kita mengambil langkah ke belakang untuk satu saat, ada jenis seperti 151 00:07:26,720 --> 00:07:30,350 pemerhatian yang kita boleh membuat kira-kira banyak aplikasi web. 152 00:07:30,350 --> 00:07:34,810 Dan itu benar-benar bahawa banyak daripada mereka sebenarnya tidak berbuat demikian banyak berguna 153 00:07:34,810 --> 00:07:37,140 bekerja dalam benang. 154 00:07:37,140 --> 00:07:41,170 Jadi sesiapa telah bermula pada P ditetapkan tujuh pada semua? 155 00:07:41,170 --> 00:07:45,650 Jadi yang anda mahu mungkin menggambarkan beberapa bahagian? 156 00:07:45,650 --> 00:07:47,850 Adakah anda bekerja pada login atau sesuatu seperti itu? 157 00:07:47,850 --> 00:07:49,330 >> PENONTON: No 158 00:07:49,330 --> 00:07:49,780 >> KEVIN Schmid: OK. 159 00:07:49,780 --> 00:07:50,150 Jangan sekali-kali fikiran. 160 00:07:50,150 --> 00:07:50,900 Maaf. 161 00:07:50,900 --> 00:07:55,790 Tetapi pada dasarnya, dalam P set, anda akan membuat banyak jenis 162 00:07:55,790 --> 00:07:59,760 pertanyaan kepada pangkalan data untuk mendapatkan beberapa maklumat daripada pangkalan data itu. 163 00:07:59,760 --> 00:08:03,330 Dan apa kod anda akan lakukan, apa proses Apache atau 164 00:08:03,330 --> 00:08:06,030 yang Apache thread akan melakukan semasa ia menghubungi 165 00:08:06,030 --> 00:08:08,990 pangkalan data adalah ia jenis akan menjadi duduk di sana dan ia akan menjadi 166 00:08:08,990 --> 00:08:12,130 menunggu pangkalan data untuk menjawab. 167 00:08:12,130 --> 00:08:16,290 >> Sekarang mungkin tidak bunyi seperti yang besar berurusan kerana pangkalan data adalah pada anda 168 00:08:16,290 --> 00:08:18,240 Perkakas CS50, bukan? 169 00:08:18,240 --> 00:08:22,930 Tetapi ada beberapa jenis rangkaian Latency sana kerana kini web 170 00:08:22,930 --> 00:08:26,830 pelayan mempunyai untuk mengeluarkan permintaan sendiri untuk pangkalan data untuk berkomunikasi dengan 171 00:08:26,830 --> 00:08:29,520 pangkalan data dan kemudian mendapatkan bahawa maklumat kembali. 172 00:08:29,520 --> 00:08:33,190 Jadi sekarang ia seperti juga menunggu saya, saya akan pergi mendapatkan sesuatu dari 173 00:08:33,190 --> 00:08:35,770 pangkalan data dan kemudian ada yang banyak menunggu berlaku. 174 00:08:35,770 --> 00:08:36,870 Adakah ini masuk akal? 175 00:08:36,870 --> 00:08:38,580 >> Dan bagi sesetengah perkara ia bukan yang buruk. 176 00:08:38,580 --> 00:08:41,950 Jika ini ada, sebagai contoh, akses memori, itu tidak suka 177 00:08:41,950 --> 00:08:44,100 dahsyat saya / O kependaman. 178 00:08:44,100 --> 00:08:47,110 Dan apabila saya berkata, I / O kependaman, apa yang saya merujuk kepada adalah seperti apa-apa jenis seperti 179 00:08:47,110 --> 00:08:48,290 output input. 180 00:08:48,290 --> 00:08:52,950 Tetapi untuk mengakses fail pada cakera, seperti jika saya mahu berkhidmat kepada HTML statik 181 00:08:52,950 --> 00:08:57,850 memfailkan yang pada laman web saya atau sesuatu seperti itu, saya jenis perlu 182 00:08:57,850 --> 00:09:02,310 berhenti untuk sedikit, membaca fail yang dari cakera, dan kemudian di 183 00:09:02,310 --> 00:09:04,400 proses yang saya menunggu. 184 00:09:04,400 --> 00:09:06,700 Saya tidak melakukan kerja yang berguna. 185 00:09:06,700 --> 00:09:11,270 >> Ini tidak benar segala-galanya, tetapi ia adalah perkara biasa dalam aplikasi seperti P set 186 00:09:11,270 --> 00:09:13,960 tujuh dan banyak aplikasi yang anda tidak 187 00:09:13,960 --> 00:09:15,440 sebenarnya melakukan pemikiran banyak. 188 00:09:15,440 --> 00:09:19,090 Dan apabila saya mengatakan berfikir, saya maksudkan seperti kerja pengiraan. 189 00:09:19,090 --> 00:09:23,270 Kerja supaya pengiraan boleh menjadi sesuatu yang seperti, katakan, anda mahu 190 00:09:23,270 --> 00:09:26,590 menulis pelayan web yang hanya dikira nombor Fibonacci ke-n. 191 00:09:26,590 --> 00:09:29,300 Itu tidak bunyi seperti terutamanya pelayan web yang menyeronokkan. 192 00:09:29,300 --> 00:09:34,220 Seperti saya tidak akan mengharapkan laman web yang menjadi Facebook akan datang, tetapi itu adalah beberapa 193 00:09:34,220 --> 00:09:35,610 jenis kerja pengiraan. 194 00:09:35,610 --> 00:09:39,570 >> Dan anda boleh bayangkan bahawa dengan menggantikan beberapa jenis lain yang menarik 195 00:09:39,570 --> 00:09:43,070 kerja pengiraan. 196 00:09:43,070 --> 00:09:46,050 Katakan anda telah menulis sesuatu yang dikira darjah 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 Supaya tidak melibatkan beberapa jenis pengiraan, bukan? 199 00:09:51,860 --> 00:09:56,630 Dan itupun, untuk berbuat yang anda masih mempunyai untuk melakukan banyak menunggu untuk mungkin 200 00:09:56,630 --> 00:09:59,550 anda mempunyai untuk query pangkalan data untuk melihat sehingga siapa yang berkawan 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 yang jenis tanggapan kerja-kerja pengiraan. 203 00:10:03,510 --> 00:10:05,260 Adakah ini masuk akal? 204 00:10:05,260 --> 00:10:08,258 Adakah sesiapa mempunyai apa-apa soalan? 205 00:10:08,258 --> 00:10:11,960 >> Oh dan saya rasa saya meletakkan pelayan chat terdapat kerana pelayan chat adalah jenis 206 00:10:11,960 --> 00:10:13,240 satu lagi contoh yang baik ini. 207 00:10:13,240 --> 00:10:15,250 Satu pelayan chat tidak mempunyai untuk melakukan pemikiran banyak. 208 00:10:15,250 --> 00:10:18,350 Ia hanya perlu menunggu orang ramai menghantar mesej dan kemudian apabila 209 00:10:18,350 --> 00:10:19,800 mereka, menghantar 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 menggulung lagi, Apache dan pelayan web yang sama seperti yang garpu 213 00:10:28,180 --> 00:10:31,470 banyak benang dan proses yang boleh jenis membazir. 214 00:10:31,470 --> 00:10:37,530 Jadi saya rasa soalan yang mungkin datang dari yang kita perlu mempunyai 215 00:10:37,530 --> 00:10:39,610 pelbagai benang dan proses? 216 00:10:39,610 --> 00:10:41,890 Bagaimana jika kita hanya mempunyai satu? 217 00:10:41,890 --> 00:10:45,710 >> Jadi mari kita jenis gambaran yang apa ini akan kelihatan seperti. 218 00:10:45,710 --> 00:10:47,810 Jadi mari kita menggunakan hanya satu thread. 219 00:10:47,810 --> 00:10:48,660 OK? 220 00:10:48,660 --> 00:10:52,790 Jadi bayangkan ini dengan satu thread. 221 00:10:52,790 --> 00:10:56,600 >> Mari kita andaikan kita tidak benar-benar melakukan yang lebih berguna - dan apabila saya mengatakan 222 00:10:56,600 --> 00:10:59,450 berguna, yang saya maksudkan kerja pengiraan - 223 00:10:59,450 --> 00:11:01,130 dalam mereka pelbagai benang sebelum ini. 224 00:11:01,130 --> 00:11:04,180 Jadi mari kita jenis menyatukan segala-galanya ke dalam satu thread. 225 00:11:04,180 --> 00:11:07,780 Jadi apa jika kita mempunyai satu thread yang seumpama itu hanya pergi sekitar dalam gelung dan 226 00:11:07,780 --> 00:11:10,880 sentiasa cek melakukan sesuatu baru berlaku. 227 00:11:10,880 --> 00:11:15,130 Sebagai contoh, sesuatu yang baru berlaku bermakna saya mendapat sesuatu kembali dari 228 00:11:15,130 --> 00:11:19,310 pangkalan data, atau seseorang yang dihantar saya permintaan HTTP baru. 229 00:11:19,310 --> 00:11:22,290 Jadi mereka adalah jenis acara yang berlaku, bukan? 230 00:11:22,290 --> 00:11:26,130 >> Kemudian apa yang boleh saya lakukan apabila mereka yang baru perkara yang berlaku adalah dalam thread yang sama 231 00:11:26,130 --> 00:11:30,120 pelaksanaan, thread ini tunggal pelaksanaan, yang boleh saya hubungi beberapa kod yang 232 00:11:30,120 --> 00:11:32,410 akan mengendalikan perkara yang tertentu. 233 00:11:32,410 --> 00:11:36,640 Sebagai contoh, jika saya mendapat sesuatu kembali dari pangkalan data, saya boleh berjalan saya 234 00:11:36,640 --> 00:11:40,960 sebahagian kecil pengiraan itu yang sebenarnya hanya menyediakan perkara untuk 235 00:11:40,960 --> 00:11:42,620 menghantar kembali kepada pengguna. 236 00:11:42,620 --> 00:11:46,710 Begitu juga yang jenis masuk akal? 237 00:11:46,710 --> 00:11:49,940 >> Tetapi apa yang benar-benar yang implikasi ini? 238 00:11:49,940 --> 00:11:50,660 Betul? 239 00:11:50,660 --> 00:11:53,730 Kerana kita telah ditulis banyak kod yang - 240 00:11:53,730 --> 00:11:58,330 dan saya hanya akan melompat ke hadapan dalam slaid jika itu OK. 241 00:11:58,330 --> 00:12:00,930 Jadi, jika anda tidak keberatan, saya hanya akan mengambil langkah ke belakang. 242 00:12:00,930 --> 00:12:03,410 Jadi ini jenis perkara yang dipanggil gelung acara. 243 00:12:03,410 --> 00:12:04,070 OK? 244 00:12:04,070 --> 00:12:07,240 Dan ia adalah jenis asas Idea di sebalik Node.js. 245 00:12:07,240 --> 00:12:11,240 >> Jadi apa Node.js adalah benar-benar melakukan sebagai web pelayan ada thread tunggal 246 00:12:11,240 --> 00:12:14,850 yang pada dasarnya akan di sekitar dalam gelung seperti manakala satu jenis di bawah 247 00:12:14,850 --> 00:12:18,510 hud Node.js itulah sentiasa memeriksa, adakah kita menerima sesuatu yang baru? 248 00:12:18,510 --> 00:12:22,720 Dan kemudian ia akan berjalan pengendali yang anda tetapkan. 249 00:12:22,720 --> 00:12:26,720 Tetapi satu soalan yang baik untuk ditanya ialah, bagaimana kita boleh membuat ini berlaku 250 00:12:26,720 --> 00:12:28,090 dengan perkara-perkara yang sedia ada? 251 00:12:28,090 --> 00:12:32,440 >> Jadi saya meletakkan baris kod C di sini bahawa pada dasarnya kelihatan seperti ia membuka 252 00:12:32,440 --> 00:12:33,060 memfailkan, bukan? 253 00:12:33,060 --> 00:12:36,090 Saya Dia hanya keluar dengan album. 254 00:12:36,090 --> 00:12:39,600 Jadi saya terpaksa membuka beliau fail baru. 255 00:12:39,600 --> 00:12:43,810 Jadi cara kod C kami untuk beroperasi - 256 00:12:43,810 --> 00:12:47,890 dan saya rasa sebab saya memilih fail adalah kerana ini adalah jenis setakat 257 00:12:47,890 --> 00:12:52,000 kerja I / O yang kita lakukan pada C dalam rasa yang ada output input. 258 00:12:52,000 --> 00:12:55,070 Oleh itu, kita panggil kod ini yang tidak f ini terbuka. 259 00:12:55,070 --> 00:12:59,370 Dan kemudian pada baris berikutnya kami program, kita kini boleh bekerja dengan f. 260 00:12:59,370 --> 00:13:02,710 >> Jadi ini akan menjadi satu contoh sesuatu itu seperti segerak atau 261 00:13:02,710 --> 00:13:06,850 menyekat kerana pada baris pertama ada kita menunggu sehingga kita 262 00:13:06,850 --> 00:13:08,110 mendapatkan fail terbuka. 263 00:13:08,110 --> 00:13:12,260 Jadi pada baris kedua, kita tahu bahawa kita boleh bekerja dengan f, tetapi ini bermakna bahawa 264 00:13:12,260 --> 00:13:16,240 yang baris kedua tidak dapat menjalankan sehingga baris pertama dilakukan. 265 00:13:16,240 --> 00:13:17,760 Adakah ini masuk akal? 266 00:13:17,760 --> 00:13:20,890 >> Jadi ini akan menjadi tidak baik untuk meletakkan dalam pengendali peristiwa. 267 00:13:20,890 --> 00:13:23,920 Dan sebab bagi yang demikian ialah jenis ini menunggu, bukan? 268 00:13:23,920 --> 00:13:26,500 Jadi ini akan kembali kita kembali untuk perkara yang sama. 269 00:13:26,500 --> 00:13:29,470 Dan sekarang kita tidak akan tidak mempunyai faedah berganda benang atau 270 00:13:29,470 --> 00:13:32,390 proses kerana kami mendapat satu thread di Node.js. 271 00:13:32,390 --> 00:13:35,496 Adakah ini masuk akal untuk semua orang? 272 00:13:35,496 --> 00:13:35,990 >> PENONTON: Tunggu. 273 00:13:35,990 --> 00:13:36,980 Jadi apa yang penggantian bahan tersebut? 274 00:13:36,980 --> 00:13:37,840 >> KEVIN Schmid: Oh, jadi ya. 275 00:13:37,840 --> 00:13:39,560 Jadi saya akan dapat gantian. 276 00:13:39,560 --> 00:13:40,430 OK. 277 00:13:40,430 --> 00:13:42,960 Jadi apa jika kita mempunyai sesuatu yang kelihatan seperti ini? 278 00:13:42,960 --> 00:13:45,730 Jadi apa jika sekarang saya disunting f membuka sedikit? 279 00:13:45,730 --> 00:13:48,370 Jadi, saya lulus dalam yang sama dua hujah seperti sebelum ini. 280 00:13:48,370 --> 00:13:52,610 Saya masih suka lagu baru bahawa dia datang dengan. 281 00:13:52,610 --> 00:13:57,260 Tetapi saya lulus satu perkara yang ketiga yang adalah berubah-ubah ini dikenali sebagai kod. 282 00:13:57,260 --> 00:14:02,280 >> Tetapi apa yang sebenarnya kod dalam konteks ini? 283 00:14:02,280 --> 00:14:05,360 Adakah ia seperti C pembolehubah biasa? 284 00:14:05,360 --> 00:14:06,740 Fungsi Ia, betul? 285 00:14:06,740 --> 00:14:09,450 Dan yang mungkin sedikit pelik kerana Saya sebenarnya seperti sekarang lulus 286 00:14:09,450 --> 00:14:12,320 berfungsi ke dalam fungsi yang lain. 287 00:14:12,320 --> 00:14:14,400 >> Jadi pasangan perkara untuk diambil perhatian tentang perkara ini. 288 00:14:14,400 --> 00:14:17,145 Satu, saya tidak benar-benar memanggil fungsi kod. 289 00:14:17,145 --> 00:14:20,650 Jadi anda tidak melihat kod dengan paren kiri, paren betul. 290 00:14:20,650 --> 00:14:23,010 Saya hanya lulus dalam kod. 291 00:14:23,010 --> 00:14:26,990 Dan dalam C, apa ini akan benar-benar melakukan adalah memberi saya penunjuk dengan sebenar 292 00:14:26,990 --> 00:14:29,740 kod, dan maka ini boleh menjalankannya. 293 00:14:29,740 --> 00:14:33,350 Tetapi hanya berfikir tentang ia sebagai anda lulus kod untuk menjalankan apabila 294 00:14:33,350 --> 00:14:35,150 fail yang dibuka. 295 00:14:35,150 --> 00:14:41,430 >> Tetapi apa yang ini bermakna bahawa kini sepanjang program saya yang boleh melakukannya 296 00:14:41,430 --> 00:14:47,050 barangan lain, boleh terus melakukan lain barangan manakala kita, tidak benar-benar menunggu, tetapi 297 00:14:47,050 --> 00:14:50,890 hanya perlu di belakang kepala kita bahawa apabila fail terbuka, larian yang 298 00:14:50,890 --> 00:14:52,130 kod di bahagian atas. 299 00:14:52,130 --> 00:14:53,390 Adakah ini masuk akal? 300 00:14:53,390 --> 00:14:58,060 >> Dan sekarang idea di sebalik Node.js ialah kod dalam barangan do dengan f 301 00:14:58,060 --> 00:15:04,590 sebahagian harus cukup ringkas dan mudah dan terus-terang dan tidak benar-benar menjadi 302 00:15:04,590 --> 00:15:06,160 sangat computationally intensif. 303 00:15:06,160 --> 00:15:09,390 Ia mungkin perlu membuka fail lain, tetapi yang juga harus cukup cepat 304 00:15:09,390 --> 00:15:14,710 kerana ia hanya perlu mengatakan melakukan f lain membuka dan kemudian panggil kod lain ini. 305 00:15:14,710 --> 00:15:19,100 >> Jadi hanya menjadi benar-benar jelas, f yang membuka yang melakukan lagu Katy Perry baru 306 00:15:19,100 --> 00:15:23,060 dilakukan mp3, yang akan cukup banyak kembali dengan segera. 307 00:15:23,060 --> 00:15:27,820 Dan kemudian kita boleh terus melakukan barangan lain kerana semuanya itu sekarang f 308 00:15:27,820 --> 00:15:33,410 panggilan terbuka tidak akan memberitahu pada dasarnya asas f kod terbuka membuka fail ini 309 00:15:33,410 --> 00:15:36,020 dan apabila anda selesai membuka ini memfailkan atau apabila anda kembali, 310 00:15:36,020 --> 00:15:37,480 kemudian berjalan kod itu. 311 00:15:37,480 --> 00:15:39,540 Tetapi ia sebenarnya tidak menjalankan kod itu. 312 00:15:39,540 --> 00:15:41,815 Dan anda mempunyai soalan? 313 00:15:41,815 --> 00:15:46,180 >> PENONTON: Anda seolah-olah membayangkan beberapa kali bahawa menambah computationally 314 00:15:46,180 --> 00:15:50,545 kod intensif jenis memecahkan [Didengar] Sistem didorong. 315 00:15:50,545 --> 00:15:51,795 [Didengar]? 316 00:15:51,795 --> 00:15:54,450 317 00:15:54,450 --> 00:15:55,290 >> KEVIN Schmid: Itu satu soalan yang besar. 318 00:15:55,290 --> 00:15:59,280 Jadi saya benar-benar mempunyai satu contoh bagaimana anda boleh mengintegrasikan computationally 319 00:15:59,280 --> 00:16:01,090 kod intensif dalam sedikit. 320 00:16:01,090 --> 00:16:03,620 Oleh itu, apabila kita mendapatkan kepada contoh-contoh kod, Saya akan pastikan untuk menarik yang itu. 321 00:16:03,620 --> 00:16:04,700 Adakah 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 >> Apakah nama anda? 325 00:16:08,750 --> 00:16:10,620 >> PENONTON: Harun. 326 00:16:10,620 --> 00:16:14,830 >> KEVIN Schmid: Harun membawa sehingga yang sangat titik yang baik, yang adalah bahawa jika saya mempunyai 327 00:16:14,830 --> 00:16:18,560 beberapa kod intensif computationally dalam barangan yang dilakukan dengan f sebahagian, yang lain 328 00:16:18,560 --> 00:16:22,880 program saya tidak boleh berjalan dan tidak boleh mendengar untuk permintaan baru atau apa-apa sehingga semua 329 00:16:22,880 --> 00:16:24,270 barangan yang selesai. 330 00:16:24,270 --> 00:16:27,390 Jadi, jika saya menulis kod Nod secara umum melainkan jika kita melakukan sesuatu seperti saya akan 331 00:16:27,390 --> 00:16:33,060 untuk mencadangkan kemudian apabila kita melihat contoh kod, saya perlu memastikan bahawa 332 00:16:33,060 --> 00:16:36,060 kod saya tidak mengikat gelung acara ini. 333 00:16:36,060 --> 00:16:38,120 Adakah ini masuk akal? 334 00:16:38,120 --> 00:16:38,350 OK. 335 00:16:38,350 --> 00:16:40,040 Sejuk. 336 00:16:40,040 --> 00:16:47,090 >> Jadi Node.js menawarkan rangka kerja ini yang anda boleh membina acara ini didorong 337 00:16:47,090 --> 00:16:48,210 pelayan dengan. 338 00:16:48,210 --> 00:16:53,460 Jadi ia mempunyai ini jenis tak segerak bukan menyekat I / O perpustakaan, manakala 339 00:16:53,460 --> 00:16:56,800 perpustakaan C standard yang kita telah bekerja dengan, seperti jika anda hanya 340 00:16:56,800 --> 00:16:59,500 menggunakan mereka dengan cara yang sama bahawa kita telah telah menggunakan mereka dengan f membuka dan 341 00:16:59,500 --> 00:17:03,000 barangan, mereka menyekat kerana anda sebenarnya perlu menunggu 342 00:17:03,000 --> 00:17:04,470 fail untuk membuka. 343 00:17:04,470 --> 00:17:09,290 >> Tetapi Node.js memberikan anda itu dan ia pada dasarnya berkait dengan V8 Google 344 00:17:09,290 --> 00:17:14,030 JavaScript enjin yang adalah sebab bahawa Chrome adalah begitu puasa di pemprosesan 345 00:17:14,030 --> 00:17:17,040 JavaScript kerana ia mempunyai enjin V8 ini. 346 00:17:17,040 --> 00:17:22,460 Jadi saya tahu bahawa bunyi seperti salah satu daripada orang-orang WWDC pemaju persidangan perkara 347 00:17:22,460 --> 00:17:25,390 di mana mereka hanya membuang sekumpulan daripada perkara bilangan surat untuk pemproses 348 00:17:25,390 --> 00:17:26,910 dan mengatakan ini adalah begitu sejuk. 349 00:17:26,910 --> 00:17:34,200 Tetapi ia adalah sejuk yang mereka lakukan ini kerana JavaScript - 350 00:17:34,200 --> 00:17:37,010 atau mungkin jika anda tidak biasa dengan JavaScript lagi kerana kami tidak mempunyai 351 00:17:37,010 --> 00:17:38,180 kuliah di atasnya - 352 00:17:38,180 --> 00:17:40,770 tetapi JavaScript adalah ditafsirkan bahasa. 353 00:17:40,770 --> 00:17:41,970 >> Dan ini adalah satu titik penting juga. 354 00:17:41,970 --> 00:17:45,790 Jadi adalah penting untuk web kami pelayan untuk menjadi cepat, bukan? 355 00:17:45,790 --> 00:17:49,970 Dan jika kita hanya berjalan JavaScript kod yang telah ditafsirkan dengan hanya 356 00:17:49,970 --> 00:17:52,130 mana-mana jurubahasa lama ia mungkin perlahan. 357 00:17:52,130 --> 00:17:55,980 Jadi manfaat daripada mempunyai Nod ini jurubahasa V8 super cepat. 358 00:17:55,980 --> 00:17:59,580 Dan saya tidak tahu jika mereka menamakannya kerana tamparan V8 di dahi 359 00:17:59,580 --> 00:18:01,110 perkara, tetapi OK. 360 00:18:01,110 --> 00:18:07,070 >> Jadi saya telah menyediakan beberapa contoh di URL ini. 361 00:18:07,070 --> 00:18:10,490 Selepas seminar itu, saya jenis akan bercakap tentang bagaimana anda boleh mendapatkan set Nod 362 00:18:10,490 --> 00:18:13,570 sehingga, tetapi untuk sekarang, saya hanya jenis mahu untuk berjalan melalui beberapa contoh kod. 363 00:18:13,570 --> 00:18:17,250 Jadi jika anda mahu mengikut bersama-sama, semua kod sumber boleh didapati di sana. 364 00:18:17,250 --> 00:18:18,720 OK? 365 00:18:18,720 --> 00:18:22,280 >> Jadi saya akan meninggalkan URL ini untuk sedikit. 366 00:18:22,280 --> 00:18:24,440 Dan kemudian saya hanya akan menukar ke dalam terminal. 367 00:18:24,440 --> 00:18:29,670 368 00:18:29,670 --> 00:18:34,400 Adakah semua orang yang baik dengan URL ini? 369 00:18:34,400 --> 00:18:37,990 Jadi saya akan beralih ke terminal saya di sini. 370 00:18:37,990 --> 00:18:42,030 >> Jadi inilah kod yang Saya ada untuk hari ini. 371 00:18:42,030 --> 00:18:43,960 Mengapa tidak kita mulakan dengan simpler.js memfailkan? 372 00:18:43,960 --> 00:18:49,110 373 00:18:49,110 --> 00:18:52,100 Perkara yang lain adalah bahawa semua ini kod akan ditulis dalam 374 00:18:52,100 --> 00:18:56,660 JavaScript yang anda mungkin atau mungkin tidak biasa dengan. 375 00:18:56,660 --> 00:19:00,170 Saya rasa beberapa perkara adalah bahawa banyak kod JavaScript adalah jenis 376 00:19:00,170 --> 00:19:04,000 sintaks dan struktur hampir sama dengan C, jadi anda boleh jenis mengambilnya sebagai 377 00:19:04,000 --> 00:19:05,020 anda pergi bersama-sama. 378 00:19:05,020 --> 00:19:08,750 Saya cuba untuk menulis banyak daripada kod bermula untuk ini dengan cara itulah 379 00:19:08,750 --> 00:19:11,230 serupa dengan C supaya ia sedikit lebih senang dibaca. 380 00:19:11,230 --> 00:19:15,980 Tetapi seperti yang kita maju, saya akan menunjukkan beberapa tambahan 381 00:19:15,980 --> 00:19:18,980 ciri-ciri JavaScript yang adalah jenis sejuk. 382 00:19:18,980 --> 00:19:21,510 >> Tetapi mari kita lihat program sampel ini. 383 00:19:21,510 --> 00:19:24,820 Saya rasa segala-galanya memotong di sana. 384 00:19:24,820 --> 00:19:28,500 Saya hanya akan menetapkan sebenar yang cepat jika itu OK atau tidak. 385 00:19:28,500 --> 00:19:31,400 Saya tidak tahu apa ini akan lakukan. 386 00:19:31,400 --> 00:19:34,660 Adakah itu sedikit lebih baik? 387 00:19:34,660 --> 00:19:36,510 Bolehkah anda melihat var dan barangan? 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 pembolehubah 390 00:19:44,120 --> 00:19:44,800 pengisytiharan. 391 00:19:44,800 --> 00:19:49,870 Jadi untuk menyerlahkan apa yang akan ini kelihatan seperti dalam C. Jadi ini adalah sama seperti 392 00:19:49,870 --> 00:19:52,620 saya berkata indeks sama tiga atau sesuatu seperti itu. 393 00:19:52,620 --> 00:19:55,740 Jadi saya tidak menyatakan jenis. 394 00:19:55,740 --> 00:20:00,780 JavaScript tidak mempunyai jenis, tetapi ia sangat dinamik ditaip dalam alam semula jadi, jadi 395 00:20:00,780 --> 00:20:02,580 tidak memberikan apa-apa jenis di atasnya. 396 00:20:02,580 --> 00:20:03,670 Jadi ia hanya mempunyai var. 397 00:20:03,670 --> 00:20:05,320 Itu seperti berubah-ubah. 398 00:20:05,320 --> 00:20:05,920 OK? 399 00:20:05,920 --> 00:20:08,340 >> Dan saya menyeru HTTP ubah ini. 400 00:20:08,340 --> 00:20:12,480 Dan di sebelah kanan saya, saya mempunyai ungkapan yang saya mahu dimasukkan ke dalam HTTP. 401 00:20:12,480 --> 00:20:14,960 Dan ini mengatakan memerlukan 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 Ia sedikit lebih seperti berkuasa daripada termasuk dalam erti kata yang termasuk 404 00:20:22,940 --> 00:20:26,100 hanya akan copy dan paste header memfailkan untuk prototaip fungsi atau 405 00:20:26,100 --> 00:20:27,930 apa sahaja dengan definisi jenis. 406 00:20:27,930 --> 00:20:30,590 Tetapi memerlukan sebenarnya akan untuk membawa kita kod. 407 00:20:30,590 --> 00:20:33,280 >> Jadi, anda boleh menganggapnya sebagai mengimport beberapa kod. 408 00:20:33,280 --> 00:20:37,960 Jadi di suatu tempat di modul Node.js yang sistem atau apa sahaja, mereka mempunyai semua ini 409 00:20:37,960 --> 00:20:40,790 Kod pelayan HTTP jadi saya hanya semasa mengambil ia untuk saya sendiri 410 00:20:40,790 --> 00:20:43,130 kegunaan peribadi dalam program ini. 411 00:20:43,130 --> 00:20:44,260 OK? 412 00:20:44,260 --> 00:20:46,930 >> Jadi maka saya mempunyai fungsi ini yang saya tulis. 413 00:20:46,930 --> 00:20:50,330 Dan notis saya tidak perlu menentukan Jenis pulangan atau jenis yang 414 00:20:50,330 --> 00:20:51,140 hujah lagi. 415 00:20:51,140 --> 00:20:54,440 Jadi jenis longgar ditaip dalam bahawa jenis akal. 416 00:20:54,440 --> 00:20:57,290 Dua hujah bahawa ia mengambil dalam, permintaan dan tindak balas. 417 00:20:57,290 --> 00:21:02,080 Jadi, itu konsep jenis seperti biasa dari gambar yang kita mempunyai 418 00:21:02,080 --> 00:21:05,280 pada skrin sebelum ini kerana kita akan mendapat permintaan ini yang kita 419 00:21:05,280 --> 00:21:06,410 mempunyai daripada pengguna. 420 00:21:06,410 --> 00:21:09,170 Dan kemudian kita mempunyai tindak balas yang kita boleh menulis perkara yang perlu. 421 00:21:09,170 --> 00:21:15,060 >> Jadi baris pertama ini tidak res.writeHead 200 dan maka ini 422 00:21:15,060 --> 00:21:17,070 Jenis kandungan kosong teks. 423 00:21:17,070 --> 00:21:19,300 Jadi mari kita sekeping ini selain sedikit. 424 00:21:19,300 --> 00:21:22,340 Jadi mari kita hanya tertumpu kepada res.write untuk sedikit. 425 00:21:22,340 --> 00:21:28,420 Jadi menulis pada dasarnya, dan tulis kepala, hanya cara untuk jenis menulis 426 00:21:28,420 --> 00:21:29,960 perkara yang perlu sambutan. 427 00:21:29,960 --> 00:21:30,770 OK? 428 00:21:30,770 --> 00:21:36,230 Jadi menulis kepala, jika sesiapa masih ingat dari kuliah HTTP, adakah anda lelaki 429 00:21:36,230 --> 00:21:39,940 ingat tajuk di atas perkara HTTP? 430 00:21:39,940 --> 00:21:43,580 Jadi mengapa tidak saya hanya demo header cepat sebenar. 431 00:21:43,580 --> 00:21:44,640 Yang akan membantu? 432 00:21:44,640 --> 00:21:45,500 Atau perlu kita hanya jenis - 433 00:21:45,500 --> 00:21:46,070 OK. 434 00:21:46,070 --> 00:21:46,740 Pasti. 435 00:21:46,740 --> 00:21:52,340 >> Oleh itu, apabila pelayar anda pergi ke google.com atau sesuatu seperti itu, 436 00:21:52,340 --> 00:21:54,250 ada sebenarnya sedikit lebih - 437 00:21:54,250 --> 00:21:55,380 ini adalah seperti rahsia - 438 00:21:55,380 --> 00:21:58,340 ada seperti maklumat lebih sedikit yang datang melalui paip daripada hanya 439 00:21:58,340 --> 00:22:00,180 carian sedikit dan segala-galanya. 440 00:22:00,180 --> 00:22:03,550 Jadi untuk menunjukkan kepada anda ini, saya akan untuk menggunakan program yang dipanggil 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 anda boleh dijalankan pada baris arahan Mac OSX anda atau di 443 00:22:08,020 --> 00:22:09,830 perkakas atau apa sahaja. 444 00:22:09,830 --> 00:22:17,050 Dan jadi jika saya Curl HTTP google.com, Saya akan melihat HTML. 445 00:22:17,050 --> 00:22:21,230 Dan ini adalah, dalam keadilan, hanya HTML yang jenis memberitahu anda untuk 446 00:22:21,230 --> 00:22:24,695 mengubah hala ke www jika pelayar anda tidak secara automatik mengendalikan 447 00:22:24,695 --> 00:22:27,110 arah semula. 448 00:22:27,110 --> 00:22:33,390 >> Jadi ini adalah hanya HTML, tetapi saya akan untuk menambah Curl sempang ini saya henti. 449 00:22:33,390 --> 00:22:33,600 OK? 450 00:22:33,600 --> 00:22:35,600 Dan ini akan menunjukkan kepada saya pengepala. 451 00:22:35,600 --> 00:22:40,640 Jadi ini adalah juga maklumat yang datang melalui apabila saya mendapat tindak balas ini. 452 00:22:40,640 --> 00:22:41,260 OK? 453 00:22:41,260 --> 00:22:45,320 >> Jadi di bahagian atas, yang anda lihat ini HTTP 301 bergerak secara kekal. 454 00:22:45,320 --> 00:22:49,470 Dan ini adalah jenis penting kerana ini merujuk kepada kod status. 455 00:22:49,470 --> 00:22:53,750 Jadi di sini adalah 301 kod status, yang pada dasarnya hanya integer 456 00:22:53,750 --> 00:22:57,750 yang memberitahu penyemak imbas atau sesiapa yang membaca ini, jika anda berpura-pura bahawa 457 00:22:57,750 --> 00:23:01,460 anda pelayar dan yang anda lihat ini, pada dasarnya sekarang jika anda melihat penggunaan di 458 00:23:01,460 --> 00:23:04,960 itu dan anda melihat 301, anda tahu saya mempunyai melakukan sesuatu yang istimewa berdasarkan 459 00:23:04,960 --> 00:23:08,810 301, atau sesuatu yang istimewa berlaku berdasarkan 301. 460 00:23:08,810 --> 00:23:12,640 Jadi ia berkata berpindah secara kekal. 461 00:23:12,640 --> 00:23:17,700 >> Dan kemudian, pada dasarnya, kita mempunyai sekumpulan pasangan nilai utama. 462 00:23:17,700 --> 00:23:22,100 Oleh itu, kita mendapatkan lokasi adalah www.google.com. 463 00:23:22,100 --> 00:23:25,190 Dan kemudian jenis semua ini barangan lain, tetapi pada asasnya, apa yang lokasi yang 464 00:23:25,190 --> 00:23:29,662 kata 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 pelayar sekelip 466 00:23:33,800 --> 00:23:38,770 untuk sesaat dan kemudian mengarahkan anda segera kembali ke www.google.com. 467 00:23:38,770 --> 00:23:41,840 Jadi jawapan boleh mengandungi header ini. 468 00:23:41,840 --> 00:23:43,330 >> Dan beberapa perkara yang menunjukkan. 469 00:23:43,330 --> 00:23:46,890 Jadi katakan kita sebenarnya berjaya dalam melawat laman web. 470 00:23:46,890 --> 00:23:49,040 Jadi biarlah saya pergi ke - 471 00:23:49,040 --> 00:23:51,080 apa yang laman web yang baik? 472 00:23:51,080 --> 00:23:53,285 Saya tidak baik pada pemikiran yang baik laman web di tempat kejadian. 473 00:23:53,285 --> 00:23:53,640 >> PENONTON: Wikipedia. 474 00:23:53,640 --> 00:23:54,160 >> KEVIN Schmid: OK. 475 00:23:54,160 --> 00:23:56,040 Mari kita buat Wikipedia. 476 00:23:56,040 --> 00:23:58,680 Jadi di sini saya telah berpindah. 477 00:23:58,680 --> 00:23:59,240 Oh tunggu. 478 00:23:59,240 --> 00:24:00,160 Adakah saya? 479 00:24:00,160 --> 00:24:00,890 Ya, saya. 480 00:24:00,890 --> 00:24:01,100 OK. 481 00:24:01,100 --> 00:24:03,005 Jadi saya kena www. 482 00:24:03,005 --> 00:24:06,006 Jadi saya akan lakukan www. 483 00:24:06,006 --> 00:24:09,680 Dan seperti yang anda lihat, di sini semua HTML bahawa pelayar akan memproses 484 00:24:09,680 --> 00:24:10,910 untuk Wikipedia. 485 00:24:10,910 --> 00:24:14,055 >> Tetapi jika saya terus menatal ke atas di sini, apa yang saya akan melihat di bahagian 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 tetapi apa yang saya lihat di bahagian atas di sini ialah kod status 200 ini sebagai bertentangan dengan 488 00:24:22,550 --> 00:24:24,570 301 yang saya lihat sebelum ini. 489 00:24:24,570 --> 00:24:27,100 Dan perhatikan ianya bagus yang OK mesra sebelahnya. 490 00:24:27,100 --> 00:24:29,470 Jadi ini adalah seperti kod status yang baik. 491 00:24:29,470 --> 00:24:31,160 >> Adakah ini 200 bilangan kelihatan biasa? 492 00:24:31,160 --> 00:24:34,120 493 00:24:34,120 --> 00:24:39,880 Ya kerana apabila saya simpler.js, Saya menulis 200 di sana. 494 00:24:39,880 --> 00:24:43,290 Jadi yang yang pada dasarnya mengatakan memberitahu penyemak imbas atau sesiapa yang cuba pergi ke 495 00:24:43,290 --> 00:24:45,440 ini bahawa mereka berjaya. 496 00:24:45,440 --> 00:24:49,040 Atau yang jenis kita seperti berjaya juga. 497 00:24:49,040 --> 00:24:54,320 >> Dan ada jenis ini sintaks khas dalam Javascript untuk mengisytiharkan 498 00:24:54,320 --> 00:24:59,870 peta kekunci ini seperti jenis kandungan dan nilai-nilai seperti biasa teks. 499 00:24:59,870 --> 00:25:03,780 Jadi jika anda melihat maklum balas yang kami pulang dari Wikipedia sebelum ini, - 500 00:25:03,780 --> 00:25:06,200 Saya akan cuba untuk menatal sehingga sedikit lebih cepat - 501 00:25:06,200 --> 00:25:09,900 anda mempunyai kekunci ini seperti pelayan dan nilai Apache. 502 00:25:09,900 --> 00:25:12,120 Jadi, anda telah mendapat kunci dan nilai-nilai. 503 00:25:12,120 --> 00:25:15,930 Dan anda boleh menentukan ini dalam Nod apa untuk menghantar kembali. 504 00:25:15,930 --> 00:25:19,380 >> Jadi ini adalah sebenarnya jenis, dalam beberapa cara, dan dalam beberapa cara ia bukan 505 00:25:19,380 --> 00:25:23,170 benar-benar, tetapi ia tahap yang sedikit lebih rendah daripada kod PHP yang anda mungkin 506 00:25:23,170 --> 00:25:26,980 menulis untuk P ditetapkan tujuh kerana PHP dan Apache jenis menjaga beberapa 507 00:25:26,980 --> 00:25:28,150 perkara-perkara ini untuk anda. 508 00:25:28,150 --> 00:25:32,520 Dalam PHP, anda boleh mengatasi lalai tingkah laku dengan menulis tajuk anda sendiri. 509 00:25:32,520 --> 00:25:35,520 Tetapi bagi maksud ini, kita akan mendapat untuk menulis tajuk kita sendiri. 510 00:25:35,520 --> 00:25:38,210 511 00:25:38,210 --> 00:25:41,105 >> Begitu juga garis yang masuk akal untuk semua orang, yang garisan kepala tulis? 512 00:25:41,105 --> 00:25:41,380 OK. 513 00:25:41,380 --> 00:25:42,280 Awesome. 514 00:25:42,280 --> 00:25:45,870 >> Jadi maka apa yang saya lakukan adalah saya mengakhiri sambutan dengan mengatakan hello dunia. 515 00:25:45,870 --> 00:25:47,040 OK. 516 00:25:47,040 --> 00:25:49,920 Tetapi itu hanya satu majlis dipanggil permintaan pengendali. 517 00:25:49,920 --> 00:25:53,510 Jadi sekarang saya sebenarnya perlu jenis melakukan sesuatu dengan fungsi ini, bukan? 518 00:25:53,510 --> 00:25:59,170 >> Jadi di sini apa yang saya lakukan adalah ada ini garis yang tidak setaraf pelayan var 519 00:25:59,170 --> 00:26:03,530 HTTP.create pelayan, dan kemudian saya lulus dalam pengendali permintaan itu. 520 00:26:03,530 --> 00:26:06,080 Jadi ini adalah jenis Nod yang cara mewujudkan pelayan. 521 00:26:06,080 --> 00:26:08,790 Dan notis bahawa saya lulus dalam pengendali permintaan itu. 522 00:26:08,790 --> 00:26:12,290 Jadi ini memberitahu createServer yang fungsi yang saya mahu anda untuk membuat saya 523 00:26:12,290 --> 00:26:16,270 pelayan, dan apabila pelayan yang menerima jawapan, saya memerlukan anda untuk memanggil ini 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 garis yang cukup banyak selesai segera. 527 00:26:22,290 --> 00:26:28,780 Jadi garis pelayan var dilakukan dengan betul selepas anda melakukannya cukup banyak. 528 00:26:28,780 --> 00:26:31,770 Maksud saya, ia perlu mewujudkan beberapa dalaman negeri untuk mengetahui bahawa anda perlu 529 00:26:31,770 --> 00:26:35,400 memanggil fungsi permintaan pengendali, tetapi ia tidak akan duduk di sana dan 530 00:26:35,400 --> 00:26:37,730 katakan mempunyai pengguna yang dihantar saya suatu permintaan lagi? 531 00:26:37,730 --> 00:26:39,270 Telah pengguna menghantar saya permintaan lagi? 532 00:26:39,270 --> 00:26:40,780 Jadi ia tidak menghalang. 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 kini menyimpan penunjuk kepada kod ini, 535 00:26:46,120 --> 00:26:49,670 ini fungsi pengendali permintaan, dan kemudian akan menjalankan kod yang apabila seseorang 536 00:26:49,670 --> 00:26:52,170 membuat permintaan. 537 00:26:52,170 --> 00:26:54,120 Dan kemudian kita melakukan server.listen. 538 00:26:54,120 --> 00:26:56,950 539 00:26:56,950 --> 00:26:59,960 >> Yang 1337 ada cantik sewenang-wenangnya. 540 00:26:59,960 --> 00:27:02,285 Saya tidak mempunyai sebab tertentu untuk memilih nombor itu. 541 00:27:02,285 --> 00:27:03,860 Ia adalah betul-betul rambang. 542 00:27:03,860 --> 00:27:07,010 Tetapi itu hanya menyatakan pelabuhan. 543 00:27:07,010 --> 00:27:10,640 Jadi pelayan web yang paling anda akan melihat bahawa mereka menggunakan port 80 kerana itulah jenis 544 00:27:10,640 --> 00:27:11,810 daripada seperti konvensyen itu. 545 00:27:11,810 --> 00:27:16,170 Jadi, jika saya pergi ke sesuatu seperti, Saya tidak tahu, Wikipedia.org, 546 00:27:16,170 --> 00:27:17,700 dan saya meletakkan kolon 8 - 547 00:27:17,700 --> 00:27:18,610 oh wow, anda tidak boleh melihat bahawa. 548 00:27:18,610 --> 00:27:19,370 Saya minta maaf. 549 00:27:19,370 --> 00:27:21,820 Tetapi jika saya lakukan Wikipedia - 550 00:27:21,820 --> 00:27:24,810 Saya akan nyatakan di sini hanya supaya ia jelas kamera. 551 00:27:24,810 --> 00:27:29,150 Tetapi jika saya mengambil ini ke dalam penyemak imbas dengan usus 80, yang menentukan pergi ke 552 00:27:29,150 --> 00:27:31,430 Wikipedia.org di pelabuhan 80. 553 00:27:31,430 --> 00:27:36,200 Jadi ia seperti bagaimana Amerika Syarikat mempunyai pelbagai pelabuhan seperti di mana anda boleh menghantar 554 00:27:36,200 --> 00:27:37,440 perkara yang perlu jenis. 555 00:27:37,440 --> 00:27:40,730 Jadi ia seperti pergi ke khusus ini meletakkan pada pelayan ini. 556 00:27:40,730 --> 00:27:40,990 OK. 557 00:27:40,990 --> 00:27:45,730 >> Jadi saya hanya memilih 1337. 558 00:27:45,730 --> 00:27:47,910 Ada pelbagai jenis nombor yang anda boleh memilih. 559 00:27:47,910 --> 00:27:50,390 Yang tidak benar-benar istimewa. 560 00:27:50,390 --> 00:27:54,560 >> Tetapi apa yang saya akan lakukan sekarang adalah saya akan menjalankan Nod. 561 00:27:54,560 --> 00:27:59,730 Biar saya sebenarnya masuk bahawa pasangan barisan ke bawah supaya anda boleh melihatnya. 562 00:27:59,730 --> 00:28:03,130 Saya akan melakukan Nod, dan saya akan berjalan simpler.js. 563 00:28:03,130 --> 00:28:06,880 Dan kita akan bercakap tentang bagaimana untuk mendapatkan Nod ditubuhkan pada sedikit. 564 00:28:06,880 --> 00:28:09,350 Tetapi kini ia hanya berjalan pelayan. 565 00:28:09,350 --> 00:28:14,360 >> Jadi satu perkara yang kita boleh cuba yang tidak boleh menjadi yang menarik adalah kita boleh sebenarnya 566 00:28:14,360 --> 00:28:16,300 cuba untuk mengaksesnya dalam Curl. 567 00:28:16,300 --> 00:28:20,680 Jadi yang boleh saya lakukan Curl, dan saya mesin adalah tuan rumah tempatan. 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 Tuan rumah tempatan dan 127.0.0.1 adalah jenis daripada seperti komputer rumah anda. 570 00:28:29,810 --> 00:28:33,180 Jadi ia seperti bercakap 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 boleh mengatakan 1337. 573 00:28:36,030 --> 00:28:39,630 Jadi jika saya menjalankan baris ini kod, ia berkata hello dunia. 574 00:28:39,630 --> 00:28:44,050 Dan jika saya mahu melihat bahan yang mempunyai jenis kandungan teks biasa atau 575 00:28:44,050 --> 00:28:46,560 apa sahaja, saya juga boleh meletakkan ini di sini. 576 00:28:46,560 --> 00:28:48,810 Dan melihat bahawa ia mengatakan OK. 577 00:28:48,810 --> 00:28:50,810 Dan saya mempunyai dataran teks. 578 00:28:50,810 --> 00:28:53,140 Dan kemudian ada jenis semua ini selain barangan yang Nod akan menambah dalam 579 00:28:53,140 --> 00:28:54,440 ada untuk saya. 580 00:28:54,440 --> 00:28:55,700 Itu bukan super penting. 581 00:28:55,700 --> 00:28:58,230 >> Maksud saya, terdapat beberapa jenis teknikal aspek pada itu adalah jenis 582 00:28:58,230 --> 00:29:02,280 yang sejuk untuk bercakap tentang, tetapi hanya untuk menunjukkan anda, saya juga mempunyai kuasa untuk 583 00:29:02,280 --> 00:29:03,070 menukar ini sekitar. 584 00:29:03,070 --> 00:29:06,280 Jadi saya hanya boleh menambah sekumpulan barangan seperti itu. 585 00:29:06,280 --> 00:29:11,780 Dan maka sekarang, jika saya melihat dalam saya output, ia akan menjadi itu. 586 00:29:11,780 --> 00:29:19,740 Jadi tajuk ini bermakna perkara-perkara tertentu untuk pelayar dan perkara-perkara seperti itu. 587 00:29:19,740 --> 00:29:23,040 >> Dan header pada dasarnya boleh memberitahu pelayar bagaimana untuk bertindak balas terhadap sesuatu. 588 00:29:23,040 --> 00:29:26,280 Jika anda pernah mendengar cookies sebelum ini, atau jika anda pernah marah 589 00:29:26,280 --> 00:29:29,330 oleh laman web menetapkan cookies, atau dihidupkan blok cookie atau 590 00:29:29,330 --> 00:29:30,320 sesuatu seperti itu. 591 00:29:30,320 --> 00:29:33,040 Anda sebenarnya boleh menetapkan cookies dalam pengepala ini. 592 00:29:33,040 --> 00:29:36,990 Jadi mereka memberitahu pelayar bagaimana untuk tingkah laku dalam beberapa kes. 593 00:29:36,990 --> 00:29:37,750 OK. 594 00:29:37,750 --> 00:29:40,310 >> Sehingga adalah simpler.js. 595 00:29:40,310 --> 00:29:42,780 Adakah sesiapa mempunyai apa-apa soalan pada fail kod 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 Sejuk. 599 00:29:46,490 --> 00:29:50,780 >> Jadi mari kita membuang r itu dan melihat simple.js. 600 00:29:50,780 --> 00:29:53,010 Jadi ini adalah cukup banyak program sama. 601 00:29:53,010 --> 00:29:56,030 Saya hanya menulisnya sedikit berbeza kerana saya mahu untuk menyusun daripada kemuncak 602 00:29:56,030 --> 00:29:57,850 beberapa ciri-ciri JavaScript. 603 00:29:57,850 --> 00:30:03,880 >> Jadi melihat bahawa pengendali permintaan itu fungsi telah benar-benar hilang. 604 00:30:03,880 --> 00:30:05,800 Oh Ya, adakah anda mempunyai satu soalan? 605 00:30:05,800 --> 00:30:08,200 >> PENONTON: Ya, hujah-hujah yang diluluskan dengan 606 00:30:08,200 --> 00:30:10,120 fungsi, apakah mereka? 607 00:30:10,120 --> 00:30:12,050 >> KEVIN Schmid: Maka itulah JavaScript objek. 608 00:30:12,050 --> 00:30:15,230 Dalam dokumentasi Node.js, ia pada dasarnya mengatakan apa kaedah yang 609 00:30:15,230 --> 00:30:15,910 ada pada mereka. 610 00:30:15,910 --> 00:30:19,602 Kami hanya kebetulan mempunyai akses kepada kaedah ini dipanggil kepala menulis dan akhir 611 00:30:19,602 --> 00:30:20,730 dan barangan seperti itu. 612 00:30:20,730 --> 00:30:22,590 Tetapi ada sejumlah lebih kaedah. 613 00:30:22,590 --> 00:30:27,670 >> Dan sebagai contoh, seperti salah seorang daripada mereka khusus kepada rec, anda boleh melakukan 614 00:30:27,670 --> 00:30:34,540 sesuatu seperti rec.method yang akan memberitahu anda sama ada HTTP yang mendapatkan atau 615 00:30:34,540 --> 00:30:36,780 Permintaan HTTP dan pos perkara seperti itu. 616 00:30:36,780 --> 00:30:39,100 Jadi ada semua jenis yang berbeza hartanah, tetapi ia kedua-dua 617 00:30:39,100 --> 00:30:42,560 JavaScript objek, dan mereka hanya perlu fungsi dilampirkan kepada mereka bahawa anda 618 00:30:42,560 --> 00:30:43,850 boleh menulis perkara yang perlu. 619 00:30:43,850 --> 00:30:45,520 OK? 620 00:30:45,520 --> 00:30:49,030 >> Jadi melihat bahawa permintaan pengendali sama sekali hilang. 621 00:30:49,030 --> 00:30:52,650 Tetapi kod yang saya ada dalam permintaan pengendali masih ada. 622 00:30:52,650 --> 00:30:56,520 Saya masih mempunyai res.writeHead ini dan saya masih mempunyai res.end ini. 623 00:30:56,520 --> 00:31:00,270 Dan apa yang ini adalah satu contoh di JavaScript adalah idea ini bagi 624 00:31:00,270 --> 00:31:01,460 fungsi tanpa nama. 625 00:31:01,460 --> 00:31:04,180 dan tanpa nama adalah seperti nama yang sesuai untuk itu kerana ia benar-benar tidak 626 00:31:04,180 --> 00:31:05,180 ada nama. 627 00:31:05,180 --> 00:31:07,900 Tidak ada permintaan fungsi pengendali di sana. 628 00:31:07,900 --> 00:31:10,110 >> Tidak mempunyai nama, tetapi ia masih adalah mengambil pertengkaran. 629 00:31:10,110 --> 00:31:12,250 Jadi saya masih mendapat rec dan res. 630 00:31:12,250 --> 00:31:16,180 Dan saya masih mempunyai kod. 631 00:31:16,180 --> 00:31:18,930 Ini adalah betul-betul halus JavaScript kod. 632 00:31:18,930 --> 00:31:22,540 Jadi saya boleh mengisytiharkan fungsi tanpa dengan jelas memberikan nama. 633 00:31:22,540 --> 00:31:24,250 Ia sedikit mengelirukan pada mulanya. 634 00:31:24,250 --> 00:31:26,230 Terdapat beberapa perkara yang berguna seperti yang anda boleh lakukan dengan 635 00:31:26,230 --> 00:31:28,450 fungsi-fungsi tanpa nama. 636 00:31:28,450 --> 00:31:32,100 Adakah sesiapa mempunyai apa-apa soalan mengenai perkara ini, atau adakah ia hanya untuk OK, buat masa ini, 637 00:31:32,100 --> 00:31:34,130 semacam hanya menerima bahawa ia akan melakukan perkara 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 >> PENONTON: Adakah fungsi pertama kelas JavaScript? 641 00:31:38,680 --> 00:31:41,020 >> KEVIN Schmid: Mereka adalah pertama kelas dalam JavaScript. 642 00:31:41,020 --> 00:31:45,490 Dan hanya tahu bahawa konsep-konsep ini daripada lulus dalam fungsi tanpa nama seperti 643 00:31:45,490 --> 00:31:49,600 ini terpakai bagi JavaScript anda boleh menulis dalam projek akhir anda untuk 644 00:31:49,600 --> 00:31:51,260 pelayar web juga. 645 00:31:51,260 --> 00:31:56,700 Jadi, sebagai contoh, dalam JavaScript dalam penyemak imbas anda, ia juga agak acara 646 00:31:56,700 --> 00:32:00,680 didorong dalam erti kata bahawa apa yang anda akan ada ialah apabila pengguna klik ini 647 00:32:00,680 --> 00:32:02,640 butang, saya mahu anda untuk menjalankan kod ini. 648 00:32:02,640 --> 00:32:07,070 >> Jadi ia jenis yang sama idea-idea sebelah pelanggan apabila satu klik tetikus atau mereka 649 00:32:07,070 --> 00:32:09,870 tetikus atas beberapa imej pada anda halaman web, menjalankan kod ini. 650 00:32:09,870 --> 00:32:11,350 Yang boleh memohon kepada pelayan. 651 00:32:11,350 --> 00:32:16,380 Jadi itu jenis seperti yang menarik sebab mengapa JavaScript adalah benar-benar 652 00:32:16,380 --> 00:32:19,810 orang yang sesuai atau beberapa fikir ia adalah satu bahasa yang sesuai untuk jenis ini 653 00:32:19,810 --> 00:32:22,530 server pemandu acara kerana anda mempunyai fungsi-fungsi tanpa nama. 654 00:32:22,530 --> 00:32:26,150 Anda mempunyai idea keseluruhan kod ini tak segerak. 655 00:32:26,150 --> 00:32:27,060 OK. 656 00:32:27,060 --> 00:32:30,360 Sesiapa mempunyai apa-apa soalan? 657 00:32:30,360 --> 00:32:30,470 >> OK. 658 00:32:30,470 --> 00:32:33,440 Sehingga adalah simple.js. 659 00:32:33,440 --> 00:32:38,070 Jadi mari kita lihat satu lagi atau pasangan yang lebih. 660 00:32:38,070 --> 00:32:42,040 Jadi ini adalah sleep.js. 661 00:32:42,040 --> 00:32:47,160 Jadi sesiapa biasa dengan C fungsi tidur? 662 00:32:47,160 --> 00:32:50,936 Dari mungkin salah satu kuliah lebih awal atau sesuatu seperti itu? 663 00:32:50,936 --> 00:32:54,650 >> Jadi, pada asasnya anda boleh lepaskan pada saya fikir beberapa saat atau jika anda menggunakan U 664 00:32:54,650 --> 00:32:57,080 tidur beberapa milisaat atau nanosaat. 665 00:32:57,080 --> 00:33:00,450 Dan pada dasarnya program ini hanya akan berhenti berjalan untuk jumlah yang masa. 666 00:33:00,450 --> 00:33:01,280 Betul? 667 00:33:01,280 --> 00:33:06,970 Dan kemudian ia akan bangun akhirnya dan maka ia hanya akan terus menjalankan 668 00:33:06,970 --> 00:33:08,340 program ini. 669 00:33:08,340 --> 00:33:12,740 >> Jadi pelayan ini semacam memberi gambaran tidur. 670 00:33:12,740 --> 00:33:17,580 Jadi melihat bahawa kita mempunyai yang sama res.writeHead 200 dengan tajuknya 671 00:33:17,580 --> 00:33:22,130 sebelum ini, tetapi kemudian kita memanggil ini fungsi dipanggil set tamat masa. 672 00:33:22,130 --> 00:33:26,170 Tetapkan tamat masa juga boleh didapati dalam pelayar web anda Google Chrome 673 00:33:26,170 --> 00:33:28,000 atau Safari atau apa sahaja. 674 00:33:28,000 --> 00:33:31,720 Dan pada dasarnya apa yang ia lakukan di sini adalah ia mengambil fungsi. 675 00:33:31,720 --> 00:33:33,360 Notis, sekali lagi, ia adalah satu fungsi tanpa nama. 676 00:33:33,360 --> 00:33:36,310 Jadi itu jenis sejuk kerana kita menggunakan fungsi tanpa nama dalam satu 677 00:33:36,310 --> 00:33:38,950 fungsi tanpa nama yang boleh menjadi sedikit pelik. 678 00:33:38,950 --> 00:33:42,270 >> Tetapi ia mengambil fungsi itu, yang merupakan pada dasarnya mengatakan - dan cara ini 679 00:33:42,270 --> 00:33:47,430 kerja-kerja adalah dalam 5,000 milisaat, saya mahu anda untuk melaksanakan fungsi yang 680 00:33:47,430 --> 00:33:50,830 hanya berakhir sambutan dan menulis hey. 681 00:33:50,830 --> 00:33:56,730 Jadi ini memberikan gambaran seperti tidur, tetapi cara ini sebenarnya 682 00:33:56,730 --> 00:33:59,780 kerja-kerja kami akan menjalankan melalui baris ini dengan cepat. 683 00:33:59,780 --> 00:34:01,190 Kami hanya menulis sesuatu. 684 00:34:01,190 --> 00:34:03,780 Dan maka kita juga akan dijalankan melalui baris ini dengan cepat. 685 00:34:03,780 --> 00:34:08,620 Jadi, kita tidak benar-benar akan menunggu lima saat. 686 00:34:08,620 --> 00:34:11,370 Kami hanya akan menjalankan kod ini serta-merta. 687 00:34:11,370 --> 00:34:14,219 >> Dan kemudian ada, sekali lagi, ini sedikit gelung peristiwa yang kini mempunyai perkara ini 688 00:34:14,219 --> 00:34:17,570 daftar yang pada dasarnya hanya sentiasa akan di sekitar dalam bulatan 689 00:34:17,570 --> 00:34:21,620 dan melihat jam dalam satu benang dan kata, mempunyai lima saat 690 00:34:21,620 --> 00:34:22,360 berlalu lagi? 691 00:34:22,360 --> 00:34:26,409 Dan kemudian apabila ia melihat bahawa kedua tangan telah bergerak seperti lima saat atau 692 00:34:26,409 --> 00:34:29,190 apa sahaja, maka ia bangun dan berkata, oh, apa yang saya perlu lakukan? 693 00:34:29,190 --> 00:34:30,350 Oh saya perlu menjalankan kod ini. 694 00:34:30,350 --> 00:34:33,110 Dan kemudian ia 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 ia tidak bahawa kod ini di dalam fungsi ini akan mengambil masa lima 697 00:34:38,590 --> 00:34:39,900 saat berjalan. 698 00:34:39,900 --> 00:34:43,090 Kod ini akan berjalan cukup banyak merta, sekurang-kurangnya berbanding dengan 699 00:34:43,090 --> 00:34:46,139 lima saat yang kita bercakap tentang awal sebelum ini. 700 00:34:46,139 --> 00:34:52,100 >> Jadi untuk menunjukkan ini dalam tindakan, Yang boleh saya lakukan Node.sleep.js. 701 00:34:52,100 --> 00:34:55,159 Dan tidak saya merosakkan 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 boleh kita lakukan untuk menetapkan 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 Saya hanya bergurau. 710 00:35:19,440 --> 00:35:19,570 OK. 711 00:35:19,570 --> 00:35:20,820 Hanya satu sec. 712 00:35:20,820 --> 00:35:27,380 713 00:35:27,380 --> 00:35:27,900 OK. 714 00:35:27,900 --> 00:35:29,130 Saya tahu apa yang ada. 715 00:35:29,130 --> 00:35:34,440 >> Jadi isunya ialah dalam tab saya yang lain di sini, saya telah berjalan Nod 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 ralat yang ini melemparkan, jika kita melihat di ia sebenar dengan teliti, adalah alamat di 718 00:35:43,370 --> 00:35:45,180 digunakan, EADDRINUSE. 719 00:35:45,180 --> 00:35:47,970 Jadi saya telah menggunakan 1337 di sini. 720 00:35:47,970 --> 00:35:52,210 Jadi jika saya menutup ini di luar, dan kemudian saya kini cuba untuk menjalankan ini, mudah-mudahan, segala-galanya 721 00:35:52,210 --> 00:35:53,210 akan halus. 722 00:35:53,210 --> 00:35:53,440 OK. 723 00:35:53,440 --> 00:35:57,020 Jadi, anda hanya boleh mempunyai satu jenis mendengar pada port yang sekaligus. 724 00:35:57,020 --> 00:35:59,660 Satu lagi penyelesaian akan menjadi bagi saya hanya mengedit program itu dan membuat 725 00:35:59,660 --> 00:36:02,370 ia menjadi seperti 1338 atau sesuatu seperti itu. 726 00:36:02,370 --> 00:36:04,100 >> Tetapi sekarang tidur sedang berjalan. 727 00:36:04,100 --> 00:36:06,400 Jadi mari kita sebenarnya mencubanya dalam pelayar masa ini kerana ia adalah satu 728 00:36:06,400 --> 00:36:09,080 sedikit tanpa kegirangan melihat ia di terminal. 729 00:36:09,080 --> 00:36:13,560 Jadi, saya hanya akan pergi untuk yang 127 alamat sekali lagi pada 1337. 730 00:36:13,560 --> 00:36:14,850 Dan jika anda boleh melihatnya - 731 00:36:14,850 --> 00:36:18,050 Saya tidak tahu jika anda boleh - tetapi saya pelayar mengambil yang sangat, sangat panjang 732 00:36:18,050 --> 00:36:20,600 masa untuk memuatkan atau seperti lima saat. 733 00:36:20,600 --> 00:36:23,460 >> Dan kemudian selepas itu, ia akhirnya berakhir sambutan. 734 00:36:23,460 --> 00:36:29,070 Dan anda tidak boleh melihat ia kerana perkara yang dipindah sedikit, tetapi jika saya membuat 735 00:36:29,070 --> 00:36:32,500 ini lebih kecil sedikit, anda dapat melihat ia berkata hey. 736 00:36:32,500 --> 00:36:35,130 Jadi saya hey, tetapi selepas lima saat. 737 00:36:35,130 --> 00:36:38,510 Dan ia mungkin menjadi lebih bersih sedikit untuk melihat di sini di terminal, jadi saya 738 00:36:38,510 --> 00:36:40,980 akan melakukan - 739 00:36:40,980 --> 00:36:43,540 mari kita buat di sini - 740 00:36:43,540 --> 00:36:48,370 mari kita buat Curl alamat itu lagi dengan 1337. 741 00:36:48,370 --> 00:36:50,820 Dan saya hanya jenis perlu duduk di sini selama lima saat. 742 00:36:50,820 --> 00:36:53,760 Tetapi melihat bahawa pelayan boleh menerima tindak balas baru. 743 00:36:53,760 --> 00:36:54,940 Jadi ia mencetak hey. 744 00:36:54,940 --> 00:36:58,720 >> Dan untuk demo ini, pada dasarnya apa yang Yang boleh saya lakukan dalam tab yang lain ini - 745 00:36:58,720 --> 00:37:02,640 jadi mari kita mengatakan saya melakukan ini dalam tab yang lain, Saya akan melakukan Curl dan yang sama 746 00:37:02,640 --> 00:37:03,780 perkara lagi. 747 00:37:03,780 --> 00:37:06,600 Dan saya akan cuba untuk menendang ini lelaki mati pada masa yang sama. 748 00:37:06,600 --> 00:37:08,260 Jadi saya akan melakukan ini, dan saya akan berlumba di sini dan saya 749 00:37:08,260 --> 00:37:09,650 akan melakukannya sekali lagi. 750 00:37:09,650 --> 00:37:14,030 >> Dan mari kita membuat ia supaya anda boleh melihat kedua-dua mereka. 751 00:37:14,030 --> 00:37:20,250 Bahawa satu dicetak hey dan satu yang dicetak hey semua jalan di - 752 00:37:20,250 --> 00:37:22,550 mari kita buat eksperimen itu lagi. 753 00:37:22,550 --> 00:37:25,100 Sebenarnya, mari kita menggunakan ini menipu, jika itu OK. 754 00:37:25,100 --> 00:37:30,520 >> Jadi saya akan menggunakan perkara shell yang membolehkan saya pada dasarnya menjalankan dua salinan 755 00:37:30,520 --> 00:37:32,630 program ini secara selari. 756 00:37:32,630 --> 00:37:36,070 Jadi ia akan menjalankan program yang pertama dan program kedua secara selari. 757 00:37:36,070 --> 00:37:39,060 Jadi sekarang jika saya tekan Enter, ia akan untuk membuat permintaan yang cukup banyak 758 00:37:39,060 --> 00:37:40,570 merta pada masa yang sama. 759 00:37:40,570 --> 00:37:42,620 Jadi mari kita memberikan ini pukulan. 760 00:37:42,620 --> 00:37:44,950 >> Jadi sekarang menyedarinya kata dua proses. 761 00:37:44,950 --> 00:37:50,630 Dan jika anda ingin tahu, bahawa 27,000 nombor adalah pada dasarnya ID proses. 762 00:37:50,630 --> 00:37:52,940 Dan kemudian notis, yang dicetak hey pada masa yang sama. 763 00:37:52,940 --> 00:37:56,820 Ia bukan seperti kami terpaksa menunggu lima saat untuk satu dan kemudian selepas itu, 764 00:37:56,820 --> 00:37:59,640 lima saat kemudian mendapatkan kedua. 765 00:37:59,640 --> 00:38:03,300 Jadi yang yang jenis, dalam beberapa cara, ia tidak benar-benar bukti, tetapi ia 766 00:38:03,300 --> 00:38:07,390 bukti intuitif yang ia bukan hanya seperti menunggu lima saat dan menyekat 767 00:38:07,390 --> 00:38:08,960 keseluruhan urutan. 768 00:38:08,960 --> 00:38:10,720 OK sejuk. 769 00:38:10,720 --> 00:38:17,850 >> Jadi Harun bertanya soalan sebelum ini bahawa adalah, akan apa yang jika kita melakukan sesuatu - 770 00:38:17,850 --> 00:38:18,735 Yep? 771 00:38:18,735 --> 00:38:19,051 >> PENONTON: Tunggu. 772 00:38:19,051 --> 00:38:21,585 Bagaimana yang berbeza daripada penampan printf, walaupun? 773 00:38:21,585 --> 00:38:23,010 Tidak secara automatik berbuat demikian? 774 00:38:23,010 --> 00:38:25,390 Mengapa kita perlu bimbang tentang perkara ini? 775 00:38:25,390 --> 00:38:26,555 >> KEVIN Schmid: Oh, boleh anda mengatakan satu masa yang lebih? 776 00:38:26,555 --> 00:38:29,510 >> PENONTON: Tidak suka penampan printf melakukan perkara yang sama? 777 00:38:29,510 --> 00:38:31,280 >> KEVIN Schmid: Penampan printf? 778 00:38:31,280 --> 00:38:32,753 >> PENONTON: Yeah. 779 00:38:32,753 --> 00:38:33,244 OK. 780 00:38:33,244 --> 00:38:40,609 Tidak di salah satu kuiz mereka bercakap tentang bagaimana jika anda betul printf 781 00:38:40,609 --> 00:38:42,899 sesuatu dan kemudian telah ia berhenti satu kedua, dan kemudian anda mempunyai gelung sepuluh 782 00:38:42,899 --> 00:38:46,530 kali, ia akan menunggu sepuluh saat dan maka printf semua bersama-sama? 783 00:38:46,530 --> 00:38:47,460 >> KEVIN Schmid: Oh, OK. 784 00:38:47,460 --> 00:38:49,170 >> PENONTON: Adakah ia melakukan perkara yang sama perkara maka dalam kes ini? 785 00:38:49,170 --> 00:38:52,630 >> KEVIN Schmid: Jadi soalan itu pada dasarnya dalam satu bekas kuiz 786 00:38:52,630 --> 00:38:57,200 atau sesuatu, terdapat soalan yang pada dasarnya jika anda mengatakan cetak f 10 787 00:38:57,200 --> 00:39:01,490 perkara pada satu masa dan kemudian tidur seperti dalam proses mencetak mereka keluar, 788 00:39:01,490 --> 00:39:04,850 pada akhir atas sebab tertentu, ia akan hanya membuang mereka semua keluar pada skrin. 789 00:39:04,850 --> 00:39:06,740 Jadi ada adalah jenis dua yang berbeza konsep di sini. 790 00:39:06,740 --> 00:39:10,400 >> Jadi saya rasa satu perkara adalah bahawa, dalam ini kes, kita sedang berhadapan dengan dua yang berbeza 791 00:39:10,400 --> 00:39:13,510 jenis orang bertanya pelayan untuk perkara-perkara pada masa yang sama. 792 00:39:13,510 --> 00:39:17,455 Dan sebab-sebab yang jenis printf yang menunggu seperti itu dan tapak semua keluar 793 00:39:17,455 --> 00:39:21,760 sekaligus lebih berkaitan dengan bagaimana jenis printf daripada - 794 00:39:21,760 --> 00:39:25,100 jadi cara printf yang sebenarnya dilaksanakan adalah pada dasarnya telah 795 00:39:25,100 --> 00:39:28,850 bercakap dengan sistem operasi untuk menulis yang barangan untuk konsol. 796 00:39:28,850 --> 00:39:33,460 Supaya ia tidak mahu melakukan semua itu barangan serta-merta apabila anda mengatakan printf 797 00:39:33,460 --> 00:39:36,260 beberapa tali kerana yang boleh mendapatkan mahal jika ia 798 00:39:36,260 --> 00:39:37,340 lakukan setiap kali. 799 00:39:37,340 --> 00:39:41,530 >> Jadi jika anda printf hey, program anda mungkin tidak benar-benar bahawa mencetak 800 00:39:41,530 --> 00:39:43,040 dengan segera kepada konsol. 801 00:39:43,040 --> 00:39:46,080 Ia mungkin berkata, OK, saya menulisnya. 802 00:39:46,080 --> 00:39:49,570 Dan kemudian jenis menunggu anda untuk memberi ia lebih sedikit sebelum benar-benar 803 00:39:49,570 --> 00:39:51,380 menulisnya ke konsol. 804 00:39:51,380 --> 00:39:54,040 >> Jadi alasan bahawa itu benar - 805 00:39:54,040 --> 00:39:56,450 dan ia adalah jenis yang tidak berkaitan untuk tidur - 806 00:39:56,450 --> 00:40:00,060 adalah bahawa tidur itu semacam hanya disuntik di sana untuk menunjukkan 807 00:40:00,060 --> 00:40:02,480 hakikat bahawa ia tidak menulis ia serentak. 808 00:40:02,480 --> 00:40:06,210 Tetapi sebab yang hanya Prestasi supaya anda tidak perlu 809 00:40:06,210 --> 00:40:08,920 membuat yang banyak kenalan sistem operasi. 810 00:40:08,920 --> 00:40:12,300 >> Tetapi di sini, apa yang kita benar-benar cuba untuk melakukan dengan perkara tidur ini hanya menunjukkan 811 00:40:12,300 --> 00:40:17,730 bahawa apabila kita mempunyai dua orang melawat laman web ini, ia tidak akan meletakkan 812 00:40:17,730 --> 00:40:22,310 mereka dalam talian di mana ia akan mengatakan Saya mempunyai untuk membantu anda, dan kemudian apabila saya 813 00:40:22,310 --> 00:40:25,350 betul-betul selesai membantu anda selepas ini lima saat, kemudian saya akan 814 00:40:25,350 --> 00:40:26,750 bergerak ke orang yang datang. 815 00:40:26,750 --> 00:40:29,515 Jadi permintaan orang yang pertama tidak mengikat yang gelung acara 816 00:40:29,515 --> 00:40:31,610 jika yang masuk akal. 817 00:40:31,610 --> 00:40:34,980 >> Tetapi di sini ialah sebenarnya contoh sesuatu yang akan mengikat 818 00:40:34,980 --> 00:40:36,090 sehingga gelung acara tersebut. 819 00:40:36,090 --> 00:40:39,130 Jadi di sini adalah satu fungsi yang dahsyat untuk mengira Fibonacci ke-n. 820 00:40:39,130 --> 00:40:43,510 Ia betul-betul cara yang lebih teruk anda boleh mengira bilangan Fibonacci ke-n. 821 00:40:43,510 --> 00:40:48,480 Dan ini sebenarnya hanya untuk mengakui di mana ini datang dari, 822 00:40:48,480 --> 00:40:49,330 ada sebenarnya - 823 00:40:49,330 --> 00:40:53,230 Maksud saya, anda boleh cuba untuk pergi mencari - tetapi ada seperti blog sangat panjang 824 00:40:53,230 --> 00:40:54,130 menyiarkan bahawa seseorang menulis. 825 00:40:54,130 --> 00:40:55,660 Ia seperti salah satu perkara 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 saya jenis mahu hanya menunjukkan dua perspektif yang berbeza hanya untuk mendapatkan 828 00:41:03,700 --> 00:41:07,320 pemahaman umum konsep di belakang kedua-dua perkara. 829 00:41:07,320 --> 00:41:13,050 >> Tetapi ini dipilih sebagai hanya dahsyat, computationally teruk tidak cekap 830 00:41:13,050 --> 00:41:15,940 cara intensif untuk mengira Nombor Fibonacci ke-n. 831 00:41:15,940 --> 00:41:21,180 Jadi hanya sebagai nota sampingan, mengapa ia dahsyat seperti dalam satu cara? 832 00:41:21,180 --> 00:41:23,210 Yep? 833 00:41:23,210 --> 00:41:25,130 >> PENONTON: Katakanlah anda memulakan dengan 1,000. 834 00:41:25,130 --> 00:41:27,050 1,000 berpecah ke dalam 999 dan 998. 835 00:41:27,050 --> 00:41:28,970 Setiap satu daripada ini terpisah kepada dua perkara. 836 00:41:28,970 --> 00:41:30,890 Setiap satu daripada ini terpisah kepada dua perkara. 837 00:41:30,890 --> 00:41:31,355 >> KEVIN Schmid: Betul. 838 00:41:31,355 --> 00:41:32,400 >> PENONTON: Semua jalan ke bawah. 839 00:41:32,400 --> 00:41:32,840 >> KEVIN Schmid: Tepat sekali. 840 00:41:32,840 --> 00:41:37,330 Jadi hanya mengulangi untuk kamera, jika saya memanggil FIB pada seperti 1,000 atau sesuatu 841 00:41:37,330 --> 00:41:41,810 seperti itu, ia jelas tidak kurang daripada atau sama dengan satu jadi saya akan 842 00:41:41,810 --> 00:41:46,040 pergi dengan kes lain ini, dan kemudian saya akan untuk memanggil FIB 999 ditambah FIB 998. 843 00:41:46,040 --> 00:41:50,290 Dan kemudian cukup banyak semua itu kerja yang FIB 999 tidak adalah 844 00:41:50,290 --> 00:41:52,950 jenis di peringkat ini. 845 00:41:52,950 --> 00:41:55,620 Jika anda pergi ke bawah, ia lebih berlebihan daripada itu, tetapi jika anda hanya 846 00:41:55,620 --> 00:42:01,390 berfikir bikinan pengiraan 998 mendapat kami cukup dekat dengan FIB 999. 847 00:42:01,390 --> 00:42:05,860 Oleh itu, kita benar-benar harus menjadi sedikit lebih bijak tentang bagaimana kita jenis menggunakan semula 848 00:42:05,860 --> 00:42:07,580 ini, tetapi kita tidak menggunakan semula perkara-perkara ini sama sekali. 849 00:42:07,580 --> 00:42:11,860 Jadi, anda boleh bayangkan ini gergasi, pokok gergasi itu hanya dahsyat. 850 00:42:11,860 --> 00:42:12,940 >> Tetapi bagaimanapun, OK. 851 00:42:12,940 --> 00:42:14,040 Sehingga adalah bikinan. 852 00:42:14,040 --> 00:42:15,530 Ia hanya mengambil masa untuk berjalan. 853 00:42:15,530 --> 00:42:16,510 Yep? 854 00:42:16,510 --> 00:42:17,760 >> PENONTON: [didengar]. 855 00:42:17,760 --> 00:42:20,430 856 00:42:20,430 --> 00:42:22,481 >> KEVIN Schmid: Oh, boleh anda mengulangi soalan? 857 00:42:22,481 --> 00:42:23,731 >> PENONTON: [didengar]. 858 00:42:23,731 --> 00:42:30,840 859 00:42:30,840 --> 00:42:33,990 >> KEVIN Schmid: Oh jadi ini adalah hanya kod yang akan menjadi jenis di 860 00:42:33,990 --> 00:42:34,850 sebelah pelayan. 861 00:42:34,850 --> 00:42:38,100 Jadi ini tidak akan didapati dalam penyemak imbas atau apa-apa. 862 00:42:38,100 --> 00:42:42,160 Ia pada dasarnya apa yang kita ada ialah apabila pengguna di sini cukup banyak membuat 863 00:42:42,160 --> 00:42:45,300 permintaan mereka sekali lagi, apabila kita jenis membuat permintaan, kita akan memanggil 864 00:42:45,300 --> 00:42:47,040 fungsi ini di sebelah pelayan. 865 00:42:47,040 --> 00:42:50,480 Dan kemudian kita akan mendapat hasil yang kembali daripada 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 Sehingga pengguna tidak benar-benar menangani dengan fungsi ini terlalu banyak. 868 00:42:54,580 --> 00:42:57,270 >> Adalah bahawa soalan itu? 869 00:42:57,270 --> 00:42:58,470 Adakah ini masuk akal? 870 00:42:58,470 --> 00:42:58,810 OK. 871 00:42:58,810 --> 00:43:00,930 Sejuk. 872 00:43:00,930 --> 00:43:04,240 >> Jadi sekali lagi, kita res.writeHead ini keseluruhan perkara di mana kita mencetak 873 00:43:04,240 --> 00:43:05,150 pengepala. 874 00:43:05,150 --> 00:43:09,730 Dan kemudian saya mengakhiri sambutan dengan melakukan bilangan ajaib adalah bikinan 45. 875 00:43:09,730 --> 00:43:12,100 Jadi mari kita hanya menjalankan pelayan ini. 876 00:43:12,100 --> 00:43:15,190 Jadi, saya akan melakukan fib.js. Nod 877 00:43:15,190 --> 00:43:17,340 Jadi sekarang server bikinan saya berjalan. 878 00:43:17,340 --> 00:43:21,790 >> Dan kemudian di sini, saya akan untuk melakukan salah satu daripada ini. 879 00:43:21,790 --> 00:43:22,200 OK? 880 00:43:22,200 --> 00:43:24,960 Jadi saya hanya akan berkata, Curl. 881 00:43:24,960 --> 00:43:32,226 Jadi ia akan mengambil sedikit masa tetapi harap-harap tidak lama lagi ia akan menyelesaikan dan 882 00:43:32,226 --> 00:43:35,660 ia akan mencetak 45 yang Fibonacci nombor. 883 00:43:35,660 --> 00:43:36,910 >> PENONTON: [didengar]. 884 00:43:36,910 --> 00:43:40,720 885 00:43:40,720 --> 00:43:42,050 >> KEVIN Schmid: Ia harus mendapatkan dilakukan cantik tidak lama lagi. 886 00:43:42,050 --> 00:43:43,780 Jadi ia perlu mengambil masa lima hingga enam saat. 887 00:43:43,780 --> 00:43:48,570 Saya tidak tahu itu hanya V8 menjadi super cepat, tetapi dalam mana-mana, ini adalah satu 888 00:43:48,570 --> 00:43:52,700 contoh yang sangat singkat dan sengaja kaku daripada bukan remeh 889 00:43:52,700 --> 00:43:54,200 pengiraan. 890 00:43:54,200 --> 00:43:56,700 Jadi selepas beberapa ketika, ia mendapatkan ini. 891 00:43:56,700 --> 00:44:02,130 >> Tetapi sekarang, bagaimana jika saya berbuat demikian jenis sama eksperimen seperti sebelum ini di mana saya membuat 892 00:44:02,130 --> 00:44:04,010 dua permintaan pada masa yang sama? 893 00:44:04,010 --> 00:44:06,990 Jadi di sini saya akan a Curl pada alamat itu, dan saya akan 894 00:44:06,990 --> 00:44:08,260 untuk melakukan satu lagi Curl. 895 00:44:08,260 --> 00:44:12,070 Dan ingat, apabila kita melakukan ini untuk tidur pelayan, apabila kita pada dasarnya telah ia 896 00:44:12,070 --> 00:44:15,320 selepas lima saat, mereka cukup banyak kedua-dua datang kembali hak 897 00:44:15,320 --> 00:44:16,380 pada masa yang sama. 898 00:44:16,380 --> 00:44:18,650 Jadi ia tidak terutamanya diikat. 899 00:44:18,650 --> 00:44:20,290 >> Tetapi mari kita cuba sekarang. 900 00:44:20,290 --> 00:44:22,370 OK, jadi kita mendapat dua proses kerajaan. 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 janggal sementara kami gerai. 903 00:44:25,900 --> 00:44:31,340 904 00:44:31,340 --> 00:44:35,360 Jadi mari kita hanya tinggal di sini dan menunggu. 905 00:44:35,360 --> 00:44:37,090 >> Jadi salah seorang daripada mereka harus datang kembali selepas seperti - 906 00:44:37,090 --> 00:44:39,190 OK, jadi kita kembali. 907 00:44:39,190 --> 00:44:43,570 Tetapi mengapa tidak yang kedua satu datang kembali sahaja lagi? 908 00:44:43,570 --> 00:44:44,389 Yep? 909 00:44:44,389 --> 00:44:49,280 >> PENONTON: Pelayan tidak boleh berbuat apa-apa semasa ia menghitung jumlah yang besar. 910 00:44:49,280 --> 00:44:51,620 >> KEVIN Schmid: Betul. 911 00:44:51,620 --> 00:44:55,395 Jadi sambutan itu hanya itu pelayan benar-benar tidak boleh berbuat apa-apa manakala 912 00:44:55,395 --> 00:44:57,460 ia menghitung bilangan Fibonacci. 913 00:44:57,460 --> 00:44:59,360 Jadi sekarang saya hanya mendapat dua perkara saya kembali. 914 00:44:59,360 --> 00:45:03,210 Tetapi saya rasa hanya untuk berfikir tentang kod lebih sedikit, bagaimana ia bekerja 915 00:45:03,210 --> 00:45:05,030 dan segala-galanya. 916 00:45:05,030 --> 00:45:11,750 >> Jadi fungsi ini di sini adalah kod yang Saya memberitahu pelayan ini untuk menjalankan apabila ia 917 00:45:11,750 --> 00:45:14,100 menerima suatu permintaan masuk yang baru. 918 00:45:14,100 --> 00:45:17,940 Jadi ia hanya akan berjalan melalui ini keseluruhan kod, dan kemudian ia akan pergi 919 00:45:17,940 --> 00:45:21,120 belakang untuk gelung acara tersebut dan kemudian terus memeriksa untuk acara-acara baru. 920 00:45:21,120 --> 00:45:23,670 Jadi, pada asasnya apa yang kita telah berlaku adalah pelayan adalah 921 00:45:23,670 --> 00:45:25,080 mendengar sesuatu yang 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 kod ini untuk mengira ia. 924 00:45:30,490 --> 00:45:33,420 Kod ini mengambil kira-kira lima untuk enam saat berjalan. 925 00:45:33,420 --> 00:45:36,990 Kemudian kami kembali ke gelung acara dan periksa permintaan baru. 926 00:45:36,990 --> 00:45:42,700 >> Jadi ini adalah satu contoh bagaimana, jika anda mempunyai perkara-perkara yang kononnya pengiraan 927 00:45:42,700 --> 00:45:48,140 terikat, atau menggunakan banyak pengiraan, bukan kuasa, tetapi seperti yang 928 00:45:48,140 --> 00:45:50,260 computationally intensif - 929 00:45:50,260 --> 00:45:54,080 Saya rasa satu perkara untuk mengatakan tentang ini adalah bahawa fungsi ini melakukan sama sekali, 930 00:45:54,080 --> 00:45:56,310 untuk sebahagian besar, cukup betul kerja yang berguna. 931 00:45:56,310 --> 00:45:59,970 Seluruh masa itu panggilan balik yang fungsi telah berjalan, ia agak 932 00:45:59,970 --> 00:46:03,670 banyak menghabiskan sebahagian besar masa hanya pengkomputeran nombor yang n Fibonacci. 933 00:46:03,670 --> 00:46:05,930 >> Tetapi kita hanya mempunyai satu thread untuk menangani. 934 00:46:05,930 --> 00:46:10,270 Dalam model Apache, apabila dua orang membuat permintaan itu untuk mendapatkan FIB 45, kita 935 00:46:10,270 --> 00:46:11,610 akan mempunyai dua benang yang berbeza. 936 00:46:11,610 --> 00:46:15,060 Dan kemudian kerja sistem operasi ini akan menjadi, atau tahap pengguna 937 00:46:15,060 --> 00:46:18,660 kod yang menguruskan benang, akan tunggu menjadi keping yang di atas 938 00:46:18,660 --> 00:46:23,060 CPU, atau jika anda mempunyai pelbagai CPU, mengedarkan secara merata di seluruh CPU yang 939 00:46:23,060 --> 00:46:26,130 supaya mereka kedua-duanya selesai secara kasar pada masa yang sama. 940 00:46:26,130 --> 00:46:31,120 >> Jadi hanya untuk menunjukkan kepada anda bagaimana kami dapat daripada - dan ini bukanlah sempurna 941 00:46:31,120 --> 00:46:34,280 penyelesaian, tetapi jenis bagaimana kita boleh 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 ada di sini adalah program yang dikenali sebagai FIB C. Dan ini pada dasarnya menggunakan 944 00:46:41,540 --> 00:46:45,690 satu lagi modul Nod yang dikenali sebagai Modul Proses kanak-kanak. 945 00:46:45,690 --> 00:46:49,210 Jadi saya termasuk yang di atas jenis daripada seperti yang saya akan lakukan satu paun termasuk 946 00:46:49,210 --> 00:46:51,230 process.h kanak-kanak atau sesuatu. 947 00:46:51,230 --> 00:46:56,210 Sekarang saya mempunyai akses kepada pembolehubah CP ini yang mempunyai semua fungsi saya. 948 00:46:56,210 --> 00:47:01,810 >> Jadi sekarang apa yang saya lakukan sebagai tindak balas ini pengendali adalah saya menjalankan program ini 949 00:47:01,810 --> 00:47:04,100 dot slash bikinan 45. 950 00:47:04,100 --> 00:47:06,820 Jadi apa yang saya lakukan - dan saya hanya akan 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 satu program C yang pada dasarnya mengira 953 00:47:11,060 --> 00:47:12,630 Nombor Fibonacci ke-n. 954 00:47:12,630 --> 00:47:15,960 Jadi di sini hanya satu program saya telah menulis dalam C yang mengira ini. 955 00:47:15,960 --> 00:47:19,040 Saya boleh menyusun, dan saya boleh menjalankan ia pada baris arahan. 956 00:47:19,040 --> 00:47:22,150 Dan ia akan mengira Bilangan ke-45 Fibonacci. 957 00:47:22,150 --> 00:47:24,510 >> Jadi notis ia hanya mengambil cukup banyak seperti yang lama. 958 00:47:24,510 --> 00:47:28,240 Saya mungkin boleh telah menggunakan sengkang 03 untuk mengoptimumkan ia atau sesuatu seperti itu, 959 00:47:28,240 --> 00:47:31,050 tetapi saya hanya melakukan seperti biasa tetapan compiler. 960 00:47:31,050 --> 00:47:33,260 Dan ia mencetak ia keluar. 961 00:47:33,260 --> 00:47:36,830 >> Tetapi sekarang, apa yang saya jenis lakukan? 962 00:47:36,830 --> 00:47:39,800 Oh maaf, fail yang salah. 963 00:47:39,800 --> 00:47:42,800 Jadi saya melakukan perkara yang sama dengan tajuknya sebelum ini. 964 00:47:42,800 --> 00:47:45,780 Kemudian saya melakukan cp.exec ini. 965 00:47:45,780 --> 00:47:49,460 Jadi apa ini akan lakukan adalah ia akan menjalankan program ini. 966 00:47:49,460 --> 00:47:51,960 Tetapi cara ini berfungsi ialah ia tidak akan menunggu 967 00:47:51,960 --> 00:47:53,400 program yang untuk selesai. 968 00:47:53,400 --> 00:47:56,000 Ia hanya pada dasarnya mengatakan melaksanakan program ini. 969 00:47:56,000 --> 00:47:58,700 Jadi, pada asasnya menaip ini ke dalam arahan jenis segera. 970 00:47:58,700 --> 00:48:02,350 >> Dan kemudian, apabila anda selesai dengan ia, jalankan fungsi ini. 971 00:48:02,350 --> 00:48:04,800 Jadi sekarang kita jenis mendapatkan ini Semua perkara dipulihkan 972 00:48:04,800 --> 00:48:06,750 seperti kita tidak menunggu. 973 00:48:06,750 --> 00:48:08,530 Adakah yang jenis masuk akal? 974 00:48:08,530 --> 00:48:08,990 Yep? 975 00:48:08,990 --> 00:48:11,060 >> PENONTON: [didengar]? 976 00:48:11,060 --> 00:48:13,610 >> KEVIN Schmid: Jadi ini akan benar-benar membuka proses baru untuk melakukannya. 977 00:48:13,610 --> 00:48:19,310 Jadi ini adalah sebenarnya, dalam beberapa cara, jahat, tidak super kejahatan, tetapi ia adalah 978 00:48:19,310 --> 00:48:22,990 penting untuk mengatakan bahawa ini adalah jenis akan kembali ke, di satu sudut, Apache 979 00:48:22,990 --> 00:48:26,450 model di mana kita melakukan benang dan proses bagi 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 seakan- apa Apache tidak. 982 00:48:32,090 --> 00:48:35,110 Dalam beberapa kes, ia hanya akan menggunakan baru benang, yang adalah sedikit lebih ringan 983 00:48:35,110 --> 00:48:39,040 berat badan daripada proses, tetapi Apache boleh berakhir forking proses baru 984 00:48:39,040 --> 00:48:43,370 yang jenis apa yang kita lakukan di sini tersirat dengan melakukan dot slash bikinan 45. 985 00:48:43,370 --> 00:48:48,690 >> Dan, dalam keadaan ini, kita jenis menanggung perbelanjaan yang sama proses. 986 00:48:48,690 --> 00:48:50,710 Jadi ini adalah hanya satu perkara yang anda boleh lakukan. 987 00:48:50,710 --> 00:48:52,600 Tetapi hanya untuk menunjukkan seperti ini berjalan. 988 00:48:52,600 --> 00:48:57,120 Dan bercakap ini hanya benar-benar bertujuan untuk menyampaikan ini jenis program-program yang 989 00:48:57,120 --> 00:49:00,710 cara untuk menunjukkan perspektif yang berbeza pada bagaimana untuk mereka bentuk pelayan seperti itu. 990 00:49:00,710 --> 00:49:08,300 Jadi ini sedang berjalan, dan kemudian sekarang jika saya lakukan ini sekali lagi, saya mendapat dua ID proses. 991 00:49:08,300 --> 00:49:10,320 >> Mari kita bercakap tentang perkara untuk menunjukkan. 992 00:49:10,320 --> 00:49:11,980 Jadi melihat bahawa mereka secara berperingkat. 993 00:49:11,980 --> 00:49:12,700 Itu sejuk. 994 00:49:12,700 --> 00:49:15,140 Kerana ia adalah 27.122 sebelum ini. 995 00:49:15,140 --> 00:49:18,580 Tetapi notis sekarang, mereka pulang pada kira-kira masa yang sama. 996 00:49:18,580 --> 00:49:23,960 >> Dan kini, satu soalan yang baik untuk bertanya tentang mengapa kes ini, kerja yang 997 00:49:23,960 --> 00:49:27,590 adalah ia sekarang untuk jenis membuat perkara-perkara jenis bermain adil antara satu sama 998 00:49:27,590 --> 00:49:31,350 lain, kedua-dua contoh dot slash bikinan 45 yang saya berlari 999 00:49:31,350 --> 00:49:32,880 atau Nod berlari? 1000 00:49:32,880 --> 00:49:36,940 Yang semacam menjadikannya adil bahawa mereka kedua-dua mendapatkan jenis seimbang masa berjalan? 1001 00:49:36,940 --> 00:49:42,900 1002 00:49:42,900 --> 00:49:44,220 >> PENONTON: [didengar]. 1003 00:49:44,220 --> 00:49:44,620 >> KEVIN Schmid: Yeah. 1004 00:49:44,620 --> 00:49:49,740 Jadi, pada asasnya, apabila saya melakukan dot slash bikinan 45 atau sesuatu seperti itu, kini ia 1005 00:49:49,740 --> 00:49:53,750 jenis sehingga sistem operasi untuk mengendalikan runtime program-program. 1006 00:49:53,750 --> 00:49:56,920 Dan kini ia boleh menjadualkan mereka pada CPU yang berlainan atau ia 1007 00:49:56,920 --> 00:49:58,330 boleh menjadualkan mereka. 1008 00:49:58,330 --> 00:50:01,870 Ia boleh potong masa satu yang CPU mendapat atau bahawa mereka mendapat 1009 00:50:01,870 --> 00:50:03,330 untuk berjalan di satu CPU. 1010 00:50:03,330 --> 00:50:05,620 Jadi, itu idea di sebalik itu. 1011 00:50:05,620 --> 00:50:07,220 Adakah ini masuk akal untuk semua orang? 1012 00:50:07,220 --> 00:50:10,950 Jadi sekarang Nod tidak benar-benar memainkan bahagian dalam membahagikan 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 >> Jadi yang hampir untuk contoh. 1016 00:50:17,840 --> 00:50:23,370 Saya hanya mahu menunjukkan perkara satu lagi kerana banyak ini setakat ini telah 1017 00:50:23,370 --> 00:50:27,350 tidak sama sekali super praktikal dalam beberapa kes. 1018 00:50:27,350 --> 00:50:30,970 Saya boleh bayangkan akan pulang selepas ini bercakap dan sesuatu dan berkata seperti, 1019 00:50:30,970 --> 00:50:35,710 juga saya jenis keluar dari ceramah yang yang Saya boleh membuat server Fibonacci bagi 1020 00:50:35,710 --> 00:50:37,360 projek akhir saya. 1021 00:50:37,360 --> 00:50:40,770 Jadi di sini hanya jenis satu lagi contoh yang diharapkan akan menjadi - 1022 00:50:40,770 --> 00:50:44,620 mungkin tidak, tetapi mungkin - lebih sedikit jenis yang berkaitan dengan projek-projek akhir dan 1023 00:50:44,620 --> 00:50:46,440 berfikir ke depan untuk perkara-perkara 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 adalah jenis suka sampel beberapa kod sebelah pelayan yang anda boleh gunakan untuk 1026 00:50:52,290 --> 00:50:55,700 menubuhkan pelayan chat kecil seperti anda mungkin telah melihat pada 1027 00:50:55,700 --> 00:50:56,630 Facebook Chat atau apa sahaja. 1028 00:50:56,630 --> 00:50:59,990 Jadi, saya tidak mengatakan ini adalah seperti Facebook Sembang, tetapi ini adalah jenis 1029 00:50:59,990 --> 00:51:06,230 seperti yang baik - mungkin tidak baik, tetapi mungkin titik permulaan untuk berbual - yang baik 1030 00:51:06,230 --> 00:51:08,560 server untuk laman web anda untuk projek akhir. 1031 00:51:08,560 --> 00:51:11,040 Jadi mari kita lihat apa yang ia lakukan. 1032 00:51:11,040 --> 00:51:15,500 >> Oleh itu, kita mendapat perkara ini khas di bahagian atas, ini var SIO 1033 00:51:15,500 --> 00:51:17,050 sama memerlukan Socket.IO. 1034 00:51:17,050 --> 00:51:20,280 Jadi ini adalah satu lagi perkara yang ia tidak sebenarnya datang dibundel dengan 1035 00:51:20,280 --> 00:51:22,300 Nod tetapi anda boleh memasangnya. 1036 00:51:22,300 --> 00:51:23,480 Ia adalah satu modul Nod. 1037 00:51:23,480 --> 00:51:25,670 Jadi ia hanya seperti beberapa lanjutan kepada Nod. 1038 00:51:25,670 --> 00:51:29,220 >> SocketIO sebenarnya benar-benar jenis sejuk. 1039 00:51:29,220 --> 00:51:32,550 Ia merupakan satu abstraksi yang pada dasarnya apa yang ia adalah adalah ia membolehkan anda untuk 1040 00:51:32,550 --> 00:51:35,770 mempunyai aliran komunikasi antara web yang 1041 00:51:35,770 --> 00:51:39,430 pelayar dan pelayan web. 1042 00:51:39,430 --> 00:51:45,250 Jadi sebahagian besar setakat ini, kami telah ini sangat cepat kedua atau dua 1043 00:51:45,250 --> 00:51:48,790 komunikasi kedua antara web yang pelayar dan pelayan web. 1044 00:51:48,790 --> 00:51:53,310 Jadi pada dasarnya pergi ke google.com, mendapatkan barangan, menghantar kembali, dan kemudian 1045 00:51:53,310 --> 00:51:53,770 kita selesai. 1046 00:51:53,770 --> 00:51:56,560 Kami tidak pernah bercakap lagi sehingga jenis pengguna dalam sesuatu yang lain. 1047 00:51:56,560 --> 00:52:01,090 >> Tetapi apa Socket.IO dan sebarang yang perkara - dan SocketIO sebenarnya adalah salah 1048 00:52:01,090 --> 00:52:03,940 satu perkara yang dibina di atas sebagai WebSocket yang jenis boleh didapati 1049 00:52:03,940 --> 00:52:06,440 sebagai sebahagian daripada HTML5 - 1050 00:52:06,440 --> 00:52:09,620 yang membolehkan anda untuk mempunyai ini dialog yang berterusan. 1051 00:52:09,620 --> 00:52:13,990 Dan ini adalah sangat berguna dalam pelayan chat jenis benda kerana ia adalah 1052 00:52:13,990 --> 00:52:17,390 jenis seperti dialog yang berterusan di beberapa cara kerana jika anda berbual 1053 00:52:17,390 --> 00:52:21,540 dengan seseorang, anda boleh kini hanya menghantar mesej ke bawah paip, dan kemudian 1054 00:52:21,540 --> 00:52:23,940 server boleh menghantar mesej ke bawah paip kepada orang lain anda 1055 00:52:23,940 --> 00:52:24,520 berbual dengan. 1056 00:52:24,520 --> 00:52:26,903 Dan kemudian anda boleh ini bertukar-tukar seperti itu. 1057 00:52:26,903 --> 00:52:30,590 1058 00:52:30,590 --> 00:52:32,850 >> Jadi itu jenis apa SocketIO adalah baik untuk. 1059 00:52:32,850 --> 00:52:38,400 Alasan bahawa SocketIO menggunakan WebSockets sebagai satu perkara adalah bahawa dalam 1060 00:52:38,400 --> 00:52:43,980 Selain WebSockets hanya kosong lama, ia juga tidak beberapa helah untuk dasarnya 1061 00:52:43,980 --> 00:52:45,610 menjadikannya pelayar serasi. 1062 00:52:45,610 --> 00:52:50,040 Jadi pelayar seperti Internet Explorer malangnya tidak menyokong WebSockets 1063 00:52:50,040 --> 00:52:50,810 keluar dari kotak. 1064 00:52:50,810 --> 00:52:55,290 Jadi ia menggunakan beberapa jenis lain sejuk kemas perkara dengan Adobe Flash untuk membolehkan 1065 00:52:55,290 --> 00:52:57,170 anda mempunyai sokongan pelayar silang. 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, saya tahu saya jenis berjalan pada masa di sini, tetapi CS50 1068 00:53:02,440 --> 00:53:08,490 Bincangkan, adakah anda pernah melihat sesuatu seperti, saya tidak tahu, jadi kosong dan begitu juga 1069 00:53:08,490 --> 00:53:11,030 membalas pos ini atau sesuatu seperti itu, ciri yang? 1070 00:53:11,030 --> 00:53:12,250 Itulah SocketIO. 1071 00:53:12,250 --> 00:53:15,580 Oleh itu, apabila seseorang bermula menaip dalam membincangkan kotak untuk membuat jawapan atau 1072 00:53:15,580 --> 00:53:20,040 sesuatu Pelayar anda tidak apa yang dipanggil SocketIO mengeluarkan beberapa jenis 1073 00:53:20,040 --> 00:53:22,660 acara yang mengatakan seseorang adalah membalas pos ini. 1074 00:53:22,660 --> 00:53:26,110 >> Kemudian pelayan itu berkata, OK, apa yang saya perlu lakukan? 1075 00:53:26,110 --> 00:53:29,270 Sekarang saya perlu memberitahu orang-orang lelaki lain yang berada di CS50 Bincangkan mencari 1076 00:53:29,270 --> 00:53:31,170 di pos ini bahawa seseorang itu membalas. 1077 00:53:31,170 --> 00:53:34,190 Jadi itu jenis apa SocketIO adalah baik untuk, jenis ini berterusan 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 ada di sini - dan kami hanya akan mengabaikan pelbagai sambungan yang 1081 00:53:40,060 --> 00:53:41,390 untuk sedikit - 1082 00:53:41,390 --> 00:53:43,080 apa yang saya lakukan ialah saya mendengar satu lagi. 1083 00:53:43,080 --> 00:53:46,880 Jadi itu hanya cara di Socket.IO adalah berkata mari kita mendengar di pelabuhan ini. 1084 00:53:46,880 --> 00:53:50,060 Dan kemudian saya melakukan ini pada sambungan. 1085 00:53:50,060 --> 00:53:53,360 Jadi, itu hanya pada dasarnya Socket IO ini cara untuk mengatakan, apabila kita menerima 1086 00:53:53,360 --> 00:53:55,840 sambungan, saya mahu anda untuk menjalankan kod ini. 1087 00:53:55,840 --> 00:53:59,870 >> Dan melihat bahawa bukan mempunyai rec dan res meninggal di sana saya mempunyai Socket. 1088 00:53:59,870 --> 00:54:03,260 Dan ini idea Socket pada dasarnya ini perkara yang anda boleh menulis kepada dan membaca 1089 00:54:03,260 --> 00:54:05,750 dari yang mempunyai pengguna ini Mesej mungkin. 1090 00:54:05,750 --> 00:54:10,700 Dan mesej yang anda akan menghantar boleh pergi melalui Socket itu. 1091 00:54:10,700 --> 00:54:12,140 Adakah ini masuk akal? 1092 00:54:12,140 --> 00:54:14,490 Jadi ia adalah perkara ini berterusan. 1093 00:54:14,490 --> 00:54:17,820 >> Jadi apa yang saya lakukan ialah saya menyeru Socket.emit. 1094 00:54:17,820 --> 00:54:20,330 Dan memancarkan mengambil cukup lebih dua hujah. 1095 00:54:20,330 --> 00:54:24,100 Hujah pertama adalah rentetan hanya mewakili jenis 1096 00:54:24,100 --> 00:54:25,270 perkara yang anda sedang pemancar. 1097 00:54:25,270 --> 00:54:28,120 Jadi untuk kes ini, saya telah menggunakan ini rentetan mesej baru. 1098 00:54:28,120 --> 00:54:32,670 Dan itu hanya pada dasarnya mengatakan bahawa jenis perkara ini, apa yang saya 1099 00:54:32,670 --> 00:54:34,750 penghantaran, adalah satu mesej baru. 1100 00:54:34,750 --> 00:54:38,460 Jadi, anda boleh mendengar untuk jenis tertentu seperti mesej baru atau apa sahaja 1101 00:54:38,460 --> 00:54:39,960 dengan menggunakan dot pada. 1102 00:54:39,960 --> 00:54:44,570 >> Jadi sambungan dan pengguna dihantar ke sana, jika anda melihat di mana kita panggil dot pada, 1103 00:54:44,570 --> 00:54:48,150 mereka adalah tali lain yang mewakili jenis mesej pengguna. 1104 00:54:48,150 --> 00:54:52,060 Jadi ia pada dasarnya anda boleh mempunyai memancarkan ini salah satu jenis mesej, dan 1105 00:54:52,060 --> 00:54:55,520 kemudian melakukan sesuatu sebagai tindak balas kepada salah satu jenis mesej 1106 00:54:55,520 --> 00:54:57,640 >> Jadi saya pemancar mesej baru ini. 1107 00:54:57,640 --> 00:55:00,540 Kita akan mengabaikan connections.push untuk kali kedua. 1108 00:55:00,540 --> 00:55:03,360 Tetapi saya katakan, Socket.on pengguna dihantar. 1109 00:55:03,360 --> 00:55:07,540 Jadi sekarang ia jenis suka apabila pengguna menghantar mesej kepada saya, saya mahu 1110 00:55:07,540 --> 00:55:09,240 anda untuk menjalankan kod ini. 1111 00:55:09,240 --> 00:55:12,080 Dan melihat bahawa fungsi tanpa nama sedang dalam pembolehubah ini 1112 00:55:12,080 --> 00:55:16,300 dipanggil data yang pada asasnya akan mempunyai mesej pengguna. 1113 00:55:16,300 --> 00:55:20,700 >> Jenis Jadi sekarang mari kita bercakap tentang array sambungan. 1114 00:55:20,700 --> 00:55:24,590 Jadi ini direka untuk pelanggan chat di mana pada dasarnya semua orang adalah jenis di 1115 00:55:24,590 --> 00:55:25,950 bilik sembang sama. 1116 00:55:25,950 --> 00:55:29,640 Jadi, pada asasnya, apa yang kita perlu memastikan sekitar adalah beberapa array yang pada dasarnya 1117 00:55:29,640 --> 00:55:33,170 mewakili semua orang berbual di beberapa cara, jika yang masuk akal. 1118 00:55:33,170 --> 00:55:33,340 Betul? 1119 00:55:33,340 --> 00:55:37,190 Kerana kita perlu tahu yang orang-orang lelaki begitu kita boleh menghantar mesej mereka 1120 00:55:37,190 --> 00:55:39,140 yang orang lain hantar kepada kami. 1121 00:55:39,140 --> 00:55:44,440 >> Jadi apa kod ini tidak adalah apabila pengguna menghantar mesej - itulah jenis 1122 00:55:44,440 --> 00:55:45,300 acara - 1123 00:55:45,300 --> 00:55:47,120 kita akan menjalankan kod ini. 1124 00:55:47,120 --> 00:55:51,240 Dan apa yang kita lakukan ialah kita berjalan melalui ini array yang kita telah dipanggil sambungan. 1125 00:55:51,240 --> 00:55:54,390 Dan cukup banyak untuk setiap sambungan kecuali satu yang kita, itu 1126 00:55:54,390 --> 00:55:59,520 apa kod ini berkata, kita menghantar yang baru mesej dengan mesej dilampirkan 1127 00:55:59,520 --> 00:56:01,210 maklumat. 1128 00:56:01,210 --> 00:56:04,880 >> Jadi, jika anda notis di sini, apa yang saya lakukan apabila pengguna benar-benar membuat yang baru 1129 00:56:04,880 --> 00:56:08,560 sambungan saya ditambah dengan Kaedah JavaScript.push, ini adalah 1130 00:56:08,560 --> 00:56:12,100 pada dasarnya hanya mengatakan seperti menambah Socket bahawa sebagai nilai ke 1131 00:56:12,100 --> 00:56:13,900 array hubungan kami. 1132 00:56:13,900 --> 00:56:20,560 Jadi sekarang apabila kod ini berjalan, ia akan menghantar barangan kepada mereka tertentu 1133 00:56:20,560 --> 00:56:22,020 sambungan. 1134 00:56:22,020 --> 00:56:26,980 Jadi ini boleh menjadi titik permulaan yang baik untuk membuat pelayan chat 1135 00:56:26,980 --> 00:56:28,250 atau sesuatu yang serupa. 1136 00:56:28,250 --> 00:56:33,315 >> Dan jenis perkara yang sejuk adalah bahawa kod yang anda lihat di sini untuk seperti pada dan 1137 00:56:33,315 --> 00:56:36,390 memancar dan barangan seperti itu adalah sama jenis kod JavaScript yang akan anda 1138 00:56:36,390 --> 00:56:39,260 menulis dalam pelayar untuk berinteraksi dengan pelayan. 1139 00:56:39,260 --> 00:56:42,480 Jadi itulah sebabnya SocketIO adalah jenis kemas 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 hanya satu perkara yang lebih cepat sebenar. 1142 00:56:49,250 --> 00:56:55,970 Ada projek akhir CS50 tahun lepas yang pada dasarnya dilaksanakan berbual 1143 00:56:55,970 --> 00:56:57,840 pelayan di Node.js. 1144 00:56:57,840 --> 00:57:01,350 Saya rasa ia Harvardchats.org tetapi saya tidak - 1145 00:57:01,350 --> 00:57:02,940 OK. 1146 00:57:02,940 --> 00:57:06,190 Saya tidak pasti apa yang URL itu, tetapi Saya boleh menghantar bahawa daripada selepas itu. 1147 00:57:06,190 --> 00:57:09,260 Tetapi ia jenis sejuk apa anda boleh lakukan dengan Node.js. 1148 00:57:09,260 --> 00:57:14,680 >> Jadi saya berharap, secara umum, anda lelaki itu mempunyai satu rasa yang baik dari apa Node.js berguna 1149 00:57:14,680 --> 00:57:17,870 dan bagaimana anda mungkin boleh memohon untuk projek akhir anda. 1150 00:57:17,870 --> 00:57:21,050 Saya akan menghantar lebih banyak sumber bersama-sama dengan ini. 1151 00:57:21,050 --> 00:57:23,170 Dan terima kasih kerana datang. 1152 00:57:23,170 --> 00:57:23,610 Terima kasih. 1153 00:57:23,610 --> 00:57:27,168 >> [Tepuk tangan]