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, bagian terakhir kami 4 00:00:03,830 --> 00:00:06,900 pada pemrograman web, yang saya pikir kami akan menggunakan sebagai istilah umum 5 00:00:06,900 --> 00:00:08,440 untuk menangkap topik yang tersisa. 6 00:00:08,440 --> 00:00:10,390 Jadi pada akhir hari, kita akan benar-benar melakukan 7 00:00:10,390 --> 00:00:14,830 sedikit tangan-on pemrograman web dengan bahasa yang disebut JavaScript. 8 00:00:14,830 --> 00:00:17,510 Dan saya pikir kami akan lihat sesuatu yang berhubungan dengan gambar 9 00:00:17,510 --> 00:00:20,040 dan menemukan sesuatu diam-diam tersembunyi di gambar, 10 00:00:20,040 --> 00:00:23,230 dan juga kita lihat di Google Maps API, pemrograman aplikasi 11 00:00:23,230 --> 00:00:26,040 antarmuka, sebagai sesuatu yang wakil dari jenis perangkat lunak 12 00:00:26,040 --> 00:00:28,800 itu semakin dan bebas tersedia saat ini. 13 00:00:28,800 --> 00:00:32,029 >> Tapi kenapa tidak kita lihat di bahan untuk dunia ini 14 00:00:32,029 --> 00:00:34,070 bahwa kita sudah semacam berkunjung mengambil untuk diberikan ada 15 00:00:34,070 --> 00:00:36,720 untuk beberapa waktu, database. 16 00:00:36,720 --> 00:00:39,150 Untuk hari terakhir dan setengah kami sudah diasumsikan 17 00:00:39,150 --> 00:00:42,910 bahwa kita memiliki akses ke database, tapi apa masalah yang database memecahkan? 18 00:00:42,910 --> 00:00:45,540 Apa gunanya bagi kita? 19 00:00:45,540 --> 00:00:47,030 Apa itu? 20 00:00:47,030 --> 00:00:48,679 >> AUDIENCE: [tidak terdengar] 21 00:00:48,679 --> 00:00:51,720 DAVID Malan: Gelar semua informasi, OK, dan apa jenis informasi 22 00:00:51,720 --> 00:00:53,186 mungkin Anda menempatkan di dalamnya? 23 00:00:53,186 --> 00:00:54,590 >> AUDIENCE: [tidak terdengar] 24 00:00:54,590 --> 00:00:56,450 >> DAVID Malan: Setiap informasi Anda menempatkan di dalamnya, Anda akan mendapatkan kembali. 25 00:00:56,450 --> 00:00:57,070 Itu benar. 26 00:00:57,070 --> 00:01:01,900 Dan di situs berbasis web yang khas atau web aplikasi, apa jenis informasi, 27 00:01:01,900 --> 00:01:03,385 khusus, mungkin Anda masukkan ke dalam? 28 00:01:03,385 --> 00:01:04,260 AUDIENCE: [tidak terdengar] 29 00:01:04,260 --> 00:01:05,051 DAVID Malan Pengguna. 30 00:01:05,051 --> 00:01:07,000 Jadi apa yang pengguna? 31 00:01:07,000 --> 00:01:09,765 >> AUDIENCE: [tidak terdengar] 32 00:01:09,765 --> 00:01:11,640 DAVID Malan: OK, terdaftar pengguna situs. 33 00:01:11,640 --> 00:01:15,100 Dan apa artinya menyimpan informasi pengguna '? 34 00:01:15,100 --> 00:01:17,260 Apa menyusun pengguna? 35 00:01:17,260 --> 00:01:18,331 Seorang pengguna memiliki apa? 36 00:01:18,331 --> 00:01:19,206 AUDIENCE: [tidak terdengar] 37 00:01:19,206 --> 00:01:21,040 DAVID Malan: Ya, pribadi data, dan aku seperti itu. 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 memiliki nama, apa lagi yang mungkin pengguna memiliki? 40 00:01:25,275 --> 00:01:26,150 AUDIENCE: [tidak terdengar] 41 00:01:26,150 --> 00:01:29,130 DAVID Malan: An OK addr--, Nama jadi pertama, nama terakhir. 42 00:01:29,130 --> 00:01:29,630 Itu bagus. 43 00:01:29,630 --> 00:01:31,463 Sebenarnya, mari kita perbaiki itu, karena itu akan 44 00:01:31,463 --> 00:01:35,010 membuka kesempatan bagi diskusi, masih, lebih lanjut. 45 00:01:35,010 --> 00:01:39,090 Nama depan, nama belakang, jenis kelamin. 46 00:01:39,090 --> 00:01:41,820 47 00:01:41,820 --> 00:01:43,481 ID dari beberapa macam. 48 00:01:43,481 --> 00:01:43,980 Apa lagi? 49 00:01:43,980 --> 00:01:45,438 Aku mendengar sesuatu yang lain sebelumnya, juga. 50 00:01:45,438 --> 00:01:51,600 Email, alamat pos. 51 00:01:51,600 --> 00:01:58,170 >> Jadi mari kita berhenti sejenak di sana dan sekarang mempertimbangkan tidak apa kita menyimpan dalam database, 52 00:01:58,170 --> 00:02:01,980 tapi-- dan tidak mengapa, karena itu mungkin jelas bahwa setelah Anda mendaftar pengguna, 53 00:02:01,980 --> 00:02:03,730 Anda ingin mengingat mereka untuk beberapa waktu. 54 00:02:03,730 --> 00:02:05,480 Anda tidak ingin hanya disimpan di RAM 55 00:02:05,480 --> 00:02:08,690 dan akan forgotten-- sehingga mari kita fokus pada bagaimana. 56 00:02:08,690 --> 00:02:11,700 >> Ternyata di dunia database, 57 00:02:11,700 --> 00:02:14,410 ada setidaknya dua jenis hari ini. 58 00:02:14,410 --> 00:02:20,010 Sesuatu yang disebut database SQL, Structured Query Language, 59 00:02:20,010 --> 00:02:24,770 atau, cutely bernama, NoSQL, yang tidak SQL. 60 00:02:24,770 --> 00:02:26,980 Dan yang terakhir adalah contoh dari apa yang mungkin 61 00:02:26,980 --> 00:02:30,660 disebut objek-berorientasi, atau toko objek, database 62 00:02:30,660 --> 00:02:36,010 yang menyimpan benda-benda, dan tidak, alasan saya, seperti yang kita segera akan melihat, baris. 63 00:02:36,010 --> 00:02:41,800 >> Jadi kita akan fokus untuk hanya sejenak di yang pertama ini, yaitu, SQL 64 00:02:41,800 --> 00:02:46,850 Database, jika hanya karena itu begitu akrab sudah, kepada siapa pun 65 00:02:46,850 --> 00:02:51,070 yang telah menggunakan Excel atau Lembar Google atau Apple 66 00:02:51,070 --> 00:02:53,740 Angka atau standar apapun program spreadsheet, 67 00:02:53,740 --> 00:02:56,040 atau, sama, 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, yang semuanya adalah nama-nama produk untuk implementasi 70 00:03:03,890 --> 00:03:04,865 dari ide berikut. 71 00:03:04,865 --> 00:03:10,350 >> Sebuah database relasional hanya sesuatu yang memiliki baris dan kolom. 72 00:03:10,350 --> 00:03:12,850 Dan dengan baris dan kolom, Aku benar-benar berarti sesuatu 73 00:03:12,850 --> 00:03:21,860 seperti ini, jadi di mana kita mungkin memiliki nama dari lapangan dan jenisnya di sini. 74 00:03:21,860 --> 00:03:25,800 Dan sebenarnya, biarkan aku sekarang mulai untuk memetakan tersebut. 75 00:03:25,800 --> 00:03:29,420 Jadi sebenarnya, saya tidak tahu mengapa aku menggambar grafik terpisah. 76 00:03:29,420 --> 00:03:30,780 Mari kita tetap sederhana ini. 77 00:03:30,780 --> 00:03:34,830 >> Kami memiliki hak di sini awal dari meja kami, di mana 78 00:03:34,830 --> 00:03:40,150 ini adalah nama dari lapangan dan ini adalah jenis data, 79 00:03:40,150 --> 00:03:41,660 dan menurut jenis Maksudku berikut. 80 00:03:41,660 --> 00:03:45,510 Apakah angka, itu string, string pendek seperti kata, 81 00:03:45,510 --> 00:03:49,340 itu sebuah paragraf, itu data biner, seperti gambar? 82 00:03:49,340 --> 00:03:51,980 Dan mari kita menggoda ini terpisah untuk sesaat. 83 00:03:51,980 --> 00:03:57,575 Jadi nama pertama, jumlah, string, potongan besar text-- 84 00:03:57,575 --> 00:03:58,450 AUDIENCE: [tidak terdengar] 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 basis data, kami akan biasanya menyebutnya bidang arang ini. 87 00:04:04,744 --> 00:04:07,660 Saya hanya akan mengatakan arang untuk saat ini tapi kami akan memperbaiki ini dalam sekejap. 88 00:04:07,660 --> 00:04:09,180 bidang karakter. 89 00:04:09,180 --> 00:04:11,365 nama terakhir mungkin sama. 90 00:04:11,365 --> 00:04:11,865 Jenis kelamin? 91 00:04:11,865 --> 00:04:16,230 92 00:04:16,230 --> 00:04:18,310 >> Pria atau wanita, sehingga bisa menjadi bidang arang. 93 00:04:18,310 --> 00:04:21,380 Ini bisa menjadi kutipan baik, tanda kutip "Laki-laki" atau kutipan, tanda kutip "perempuan" 94 00:04:21,380 --> 00:04:23,650 atau bisa juga m atau f. 95 00:04:23,650 --> 00:04:26,540 Jika Anda ingin menjadi lebih inklusif, Anda mungkin perlu 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 sehingga Anda bisa menggunakan benar salah. 98 00:04:31,350 --> 00:04:35,036 lapangan bisa disebut laki-laki, dan maka Anda bisa mengatakan benar atau salah. 99 00:04:35,036 --> 00:04:38,160 Tapi itu tidak selalu menangkap semua informasi yang Anda mungkin ingin. 100 00:04:38,160 --> 00:04:41,118 >> Jadi ternyata ada jenis lain lapangan yang mungkin berguna di sini 101 00:04:41,118 --> 00:04:46,040 dalam database yang khas, yang disebut enum, di mana itu adalah bidang karakter, 102 00:04:46,040 --> 00:04:50,480 tapi Anda, desainer, sampai ke menghitung nilai yang mungkin, 103 00:04:50,480 --> 00:04:54,630 seperti kutipan, tanda kutip "laki-laki", kutipan, tanda kutip "perempuan" dan sebagainya. 104 00:04:54,630 --> 00:04:57,620 Sehingga nilai apa pun adalah dalam database Anda, 105 00:04:57,620 --> 00:05:00,670 memang berbasis karakter, tapi itu harus menjadi salah satu dari nilai-nilai. 106 00:05:00,670 --> 00:05:03,520 Kita mungkin tidak akan ingin enum untuk nama depan atau nama belakang. 107 00:05:03,520 --> 00:05:05,630 Kalau tidak, kita akan memiliki untuk menghitung, sebagai nama 108 00:05:05,630 --> 00:05:09,570 berasal dari, secara harfiah setiap mungkin pertama nama dan nama belakang. 109 00:05:09,570 --> 00:05:13,960 >> OK, jadi ID apa yang harus ID itu? 110 00:05:13,960 --> 00:05:15,200 Ya, jadi mungkin angka. 111 00:05:15,200 --> 00:05:17,870 Jadi mari kita tetap dengan bahwa untuk saat ini, jumlah. 112 00:05:17,870 --> 00:05:22,010 Dan dengan nomor, nomor ini sedikit terlalu luas sekarang. 113 00:05:22,010 --> 00:05:23,900 Untuk akhir kedua hari, saya merasa seperti kita 114 00:05:23,900 --> 00:05:25,280 harus sedikit lebih tepat. 115 00:05:25,280 --> 00:05:29,280 Jumlah bisa berarti seperti itu, bisa menjadi sesuatu seperti 1,236. 116 00:05:29,280 --> 00:05:31,500 Dan itu mungkin tidak apa yang kita maksud dengan ID. 117 00:05:31,500 --> 00:05:34,635 Apa yang kita mungkin maksud dengan ID? 118 00:05:34,635 --> 00:05:36,382 >> AUDIENCE: [tidak terdengar] 119 00:05:36,382 --> 00:05:38,590 DAVID Malan: Oh, OK, jadi mungkin itu bukan bahkan nomor. 120 00:05:38,590 --> 00:05:42,840 Mungkin itu sebenarnya pengenal unik itu string, seperti nama pengguna. 121 00:05:42,840 --> 00:05:44,580 Jadi benar-benar, bisa. 122 00:05:44,580 --> 00:05:46,730 Saya pikir seseorang mungkin berarti numerik, meskipun. 123 00:05:46,730 --> 00:05:48,460 Jadi mari kita tetap dengan itu. 124 00:05:48,460 --> 00:05:49,320 Apa jenis nomor? 125 00:05:49,320 --> 00:05:51,960 Apa yang lebih precise-- integer. 126 00:05:51,960 --> 00:05:56,710 Jadi angka seperti 0, 1, 2, 3, jadi kita akan menyebutnya integer. 127 00:05:56,710 --> 00:05:58,909 Dan bahkan kemudian, aku bisa akan nitpicking, itu 128 00:05:58,909 --> 00:06:00,700 tidak benar-benar hanya bilangan bulat umum yang Anda inginkan. 129 00:06:00,700 --> 00:06:04,340 Anda mungkin tidak ingin nilai-nilai negatif, hanya karena, itu hanya terasa aneh. 130 00:06:04,340 --> 00:06:06,070 Anda mungkin ingin bilangan bulat positif. 131 00:06:06,070 --> 00:06:07,920 Sehingga Anda juga dapat mengekspresikan bahwa dalam database, 132 00:06:07,920 --> 00:06:09,450 tapi untuk saat ini, kita akan mengatakan integer. 133 00:06:09,450 --> 00:06:10,650 >> E-mail? 134 00:06:10,650 --> 00:06:13,550 Ini mungkin hanya-- apa? 135 00:06:13,550 --> 00:06:14,460 >> AUDIENCE: [tidak terdengar] 136 00:06:14,460 --> 00:06:16,980 >> DAVID Malan: Ini email, tapi itu karakter, kan? 137 00:06:16,980 --> 00:06:19,813 Itu hanya memiliki karakter yang funky seperti "at" simbol atau sesuatu yang lain, 138 00:06:19,813 --> 00:06:21,580 tapi masih lapangan karakter. 139 00:06:21,580 --> 00:06:23,900 Dan alamat pos? 140 00:06:23,900 --> 00:06:25,360 bidang karakter. 141 00:06:25,360 --> 00:06:31,400 Jadi itu awal yang bagus, tapi mari kita menjadi sedikit lebih tepat sekarang. 142 00:06:31,400 --> 00:06:34,540 >> Jadi ternyata bahwa dalam database, Anda sering 143 00:06:34,540 --> 00:06:39,120 memiliki pilihan atas lebih halus versi hal-hal ini. 144 00:06:39,120 --> 00:06:44,330 Bahkan, dalam sebuah database SQL yang khas, SQL, atau lebih umum, database relasional, 145 00:06:44,330 --> 00:06:46,680 database dengan baris dan kolom, Anda sering 146 00:06:46,680 --> 00:06:53,610 bisa menentukan tidak hanya jenis dari field-- saya membuat beberapa ruang di 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 pikir, D-A-V-I-D. OK, mendapatkannya saya mungkin hanya tersinggung seperti setengah 150 00:07:07,060 --> 00:07:11,260 dari orang-orang di dalam ruangan, tepat, karena nama Anda lebih panjang dari lima 151 00:07:11,260 --> 00:07:16,608 huruf, sehingga lima tampaknya sedikit egois 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, baiklah, dan saya pikir kami OK di dalam ruangan. 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 Mengapa saya tidak mengambil Pendekatan dari sebelumnya ketika kita 157 00:07:29,540 --> 00:07:31,081 berbicara tentang array dan memori? 158 00:07:31,081 --> 00:07:32,450 Mengapa saya tidak hanya mengatakan seperti 1000? 159 00:07:32,450 --> 00:07:35,260 Nama tidak ada yang akan lebih panjang dari 1.000. 160 00:07:35,260 --> 00:07:36,706 Menekan. 161 00:07:36,706 --> 00:07:38,005 >> AUDIENCE: [tidak terdengar] 162 00:07:38,005 --> 00:07:40,130 DAVID Malan: Ya, itu boros, tepat, terutama 163 00:07:40,130 --> 00:07:44,630 jika sebagian besar nama hanya lima atau 10 atau 15 karakter, itu sangat boros. 164 00:07:44,630 --> 00:07:45,810 Sehingga Anda tahu apa? 165 00:07:45,810 --> 00:07:48,020 Ini adalah jenis pertanyaan sulit. 166 00:07:48,020 --> 00:07:51,721 Sekarang, kita pasti bisa menganalisis English dan nama bahasa lain 167 00:07:51,721 --> 00:07:54,470 dan mencari tahu, baik, apa yang average-- rata tidak benar-benar 168 00:07:54,470 --> 00:07:57,150 membantu us-- apa max adalah mungkin apa yang kita inginkan. 169 00:07:57,150 --> 00:07:59,920 Tapi ternyata kami bahkan memiliki beberapa pilihan atas jenis di sini. 170 00:07:59,920 --> 00:08:03,400 >> Dalam database SQL yang khas, Anda telah sesuatu yang disebut bidang arang 171 00:08:03,400 --> 00:08:07,505 dan juga varchar, V-A-R, untuk bidang arang variabel. 172 00:08:07,505 --> 00:08:08,630 Dan perbedaannya adalah ini. 173 00:08:08,630 --> 00:08:12,400 Bidang char, Anda desainer, harus menentukan terlebih dahulu 174 00:08:12,400 --> 00:08:14,900 panjang tepat lapangan. 175 00:08:14,900 --> 00:08:20,530 Jadi mungkin nama pertama seperti 20 terasa jenis aman. 176 00:08:20,530 --> 00:08:23,950 Mungkin harus melakukan beberapa Googling untuk melihat apakah itu sudah cukup sebenarnya aman. 177 00:08:23,950 --> 00:08:26,910 Mungkin ada nama dengan 21 karakter, tapi untuk saat ini, kira 20 178 00:08:26,910 --> 00:08:27,620 aman. 179 00:08:27,620 --> 00:08:30,070 >> Bidang arang akan berarti dalam database yang Anda 180 00:08:30,070 --> 00:08:33,289 yang menggunakan 20 dan selalu 20 karakter. 181 00:08:33,289 --> 00:08:37,419 Sekarang jika itu hanya D-A-V-I-D, 15 dari mereka hanya akan menjadi karakter kosong, 182 00:08:37,419 --> 00:08:40,450 tapi Anda masih menggunakan semua 20 byte. 183 00:08:40,450 --> 00:08:46,302 Bidang varchar, sebaliknya, berarti string yang harus sampai 20 karakter 184 00:08:46,302 --> 00:08:48,260 tetapi jika itu hanya lima, Anda hanya akan menggunakan 185 00:08:48,260 --> 00:08:51,270 lima, atau mungkin enam untuk nilai khusus di akhir, 186 00:08:51,270 --> 00:08:54,980 seperti itu 0 kita bahas bahwa menandakan akhir dari karakter 187 00:08:54,980 --> 00:08:56,790 urutan dalam memori. 188 00:08:56,790 --> 00:08:59,950 >> Jadi, ketika Anda berpikir Anda dapat memilih arang 189 00:08:59,950 --> 00:09:05,240 dibandingkan varchar, mengingat bahwa trade-off? 190 00:09:05,240 --> 00:09:09,321 Char menggunakan banyak karakter, varchar menggunakan tidak lebih dari itu banyak karakter. 191 00:09:09,321 --> 00:09:10,196 AUDIENCE: [tidak terdengar] 192 00:09:10,196 --> 00:09:13,859 193 00:09:13,859 --> 00:09:16,900 DAVID Malan: OK, ketika Anda tahu panjang string cukup menarik 194 00:09:16,900 --> 00:09:19,316 hanya menggunakan char, karena jika Anda tahu itu, hanya menaruhnya. 195 00:09:19,316 --> 00:09:23,390 Dan mungkin itu benar untuk zip kode, di AS, setidaknya, 02138, 196 00:09:23,390 --> 00:09:26,660 itu selalu akan menjadi lima karakter sampai Anda menambahkan dasbor empat. 197 00:09:26,660 --> 00:09:29,750 Tapi Anda mungkin memiliki beberapa nilai untuk yang Anda selalu tahu panjang. 198 00:09:29,750 --> 00:09:32,310 Atau mungkin negara simbol, seperti NY untuk New York, 199 00:09:32,310 --> 00:09:33,811 dan MA untuk Massachusetts di Amerika Serikat. 200 00:09:33,811 --> 00:09:36,560 Mungkin Anda memiliki beberapa situasi di mana itu benar-benar masuk akal, 201 00:09:36,560 --> 00:09:39,520 tapi dengan logika itu, mengapa kita bahkan overthinking ini? 202 00:09:39,520 --> 00:09:41,800 Kenapa tidak kita hanya menggunakan varchar dan kemudian kami hanya akan 203 00:09:41,800 --> 00:09:46,730 selalu menggunakan dua karakter pula, atau selalu menggunakan lima karakter sih? 204 00:09:46,730 --> 00:09:50,300 Mengapa tidak hanya menyimpan varchar untuk segala sesuatu, dengan logika itu? 205 00:09:50,300 --> 00:09:51,677 Harus ada menangkap. 206 00:09:51,677 --> 00:09:52,552 AUDIENCE: [tidak terdengar] 207 00:09:52,552 --> 00:09:54,952 208 00:09:54,952 --> 00:09:56,660 DAVID Malan: Bisa menulis sesuatu yang salah. 209 00:09:56,660 --> 00:09:58,090 Jadi itu benar. 210 00:09:58,090 --> 00:10:01,030 Tapi meskipun begitu, mereka tidak dapat menggunakan memori lebih dari saya mengalokasikan. 211 00:10:01,030 --> 00:10:03,340 Saya masih memiliki final mengatakan lebih panjang, 212 00:10:03,340 --> 00:10:06,780 sehingga mereka tidak bisa sengaja membuat bahwa kesalahan, tapi pikiran yang baik. 213 00:10:06,780 --> 00:10:10,510 Ini lebih halus, tetapi sangat terkait dengan diskusi kita, sebenarnya, dari array 214 00:10:10,510 --> 00:10:12,390 dan terkait daftar sebelumnya. 215 00:10:12,390 --> 00:10:16,290 >> Ternyata database, jika ia tahu bahwa semua nilai-nilai yang 216 00:10:16,290 --> 00:10:19,250 dari panjang tetap, bahkan jika beberapa nilai-nilai yang kosong, 217 00:10:19,250 --> 00:10:22,484 semacam estetis kosong, D-A-V-I-D dan kemudian 15 kosong, 218 00:10:22,484 --> 00:10:24,650 ternyata bahwa jika setiap lapangan adalah panjang yang sama, 219 00:10:24,650 --> 00:10:28,670 seperti array memiliki semua hal yang kembali ke belakang untuk kembali ke belakang sehingga 220 00:10:28,670 --> 00:10:33,480 Anda bisa saja ditambah 1 untuk sampai ke berikutnya nilai, ide yang sama dalam tabel database. 221 00:10:33,480 --> 00:10:37,550 Jika semua karakter Anda string memiliki panjang yang sama, 222 00:10:37,550 --> 00:10:39,390 Anda memiliki apa yang disebut akses acak. 223 00:10:39,390 --> 00:10:41,850 Jika semua string yang dari panjang 20, Anda tidak hanya 224 00:10:41,850 --> 00:10:45,230 lakukan ditambah 1 Anda hanya melakukan ditambah 20, ditambah 20, ditambah 20, ditambah 20, 225 00:10:45,230 --> 00:10:48,775 dan Anda dapat sangat cepat menggulir atau mencari melalui semua data Anda. 226 00:10:48,775 --> 00:10:54,420 >> Bidang arang variabel, sebaliknya, tidak selalu harus 20 karakter. 227 00:10:54,420 --> 00:10:58,000 Ini mungkin memiliki 20 dan kemudian 15 dan kemudian 19 dan kemudian 10, 228 00:10:58,000 --> 00:11:00,720 dan jadi jika Anda ingin mencari melalui itu, Anda tidak bisa hanya membabi buta 229 00:11:00,720 --> 00:11:03,050 menambahkan 20 byte untuk mendapatkan ke yang berikutnya. 230 00:11:03,050 --> 00:11:07,280 Anda benar-benar harus mencari karena tepi struktur data, 231 00:11:07,280 --> 00:11:08,340 jika Anda mau, adalah compang-camping. 232 00:11:08,340 --> 00:11:11,480 Ini semacam masuk dan keluar berdasarkan pada panjang sebenarnya dari string. 233 00:11:11,480 --> 00:11:14,460 Jadi, ketika Anda mengetahui panjang, seperti Kareem mengatakan, menggunakan lapangan char, 234 00:11:14,460 --> 00:11:16,460 karena Anda mendapatkan bahwa efisiensi menjadi 235 00:11:16,460 --> 00:11:19,170 mampu mencari melalui lebih cepat ketika Anda sedang mencari data, 236 00:11:19,170 --> 00:11:20,550 sebaliknya menggunakan variabel. 237 00:11:20,550 --> 00:11:24,450 >> Sayangnya, saya tidak memiliki jawaban yang baik untuk berapa lama nama harus, 238 00:11:24,450 --> 00:11:26,360 tapi untuk sesuatu seperti nama, saya akan mengatakan 239 00:11:26,360 --> 00:11:28,470 varchar umum karena itu 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 terasa sedikit ketat. 242 00:11:33,650 --> 00:11:36,460 Katakan saja 50, 50. 243 00:11:36,460 --> 00:11:39,210 Ini tidak benar-benar biaya yang banyak lagi untuk mengatakan 50 bukan 40, 244 00:11:39,210 --> 00:11:41,260 tetapi pada beberapa titik, Anda perlu untuk membuat panggilan penilaian. 245 00:11:41,260 --> 00:11:43,090 >> Sangat umum, terus terang, untuk [? sejarah?] 246 00:11:43,090 --> 00:11:47,670 alasan, meskipun itu berlebihan, adalah untuk mengatakan 255, karena beberapa waktu lalu, 247 00:11:47,670 --> 00:11:51,440 dalam sistem database populer, seperti MySQL, alat open source gratis 248 00:11:51,440 --> 00:11:53,790 bahwa banyak perusahaan seperti bahkan Facebook digunakan, 249 00:11:53,790 --> 00:11:56,654 ini adalah maksimum default sehingga orang hanya pergi dengan itu. 250 00:11:56,654 --> 00:11:59,070 Jadi tidak masuk akal, tapi kami akan menggunakan sedikit lebih intuisi 251 00:11:59,070 --> 00:12:02,970 dan mengatakan, yakin 50, itu mungkin sedikit berlebihan. 252 00:12:02,970 --> 00:12:05,720 >> Gender, saya lakukan seperti enum, dan jadi kami karena itu bisa 253 00:12:05,720 --> 00:12:08,760 menghitung laki-laki atau perempuan, atau mungkin lebih efisien, 254 00:12:08,760 --> 00:12:13,420 m atau f atau simbologi lain, tapi enum terasa seperti pilihan yang baik di sana. 255 00:12:13,420 --> 00:12:16,740 Untuk menjadi jelas, jenis kelamin hanya bisa menjadi varchar, 256 00:12:16,740 --> 00:12:19,090 dan kami hanya bisa semua setuju orang sebagai baik, 257 00:12:19,090 --> 00:12:21,010 untuk selalu menempatkan nilai-nilai yang sama di sana. 258 00:12:21,010 --> 00:12:22,720 Laki-laki atau perempuan atau entah apa lagi. 259 00:12:22,720 --> 00:12:27,800 >> Tapi masalahnya kemudian, adalah bahwa kita bisa membuat kesalahan, karena [tidak terdengar] diusulkan 260 00:12:27,800 --> 00:12:29,140 sebelumnya dalam konteks yang berbeda. 261 00:12:29,140 --> 00:12:32,780 Jika kita membuat kesalahan, kita bisa mendapatkan nilai-nilai yang salah dalam database kami. 262 00:12:32,780 --> 00:12:36,320 Jadi apa yang baik tentang database seperti Oracle dan MySQL dan lain-lain, 263 00:12:36,320 --> 00:12:39,280 adalah bahwa Anda memiliki terakhir ini lapisan pertahanan di mana 264 00:12:39,280 --> 00:12:43,010 administrator DBA, database Anda, siapa pun yang merancang tabel ini seperti kita 265 00:12:43,010 --> 00:12:46,440 adalah secara lisan, bisa menempatkan ke tempat enum yang 266 00:12:46,440 --> 00:12:51,250 melindungi terhadap yang dengan menentukan laki-laki, perempuan, dan sehingga tidak ada 267 00:12:51,250 --> 00:12:54,230 yang lain tidak ada programmer sengaja bisa masukkan nilai lain. 268 00:12:54,230 --> 00:12:55,480 Jadi ini akan menjadi hal yang baik. 269 00:12:55,480 --> 00:12:56,660 Ini adalah fitur. 270 00:12:56,660 --> 00:13:00,760 >> Jadi ID, dengan asumsi ID numerik, itu mungkin harus bilangan bulat positif. 271 00:13:00,760 --> 00:13:04,380 Dan kita kadang-kadang memiliki kesempatan untuk mendiskusikan panjang. 272 00:13:04,380 --> 00:13:06,830 Anda tidak akan biasanya menentukan nomor di sini, 273 00:13:06,830 --> 00:13:11,310 Anda malah akan menentukan ini adalah int, atau int besar, 274 00:13:11,310 --> 00:13:12,980 seperti mereka biasanya disebut. 275 00:13:12,980 --> 00:13:18,840 Tapi biasanya, integer akan, katakanlah, 4 byte. 276 00:13:18,840 --> 00:13:23,694 Dan jika itu 4 byte, itu berapa banyak bit? 277 00:13:23,694 --> 00:13:24,630 >> AUDIENCE: [tidak terdengar] 278 00:13:24,630 --> 00:13:26,610 >> DAVID Malan: 32 bit. 279 00:13:26,610 --> 00:13:30,270 Jadi berapa banyak pengguna dapat kita miliki dalam database kami jika mereka semua memiliki ID 280 00:13:30,270 --> 00:13:33,320 dan ID ini harus unik? 281 00:13:33,320 --> 00:13:36,780 32 bit berarti kita memiliki pola satu, dua, tiga, empat, five-- 282 00:13:36,780 --> 00:13:41,000 jadi berapa banyak pola yang berbeda dari nol dan yang dapat Anda miliki jika ada 32? 283 00:13:41,000 --> 00:13:43,235 Itu hal yang sama seperti bertanya apa dua dengan 32? 284 00:13:43,235 --> 00:13:46,472 285 00:13:46,472 --> 00:13:48,430 Ini jumlah yang besar yang Aku tak bisa mendapatkan hak, 286 00:13:48,430 --> 00:13:50,270 tapi saya tahu itu kasar 4 miliar. 287 00:13:50,270 --> 00:13:53,970 Jadi ini berarti tabel database Anda dapat memiliki empat miliar pengguna dan hanya itu. 288 00:13:53,970 --> 00:13:56,410 >> Jadi ini adalah menarik desain implikasi. 289 00:13:56,410 --> 00:14:00,840 Sejumlah layak perusahaan telah memutuskan, mungkin tidak begitu banyak 290 00:14:00,840 --> 00:14:04,860 bagi pengguna mereka meja, karena memiliki 4 miliar pengguna adalah masalah langka. 291 00:14:04,860 --> 00:14:08,410 Ini adalah semacam Facebook-gaya masalah, bukan masalah perusahaan yang khas. 292 00:14:08,410 --> 00:14:12,670 Tapi mungkin jika Anda memiliki transaksi log atau beberapa jenis data yang terus-menerus 293 00:14:12,670 --> 00:14:15,610 yang ditulis ke dalam database Anda yang benar-benar bisa memiliki miliaran 294 00:14:15,610 --> 00:14:18,900 dan miliaran baris, dan Anda menggunakan integer untuk itu, 295 00:14:18,900 --> 00:14:22,750 apa yang akan terjadi secepat Anda bisa mendayung nomor 4 miliar 296 00:14:22,750 --> 00:14:26,210 dan kemudian Anda mencoba untuk memasukkan 4000000000 dan 1, sehingga untuk berbicara? 297 00:14:26,210 --> 00:14:29,610 Saya menyederhanakan jumlahnya sedikit. 298 00:14:29,610 --> 00:14:33,740 >> Anda dapat memotong kembali, saya berarti Anda harus menanganinya entah bagaimana. 299 00:14:33,740 --> 00:14:37,910 Dan apa komputer biasanya akan lakukan, berpikir tentang hal itu bahkan dari pagi ini, 300 00:14:37,910 --> 00:14:42,430 jika Anda memiliki nilai 4-bit seperti 1, 1, 1, 1, yang, 301 00:14:42,430 --> 00:14:44,920 hanya untuk mengikat pagi hari bersama-sama untuk sore hari, apa yang 302 00:14:44,920 --> 00:14:48,369 apakah nomor ini mewakili dalam biner? 303 00:14:48,369 --> 00:14:49,410 OK, kami akan membuatnya lebih mudah. 304 00:14:49,410 --> 00:14:53,310 Apa nomor ini mewakili dalam biner? 305 00:14:53,310 --> 00:14:56,794 OK, kami akan membuatnya lebih mudah, apa yang hal ini mewakili dalam biner? 306 00:14:56,794 --> 00:14:57,460 AUDIENCE: Tiga. 307 00:14:57,460 --> 00:14:59,670 DAVID Malan: Tiga, karena kami memiliki orang-orang column-- 308 00:14:59,670 --> 00:15:00,450 [TAWA] 309 00:15:00,450 --> 00:15:01,350 Wah! 310 00:15:01,350 --> 00:15:03,980 Kami memiliki kolom yang dan kolom berpasangan. 311 00:15:03,980 --> 00:15:07,250 Jadi misalkan, memang, kami [? infield?] tidak 32 bit, 312 00:15:07,250 --> 00:15:13,440 tapi dua bit, kita bisa menghitung dari pengguna nomor 0, 1, 2, 3, 313 00:15:13,440 --> 00:15:18,040 dan kemudian kami jenis kembali ke pengguna 00 lagi. 314 00:15:18,040 --> 00:15:19,739 Jadi ini adalah apa yang biasanya terjadi. 315 00:15:19,739 --> 00:15:22,780 Jika Anda pernah mendengar expression-- yang mungkin belum, tetapi jika Anda have-- 316 00:15:22,780 --> 00:15:26,500 integer overflow, di mana Anda terus membalik semua bit Anda 317 00:15:26,500 --> 00:15:29,640 menjadi nilai terbesar yang mungkin, dan kemudian Anda keluar dari bit, 318 00:15:29,640 --> 00:15:30,850 apa yang biasanya akan terjadi? 319 00:15:30,850 --> 00:15:32,280 Mengapa saya mengatakan 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 cara mewakili untuk nomor 4 dalam biner? 324 00:15:38,915 --> 00:15:39,790 AUDIENCE: [tidak terdengar] 325 00:15:39,790 --> 00:15:41,780 DAVID Malan: satu-- yeah, tidak mengatakan 100 per se, 326 00:15:41,780 --> 00:15:44,190 karena memiliki salah satu konotasi, tapi 1-0-0. 327 00:15:44,190 --> 00:15:48,920 Sehingga jumlah 1-0-0 memang yang benar, tetapi jika Anda hanya memiliki dua bit, 328 00:15:48,920 --> 00:15:50,820 apa yang telah Anda benar-benar dilakukan? 329 00:15:50,820 --> 00:15:53,219 Anda berguling ke 00. 330 00:15:53,219 --> 00:15:54,760 Dan memang, itulah yang akan terjadi. 331 00:15:54,760 --> 00:15:56,884 Sebenarnya, Anda bisa memikirkan tentang ini lebih akrab. 332 00:15:56,884 --> 00:15:59,350 Jika Anda ingat, apa, 16 tahun yang lalu, dunia 333 00:15:59,350 --> 00:16:03,380 itu seharusnya berakhir saat masalah Y2K terjadi. 334 00:16:03,380 --> 00:16:04,330 Mengapa begitu? 335 00:16:04,330 --> 00:16:08,170 Nah kebanyakan komputer, untuk keputusan yang wajar, 336 00:16:08,170 --> 00:16:15,320 yang menyimpan nomor seperti tahun 1975 atau tahun 1999 337 00:16:15,320 --> 00:16:19,010 dengan hanya menggunakan dua digit di memori komputer. 338 00:16:19,010 --> 00:16:21,950 Jadi tentu saja, apa yang terjadi ketika Anda mendapatkan untuk tahun 2000, 339 00:16:21,950 --> 00:16:25,790 Anda pergi ke ini, atau lebih tepatnya, ya. 340 00:16:25,790 --> 00:16:30,120 Jadi Anda pergi ke tahun 2000, tetapi jika Anda hanya menggunakan dua digit terlihat 341 00:16:30,120 --> 00:16:32,660 seperti tahun 00 dan sehingga Anda berguling. 342 00:16:32,660 --> 00:16:36,820 Dan ini adalah mengapa banyak sistem perlu diperbarui pada saat itu. 343 00:16:36,820 --> 00:16:42,500 >> Jadi dengan mengatakan bahwa, perusahaan seperti Facebook menjalankan melawan ini. 344 00:16:42,500 --> 00:16:46,147 Jadi satu-satunya cara untuk menangani Situasi, terus terang, untuk mengantisipasi hal itu. 345 00:16:46,147 --> 00:16:47,980 Atau cara yang paling bersih untuk menangani situasi ini 346 00:16:47,980 --> 00:16:50,330 adalah untuk mengantisipasi hal itu sehingga Anda tidak harus membuat perubahan nanti. 347 00:16:50,330 --> 00:16:51,970 Jadi, bukannya 8 byte, Anda tahu apa? 348 00:16:51,970 --> 00:16:54,261 Aku akan menjadi berpikiran maju di sini, meskipun itu 349 00:16:54,261 --> 00:16:56,760 sedikit optimis bahwa kita akan memiliki 4 miliar 350 00:16:56,760 --> 00:16:58,850 dan pengguna 1 di website kami. 351 00:16:58,850 --> 00:17:01,790 Tapi mari kita hanya menggunakan 8 bytes, atau 64 bit, yang umumnya akan 352 00:17:01,790 --> 00:17:05,640 disebut bilangan bulat besar, sangat teknis. 353 00:17:05,640 --> 00:17:10,280 Dan itu hanya berarti Anda dapat memiliki bahkan lebih digit nomor Anda. 354 00:17:10,280 --> 00:17:12,599 Tapi ini adalah penting keputusan desain, 355 00:17:12,599 --> 00:17:16,400 karena jika Anda memilih nomor yang memiliki terlalu sedikit bit ekspresif 356 00:17:16,400 --> 00:17:19,089 Anda bisa benar-benar membuat bug dalam perangkat lunak Anda. 357 00:17:19,089 --> 00:17:21,750 >> Baiklah, jadi mari kita membungkus dengan email dan alamat pos. 358 00:17:21,750 --> 00:17:26,369 Jadi email, berapa lama harus alamat email itu? 359 00:17:26,369 --> 00:17:26,869 50. 360 00:17:26,869 --> 00:17:29,220 Aku benar-benar tidak tahu, tapi itu mungkin sesuatu seperti itu, 361 00:17:29,220 --> 00:17:32,261 karena jika tidak ada akan menulis Anda jika terlalu lama, sehingga 50, 362 00:17:32,261 --> 00:17:33,360 mari kita pergi dengan itu untuk saat ini. 363 00:17:33,360 --> 00:17:35,770 alamat pos, berapa lama harus? 364 00:17:35,770 --> 00:17:38,325 365 00:17:38,325 --> 00:17:39,200 AUDIENCE: [tidak terdengar] 366 00:17:39,200 --> 00:17:41,900 367 00:17:41,900 --> 00:17:43,890 >> DAVID Malan: Ini tidak hanya kode pos, meskipun. 368 00:17:43,890 --> 00:17:45,720 alamat pos, saya mendengar. 369 00:17:45,720 --> 00:17:50,720 Jadi ini seperti 1 Brattle Square, koma, Cambridge Mass., koma, 02138. 370 00:17:50,720 --> 00:17:53,860 Dan pada kenyataannya, saya hanya menarik sebuah worksheet kecil di sini. 371 00:17:53,860 --> 00:17:56,510 Ini terasa seperti itu kesempatan. 372 00:17:56,510 --> 00:18:01,480 Jika kita memiliki 1 Brattle Square, koma, Cambridge MA 02138, 373 00:18:01,480 --> 00:18:04,510 Saya merasa seperti kita bisa berbuat lebih baik dari sekedar alamat pos. 374 00:18:04,510 --> 00:18:07,100 Mengapa kita tidak meledak ini sedikit? 375 00:18:07,100 --> 00:18:08,030 Apa yang saya maksudkan? 376 00:18:08,030 --> 00:18:10,970 Apa yang harus kita malah harus untuk baris kami di sini, mungkin? 377 00:18:10,970 --> 00:18:12,260 >> AUDIENCE: [tidak terdengar] 378 00:18:12,260 --> 00:18:17,579 >> DAVID Malan: Ya, jadi mari kita menyebutnya street_number, 379 00:18:17,579 --> 00:18:20,620 dan garis bawah hanya umum cara memiliki apa yang tampak seperti ruang, 380 00:18:20,620 --> 00:18:22,360 tapi tidak, sebenarnya. 381 00:18:22,360 --> 00:18:26,240 Street, dan kemudian city-- maaf? 382 00:18:26,240 --> 00:18:28,440 >> AUDIENCE: [tidak terdengar] 383 00:18:28,440 --> 00:18:29,690 DAVID Malan: Kita bisa melakukan itu. 384 00:18:29,690 --> 00:18:30,702 Satu baris, baris dua. 385 00:18:30,702 --> 00:18:32,410 Kenapa tidak kita akan terus sederhana untuk saat ini, 386 00:18:32,410 --> 00:18:34,840 tapi itu benar-benar keputusan diterima. 387 00:18:34,840 --> 00:18:38,180 Dan kemudian negara, dan kemudian mari sedikit US-centric untuk saat ini 388 00:18:38,180 --> 00:18:42,040 dan hanya melakukan kode pos, hanya karena itu akan menyebabkan kesalahan 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 misalkan yang sekarang alamat kami. 391 00:18:44,655 --> 00:18:47,280 Ini sedikit lebih menyebalkan yang kita memiliki semua bidang ini lebih lanjut, 392 00:18:47,280 --> 00:18:49,200 tapi sekarang kita bisa tag sesuatu yang sedikit lebih baik. 393 00:18:49,200 --> 00:18:53,210 >> Jumlah Jadi sekarang jalan mungkin seharusnya tidak menjadi char, harus itu? 394 00:18:53,210 --> 00:18:54,835 Apa yang harus itu? 395 00:18:54,835 --> 00:18:55,710 AUDIENCE: [tidak terdengar] 396 00:18:55,710 --> 00:18:57,835 DAVID Malan: Mungkin, nomor seperti integer lagi? 397 00:18:57,835 --> 00:19:00,170 Sebuah integer besar? 398 00:19:00,170 --> 00:19:02,170 Anda mungkin tidak hidup di 4 miliar Main Street 399 00:19:02,170 --> 00:19:03,490 atau apa gila seperti itu. 400 00:19:03,490 --> 00:19:06,850 Jadi bilangan bulat mungkin baik-baik saja, tetapi memiliki siapa pun 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 Hal-hal ini ada, sayangnya, bahkan jika Anda belum tinggal di sana, 403 00:19:17,030 --> 00:19:21,240 ada anomali ini seperti apartemen 1A, 1B, 1C. 404 00:19:21,240 --> 00:19:24,260 Sehingga Anda tahu apa, kita mungkin tidak harus pergi dengan integer, 405 00:19:24,260 --> 00:19:27,440 kalau tidak kita akan kehilangan beberapa penjualan. 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 Ini mungkin tidak akan menjadi yang lama, sehingga 10 atau sesuatu. 409 00:19:33,370 --> 00:19:34,950 Tidak ada yang akan menulis sejumlah lagi, mungkin. 410 00:19:34,950 --> 00:19:37,070 Tapi sekali lagi, kami mungkin harus memberikan lebih banyak pemikiran untuk itu. 411 00:19:37,070 --> 00:19:39,900 Mungkin google, melakukan penelitian, tapi kami akan pergi dengan nyali kami untuk saat 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 Di beberapa titik, tidak ada yang terjadi untuk menulis pada amplop, 414 00:19:46,940 --> 00:19:49,350 juga, jadi mungkin ada beberapa batas atas sana. 415 00:19:49,350 --> 00:19:54,200 Kota, yang sama, yakin, jadi char di 50. 416 00:19:54,200 --> 00:19:59,120 >> Negara, bisa US-centric untuk saat ini. 417 00:19:59,120 --> 00:20:01,850 Sehingga bisa daftar, begitu baik dari panggilan pengadilan, negara. 418 00:20:01,850 --> 00:20:04,000 Ini bisa seperti dua karakter. 419 00:20:04,000 --> 00:20:06,140 Jadi sebenarnya, mungkin, aku terus berkata arang. 420 00:20:06,140 --> 00:20:09,420 Aku mungkin berarti varchar, hanya untuk beberapa efisiensi, 421 00:20:09,420 --> 00:20:12,240 tapi kami akan kembali ke bahwa keputusan dalam sekejap. 422 00:20:12,240 --> 00:20:16,150 Bisa menjadi char panjang 2 untuk negara. 423 00:20:16,150 --> 00:20:20,670 Jika di AS yang mereka miliki, 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 bisa diperbaiki pada saat itu. 426 00:20:23,630 --> 00:20:25,900 DC Washington DC. 427 00:20:25,900 --> 00:20:29,915 >> Tapi saya pikir, Olivier, Anda diusulkan pendekatan lain. 428 00:20:29,915 --> 00:20:30,790 AUDIENCE: [tidak terdengar] 429 00:20:30,790 --> 00:20:33,670 DAVID Malan: Ya, jadi itu adalah sedikit mengganggu untuk mengetik di, 430 00:20:33,670 --> 00:20:37,890 tapi enum mungkin lebih masuk akal, karena dengan cara ini, setidaknya di AS, 431 00:20:37,890 --> 00:20:41,320 Anda bisa menghitung, jika tediously, tapi Anda melakukannya hanya sekali dalam database Anda 432 00:20:41,320 --> 00:20:47,480 dan tidak pernah lagi harus berpikir tentang itu, semua 50 kode dua karakter. 433 00:20:47,480 --> 00:20:48,660 Jadi saya suka enum. 434 00:20:48,660 --> 00:20:51,720 Mari kita tetap dengan yang ada, karena itu semacam memaksa lebih kekakuan. 435 00:20:51,720 --> 00:20:53,620 Dan kemudian kode pos? 436 00:20:53,620 --> 00:20:55,306 Saya pikir Andrew punya pikiran tentang itu 437 00:20:55,306 --> 00:20:56,180 AUDIENCE: [tidak terdengar] 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 tetap sederhana. 440 00:20:58,323 --> 00:20:59,380 Hanya melakukan lima untuk saat ini. 441 00:20:59,380 --> 00:21:03,070 Tapi mungkin aku bisa hanya melakukan integer, kan? 442 00:21:03,070 --> 00:21:08,750 Aku bisa, tapi kau tahu apa, saya membuat kesalahan ini sekali, dalam arti tertentu. 443 00:21:08,750 --> 00:21:13,110 Tahun lalu, saya bermigrasi dari Microsoft Outlook untuk Gmail, 444 00:21:13,110 --> 00:21:18,640 dan Outlook memiliki cara mengekspor semua kontak Anda sebagai file Excel, 445 00:21:18,640 --> 00:21:21,280 file CSV, dipisahkan koma berkas nilai. 446 00:21:21,280 --> 00:21:23,950 Dan saya membuat kesalahan, saya berpikir, dari mengklik ganda itu, 447 00:21:23,950 --> 00:21:27,380 setelah saya download ekspor, untuk pastikan itu tampak seperti yang saya harapkan. 448 00:21:27,380 --> 00:21:31,320 Saya harus memukul Simpan atau membiarkan auto-save menendang atau sesuatu. 449 00:21:31,320 --> 00:21:35,100 Karena ketika saya kemudian diimpor ke Gmail, semuanya bekerja. 450 00:21:35,100 --> 00:21:39,910 Tapi selama bertahun-tahun, sampai hari ini, dan Aku melakukan ini lima, 10 tahun yang lalu, 451 00:21:39,910 --> 00:21:44,380 Aku masih menemukan teman-teman yang memiliki alamat yang terlihat seperti ini. 452 00:21:44,380 --> 00:21:45,700 Mengapa? 453 00:21:45,700 --> 00:21:47,900 >> AUDIENCE: [tidak terdengar] 454 00:21:47,900 --> 00:21:50,650 >> DAVID Malan: Butuh 0, baik, bukan, itu 455 00:21:50,650 --> 00:21:53,810 mengambil kode pos keseluruhan sebagai nomor, dan oleh karena itu 456 00:21:53,810 --> 00:21:56,590 terkemuka 0 yang berarti itu tidak ada artinya. 457 00:21:56,590 --> 00:21:59,470 Dan 2138 tampaknya menjadi kode pos saya. 458 00:21:59,470 --> 00:22:07,100 Dan ini, terus terang, Excel menjengkelkan Fitur dimana saya pikir secara default, 459 00:22:07,100 --> 00:22:10,980 bahkan jika itu berarti hanya berupa teks, Microsoft Excel 460 00:22:10,980 --> 00:22:13,780 memutuskan, biarkan aku membantu, dan oh, saya hanya melihat angka. 461 00:22:13,780 --> 00:22:15,290 Mari kita memperlakukan ini sebagai nomor. 462 00:22:15,290 --> 00:22:16,790 Dan itu memotong angka nol terkemuka. 463 00:22:16,790 --> 00:22:19,165 >> Saya bersumpah demi Tuhan, setiap beberapa bulan saya mencari alamat, 464 00:22:19,165 --> 00:22:22,300 dan keluar dari semacam OCD, aku kembali dan tambahkan 0, meskipun saya tidak pernah 465 00:22:22,300 --> 00:22:23,700 mengirim surat orang atau apa pun. 466 00:22:23,700 --> 00:22:25,510 Tapi aku masih menemukan sisa-sisa ini. 467 00:22:25,510 --> 00:22:28,820 Jadi ini adalah untuk mengatakan, apakah ini ide yang baik? 468 00:22:28,820 --> 00:22:31,610 OK, tidak ada, karena siapa pun di Massachusetts, di daerah ini, 469 00:22:31,610 --> 00:22:33,270 akan memiliki o memimpin 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, menyadari bahwa kita bisa menggunakan enum dan kami 472 00:22:41,450 --> 00:22:44,600 bisa menghitung 10.000 mungkin kode pos, 473 00:22:44,600 --> 00:22:48,530 tapi yang terasa seperti itu mungkin melintasi garis, seperti, manfaat. 474 00:22:48,530 --> 00:22:51,350 Jika Anda memiliki masukan yang banyak data ke dalam database Anda 475 00:22:51,350 --> 00:22:52,940 untuk melindungi terhadap sesuatu. 476 00:22:52,940 --> 00:22:57,400 Jadi arang menyadari Anda bisa mengetik di H-E-L-L-O sebagai kode pos 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, di database khas, 479 00:23:01,680 --> 00:23:05,561 untuk menentukan hanya numerik dan hanya lima karakter, 480 00:23:05,561 --> 00:23:07,310 sehingga kita akan memiliki untuk melakukan itu dalam kode. 481 00:23:07,310 --> 00:23:11,100 Kita akan melakukan itu di PHP atau Java atau apa pun bahasa kita 482 00:23:11,100 --> 00:23:14,230 menggunakan pada server untuk menegakkan semacam kendala. 483 00:23:14,230 --> 00:23:14,860 >> Whoo! 484 00:23:14,860 --> 00:23:18,322 Baiklah, jadi pertanyaan dulu? 485 00:23:18,322 --> 00:23:19,780 Mari kita membuat keputusan desain lain. 486 00:23:19,780 --> 00:23:22,500 Ternyata bahwa Anda juga bisa memilih, 487 00:23:22,500 --> 00:23:26,600 ketika merancang sebuah database SQL, atau database-- relasional yang khas di mana 488 00:23:26,600 --> 00:23:28,790 lagi, relasional hanya berarti baris dan kolom, 489 00:23:28,790 --> 00:23:35,500 itulah bagaimana Anda mengatur data-- Anda dan menyadari bahwa apa artinya ini, 490 00:23:35,500 --> 00:23:37,740 Aku sudah menyesatkan di itu, aku drawing-- ini 491 00:23:37,740 --> 00:23:40,190 adalah apa yang disebut skema untuk tabel database. 492 00:23:40,190 --> 00:23:42,810 Ini seperti spesifikasi untuk table-- yang 493 00:23:42,810 --> 00:23:48,040 tetapi ketika datang waktu 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 Aku akan membuka Excel, karena Excel akan memberikan baris dan kolom. 496 00:23:55,080 --> 00:23:58,050 Dan itulah yang Oracle dan MySQL dan alat-alat lain akan memberi saya. 497 00:23:58,050 --> 00:24:02,270 Jadi aku hanya akan menggunakan itu demi diskusi ini. 498 00:24:02,270 --> 00:24:05,250 Biarkan aku pergi ke depan dan membuka dokumen perwakilan di sini, 499 00:24:05,250 --> 00:24:06,310 memperbesar sedikit. 500 00:24:06,310 --> 00:24:15,200 Jadi misalnya, header kami sekarang Nama depan, nama belakang, jenis kelamin, ID, 501 00:24:15,200 --> 00:24:20,980 email, nomor jalan, jalan, whoops. 502 00:24:20,980 --> 00:24:25,710 Jalan, kota, negara, hanya tentang cocok di layar. 503 00:24:25,710 --> 00:24:29,080 >> Jadi apa artinya ini adalah bahwa ketika pengguna pertama register untuk website saya, 504 00:24:29,080 --> 00:24:32,880 itu akan menjadi sesuatu seperti David, Malan, m, katakanlah 1, 505 00:24:32,880 --> 00:24:42,910 malan@harvard.edu, nomor jalan akan 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 Jadi ketika saya mengatakan bahwa database relasional atau database SQL adalah baris dan kolom, 508 00:24:48,290 --> 00:24:49,350 Maksud saya ini. 509 00:24:49,350 --> 00:24:51,900 Itu data aktual disimpan dalam baris dan kolom. 510 00:24:51,900 --> 00:24:53,950 Ini hanya kebetulan, bahwa kita sedang berbicara, 511 00:24:53,950 --> 00:24:56,033 dan aku hanya menggambar di baris dan kolom. 512 00:24:56,033 --> 00:24:58,320 Ini hanya skema, definisi menyeluruh. 513 00:24:58,320 --> 00:25:01,640 >> Jadi bidang ini di sini, atau ekuivalen, ada, 514 00:25:01,640 --> 00:25:06,270 yang merupakan bidang yang Anda pikir Saya cenderung untuk mencari pada jika aku pengguna 515 00:25:06,270 --> 00:25:09,200 atau jika aku administrator database? 516 00:25:09,200 --> 00:25:12,426 Seperti, apa bidang aku benar-benar akan mencari di? 517 00:25:12,426 --> 00:25:13,830 >> AUDIENCE: [tidak terdengar] 518 00:25:13,830 --> 00:25:17,690 >> DAVID Malan: Nama, ya begitu Saya suka fakta itu-- yeah, 519 00:25:17,690 --> 00:25:19,750 email mungkin cukup umum. 520 00:25:19,750 --> 00:25:21,440 Maaf, Anda mengatakan nama. 521 00:25:21,440 --> 00:25:24,030 Jadi maybe-- dan lagi, kami jenis berbicara secara abstrak. 522 00:25:24,030 --> 00:25:25,988 Aku tidak tahu mengapa Anda lebih akan mencari nama, 523 00:25:25,988 --> 00:25:29,340 tapi yang terasa wajar jika Anda sedang mencari pengguna. 524 00:25:29,340 --> 00:25:31,170 Mungkin menyatakan, yakin, ID. 525 00:25:31,170 --> 00:25:34,100 526 00:25:34,100 --> 00:25:36,160 >> Dan itu licin kemiringan, karena aku bisa 527 00:25:36,160 --> 00:25:38,890 merancang sebuah skenario di mana mungkin bos saya meminta saya, 528 00:25:38,890 --> 00:25:40,417 berapa banyak orang yang kita miliki di situs kami? 529 00:25:40,417 --> 00:25:42,000 Berapa banyak wanita yang kita miliki di situs kami? 530 00:25:42,000 --> 00:25:45,210 Dan pada saat itu, Anda mungkin ingin untuk mencari di lapangan jenis kelamin, juga, 531 00:25:45,210 --> 00:25:45,940 dan tidak ada lagi. 532 00:25:45,940 --> 00:25:47,350 Jadi ada trade-off di sini. 533 00:25:47,350 --> 00:25:49,180 Sekali lagi, tidak ada jawaban yang benar, tetapi ada 534 00:25:49,180 --> 00:25:53,760 adalah fitur di sebagian database SQL dikenal sebagai pengindeksan, dimana 535 00:25:53,760 --> 00:25:56,100 Anda, desainer, yang database administrator, 536 00:25:56,100 --> 00:26:01,730 harus memutuskan di muka yang bidang database harus mengoptimalkan 537 00:26:01,730 --> 00:26:02,980 untuk pencarian di. 538 00:26:02,980 --> 00:26:07,620 >> Anda bisa sangat naif mengatakan, mengoptimalkan ini, mengoptimalkan itu, mengoptimalkan ini, 539 00:26:07,620 --> 00:26:10,300 mengoptimalkan itu dan ini, dan database akan 540 00:26:10,300 --> 00:26:14,882 melakukan beberapa hal ajaib di bawah hood, dan melakukan sesuatu sedemikian rupa 541 00:26:14,882 --> 00:26:17,090 bahwa waktu berikutnya Anda mencari pada salah satu bidang tersebut, 542 00:26:17,090 --> 00:26:18,400 akan, pada kenyataannya, lebih cepat. 543 00:26:18,400 --> 00:26:19,110 Ini mungkin. 544 00:26:19,110 --> 00:26:20,530 Itu tidak membatalkan sendiri keluar. 545 00:26:20,530 --> 00:26:22,500 Tapi harus ada harga yang harus dibayar. 546 00:26:22,500 --> 00:26:27,220 >> Jika Anda naif, atau over-antusias mengatakan, indeks semua bidang tersebut, 547 00:26:27,220 --> 00:26:29,810 sehingga untuk berbicara, membuat mereka semua efisien dicari, 548 00:26:29,810 --> 00:26:31,625 berapa harga yang Anda mungkin membayar? 549 00:26:31,625 --> 00:26:32,500 AUDIENCE: [tidak terdengar] 550 00:26:32,500 --> 00:26:33,090 DAVID Malan: Kinerja. 551 00:26:33,090 --> 00:26:33,798 Apa maksudmu? 552 00:26:33,798 --> 00:26:37,380 Nah kinerja, setidaknya di konteks saya membahas, lebih baik sekarang. 553 00:26:37,380 --> 00:26:38,830 Itulah definisi pengindeksan. 554 00:26:38,830 --> 00:26:41,180 Ini akan membuat pencarian lebih cepat. 555 00:26:41,180 --> 00:26:43,366 Jadi waktu menurun, sehingga untuk berbicara. 556 00:26:43,366 --> 00:26:44,240 AUDIENCE: [tidak terdengar] 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 perdagangan umum. 559 00:26:46,520 --> 00:26:50,820 Saya dapat mempercepat penelusuran, tapi itu akan dikenakan biaya lebih byte ruang. 560 00:26:50,820 --> 00:26:51,610 Mengapa? 561 00:26:51,610 --> 00:26:55,230 Nah, secara default, jika kita memiliki satu pun dari -bintang merah, tak satu pun dari indeks ini, 562 00:26:55,230 --> 00:26:58,797 seperti yang saya katakan, bagaimana Anda mencari untuk nama dalam database ini? 563 00:26:58,797 --> 00:27:00,630 Jadi mari kita menggambar kami memperhatikan contoh ini. 564 00:27:00,630 --> 00:27:06,300 Jika kita memiliki David dan Scully dan Kareem dan Arwa dan lain-lain di baris ini, 565 00:27:06,300 --> 00:27:06,910 contohnya. 566 00:27:06,910 --> 00:27:08,390 >> Jadi mari kita melakukan hal itu. 567 00:27:08,390 --> 00:27:13,990 Scully di sini, dan kemudian kami memiliki Kareem, dan Arwa, 568 00:27:13,990 --> 00:27:18,390 dan orang lain, jika Anda tidak memiliki indeks didefinisikan, sehingga untuk berbicara, 569 00:27:18,390 --> 00:27:20,160 yang terbaik yang dapat Anda lakukan adalah pencarian linear. 570 00:27:20,160 --> 00:27:23,470 Jika Anda mencari Arwa, kita tidak akan dapat melompat tepat baginya 571 00:27:23,470 --> 00:27:24,140 segera. 572 00:27:24,140 --> 00:27:26,556 Kita akan mulai atas dan pergi semua jalan ke bawah, 573 00:27:26,556 --> 00:27:28,600 tidak seperti kami asli Mike Smith misalnya. 574 00:27:28,600 --> 00:27:33,470 >> Namun, jika saya katakan, hey, database, Indeks kolom nama pertama, 575 00:27:33,470 --> 00:27:37,000 maka itu akan melakukan sesuatu pengujian dan mendukung sesuatu 576 00:27:37,000 --> 00:27:38,130 seperti pencarian biner. 577 00:27:38,130 --> 00:27:39,820 Itu tidak mungkin pencarian biner per se. 578 00:27:39,820 --> 00:27:42,810 Database cenderung menggunakan lain struktur data yang disebut b-pohon, 579 00:27:42,810 --> 00:27:46,540 tidak menjadi bingung dengan pohon-pohon biner, yang hanya membuatnya lebih cepat untuk mencari 580 00:27:46,540 --> 00:27:48,500 sesuatu logaritma di alam. 581 00:27:48,500 --> 00:27:53,510 Tapi harga yang Anda bayar untuk membangun yang fitur, struktur data dalam memori, 582 00:27:53,510 --> 00:27:54,570 lebih byte. 583 00:27:54,570 --> 00:27:57,170 Jadi mungkin mengambil beberapa megabyte, beberapa gigabyte, siapa tahu? 584 00:27:57,170 --> 00:27:58,410 Hal ini tergantung pada data. 585 00:27:58,410 --> 00:28:02,640 >> Jadi di beberapa titik, Anda harus memutuskan, itu mungkin bukan kasus umum. 586 00:28:02,640 --> 00:28:06,000 Jadi apa yang umum yang sebenarnya kasus, jika Anda benar-benar harus memilih, 587 00:28:06,000 --> 00:28:10,080 apa yang mungkin bidang favorit Anda menjadi? 588 00:28:10,080 --> 00:28:10,580 E-mail. 589 00:28:10,580 --> 00:28:14,400 Dan aku suka email karena email, dalam teori, harus unik. 590 00:28:14,400 --> 00:28:17,650 Dan biasanya, ketika Anda tahu sebelumnya bahwa salah satu bidang Anda 591 00:28:17,650 --> 00:28:20,277 sedang atau akan menjadi unik, yang cenderung menjadi lapangan yang baik 592 00:28:20,277 --> 00:28:22,860 untuk mencari di, karena dengan cara itu, ketika Anda mencari sesuatu, 593 00:28:22,860 --> 00:28:26,194 Anda akan mendapatkan kembali satu atau nol tanggapan dan kemudian Anda sudah selesai. 594 00:28:26,194 --> 00:28:28,110 Anda tidak harus terus mencari yang lain lagi. 595 00:28:28,110 --> 00:28:31,992 >> Dan dalam hal ini di sini, email, asalkan Anda tidak dapat mendaftar dua kali 596 00:28:31,992 --> 00:28:33,450 dengan email yang sama, adalah satu yang baik. 597 00:28:33,450 --> 00:28:36,710 ID menurut definisi, di ilmu komputer dunia, 598 00:28:36,710 --> 00:28:39,610 jika Anda sedang berbicara tentang sebuah ID, bahwa lebih baik menjadi unik. 599 00:28:39,610 --> 00:28:42,970 Itu semacam konotasi dari ID atau pengenal. 600 00:28:42,970 --> 00:28:46,440 Dan sisa ini mungkin, mari kita sebut mereka bagus untuk kaya, 601 00:28:46,440 --> 00:28:47,860 tapi tidak benar-benar diperlukan. 602 00:28:47,860 --> 00:28:49,976 >> Dan dalam database, Anda tentukan indeks, 603 00:28:49,976 --> 00:28:51,350 tetapi Anda dapat menjadi lebih tepat. 604 00:28:51,350 --> 00:28:56,060 Anda dapat mengatakan, hei, database, pastikan bahwa setiap ID di tabel ini adalah unik. 605 00:28:56,060 --> 00:28:59,330 Bahkan tidak membiarkan programmer sengaja dimasukkan ke dalam email duplikat 606 00:28:59,330 --> 00:29:00,740 atau menggandakan nomor ID. 607 00:29:00,740 --> 00:29:03,140 Begitu banyak seperti enum melindungi kita sama, Anda 608 00:29:03,140 --> 00:29:04,881 dapat memiliki orang-orang pertahanan-tingkat yang lebih rendah. 609 00:29:04,881 --> 00:29:07,130 Dan desain database, di beberapa pengertian, jenis menyenangkan, 610 00:29:07,130 --> 00:29:08,380 karena Anda melakukannya membela diri. 611 00:29:08,380 --> 00:29:11,460 Anda semacam berasumsi bahwa Anda bekerja dengan mengerikan, programmer mengerikan 612 00:29:11,460 --> 00:29:15,550 dan Anda ingin menempatkan di banyak pertahanan Anda dapat untuk melindungi data Anda, 613 00:29:15,550 --> 00:29:18,940 tetapi secara bersamaan Anda ingin untuk membantu mereka tampil lebih baik 614 00:29:18,940 --> 00:29:21,386 dengan memilih yang ladang untuk mengoptimalkan. 615 00:29:21,386 --> 00:29:24,260 Tapi Anda tidak bisa selalu melakukannya di vakum seperti kita jenis di sini. 616 00:29:24,260 --> 00:29:26,480 Anda harus tahu apa yang kasus-kasus umum adalah. 617 00:29:26,480 --> 00:29:29,397 Jika pengembang menerapkan buku alamat, 618 00:29:29,397 --> 00:29:32,230 Anda mungkin sangat baik ingin dapat untuk mencari di hampir setiap bidang, 619 00:29:32,230 --> 00:29:33,830 hanya dengan sifat aplikasi. 620 00:29:33,830 --> 00:29:37,910 Jadi mungkin Anda menghabiskan yang ruang tambahan. 621 00:29:37,910 --> 00:29:39,090 >> Benar, pertanyaan? 622 00:29:39,090 --> 00:29:41,820 623 00:29:41,820 --> 00:29:42,486 Ya. 624 00:29:42,486 --> 00:29:43,470 >> AUDIENCE: [tidak terdengar] 625 00:29:43,470 --> 00:29:44,404 >> DAVID Malan: No. 626 00:29:44,404 --> 00:29:45,279 >> AUDIENCE: [tidak terdengar] 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 >> AUDIENCE: [tidak terdengar] 630 00:29:49,701 --> 00:29:52,420 631 00:29:52,420 --> 00:29:54,850 >> DAVID Malan: Oh, jadi kami berbicara dengan cara 632 00:29:54,850 --> 00:29:57,940 sekarang itu benar-benar bahasa agnostik. 633 00:29:57,940 --> 00:30:02,370 Jadi kita berbicara sekarang tentang database relasional lebih umum, 634 00:30:02,370 --> 00:30:04,760 atau SQL database lebih umum. 635 00:30:04,760 --> 00:30:06,870 >> AUDIENCE: [tidak terdengar] 636 00:30:06,870 --> 00:30:10,030 >> DAVID Malan: Sebuah kata yang lebih baik untuk digunakan adalah, dapat digunakan oleh bahasa apapun. 637 00:30:10,030 --> 00:30:15,280 Jadi saya bisa menulis kode JavaScript, C kode, C ++ kode, kode Java, kode Ruby, 638 00:30:15,280 --> 00:30:19,010 yang semuanya berbicara dengan database dan mengeksekusi query. 639 00:30:19,010 --> 00:30:22,310 Bahkan, itu tidak buruk Segue untuk contoh query. 640 00:30:22,310 --> 00:30:25,720 Dan lagi, kita tidak akan masuk ke Java atau C ++ atau salah itu lagi, 641 00:30:25,720 --> 00:30:29,420 tetapi dalam SQL, bahasa yang saya tetap merujuk, Structured Query Language, 642 00:30:29,420 --> 00:30:32,790 ini sendiri merupakan bahasa pemrograman, tapi itu dimaksudkan untuk digunakan untuk, tidak ada 643 00:30:32,790 --> 00:30:37,330 Kejutan, terstruktur query query. 644 00:30:37,330 --> 00:30:38,660 >> Maksud saya ini. 645 00:30:38,660 --> 00:30:41,190 Cara Anda memilih data dari database MySQL 646 00:30:41,190 --> 00:30:49,330 adalah Anda benar-benar mengetik dalam program Anda sesuatu seperti pilih bintang dari pengguna. 647 00:30:49,330 --> 00:30:52,200 Saya mengasumsikan bahwa tabel ini, selanjutnya disebut pengguna. 648 00:30:52,200 --> 00:30:54,860 Saya bisa menyebutnya apa pun yang kita inginkan, tapi itu jenis masuk akal. 649 00:30:54,860 --> 00:30:57,240 Dan jadi pilih adalah sangat kata kerja umum, jika Anda 650 00:30:57,240 --> 00:30:59,290 akan, SQL, yang benar-benar melakukan itu. 651 00:30:59,290 --> 00:31:02,730 Apa yang Anda pikirkan bintang berarti dalam konteks ini? 652 00:31:02,730 --> 00:31:04,410 >> AUDIENCE: [tidak terdengar] 653 00:31:04,410 --> 00:31:05,380 >> DAVID Malan: Maaf? 654 00:31:05,380 --> 00:31:06,300 >> AUDIENCE: [tidak terdengar] 655 00:31:06,300 --> 00:31:09,580 >> DAVID Malan: Tidak diperlukan, itu lebih inklusif dari itu, sebenarnya. 656 00:31:09,580 --> 00:31:11,700 Ini karakter wild card. 657 00:31:11,700 --> 00:31:14,740 Membintangi hampir selalu berarti apa-apa, jadi ini berarti, dalam hal ini, 658 00:31:14,740 --> 00:31:16,510 memilih semuanya dari database. 659 00:31:16,510 --> 00:31:20,730 Jadi ketika saya mengatakan ini, maksudku memberi saya kembali setiap kolom 660 00:31:20,730 --> 00:31:22,440 dari meja saya disebut pengguna. 661 00:31:22,440 --> 00:31:24,730 Jadi memberi saya satu set hasil, seperti disebut. 662 00:31:24,730 --> 00:31:28,210 Dengan kata lain, memberikan salinan spreadsheet, adalah apa yang saya maksudkan. 663 00:31:28,210 --> 00:31:34,890 >> Tapi jika saya mengatakan pilih bintang dari pengguna di mana ID sama dengan 1, seberapa besar harus 664 00:31:34,890 --> 00:31:36,640 hasil saya set menjadi kemudian? 665 00:31:36,640 --> 00:31:41,680 Atau ekuivalen, berapa banyak baris harus Aku diserahkan kembali dari database? 666 00:31:41,680 --> 00:31:45,860 Mungkin hanya satu, jika saya memiliki memang diperlakukan ID sebagai pengenal unik, 667 00:31:45,860 --> 00:31:50,710 dan jika David memiliki yang unik ID, saya harus kembali satu dan hanya satu baris 668 00:31:50,710 --> 00:31:53,220 yang berisi semua informasi Daud. 669 00:31:53,220 --> 00:31:56,390 Jika saya mengatakan di mana ini ID sama 99, aku harus kembali, 670 00:31:56,390 --> 00:32:00,320 dalam konteks ini, nol baris, setidaknya pada saat ini. 671 00:32:00,320 --> 00:32:03,620 >> Namun, jika saya tidak benar-benar peduli tentang semua informasi itu, 672 00:32:03,620 --> 00:32:06,970 Aku hanya bisa mengatakan, mana David tinggal? 673 00:32:06,970 --> 00:32:10,860 Pilih kode pos dari pengguna di mana ID adalah 1. 674 00:32:10,860 --> 00:32:15,820 Ini akan memilih saya hanya zip Daud kode dan bukan keseluruhan baris itu. 675 00:32:15,820 --> 00:32:19,541 Mengapa saya mungkin melakukan hal ini bukan query bintang, wild card? 676 00:32:19,541 --> 00:32:21,950 >> AUDIENCE: [tidak terdengar] 677 00:32:21,950 --> 00:32:24,590 >> DAVID Malan: Ya, saya hanya mungkin membutuhkannya. 678 00:32:24,590 --> 00:32:26,350 Jadi kinerja lagi jawabannya di sini. 679 00:32:26,350 --> 00:32:28,540 Mengapa meminta lebih Informasi dari yang Anda butuhkan, 680 00:32:28,540 --> 00:32:32,020 karena meskipun itu semua tepat bersama-sama, Anda masih harus menyalin data itu, 681 00:32:32,020 --> 00:32:35,560 tampaknya, dari database ke dalam program Anda, entah bagaimana, 682 00:32:35,560 --> 00:32:38,490 dan itu hanya konyol jika Anda hanya perlu lima digit tersebut, 683 00:32:38,490 --> 00:32:40,340 tidak keseluruhan baris. 684 00:32:40,340 --> 00:32:42,180 >> Jadi bagaimana cara memasukkan pengguna? 685 00:32:42,180 --> 00:32:44,780 Misalkan pengguna memiliki hanya terdaftar untuk pertama kalinya. 686 00:32:44,780 --> 00:32:46,560 sintaks biasanya akan terlihat seperti ini. 687 00:32:46,560 --> 00:32:52,700 Masukkan ke pengguna, dan maka kita akan mengatakan nilai-nilai, 688 00:32:52,700 --> 00:33:00,150 dan kemudian kita akan mengatakan nilai-nilai seperti, katakanlah, Lauren Scully, 689 00:33:00,150 --> 00:33:02,380 videografer kami di sini. 690 00:33:02,380 --> 00:33:04,390 Dan bidang berikutnya adalah gender. 691 00:33:04,390 --> 00:33:08,020 Jadi kita akan mengatakan kutipan, tanda kutip "F", maka kita memiliki ID 692 00:33:08,020 --> 00:33:12,250 dan aku akan say-- mari berpura-pura dia tidak benar-benar di sini, 693 00:33:12,250 --> 00:33:14,380 jadi kita akan mundur dalam cerita. 694 00:33:14,380 --> 00:33:16,530 Jadi 2 akan ID-nya. 695 00:33:16,530 --> 00:33:19,130 Dan kemudian field berikutnya di sini adalah email-nya. 696 00:33:19,130 --> 00:33:22,140 Jadi itu akan menjadi seperti Lauren Scully dan sebagainya, 697 00:33:22,140 --> 00:33:24,360 dan kami hanya akan dot dot dot itu pergi dari sini. 698 00:33:24,360 --> 00:33:26,890 Sekarang akan mendapatkan sedikit membosankan, tetapi query insert 699 00:33:26,890 --> 00:33:28,310 akhirnya akan terlihat seperti itu. 700 00:33:28,310 --> 00:33:30,970 >> Jika saya ingin menyingkirkan Scully, uh-oh, mari kita deregister 701 00:33:30,970 --> 00:33:37,420 , dia menghapus akunnya, menghapus dari pengguna di mana ID sama dengan 2, 702 00:33:37,420 --> 00:33:38,500 akan menyingkirkan Scully. 703 00:33:38,500 --> 00:33:48,050 Atau bisa saya katakan pengguna pembaruan ditetapkan, katakanlah, apa yang bisa kita ubah? 704 00:33:48,050 --> 00:33:49,430 Misalkan dia bergerak. 705 00:33:49,430 --> 00:33:53,730 Set zip sama 021-- tidak, itu pos-nya saat ini. 706 00:33:53,730 --> 00:33:54,487 90210. 707 00:33:54,487 --> 00:33:56,320 Satu-satunya kode pos lainnya Aku tahu di dunia. 708 00:33:56,320 --> 00:33:59,002 Sehingga akan mengubah zip nya code-- sebenarnya, 709 00:33:59,002 --> 00:34:00,460 yang tidak akan mengubah kode pos-nya. 710 00:34:00,460 --> 00:34:02,170 >> Apa yang saya lakukan? 711 00:34:02,170 --> 00:34:04,292 Meskipun sintaks mungkin baru. 712 00:34:04,292 --> 00:34:05,302 >> AUDIENCE: [tidak terdengar] 713 00:34:05,302 --> 00:34:08,010 DAVID Malan: Ya, saya pindah semua orang untuk Beverly Hills, California. 714 00:34:08,010 --> 00:34:11,920 Jadi aku harus benar-benar mengatakan di mana ID sama dengan 2. 715 00:34:11,920 --> 00:34:12,820 Dan seterusnya. 716 00:34:12,820 --> 00:34:15,290 Jadi SQL adalah semua tentang ini jenis instruksi. 717 00:34:15,290 --> 00:34:20,260 Pilih, menyisipkan, menghapus, memperbarui, dengan predikat tersebut pada akhir 718 00:34:20,260 --> 00:34:22,139 klausa mana ini, sehingga untuk berbicara. 719 00:34:22,139 --> 00:34:25,170 Dan ada lebih banyak Anda bisa lakukan, tapi itu benar-benar hanya bermuara 720 00:34:25,170 --> 00:34:29,750 untuk hanya, jika arcanely, mengekspresikan apa yang Anda inginkan database untuk melakukan. 721 00:34:29,750 --> 00:34:31,580 >> Dan kemudian database akan mencari tahu, ketika 722 00:34:31,580 --> 00:34:35,630 Anda memasukkan Lauren Scully ke dalam Database, di mana untuk menempatkan dia dalam memori 723 00:34:35,630 --> 00:34:38,230 sehingga kita bisa sangat cepat mendapatkan nya berdasarkan alamat email-nya 724 00:34:38,230 --> 00:34:42,610 atau berdasarkan nomor ID nya atau sejenisnya. 725 00:34:42,610 --> 00:34:43,391 Ya, Dan. 726 00:34:43,391 --> 00:34:44,266 AUDIENCE: [tidak terdengar] 727 00:34:44,266 --> 00:34:46,364 728 00:34:46,364 --> 00:34:47,780 DAVID Malan: Pertanyaan Benar-benar baik. 729 00:34:47,780 --> 00:34:50,370 Akan skrip ini berubah dari Microsoft Access ke Oracle 730 00:34:50,370 --> 00:34:52,290 untuk MySQL ke PostgreSQL? 731 00:34:52,290 --> 00:34:53,790 Jawaban singkatnya adalah tergantung. 732 00:34:53,790 --> 00:34:58,697 Secara teori, ada yang sangat bagian umum yang signifikan dari SQL 733 00:34:58,697 --> 00:35:00,780 yang dibagikan di semua dari implementasi tersebut. 734 00:35:00,780 --> 00:35:03,340 Namun, berbagai produsen memiliki fitur yang ditambahkan 735 00:35:03,340 --> 00:35:07,120 untuk database mereka untuk melakukan hal-hal tertentu di luar cakupan fitur ini, 736 00:35:07,120 --> 00:35:08,720 yang mungkin, pada kenyataannya, istirahat. 737 00:35:08,720 --> 00:35:11,210 >> Jadi pengembang cara lindung nilai terhadap ini, 738 00:35:11,210 --> 00:35:14,350 adalah bahwa daripada menulis baku kode SQL seperti aku menulis di sini, 739 00:35:14,350 --> 00:35:19,460 mereka malah menggunakan perpustakaan, perpustakaan umum itu sendiri 740 00:35:19,460 --> 00:35:23,650 adalah semacam tingkat yang lebih tinggi dan abstrak jauh produk yang Anda gunakan. 741 00:35:23,650 --> 00:35:25,710 Dan memberikan Anda fungsi dan prosedur 742 00:35:25,710 --> 00:35:28,810 menelepon sehingga Anda tidak pernah benar-benar menulis SQL baku. 743 00:35:28,810 --> 00:35:32,609 >> Dalam teori, maka, Anda dapat mengubah produk dari Oracle ke Microsoft 744 00:35:32,609 --> 00:35:34,650 atau sebaliknya atau apa pun lain, dan Anda benar-benar 745 00:35:34,650 --> 00:35:36,920 mengubah apa-apa tentang kode Anda. 746 00:35:36,920 --> 00:35:40,180 Kenyataannya, meskipun, adalah, Anda kadang-kadang menyerah fitur sebagai hasilnya. 747 00:35:40,180 --> 00:35:43,860 Anda mungkin telah memilih produk karena itu punya fitur nilai tambah tersebut, 748 00:35:43,860 --> 00:35:46,610 dan Anda hanya sekarang tidak menggunakan mereka sadar. 749 00:35:46,610 --> 00:35:51,630 >> Dan anekdot, kebanyakan perusahaan cenderung tidak pernah pindah dari database mereka. 750 00:35:51,630 --> 00:35:54,002 Jadi sementara ini adalah baik untuk memiliki fitur, kenyataannya 751 00:35:54,002 --> 00:35:55,960 adalah, jika Anda merombak database Anda, Anda 752 00:35:55,960 --> 00:35:59,890 mungkin membuat tandan perubahan lainnya pula, bahwa Anda tidak perlu 753 00:35:59,890 --> 00:36:01,360 perlu mengantisipasi itu. 754 00:36:01,360 --> 00:36:03,720 Jadi itu bisa dibilang over-rekayasa masalah, 755 00:36:03,720 --> 00:36:05,670 tapi itu benar-benar tergantung pada konteksnya. 756 00:36:05,670 --> 00:36:09,960 Tapi dalam teori, SQL dibagi di berbagai produk. 757 00:36:09,960 --> 00:36:11,560 pertanyaan yang benar-benar baik. 758 00:36:11,560 --> 00:36:12,272 Ya. 759 00:36:12,272 --> 00:36:13,147 >> AUDIENCE: [tidak terdengar] 760 00:36:13,147 --> 00:36:17,820 761 00:36:17,820 --> 00:36:21,480 >> DAVID Malan: Ya, jadi Anda bisa memikirkan database 762 00:36:21,480 --> 00:36:25,020 hanya server, pada akhir hari, dan di dalam server yang 763 00:36:25,020 --> 00:36:28,670 adalah sejumlah besar tabel, baris dan kolom. 764 00:36:28,670 --> 00:36:33,410 Dan ketika Anda mengirim permintaan seperti ini dari program Anda, website Anda, 765 00:36:33,410 --> 00:36:39,340 ditulis di Jawa, Ruby, Python, apa pun, server menerima perintah ini 766 00:36:39,340 --> 00:36:41,660 dan menafsirkan dalam harfiah dengan cara yang sama 767 00:36:41,660 --> 00:36:43,660 kita bahas sebelumnya dengan bahasa ditafsirkan, 768 00:36:43,660 --> 00:36:47,333 dan kemudian melakukan beberapa tindakan pada nol atau baris lainnya di nol atau lebih tabel. 769 00:36:47,333 --> 00:36:48,208 AUDIENCE: [tidak terdengar] 770 00:36:48,208 --> 00:36:53,540 771 00:36:53,540 --> 00:36:55,070 >> DAVID Malan: Tepat, persis. 772 00:36:55,070 --> 00:36:58,450 Jadi pseudocode untuk sesuatu seperti itu mungkin ini. 773 00:36:58,450 --> 00:37:02,450 Dalam file PHP atau Anda File Python atau berkas Java Anda, 774 00:37:02,450 --> 00:37:09,210 Anda akan memiliki kode pseudo, atau Scratch-seperti blok seperti, jika dilihat pengguna 775 00:37:09,210 --> 00:37:19,870 acme.com/register~~V untuk pertama kalinya, kemudian masukkan ke dalam pengguna dan sebagainya. 776 00:37:19,870 --> 00:37:22,619 Dan kami akan menerjemahkan ini untuk lebih kode beton pada akhirnya. 777 00:37:22,619 --> 00:37:24,660 Tapi benar-benar, kita memiliki semua blok bangunan di sini, 778 00:37:24,660 --> 00:37:27,680 meskipun kita melewatkan beberapa langkah-langkah implementasi. 779 00:37:27,680 --> 00:37:31,560 >> Jadi biarkan aku menemukan kesalahan dengan apa yang kita mengagumkan melakukan beberapa saat yang lalu. 780 00:37:31,560 --> 00:37:36,470 Anda telah membuat cukup tabel lengkap bagi pengguna. 781 00:37:36,470 --> 00:37:38,920 Memang, kita bisa menerapkan dalam beberapa cara yang berbeda, 782 00:37:38,920 --> 00:37:43,030 tetapi Anda benar-benar membawa kita bawah path-- dan saya mengatakan Anda, 783 00:37:43,030 --> 00:37:48,080 tapi mungkin fault-- saya dari cukup implementasi database tidak efisien. 784 00:37:48,080 --> 00:37:49,950 Ini tidak dinormalisasi. 785 00:37:49,950 --> 00:37:52,320 >> Dan dengan normalisasi Maksudku ada akan menjadi, 786 00:37:52,320 --> 00:37:57,380 dari waktu ke waktu, redundansi yang signifikan, dan karena inefisiensi, 787 00:37:57,380 --> 00:38:00,210 yang buang ruang. 788 00:38:00,210 --> 00:38:05,650 Berdasarkan hanya apa yang Anda lihat di sini, bisa Anda membayangkan di mana limbah ini ruang 789 00:38:05,650 --> 00:38:08,710 akan datang dari, dari waktu ke waktu, karena semakin banyak pengguna mendaftar 790 00:38:08,710 --> 00:38:10,860 untuk website Anda? 791 00:38:10,860 --> 00:38:13,047 Data apa yang mungkin menjadi berlebihan? 792 00:38:13,047 --> 00:38:19,084 793 00:38:19,084 --> 00:38:20,940 >> AUDIENCE: [tidak terdengar] 794 00:38:20,940 --> 00:38:22,686 >> DAVID Malan: Mengapa Anda berarti bahwa? 795 00:38:22,686 --> 00:38:23,561 AUDIENCE: [tidak terdengar] 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 asumsikan untuk tujuan hari ini yang itu benar. 799 00:38:35,622 --> 00:38:38,330 Ternyata, dan kami telah belajar ini dengan cara yang keras, yang tidak benar. 800 00:38:38,330 --> 00:38:41,670 Entah bagaimana beberapa kota memiliki, entah bagaimana, kode pos yang sama, 801 00:38:41,670 --> 00:38:43,390 yang memecah intuisi ini indah. 802 00:38:43,390 --> 00:38:46,180 Tapi anggap itu benar, karena itu hampir selalu benar. 803 00:38:46,180 --> 00:38:51,390 Jadi misalkan kode pos adalah selalu dikaitkan dengan kota yang sama 804 00:38:51,390 --> 00:38:53,600 dan negara, yang merupakan jenis asumsi yang wajar, 805 00:38:53,600 --> 00:38:54,840 tapi tidak benar, ternyata. 806 00:38:54,840 --> 00:38:57,310 Tapi asumsi yang masuk akal untuk tujuan hari ini. 807 00:38:57,310 --> 00:39:01,650 >> Kemudian anggaplah bahwa saya tinggal di Cambridge, MA, menurut tabel pengguna ini, 808 00:39:01,650 --> 00:39:04,100 dan anggaplah bahwa Lauren Scully tinggal di Cambridge, MA, 809 00:39:04,100 --> 00:39:06,120 dan anggaplah bahwa Kareem tinggal di Cambridge, MA, 810 00:39:06,120 --> 00:39:10,400 dan Arwa tinggal di Cambridge, MA, kita semua di 02.138. 811 00:39:10,400 --> 00:39:15,890 Mengapa kita mengingat Cambridge, MA, 02138 untuk kami berempat? 812 00:39:15,890 --> 00:39:18,903 Apa yang harus cukup untuk ingat? 813 00:39:18,903 --> 00:39:20,249 >> AUDIENCE: [tidak terdengar] 814 00:39:20,249 --> 00:39:21,540 DAVID Malan: Hanya kode pos. 815 00:39:21,540 --> 00:39:25,080 Hanya saja 02138 ada, karena Anda tahu apa yang bisa kita lakukan? 816 00:39:25,080 --> 00:39:32,650 Kita bisa mendapatkan sedikit mewah di sini dan di sini, mendefinisikan meja 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 selanjutnya, aku 819 00:39:38,840 --> 00:39:42,900 akan menyebutnya saya kota meja. 820 00:39:42,900 --> 00:39:47,011 Ini disebut, dari Tentu saja, pengguna saya meja. 821 00:39:47,011 --> 00:39:49,885 Dan jadi apa yang harus saya masukkan di sini untuk saya kota meja, menurut Anda? 822 00:39:49,885 --> 00:39:53,605 823 00:39:53,605 --> 00:39:54,535 >> AUDIENCE: [tidak terdengar] 824 00:39:54,535 --> 00:39:55,930 >> DAVID Malan: Ya. 825 00:39:55,930 --> 00:40:01,440 Jadi zip dan negara dan kota. 826 00:40:01,440 --> 00:40:05,350 Dan jenis di sini, kita akan mengatakan ini akan menjadi char 5 lagi, 827 00:40:05,350 --> 00:40:06,750 tunduk pada perdebatan sebelumnya. 828 00:40:06,750 --> 00:40:14,810 Ini akan menjadi enum, mungkin seperti sebelumnya, dan kota akan menjadi varchar 50. 829 00:40:14,810 --> 00:40:17,960 Dan sekarang apa yang saya dapatkan untuk menghapus dari tabel ini 830 00:40:17,960 --> 00:40:21,995 untuk menghilangkan inefisiensi itu? 831 00:40:21,995 --> 00:40:23,100 >> AUDIENCE: [tidak terdengar] 832 00:40:23,100 --> 00:40:23,850 DAVID Malan: Nice. 833 00:40:23,850 --> 00:40:30,239 Negara dan kota pergi, jadi aku sekarang dihilangkan potensi inefisiensi 834 00:40:30,239 --> 00:40:33,280 untuk berlebihan mengingat, Cambridge, MA, Cambridge, MA, Cambridge, MA, 835 00:40:33,280 --> 00:40:35,712 Cambridge, MA, yang, mudah-mudahan tidak akan pernah berubah. 836 00:40:35,712 --> 00:40:37,670 Dan bahkan jika tidak, itu minorly menjengkelkan, sekarang 837 00:40:37,670 --> 00:40:39,750 bahwa saya harus mengubah dalam beberapa baris, 838 00:40:39,750 --> 00:40:43,770 sedangkan di sini, aku bisa saja mengubahnya dalam satu tempat. 839 00:40:43,770 --> 00:40:46,890 >> Sekarang apa trade-off, mungkin? 840 00:40:46,890 --> 00:40:48,020 Ini adalah super nyaman. 841 00:40:48,020 --> 00:40:50,730 Memiliki semua data saya baik bersama-sama. 842 00:40:50,730 --> 00:40:53,644 Tapi apa jelas terjadi sekarang? 843 00:40:53,644 --> 00:40:55,684 >> AUDIENCE: [tidak terdengar] 844 00:40:55,684 --> 00:40:58,100 DAVID Malan: Tepat, dan aku senang Anda menggunakan kata bergabung, 845 00:40:58,100 --> 00:41:01,320 karena itulah sebenarnya kata kunci, dalam dunia database relasional 846 00:41:01,320 --> 00:41:05,270 di SQL, itu kata yang sebenarnya Anda mungkin mengetik atau setidaknya menyampaikan. 847 00:41:05,270 --> 00:41:09,280 Dan pada kenyataannya, apa yang sekarang kita harus melakukan untuk memilih informasi lengkap David adalah 848 00:41:09,280 --> 00:41:19,700 sesuatu seperti pilih bintang dari pengguna, bergabung kota, on-- dan sekarang 849 00:41:19,700 --> 00:41:24,010 Aku akan hanya pindah ke baris kedua sehingga users.zip fits-- ini sama dengan 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 terjadi? 852 00:41:35,550 --> 00:41:38,970 Itu jelek mencari, tetapi Anda dapat jenis membacanya kiri ke kanan, atas ke bawah. 853 00:41:38,970 --> 00:41:41,030 Pilih star dari pengguna adalah sama seperti sebelumnya, 854 00:41:41,030 --> 00:41:42,930 tapi tidak dari pengguna, per se. 855 00:41:42,930 --> 00:41:45,910 Ini dari pengguna bergabung kota. 856 00:41:45,910 --> 00:41:48,520 Apa yang saya bergabung dua meja di? 857 00:41:48,520 --> 00:41:51,820 Nah, tampaknya, pengguna tabel zip lapangan, 858 00:41:51,820 --> 00:41:54,810 dan periode ini hanya khusus sintaks untuk mengekspresikan gagasan itu, 859 00:41:54,810 --> 00:41:58,130 dan ini adalah kota tabel zip lapangan. 860 00:41:58,130 --> 00:42:01,580 Saya ingin kedua harus sama, tapi saya ingin akhirnya memilih 861 00:42:01,580 --> 00:42:06,280 hanya baris di mana ID pada tabel pengguna 862 00:42:06,280 --> 00:42:08,730 sama dengan 1, yang terjadi untuk menjadi milikku. 863 00:42:08,730 --> 00:42:11,781 >> Dan hanya untuk menjadi jelas, programmer, biasanya ketika 864 00:42:11,781 --> 00:42:14,780 hardcode sesuatu seperti nomor 1, karena jika tidak website hanya 865 00:42:14,780 --> 00:42:17,630 mendukung 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 variabel, sesuatu yang 868 00:42:22,510 --> 00:42:26,210 dapat berubah dari waktu ke waktu, mirip dalam roh dengan apa yang saya katakan sebelumnya 869 00:42:26,210 --> 00:42:28,080 dengan jenis-jenis penampung. 870 00:42:28,080 --> 00:42:30,396 Tapi untuk saat ini kita hanya akan hardcode sebagai 1. 871 00:42:30,396 --> 00:42:31,520 Dan jadi apa artinya ini? 872 00:42:31,520 --> 00:42:35,100 Nah, cara yang baik untuk memvisualisasikan ini bahwa jika tangan ini adalah tabel pengguna, 873 00:42:35,100 --> 00:42:38,090 dan tangan ini adalah ritsleting meja, kami semacam finding-- 874 00:42:38,090 --> 00:42:41,330 dan ujung jari saya zip di sini, dan ujung jari saya 875 00:42:41,330 --> 00:42:43,740 di sini adalah zip, Anda jenis interlocking itu 876 00:42:43,740 --> 00:42:47,950 sehingga Anda mendapatkan kembali yang dihasilkan tabel asli, dengan benar-benar bergabung 877 00:42:47,950 --> 00:42:49,590 dua tabel di lapangan umum. 878 00:42:49,590 --> 00:42:50,840 Dan itu tidak harus zip. 879 00:42:50,840 --> 00:42:54,460 Ini bisa menjadi apa yang paling lain, tapi zip bagus, karena salah satu, itu singkat, 880 00:42:54,460 --> 00:42:56,470 dua, itu selalu panjang yang sama, jadi ada 881 00:42:56,470 --> 00:43:02,270 efisiensi nyata untuk apa Olivier diusulkan di sini 882 00:43:02,270 --> 00:43:05,200 dengan anjak keluar zip, dan [Tidak terdengar] mengusulkan bahwa kita menyingkirkan 883 00:43:05,200 --> 00:43:07,110 kota dan negara. 884 00:43:07,110 --> 00:43:11,370 >> Jadi ini adalah proses dikenal sebagai normalisasi. 885 00:43:11,370 --> 00:43:14,171 Pertanyaan tentang itu? 886 00:43:14,171 --> 00:43:16,170 Yah biarkan saya menunjukkan ini adalah jenis barang, 887 00:43:16,170 --> 00:43:19,202 meskipun itu cukup rendah tingkat, diskusi ini, bahwa Anda akan berpikir 888 00:43:19,202 --> 00:43:20,910 Anda semacam mendapatkan hilang dalam gulma, 889 00:43:20,910 --> 00:43:26,690 ini merupakan manifestasi dari cukup kesempatan bagi pengembang untuk menjadi buruk. 890 00:43:26,690 --> 00:43:29,600 Dan pada kenyataannya, bahkan ketika kita, di Program Aku sudah diajarkan, ketika kita punya, 891 00:43:29,600 --> 00:43:32,290 misalnya, berpengalaman programmer sarjana 892 00:43:32,290 --> 00:43:35,920 membangun website, pada pandangan pertama, situs mungkin terlihat hebat. 893 00:43:35,920 --> 00:43:38,280 Dan mereka memiliki semua fungsi kami meminta, 894 00:43:38,280 --> 00:43:40,650 pengembang melakukan pekerjaan yang baik. 895 00:43:40,650 --> 00:43:43,370 >> Tapi mereka tidak selalu tahu cukup tentang desain database 896 00:43:43,370 --> 00:43:46,680 atau mereka tidak berpikir keras cukup tentang jenis data 897 00:43:46,680 --> 00:43:49,220 dan jenis pengguna situs akan memiliki, 898 00:43:49,220 --> 00:43:53,240 dan kita menemukan, kemudian, enam bulan kemudian, setelah mereka lulus atau pindah, 899 00:43:53,240 --> 00:43:56,016 yang sialan itu, website kami benar-benar, benar-benar lambat. 900 00:43:56,016 --> 00:43:58,890 Dan aku bahkan tidak berbicara tentang memiliki jutaan atau ribuan pengguna. 901 00:43:58,890 --> 00:44:02,580 Maksudku beberapa ratus pengguna di kampus, semuanya ingin, misalnya, 902 00:44:02,580 --> 00:44:04,870 berbelanja untuk kursus di saat yang sama, mereka 903 00:44:04,870 --> 00:44:07,010 menggunakan bahwa program katalog Aplikasi yang saya sebutkan 904 00:44:07,010 --> 00:44:10,410 dan hal tersebut semakin benar-benar memperlambat karena tidak ada indeks. 905 00:44:10,410 --> 00:44:13,740 Tidak ada bintang merah, sehingga untuk berbicara, atau kita punya belum tentu 906 00:44:13,740 --> 00:44:17,690 keluar faktor data umum untuk mendapatkan beberapa penghematan ruang. 907 00:44:17,690 --> 00:44:21,880 >> Dan jadi ketika pemeriksaan pengembang atau database orang atau sejenisnya, 908 00:44:21,880 --> 00:44:25,864 jenis pertanyaan untuk memikirkan Bahkan, ketika meninjau kode seseorang, 909 00:44:25,864 --> 00:44:28,530 mengatakan, belum tentu terlihat melalui semua kode mereka, tapi mengatakan, 910 00:44:28,530 --> 00:44:30,154 mari kita lihat melalui tabel database. 911 00:44:30,154 --> 00:44:31,150 Apa yang Anda menyimpan? 912 00:44:31,150 --> 00:44:33,941 Dan kemudian mengatakan, baik, tunggu menit, mengapa kau menggunakan integer? 913 00:44:33,941 --> 00:44:36,224 Bagaimana jika kita memiliki 4 miliar dan 1 baris ini? 914 00:44:36,224 --> 00:44:38,140 Dan jenis-jenis pertanyaan adalah kesempatan 915 00:44:38,140 --> 00:44:40,170 untuk jenis mendorong kembali dan mendapatkan rasa, di mana 916 00:44:40,170 --> 00:44:42,300 jika Anda tidak nyaman melakukan itu, memiliki seseorang yang lebih teknis 917 00:44:42,300 --> 00:44:45,425 mengajukan pertanyaan-pertanyaan ini, apakah atau tidak orang benar-benar tahu barang-barang mereka. 918 00:44:45,425 --> 00:44:47,890 Dan ini adalah jenis hal, juga, bahwa 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 lebih jarang, karena Anda tidak selalu datang di atasnya 921 00:44:53,920 --> 00:44:56,630 sebanyak, karena Anda bisa mendapatkan database dan berjalan, 922 00:44:56,630 --> 00:44:58,880 tetapi jika Anda sudah membaca pada tutorial atau telah 923 00:44:58,880 --> 00:45:01,880 diberitahu tentang normalisasi basis data dan pengindeksan dan kinerja, 924 00:45:01,880 --> 00:45:04,255 ini adalah hal-hal yang yang akan menyakiti Anda. 925 00:45:04,255 --> 00:45:07,480 Dan Anda mungkin berpikir, atau insinyur buruk mungkin mengatakan, oh, baik, membayar kita lebih baik 926 00:45:07,480 --> 00:45:09,600 untuk database yang lebih besar atau database lebih cepat 927 00:45:09,600 --> 00:45:13,360 atau hanya membuang uang di ini, skala vertikal, tidak selalu begitu. 928 00:45:13,360 --> 00:45:16,920 Jika Anda pergi in-- dan Anda dapat pergi di setelah fact-- dan menambahkan indeks, 929 00:45:16,920 --> 00:45:20,320 dan mungkin butuh beberapa jam untuk database untuk membangun data baru 930 00:45:20,320 --> 00:45:24,100 struktur yang saya singgung sebelumnya, Anda masih bisa memperbaiki ini setelah fakta, 931 00:45:24,100 --> 00:45:26,180 bahwa ini adalah di mana Anda mulai untuk membedakan 932 00:45:26,180 --> 00:45:28,830 desainer yang baik dari yang buruk desainer, bukan hanya estetis, 933 00:45:28,830 --> 00:45:32,972 tapi kinerja-bijaksana juga. 934 00:45:32,972 --> 00:45:33,555 Ada pertanyaan? 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 lain database yang saya singgung sebelumnya, 938 00:45:41,980 --> 00:45:43,490 Anda tidak memiliki baris dan kolom. 939 00:45:43,490 --> 00:45:47,000 Sebaliknya, Anda akan memiliki sesuatu yang terlihat sedikit lebih seperti ini. 940 00:45:47,000 --> 00:45:48,630 Aku akan menggunakan sintaks umum. 941 00:45:48,630 --> 00:45:51,270 kurung kurawal terjadi digunakan di sini cukup banyak. 942 00:45:51,270 --> 00:45:55,400 Anda mungkin memiliki sesuatu seperti nama pertama adalah David, 943 00:45:55,400 --> 00:46:00,180 Anda mungkin memiliki lalu Nama Malan, kutipan, 944 00:46:00,180 --> 00:46:07,530 Anda mungkin memiliki ID is-- permisi, whoops-- ID adalah 1, 945 00:46:07,530 --> 00:46:13,410 email adalah malan@harvard.edu, dan saya tidak akan repot-repot mengetik sisanya, dan kemudian 946 00:46:13,410 --> 00:46:14,380 beberapa hal lain. 947 00:46:14,380 --> 00:46:17,380 >> Dengan kata lain, ini adalah representasi tekstual 948 00:46:17,380 --> 00:46:20,720 dari apa yang kita umumnya akan memanggil sebuah objek dalam sebuah program komputer. 949 00:46:20,720 --> 00:46:26,079 Dan objek umumnya hanya koleksi pasangan nilai kunci. 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 kunci dalam HTML, kita melihat pasangan nilai kunci sekarang 952 00:46:30,440 --> 00:46:34,020 dalam konteks database, dan kami melihat pasangan nilai kunci dalam konteks 953 00:46:34,020 --> 00:46:35,970 dari, saya pikir, bahasa sebelumnya hari ini. 954 00:46:35,970 --> 00:46:36,890 Terus datang. 955 00:46:36,890 --> 00:46:39,620 Dan memang, itu benar-benar data apa bermuara, 956 00:46:39,620 --> 00:46:44,240 data dan metadata, atau nilai-nilai dan kunci masing-masing. 957 00:46:44,240 --> 00:46:47,430 >> Jadi non-relasional Database, sesuatu berdasarkan 958 00:46:47,430 --> 00:46:50,680 pada objek, di mana Anda hanya menggumpal segala sesuatu bersama-sama dan meletakkannya 959 00:46:50,680 --> 00:46:55,640 ke dalam memori, umumnya akan digambarkan sebagai, atau memikirkan, karena hal ini. 960 00:46:55,640 --> 00:47:00,500 Dan aku akan meninggalkan sekarang sebagai semacam pendekatan alternatif. 961 00:47:00,500 --> 00:47:03,750 Dan satu belum tentu lebih baik dari yang lain. 962 00:47:03,750 --> 00:47:07,310 Bahkan, sangat banyak dalam mode hari ini adalah sistem database 963 00:47:07,310 --> 00:47:11,942 seperti MongoDB dan Redis dan beberapa alat-alat seperti lainnya, tersedia secara bebas, 964 00:47:11,942 --> 00:47:13,400 tetapi mereka semakin en vogue. 965 00:47:13,400 --> 00:47:18,850 Sebagian karena mereka menawarkan tambahan fitur lebih pendekatan tabel, 966 00:47:18,850 --> 00:47:20,850 tetapi juga karena mereka sedikit lebih mudah untuk digunakan, 967 00:47:20,850 --> 00:47:24,099 karena Anda tidak harus berpikir keras tentang banyak keputusan desain ini. 968 00:47:24,099 --> 00:47:25,970 Jadi plus dan minus. 969 00:47:25,970 --> 00:47:29,740 Jadi menyadari ada pilihan melampaui apa yang kita hanya menghabiskan waktu di. 970 00:47:29,740 --> 00:47:32,310 >> Jadi mari kita lakukan ini. 971 00:47:32,310 --> 00:47:37,870 Mari transisi sedikit kembali sekarang untuk pemrograman web, 972 00:47:37,870 --> 00:47:40,470 sehingga kita semacam menyimpulkan hari ini dengan sesuatu 973 00:47:40,470 --> 00:47:43,930 itu adalah tangan-sedikit, mengisi di beberapa kesenjangan dari kemarin. 974 00:47:43,930 --> 00:47:45,340 Biarkan aku pergi ke pertama ini. 975 00:47:45,340 --> 00:47:49,310 Jadi ingat kemarin bahwa kami memiliki beberapa kanonik HTML 976 00:47:49,310 --> 00:47:55,110 halaman yang awalnya, hanya HTML, dan kemudian yang kedua memiliki CSS, 977 00:47:55,110 --> 00:47:56,620 cascading style sheet. 978 00:47:56,620 --> 00:47:59,830 Ini adalah tag baru yang kita tidak lihat kemarin, atau memikirkan, 979 00:47:59,830 --> 00:48:01,490 disebut-tag script. 980 00:48:01,490 --> 00:48:05,830 >> Ternyata Anda benar-benar dapat menanamkan bahasa yang disebut JavaScript di web Anda 981 00:48:05,830 --> 00:48:08,310 Halaman dan membuat web Anda halaman melakukan sesuatu. 982 00:48:08,310 --> 00:48:09,710 Jadi apa yang saya maksud dengan itu? 983 00:48:09,710 --> 00:48:12,630 Nah, biarkan aku pergi ke depan dan hanya meminjam kode ini sejenak. 984 00:48:12,630 --> 00:48:15,860 Aku akan pergi ke Cloud9, tidak perlu untuk pergi ke sana sendiri dulu, 985 00:48:15,860 --> 00:48:21,350 dan aku akan memanggil alert.HTML ini. 986 00:48:21,350 --> 00:48:23,650 Aku akan menyisipkan dalam file saya di sini. 987 00:48:23,650 --> 00:48:32,070 Dan hanya untuk mengklarifikasi apa yang telah kulakukan, biarkan saya pergi ke alamat ini dan pergi untuk mengingatkan, 988 00:48:32,070 --> 00:48:33,870 dan Anda melihat Hello World. 989 00:48:33,870 --> 00:48:35,440 >> Tapi ini adalah jenis underwhelming. 990 00:48:35,440 --> 00:48:37,410 aku ingin melakukan sesuatu beda tipis. 991 00:48:37,410 --> 00:48:40,610 Jadi aku akan benar-benar melakukan hal ini. 992 00:48:40,610 --> 00:48:43,820 Aku akan pergi di sini e, dan di antara tag naskah saya, 993 00:48:43,820 --> 00:48:53,460 mengatakan alert ( 'hello, dunia'); sehingga pemberitahuan itu sedikit ceroboh, tapi aku punya HTML, 994 00:48:53,460 --> 00:48:56,180 dalam yang merupakan bahasa yang disebut JavaScript, 995 00:48:56,180 --> 00:48:59,420 dan ini adalah apa yang disebut fungsi panggilan atau panggilan prosedur. 996 00:48:59,420 --> 00:49:04,500 Ini adalah kata kerja, secara harfiah, dalam hal ini, dan saya memohon fungsi kode 997 00:49:04,500 --> 00:49:06,310 bahwa orang lain menulis. 998 00:49:06,310 --> 00:49:09,630 >> Jadi fungsi yang merupakan peringatan, jadi mari kita pergi ke halaman ini 999 00:49:09,630 --> 00:49:14,046 sekarang dan klik ulang, dan sekarang Anda melihat sedikit interaktivitas. 1000 00:49:14,046 --> 00:49:15,420 Ini semacam sekolah tua dan jelek. 1001 00:49:15,420 --> 00:49:18,580 Ini semacam mengingatkan Anda tentang pop-up, mungkin, dari tadi 1002 00:49:18,580 --> 00:49:22,030 tapi itu melakukan sesuatu yang sedikit lebih terprogram. 1003 00:49:22,030 --> 00:49:26,940 >> Jadi lebih dari itu, mari kita lakukan sesuatu yang lebih menarik. 1004 00:49:26,940 --> 00:49:30,980 Biarkan aku pergi di sini dan menyingkirkan ini. 1005 00:49:30,980 --> 00:49:33,840 Dan aku akan pergi ke depan dan membuat formulir seperti yang kita lakukan kemarin. 1006 00:49:33,840 --> 00:49:34,840 Sebenarnya, Anda tahu apa? 1007 00:49:34,840 --> 00:49:37,350 Aku akan pergi ke google.html, yang kita 1008 00:49:37,350 --> 00:49:43,027 mulai kemarin, yang tampak seperti ini, melalui yang kita mencari kucing 1009 00:49:43,027 --> 00:49:45,360 Tapi perhatikan ada semacam bug dalam versi saat ini. 1010 00:49:45,360 --> 00:49:49,770 Ia bekerja untuk kucing, tapi anggaplah Saya tidak bekerja sama dan saya ketik apa-apa, 1011 00:49:49,770 --> 00:49:53,290 dan saya hanya klik submit. 1012 00:49:53,290 --> 00:49:54,540 Itu semacam perilaku aneh. 1013 00:49:54,540 --> 00:49:57,300 Membawa saya ke Google nyata, tidak memberi saya pesan kesalahan. 1014 00:49:57,300 --> 00:50:00,590 Saya ingin memberitahu pengguna Anda perlu memberi kita nilai. 1015 00:50:00,590 --> 00:50:01,780 >> Jadi bagaimana mungkin kita melakukan ini? 1016 00:50:01,780 --> 00:50:06,790 Baik biarkan aku kembali ke Cloud9 dan biarkan aku pergi ke bagian atas halaman saya 1017 00:50:06,790 --> 00:50:11,980 dan menambahkan tag script seperti ini, di mana Aku akan mengetik beberapa kode JavaScript. 1018 00:50:11,980 --> 00:50:15,420 Dan aku akan melakukan hal berikut. 1019 00:50:15,420 --> 00:50:22,910 Jika (document.getelementByID-- dan recall yang kita bicarakan itu sebelumnya, 1020 00:50:22,910 --> 00:50:23,960 fungsi itu. 1021 00:50:23,960 --> 00:50:25,310 Apa ID yang ingin saya dapatkan? 1022 00:50:25,310 --> 00:50:33,050 Saya ingin mendapatkan q, dan aku akan katakanlah sama apa-apa, seperti ini-- 1023 00:50:33,050 --> 00:50:38,220 benar-benar membiarkan saya menggunakan tanda kutip ganda hanya untuk consistency-- sama apa-apa, 1024 00:50:38,220 --> 00:50:46,650 kemudian alert ( "Silahkan ketik query") di sini. 1025 00:50:46,650 --> 00:50:49,200 >> Jadi saya memiliki apa yang tampaknya menjadi sesuatu seperti kondisi. 1026 00:50:49,200 --> 00:50:51,410 Kami telah melihat ide umum ini di Scratch. 1027 00:50:51,410 --> 00:50:54,240 Ini seperti salah satu teka-teki yang potongan yang tampak 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 Nah, di sini, melihat aku akan melakukan hal berikut. 1030 00:50:59,520 --> 00:51:02,790 Aku akan memberikan formulir ini bidang tidak hanya nama q, yang 1031 00:51:02,790 --> 00:51:06,630 adalah apa yang diteruskan ke Google, tapi aku akan memberikan pengenal lokal, 1032 00:51:06,630 --> 00:51:07,630 juga disebut q. 1033 00:51:07,630 --> 00:51:11,780 Tapi aku bisa menelepon apa ini saya inginkan, aku hanya akan tetap sederhana 1034 00:51:11,780 --> 00:51:14,570 dan juga menyebutnya q, hanya untuk kesederhanaan. 1035 00:51:14,570 --> 00:51:17,650 >> Dan sekarang aku akan melakukan sesuatu yang sedikit lebih. 1036 00:51:17,650 --> 00:51:22,600 Pada kolom formulir di sini, aku akan menambahkan apa yang disebut sebuah event handler. 1037 00:51:22,600 --> 00:51:32,260 Pada mengirimkan, saya ingin menelepon fungsi yang disebut validasi. 1038 00:51:32,260 --> 00:51:35,520 Ini belum ada, ini kata, atau validate kata kerja ini, 1039 00:51:35,520 --> 00:51:38,560 karena apa yang akan saya lakukan di sini sekarang adalah menambahkan beberapa kode. 1040 00:51:38,560 --> 00:51:42,200 >> Aku akan mengatakan fungsi validasi. 1041 00:51:42,200 --> 00:51:48,280 Aku akan indent ini dan tambahkan lagi penjepit keriting di sini dan satu lagi di sini. 1042 00:51:48,280 --> 00:51:50,110 Pertimbangkan apa ini sekarang lakukan. 1043 00:51:50,110 --> 00:51:54,210 Saya memiliki sekarang-- berpikir ini sebagai diciptakan saya potongan puzzle sendiri yang sebelumnya tidak 1044 00:51:54,210 --> 00:51:57,440 ada, dan saya sudah menelepon teka-teki ini potongan potongan memvalidasi puzzle. 1045 00:51:57,440 --> 00:52:01,620 tujuannya dalam hidup adalah untuk mengeksekusi empat baris kode di dalamnya. 1046 00:52:01,620 --> 00:52:04,940 >> Jika document.getElementById sehingga secara konseptual, 1047 00:52:04,940 --> 00:52:09,380 yang akan masuk ke elemen, elemen HTML yang unik 1048 00:52:09,380 --> 00:52:12,930 Ide hanya q, dan kemudian meskipun sintaks terlihat sedikit aneh, 1049 00:52:12,930 --> 00:52:16,430 yang sama sama hanya berarti sederajat. 1050 00:52:16,430 --> 00:52:20,950 Jadi itu berarti jika elemen dengan identifier unik q, ketika mendapat, 1051 00:52:20,950 --> 00:52:25,700 tidak memiliki nilai, itu hanya sama kutipan tanda kutip, tidak ada di sana, 1052 00:52:25,700 --> 00:52:27,170 lalu apa yang ingin saya lakukan? 1053 00:52:27,170 --> 00:52:29,360 Saya ingin berteriak pada pengguna. 1054 00:52:29,360 --> 00:52:31,710 >> Dan kami tidak akan pergi detail di sini. 1055 00:52:31,710 --> 00:52:32,960 Aku akan kembali palsu. 1056 00:52:32,960 --> 00:52:34,380 Itu adalah kesalahan. 1057 00:52:34,380 --> 00:52:38,746 Lain, aku akan kembali benar. 1058 00:52:38,746 --> 00:52:40,120 Jadi baik itu bekerja atau tidak. 1059 00:52:40,120 --> 00:52:41,800 Salah atau benar. 1060 00:52:41,800 --> 00:52:47,820 Dan jika saya tidak melakukan kesalahan apapun, biarkan aku menyimpan ini dan kembali ini. 1061 00:52:47,820 --> 00:52:50,940 Dan biarkan aku cek hanya dua kali lipat Aku tidak, pada kenyataannya, membuat kesalahan ketik, 1062 00:52:50,940 --> 00:52:52,690 jadi saya tidak mempermalukan diri sendiri. 1063 00:52:52,690 --> 00:52:54,240 Mari kita lihat apakah ini bekerja. 1064 00:52:54,240 --> 00:52:56,930 >> Jadi sekarang aku akan mengetik kucing. 1065 00:52:56,930 --> 00:52:59,421 Masih bekerja, atau setengah karya, setidaknya. 1066 00:52:59,421 --> 00:53:02,170 Sekarang mari saya reload, dan sekarang biarkan saya coba kirimkan tanpa mengetik 1067 00:53:02,170 --> 00:53:05,860 anything-- sialan, itu pecah. 1068 00:53:05,860 --> 00:53:06,430 Sebentar. 1069 00:53:06,430 --> 00:53:09,380 1070 00:53:09,380 --> 00:53:12,660 Mari saya membuka konsol, [Tidak terdengar] log, kembali halaman tersebut. 1071 00:53:12,660 --> 00:53:13,576 Biarkan aku mencoba 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 lupa. 1075 00:53:18,000 --> 00:53:18,630 Saya salah ketik. 1076 00:53:18,630 --> 00:53:20,760 Aku ingat apa itu. 1077 00:53:20,760 --> 00:53:21,350 .nilai. 1078 00:53:21,350 --> 00:53:27,060 Saya bermaksud mengatakan jika nilai elemen ID yang adalah q 1079 00:53:27,060 --> 00:53:29,800 sama itu, maka berteriak pada pengguna. 1080 00:53:29,800 --> 00:53:31,870 >> Jadi sekarang biarkan aku menahan napas lagi. 1081 00:53:31,870 --> 00:53:33,480 Kita mulai. 1082 00:53:33,480 --> 00:53:34,130 Di sana kami pergi. 1083 00:53:34,130 --> 00:53:35,010 Ketik query. 1084 00:53:35,010 --> 00:53:36,840 Jadi itu tidak membiarkan saya melalui. 1085 00:53:36,840 --> 00:53:40,210 Aku bisa menjadi semacam main-main dengan ini, dan bukannya memeriksa nilai, 1086 00:53:40,210 --> 00:53:46,720 Saya dapat mengatakan sesuatu seperti, tidak lagi mencari kucing, 1087 00:53:46,720 --> 00:53:51,150 dan sekarang kita hanya bisa lebih main-main membiarkan pencarian pengguna untuk anjing jika dia 1088 00:53:51,150 --> 00:53:57,490 ingin, atau jika aku pergi di sini dan mencari kucing, sekarang saya tidak bisa. 1089 00:53:57,490 --> 00:53:58,690 >> Jadi apa takeaway di sini? 1090 00:53:58,690 --> 00:54:03,010 Jadi satu, kita sudah diperkenalkan ke dunia kita dari HTML dan CSS, 1091 00:54:03,010 --> 00:54:04,320 fungsi pemrograman. 1092 00:54:04,320 --> 00:54:06,300 Aku benar-benar bisa sekarang membuat keputusan dalam kode. 1093 00:54:06,300 --> 00:54:10,570 Sebelumnya, semua saya bisa lakukan adalah mark up konten tekstual atau konten grafis 1094 00:54:10,570 --> 00:54:13,080 dan kirim apa yang harus dicari seperti dan di mana untuk ditampilkan. 1095 00:54:13,080 --> 00:54:16,650 Sekarang saya benar-benar dapat meminta pertanyaan dari halaman 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 harus berteriak dia. 1098 00:54:22,780 --> 00:54:28,740 >> Jadi mari kita mencoba sesuatu kita sendiri dengan ini. 1099 00:54:28,740 --> 00:54:33,350 Silakan, biarkan aku membuka slide berikutnya di sini, dan hanya menunjukkan satu hal. 1100 00:54:33,350 --> 00:54:37,250 Sama seperti dengan CSS, kita bisa faktor luar kode JavaScript untuk file terpisah, 1101 00:54:37,250 --> 00:54:40,660 Anda dapat melakukan hal yang sama dengan JavaScript seperti CSS. 1102 00:54:40,660 --> 00:54:44,520 Dan Anda menggunakan menggunakan sumber atribut dari tag script. 1103 00:54:44,520 --> 00:54:46,540 Tapi kita tidak akan mempersulit hal-hal untuk saat ini. 1104 00:54:46,540 --> 00:54:50,440 Sebaliknya, jika Anda bisa pergi ke tidak halaman ini, 1105 00:54:50,440 --> 00:55:02,690 tapi-- biarkan aku bergerak ini di Comes urutan pergi ke, jika Anda bisa, halaman 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 Ini di slide hari ini. 1108 00:55:04,550 --> 00:55:07,133 Anda mungkin harus ulang karena Saya telah menambahkan beberapa hal. 1109 00:55:07,133 --> 00:55:09,970 1110 00:55:09,970 --> 00:55:13,890 >> Tapi pergi ke sana di mana beberapa teka-teki menunggu. 1111 00:55:13,890 --> 00:55:16,670 Dan ini akan memberikan kami kesempatan, dalam konteks yang sedikit lebih menyenangkan, 1112 00:55:16,670 --> 00:55:20,610 untuk mencoba-coba dengan beberapa JavaScript. 1113 00:55:20,610 --> 00:55:25,505 Dan ketika Anda sampai di 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, set merah. 1120 00:56:13,930 --> 00:56:19,220 1121 00:56:19,220 --> 00:56:20,220 Ups. 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 tantangan ini. 1124 00:56:27,630 --> 00:56:29,920 Dan ini akan bekerja sebagai berikut. 1125 00:56:29,920 --> 00:56:33,340 Jadi apa yang Anda miliki di ini Halaman adalah sejumlah 1126 00:56:33,340 --> 00:56:38,024 teka-teki gambar dengan seorang teman di Stanford University. 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 menatap itu, tidak ada yang akan pop keluar pada Anda. 1129 00:56:43,815 --> 00:56:46,000 Sebaliknya, sesuatu yang tersembunyi dalam gambar ini. 1130 00:56:46,000 --> 00:56:47,790 Dan itu tersembunyi dengan cara berikut. 1131 00:56:47,790 --> 00:56:51,740 Gambar, seperti yang Anda ketahui, bisa terdiri dari hanya tiga warna. 1132 00:56:51,740 --> 00:56:53,346 Beberapa merah, beberapa biru, dan beberapa hijau. 1133 00:56:53,346 --> 00:56:55,220 Dan kita bisa membuat semua warna dalam pelangi 1134 00:56:55,220 --> 00:56:57,570 dengan mencampur tiga warna entah bagaimana. 1135 00:56:57,570 --> 00:57:01,940 >> Jadi ini terlihat sebagian besar hijau dan biru, tetapi sebagai Nick mengatakan di sini, 1136 00:57:01,940 --> 00:57:04,060 gambar puzzle besi ini teka-teki. 1137 00:57:04,060 --> 00:57:06,780 Ini berisi gambar sesuatu yang terkenal, namun, 1138 00:57:06,780 --> 00:57:08,310 gambar telah terdistorsi. 1139 00:57:08,310 --> 00:57:11,500 Objek yang terkenal adalah dalam nilai-nilai merah. 1140 00:57:11,500 --> 00:57:13,810 nilai-nilai Namun, merah semuanya telah dibagi oleh 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 dengan kata lain, Nick mengambil gambar asli, 1143 00:57:18,280 --> 00:57:21,500 dan ia desaturated semua merah dari itu, 1144 00:57:21,500 --> 00:57:23,850 menurunkan jumlah warna merah tinta, jika Anda mau, di dalamnya. 1145 00:57:23,850 --> 00:57:26,060 >> Nilai-nilai biru dan hijau semua hanya berarti, 1146 00:57:26,060 --> 00:57:30,000 nilai acak, alias noise dirancang untuk mengaburkan gambar nyata. 1147 00:57:30,000 --> 00:57:32,250 Jadi apa Nick lakukan adalah dia melunakkan merah dan kemudian 1148 00:57:32,250 --> 00:57:34,380 dia hanya melemparkan acak jumlah biru dan hijau 1149 00:57:34,380 --> 00:57:37,590 di gambar untuk jenis jelas apa sebenarnya masih ada. 1150 00:57:37,590 --> 00:57:41,089 Anda harus membatalkan distorsi untuk mengungkapkan gambar. 1151 00:57:41,089 --> 00:57:44,255 Pertama, mengatur semua nilai-nilai biru dan hijau ke nol untuk mendapatkan mereka keluar dari jalan, 1152 00:57:44,255 --> 00:57:48,700 dan melihat hasilnya. Kemudian kalikan setiap nilai merah oleh 10, 1153 00:57:48,700 --> 00:57:51,720 skala kembali ke sekitar nilai akhir. 1154 00:57:51,720 --> 00:57:53,035 Apa objek terkenal? 1155 00:57:53,035 --> 00:57:57,920 >> Jadi Anda semua memiliki persegi panjang ini di browser Anda sekarang. 1156 00:57:57,920 --> 00:58:00,830 Dan perhatikan bahwa ada beberapa Kode pemula, sehingga untuk berbicara. 1157 00:58:00,830 --> 00:58:04,370 Ini adalah kode JavaScript yang Nick telah ditulis untuk Anda. 1158 00:58:04,370 --> 00:58:07,250 Dan perhatikan bahwa ada garis di tengah yang 1159 00:58:07,250 --> 00:58:10,380 dimulai dengan garis miring slash, itu apa yang umumnya disebut komentar. 1160 00:58:10,380 --> 00:58:14,660 Ini berarti itu adalah ungkapan untuk programmer yang tidak memiliki arti fungsional. 1161 00:58:14,660 --> 00:58:16,520 Itu hanya isyarat visual untuk manusia. 1162 00:58:16,520 --> 00:58:18,670 >> Jadi Anda dapat pergi ke depan dan menghapus hanya garis, 1163 00:58:18,670 --> 00:58:22,214 dan menjadi super hati-hati untuk tidak menghapus atau mengubah apa pun. 1164 00:58:22,214 --> 00:58:25,130 Dan biarkan aku hanya memandu Anda melalui apa kode ini tidak dan saya akan meninggalkannya 1165 00:58:25,130 --> 00:58:28,580 Anda untuk mencari tahu gambar rahasia. 1166 00:58:28,580 --> 00:58:32,226 baris pertama ini di sini bahwa saya baru saja disorot memberi Anda berikut ini. 1167 00:58:32,226 --> 00:58:34,100 Di sisi kiri, Anda memiliki apa yang disebut 1168 00:58:34,100 --> 00:58:39,140 variabel yang Nick memiliki sewenang-wenang, tetapi cukup disebut im untuk gambar. 1169 00:58:39,140 --> 00:58:41,660 Di sisi kanan itu sama tanda, 1170 00:58:41,660 --> 00:58:45,240 dia mengatakan memberi saya baru kutipan, tanda kutip "gambar sederhana". 1171 00:58:45,240 --> 00:58:49,680 >> gambar sederhana, dalam konteks ini adalah apa yang disebut kelas, baik, 1172 00:58:49,680 --> 00:58:53,910 itu jenis seperti class-- sebuah teknis prototype-- tapi benar-benar, 1173 00:58:53,910 --> 00:58:58,000 ini memberikan saya sebuah objek baru, isi yang file, 1174 00:58:58,000 --> 00:58:59,610 besi-puzzle.png. 1175 00:58:59,610 --> 00:59:03,190 Dengan kata lain, Nick telah menciptakan Gagasan ini gambar sederhana 1176 00:59:03,190 --> 00:59:05,920 sehingga kita dapat, pedagogis tujuan, bermain dengan gambar 1177 00:59:05,920 --> 00:59:09,790 dan mengubah merah, hijau, dan biru nilai-nilai. 1178 00:59:09,790 --> 00:59:11,750 >> Dan bagaimana kita melakukan itu? 1179 00:59:11,750 --> 00:59:15,360 Ini sintaks agak samar di sini adalah jenis seperti blok ulangi 1180 00:59:15,360 --> 00:59:19,140 bahwa beberapa dari Anda melihat di Scratch sebelumnya hari ini, di mana Anda dapat mengulangi 10 kali. 1181 00:59:19,140 --> 00:59:22,220 Dalam hal ini, Nick belum hardcoded nomor seperti 10. 1182 00:59:22,220 --> 00:59:28,020 Sebaliknya ia mengatakan, inisialisasi variabel yang disebut x 0, 1183 00:59:28,020 --> 00:59:33,180 memeriksa apakah x kurang dari lebar gambar. 1184 00:59:33,180 --> 00:59:38,160 >> Dan untuk lebih tepat, citra adalah variabel, dot berarti masuk ke dalam itu 1185 00:59:38,160 --> 00:59:40,900 dan lebarnya, dan kemudian paren terbuka, tertutup 1186 00:59:40,900 --> 00:59:43,687 paren hanya cara seorang programmer 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 memberi saya kembali jawaban. 1190 00:59:48,570 --> 00:59:53,610 Dan kemudian x ++ adalah cara mewah mengatakan, setelah Anda melakukan ini sekali, 1191 00:59:53,610 --> 00:59:55,850 increment x oleh 1. 1192 00:59:55,850 --> 00:59:58,760 Dengan kata lain, ini adalah cara programmer 1193 00:59:58,760 --> 01:00:05,760 merangsang loop yang akan iterate atas 1194 01:00:05,760 --> 01:00:10,410 semua kolom dalam sebuah gambar. 1195 01:00:10,410 --> 01:00:14,790 >> Sebuah gambar hanya grid titik, baris dan kolom dari titik. 1196 01:00:14,790 --> 01:00:18,270 Ini adalah cara iterasi lebih dari semua kolom tersebut. 1197 01:00:18,270 --> 01:00:20,770 Dan di dalam, Sementara itu, kita iterasi 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 hanyalah sebuah cara traipsing, hampir seperti mesin ketik sekolah tua, 1200 01:00:29,442 --> 01:00:32,230 untuk hanya pergi selama seluruh gambar iteratif. 1201 01:00:32,230 --> 01:00:36,370 Bahkan itu tidak cukup sepenuhnya jelas, hanya mengambil iman untuk saat ini, 1202 01:00:36,370 --> 01:00:38,880 bahwa tiga baris kode bersama-sama adalah 1203 01:00:38,880 --> 01:00:43,090 akan memungkinkan Anda untuk iteratif melihat pada setiap pixel, setiap titik dalam gambar. 1204 01:00:43,090 --> 01:00:43,790 >> Apa pixel? 1205 01:00:43,790 --> 01:00:46,250 Nah, untuk menjadi jelas, jika kita melihat di asli dan memperbesar, 1206 01:00:46,250 --> 01:00:49,060 jika Anda benar-benar menempatkan mata Anda ke layar komputer, itu 1207 01:00:49,060 --> 01:00:53,510 hanya sejumlah titik, beberapa ribu titik dikemas bersama-sama ada. 1208 01:00:53,510 --> 01:00:56,180 Dan jadi apa yang Anda akan lakukan? 1209 01:00:56,180 --> 01:00:59,240 Masing-masing dari titik-titik, definisi akhir, 1210 01:00:59,240 --> 01:01:06,350 adalah hasil dari apa yang umumnya disebut RGB, merah, hijau, biru, yang 1211 01:01:06,350 --> 01:01:09,940 lagi, dapat dikombinasikan untuk memberikan sejumlah warna. 1212 01:01:09,940 --> 01:01:13,200 >> Bahkan, jika Anda ingat dari bertahun-tahun yang lalu, 1213 01:01:13,200 --> 01:01:17,320 proyektor layar seperti hal-hal ini digunakan untuk memiliki tidak satu lensa tapi tiga. 1214 01:01:17,320 --> 01:01:20,700 Salah satu dari mereka memuntahkan lampu merah, salah satu mereka meludahkan lampu hijau, salah satu dari mereka 1215 01:01:20,700 --> 01:01:21,600 memuntahkan cahaya biru. 1216 01:01:21,600 --> 01:01:24,391 Dan jika Anda berada di sebuah sekolah menengah seperti aku di mana mereka tidak pernah 1217 01:01:24,391 --> 01:01:27,000 benar sejajar, Anda selalu menonton film sejarah 1218 01:01:27,000 --> 01:01:29,770 yang sedikit menyimpang, karena tiga warna tidak 1219 01:01:29,770 --> 01:01:30,970 menggabungkan benar. 1220 01:01:30,970 --> 01:01:36,330 >> Tapi ternyata bahwa setiap nilai-nilai ini merah, hijau, dan biru, 1221 01:01:36,330 --> 01:01:37,980 dapat memiliki nomor yang terkait dengan mereka. 1222 01:01:37,980 --> 01:01:42,500 Misalnya, 0 untuk merah berarti tidak ada merah, 0 untuk hijau berarti tidak ada hijau, 1223 01:01:42,500 --> 01:01:45,120 dan 0 untuk biru berarti tidak ada biru. 1224 01:01:45,120 --> 01:01:49,403 Jadi jika Anda tidak memiliki merah, ada hijau, dan tidak ada biru, warna apa yang Anda miliki? 1225 01:01:49,403 --> 01:01:51,009 >> AUDIENCE: [tidak terdengar] 1226 01:01:51,009 --> 01:01:52,800 DAVID Malan: Anda akan harap begitu, itu putih. 1227 01:01:52,800 --> 01:01:55,333 Sayangnya, ini operates-- maaf? 1228 01:01:55,333 --> 01:01:56,380 >> AUDIENCE: [tidak terdengar] 1229 01:01:56,380 --> 01:01:58,630 DAVID Malan: Jadi Anda benar-benar memiliki hitam, dalam hal ini. 1230 01:01:58,630 --> 01:02:01,530 Jadi jika Anda memiliki satu pun dari ini warna dihidupkan, Anda memiliki hitam. 1231 01:02:01,530 --> 01:02:06,510 Namun, jika Anda memiliki, katakanlah banyak dari mereka, seperti banyak merah, 255 itu, 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 ekstrem. 1234 01:02:12,230 --> 01:02:17,460 Jadi dengan logika ini, jika saya memiliki banyak merah dan tidak ada hijau dan tidak ada biru, 1235 01:02:17,460 --> 01:02:18,485 warna apa itu? 1236 01:02:18,485 --> 01:02:19,360 AUDIENCE: [tidak terdengar] 1237 01:02:19,360 --> 01:02:20,610 DAVID Malan: Benar, jelas. 1238 01:02:20,610 --> 01:02:25,940 Dan kemudian ada merah, banyak hijau, ada biru, dan kemudian 1239 01:02:25,940 --> 01:02:29,590 jika Anda have-- baik, kita hanya akan menyelesaikan itu, hanya karena, tapi ini, tentu saja, 1240 01:02:29,590 --> 01:02:31,350 sekarang, biru. 1241 01:02:31,350 --> 01:02:33,030 Dan sekarang Anda dapat menggabungkan warna-warna ini. 1242 01:02:33,030 --> 01:02:36,430 Sekarang sebagai samping, jika salah satu dari Anda memiliki pernah dilakukan beberapa desain website yang sebenarnya, 1243 01:02:36,430 --> 01:02:38,360 Anda mungkin benar-benar melihat simbol seperti ini. 1244 01:02:38,360 --> 01:02:42,030 FFF-- dan benar-benar, itu bahkan mungkin yang tidak. 1245 01:02:42,030 --> 01:02:44,380 Ini FFFFFF. 1246 01:02:44,380 --> 01:02:48,970 >> Ada yang pernah melihat F dan E dan A through-- sehingga ternyata, 1247 01:02:48,970 --> 01:02:52,970 kita berbicara kemarin tentang desimal, dan hari ini, jenis sekitar desimal. 1248 01:02:52,970 --> 01:02:54,570 Hari ini kita berbicara tentang biner. 1249 01:02:54,570 --> 01:02:59,010 Ternyata, heksadesimal adalah sangat sistem dasar umum untuk digunakan dalam komputasi. 1250 01:02:59,010 --> 01:03:04,960 Biner adalah dua, desimal adalah 10, hex adalah 16. 1251 01:03:04,960 --> 01:03:08,640 Dan ternyata, bagaimana Anda menghitung dalam heksadesimal? 1252 01:03:08,640 --> 01:03:11,620 Nol, satu, dua, tiga, empat, lima, enam, tujuh, delapan, 1253 01:03:11,620 --> 01:03:14,730 sembilan, apa yang Anda gunakan setelah sembilan? 1254 01:03:14,730 --> 01:03:16,600 Apa nomor berikutnya? 1255 01:03:16,600 --> 01:03:19,180 Kami sudah digunakan nol. 1256 01:03:19,180 --> 01:03:20,570 Aku butuh 16 ini. 1257 01:03:20,570 --> 01:03:25,770 Nol, satu, dua, tiga, empat, lima, enam, tujuh, delapan, sembilan, 1258 01:03:25,770 --> 01:03:27,520 Anda perlu beberapa konvensi sewenang-wenang. 1259 01:03:27,520 --> 01:03:30,810 >> Dan apa yang manusia memutuskan beberapa waktu lalu bahwa setelah sembilan datang surat 1260 01:03:30,810 --> 01:03:34,450 A dan kemudian B dan kemudian C. Jadi cara Anda menghitung dalam heksadesimal 1261 01:03:34,450 --> 01:03:37,040 adalah nol, satu, dua, tiga, empat, lima, enam, tujuh, delapan, sembilan, 1262 01:03:37,040 --> 01:03:42,880 A, B, C, D, E, F, dan yang akan menghitung Anda semua jalan, ternyata, sampai 15. 1263 01:03:42,880 --> 01:03:47,850 Jadi nol sampai 15 adalah nol melalui F. Sekarang kenapa begitu signifikan? 1264 01:03:47,850 --> 01:03:51,570 Nah, bila Anda memiliki dua F, itulah bagaimana Anda mengekspresikan 255. 1265 01:03:51,570 --> 01:03:54,350 >> Begitu lama cerita pendek, di dunia Photoshop, 1266 01:03:54,350 --> 01:03:57,299 bahwa perangkat lunak desain grafis, di dunia pengembangan web, 1267 01:03:57,299 --> 01:03:59,590 di mana Anda memiliki banyak warna, tentu saja, untuk bermain dengan, 1268 01:03:59,590 --> 01:04:02,350 sering programmer akan mengungkapkan mereka dalam heksadesimal, 1269 01:04:02,350 --> 01:04:05,260 hanya karena cenderung untuk menjadi sedikit lebih sederhana. 1270 01:04:05,260 --> 01:04:07,850 Meskipun pada pandangan pertama itu jauh lebih kompleks. 1271 01:04:07,850 --> 01:04:11,590 >> Jadi dalam hal apapun, ini penting karena Nick di Stanford 1272 01:04:11,590 --> 01:04:15,100 telah memberi kita enam buah fungsi Anda, programmer pemula, 1273 01:04:15,100 --> 01:04:17,060 sekarang akan memiliki kemampuan untuk menggunakan. 1274 01:04:17,060 --> 01:04:19,960 Dibangun ke web ini Halaman ini 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 dari mereka akan mendapatkan nomor, merah, hijau, atau nilai biru. 1277 01:04:26,800 --> 01:04:28,787 Tiga dari mereka akan menetapkan nilai tersebut. 1278 01:04:28,787 --> 01:04:30,620 Dan garis bawah ini hanya placeholder, 1279 01:04:30,620 --> 01:04:32,600 sehingga Anda perlu tahu apa yang berada. 1280 01:04:32,600 --> 01:04:36,240 >> Jadi dengan tiga fungsi tersebut, yang pertama dari hal-hal ini 1281 01:04:36,240 --> 01:04:39,190 akan menjadi x-koordinat, dan kedua hal ini 1282 01:04:39,190 --> 01:04:40,700 akan menjadi y-koordinat. 1283 01:04:40,700 --> 01:04:44,650 Dengan kata lain, yang titik, yang pixel Anda ingin 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 nomor. 1287 01:04:55,379 --> 01:04:57,170 Jadi mari kita lakukan pertama garis ini bersama-sama 1288 01:04:57,170 --> 01:05:00,220 dan kemudian aku akan pergi kepada Anda mencoba untuk menyimpulkan sisanya. 1289 01:05:00,220 --> 01:05:03,100 Jadi sesuai petunjuk di halaman ini, kita perlu 1290 01:05:03,100 --> 01:05:08,960 untuk meningkatkan merah dengan faktor 10, dan kita perlu menghapus hijau 1291 01:05:08,960 --> 01:05:09,930 dan menghapus biru. 1292 01:05:09,930 --> 01:05:12,410 Mari kita mulai dengan skenario kedua. 1293 01:05:12,410 --> 01:05:17,760 Jadi jika saya ingin, dan aku akan indent dengan menggunakan beberapa ruang, 1294 01:05:17,760 --> 01:05:22,291 jika saya ingin mengatur merah, hijau, atau nilai biru, 1295 01:05:22,291 --> 01:05:23,540 Aku akan melakukan hal berikut. 1296 01:05:23,540 --> 01:05:31,280 >> Gambar, im.setBlue, dan kemudian berdasarkan instruksi saya di sini, 1297 01:05:31,280 --> 01:05:36,700 apa tiga hal yang harus saya ketik dalam kurung sekarang? 1298 01:05:36,700 --> 01:05:41,960 Aku butuh x nilai, y nilai, dan apa jumlah 1299 01:05:41,960 --> 01:05:48,770 yang harus saya masukkan di sini jika saya ingin menyingkirkan dari biru, berdasarkan cerita ini di sini? 1300 01:05:48,770 --> 01:05:49,630 Hanya nol. 1301 01:05:49,630 --> 01:05:52,420 Jika saya ingin tidak ada biru, aku hanya akan mengubahnya ke nol. 1302 01:05:52,420 --> 01:05:54,465 >> Sekarang mari kita rekap apa ini lakukan. 1303 01:05:54,465 --> 01:05:56,970 1304 01:05:56,970 --> 01:06:01,170 Saya telah di sini di atas ini baris kedua dan ketiga, 1305 01:06:01,170 --> 01:06:04,080 Saya mengaku dua loop, loop bersarang, jika Anda 1306 01:06:04,080 --> 01:06:08,360 akan, yang akan memiliki efek maju dari kiri ke kanan, 1307 01:06:08,360 --> 01:06:11,590 atas ke bawah selama semua x nilai-nilai dan semua nilai-nilai y. 1308 01:06:11,590 --> 01:06:15,167 Karena sekali lagi, sebuah gambar hanya grid baris dan kolom. 1309 01:06:15,167 --> 01:06:17,000 Jadi ini akan mendapatkan menyingkirkan semua biru. 1310 01:06:17,000 --> 01:06:18,627 Biarkan aku meninggalkan di baris berikutnya untuk Anda. 1311 01:06:18,627 --> 01:06:20,043 Bagaimana cara menyingkirkan semua hijau? 1312 01:06:20,043 --> 01:06:23,747 1313 01:06:23,747 --> 01:06:25,140 >> AUDIENCE: [tidak terdengar] 1314 01:06:25,140 --> 01:06:26,151 >> DAVID Malan: Nice. 1315 01:06:26,151 --> 01:06:28,260 >> AUDIENCE: [tidak terdengar] 1316 01:06:28,260 --> 01:06:30,850 >> DAVID Malan: Nice. 1317 01:06:30,850 --> 01:06:36,120 Dan aku akan tampilannya keluar, dan hanya mengambil peduli itu Anda tidak melakukan kesalahan ketik. 1318 01:06:36,120 --> 01:06:39,390 Dan jika Anda merasa nyaman dengan apa yang telah Anda lakukan, 1319 01:06:39,390 --> 01:06:42,936 pergi ke depan dan klik tombol Jalankan / Simpan dan lihat apa yang Anda dapatkan. 1320 01:06:42,936 --> 01:06:46,982 1321 01:06:46,982 --> 01:06:48,690 Dan lagi, kami telah membuat hanya tiga perubahan. 1322 01:06:48,690 --> 01:06:52,130 Kami dihapus yang pertama komentar dan menggantinya 1323 01:06:52,130 --> 01:06:53,575 dengan dua baris kode. 1324 01:06:53,575 --> 01:06:55,742 1325 01:06:55,742 --> 01:06:58,450 Dan itu OK jika Anda perlu menekan Run / tombol Save beberapa kali 1326 01:06:58,450 --> 01:07:01,190 untuk memperbaiki sesuatu. 1327 01:07:01,190 --> 01:07:03,610 >> Dan saya juga memperbesar saya kode sehingga Anda dapat menuliskan. 1328 01:07:03,610 --> 01:07:04,110 Baik. 1329 01:07:04,110 --> 01:07:08,720 Jadi saya melihat Andrew memiliki apa tampaknya menjadi kesalahan. 1330 01:07:08,720 --> 01:07:11,110 Dia hanya punya hitam besar persegi panjang di layar nya. 1331 01:07:11,110 --> 01:07:13,120 Apakah orang lain memiliki persegi panjang hitam besar? 1332 01:07:13,120 --> 01:07:13,390 >> AUDIENCE: Ya. 1333 01:07:13,390 --> 01:07:14,360 >> DAVID Malan: Big persegi panjang hitam? 1334 01:07:14,360 --> 01:07:16,068 OK, jadi mari kita berpikir tentang apa artinya ini. 1335 01:07:16,068 --> 01:07:20,560 Kami mengatakan bahwa nol, nol, nol, sehingga tidak ada hijau, ada merah, ada 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 sebagian besar laptop kami 1338 01:07:24,467 --> 01:07:25,800 hanya tidak memiliki cukup kesetiaan. 1339 01:07:25,800 --> 01:07:27,750 Anda tidak bisa mengatakan ada sebenarnya sesuatu di sana. 1340 01:07:27,750 --> 01:07:30,340 Dan jika Anda jenis mungkin bersandar layar depan dan belakang, 1341 01:07:30,340 --> 01:07:32,850 mungkin Anda melihat 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 Ini tidak sempurna hitam. 1344 01:07:36,640 --> 01:07:38,050 >> AUDIENCE: [tidak terdengar] 1345 01:07:38,050 --> 01:07:39,510 >> DAVID Malan: Spoiler! 1346 01:07:39,510 --> 01:07:42,610 Ada beberapa merah di sana, tapi ingat dari spesifikasi 1347 01:07:42,610 --> 01:07:44,940 masalah, Nick kencang ke bawah. 1348 01:07:44,940 --> 01:07:47,860 Dia desaturated agak, tapi tidak semua jalan ke nol. 1349 01:07:47,860 --> 01:07:51,670 Jadi jika kita ingin memperbesar jumlah merah, biarkan aku mengusulkan trik ini. 1350 01:07:51,670 --> 01:07:53,750 Biarkan aku memperbesar layar saya. 1351 01:07:53,750 --> 01:07:58,678 Dan biarkan aku pergi ke depan dan mengatakan Jumlah sama im.getRed (x, y). 1352 01:07:58,678 --> 01:08:02,440 1353 01:08:02,440 --> 01:08:05,790 >> baris kode ini memberikan saya sesuatu yang disebut variabel. 1354 01:08:05,790 --> 01:08:09,643 Saya memiliki sewenang-wenang, tapi, bisa dibilang, cukup disebut variabel saya apa, 1355 01:08:09,643 --> 01:08:10,143 tampaknya? 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 hanya. 1359 01:08:14,980 --> 01:08:16,960 Aku bisa menyebutnya apapun yang saya inginkan, tapi aku 1360 01:08:16,960 --> 01:08:19,490 menggunakan fungsi lain ini yang saya jelaskan sebelumnya 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 Mengapa saya melakukan itu? 1363 01:08:27,520 --> 01:08:30,004 Apa yang Anda ingin 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 AUDIENCE: [tidak terdengar] 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, aku akan pergi ke depan dan melakukan hal ini. 1369 01:08:38,862 --> 01:08:42,060 Aku akan pergi ke depan dan katakanlah, saya ingin jumlah warna merah 1370 01:08:42,060 --> 01:08:46,550 Saya ingin menjadi apa pun adalah pada merah, kali 10, 1371 01:08:46,550 --> 01:08:50,330 dan bintang, tanda bintang pada Anda keyboard the-- tidak menggunakan x. 1372 01:08:50,330 --> 01:08:51,569 Gunakan bintang. 1373 01:08:51,569 --> 01:08:55,350 Itulah cara Anda kalikan hal dalam bahasa pemrograman yang paling. 1374 01:08:55,350 --> 01:08:59,790 >> Jadi menurut intuisi Kareem, disimpan dalam variabel ini disebut jumlah, 1375 01:08:59,790 --> 01:09:03,649 adalah berapa banyak merah saya ingin di lokasi xy. 1376 01:09:03,649 --> 01:09:11,500 Bagaimana, sekarang, apakah saya membuat Pixel memiliki nomor itu? 1377 01:09:11,500 --> 01:09:12,859 Anda sudah melakukan hal ini sebelumnya. 1378 01:09:12,859 --> 01:09:17,666 Anda mengatur hijau dan biru untuk tidak ada nilai, ke nol. 1379 01:09:17,666 --> 01:09:18,540 AUDIENCE: [tidak terdengar] 1380 01:09:18,540 --> 01:09:20,040 DAVID Malan: Ya, baik Anda tidak ingin 10. 1381 01:09:20,040 --> 01:09:21,460 Anda sudah melakukan matematika di sini. 1382 01:09:21,460 --> 01:09:24,779 Jadi kita mendapatkan nilai merah, yang merupakan angka yang rendah, mungkin. 1383 01:09:24,779 --> 01:09:26,180 Kami mengalikan oleh 10. 1384 01:09:26,180 --> 01:09:29,139 Apa yang ingin Anda lakukan dengan jumlah variabel sekarang? 1385 01:09:29,139 --> 01:09:30,130 >> AUDIENCE: [tidak terdengar] 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 >> AUDIENCE: 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 Ya. 1391 01:09:40,260 --> 01:09:41,200 Dan hanya jumlah. 1392 01:09:41,200 --> 01:09:44,257 Dengan kata lain, variabel merupakan tempat sementara 1393 01:09:44,257 --> 01:09:45,840 Anda dapat menempatkan apa pun yang Anda inginkan dalam. 1394 01:09:45,840 --> 01:09:48,680 Kami kebetulan menempatkan nomor di dalamnya, pada saat ini. 1395 01:09:48,680 --> 01:09:51,569 Kami telah dikalikan dengan 10 untuk membuatnya lebih besar. 1396 01:09:51,569 --> 01:09:56,480 Dan sekarang aku mengganti variabel yang sebagai argumen ketiga, atau masukan 1397 01:09:56,480 --> 01:09:57,810 untuk mengatur merah. 1398 01:09:57,810 --> 01:10:00,440 Dan sehingga setelah Anda menyelesaikan itu, dan perhatikan 1399 01:10:00,440 --> 01:10:02,330 dari semi-titik dua dan tanda kurung. 1400 01:10:02,330 --> 01:10:06,290 >> Cobalah dan klik menjalankan / simpan lagi, dan Anda 1401 01:10:06,290 --> 01:10:10,690 harus melihat, ajaib, apa yang benar-benar sana. [? Arwa,?] Apa yang ada? 1402 01:10:10,690 --> 01:10:16,412 Menara Eiffel di penuh merah, tidak cukup gelap. 1403 01:10:16,412 --> 01:10:17,870 harus lebih jelas sekarang, ya? 1404 01:10:17,870 --> 01:10:18,840 BAIK. 1405 01:10:18,840 --> 01:10:20,215 Dan Andrew, kotak tidak lebih hitam? 1406 01:10:20,215 --> 01:10:21,090 AUDIENCE: [tidak terdengar] 1407 01:10:21,090 --> 01:10:22,180 DAVID Malan: Baiklah. 1408 01:10:22,180 --> 01:10:23,610 Jadi saya akan terus ini di layar. 1409 01:10:23,610 --> 01:10:27,010 Jika Anda ingin bermain dengan ini kemudian, saya akan menciptakan ini untuk Anda. 1410 01:10:27,010 --> 01:10:29,140 Tapi kode ini di sini melakukan hal itu. 1411 01:10:29,140 --> 01:10:31,460 Mengapa kita tidak melakukan satu lainnya. 1412 01:10:31,460 --> 01:10:33,880 Mari saya gulir ke bawah sedikit. 1413 01:10:33,880 --> 01:10:36,760 >> Jadi dalam hal ini, proyektor tidak benar-benar melakukannya keadilan. 1414 01:10:36,760 --> 01:10:40,486 Tapi pada layar Anda, Anda mungkin memiliki kotak sangat merah dan sangat hitam. 1415 01:10:40,486 --> 01:10:42,610 Ini, juga, adalah sebuah teka-teki yang menunjukkan sesuatu yang terkenal. 1416 01:10:42,610 --> 01:10:44,193 Namun, gambar telah terdistorsi. 1417 01:10:44,193 --> 01:10:47,740 Gambar benar, kali ini, adalah dalam nilai-nilai biru dan hijau. 1418 01:10:47,740 --> 01:10:51,820 Namun, mereka semua sudah dibagi 20 sehingga nilai-nilai yang sangat kecil. 1419 01:10:51,820 --> 01:10:54,660 Nilai-nilai merah hanya nomor acak, kebisingan. 1420 01:10:54,660 --> 01:10:57,190 Urungkan distorsi untuk mengungkapkan gambar yang benar. 1421 01:10:57,190 --> 01:10:59,200 >> Jadi Nick kemudian memberitahu Anda apa yang harus dilakukan. 1422 01:10:59,200 --> 01:11:04,290 Menetapkan nilai-nilai merah ke nol, dan maka jangan merusak apa itu. 1423 01:11:04,290 --> 01:11:07,110 Kemudian kalikan biru dan nilai-nilai hijau sebesar 20. 1424 01:11:07,110 --> 01:11:09,820 Sehingga hampir program yang sama seperti sebelumnya, 1425 01:11:09,820 --> 01:11:11,380 tapi kau membalikkan proses. 1426 01:11:11,380 --> 01:11:13,780 Dan Aku akan menaruh kode saya dari sebelum pada layar dalam kasus 1427 01:11:13,780 --> 01:11:16,650 Anda ingin merujuk kembali ke sana atau bermain lebih lanjut dengan yang satu. 1428 01:11:16,650 --> 01:11:18,100 Biarkan aku memperbesar itu. 1429 01:11:18,100 --> 01:11:21,450 Tapi memecahkan gambar tembaga puzzle, nomor dua. 1430 01:11:21,450 --> 01:11:37,623 1431 01:11:37,623 --> 01:11:40,580 >> AUDIENCE: [tidak terdengar] 1432 01:11:40,580 --> 01:11:44,010 >> DAVID Malan: OK, jadi ini salah satu aku tidak akan memberikan banyak petunjuk. 1433 01:11:44,010 --> 01:11:47,220 Jadi saya would-- oh, mari kita lihat, Anda memiliki kesalahan ketik di sini. 1434 01:11:47,220 --> 01:11:49,621 Jadi ingat, ini di sini sebenarnya perlu untuk pergi ke sana. 1435 01:11:49,621 --> 01:11:52,870 Jadi apa yang saya akan mengusulkan, jika Anda ingin fokus pada satu ini, ada jawabannya. 1436 01:11:52,870 --> 01:11:57,060 Jika Anda ingin menuliskan bahwa, bahwa harus mendapatkan satu kerja pertama. 1437 01:11:57,060 --> 01:11:59,910 Dan kemudian Anda dapat menggunakannya sebagai inspirasi untuk yang kedua. 1438 01:11:59,910 --> 01:12:02,230 Bagus. 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 penasaran, ini adalah contoh sederhana 1442 01:12:08,180 --> 01:12:11,080 dari ilmu atau seni disebut steganografi, 1443 01:12:11,080 --> 01:12:14,100 seni menyembunyikan informasi dalam gambar. 1444 01:12:14,100 --> 01:12:16,890 Biasanya, gambar mungkin watermark yang sangat terang-terangan 1445 01:12:16,890 --> 01:12:19,500 dengan logo di bagian bawah sudut, tapi jelas, Anda 1446 01:12:19,500 --> 01:12:22,070 bisa jauh lebih canggih tentang hal itu dan benar-benar 1447 01:12:22,070 --> 01:12:25,050 menyembunyikan gambar lain di Images entah bagaimana dengan teknik ini. 1448 01:12:25,050 --> 01:12:59,890 1449 01:12:59,890 --> 01:13:05,770 >> Ambil 30 detik, dan kemudian kami akan setidaknya mengumumkan apa yang harus Anda lihat. 1450 01:13:05,770 --> 01:13:08,330 Dan aku akan meninggalkan ketiga satu sebagai latihan di rumah, 1451 01:13:08,330 --> 01:13:11,353 jika Anda ingin lebih dari menantang akhir pekan ini. 1452 01:13:11,353 --> 01:13:18,240 1453 01:13:18,240 --> 01:13:20,390 Dan saya pikir Andrew mungkin mendapatkan itu pertama. 1454 01:13:20,390 --> 01:13:22,645 Apa gambar kedua, Andrew? 1455 01:13:22,645 --> 01:13:23,920 >> AUDIENCE: Patung Liberty. 1456 01:13:23,920 --> 01:13:28,500 >> DAVID Malan: Patung Liberty akan menjadi jawaban kali ini. 1457 01:13:28,500 --> 01:13:31,140 Jadi sekali lagi, hanya beberapa sederhana contoh, tujuan yang 1458 01:13:31,140 --> 01:13:35,040 adalah untuk memberikan rasa bagaimana kami telah diterjemahkan Scratch bergambar 1459 01:13:35,040 --> 01:13:40,410 blok untuk lebih menjengkelkan dan lebih kode rumit, tetapi semua ide 1460 01:13:40,410 --> 01:13:42,980 masih persis sama, meskipun dengan pendahuluan 1461 01:13:42,980 --> 01:13:48,380 sekarang dari gagasan variabel, menjadi mampu menyimpan sesuatu sementara. 1462 01:13:48,380 --> 01:13:51,750 >> Mari kita lakukan satu lagi tangan-on, hanya untuk sekarang menghubungkan titik-titik 1463 01:13:51,750 --> 01:13:53,880 untuk sesuatu yang sedikit lebih dunia nyata. 1464 01:13:53,880 --> 01:13:56,610 Ketika Anda siap, jika Anda bisa pergi ke URL ini di layar. 1465 01:13:56,610 --> 01:14:00,610 Itu juga dalam copy dari slide, developers.google.com/maps~~V. 1466 01:14:00,610 --> 01:14:03,660 Mari kita benar-benar melakukan sesuatu nyata, sehingga untuk berbicara, di web 1467 01:14:03,660 --> 01:14:07,600 menggunakan Google Maps API, atau antarmuka pemrograman aplikasi, 1468 01:14:07,600 --> 01:14:08,940 dengan cara sebagai berikut. 1469 01:14:08,940 --> 01:14:12,341 >> Google, seperti banyak perusahaan, menyediakan banyak fungsi gratis 1470 01:14:12,341 --> 01:14:14,840 yang dapat Anda gunakan untuk membangun aplikasi menarik sendiri. 1471 01:14:14,840 --> 01:14:18,890 Bahkan, jika Anda pernah menggunakan Uber untuk mendapatkan taksi atau mobil, 1472 01:14:18,890 --> 01:14:21,640 Anda mungkin tahu bahwa Uber memiliki sebuah peta dan itu menunjukkan mobil di atasnya. 1473 01:14:21,640 --> 01:14:24,870 Artinya, sebaik yang saya bisa memberitahu, Google Maps API. 1474 01:14:24,870 --> 01:14:28,884 Mereka benar-benar menggunakan peta Google, tapi Uber bukan perusahaan pemetaan, 1475 01:14:28,884 --> 01:14:31,050 atau akan itu menjadi masalah sangat menarik 1476 01:14:31,050 --> 01:14:33,510 untuk memecahkan di atas mereka masalah layanan mobil. 1477 01:14:33,510 --> 01:14:35,510 Dan jadi mereka berdiri, lagi, di bahu 1478 01:14:35,510 --> 01:14:37,520 orang lain, Google dalam hal ini. 1479 01:14:37,520 --> 01:14:42,850 Jadi mereka menggunakan peta Google, tetapi mereka sendiri layanan mobil dan fitur seperti lainnya. 1480 01:14:42,850 --> 01:14:47,770 >> Jadi kita akan memanfaatkan ini melakukan hal berikut. 1481 01:14:47,770 --> 01:14:50,230 Dan jika saya sudah terlalu cepat, panggil aku lebih dalam sekejap. 1482 01:14:50,230 --> 01:14:53,500 Senang untuk rekap beberapa hal gambar. 1483 01:14:53,500 --> 01:14:56,290 Anda harus melihat diri Anda di halaman seperti ini. 1484 01:14:56,290 --> 01:14:58,230 Begitu baik Google, dan mereka di antara yang terbaik 1485 01:14:58,230 --> 01:15:01,364 menyediakan tidak hanya API, tapi API gratis yang Anda 1486 01:15:01,364 --> 01:15:02,780 bisa bermain dengan atau menggunakan secara komersial. 1487 01:15:02,780 --> 01:15:06,450 Mereka mulai pengisian Anda jika penggunaan Anda tinggi, tapi aku pergi ke depan di muka 1488 01:15:06,450 --> 01:15:10,490 dan mendaftar kami untuk mendapatkan akun gratis itu, mudah-mudahan, 10 komputer 1489 01:15:10,490 --> 01:15:12,480 tidak akan mendiskualifikasi kami untuk tiba-tiba. 1490 01:15:12,480 --> 01:15:14,320 Jadi mudah-mudahan ini Demonstrasi akan bekerja. 1491 01:15:14,320 --> 01:15:18,840 >> Dan melihat bahwa mereka memiliki API untuk Android, iOS, layanan web, dan web, 1492 01:15:18,840 --> 01:15:19,620 apa pun itu. 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 muda, web, dan bahwa akan membawa Anda, mudah-mudahan, ke halaman 1495 01:15:26,560 --> 01:15:27,630 sini. 1496 01:15:27,630 --> 01:15:29,335 Dan mereka punya sejumlah API. 1497 01:15:29,335 --> 01:15:31,210 Dan itu bisa menjadi sedikit luar biasa pada awalnya, 1498 01:15:31,210 --> 01:15:33,000 tapi saya akan mengarahkan kita melalui apa yang kita inginkan. 1499 01:15:33,000 --> 01:15:38,500 >> Di kiri atas adalah Google Maps JavaScript API, API JavaScript. 1500 01:15:38,500 --> 01:15:40,380 Jadi silakan klik satu itu. 1501 01:15:40,380 --> 01:15:49,360 Dan yang akan membawa Anda sekarang ke berikut halaman, demo dan contoh kode. 1502 01:15:49,360 --> 01:15:51,190 Biarkan aku tampilannya sini. 1503 01:15:51,190 --> 01:15:56,300 Dan biarkan aku mendapatkan kita to-- gulir ke bawah untuk mana dikatakan mulai cepat langkah. 1504 01:15:56,300 --> 01:15:57,970 layar Anda akan terlihat seperti tambang. 1505 01:15:57,970 --> 01:16:01,130 >> Dan ada dua langkah, dapatkan kunci dan mulai berkembang. 1506 01:16:01,130 --> 01:16:04,190 Saya sudah melakukan langkah satu untuk kami, mendapatkan apa yang disebut kunci. 1507 01:16:04,190 --> 01:16:05,320 Dan ini adalah ide umum. 1508 01:16:05,320 --> 01:16:09,210 Kunci API umumnya hanya nomor acak besar atau tali 1509 01:16:09,210 --> 01:16:11,130 Anda seharusnya untuk paste ke kode Anda, 1510 01:16:11,130 --> 01:16:15,280 sehingga Google tahu siapa Anda ketika Anda menggunakan layanan mereka, API mereka. 1511 01:16:15,280 --> 01:16:17,370 Tidak berarti kami yang dikenakan biaya apa pun. 1512 01:16:17,370 --> 01:16:21,030 Dan sekarang, klik, bukannya satu, klik mulai berkembang. 1513 01:16:21,030 --> 01:16:25,990 Jika Anda hanya bisa melambaikan saya lebih jika tidak yakin di mana kita berada. 1514 01:16:25,990 --> 01:16:28,040 >> Jadi kami hanya akan menggores permukaan, di sini tapi apa 1515 01:16:28,040 --> 01:16:31,000 Saya pikir akan menarik adalah untuk benar-benar memiliki kita semua, 1516 01:16:31,000 --> 01:16:34,240 menggunakan Cloud9 dalam satu jendela dan tutorial ini di jendela lain, 1517 01:16:34,240 --> 01:16:37,120 memungkinkan benar-benar mendapatkan kita sendiri aplikasi dan berjalan 1518 01:16:37,120 --> 01:16:40,920 yang embeds kustom Google peta di halaman web kita sendiri, 1519 01:16:40,920 --> 01:16:43,010 dan kemudian menambahkan satu atau dua fitur. 1520 01:16:43,010 --> 01:16:45,520 Tapi kita hanya akan menggores permukaan apa yang bisa kita lakukan. 1521 01:16:45,520 --> 01:16:47,020 >> Jadi hanya sebuah pemeriksaan cepat. 1522 01:16:47,020 --> 01:16:49,740 Apakah semua orang di halaman ini, API Google Maps JavaScript? 1523 01:16:49,740 --> 01:16:50,872 Harus mengatakan memulai. 1524 01:16:50,872 --> 01:16:53,330 Kami tidak akan pergi melalui semuanya dengan cara apapun. 1525 01:16:53,330 --> 01:16:58,090 OK, di tab lain, jika Anda tidak memilikinya terbuka, jangan masuk ke Cloud9 1526 01:16:58,090 --> 01:17:03,500 dan mendapatkan diri Anda hanya tab baru, pada akhirnya. 1527 01:17:03,500 --> 01:17:11,070 Jadi sekali lagi, c9.io dari kemarin, c9.io, dan hanya membuat file baru. 1528 01:17:11,070 --> 01:17:13,500 Dan pergi ke depan dan panggilan itu apa pun yang Anda inginkan. 1529 01:17:13,500 --> 01:17:16,495 Aku menelepon map.html tambang. 1530 01:17:16,495 --> 01:17:17,870 Sebut saja apa pun berakhir di html. 1531 01:17:17,870 --> 01:17:23,930 1532 01:17:23,930 --> 01:17:26,580 Dan Anda harus kasar keberadaan saya dalam proses ini 1533 01:17:26,580 --> 01:17:31,470 hanya dengan cepat berkedip dalam kosong tab disebut sesuatu seperti map.html. 1534 01:17:31,470 --> 01:17:35,808 1535 01:17:35,808 --> 01:17:38,148 Atau file, file baru kali ini. 1536 01:17:38,148 --> 01:17:41,960 1537 01:17:41,960 --> 01:17:48,000 >> Dan sekarang, lebih dari API Google Maps JavaScript, 1538 01:17:48,000 --> 01:17:50,010 kita akan melompat membaca melalui semua teks ini. 1539 01:17:50,010 --> 01:17:53,760 Tetapi perhatikan bahwa dunia halo adalah memang di mana-mana, Anda melihatnya sekarang. 1540 01:17:53,760 --> 01:17:58,020 Halo dunia memiliki ini besar warna-warni contoh dari sejumlah besar HTML. 1541 01:17:58,020 --> 01:18:03,590 Pergi ke depan dan copy dan paste itu saja HTML, sehingga dari jenis doc di atas 1542 01:18:03,590 --> 01:18:08,810 semua cara untuk tag HTML dekat, pergi depan dan menyalin semua itu-- lagi, 1543 01:18:08,810 --> 01:18:14,430 itu di bawah dunia halo misalnya-- dan paste ke tab Cloud9 Anda, 1544 01:18:14,430 --> 01:18:17,996 sehingga sekarang layar Anda harus melihat kira-kira seperti saya. 1545 01:18:17,996 --> 01:18:22,280 1546 01:18:22,280 --> 01:18:24,520 >> Dan Anda bisa menyimpannya, tapi tidak memuatnya dulu. 1547 01:18:24,520 --> 01:18:26,290 Mari kita pertama melihat kode dan melihat apakah kita 1548 01:18:26,290 --> 01:18:29,110 tidak dapat menyimpulkan atau belajar dari apa itu Google 1549 01:18:29,110 --> 01:18:30,860 telah kita membabi buta copy dan paste. 1550 01:18:30,860 --> 01:18:33,334 Mereka hanya ingin membantu, harfiah, mendapatkan kita mulai, 1551 01:18:33,334 --> 01:18:35,500 tapi ada tidak banyak kompleksitas sebenarnya ada. 1552 01:18:35,500 --> 01:18:40,100 1553 01:18:40,100 --> 01:18:42,210 Pertanyaan dulu? 1554 01:18:42,210 --> 01:18:43,790 Kita aman untuk maju? 1555 01:18:43,790 --> 01:18:44,330 BAIK. 1556 01:18:44,330 --> 01:18:46,800 >> Begitu cepat, mari kita lakukan beberapa kewarasan cek cepat. 1557 01:18:46,800 --> 01:18:48,800 Satu baris dari apa yang saya melihat, dan mudah-mudahan, Anda 1558 01:18:48,800 --> 01:18:51,710 lihat, apa artinya, doctype HTML? 1559 01:18:51,710 --> 01:18:52,385 Kareem, ingat? 1560 01:18:52,385 --> 01:18:53,260 AUDIENCE: [tidak terdengar] 1561 01:18:53,260 --> 01:18:53,968 DAVID Malan: Ya. 1562 01:18:53,968 --> 01:18:54,870 Di sinilah HTML 5. 1563 01:18:54,870 --> 01:18:57,950 Sementara itu, garis dua di layar di sini berarti peramban hey, 1564 01:18:57,950 --> 01:18:59,482 di sini datang HTML yang sebenarnya. 1565 01:18:59,482 --> 01:19:01,440 Garis tiga adalah hey peramban, di sini datang kepala. 1566 01:19:01,440 --> 01:19:04,260 Line empat adalah, tentu saja, hey Browser, di sini datang judul. 1567 01:19:04,260 --> 01:19:07,780 Apa garis lima lakukan? 1568 01:19:07,780 --> 01:19:09,930 Sebenarnya, ini tidak benar-benar melakukan apa-apa bagi kita. 1569 01:19:09,930 --> 01:19:13,340 Dalam hal ini, hanya mengubah ukuran halaman ke default. Baris enam, 1570 01:19:13,340 --> 01:19:16,140 kami belum bicarakan, tapi menentukan pengkodean karakter. 1571 01:19:16,140 --> 01:19:19,181 Ada berbagai cara untuk mengkodekan file, terutama untuk bahasa asing. 1572 01:19:19,181 --> 01:19:21,100 UTF-8 hanya cenderung menjadi default. 1573 01:19:21,100 --> 01:19:26,580 >> Jadi sekarang kita akan melihat di baris tujuh hingga 16, beberapa CSS. 1574 01:19:26,580 --> 01:19:29,260 Dan meskipun kita sudah tidak melihat semua hal ini sebelumnya, 1575 01:19:29,260 --> 01:19:30,810 kita dapat menyimpulkan jenis. 1576 01:19:30,810 --> 01:19:37,075 Jadi garis delapan cara, hey peramban, menerapkan semua hal berikut yang dua tag, 1577 01:19:37,075 --> 01:19:37,575 tampaknya? 1578 01:19:37,575 --> 01:19:40,650 1579 01:19:40,650 --> 01:19:41,701 HTML dan tubuh teks. 1580 01:19:41,701 --> 01:19:43,200 Jadi koma adalah hal baru di sana. 1581 01:19:43,200 --> 01:19:46,140 Dan itu hanya cara menentukan beberapa tag sekaligus. 1582 01:19:46,140 --> 01:19:47,640 >> Kemudian kami punya kurung kurawal. 1583 01:19:47,640 --> 01:19:51,170 Begitu rupanya, ini memberitahu browser, membuat ketinggian halaman 100%. 1584 01:19:51,170 --> 01:19:54,170 Jadi bahkan jika ada sangat sedikit konten, membuat seluruh halaman, 1585 01:19:54,170 --> 01:19:55,530 membuat hal yang mengisi halaman. 1586 01:19:55,530 --> 01:19:57,524 Membuat peta akhirnya mengisi halaman. 1587 01:19:57,524 --> 01:19:58,690 Margin, apa artinya? 1588 01:19:58,690 --> 01:20:01,559 Itu biasanya seperti sewenang-wenang ruang putih di sekitar tepi 1589 01:20:01,559 --> 01:20:04,350 bahwa beberapa desainer peramban hanya memutuskan harus ada, karena 1590 01:20:04,350 --> 01:20:05,540 jenis membuat hal terlihat lebih bersih. 1591 01:20:05,540 --> 01:20:06,498 Tapi kami tidak menginginkan hal itu. 1592 01:20:06,498 --> 01:20:08,710 Kami ingin peta akan semua jalan ke tepi. 1593 01:20:08,710 --> 01:20:10,930 Padding, memiliki semangat yang sama margin. 1594 01:20:10,930 --> 01:20:14,980 Margin berarti di luar, berarti bantalan dalam, tapi itu adalah jenis yang sama dari kesepakatan. 1595 01:20:14,980 --> 01:20:17,520 Ini sedikit penyangga antara Anda dan tepi. 1596 01:20:17,520 --> 01:20:21,170 >> Dan kemudian garis 13 adalah baik kesempatan untuk tinjauan singkat. 1597 01:20:21,170 --> 01:20:26,440 Apa Peta tanda tajam Maksudku, atau peta hashtag artinya? 1598 01:20:26,440 --> 01:20:29,650 Apa yang merujuk kepada, pada prinsipnya? 1599 01:20:29,650 --> 01:20:31,485 >> AUDIENCE: [tidak terdengar] 1600 01:20:31,485 --> 01:20:32,360 DAVID Malan: Tepat. 1601 01:20:32,360 --> 01:20:36,900 Properti ini, properti CSS ini berlaku hanya satu hal, tag HTML 1602 01:20:36,900 --> 01:20:41,180 yang memiliki ID dari kutipan, tanda kutip "peta". 1603 01:20:41,180 --> 01:20:44,460 Dan sekarang mari kita maju cepat, gulir turun ke bawah file, yang 1604 01:20:44,460 --> 01:20:49,860 tidak terlalu jauh, dan pemberitahuan pada baris 19, jika Anda paste persis seperti yang saya lakukan, 1605 01:20:49,860 --> 01:20:53,405 baris 19 baru saja div, yang merupakan pembagian halaman, yang kemarin saya 1606 01:20:53,405 --> 01:20:54,820 disebut wilayah persegi panjang. 1607 01:20:54,820 --> 01:20:55,820 Ini tidak ada di dalamnya. 1608 01:20:55,820 --> 01:20:57,550 Ini adalah tag terbuka, tag dekat. 1609 01:20:57,550 --> 01:20:59,490 Tapi itu memiliki ID unik. 1610 01:20:59,490 --> 01:21:02,090 >> Jadi apa yang tampaknya menjadi terjadi di sini adalah Google 1611 01:21:02,090 --> 01:21:05,880 sedang menyiapkan halaman web kami untuk memiliki ketinggian lengkap 100%, 1612 01:21:05,880 --> 01:21:09,680 dan tidak ada padding, tidak ada margin, karena apa yang kita akan dimasukkan ke dalam 1613 01:21:09,680 --> 01:21:13,647 div ini, yang ID unik adalah peta, adalah peta yang sebenarnya tertanam. 1614 01:21:13,647 --> 01:21:15,480 Dan kami ingin mengisi halaman dan bukan hanya 1615 01:21:15,480 --> 01:21:17,560 ada beberapa persegi panjang kecil di tengah. 1616 01:21:17,560 --> 01:21:24,220 Jadi garis 14 sama menekankan, yang map itu sendiri harus memiliki ketinggian 100%. 1617 01:21:24,220 --> 01:21:29,220 >> Jadi sekarang melihat antara garis 20 dan 28, ini adalah kode JavaScript. 1618 01:21:29,220 --> 01:21:33,020 Dan ini, meskipun itu sintaksis sedikit aneh, 1619 01:21:33,020 --> 01:21:34,730 ada tidak semua yang banyak terjadi di sini. 1620 01:21:34,730 --> 01:21:39,310 Sejalan 21, ini menyatakan sesuatu yang disebut variabel. 1621 01:21:39,310 --> 01:21:42,030 Alih-alih menyebutnya jumlah, seperti yang kita lakukan sebelumnya, 1622 01:21:42,030 --> 01:21:44,500 kita lebih tepat mengatakan var, yang hanya berarti variabel. 1623 01:21:44,500 --> 01:21:46,520 Kita bisa digunakan bahwa dalam Kode Nick, tapi dia tidak, jadi saya 1624 01:21:46,520 --> 01:21:48,190 tidak repot-repot melakukan hal itu baik. 1625 01:21:48,190 --> 01:21:50,240 Ini adalah variabel yang disebut peta, dan kemudian ada 1626 01:21:50,240 --> 01:21:53,360 fungsi yang rupanya disebut initMap. 1627 01:21:53,360 --> 01:21:55,780 >> Jadi ini seperti kebiasaan kami sendiri potongan puzzle di Scratch. 1628 01:21:55,780 --> 01:21:58,830 Kami telah membuat sepotong fungsi disebut initMap, 1629 01:21:58,830 --> 01:22:00,980 dan Anda dapat jenis menyimpulkan apa yang terjadi di sini. 1630 01:22:00,980 --> 01:22:02,930 Di sisi kiri, kita punya variabel, 1631 01:22:02,930 --> 01:22:06,000 jadi kita akan menempatkan berikut hal dalam variabel itu, 1632 01:22:06,000 --> 01:22:07,362 dari kanan ke kiri. 1633 01:22:07,362 --> 01:22:11,940 Sisi kanan mengatakan, hey Browser, memberi saya peta Google baru. 1634 01:22:11,940 --> 01:22:16,490 Dan google.maps.map adalah cara yang funky dari menentukan bahwa fungsi ini 1635 01:22:16,490 --> 01:22:19,790 milik Google Maps. 1636 01:22:19,790 --> 01:22:23,010 >> Setelah kurung, kami telah melihat ini sebelumnya, hey peramban, dapatkan 1637 01:22:23,010 --> 01:22:29,210 saya elemen di halaman, tag di halaman yang ID unik is-- 1638 01:22:29,210 --> 01:22:30,710 >> AUDIENCE: [tidak terdengar] 1639 01:22:30,710 --> 01:22:31,790 >> DAVID Malan: --map. 1640 01:22:31,790 --> 01:22:35,770 Dan apa yang terjadi, baik, baris ini bersama-sama, garis 23, 1641 01:22:35,770 --> 01:22:38,630 pada dasarnya mengatakan, hey peramban, pergi mendapatkan saya 1642 01:22:38,630 --> 01:22:42,800 yang div kosong di halaman yang ID unik adalah peta, 1643 01:22:42,800 --> 01:22:45,600 karena saya ingin memasukkan ke itu-- menyuntikkan ke dalamnya, 1644 01:22:45,600 --> 01:22:49,520 jika Anda will-- sejumlah besar konten yang kebetulan berasal dari web, 1645 01:22:49,520 --> 01:22:50,427 kemudian. 1646 01:22:50,427 --> 01:22:52,010 Dan Google melakukan semua itu bagi kita. 1647 01:22:52,010 --> 01:22:55,350 >> Jadi sekali lagi, di akhir hari, kami memiliki contoh ini abstraksi. 1648 01:22:55,350 --> 01:22:58,610 Aku tidak tahu apa peta adalah atau bagaimana menerapkan peta API. 1649 01:22:58,610 --> 01:22:59,460 Kami tidak perlu. 1650 01:22:59,460 --> 01:23:02,740 Kita hanya perlu memberitahu peta di mana untuk menempatkan dirinya, dan meninggalkan 1651 01:23:02,740 --> 01:23:04,880 mereka mendasari pelaksanaan Rincian untuk Google. 1652 01:23:04,880 --> 01:23:08,190 Sekarang ada rupanya dua buah data 1653 01:23:08,190 --> 01:23:11,940 bahwa contoh ini adalah menyediakan API Google. 1654 01:23:11,940 --> 01:23:16,450 Rupanya tengah peta, dan tingkat zoom, sehingga untuk berbicara. 1655 01:23:16,450 --> 01:23:21,390 >> Dan tidak ada yang mengenali ini koordinat, lintang dan bujur? 1656 01:23:21,390 --> 01:23:24,364 Mungkin tidak, tapi kami bisa kembali untuk tutorial, secara harfiah melihat. 1657 01:23:24,364 --> 01:23:25,780 Tapi kita akan melihatnya hanya dalam beberapa saat. 1658 01:23:25,780 --> 01:23:29,880 tingkat zoom adalah nilai antara, saya tidak tahu, satu di 13 atau sesuatu seperti itu. 1659 01:23:29,880 --> 01:23:32,880 Itu hanya berkaitan dengan seberapa jauh Anda diperbesar atau keluar, dan hanya itu. 1660 01:23:32,880 --> 01:23:35,690 Dan sekarang di bagian paling akhir halaman, baris pemberitahuan 29-- 1661 01:23:35,690 --> 01:23:39,960 itu sedikit jelek karena itu wraps-- baris kode ini 1662 01:23:39,960 --> 01:23:44,570 adalah apa download ke Browser API sebenarnya Google. 1663 01:23:44,570 --> 01:23:47,500 Semua kode yang Google insinyur telah menulis yang menerapkan 1664 01:23:47,500 --> 01:23:50,000 Seluruh fitur ini peta embeddable. 1665 01:23:50,000 --> 01:23:51,470 >> Sekarang mari kita tidak mengubah apa pun. 1666 01:23:51,470 --> 01:23:54,761 Jika Anda mengikuti bersama, pergi ke depan dan hanya menyimpan file itu, jika Anda memang memiliki 1667 01:23:54,761 --> 01:23:55,760 apa yang saya punya. 1668 01:23:55,760 --> 01:23:57,370 Pergi ke URL-nya. 1669 01:23:57,370 --> 01:23:59,820 Anda dapat mengklik tombol Run di bagian atas dan yang akan memberitahu 1670 01:23:59,820 --> 01:24:03,050 Anda URL server web Anda lagi. 1671 01:24:03,050 --> 01:24:06,010 Dan itu akan membawa Anda ke sebuah tab baru. 1672 01:24:06,010 --> 01:24:11,910 Jika Anda klik Open untuk map.html, dan kemungkinan besar Anda 1673 01:24:11,910 --> 01:24:15,520 akan mendapatkan peringatan, pesan kesalahan, ya? 1674 01:24:15,520 --> 01:24:18,570 pesan kesalahan, pesan kesalahan? 1675 01:24:18,570 --> 01:24:21,170 >> Jadi sayangnya, kesalahan Pesan tidak mencerahkan 1676 01:24:21,170 --> 01:24:23,890 kecuali jika Anda benar-benar membuka konsol, bahwa tab khusus kami 1677 01:24:23,890 --> 01:24:27,110 terus kemarin membuka dan sedikit lebih awal hari ini. 1678 01:24:27,110 --> 01:24:29,445 Tapi aku sengaja menemukan ini sebelumnya, jadi saya sudah 1679 01:24:29,445 --> 01:24:30,820 tahu apa solusinya adalah. 1680 01:24:30,820 --> 01:24:34,440 Dalam slide hari ini, atau bukan, di Cloud9, pemberitahuan 1681 01:24:34,440 --> 01:24:36,430 bahwa kita tidak melakukan sesuatu yang sengaja. 1682 01:24:36,430 --> 01:24:40,690 Perhatikan bahwa ini tag script di baris 29, jika Anda membaca melalui itu, 1683 01:24:40,690 --> 01:24:44,440 itu seperti maps.googleapis.com/ sesuatu, sesuatu, sesuatu, 1684 01:24:44,440 --> 01:24:46,430 kemudian melihat seseorang, salah satu pengembang, 1685 01:24:46,430 --> 01:24:50,040 menulis di semua ibukota surat, kunci API Anda. 1686 01:24:50,040 --> 01:24:51,700 >> Kita perlu menyisipkan sesuatu di sana. 1687 01:24:51,700 --> 01:24:53,450 Dan ini adalah langkah Saya lakukan bagi kita sebelumnya, 1688 01:24:53,450 --> 01:24:57,190 dan lagi mereka mungkin blacklist kami jika tiba-tiba, 12 atau lebih dari kita 1689 01:24:57,190 --> 01:24:59,470 mulai menggunakan tombol yang sama, tapi mari kita lihat apa yang terjadi. 1690 01:24:59,470 --> 01:25:03,030 Jadi, jika Anda pergi ke hari ini slide, satu slide kemudian, ada 1691 01:25:03,030 --> 01:25:07,070 ini string yang sangat funky yang tampak dari teks. 1692 01:25:07,070 --> 01:25:12,230 Pergi ke depan dan hanya menyalin itu dan paste di mana dikatakan 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 tidak mencoba mengetik secara manual, 1695 01:25:17,700 --> 01:25:21,210 karena terasa penuh dengan kesalahan ketik, 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 itu akan membuat garis lagi, tapi sekarang, hanya harus jelas, 1698 01:25:26,090 --> 01:25:29,540 seharusnya terlihat sedikit lebih seperti ini, di mana kunci sama tidak 1699 01:25:29,540 --> 01:25:32,200 dikapitalisasi berteriak pada Anda. 1700 01:25:32,200 --> 01:25:34,810 Menyimpan halaman Anda, kembali ke tab lain, reload, 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 >> AUDIENCE: Australia. 1703 01:25:37,790 --> 01:25:38,748 >> DAVID Malan: Australia. 1704 01:25:38,748 --> 01:25:41,200 Begitu rupanya mereka adalah Koordinat GPS dari Australia. 1705 01:25:41,200 --> 01:25:44,491 Dan biarkan aku berjalan di sekitar untuk sesaat dan membantu siapa saja yang tidak cukup di sana, 1706 01:25:44,491 --> 01:25:47,729 tapi biarkan aku mengusulkan, melalui Google, cari Koordinat GPS dari 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 bisa mengubah ini up, atau Wikipedia dapat memberitahu Anda. 1709 01:25:51,436 --> 01:25:54,410 Tapi memilih dua nilai yang berbeda untuk lintang dan bujur, 1710 01:25:54,410 --> 01:25:57,530 kembali dan paste, dan kemudian kembali halaman tersebut setelah menyimpan 1711 01:25:57,530 --> 01:26:00,718 dan lihat apakah Anda dapat memiliki map untuk kampung halaman Anda sendiri. 1712 01:26:00,718 --> 01:26:04,500 1713 01:26:04,500 --> 01:26:08,042 >> Dan ketika Anda selesai dengan itu, tindak lanjut challenge-- 1714 01:26:08,042 --> 01:26:11,250 dan saya akan memberikan sedikit kurang arah, sengaja, sehingga Anda sengaja 1715 01:26:11,250 --> 01:26:13,791 harus berjuang untuk beberapa menit dengan dokumentasi, 1716 01:26:13,791 --> 01:26:18,740 mengubah peta menjadi tidak ini bawaan kartun, tetapi peta satelit. 1717 01:26:18,740 --> 01:26:24,600 Jadi Anda benar-benar melihat satelit citra bukannya warna cantik. 1718 01:26:24,600 --> 01:26:29,710 >> Dan petunjuk yang saya akan memberikan adalah mengubah jenis peta ini. 1719 01:26:29,710 --> 01:26:33,084 Kembali ke bahwa mendapatkan mulai halaman untuk inspirasi. 1720 01:26:33,084 --> 01:26:40,599 1721 01:26:40,599 --> 01:26:42,390 Seperti Anda mungkin telah diperoleh, jika Anda mencari, 1722 01:26:42,390 --> 01:26:44,250 ada begitu banyak lagi hal yang dapat Anda lakukan. 1723 01:26:44,250 --> 01:26:46,380 Beberapa dari Anda sudah mengubah jenis peta. 1724 01:26:46,380 --> 01:26:49,890 Tapi Anda bisa do-- misalnya, biarkan aku 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 undergrads kami melakukan ini. 1727 01:26:53,470 --> 01:26:58,890 Kami memusatkan peta kami lebih Harvard Yard dan overlay semua nama bangunan tersebut, 1728 01:26:58,890 --> 01:27:01,070 dan kami telah dia menambahkan ini. 1729 01:27:01,070 --> 01:27:04,270 Jadi jika saya ingin mencari, misalnya, Matthews Hall, 1730 01:27:04,270 --> 01:27:05,730 kami memiliki menu drop-down kecil. 1731 01:27:05,730 --> 01:27:09,080 Dan saya pikir dia menggunakan Bootstrap, yang perpustakaan kita bahas sebelumnya untuk ini. 1732 01:27:09,080 --> 01:27:12,190 Dan jika Anda klik pada Matthews Hall, segera 1733 01:27:12,190 --> 01:27:14,790 melompat peta untuk tertentu lokasi, dan itu menunjukkan 1734 01:27:14,790 --> 01:27:16,440 Anda gambar dalam sedikit pop-up. 1735 01:27:16,440 --> 01:27:18,670 >> Tetapi bahkan ini sedikit pop-up, kita tidak menerapkan. 1736 01:27:18,670 --> 01:27:27,521 Jika saya gulir ke bawah untuk mendapatkan kami mulai halaman dan mencari jendela info, 1737 01:27:27,521 --> 01:27:29,770 Anda akan melihat bahwa beberapa fungsionalitas Anda sendiri 1738 01:27:29,770 --> 01:27:31,561 dapat menambahkan, meskipun dengan sedikit kompleksitas, 1739 01:27:31,561 --> 01:27:33,970 adalah sesuatu yang disebut jendela info. 1740 01:27:33,970 --> 01:27:37,190 Dan jika saya klik contoh di sini, dan ini adalah apa yang menyenangkan, 1741 01:27:37,190 --> 01:27:40,530 Anda dapat melakukan hal-hal seperti ini, mengklik penanda dan kemudian voila, 1742 01:27:40,530 --> 01:27:42,400 Informasi muncul. 1743 01:27:42,400 --> 01:27:45,874 >> Jadi kita belum cukup memperkenalkan fitur yang cukup dari JavaScript 1744 01:27:45,874 --> 01:27:49,040 melukis gambar persis bagaimana Anda bisa kawat semua hal ini bersama-sama, 1745 01:27:49,040 --> 01:27:50,706 tapi kami sudah jenis menggaruk permukaan. 1746 01:27:50,706 --> 01:27:53,140 Bahkan, apa yang saya hanya lakukan ketika Saya mengklik penanda bahwa, 1747 01:27:53,140 --> 01:27:55,819 itu memicu peristiwa, disebut di klik event. 1748 01:27:55,819 --> 01:27:57,610 Dan kami benar-benar melihat acara sebelumnya hari ini, 1749 01:27:57,610 --> 01:28:00,670 yang disebut menyerahkan acara, ketika kita mencegah 1750 01:28:00,670 --> 01:28:02,490 pengguna dari mencari kucing. 1751 01:28:02,490 --> 01:28:06,560 Jadi kita sudah jenis dijemput dan choosed dari antara semua berbagai fitur, 1752 01:28:06,560 --> 01:28:08,990 untuk memberikan arti, mudah-mudahan, dari apa yang Anda dapat benar-benar 1753 01:28:08,990 --> 01:28:11,000 lakukan dengan sedikit lebih kenyamanan dalam pemrograman, 1754 01:28:11,000 --> 01:28:12,587 dan sumber daya benar-benar gratis. 1755 01:28:12,587 --> 01:28:15,856 1756 01:28:15,856 --> 01:28:18,770 >> Ada pertanyaan? 1757 01:28:18,770 --> 01:28:19,790 Tidak? 1758 01:28:19,790 --> 01:28:22,542 Ini adalah kesempatan terakhir Anda, setidaknya hari ini, pada hari Jumat, 1759 01:28:22,542 --> 01:28:25,000 untuk mendapatkan apa pun dari dada Anda sehingga Anda berjalan keluar dari sini 1760 01:28:25,000 --> 01:28:27,067 merasa percaya diri dan nyaman. 1761 01:28:27,067 --> 01:28:27,566 Iya nih. 1762 01:28:27,566 --> 01:28:29,740 >> AUDIENCE: Mengapa tidak melakukannya Anda menambahkan satu hal lagi? 1763 01:28:29,740 --> 01:28:32,720 >> DAVID Malan: Oh ya ampun. 1764 01:28:32,720 --> 01:28:35,260 Saya perlu istirahat akhir pekan ini, saya pikir. 1765 01:28:35,260 --> 01:28:36,180 pertanyaan lain? 1766 01:28:36,180 --> 01:28:37,055 >> AUDIENCE: [tidak terdengar] 1767 01:28:37,055 --> 01:28:44,130 1768 01:28:44,130 --> 01:28:46,810 >> DAVID Malan: Anda can-- di Internet Explorer, beristirahat dalam damai, 1769 01:28:46,810 --> 01:28:49,310 Anda digunakan untuk dapat menempatkan VB Script, dasar naskah virtual, 1770 01:28:49,310 --> 01:28:50,643 tapi itu benar-benar tidak pernah tertangkap. 1771 01:28:50,643 --> 01:28:52,490 Jadi jawaban singkat hanya JavaScript. 1772 01:28:52,490 --> 01:28:55,144 1773 01:28:55,144 --> 01:28:55,810 pertanyaan lain? 1774 01:28:55,810 --> 01:28:58,427 1775 01:28:58,427 --> 01:28:59,760 Baiklah, baik, biarkan aku melakukan ini. 1776 01:28:59,760 --> 01:29:02,070 Mari saya ambil rekan-rekan kami di luar. 1777 01:29:02,070 --> 01:29:04,500 Mereka memiliki beberapa evaluasi bentuk bahwa mereka ingin semua orang 1778 01:29:04,500 --> 01:29:06,310 untuk menghabiskan beberapa menit mengisi. 1779 01:29:06,310 --> 01:29:08,775 Mereka ingin mengumpulkan formulir itu dan setiap keringanan yang mungkin Anda miliki di luar. 1780 01:29:08,775 --> 01:29:10,240 Mereka juga akan memiliki sertifikat. 1781 01:29:10,240 --> 01:29:12,380 Saya menduga ada masih beberapa makanan ringan di luar. 1782 01:29:12,380 --> 01:29:14,360 Biarkan aku melewati ini keluar, dan jika Anda memiliki pertanyaan sementara itu, 1783 01:29:14,360 --> 01:29:17,120 Aku akan berjalan sekitar lebih individual dan kami dapat membantu Anda memulai. 1784 01:29:17,120 --> 01:29:17,879 Ya tentu saja. 1785 01:29:17,879 --> 01:29:18,754 AUDIENCE: [tidak terdengar] 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 Tentu saja dengan web software, Anda bersandar 1789 01:29:30,730 --> 01:29:32,901 pada orang lain Anda baik estetis menggunakan hal-hal 1790 01:29:32,901 --> 01:29:35,400 seperti Bootstrap, sehingga Anda tidak harus menerapkan tingkat rendah 1791 01:29:35,400 --> 01:29:37,169 Rincian dari menu dan tombol dan semua itu. 1792 01:29:37,169 --> 01:29:39,210 Anda bersandar pada seseorang seperti Google sehingga Anda 1793 01:29:39,210 --> 01:29:42,050 tidak perlu membangun sebuah Uber bisnis dan bisnis pemetaan, 1794 01:29:42,050 --> 01:29:44,850 dan sejumlah yang sama aplikasi juga. 1795 01:29:44,850 --> 01:29:46,350 >> Bahkan, login yang populer, juga. 1796 01:29:46,350 --> 01:29:48,500 Jika Anda telah menggunakan Spotify atau sejumlah situs, 1797 01:29:48,500 --> 01:29:51,210 Anda akan masuk ke beberapa website menggunakan Facebook. 1798 01:29:51,210 --> 01:29:53,350 Jadi apa yang bagus, ada adalah API untuk login 1799 01:29:53,350 --> 01:29:56,570 saat ini, sehingga Anda tidak memiliki untuk memiliki pengguna Anda sendiri meja 1800 01:29:56,570 --> 01:29:59,440 dan semua database Anda sendiri tentu pada tingkat yang sama. 1801 01:29:59,440 --> 01:30:01,795 Anda dapat membiarkan Facebook melakukan semua itu kompleksitas untuk Anda. 1802 01:30:01,795 --> 01:30:03,920 Jadi waktu yang menyenangkan, jujur, dalam pemrograman, 1803 01:30:03,920 --> 01:30:07,200 karena ada begitu banyak pihak ketiga layanan yang Anda dapat membangun di atas. 1804 01:30:07,200 --> 01:30:10,890 >> Dan lagi, harga yang Anda bayar adalah baik keuangan atau downtime. 1805 01:30:10,890 --> 01:30:13,750 Jika Google turun, begitu juga Uber, bisa dibilang, 1806 01:30:13,750 --> 01:30:15,690 tapi mungkin itu adalah wajar trade-off. 1807 01:30:15,690 --> 01:30:18,040 Dan lagi, itu salah satu tema, mudah-mudahan, selama beberapa hari, 1808 01:30:18,040 --> 01:30:18,780 inilah trade-off. 1809 01:30:18,780 --> 01:30:20,738 Dan jarang ada akan menjadi jawaban yang tepat. 1810 01:30:20,738 --> 01:30:25,700 Itu benar-benar adalah lebih baik dari dua atau lebih jawaban. 1811 01:30:25,700 --> 01:30:26,682 >> Melewati ini sekitar. 1812 01:30:26,682 --> 01:30:36,830 1813 01:30:36,830 --> 01:30:41,110 >> Dan rekening Cloud9 ini akan terus untuk bekerja, dalam teori, lamanya. 1814 01:30:41,110 --> 01:30:45,000 Anda mungkin menemukan jika Anda menunggu beberapa hari atau seminggu atau lebih untuk masuk kembali ke dalam mereka, 1815 01:30:45,000 --> 01:30:49,170 mungkin butuh seperti satu atau lima menit untuk membuka kembali, 1816 01:30:49,170 --> 01:30:54,090 tapi itu hanya karena mereka menempatkan untuk tidur untuk menghemat sumber daya. 1817 01:30:54,090 --> 01:31:10,527