1 00:00:00,000 --> 00:00:00,060 2 00:00:00,060 --> 00:00:01,560 >> DAVID MALAN: Baiklah, kita kembali. 3 00:00:01,560 --> 00:00:03,830 Jadi untuk menarik Kesimpulannya, bahagian terakhir kami 4 00:00:03,830 --> 00:00:06,900 pengaturcaraan web, yang saya fikir kita akan digunakan sebagai istilah umum 5 00:00:06,900 --> 00:00:08,440 untuk menangkap beberapa topik yang tinggal. 6 00:00:08,440 --> 00:00:10,390 Jadi pada akhir hari, kami benar-benar akan melakukan 7 00:00:10,390 --> 00:00:14,830 sedikit hands-on pengaturcaraan web dengan bahasa yang dipanggil JavaScript. 8 00:00:14,830 --> 00:00:17,510 Dan saya fikir kita akan melihat dengan sesuatu yang berkaitan dengan imej 9 00:00:17,510 --> 00:00:20,040 dan menemui sesuatu rahsia tersembunyi dalam imej, 10 00:00:20,040 --> 00:00:23,230 dan juga mengambil lihat di Google Maps API, pengaturcaraan penggunaan 11 00:00:23,230 --> 00:00:26,040 antara muka, sebagai sesuatu wakil jenis perisian 12 00:00:26,040 --> 00:00:28,800 itulah semakin dan diperolehi secara percuma hari ini. 13 00:00:28,800 --> 00:00:32,029 >> Tetapi mengapa tidak kita lihat pada bahan ke dunia ini 14 00:00:32,029 --> 00:00:34,070 bahawa kita telah jenis menjadi mengambil untuk diberikan wujud 15 00:00:34,070 --> 00:00:36,720 untuk beberapa waktu, database. 16 00:00:36,720 --> 00:00:39,150 Untuk hari yang lalu dan setengah kami telah mengambil alih 17 00:00:39,150 --> 00:00:42,910 bahawa kita mempunyai akses kepada pangkalan data, tetapi apa masalah tidak pangkalan data menyelesaikan? 18 00:00:42,910 --> 00:00:45,540 Apa yang ia buat untuk kita? 19 00:00:45,540 --> 00:00:47,030 Apa yang ia? 20 00:00:47,030 --> 00:00:48,679 >> PENONTON: [didengar] 21 00:00:48,679 --> 00:00:51,720 DAVID MALAN: Memegang semua maklumat, OK, dan apa jenis maklumat 22 00:00:51,720 --> 00:00:53,186 anda mungkin dimasukkan ke dalam ia? 23 00:00:53,186 --> 00:00:54,590 >> PENONTON: [didengar] 24 00:00:54,590 --> 00:00:56,450 >> DAVID MALAN: Mana-mana maklumat anda masukkan ke dalam, anda akan kembali. 25 00:00:56,450 --> 00:00:57,070 Itu benar. 26 00:00:57,070 --> 00:01:01,900 Dan di tapak berasaskan web biasa atau web permohonan, apa jenis maklumat, 27 00:01:01,900 --> 00:01:03,385 secara khusus, anda mungkin dimasukkan ke dalam? 28 00:01:03,385 --> 00:01:04,260 PENONTON: [didengar] 29 00:01:04,260 --> 00:01:05,051 DAVID MALAN: Pengguna. 30 00:01:05,051 --> 00:01:07,000 Jadi apa pengguna? 31 00:01:07,000 --> 00:01:09,765 >> PENONTON: [didengar] 32 00:01:09,765 --> 00:01:11,640 DAVID MALAN: OK, berdaftar pengguna laman web ini. 33 00:01:11,640 --> 00:01:15,100 Dan apa yang ia bermaksud untuk maklumat pengguna kedai '? 34 00:01:15,100 --> 00:01:17,260 Apa yang dikomposisikan pengguna? 35 00:01:17,260 --> 00:01:18,331 Pengguna mempunyai apa? 36 00:01:18,331 --> 00:01:19,206 PENONTON: [didengar] 37 00:01:19,206 --> 00:01:21,040 DAVID MALAN: Ya, peribadi data, dan saya suka bahawa. 38 00:01:21,040 --> 00:01:21,970 Mari kita menjadi lebih tepat. 39 00:01:21,970 --> 00:01:25,275 Jadi pengguna biasanya mempunyai nama, apa lagi yang mungkin pengguna mempunyai? 40 00:01:25,275 --> 00:01:26,150 PENONTON: [didengar] 41 00:01:26,150 --> 00:01:29,130 DAVID MALAN: An OK addr--, nama jadi pertama, nama akhir. 42 00:01:29,130 --> 00:01:29,630 Itulah yang baik. 43 00:01:29,630 --> 00:01:31,463 Sebenarnya, mari kita menetapkan itu, kerana ia akan 44 00:01:31,463 --> 00:01:35,010 untuk membuka peluang kepada perbincangan, masih, selanjutnya. 45 00:01:35,010 --> 00:01:39,090 nama pertama, nama akhir, gender. 46 00:01:39,090 --> 00:01:41,820 47 00:01:41,820 --> 00:01:43,481 ID sejenis. 48 00:01:43,481 --> 00:01:43,980 Apa lagi? 49 00:01:43,980 --> 00:01:45,438 Saya mendengar sesuatu yang lain sebelum ini, juga. 50 00:01:45,438 --> 00:01:51,600 Satu e-mel, alamat pos. 51 00:01:51,600 --> 00:01:58,170 >> Jadi mari kita berhenti seketika di sana dan kini menganggap tidak apa yang kita menyimpan dalam pangkalan data, 52 00:01:58,170 --> 00:02:01,980 but-- dan tidak mengapa, kerana ia mungkin jelas bahawa sebaik sahaja anda mendaftar pengguna, 53 00:02:01,980 --> 00:02:03,730 anda mahu ingat mereka untuk beberapa ketika. 54 00:02:03,730 --> 00:02:05,480 Anda tidak mahu ia hanya disimpan di dalam RAM 55 00:02:05,480 --> 00:02:08,690 dan dapat forgotten-- supaya mari kita memberi tumpuan kepada bagaimana. 56 00:02:08,690 --> 00:02:11,700 >> Ia ternyata bahawa dalam dunia pangkalan data, 57 00:02:11,700 --> 00:02:14,410 ada sekurang-kurangnya dua jenis hari ini. 58 00:02:14,410 --> 00:02:20,010 Sesuatu yang dipanggil pangkalan data SQL, Bahasa Pertanyaan Berstruktur, 59 00:02:20,010 --> 00:02:24,770 atau, cutely dinamakan, NoSQL, yang tidak SQL. 60 00:02:24,770 --> 00:02:26,980 Dan yang kedua adalah contoh apa yang mungkin 61 00:02:26,980 --> 00:02:30,660 dipanggil objek berorientasikan, atau kedai objek, pangkalan data 62 00:02:30,660 --> 00:02:36,010 yang menyimpan objek, dan tidak, alasan saya, kerana kita tidak lama lagi akan melihat, baris. 63 00:02:36,010 --> 00:02:41,800 >> Oleh itu, kita akan memberi tumpuan untuk hanya seketika pada yang pertama ini, iaitu, SQL yang 64 00:02:41,800 --> 00:02:46,850 pangkalan data, jika hanya kerana ia begitu biasa sudah, kepada sesiapa 65 00:02:46,850 --> 00:02:51,070 yang telah menggunakan Excel atau Helaian Google atau Apple 66 00:02:51,070 --> 00:02:53,740 Nombor atau mana-mana standard program spreadsheet, 67 00:02:53,740 --> 00:02:56,040 atau, setara, atau lebih sophisticatedly, 68 00:02:56,040 --> 00:02:58,610 sesuatu seperti Microsoft Akses atau Oracle 69 00:02:58,610 --> 00:03:03,890 atau MySQL atau PostgreSQL, semua yang adalah nama-nama produk bagi pelaksanaan 70 00:03:03,890 --> 00:03:04,865 idea berikut. 71 00:03:04,865 --> 00:03:10,350 >> Satu pangkalan data hubungan adalah semata-mata sesuatu yang mempunyai baris dan lajur. 72 00:03:10,350 --> 00:03:12,850 Dan dengan baris dan lajur, Saya benar-benar bermakna sesuatu 73 00:03:12,850 --> 00:03:21,860 seperti ini, jadi di mana kita mungkin mempunyai menamakan sebuah padang dan jenisnya di sini. 74 00:03:21,860 --> 00:03:25,800 Dan sebenarnya, biarlah saya kini bermula untuk memetakan ini. 75 00:03:25,800 --> 00:03:29,420 Jadi sebenarnya, saya tidak tahu mengapa saya menarik carta yang berasingan. 76 00:03:29,420 --> 00:03:30,780 Mari kita terus mudah ini. 77 00:03:30,780 --> 00:03:34,830 >> Kami mempunyai hak di sini yang permulaan meja kami, di mana 78 00:03:34,830 --> 00:03:40,150 ini adalah nama medan dan ini adalah jenis data, 79 00:03:40,150 --> 00:03:41,660 dan mengikut jenis yang saya maksudkan yang berikut. 80 00:03:41,660 --> 00:03:45,510 Adakah nombor, ia rentetan, rentetan pendek seperti perkataan, 81 00:03:45,510 --> 00:03:49,340 ia perenggan, ia data binari, seperti imej? 82 00:03:49,340 --> 00:03:51,980 Dan mari kita hanya mengusik ini selain hanya untuk seketika. 83 00:03:51,980 --> 00:03:57,575 Jadi nama pertama, nombor, tali, sebahagian besar text-- 84 00:03:57,575 --> 00:03:58,450 PENONTON: [didengar] 85 00:03:58,450 --> 00:03:59,616 DAVID MALAN: Ya, jadi tali. 86 00:03:59,616 --> 00:04:04,744 Dan dalam konteks pangkalan data, kami akan biasanya memanggil bidang char ini. 87 00:04:04,744 --> 00:04:07,660 Saya hanya akan mengatakan char buat masa ini tetapi kami akan mendapatkan hasil ini dalam seketika. 88 00:04:07,660 --> 00:04:09,180 bidang watak. 89 00:04:09,180 --> 00:04:11,365 Nama akhir mungkin yang sama. 90 00:04:11,365 --> 00:04:11,865 Jantina? 91 00:04:11,865 --> 00:04:16,230 92 00:04:16,230 --> 00:04:18,310 >> Lelaki atau perempuan, maka ia boleh menjadi medan char. 93 00:04:18,310 --> 00:04:21,380 Ia boleh menjadi sama ada quote, unquote "Lelaki" atau quote, unquote "wanita" 94 00:04:21,380 --> 00:04:23,650 atau ia boleh menjadi m atau f. 95 00:04:23,650 --> 00:04:26,540 Jika anda mahu menjadi lebih inklusif, anda mungkin memerlukan nilai ketiga 96 00:04:26,540 --> 00:04:28,640 atau beberapa jenis bidang lain sama sekali. 97 00:04:28,640 --> 00:04:31,350 Dan supaya anda boleh menggunakan palsu benar. 98 00:04:31,350 --> 00:04:35,036 Bidang ini boleh dipanggil lelaki, dan maka anda boleh berkata benar atau palsu. 99 00:04:35,036 --> 00:04:38,160 Tetapi itu tidak semestinya menangkap semua maklumat yang anda mungkin mahu. 100 00:04:38,160 --> 00:04:41,118 >> Jadi, ternyata ada satu lagi jenis medan yang mungkin berguna di sini 101 00:04:41,118 --> 00:04:46,040 dalam pangkalan data khas, yang dipanggil enum, di mana ia adalah satu bidang watak, 102 00:04:46,040 --> 00:04:50,480 tetapi anda, pereka bentuk, sampai ke menghitung nilai yang mungkin, 103 00:04:50,480 --> 00:04:54,630 seperti quote, unquote "lelaki", quote, unquote "perempuan" dan sebagainya. 104 00:04:54,630 --> 00:04:57,620 Supaya apa nilai adalah di dalam pangkalan data anda, 105 00:04:57,620 --> 00:05:00,670 memang berdasarkan aksara, tetapi ia telah menjadi salah satu daripada nilai-nilai. 106 00:05:00,670 --> 00:05:03,520 Kita mungkin tidak mahu satu enum untuk nama pertama atau nama akhir. 107 00:05:03,520 --> 00:05:05,630 Jika tidak, kita akan mempunyai untuk menghitung, kerana nama itu 108 00:05:05,630 --> 00:05:09,570 berasal dari, harfiah setiap mungkin nama pertama dan nama akhir. 109 00:05:09,570 --> 00:05:13,960 >> OK, jadi ID apa yang patut ID yang menjadi? 110 00:05:13,960 --> 00:05:15,200 Ya, jadi mungkin nombor. 111 00:05:15,200 --> 00:05:17,870 Oleh itu, marilah kita berpegang dengan buat masa sekarang, bilangan. 112 00:05:17,870 --> 00:05:22,010 Dan dengan jumlah, bilangan yang sedikit terlalu luas sekarang. 113 00:05:22,010 --> 00:05:23,900 Untuk akhir kedua hari, saya rasa seperti kita 114 00:05:23,900 --> 00:05:25,280 perlu menjadi sedikit lebih tepat. 115 00:05:25,280 --> 00:05:29,280 Nombor boleh bermakna seperti, ia boleh menjadi sesuatu seperti 1,236. 116 00:05:29,280 --> 00:05:31,500 Dan itu mungkin tidak apa yang kita maksudkan dengan ID. 117 00:05:31,500 --> 00:05:34,635 Apa yang kita mungkin maksudkan dengan ID? 118 00:05:34,635 --> 00:05:36,382 >> PENONTON: [didengar] 119 00:05:36,382 --> 00:05:38,590 DAVID MALAN: Oh, OK, jadi mungkin ia bukan juga nombor. 120 00:05:38,590 --> 00:05:42,840 Mungkin ia sebenarnya pengecam unik itu adalah satu tali, seperti nama pengguna. 121 00:05:42,840 --> 00:05:44,580 Jadi sama sekali, boleh. 122 00:05:44,580 --> 00:05:46,730 Saya rasa orang mungkin bermakna angka, walaupun. 123 00:05:46,730 --> 00:05:48,460 Jadi mari kita tinggal dengan itu. 124 00:05:48,460 --> 00:05:49,320 Apakah jenis nombor? 125 00:05:49,320 --> 00:05:51,960 Apa yang lebih precise-- integer. 126 00:05:51,960 --> 00:05:56,710 Jadi nombor seperti 0, 1, 2, 3, jadi kita akan memanggil ini integer. 127 00:05:56,710 --> 00:05:58,909 Dan kemudian, saya boleh dapat nitpicking, ia 128 00:05:58,909 --> 00:06:00,700 tidak benar-benar hanya integer umum yang anda mahu. 129 00:06:00,700 --> 00:06:04,340 Anda mungkin tidak mahu nilai-nilai negatif, hanya kerana, ia hanya berasa pelik. 130 00:06:04,340 --> 00:06:06,070 Anda mungkin mahu bilangan bulat positif. 131 00:06:06,070 --> 00:06:07,920 Oleh itu, anda juga boleh meluahkan yang dalam pangkalan data, 132 00:06:07,920 --> 00:06:09,450 tetapi untuk sekarang, kami akan berkata integer. 133 00:06:09,450 --> 00:06:10,650 >> E-mel? 134 00:06:10,650 --> 00:06:13,550 Ini mungkin just-- apa? 135 00:06:13,550 --> 00:06:14,460 >> PENONTON: [didengar] 136 00:06:14,460 --> 00:06:16,980 >> DAVID MALAN: Ia adalah e-mel, tetapi itu watak-watak, bukan? 137 00:06:16,980 --> 00:06:19,813 Ia hanya mempunyai watak funky seperti yang "di" simbol atau sesuatu yang lain, 138 00:06:19,813 --> 00:06:21,580 tetapi ia masih satu bidang watak. 139 00:06:21,580 --> 00:06:23,900 Dan alamat pos? 140 00:06:23,900 --> 00:06:25,360 bidang watak. 141 00:06:25,360 --> 00:06:31,400 Jadi, itu satu permulaan yang bagus, tetapi mari kita menjadi sedikit lebih tepat sekarang. 142 00:06:31,400 --> 00:06:34,540 >> Jadi ia ternyata bahawa dalam pangkalan data, anda sering 143 00:06:34,540 --> 00:06:39,120 mempunyai pilihan ke atas lebih halus versi perkara-perkara ini. 144 00:06:39,120 --> 00:06:44,330 Malah, dalam satu pangkalan data SQL biasa, SQL, atau lebih umum, pangkalan data hubungan, 145 00:06:44,330 --> 00:06:46,680 pangkalan data dengan baris dan lajur, anda sering 146 00:06:46,680 --> 00:06:53,610 mendapatkan untuk menentukan bukan sahaja jenis daripada field-- izinkan saya membuat sedikit ruang sini-- 147 00:06:53,610 --> 00:06:56,600 tetapi juga panjang. 148 00:06:56,600 --> 00:06:59,900 >> Jadi berapa lama adalah nama pertama? 149 00:06:59,900 --> 00:07:07,060 Saya rasa, D-A-V-I-D. OK, faham saya mungkin hanya tersinggung seperti setengah 150 00:07:07,060 --> 00:07:11,260 daripada orang di dalam bilik, kanan, kerana nama anda lebih panjang daripada lima 151 00:07:11,260 --> 00:07:16,608 huruf, jadi lima seolah-olah mementingkan diri sendiri sedikit dan naif, jadi apa nilai yang lebih baik? 152 00:07:16,608 --> 00:07:19,320 153 00:07:19,320 --> 00:07:24,330 10, semua betul, dan saya fikir kami OK di dalam bilik. 154 00:07:24,330 --> 00:07:26,254 13? 155 00:07:26,254 --> 00:07:27,541 30? 156 00:07:27,541 --> 00:07:29,540 Kenapa saya tidak mengambil pendekatan sebelum ini apabila kita 157 00:07:29,540 --> 00:07:31,081 bercakap tentang tatasusunan dan memori? 158 00:07:31,081 --> 00:07:32,450 Kenapa saya tidak hanya mengatakan seperti 1000? 159 00:07:32,450 --> 00:07:35,260 nama Tiada siapa yang akan untuk lebih panjang daripada 1,000. 160 00:07:35,260 --> 00:07:36,706 Menolak kembali. 161 00:07:36,706 --> 00:07:38,005 >> PENONTON: [didengar] 162 00:07:38,005 --> 00:07:40,130 DAVID MALAN: Ya, ia membazir, betul, terutamanya 163 00:07:40,130 --> 00:07:44,630 jika kebanyakan nama-nama yang hanya lima atau 10 atau 15 watak-watak, yang amat membazir. 164 00:07:44,630 --> 00:07:45,810 Jadi, anda tahu apa? 165 00:07:45,810 --> 00:07:48,020 Ini adalah jenis soalan yang sukar. 166 00:07:48,020 --> 00:07:51,721 Sekarang, kita pasti boleh menganalisis English dan nama-nama mana-mana bahasa lain 167 00:07:51,721 --> 00:07:54,470 dan memikirkan, baik, apa yang purata average-- tidak benar-benar 168 00:07:54,470 --> 00:07:57,150 membantu us-- apa yang max adalah mungkin apa yang kita benar-benar mahu. 169 00:07:57,150 --> 00:07:59,920 Tetapi ternyata kita juga mempunyai beberapa pilihan ke atas jenis di sini. 170 00:07:59,920 --> 00:08:03,400 >> Dalam pangkalan data SQL biasa, anda telah sesuatu yang dipanggil bidang char 171 00:08:03,400 --> 00:08:07,505 dan juga varchar a, V-A-R, untuk medan char berubah-ubah. 172 00:08:07,505 --> 00:08:08,630 Dan perbezaan itu adalah ini. 173 00:08:08,630 --> 00:08:12,400 Medan char, anda pereka bentuk, perlu menentukan terlebih dahulu 174 00:08:12,400 --> 00:08:14,900 panjang sebenar padang. 175 00:08:14,900 --> 00:08:20,530 Jadi mungkin nama pertama seperti 20 berasa jenis selamat. 176 00:08:20,530 --> 00:08:23,950 Mungkin perlu melakukan beberapa Googling untuk melihat jika itu sudah cukup sebenarnya selamat. 177 00:08:23,950 --> 00:08:26,910 Ada mungkin nama dengan 21 watak-watak, tetapi buat masa ini, katakan 20 178 00:08:26,910 --> 00:08:27,620 adalah selamat. 179 00:08:27,620 --> 00:08:30,070 >> Medan char akan membayangkan di dalam pangkalan data yang anda 180 00:08:30,070 --> 00:08:33,289 adalah menggunakan 20 dan sentiasa 20 aksara. 181 00:08:33,289 --> 00:08:37,419 Sekarang jika ia hanya D-A-V-I-D, 15 daripada mereka hanya akan menjadi watak-watak kosong, 182 00:08:37,419 --> 00:08:40,450 tetapi anda masih menggunakan semua 20 bait. 183 00:08:40,450 --> 00:08:46,302 Medan varchar, sebaliknya, ertinya string harus sehingga 20 aksara 184 00:08:46,302 --> 00:08:48,260 tetapi jika ia hanya lima, anda hanya akan menggunakan 185 00:08:48,260 --> 00:08:51,270 lima, atau mungkin enam untuk nilai istimewa pada akhirnya, 186 00:08:51,270 --> 00:08:54,980 seperti yang kita dibincangkan 0 yang menandakan akhir yang bersifat 187 00:08:54,980 --> 00:08:56,790 urutan dalam ingatan. 188 00:08:56,790 --> 00:08:59,950 >> Oleh itu, apabila anda fikir anda boleh memilih char 189 00:08:59,950 --> 00:09:05,240 berbanding varchar, memandangkan keseimbangan? 190 00:09:05,240 --> 00:09:09,321 Char menggunakan banyak watak-watak, varchar menggunakan tidak lebih daripada itu banyak watak. 191 00:09:09,321 --> 00:09:10,196 PENONTON: [didengar] 192 00:09:10,196 --> 00:09:13,859 193 00:09:13,859 --> 00:09:16,900 DAVID MALAN: OK, apabila anda tahu panjang tali cukup menarik 194 00:09:16,900 --> 00:09:19,316 hanya menggunakan char, sebab kalau anda tahu, hanya meletakkan ia ke bawah. 195 00:09:19,316 --> 00:09:23,390 Dan mungkin yang benar untuk zip yang kod, di Amerika Syarikat, sekurang-kurangnya, 02138, 196 00:09:23,390 --> 00:09:26,660 ia sentiasa akan menjadi lima aksara sehingga anda menambah melontarkan yang empat. 197 00:09:26,660 --> 00:09:29,750 Tetapi anda mungkin mempunyai beberapa nilai untuk yang anda sentiasa tahu panjang. 198 00:09:29,750 --> 00:09:32,310 Atau mungkin simbol negeri, seperti NY New York, 199 00:09:32,310 --> 00:09:33,811 dan MA untuk Massachusetts di Amerika Syarikat. 200 00:09:33,811 --> 00:09:36,560 Mungkin anda mempunyai beberapa keadaan mana yang benar-benar munasabah, 201 00:09:36,560 --> 00:09:39,520 tetapi dengan logik itu, kenapa kita juga overthinking ini? 202 00:09:39,520 --> 00:09:41,800 Apa kata kita hanya menggunakan varchar dan kemudian kita hanya akan mempunyai 203 00:09:41,800 --> 00:09:46,730 sentiasa menggunakan dua watak anyway, atau sentiasa menggunakan lima watak anyway? 204 00:09:46,730 --> 00:09:50,300 Mengapa tidak hanya menyimpan varchar untuk segala-galanya, dengan logik itu? 205 00:09:50,300 --> 00:09:51,677 Mesti ada tangkapan. 206 00:09:51,677 --> 00:09:52,552 PENONTON: [didengar] 207 00:09:52,552 --> 00:09:54,952 208 00:09:54,952 --> 00:09:56,660 DAVID MALAN: Bolehkah menulis sesuatu salah. 209 00:09:56,660 --> 00:09:58,090 Jadi yang benar. 210 00:09:58,090 --> 00:10:01,030 Tetapi walaupun begitu, mereka tidak boleh menggunakan memori yang lebih daripada yang saya memperuntukkan. 211 00:10:01,030 --> 00:10:03,340 Saya masih mempunyai akhir mengatakan lebih panjang, 212 00:10:03,340 --> 00:10:06,780 sehingga mereka tidak boleh sengaja membuat kesilapan itu, tetapi pemikiran yang baik. 213 00:10:06,780 --> 00:10:10,510 Ia lebih halus, tetapi ia sangat berkaitan dengan perbincangan kita, sebenarnya, tatasusunan 214 00:10:10,510 --> 00:10:12,390 dan dikaitkan senarai awal. 215 00:10:12,390 --> 00:10:16,290 >> Ia ternyata bahawa pangkalan data, jika ia tahu bahawa semua nilai adalah 216 00:10:16,290 --> 00:10:19,250 daripada panjang tetap, walaupun beberapa orang-orang nilai adalah kosong, 217 00:10:19,250 --> 00:10:22,484 semacam estetika kosong, D-A-V-I-D dan kemudian 15 kosong, 218 00:10:22,484 --> 00:10:24,650 ternyata bahawa jika setiap medan adalah sama panjang, 219 00:10:24,650 --> 00:10:28,670 sama seperti array mempunyai semua barangan yang kembali ke belakang untuk kembali ke belakang supaya 220 00:10:28,670 --> 00:10:33,480 anda hanya boleh ditambah 1 untuk mendapatkan ke depan nilai, idea yang sama dalam jadual pangkalan data. 221 00:10:33,480 --> 00:10:37,550 Jika semua watak anda rentetan panjang yang sama, 222 00:10:37,550 --> 00:10:39,390 anda mempunyai apa yang dipanggil capaian rawak. 223 00:10:39,390 --> 00:10:41,850 Jika semua rentetan daripada panjang 20, anda tidak hanya 224 00:10:41,850 --> 00:10:45,230 melakukan campur 1 anda hanya melakukan plus 20, ditambah 20, ditambah 20, ditambah 20, 225 00:10:45,230 --> 00:10:48,775 dan anda dengan cepat boleh menatal atau mencari melalui semua data anda. 226 00:10:48,775 --> 00:10:54,420 >> Medan char berubah, sebaliknya, tidak selalu mempunyai 20 aksara. 227 00:10:54,420 --> 00:10:58,000 Ia mungkin mempunyai 20 dan kemudian 15 dan kemudian 19 dan kemudian 10, 228 00:10:58,000 --> 00:11:00,720 dan jadi jika anda ingin cari melaluinya, anda tidak boleh hanya membuta tuli 229 00:11:00,720 --> 00:11:03,050 menambah 20 bytes untuk sampai ke satu depan. 230 00:11:03,050 --> 00:11:07,280 Anda benar-benar perlu mencari melalui kerana pinggir struktur data, 231 00:11:07,280 --> 00:11:08,340 jika anda akan, adalah kasar. 232 00:11:08,340 --> 00:11:11,480 Ia jenis pergi dalam dan di luar berdasarkan tempoh sebenar tali. 233 00:11:11,480 --> 00:11:14,460 Oleh itu, apabila anda tahu panjang, kerana Kareem berkata, gunakan medan char, 234 00:11:14,460 --> 00:11:16,460 kerana anda boleh mendapat yang kecekapan yang 235 00:11:16,460 --> 00:11:19,170 dapat mencari melalui lebih cepat apabila anda sedang mencari untuk data, 236 00:11:19,170 --> 00:11:20,550 sebaliknya menggunakan pembolehubah. 237 00:11:20,550 --> 00:11:24,450 >> Malangnya, saya tidak mempunyai jawapan yang baik berapa lama nama yang sepatutnya, 238 00:11:24,450 --> 00:11:26,360 tetapi untuk sesuatu seperti nama, saya akan berkata 239 00:11:26,360 --> 00:11:28,470 varchar adalah perkara biasa kerana ia tidak akan 240 00:11:28,470 --> 00:11:30,430 menjadi panjang tetap untuk semua orang. 241 00:11:30,430 --> 00:11:33,650 20, saya tidak tahu, 20 merasakan ketat sedikit. 242 00:11:33,650 --> 00:11:36,460 Mari kita katakan 50, 50. 243 00:11:36,460 --> 00:11:39,210 Ia tidak benar-benar kos anda bahawa banyak lagi untuk berkata 50 daripada 40, 244 00:11:39,210 --> 00:11:41,260 tetapi pada satu ketika, anda perlu untuk membuat panggilan penghakiman. 245 00:11:41,260 --> 00:11:43,090 >> Sangat biasa, terus-terang, untuk [? sejarah?] 246 00:11:43,090 --> 00:11:47,670 sebab, walaupun ia adalah berlebihan, iaitu 255, kerana sedikit masa lalu, 247 00:11:47,670 --> 00:11:51,440 dalam sistem pangkalan data yang popular, seperti MySQL, alat sumber terbuka yang percuma 248 00:11:51,440 --> 00:11:53,790 bahawa banyak syarikat-syarikat seperti walaupun Facebook digunakan, 249 00:11:53,790 --> 00:11:56,654 ini adalah lalai maksimum supaya orang hanya pergi dengannya. 250 00:11:56,654 --> 00:11:59,070 Jadi tidak munasabah, tetapi kami akan menggunakan lebih sedikit gerak hati 251 00:11:59,070 --> 00:12:02,970 dan berkata, pasti 50, itu mungkin sedikit berlebihan. 252 00:12:02,970 --> 00:12:05,720 >> Jantina, saya suka enum, dan kami dengan itu boleh 253 00:12:05,720 --> 00:12:08,760 menghitung lelaki atau perempuan, atau mungkin lebih cekap, 254 00:12:08,760 --> 00:12:13,420 m atau f atau beberapa perlambangan lain, tetapi enum berasa seperti pilihan yang baik di sana. 255 00:12:13,420 --> 00:12:16,740 Untuk menjadi jelas, jantina hanya boleh menjadi varchar a, 256 00:12:16,740 --> 00:12:19,090 dan kita boleh hanya semua bersetuju orang yang bagus, 257 00:12:19,090 --> 00:12:21,010 untuk sentiasa meletakkan nilai yang sama di sana. 258 00:12:21,010 --> 00:12:22,720 Lelaki atau perempuan atau barang kecil. 259 00:12:22,720 --> 00:12:27,800 >> Tetapi masalahnya kemudian, adalah bahawa kita boleh membuat kesilapan, sebagai [didengar] dicadangkan 260 00:12:27,800 --> 00:12:29,140 sebelum ini dalam konteks yang berbeza. 261 00:12:29,140 --> 00:12:32,780 Jika kita membuat kesilapan, kita boleh mendapatkan nilai-nilai yang tidak betul dalam pangkalan data kami. 262 00:12:32,780 --> 00:12:36,320 Jadi apa yang baik mengenai pangkalan data seperti Oracle dan MySQL dan lain-lain, 263 00:12:36,320 --> 00:12:39,280 adalah bahawa anda mempunyai ini terakhir lapisan pertahanan di mana 264 00:12:39,280 --> 00:12:43,010 pentadbir DBA, pangkalan data anda, sesiapa yang mereka bentuk jadual ini seperti kita 265 00:12:43,010 --> 00:12:46,440 adalah secara lisan, boleh meletakkan ke dalam tempat enum yang yang 266 00:12:46,440 --> 00:12:51,250 melindungi dengan menyatakan lelaki, wanita, dan sebagainya tidak ada yang 267 00:12:51,250 --> 00:12:54,230 lagi yang tidak programmer boleh sengaja memasukkan apa-apa nilai lain. 268 00:12:54,230 --> 00:12:55,480 Jadi ini akan menjadi satu perkara yang baik. 269 00:12:55,480 --> 00:12:56,660 Ini adalah ciri. 270 00:12:56,660 --> 00:13:00,760 >> Jadi ID, menganggap ID angka, ia mungkin perlu menjadi integer positif. 271 00:13:00,760 --> 00:13:04,380 Dan kadang-kadang kita tidak mempunyai peluang untuk berbincang panjang. 272 00:13:04,380 --> 00:13:06,830 Anda tidak akan biasanya menentukan bilangan di sini, 273 00:13:06,830 --> 00:13:11,310 anda sebaliknya akan menentukan ini adalah satu int, int atau besar, 274 00:13:11,310 --> 00:13:12,980 kerana mereka biasanya dipanggil. 275 00:13:12,980 --> 00:13:18,840 Tetapi biasanya, integer akan, katakan, 4 bait. 276 00:13:18,840 --> 00:13:23,694 Dan jika ia 4 bait, itulah berapa banyak bit? 277 00:13:23,694 --> 00:13:24,630 >> PENONTON: [didengar] 278 00:13:24,630 --> 00:13:26,610 >> DAVID MALAN: 32 bit. 279 00:13:26,610 --> 00:13:30,270 Jadi bagaimana ramai pengguna kita boleh mempunyai dalam pangkalan data kami jika mereka semua mempunyai ID 280 00:13:30,270 --> 00:13:33,320 dan ID ini telah menjadi unik? 281 00:13:33,320 --> 00:13:36,780 32 bit bermakna kita mempunyai corak satu, dua, tiga, empat, five-- 282 00:13:36,780 --> 00:13:41,000 jadi bagaimana banyak corak yang berbeza sifar dan orang-orang yang anda boleh mempunyai jika terdapat 32? 283 00:13:41,000 --> 00:13:43,235 Itu perkara yang sama seperti meminta apa yang dua orang ke 32? 284 00:13:43,235 --> 00:13:46,472 285 00:13:46,472 --> 00:13:48,430 Ia adalah satu jumlah yang besar yang Saya tidak boleh agak mendapatkan hak, 286 00:13:48,430 --> 00:13:50,270 tetapi saya tahu ia adalah kira-kira 4 bilion. 287 00:13:50,270 --> 00:13:53,970 Jadi ini bermakna jadual pangkalan data anda boleh mempunyai pengguna empat bilion dan itu sahaja. 288 00:13:53,970 --> 00:13:56,410 >> Jadi ini adalah satu yang menarik reka bentuk implikasi. 289 00:13:56,410 --> 00:14:00,840 Beberapa baik syarikat telah membuat keputusan, mungkin tidak begitu banyak 290 00:14:00,840 --> 00:14:04,860 untuk jadual pengguna mereka, kerana mempunyai pengguna 4 bilion adalah satu masalah yang jarang berlaku. 291 00:14:04,860 --> 00:14:08,410 Ini adalah jenis gaya Facebook masalah, bukan masalah syarikat biasa. 292 00:14:08,410 --> 00:14:12,670 Tetapi mungkin jika anda mempunyai log transaksi atau beberapa jenis data yang sentiasa 293 00:14:12,670 --> 00:14:15,610 mendapat ditulis ke dalam pangkalan data anda yang benar-benar boleh mempunyai berbilion-bilion 294 00:14:15,610 --> 00:14:18,900 dan berbilion-bilion baris, dan anda menggunakan integer untuk itu, 295 00:14:18,900 --> 00:14:22,750 apa yang akan berlaku sebaik sahaja anda berdayung nombor 4 bilion 296 00:14:22,750 --> 00:14:26,210 dan kemudian anda cuba untuk memasukkan 4 billionth dan 1, boleh dikatakan? 297 00:14:26,210 --> 00:14:29,610 Saya memudahkan nombor sedikit. 298 00:14:29,610 --> 00:14:33,740 >> Anda boleh mengurangkan, saya maksudkan anda perlu mengendalikan ia entah bagaimana. 299 00:14:33,740 --> 00:14:37,910 Dan apa yang komputer biasanya akan lakukan, memikirkannya walaupun dari pagi ini, 300 00:14:37,910 --> 00:14:42,430 jika anda mempunyai nilai 4-bit seperti 1, 1, 1, 1, yang, 301 00:14:42,430 --> 00:14:44,920 hanya untuk mengikat pagi bersama-sama untuk sebelah petang, apa 302 00:14:44,920 --> 00:14:48,369 adakah nombor ini mewakili dalam binari? 303 00:14:48,369 --> 00:14:49,410 OK, kita akan membuat ia lebih mudah. 304 00:14:49,410 --> 00:14:53,310 Apakah nombor ini mewakili dalam binari? 305 00:14:53,310 --> 00:14:56,794 OK, kita akan membuat ia lebih mudah, apa adakah ini mewakili dalam binari? 306 00:14:56,794 --> 00:14:57,460 PENONTON: Tiga. 307 00:14:57,460 --> 00:14:59,670 DAVID MALAN: Tiga, kerana kita mempunyai orang-orang yang column-- 308 00:14:59,670 --> 00:15:00,450 [Ketawa] 309 00:15:00,450 --> 00:15:01,350 Huh! 310 00:15:01,350 --> 00:15:03,980 Kami mempunyai ruang orang-orang yang dan lajur berdua-dua itu. 311 00:15:03,980 --> 00:15:07,250 Jadi andaikan bahawa, sesungguhnya, kami [? kawasan dekat?] tidak 32 bit, 312 00:15:07,250 --> 00:15:13,440 tetapi ia adalah dua bit, kita boleh mengira dari nombor 0, 1, 2, 3 pengguna, 313 00:15:13,440 --> 00:15:18,040 dan kemudian kita jenis kembali kepada pengguna 00 lagi. 314 00:15:18,040 --> 00:15:19,739 Jadi ini adalah apa yang biasanya berlaku. 315 00:15:19,739 --> 00:15:22,780 Jika anda pernah mendengar expression-- yang mungkin tidak mempunyai, tetapi jika anda ada-- 316 00:15:22,780 --> 00:15:26,500 limpahan integer, di mana anda menjaga Melibas semua bit anda 317 00:15:26,500 --> 00:15:29,640 menjadi nilai-nilai yang paling besar mungkin, dan kemudian anda keluar bit, 318 00:15:29,640 --> 00:15:30,850 apa yang biasanya akan berlaku? 319 00:15:30,850 --> 00:15:32,280 Mengapa saya berkata 00? 320 00:15:32,280 --> 00:15:33,220 Nah, ini adalah tiga. 321 00:15:33,220 --> 00:15:34,230 Bagaimana saya mewakili 4? 322 00:15:34,230 --> 00:15:36,890 323 00:15:36,890 --> 00:15:38,915 Bagaimana saya mewakili untuk nombor 4 dalam binari? 324 00:15:38,915 --> 00:15:39,790 PENONTON: [didengar] 325 00:15:39,790 --> 00:15:41,780 DAVID MALAN: One-- yeah, tidak mengatakan 100 per se, 326 00:15:41,780 --> 00:15:44,190 kerana ia mempunyai salah yang konotasi, tetapi 1-0-0. 327 00:15:44,190 --> 00:15:48,920 Supaya bilangan 1-0-0 memang betul, tetapi jika anda hanya mempunyai dua bit, 328 00:15:48,920 --> 00:15:50,820 apa yang anda benar-benar dilakukan? 329 00:15:50,820 --> 00:15:53,219 Anda telah dilancarkan ke 00. 330 00:15:53,219 --> 00:15:54,760 Dan sesungguhnya, itulah yang akan berlaku. 331 00:15:54,760 --> 00:15:56,884 Sebenarnya, anda boleh berfikir mengenai ini lebih akrab. 332 00:15:56,884 --> 00:15:59,350 Jika anda masih ingat, apa, 16 tahun yang lalu, dunia 333 00:15:59,350 --> 00:16:03,380 sepatutnya berakhir apabila masalah Y2K itu berlaku. 334 00:16:03,380 --> 00:16:04,330 Mengapa demikian? 335 00:16:04,330 --> 00:16:08,170 Well kebanyakan komputer, untuk keputusan yang wajar, 336 00:16:08,170 --> 00:16:15,320 telah menyimpan nombor seperti tahun 1975 atau tahun 1999 337 00:16:15,320 --> 00:16:19,010 dengan hanya menggunakan dua digit dalam ingatan komputer. 338 00:16:19,010 --> 00:16:21,950 Jadi, sudah tentu, apa yang berlaku apabila anda sampai ke tahun 2000, 339 00:16:21,950 --> 00:16:25,790 anda pergi ke ini, atau sebaliknya, yeah. 340 00:16:25,790 --> 00:16:30,120 Jadi, anda pergi ke tahun 2000, tetapi jika anda hanya menggunakan dua digit ia kelihatan 341 00:16:30,120 --> 00:16:32,660 seperti tahun 00 dan jadi anda telah dilancarkan ke atas. 342 00:16:32,660 --> 00:16:36,820 Dan ini adalah mengapa banyak sistem diperlukan untuk dikemaskini pada masa itu. 343 00:16:36,820 --> 00:16:42,500 >> Maka dengan itu berkata, syarikat-syarikat seperti Facebook berlari terhadap ini. 344 00:16:42,500 --> 00:16:46,147 Jadi satu-satunya cara untuk menangani keadaan, terus-terang, adalah untuk menjangka ia. 345 00:16:46,147 --> 00:16:47,980 Atau cara yang paling bersih untuk menangani keadaan ini 346 00:16:47,980 --> 00:16:50,330 adalah untuk menjangka ia supaya anda tidak perlu membuat perubahan kemudian. 347 00:16:50,330 --> 00:16:51,970 Jadi, daripada 8 bait, anda tahu apa? 348 00:16:51,970 --> 00:16:54,261 Saya akan menjadi pemikiran ke hadapan di sini, walaupun ia 349 00:16:54,261 --> 00:16:56,760 yang optimis kecil yang kita akan mempunyai 4 bilion 350 00:16:56,760 --> 00:16:58,850 dan pengguna 1 pada laman web kami. 351 00:16:58,850 --> 00:17:01,790 Tetapi mari kita hanya menggunakan 8 bait, atau 64 bit, yang secara amnya akan menjadi 352 00:17:01,790 --> 00:17:05,640 dipanggil integer besar, sangat teknikal. 353 00:17:05,640 --> 00:17:10,280 Dan itu hanya bermakna anda boleh mempunyai lebih digit dalam nombor anda. 354 00:17:10,280 --> 00:17:12,599 Tetapi ini adalah penting keputusan reka bentuk, 355 00:17:12,599 --> 00:17:16,400 kerana jika anda memilih nombor yang mempunyai terlalu sedikit cebisan ekspresi 356 00:17:16,400 --> 00:17:19,089 anda sebenarnya boleh mewujudkan pepijat dalam perisian anda. 357 00:17:19,089 --> 00:17:21,750 >> Baiklah, jadi mari kita mengakhiri dengan e-mel dan alamat pos. 358 00:17:21,750 --> 00:17:26,369 Supaya e-mel, berapa lama perlu alamat e-mel menjadi? 359 00:17:26,369 --> 00:17:26,869 50. 360 00:17:26,869 --> 00:17:29,220 Saya benar-benar tidak tahu, tetapi ia mungkin sesuatu seperti itu, 361 00:17:29,220 --> 00:17:32,261 kerana jika tidak, tiada siapa yang akan menulis anda jika ia terlalu lama, jadi 50, 362 00:17:32,261 --> 00:17:33,360 mari kita pergi dengan itu buat masa sekarang. 363 00:17:33,360 --> 00:17:35,770 Alamat pos, berapa lama yang perlu? 364 00:17:35,770 --> 00:17:38,325 365 00:17:38,325 --> 00:17:39,200 PENONTON: [didengar] 366 00:17:39,200 --> 00:17:41,900 367 00:17:41,900 --> 00:17:43,890 >> DAVID MALAN: Ia bukan hanya poskod, walaupun. 368 00:17:43,890 --> 00:17:45,720 Alamat pos, saya dengar. 369 00:17:45,720 --> 00:17:50,720 Jadi ini adalah seperti 1 Brattle Square, koma, Cambridge Mass., koma, 02138. 370 00:17:50,720 --> 00:17:53,860 Dan sebenarnya, saya hanya tarik sehingga helaian kerja yang sedikit di sini. 371 00:17:53,860 --> 00:17:56,510 Ini berasa seperti ia peluang yang tidak dijawab. 372 00:17:56,510 --> 00:18:01,480 Jika kita mempunyai 1 Brattle Square, koma, Cambridge MA 02138, 373 00:18:01,480 --> 00:18:04,510 Saya rasa seperti kita boleh melakukan lebih baik daripada alamat hanya pos. 374 00:18:04,510 --> 00:18:07,100 Apa kata kita meletup ini sedikit? 375 00:18:07,100 --> 00:18:08,030 Apa yang saya mendapat di? 376 00:18:08,030 --> 00:18:10,970 Apa yang patut kita sebaliknya mempunyai untuk baris kami di sini, mungkin? 377 00:18:10,970 --> 00:18:12,260 >> PENONTON: [didengar] 378 00:18:12,260 --> 00:18:17,579 >> DAVID MALAN: Ya, jadi mari kita memanggilnya street_number, 379 00:18:17,579 --> 00:18:20,620 dan garis bawah hanyalah biasa cara untuk mempunyai apa yang kelihatan seperti ruang, 380 00:18:20,620 --> 00:18:22,360 tetapi ia tidak, sebenarnya. 381 00:18:22,360 --> 00:18:26,240 Jalan, dan kemudian city-- maaf? 382 00:18:26,240 --> 00:18:28,440 >> PENONTON: [didengar] 383 00:18:28,440 --> 00:18:29,690 DAVID MALAN: Kami boleh melakukannya. 384 00:18:29,690 --> 00:18:30,702 Line satu, baris dua. 385 00:18:30,702 --> 00:18:32,410 Mengapa tidak kita akan terus ia mudah untuk sekarang, 386 00:18:32,410 --> 00:18:34,840 tetapi itu sama sekali keputusan diterima. 387 00:18:34,840 --> 00:18:38,180 Dan kemudian negeri, dan kemudian mari kita menjadi sedikit US-centric buat masa ini 388 00:18:38,180 --> 00:18:42,040 dan hanya melakukan kod zip, hanya kerana ia akan membawa kepada kesilapan yang menarik 389 00:18:42,040 --> 00:18:43,090 atau masalah di sini. 390 00:18:43,090 --> 00:18:44,655 Jadi andaikan bahawa sekarang adalah alamat kami. 391 00:18:44,655 --> 00:18:47,280 Ia sedikit lebih menjengkelkan yang kami mempunyai semua lagi bidang ini, 392 00:18:47,280 --> 00:18:49,200 tetapi kini kita boleh tag perkara yang sedikit lebih baik. 393 00:18:49,200 --> 00:18:53,210 >> nombor Jadi sekarang jalan mungkin tidak boleh char, sekiranya ia? 394 00:18:53,210 --> 00:18:54,835 Apa yang sepatutnya? 395 00:18:54,835 --> 00:18:55,710 PENONTON: [didengar] 396 00:18:55,710 --> 00:18:57,835 DAVID MALAN: Mungkin, sebilangan seperti integer lagi? 397 00:18:57,835 --> 00:19:00,170 A integer besar? 398 00:19:00,170 --> 00:19:02,170 Anda mungkin tidak tinggal 4 billion Main Street 399 00:19:02,170 --> 00:19:03,490 atau apa-apa gila seperti itu. 400 00:19:03,490 --> 00:19:06,850 Jadi integer mungkin baik, tetapi mempunyai sesiapa 401 00:19:06,850 --> 00:19:13,880 pernah hidup di alamat seperti 1A Brattle Square, atau 1 dan 1/2? 402 00:19:13,880 --> 00:19:17,030 Perkara-perkara ini wujud, malangnya, walaupun anda tidak pernah diam di sana, 403 00:19:17,030 --> 00:19:21,240 terdapat anomali ini seperti 1A apartmen, 1B, 1C. 404 00:19:21,240 --> 00:19:24,260 Jadi, anda tahu apa, kita mungkin tidak perlu pergi dengan integer, 405 00:19:24,260 --> 00:19:27,440 jika tidak, kita akan kehilangan beberapa jualan. 406 00:19:27,440 --> 00:19:29,920 >> bidang Char, mungkin? 407 00:19:29,920 --> 00:19:30,870 Saya tidak tahu berapa lama. 408 00:19:30,870 --> 00:19:33,370 Ia mungkin tidak akan menjadi yang lama, jadi 10 atau sesuatu. 409 00:19:33,370 --> 00:19:34,950 Tiada siapa yang akan menulis nombor yang lebih lama, mungkin. 410 00:19:34,950 --> 00:19:37,070 Tetapi sekali lagi, kita harus mungkin memberi lebih banyak berfikir untuk itu. 411 00:19:37,070 --> 00:19:39,900 Mungkin google, melakukan kajian, tetapi kita akan pergi dengan keberanian kita buat masa ini. 412 00:19:39,900 --> 00:19:44,565 Jalan-jalan, char, 50, saya tidak tahu. 413 00:19:44,565 --> 00:19:46,940 Pada satu ketika, tiada sesiapa yang akan untuk menulis pada sampul surat, 414 00:19:46,940 --> 00:19:49,350 juga, jadi tidak mungkin beberapa batas atas sana. 415 00:19:49,350 --> 00:19:54,200 City, sama, pasti, jadi char 50. 416 00:19:54,200 --> 00:19:59,120 >> Negeri, boleh menjadi US-centric buat masa sekarang. 417 00:19:59,120 --> 00:20:01,850 Jadi ia boleh menjadi senarai, begitu baik panggilan penghakiman, negeri. 418 00:20:01,850 --> 00:20:04,000 Ia boleh menjadi seperti dua watak. 419 00:20:04,000 --> 00:20:06,140 Jadi sebenarnya, mungkin, saya terus berkata char. 420 00:20:06,140 --> 00:20:09,420 Saya mungkin bermakna varchar, hanya untuk beberapa kecekapan, 421 00:20:09,420 --> 00:20:12,240 tetapi kita akan kembali kepada bahawa keputusan dalam seketika. 422 00:20:12,240 --> 00:20:16,150 Boleh menjadi char panjang 2 untuk negeri. 423 00:20:16,150 --> 00:20:20,670 Jika di Amerika Syarikat mereka mempunyai, seperti MA, Massachusetts, NY, New York, NJ, New 424 00:20:20,670 --> 00:20:22,100 Jersey, dan sebagainya. 425 00:20:22,100 --> 00:20:23,630 Jadi ia boleh ditetapkan pada itu. 426 00:20:23,630 --> 00:20:25,900 DC Washington DC. 427 00:20:25,900 --> 00:20:29,915 >> Tetapi saya fikir, Olivier, anda cadangan pendekatan lain. 428 00:20:29,915 --> 00:20:30,790 PENONTON: [didengar] 429 00:20:30,790 --> 00:20:33,670 DAVID MALAN: Ya, jadi ia adalah satu sedikit menjengkelkan menaip, 430 00:20:33,670 --> 00:20:37,890 tetapi enum yang mungkin lebih masuk akal, kerana dengan cara ini, sekurang-kurangnya di Amerika Syarikat, 431 00:20:37,890 --> 00:20:41,320 anda boleh menghitung, jika tediously, tetapi anda melakukannya hanya sekali dalam pangkalan data anda 432 00:20:41,320 --> 00:20:47,480 dan tidak lagi perlu memikirkan , semua 50 Kod dua watak. 433 00:20:47,480 --> 00:20:48,660 Jadi saya suka enum. 434 00:20:48,660 --> 00:20:51,720 Mari kita berpegang dengan yang di sana, kerana ia semacam menguatkuasakan lebih ketegasan. 435 00:20:51,720 --> 00:20:53,620 Dan kemudian zip kod? 436 00:20:53,620 --> 00:20:55,306 Saya rasa Andrew mempunyai pemikiran pada itu 437 00:20:55,306 --> 00:20:56,180 PENONTON: [didengar] 438 00:20:56,180 --> 00:20:57,240 DAVID MALAN: Ya, lima atau sembilan. 439 00:20:57,240 --> 00:20:58,323 Mari kita memastikan ia mudah. 440 00:20:58,323 --> 00:20:59,380 Hanya melakukan lima untuk sekarang. 441 00:20:59,380 --> 00:21:03,070 Tetapi mungkin saya boleh hanya melakukan integer, bukan? 442 00:21:03,070 --> 00:21:08,750 Saya boleh, tetapi anda tahu apa, saya membuat kesilapan ini sekali, dalam erti kata lain. 443 00:21:08,750 --> 00:21:13,110 Tahun lalu, saya telah berhijrah dari Microsoft Outlook untuk Gmail, 444 00:21:13,110 --> 00:21:18,640 dan Outlook mempunyai cara mengeksport semua kenalan anda sebagai fail Excel, 445 00:21:18,640 --> 00:21:21,280 fail CSV, dipisahkan oleh koma fail nilai. 446 00:21:21,280 --> 00:21:23,950 Dan saya telah membuat kesilapan, saya berfikir, double klik ia, 447 00:21:23,950 --> 00:21:27,380 sekali saya turun eksport, untuk memastikan ia kelihatan seperti yang saya harapkan. 448 00:21:27,380 --> 00:21:31,320 Saya mesti telah melanda Simpan atau membiarkan auto-save tendangan dalam atau sesuatu. 449 00:21:31,320 --> 00:21:35,100 Kerana apabila saya kemudiannya diimport ke dalam Gmail, ia semua bekerja. 450 00:21:35,100 --> 00:21:39,910 Tetapi bagi tahun, hingga ke hari ini, dan Saya melakukan ini lima, 10 tahun yang lalu, 451 00:21:39,910 --> 00:21:44,380 Saya masih mencari rakan-rakan yang mempunyai alamat yang kelihatan seperti ini. 452 00:21:44,380 --> 00:21:45,700 Mengapa? 453 00:21:45,700 --> 00:21:47,900 >> PENONTON: [didengar] 454 00:21:47,900 --> 00:21:50,650 >> DAVID MALAN: Ia mengambil masa 0, baik, sebaliknya, ia 455 00:21:50,650 --> 00:21:53,810 mengambil zip seluruh kod sebagai nombor, dan oleh itu ia 456 00:21:53,810 --> 00:21:56,590 yang awalan 0 yang bermaksud ia tidak bermakna. 457 00:21:56,590 --> 00:21:59,470 Dan sebagainya 2138 seolah-olah menjadi poskod saya. 458 00:21:59,470 --> 00:22:07,100 Dan ini, terus-terang, Excel menjengkelkan ciri di mana saya fikir secara lalai, 459 00:22:07,100 --> 00:22:10,980 walaupun ia bertujuan untuk hanya menjadi teks, Microsoft Excel 460 00:22:10,980 --> 00:22:13,780 memutuskan, izinkan saya membantu, dan oh, saya hanya melihat nombor. 461 00:22:13,780 --> 00:22:15,290 Mari kita merawat ini sebagai nombor. 462 00:22:15,290 --> 00:22:16,790 Dan ia truncates sifar terkemuka. 463 00:22:16,790 --> 00:22:19,165 >> Aku bersumpah kepada Allah, setiap pasangan bulan saya mencari alamat, 464 00:22:19,165 --> 00:22:22,300 dan keluar dari sejenis OCD, saya kembali dalam dan tambah 0, walaupun saya tidak pernah 465 00:22:22,300 --> 00:22:23,700 menghantar orang surat atau apa-apa. 466 00:22:23,700 --> 00:22:25,510 Tetapi saya masih mencari sisa-sisa ini. 467 00:22:25,510 --> 00:22:28,820 Jadi ini adalah untuk mengatakan, ini idea yang baik? 468 00:22:28,820 --> 00:22:31,610 OK, tidak, kerana sesiapa sahaja dalam Massachusetts, di kawasan ini, 469 00:22:31,610 --> 00:22:33,270 akan mempunyai o membawa mereka. 470 00:22:33,270 --> 00:22:38,070 Jadi mari kita pergi dengan seperti char, mungkin, lima. 471 00:22:38,070 --> 00:22:41,450 >> Dan di sini, menyedari bahawa kita boleh menggunakan enum dan kami 472 00:22:41,450 --> 00:22:44,600 boleh menghitung 10,000 mungkin kod zip, 473 00:22:44,600 --> 00:22:48,530 tetapi yang terasa seperti ia mungkin menyeberangi garis, seperti, manfaat. 474 00:22:48,530 --> 00:22:51,350 Jika anda perlu input yang banyak data ke dalam pangkalan data anda 475 00:22:51,350 --> 00:22:52,940 untuk melindungi sesuatu. 476 00:22:52,940 --> 00:22:57,400 Jadi char sedar anda boleh menaip dalam H-E-L-L-O sebagai poskod anda, 477 00:22:57,400 --> 00:22:59,180 yang tidak, jelas, angka. 478 00:22:59,180 --> 00:23:01,680 Jadi tidak ada cara, dalam pangkalan data yang biasa, 479 00:23:01,680 --> 00:23:05,561 untuk menentukan hanya angka dan hanya lima aksara, 480 00:23:05,561 --> 00:23:07,310 jadi kita akan mempunyai untuk berbuat demikian dalam kod. 481 00:23:07,310 --> 00:23:11,100 Kami akan berbuat demikian dalam PHP atau Java atau apa sahaja bahasa kita 482 00:23:11,100 --> 00:23:14,230 menggunakan pada pelayan untuk menguatkuasakan yang jenis kekangan. 483 00:23:14,230 --> 00:23:14,860 >> Suara burung hantu! 484 00:23:14,860 --> 00:23:18,322 Baiklah, jadi apa-apa soalan sahaja lagi? 485 00:23:18,322 --> 00:23:19,780 Mari kita membuat satu lagi keputusan reka bentuk. 486 00:23:19,780 --> 00:23:22,500 Ia ternyata bahawa anda juga boleh memilih, 487 00:23:22,500 --> 00:23:26,600 apabila mereka bentuk pangkalan data SQL, atau database-- hubungan biasa di mana 488 00:23:26,600 --> 00:23:28,790 sekali lagi, hubungan hanya bermakna baris dan lajur, 489 00:23:28,790 --> 00:23:35,500 itulah bagaimana anda menyusun data-- anda dan sedar bahawa apa yang bermakna ini, 490 00:23:35,500 --> 00:23:37,740 Saya telah mengelirukan dalam itu, saya drawing-- ini 491 00:23:37,740 --> 00:23:40,190 adalah apa yang dipanggil skema untuk jadual pangkalan data. 492 00:23:40,190 --> 00:23:42,810 Ini seperti yang spesifikasi untuk table-- yang 493 00:23:42,810 --> 00:23:48,040 tetapi apabila ia datang masa untuk benar-benar menyimpan data, 494 00:23:48,040 --> 00:23:52,081 dan kami akan melakukan ini hanya dengan contoh di sini. 495 00:23:52,081 --> 00:23:55,080 Saya akan membuka Excel, kerana Excel akan memberikan saya baris dan lajur. 496 00:23:55,080 --> 00:23:58,050 Dan itulah apa Oracle dan MySQL dan alat-alat lain akan memberikan saya. 497 00:23:58,050 --> 00:24:02,270 Jadi saya hanya akan menggunakan ia demi perbincangan ini. 498 00:24:02,270 --> 00:24:05,250 Biar saya pergi ke hadapan dan membuka dokumen perwakilan di sini, 499 00:24:05,250 --> 00:24:06,310 zum dalam sedikit. 500 00:24:06,310 --> 00:24:15,200 Jadi misalnya, tajuk kami kini nama pertama, nama akhir, jantina, ID, 501 00:24:15,200 --> 00:24:20,980 e-mel, nombor jalan, jalan, whoops. 502 00:24:20,980 --> 00:24:25,710 Jalan, bandar, negeri, hanya kira-kira sesuai pada skrin. 503 00:24:25,710 --> 00:24:29,080 >> Jadi apa ini bermakna bahawa apabila pengguna pertama mendaftar untuk laman web saya, 504 00:24:29,080 --> 00:24:32,880 ia akan menjadi sesuatu yang seperti David, Malan, m, katakan 1, 505 00:24:32,880 --> 00:24:42,910 malan@harvard.edu, nombor jalan akan menjadi seperti 1 Brattle Square, Cambridge, MA, 506 00:24:42,910 --> 00:24:44,780 02138, dan kemudian sebagainya. 507 00:24:44,780 --> 00:24:48,290 Oleh itu, apabila saya mengatakan bahawa pangkalan data hubungan atau pangkalan data SQL adalah baris dan lajur, 508 00:24:48,290 --> 00:24:49,350 Saya maksudkan ini. 509 00:24:49,350 --> 00:24:51,900 Bahawa data sebenar disimpan dalam baris dan lajur. 510 00:24:51,900 --> 00:24:53,950 Ini adalah hanya satu kebetulan, yang kita bercakap, 511 00:24:53,950 --> 00:24:56,033 dan saya hanya melukis di dalam baris dan lajur. 512 00:24:56,033 --> 00:24:58,320 Ini hanyalah skema, definisi yang bersifat menyeluruh. 513 00:24:58,320 --> 00:25:01,640 >> Jadi bidang ini di sini, atau setara, di sana, 514 00:25:01,640 --> 00:25:06,270 yang merupakan bidang yang anda fikir Saya cenderung untuk mencari di jika saya pengguna 515 00:25:06,270 --> 00:25:09,200 atau jika saya pentadbir pangkalan data? 516 00:25:09,200 --> 00:25:12,426 Seperti, apa bidang aku sebenarnya akan mencari di? 517 00:25:12,426 --> 00:25:13,830 >> PENONTON: [didengar] 518 00:25:13,830 --> 00:25:17,690 >> DAVID MALAN: Nama, yeah jadi Saya suka hakikat bahawa- yeah, 519 00:25:17,690 --> 00:25:19,750 e-mel mungkin agak biasa. 520 00:25:19,750 --> 00:25:21,440 Maaf, anda berkata nama. 521 00:25:21,440 --> 00:25:24,030 Jadi maybe-- dan sekali lagi, kami jenis bercakap dalam abstrak. 522 00:25:24,030 --> 00:25:25,988 Saya tidak tahu mengapa anda sedang dapat mencari nama, 523 00:25:25,988 --> 00:25:29,340 tetapi yang terasa munasabah jika anda sedang mencari pengguna. 524 00:25:29,340 --> 00:25:31,170 Mungkin menyatakan, pasti, ID. 525 00:25:31,170 --> 00:25:34,100 526 00:25:34,100 --> 00:25:36,160 >> Dan ia adalah satu licin cerun, kerana saya boleh 527 00:25:36,160 --> 00:25:38,890 jayakan senario di mana mungkin bos saya telah bertanya kepada saya, 528 00:25:38,890 --> 00:25:40,417 berapa ramai lelaki yang kita ada di laman web kami? 529 00:25:40,417 --> 00:25:42,000 Berapa ramai wanita yang kita ada di laman web kami? 530 00:25:42,000 --> 00:25:45,210 Dan demikian pada ketika itu, anda mungkin mahu untuk mencari di padang jantina, juga, 531 00:25:45,210 --> 00:25:45,940 dan apa-apa lagi. 532 00:25:45,940 --> 00:25:47,350 Jadi ada keseimbangan di sini. 533 00:25:47,350 --> 00:25:49,180 Sekali lagi, tidak ada jawapan yang betul, tetapi ada 534 00:25:49,180 --> 00:25:53,760 adalah ciri dalam kebanyakan pangkalan data SQL dikenali sebagai indexing, di mana 535 00:25:53,760 --> 00:25:56,100 anda, pereka bentuk, yang pentadbir pangkalan data, 536 00:25:56,100 --> 00:26:01,730 dapat membuat keputusan terlebih dahulu yang bidang pangkalan data perlu mengoptimumkan 537 00:26:01,730 --> 00:26:02,980 untuk carian di. 538 00:26:02,980 --> 00:26:07,620 >> Anda sangat naif boleh berkata, mengoptimumkan ini, mengoptimumkan itu, mengoptimumkan ini, 539 00:26:07,620 --> 00:26:10,300 mengoptimumkan itu dan ini, dan pangkalan data akan 540 00:26:10,300 --> 00:26:14,882 melakukan beberapa perkara ajaib di bawahnya hud, dan melakukan sesuatu dalam apa-apa cara 541 00:26:14,882 --> 00:26:17,090 bahawa masa depan anda mencari pada mana-mana bidang ini, 542 00:26:17,090 --> 00:26:18,400 ia akan, sebenarnya, lebih cepat. 543 00:26:18,400 --> 00:26:19,110 Ini boleh dilakukan. 544 00:26:19,110 --> 00:26:20,530 Ia tidak membatalkan dirinya. 545 00:26:20,530 --> 00:26:22,500 Tetapi mesti ada harga yang dibayar. 546 00:26:22,500 --> 00:26:27,220 >> Jika anda naif, atau lebih-bersemangat berkata, indeks semua bidang ini, 547 00:26:27,220 --> 00:26:29,810 jadi untuk bercakap, membuat mereka semua cekap boleh dicari, 548 00:26:29,810 --> 00:26:31,625 apa harga yang anda mungkin membayar? 549 00:26:31,625 --> 00:26:32,500 PENONTON: [didengar] 550 00:26:32,500 --> 00:26:33,090 DAVID MALAN: Prestasi. 551 00:26:33,090 --> 00:26:33,798 Apa maksud awak? 552 00:26:33,798 --> 00:26:37,380 Well prestasi, sekurang-kurangnya dalam konteks saya berbincang, adalah lebih baik sekarang. 553 00:26:37,380 --> 00:26:38,830 Itulah definisi pengindeksan. 554 00:26:38,830 --> 00:26:41,180 Ia akan menjadikan carian lebih cepat. 555 00:26:41,180 --> 00:26:43,366 Jadi kali berkurangan, jadi untuk bercakap. 556 00:26:43,366 --> 00:26:44,240 PENONTON: [didengar] 557 00:26:44,240 --> 00:26:45,031 DAVID MALAN: Space. 558 00:26:45,031 --> 00:26:46,520 Jadi sekali lagi, ini adalah satu perdagangan yang sama. 559 00:26:46,520 --> 00:26:50,820 Saya boleh mempercepatkan carian anda, tetapi ia akan kos anda lebih banyak bait ruang. 560 00:26:50,820 --> 00:26:51,610 Mengapa? 561 00:26:51,610 --> 00:26:55,230 Well, secara lalai, jika kita mempunyai tiada bintang-bintang merah, tiada seorang pun daripada indeks ini, 562 00:26:55,230 --> 00:26:58,797 seperti yang saya katakan, bagaimana anda mencari nama di dalam pangkalan data ini? 563 00:26:58,797 --> 00:27:00,630 Jadi mari kita menarik kami perhatian kepada contoh ini. 564 00:27:00,630 --> 00:27:06,300 Jika kita mempunyai Daud dan Scully dan Kareem dan Arwa dan lain-lain dalam baris ini, 565 00:27:06,300 --> 00:27:06,910 misalnya. 566 00:27:06,910 --> 00:27:08,390 >> Jadi mari kita melakukan perkara tersebut. 567 00:27:08,390 --> 00:27:13,990 Scully di sini, dan kemudian kita mempunyai Kareem, dan Arwa, 568 00:27:13,990 --> 00:27:18,390 dan orang lain, jika anda tidak mempunyai indeks ditakrifkan, jadi untuk bercakap, 569 00:27:18,390 --> 00:27:20,160 yang terbaik yang anda boleh lakukan ialah carian linear. 570 00:27:20,160 --> 00:27:23,470 Jika anda mencari Arwa, kita tidak akan dapat untuk melompat betul kepada beliau 571 00:27:23,470 --> 00:27:24,140 dengan cepat. 572 00:27:24,140 --> 00:27:26,556 Kami akan mula atas dan pergi sepanjang jalan ke bawah, 573 00:27:26,556 --> 00:27:28,600 tidak seperti asal kami Mike Smith contoh. 574 00:27:28,600 --> 00:27:33,470 >> Jika, bagaimanapun, saya berkata, hey, pangkalan data, indeks medan nama pertama, 575 00:27:33,470 --> 00:27:37,000 maka ia akan melakukan sesuatu pelamun dan menyokong sesuatu 576 00:27:37,000 --> 00:27:38,130 seperti carian binari. 577 00:27:38,130 --> 00:27:39,820 Ia mungkin tidak carian binari per se. 578 00:27:39,820 --> 00:27:42,810 Pangkalan data cenderung untuk menggunakan satu lagi struktur data yang dipanggil b-pokok, 579 00:27:42,810 --> 00:27:46,540 jangan dikelirukan dengan pokok-pokok binari, yang hanya menjadikannya lebih cepat untuk mencari 580 00:27:46,540 --> 00:27:48,500 sesuatu logaritma dalam alam semula jadi. 581 00:27:48,500 --> 00:27:53,510 Tetapi harga yang anda bayar untuk membina yang ciri, struktur data dalam ingatan, 582 00:27:53,510 --> 00:27:54,570 lebih bait. 583 00:27:54,570 --> 00:27:57,170 Oleh itu, ia mungkin mengambil masa beberapa megabait, beberapa gigabait, siapa tahu? 584 00:27:57,170 --> 00:27:58,410 Ia bergantung kepada data. 585 00:27:58,410 --> 00:28:02,640 >> Jadi, pada satu ketika, anda perlu membuat keputusan, ia mungkin bukan kes biasa. 586 00:28:02,640 --> 00:28:06,000 Jadi apa yang adalah perkara biasa sebenar kes, jika anda benar-benar mempunyai untuk memilih, 587 00:28:06,000 --> 00:28:10,080 apa yang mungkin telah disiapkan kegemaran anda menjadi? 588 00:28:10,080 --> 00:28:10,580 E-mel. 589 00:28:10,580 --> 00:28:14,400 Dan saya suka e-mel kerana e-mel, dalam teori, harus unik. 590 00:28:14,400 --> 00:28:17,650 Dan sebagainya biasanya, apabila anda tahu terlebih dahulu bahawa salah satu bidang anda 591 00:28:17,650 --> 00:28:20,277 adalah atau akan menjadi unik, yang cenderung untuk menjadi bidang yang baik 592 00:28:20,277 --> 00:28:22,860 untuk mencari pada, kerana dengan cara itu, apabila anda mencari sesuatu, 593 00:28:22,860 --> 00:28:26,194 anda akan kembali satu atau sifar jawapan dan kemudian anda selesai. 594 00:28:26,194 --> 00:28:28,110 Anda tidak perlu menyimpan mencari lagi orang lain. 595 00:28:28,110 --> 00:28:31,992 >> Dan jadi dalam kes ini di sini, e-mel, selagi anda tidak boleh mendaftar dua kali 596 00:28:31,992 --> 00:28:33,450 dengan e-mel yang sama, adalah satu yang baik. 597 00:28:33,450 --> 00:28:36,710 ID mengikut definisi, dalam komputer dunia sains, 598 00:28:36,710 --> 00:28:39,610 jika anda bercakap mengenai ID, yang mempunyai yang lebih baik menjadi unik. 599 00:28:39,610 --> 00:28:42,970 Itulah jenis konotasi ID atau pengecam. 600 00:28:42,970 --> 00:28:46,440 Dan yang lain daripada ini mungkin, mari kita memanggil mereka baik untuk golongan berada, 601 00:28:46,440 --> 00:28:47,860 tetapi tidak benar-benar diperlukan. 602 00:28:47,860 --> 00:28:49,976 >> Dan sebagainya dalam pangkalan data, anda tentukan indeks, 603 00:28:49,976 --> 00:28:51,350 tetapi anda boleh menjadi lebih tepat. 604 00:28:51,350 --> 00:28:56,060 Anda boleh berkata, hey, pangkalan data, pastikan bahawa setiap ID dalam jadual ini adalah unik. 605 00:28:56,060 --> 00:28:59,330 Jangan malah membiarkan seorang programmer sengaja dimasukkan ke dalam e-mel salinan 606 00:28:59,330 --> 00:29:00,740 atau salinan nombor ID. 607 00:29:00,740 --> 00:29:03,140 Begitu banyak seperti enums melindungi kita sama, anda 608 00:29:03,140 --> 00:29:04,881 boleh mempunyai orang-orang pertahanan peringkat rendah. 609 00:29:04,881 --> 00:29:07,130 Dan jadi reka bentuk pangkalan data, dalam erti kata lain, adalah jenis keseronokan, 610 00:29:07,130 --> 00:29:08,380 kerana anda melakukannya pertahanan. 611 00:29:08,380 --> 00:29:11,460 Anda jenis menganggap bahawa anda bekerja dengan dahsyat, pengaturcara dahsyat 612 00:29:11,460 --> 00:29:15,550 dan anda mahu untuk meletakkan seberapa banyak pertahanan yang anda boleh untuk melindungi data anda, 613 00:29:15,550 --> 00:29:18,940 tetapi pada masa yang sama anda mahu untuk membantu mereka melakukan yang lebih baik 614 00:29:18,940 --> 00:29:21,386 dengan memilih yang bidang untuk mengoptimumkan untuk. 615 00:29:21,386 --> 00:29:24,260 Tetapi anda tidak boleh semestinya melakukannya dalam vakum seperti kita jenis di sini. 616 00:29:24,260 --> 00:29:26,480 Anda perlu tahu apakah kes-kes umum ialah. 617 00:29:26,480 --> 00:29:29,397 Jika pemaju melaksanakan buku alamat, 618 00:29:29,397 --> 00:29:32,230 anda sangat baik mungkin mahu dapat untuk mencari di hampir setiap bidang, 619 00:29:32,230 --> 00:29:33,830 hanya dengan sifat permohonan. 620 00:29:33,830 --> 00:29:37,910 Jadi mungkin anda menghabiskan bahawa ruang tambahan. 621 00:29:37,910 --> 00:29:39,090 >> Betul, apa-apa soalan? 622 00:29:39,090 --> 00:29:41,820 623 00:29:41,820 --> 00:29:42,486 Yeah. 624 00:29:42,486 --> 00:29:43,470 >> PENONTON: [didengar] 625 00:29:43,470 --> 00:29:44,404 >> DAVID MALAN: No. 626 00:29:44,404 --> 00:29:45,279 >> PENONTON: [didengar] 627 00:29:45,279 --> 00:29:47,840 628 00:29:47,840 --> 00:29:48,826 >> DAVID MALAN: OK. 629 00:29:48,826 --> 00:29:49,701 >> PENONTON: [didengar] 630 00:29:49,701 --> 00:29:52,420 631 00:29:52,420 --> 00:29:54,850 >> DAVID MALAN: Oh, jadi kami bercakap dengan cara yang 632 00:29:54,850 --> 00:29:57,940 sekarang bahawa sama sekali bahasa agnostik. 633 00:29:57,940 --> 00:30:02,370 Oleh itu, kita bercakap kini kira-kira pangkalan data hubungan lebih umum, 634 00:30:02,370 --> 00:30:04,760 atau SQL database amnya. 635 00:30:04,760 --> 00:30:06,870 >> PENONTON: [didengar] 636 00:30:06,870 --> 00:30:10,030 >> DAVID MALAN: Perkataan lebih baik untuk menggunakan adalah, boleh digunakan oleh mana-mana bahasa. 637 00:30:10,030 --> 00:30:15,280 Jadi saya boleh menulis kod JavaScript, C kod, C ++ kod, kod Java, kod Ruby, 638 00:30:15,280 --> 00:30:19,010 semua yang bercakap dengan pangkalan data dan melaksanakan pertanyaan. 639 00:30:19,010 --> 00:30:22,310 Malah, bukan itu yang tidak baik segue untuk contoh pertanyaan. 640 00:30:22,310 --> 00:30:25,720 Dan sekali lagi, kami tidak akan pergi ke Java atau C ++ atau mana-mana itu lagi, 641 00:30:25,720 --> 00:30:29,420 tetapi dalam SQL, bahasa yang saya menyimpan merujuk, Structured Query Language, 642 00:30:29,420 --> 00:30:32,790 ini sendiri adalah bahasa pengaturcaraan, tetapi ia bertujuan untuk digunakan bagi, tiada 643 00:30:32,790 --> 00:30:37,330 kejutan, berstruktur pertanyaan pertanyaan. 644 00:30:37,330 --> 00:30:38,660 >> Oleh yang saya maksudkan ini. 645 00:30:38,660 --> 00:30:41,190 Cara anda memilih data daripada pangkalan data MySQL 646 00:30:41,190 --> 00:30:49,330 adalah anda secara literal menaip dalam program anda sesuatu seperti pilih bintang daripada pengguna. 647 00:30:49,330 --> 00:30:52,200 bahawa jadual ini saya menganggap, selepas ini dipanggil pengguna. 648 00:30:52,200 --> 00:30:54,860 Saya boleh memanggilnya apa-apa yang kita mahu, tetapi yang jenis masuk akal. 649 00:30:54,860 --> 00:30:57,240 Dan sebagainya pilih adalah sangat kata kerja biasa, jika anda 650 00:30:57,240 --> 00:30:59,290 akan, SQL, yang benar-benar berbuat demikian. 651 00:30:59,290 --> 00:31:02,730 Apa yang anda fikir bintang bermakna dalam konteks ini? 652 00:31:02,730 --> 00:31:04,410 >> PENONTON: [didengar] 653 00:31:04,410 --> 00:31:05,380 >> DAVID MALAN: Saya minta maaf? 654 00:31:05,380 --> 00:31:06,300 >> PENONTON: [didengar] 655 00:31:06,300 --> 00:31:09,580 >> DAVID MALAN: Tidak diperlukan, ia adalah lebih inklusif daripada itu, sebenarnya. 656 00:31:09,580 --> 00:31:11,700 Ia adalah watak kad liar. 657 00:31:11,700 --> 00:31:14,740 Star hampir selalu bermakna apa-apa, jadi ini bermakna, dalam kes ini, 658 00:31:14,740 --> 00:31:16,510 pilih segala-galanya daripada pangkalan data. 659 00:31:16,510 --> 00:31:20,730 Oleh itu, apabila saya katakan ini, saya maksudkan memberikan saya kembali setiap kolum 660 00:31:20,730 --> 00:31:22,440 dari meja saya dipanggil pengguna. 661 00:31:22,440 --> 00:31:24,730 Jadi memberi saya satu set hasil, kerana ia dipanggil. 662 00:31:24,730 --> 00:31:28,210 Dalam erti kata lain, memberi saya satu salinan spreadsheet, adalah apa yang saya mendapat sekurang. 663 00:31:28,210 --> 00:31:34,890 >> Tetapi jika saya katakan pilih bintang daripada pengguna di mana ID sama dengan 1, berapa besar perlu 664 00:31:34,890 --> 00:31:36,640 set keputusan saya menjadi itu? 665 00:31:36,640 --> 00:31:41,680 Atau setara, berapa banyak baris perlu Saya diserahkan kembali dari pangkalan data? 666 00:31:41,680 --> 00:31:45,860 Mungkin hanya satu, jika saya mempunyai sesungguhnya ID dianggap sebagai pengecam yang unik, 667 00:31:45,860 --> 00:31:50,710 dan jika David mempunyai bahawa ID unik, saya perlu kembali satu dan hanya satu baris 668 00:31:50,710 --> 00:31:53,220 mengandungi semua maklumat Daud. 669 00:31:53,220 --> 00:31:56,390 Jika saya berkata di mana ini ID sama dengan 99, saya perlu kembali, 670 00:31:56,390 --> 00:32:00,320 dalam konteks ini, sifar baris, sekurang-kurangnya pada masa ini. 671 00:32:00,320 --> 00:32:03,620 >> Walau bagaimanapun, jika saya tidak benar-benar mengambil berat tentang semua maklumat itu, 672 00:32:03,620 --> 00:32:06,970 Saya hanya boleh katakan, di manakah David hidup? 673 00:32:06,970 --> 00:32:10,860 Pilih kod Zip dari pengguna di mana ID adalah 1. 674 00:32:10,860 --> 00:32:15,820 Ini akan memilih hanya kepadaku zip Daud kod dan tidak keseluruhan daripada baris tersebut. 675 00:32:15,820 --> 00:32:19,541 Mengapa saya boleh melakukan ini dan bukannya Pertanyaan bintang, kad liar? 676 00:32:19,541 --> 00:32:21,950 >> PENONTON: [didengar] 677 00:32:21,950 --> 00:32:24,590 >> DAVID MALAN: Ya, aku mungkin memerlukannya. 678 00:32:24,590 --> 00:32:26,350 Jadi prestasi sekali lagi jawapan di sini. 679 00:32:26,350 --> 00:32:28,540 Mengapa meminta lebih maklumat daripada yang anda perlukan, 680 00:32:28,540 --> 00:32:32,020 kerana walaupun ia adalah hak semua bersama-sama, anda masih perlu menyalin data itu, 681 00:32:32,020 --> 00:32:35,560 ia akan kelihatan, dari pangkalan data ke dalam program anda entah bagaimana, 682 00:32:35,560 --> 00:32:38,490 dan itu hanya bodoh jika anda hanya perlu lima daripada digit, 683 00:32:38,490 --> 00:32:40,340 tidak keseluruhan baris. 684 00:32:40,340 --> 00:32:42,180 >> Jadi bagaimana hendak memasukkan seorang pengguna? 685 00:32:42,180 --> 00:32:44,780 Katakan pengguna mempunyai hanya mendaftar untuk kali pertama. 686 00:32:44,780 --> 00:32:46,560 sintaks yang biasanya akan kelihatan seperti ini. 687 00:32:46,560 --> 00:32:52,700 Masukkan ke dalam pengguna, dan maka kita akan berkata nilai-nilai, 688 00:32:52,700 --> 00:33:00,150 dan kemudian kita akan berkata nilai-nilai seperti, katakan, Lauren Scully, 689 00:33:00,150 --> 00:33:02,380 juruvideo kami di sini. 690 00:33:02,380 --> 00:33:04,390 Dan bidang yang akan datang adalah gender. 691 00:33:04,390 --> 00:33:08,020 Oleh itu, kita akan berkata quote, unquote "F", maka kita mempunyai ID 692 00:33:08,020 --> 00:33:12,250 dan saya akan iaitu- mari berpura-pura dia tidak sebenarnya di sini, 693 00:33:12,250 --> 00:33:14,380 jadi kita akan putar balik dalam cerita. 694 00:33:14,380 --> 00:33:16,530 Jadi 2 akan menjadi ID beliau. 695 00:33:16,530 --> 00:33:19,130 Dan kemudian medan seterusnya di sini adalah e-mel beliau. 696 00:33:19,130 --> 00:33:22,140 Jadi ia akan menjadi seperti Lauren Scully dan sebagainya, 697 00:33:22,140 --> 00:33:24,360 dan kita hanya akan dot dot dot ia jauh daripada sini. 698 00:33:24,360 --> 00:33:26,890 Sekarang ia akan mendapatkan sedikit membosankan, tetapi pertanyaan sisip 699 00:33:26,890 --> 00:33:28,310 akhirnya akan kelihatan seperti itu. 700 00:33:28,310 --> 00:33:30,970 >> Jika saya mahu untuk menghilangkan Scully, uh-oh, mari kita membatalkan pendaftaran 701 00:33:30,970 --> 00:33:37,420 , dia memadam akaun mereka, memotong daripada pengguna di mana ID bersamaan 2, 702 00:33:37,420 --> 00:33:38,500 akan menghilangkan Scully. 703 00:33:38,500 --> 00:33:48,050 Atau saya boleh katakan pengguna maklumat ditetapkan, katakan, apa yang kita boleh berubah? 704 00:33:48,050 --> 00:33:49,430 Katakan dia bergerak. 705 00:33:49,430 --> 00:33:53,730 Set zip sama 021-- nope, itulah zip semasa beliau. 706 00:33:53,730 --> 00:33:54,487 90210. 707 00:33:54,487 --> 00:33:56,320 Satu-satunya poskod Saya tahu di dunia. 708 00:33:56,320 --> 00:33:59,002 Jadi yang akan mengubah zip dia code-- sebenarnya, 709 00:33:59,002 --> 00:34:00,460 yang tidak akan mengubah zip dia kod. 710 00:34:00,460 --> 00:34:02,170 >> Apa yang saya lakukan? 711 00:34:02,170 --> 00:34:04,292 Walaupun sintaks yang mungkin baru. 712 00:34:04,292 --> 00:34:05,302 >> PENONTON: [didengar] 713 00:34:05,302 --> 00:34:08,010 DAVID MALAN: Ya, saya berpindah semua orang ke Beverly Hills, California. 714 00:34:08,010 --> 00:34:11,920 Jadi saya perlu sebenarnya mengatakan di mana ID bersamaan 2. 715 00:34:11,920 --> 00:34:12,820 Dan sebagainya. 716 00:34:12,820 --> 00:34:15,290 Jadi SQL adalah semua mengenai jenis arahan. 717 00:34:15,290 --> 00:34:20,260 Pilih, masukkan, memadam, mengemas kini, dengan predikat ini pada akhirnya 718 00:34:20,260 --> 00:34:22,139 ini fasal di mana, jadi untuk bercakap. 719 00:34:22,139 --> 00:34:25,170 Dan ada banyak lagi yang anda boleh dilakukan, tetapi ia benar-benar hanya berkisar 720 00:34:25,170 --> 00:34:29,750 untuk semata-mata, jika arcanely, menyatakan apa yang anda mahu pangkalan data yang perlu dilakukan. 721 00:34:29,750 --> 00:34:31,580 >> Dan kemudian pangkalan data akan memikirkan, apabila 722 00:34:31,580 --> 00:34:35,630 anda memasukkan Lauren Scully ke dalam pangkalan data, di mana untuk meletakkan beliau dalam ingatan 723 00:34:35,630 --> 00:34:38,230 supaya kita boleh dengan cepat mendapatkan beliau berdasarkan alamat e-mel beliau 724 00:34:38,230 --> 00:34:42,610 atau berdasarkan nombor ID dia atau sebagainya. 725 00:34:42,610 --> 00:34:43,391 Ya, Dan. 726 00:34:43,391 --> 00:34:44,266 PENONTON: [didengar] 727 00:34:44,266 --> 00:34:46,364 728 00:34:46,364 --> 00:34:47,780 DAVID MALAN: Soalan Really baik. 729 00:34:47,780 --> 00:34:50,370 Adakah skrip ini berubah dari Microsoft Access untuk Oracle 730 00:34:50,370 --> 00:34:52,290 untuk MySQL untuk PostgreSQL? 731 00:34:52,290 --> 00:34:53,790 Jawapan ringkasnya adalah ia bergantung. 732 00:34:53,790 --> 00:34:58,697 Secara teori, ada yang sangat subset biasa besar SQL 733 00:34:58,697 --> 00:35:00,780 yang dikongsi di semua daripada pelaksanaan ini. 734 00:35:00,780 --> 00:35:03,340 Walau bagaimanapun, pelbagai pengeluar mempunyai ciri-ciri tambahan 735 00:35:03,340 --> 00:35:07,120 kepada pangkalan data mereka untuk melakukan perkara-perkara tertentu di luar skop ciri ini, 736 00:35:07,120 --> 00:35:08,720 yang mungkin, sebenarnya, memecahkan. 737 00:35:08,720 --> 00:35:11,210 >> Jadi cara pemaju lindung nilai terhadap ini, 738 00:35:11,210 --> 00:35:14,350 ialah berbanding daripada menulis mentah kod SQL seperti saya menulis di sini, 739 00:35:14,350 --> 00:35:19,460 mereka sebaliknya menggunakan perpustakaan perpustakaan umum bahawa dirinya 740 00:35:19,460 --> 00:35:23,650 adalah jenis peringkat yang lebih tinggi dan abstrak jauh mana produk yang anda gunakan. 741 00:35:23,650 --> 00:35:25,710 Dan ia memberi anda fungsi dan prosedur 742 00:35:25,710 --> 00:35:28,810 untuk memanggil supaya anda tidak sebenarnya menulis SQL mentah. 743 00:35:28,810 --> 00:35:32,609 >> Secara teori, kemudian, anda boleh menukar produk dari Oracle untuk Microsoft 744 00:35:32,609 --> 00:35:34,650 atau sebaliknya atau apa-apa lain, dan anda benar-benar 745 00:35:34,650 --> 00:35:36,920 mengubah apa-apa tentang kod anda. 746 00:35:36,920 --> 00:35:40,180 Realitinya, walaupun, adalah, anda kadang-kadang melepaskan ciri-akibat. 747 00:35:40,180 --> 00:35:43,860 Anda mungkin telah memilih produk kerana ia mendapat ciri-ciri nilai tambah, 748 00:35:43,860 --> 00:35:46,610 dan anda hanya kini tidak menggunakan mereka sedar. 749 00:35:46,610 --> 00:35:51,630 >> Dan anekdot, kebanyakan syarikat cenderung tidak pernah beralih daripada pangkalan data mereka. 750 00:35:51,630 --> 00:35:54,002 Oleh itu, sambil ini adalah baik untuk mempunyai ciri-ciri, realitinya 751 00:35:54,002 --> 00:35:55,960 Iaitu, jika anda pembaikpulihan pangkalan data anda, anda 752 00:35:55,960 --> 00:35:59,890 mungkin membuat tandan perubahan lain anyway, bahawa anda tidak semestinya 753 00:35:59,890 --> 00:36:01,360 perlu menjangkakan bahawa. 754 00:36:01,360 --> 00:36:03,720 Oleh itu, ia boleh dikatakan lebih-kejuruteraan masalah ini, 755 00:36:03,720 --> 00:36:05,670 tetapi ia benar-benar bergantung kepada konteks. 756 00:36:05,670 --> 00:36:09,960 Tetapi dalam teori, SQL dikongsi merentasi pelbagai produk. 757 00:36:09,960 --> 00:36:11,560 soalan benar-benar baik. 758 00:36:11,560 --> 00:36:12,272 Yeah. 759 00:36:12,272 --> 00:36:13,147 >> PENONTON: [didengar] 760 00:36:13,147 --> 00:36:17,820 761 00:36:17,820 --> 00:36:21,480 >> DAVID MALAN: Ya, jadi anda boleh berfikir pangkalan data 762 00:36:21,480 --> 00:36:25,020 hanya pelayan, pada akhir hari, dan di dalam pelayan yang 763 00:36:25,020 --> 00:36:28,670 adalah sejumlah besar jadual, baris dan lajur. 764 00:36:28,670 --> 00:36:33,410 Dan apabila anda menghantar pertanyaan seperti ini dari program anda, laman web anda, 765 00:36:33,410 --> 00:36:39,340 ditulis dalam Java, Ruby, Python, apa sahaja, server sedang menerima arahan ini 766 00:36:39,340 --> 00:36:41,660 dan menterjemahkan dalam literal cara yang sama 767 00:36:41,660 --> 00:36:43,660 kita dibincangkan sebelum ini dengan bahasa ditafsirkan, 768 00:36:43,660 --> 00:36:47,333 dan kemudian melaksanakan beberapa tindakan ke atas sifar atau lebih baris dalam sifar atau lebih jadual. 769 00:36:47,333 --> 00:36:48,208 PENONTON: [didengar] 770 00:36:48,208 --> 00:36:53,540 771 00:36:53,540 --> 00:36:55,070 >> DAVID MALAN: Tepat sekali, betul-betul. 772 00:36:55,070 --> 00:36:58,450 Jadi pseudokod untuk sesuatu seperti yang mungkin menjadi ini. 773 00:36:58,450 --> 00:37:02,450 Dalam fail PHP anda atau anda fail Python atau fail Java anda, 774 00:37:02,450 --> 00:37:09,210 anda akan mempunyai kod pseudo, atau Calar seperti blok, jika pengguna melawat 775 00:37:09,210 --> 00:37:19,870 acme.com/register~~V untuk kali pertama, kemudian masukkan ke dalam pengguna dan sebagainya. 776 00:37:19,870 --> 00:37:22,619 Dan kita akan menterjemahkan ini kepada more Kod konkrit pada akhirnya. 777 00:37:22,619 --> 00:37:24,660 Tetapi sebenarnya, kita mempunyai semua blok bangunan di sini, 778 00:37:24,660 --> 00:37:27,680 walaupun kita ponteng beberapa langkah-langkah pelaksanaan. 779 00:37:27,680 --> 00:37:31,560 >> Jadi biarlah saya mencari kesalahan dengan apa yang kita hebat tidak hanya sebentar tadi. 780 00:37:31,560 --> 00:37:36,470 Anda telah dicipta yang cukup meja yang lengkap untuk pengguna. 781 00:37:36,470 --> 00:37:38,920 Memang diakui, kita boleh melaksanakan dalam beberapa cara yang berbeza, 782 00:37:38,920 --> 00:37:43,030 tetapi anda sebenarnya telah membawa kami turun path-- dan saya kata anda, 783 00:37:43,030 --> 00:37:48,080 tetapi ia mungkin fault-- saya yang agak pelaksanaan pangkalan data yang tidak cekap. 784 00:37:48,080 --> 00:37:49,950 Ia tidak normal. 785 00:37:49,950 --> 00:37:52,320 >> Dan dengan normal saya maksudkan ada akan menjadi, 786 00:37:52,320 --> 00:37:57,380 dari masa ke masa, yang lebihan yang ketara, dan oleh itu tidak cekap, 787 00:37:57,380 --> 00:38:00,210 iaitu pembaziran ruang. 788 00:38:00,210 --> 00:38:05,650 Hanya berdasarkan apa yang anda lihat di sini, boleh anda membayangkan di mana sisa ini ruang 789 00:38:05,650 --> 00:38:08,710 akan datang, dari masa ke masa, kerana semakin banyak pengguna mendaftar 790 00:38:08,710 --> 00:38:10,860 untuk laman web anda? 791 00:38:10,860 --> 00:38:13,047 Apa data mungkin menjadi berlebihan? 792 00:38:13,047 --> 00:38:19,084 793 00:38:19,084 --> 00:38:20,940 >> PENONTON: [didengar] 794 00:38:20,940 --> 00:38:22,686 >> DAVID MALAN: Mengapa kamu maksudkan itu? 795 00:38:22,686 --> 00:38:23,561 PENONTON: [didengar] 796 00:38:23,561 --> 00:38:32,180 797 00:38:32,180 --> 00:38:32,930 DAVID MALAN: Ya. 798 00:38:32,930 --> 00:38:35,622 Dan mari kita andaikan untuk tujuan hari ini bahawa itu adalah benar. 799 00:38:35,622 --> 00:38:38,330 Rupa-rupanya, dan kami telah belajar ini dengan cara yang sukar, yang tidak benar. 800 00:38:38,330 --> 00:38:41,670 Entah bagaimana pelbagai bandar-bandar mempunyai, entah bagaimana, zip yang sama kod, 801 00:38:41,670 --> 00:38:43,390 yang memecah gerak hati yang indah ini. 802 00:38:43,390 --> 00:38:46,180 Tetapi mari kita andaikan itu benar, kerana ia hampir sentiasa benar. 803 00:38:46,180 --> 00:38:51,390 Jadi andaikan bahawa kod zip adalah selalu dikaitkan dengan bandar yang sama 804 00:38:51,390 --> 00:38:53,600 dan negeri, yang merupakan jenis andaian yang munasabah, 805 00:38:53,600 --> 00:38:54,840 tetapi tidak betul, ia ternyata. 806 00:38:54,840 --> 00:38:57,310 Tetapi andaian yang munasabah untuk tujuan hari ini. 807 00:38:57,310 --> 00:39:01,650 >> Kemudian menganggap bahawa saya tinggal di Cambridge, MA, mengikut jadual pengguna ini, 808 00:39:01,650 --> 00:39:04,100 dan menganggap bahawa Lauren Scully tinggal di Cambridge, MA, 809 00:39:04,100 --> 00:39:06,120 dan menganggap bahawa Kareem tinggal di Cambridge, MA, 810 00:39:06,120 --> 00:39:10,400 dan Arwa tinggal di Cambridge, MA, kita semua dalam 02138. 811 00:39:10,400 --> 00:39:15,890 Mengapa kita mengingati Cambridge, MA, 02138 untuk semua empat daripada kami? 812 00:39:15,890 --> 00:39:18,903 Apa sudah memadai untuk diingati? 813 00:39:18,903 --> 00:39:20,249 >> PENONTON: [didengar] 814 00:39:20,249 --> 00:39:21,540 DAVID MALAN: Hanya kod zip. 815 00:39:21,540 --> 00:39:25,080 Cuma 02138 wujud, kerana anda tahu apa yang boleh kita lakukan? 816 00:39:25,080 --> 00:39:32,650 Kita boleh mendapatkan mewah sedikit di sini dan di sini, menentukan jadual lain 817 00:39:32,650 --> 00:39:35,850 di mana ini akan menjadi nama, ini akan menjadi jenis, 818 00:39:35,850 --> 00:39:38,840 ini akan menjadi panjang, dan selepas ini, saya 819 00:39:38,840 --> 00:39:42,900 akan memanggil ini jadual bandar saya. 820 00:39:42,900 --> 00:39:47,011 Ini dipanggil, sudah Sudah tentu, jadual pengguna saya. 821 00:39:47,011 --> 00:39:49,885 Dan jadi apa yang perlu saya letakkan di sini untuk jadual bandar saya, yang anda fikir? 822 00:39:49,885 --> 00:39:53,605 823 00:39:53,605 --> 00:39:54,535 >> PENONTON: [didengar] 824 00:39:54,535 --> 00:39:55,930 >> DAVID MALAN: Ya. 825 00:39:55,930 --> 00:40:01,440 Jadi zip dan negeri dan bandar. 826 00:40:01,440 --> 00:40:05,350 Dan sebagainya jenis di sini, kami akan berkata ini akan menjadi char 5 lagi, 827 00:40:05,350 --> 00:40:06,750 tertakluk kepada perbahasan sebelum ini. 828 00:40:06,750 --> 00:40:14,810 Ini akan menjadi enum yang, mungkin seperti sebelum ini, dan bandar akan menjadi varchar 50. 829 00:40:14,810 --> 00:40:17,960 Dan sehingga kini apa yang saya dapat untuk menghapuskan dari jadual ini 830 00:40:17,960 --> 00:40:21,995 untuk menghapuskan ketidakcekapan itu? 831 00:40:21,995 --> 00:40:23,100 >> PENONTON: [didengar] 832 00:40:23,100 --> 00:40:23,850 DAVID MALAN: Nice. 833 00:40:23,850 --> 00:40:30,239 Negeri dan bandar pergi, jadi saya sekarang dihapuskan ketidakcekapan potensi 834 00:40:30,239 --> 00:40:33,280 untuk redundantly mengingat, Cambridge, MA, Cambridge, MA, Cambridge, MA, 835 00:40:33,280 --> 00:40:35,712 Cambridge, MA, yang, mudah-mudahan tidak pernah akan berubah. 836 00:40:35,712 --> 00:40:37,670 Dan jika ia berlaku, ia minorly menjengkelkan, kini 837 00:40:37,670 --> 00:40:39,750 bahawa saya perlu mengubah dalam pelbagai baris, 838 00:40:39,750 --> 00:40:43,770 sedangkan di sini, saya boleh hanya mengubahnya dalam satu tempat. 839 00:40:43,770 --> 00:40:46,890 >> Sekarang apa yang perdagangan-off, mungkin? 840 00:40:46,890 --> 00:40:48,020 Ini adalah super mudah. 841 00:40:48,020 --> 00:40:50,730 Mempunyai semua data saya dengan baik bersama-sama. 842 00:40:50,730 --> 00:40:53,644 Tetapi apa yang jelas kes itu sekarang? 843 00:40:53,644 --> 00:40:55,684 >> PENONTON: [didengar] 844 00:40:55,684 --> 00:40:58,100 DAVID MALAN: Tepat sekali, dan saya gembira anda menggunakan perkataan menyertai, 845 00:40:58,100 --> 00:41:01,320 kerana itulah sebenarnya kata kunci, dalam dunia pangkalan data hubungan 846 00:41:01,320 --> 00:41:05,270 dalam SQL, ia adalah satu perkataan yang sebenar anda mungkin menaip atau sekurang-kurangnya menyampaikan. 847 00:41:05,270 --> 00:41:09,280 Dan sebenarnya, apa yang kita perlu lakukan untuk memilih maklumat penuh Daud adalah 848 00:41:09,280 --> 00:41:19,700 sesuatu seperti pilih bintang daripada pengguna, menyertai bandar-bandar, pada-- dan kini 849 00:41:19,700 --> 00:41:24,010 Saya akan hanya bergerak ke baris kedua supaya users.zip fits-- ini sama 850 00:41:24,010 --> 00:41:34,570 cities.zip, di mana users.ID sama dengan 1. 851 00:41:34,570 --> 00:41:35,550 >> Jadi apa yang berlaku? 852 00:41:35,550 --> 00:41:38,970 Ia hodoh mencari, tetapi anda boleh jenis membacanya kiri ke kanan, atas ke bawah. 853 00:41:38,970 --> 00:41:41,030 Pilih bintang daripada pengguna adalah sama seperti sebelum ini, 854 00:41:41,030 --> 00:41:42,930 tetapi ia bukan daripada pengguna, per se. 855 00:41:42,930 --> 00:41:45,910 Ia dari pengguna menyertai bandar-bandar. 856 00:41:45,910 --> 00:41:48,520 Apa yang saya menyertai kedua-dua jadual di? 857 00:41:48,520 --> 00:41:51,820 Well, nampaknya, pengguna jadual zip lapangan, 858 00:41:51,820 --> 00:41:54,810 dan tempoh ini hanya khas sintaks untuk menyatakan idea itu, 859 00:41:54,810 --> 00:41:58,130 dan ini adalah bandar-bandar jadual zip lapangan. 860 00:41:58,130 --> 00:42:01,580 Saya mahu kedua-dua menjadi sama, tetapi saya mahu akhirnya pilih 861 00:42:01,580 --> 00:42:06,280 hanya mereka baris di mana ID dalam jadual pengguna yang 862 00:42:06,280 --> 00:42:08,730 sama dengan 1, yang kebetulan berada lombong. 863 00:42:08,730 --> 00:42:11,781 >> Dan hanya untuk menjadi jelas, programmer, biasanya apabila 864 00:42:11,781 --> 00:42:14,780 mengekod keras sesuatu seperti bilangan 1, kerana jika tidak, laman web hanya 865 00:42:14,780 --> 00:42:17,630 menyokong David atau pengguna pertama, anda 866 00:42:17,630 --> 00:42:20,720 sebaliknya akan melakukan sesuatu seperti ID, di mana 867 00:42:20,720 --> 00:42:22,510 ini merupakan satu berubah-ubah, sesuatu yang 868 00:42:22,510 --> 00:42:26,210 boleh berubah mengikut masa, sama dalam semangat untuk apa yang saya katakan sebelum ini 869 00:42:26,210 --> 00:42:28,080 dengan jenis ruang letak. 870 00:42:28,080 --> 00:42:30,396 Tetapi buat masa ini kita hanya akan mengekod keras sebagai 1. 871 00:42:30,396 --> 00:42:31,520 Dan jadi apa maknanya? 872 00:42:31,520 --> 00:42:35,100 Nah, cara yang baik untuk menggambarkan ini adalah bahawa jika tangan ini adalah jadual pengguna itu, 873 00:42:35,100 --> 00:42:38,090 dan tangan ini adalah zip meja, kami semacam finding-- 874 00:42:38,090 --> 00:42:41,330 dan hujung jari saya adalah zip di sini, dan hujung jari saya 875 00:42:41,330 --> 00:42:43,740 di sini adalah zip, anda jenis saling ia 876 00:42:43,740 --> 00:42:47,950 supaya anda mendapat kembali yang terhasil jadual asal, dengan benar-benar menyertai 877 00:42:47,950 --> 00:42:49,590 dua jadual di atas padang yang sama. 878 00:42:49,590 --> 00:42:50,840 Dan ia tidak perlu zip. 879 00:42:50,840 --> 00:42:54,460 Ia boleh menjadi paling apa-apa lagi, tetapi zip adalah bagus, kerana satu, ia adalah pendek, 880 00:42:54,460 --> 00:42:56,470 dua, ia sentiasa panjang yang sama, jadi tidak 881 00:42:56,470 --> 00:43:02,270 kecekapan sebenar kepada apa Olivier dicadangkan di sini 882 00:43:02,270 --> 00:43:05,200 dengan faktor keluar zip, dan [Didengar] mencadangkan bahawa kita menyingkirkan 883 00:43:05,200 --> 00:43:07,110 bandar dan negeri. 884 00:43:07,110 --> 00:43:11,370 >> Jadi ini adalah proses dikenali sebagai pemulihan. 885 00:43:11,370 --> 00:43:14,171 Sebarang pertanyaan mengenai itu? 886 00:43:14,171 --> 00:43:16,170 Nah biar saya tunjukkan ini adalah jenis barangan, 887 00:43:16,170 --> 00:43:19,202 walaupun ia adalah agak rendah peringkat, perbincangan ini, yang anda akan berfikir 888 00:43:19,202 --> 00:43:20,910 anda semacam mendapat hilang dalam rumpai, 889 00:43:20,910 --> 00:43:26,690 ini adalah satu manifestasi yang mencukupi peluang kepada pemaju untuk menjadi buruk. 890 00:43:26,690 --> 00:43:29,600 Dan sebenarnya, walaupun kita, dalam kursus yang saya telah diajar, apabila kita mempunyai, 891 00:43:29,600 --> 00:43:32,290 misalnya, tidak berpengalaman pengaturcara ijazah 892 00:43:32,290 --> 00:43:35,920 membina laman web, pada pandangan pertama, laman mungkin kelihatan hebat. 893 00:43:35,920 --> 00:43:38,280 Dan mereka mempunyai semua fungsi kita diminta, 894 00:43:38,280 --> 00:43:40,650 pemaju melakukan kerja yang baik. 895 00:43:40,650 --> 00:43:43,370 >> Tetapi mereka tidak semestinya tahu cukup tentang reka bentuk pangkalan data 896 00:43:43,370 --> 00:43:46,680 atau mereka tidak berfikir keras cukup mengenai jenis data 897 00:43:46,680 --> 00:43:49,220 dan jenis pengguna yang laman web akan mempunyai, 898 00:43:49,220 --> 00:43:53,240 dan kita dapati, maka, enam bulan kemudian, selepas mereka menamatkan pengajian atau berpindah, 899 00:43:53,240 --> 00:43:56,016 yang persetan, laman web kami adalah benar-benar, benar-benar perlahan. 900 00:43:56,016 --> 00:43:58,890 Dan saya tidak bercakap tentang mempunyai berjuta-juta atau beribu-ribu pengguna. 901 00:43:58,890 --> 00:44:02,580 Maksud saya beberapa pengguna seratus di kampus, semuanya suka, misalnya, 902 00:44:02,580 --> 00:44:04,870 membeli-belah untuk kursus di masa yang sama, mereka 903 00:44:04,870 --> 00:44:07,010 menggunakan bahawa katalog kursus permohonan yang saya sebutkan 904 00:44:07,010 --> 00:44:10,410 dan perkara yang semakin benar-benar perlahan kerana tiada indeks. 905 00:44:10,410 --> 00:44:13,740 Tiada bintang merah, jadi untuk bercakap, atau kita tidak mempunyai semestinya 906 00:44:13,740 --> 00:44:17,690 kira daripada data yang sama untuk mendapatkan beberapa penjimatan ruang. 907 00:44:17,690 --> 00:44:21,880 >> Dan apabila tapisan pemaju atau orang pangkalan data atau sebagainya, 908 00:44:21,880 --> 00:44:25,864 jenis soalan untuk berfikir melalui Bahkan, apabila menyemak kod seseorang, 909 00:44:25,864 --> 00:44:28,530 untuk mengatakan, tidak semestinya melihat melalui semua kod mereka, melainkan berkata: 910 00:44:28,530 --> 00:44:30,154 mari kita lihat melalui jadual pangkalan data. 911 00:44:30,154 --> 00:44:31,150 Apa yang anda menyimpan? 912 00:44:31,150 --> 00:44:33,941 Dan kemudian berkata, baik, tunggu minit, mengapa engkau menggunakan integer? 913 00:44:33,941 --> 00:44:36,224 Bagaimana jika kita mempunyai 4 bilion dan 1 baris ini? 914 00:44:36,224 --> 00:44:38,140 Dan jenis-jenis soalan ini adalah peluang 915 00:44:38,140 --> 00:44:40,170 untuk jenis menolak kembali dan mendapatkan rasa, di mana 916 00:44:40,170 --> 00:44:42,300 jika anda tidak selesa melakukan ia, mempunyai seseorang yang lebih teknikal 917 00:44:42,300 --> 00:44:45,425 bertanya soalan-soalan, sama ada atau tidak orang yang benar-benar tahu barangan mereka. 918 00:44:45,425 --> 00:44:47,890 Dan ini adalah jenis barangan, juga, bahawa orang-orang 919 00:44:47,890 --> 00:44:50,540 di internet yang adalah otodidak, mungkin 920 00:44:50,540 --> 00:44:53,920 belajar kurang kerap, kerana anda tidak semestinya mencari ia 921 00:44:53,920 --> 00:44:56,630 banyak, kerana anda boleh mendapatkan pangkalan data dan berjalan, 922 00:44:56,630 --> 00:44:58,880 tetapi melainkan anda telah membaca pada tutorial atau menjadi 923 00:44:58,880 --> 00:45:01,880 diberitahu mengenai pemulihan pangkalan data dan pengindeksan dan prestasi, 924 00:45:01,880 --> 00:45:04,255 ini adalah jenis perkara yang akan menyakiti anda. 925 00:45:04,255 --> 00:45:07,480 Dan anda mungkin berfikir, atau jurutera yang tidak baik mungkin berkata, oh, baik, gaji kita lebih baik 926 00:45:07,480 --> 00:45:09,600 untuk pangkalan data yang lebih besar atau pangkalan data yang lebih cepat 927 00:45:09,600 --> 00:45:13,360 atau hanya membuang wang pada ini, skala menegak, tidak semestinya demikian. 928 00:45:13,360 --> 00:45:16,920 Jika anda pergi dalam- dan anda boleh pergi dalam selepas indeks fact-- dan menambah, 929 00:45:16,920 --> 00:45:20,320 dan ia mungkin mengambil masa beberapa jam untuk pangkalan data untuk membina data baru 930 00:45:20,320 --> 00:45:24,100 struktur yang saya katakan sebelum ini, anda masih boleh menetapkan ini selepas fakta, 931 00:45:24,100 --> 00:45:26,180 bahawa ini adalah di mana anda mula untuk membezakan 932 00:45:26,180 --> 00:45:28,830 pereka baik dari yang buruk pereka, bukan hanya estetika, 933 00:45:28,830 --> 00:45:32,972 tetapi prestasi-bijak juga. 934 00:45:32,972 --> 00:45:33,555 Ada soalan? 935 00:45:33,555 --> 00:45:36,420 936 00:45:36,420 --> 00:45:37,480 Tidak? 937 00:45:37,480 --> 00:45:41,980 Jadi untuk NoSQL, yang merupakan jenis yang lain pangkalan data yang saya dirujuk sebelum ini, 938 00:45:41,980 --> 00:45:43,490 anda tidak mempunyai baris dan lajur. 939 00:45:43,490 --> 00:45:47,000 Sebaliknya, anda akan mempunyai sesuatu yang kelihatan sedikit seperti ini. 940 00:45:47,000 --> 00:45:48,630 Saya akan menggunakan sintaks yang sama. 941 00:45:48,630 --> 00:45:51,270 pendakap kerinting berlaku kepada digunakan di sini cukup banyak. 942 00:45:51,270 --> 00:45:55,400 Anda mungkin mempunyai sesuatu seperti nama pertama adalah David, 943 00:45:55,400 --> 00:46:00,180 anda mungkin mempunyai lalu Nama Malan, sebut harga, 944 00:46:00,180 --> 00:46:07,530 anda mungkin mempunyai ID is-- maafkan saya, whoops-- ID adalah 1, 945 00:46:07,530 --> 00:46:13,410 e-mel adalah malan@harvard.edu, dan saya tidak akan mengganggu menaip yang lain, dan kemudian 946 00:46:13,410 --> 00:46:14,380 beberapa perkara lain. 947 00:46:14,380 --> 00:46:17,380 >> Dalam erti kata lain, ini adalah perwakilan teks 948 00:46:17,380 --> 00:46:20,720 daripada apa yang kita biasanya akan memanggil objek dalam program komputer. 949 00:46:20,720 --> 00:46:26,079 Dan objek adalah umumnya hanya koleksi pasangan nilai utama. 950 00:46:26,079 --> 00:46:27,370 Jadi sekali lagi, tema yang berulang ini. 951 00:46:27,370 --> 00:46:30,440 Kami melihat pasangan nilai utama dalam HTML, kita lihat pasangan nilai utama sekarang 952 00:46:30,440 --> 00:46:34,020 dalam konteks pangkalan data, dan kami melihat pasangan nilai utama dalam konteks 953 00:46:34,020 --> 00:46:35,970 daripada, saya fikir, bahasa yang awal hari ini. 954 00:46:35,970 --> 00:46:36,890 Menyimpan datang. 955 00:46:36,890 --> 00:46:39,620 Dan sesungguhnya itu benar-benar apa yang bermuara pada data, 956 00:46:39,620 --> 00:46:44,240 data dan metadata atau nilai dan kunci, masing-masing. 957 00:46:44,240 --> 00:46:47,430 >> Jadi bukan hubungan pangkalan data, sesuatu yang berdasarkan 958 00:46:47,430 --> 00:46:50,680 pada objek, di mana anda hanya rumpun semua bersama-sama dan meletakkannya 959 00:46:50,680 --> 00:46:55,640 ke dalam ingatan, secara amnya akan menjadi digambarkan sebagai, atau terfikir, kerana ini. 960 00:46:55,640 --> 00:47:00,500 Dan saya akan meninggalkan bahawa kini sebagai jenis pendekatan alternatif. 961 00:47:00,500 --> 00:47:03,750 Dan seseorang tidak semestinya lebih baik daripada yang lain. 962 00:47:03,750 --> 00:47:07,310 Malah, sangat banyak dalam tren hari ini adalah sistem pangkalan data 963 00:47:07,310 --> 00:47:11,942 seperti MongoDB dan Redis dan beberapa lain-lain alat itu, secara percuma, 964 00:47:11,942 --> 00:47:13,400 tetapi mereka semakin en tren. 965 00:47:13,400 --> 00:47:18,850 Sebahagiannya kerana mereka menawarkan tambahan mempunyai lebih daripada pendekatan ini jadual, 966 00:47:18,850 --> 00:47:20,850 tetapi juga kerana mereka sedikit lebih mudah untuk digunakan, 967 00:47:20,850 --> 00:47:24,099 kerana anda tidak perlu berfikir keras tentang banyak ini keputusan reka bentuk. 968 00:47:24,099 --> 00:47:25,970 Jadi plus dan kemudaratan. 969 00:47:25,970 --> 00:47:29,740 Jadi sedar ada pilihan luar apa yang kita hanya menghabiskan masa di. 970 00:47:29,740 --> 00:47:32,310 >> Jadi mari kita buat ini. 971 00:47:32,310 --> 00:47:37,870 Mari kita beralih sedikit kini kembali kepada pengaturcaraan web, 972 00:47:37,870 --> 00:47:40,470 supaya kita jenis kesimpulan hari ini dengan sesuatu 973 00:47:40,470 --> 00:47:43,930 yang sedikit hands-on, mengisi dalam beberapa jurang dari semalam. 974 00:47:43,930 --> 00:47:45,340 Biar saya pergi ke ini pertama. 975 00:47:45,340 --> 00:47:49,310 Jadi ingat semalam bahawa kita mempunyai beberapa HTML berkanun 976 00:47:49,310 --> 00:47:55,110 halaman yang pada mulanya, hanya HTML, dan kemudian sekunder mempunyai CSS, 977 00:47:55,110 --> 00:47:56,620 Cascading Style Sheets. 978 00:47:56,620 --> 00:47:59,830 Ini adalah tag baru yang kita tidak melihat hari ini, atau kekal di atas, 979 00:47:59,830 --> 00:48:01,490 apa yang dipanggil tag skrip. 980 00:48:01,490 --> 00:48:05,830 >> Rupa-rupanya, anda sebenarnya boleh membenamkan bahasa dipanggil JavaScript dalam web anda 981 00:48:05,830 --> 00:48:08,310 halaman dan membuat web anda laman melakukan sesuatu. 982 00:48:08,310 --> 00:48:09,710 Jadi, apa yang saya maksudkan dengan itu? 983 00:48:09,710 --> 00:48:12,630 Baiklah, biar saya pergi ke hadapan dan hanya meminjam kod ini untuk seketika. 984 00:48:12,630 --> 00:48:15,860 Saya akan pergi ke Cloud9, tidak perlu untuk pergi ke sana sendiri sahaja lagi, 985 00:48:15,860 --> 00:48:21,350 dan saya akan memanggil alert.HTML ini. 986 00:48:21,350 --> 00:48:23,650 Saya akan paste fail saya di sini. 987 00:48:23,650 --> 00:48:32,070 Dan hanya untuk menjelaskan apa yang saya lakukan, mari saya pergi ke alamat ini dan pergi untuk memberi amaran, 988 00:48:32,070 --> 00:48:33,870 dan anda melihat Hello World. 989 00:48:33,870 --> 00:48:35,440 >> Tetapi ini adalah jenis underwhelming. 990 00:48:35,440 --> 00:48:37,410 Saya mahu melakukan sesuatu sedikit berbeza. 991 00:48:37,410 --> 00:48:40,610 Jadi, saya akan benar-benar melakukan ini. 992 00:48:40,610 --> 00:48:43,820 Saya akan pergi di sini e, dan di antara tag skrip saya, 993 00:48:43,820 --> 00:48:53,460 mengatakan amaran ( 'hello, dunia'); supaya notis ia sedikit ceroboh, tetapi saya telah mendapat HTML, 994 00:48:53,460 --> 00:48:56,180 di dalam yang merupakan bahasa dipanggil JavaScript, 995 00:48:56,180 --> 00:48:59,420 dan ini adalah apa yang dipanggil fungsi panggilan atau panggilan prosedur. 996 00:48:59,420 --> 00:49:04,500 Ini adalah kata kerja, secara literal, dalam kes ini, dan saya menyeru fungsi kod 997 00:49:04,500 --> 00:49:06,310 bahawa orang lain menulis. 998 00:49:06,310 --> 00:49:09,630 >> Jadi fungsi yang merupakan amaran, jadi mari kita pergi ke halaman ini 999 00:49:09,630 --> 00:49:14,046 sekarang dan klik tambah nilai, dan sekarang anda melihat sedikit interaktiviti. 1000 00:49:14,046 --> 00:49:15,420 Ia adalah jenis sekolah lama dan hodoh. 1001 00:49:15,420 --> 00:49:18,580 Ini jenis mengingatkan anda daripada pop-up, mungkin, tadi 1002 00:49:18,580 --> 00:49:22,030 tetapi ia tidak melakukan sesuatu yang lebih sedikit perancangan. 1003 00:49:22,030 --> 00:49:26,940 >> Jadi lebih daripada itu, mari kita buat sesuatu yang lebih menarik. 1004 00:49:26,940 --> 00:49:30,980 Biar saya pergi di sini dan menghilangkan. 1005 00:49:30,980 --> 00:49:33,840 Dan saya akan pergi ke hadapan dan buat borang seperti yang kami lakukan semalam. 1006 00:49:33,840 --> 00:49:34,840 Sebenarnya, anda tahu apa? 1007 00:49:34,840 --> 00:49:37,350 Saya akan pergi ke google.html, yang kita 1008 00:49:37,350 --> 00:49:43,027 bermula pada hari ini, yang kelihatan seperti ini, melalui mana kita mencari untuk kucing 1009 00:49:43,027 --> 00:49:45,360 Tetapi perhatikan ada jenis yang bug dalam versi semasa. 1010 00:49:45,360 --> 00:49:49,770 Ia berfungsi untuk kucing, tetapi menganggap bahawa Saya tidak bekerjasama dan saya menaip apa-apa, 1011 00:49:49,770 --> 00:49:53,290 dan saya klik hantar. 1012 00:49:53,290 --> 00:49:54,540 Itulah jenis tingkah laku yang pelik. 1013 00:49:54,540 --> 00:49:57,300 Membawa saya ke Google sebenar, tidak memberi saya mesej ralat. 1014 00:49:57,300 --> 00:50:00,590 Saya ingin memberitahu pengguna anda perlu untuk memberikan kita nilai. 1015 00:50:00,590 --> 00:50:01,780 >> Jadi bagaimana kita boleh melakukan ini? 1016 00:50:01,780 --> 00:50:06,790 Nah biar saya kembali ke dalam Cloud9 dan biarlah saya pergi ke bahagian atas halaman saya 1017 00:50:06,790 --> 00:50:11,980 dan menambah tag skrip seperti ini, di mana Saya akan menaip beberapa kod JavaScript. 1018 00:50:11,980 --> 00:50:15,420 Dan saya akan melakukan yang berikut. 1019 00:50:15,420 --> 00:50:22,910 Jika (document.getelementByID-- dan ingat yang kita bercakap tentang itu sebelum ini, 1020 00:50:22,910 --> 00:50:23,960 fungsi itu. 1021 00:50:23,960 --> 00:50:25,310 Apa ID yang saya mahu untuk mendapatkan? 1022 00:50:25,310 --> 00:50:33,050 Saya ingin mendapatkan q, dan saya akan katakan sama dengan apa-apa, seperti this-- 1023 00:50:33,050 --> 00:50:38,220 sebenarnya membiarkan saya menggunakan tanda petik hanya untuk consistency-- sama apa-apa, 1024 00:50:38,220 --> 00:50:46,650 kemudian amaran ( "Sila taip pertanyaan") di sini. 1025 00:50:46,650 --> 00:50:49,200 >> Jadi saya mempunyai apa yang kelihatan sebagai sesuatu seperti syarat. 1026 00:50:49,200 --> 00:50:51,410 Kami telah melihat ini idea umum dalam Scratch. 1027 00:50:51,410 --> 00:50:54,240 Ia seperti satu teka-teki yang keping yang kelihatan seperti ini. 1028 00:50:54,240 --> 00:50:55,780 Dan apa yang saya katakan? 1029 00:50:55,780 --> 00:50:59,520 Well, turun di sini, perhatikan Saya akan melakukan yang berikut. 1030 00:50:59,520 --> 00:51:02,790 Saya akan memberikan borang ini bidang bukan sahaja nama q, yang 1031 00:51:02,790 --> 00:51:06,630 adalah apa yang mendapat diserahkan kepada Google, tetapi saya akan memberikan pengecam tempatan, 1032 00:51:06,630 --> 00:51:07,630 juga dikenali sebagai q. 1033 00:51:07,630 --> 00:51:11,780 Tetapi saya boleh memanggil apa-apa Saya mahu, saya hanya akan memastikan ia mudah 1034 00:51:11,780 --> 00:51:14,570 dan juga memanggilnya q, hanya untuk kesederhanaan. 1035 00:51:14,570 --> 00:51:17,650 >> Dan sekarang saya akan lakukan sesuatu yang lebih sedikit. 1036 00:51:17,650 --> 00:51:22,600 Dalam bidang borang di sini, saya akan menambah apa yang dipanggil pengendali acara. 1037 00:51:22,600 --> 00:51:32,260 Di hantar, saya mahu panggil fungsi yang dipanggil validate. 1038 00:51:32,260 --> 00:51:35,520 Ini tidak wujud lagi, ini perkataan, atau validate kata kerja ini, 1039 00:51:35,520 --> 00:51:38,560 kerana apa yang saya akan lakukan di sini sekarang ialah menambah beberapa kod. 1040 00:51:38,560 --> 00:51:42,200 >> Saya akan mengatakan fungsi validate. 1041 00:51:42,200 --> 00:51:48,280 Saya akan mengengsot ini dan menambah satu lagi pendakap kerinting di sini dan satu lagi di sini. 1042 00:51:48,280 --> 00:51:50,110 Pertimbangkan apa ini kini melakukan. 1043 00:51:50,110 --> 00:51:54,210 Saya mempunyai sekarang-- berfikir kerana dicipta saya sekeping teka-teki sendiri yang sebelumnya belum 1044 00:51:54,210 --> 00:51:57,440 wujud, dan saya telah dipanggil teka-teki ini sekeping sekeping validate teka-teki. 1045 00:51:57,440 --> 00:52:01,620 Tujuannya dalam hidup adalah untuk melaksanakan empat baris kod di dalamnya. 1046 00:52:01,620 --> 00:52:04,940 >> Jika document.getElementByID jadi dari segi konsep, 1047 00:52:04,940 --> 00:52:09,380 yang akan pergi ke dalam unsur, elemen HTML yang unik 1048 00:52:09,380 --> 00:52:12,930 idea hanya q, dan kemudian walaupun sintaks yang kelihatan sedikit pelik, 1049 00:52:12,930 --> 00:52:16,430 yang sama sama hanya bermaksud sama dengan. 1050 00:52:16,430 --> 00:52:20,950 Ini bermakna jika elemen dengan pengecam unik q, apabila mendapat, 1051 00:52:20,950 --> 00:52:25,700 tidak mempunyai nilai, ia hanya sama quote unquote, apa-apa di sana, 1052 00:52:25,700 --> 00:52:27,170 maka apa yang saya mahu lakukan? 1053 00:52:27,170 --> 00:52:29,360 Saya mahu menjerit pada pengguna. 1054 00:52:29,360 --> 00:52:31,710 >> Dan kita tidak akan pergi terperinci di sini. 1055 00:52:31,710 --> 00:52:32,960 Saya akan kembali palsu. 1056 00:52:32,960 --> 00:52:34,380 Itulah ralat. 1057 00:52:34,380 --> 00:52:38,746 Yang lain, saya akan kembali benar. 1058 00:52:38,746 --> 00:52:40,120 Jadi, sama ada ia bekerja atau tidak. 1059 00:52:40,120 --> 00:52:41,800 Palsu atau benar. 1060 00:52:41,800 --> 00:52:47,820 Dan sekarang jika saya tidak membuat apa-apa kesilapan, biarlah saya menyimpan ini dan tambah nilai ini. 1061 00:52:47,820 --> 00:52:50,940 Dan biarlah saya cek hanya dua kali ganda Saya tidak, sebenarnya, membuat apa-apa kesilapan menaip, 1062 00:52:50,940 --> 00:52:52,690 jadi saya tidak memalukan diri sendiri. 1063 00:52:52,690 --> 00:52:54,240 Mari kita lihat jika ia berfungsi. 1064 00:52:54,240 --> 00:52:56,930 >> Jadi sekarang saya akan menaip kucing. 1065 00:52:56,930 --> 00:52:59,421 Ia masih berfungsi, atau kerja-kerja separuh, sekurang-kurangnya. 1066 00:52:59,421 --> 00:53:02,170 Sekarang, saya akan masukkannya semula, dan sekarang mari saya cuba mengemukakan tanpa menaip 1067 00:53:02,170 --> 00:53:05,860 sesuatupun sialan, ia patah. 1068 00:53:05,860 --> 00:53:06,430 Satu masa. 1069 00:53:06,430 --> 00:53:09,380 1070 00:53:09,380 --> 00:53:12,660 Biar saya membuka konsol, [Didengar] log, memuat semula halaman. 1071 00:53:12,660 --> 00:53:13,576 Biar saya cuba ini lagi. 1072 00:53:13,576 --> 00:53:17,000 1073 00:53:17,000 --> 00:53:17,501 Oh, sialan. 1074 00:53:17,501 --> 00:53:18,000 Saya terlupa. 1075 00:53:18,000 --> 00:53:18,630 Saya membuat kesilapan menaip. 1076 00:53:18,630 --> 00:53:20,760 Saya masih ingat apa yang ada. 1077 00:53:20,760 --> 00:53:21,350 .value. 1078 00:53:21,350 --> 00:53:27,060 Saya bermaksud mengatakan jika nilai unsur ID yang merupakan q 1079 00:53:27,060 --> 00:53:29,800 sama dengan itu, maka menjerit pada pengguna. 1080 00:53:29,800 --> 00:53:31,870 >> Jadi sekarang mari saya menahan nafas saya sekali lagi. 1081 00:53:31,870 --> 00:53:33,480 Di sini kita pergi. 1082 00:53:33,480 --> 00:53:34,130 Di sana kami pergi. 1083 00:53:34,130 --> 00:53:35,010 Sila taip pertanyaan. 1084 00:53:35,010 --> 00:53:36,840 Jadi ia tidak membiarkan saya melalui. 1085 00:53:36,840 --> 00:53:40,210 Saya boleh menjadi jenis suka bermain dengan ini, dan bukannya memeriksa tiada nilai, 1086 00:53:40,210 --> 00:53:46,720 Saya boleh mengatakan sesuatu seperti, tidak lagi mencari kucing, 1087 00:53:46,720 --> 00:53:51,150 dan sekarang kita hanya boleh lebih main-main biarlah pengguna memperoleh anjing jika dia 1088 00:53:51,150 --> 00:53:57,490 mahu, atau jika saya pergi di sini dan mencari kucing, sekarang saya tidak boleh. 1089 00:53:57,490 --> 00:53:58,690 >> Jadi apa yang bisa dibesarkan di sini? 1090 00:53:58,690 --> 00:54:03,010 Jadi satu, kami telah diperkenalkan ke dalam dunia kita HTML dan CSS, 1091 00:54:03,010 --> 00:54:04,320 fungsi pengaturcaraan. 1092 00:54:04,320 --> 00:54:06,300 Saya boleh sebenarnya kini membuat keputusan dalam kod. 1093 00:54:06,300 --> 00:54:10,570 Sebelum ini, semua saya boleh lakukan adalah menandakan kandungan teks atau kandungan grafik 1094 00:54:10,570 --> 00:54:13,080 dan beritahu apa yang perlu seperti dan di mana untuk dipaparkan. 1095 00:54:13,080 --> 00:54:16,650 Sekarang saya benar-benar boleh meminta soalan atas laman web 1096 00:54:16,650 --> 00:54:20,010 dan membuat keputusan berdasarkan di atasnya, dan meminta pengguna 1097 00:54:20,010 --> 00:54:22,780 jika saya perlu menjerit pada dia atau dia. 1098 00:54:22,780 --> 00:54:28,740 >> Jadi mari kita cuba sesuatu pada kita sendiri dengan ini. 1099 00:54:28,740 --> 00:54:33,350 Teruskan, biarlah saya membuka slaid seterusnya di sini, dan hanya menunjukkan satu perkara. 1100 00:54:33,350 --> 00:54:37,250 Sama seperti dengan CSS, kita boleh faktor keluar kod JavaScript kami untuk fail yang berasingan, 1101 00:54:37,250 --> 00:54:40,660 anda boleh melakukan perkara yang sama dengan JavaScript seperti dengan CSS. 1102 00:54:40,660 --> 00:54:44,520 Dan anda menggunakan yang menggunakan sumber atribut tag skrip. 1103 00:54:44,520 --> 00:54:46,540 Tetapi kita tidak akan merumitkan perkara untuk sekarang. 1104 00:54:46,540 --> 00:54:50,440 Sebaliknya, jika anda boleh pergi ke tidak halaman ini, 1105 00:54:50,440 --> 00:55:02,690 but-- biarlah saya bergerak ini dalam perintah- pergi ke, jika anda boleh, page ini di sini. 1106 00:55:02,690 --> 00:55:03,592 URL ini di sini. 1107 00:55:03,592 --> 00:55:04,550 Ada dalam slaid hari ini. 1108 00:55:04,550 --> 00:55:07,133 Anda mungkin perlu memuat semula kerana Saya telah menambah beberapa perkara. 1109 00:55:07,133 --> 00:55:09,970 1110 00:55:09,970 --> 00:55:13,890 >> Tetapi pergi ke sana di mana beberapa teka-teki menanti. 1111 00:55:13,890 --> 00:55:16,670 Dan ini akan memberikan kita peluang, dalam konteks yang sedikit lebih seronok, 1112 00:55:16,670 --> 00:55:20,610 untuk melibatkan diri dengan beberapa JavaScript. 1113 00:55:20,610 --> 00:55:25,505 Dan apabila anda sampai ke sana, Saya akan menjelaskan apa yang menanti. 1114 00:55:25,505 --> 00:55:47,350 1115 00:55:47,350 --> 00:55:47,850 Dapatkan hijau. 1116 00:55:47,850 --> 00:56:03,063 1117 00:56:03,063 --> 00:56:03,562 Set biru. 1118 00:56:03,562 --> 00:56:11,030 1119 00:56:11,030 --> 00:56:13,930 Set hijau, menetapkan merah. 1120 00:56:13,930 --> 00:56:19,220 1121 00:56:19,220 --> 00:56:20,220 Oops. 1122 00:56:20,220 --> 00:56:22,330 Maaf. 1123 00:56:22,330 --> 00:56:27,630 >> Ini adalah sejauh mana kita dokumentasi untuk cabaran ini. 1124 00:56:27,630 --> 00:56:29,920 Dan ini akan bekerja seperti berikut. 1125 00:56:29,920 --> 00:56:33,340 Jadi apa yang anda ada di ini halaman adalah sejumlah 1126 00:56:33,340 --> 00:56:38,024 teka-teki imej dengan buddy di Universiti Stanford. 1127 00:56:38,024 --> 00:56:41,190 Jadi apa yang anda lihat di sini adalah hampir jenis salah satu teka-teki mata sihir, 1128 00:56:41,190 --> 00:56:43,815 tetapi jika anda hanya merenung, tiada apa yang akan pop keluar pada anda. 1129 00:56:43,815 --> 00:56:46,000 Sebaliknya, sesuatu yang tidak tersembunyi dalam imej ini. 1130 00:56:46,000 --> 00:56:47,790 Dan ia tersembunyi dengan cara yang berikut. 1131 00:56:47,790 --> 00:56:51,740 Imej, kerana anda mungkin tahu, boleh terdiri daripada tiga warna. 1132 00:56:51,740 --> 00:56:53,346 Sesetengah merah, ada biru, dan beberapa hijau. 1133 00:56:53,346 --> 00:56:55,220 Dan kita boleh membuat semua warna dalam pelangi 1134 00:56:55,220 --> 00:56:57,570 dengan mencampurkan ketiga-tiga warna entah bagaimana. 1135 00:56:57,570 --> 00:57:01,940 >> Jadi ini kelihatan kebanyakannya hijau dan biru, tetapi sebagai Nick mengatakan di sini, 1136 00:57:01,940 --> 00:57:04,060 ini imej teka-teki besi adalah teka-teki. 1137 00:57:04,060 --> 00:57:06,780 Ia mengandungi imej sesuatu yang terkenal, bagaimanapun, 1138 00:57:06,780 --> 00:57:08,310 imej telah diputarbelitkan. 1139 00:57:08,310 --> 00:57:11,500 Objektif terkenal adalah dalam nilai merah. 1140 00:57:11,500 --> 00:57:13,810 nilai Walau bagaimanapun, merah semuanya telah dibahagikan dengan 10. 1141 00:57:13,810 --> 00:57:16,230 Jadi mereka terlalu kecil dengan faktor 10. 1142 00:57:16,230 --> 00:57:18,280 Jadi dalam erti kata lain, Nick mengambil imej asal, 1143 00:57:18,280 --> 00:57:21,500 dan dia desaturated semua merah itu daripadanya, 1144 00:57:21,500 --> 00:57:23,850 mengurangkan jumlah merah dakwat, jika anda akan, di dalamnya. 1145 00:57:23,850 --> 00:57:26,060 >> Nilai biru dan hijau semua hanya tidak bermakna, 1146 00:57:26,060 --> 00:57:30,000 nilai rawak, aka direka bunyi untuk mengaburi imej sebenar. 1147 00:57:30,000 --> 00:57:32,250 Jadi apa yang Nick lakukan adalah dia melunakkan merah dan kemudian 1148 00:57:32,250 --> 00:57:34,380 dia hanya melemparkan rawak jumlah biru dan hijau 1149 00:57:34,380 --> 00:57:37,590 pada imej untuk jenis kabur apa yang sebenarnya masih ada. 1150 00:57:37,590 --> 00:57:41,089 Anda mesti membatalkan gangguan ini untuk mendedahkan imej. 1151 00:57:41,089 --> 00:57:44,255 Pertama, menetapkan semua nilai biru dan hijau kepada sifar untuk mendapatkan mereka keluar dari jalan, 1152 00:57:44,255 --> 00:57:48,700 dan melihat hasilnya. kemudian membiak setiap nilai merah dengan 10, 1153 00:57:48,700 --> 00:57:51,720 mendaki semula sehingga anggaran nilai akhir. 1154 00:57:51,720 --> 00:57:53,035 Apakah objek yang terkenal? 1155 00:57:53,035 --> 00:57:57,920 >> Jadi semua anda mempunyai segi empat tepat ini dalam pelayar anda sekarang. 1156 00:57:57,920 --> 00:58:00,830 Dan perhatikan bahawa terdapat beberapa kod starter, jadi untuk bercakap. 1157 00:58:00,830 --> 00:58:04,370 Ini adalah kod JavaScript yang Nick telah menulis untuk anda. 1158 00:58:04,370 --> 00:58:07,250 Dan perhatikan bahawa ada garis di tengah-tengah yang 1159 00:58:07,250 --> 00:58:10,380 bermula dengan slash slash, itu apa yang biasanya dipanggil komen. 1160 00:58:10,380 --> 00:58:14,660 Ini bermakna ia adalah satu frasa untuk pengaturcara yang tidak mempunyai makna berfungsi. 1161 00:58:14,660 --> 00:58:16,520 Ia hanya satu isyarat visual kepada manusia. 1162 00:58:16,520 --> 00:58:18,670 >> Jadi, anda boleh pergi ke hadapan dan memadam hanya talian itu, 1163 00:58:18,670 --> 00:58:22,214 dan menjadi super tidak berhati-hati untuk memadam atau mengubah apa-apa lagi. 1164 00:58:22,214 --> 00:58:25,130 Dan biarlah saya berjalan anda melalui apa kod ini tidak dan saya akan meninggalkan 1165 00:58:25,130 --> 00:58:28,580 kepada anda untuk memikirkan imej rahsia. 1166 00:58:28,580 --> 00:58:32,226 Barisan pertama di sini bahawa saya baru sahaja diserlahkan memberikan anda yang berikut. 1167 00:58:32,226 --> 00:58:34,100 Pada sebelah kiri, anda mempunyai apa yang dipanggil 1168 00:58:34,100 --> 00:58:39,140 pembolehubah yang Nick mempunyai sewenang-wenangnya, tetapi munasabah dipanggil im untuk imej. 1169 00:58:39,140 --> 00:58:41,660 Pada sebelah tangan kanan itu tanda yang sama, 1170 00:58:41,660 --> 00:58:45,240 dia berkata memberi saya baru quote, unquote "imej mudah". 1171 00:58:45,240 --> 00:58:49,680 >> imej mudah, dalam konteks ini adalah apa yang dipanggil kelas, baik, 1172 00:58:49,680 --> 00:58:53,910 ia adalah jenis seperti class-- yang teknikal prototype-- tetapi benar-benar, 1173 00:58:53,910 --> 00:58:58,000 ini memberi saya objek baru, kandungan yang fail, 1174 00:58:58,000 --> 00:58:59,610 besi-puzzle.png. 1175 00:58:59,610 --> 00:59:03,190 Dalam erti kata lain, Nick telah mencipta tanggapan ini imej yang mudah 1176 00:59:03,190 --> 00:59:05,920 supaya kita boleh, pedagogi tujuan, bermain dengan imej 1177 00:59:05,920 --> 00:59:09,790 dan menukarkan merah, nilai-nilai hijau, dan biru. 1178 00:59:09,790 --> 00:59:11,750 >> Dan bagaimana kita melakukannya? 1179 00:59:11,750 --> 00:59:15,360 sintaks agak samar ini di sini jenis seperti blok ulangan 1180 00:59:15,360 --> 00:59:19,140 sebahagian dari anda lihat dalam Scratch awal hari ini, di mana anda boleh ulangi 10 kali. 1181 00:59:19,140 --> 00:59:22,220 Dalam kes ini, Nick tidak mempunyai dikodkeraskan beberapa seperti 10. 1182 00:59:22,220 --> 00:59:28,020 Sebaliknya dia berkata, memulakan pembolehubah yang dipanggil x kepada 0, 1183 00:59:28,020 --> 00:59:33,180 memeriksa jika x adalah kurang daripada lebar imej. 1184 00:59:33,180 --> 00:59:38,160 >> Dan sebagainya untuk menjadi lebih betul, imej adalah berubah-ubah, dot bermakna pergi di dalamnya 1185 00:59:38,160 --> 00:59:40,900 dan lebar, dan kemudian paren terbuka, tertutup 1186 00:59:40,900 --> 00:59:43,687 paren hanya cara yang pengaturcara untuk mengatakan ini adalah fungsi. 1187 00:59:43,687 --> 00:59:44,520 Ini adalah prosedur. 1188 00:59:44,520 --> 00:59:46,430 Ini adalah fungsi orang lain menulis. 1189 00:59:46,430 --> 00:59:48,570 Menggunakannya dan memberikan saya kembali jawapan. 1190 00:59:48,570 --> 00:59:53,610 Dan kemudian x ++ adalah cara yang mewah untuk berkata, selepas anda telah melakukan ini sekali, 1191 00:59:53,610 --> 00:59:55,850 kenaikan x oleh 1. 1192 00:59:55,850 --> 00:59:58,760 Dalam erti kata lain, ini adalah cara yang pengaturcara 1193 00:59:58,760 --> 01:00:05,760 mendorong gelung itulah akan melelar 1194 01:00:05,760 --> 01:00:10,410 semua lajur dalam imej. 1195 01:00:10,410 --> 01:00:14,790 >> Imej hanya grid titik, baris dan lajur titik. 1196 01:00:14,790 --> 01:00:18,270 Ini adalah satu cara untuk mengulanginya ke atas semua lajur. 1197 01:00:18,270 --> 01:00:20,770 Dan di bahagian dalam, Sementara itu, kami iterating 1198 01:00:20,770 --> 01:00:24,030 atas ketinggian, di sini dan di sini dan di sini. 1199 01:00:24,030 --> 01:00:29,442 Jadi ini adalah hanya satu cara untuk traipsing, hampir seperti mesin taip sekolah lama, 1200 01:00:29,442 --> 01:00:32,230 hanya pergi ke atas seluruh imej secara berulang. 1201 01:00:32,230 --> 01:00:36,370 Malah yang tidak cukup penuh jelas, hanya mengambil iman buat masa ini, 1202 01:00:36,370 --> 01:00:38,880 bahawa orang-orang tiga baris kod bersama-sama adalah 1203 01:00:38,880 --> 01:00:43,090 akan membolehkan anda untuk melihat secara berulang di setiap piksel, setiap titik dalam imej. 1204 01:00:43,090 --> 01:00:43,790 >> Apakah piksel? 1205 01:00:43,790 --> 01:00:46,250 Nah, untuk menjadi jelas, jika kita melihat pada asal dan zum masuk, 1206 01:00:46,250 --> 01:00:49,060 jika anda benar-benar meletakkan mata anda ke skrin komputer, itu 1207 01:00:49,060 --> 01:00:53,510 hanya sejumlah besar titik, beberapa ribu titik dibungkus bersama-sama di sana. 1208 01:00:53,510 --> 01:00:56,180 Dan supaya apa yang hendak engkau buat? 1209 01:00:56,180 --> 01:00:59,240 Setiap salah satu titik, definisi akhir, 1210 01:00:59,240 --> 01:01:06,350 adalah hasil daripada apa yang biasanya dipanggil RGB, merah, hijau, biru, yang 1211 01:01:06,350 --> 01:01:09,940 sekali lagi, boleh digabungkan untuk memberikan apa-apa bilangan warna. 1212 01:01:09,940 --> 01:01:13,200 >> Malah, jika anda ingat dari bertahun-tahun yang lalu, 1213 01:01:13,200 --> 01:01:17,320 skrin projektor seperti perkara-perkara ini digunakan untuk tidak mempunyai satu kanta tetapi tiga. 1214 01:01:17,320 --> 01:01:20,700 Salah seorang daripada mereka meludah keluar lampu merah, salah satu mereka meludah keluar lampu hijau, salah seorang daripada mereka 1215 01:01:20,700 --> 01:01:21,600 meludah keluar cahaya biru. 1216 01:01:21,600 --> 01:01:24,391 Dan jika anda berada di sebuah sekolah menengah seperti saya adalah di mana mereka tidak pernah 1217 01:01:24,391 --> 01:01:27,000 sejajar dengan betul, anda adalah sentiasa menonton filem sejarah 1218 01:01:27,000 --> 01:01:29,770 yang bersama-sama sedikit diputarbelitkan, kerana tiga warna tidak 1219 01:01:29,770 --> 01:01:30,970 menggabungkan dengan baik. 1220 01:01:30,970 --> 01:01:36,330 >> Tetapi ternyata bahawa setiap nilai-nilai merah, hijau, dan biru, 1221 01:01:36,330 --> 01:01:37,980 boleh mempunyai beberapa yang berkaitan dengan mereka. 1222 01:01:37,980 --> 01:01:42,500 Sebagai contoh, 0 untuk merah bermaksud tidak merah, 0 untuk hijau bermaksud tidak hijau, 1223 01:01:42,500 --> 01:01:45,120 dan 0 untuk biru bermakna tiada biru. 1224 01:01:45,120 --> 01:01:49,403 Jadi, jika anda tidak mempunyai merah, ada hijau, dan tiada biru, apa warna yang anda ada? 1225 01:01:49,403 --> 01:01:51,009 >> PENONTON: [didengar] 1226 01:01:51,009 --> 01:01:52,800 DAVID MALAN: Anda akan berharap begitu, ia putih. 1227 01:01:52,800 --> 01:01:55,333 Malangnya, ini operates-- maaf? 1228 01:01:55,333 --> 01:01:56,380 >> PENONTON: [didengar] 1229 01:01:56,380 --> 01:01:58,630 DAVID MALAN: Jadi anda sebenarnya mempunyai hitam, dalam kes ini. 1230 01:01:58,630 --> 01:02:01,530 Jadi jika anda mempunyai semua ini warna dihidupkan, anda perlu hitam. 1231 01:02:01,530 --> 01:02:06,510 Walau bagaimanapun, jika anda mempunyai, katakan banyak daripada mereka, seperti banyak merah, 255 daripadanya, 1232 01:02:06,510 --> 01:02:10,340 banyak hijau, dan banyak biru, yang putih. 1233 01:02:10,340 --> 01:02:12,230 Jadi ini adalah dua keterlaluan. 1234 01:02:12,230 --> 01:02:17,460 Jadi dengan logik ini, jika saya mempunyai banyak merah dan tidak hijau dan tidak biru, 1235 01:02:17,460 --> 01:02:18,485 apa warna itu? 1236 01:02:18,485 --> 01:02:19,360 PENONTON: [didengar] 1237 01:02:19,360 --> 01:02:20,610 DAVID MALAN: Hak, jelas. 1238 01:02:20,610 --> 01:02:25,940 Dan kemudian ada merah, banyak hijau, tidak biru, dan kemudian 1239 01:02:25,940 --> 01:02:29,590 jika anda ada-- baik, kita hanya akan menyelesaikan itu, hanya kerana, tetapi ini, sudah tentu, 1240 01:02:29,590 --> 01:02:31,350 sekarang, adalah biru. 1241 01:02:31,350 --> 01:02:33,030 Dan kini anda boleh menggabungkan warna-warna ini. 1242 01:02:33,030 --> 01:02:36,430 Sekarang sebagai diketepikan, jika mana-mana anda mempunyai pernah melakukan beberapa reka bentuk laman web yang sebenar, 1243 01:02:36,430 --> 01:02:38,360 anda mungkin sebenarnya melihat simbol-simbol seperti ini. 1244 01:02:38,360 --> 01:02:42,030 FFF-- dan sebenarnya, ia adalah mungkin tidak yang. 1245 01:02:42,030 --> 01:02:44,380 Ia FFFFFF. 1246 01:02:44,380 --> 01:02:48,970 >> Sesiapa yang pernah dilihat F dan E dan through-- A supaya ternyata, 1247 01:02:48,970 --> 01:02:52,970 kita bercakap semalam mengenai perpuluhan, dan hari ini, jenis mengenai perpuluhan. 1248 01:02:52,970 --> 01:02:54,570 Hari ini kita bercakap tentang binari. 1249 01:02:54,570 --> 01:02:59,010 Rupa-rupanya, perenambelasan adalah sangat sistem asas yang sama untuk digunakan dalam pengkomputeran. 1250 01:02:59,010 --> 01:03:04,960 Binari adalah dua, perpuluhan adalah 10, hex adalah 16. 1251 01:03:04,960 --> 01:03:08,640 Dan ternyata, bagaimana kamu kira dalam perenambelasan? 1252 01:03:08,640 --> 01:03:11,620 Sifar, satu, dua, tiga, empat, lima, enam, tujuh, lapan, 1253 01:03:11,620 --> 01:03:14,730 sembilan, apa yang anda gunakan selepas sembilan? 1254 01:03:14,730 --> 01:03:16,600 Berapa jumlah yang akan datang? 1255 01:03:16,600 --> 01:03:19,180 Kita sudah digunakan sifar. 1256 01:03:19,180 --> 01:03:20,570 Saya memerlukan 16 ini. 1257 01:03:20,570 --> 01:03:25,770 Sifar, satu, dua, tiga, empat, lima, enam, tujuh, lapan, sembilan, 1258 01:03:25,770 --> 01:03:27,520 anda memerlukan beberapa konvensyen sewenang-wenangnya. 1259 01:03:27,520 --> 01:03:30,810 >> Dan apa yang manusia telah memilih masa lalu bahawa selepas sembilan datang surat 1260 01:03:30,810 --> 01:03:34,450 A dan kemudian B kemudian C. Oleh itu, cara anda mengira dalam perenambelasan 1261 01:03:34,450 --> 01:03:37,040 adalah sifar, satu, dua, tiga, empat, lima, enam, tujuh, lapan, sembilan, 1262 01:03:37,040 --> 01:03:42,880 A, B, C, D, E, F, dan yang akan mengira anda semua cara itu, ia ternyata, hingga 15. 1263 01:03:42,880 --> 01:03:47,850 Jadi sifar hingga 15 adalah sifar melalui F. Sekarang mengapa yang penting? 1264 01:03:47,850 --> 01:03:51,570 Nah, apabila anda mempunyai dua F, itulah bagaimana anda meluahkan 255. 1265 01:03:51,570 --> 01:03:54,350 >> Selagi cerita pendek, dunia Photoshop, 1266 01:03:54,350 --> 01:03:57,299 bahawa perisian reka bentuk grafik, dalam dunia pembangunan web, 1267 01:03:57,299 --> 01:03:59,590 di mana anda mempunyai banyak warna, sudah tentu, untuk bermain dengan, 1268 01:03:59,590 --> 01:04:02,350 sering pengaturcara akan menyatakan mereka yang perenambelasan, 1269 01:04:02,350 --> 01:04:05,260 hanya kerana ia cenderung untuk menjadi sedikit lebih mudah. 1270 01:04:05,260 --> 01:04:07,850 Walaupun pada pandangan pertama ia lebih kompleks. 1271 01:04:07,850 --> 01:04:11,590 >> Jadi, dalam apa-apa hal, ini adalah penting kerana Nick di Stanford 1272 01:04:11,590 --> 01:04:15,100 telah memberikan kita enam keping fungsi bahawa anda, pengaturcara tunas, 1273 01:04:15,100 --> 01:04:17,060 kini mempunyai keupayaan untuk menggunakan. 1274 01:04:17,060 --> 01:04:19,960 Dibina ke dalam web ini halaman adalah enam fungsi, 1275 01:04:19,960 --> 01:04:21,820 enam prosedur yang Nick menulis. 1276 01:04:21,820 --> 01:04:26,800 Tiga daripada mereka akan membawa anda nombor, merah, hijau, atau nilai yang biru. 1277 01:04:26,800 --> 01:04:28,787 Tiga daripada mereka akan menetapkan nilai itu. 1278 01:04:28,787 --> 01:04:30,620 Dan garis bawah ini hanya ruang letak, 1279 01:04:30,620 --> 01:04:32,600 jadi anda perlu tahu apa yang mereka berada. 1280 01:04:32,600 --> 01:04:36,240 >> Jadi dengan ketiga-tiga fungsi, pertama perkara-perkara ini 1281 01:04:36,240 --> 01:04:39,190 akan menjadi x-menyelaras, dan yang kedua daripada perkara-perkara 1282 01:04:39,190 --> 01:04:40,700 akan menjadi y-koordinat. 1283 01:04:40,700 --> 01:04:44,650 Dalam erti kata lain, yang titik, yang pixel yang anda mahu untuk mendapatkan hijau, 1284 01:04:44,650 --> 01:04:46,480 mendapatkan biru, dapatkan merah. 1285 01:04:46,480 --> 01:04:51,440 Dan kemudian di sini, ini akan menjadi x, ini akan menjadi nilai y, 1286 01:04:51,440 --> 01:04:55,379 dan ini akan menjadi nombor. 1287 01:04:55,379 --> 01:04:57,170 Jadi mari kita buat pertama garis ini bersama-sama 1288 01:04:57,170 --> 01:05:00,220 dan kemudian saya akan serahkan kepada anda cuba untuk menyimpulkan yang lain. 1289 01:05:00,220 --> 01:05:03,100 Jadi setiap arahan di halaman ini, kita perlu 1290 01:05:03,100 --> 01:05:08,960 meningkat merah dengan faktor 10, dan kita perlu membuang hijau 1291 01:05:08,960 --> 01:05:09,930 dan keluarkan biru. 1292 01:05:09,930 --> 01:05:12,410 Mari kita mulakan dengan senario kedua. 1293 01:05:12,410 --> 01:05:17,760 Jadi jika saya mahu, dan saya akan untuk mengengsot dengan menggunakan beberapa ruang, 1294 01:05:17,760 --> 01:05:22,291 jika saya ingin menetapkan merah, hijau, atau nilai biru, 1295 01:05:22,291 --> 01:05:23,540 Saya akan melakukan yang berikut. 1296 01:05:23,540 --> 01:05:31,280 >> Imej, im.setBlue, dan kemudian berdasarkan arahan saya di sini, 1297 01:05:31,280 --> 01:05:36,700 apa tiga perkara perlu saya menaip dalam kurungan sekarang? 1298 01:05:36,700 --> 01:05:41,960 Saya memerlukan nilai x itu, y nilai, dan apa yang beberapa 1299 01:05:41,960 --> 01:05:48,770 perlu saya meletakkan di sini jika saya mahu menghilangkan biru, berdasarkan cerita ini di sini? 1300 01:05:48,770 --> 01:05:49,630 Hanya sifar. 1301 01:05:49,630 --> 01:05:52,420 Jika saya mahu tidak biru, saya hanya akan mengubahnya kepada sifar. 1302 01:05:52,420 --> 01:05:54,465 >> Sekarang mari kita senaraikan apa ini lakukan. 1303 01:05:54,465 --> 01:05:56,970 1304 01:05:56,970 --> 01:06:01,170 Saya ada di sini di atas ini baris kedua dan ketiga, 1305 01:06:01,170 --> 01:06:04,080 Saya mendakwa dua gelung, gelung bersarang, jika anda 1306 01:06:04,080 --> 01:06:08,360 akan, yang akan mempunyai kesan yang untuk mara dari kiri ke kanan, 1307 01:06:08,360 --> 01:06:11,590 atas ke bawah ke atas semua x nilai dan semua nilai-nilai y. 1308 01:06:11,590 --> 01:06:15,167 Kerana sekali lagi, gambar adalah hanya grid baris dan lajur. 1309 01:06:15,167 --> 01:06:17,000 Jadi ini akan mendapat menghapuskan semua biru. 1310 01:06:17,000 --> 01:06:18,627 Biar saya meninggalkan di baris berikutnya kepada anda. 1311 01:06:18,627 --> 01:06:20,043 Bagaimana saya boleh menghilangkan semua hijau? 1312 01:06:20,043 --> 01:06:23,747 1313 01:06:23,747 --> 01:06:25,140 >> PENONTON: [didengar] 1314 01:06:25,140 --> 01:06:26,151 >> DAVID MALAN: Nice. 1315 01:06:26,151 --> 01:06:28,260 >> PENONTON: [didengar] 1316 01:06:28,260 --> 01:06:30,850 >> DAVID MALAN: Nice. 1317 01:06:30,850 --> 01:06:36,120 Dan saya akan untuk zum keluar, dan hanya mengambil mengambil berat daripada yang anda telah tidak melakukan apa-apa kesilapan menaip. 1318 01:06:36,120 --> 01:06:39,390 Dan jika anda selesa dengan apa yang anda lakukan, 1319 01:06:39,390 --> 01:06:42,936 teruskan dan klik butang Menjalankan / Simpan dan melihat apa yang anda dapat. 1320 01:06:42,936 --> 01:06:46,982 1321 01:06:46,982 --> 01:06:48,690 Dan sekali lagi, kita telah membuat hanya tiga perubahan. 1322 01:06:48,690 --> 01:06:52,130 Kami dipadam yang pertama komen dan menggantikannya 1323 01:06:52,130 --> 01:06:53,575 dengan kedua-dua baris kod. 1324 01:06:53,575 --> 01:06:55,742 1325 01:06:55,742 --> 01:06:58,450 Dan ia adalah OK jika anda perlu untuk memukul Run / Save butang beberapa kali 1326 01:06:58,450 --> 01:07:01,190 untuk menetapkan sesuatu. 1327 01:07:01,190 --> 01:07:03,610 >> Dan biarlah saya juga mengezum masuk pada saya kod supaya anda boleh menyalin. 1328 01:07:03,610 --> 01:07:04,110 Baik. 1329 01:07:04,110 --> 01:07:08,720 Jadi saya melihat Andrew mempunyai apa seolah-olah menjadi satu kesilapan. 1330 01:07:08,720 --> 01:07:11,110 Dia hanya mendapat hitam besar segi empat tepat pada skrin beliau. 1331 01:07:11,110 --> 01:07:13,120 Adakah orang lain mempunyai segi empat hitam besar? 1332 01:07:13,120 --> 01:07:13,390 >> PENONTON: Ya. 1333 01:07:13,390 --> 01:07:14,360 >> DAVID MALAN: segi empat hitam besar? 1334 01:07:14,360 --> 01:07:16,068 OK, jadi mari kita fikirkan tentang apa ini bermakna. 1335 01:07:16,068 --> 01:07:20,560 Kami berkata bahawa sifar, sifar, sifar, supaya hijau, tidak merah, tidak biru, 1336 01:07:20,560 --> 01:07:21,980 akan memberikan anda hitam. 1337 01:07:21,980 --> 01:07:24,467 Dan ternyata bahawa kebanyakan komputer riba kami 1338 01:07:24,467 --> 01:07:25,800 hanya tidak mempunyai kesetiaan yang cukup. 1339 01:07:25,800 --> 01:07:27,750 Anda tidak boleh agak memberitahu terdapat sebenarnya sesuatu di sana. 1340 01:07:27,750 --> 01:07:30,340 Dan jika anda jenis mungkin bersandar skrin anda ke hadapan dan belakang, 1341 01:07:30,340 --> 01:07:32,850 mungkin yang anda lihat sedikit sesuatu di sana? 1342 01:07:32,850 --> 01:07:34,820 Mungkin, jenis, jenis? 1343 01:07:34,820 --> 01:07:36,640 Ia bukan sempurna hitam. 1344 01:07:36,640 --> 01:07:38,050 >> PENONTON: [didengar] 1345 01:07:38,050 --> 01:07:39,510 >> DAVID MALAN: Spoiler! 1346 01:07:39,510 --> 01:07:42,610 Terdapat beberapa merah di sana, tetapi ingat dari spesifikasi 1347 01:07:42,610 --> 01:07:44,940 masalah ini, Nick tona ke bawah. 1348 01:07:44,940 --> 01:07:47,860 Beliau desaturated ia agak, tetapi tidak semua jalan ke sifar. 1349 01:07:47,860 --> 01:07:51,670 Jadi, jika kita mahu untuk membesarkan jumlah yang merah, izinkan saya mencadangkan silap mata ini. 1350 01:07:51,670 --> 01:07:53,750 Biar saya mengezum masuk pada skrin saya. 1351 01:07:53,750 --> 01:07:58,678 Dan biarlah saya pergi ke hadapan dan berkata jumlah bersamaan im.getRed (x, y). 1352 01:07:58,678 --> 01:08:02,440 1353 01:08:02,440 --> 01:08:05,790 >> Ini sejajar kod memberi saya sesuatu yang dinamakan pembolehubah. 1354 01:08:05,790 --> 01:08:09,643 Saya mempunyai sewenang-wenangnya, tetapi, boleh dikatakan, munasabah dipanggil pembolehubah saya apa, 1355 01:08:09,643 --> 01:08:10,143 nampaknya? 1356 01:08:10,143 --> 01:08:13,530 1357 01:08:13,530 --> 01:08:14,340 Jumlah. 1358 01:08:14,340 --> 01:08:14,980 jumlah adil. 1359 01:08:14,980 --> 01:08:16,960 Aku boleh menyebutnya apa-apa yang saya mahu, tetapi saya 1360 01:08:16,960 --> 01:08:19,490 menggunakan fungsi lain ini yang saya diterangkan sebelum ini 1361 01:08:19,490 --> 01:08:25,359 untuk mendapatkan jumlah merah di x koma y. 1362 01:08:25,359 --> 01:08:27,520 Kenapa saya berbuat demikian? 1363 01:08:27,520 --> 01:08:30,004 Apa yang anda mahu lakukan di sini? 1364 01:08:30,004 --> 01:08:32,910 1365 01:08:32,910 --> 01:08:33,619 Anda perlu add-- 1366 01:08:33,619 --> 01:08:34,493 PENONTON: [didengar] 1367 01:08:34,493 --> 01:08:36,279 DAVID MALAN: Ya, mungkin kalikan dengan 10. 1368 01:08:36,279 --> 01:08:38,862 Dan jika anda tidak tahu ini, saya akan pergi ke hadapan dan melakukan ini. 1369 01:08:38,862 --> 01:08:42,060 Saya akan pergi ke hadapan dan katakan, saya mahu jumlah merah 1370 01:08:42,060 --> 01:08:46,550 Saya mahu menjadi apa sahaja pada merah, masa 10, 1371 01:08:46,550 --> 01:08:50,330 dan bintang, asterisk pada anda keyboard hanya-- tidak menggunakan x. 1372 01:08:50,330 --> 01:08:51,569 Gunakan bintang. 1373 01:08:51,569 --> 01:08:55,350 Itulah bagaimana anda membiak perkara dalam kebanyakan bahasa pengaturcaraan. 1374 01:08:55,350 --> 01:08:59,790 >> Jadi, mengikut gerak hati Kareem ini, disimpan dalam pembolehubah ini dipanggil jumlah, 1375 01:08:59,790 --> 01:09:03,649 adalah berapa banyak merah Saya hendak di lokasi xy. 1376 01:09:03,649 --> 01:09:11,500 Bagaimana, sekarang, saya membuat yang Pixel mempunyai nombor itu? 1377 01:09:11,500 --> 01:09:12,859 Anda telah dilakukan sebelum ini. 1378 01:09:12,859 --> 01:09:17,666 Anda menetapkan hijau dan biru untuk tiada nilai, kepada sifar. 1379 01:09:17,666 --> 01:09:18,540 PENONTON: [didengar] 1380 01:09:18,540 --> 01:09:20,040 DAVID MALAN: Ya, baik anda tidak mahu ia 10. 1381 01:09:20,040 --> 01:09:21,460 Anda sudah lakukan matematik di sini. 1382 01:09:21,460 --> 01:09:24,779 Oleh itu, kita mendapat nilai merah, yang merupakan nombor yang rendah, mungkin. 1383 01:09:24,779 --> 01:09:26,180 Kita mendarab oleh 10. 1384 01:09:26,180 --> 01:09:29,139 Apa yang anda mahu lakukan dengan jumlah yang berubah sekarang? 1385 01:09:29,139 --> 01:09:30,130 >> PENONTON: [didengar] 1386 01:09:30,130 --> 01:09:30,880 >> DAVID MALAN: Nice. 1387 01:09:30,880 --> 01:09:34,616 Jadi im.set-- apa? 1388 01:09:34,616 --> 01:09:35,640 >> PENONTON: setRed. 1389 01:09:35,640 --> 01:09:39,760 >> DAVID MALAN: setRed, di lokasi xy. 1390 01:09:39,760 --> 01:09:40,260 Yeah. 1391 01:09:40,260 --> 01:09:41,200 Dan hanya jumlah. 1392 01:09:41,200 --> 01:09:44,257 Dengan kata lain, pembolehubah adalah pemegang tempat sementara 1393 01:09:44,257 --> 01:09:45,840 bahawa anda boleh meletakkan apa sahaja yang anda mahu. 1394 01:09:45,840 --> 01:09:48,680 Kita berlaku untuk meletakkan nombor dalam itu, pada masa ini. 1395 01:09:48,680 --> 01:09:51,569 Kami telah didarab oleh 10 untuk menjadikannya lebih besar. 1396 01:09:51,569 --> 01:09:56,480 Dan sekarang saya menggantikan pembolehubah yang sebagai hujah ketiga, atau input 1397 01:09:56,480 --> 01:09:57,810 untuk menetapkan merah. 1398 01:09:57,810 --> 01:10:00,440 Dan supaya apabila anda selesai itu, dan mengambil perhatian 1399 01:10:00,440 --> 01:10:02,330 daripada koma bertindih dan kurungan. 1400 01:10:02,330 --> 01:10:06,290 >> Teruskan dan klik menjalankan / menyimpan lagi, dan anda 1401 01:10:06,290 --> 01:10:10,690 harus melihat, ajaib, apa yang sebenarnya di sana. [? Arwa,?] Apa yang ada? 1402 01:10:10,690 --> 01:10:16,412 Menara Eiffel di sepenuhnya merah, tidak cukup gelap. 1403 01:10:16,412 --> 01:10:17,870 ia perlu lebih jelas sekarang, ya? 1404 01:10:17,870 --> 01:10:18,840 OKEY. 1405 01:10:18,840 --> 01:10:20,215 Dan Andrew, kotak tidak lebih hitam? 1406 01:10:20,215 --> 01:10:21,090 PENONTON: [didengar] 1407 01:10:21,090 --> 01:10:22,180 DAVID MALAN: Baiklah. 1408 01:10:22,180 --> 01:10:23,610 Jadi saya akan menyimpan ini pada skrin. 1409 01:10:23,610 --> 01:10:27,010 Jika anda ingin bermain dengan ini kemudian, saya akan mencipta ini untuk anda. 1410 01:10:27,010 --> 01:10:29,140 Tetapi kod ini di sini berjaya melakukannya. 1411 01:10:29,140 --> 01:10:31,460 Apa kata kita buat satu lain. 1412 01:10:31,460 --> 01:10:33,880 Biar saya tatal ke bawah sedikit. 1413 01:10:33,880 --> 01:10:36,760 >> Jadi dalam kes ini, projektor tidak benar-benar melakukannya keadilan. 1414 01:10:36,760 --> 01:10:40,486 Tetapi pada skrin anda, anda mungkin mempunyai kotak yang sangat merah dan sangat hitam. 1415 01:10:40,486 --> 01:10:42,610 Ini juga adalah teka-teki yang menunjukkan sesuatu yang terkenal. 1416 01:10:42,610 --> 01:10:44,193 Walau bagaimanapun, imej telah diputarbelitkan. 1417 01:10:44,193 --> 01:10:47,740 Imej benar, kali ini, adalah dalam nilai biru dan hijau. 1418 01:10:47,740 --> 01:10:51,820 Walau bagaimanapun, mereka semua telah dibahagikan 20 supaya nilai-nilai yang sangat kecil. 1419 01:10:51,820 --> 01:10:54,660 Nilai merah hanya nombor rawak, bunyi bising. 1420 01:10:54,660 --> 01:10:57,190 Buat asal gangguan ini untuk mendedahkan imej sebenar. 1421 01:10:57,190 --> 01:10:59,200 >> Jadi Nick kemudian memberitahu anda apa yang perlu dilakukan. 1422 01:10:59,200 --> 01:11:04,290 Tetapkan nilai merah kepada sifar, dan maka tidak merosakkan apa yang ada. 1423 01:11:04,290 --> 01:11:07,110 Kemudian darab biru dan nilai-nilai hijau sebanyak 20. 1424 01:11:07,110 --> 01:11:09,820 Jadi ia adalah hampir Program yang sama seperti sebelum ini, 1425 01:11:09,820 --> 01:11:11,380 tetapi anda menterbalikkan proses. 1426 01:11:11,380 --> 01:11:13,780 Aku akan mengadakan kod saya dari sebelum pada skrin dalam kes 1427 01:11:13,780 --> 01:11:16,650 anda ingin merujuk kembali kepadanya atau bermain lagi dengan yang itu. 1428 01:11:16,650 --> 01:11:18,100 Biar saya mengezum masuk pada itu. 1429 01:11:18,100 --> 01:11:21,450 Tetapi menyelesaikan imej tembaga teka-teki, nombor dua. 1430 01:11:21,450 --> 01:11:37,623 1431 01:11:37,623 --> 01:11:40,580 >> PENONTON: [didengar] 1432 01:11:40,580 --> 01:11:44,010 >> DAVID MALAN: OK, jadi yang satu ini saya tidak akan memberi banyak petunjuk. 1433 01:11:44,010 --> 01:11:47,220 Jadi saya would-- oh, mari kita lihat, anda mempunyai kesilapan menaip di sini. 1434 01:11:47,220 --> 01:11:49,621 Jadi ingat, ini di sini sebenarnya perlu pergi ke sana. 1435 01:11:49,621 --> 01:11:52,870 Jadi apa yang saya akan mencadangkan, jika anda mahu memberi tumpuan kepada satu ini, ada jawapannya. 1436 01:11:52,870 --> 01:11:57,060 Jika anda ingin menyalin itu, bahawa perlu mendapatkan satu kerja yang pertama. 1437 01:11:57,060 --> 01:11:59,910 Dan kemudian anda boleh menggunakannya sebagai inspirasi untuk yang kedua. 1438 01:11:59,910 --> 01:12:02,230 Nice. 1439 01:12:02,230 --> 01:12:02,730 Baik. 1440 01:12:02,730 --> 01:12:05,430 1441 01:12:05,430 --> 01:12:08,180 >> Dan bagi yang ingin tahu, ini adalah satu contoh mudah 1442 01:12:08,180 --> 01:12:11,080 daripada sains atau seni dipanggil steganografi, 1443 01:12:11,080 --> 01:12:14,100 seni menyembunyikan maklumat dalam imej. 1444 01:12:14,100 --> 01:12:16,890 Biasanya, imej mungkin tera air sangat terang-terangan 1445 01:12:16,890 --> 01:12:19,500 dengan logo di bahagian bawah sudut, tetapi jelas, anda 1446 01:12:19,500 --> 01:12:22,070 boleh menjadi lebih canggih mengenainya dan sebenarnya 1447 01:12:22,070 --> 01:12:25,050 menyembunyikan imej lain dalam Images entah bagaimana dengan teknik ini. 1448 01:12:25,050 --> 01:12:59,890 1449 01:12:59,890 --> 01:13:05,770 >> Mengambil satu lagi 30 saat, dan kemudian kami akan sekurang-kurangnya mengumumkan apa yang perlu anda lihat. 1450 01:13:05,770 --> 01:13:08,330 Dan saya akan meninggalkan yang ketiga satu sebagai latihan di rumah, 1451 01:13:08,330 --> 01:13:11,353 jika anda ingin lebih daripada satu mencabar hujung minggu ini. 1452 01:13:11,353 --> 01:13:18,240 1453 01:13:18,240 --> 01:13:20,390 Dan saya fikir Andrew mungkin telah mendapat terlebih dahulu. 1454 01:13:20,390 --> 01:13:22,645 Apakah imej kedua, Andrew? 1455 01:13:22,645 --> 01:13:23,920 >> PENONTON: Statue of Liberty. 1456 01:13:23,920 --> 01:13:28,500 >> DAVID MALAN: Statue of Liberty akan menjadi jawapan kali ini. 1457 01:13:28,500 --> 01:13:31,140 Jadi sekali lagi, hanya beberapa mudah contoh, matlamat yang 1458 01:13:31,140 --> 01:13:35,040 adalah untuk memberikan anda rasa bagaimana kami telah diterjemahkan Scratch bergambar 1459 01:13:35,040 --> 01:13:40,410 blok untuk lebih menjengkelkan dan banyak lagi kod rumit, tetapi semua idea-idea 1460 01:13:40,410 --> 01:13:42,980 masih sama, walaupun dengan pengenalan 1461 01:13:42,980 --> 01:13:48,380 sekarang daripada tanggapan yang berubah-ubah, yang dapat menyimpan sesuatu buat sementara waktu. 1462 01:13:48,380 --> 01:13:51,750 >> Mari kita buat satu lagi tangan-on, hanya kini menyambung titik-titik 1463 01:13:51,750 --> 01:13:53,880 kepada sesuatu yang lebih sedikit dunia sebenar. 1464 01:13:53,880 --> 01:13:56,610 Apabila anda sudah bersedia, jika anda boleh pergi ke URL ini di skrin. 1465 01:13:56,610 --> 01:14:00,610 Itu juga dalam salinan anda daripada slaid, developers.google.com/maps~~V. 1466 01:14:00,610 --> 01:14:03,660 Mari kita sebenarnya melakukan sesuatu sebenar, jadi untuk bercakap, di web 1467 01:14:03,660 --> 01:14:07,600 menggunakan API Peta Google, atau antara muka pengaturcaraan, 1468 01:14:07,600 --> 01:14:08,940 dengan cara yang berikut. 1469 01:14:08,940 --> 01:14:12,341 >> Google, seperti banyak syarikat, menyediakan banyak fungsi percuma 1470 01:14:12,341 --> 01:14:14,840 yang boleh anda gunakan untuk membina anda aplikasi menarik sendiri. 1471 01:14:14,840 --> 01:14:18,890 Malah, jika anda pernah menggunakan Uber untuk mendapatkan teksi atau kereta, 1472 01:14:18,890 --> 01:14:21,640 anda mungkin tahu bahawa Uber mempunyai Peta dan ia menunjukkan kereta di atasnya. 1473 01:14:21,640 --> 01:14:24,870 Iaitu, sebagai terbaik yang saya boleh memberitahu, Peta Google API. 1474 01:14:24,870 --> 01:14:28,884 Mereka sebenarnya menggunakan peta Google, tetapi Uber bukan sebuah syarikat pemetaan, 1475 01:14:28,884 --> 01:14:31,050 atau yang akan menjadi masalah amat menarik 1476 01:14:31,050 --> 01:14:33,510 untuk menyelesaikan di atas mereka masalah kereta. 1477 01:14:33,510 --> 01:14:35,510 Dan supaya mereka berdiri, sekali lagi, di bahu 1478 01:14:35,510 --> 01:14:37,520 orang lain, Google dalam kes ini. 1479 01:14:37,520 --> 01:14:42,850 Jadi mereka menggunakan peta Google tetapi mereka sendiri perkhidmatan kereta dan lain-lain ciri-ciri tersebut. 1480 01:14:42,850 --> 01:14:47,770 >> Jadi, kita akan mengambil kesempatan ini untuk melakukan yang berikut. 1481 01:14:47,770 --> 01:14:50,230 Dan jika saya telah pergi terlalu cepat, hanya memanggil saya ke dalam seketika. 1482 01:14:50,230 --> 01:14:53,500 Happy untuk recap beberapa barangan imej. 1483 01:14:53,500 --> 01:14:56,290 Anda akan dapat melihat diri anda di halaman seperti ini. 1484 01:14:56,290 --> 01:14:58,230 Jadi bagus Google, dan mereka antara yang terbaik 1485 01:14:58,230 --> 01:15:01,364 menyediakan bukan sahaja API, tetapi API percuma yang anda 1486 01:15:01,364 --> 01:15:02,780 boleh bermain dengan atau menggunakan secara komersial. 1487 01:15:02,780 --> 01:15:06,450 Mereka mula mengecas anda jika penggunaan anda tinggi, tetapi saya pergi ke hadapan terlebih dahulu 1488 01:15:06,450 --> 01:15:10,490 dan ditandatangani kami untuk akaun percuma itu, mudah-mudahan, 10 komputer 1489 01:15:10,490 --> 01:15:12,480 tidak akan membatalkan penyertaan kami untuk tiba-tiba. 1490 01:15:12,480 --> 01:15:14,320 Jadi diharapkan ini demonstrasi akan berfungsi. 1491 01:15:14,320 --> 01:15:18,840 >> Dan melihat bahawa mereka mempunyai API untuk Android, iOS, perkhidmatan web dan web, 1492 01:15:18,840 --> 01:15:19,620 apa sahaja yang. 1493 01:15:19,620 --> 01:15:20,700 Mari kita fokus pada web. 1494 01:15:20,700 --> 01:15:26,560 Jadi klik kotak merah jambu, web, dan yang akan membawa anda, mudah-mudahan, untuk halaman 1495 01:15:26,560 --> 01:15:27,630 di sini. 1496 01:15:27,630 --> 01:15:29,335 Dan mereka telah mendapat sejumlah besar API. 1497 01:15:29,335 --> 01:15:31,210 Dan ia boleh menjadi sedikit hangat pada mulanya, 1498 01:15:31,210 --> 01:15:33,000 tetapi saya akan memandu kita melalui apa yang kita mahu. 1499 01:15:33,000 --> 01:15:38,500 >> Pada bahagian atas sebelah kiri Peta Google JavaScript API, API JavaScript. 1500 01:15:38,500 --> 01:15:40,380 Jadi teruskan dan klik itu. 1501 01:15:40,380 --> 01:15:49,360 Dan yang akan membawa anda sekarang kepada mengikuti halaman, demo dan contoh kod. 1502 01:15:49,360 --> 01:15:51,190 Biar saya zum di sini. 1503 01:15:51,190 --> 01:15:56,300 Dan biarlah saya membawa kita supaya- tatal ke bawah ke mana ia berkata langkah permulaan pantas. 1504 01:15:56,300 --> 01:15:57,970 skrin anda sepatutnya kelihatan seperti saya. 1505 01:15:57,970 --> 01:16:01,130 >> Dan ada dua langkah, dapatkan kunci dan mula membangun. 1506 01:16:01,130 --> 01:16:04,190 Saya sudah melakukan langkah satu untuk kami, mendapatkan kunci kononnya. 1507 01:16:04,190 --> 01:16:05,320 Dan ini adalah satu idea yang sama. 1508 01:16:05,320 --> 01:16:09,210 Kunci API umumnya hanya nombor rawak yang besar atau tali 1509 01:16:09,210 --> 01:16:11,130 bahawa anda sepatutnya tampal ke dalam kod anda, 1510 01:16:11,130 --> 01:16:15,280 supaya Google tahu siapa anda apabila anda menggunakan perkhidmatan mereka, API mereka. 1511 01:16:15,280 --> 01:16:17,370 Tidak bermakna kita mengenakan sebarang caj. 1512 01:16:17,370 --> 01:16:21,030 Dan sekarang, klik, dan bukannya satu, klik mula membangun. 1513 01:16:21,030 --> 01:16:25,990 Jika anda hanya boleh melambai saya lebih jika tidak pasti di mana kita berada. 1514 01:16:25,990 --> 01:16:28,040 >> Oleh itu, kita hanya akan mencalarkan permukaan, di sini tetapi apa 1515 01:16:28,040 --> 01:16:31,000 Saya fikir akan menjadi menarik adalah untuk benar-benar mempunyai kita semua, 1516 01:16:31,000 --> 01:16:34,240 menggunakan Cloud9 dalam satu tetingkap dan tutorial ini dalam tetingkap yang lain, 1517 01:16:34,240 --> 01:16:37,120 membolehkan benar-benar mendapatkan kita sendiri permohonan dan berjalan 1518 01:16:37,120 --> 01:16:40,920 yang membenamkan adat Google peta di laman web kami sendiri, 1519 01:16:40,920 --> 01:16:43,010 dan kemudian menambah satu atau dua ciri-ciri. 1520 01:16:43,010 --> 01:16:45,520 Tetapi kita hanya akan mencalarkan permukaan apa yang boleh kita lakukan. 1521 01:16:45,520 --> 01:16:47,020 >> Jadi hanya kewarasan cek cepat. 1522 01:16:47,020 --> 01:16:49,740 Adakah semua orang di halaman ini, API Google Maps JavaScript? 1523 01:16:49,740 --> 01:16:50,872 Tidak mengatakan bermula. 1524 01:16:50,872 --> 01:16:53,330 Kami tidak akan pergi melalui segala-galanya dengan apa cara sekalipun. 1525 01:16:53,330 --> 01:16:58,090 OK, dalam tab yang lain, jika anda tidak melakukan mempunyai ia terbuka, jangan pergi ke Cloud9 1526 01:16:58,090 --> 01:17:03,500 dan mendapatkan diri anda untuk hanya tab baru, akhirnya. 1527 01:17:03,500 --> 01:17:11,070 Jadi sekali lagi, c9.io daripada semalam, c9.io, dan hanya membuat fail baru. 1528 01:17:11,070 --> 01:17:13,500 Dan pergi ke depan dan panggilan apa sahaja yang anda suka. 1529 01:17:13,500 --> 01:17:16,495 Saya dipanggil map.html saya. 1530 01:17:16,495 --> 01:17:17,870 Memanggilnya apa-apa yang berakhir dengan .html. 1531 01:17:17,870 --> 01:17:23,930 1532 01:17:23,930 --> 01:17:26,580 Dan anda harus kira-kira di mana saya dalam proses ini 1533 01:17:26,580 --> 01:17:31,470 dengan hanya segera berkelip dalam kosong tab dipanggil seperti map.html. 1534 01:17:31,470 --> 01:17:35,808 1535 01:17:35,808 --> 01:17:38,148 Atau fail, fail baru kali ini. 1536 01:17:38,148 --> 01:17:41,960 1537 01:17:41,960 --> 01:17:48,000 >> Dan kini, lebih pada Google Maps JavaScript API, 1538 01:17:48,000 --> 01:17:50,010 kami akan skip membaca melalui semua teks ini. 1539 01:17:50,010 --> 01:17:53,760 Tetapi perhatikan bahawa dunia hello adalah sesungguhnya di mana-mana, anda lihat sekarang. 1540 01:17:53,760 --> 01:17:58,020 Hello dunia mempunyai ini besar berwarna-warni contoh sejumlah besar HTML. 1541 01:17:58,020 --> 01:18:03,590 Teruskan dan copy dan paste sahaja HTML, jadi dari jenis doc di bahagian atas 1542 01:18:03,590 --> 01:18:08,810 sepanjang jalan ke tag HTML yang dekat, pergi hadapan dan menyalin semua bahawa- lagi, 1543 01:18:08,810 --> 01:18:14,430 itulah di bawah dunia hello yang contoh yang dan tampal ke dalam tab Cloud9 anda, 1544 01:18:14,430 --> 01:18:17,996 supaya sekarang skrin anda harus melihat secara kasar seperti saya. 1545 01:18:17,996 --> 01:18:22,280 1546 01:18:22,280 --> 01:18:24,520 >> Dan anda boleh menyimpannya, tetapi tidak memuatkan lagi. 1547 01:18:24,520 --> 01:18:26,290 Mari kita melihat pertama di kod dan lihat jika kita 1548 01:18:26,290 --> 01:18:29,110 tidak boleh membuat kesimpulan atau belajar daripada apa yang ada Google 1549 01:18:29,110 --> 01:18:30,860 telah mempunyai kita secara membuta tuli menyalin dan tampal. 1550 01:18:30,860 --> 01:18:33,334 Mereka hanya mahu membantu, secara literal, mendapatkan kami bermula, 1551 01:18:33,334 --> 01:18:35,500 tetapi tidak ada yang banyak kerumitan sebenarnya di sana. 1552 01:18:35,500 --> 01:18:40,100 1553 01:18:40,100 --> 01:18:42,210 Sebarang soalan sahaja lagi? 1554 01:18:42,210 --> 01:18:43,790 Kita selamat maju ke hadapan? 1555 01:18:43,790 --> 01:18:44,330 OKEY. 1556 01:18:44,330 --> 01:18:46,800 >> Begitu cepat, mari kita hanya melakukan sesetengah semakan waras cepat. 1557 01:18:46,800 --> 01:18:48,800 Line salah satu daripada apa yang saya melihat, dan diharapkan, anda 1558 01:18:48,800 --> 01:18:51,710 lihat, apa maksudnya, DOCTYPE HTML? 1559 01:18:51,710 --> 01:18:52,385 Kareem, ingat? 1560 01:18:52,385 --> 01:18:53,260 PENONTON: [didengar] 1561 01:18:53,260 --> 01:18:53,968 DAVID MALAN: Ya. 1562 01:18:53,968 --> 01:18:54,870 Di sini datang HTML 5. 1563 01:18:54,870 --> 01:18:57,950 Sementara itu, beratur dua di skrin di sini bermakna hey pelayar, 1564 01:18:57,950 --> 01:18:59,482 di sini datang HTML sebenar. 1565 01:18:59,482 --> 01:19:01,440 Line tiga adalah hey pelayar, di sini datang kepala. 1566 01:19:01,440 --> 01:19:04,260 Line empat adalah, sudah tentu, hey pelayar, di sini datang tajuk. 1567 01:19:04,260 --> 01:19:07,780 Apakah garis lima lakukan? 1568 01:19:07,780 --> 01:19:09,930 Sebenarnya, ini tidak benar-benar melakukan apa sahaja untuk kita. 1569 01:19:09,930 --> 01:19:13,340 Dalam kes ini, ia hanya mengubah saiz halaman untuk lalai. Line enam, 1570 01:19:13,340 --> 01:19:16,140 kita tidak bercakap tentang, tetapi ia menyatakan pengekodan aksara. 1571 01:19:16,140 --> 01:19:19,181 Ada cara yang berbeza untuk mengekod fail, terutamanya untuk bahasa asing. 1572 01:19:19,181 --> 01:19:21,100 UTF-8 hanya cenderung untuk menjadi lalai. 1573 01:19:21,100 --> 01:19:26,580 >> Jadi sekarang kita akan melihat dalam talian tujuh melalui 16, beberapa CSS. 1574 01:19:26,580 --> 01:19:29,260 Dan walaupun kita telah tidak dilihat semua perkara-perkara ini sebelum ini, 1575 01:19:29,260 --> 01:19:30,810 kita jenis boleh membuat kesimpulan. 1576 01:19:30,810 --> 01:19:37,075 Jadi beratur lapan cara, hey pelayar, memohon semua yang berikut yang mana dua tag, 1577 01:19:37,075 --> 01:19:37,575 nampaknya? 1578 01:19:37,575 --> 01:19:40,650 1579 01:19:40,650 --> 01:19:41,701 HTML dan badan teks. 1580 01:19:41,701 --> 01:19:43,200 Jadi koma adalah perkara yang baru di sana. 1581 01:19:43,200 --> 01:19:46,140 Dan itu hanya satu cara menyatakan pelbagai tag sekaligus. 1582 01:19:46,140 --> 01:19:47,640 >> Kemudian kami telah mendapat pendakap kerinting. 1583 01:19:47,640 --> 01:19:51,170 Jadi nampaknya, ini memberitahu pelayar, membuat ketinggian halaman 100%. 1584 01:19:51,170 --> 01:19:54,170 Jadi, walaupun ada sangat sedikit kandungan, membuat keseluruhan halaman, 1585 01:19:54,170 --> 01:19:55,530 menjadikan sesuatu yang mengisi halaman. 1586 01:19:55,530 --> 01:19:57,524 Peribadikan peta akhirnya mengisi halaman. 1587 01:19:57,524 --> 01:19:58,690 Margin, apa maksudnya? 1588 01:19:58,690 --> 01:20:01,559 Itulah biasanya seperti sewenang-wenangnya ruang putih di tepi 1589 01:20:01,559 --> 01:20:04,350 bahawa beberapa pereka pelayar hanya memutuskan perlu berada di sana, kerana ia 1590 01:20:04,350 --> 01:20:05,540 jenis membuat perkara yang kelihatan lebih bersih. 1591 01:20:05,540 --> 01:20:06,498 Tetapi kita tidak mahu itu. 1592 01:20:06,498 --> 01:20:08,710 Kami mahu peta akan sepanjang jalan ke tepi. 1593 01:20:08,710 --> 01:20:10,930 Padding, sama dalam semangat untuk margin. 1594 01:20:10,930 --> 01:20:14,980 Margin bermakna di luar, cara padding di dalam, tetapi ia adalah jenis yang sama daripada perjanjian. 1595 01:20:14,980 --> 01:20:17,520 Ia sedikit penampan antara anda dan tepi. 1596 01:20:17,520 --> 01:20:21,170 >> Dan kemudian line 13 adalah baik peluang untuk ulasan ringkas. 1597 01:20:21,170 --> 01:20:26,440 Apakah yang tajam peta tanda bermakna, atau peta hashtag maksudkan? 1598 01:20:26,440 --> 01:20:29,650 Apa yang merujuk kepada, pada dasarnya? 1599 01:20:29,650 --> 01:20:31,485 >> PENONTON: [didengar] 1600 01:20:31,485 --> 01:20:32,360 DAVID MALAN: Tepat sekali. 1601 01:20:32,360 --> 01:20:36,900 harta ini, harta CSS ini terpakai kepada hanya satu perkara, tag HTML 1602 01:20:36,900 --> 01:20:41,180 yang mempunyai ID quote, unquote "peta". 1603 01:20:41,180 --> 01:20:44,460 Dan sekarang mari kita ke hadapan yang laju, tatal turun ke bahagian bawah fail, yang 1604 01:20:44,460 --> 01:20:49,860 tidak terlalu jauh, dan notis di talian 19, jika anda paste ia betul-betul seperti yang saya lakukan, 1605 01:20:49,860 --> 01:20:53,405 line 19 mempunyai hanya div a, yang merupakan Bahagian atas halaman, yang semalam saya 1606 01:20:53,405 --> 01:20:54,820 dipanggil kawasan segi empat tepat. 1607 01:20:54,820 --> 01:20:55,820 Ia mempunyai apa-apa di dalamnya. 1608 01:20:55,820 --> 01:20:57,550 Ia merupakan satu tag terbuka, tag penutup. 1609 01:20:57,550 --> 01:20:59,490 Tetapi ia mempunyai ID yang unik. 1610 01:20:59,490 --> 01:21:02,090 >> Jadi apa yang seolah-olah menjadi berlaku di sini adalah Google 1611 01:21:02,090 --> 01:21:05,880 sedang menyiapkan laman web kami untuk mempunyai ketinggian lengkap 100%, 1612 01:21:05,880 --> 01:21:09,680 dan tiada padding, tiada margin, kerana apa yang kita akan diletakkan di dalam 1613 01:21:09,680 --> 01:21:13,647 div ini, yang ID unik adalah peta, adalah sebuah peta yang dibenamkan yang sebenar. 1614 01:21:13,647 --> 01:21:15,480 Dan kita mahu ia untuk mengisi halaman ini dan bukan hanya 1615 01:21:15,480 --> 01:21:17,560 beberapa segi empat tepat kecil di tengah-tengah. 1616 01:21:17,560 --> 01:21:24,220 Jadi garis 14 begitu juga menekankan, yang peta itu sendiri harus mempunyai ketinggian 100%. 1617 01:21:24,220 --> 01:21:29,220 >> Jadi kini notis antara baris 20 dan 28, ini adalah kod JavaScript. 1618 01:21:29,220 --> 01:21:33,020 Dan ini adalah, walaupun ia sintaksis sedikit pelik, 1619 01:21:33,020 --> 01:21:34,730 terdapat tidak semua yang banyak berlaku di sini. 1620 01:21:34,730 --> 01:21:39,310 Selaras 21, ini mengisytiharkan sesuatu yang dinamakan pembolehubah. 1621 01:21:39,310 --> 01:21:42,030 Daripada memanggil ia jumlah, seperti yang kami lakukan sebelum ini, 1622 01:21:42,030 --> 01:21:44,500 kita lebih tepat mengatakan var, yang hanya bermaksud berubah-ubah. 1623 01:21:44,500 --> 01:21:46,520 Kita boleh menggunakan bahawa dalam kod Nick, tetapi dia tidak, jadi saya 1624 01:21:46,520 --> 01:21:48,190 tidak mengganggu melakukannya sama ada. 1625 01:21:48,190 --> 01:21:50,240 Ia adalah pembolehubah yang dipanggil peta, dan kemudian ada 1626 01:21:50,240 --> 01:21:53,360 fungsi itu nampaknya dipanggil initMap. 1627 01:21:53,360 --> 01:21:55,780 >> Jadi ini adalah seperti adat kita sendiri sekeping teka-teki dalam Scratch. 1628 01:21:55,780 --> 01:21:58,830 Kami telah mencipta sekeping fungsi dipanggil initMap, 1629 01:21:58,830 --> 01:22:00,980 dan anda jenis boleh membuat kesimpulan apa yang berlaku di sini. 1630 01:22:00,980 --> 01:22:02,930 Pada sebelah kiri, kami mempunyai pembolehubah, 1631 01:22:02,930 --> 01:22:06,000 jadi kita akan meletakkan berikut perkara dalam pembolehubah yang, 1632 01:22:06,000 --> 01:22:07,362 dari kanan ke kiri. 1633 01:22:07,362 --> 01:22:11,940 sebelah kanan berkata, hey pelayar, berilah Peta Google baru. 1634 01:22:11,940 --> 01:22:16,490 Dan google.maps.map hanya cara yang funky untuk menyatakan bahawa fungsi ini 1635 01:22:16,490 --> 01:22:19,790 tergolong ke Peta Google. 1636 01:22:19,790 --> 01:22:23,010 >> Selepas kurungan, kita telah melihat ini sebelum ini, hey pelayar, dapatkan 1637 01:22:23,010 --> 01:22:29,210 saya elemen dalam halaman, tag dalam halaman yang ID unik is-- 1638 01:22:29,210 --> 01:22:30,710 >> PENONTON: [didengar] 1639 01:22:30,710 --> 01:22:31,790 >> DAVID MALAN: --map. 1640 01:22:31,790 --> 01:22:35,770 Dan apa yang sedang berlaku, baik, garis ini bersama-sama, line 23, 1641 01:22:35,770 --> 01:22:38,630 pada dasarnya berkata, hey pelayar, pergi mendapatkan saya 1642 01:22:38,630 --> 01:22:42,800 yang div kosong pada halaman yang ID unik adalah peta, 1643 01:22:42,800 --> 01:22:45,600 kerana saya mahu memasukkan ke dalam it-- menyuntik ke dalamnya, 1644 01:22:45,600 --> 01:22:49,520 jika anda will-- sejumlah besar kandungan yang berlaku akan datang dari web, 1645 01:22:49,520 --> 01:22:50,427 seterusnya. 1646 01:22:50,427 --> 01:22:52,010 Dan Google melakukan semua itu untuk kita. 1647 01:22:52,010 --> 01:22:55,350 >> Jadi sekali lagi, bagi mereka yang terkemudian hari, kita mempunyai contoh ini abstraksi. 1648 01:22:55,350 --> 01:22:58,610 Saya tidak tahu apa peta adalah atau bagaimana untuk melaksanakan Peta API. 1649 01:22:58,610 --> 01:22:59,460 Kami tidak perlu. 1650 01:22:59,460 --> 01:23:02,740 Kami hanya perlu memberitahu peta di mana untuk meletakkan dirinya, dan meninggalkan 1651 01:23:02,740 --> 01:23:04,880 orang-orang yang mendasari pelaksanaan butiran kepada Google. 1652 01:23:04,880 --> 01:23:08,190 Sekarang terdapat nampaknya dua keping data 1653 01:23:08,190 --> 01:23:11,940 bahawa contoh ini adalah menyediakan kepada API Google. 1654 01:23:11,940 --> 01:23:16,450 Rupa-rupanya pusat peta, dan tahap zum, jadi untuk bercakap. 1655 01:23:16,450 --> 01:23:21,390 >> Dan adakah sesiapa yang mengenali ini koordinat, latitud dan longitud? 1656 01:23:21,390 --> 01:23:24,364 Mungkin tidak, tetapi kita boleh kembali tutorial, secara literal melihat. 1657 01:23:24,364 --> 01:23:25,780 Tetapi kita akan melihat ia dalam hanya seketika. 1658 01:23:25,780 --> 01:23:29,880 tahap zum adalah nilai antara, saya tidak tahu, satu dalam 13 atau sesuatu seperti itu. 1659 01:23:29,880 --> 01:23:32,880 Ia hanya mempunyai kaitan dengan sejauh mana anda berada zum masuk atau keluar, dan itu sahaja. 1660 01:23:32,880 --> 01:23:35,690 Dan kini di akhir sangat laman, talian notis 29-- 1661 01:23:35,690 --> 01:23:39,960 ia sedikit hodoh kerana ia wraps-- baris ini kod 1662 01:23:39,960 --> 01:23:44,570 adalah apa downloads kepada pelayar API sebenar Google. 1663 01:23:44,570 --> 01:23:47,500 Semua kod yang Google jurutera telah menulis bahawa melaksanakan 1664 01:23:47,500 --> 01:23:50,000 ini ciri-ciri keseluruhan peta terbenam. 1665 01:23:50,000 --> 01:23:51,470 >> Sekarang mari kita tidak mengubah apa-apa. 1666 01:23:51,470 --> 01:23:54,761 Jika anda mengikuti bersama-sama, pergi ke depan dan hanya menyimpan fail itu, jika anda memang mempunyai 1667 01:23:54,761 --> 01:23:55,760 apa yang saya ada. 1668 01:23:55,760 --> 01:23:57,370 Pergi ke URLnya. 1669 01:23:57,370 --> 01:23:59,820 Anda boleh klik butang Run sehingga atas dan yang akan memberitahu 1670 01:23:59,820 --> 01:24:03,050 anda URL pelayan web anda lagi. 1671 01:24:03,050 --> 01:24:06,010 Dan ia akan membawa anda ke tab baru. 1672 01:24:06,010 --> 01:24:11,910 Jika anda klik Terbuka map.html, dan kemungkinan besar anda berada 1673 01:24:11,910 --> 01:24:15,520 akan mendapat amaran, mesej ralat, ya? 1674 01:24:15,520 --> 01:24:18,570 Mesej ralat, mesej ralat? 1675 01:24:18,570 --> 01:24:21,170 >> Lebih malang lagi, kesilapan mesej tidak begitu menyedarkan 1676 01:24:21,170 --> 01:24:23,890 melainkan anda sebenarnya membuka konsol, bahawa tab khas kita 1677 01:24:23,890 --> 01:24:27,110 terus membuka semalam dan sedikit awal hari ini. 1678 01:24:27,110 --> 01:24:29,445 Tetapi saya terjumpa ini lebih awal, jadi saya sudah 1679 01:24:29,445 --> 01:24:30,820 menemukan apa penyelesaian adalah. 1680 01:24:30,820 --> 01:24:34,440 Dalam slaid hari ini, atau sebaliknya, dalam Cloud9, notis 1681 01:24:34,440 --> 01:24:36,430 bahawa kita tidak melakukan sesuatu yang sengaja. 1682 01:24:36,430 --> 01:24:40,690 Perhatikan bahawa ini tag skrip di line 29, jika anda membaca melaluinya, 1683 01:24:40,690 --> 01:24:44,440 ia seperti maps.googleapis.com/ sesuatu, sesuatu, sesuatu, 1684 01:24:44,440 --> 01:24:46,430 kemudian melihat seseorang, salah satu daripada pemaju, 1685 01:24:46,430 --> 01:24:50,040 menulis dalam semua modal surat, kunci API anda. 1686 01:24:50,040 --> 01:24:51,700 >> Kita perlu paste sesuatu di sana. 1687 01:24:51,700 --> 01:24:53,450 Dan ini adalah langkah Saya lakukan untuk kita sebelum ini, 1688 01:24:53,450 --> 01:24:57,190 dan sekali lagi mereka mungkin menyenaraihitamkan kami jika tiba-tiba, 12 atau lebih daripada kita 1689 01:24:57,190 --> 01:24:59,470 mula menggunakan kekunci yang sama, tetapi mari kita lihat apa yang berlaku. 1690 01:24:59,470 --> 01:25:03,030 Jadi, jika anda pergi ke hari ini slaid, satu slaid kemudian, ada 1691 01:25:03,030 --> 01:25:07,070 rentetan ini sangat funky-cari teks. 1692 01:25:07,070 --> 01:25:12,230 Teruskan dan hanya menyalin itu dan tampal di mana ia berkata kunci API anda. 1693 01:25:12,230 --> 01:25:15,120 Itulah yang saya mendaftar untuk. 1694 01:25:15,120 --> 01:25:17,700 >> Dan pasti jangan cuba menaip secara manual, 1695 01:25:17,700 --> 01:25:21,210 kerana ia merasakan penuh dengan kesilapan menaip, berpotensi. 1696 01:25:21,210 --> 01:25:23,260 Jadi hanya copy dan paste itu. 1697 01:25:23,260 --> 01:25:26,090 Dan ia akan membuat garisan lebih lama, tetapi sekarang, hanya untuk menjadi jelas, 1698 01:25:26,090 --> 01:25:29,540 ia perlu melihat lebih sedikit seperti ini, di mana utama tidak sama 1699 01:25:29,540 --> 01:25:32,200 dipermodalkan menjerit pada anda. 1700 01:25:32,200 --> 01:25:34,810 Simpan halaman anda, kembali ke tab yang lain, tambah nilai, 1701 01:25:34,810 --> 01:25:36,770 dan berharap untuk melihat peta di mana? 1702 01:25:36,770 --> 01:25:37,790 >> PENONTON: Australia. 1703 01:25:37,790 --> 01:25:38,748 >> DAVID MALAN: Australia. 1704 01:25:38,748 --> 01:25:41,200 Jadi nampaknya mereka adalah Koordinat GPS Australia. 1705 01:25:41,200 --> 01:25:44,491 Dan biarlah saya berjalan di sekitar untuk seketika dan membantu sesiapa sahaja yang tidak cukup di sana, 1706 01:25:44,491 --> 01:25:47,729 tetapi biarlah saya mencadangkan, melalui Google, mencari GPS koordinat kampung halaman anda sendiri 1707 01:25:47,729 --> 01:25:48,770 atau negara rumah anda sendiri. 1708 01:25:48,770 --> 01:25:51,436 Dan mungkin Google boleh menghidupkan ini , atau Wikipedia boleh memberitahu anda. 1709 01:25:51,436 --> 01:25:54,410 Tetapi memilih dua nilai yang berbeza untuk latitud dan longitud, 1710 01:25:54,410 --> 01:25:57,530 kembali dalam dan paste mereka, dan kemudian muat semula halaman selepas menyimpan 1711 01:25:57,530 --> 01:26:00,718 dan lihat jika anda boleh mempunyai peta kampung halaman anda sendiri. 1712 01:26:00,718 --> 01:26:04,500 1713 01:26:04,500 --> 01:26:08,042 >> Dan apabila anda selesai dengan itu, susulan challenge-- 1714 01:26:08,042 --> 01:26:11,250 dan saya akan memberi arahan sedikit kurang, sengaja, supaya anda sengaja 1715 01:26:11,250 --> 01:26:13,791 perlu berjuang untuk pasangan minit dengan dokumentasi, 1716 01:26:13,791 --> 01:26:18,740 menukar peta sebagai tidak ini lalai kartun, tetapi peta satelit. 1717 01:26:18,740 --> 01:26:24,600 Jadi, anda benar-benar melihat satelit imej dan bukannya warna cantik. 1718 01:26:24,600 --> 01:26:29,710 >> Dan tanda-tanda yang saya akan memberikan anda adalah menukar jenis peta. 1719 01:26:29,710 --> 01:26:33,084 Kembali kepada yang mendapat memulakan halaman untuk inspirasi. 1720 01:26:33,084 --> 01:26:40,599 1721 01:26:40,599 --> 01:26:42,390 Seperti yang anda mungkin telah dikumpulkan, jika anda sedang mencari, 1722 01:26:42,390 --> 01:26:44,250 terdapat begitu banyak lagi perkara yang anda boleh lakukan. 1723 01:26:44,250 --> 01:26:46,380 Sebahagian daripada anda sudah berubah peta jenis. 1724 01:26:46,380 --> 01:26:49,890 Tetapi anda boleh do-- misalnya, biarlah saya pergi ke sesuatu yang kita lakukan untuk kursus 1725 01:26:49,890 --> 01:26:52,050 Saya teach-- maps.cs50.net. 1726 01:26:52,050 --> 01:26:53,470 Salah satu mahasiswa kami lakukan ini. 1727 01:26:53,470 --> 01:26:58,890 Kami memusatkan peta kami lebih Harvard Yard dan menindih semua nama-nama bangunan, 1728 01:26:58,890 --> 01:27:01,070 dan kami telah dia menambah ini. 1729 01:27:01,070 --> 01:27:04,270 Jadi jika saya mahu untuk mencari, misalnya, Matthews Hall, 1730 01:27:04,270 --> 01:27:05,730 kita mempunyai menu drop-down sedikit. 1731 01:27:05,730 --> 01:27:09,080 Dan saya fikir dia menggunakan Bootstrap, yang perpustakaan kita dibincangkan sebelum ini untuk ini. 1732 01:27:09,080 --> 01:27:12,190 Dan jika anda klik pada Matthews Hall, ia segera 1733 01:27:12,190 --> 01:27:14,790 melompat peta untuk tertentu lokasi, dan ia menunjukkan 1734 01:27:14,790 --> 01:27:16,440 anda gambar dalam sedikit pop-up ini. 1735 01:27:16,440 --> 01:27:18,670 >> Tetapi ini sedikit pop-up, kami tidak melaksanakan. 1736 01:27:18,670 --> 01:27:27,521 Jika saya tatal ke bawah untuk mendapatkan kami memulakan halaman dan mencari maklumat tingkap, 1737 01:27:27,521 --> 01:27:29,770 anda akan melihat bahawa beberapa fungsi anda sendiri 1738 01:27:29,770 --> 01:27:31,561 boleh menambah, walaupun dengan kerumitan sedikit lebih, 1739 01:27:31,561 --> 01:27:33,970 adalah sesuatu yang dinamakan tetingkap maklumat. 1740 01:27:33,970 --> 01:27:37,190 Dan jika saya klik contoh di sini, dan ini adalah apa yang seronok, 1741 01:27:37,190 --> 01:27:40,530 anda boleh melakukan perkara-perkara seperti ini, klik pada penanda dan kemudian VoilĂ , 1742 01:27:40,530 --> 01:27:42,400 maklumat timbul. 1743 01:27:42,400 --> 01:27:45,874 >> Oleh itu, kita telah tidak cukup diperkenalkan ciri cukup JavaScript 1744 01:27:45,874 --> 01:27:49,040 untuk melukis gambar bagaimana anda boleh wayar semua barangan ini bersama-sama, 1745 01:27:49,040 --> 01:27:50,706 tetapi kita telah jenis permukaan. 1746 01:27:50,706 --> 01:27:53,140 Malah, apa yang saya lakukan apabila Saya klik pada penanda itu, 1747 01:27:53,140 --> 01:27:55,819 telah mencetuskan acara, yang apa yang dipanggil di acara klik. 1748 01:27:55,819 --> 01:27:57,610 Dan kita sebenarnya menyaksikan acara awal hari ini, 1749 01:27:57,610 --> 01:28:00,670 yang dipanggil mengemukakan acara, apabila kita telah menghalang 1750 01:28:00,670 --> 01:28:02,490 pengguna daripada mencari kucing. 1751 01:28:02,490 --> 01:28:06,560 Oleh itu, kita telah jenis dipilih dan dipilih secara daripada kalangan semua ini pelbagai ciri-ciri, 1752 01:28:06,560 --> 01:28:08,990 untuk memberikan anda rasa yang, diharapkan, daripada apa yang anda boleh sebenarnya 1753 01:28:08,990 --> 01:28:11,000 lakukan dengan sedikit lebih keselesaan dalam pengaturcaraan, 1754 01:28:11,000 --> 01:28:12,587 dan sumber-sumber percuma. 1755 01:28:12,587 --> 01:28:15,856 1756 01:28:15,856 --> 01:28:18,770 >> Ada soalan? 1757 01:28:18,770 --> 01:28:19,790 Tidak? 1758 01:28:19,790 --> 01:28:22,542 Ini adalah peluang terakhir anda, sekurang-kurangnya hari ini, pada hari Jumaat, 1759 01:28:22,542 --> 01:28:25,000 untuk mendapatkan apa-apa di luar dada anda supaya anda berjalan keluar dari sini 1760 01:28:25,000 --> 01:28:27,067 berasa yakin dan selesa. 1761 01:28:27,067 --> 01:28:27,566 Ya. 1762 01:28:27,566 --> 01:28:29,740 >> PENONTON: Mengapa tidak anda menambah satu lagi perkara? 1763 01:28:29,740 --> 01:28:32,720 >> DAVID MALAN: Oh kebaikan saya. 1764 01:28:32,720 --> 01:28:35,260 Saya perlu berehat pada hujung minggu ini, saya fikir. 1765 01:28:35,260 --> 01:28:36,180 Soalan-soalan lain? 1766 01:28:36,180 --> 01:28:37,055 >> PENONTON: [didengar] 1767 01:28:37,055 --> 01:28:44,130 1768 01:28:44,130 --> 01:28:46,810 >> DAVID MALAN: Anda can-- dalam Internet Explorer, rehat dengan aman, 1769 01:28:46,810 --> 01:28:49,310 anda digunakan untuk dapat untuk meletakkan VB skrip, skrip asas maya, 1770 01:28:49,310 --> 01:28:50,643 tetapi yang benar-benar tidak pernah ditangkap pada. 1771 01:28:50,643 --> 01:28:52,490 Jadi jawapan pendek adalah hanya JavaScript. 1772 01:28:52,490 --> 01:28:55,144 1773 01:28:55,144 --> 01:28:55,810 Soalan-soalan lain? 1774 01:28:55,810 --> 01:28:58,427 1775 01:28:58,427 --> 01:28:59,760 Baiklah, baik, biarlah saya melakukan ini. 1776 01:28:59,760 --> 01:29:02,070 Biar saya merebut rakan-rakan kita di luar. 1777 01:29:02,070 --> 01:29:04,500 Mereka mempunyai beberapa penilaian bentuk yang mereka mahu semua orang 1778 01:29:04,500 --> 01:29:06,310 untuk menghabiskan beberapa minit mengisi. 1779 01:29:06,310 --> 01:29:08,775 Mereka mahu untuk mengumpul bentuk itu dan apa-apa pengecualian yang anda mungkin ada di luar. 1780 01:29:08,775 --> 01:29:10,240 Mereka juga akan mempunyai sijil. 1781 01:29:10,240 --> 01:29:12,380 Saya meneka ada masih beberapa makanan ringan di luar. 1782 01:29:12,380 --> 01:29:14,360 Biar saya lulus ini, dan jika anda mempunyai apa-apa soalan dalam masa yang sama, 1783 01:29:14,360 --> 01:29:17,120 Saya akan berjalan sekitar lebih secara individu dan kita boleh mendapatkan anda bermula. 1784 01:29:17,120 --> 01:29:17,879 Ya sudah tentu. 1785 01:29:17,879 --> 01:29:18,754 PENONTON: [didengar] 1786 01:29:18,754 --> 01:29:26,737 1787 01:29:26,737 --> 01:29:28,570 DAVID MALAN: Itu biasanya benar hari ini. 1788 01:29:28,570 --> 01:29:30,730 Sudah tentu dengan web perisian, anda sedang bersandar 1789 01:29:30,730 --> 01:29:32,901 kepada orang lain anda sama ada estetika menggunakan perkara-perkara 1790 01:29:32,901 --> 01:29:35,400 seperti Bootstrap, supaya anda tidak perlu melaksanakan tahap yang rendah 1791 01:29:35,400 --> 01:29:37,169 butiran menu dan butang dan semua itu. 1792 01:29:37,169 --> 01:29:39,210 Anda bersandar pada seseorang seperti Google supaya anda 1793 01:29:39,210 --> 01:29:42,050 tidak perlu membina Uber perniagaan dan perniagaan pemetaan, 1794 01:29:42,050 --> 01:29:44,850 dan apa-apa bilangan sama aplikasi juga. 1795 01:29:44,850 --> 01:29:46,350 >> Malah, login yang popular juga. 1796 01:29:46,350 --> 01:29:48,500 Jika anda telah menggunakan Spotify atau apa-apa bilangan laman web, 1797 01:29:48,500 --> 01:29:51,210 anda akan log masuk ke beberapa laman web yang menggunakan Facebook. 1798 01:29:51,210 --> 01:29:53,350 Jadi apa yang baik, terdapat adalah API untuk login 1799 01:29:53,350 --> 01:29:56,570 pada masa kini, supaya anda tidak perlu untuk mempunyai jadual pengguna anda sendiri 1800 01:29:56,570 --> 01:29:59,440 dan semua pangkalan data anda sendiri semestinya setakat yang sama. 1801 01:29:59,440 --> 01:30:01,795 Anda boleh membiarkan Facebook melakukan semua kerumitan untuk anda. 1802 01:30:01,795 --> 01:30:03,920 Jadi ia adalah masa yang menarik, secara jujur, dalam pengaturcaraan, 1803 01:30:03,920 --> 01:30:07,200 kerana terdapat banyak pihak ketiga perkhidmatan yang anda boleh membina di atas. 1804 01:30:07,200 --> 01:30:10,890 >> Dan sekali lagi, harga yang anda bayar ialah sama ada kewangan atau downtime. 1805 01:30:10,890 --> 01:30:13,750 Jika Google turun, begitu juga Uber, boleh dikatakan, 1806 01:30:13,750 --> 01:30:15,690 tetapi mungkin itu adalah satu munasabah keseimbangan. 1807 01:30:15,690 --> 01:30:18,040 Dan sekali lagi, itu adalah salah satu daripada tema, mudah-mudahan, untuk pasangan yang lalu hari, 1808 01:30:18,040 --> 01:30:18,780 inilah keseimbangan. 1809 01:30:18,780 --> 01:30:20,738 Dan jarang ada akan sebagai jawapan yang betul. 1810 01:30:20,738 --> 01:30:25,700 Ia benar-benar adalah lebih baik dua atau lebih jawapan. 1811 01:30:25,700 --> 01:30:26,682 >> Pas ini di seluruh. 1812 01:30:26,682 --> 01:30:36,830 1813 01:30:36,830 --> 01:30:41,110 >> Dan akaun-akaun Cloud9 akan terus untuk bekerja, dalam teori, untuk selama-lamanya. 1814 01:30:41,110 --> 01:30:45,000 Anda mungkin mendapati jika anda menunggu beberapa hari atau seminggu atau lebih untuk log masuk semula ke dalam mereka, 1815 01:30:45,000 --> 01:30:49,170 ia mungkin mengambil masa seperti satu atau lima minit untuk membuka kembali ke atas, 1816 01:30:49,170 --> 01:30:54,090 tetapi itu hanya kerana mereka meletakkan ia tidur untuk menjimatkan sumber. 1817 01:30:54,090 --> 01:31:10,527