1 00:00:00,000 --> 00:00:02,964 2 00:00:02,964 --> 00:00:05,434 >> [MUSIC PLAYING] 3 00:00:05,434 --> 00:00:11,825 4 00:00:11,825 --> 00:00:12,700 HANNAH: Hi, semua orang. 5 00:00:12,700 --> 00:00:15,866 Terima kasih kalian begitu banyak untuk keluar dalam cuaca menjijikkan untuk kuis satu 6 00:00:15,866 --> 00:00:16,910 meninjau sesi. 7 00:00:16,910 --> 00:00:20,020 Seperti kalian tahu, kuis satu adalah Rabu ini. 8 00:00:20,020 --> 00:00:22,209 Jadi kita akan pergi melalui sekelompok topik. 9 00:00:22,209 --> 00:00:24,000 Davin: Hei, bisa saya katakan sesuatu yang nyata cepat? 10 00:00:24,000 --> 00:00:25,215 HANNAH: Ya, Davin yang akan untuk mengatakan sesuatu dengan cepat. 11 00:00:25,215 --> 00:00:25,780 Davin: Maaf. 12 00:00:25,780 --> 00:00:29,490 Hanya nyata cepat, jika Anda memiliki pertanyaan tentang kuis, Anda dapat pergi online. 13 00:00:29,490 --> 00:00:32,420 Pergi ke 2014 kuis satu, tentang kuis. 14 00:00:32,420 --> 00:00:34,680 Itu punya logistik tentang ke mana harus pergi, kapan harus pergi. 15 00:00:34,680 --> 00:00:38,100 Jika Anda secara bersamaan terdaftar, kami akan memiliki kuis makeup pada pukul 5:30. 16 00:00:38,100 --> 00:00:40,350 Atau jika Anda mengirim saya masalah, Anda memiliki beberapa masalah lainnya. 17 00:00:40,350 --> 00:00:42,640 Tapi 05:30 adalah make-up waktu pada hari Rabu. 18 00:00:42,640 --> 00:00:44,540 Tapi jika Anda memiliki pertanyaan, pertanyaan umum, 19 00:00:44,540 --> 00:00:45,748 online memiliki semua logistik. 20 00:00:45,748 --> 00:00:47,690 Jadi periksa dulu. 21 00:00:47,690 --> 00:00:49,070 >> HANNAH: Awesome. 22 00:00:49,070 --> 00:00:53,030 Jadi, inilah daftar besar topik bahwa kita akan pergi melalui hari. 23 00:00:53,030 --> 00:00:57,390 Aku akan menutup semua C hal, yaitu bahwa kolom pertama. 24 00:00:57,390 --> 00:01:00,710 Jadi hal-hal yang kita C tertutup setelah kuis nol. 25 00:01:00,710 --> 00:01:05,459 Dimulai dengan linked list, yang meliputi pointer. 26 00:01:05,459 --> 00:01:07,668 >> Baiklah, jadi kami melihat ini dalam sesi kajian terakhir, 27 00:01:07,668 --> 00:01:10,000 jadi saya akan pergi melalui ini adalah sedikit lebih cepat. 28 00:01:10,000 --> 00:01:13,500 Hanya mengangkat tangan Anda jika Anda ingin aku memperlambat atau mengatasi sesuatu lanjut. 29 00:01:13,500 --> 00:01:17,150 Tapi kita menggunakan daftar terkait karena kami mulai di C dengan array. 30 00:01:17,150 --> 00:01:20,920 Dan array yang besar, tetapi masalah adalah mereka memiliki ukuran yang tetap. 31 00:01:20,920 --> 00:01:24,925 Daftar link memungkinkan kita untuk membuat dinamis berukuran struktur data. 32 00:01:24,925 --> 00:01:28,520 33 00:01:28,520 --> 00:01:32,320 >> Dan kami memiliki operasi dasar kami, menyisipkan, menghapus, dan mencari. 34 00:01:32,320 --> 00:01:36,780 Dan kita bisa melakukan insert di kasus terburuk waktu konstan 35 00:01:36,780 --> 00:01:39,140 jika kita hanya menaruhnya di awal. 36 00:01:39,140 --> 00:01:45,220 Hapus dan mencari, terburuk kasus besar oh waktu n. 37 00:01:45,220 --> 00:01:47,140 Jadi sekali lagi, hanya untuk membalik melalui foto-foto ini, 38 00:01:47,140 --> 00:01:50,860 Aku tahu kami melihat ini terakhir kali, tapi kami ingin melacak linked list kami 39 00:01:50,860 --> 00:01:53,440 dengan melacak kepala linked list kami. 40 00:01:53,440 --> 00:01:55,580 Karena kita tahu bahwa masing-masing node kami 41 00:01:55,580 --> 00:01:58,610 hanya akan menunjuk ke simpul berikutnya dalam linked list kami. 42 00:01:58,610 --> 00:02:00,460 >> Jadi itulah bagaimana kita melacak. 43 00:02:00,460 --> 00:02:02,910 Meskipun ini tidak potongan terus menerus memori, 44 00:02:02,910 --> 00:02:07,410 kita dapat menemukan mereka dengan hanya mengikuti panah yang berbeda. 45 00:02:07,410 --> 00:02:09,800 Berikut ini adalah struktur kami untuk daftar simpul linked. 46 00:02:09,800 --> 00:02:11,440 Kami melihat ini terakhir kali. 47 00:02:11,440 --> 00:02:13,080 Kami memiliki struct simpul kami. 48 00:02:13,080 --> 00:02:14,340 Dan memiliki dua sifat. 49 00:02:14,340 --> 00:02:17,020 Nomor satu, sebenarnya nilai yang kita ingin menyimpan. 50 00:02:17,020 --> 00:02:18,290 Dalam kasus ini, itu adalah bilangan bulat. 51 00:02:18,290 --> 00:02:21,100 Ini bisa menjadi string, itu bisa menjadi char, apa pun yang Anda inginkan. 52 00:02:21,100 --> 00:02:24,710 Dan kemudian, kita harus melacak node berikutnya dalam linked list kami. 53 00:02:24,710 --> 00:02:29,797 Sehingga akan menjadi pointer ke node berikutnya. 54 00:02:29,797 --> 00:02:31,880 Jika Anda hanya melakukan pencarian, seperti saya katakan sebelumnya, 55 00:02:31,880 --> 00:02:34,900 Anda harus mengikuti panah ke bawah. 56 00:02:34,900 --> 00:02:40,720 Penyisipan, Anda akan melacak di mana sisa daftar Anda. 57 00:02:40,720 --> 00:02:44,150 Dan Anda ingin mengarahkan kepala untuk menunjuk ke elemen baru, yang 58 00:02:44,150 --> 00:02:46,640 dalam hal ini adalah satu, dan kemudian satu akan mengarahkan 59 00:02:46,640 --> 00:02:49,480 untuk sisa linked list. 60 00:02:49,480 --> 00:02:52,996 Jadi sekali lagi, saya tahu ini sedikit sedikit pengulangan dari kuis nol. 61 00:02:52,996 --> 00:02:55,370 Jadi kita harus sangat berhati-hati tentang urutan di mana kita 62 00:02:55,370 --> 00:03:00,390 melakukan pointings ini sehingga kita tidak kehilangan jejak belakang daftar. 63 00:03:00,390 --> 00:03:04,122 OK, pertanyaan dengan hanya tunggal terkait daftar? 64 00:03:04,122 --> 00:03:06,060 Awesome, OK, keren. 65 00:03:06,060 --> 00:03:09,410 >> Jadi sekarang, kita akan pergi ke sesuatu hanya sedikit lebih rumit, 66 00:03:09,410 --> 00:03:10,920 ganda terkait daftar. 67 00:03:10,920 --> 00:03:13,680 Jadi selain menjaga melacak node berikutnya, 68 00:03:13,680 --> 00:03:16,220 kami juga ingin melacak dari node sebelumnya. 69 00:03:16,220 --> 00:03:19,580 Dan ini memungkinkan kita untuk, jika kita di beberapa titik dalam linked list kami, 70 00:03:19,580 --> 00:03:23,110 tidak hanya pergi ke depan, tapi juga iterate mundur. 71 00:03:23,110 --> 00:03:25,220 Karena seperti yang kita lihat di daftar sendiri-sendiri terkait, 72 00:03:25,220 --> 00:03:27,980 jika kita berada di beberapa simpul, dan tiba-tiba, kami memutuskan, 73 00:03:27,980 --> 00:03:30,160 sebenarnya, saya ingin pergi ke node tepat sebelum saya, 74 00:03:30,160 --> 00:03:32,034 Anda harus pergi semua Dalam perjalanan kembali ke kepala 75 00:03:32,034 --> 00:03:35,710 dan iterate melalui sampai Anda menemukan node yang Anda cari. 76 00:03:35,710 --> 00:03:37,680 >> Jadi ini membuat hal-hal sedikit lebih mudah karena kita 77 00:03:37,680 --> 00:03:39,670 mencoba untuk beralih melalui linked list kami. 78 00:03:39,670 --> 00:03:47,870 Tetapi membutuhkan kita untuk melacak satu lebih pointer, sehingga satu node bintang lagi. 79 00:03:47,870 --> 00:03:50,830 Baiklah, jadi inilah bagian yang menyenangkan. 80 00:03:50,830 --> 00:03:55,600 Kita akan berlatih menerapkan hapus untuk penggandaan daftar. 81 00:03:55,600 --> 00:03:58,660 Jadi ini adalah sesuatu yang permainan benar-benar adil untuk kuis. 82 00:03:58,660 --> 00:04:00,750 Hal ini menunjukkan pada kuis masa lalu. 83 00:04:00,750 --> 00:04:04,220 Jadi pasti bersiaplah kode sedikit di C. 84 00:04:04,220 --> 00:04:07,900 Jangan lupa bahwa dengan semua menyenangkan ini PHP dan JavaScript, 85 00:04:07,900 --> 00:04:10,560 kita masih harus ingat untuk melakukan C. Jadi memoles yang 86 00:04:10,560 --> 00:04:12,146 jika Anda merasa berkarat. 87 00:04:12,146 --> 00:04:14,580 >> Baiklah, mari kita lihat apakah kita bisa melakukan ini. 88 00:04:14,580 --> 00:04:16,312 OK, keren. 89 00:04:16,312 --> 00:04:18,600 Jadi kita akan mencoba untuk mengedit tepat di sini, 90 00:04:18,600 --> 00:04:20,707 dan mudah-mudahan ini berjalan seperti yang direncanakan. 91 00:04:20,707 --> 00:04:23,915 Baiklah, apakah ada yang ingin memberikan saya saran bagaimana saya harus mulai? 92 00:04:23,915 --> 00:04:27,030 Satu-satunya asumsi saya keputusan adalah bahwa saya sudah 93 00:04:27,030 --> 00:04:30,180 telah struktur didefinisikan, yang saya menunjukkan pada halaman terakhir, 94 00:04:30,180 --> 00:04:31,420 pada slide terakhir. 95 00:04:31,420 --> 00:04:39,250 Dan aku menyimpan kepala terkait saya Daftar di beberapa pointer yang disebut daftar. 96 00:04:39,250 --> 00:04:42,190 Apakah ada yang ingin mendapatkan saya mulai? 97 00:04:42,190 --> 00:04:45,410 >> AUDIENCE: Dapatkah Anda membuat baru simpul untuk panggilan melalui daftar? 98 00:04:45,410 --> 00:04:46,410 >> HANNAH: Awesome, jadi kita akan membuat 99 00:04:46,410 --> 00:04:47,951 node baru untuk merangkak melalui daftar. 100 00:04:47,951 --> 00:04:48,570 Aku suka itu. 101 00:04:48,570 --> 00:04:50,799 Aku hanya akan menyebutnya pointer kalau itu OK. 102 00:04:50,799 --> 00:04:52,340 Dan di mana seharusnya itu awalnya dimulai? 103 00:04:52,340 --> 00:04:57,280 104 00:04:57,280 --> 00:04:59,840 >> AUDIENCE: Mungkin di kepala daftar. 105 00:04:59,840 --> 00:05:00,590 HANNAH: Beautiful. 106 00:05:00,590 --> 00:05:03,670 Kami ingin mulai kepala, yang Aku berkata akan disimpan dalam daftar. 107 00:05:03,670 --> 00:05:04,170 Mengagumkan. 108 00:05:04,170 --> 00:05:05,220 Sejauh ini, begitu baik. 109 00:05:05,220 --> 00:05:08,260 Dan sekarang, tujuan kami adalah untuk iterate melalui daftar 110 00:05:08,260 --> 00:05:12,870 sampai kita menemukan simpul dengan Nilai n yang ingin kita hapus. 111 00:05:12,870 --> 00:05:13,540 OKE? 112 00:05:13,540 --> 00:05:15,910 >> Jadi sekarang adalah bagian di mana kami ingin iterate melalui. 113 00:05:15,910 --> 00:05:19,488 Can anyone menyarankan cara untuk iterate melalui? 114 00:05:19,488 --> 00:05:20,979 >> AUDIENCE: Sebuah loop. 115 00:05:20,979 --> 00:05:21,840 >> HANNAH: Sebuah loop. 116 00:05:21,840 --> 00:05:22,620 Saya menyukainya. 117 00:05:22,620 --> 00:05:25,550 Secara khusus, kita dapat mencoba loop sementara. 118 00:05:25,550 --> 00:05:30,919 OK, dan kita tahu bahwa kita telah mencapai akhir daftar kami ketika apa? 119 00:05:30,919 --> 00:05:32,210 AUDIENCE: Ketika pointer adalah null. 120 00:05:32,210 --> 00:05:33,418 HANNAH: Ketika pointer adalah null. 121 00:05:33,418 --> 00:05:34,320 Indah, aku menyukainya. 122 00:05:34,320 --> 00:05:35,110 OK, keren. 123 00:05:35,110 --> 00:05:39,300 124 00:05:39,300 --> 00:05:43,190 Jadi maaf jika berlari brace saya jenis jatuh dari layar. 125 00:05:43,190 --> 00:05:44,090 Kami membawanya kembali. 126 00:05:44,090 --> 00:05:46,610 OK, keren. 127 00:05:46,610 --> 00:05:48,690 Apa selanjutnya? 128 00:05:48,690 --> 00:05:51,950 >> Jadi kita tahu bahwa kita ingin menghapus simpul yang memiliki nilai n. 129 00:05:51,950 --> 00:05:56,340 Jadi mari kita cari kasus di mana kita benar-benar menemukan simpul kami. 130 00:05:56,340 --> 00:05:57,840 Jadi bagaimana saya akan memeriksa bahwa? 131 00:05:57,840 --> 00:06:02,210 Saya hanya akan mengatakan jika pointer, dan kemudian jika saya ingin mendapatkan nilai dari pointer, 132 00:06:02,210 --> 00:06:08,940 Aku hanya panah n, sama n, parameter 133 00:06:08,940 --> 00:06:14,490 yang kami berikan untuk fungsi ini, simpul yang ingin kita benar-benar menghapus. 134 00:06:14,490 --> 00:06:17,090 Setiap pertanyaan sampai di sini? 135 00:06:17,090 --> 00:06:18,360 Baiklah. 136 00:06:18,360 --> 00:06:24,140 OK, jadi sekarang mari kita menggambar cepat di papan untuk memvisualisasikan ini. 137 00:06:24,140 --> 00:06:30,710 >> Jadi katakanlah ada simpul yang indah. 138 00:06:30,710 --> 00:06:34,480 Dan memiliki nilai, saya hanya akan mengatakan empat. 139 00:06:34,480 --> 00:06:40,340 Dan menunjuk ke depan node dalam linked list kami. 140 00:06:40,340 --> 00:06:42,220 Dan tidak ada sebelumnya. 141 00:06:42,220 --> 00:06:45,800 Jadi kita harus sebelumnya kami menunjuk apa-apa. 142 00:06:45,800 --> 00:06:48,110 Dalam hal ini, kami arahkan ke belakang. 143 00:06:48,110 --> 00:06:50,960 OK, hanya menyiapkan saya linked list di sini. 144 00:06:50,960 --> 00:06:53,630 Dan kami memiliki daftar yang menunjuk struktur ini untuk memulai. 145 00:06:53,630 --> 00:06:57,220 146 00:06:57,220 --> 00:07:00,485 Aku akan menarik satu lagi untuk demi kelengkapan. 147 00:07:00,485 --> 00:07:04,209 148 00:07:04,209 --> 00:07:06,117 OKE. 149 00:07:06,117 --> 00:07:07,480 Aku akan menunjuk ke depan ini. 150 00:07:07,480 --> 00:07:09,550 Dan saya akan menunjukkan bahwa satu kembali. 151 00:07:09,550 --> 00:07:10,360 Ups, maaf. 152 00:07:10,360 --> 00:07:12,710 Ya, punya ini mundur. 153 00:07:12,710 --> 00:07:15,548 154 00:07:15,548 --> 00:07:16,967 Melakukannya lagi. 155 00:07:16,967 --> 00:07:18,330 OK, ada kita pergi. 156 00:07:18,330 --> 00:07:19,910 Baiklah, mendapatkannya. 157 00:07:19,910 --> 00:07:21,780 OK, inilah gambaran kita. 158 00:07:21,780 --> 00:07:24,860 >> OK, jadi kami ingin mempertimbangkan dua kasus. 159 00:07:24,860 --> 00:07:27,330 Kasus pertama adalah jika simpul kita ingin menghapus 160 00:07:27,330 --> 00:07:29,420 adalah di awal daftar kami. 161 00:07:29,420 --> 00:07:34,070 Dan kemudian, kasus kedua yang kita inginkan untuk dipertimbangkan adalah apakah itu di tempat lain. 162 00:07:34,070 --> 00:07:37,660 Saya memahami bahwa ini benar-benar berantakan menggambar dengan semua Menghapus saya, 163 00:07:37,660 --> 00:07:40,400 tapi mudah-mudahan kita akan mencoba untuk membuat ini jelas dengan beberapa kode. 164 00:07:40,400 --> 00:07:45,450 >> OK, jadi mari kita menutupi kasus ini di mana kami menemukan simpul kami, 165 00:07:45,450 --> 00:07:48,900 dan itu di bagian paling mulai dari linked list kami. 166 00:07:48,900 --> 00:07:50,810 Siapapun memberi saya saran di sini seperti apa 167 00:07:50,810 --> 00:07:54,684 Aku harus Anda lakukan untuk benar-benar menghapus simpul kami? 168 00:07:54,684 --> 00:07:55,970 Ini sedikit rumit. 169 00:07:55,970 --> 00:07:56,470 OKE? 170 00:07:56,470 --> 00:07:59,628 >> AUDIENCE: Anda harus mengambil node yang akan sebelum 171 00:07:59,628 --> 00:08:01,794 dan membuatnya menunjuk ke salah satu yang akan menjadi setelah, 172 00:08:01,794 --> 00:08:03,004 dan mengambil node yang akan setelah dan membuat 173 00:08:03,004 --> 00:08:04,554 menunjuk ke node sebelumnya. 174 00:08:04,554 --> 00:08:05,220 HANNAH: Tepat. 175 00:08:05,220 --> 00:08:10,640 OK, jadi hal ini terjadi where-- kita memiliki dua kasus. 176 00:08:10,640 --> 00:08:14,100 Kami memiliki kasus di mana node yang kita cari 177 00:08:14,100 --> 00:08:18,270 adalah depan daftar. 178 00:08:18,270 --> 00:08:23,110 OK, dan kemudian kasus yang Anda dijelaskan sebaliknya, kan? 179 00:08:23,110 --> 00:08:24,500 Ini tempat lain dalam daftar. 180 00:08:24,500 --> 00:08:27,460 181 00:08:27,460 --> 00:08:32,840 Jadi kau bilang, kita perlu melihat simpul sebelumnya, 182 00:08:32,840 --> 00:08:36,500 dan membuat simpul sebelumnya menunjuk ke simpul berikutnya. 183 00:08:36,500 --> 00:08:40,510 Jadi katakanlah kita mencoba untuk mengambil lima 184 00:08:40,510 --> 00:08:43,059 dalam gambar sangat kacau saya di sini. 185 00:08:43,059 --> 00:08:47,530 Kami ingin memastikan bahwa empat sekarang menunjuk ke enam. 186 00:08:47,530 --> 00:08:49,590 Four poin berikutnya untuk enam. 187 00:08:49,590 --> 00:08:52,150 Dan enam poin yang sebelumnya empat. 188 00:08:52,150 --> 00:08:53,960 Itulah tujuan kita di sini, kan? 189 00:08:53,960 --> 00:08:56,150 Ini adalah apa yang saya pikir Anda hanya mengatakan di sana. 190 00:08:56,150 --> 00:08:58,450 >> OK, jadi mari kita mendapatkan potongan pertama. 191 00:08:58,450 --> 00:09:02,300 Mari kita lakukan memiliki pointer sebelumnya sebelumnya. 192 00:09:02,300 --> 00:09:06,550 193 00:09:06,550 --> 00:09:09,690 Jadi empat berikutnya harus menunjuk ke apa? 194 00:09:09,690 --> 00:09:13,210 195 00:09:13,210 --> 00:09:14,900 Tepat, dalam hal ini, enam. 196 00:09:14,900 --> 00:09:18,470 Jadi kita harus mengatakan pointer, selanjutnya. 197 00:09:18,470 --> 00:09:20,600 OKE? 198 00:09:20,600 --> 00:09:21,150 Baiklah. 199 00:09:21,150 --> 00:09:24,870 Jadi mari kita menyingkirkan gambar jelek ini dan mencoba untuk menarik yang sedikit lebih baik. 200 00:09:24,870 --> 00:09:29,040 201 00:09:29,040 --> 00:09:31,172 Kami memiliki daftar kepala kami di sini. 202 00:09:31,172 --> 00:09:36,440 203 00:09:36,440 --> 00:09:42,740 Dan yang menunjuk ke node pertama dalam linked list kami, yang kami katakan adalah empat. 204 00:09:42,740 --> 00:09:45,620 Berikut simpul kedua, lima. 205 00:09:45,620 --> 00:09:47,307 Dan simpul ketiga, enam. 206 00:09:47,307 --> 00:09:50,265 Hanya mencoba untuk menarik sama persis gambar, hanya sedikit lebih bersih. 207 00:09:50,265 --> 00:09:52,780 208 00:09:52,780 --> 00:09:56,280 OK, jadi empat berikutnya awalnya menunjuk ke lima. 209 00:09:56,280 --> 00:09:58,620 Lima berikutnya poin menjadi enam. 210 00:09:58,620 --> 00:10:00,170 Enam poin yang sebelumnya lima. 211 00:10:00,170 --> 00:10:02,470 Dan lima di poin sebelumnya untuk empat. 212 00:10:02,470 --> 00:10:03,360 Jauh lebih bagus! 213 00:10:03,360 --> 00:10:04,530 OK, keren. 214 00:10:04,530 --> 00:10:07,770 >> Jadi sekarang, apa yang kita lakukan hanya di sini, ini baris kode, 215 00:10:07,770 --> 00:10:12,680 yang mengatakan pointer sebelumnya selanjutnya, jadi apa artinya? 216 00:10:12,680 --> 00:10:17,540 Itu berarti jika kita sedang melihat lima, pergi ke node sebelumnya, 217 00:10:17,540 --> 00:10:21,970 dan itu berikutnya harus sekarang arahkan ke lima berikutnya. 218 00:10:21,970 --> 00:10:27,840 Jadi pada dasarnya, apa yang dilakukan adalah yang menghapus panah ini 219 00:10:27,840 --> 00:10:29,640 dan membuatnya melewatkan tepat di atas lima. 220 00:10:29,640 --> 00:10:31,360 Apakah itu jelas? 221 00:10:31,360 --> 00:10:33,200 Saya tahu bahwa bisa menjadi sedikit samar. 222 00:10:33,200 --> 00:10:34,480 Saya melihat beberapa mengangguk kepala. 223 00:10:34,480 --> 00:10:35,390 Itu bagus. 224 00:10:35,390 --> 00:10:36,670 OK, keren. 225 00:10:36,670 --> 00:10:39,590 Sekarang, apa langkah selanjutnya? 226 00:10:39,590 --> 00:10:42,060 >> Aku ulang berikutnya. 227 00:10:42,060 --> 00:10:45,297 Sekarang, yang panah lainnya apakah saya harus berubah? 228 00:10:45,297 --> 00:10:46,130 Yang satu ini di sini. 229 00:10:46,130 --> 00:10:47,560 Enam sebelumnya. 230 00:10:47,560 --> 00:10:50,620 Kami tidak ingin enam sebelumnya untuk menunjuk ke lima lagi. 231 00:10:50,620 --> 00:10:54,580 Kami ingin menunjuk ke empat. 232 00:10:54,580 --> 00:10:56,190 Apakah gambar yang masuk akal? 233 00:10:56,190 --> 00:10:58,370 Jadi sekarang kita benar-benar dapat mengambil lima. 234 00:10:58,370 --> 00:10:59,370 Jadi mari kita mendapatkan bagian itu. 235 00:10:59,370 --> 00:11:03,390 236 00:11:03,390 --> 00:11:11,180 Apa yang harus saya lakukan sebelum saya ulang enam sebelumnya empat? 237 00:11:11,180 --> 00:11:14,360 Setiap ide di sana? 238 00:11:14,360 --> 00:11:17,369 >> AUDIENCE: Bebaskan node antara mereka dengan menetapkan ke nol? 239 00:11:17,369 --> 00:11:17,910 HANNAH: Cool. 240 00:11:17,910 --> 00:11:21,100 Jelas, tujuan akhir kita adalah akan membebaskan node. 241 00:11:21,100 --> 00:11:22,490 Jadi kita bisa melakukan itu di sini. 242 00:11:22,490 --> 00:11:23,540 Gratis pointer. 243 00:11:23,540 --> 00:11:24,810 Tentu saja. 244 00:11:24,810 --> 00:11:29,160 Tapi bahkan sebelum itu, mari kita hanya-- benar tujuan kami 245 00:11:29,160 --> 00:11:38,730 di sini adalah untuk mengatur pointer berikutnya sebelumnya sebesar pointer sebelumnya. 246 00:11:38,730 --> 00:11:40,760 Saya tahu ini semakin ditutup-tutupi. 247 00:11:40,760 --> 00:11:45,440 OK, mari kita take-- dingin. 248 00:11:45,440 --> 00:11:46,990 Dapatkah orang melihat garis bawah ini? 249 00:11:46,990 --> 00:11:47,840 Atau itu super kecil? 250 00:11:47,840 --> 00:11:50,430 251 00:11:50,430 --> 00:11:54,300 >> Jadi sebelum kita mengeksekusi baris ini di sini, kami ingin 252 00:11:54,300 --> 00:11:58,375 untuk memastikan bahwa pointer berikutnya tidak nol. 253 00:11:58,375 --> 00:12:00,500 Karena jika pointer berikutnya adalah null, apa jenis kesalahan 254 00:12:00,500 --> 00:12:02,727 Saya akan dapatkan ketika saya mencoba untuk referensi pointer nol? 255 00:12:02,727 --> 00:12:03,560 AUDIENCE: Seg kesalahan. 256 00:12:03,560 --> 00:12:05,660 HANNAH: Sebuah kesalahan seg, indah. 257 00:12:05,660 --> 00:12:09,690 OK, jadi kalau itu tidak null, maka kita dapat mengatur ulang. 258 00:12:09,690 --> 00:12:14,420 Dan kami memiliki enam poin lagi untuk empat. 259 00:12:14,420 --> 00:12:17,440 Pertanyaan sampai titik ini? 260 00:12:17,440 --> 00:12:17,940 Iya Nih? 261 00:12:17,940 --> 00:12:19,814 >> AUDIENCE: Dalam pertama Anda jika pernyataan, apakah Anda 262 00:12:19,814 --> 00:12:23,817 artinya memiliki panah selanjutnya, atau [tidak terdengar]? 263 00:12:23,817 --> 00:12:25,150 HANNAH: Aku berarti pointer panah n. 264 00:12:25,150 --> 00:12:30,270 Jadi pada dasarnya, apa yang saya coba lakukan adalah mengatakan, node saat yang aku 265 00:12:30,270 --> 00:12:34,100 iterasi, node saat yang Aku sedang melihat, aku menyimpan dalam pointer. 266 00:12:34,100 --> 00:12:37,630 Dan aku ingin tahu pointer nilai, yang dalam hal ini adalah n. 267 00:12:37,630 --> 00:12:39,500 Dan saya ingin melihat, adalah node yang saya cari 268 00:12:39,500 --> 00:12:42,790 untuk node saya bertujuan untuk menghapus? 269 00:12:42,790 --> 00:12:47,657 Jadi itu sebabnya kita miliki di sini pointer n. 270 00:12:47,657 --> 00:12:49,857 >> AUDIENCE: Jadi panah akan untuk n, Anda menetapkan nilai 271 00:12:49,857 --> 00:12:52,058 dan menyimpannya dalam sebuah simpul yang disebut n? 272 00:12:52,058 --> 00:12:55,410 273 00:12:55,410 --> 00:12:58,820 >> HANNAH: Jadi itu seperti jika saya melalui linked list ini 274 00:12:58,820 --> 00:13:00,310 dan menunjuk ke lima. 275 00:13:00,310 --> 00:13:03,600 Jika saya ingin mendapatkan nilai tersebut, jika Saya ingin mendapatkan jumlah itu, 5, 276 00:13:03,600 --> 00:13:06,400 Saya harus melakukan pointer panah n. 277 00:13:06,400 --> 00:13:06,900 Keren? 278 00:13:06,900 --> 00:13:07,900 Ya. 279 00:13:07,900 --> 00:13:11,200 >> AUDIENCE: Apakah n nama variabel? 280 00:13:11,200 --> 00:13:11,700 HANNAH: Ya. 281 00:13:11,700 --> 00:13:14,870 Jadi jika kita membalik kembali satu slide, n adalah nama 282 00:13:14,870 --> 00:13:18,660 dari nilai bagian dalam node dalam linked list kami. 283 00:13:18,660 --> 00:13:21,510 Dan aku tahu itu bisa mendapatkan sedikit bit membingungkan karena kita juga 284 00:13:21,510 --> 00:13:24,680 menyebut hal bahwa kita ingin menghapus n. 285 00:13:24,680 --> 00:13:26,717 Jadi di situlah yang satu baris berasal dari. 286 00:13:26,717 --> 00:13:27,671 Ya? 287 00:13:27,671 --> 00:13:31,010 >> AUDIENCE: Apa yang Anda miliki [Tak terdengar] bagaimana mereka bekerja? 288 00:13:31,010 --> 00:13:33,872 289 00:13:33,872 --> 00:13:35,780 Sebuah pointer [tidak terdengar]? 290 00:13:35,780 --> 00:13:37,520 >> HANNAH: Tentu. 291 00:13:37,520 --> 00:13:40,027 Apakah Anda berbicara about-- garis yang? 292 00:13:40,027 --> 00:13:41,526 AUDIENCE: Baris terakhir [tidak terdengar]. 293 00:13:41,526 --> 00:13:44,280 294 00:13:44,280 --> 00:13:45,250 >> HANNAH: Tentu, OK. 295 00:13:45,250 --> 00:13:48,540 Jadi mari kita lihat gambar di Untuk mencoba untuk menjelaskan hal ini. 296 00:13:48,540 --> 00:13:51,030 Maaf, untuk kamera, pertanyaannya adalah 297 00:13:51,030 --> 00:13:54,580 dapat kita jelaskan pointer panah pointer sebelumnya berikutnya. 298 00:13:54,580 --> 00:14:01,510 OK, jadi katakanlah kita berada di lima dan tujuan kami adalah untuk menghapus lima. 299 00:14:01,510 --> 00:14:07,240 Jadi pointer berikutnya, yang ini tiga node apakah itu memberi kita? 300 00:14:07,240 --> 00:14:10,840 Yang membawa kita ke node keenam, kan? 301 00:14:10,840 --> 00:14:16,490 >> OK, jadi sekarang kita minta selama enam sebelumnya. 302 00:14:16,490 --> 00:14:17,060 OKE? 303 00:14:17,060 --> 00:14:20,210 Dan kita ulang ini untuk menjadi sama dengan empat, 304 00:14:20,210 --> 00:14:23,214 yang kebetulan lima sebelumnya. 305 00:14:23,214 --> 00:14:25,180 Aku tahu, itu super sulit untuk melacak. 306 00:14:25,180 --> 00:14:29,286 Saya sangat merekomendasikan Anda menggambar jika Anda mendapatkan pertanyaan seperti ini. 307 00:14:29,286 --> 00:14:30,242 Iya Nih? 308 00:14:30,242 --> 00:14:32,617 >> AUDIENCE: Apakah alasan bahwa kita tidak memiliki [tidak terdengar]? 309 00:14:32,617 --> 00:14:37,430 310 00:14:37,430 --> 00:14:38,570 >> HANNAH: Tepat. 311 00:14:38,570 --> 00:14:44,800 Jadi pertanyaannya adalah, mengapa kita tidak perlu memeriksa di sini? 312 00:14:44,800 --> 00:14:48,160 Mengapa kita tidak perlu memeriksa bahwa pointer sebelumnya tidak sama dengan nol? 313 00:14:48,160 --> 00:14:50,070 Dan itu karena kita sudah sudah dipisahkan 314 00:14:50,070 --> 00:14:52,490 terjadi jika pointer di awal. 315 00:14:52,490 --> 00:14:54,060 Pertanyaan yang sangat bagus. 316 00:14:54,060 --> 00:14:56,880 Ada lagi hal ini? 317 00:14:56,880 --> 00:14:57,380 OK, keren. 318 00:14:57,380 --> 00:14:58,360 Jadi mari kita selesaikan itu. 319 00:14:58,360 --> 00:14:59,890 Kita sudah hampir sampai. 320 00:14:59,890 --> 00:15:01,310 >> Jadi bagaimana jika itu adalah di kepala? 321 00:15:01,310 --> 00:15:03,360 Bagaimana jika bukan mencoba untuk menghapus lima, 322 00:15:03,360 --> 00:15:06,240 kita benar-benar ingin menghapus empat? 323 00:15:06,240 --> 00:15:07,270 Apa yang akan saya lakukan? 324 00:15:07,270 --> 00:15:09,610 Nah, saya ingin me-reset kepala saya untuk apa? 325 00:15:09,610 --> 00:15:14,288 326 00:15:14,288 --> 00:15:15,585 Shout itu? 327 00:15:15,585 --> 00:15:16,710 AUDIENCE: Yang setelah. 328 00:15:16,710 --> 00:15:17,460 HANNAH: Beautiful. 329 00:15:17,460 --> 00:15:26,430 OK, jadi kami ingin daftar untuk menunjuk apa pun pointer simpul berikutnya adalah. 330 00:15:26,430 --> 00:15:29,040 Baik Lah. 331 00:15:29,040 --> 00:15:30,810 Dan hanya untuk kelengkapan dunia kepentingan, kami akan 332 00:15:30,810 --> 00:15:35,590 ingin memeriksa bahwa selama daftar kami tidak null, selama daftar kami tidak 333 00:15:35,590 --> 00:15:42,730 kosong, maka kita ingin mengatur kami sama sebelumnya nol. 334 00:15:42,730 --> 00:15:46,960 335 00:15:46,960 --> 00:15:50,230 Pertanyaan sejauh ini? 336 00:15:50,230 --> 00:15:53,205 Satu langkah from--? 337 00:15:53,205 --> 00:15:55,530 >> AUDIENCE: Apakah akan jika Daftar ini tidak sama dengan nol? 338 00:15:55,530 --> 00:15:56,950 >> HANNAH: Ya, Anda benar-benar benar. 339 00:15:56,950 --> 00:15:58,130 Saya sangat minta maaf. 340 00:15:58,130 --> 00:16:00,040 Apakah daftar tidak sama dengan nol. 341 00:16:00,040 --> 00:16:01,915 Mengagumkan. 342 00:16:01,915 --> 00:16:04,245 Mencoba untuk membawa ini semua pada layar. 343 00:16:04,245 --> 00:16:06,870 Ini semacam jatuh. 344 00:16:06,870 --> 00:16:07,730 Maaf, guys. 345 00:16:07,730 --> 00:16:11,874 Dan last but not least, semua yang harus kita lakukan adalah kembali. 346 00:16:11,874 --> 00:16:12,840 OKE. 347 00:16:12,840 --> 00:16:15,400 Itu banyak berdesakan benar-benar cepat. 348 00:16:15,400 --> 00:16:16,800 Mengambil kedua untuk melihat lebih ini. 349 00:16:16,800 --> 00:16:18,216 Beritahu saya jika Anda memiliki pertanyaan. 350 00:16:18,216 --> 00:16:20,232 351 00:16:20,232 --> 00:16:20,732 Ya? 352 00:16:20,732 --> 00:16:26,940 >> AUDIENCE: Jika daftar adalah di Kepala, then-- menunggu, Nevermind. 353 00:16:26,940 --> 00:16:27,700 >> HANNAH: OK, baik. 354 00:16:27,700 --> 00:16:30,987 Jadi ini adalah jika daftar di kepala, kita keluarkan untuk apa pun yang kita dimasukkan. 355 00:16:30,987 --> 00:16:31,486 Ya? 356 00:16:31,486 --> 00:16:33,777 >> AUDIENCE: Bisakah Anda menjelaskan pertama jika pernyataan lagi? 357 00:16:33,777 --> 00:16:36,149 Jika pointer ke n adalah sama dengan n? 358 00:16:36,149 --> 00:16:36,690 HANNAH: Tentu. 359 00:16:36,690 --> 00:16:42,780 Jadi tujuan kami seluruh fungsi ini untuk menghapus simpul yang memiliki nilai n. 360 00:16:42,780 --> 00:16:47,460 Jadi jika kita menemukan, seperti kita iterasi melalui daftar kami, 361 00:16:47,460 --> 00:16:51,770 node dengan nilai n, itu salah satu yang ingin kita hapus. 362 00:16:51,770 --> 00:16:57,286 Jadi semua menghapus terjadi dalam yang besar jika pernyataan. 363 00:16:57,286 --> 00:16:58,593 Apakah itu masuk akal? 364 00:16:58,593 --> 00:16:59,480 Keren. 365 00:16:59,480 --> 00:16:59,990 Ya? 366 00:16:59,990 --> 00:17:02,864 >> AUDIENCE: Mungkin Anda tidak bisa melihat itu, tetapi tidak anda juga membutuhkan garis 367 00:17:02,864 --> 00:17:06,024 untuk bergulir melalui daftar? 368 00:17:06,024 --> 00:17:06,690 HANNAH: Awesome. 369 00:17:06,690 --> 00:17:10,896 Mari kita membawa hal ini sedikit, dan kita akan membuang itu tepat di bagian bawah. 370 00:17:10,896 --> 00:17:13,282 371 00:17:13,282 --> 00:17:15,490 Mungkin dewan akan sudah menjadi ide yang sedikit lebih baik. 372 00:17:15,490 --> 00:17:17,829 Jadi bagaimana saya akan bergerak pointer ke depan? 373 00:17:17,829 --> 00:17:20,184 >> AUDIENCE: Pointer sama pointer ditambah satu. 374 00:17:20,184 --> 00:17:21,599 >> HANNAH: Beautiful. 375 00:17:21,599 --> 00:17:25,050 Sehingga memungkinkan kita untuk terus iterasi melalui. 376 00:17:25,050 --> 00:17:26,251 OKE. 377 00:17:26,251 --> 00:17:27,750 AUDIENCE: Bukankah ada menjadi lain? 378 00:17:27,750 --> 00:17:29,028 HANNAH: Sekali lagi? 379 00:17:29,028 --> 00:17:32,444 AUDIENCE: Bukankah ada else setelah tua besar jika 380 00:17:32,444 --> 00:17:35,519 Pernyataan [tak terdengar]? 381 00:17:35,519 --> 00:17:36,310 HANNAH: Bagian mana? 382 00:17:36,310 --> 00:17:38,350 Maafkan saya. 383 00:17:38,350 --> 00:17:41,800 >> AUDIENCE: traversal The, seharusnya tidak ada menjadi lain? 384 00:17:41,800 --> 00:17:43,550 HANNAH: Anda benar-benar bisa memiliki lagi. 385 00:17:43,550 --> 00:17:46,930 Karena saya memiliki kembali hak ada, Anda tidak perlu lagi. 386 00:17:46,930 --> 00:17:48,760 Tapi ya, pertanyaan yang bagus. 387 00:17:48,760 --> 00:17:50,170 OK, ya? 388 00:17:50,170 --> 00:17:52,878 AUDIENCE: Dapatkah kita berpikir tentang pointer yang bergerak melalui daftar 389 00:17:52,878 --> 00:17:56,610 sebagai mengambil nilai setiap node dalam daftar? 390 00:17:56,610 --> 00:18:00,650 Atau harus kita menganggapnya sebagai semacam eksternal ke dalam daftar? 391 00:18:00,650 --> 00:18:02,350 >> HANNAH: Salah satu yang baik, saya pikir. 392 00:18:02,350 --> 00:18:05,880 Cara saya membayangkan itu Saya katakan, OK, saya pointer. 393 00:18:05,880 --> 00:18:06,520 Dan ini adalah saya. 394 00:18:06,520 --> 00:18:07,150 Ini adalah tanganku. 395 00:18:07,150 --> 00:18:09,960 Aku akan menunjuk ke berbeda hal yang saya ingin iterate melalui. 396 00:18:09,960 --> 00:18:12,270 Pertama, aku akan menunjukkan kepala daftar. 397 00:18:12,270 --> 00:18:14,144 Dan yang memberitahu saya aku akan menunjuk ke empat. 398 00:18:14,144 --> 00:18:18,060 Dan aku, karena sudah di luar daftar, Saya bisa menunjukkan masing-masing elemen. 399 00:18:18,060 --> 00:18:19,520 Jadi saya menganggap diri sebagai pointer. 400 00:18:19,520 --> 00:18:21,645 AUDIENCE: Jadi, ketika Anda menghapus salah satu elemen, 401 00:18:21,645 --> 00:18:23,404 Anda menghapus diri sendiri, sehingga untuk berbicara. 402 00:18:23,404 --> 00:18:24,070 HANNAH: Tepat. 403 00:18:24,070 --> 00:18:25,920 Jadi Anda menghapus hal Anda menunjuk ke. 404 00:18:25,920 --> 00:18:28,340 Jadi, dalam contoh yang kita lihat di mana kami 405 00:18:28,340 --> 00:18:31,670 mencoba untuk menghapus lima, ketika saya menunjuk ke lima, 406 00:18:31,670 --> 00:18:34,200 Saya ingin menghapus hal yang saya menunjuk ke. 407 00:18:34,200 --> 00:18:35,870 Tepat. 408 00:18:35,870 --> 00:18:36,577 Iya Nih? 409 00:18:36,577 --> 00:18:39,410 AUDIENCE: Apakah kita diurus dengan kasus di mana n tidak ada dalam daftar tersebut? 410 00:18:39,410 --> 00:18:40,460 HANNAH: Jika n tidak dalam daftar? 411 00:18:40,460 --> 00:18:43,501 Semua yang akan terjadi adalah Anda akan iterate melalui dan iterate 412 00:18:43,501 --> 00:18:47,616 melalui, dan kemudian, Anda akan untuk mendapatkan pointer menjadi nol, 413 00:18:47,616 --> 00:18:48,990 dan kemudian Anda akan dilakukan. 414 00:18:48,990 --> 00:18:50,812 >> AUDIENCE: Jadi yang kita miliki kembali apa-apa? 415 00:18:50,812 --> 00:18:51,520 HANNAH: Kita bisa. 416 00:18:51,520 --> 00:18:54,500 Cara yang jika didefinisikan ini fungsi, saya hanya mengatakan bahwa ia mengembalikan 417 00:18:54,500 --> 00:18:55,770 membatalkan terlepas. 418 00:18:55,770 --> 00:18:58,360 Tapi Anda bisa memiliki sesuatu seperti kembali integer, 419 00:18:58,360 --> 00:19:00,920 dan memilikinya kembali negatif 1 jika gagal. 420 00:19:00,920 --> 00:19:03,070 Sesuatu seperti itu. 421 00:19:03,070 --> 00:19:04,494 Pertanyaan with-- ya? 422 00:19:04,494 --> 00:19:05,410 AUDIENCE: [tidak terdengar]? 423 00:19:05,410 --> 00:19:05,993 HANNAH: Maaf? 424 00:19:05,993 --> 00:19:07,419 AUDIENCE: [tidak terdengar]? 425 00:19:07,419 --> 00:19:07,960 HANNAH: Tentu. 426 00:19:07,960 --> 00:19:11,730 Jadi itulah actual-- setelah kami sudah melakukan semua pekerjaan ini bergerak 427 00:19:11,730 --> 00:19:16,530 semua panah ini sekitar, seluruh kami Tujuannya adalah untuk menyingkirkan node 428 00:19:16,530 --> 00:19:18,230 bahwa kita sedang mencari. 429 00:19:18,230 --> 00:19:21,610 Jadi dalam hal ini, membebaskan pointer, jika saya menunjuk ke lima, 430 00:19:21,610 --> 00:19:24,670 itu seperti menghapus simpul tengah ini. 431 00:19:24,670 --> 00:19:27,250 Itulah bagian pointer gratis. 432 00:19:27,250 --> 00:19:29,090 Itu masuk akal? 433 00:19:29,090 --> 00:19:31,390 >> AUDIENCE: Jadi bahkan berpikir Anda tidak [tidak terdengar]? 434 00:19:31,390 --> 00:19:36,060 >> HANNAH: Jadi kita mengasumsikan pada awal kami memiliki beberapa daftar yang already-- 435 00:19:36,060 --> 00:19:37,220 mereka telah menempatkan ini bersama-sama. 436 00:19:37,220 --> 00:19:39,761 Jadi dalam rangka untuk membangun ini daftar, mereka pasti [tidak terdengar]. 437 00:19:39,761 --> 00:19:42,190 438 00:19:42,190 --> 00:19:42,750 Keren. 439 00:19:42,750 --> 00:19:44,490 Ada lagi dengan ini? 440 00:19:44,490 --> 00:19:46,386 Iya Nih? 441 00:19:46,386 --> 00:19:49,204 >> AUDIENCE: Bagaimana jika daftar tidak sama dengan garis nol? 442 00:19:49,204 --> 00:19:49,704 [Tak terdengar]? 443 00:19:49,704 --> 00:19:52,289 444 00:19:52,289 --> 00:19:53,080 HANNAH: Di sini? 445 00:19:53,080 --> 00:19:53,840 AUDIENCE: Ya. 446 00:19:53,840 --> 00:19:57,370 HANNAH: OK, semua yang saya lakukan adalah aku hanya memastikan 447 00:19:57,370 --> 00:20:03,250 bahwa sebelum saya mencoba untuk daftar dereference, sebelum saya mencoba mengakses sebelumnya, 448 00:20:03,250 --> 00:20:07,210 Saya ingin memastikan bahwa itu bukan batal jadi saya tidak mendapatkan kesalahan seg. 449 00:20:07,210 --> 00:20:08,400 Keren. 450 00:20:08,400 --> 00:20:10,820 >> OK, saya tahu ini cukup banyak untuk melewati. 451 00:20:10,820 --> 00:20:14,950 Jadi geser ini akan menjadi dibuat tersedia untuk Anda. 452 00:20:14,950 --> 00:20:17,341 Sehingga Anda dapat pergi melalui itu secara lebih rinci. 453 00:20:17,341 --> 00:20:17,841 Iya Nih? 454 00:20:17,841 --> 00:20:19,749 >> AUDIENCE: Mengapa daftar [tidak terdengar]? 455 00:20:19,749 --> 00:20:24,129 456 00:20:24,129 --> 00:20:24,670 HANNAH: Tentu. 457 00:20:24,670 --> 00:20:27,390 Jadi daftar benar-benar menunjuk ke Unsur ini di sini, 458 00:20:27,390 --> 00:20:29,200 elemen pertama dalam daftar. 459 00:20:29,200 --> 00:20:30,748 Sehingga tidak bisa memiliki sebelumnya. 460 00:20:30,748 --> 00:20:31,736 Iya Nih? 461 00:20:31,736 --> 00:20:35,194 >> AUDIENCE: Apakah titik pointer ke alamat yang sama dalam memori? 462 00:20:35,194 --> 00:20:38,404 Apakah itu menunjuk ke sama alamat dalam memori sebagai node 463 00:20:38,404 --> 00:20:40,640 bahwa itu menunjuk ke? 464 00:20:40,640 --> 00:20:43,865 >> HANNAH: Ya, itu menunjukkan node ini dalam memori. 465 00:20:43,865 --> 00:20:47,190 >> AUDIENCE: Benar, jadi ketika Anda [tidak terdengar]? 466 00:20:47,190 --> 00:20:50,580 >> HANNAH: Dalam arti, ya. 467 00:20:50,580 --> 00:20:51,280 OKE. 468 00:20:51,280 --> 00:20:52,997 Baiklah, mari kita bergerak bersama dengan ini. 469 00:20:52,997 --> 00:20:55,330 Dan jika Anda memiliki pertanyaan lebih lanjut, bertahan pada akhirnya, 470 00:20:55,330 --> 00:20:57,130 dan kita bisa pergi melalui itu lagi. 471 00:20:57,130 --> 00:20:58,120 OK, keren. 472 00:20:58,120 --> 00:21:00,490 Sekarang, kita bisa melanjutkan hash tabel, mencoba, 473 00:21:00,490 --> 00:21:04,940 dan pohon-pohon, yang Anda punya super akrab dengan p-set lima, ejaan. 474 00:21:04,940 --> 00:21:11,020 >> Jadi tabel hash hanya sebuah array dengan daftar sendiri-sendiri terkait 475 00:21:11,020 --> 00:21:14,050 atau ganda terkait daftar datang dari itu. 476 00:21:14,050 --> 00:21:16,380 Jadi kita memiliki semacam array asosiatif. 477 00:21:16,380 --> 00:21:21,280 Dan bagaimana kita tahu mana yang array ember untuk masuk ke dalam, 478 00:21:21,280 --> 00:21:24,137 kita menggunakan fungsi hash. 479 00:21:24,137 --> 00:21:26,470 Jadi dalam hal ini, bisa siapa pun menebak apa fungsi hash 480 00:21:26,470 --> 00:21:28,636 akan hanya didasarkan pada beberapa input dan output? 481 00:21:28,636 --> 00:21:31,392 482 00:21:31,392 --> 00:21:33,194 >> AUDIENCE: Nomor Surat alfabet. 483 00:21:33,194 --> 00:21:33,860 HANNAH: Tepat. 484 00:21:33,860 --> 00:21:36,160 Itu hanya menempatkan mereka dalam urutan abjad. 485 00:21:36,160 --> 00:21:39,280 Segala sesuatu yang dimulai dengan A dimasukkan ke dalam ember pertama. 486 00:21:39,280 --> 00:21:43,340 Semuanya dengan B dimasukkan ke dalam ember kedua, seterusnya, dan sebagainya. 487 00:21:43,340 --> 00:21:45,620 Awesome, OK. 488 00:21:45,620 --> 00:21:48,980 Dan fungsi hash adalah setiap fungsi yang mengambil dalam kata 489 00:21:48,980 --> 00:21:51,910 dan akan memberitahu Anda apa ember itu termasuk dalam. 490 00:21:51,910 --> 00:21:55,150 Jadi yang masuk dalam kami Array itu termasuk dalam. 491 00:21:55,150 --> 00:21:58,080 >> Jadi setiap kali saya memberikan saya hash fungsi kata, 492 00:21:58,080 --> 00:22:00,660 harus memberitahu saya sama tempat setiap saat. 493 00:22:00,660 --> 00:22:03,270 Jadi jika kita menggunakan fungsi hash dari slide sebelumnya 494 00:22:03,270 --> 00:22:05,950 di mana kita menyortir oleh huruf pertama dari alfabet, 495 00:22:05,950 --> 00:22:08,230 setiap kali saya memberikan saya Fungsi hash "apple," 496 00:22:08,230 --> 00:22:10,180 itu harus selalu memberi saya kembali 0. 497 00:22:10,180 --> 00:22:12,890 Jadi jika saya memiliki sebuah apel untuk dimasukkan ke dalam tabel hash saya, 498 00:22:12,890 --> 00:22:17,700 jika saya memberikan "apel" ke fungsi hash saya, itu harus mengatakan, pergi memasukkannya ke dalam ember 0. 499 00:22:17,700 --> 00:22:19,980 Jika saya mencari apel dalam tabel hash saya 500 00:22:19,980 --> 00:22:24,340 dan saya katakan, di mana kekuatan apple hidup, Anda bertanya fungsi hash Anda. 501 00:22:24,340 --> 00:22:26,900 Dan ia mengatakan, pergi untuk ember 0. 502 00:22:26,900 --> 00:22:29,150 Baiklah? 503 00:22:29,150 --> 00:22:32,660 Pertanyaan dengan fungsi hash? 504 00:22:32,660 --> 00:22:34,570 Mengagumkan. 505 00:22:34,570 --> 00:22:37,320 >> Berikut adalah sedikit lebih penjelasan rinci 506 00:22:37,320 --> 00:22:39,570 apa fungsi hash mungkin terlihat seperti. 507 00:22:39,570 --> 00:22:42,230 508 00:22:42,230 --> 00:22:42,960 Baiklah. 509 00:22:42,960 --> 00:22:45,960 Sekarang, masalah dengan hash fungsi dalam dunia yang ideal, 510 00:22:45,960 --> 00:22:48,870 kita hanya akan memiliki satu hal dalam setiap kotak. 511 00:22:48,870 --> 00:22:50,900 Namun dalam kenyataannya, ada tidak hanya satu kata 512 00:22:50,900 --> 00:22:54,280 yang dimulai dengan A. Tidak ada hanya satu kata yang dimulai dengan B. Jadi 513 00:22:54,280 --> 00:22:56,960 dalam hal ini, jika kita tiba-tiba "berry," 514 00:22:56,960 --> 00:22:58,710 dan kami ingin meletakkannya ke dalam tabel hash kami, 515 00:22:58,710 --> 00:23:03,640 dan kita lihat, oh, tidak, pisang adalah sudah ada, apa yang akan kita lakukan? 516 00:23:03,640 --> 00:23:05,900 >> Yah, kita memiliki dua pilihan. 517 00:23:05,900 --> 00:23:07,990 Opsi pertama adalah linear probing, yang 518 00:23:07,990 --> 00:23:11,100 hanya berarti pergi mencari ember kosong berikutnya. 519 00:23:11,100 --> 00:23:14,100 Pergi menemukan entri array kosong berikutnya. 520 00:23:14,100 --> 00:23:15,750 Dan hanya menempatkan "berry" di sana. 521 00:23:15,750 --> 00:23:18,880 Jadi saya tahu itu seharusnya pergi dengan pisang dalam ember satu. 522 00:23:18,880 --> 00:23:22,155 Tapi memasukkannya ke dalam ember tiga, karena ember tiga kosong. 523 00:23:22,155 --> 00:23:24,806 524 00:23:24,806 --> 00:23:26,680 Pilihan lain mungkin apa yang Anda menerapkan 525 00:23:26,680 --> 00:23:29,220 dalam p-set Anda, di mana Anda memiliki chaining terpisah. 526 00:23:29,220 --> 00:23:33,990 Jadi masing-masing ember Anda, masing-masing elemen array, 527 00:23:33,990 --> 00:23:38,410 tidak hanya memegang satu kata, namun sebenarnya memegang pointer ke daftar kata. 528 00:23:38,410 --> 00:23:41,880 Sehingga jika Anda memiliki pisang dalam tabel hash Anda 529 00:23:41,880 --> 00:23:44,740 dan Anda tiba-tiba ingin untuk menambahkan berry, tidak ada masalah. 530 00:23:44,740 --> 00:23:51,110 Cukup tambahkan berry pada akhir, atau awal, dari daftar link. 531 00:23:51,110 --> 00:23:54,040 OK, mengagumkan. 532 00:23:54,040 --> 00:23:58,490 Pertanyaan dengan hash tabel sebelum kita melanjutkan? 533 00:23:58,490 --> 00:23:59,850 >> Baiklah. 534 00:23:59,850 --> 00:24:01,070 Pohon dan mencoba. 535 00:24:01,070 --> 00:24:07,980 OK, jadi ini adalah pilihan lain untuk menerapkan kamus. 536 00:24:07,980 --> 00:24:09,100 Anda bisa membuat mencoba. 537 00:24:09,100 --> 00:24:13,420 Jadi itu adalah jenis khusus dari pohon yang berperilaku seperti tabel hash multi-level. 538 00:24:13,420 --> 00:24:16,862 Jadi, Anda akan melihat gambar di mana Anda memiliki sebuah array yang 539 00:24:16,862 --> 00:24:19,320 menunjuk sekelompok array yang mengarah ke sekelompok array 540 00:24:19,320 --> 00:24:20,390 yang mengarah ke sekelompok array. 541 00:24:20,390 --> 00:24:23,140 Dan kita akan melihat apa yang akan terlihat seperti pada slide di masa depan. 542 00:24:23,140 --> 00:24:26,070 Dan lebih umum, pohon hanya struktur data 543 00:24:26,070 --> 00:24:29,710 dimana data tersebut diselenggarakan di beberapa hirarki. 544 00:24:29,710 --> 00:24:32,610 Jadi di mana kita melihat kita semacam pemahaman 545 00:24:32,610 --> 00:24:36,130 dari tingkat atas, tingkat berikutnya, tingkat berikutnya, tingkat berikutnya. 546 00:24:36,130 --> 00:24:39,690 Jadi ini mungkin yang paling jelas dengan beberapa contoh spesifik. 547 00:24:39,690 --> 00:24:40,880 Jadi, inilah pohon kita. 548 00:24:40,880 --> 00:24:42,970 Anda dapat melihat bahwa itu memiliki tingkat tertentu 549 00:24:42,970 --> 00:24:45,480 bahwa kita mulai dengan simpul akar, satu. 550 00:24:45,480 --> 00:24:47,640 Dan kita bisa turun melalui pohon kita. 551 00:24:47,640 --> 00:24:50,730 552 00:24:50,730 --> 00:24:53,910 >> Sebuah pohon biner adalah jenis tertentu pohon. 553 00:24:53,910 --> 00:24:56,770 Dan satu-satunya spesifikasi untuk pohon biner 554 00:24:56,770 --> 00:25:01,130 adalah bahwa setiap node memiliki paling banyak dua daun. 555 00:25:01,130 --> 00:25:03,960 Jadi Anda tidak akan melihat node ini memiliki tiga atau empat 556 00:25:03,960 --> 00:25:06,880 atau nomor lain daun. 557 00:25:06,880 --> 00:25:11,310 Dan kemudian bahkan lebih spesifik adalah pohon pencarian biner 558 00:25:11,310 --> 00:25:18,010 dimana setiap node ke kiri node akan memiliki nilai yang lebih kecil. 559 00:25:18,010 --> 00:25:21,180 Dan setiap nilai ke hak akan menjadi lebih besar. 560 00:25:21,180 --> 00:25:26,900 Jadi jika Anda melihat 44 di akar kami, ke kiri, 11, 22, dan 33 561 00:25:26,900 --> 00:25:28,940 semua kurang dari akar kami. 562 00:25:28,940 --> 00:25:33,890 Dan di sebelah kanan semua nomor bigger-- 66, 55, dan 77. 563 00:25:33,890 --> 00:25:37,380 Dan properti ini berlaku di setiap tingkat pohon. 564 00:25:37,380 --> 00:25:42,690 >> Jadi ketika kita pergi ke 22, 11, dan 33, masih 11 565 00:25:42,690 --> 00:25:46,950 lebih kecil dari 22 dan 33 lebih besar dari 22. 566 00:25:46,950 --> 00:25:50,160 Dan ini membuat lebih mudah untuk mencari karena jika kita mencari nomor, 567 00:25:50,160 --> 00:25:53,877 kita tahu persis mana cabang untuk mengikuti bawah. 568 00:25:53,877 --> 00:25:56,210 Jadi ini harus mengingatkan Anda sedikit dari pencarian biner. 569 00:25:56,210 --> 00:25:56,967 Ya? 570 00:25:56,967 --> 00:25:58,835 >> AUDIENCE: Jadi ketika Anda menggambarkan biner, 571 00:25:58,835 --> 00:26:00,587 Anda mengatakan itu memiliki paling banyak dua daun? 572 00:26:00,587 --> 00:26:01,170 HANNAH: Mm-hm. 573 00:26:01,170 --> 00:26:02,580 AUDIENCE: Mungkinkah memiliki lebih sedikit? 574 00:26:02,580 --> 00:26:03,121 HANNAH: Ya. 575 00:26:03,121 --> 00:26:06,720 Jadi katakanlah, misalnya, Anda tidak memiliki bahkan beberapa hal 576 00:26:06,720 --> 00:26:11,791 dan Anda tidak bisa mengisi semua Anda daun, tidak apa-apa jika seseorang memiliki satu. 577 00:26:11,791 --> 00:26:12,290 OKE? 578 00:26:12,290 --> 00:26:12,789 Mengagumkan. 579 00:26:12,789 --> 00:26:15,930 Pertanyaan lain di pohon? 580 00:26:15,930 --> 00:26:16,670 OKE. 581 00:26:16,670 --> 00:26:20,110 >> Kembali ke mencoba kami seperti yang saya sedang berbicara sekitar sedikit lebih awal, 582 00:26:20,110 --> 00:26:23,900 bagaimana kita memiliki ini array multi-level. 583 00:26:23,900 --> 00:26:26,280 Jadi dalam hal ini, kita mulai di bagian atas. 584 00:26:26,280 --> 00:26:29,030 Dan kita bisa mengikuti setiap kata yang diberikan ke bawah. 585 00:26:29,030 --> 00:26:30,780 Jadi katakanlah kita ingin untuk mencari Turing. 586 00:26:30,780 --> 00:26:34,380 Kami mulai T, mengikutinya turun ke array yang berisi U, 587 00:26:34,380 --> 00:26:37,350 dan mengikutinya ke bawah sampai kita mencapai delta kecil ini yang 588 00:26:37,350 --> 00:26:39,060 memberitahu kita, ya, Anda menemukan sebuah kata. 589 00:26:39,060 --> 00:26:43,200 590 00:26:43,200 --> 00:26:44,120 Jelas pada mencoba? 591 00:26:44,120 --> 00:26:48,138 Apa saja untuk pergi ke sana? 592 00:26:48,138 --> 00:26:48,908 Iya Nih? 593 00:26:48,908 --> 00:26:51,866 AUDIENCE: Apakah simbol delta harus menempati ruang di dalam coba? 594 00:26:51,866 --> 00:26:54,532 HANNAH: Ya, sehingga tidak tentu bahkan harus delta. 595 00:26:54,532 --> 00:26:57,760 Tapi kita perlu beberapa cara untuk memberitahu kami computer-- maaf, 596 00:26:57,760 --> 00:27:01,130 sehingga kita tahu bahwa TUR tidak sepatah kata pun. 597 00:27:01,130 --> 00:27:04,180 Karena katakanlah kita tidak memiliki Konsep ini delta, konsep ini 598 00:27:04,180 --> 00:27:09,850 ucapan selamat, Anda menemukan sebuah kata, itu akan pergi melalui dan iterate T-U-R, 599 00:27:09,850 --> 00:27:11,300 dan kemudian berkata, mengagumkan, saya menemukannya! 600 00:27:11,300 --> 00:27:12,670 Ini harus menjadi kata. 601 00:27:12,670 --> 00:27:13,720 Tapi itu benar-benar tidak. 602 00:27:13,720 --> 00:27:15,310 Kami ingin seluruh Turing menjadi kata. 603 00:27:15,310 --> 00:27:17,760 Jadi kita harus memiliki sesuatu di end yang mengatakan, selamat, 604 00:27:17,760 --> 00:27:19,051 Anda telah menemukan kata yang sah. 605 00:27:19,051 --> 00:27:21,680 AUDIENCE: Jadi, jika Anda memiliki seperti 26 huruf dalam alfabet, 606 00:27:21,680 --> 00:27:24,560 akan Anda benar-benar memiliki 27 kunci dalam mencoba Anda? 607 00:27:24,560 --> 00:27:26,010 >> HANNAH: Awesome, ya. 608 00:27:26,010 --> 00:27:28,210 Jadi sebenarnya, saya berpikir bahwa akan berada di slide berikutnya. 609 00:27:28,210 --> 00:27:29,440 Ta-da! 610 00:27:29,440 --> 00:27:32,880 Dimana jika Anda memiliki node dalam try Anda, Anda 611 00:27:32,880 --> 00:27:35,800 akan memiliki 27 anak, bukan 26. 612 00:27:35,800 --> 00:27:39,010 613 00:27:39,010 --> 00:27:40,050 Setiap pertanyaan dengan itu? 614 00:27:40,050 --> 00:27:40,550 Ya? 615 00:27:40,550 --> 00:27:44,569 AUDIENCE: Mengapa mencoba mengambil begitu banyak ruang [tak terdengar] saat Anda pergi? 616 00:27:44,569 --> 00:27:47,629 Mengapa dianggap [tidak terdengar]? 617 00:27:47,629 --> 00:27:48,170 HANNAH: Tentu. 618 00:27:48,170 --> 00:27:48,790 Mari kita kembali. 619 00:27:48,790 --> 00:27:52,350 Pertanyaannya adalah, mengapa adalah mencoba jauh lebih besar 620 00:27:52,350 --> 00:27:54,620 dari sesuatu seperti tabel hash. 621 00:27:54,620 --> 00:27:57,790 Jadi untuk masing-masing tingkat, bahkan jika mereka tidak ditarik di sini, 622 00:27:57,790 --> 00:28:01,250 Anda harus memiliki semua 26 karakter. 623 00:28:01,250 --> 00:28:04,420 Dan alasan bahwa Anda tidak bisa mengatakan, oh, tapi seperti untuk Turing, saya 624 00:28:04,420 --> 00:28:07,570 tidak perlu memiliki salah satu dari mereka hal yang sama pada tingkat U. Nah, 625 00:28:07,570 --> 00:28:11,390 jika tiba-tiba Anda ingin menambahkan sesuatu yang seperti T-H, 626 00:28:11,390 --> 00:28:14,800 Anda akan perlu untuk memiliki kemampuan menambahkan kata itu. 627 00:28:14,800 --> 00:28:17,330 Jadi untuk setiap huruf, Anda akan memiliki 628 00:28:17,330 --> 00:28:19,730 memiliki sekelompok array datang dari itu. 629 00:28:19,730 --> 00:28:24,060 Sehingga Anda dapat melihat bagaimana hal itu akan mendapatkan benar-benar besar, benar-benar cepat. 630 00:28:24,060 --> 00:28:26,560 Ada pertanyaan lain? 631 00:28:26,560 --> 00:28:28,980 Baiklah. 632 00:28:28,980 --> 00:28:29,832 Ya? 633 00:28:29,832 --> 00:28:33,210 >> AUDIENCE: Kapan mencoba lebih cepat dari tabel hash? 634 00:28:33,210 --> 00:28:36,280 >> HANNAH: Kapan mencoba lebih cepat dari tabel hash? 635 00:28:36,280 --> 00:28:39,120 Jadi jika Anda telah benar-benar Fungsi hash yang buruk. 636 00:28:39,120 --> 00:28:41,840 Jadi katakanlah aku seperti, inilah fungsi hash Anda. 637 00:28:41,840 --> 00:28:43,660 Tidak peduli apa kata Anda memberi saya, saya selalu 638 00:28:43,660 --> 00:28:47,740 akan memasukkannya ke dalam array yang masuk 0. 639 00:28:47,740 --> 00:28:52,000 Dan jadi kita berakhir dengan hanya menempatkan semuanya dalam satu besar daftar panjang terkait. 640 00:28:52,000 --> 00:28:58,740 Dan waktu pencarian akan mengambil paling buruk n jika di akhir daftar kami. 641 00:28:58,740 --> 00:29:03,150 Dengan mencoba, kita hanya perlu iterate melalui surat dalam kata. 642 00:29:03,150 --> 00:29:07,080 Jadi, bahkan jika kita menambahkan bunch lebih kata-kata untuk mencoba kami, 643 00:29:07,080 --> 00:29:09,620 itu tidak akan membawa kita lagi untuk menemukan kata tertentu. 644 00:29:09,620 --> 00:29:11,750 >> Yang harus kita lakukan adalah, untuk Misalnya, dalam hal ini, 645 00:29:11,750 --> 00:29:17,170 katakanlah kita sedang mencari zoom, kita hanya harus iterate atas 646 00:29:17,170 --> 00:29:19,840 Z-O-O-M, empat huruf. 647 00:29:19,840 --> 00:29:22,250 Jadi itu hanya panjang kata zoom. 648 00:29:22,250 --> 00:29:25,400 Tidak peduli berapa banyak kata yang lebih kita masukkan ke dalam mencoba ini. 649 00:29:25,400 --> 00:29:30,225 Kami selalu bisa mendapatkannya dalam empat langkah. 650 00:29:30,225 --> 00:29:31,215 Mengagumkan. 651 00:29:31,215 --> 00:29:32,205 Iya Nih? 652 00:29:32,205 --> 00:29:34,185 >> AUDIENCE: Jadi [tidak terdengar] adalah array, kan? 653 00:29:34,185 --> 00:29:35,322 >> HANNAH: Mm-hm. 654 00:29:35,322 --> 00:29:37,155 AUDIENCE: Jika Anda mencari [tidak terdengar], 655 00:29:37,155 --> 00:29:40,929 Anda akan harus melalui array Anda untuk menemukan [tidak terdengar]? 656 00:29:40,929 --> 00:29:41,470 HANNAH: Tentu. 657 00:29:41,470 --> 00:29:44,000 AUDIENCE: Bukankah itu mengambil lebih banyak waktu? 658 00:29:44,000 --> 00:29:46,370 HANNAH: Jika aku akan mengatakan bahwa array saya selalu 659 00:29:46,370 --> 00:29:49,250 akan A, B, C, D, E, F, G, bla bla bla, 660 00:29:49,250 --> 00:29:51,630 jadi jika saya selalu tahu itu dalam urutan yang sama persis, 661 00:29:51,630 --> 00:29:53,880 jika saya selalu tahu itu dalam urutan abjad, 662 00:29:53,880 --> 00:29:57,860 Aku hanya bisa mengatakan O adalah nomor begitu dan begitu dalam alfabet. 663 00:29:57,860 --> 00:29:59,620 Hanya melompat ke tempat itu. 664 00:29:59,620 --> 00:30:01,860 Karena ingat, dengan array, kita dapat mengakses 665 00:30:01,860 --> 00:30:06,590 adanya unsur bahwa array konstan waktu jika kita tahu di mana kita cari. 666 00:30:06,590 --> 00:30:09,080 667 00:30:09,080 --> 00:30:09,580 Ya? 668 00:30:09,580 --> 00:30:12,005 >> AUDIENCE: Pada sebelumnya geser [tidak terdengar] 27, 669 00:30:12,005 --> 00:30:14,430 tapi 26 untuk yang pertama. 670 00:30:14,430 --> 00:30:15,400 >> HANNAH: Maaf? 671 00:30:15,400 --> 00:30:18,800 >> AUDIENCE: Apakah bukan yang pertama satu 0, sehingga tidak akan menjadi 26? 672 00:30:18,800 --> 00:30:24,900 >> HANNAH: Tentu, jadi ketika kita mengatakan 27, yang akan memberi kita indeks 0 sampai 26. 673 00:30:24,900 --> 00:30:28,220 Tetapi jika Anda benar-benar menghitung mereka keluar, itu akan menjadi 27. 674 00:30:28,220 --> 00:30:30,007 Pertanyaan yang bagus. 675 00:30:30,007 --> 00:30:30,590 Ada yang lain? 676 00:30:30,590 --> 00:30:31,200 Ya? 677 00:30:31,200 --> 00:30:34,420 >> AUDIENCE: Jadi yang mencoba lebih lambat dari tabel hash? 678 00:30:34,420 --> 00:30:37,920 >> HANNAH: Tries akan menjadi, dalam teori, lebih cepat dari tabel hash 679 00:30:37,920 --> 00:30:39,760 namun mengambil lebih banyak memori. 680 00:30:39,760 --> 00:30:40,534 Ya? 681 00:30:40,534 --> 00:30:41,450 AUDIENCE: [tidak terdengar]? 682 00:30:41,450 --> 00:30:45,770 683 00:30:45,770 --> 00:30:47,484 >> HANNAH: Maaf, saya tidak mendengar Anda. 684 00:30:47,484 --> 00:30:48,400 AUDIENCE: [tidak terdengar]. 685 00:30:48,400 --> 00:30:51,250 686 00:30:51,250 --> 00:30:54,100 0-25 memberikan 26. 687 00:30:54,100 --> 00:30:56,958 >> HANNAH: 0-25 akan memberikan 26, benar. 688 00:30:56,958 --> 00:30:58,457 >> AUDIENCE: Dan kemudian [tidak terdengar]. 689 00:30:58,457 --> 00:30:59,040 HANNAH: Benar. 690 00:30:59,040 --> 00:31:04,760 Jadi jumlah kita menentukan adalah jumlah hal dalam array kita. 691 00:31:04,760 --> 00:31:07,260 Jadi jika kita memiliki 27, itu akan memberi kita 0 692 00:31:07,260 --> 00:31:10,620 sampai 26, yang akan memberikan kami ruang untuk, dalam hal ini, 693 00:31:10,620 --> 00:31:12,770 Saya tidak termasuk apostrof. 694 00:31:12,770 --> 00:31:17,040 Jadi kita sudah 0 sampai 25 adalah pertama 26 huruf abjad, 695 00:31:17,040 --> 00:31:18,990 atau ke-26 huruf abjad. 696 00:31:18,990 --> 00:31:21,190 Dan itulah terakhir hal, pada awal 26, adalah 697 00:31:21,190 --> 00:31:24,598 akan cek mark, atau delta. 698 00:31:24,598 --> 00:31:26,960 Ada yang lain? 699 00:31:26,960 --> 00:31:29,130 Mengagumkan. 700 00:31:29,130 --> 00:31:30,020 Kehilangan ruang saya. 701 00:31:30,020 --> 00:31:31,020 OK, keren. 702 00:31:31,020 --> 00:31:33,240 >> Jadi kita sudah menyentuh ini. 703 00:31:33,240 --> 00:31:37,430 Namun perdagangan besar off antara mencoba dan tabel hash 704 00:31:37,430 --> 00:31:39,720 adalah bahwa mencoba menyediakan, di Teori, konstan mencari 705 00:31:39,720 --> 00:31:42,890 kali tapi menggunakan seluruh banyak memori. 706 00:31:42,890 --> 00:31:46,495 Baiklah, sekarang kita memiliki sedikit struktur lebih rumit, 707 00:31:46,495 --> 00:31:49,640 dan kami akan dilakukan dengan C, dan kami akan bergerak kanan sepanjang. 708 00:31:49,640 --> 00:31:51,930 >> Jadi tumpukan, kami melihat ini dalam kuliah di mana Anda 709 00:31:51,930 --> 00:31:55,020 memiliki sesuatu seperti tumpukan nampan mana 710 00:31:55,020 --> 00:31:57,330 hal terakhir yang Anda menempatkan di stack akan 711 00:31:57,330 --> 00:31:59,500 menjadi hal pertama yang Anda lepas landas. 712 00:31:59,500 --> 00:32:02,880 Jadi itulah yang benar-benar mendefinisikan stack adalah bahwa hal terakhir yang Anda memakai 713 00:32:02,880 --> 00:32:06,080 akan menjadi yang pertama hal yang Anda lepas landas. 714 00:32:06,080 --> 00:32:09,279 Dan istilah yang kita gunakan jika kita akan meletakkan sesuatu, 715 00:32:09,279 --> 00:32:12,070 jika kita akan menambahkan sesuatu untuk tumpukan kami, kita sebut bahwa mendorong. 716 00:32:12,070 --> 00:32:14,970 Dan jika kita mengambil sesuatu off, kita menyebutnya popping. 717 00:32:14,970 --> 00:32:17,080 Dan jika kita akan mengimplementasikan stack, kita 718 00:32:17,080 --> 00:32:20,660 harus yakin untuk melacak baik ukuran dan kapasitas. 719 00:32:20,660 --> 00:32:24,940 Jadi jumlah total elemen kita bisa tahan dan saat ini jumlah elemen 720 00:32:24,940 --> 00:32:27,880 bahwa kita memegang. 721 00:32:27,880 --> 00:32:29,885 >> Dan sangat mirip, kita memiliki antrian. 722 00:32:29,885 --> 00:32:34,510 Dan satu-satunya perbedaan adalah bukan dengan tumpukan, 723 00:32:34,510 --> 00:32:37,630 kita mengatakan hal terakhir yang kita memakai adalah hal pertama yang kita lepas landas. 724 00:32:37,630 --> 00:32:40,940 Jadi dengan antrian, yang Hal pertama yang kita masukkan ke dalam 725 00:32:40,940 --> 00:32:43,129 akan menjadi Hal pertama yang kita mengambil. 726 00:32:43,129 --> 00:32:45,420 Jadi ini seperti jika Anda sebenarnya berbaris di toko 727 00:32:45,420 --> 00:32:48,140 dan Anda sedang membantu, maka orang pertama di baris 728 00:32:48,140 --> 00:32:50,880 harus menjadi orang pertama yang akan membantu. 729 00:32:50,880 --> 00:32:52,220 Sehingga akan menjadi antrian. 730 00:32:52,220 --> 00:32:55,880 >> Jadi kita perlu melacak ukuran, kapasitas, dan kepala karena kita 731 00:32:55,880 --> 00:33:01,130 akan mengambil semua orang dari depan daftar bukan belakang. 732 00:33:01,130 --> 00:33:03,480 Pertanyaan itu? 733 00:33:03,480 --> 00:33:06,330 Pertanyaan C yang mengganggu Anda? 734 00:33:06,330 --> 00:33:09,590 Struktur data, semua itu hal yang menyenangkan? 735 00:33:09,590 --> 00:33:10,530 Baiklah, keren. 736 00:33:10,530 --> 00:33:14,120 Jadi saya akan menyerahkannya kepada Alison ke melompat ke beberapa program lagi. 737 00:33:14,120 --> 00:33:15,965 >> ALISON: Oh, kita akan lihat. 738 00:33:15,965 --> 00:33:17,370 Kita akan melihat seberapa baik saya lakukan di sini. 739 00:33:17,370 --> 00:33:21,410 OK, aku akan mencoba dan terbang melalui hal ini, orang-orang. 740 00:33:21,410 --> 00:33:24,540 Hannah berjalan sangat di mendalam pada semua barang-barangnya. 741 00:33:24,540 --> 00:33:26,900 Aku akan mencoba untuk memberikan Anda gambaran ledakan cepat 742 00:33:26,900 --> 00:33:31,290 sehingga kita bisa mendapatkan Davin dengan semua menyenangkan JavaScript dan keamanan hal-hal 743 00:33:31,290 --> 00:33:33,380 bahwa mungkin Anda benar-benar ingin mendengar lebih banyak tentang. 744 00:33:33,380 --> 00:33:36,600 >> OK, seperti kata Hannah, jika Anda memiliki pertanyaan, 745 00:33:36,600 --> 00:33:39,170 Aku akan terlalu cepat, silahkan, beritahu saya. 746 00:33:39,170 --> 00:33:42,114 Saya akan menjawab pertanyaan-pertanyaan yang diperlukan. 747 00:33:42,114 --> 00:33:45,280 Jadi untuk memulai, kita akan mulai dengan mungkin salah satu hal pertama 748 00:33:45,280 --> 00:33:48,730 Anda pelajari dengan web pemrograman, perizinan. 749 00:33:48,730 --> 00:33:52,720 Jadi chmod, kalian harus sudah master ini dengan semua web 750 00:33:52,720 --> 00:33:54,870 pemrograman yang sudah telah melakukan akhir-akhir ini. 751 00:33:54,870 --> 00:33:57,320 Itu pada dasarnya hanya perintah yang mengubah izin 752 00:33:57,320 --> 00:34:00,779 atau izin akses objek sistem berkas kami. 753 00:34:00,779 --> 00:34:02,570 Tentu saja, untuk benar-benar melihat ini, jika Anda 754 00:34:02,570 --> 00:34:04,910 memiliki masalah dengan ini selama set masalah Anda, 755 00:34:04,910 --> 00:34:11,460 Anda mungkin telah menggunakan ls-l, yang panjang, untuk mendapatkan tampilan jenis seperti ini, 756 00:34:11,460 --> 00:34:14,209 di mana Anda benar-benar melihat semua izin untuk file. 757 00:34:14,209 --> 00:34:16,850 758 00:34:16,850 --> 00:34:20,732 >> Dan sungguh, kami hanya akan pergi melalui cukup cepat hanya cantik 759 00:34:20,732 --> 00:34:21,940 banyak apa masing-masing berarti. 760 00:34:21,940 --> 00:34:24,481 Jadi kita telah d di sini, yang hanya singkatan direktori. 761 00:34:24,481 --> 00:34:26,790 762 00:34:26,790 --> 00:34:31,739 Jelas di sini, kita melihat rwx, yang dibaca, ditulisi, dan dieksekusi. 763 00:34:31,739 --> 00:34:37,090 Ini juga dapat direpresentasikan sebagai bit, yang kita akan masuk ke pada halaman berikutnya. 764 00:34:37,090 --> 00:34:40,699 Jadi setiap triad yang kami lihat di sini, jadi tiga triad. 765 00:34:40,699 --> 00:34:48,120 Kami telah rwx, r tidak x dan r ada x file pertama ini. 766 00:34:48,120 --> 00:34:49,690 Ini struktur umum ini. 767 00:34:49,690 --> 00:34:50,940 >> Jadi kita memiliki beberapa direktori. 768 00:34:50,940 --> 00:34:53,999 Kami memiliki beberapa kelompok pengguna dengan hak akses ini. 769 00:34:53,999 --> 00:34:57,040 Beberapa kelompok yang memiliki izin tersebut, dan dunia yang memiliki izin. 770 00:34:57,040 --> 00:34:59,420 Anda dapat menganggap ini sebagai triad. 771 00:34:59,420 --> 00:35:01,130 Anda dapat menganggap ini sebagai tiga bit. 772 00:35:01,130 --> 00:35:04,060 Jadi mereka bisa memegang nilai-nilai mana saja dari 0 sampai 773 00:35:04,060 --> 00:35:07,350 7, yang mengapa kadang-kadang kami memiliki Anda lakukan chmod 774 00:35:07,350 --> 00:35:17,510 600 bukannya chmod rw apapun. 775 00:35:17,510 --> 00:35:19,170 Kita akan masuk ke contoh di sana. 776 00:35:19,170 --> 00:35:24,260 Tapi pada dasarnya, Anda bisa memikirkan ini sebagai baik hanya rwx, 777 00:35:24,260 --> 00:35:28,520 atau Anda dapat menganggap mereka sebagai beberapa nomor mana yang pertama ini di sini 778 00:35:28,520 --> 00:35:31,480 merupakan angka antara 0 dan 7, yang kedua ini 779 00:35:31,480 --> 00:35:33,970 merupakan angka antara 0 dan 7, dan yang ketiga 780 00:35:33,970 --> 00:35:38,245 merupakan angka antara 0 dan 7, OK? 781 00:35:38,245 --> 00:35:42,700 >> r memiliki nilai 4. w memiliki nilai 2, dan x 782 00:35:42,700 --> 00:35:49,230 memiliki nilai 1, yang mengapa ini izin di sini akan chmod 700. 783 00:35:49,230 --> 00:35:53,520 Karena dalam hal ini di sini, ia mengatakan kita telah bit pertama ada membalik atas. 784 00:35:53,520 --> 00:35:55,380 Jadi kita memiliki 4 untuk membaca. 785 00:35:55,380 --> 00:35:58,730 Kedua bit membalik selama w, yang 2, jadi sekarang kita memiliki 6. 786 00:35:58,730 --> 00:36:02,070 Dan bit ketiga membalik atas untuk x, yaitu 1, sehingga kita mendapatkan tujuh. 787 00:36:02,070 --> 00:36:04,820 Dan tentu saja, kelompok kami dan dunia kita masing-masing 0. 788 00:36:04,820 --> 00:36:07,770 Jadi ini juga merupakan setara dengan chmod 700. 789 00:36:07,770 --> 00:36:12,081 Dan saya pasti akan mencoba untuk memahami pemetaan antara mereka. 790 00:36:12,081 --> 00:36:14,080 Saya tidak yakin jika memiliki datang pada kuis sebelumnya, 791 00:36:14,080 --> 00:36:18,590 tapi itu akan menjadi pertanyaan yang saya mungkin bertanya. 792 00:36:18,590 --> 00:36:22,110 >> Hanya sedikit akan lebih lebih lanjut ke chmod sini, di sini 793 00:36:22,110 --> 00:36:27,730 adalah sangat umum struktur panggilan chmod. 794 00:36:27,730 --> 00:36:29,500 Jadi tentu saja, kami telah chmod sini. 795 00:36:29,500 --> 00:36:34,410 Referensi, apa ini mengacu adalah yang kita memberikan izin ini untuk 796 00:36:34,410 --> 00:36:36,570 atau yang kita mengambil ini izin dari. 797 00:36:36,570 --> 00:36:44,330 Jadi kita memiliki di sini di perizinan, seperti kita telah memberikan chmod plus x, 798 00:36:44,330 --> 00:36:45,440 seperti yang akan kita lihat segera. 799 00:36:45,440 --> 00:36:48,460 hanya berarti memberikan ini khusus izin untuk semua orang. 800 00:36:48,460 --> 00:36:49,600 Beri mereka semua. 801 00:36:49,600 --> 00:36:55,370 Jadi Anda bisa sangat baik u ditambah x atau g ditambah x atau o ditambah x atau beberapa 802 00:36:55,370 --> 00:36:55,870 daripadanya. 803 00:36:55,870 --> 00:36:59,280 Sehingga bagian pertama selalu akan menjadi referensi. 804 00:36:59,280 --> 00:37:03,220 Siapakah kita memberikan izin ini untuk, atau yang kita membawa mereka pergi dari? 805 00:37:03,220 --> 00:37:04,850 >> Yang kedua adalah operator. 806 00:37:04,850 --> 00:37:07,350 Jadi kalian sebagian besar telah ditangani dengan plus. 807 00:37:07,350 --> 00:37:12,140 Hal ini memberikan izin untuk siapa pun yang Anda memberi mereka, 808 00:37:12,140 --> 00:37:14,840 sedangkan dikurangi, logis, menghapus mereka. 809 00:37:14,840 --> 00:37:16,880 Jadi tidak ada yang terlalu mengerikan di sana. 810 00:37:16,880 --> 00:37:23,060 Dan kemudian Modus adalah apa yang kita bicarakan dengan membaca, menulis, atau mengeksekusi. 811 00:37:23,060 --> 00:37:29,070 Jadi plus x berarti memberikan executable izin untuk semua orang. 812 00:37:29,070 --> 00:37:33,430 Dan kemudian, tentu saja, di mana file tertentu atau direktori. 813 00:37:33,430 --> 00:37:33,980 OKE? 814 00:37:33,980 --> 00:37:36,010 Semua orang yang baik dengan chmod? 815 00:37:36,010 --> 00:37:37,850 Lumayan? 816 00:37:37,850 --> 00:37:42,417 >> OK, jadi HTML, salah satu dari Anda cukup tua to-- usia MySpace? 817 00:37:42,417 --> 00:37:44,750 Saya mengirimkan ini ke bagian saya, dan benar-benar setengah orang 818 00:37:44,750 --> 00:37:45,790 menatapku seperti aku gila. 819 00:37:45,790 --> 00:37:47,498 Dan aku seperti, orang-orang, kami tidak setua. 820 00:37:47,498 --> 00:37:48,910 Ayolah. 821 00:37:48,910 --> 00:37:53,360 Jadi HyperText Markup Language, itu jujur ​​hanya satu cara bagi Anda 822 00:37:53,360 --> 00:37:57,990 untuk menampilkan hal-hal tertentu di web. 823 00:37:57,990 --> 00:37:59,210 Jadi itu adalah bahasa markup. 824 00:37:59,210 --> 00:38:00,640 Ini bukan bahasa scripting. 825 00:38:00,640 --> 00:38:02,160 Tidak ada logika di dalamnya. 826 00:38:02,160 --> 00:38:05,710 Hal ini hanya untuk mengubah cara tampilan yang diinginkan. 827 00:38:05,710 --> 00:38:07,670 OK, jadi itu yang penting perbedaan untuk membuat. 828 00:38:07,670 --> 00:38:12,030 Ini dianggap sebagai bahasa markup, bukan bahasa scripting. 829 00:38:12,030 --> 00:38:15,100 >> Jadi di sini kita memiliki tag HTML kita. 830 00:38:15,100 --> 00:38:20,390 Pada slide ini mungkin sebagian besar orang-orang yang Anda harus akrab dengan 831 00:38:20,390 --> 00:38:22,390 dan benar-benar nyaman dengan. 832 00:38:22,390 --> 00:38:25,700 Jadi jelas, kita memiliki tag HTML, yang 833 00:38:25,700 --> 00:38:29,930 menunjuk bahwa segala sesuatu di antara kedua akan HTML. 834 00:38:29,930 --> 00:38:33,070 Kami memiliki beberapa link, yang jelas akan memberikan Anda 835 00:38:33,070 --> 00:38:34,990 link ke halaman web eksternal. 836 00:38:34,990 --> 00:38:37,520 Beberapa judul, dalam kepala kami di sini. 837 00:38:37,520 --> 00:38:40,020 Dan kami memiliki tubuh kita dengan h1, yang merupakan header, 838 00:38:40,020 --> 00:38:42,260 sehingga akan membuatnya bagus dan berani dan lebih besar. 839 00:38:42,260 --> 00:38:46,040 Dan kemudian, kami memiliki beberapa p, yang merupakan paragraf. 840 00:38:46,040 --> 00:38:49,000 Anda mungkin harus tahu dan akrab dengan hal-hal 841 00:38:49,000 --> 00:38:54,030 seperti bagaimana Anda menyisipkan gambar, yang ada kelas header lain? 842 00:38:54,030 --> 00:38:57,240 Saya pasti akan nyaman dengan div. 843 00:38:57,240 --> 00:39:00,840 Jadi ini memiliki mayoritas tag Anda harus akrab dengan. 844 00:39:00,840 --> 00:39:04,370 Tapi tentu saja, seperti dengan segala sesuatu di CS 50, daftar ini tidak lengkap. 845 00:39:04,370 --> 00:39:08,200 Jadi, pastikan Anda memoles itu. 846 00:39:08,200 --> 00:39:13,260 >> CSS, jadi CSS, jika salah satu dari Anda menonton seminar saya dari dua minggu lalu, 847 00:39:13,260 --> 00:39:16,250 benar-benar hanya cara untuk gaya halaman web Anda? 848 00:39:16,250 --> 00:39:18,950 OK, jadi kami memiliki beberapa bahasa markup. 849 00:39:18,950 --> 00:39:23,220 HTML, yang menangani hanya teks dan di mana mungkin pada halaman. 850 00:39:23,220 --> 00:39:25,760 Tapi CSS benar-benar apa yang membuatnya cantik. 851 00:39:25,760 --> 00:39:30,690 Anda bisa memiliki ini dalam HTML Anda file, tapi seperti yang kita akan bicarakan nanti, 852 00:39:30,690 --> 00:39:32,660 Aku cukup yakin itu mungkin menjadi slide berikutnya, itu 853 00:39:32,660 --> 00:39:35,620 adalah praktek yang umum, dan benar-benar praktek yang kita benar-benar mendorong, 854 00:39:35,620 --> 00:39:40,670 bagi Anda untuk menjaga mereka terpisah ketika kita berbicara tentang MVC dan seluruh paradigma. 855 00:39:40,670 --> 00:39:42,490 Itu benar-benar apa ini feed ke. 856 00:39:42,490 --> 00:39:46,110 >> Jadi CSS adalah cara untuk membuat benda terlihat cantik. 857 00:39:46,110 --> 00:39:50,500 Hal-hal di sini, seperti tubuh dan #title dan .info, 858 00:39:50,500 --> 00:39:54,340 ini disebut penyeleksi dan apa mereka lakukan adalah mereka memilih hal-hal tertentu 859 00:39:54,340 --> 00:39:59,260 dalam file HTML Anda dan menerapkan gaya apapun, 860 00:39:59,260 --> 00:40:04,090 semacam hal-hal yang Anda inginkan apa pun, dengan unsur spesifik web Anda 861 00:40:04,090 --> 00:40:04,590 Halaman. 862 00:40:04,590 --> 00:40:08,820 Jadi di sini, kami memiliki warna latar belakang dan warna 863 00:40:08,820 --> 00:40:12,450 dan keluarga font yang menjadi diterapkan untuk apa yang ada di tubuh. 864 00:40:12,450 --> 00:40:15,530 Jadi, jika kita melihat kembali ke sini, itu tidak akan berlaku untuk judul. 865 00:40:15,530 --> 00:40:22,340 Itu hanya akan berlaku untuk apa dalam penyeleksi tubuh ini, OK? 866 00:40:22,340 --> 00:40:25,250 >> Dengan judul di sini, ini adalah akan menjadi hal yang sama, 867 00:40:25,250 --> 00:40:28,410 warna teks menjadi biru hanya akan 868 00:40:28,410 --> 00:40:33,870 untuk mempengaruhi apa yang ada di dalam pemilih judul. 869 00:40:33,870 --> 00:40:36,580 Serta info di sini, teks akan menjadi merah muda, 870 00:40:36,580 --> 00:40:38,600 apapun itu info, yang ada di sini. 871 00:40:38,600 --> 00:40:40,860 Jadi satu-satunya hal yang akan menjadi merah muda pada halaman ini 872 00:40:40,860 --> 00:40:44,100 adalah tanggal, Senin 17 November, 2014. 873 00:40:44,100 --> 00:40:48,770 OK, jadi CSS adalah cara untuk memiliki kontrol lebih over-- ya? 874 00:40:48,770 --> 00:40:51,850 >> AUDIENCE: Mengapa kau harus menggunakan hash dengan judul? 875 00:40:51,850 --> 00:40:55,170 >> HANNAH: Slide berikutnya, janji! 876 00:40:55,170 --> 00:40:56,810 Kita akan sampai di sana. 877 00:40:56,810 --> 00:40:59,830 Jadi ini adalah mengapa kita harus menggunakan hash. 878 00:40:59,830 --> 00:41:03,429 Jadi penyeleksi mengambil tiga utama bentuk yang kita berbicara dengan kalian tentang. 879 00:41:03,429 --> 00:41:05,595 Saya fyou ingin mempelajari lebih lanjut, ada banyak di luar sana. 880 00:41:05,595 --> 00:41:07,540 Ada dokumentasi CSS besar. 881 00:41:07,540 --> 00:41:12,680 Ada nama tag, yang harus dilakukan hanya dengan tag normal Anda dalam HTML. 882 00:41:12,680 --> 00:41:17,210 Jadi h1, p, div, h2, orang-orang macam hal. 883 00:41:17,210 --> 00:41:20,320 Dan kita bisa saja nama mereka seperti. 884 00:41:20,320 --> 00:41:22,650 Jadi seperti yang kita lihat di sini dengan tubuh, itu adalah tag normal. 885 00:41:22,650 --> 00:41:26,660 Jadi kami hanya dapat menempatkan tubuh saat kita berbicara dalam file CSS kami. 886 00:41:26,660 --> 00:41:29,730 >> Dengan judul, seluruh alasan kita memiliki hash ini adalah kita harus apa 887 00:41:29,730 --> 00:41:31,010 dianggap sebagai ID. 888 00:41:31,010 --> 00:41:35,400 Jadi ID harus selalu unik dalam halaman HTML Anda 889 00:41:35,400 --> 00:41:37,930 sehingga ketika Anda mengacu pada itu, Anda 890 00:41:37,930 --> 00:41:41,990 tahu bahwa Anda hanya merujuk satu hal yang spesifik. 891 00:41:41,990 --> 00:41:46,270 Jadi dalam hal ini di sini, dengan kami h1 sini, CS 50 sesi review, 892 00:41:46,270 --> 00:41:47,810 kami memiliki id judul. 893 00:41:47,810 --> 00:41:54,280 Jadi untuk hanya merujuk bahwa sepotong HTML kita, kita melakukan judul hash. 894 00:41:54,280 --> 00:41:58,080 Hanya dengan konvensi, ID yang ditunjuk dengan hash di depan mereka. 895 00:41:58,080 --> 00:42:01,650 Dengan cara yang sama, kita melihat info di sini adalah kelas. 896 00:42:01,650 --> 00:42:06,070 Dan kelas dengan CSS ditunjuk sebagai kelas dot 897 00:42:06,070 --> 00:42:08,895 atau dot apapun kelas itu. 898 00:42:08,895 --> 00:42:10,850 Jadi dalam hal ini di sini, itu info. 899 00:42:10,850 --> 00:42:13,090 >> Jadi saya mengambil kembali. 900 00:42:13,090 --> 00:42:16,200 Kedua hal ini akan merah muda untuk CSS kami di sini 901 00:42:16,200 --> 00:42:18,430 karena mereka berdua memiliki kelas info. 902 00:42:18,430 --> 00:42:23,070 Dan dalam file CSS kami, kami telah ditunjuk bahwa apa-apa dengan kelas info 903 00:42:23,070 --> 00:42:24,120 harus merah muda. 904 00:42:24,120 --> 00:42:25,968 Apakah itu masuk akal? 905 00:42:25,968 --> 00:42:27,435 Iya Nih? 906 00:42:27,435 --> 00:42:30,731 >> AUDIENCE: Jika Anda adalah untuk membuat segala sesuatu di tubuh putih, 907 00:42:30,731 --> 00:42:32,814 dan kemudian Anda mencoba untuk membuat sesuatu di dalamnya biru, 908 00:42:32,814 --> 00:42:34,770 akan yang menyebabkan masalah? 909 00:42:34,770 --> 00:42:37,310 >> HANNAH: Jadi CSS cascading style sheets. 910 00:42:37,310 --> 00:42:40,730 Jadi apa pun yang menuju bawah akan diutamakan. 911 00:42:40,730 --> 00:42:44,080 Jadi jika Anda melakukan sesuatu dengan tubuh, dan engkau membuat semuanya putih, 912 00:42:44,080 --> 00:42:49,300 dan kemudian nanti Anda mengubah judul atau Anda mengubah teks dalam tubuh, 913 00:42:49,300 --> 00:42:50,560 menimpa itu. 914 00:42:50,560 --> 00:42:55,360 Jadi apa pun terhadap bawah akan diutamakan. 915 00:42:55,360 --> 00:42:56,730 Iya Nih? 916 00:42:56,730 --> 00:42:59,627 >> AUDIENCE: Dan ID yang unik, tapi kelas bisa lebih? 917 00:42:59,627 --> 00:43:00,210 HANNAH: Benar. 918 00:43:00,210 --> 00:43:06,320 Jadi ID harus unik, dan kelas dapat sebut sebagai banyak hal yang Anda inginkan. 919 00:43:06,320 --> 00:43:07,580 Ada pertanyaan lain? 920 00:43:07,580 --> 00:43:09,800 Iya Nih. 921 00:43:09,800 --> 00:43:11,210 >> AUDIENCE: [tidak terdengar]. 922 00:43:11,210 --> 00:43:13,509 Aku bertanya-tanya apakah yang membuat perbedaan. 923 00:43:13,509 --> 00:43:15,217 HANNAH: Maafkan aku, apa pertanyaannya? 924 00:43:15,217 --> 00:43:18,960 AUDIENCE: Ada kecil "F" dan modal "F." 925 00:43:18,960 --> 00:43:21,440 HANNAH: Jadi perbedaan antara kecil "f" dan modal "F" 926 00:43:21,440 --> 00:43:22,606 seharusnya tidak membuat perbedaan. 927 00:43:22,606 --> 00:43:26,330 Jadi "f" akan 15 cara baik. 928 00:43:26,330 --> 00:43:28,130 Keren, hal lain? 929 00:43:28,130 --> 00:43:29,930 Semua orang baik, CSS? 930 00:43:29,930 --> 00:43:30,850 Iya Nih? 931 00:43:30,850 --> 00:43:31,790 >> AUDIENCE: Maaf. 932 00:43:31,790 --> 00:43:35,550 Dapatkah Anda memiliki kelas dan ID? 933 00:43:35,550 --> 00:43:38,030 >> HANNAH: Ya, Anda bisa. 934 00:43:38,030 --> 00:43:40,420 Hal dapat memiliki kedua kelas dan ID. 935 00:43:40,420 --> 00:43:44,670 Dan saya sangat merekomendasikan pengujian ini sendiri. 936 00:43:44,670 --> 00:43:50,480 CSS Anda akan belajar terbaik hanya dengan membuat sesuatu, halaman web yang sangat sederhana, 937 00:43:50,480 --> 00:43:53,440 menyusun beberapa CSS, dan hanya melihat bagaimana mereka berinteraksi. 938 00:43:53,440 --> 00:43:56,970 Dan Anda akan mendapatkan yang sangat baik, akal intuitif untuk cara kerjanya. 939 00:43:56,970 --> 00:43:58,810 >> OK, semua orang baik dengan CSS? 940 00:43:58,810 --> 00:44:01,280 Kalian semua akan membuat situs yang indah dengan CSS sekarang. 941 00:44:01,280 --> 00:44:05,460 OK, praktik terbaik, hanya hal yang perlu diingat, hal-hal 942 00:44:05,460 --> 00:44:09,810 itu-- ini adalah mengapa kita dermaga Anda untuk desainer dan yang lainnya. 943 00:44:09,810 --> 00:44:11,820 Jadi menutup semua tag HTML Anda. 944 00:44:11,820 --> 00:44:14,840 Jadi jika Anda memiliki tubuh yang terbuka, harus ada tubuh dekat. 945 00:44:14,840 --> 00:44:18,180 Jika Anda memiliki paragraf terbuka, harus ada ayat dekat. 946 00:44:18,180 --> 00:44:19,555 Periksa untuk melihat halaman Anda memvalidasi. 947 00:44:19,555 --> 00:44:23,330 Kalian harus sangat akrab dengan ini dari p-set tujuh 948 00:44:23,330 --> 00:44:26,350 dengan CS 50 keuangan dengan validator W3. 949 00:44:26,350 --> 00:44:28,340 Dan seperti yang saya katakan sebelumnya, salah satu paradigma besar kami 950 00:44:28,340 --> 00:44:33,780 adalah memisahkan gaya Anda dengan CSS dari markup Anda, yaitu HTML. 951 00:44:33,780 --> 00:44:36,900 Dan kemudian, tentu saja, kita memiliki ini XKCD besar di sini. 952 00:44:36,900 --> 00:44:38,280 Yay, komik lega! 953 00:44:38,280 --> 00:44:41,340 >> OK, TCP / IP. 954 00:44:41,340 --> 00:44:44,650 Antara ini dan HTTP, pada dasarnya mereka berdua protokol. 955 00:44:44,650 --> 00:44:46,810 Jadi Anda hanya bisa memikirkan dari mereka sebagai seperangkat aturan 956 00:44:46,810 --> 00:44:50,110 yang mengatur bagaimana hal-hal bergerak di internet. 957 00:44:50,110 --> 00:44:53,410 Jadi kontrol transmisi protokol, atau protokol internet, 958 00:44:53,410 --> 00:44:57,280 adalah cara untuk memastikan Data yang mendapat di mana itu akan 959 00:44:57,280 --> 00:45:00,030 dan bahwa kita tahu apakah kita pernah hilang data. 960 00:45:00,030 --> 00:45:03,520 Jadi, jika kalian berpikir kembali ke kuliah beberapa minggu yang lalu dengan David 961 00:45:03,520 --> 00:45:06,980 di mana kami memiliki empat amplop, mereka semua nomor seperti salah satu dari empat, 962 00:45:06,980 --> 00:45:11,300 dua dari empat, tiga dari empat, empat dari empat, ini hanya satu set aturan. 963 00:45:11,300 --> 00:45:13,830 Kami berkata, OK, setiap kali kita berada mengirimkan lebih dari satu paket, 964 00:45:13,830 --> 00:45:16,610 kita akan ke nomor dengan apa nomor itu 965 00:45:16,610 --> 00:45:19,040 dan berapa banyak jumlah yang pengguna harus mendapatkan. 966 00:45:19,040 --> 00:45:22,540 >> Dan ini hanya mengatakan siapa pun menerima data apakah mereka 967 00:45:22,540 --> 00:45:26,120 mendapatkan segala sesuatu atau jika sesuatu yang tersesat sepanjang jalan. 968 00:45:26,120 --> 00:45:28,840 Dan mereka harus meminta lagi. 969 00:45:28,840 --> 00:45:31,140 Ini benar-benar hanya satu set aturan. 970 00:45:31,140 --> 00:45:33,650 Itulah cara Anda bisa memikirkan itu, OK? 971 00:45:33,650 --> 00:45:37,700 Dan juga, itu menentukan port, yang kalian can-- saya tahu selama kuliah, 972 00:45:37,700 --> 00:45:39,170 mereka memiliki daftar seluruh port. 973 00:45:39,170 --> 00:45:41,630 Tapi kita tidak memiliki mereka di sini sekarang. 974 00:45:41,630 --> 00:45:45,290 >> Protokol transfer Jadi hypertext adalah, sekali lagi, itu protokol lain. 975 00:45:45,290 --> 00:45:48,630 Jadi itu satu set aturan yang mengatur, dalam hal ini, 976 00:45:48,630 --> 00:45:51,130 bagaimana hypertext ditransfer. 977 00:45:51,130 --> 00:45:54,340 Jadi hanya memungkinkan browser untuk berbicara dengan server web. 978 00:45:54,340 --> 00:45:56,910 Dan seperti yang kita katakan di sini, itu seperti handshaking manusia. 979 00:45:56,910 --> 00:46:00,480 Ini hanya cara untuk memerintah bagaimana server web 980 00:46:00,480 --> 00:46:02,690 akan berinteraksi dengan browser Anda. 981 00:46:02,690 --> 00:46:05,660 Dan kami memiliki hanya beberapa contoh. 982 00:46:05,660 --> 00:46:09,100 Kami memiliki beberapa permintaan sini di mana GET adalah metode. 983 00:46:09,100 --> 00:46:13,760 Kami memiliki HTTP 1.1, yang versi protokol bagi kita. 984 00:46:13,760 --> 00:46:17,230 Dan kemudian, tuan rumah, yang adalah apa yang Kami benar-benar mencoba untuk mengakses. 985 00:46:17,230 --> 00:46:21,800 Dan kemudian, seperti yang Anda lihat di sini, kami mendapatkan beberapa respon dengan 200 ini 986 00:46:21,800 --> 00:46:25,032 OK sebagai kode respon HTTP kami. 987 00:46:25,032 --> 00:46:27,240 Kami memiliki daftar besar aku akan untuk menarik dalam satu detik 988 00:46:27,240 --> 00:46:29,430 bahwa kalian harus akrab dengan. 989 00:46:29,430 --> 00:46:35,750 Dan kami memiliki jenis konten ini text / HTML, yang hanya mengatakan apa jenis data 990 00:46:35,750 --> 00:46:39,990 kita menerima dari server, OK? 991 00:46:39,990 --> 00:46:44,230 Host ini dan jenis konten ini merupakan bagian dari header HTTP. 992 00:46:44,230 --> 00:46:49,610 Anda dapat memiliki sedikit atau sesedikit diperlukan untuk konteks apa 993 00:46:49,610 --> 00:46:50,580 Anda sedang berhadapan dengan. 994 00:46:50,580 --> 00:46:53,371 Kadang-kadang Anda akan memiliki banyak informasi yang datang dari server Anda. 995 00:46:53,371 --> 00:46:56,040 Mungkin mereka sedang meminta banyak informasi dari pengguna. 996 00:46:56,040 --> 00:46:57,600 Ini bervariasi tergantung pada konteksnya. 997 00:46:57,600 --> 00:47:01,144 Jika Anda melihat CS 50 Study, ada lebih banyak tentang itu. 998 00:47:01,144 --> 00:47:03,060 Tapi kami memiliki banyak untuk mendapatkan melalui, jadi aku akan 999 00:47:03,060 --> 00:47:05,760 untuk pergi kanan depan jika itu OK dengan kalian? 1000 00:47:05,760 --> 00:47:07,960 Keren. 1001 00:47:07,960 --> 00:47:08,460 Tahan. 1002 00:47:08,460 --> 00:47:11,182 Saya pasti memiliki seluruh daftar of-- ya! 1003 00:47:11,182 --> 00:47:13,140 Saya tidak tahu mengapa hal ini semua jalan di sini. 1004 00:47:13,140 --> 00:47:15,660 Saya pikir saya benar-benar pindah sementara aku sitting-- 1005 00:47:15,660 --> 00:47:16,540 >> Davin: Apakah Anda ingin mengajarkannya? 1006 00:47:16,540 --> 00:47:17,420 Atau apakah Anda ingin aku mengajarkannya? 1007 00:47:17,420 --> 00:47:20,010 >> AUDIENCE: Saya pikir kita bisa hanya menunjukkan mereka untuk memulai dengan. 1008 00:47:20,010 --> 00:47:22,210 Maksudku, Anda dapat pergi ke mereka lebih lanjut, tapi aku 1009 00:47:22,210 --> 00:47:26,030 pikir itu lebih masuk akal karena saya hanya berbicara tentang status HTTP. 1010 00:47:26,030 --> 00:47:28,200 Jadi, inilah seluruh daftar. 1011 00:47:28,200 --> 00:47:31,730 Saya kira apa yang akan terjadi adalah Davin akan masuk ke mereka nanti. 1012 00:47:31,730 --> 00:47:35,330 Tapi ada daftar keseluruhan, preview rasa yang akan datang. 1013 00:47:35,330 --> 00:47:41,640 OK, kita akan blow-- ini akan untuk menjadi program PHP kecelakaan seperti yang lain. 1014 00:47:41,640 --> 00:47:44,874 >> Jadi PHP, hypertext preprocessor, itu backronym rekursif, 1015 00:47:44,874 --> 00:47:46,540 yang berarti itu bernama sesuatu yang lain. 1016 00:47:46,540 --> 00:47:49,050 Dan kemudian mereka seperti, ini tidak benar-benar masuk akal. 1017 00:47:49,050 --> 00:47:52,210 Jadi mereka hanya bernama itu-- dan itu adalah singkatan, 1018 00:47:52,210 --> 00:47:54,840 jadi mereka hanya membuat PHP hypertext preprocessor, yang 1019 00:47:54,840 --> 00:47:55,980 hanya tidak masuk akal. 1020 00:47:55,980 --> 00:47:57,714 Fun cerita. 1021 00:47:57,714 --> 00:47:58,880 Ini adalah bahasa pemrograman. 1022 00:47:58,880 --> 00:48:02,360 Jadi sebanyak yang saya menekankan bahwa HTML bukan bahasa pemrograman, 1023 00:48:02,360 --> 00:48:05,350 itu adalah bahasa markup, PHP adalah bahasa pemrograman. 1024 00:48:05,350 --> 00:48:07,422 Bagaimana Anda tahu ini adalah karena ada logika. 1025 00:48:07,422 --> 00:48:08,380 Ada conditional. 1026 00:48:08,380 --> 00:48:12,750 Kami memiliki variabel, sedangkan kita memiliki satu pun dari hal-hal di HTML. 1027 00:48:12,750 --> 00:48:16,960 >> Baiklah, maka kita memiliki sedikit ini bit di sini bahwa seperti rasa PHP. 1028 00:48:16,960 --> 00:48:20,510 Jadi dasar, nama variabel mulai dengan tanda dolar. 1029 00:48:20,510 --> 00:48:21,500 Banyak orang-orang seperti itu. 1030 00:48:21,500 --> 00:48:22,371 Mengingatkan kita uang. 1031 00:48:22,371 --> 00:48:22,995 Ini semua besar. 1032 00:48:22,995 --> 00:48:25,280 Kita semua ingin PHP. 1033 00:48:25,280 --> 00:48:28,020 Jadi kita tidak menentukan variabel jenis lagi. 1034 00:48:28,020 --> 00:48:29,995 Hal ini ditentukan pada saat dijalankan. 1035 00:48:29,995 --> 00:48:32,710 1036 00:48:32,710 --> 00:48:35,890 Penafsir akan menjadi seperti, oh, kami hanya akan dijalankan melalui, 1037 00:48:35,890 --> 00:48:39,565 dan menurut konteks, kita akan melihat apa jenis jenis 1038 00:48:39,565 --> 00:48:41,560 variabel tersebut harus memiliki. 1039 00:48:41,560 --> 00:48:42,815 Tidak ada fungsi utama. 1040 00:48:42,815 --> 00:48:43,690 Hal hanya akan berjalan. 1041 00:48:43,690 --> 00:48:47,851 Kalian dengan impor di Anda p-set terakhir, Anda akan melihat ini. 1042 00:48:47,851 --> 00:48:49,350 Ada tidak benar-benar fungsi utama. 1043 00:48:49,350 --> 00:48:52,070 Anda hanya menulis apa Anda ingin terjadi. 1044 00:48:52,070 --> 00:48:53,280 Dan itu hanya semacam terjadi. 1045 00:48:53,280 --> 00:48:56,760 Jadi itulah PHP untuk Anda. 1046 00:48:56,760 --> 00:48:59,180 >> Array sangat mirip. 1047 00:48:59,180 --> 00:49:01,270 Kami masih memiliki braket ini. 1048 00:49:01,270 --> 00:49:05,940 Di sini, kami memiliki beberapa variabel disebut arr, dan itu sama 1049 00:49:05,940 --> 00:49:08,540 to-- kita memiliki normal kita notasi braket. 1050 00:49:08,540 --> 00:49:10,630 Dan kami memiliki beberapa nilai kunci. 1051 00:49:10,630 --> 00:49:14,630 Dan perbedaan besar antara C dan PHP array 1052 00:49:14,630 --> 00:49:19,330 adalah bahwa kita dapat memiliki associate-- ini kita dapat mengaitkan nilai ke kunci. 1053 00:49:19,330 --> 00:49:22,440 Jadi bukan hanya memiliki array yang diindeks 1054 00:49:22,440 --> 00:49:26,630 dengan jumlah atau posisi itu elemen dalam array, 1055 00:49:26,630 --> 00:49:29,060 kita benar-benar bisa mengasosiasikannya dengan kunci. 1056 00:49:29,060 --> 00:49:36,700 Dimana kita dapat mengatakan, OK, saya ingin apa pun Nilai dikaitkan dengan buah. 1057 00:49:36,700 --> 00:49:39,280 Dan mungkin kita memiliki buah pergi ke pisang. 1058 00:49:39,280 --> 00:49:41,760 Jadi akan kembali pisang kepada kami. 1059 00:49:41,760 --> 00:49:44,100 >> Tapi pada dasarnya, yang paling Hal kuat tentang hal ini 1060 00:49:44,100 --> 00:49:47,960 adalah bahwa jika kalian ingat demo dari kuliah di mana kita pada dasarnya 1061 00:49:47,960 --> 00:49:53,050 ejaan Menulis ulang di PHP, dan lookup was-- benar-benar hanya suka, 1062 00:49:53,050 --> 00:49:55,007 apakah kunci ini ada? 1063 00:49:55,007 --> 00:49:56,590 Itu benar-benar jenis kekuatan itu. 1064 00:49:56,590 --> 00:49:58,560 Anda tidak perlu beralih melalui array Anda. 1065 00:49:58,560 --> 00:50:00,311 Kamu tidak perlu tahu apa ruang itu di. 1066 00:50:00,311 --> 00:50:01,976 Bisa jadi pada akhir atau awal. 1067 00:50:01,976 --> 00:50:04,790 Selama Anda tahu kunci yang berhubungan dengan nilai, 1068 00:50:04,790 --> 00:50:09,740 PHP bisa meludah nilai yang benar kembali keluar pada Anda, OK? 1069 00:50:09,740 --> 00:50:12,960 >> Dan kemudian, kami juga hanya baru saja karena kita 1070 00:50:12,960 --> 00:50:16,750 dapat memiliki pasangan nilai kunci tidak berarti Anda harus. 1071 00:50:16,750 --> 00:50:19,180 Anda juga bisa hanya membuat array biasa seperti di sini, 1072 00:50:19,180 --> 00:50:21,540 di bagian bawah, di mana itu hanya satu, dua, tiga, empat. 1073 00:50:21,540 --> 00:50:22,510 Mereka adalah nilai-nilai kita. 1074 00:50:22,510 --> 00:50:25,320 Dan pada kenyataannya, kunci mereka adalah indeks. 1075 00:50:25,320 --> 00:50:26,830 Jadi kunci untuk satu akan menjadi nol. 1076 00:50:26,830 --> 00:50:28,610 Kunci untuk dua akan menjadi satu. 1077 00:50:28,610 --> 00:50:31,910 Seterusnya dan sebagainya, kecuali Anda secara eksplisit menetapkan kunci, 1078 00:50:31,910 --> 00:50:34,630 Anda bisa berasumsi bahwa Nilai hanya indeks mereka. 1079 00:50:34,630 --> 00:50:37,290 Apakah itu masuk akal untuk semua orang? 1080 00:50:37,290 --> 00:50:38,070 Tidak ada pertanyaan? 1081 00:50:38,070 --> 00:50:38,930 Mengagumkan. 1082 00:50:38,930 --> 00:50:44,420 >> OK, foreach adalah cara untuk iterate melalui array Anda. 1083 00:50:44,420 --> 00:50:47,490 Jadi kita memiliki sesuatu di sini, hanya struktur umum. 1084 00:50:47,490 --> 00:50:51,020 Jadi foreach, nama array kita, sebagai apa pun 1085 00:50:51,020 --> 00:50:53,930 Anda ingin memanggil masing-masing elemen dalam array, 1086 00:50:53,930 --> 00:50:57,270 dan kita bisa melakukan sesuatu dengan bahwa unsur atau dengan nilai tersebut. 1087 00:50:57,270 --> 00:50:58,680 Jadi kita memiliki contoh di sini. 1088 00:50:58,680 --> 00:51:05,770 Kami memiliki asosiatif array dengan dua entri ini 1089 00:51:05,770 --> 00:51:10,080 dengan bar dikaitkan dengan foo dan qux dikaitkan dengan baz. 1090 00:51:10,080 --> 00:51:12,180 Jadi tombol yang foo dan baz. 1091 00:51:12,180 --> 00:51:13,650 Nilai bar dan qux. 1092 00:51:13,650 --> 00:51:18,560 Jadi foreach, kita memiliki array kita di sini, sebagai pasangan nilai kunci. 1093 00:51:18,560 --> 00:51:21,560 Hal ini memungkinkan kita untuk mengakses baik kunci dan nilai. 1094 00:51:21,560 --> 00:51:23,680 Mungkin Anda hanya ingin nilai, dalam hal ini 1095 00:51:23,680 --> 00:51:27,640 Anda hanya bisa melakukan seperti arr sebagai $ nilai, dan kemudian Anda 1096 00:51:27,640 --> 00:51:30,640 hanya mengakses nilai Anda iterate melalui. 1097 00:51:30,640 --> 00:51:32,600 Tapi mungkin, untuk beberapa Alasannya, Anda ingin kunci, 1098 00:51:32,600 --> 00:51:35,460 itulah sebabnya saya memilih Contoh ini sebagai gantinya. 1099 00:51:35,460 --> 00:51:40,240 Jadi Anda benar-benar dapat memanipulasi kunci dan nilai dalam hal ini. 1100 00:51:40,240 --> 00:51:41,070 OKE? 1101 00:51:41,070 --> 00:51:41,905 Pertanyaan? 1102 00:51:41,905 --> 00:51:44,279 >> AUDIENCE: Jika Anda ingin hanya memanipulasi kunci, akan 1103 00:51:44,279 --> 00:51:45,910 Anda harus melakukan foreach-- 1104 00:51:45,910 --> 00:51:47,360 >> ALISON: Benar. 1105 00:51:47,360 --> 00:51:50,560 Jadi jika Anda ingin memanipulasi hanya kunci, 1106 00:51:50,560 --> 00:51:53,680 Anda masih akan membutuhkan ini sintaks karena jika Anda hanya 1107 00:51:53,680 --> 00:51:56,930 memiliki arr dengan sesuatu, sebagai salah satu hal, itu 1108 00:51:56,930 --> 00:52:00,070 akan menganggap Anda ingin nilai, bukan kunci. 1109 00:52:00,070 --> 00:52:06,780 Jadi, jika Anda pernah hanya seperti arr dengan, mungkin ini adalah seperti $ elemen, 1110 00:52:06,780 --> 00:52:11,670 itu akan berasumsi bahwa Anda meminta hanya nilai pada setiap titik. 1111 00:52:11,670 --> 00:52:13,879 Jika Anda secara eksplisit ingin melakukan sesuatu dengan kunci, 1112 00:52:13,879 --> 00:52:16,170 bahkan jika Anda tidak akan melakukan apa saja dengan nilai, 1113 00:52:16,170 --> 00:52:18,430 Anda perlu struktur ini yang kita miliki di sini 1114 00:52:18,430 --> 00:52:22,330 di mana Anda secara eksplisit meminta untuk kedua kunci dan nilai. 1115 00:52:22,330 --> 00:52:24,170 Pertanyaan besar. 1116 00:52:24,170 --> 00:52:25,940 Ada yang lain? 1117 00:52:25,940 --> 00:52:27,490 Keren. 1118 00:52:27,490 --> 00:52:29,911 >> Baiklah, PHP dan HTML. 1119 00:52:29,911 --> 00:52:31,410 Oh, kami kembali ke p-set tujuh lagi. 1120 00:52:31,410 --> 00:52:35,380 Jadi ini akan terlihat sedikit akrab. 1121 00:52:35,380 --> 00:52:41,760 Jadi ini adalah beberapa bentuk HTML sederhana yang memiliki beberapa nama input halo. 1122 00:52:41,760 --> 00:52:43,820 Dan kita melihat kami memiliki metode kami GET. 1123 00:52:43,820 --> 00:52:47,430 Dan jika kita ingat dari kami p-set, ketika formulir ini diajukan, 1124 00:52:47,430 --> 00:52:58,130 ia akan mengirimkan sebuah array disebut $ _GET yang memiliki semua masukan ini atau variabel dari 1125 00:52:58,130 --> 00:53:00,490 form yang harus dimanipulasi dalam PHP kita. 1126 00:53:00,490 --> 00:53:03,320 Jadi dalam hal ini, pengguna akan dimasukkan ke dalam nama mereka. 1127 00:53:03,320 --> 00:53:04,370 Mereka mengirimkannya. 1128 00:53:04,370 --> 00:53:07,810 Dan kita melihat bahwa kita mendapatkan beberapa array yang di sini. 1129 00:53:07,810 --> 00:53:09,080 Kami memiliki berbagai GET kami. 1130 00:53:09,080 --> 00:53:11,510 Dan kita mengakses nama. 1131 00:53:11,510 --> 00:53:15,070 >> Jadi yang mengatakan, OK, beri aku nilai yang terkait dengan nama, 1132 00:53:15,070 --> 00:53:16,550 nama menjadi kunci di sini. 1133 00:53:16,550 --> 00:53:21,400 Dan yang memetakan secara langsung apa kami katakan masukan nama kita. 1134 00:53:21,400 --> 00:53:28,960 Jadi ini memberikan Anda kunci untuk apa akan menjadi dalam array Anda di sini. 1135 00:53:28,960 --> 00:53:31,220 Apakah itu masuk akal untuk semua orang? 1136 00:53:31,220 --> 00:53:32,070 Iya Nih? 1137 00:53:32,070 --> 00:53:36,240 >> AUDIENCE: Apakah nama dalam GET merujuk dengan garis ungu di [tidak terdengar]? 1138 00:53:36,240 --> 00:53:37,740 >> ALISON: Ini mengacu pada ini di sini. 1139 00:53:37,740 --> 00:53:43,840 Jadi bidang ini di sini, mengacu pada nama ini di sini. 1140 00:53:43,840 --> 00:53:47,800 Jadi ini bisa saja bernama seperti nomor telepon, atau apa pun. 1141 00:53:47,800 --> 00:53:51,790 Nama ini sebenarnya mengatakan, apa yang Anda menelepon bidang ini? 1142 00:53:51,790 --> 00:53:53,600 Bagaimana Anda akan lihat bidang ini? 1143 00:53:53,600 --> 00:53:57,670 Dan nama ini benar-benar seperti, kita mengatakan bidang ini disebut nama. 1144 00:53:57,670 --> 00:53:59,224 Itulah cara kita akan mengaksesnya. 1145 00:53:59,224 --> 00:54:02,070 >> AUDIENCE: Jadi rasanya, masukan nama sama dengan Bob, dan-- 1146 00:54:02,070 --> 00:54:04,380 >> ALISON: Benar, maka Anda akan mendapatkan Bob di sana. 1147 00:54:04,380 --> 00:54:06,090 Tepat. 1148 00:54:06,090 --> 00:54:07,800 Semua orang keren? 1149 00:54:07,800 --> 00:54:10,990 Baiklah, jadi GET vs POST, ini adalah dua cara utama 1150 00:54:10,990 --> 00:54:14,880 bahwa kita melewatkan data dalam permintaan HTTP. 1151 00:54:14,880 --> 00:54:17,370 Kalian seharusnya melihat kedua hal ini mudah-mudahan. 1152 00:54:17,370 --> 00:54:20,940 Jadi dengan GET, informasi dilewatkan melalui URL. 1153 00:54:20,940 --> 00:54:23,490 Jadi, jika Anda pernah melakukan Google pencarian, YouTube, Anda akan 1154 00:54:23,490 --> 00:54:25,130 mungkin melihat beberapa tanda tanya. 1155 00:54:25,130 --> 00:54:28,230 Dan kemudian, semua kata-kata bahwa Anda hanya menempatkan di sana. 1156 00:54:28,230 --> 00:54:31,410 Dan POST melewati data dalam tubuh pesan HTTP. 1157 00:54:31,410 --> 00:54:36,922 Jadi tidak seperti GET, Anda jenis pertimbangkan bahwa data yang disembunyikan dari pengguna. 1158 00:54:36,922 --> 00:54:38,630 Tapi apa benar-benar penting untuk memahami 1159 00:54:38,630 --> 00:54:44,040 adalah bahwa ini masih seperti tidak aman seperti GET. 1160 00:54:44,040 --> 00:54:48,780 Analogi saya gunakan adalah jika Anda memiliki nomor rekening bank Anda 1161 00:54:48,780 --> 00:54:52,795 dan Anda menulis di luar amplop, itu cukup aman. 1162 00:54:52,795 --> 00:54:55,920 Jika Anda adalah untuk menulis di selembar kertas dan memasukkannya ke dalam amplop, 1163 00:54:55,920 --> 00:54:58,850 itu masih benar-benar tidak aman karena yang perlu anda lakukan adalah membuka bahwa sampai 1164 00:54:58,850 --> 00:55:03,480 dan melihat isi sebenarnya pesan untuk melihat itu. 1165 00:55:03,480 --> 00:55:08,310 Jadi ini adalah "tersembunyi", dan orang-orang seperti untuk pikir itu aman, tapi itu benar-benar tidak. 1166 00:55:08,310 --> 00:55:11,000 Dan aku yakin Davin akan masuk ke dalam itu lagi, mungkin. 1167 00:55:11,000 --> 00:55:12,850 Tapi itu yang penting perbedaan untuk membuat 1168 00:55:12,850 --> 00:55:15,820 dan sesuatu yang benar-benar baik untuk memahami. 1169 00:55:15,820 --> 00:55:19,220 >> OK, SQL, Structured Query Language. 1170 00:55:19,220 --> 00:55:22,220 Semua hal-hal yang kita telah melihat begitu baru-baru ini! 1171 00:55:22,220 --> 00:55:25,400 Jadi itu pada dasarnya hanya dirancang, jelas, untuk mengelola data. 1172 00:55:25,400 --> 00:55:30,560 Kalian punya banyak pengalaman dengan ini dalam tabel dengan PHP MyAdmin. 1173 00:55:30,560 --> 00:55:34,100 Dan ada empat pertanyaan umum bahwa kami ingin kalian tahu. 1174 00:55:34,100 --> 00:55:37,304 Jadi ada pembaruan, insert, pilih, dan menghapus. 1175 00:55:37,304 --> 00:55:38,970 Jadi, pastikan Anda tahu orang-orang yang benar-benar baik. 1176 00:55:38,970 --> 00:55:40,960 Kita akan pergi melalui mereka benar-benar cepat. 1177 00:55:40,960 --> 00:55:44,340 >> Jadi memperbarui, benar-benar, seperti apa Anda mungkin berpikir hal itu terjadi, 1178 00:55:44,340 --> 00:55:46,740 hanya update data dalam database Anda. 1179 00:55:46,740 --> 00:55:48,750 Jadi kita memiliki beberapa contoh di sini. 1180 00:55:48,750 --> 00:55:53,310 Ini adalah umum struktur query pembaruan. 1181 00:55:53,310 --> 00:55:56,150 Jadi kami memperbarui tabel bahwa kita sedang berbicara tentang. 1182 00:55:56,150 --> 00:56:00,520 Dan kami ingin mengatur tertentu nilai-nilai, kolom tertentu 1183 00:56:00,520 --> 00:56:02,600 sama dengan nilai-nilai tertentu. 1184 00:56:02,600 --> 00:56:07,500 Jadi ini hanya update tabel, mengubah nilai dalam semua baris dalam kasus ini. 1185 00:56:07,500 --> 00:56:13,690 Jadi dalam satu ini di sini, aktual Misalnya, kita memiliki insert-- maaf. 1186 00:56:13,690 --> 00:56:17,630 Slide yang maju tanpa saya sadari. 1187 00:56:17,630 --> 00:56:22,230 >> Jadi tabel update ini ditetapkan col1 sama untuk VAL1 mana rumah sama "Currier." 1188 00:56:22,230 --> 00:56:25,300 Apa yang dilakukan adalah hanya perubahan, hanya 1189 00:56:25,300 --> 00:56:28,130 update nilai-nilai ini di tempat-tempat tertentu. 1190 00:56:28,130 --> 00:56:32,300 Jadi dalam satu pertama ini, perubahan ini Nilai untuk segala sesuatu di meja Anda, 1191 00:56:32,300 --> 00:56:32,860 OKE? 1192 00:56:32,860 --> 00:56:35,820 Ini akan mengubah ini kolom untuk setiap entri, 1193 00:56:35,820 --> 00:56:37,020 untuk setiap baris. 1194 00:56:37,020 --> 00:56:40,840 Tapi di mana ini, Anda bisa menganggapnya sebagai kualifikasi. 1195 00:56:40,840 --> 00:56:44,020 Jadi itu hanya akan berubah di tempat-tempat yang sangat spesifik. 1196 00:56:44,020 --> 00:56:47,840 Jadi dalam p-set tujuh, ketika Anda mungkin diperbarui jumlah kas 1197 00:56:47,840 --> 00:56:53,050 bahwa pengguna Anda memiliki, Anda mungkin memiliki beberapa tempat ID sama ID sesi, kan? 1198 00:56:53,050 --> 00:56:55,280 >> Karena Anda tidak ingin mengubah jumlah uang tunai 1199 00:56:55,280 --> 00:56:57,630 untuk setiap orang yang menggunakan website Anda. 1200 00:56:57,630 --> 00:57:00,480 Anda ingin mengubahnya untuk satu orang tertentu, orang itu menjadi 1201 00:57:00,480 --> 00:57:02,410 siapa pun menggunakannya pada waktu itu. 1202 00:57:02,410 --> 00:57:04,320 Yang Tepat? 1203 00:57:04,320 --> 00:57:07,510 OK, jadi masukkan, masukkan nilai-nilai tertentu ke dalam tabel. 1204 00:57:07,510 --> 00:57:11,650 Ini seperti ketika Anda menciptakan pengguna baru. 1205 00:57:11,650 --> 00:57:14,240 Struktur umum di sini adalah menyisipkan ke dalam tabel apapun 1206 00:57:14,240 --> 00:57:15,680 kita bicarakan. 1207 00:57:15,680 --> 00:57:18,910 Nilai, menjadi nilai-nilai yang kita benar-benar ingin menyisipkan. 1208 00:57:18,910 --> 00:57:23,060 OK, jadi seperti yang kita lihat di sini, kami telah memasukkan ke dalam tabel. 1209 00:57:23,060 --> 00:57:27,790 Ini adalah kolom tertentu dengan nilai berhubungan mereka. 1210 00:57:27,790 --> 00:57:29,940 Jadi ini mengatakan, insert baris baru yang berisi 1211 00:57:29,940 --> 00:57:33,660 Nilai VAL1 dan VAL2 bawah ini kolom tertentu. 1212 00:57:33,660 --> 00:57:39,240 >> Jadi mungkin Anda hanya ingin mengisi keluar setengah hal-hal berturut-turut ini. 1213 00:57:39,240 --> 00:57:41,150 Itulah yang bagian ini di sini memungkinkan Anda lakukan. 1214 00:57:41,150 --> 00:57:43,280 Ini memungkinkan Anda benar-benar menentukan bagian mana. 1215 00:57:43,280 --> 00:57:44,244 Iya Nih? 1216 00:57:44,244 --> 00:57:52,150 >> AUDIENCE: Dapatkah Anda hanya [tidak terdengar] Sel-sel di baris [tidak terdengar]? 1217 00:57:52,150 --> 00:57:55,000 >> ALISON: Jika Anda hanya mengisi bagian-bagian tertentu dari baris Anda, 1218 00:57:55,000 --> 00:57:57,480 sisa sel-sel hanya kosong. 1219 00:57:57,480 --> 00:58:02,730 1220 00:58:02,730 --> 00:58:05,660 Selama Anda memungkinkan mereka untuk kosong, itu tidak masalah. 1221 00:58:05,660 --> 00:58:09,570 Jika Anda mencoba untuk mengaksesnya, itu akan kembali beberapa elemen kosong. 1222 00:58:09,570 --> 00:58:13,850 Tetapi penting untuk mengetahui bahwa dalam tabel tertentu, 1223 00:58:13,850 --> 00:58:16,690 mereka harus diizinkan untuk menjadi nol. 1224 00:58:16,690 --> 00:58:18,890 Anda mungkin telah lari ke masalah selama p-set Anda 1225 00:58:18,890 --> 00:58:21,320 karena kita tidak membiarkan nilai-nilai Anda null. 1226 00:58:21,320 --> 00:58:26,110 Tapi Anda dapat menentukan Nilai opsional di meja Anda. 1227 00:58:26,110 --> 00:58:29,640 >> OK, pilih, jadi ini adalah hanya cara untuk mendapatkan 1228 00:58:29,640 --> 00:58:33,790 Data dari meja di beberapa pengenal yang Anda inginkan. 1229 00:58:33,790 --> 00:58:37,990 Jadi pilih star dari meja tempat col sama sesuatu hanya berarti, 1230 00:58:37,990 --> 00:58:43,820 memberikan semua data yang terkait di mana kolom tertentu ini benar. 1231 00:58:43,820 --> 00:58:49,020 Jadi Bintang dalam hal ini akan mengembalikan seluruh baris untuk Anda, OK? 1232 00:58:49,020 --> 00:58:54,880 >> Dan kemudian, dalam hal ini, pilih bintang dari meja hanya memberikan seluruh tabel. 1233 00:58:54,880 --> 00:58:58,940 Dan kemudian, hapus jelas, itu hanya menghapus baris dari tabel. 1234 00:58:58,940 --> 00:59:01,320 Jadi menghapus dari meja, tabel apapun kami 1235 00:59:01,320 --> 00:59:06,830 referensi, di mana beberapa spesifik identifier atau kondisi benar. 1236 00:59:06,830 --> 00:59:07,720 Iya Nih? 1237 00:59:07,720 --> 00:59:08,700 >> AUDIENCE: Pertanyaan. 1238 00:59:08,700 --> 00:59:10,699 Mengapa Anda menggunakan dua kutipan, dan apakah Anda 1239 00:59:10,699 --> 00:59:13,600 melakukan tanda kutip ganda atau tunggal kutipan, apakah itu membuat perbedaan? 1240 00:59:13,600 --> 00:59:18,235 >> ALISON: kutipan Double atau tanda kutip tunggal tidak membuat perbedaan dalam SQL. 1241 00:59:18,235 --> 00:59:19,610 Saya pikir saya melihat pertanyaan lain. 1242 00:59:19,610 --> 00:59:20,814 Iya Nih? 1243 00:59:20,814 --> 00:59:25,070 >> AUDIENCE: Apakah itu tidak mempengaruhi apa akan melarikan diri dari query? 1244 00:59:25,070 --> 00:59:27,945 >> ALISON: Rob? 1245 00:59:27,945 --> 00:59:31,410 >> ROB: Apa yang Anda maksud dengan melarikan diri dari query? 1246 00:59:31,410 --> 00:59:36,870 >> AUDIENCE: Jika seseorang memiliki query tunggal dalam bentuk of-- 1247 00:59:36,870 --> 00:59:39,862 >> ROB: Jika ada orang yang menempatkan kutip tunggal di, 1248 00:59:39,862 --> 00:59:43,560 maka selama Anda sedang sanitasi masukan Anda, maka tidak masalah. 1249 00:59:43,560 --> 00:59:46,205 Tetapi jika Anda menggunakan satu kutipan dan Anda tidak benar 1250 00:59:46,205 --> 00:59:47,914 melarikan diri masukan Anda, maka ya, mereka perlu 1251 00:59:47,914 --> 00:59:51,079 untuk menempatkan satu kutipan untuk memecahkan kode Anda. jika Anda menggunakan tanda kutip ganda, 1252 00:59:51,079 --> 00:59:53,580 mereka harus menempatkan ganda mengutip untuk memecahkan kode Anda. 1253 00:59:53,580 --> 00:59:56,163 Tapi selama Anda menghindari hal-hal benar, tidak masalah. 1254 00:59:56,163 --> 00:59:59,220 Ini hanya akan diterjemahkan dengan simbol yang benar pula. 1255 00:59:59,220 --> 01:00:02,332 >> AUDIENCE: Apa escape artinya? 1256 01:00:02,332 --> 01:00:04,040 ALISON: Yah, seperti sanitasi dan melarikan diri. 1257 01:00:04,040 --> 01:00:06,810 1258 01:00:06,810 --> 01:00:13,820 Ujian yang kita miliki, XKCD besar komik yang mereka menarik di mana Anda memiliki, 1259 01:00:13,820 --> 01:00:15,629 oh-- 1260 01:00:15,629 --> 01:00:16,670 ROB: Ini slide terakhir. 1261 01:00:16,670 --> 01:00:18,500 ALISON: Ini slide terakhir, benar-benar? 1262 01:00:18,500 --> 01:00:20,200 Astaga. 1263 01:00:20,200 --> 01:00:21,780 Di sana kami pergi, sempurna. 1264 01:00:21,780 --> 01:00:27,900 OK, jadi pada dasarnya, Anda dapat menyuntikkan sesuatu ke dalam query SQL ini 1265 01:00:27,900 --> 01:00:30,560 di mana rusak Anda kode, atau sebagai David menunjukkan 1266 01:00:30,560 --> 01:00:38,460 di kelas, jika kita memiliki beberapa tunggal quote 1 sama dengan 1 dan jika dalam kode kami, 1267 01:00:38,460 --> 01:00:41,230 kita hanya langsung menyalin bahwa dalam, dan kami memiliki kutip tunggal berakhir, 1268 01:00:41,230 --> 01:00:44,740 apa yang terjadi adalah kita beberapa ekspresi yang 1269 01:00:44,740 --> 01:00:48,680 bernilai true yang akan membiarkan orang masuk database kami 1270 01:00:48,680 --> 01:00:51,720 dan mendapatkan data yang kita tidak ingin mereka mendapatkan. 1271 01:00:51,720 --> 01:00:54,240 Jadi sanitasi input hanya berarti memastikan 1272 01:00:54,240 --> 01:00:57,680 bahwa kita melarikan diri ini karakter dan menunjuk mereka 1273 01:00:57,680 --> 01:01:01,720 sebagai karakter dan bukan hal-hal yang harus dibiarkan 1274 01:01:01,720 --> 01:01:04,990 harus dipahami secara harfiah sebagai pernyataan SQL kami. 1275 01:01:04,990 --> 01:01:09,980 >> Jadi hal besar yang kami katakan bahwa kalian harus menggunakan 1276 01:01:09,980 --> 01:01:13,650 adalah HTML karakter khusus, yang merupakan sesuatu 1277 01:01:13,650 --> 01:01:15,730 Anda mungkin ingin mengambil melihat. 1278 01:01:15,730 --> 01:01:17,240 OK, hapus. 1279 01:01:17,240 --> 01:01:19,450 Tipe data, ini semua akan online. 1280 01:01:19,450 --> 01:01:23,510 Karena kita telah 15 menit tersisa, aku hanya akan pergi kanan melalui ini. 1281 01:01:23,510 --> 01:01:28,500 PHP dan SQL, pada dasarnya ini adalah hanya kami memiliki fungsi query yang 1282 01:01:28,500 --> 01:01:31,520 membantu melindungi terhadap serangan-serangan berbahaya. 1283 01:01:31,520 --> 01:01:33,970 Jadi setiap kali Anda menggunakan permintaan, kami memastikan 1284 01:01:33,970 --> 01:01:36,560 bahwa hal-hal yang dibersihkan dan yang lainnya. 1285 01:01:36,560 --> 01:01:41,070 >> MVC hanya paradigma desain, jadi model, melihat, pengendali. 1286 01:01:41,070 --> 01:01:44,200 Ini hanya cara untuk menjaga hal-hal bagus dan berpisah dengan cara yang sama 1287 01:01:44,200 --> 01:01:47,100 bahwa kita cenderung faktor keluar kode ke fungsi. 1288 01:01:47,100 --> 01:01:53,390 Ini hanya kerangka desain web yang memungkinkan Anda untuk melakukan hal yang sama. 1289 01:01:53,390 --> 01:01:54,760 Aku akan melewatkan ini. 1290 01:01:54,760 --> 01:01:58,530 >> Ini adalah sesuatu yang saya akan menjadi super nyaman dengan. 1291 01:01:58,530 --> 01:02:01,132 Ini adalah meja kecil yang besar di sana. 1292 01:02:01,132 --> 01:02:03,090 Ini memberi Anda fungsi contoh model. 1293 01:02:03,090 --> 01:02:05,473 Aku hanya akan melalui ini karena saya benar-benar ingin Davin untuk dapat berbicara. 1294 01:02:05,473 --> 01:02:07,140 Jika Anda memiliki pertanyaan, jangan ragu. 1295 01:02:07,140 --> 01:02:07,931 Saya akan berada di sini setelah. 1296 01:02:07,931 --> 01:02:10,360 Hanya datang bicara padaku. 1297 01:02:10,360 --> 01:02:13,380 Dengan itu, kita memiliki status HTTP. 1298 01:02:13,380 --> 01:02:16,270 Dan Davin yang akan meniup melalui ini dalam 15 menit. 1299 01:02:16,270 --> 01:02:17,560 Ini akan menjadi besar. 1300 01:02:17,560 --> 01:02:18,893 >> Davin: OK. 1301 01:02:18,893 --> 01:02:20,312 Uh, mic Anda? 1302 01:02:20,312 --> 01:02:22,210 Ya. 1303 01:02:22,210 --> 01:02:23,336 Mohon Maaf. 1304 01:02:23,336 --> 01:02:24,460 ALISON: Jalan dipersiapkan. 1305 01:02:24,460 --> 01:02:25,335 Davin: Tidak, saya siap. 1306 01:02:25,335 --> 01:02:25,860 Saya siap. 1307 01:02:25,860 --> 01:02:28,790 Mari kita lakukan ini. 1308 01:02:28,790 --> 01:02:29,290 Sudah siap. 1309 01:02:29,290 --> 01:02:30,041 OKE. 1310 01:02:30,041 --> 01:02:30,540 Mohon Maaf. 1311 01:02:30,540 --> 01:02:31,664 Aku menumpahkan kopi pada diri saya sendiri. 1312 01:02:31,664 --> 01:02:36,037 1313 01:02:36,037 --> 01:02:38,210 Aku tidak tahu apakah aku lebih marah bahwa saya terlihat konyol, 1314 01:02:38,210 --> 01:02:40,600 atau bahwa saya tidak memiliki kopi lagi. 1315 01:02:40,600 --> 01:02:44,480 Anyway, hanya pengumuman cepat tentang lembaran kalian punya. 1316 01:02:44,480 --> 01:02:47,994 Jadi lembar ini kalian miliki tidak resmi apa yang ada di kuis. 1317 01:02:47,994 --> 01:02:49,660 Ini adalah resmi apa yang ada di kuis. 1318 01:02:49,660 --> 01:02:52,520 Juga, di situs, kami memberitahu Anda, OK, ini akan berada di kuis. 1319 01:02:52,520 --> 01:02:55,020 Jadi dalam sedikit lembar contekan Anda memiliki, tidak resmi. 1320 01:02:55,020 --> 01:02:56,690 Dan ada kesalahan di dalamnya. 1321 01:02:56,690 --> 01:03:01,490 Jadi yang terbaik untuk tidak hanya membabi buta menggunakannya. 1322 01:03:01,490 --> 01:03:04,390 Jadi ya, itu itu. 1323 01:03:04,390 --> 01:03:05,980 Jadi mari kita masuk ke cepat nyata ini. 1324 01:03:05,980 --> 01:03:07,420 >> Jadi status HTTP. 1325 01:03:07,420 --> 01:03:10,430 Jadi apa yang terjadi ketika website, semuanya baik-baik. 1326 01:03:10,430 --> 01:03:11,144 OK Semuanya. 1327 01:03:11,144 --> 01:03:13,310 Semuanya kembali ke Anda seperti yang Anda inginkan. 1328 01:03:13,310 --> 01:03:15,370 Anda mendapatkan 200 OK. 1329 01:03:15,370 --> 01:03:19,250 301, di mana telah kita ketahui bahwa 301 sebelumnya? 1330 01:03:19,250 --> 01:03:20,890 Tunggu, ada apa? 1331 01:03:20,890 --> 01:03:23,250 Mohon Maaf. 1332 01:03:23,250 --> 01:03:24,980 Kami melihat saya kuliah timah selama keamanan. 1333 01:03:24,980 --> 01:03:30,690 Jadi selama keamanan, jadi jika David mengetik http dan kemudian mencoba untuk pergi ke cs50.net, 1334 01:03:30,690 --> 01:03:31,940 Anda akan melihat 301 pindah. 1335 01:03:31,940 --> 01:03:32,440 Mengapa? 1336 01:03:32,440 --> 01:03:35,570 Karena itu akan mengarahkan Anda secara otomatis ke HTTPS kami. 1337 01:03:35,570 --> 01:03:38,649 >> Jadi 301 bergerak, hanya itu pada dasarnya redirection. 1338 01:03:38,649 --> 01:03:40,190 Dan Anda dapat berpikir tentang hal seperti ini. 1339 01:03:40,190 --> 01:03:43,790 Salah satu status yang dimulai dengan 2 's, mereka seperti, OK, semuanya OK. 1340 01:03:43,790 --> 01:03:46,530 Salah satu status yang mulai dengan 3, yaitu pengalihan. 1341 01:03:46,530 --> 01:03:49,571 Status yang dimulai dengan 4, yang berarti ada beberapa jenis kesalahan klien. 1342 01:03:49,571 --> 01:03:52,440 Status yang dimulai dengan 5, itulah beberapa jenis kesalahan server. 1343 01:03:52,440 --> 01:03:54,680 Jadi Anda jenis putus status seperti itu. 1344 01:03:54,680 --> 01:03:59,120 Jadi 304 tidak tidak dimodifikasi, sehingga dalam Anda server.c p-set, jadi mari kita katakan Anda 1345 01:03:59,120 --> 01:04:00,600 cat.html dimuat. 1346 01:04:00,600 --> 01:04:03,360 Semuanya kembali, Anda mendapatkan 200s, OK, besar. 1347 01:04:03,360 --> 01:04:04,540 >> Katakanlah Anda segar itu. 1348 01:04:04,540 --> 01:04:07,310 Nah, di dalam itu cat.html, Anda memiliki JPEG. 1349 01:04:07,310 --> 01:04:09,520 Nah, JPEG yang tidak akan mendapatkan reloaded. 1350 01:04:09,520 --> 01:04:12,140 Anda tidak akan posting lain GET permintaan ke server, 1351 01:04:12,140 --> 01:04:13,980 dan kemudian mendapatkan semua informasi itu kembali. 1352 01:04:13,980 --> 01:04:17,560 Itu akan hanya be-- gambar yang akan di-cache pada mesin Anda. 1353 01:04:17,560 --> 01:04:19,540 Dan gambar yang akan menjadi 304. 1354 01:04:19,540 --> 01:04:20,720 Jadi itu belum dimodifikasi. 1355 01:04:20,720 --> 01:04:24,600 Jika Anda kemudian menutup, jelas cookie, dan kemudian refresh 1356 01:04:24,600 --> 01:04:27,490 dan mencoba untuk memuat halaman tersebut lagi, Anda akan melihat 200s. 1357 01:04:27,490 --> 01:04:28,910 Anda tidak akan melihat bahwa 304. 1358 01:04:28,910 --> 01:04:32,340 >> 400, permintaan yang buruk, yang nyata cepat, seperti jika Anda 1359 01:04:32,340 --> 01:04:34,880 akan mengirim JSON objek ke server 1360 01:04:34,880 --> 01:04:38,090 dan objek JSON Anda tidak benar, Anda akan melihat sesuatu seperti itu. 1361 01:04:38,090 --> 01:04:39,000 403, dilarang. 1362 01:04:39,000 --> 01:04:40,330 Ketika Anda akan melihat terlarang? 1363 01:04:40,330 --> 01:04:41,394 Mungkin Mungkin? 1364 01:04:41,394 --> 01:04:42,060 AUDIENCE: chmod. 1365 01:04:42,060 --> 01:04:42,950 Davin: Chmod, ya. 1366 01:04:42,950 --> 01:04:44,730 Jadi Anda belum mengatur izin dengan benar. 1367 01:04:44,730 --> 01:04:45,577 404, tidak ditemukan. 1368 01:04:45,577 --> 01:04:46,410 Hanya saja tidak ada. 1369 01:04:46,410 --> 01:04:48,670 Jadi jika Anda mengetik URL yang salah. 1370 01:04:48,670 --> 01:04:53,500 500, kesalahan server internal, server mungkin tidak dikonfigurasi dengan benar. 1371 01:04:53,500 --> 01:04:56,260 Sesuatu yang tidak pada akhir Anda, tetapi sesuatu pada sisi server. 1372 01:04:56,260 --> 01:04:57,240 Dan 503? 1373 01:04:57,240 --> 01:04:59,502 Banyak orang melihat 503s di babak p-set. 1374 01:04:59,502 --> 01:05:00,460 Ketika itu akan terjadi? 1375 01:05:00,460 --> 01:05:04,180 1376 01:05:04,180 --> 01:05:05,660 Aku mendengar bisikan. 1377 01:05:05,660 --> 01:05:07,767 >> AUDIENCE: Ketika Google memutuskan Anda robot. 1378 01:05:07,767 --> 01:05:10,350 Davin: Ya, ketika Google memutuskan Anda robot, Anda mendapatkan 503s. 1379 01:05:10,350 --> 01:05:11,560 Jadi itulah kelebihan beban. 1380 01:05:11,560 --> 01:05:14,620 Jika Anda telah diminta dari server terlalu banyak, itu biasanya bersifat sementara. 1381 01:05:14,620 --> 01:05:15,560 Dan sebagian besar dari Anda melihat itu. 1382 01:05:15,560 --> 01:05:16,185 Jadi Anda melihat 503. 1383 01:05:16,185 --> 01:05:19,282 Anda mungkin telah mengambil sedikit istirahat, maka 503s pergi, 1384 01:05:19,282 --> 01:05:20,490 dan semuanya baik-baik saja. 1385 01:05:20,490 --> 01:05:26,640 >> GABE Real cepat, kapan kalian mendapatkan 500 di mungkin masalah terakhir ini ditetapkan? 1386 01:05:26,640 --> 01:05:27,954 Iya Nih? 1387 01:05:27,954 --> 01:05:30,906 >> AUDIENCE: Biasanya jika Server memiliki file salah tempat 1388 01:05:30,906 --> 01:05:34,650 atau [tidak terdengar] mereka Mesin [tidak terdengar]. 1389 01:05:34,650 --> 01:05:38,870 >> GABE: Jadi mungkin konfigurasi masalah di PHP Anda pada server Anda. 1390 01:05:38,870 --> 01:05:42,250 Tapi mungkin hanya sesuatu seperti koma yang lupa Anda. 1391 01:05:42,250 --> 01:05:44,130 Jika Anda mengetik PHP, beberapa sintaks yang salah 1392 01:05:44,130 --> 01:05:46,000 mungkin mendapatkan sesuatu seperti itu. 1393 01:05:46,000 --> 01:05:46,960 OKE? 1394 01:05:46,960 --> 01:05:48,610 >> Davin: Cool. 1395 01:05:48,610 --> 01:05:51,180 Apakah Anda ingin saya untuk melakukan hal sampai AJAX? 1396 01:05:51,180 --> 01:05:52,950 >> GABE: [tidak terdengar]. 1397 01:05:52,950 --> 01:05:53,450 Davin: OK. 1398 01:05:53,450 --> 01:05:54,230 Jadi apa DOM? 1399 01:05:54,230 --> 01:05:55,290 Apa DOM stand for? 1400 01:05:55,290 --> 01:05:56,990 >> AUDIENCE: model objek dokumen. 1401 01:05:56,990 --> 01:05:57,490 Davin: Nice. 1402 01:05:57,490 --> 01:06:00,775 Dan mengapa kita menyukainya? 1403 01:06:00,775 --> 01:06:02,670 Mengagumkan. 1404 01:06:02,670 --> 01:06:06,651 Benar, sehingga hanya memungkinkan kita untuk mengakses HTML, mengakses halaman sangat cepat. 1405 01:06:06,651 --> 01:06:07,150 Mengapa? 1406 01:06:07,150 --> 01:06:09,980 Karena kita memperlakukan kami Halaman, memperlakukan tag HTML kita, 1407 01:06:09,980 --> 01:06:11,730 memperlakukan semua seolah-olah mereka objek. 1408 01:06:11,730 --> 01:06:13,710 Jika kita memperlakukan mereka seperti mereka benda, maka apa yang bisa kita lakukan? 1409 01:06:13,710 --> 01:06:15,210 Nah, kita bisa memanggil fungsi pada mereka. 1410 01:06:15,210 --> 01:06:16,460 Dan ini penting mengapa? 1411 01:06:16,460 --> 01:06:19,200 Nah, karena kita akan menggunakan JavaScript untuk memperbarui HTML kita, 1412 01:06:19,200 --> 01:06:20,500 memperbarui benda tersebut. 1413 01:06:20,500 --> 01:06:23,869 Jadi jika kita memperlakukan mereka seperti benda, kita kemudian dapat memanggil fungsi-fungsi pada mereka. 1414 01:06:23,869 --> 01:06:26,660 Aku akan masuk ke dalam ini sedikit lebih ketika saya pergi ke JavaScript, 1415 01:06:26,660 --> 01:06:30,510 tetapi Anda semua pernah melihat seperti document.getElementById. 1416 01:06:30,510 --> 01:06:32,870 Jadi dokumen yang Anda elemen, dapatkan elemen dengan ID, 1417 01:06:32,870 --> 01:06:35,087 sehingga Anda akan melihat untuk beberapa ID di tag HTML. 1418 01:06:35,087 --> 01:06:36,920 Dan kemudian, Anda dapat melakukan sesuatu yang lain untuk itu. 1419 01:06:36,920 --> 01:06:40,089 Misalnya, seperti document.body, maka Anda dapat menambahkan anak. 1420 01:06:40,089 --> 01:06:41,630 Jadi Anda akan menemukan dokumen. 1421 01:06:41,630 --> 01:06:42,340 Anda memiliki dokumen. 1422 01:06:42,340 --> 01:06:43,629 Anda akan menemukan tubuh. 1423 01:06:43,629 --> 01:06:44,420 Anda menemukan tubuh. 1424 01:06:44,420 --> 01:06:46,545 Dan kemudian, Anda akan memanggil beberapa fungsi di atasnya. 1425 01:06:46,545 --> 01:06:50,312 Jadi menambahkan anak, dan Anda dapat menambahkan beberapa HTML ke akhir dalam tubuh Anda. 1426 01:06:50,312 --> 01:06:52,520 Jadi pada dasarnya, Anda hanya memperlakukannya seperti sebuah objek. 1427 01:06:52,520 --> 01:06:54,515 Anda memperlakukan HTML tag seperti sebuah objek. 1428 01:06:54,515 --> 01:06:57,071 Dan itu membuatnya sangat mudah dan cepat untuk pergi melalui mereka. 1429 01:06:57,071 --> 01:06:59,070 Tetapi juga memungkinkan Anda untuk memanggil fungsi-fungsi mereka 1430 01:06:59,070 --> 01:07:04,410 sehingga Anda dapat memanipulasi dan mengubah elemen. 1431 01:07:04,410 --> 01:07:10,162 >> GABE: Mengingat hal ini, mengapa JavaScript tersebut bahasa yang bagus untuk berinteraksi dengan HTML? 1432 01:07:10,162 --> 01:07:12,870 Kemungkinannya, ketika orang-orang memilih bahasa untuk browser, 1433 01:07:12,870 --> 01:07:14,990 untuk sisi client, JavaScript benar-benar baik, 1434 01:07:14,990 --> 01:07:16,765 itu benar-benar baik dalam menangani benda. 1435 01:07:16,765 --> 01:07:20,620 Dan objek yang jenis seperti benda yang muncul dalam HTML, 1436 01:07:20,620 --> 01:07:23,940 sehingga sangat mudah untuk JavaScript untuk melakukan semacam penanganan. 1437 01:07:23,940 --> 01:07:24,440 Davin: Nice. 1438 01:07:24,440 --> 01:07:25,670 Jadi di sini hanya contoh. 1439 01:07:25,670 --> 01:07:29,020 Jadi saya pikir pada kuis tahun lalu, atau mungkin dua tahun yang lalu, kami 1440 01:07:29,020 --> 01:07:30,840 meminta Anda untuk membuat sebuah pohon. 1441 01:07:30,840 --> 01:07:32,660 Jadi ini adalah apa yang akan Anda lakukan. 1442 01:07:32,660 --> 01:07:34,255 Jadi Anda mulai dengan dokumen. 1443 01:07:34,255 --> 01:07:36,130 Dan kemudian Anda pada dasarnya hanya melihat tag. 1444 01:07:36,130 --> 01:07:38,100 Jadi jika Anda melihat, kita mulai dengan tag HTML. 1445 01:07:38,100 --> 01:07:41,660 Dan kemudian, Anda mendapatkan petunjuk tentang cara melakukan hal ini didasarkan pada lekukan. 1446 01:07:41,660 --> 01:07:43,870 Jadi kepala jenis bercabang. 1447 01:07:43,870 --> 01:07:46,242 Di dalam kepala, kita memiliki tag lain untuk judul. 1448 01:07:46,242 --> 01:07:47,450 Karena itu, kami memiliki tag judul. 1449 01:07:47,450 --> 01:07:49,760 Dan di dalam itu, kami memiliki beberapa tali. 1450 01:07:49,760 --> 01:07:52,210 Dan kami mewakili string dalam lingkaran. 1451 01:07:52,210 --> 01:07:54,010 Dan semua tag dalam kotak. 1452 01:07:54,010 --> 01:07:56,270 >> Dan jika Anda melihat, jika kita menganggap ini sebagai sebuah pohon, 1453 01:07:56,270 --> 01:07:58,730 dan katakanlah HTML yang orang tua, maka kepala dan tubuh 1454 01:07:58,730 --> 01:07:59,772 akan menjadi saudara. 1455 01:07:59,772 --> 01:08:01,813 Mereka berdua akan menjadi anak-anak orang tua itu. 1456 01:08:01,813 --> 01:08:03,620 Jadi karena mereka kedua saudara, mereka 1457 01:08:03,620 --> 01:08:06,590 akan menjadi semacam sebelah sama lain dalam model pohon kita. 1458 01:08:06,590 --> 01:08:08,590 Dan kemudian, pada dasarnya anda melakukan hal yang sama persis. 1459 01:08:08,590 --> 01:08:13,512 Jadi tidak sulit, tapi kami telah meminta pertanyaan seperti ini sebelumnya di kuis. 1460 01:08:13,512 --> 01:08:15,220 GABE: Apakah ada memiliki pertanyaan sejauh ini? 1461 01:08:15,220 --> 01:08:16,357 Apakah itu baik? 1462 01:08:16,357 --> 01:08:16,856 Davin: Cool. 1463 01:08:16,856 --> 01:08:19,630 1464 01:08:19,630 --> 01:08:21,600 JavaScript, OK, hal-hal yang baik. 1465 01:08:21,600 --> 01:08:24,069 Jadi JavaScript, apa JavaScript? 1466 01:08:24,069 --> 01:08:28,370 Nah, JavaScript is-- itu rumit, tetapi ini 1467 01:08:28,370 --> 01:08:30,727 adalah beberapa highlights Anda harus diingat. 1468 01:08:30,727 --> 01:08:31,810 Pertama, itu longgar diketik. 1469 01:08:31,810 --> 01:08:33,529 Maksudnya itu apa? 1470 01:08:33,529 --> 01:08:35,596 Jadi PHP was-- ya, ada apa? 1471 01:08:35,596 --> 01:08:39,854 >> AUDIENCE: Anda tidak perlu secara eksplisit negara apa jenis variabel itu. 1472 01:08:39,854 --> 01:08:40,479 Davin: Sempurna. 1473 01:08:40,479 --> 01:08:43,270 Jadi dia bilang kau tidak perlu eksplisit menyatakan jenis variabel. 1474 01:08:43,270 --> 01:08:44,160 Itu tepat. 1475 01:08:44,160 --> 01:08:49,700 Jadi di C, jika aku punya int i sama dengan 50, maka dalam PHP, itu hanya seperti ini, $ i, 1476 01:08:49,700 --> 01:08:50,550 sama dengan 50. 1477 01:08:50,550 --> 01:08:54,319 Kemudian pada JavaScript, apa yang akan panggilan itu? 1478 01:08:54,319 --> 01:08:55,260 Var, kan? 1479 01:08:55,260 --> 01:08:56,566 Ini akan seperti var i sama dengan 50. 1480 01:08:56,566 --> 01:08:58,649 Tapi Anda tidak perlu menjadi seperti, OK, ini adalah int. 1481 01:08:58,649 --> 01:09:00,350 OK, ini adalah sebuah string. 1482 01:09:00,350 --> 01:09:01,731 Tidak perlu melakukan itu. 1483 01:09:01,731 --> 01:09:02,939 Ini adalah bahasa ditafsirkan. 1484 01:09:02,939 --> 01:09:04,904 Jadi apa artinya? 1485 01:09:04,904 --> 01:09:06,340 >> AUDIENCE: Tidak dikompilasi. 1486 01:09:06,340 --> 01:09:10,470 >> Davin: Apa yang tidak dikompilasi berarti? 1487 01:09:10,470 --> 01:09:11,392 Ya? 1488 01:09:11,392 --> 01:09:15,336 >> AUDIENCE: Anda tidak memiliki untuk merestrukturisasi kode 1489 01:09:15,336 --> 01:09:18,294 untuk mendapatkannya siap komputer untuk menjalankannya. 1490 01:09:18,294 --> 01:09:23,144 Hanya saja diambil pada saat pelaksanaan dan komputer [tidak terdengar]. 1491 01:09:23,144 --> 01:09:25,560 Davin: Ya, jadi itu akan melewati seorang penerjemah. 1492 01:09:25,560 --> 01:09:26,750 Tapi kau tepat. 1493 01:09:26,750 --> 01:09:28,319 Jadi Anda tidak akan melakukan kompilasi, kan? 1494 01:09:28,319 --> 01:09:30,399 Ketika Anda melakukan Anda PHP dan kode JavaScript, 1495 01:09:30,399 --> 01:09:31,365 Anda tidak pernah disebut kompilasi. 1496 01:09:31,365 --> 01:09:33,779 Anda tidak pernah disebut sesuatu seperti membuat atau sesuatu seperti itu. 1497 01:09:33,779 --> 01:09:34,800 Itu karena itu ditafsirkan. 1498 01:09:34,800 --> 01:09:37,319 Jadi setiap kali ia pergi melalui browser, ia pergi melalui seorang penerjemah. 1499 01:09:37,319 --> 01:09:40,370 Dan itu akan menafsirkannya hanya secara real time segera untuk Anda. 1500 01:09:40,370 --> 01:09:43,770 Jadi apa yang beberapa positif dan negatif untuk memiliki bahasa ditafsirkan 1501 01:09:43,770 --> 01:09:45,258 dan memiliki bahasa yang dikompilasi? 1502 01:09:45,258 --> 01:09:48,240 1503 01:09:48,240 --> 01:09:50,540 Jadi compiling-- ya, ada apa? 1504 01:09:50,540 --> 01:09:52,444 >> AUDIENCE: Ditafsirkan lebih lambat. 1505 01:09:52,444 --> 01:09:53,319 Davin: Dalam arti? 1506 01:09:53,319 --> 01:09:57,167 1507 01:09:57,167 --> 01:09:59,091 >> AUDIENCE: Setelah Anda kompilasi, Anda tidak memiliki 1508 01:09:59,091 --> 01:10:04,400 untuk melakukan langkah-langkah tambahan untuk mengeksekusi itu, sedangkan ini [tidak terdengar]. 1509 01:10:04,400 --> 01:10:05,570 >> Davin: Benar, sempurna. 1510 01:10:05,570 --> 01:10:08,386 Jadi apa yang Anda katakan adalah pada dasarnya kompilasi itu, 1511 01:10:08,386 --> 01:10:10,760 ketika Anda mengkompilasi, Anda memiliki banyak biaya dimuka, kan? 1512 01:10:10,760 --> 01:10:11,760 Kau akan melakukan kompilasi. 1513 01:10:11,760 --> 01:10:13,750 Tapi setelah Anda compile, yang compiler akan mengoptimalkan itu. 1514 01:10:13,750 --> 01:10:14,840 Ini akan menjadi cepat. 1515 01:10:14,840 --> 01:10:16,170 Itu akan pada dasarnya secepat mungkin. 1516 01:10:16,170 --> 01:10:18,830 Dengan menafsirkan, Anda tidak pernah memiliki biaya dimuka. 1517 01:10:18,830 --> 01:10:22,260 Sebaliknya, itu akan menjadi sedikit lebih lambat setiap kali Anda menafsirkannya. 1518 01:10:22,260 --> 01:10:24,940 Dan Anda akan harus menafsirkannya setiap saat. 1519 01:10:24,940 --> 01:10:27,114 Jadi alih-alih memiliki ini satu biaya waktu, sekarang kau 1520 01:10:27,114 --> 01:10:29,530 akan harus menafsirkannya setiap kali halaman merender. 1521 01:10:29,530 --> 01:10:31,890 >> Jadi juru baik karena Anda tidak perlu melakukan kompilasi, 1522 01:10:31,890 --> 01:10:33,980 tapi mereka buruk dalam setiap mengatur waktu beban halaman, itu 1523 01:10:33,980 --> 01:10:35,771 akan harus menafsirkan JavaScript ini. 1524 01:10:35,771 --> 01:10:40,520 Dan itu akan berjalan sedikit lebih lambat daripada jika Anda melakukan kompilasi. 1525 01:10:40,520 --> 01:10:43,044 Memungkinkan Anda untuk communicate-- oh, tunggu. 1526 01:10:43,044 --> 01:10:44,960 Digunakan untuk memanipulasi konten dan penampilan. 1527 01:10:44,960 --> 01:10:46,043 Kami hanya berbicara tentang hal itu. 1528 01:10:46,043 --> 01:10:47,250 Menggunakan DOM. 1529 01:10:47,250 --> 01:10:49,930 AJAX, kita akan masuk ke AJAX dalam sedikit. 1530 01:10:49,930 --> 01:10:51,520 Dan kemudian, itu sisi klien. 1531 01:10:51,520 --> 01:10:53,110 Jadi PHP adalah sisi server. 1532 01:10:53,110 --> 01:10:54,360 JavaScript adalah sisi klien. 1533 01:10:54,360 --> 01:10:57,780 Apa positif itu? 1534 01:10:57,780 --> 01:10:58,280 Ia mengatakan itu. 1535 01:10:58,280 --> 01:11:01,480 1536 01:11:01,480 --> 01:11:02,780 Ini lebih cepat, kan? 1537 01:11:02,780 --> 01:11:05,282 Karena Anda tidak memiliki to-- itu lebih cepat. 1538 01:11:05,282 --> 01:11:07,490 Anda tidak harus berkomunikasi dengan beberapa perangkat lain. 1539 01:11:07,490 --> 01:11:08,790 Jika Anda hanya pada Anda klien, Anda tidak pernah 1540 01:11:08,790 --> 01:11:11,280 akan harus pergi dan lihat apa yang ada di server 1541 01:11:11,280 --> 01:11:13,150 dan kemudian melaporkan kembali atau sesuatu seperti itu. 1542 01:11:13,150 --> 01:11:15,410 Jadi sisi klien cenderung menjadi sedikit lebih cepat. 1543 01:11:15,410 --> 01:11:17,910 >> GABE: Ya, tapi ini bukan berarti PHP adalah 1544 01:11:17,910 --> 01:11:20,440 lebih cepat dari JavaScript atau apapun dari sejenisnya. 1545 01:11:20,440 --> 01:11:23,270 Mereka menjalankan jenis di sama kecepatan karena mereka berdua 1546 01:11:23,270 --> 01:11:24,490 bahasa ditafsirkan. 1547 01:11:24,490 --> 01:11:26,680 Hal yang lambat di sini adalah permintaan. 1548 01:11:26,680 --> 01:11:28,870 Jadi Anda benar-benar akan semua jalan ke Brasil 1549 01:11:28,870 --> 01:11:31,460 untuk mendapatkan informasi yang tinggal di sana. 1550 01:11:31,460 --> 01:11:34,590 Tapi PHP dan JavaScript, mereka jenis berjalan dalam kecepatan yang sama. 1551 01:11:34,590 --> 01:11:37,930 Ini bukan salah satu yang lebih cepat dari yang lain. 1552 01:11:37,930 --> 01:11:40,600 Ini, juga, trik pertanyaan di sini. 1553 01:11:40,600 --> 01:11:47,338 Jadi JavaScript pernah menjadi kode mesin, benar atau salah? 1554 01:11:47,338 --> 01:11:48,590 >> AUDIENCE: Salah. 1555 01:11:48,590 --> 01:11:49,090 GABE: Salah. 1556 01:11:49,090 --> 01:11:51,298 Ini harus menjadi mesin kode karena kode mesin adalah 1557 01:11:51,298 --> 01:11:53,210 satu-satunya hal mesin mengerti. 1558 01:11:53,210 --> 01:11:55,800 Meskipun tidak dikompilasi, masih menjadi kode mesin 1559 01:11:55,800 --> 01:11:59,120 karena penafsir hanya sebuah program yang berjalan baris demi baris 1560 01:11:59,120 --> 01:12:02,170 dan mengubah baris yang menjadi sesuatu yang komputer mengerti. 1561 01:12:02,170 --> 01:12:02,825 OKE? 1562 01:12:02,825 --> 01:12:03,325 Keren. 1563 01:12:03,325 --> 01:12:08,530 1564 01:12:08,530 --> 01:12:12,890 >> Davin: Berikut ini hanya sangat dasar halo program JavaScript dunia. 1565 01:12:12,890 --> 01:12:15,590 Jadi saya tidak tahu if-- Anda pernah melihat ini. 1566 01:12:15,590 --> 01:12:17,630 Tapi Anda hanya memiliki HTML di sini. 1567 01:12:17,630 --> 01:12:21,020 Dan bukan benar-benar menempatkan JavaScript di tag script, 1568 01:12:21,020 --> 01:12:22,810 sehingga Anda akan biasanya menaruhnya di kepala. 1569 01:12:22,810 --> 01:12:24,030 Anda memiliki tag script. 1570 01:12:24,030 --> 01:12:24,870 Anda drop di sana. 1571 01:12:24,870 --> 01:12:28,350 Semua yang kami lakukan di sini adalah kita sudah dihubungkan in-- jadi kami telah terhubung dalam sebuah file JavaScript 1572 01:12:28,350 --> 01:12:29,137 seperti ini. 1573 01:12:29,137 --> 01:12:30,470 Dan Anda semua telah melakukan ini, kan? 1574 01:12:30,470 --> 01:12:34,740 Jadi, ketika Anda menggunakan jQuery dan underscore.js di babak p-set, 1575 01:12:34,740 --> 01:12:38,700 Anda tidak memiliki ton kode di tag script Anda, di kepala Anda. 1576 01:12:38,700 --> 01:12:41,415 Anda bisa melakukan itu, tetapi Anda hanya menghubungkan dalam. 1577 01:12:41,415 --> 01:12:43,540 Dan Anda menghubungkan dalam hanya suka Anda lakukan dengan CSS. 1578 01:12:43,540 --> 01:12:50,186 Jadi itu hanya membuat lebih mudah untuk membaca begitu kode Anda tidak seperti 1.000 baris panjang 1579 01:12:50,186 --> 01:12:52,310 dengan ton fungsi yang Anda mungkin tidak akan menggunakan. 1580 01:12:52,310 --> 01:12:53,518 >> Sebaliknya, Anda hanya link dalam. 1581 01:12:53,518 --> 01:12:55,050 Ini compartmentalizes itu. 1582 01:12:55,050 --> 01:13:00,110 Ini seperti menulis beberapa file header, dan kemudian termasuk file header di C. 1583 01:13:00,110 --> 01:13:01,620 Anggap saja seperti ini. 1584 01:13:01,620 --> 01:13:02,680 Jadi, apa ini lakukan? 1585 01:13:02,680 --> 01:13:04,560 Nah, ini akan dijalankan. 1586 01:13:04,560 --> 01:13:05,410 Ini akan mengingatkan. 1587 01:13:05,410 --> 01:13:08,020 Jadi Anda akan mendapatkan sedikit pop up disebut halo dunia. 1588 01:13:08,020 --> 01:13:11,420 Pertanyaan singkat, hanya kewarasan cek, sehingga Anda lihat di sini di dalam tubuh, 1589 01:13:11,420 --> 01:13:13,160 mengatakan tubuh, HTML sini. 1590 01:13:13,160 --> 01:13:14,080 Apa yang lebih dulu? 1591 01:13:14,080 --> 01:13:16,864 Apakah saya melihat tubuh, HTML sini, atau apakah saya melihat peringatan yang pertama? 1592 01:13:16,864 --> 01:13:19,828 1593 01:13:19,828 --> 01:13:20,820 >> AUDIENCE: Pemberitahuan. 1594 01:13:20,820 --> 01:13:21,470 >> Davin: Benar. 1595 01:13:21,470 --> 01:13:22,110 Dia mengatakan waspada. 1596 01:13:22,110 --> 01:13:22,610 Mengapa? 1597 01:13:22,610 --> 01:13:24,470 >> AUDIENCE: Karena Anda pergi dari atas ke bawah. 1598 01:13:24,470 --> 01:13:25,600 >> Davin: Ya. 1599 01:13:25,600 --> 01:13:26,100 Sempurna. 1600 01:13:26,100 --> 01:13:29,207 Jadi katanya, Anda pergi dari atas ke bawah, yang benar-benar benar. 1601 01:13:29,207 --> 01:13:30,790 Anda akan pergi dari atas ke bawah. 1602 01:13:30,790 --> 01:13:34,790 Dan dalam JavaScript, jQuery, Anda memiliki fungsi yang seperti onload, atau siap, 1603 01:13:34,790 --> 01:13:38,030 dan mengatakan, OK, tunggu sampai semua HTML ini telah dimuat. 1604 01:13:38,030 --> 01:13:39,580 Dan kemudian, panggilan JavaScript. 1605 01:13:39,580 --> 01:13:42,190 Karena kita tidak memiliki itu di sini, Hal pertama yang akan terjadi 1606 01:13:42,190 --> 01:13:43,920 adalah itu akan pergi dari atas ke bawah. 1607 01:13:43,920 --> 01:13:46,310 Ini akan memukul bahwa JS sebut, itu akan mengingatkan. 1608 01:13:46,310 --> 01:13:49,510 Setelah itu Anda klik OK, peringatan yang hilang. 1609 01:13:49,510 --> 01:13:53,600 Maka itu akan menunjukkan Anda HTML tubuh di sini. 1610 01:13:53,600 --> 01:13:54,590 Nice. 1611 01:13:54,590 --> 01:14:00,880 >> OK, jadi hanya nyata cepat, menulis dalam JavaScript super cepat. 1612 01:14:00,880 --> 01:14:02,710 Dalam rangka untuk menyatakan variabel, nama var. 1613 01:14:02,710 --> 01:14:07,070 Jadi di C, Anda memiliki int i, Anda harus untuk menyatakan apa jenis itu. 1614 01:14:07,070 --> 01:14:08,040 PHP, $. 1615 01:14:08,040 --> 01:14:08,755 JavaScript, var. 1616 01:14:08,755 --> 01:14:09,630 Kami berbicara tentang hal ini. 1617 01:14:09,630 --> 01:14:11,020 Baiklah, mari kita pergi. 1618 01:14:11,020 --> 01:14:12,510 >> Loops, hal yang sama. 1619 01:14:12,510 --> 01:14:14,230 Hal yang sama. 1620 01:14:14,230 --> 01:14:18,165 Deklarasi fungsi, sehingga seperti Anda lihat di C. 1621 01:14:18,165 --> 01:14:21,290 Satu-satunya hal yang berbeda begitu ketika Anda bisa bahasa pemrograman lain, 1622 01:14:21,290 --> 01:14:24,780 seperti ketika Anda mengambil 51 semester berikutnya dan Anda lakukan dengan OCAML, 1623 01:14:24,780 --> 01:14:26,690 Anda dapat menangani fungsi anonim. 1624 01:14:26,690 --> 01:14:28,240 Jadi itulah yang Anda miliki di sini. 1625 01:14:28,240 --> 01:14:31,560 Jadi Anda ingin dimasukkan ke dalam sum, beberapa jenis nilai sum. 1626 01:14:31,560 --> 01:14:33,870 Tapi Anda mungkin hanya melakukannya sekali. 1627 01:14:33,870 --> 01:14:37,310 Jadi Anda tidak ingin menyebutnya fungsi sum, memberikan deklarasi fungsi. 1628 01:14:37,310 --> 01:14:39,830 Sebaliknya, Anda hanya menggunakannya sebagai fungsi anonim. 1629 01:14:39,830 --> 01:14:42,469 Dan Anda telah melihat ini banyak. 1630 01:14:42,469 --> 01:14:44,510 Anda akan melihat contoh ini dalam beberapa slide. 1631 01:14:44,510 --> 01:14:45,597 Ya, kita lihat saja nanti. 1632 01:14:45,597 --> 01:14:46,430 GABE: Pertanyaan yang bagus. 1633 01:14:46,430 --> 01:14:50,660 Kapan Anda ingin menggunakan fungsi anonim di sini? 1634 01:14:50,660 --> 01:14:54,111 Pada dasarnya, ketika Anda menginginkan sesuatu, seperti acara, terjadi. 1635 01:14:54,111 --> 01:14:55,860 Jadi ketika mouse diklik, misalnya, 1636 01:14:55,860 --> 01:14:57,790 Anda ingin beberapa fungsi yang akan dipanggil. 1637 01:14:57,790 --> 01:15:00,570 Jadi Anda lulus ke acara tersebut handler, Anda lolos ke acara tersebut, 1638 01:15:00,570 --> 01:15:02,870 jenis, fungsi yang Anda ingin disebut. 1639 01:15:02,870 --> 01:15:04,710 Dan apa yang Anda lewat seperti, di akhir 1640 01:15:04,710 --> 01:15:08,757 hari, hanya pointer ke bahwa instruksi, ke fungsi. 1641 01:15:08,757 --> 01:15:11,090 Jadi tidak seperti Anda lewat seluruh kode, seperti 1642 01:15:11,090 --> 01:15:12,173 pointer ke fungsi. 1643 01:15:12,173 --> 01:15:17,871 Dan kemudian, ketika seseorang mengklik mouse, maka fungsi yang dipanggil. 1644 01:15:17,871 --> 01:15:22,340 >> Davin: Array, sehingga Anda memiliki deklarasi array yang. 1645 01:15:22,340 --> 01:15:23,990 Kemudian, sebuah array untuk meletakkan segala sesuatu dalam. 1646 01:15:23,990 --> 01:15:25,769 Nyata cepat, apa yang akan mencetak ini? 1647 01:15:25,769 --> 01:15:27,060 Apa yang akan menjadi elemen ketiga? 1648 01:15:27,060 --> 01:15:31,470 1649 01:15:31,470 --> 01:15:32,450 >> AUDIENCE: "JS". 1650 01:15:32,450 --> 01:15:33,940 >> Davin: Benar, itu akan menjadi "JS." 1651 01:15:33,940 --> 01:15:35,760 Tunggu, kembali. 1652 01:15:35,760 --> 01:15:37,100 Apa panjang? 1653 01:15:37,100 --> 01:15:38,117 >> AUDIENCE: Tiga. 1654 01:15:38,117 --> 01:15:38,950 Davin: Tiga, kan? 1655 01:15:38,950 --> 01:15:40,210 Apa yang Anda pikirkan. 1656 01:15:40,210 --> 01:15:42,072 OK, sekarang pergi. 1657 01:15:42,072 --> 01:15:43,530 Array, Anda dapat menambahkan hal-hal kepada mereka. 1658 01:15:43,530 --> 01:15:45,395 Jadi Anda bisa melampaui batas awal mereka. 1659 01:15:45,395 --> 01:15:46,740 Hanya sesuatu yang perlu diingat. 1660 01:15:46,740 --> 01:15:49,760 PHP, JavaScript, mereka sedikit Sedikit lebih pemaaf dalam hal hal 1661 01:15:49,760 --> 01:15:50,570 seperti itu. 1662 01:15:50,570 --> 01:15:54,260 Benda, sangat mirip struct di C, sangat banyak 1663 01:15:54,260 --> 01:15:56,590 seperti array asosiatif di PHP. 1664 01:15:56,590 --> 01:15:58,720 Anda semua punya pengalaman dengan ini. 1665 01:15:58,720 --> 01:16:01,880 Jadi JSON, ketika Anda melewati JSON bolak-balik dalam p-set delapan, 1666 01:16:01,880 --> 01:16:03,260 itu objek. 1667 01:16:03,260 --> 01:16:06,290 >> Jadi ya, contoh, contoh cepat nyata. 1668 01:16:06,290 --> 01:16:07,880 Berikut adalah obyek. 1669 01:16:07,880 --> 01:16:12,700 Cara Anda referensi ini objek, jadi hanya nyata cepat, 1670 01:16:12,700 --> 01:16:18,630 katakanlah saya ingin menemukan keluar, OK, apa saja? 1671 01:16:18,630 --> 01:16:20,681 Dan nama objek di sini adalah CS50. 1672 01:16:20,681 --> 01:16:23,180 Dan kemudian jika saya memiliki asosiatif array, bagaimana aku akan melakukannya? 1673 01:16:23,180 --> 01:16:24,580 Saya akan menggunakan kunci, kan? 1674 01:16:24,580 --> 01:16:26,030 Jadi saya memiliki nama array. 1675 01:16:26,030 --> 01:16:30,160 Saya memiliki braket, kutipan, kunci, kutipan end, akhir braket, 1676 01:16:30,160 --> 01:16:33,610 dan yang akan referensi yang elemen di dalam array asosiatif saya. 1677 01:16:33,610 --> 01:16:37,646 Bagaimana cara direferensikan Tentu saja dalam objek saya? 1678 01:16:37,646 --> 01:16:39,170 Ada yang tahu? 1679 01:16:39,170 --> 01:16:40,622 >> AUDIENCE: [tidak terdengar]. 1680 01:16:40,622 --> 01:16:41,784 >> Davin: Ada apa? 1681 01:16:41,784 --> 01:16:42,700 AUDIENCE: CS50.course. 1682 01:16:42,700 --> 01:16:43,510 Davin: Benar, ya. 1683 01:16:43,510 --> 01:16:45,320 Jadi CS50.course. 1684 01:16:45,320 --> 01:16:48,770 Jadi cara Anda referensi hal-hal dalam objek JSON adalah dengan sebuah titik. 1685 01:16:48,770 --> 01:16:53,114 >> AUDIENCE: Anda juga dapat menggunakan sintaks array. 1686 01:16:53,114 --> 01:16:54,050 >> Davin: OK, baik. 1687 01:16:54,050 --> 01:16:57,544 >> GABE: Anda juga dapat menggunakan CS50 braket, string, seperti tanda kutip. 1688 01:16:57,544 --> 01:16:59,210 AUDIENCE: Saya pikir itu identik dengan PHP. 1689 01:16:59,210 --> 01:17:00,293 GABE: Ini hal yang sama. 1690 01:17:00,293 --> 01:17:02,487 Davin: Baik! 1691 01:17:02,487 --> 01:17:03,945 Tapi Anda akan melihat tempat-tempat lain ini. 1692 01:17:03,945 --> 01:17:08,990 1693 01:17:08,990 --> 01:17:10,480 Ya, begitu terus. 1694 01:17:10,480 --> 01:17:13,330 Ini adalah apa yang saya katakan. 1695 01:17:13,330 --> 01:17:17,840 Jadi dalam contoh JavaScript jQuery. 1696 01:17:17,840 --> 01:17:19,440 Jadi ini adalah DOM saya, kan? 1697 01:17:19,440 --> 01:17:22,290 1698 01:17:22,290 --> 01:17:25,410 Nyata cepat, jadi saya memiliki kepala, hello world, tubuh. 1699 01:17:25,410 --> 01:17:26,160 Saya memiliki tombol. 1700 01:17:26,160 --> 01:17:27,870 Ia mengatakan "mendorong saya," jadi saya ingin mendorongnya. 1701 01:17:27,870 --> 01:17:29,745 Dan saya ingin melakukan sesuatu ketika itu diklik. 1702 01:17:29,745 --> 01:17:31,220 Benar, berikutnya. 1703 01:17:31,220 --> 01:17:34,630 >> Benar, jadi ini saya JavaScript. 1704 01:17:34,630 --> 01:17:37,790 Jadi jQuery hanya lebih mudah cara untuk menulis JavaScript. 1705 01:17:37,790 --> 01:17:40,920 Jadi ini, dan apa yang saya akan menunjukkan Anda selanjutnya, akan menjadi jQuery, 1706 01:17:40,920 --> 01:17:41,930 adalah identik. 1707 01:17:41,930 --> 01:17:43,990 Jadi mereka akan melakukan hal yang sama. 1708 01:17:43,990 --> 01:17:45,974 Hanya jQuery cenderung menjadi sedikit lebih mudah. 1709 01:17:45,974 --> 01:17:47,140 Orang cenderung menyukai lebih. 1710 01:17:47,140 --> 01:17:48,390 Ini memiliki banyak fungsi. 1711 01:17:48,390 --> 01:17:49,830 Jadi orang cenderung menggunakan jQuery. 1712 01:17:49,830 --> 01:17:53,270 Kamu semua digunakan jQuery di babak p-set. 1713 01:17:53,270 --> 01:17:54,270 Jadi apa yang akan melakukan ini? 1714 01:17:54,270 --> 01:17:56,580 Apa yang akan JavaScript-- ini jadi ini sekadar JavaScript. 1715 01:17:56,580 --> 01:17:57,430 Apa yang akan melakukan hal ini? 1716 01:17:57,430 --> 01:18:00,600 1717 01:18:00,600 --> 01:18:03,450 Apa yang akan ia lakukan? 1718 01:18:03,450 --> 01:18:04,890 >> Jadi pertama, Anda melihat jendela onload. 1719 01:18:04,890 --> 01:18:05,390 Yang Tepat? 1720 01:18:05,390 --> 01:18:06,640 Jadi kita tidak melihat itu sebelumnya. 1721 01:18:06,640 --> 01:18:09,380 Jadi ini akan menunggu sampai seluruh beban jendela. 1722 01:18:09,380 --> 01:18:12,770 Jadi itu akan menunggu sampai HTML, semua gambar beban 1723 01:18:12,770 --> 01:18:13,770 sebelum melakukan sesuatu. 1724 01:18:13,770 --> 01:18:16,050 Jadi katakanlah DOM kami telah dimuat. 1725 01:18:16,050 --> 01:18:17,270 Semuanya ada di sana. 1726 01:18:17,270 --> 01:18:19,080 Lalu apa yang akan terjadi? 1727 01:18:19,080 --> 01:18:19,922 Ya? 1728 01:18:19,922 --> 01:18:22,880 >> AUDIENCE: Tombol muncul. 1729 01:18:22,880 --> 01:18:25,201 >> Davin: Tombol sudah ada. 1730 01:18:25,201 --> 01:18:26,700 Ya, jadi tombol yang sudah ada. 1731 01:18:26,700 --> 01:18:31,190 Tapi ini akan berkata, OK, jika saya klik tombol, 1732 01:18:31,190 --> 01:18:33,650 sehingga tombol sudah ada, seperti itu tag HTML. 1733 01:18:33,650 --> 01:18:35,980 Tunggu, kembali cepat. 1734 01:18:35,980 --> 01:18:39,470 Tag ini tepat di sini adalah akan menjadi tombol sudah. 1735 01:18:39,470 --> 01:18:40,810 Sudah ada tombol. 1736 01:18:40,810 --> 01:18:44,120 Tapi kemudian, JavaScript tag, di sini, 1737 01:18:44,120 --> 01:18:46,160 ia mengatakan, OK, saya ingin untuk mendapatkan elemen dengan ID, 1738 01:18:46,160 --> 01:18:50,300 sehingga tombol pencarian hanya mengatakan, OK, saya ingin untuk memetakan variabel ini untuk tombol itu. 1739 01:18:50,300 --> 01:18:53,120 Jadi variabel yang hanya sebuah cara yang lebih mudah untuk mengakses tombol itu. 1740 01:18:53,120 --> 01:18:57,300 Dan saya katakan, OK, jika saya klik itu tombol, jadi jika saya klik elemen itu, 1741 01:18:57,300 --> 01:18:59,560 dan elemen ini mengacu tombol, jika saya klik, 1742 01:18:59,560 --> 01:19:00,875 maka saya ingin memanggil fungsi. 1743 01:19:00,875 --> 01:19:03,500 Berikut adalah salah satu anonim fungsi kami bicarakan. 1744 01:19:03,500 --> 01:19:04,840 >> Panggil saja beberapa fungsi. 1745 01:19:04,840 --> 01:19:08,840 Di dalam fungsi tersebut, pada dasarnya sesuatu yang kita telah melihat banyak, waspada. 1746 01:19:08,840 --> 01:19:10,477 Anda klik tombol pencarian. 1747 01:19:10,477 --> 01:19:12,060 Itu akan pada dasarnya memiliki tombol. 1748 01:19:12,060 --> 01:19:13,040 Anda klik. 1749 01:19:13,040 --> 01:19:14,040 Anda mendapatkan peringatan itu. 1750 01:19:14,040 --> 01:19:14,850 X keluar. 1751 01:19:14,850 --> 01:19:15,754 Itu dia. 1752 01:19:15,754 --> 01:19:16,254 Ya? 1753 01:19:16,254 --> 01:19:21,980 >> AUDIENCE: Jadi, jika Anda menempatkan script [Tak terdengar], tag script dalam HTML Anda? 1754 01:19:21,980 --> 01:19:24,300 >> Davin: Anda dapat menempatkan script tag lurus di kepala 1755 01:19:24,300 --> 01:19:30,667 karena Anda memiliki onload ini. 1756 01:19:30,667 --> 01:19:32,000 Ini juga bahwa Anda memiliki klik. 1757 01:19:32,000 --> 01:19:34,166 Jadi itu akan menunggu sampai Anda klik sesuatu. 1758 01:19:34,166 --> 01:19:37,470 Tapi onload hanya untuk menjadi aman, untuk membuat yakin semuanya beban ke dalam HTML 1759 01:19:37,470 --> 01:19:38,170 sebelumnya. 1760 01:19:38,170 --> 01:19:39,247 Ya? 1761 01:19:39,247 --> 01:19:40,330 Anda ingin mengatakan sesuatu? 1762 01:19:40,330 --> 01:19:41,080 >> GABE: [tidak terdengar]. 1763 01:19:41,080 --> 01:19:42,485 Davin: Ya. 1764 01:19:42,485 --> 01:19:45,426 >> AUDIENCE: hindari Jadi onload mendefinisikan tombol pencarian variabel 1765 01:19:45,426 --> 01:19:49,930 dengan hanya mengatakan document.getElementById tombol pencarian dot [tidak terdengar]. 1766 01:19:49,930 --> 01:19:52,320 >> Davin: Pasti, tapi kemudian string Anda hanya akan besar. 1767 01:19:52,320 --> 01:19:55,553 Tepat, jadi ini hanya untuk membuatnya lebih mudah bagi Anda, ya. 1768 01:19:55,553 --> 01:19:56,053 Iya Nih? 1769 01:19:56,053 --> 01:19:57,886 >> AUDIENCE: Mana kami membuat window.onload? 1770 01:19:57,886 --> 01:19:58,951 Atau document.ready? 1771 01:19:58,951 --> 01:20:00,590 >> Davin: Ya, ada. 1772 01:20:00,590 --> 01:20:02,094 Ya, ada, saya diperiksa. 1773 01:20:02,094 --> 01:20:03,710 >> GABE: Tidak bagi mereka untuk peduli. 1774 01:20:03,710 --> 01:20:06,970 >> Davin: OK, jadi aku akan untuk memberitahu Anda tetap. 1775 01:20:06,970 --> 01:20:11,005 Jadi pada dasarnya, hanya secara umum, sehingga window.onload menunggu sampai DOM Anda, semua 1776 01:20:11,005 --> 01:20:12,180 HTML Anda, beban. 1777 01:20:12,180 --> 01:20:13,513 Ini menunggu sampai beban gambar Anda. 1778 01:20:13,513 --> 01:20:14,930 Ini menunggu sampai semuanya beban. 1779 01:20:14,930 --> 01:20:18,410 document.ready, itu hanya menunggu sampai beban DOM Anda. 1780 01:20:18,410 --> 01:20:22,190 Setelah HTML adalah semua ada, sekali DOM Anda di sana, mulai berjalan. 1781 01:20:22,190 --> 01:20:23,400 Itulah satu-satunya perbedaan. 1782 01:20:23,400 --> 01:20:24,700 >> GABE: kewarasan Cepat cek di sini. 1783 01:20:24,700 --> 01:20:29,060 Jadi ini dapat dilihat jenis seperti baris kode, kan? 1784 01:20:29,060 --> 01:20:33,600 Karena itu window.onload sama banyak hal. 1785 01:20:33,600 --> 01:20:39,030 Ketika JavaScript membaca ini, benar atau palsu, fungsi dijalankan. 1786 01:20:39,030 --> 01:20:40,020 Salah. 1787 01:20:40,020 --> 01:20:40,920 OKE? 1788 01:20:40,920 --> 01:20:44,470 Apa yang terjadi di sini, Anda hanya lewat fungsi ini sebagai fungsi anonim 1789 01:20:44,470 --> 01:20:45,300 untuk window.onload. 1790 01:20:45,300 --> 01:20:48,480 Dan kemudian ketika apakah akan untuk benar-benar dijalankan? 1791 01:20:48,480 --> 01:20:49,600 Ketika beban jendela. 1792 01:20:49,600 --> 01:20:50,420 Itu acara. 1793 01:20:50,420 --> 01:20:52,460 Jadi itulah jus t hal kami bicarakan sebelumnya, kan? 1794 01:20:52,460 --> 01:20:54,580 Jadi, ketika peristiwa terjadi, fungsi terjadi. 1795 01:20:54,580 --> 01:20:55,746 Hal yang sama dengan onclick. 1796 01:20:55,746 --> 01:20:59,510 1797 01:20:59,510 --> 01:21:03,130 >> Davin: OK, jadi seseorang mengambil pergi document.ready tersebut. 1798 01:21:03,130 --> 01:21:04,698 Tapi ini akan menjadi same-- tepat 1799 01:21:04,698 --> 01:21:06,864 AUDIENCE: Tanda dollar, yang document.ready a. 1800 01:21:06,864 --> 01:21:07,710 Itu jalan pintas. 1801 01:21:07,710 --> 01:21:08,501 >> Davin: Oh, itu? 1802 01:21:08,501 --> 01:21:10,880 1803 01:21:10,880 --> 01:21:15,500 OK, jadi ini berarti document.ready, shortcut. 1804 01:21:15,500 --> 01:21:19,660 Tapi ini adalah sama dengan window.onload kecuali untuk itu sedikit perbedaan 1805 01:21:19,660 --> 01:21:20,680 Aku bercerita tentang. 1806 01:21:20,680 --> 01:21:21,870 Dan ini adalah jQuery. 1807 01:21:21,870 --> 01:21:25,190 Jadi ini adalah sama persis thing-- ini JavaScript. 1808 01:21:25,190 --> 01:21:29,500 Hal ini hanya-- beberapa orang berpikir itu sebagai berat badan lebih ringan, versi ramping 1809 01:21:29,500 --> 01:21:32,370 yang memiliki banyak fungsi Anda mungkin akan menggunakan. 1810 01:21:32,370 --> 01:21:34,500 Jadi ini melakukan hal yang sama persis. 1811 01:21:34,500 --> 01:21:37,110 >> Jadi hal-hal yang semacam menunjukkan. 1812 01:21:37,110 --> 01:21:40,364 Jadi, dalam contoh lain, kita memiliki document.getElementById, 1813 01:21:40,364 --> 01:21:42,280 jadi kami punya selama ini string yang akan mendapatkan 1814 01:21:42,280 --> 01:21:44,290 elemen dengan ID apa itu. 1815 01:21:44,290 --> 01:21:46,470 Itu digantikan oleh panggilan ini di sini. 1816 01:21:46,470 --> 01:21:50,860 Jadi Anda melihat tanda dolar, kemudian Anda melihat kutipan, hashtag. 1817 01:21:50,860 --> 01:21:52,370 Hashtag selalu pemilih. 1818 01:21:52,370 --> 01:21:54,730 Ia mengatakan, OK, ini ada hubungannya dengan ID. 1819 01:21:54,730 --> 01:21:56,120 Apa pemilih untuk kelas? 1820 01:21:56,120 --> 01:21:57,190 >> AUDIENCE: Dot. 1821 01:21:57,190 --> 01:21:57,960 >> Davin: Dot, benar. 1822 01:21:57,960 --> 01:22:01,950 Jika Anda hanya akan pilih tag, apa itu? 1823 01:22:01,950 --> 01:22:03,310 Hanya saja tag, tepatnya. 1824 01:22:03,310 --> 01:22:05,560 Dan Anda bisa menggunakan itu di sini, juga. 1825 01:22:05,560 --> 01:22:08,560 >> GABE: Dan dengan tag, yang kita maksud seperti div, misalnya, atau kepala. 1826 01:22:08,560 --> 01:22:11,500 >> Davin: Atau badan atau p atau hal seperti itu, ya. 1827 01:22:11,500 --> 01:22:14,390 Jadi di sini, OK, bukannya mengatakan document.getElementById, 1828 01:22:14,390 --> 01:22:16,500 ini adalah hal yang sama persis. 1829 01:22:16,500 --> 01:22:17,990 Hanya dalam jQuery, itu lebih pendek. 1830 01:22:17,990 --> 01:22:19,860 Jadi itu sederhana. 1831 01:22:19,860 --> 01:22:23,420 Karena itu, tidak ada lagi onclick, klik. 1832 01:22:23,420 --> 01:22:26,320 Fungsi jQuery, memanggil fungsi ini. 1833 01:22:26,320 --> 01:22:27,580 Alert adalah sama persis. 1834 01:22:27,580 --> 01:22:29,452 Jadi itu sedikit lebih kecil, atau sedikit 1835 01:22:29,452 --> 01:22:32,410 pendek, orang bit-- sedikit berpikir itu sedikit lebih mudah untuk menulis, 1836 01:22:32,410 --> 01:22:34,600 sedikit lebih mudah untuk dipahami. 1837 01:22:34,600 --> 01:22:35,640 Tapi ini adalah jQuery. 1838 01:22:35,640 --> 01:22:37,887 Banyak orang mendapatkan sedikit bit bingung dan khawatir 1839 01:22:37,887 --> 01:22:40,220 dan mereka berpikir, OK, jQuery berbeda dengan JavaScript. 1840 01:22:40,220 --> 01:22:42,136 Aku harus ingat ini dua hal yang berbeda. 1841 01:22:42,136 --> 01:22:42,740 Ini bukan. 1842 01:22:42,740 --> 01:22:45,315 Maksudku, itu sintaks yang berbeda. 1843 01:22:45,315 --> 01:22:46,970 Tapi jQuery adalah JavaScript. 1844 01:22:46,970 --> 01:22:50,050 Ini hanya tampaknya versi yang lebih baik yang 1845 01:22:50,050 --> 01:22:51,967 mungkin lebih mudah untuk memahami bahwa orang menggunakan. 1846 01:22:51,967 --> 01:22:53,716 GABE: Ya, untuk menjadi jujur, itu tanda dolar 1847 01:22:53,716 --> 01:22:57,240 yang Anda lihat di jQuery, itu hanya nama dari fungsi yang mendefinisikan jQuery. 1848 01:22:57,240 --> 01:22:58,614 Tidak memiliki sesuatu yang istimewa. 1849 01:22:58,614 --> 01:23:03,140 Apakah Hanya saja nama dari suatu fungsi, seperti Anda bisa menentukan tanda dolar. 1850 01:23:03,140 --> 01:23:05,670 >> Davin: Ya, jadi membicarakan hal ini. 1851 01:23:05,670 --> 01:23:06,680 Beberapa hal yang berguna. 1852 01:23:06,680 --> 01:23:10,414 Saya melihat kembali pada kuis tua. 1853 01:23:10,414 --> 01:23:13,080 Dalam beberapa kuis terakhir, mereka telah harus menggunakan hal-hal seperti ini. 1854 01:23:13,080 --> 01:23:15,230 Jadi document.ready, sehingga pastikan semuanya 1855 01:23:15,230 --> 01:23:17,410 dimuat sebelum Anda mulai melakukan hal-hal. 1856 01:23:17,410 --> 01:23:20,120 Pilih ID, atau pilih kelas, itu baru saja 1857 01:23:20,120 --> 01:23:24,020 menjadi kutipan dot beberapa kelas, akhir kutipan. 1858 01:23:24,020 --> 01:23:26,580 Kirim, jadi jika Anda menyerahkan formulir dan panggilan 1859 01:23:26,580 --> 01:23:28,830 fungsi ini setelah formulir mengajukan. 1860 01:23:28,830 --> 01:23:34,210 Nilai, jadi katakanlah saya punya formulir penyerahan, seperti nama pengguna, email, 1861 01:23:34,210 --> 01:23:34,950 masa bodo. 1862 01:23:34,950 --> 01:23:36,010 Aku punya kotak teks. 1863 01:23:36,010 --> 01:23:37,670 Jadi aku mengetik ke dalam kotak teks. 1864 01:23:37,670 --> 01:23:42,170 Nah, jika Anda ingin mendapatkan nilai keluar dari kotak teks, Anda menggunakan dot val. 1865 01:23:42,170 --> 01:23:44,050 Dan kemudian, di sini, dot HTML adalah sama 1866 01:23:44,050 --> 01:23:47,710 seperti dokumen dot getElementById dot innerHTML. 1867 01:23:47,710 --> 01:23:50,890 Sehingga akan kembali Anda HTML dari ID itu. 1868 01:23:50,890 --> 01:23:55,080 Di sini, Anda hanya menggunakan beberapa ID atau titik apapun HTML. 1869 01:23:55,080 --> 01:23:56,930 Itu akan mendapatkan HTML dari elemen. 1870 01:23:56,930 --> 01:24:00,130 Jika Anda ingin kemudian mengubahnya HTML, Anda dapat melewati sesuatu. 1871 01:24:00,130 --> 01:24:05,600 Jadi, Anda akan seperti dot HTML, dan kemudian dalam, kutipan, HTML baru atau sesuatu. 1872 01:24:05,600 --> 01:24:07,490 >> GABE: OK, jadi AJAX. 1873 01:24:07,490 --> 01:24:10,347 Aku benar-benar ingin memahami AJAX sangat baik. 1874 01:24:10,347 --> 01:24:12,430 Jadi saya ingin kalian memahami AJAX sangat baik. 1875 01:24:12,430 --> 01:24:14,221 Karena jika Anda melakukannya, Anda cukup banyak akan 1876 01:24:14,221 --> 01:24:16,810 untuk memahami segala sesuatu yang harus dilakukan dengan HTTP, PHP, 1877 01:24:16,810 --> 01:24:21,080 JavaScript karena semua datang bersama-sama di AJAX. 1878 01:24:21,080 --> 01:24:25,130 AJAX bukanlah bahasa. 1879 01:24:25,130 --> 01:24:27,000 AJAX adalah teknik. 1880 01:24:27,000 --> 01:24:31,690 Dan menggunakan banyak alat yang berbeda. 1881 01:24:31,690 --> 01:24:35,090 AJAX singkatan asynchronous JavaScript XML. 1882 01:24:35,090 --> 01:24:36,730 Jadi metode, bahasa, data. 1883 01:24:36,730 --> 01:24:40,610 >> Jadi bahasa utama yang kita gunakan di AJAX untuk memicu segalanya 1884 01:24:40,610 --> 01:24:42,830 dan menangani segala sesuatu nanti adalah JavaScript. 1885 01:24:42,830 --> 01:24:45,160 Itu sebabnya berkaitan sangat dekat dengan JavaScript. 1886 01:24:45,160 --> 01:24:49,810 Dan kemudian asynchronous adalah karena kita tidak melakukannya 1887 01:24:49,810 --> 01:24:51,980 sekaligus ketika kita sedang loading halaman. 1888 01:24:51,980 --> 01:24:57,190 Ini adalah hal yang kita bisa melakukan hal-hal semacam secara paralel. 1889 01:24:57,190 --> 01:24:59,725 Ide utama di balik AJAX adalah bahwa Anda ingin 1890 01:24:59,725 --> 01:25:02,170 untuk mendapatkan beberapa informasi tertentu. 1891 01:25:02,170 --> 01:25:06,450 Sebagai contoh, ketika Anda mengetik baru Nama pengguna ketika Anda mendaftarkan nama pengguna, 1892 01:25:06,450 --> 01:25:08,520 Nama pengguna saya abc123. 1893 01:25:08,520 --> 01:25:11,671 Dan kemudian, pada akhir bentuk, Anda harus klik Submit. 1894 01:25:11,671 --> 01:25:14,420 Dan itu harus pergi ke server, dan kemudian memeriksa apakah dalam database, 1895 01:25:14,420 --> 01:25:15,594 abc123 sudah ada. 1896 01:25:15,594 --> 01:25:18,510 Dan jika sudah ada, ia mengatakan, Nama pengguna sudah dalam database. 1897 01:25:18,510 --> 01:25:21,010 Dan mereka, Anda harus mengisi seluruh formulir lagi. 1898 01:25:21,010 --> 01:25:23,110 Dan itu benar-benar, benar-benar buruk. 1899 01:25:23,110 --> 01:25:25,440 >> Dan kemudian orang mengatakan, OK, mengapa tidak bisa kita hanya 1900 01:25:25,440 --> 01:25:29,560 melakukan permintaan HTTP kecil untuk hanya memeriksa untuk melihat apakah pengguna ini dalam database 1901 01:25:29,560 --> 01:25:32,080 sebelum pengguna harus menyerahkan seluruh formulir? 1902 01:25:32,080 --> 01:25:36,350 Jadi misalnya, ketika pengguna selesai mengetik abc123, 1903 01:25:36,350 --> 01:25:39,660 mari kita pergi ke server sedikit bit dan hanya mendapatkan benar atau salah 1904 01:25:39,660 --> 01:25:43,080 dari server untuk melihat apakah itu adalah nama pengguna yang valid atau tidak. 1905 01:25:43,080 --> 01:25:49,250 OK, jadi itu salah satu utama menggunakan AJAX saat ini masih. 1906 01:25:49,250 --> 01:25:52,130 >> Davin: Jadi nyata cepat, dalam panggilan Ajax di jQuery, 1907 01:25:52,130 --> 01:25:54,770 Anda bisa menunjukkan bahwa Anda ingin menjadi sinkron. 1908 01:25:54,770 --> 01:25:56,330 Anda tidak harus melakukan ini. 1909 01:25:56,330 --> 01:25:57,640 Tapi Anda bisa melakukan itu. 1910 01:25:57,640 --> 01:25:59,277 Dan jika Anda melakukan itu, apa yang akan terjadi? 1911 01:25:59,277 --> 01:26:01,610 Nah, misalnya, ketika Anda mendapatkan berita atau apa pun, 1912 01:26:01,610 --> 01:26:05,464 browser Anda hanya akan menunggu sampai yang seluruh panggilan selesai 1913 01:26:05,464 --> 01:26:08,130 bukannya membiarkan Anda melakukan lain hal yang benar setelah Anda klik. 1914 01:26:08,130 --> 01:26:14,560 1915 01:26:14,560 --> 01:26:17,115 >> GABE: Ini tidak lulus lagi. 1916 01:26:17,115 --> 01:26:19,681 Astaga. 1917 01:26:19,681 --> 01:26:20,180 Mohon Maaf! 1918 01:26:20,180 --> 01:26:22,810 1919 01:26:22,810 --> 01:26:23,601 Yup. 1920 01:26:23,601 --> 01:26:25,350 "Di masa lalu, klien diperlukan untuk permintaan 1921 01:26:25,350 --> 01:26:26,840 seluruh isi website. " 1922 01:26:26,840 --> 01:26:28,210 Itulah yang saya katakan. 1923 01:26:28,210 --> 01:26:30,070 Hal ini memungkinkan kita untuk mengirim GET tambahan atau POST 1924 01:26:30,070 --> 01:26:32,140 permintaan tanpa untuk reload browser kita. 1925 01:26:32,140 --> 01:26:34,806 Jadi pada akhir hari, kami benar-benar membuat sebuah permintaan HTTP 1926 01:26:34,806 --> 01:26:35,740 di sini menggunakan JavaScript. 1927 01:26:35,740 --> 01:26:39,700 Karena sebelumnya, kami hanya menggunakan JavaScript untuk mengubah HTML yang sudah datang. 1928 01:26:39,700 --> 01:26:43,110 Dan sekarang, kita dapat menggunakannya untuk antarmuka dengan server web juga. 1929 01:26:43,110 --> 01:26:46,140 Cara ini terjadi adalah kita memiliki klien. 1930 01:26:46,140 --> 01:26:47,340 Davin adalah klien. 1931 01:26:47,340 --> 01:26:50,797 Dan dia memiliki semua JavaScript berjalan karena HTML adalah bodoh. 1932 01:26:50,797 --> 01:26:51,630 JavaScript cerdas. 1933 01:26:51,630 --> 01:26:54,690 Jadi Davin Davin memiliki pintar nya bagian dan bagian bodoh nya. 1934 01:26:54,690 --> 01:26:57,590 Dia akan menggunakan bagian pintar nya sekarang. 1935 01:26:57,590 --> 01:27:00,860 Dia akan menggunakan JavaScript permintaan, misalnya, 1936 01:27:00,860 --> 01:27:04,340 apakah abc123 dalam database atau tidak. 1937 01:27:04,340 --> 01:27:08,450 >> Jadi Davin, silakan, Anda hanya kirimi saya permintaan HTTP. 1938 01:27:08,450 --> 01:27:09,197 Terima kasih. 1939 01:27:09,197 --> 01:27:10,530 Jadi ia hanya mengirim permintaan HTTP. 1940 01:27:10,530 --> 01:27:11,270 Anda lihat itu? 1941 01:27:11,270 --> 01:27:14,700 Dan itu hanya dengan cara yang sama bahwa setiap permintaan HTTP dikirim. 1942 01:27:14,700 --> 01:27:16,830 Browser, Google Chrome atau sesuatu, adalah 1943 01:27:16,830 --> 01:27:19,570 akan melihat bahwa Davin itu mencoba untuk mengirim permintaan HTTP, 1944 01:27:19,570 --> 01:27:20,930 akan membantu hm sedikit. 1945 01:27:20,930 --> 01:27:23,950 Dan itu akan pergi semua jalan ke server. 1946 01:27:23,950 --> 01:27:27,370 Sekarang, server akan memiliki PHP di sini, atau bahasa lainnya. 1947 01:27:27,370 --> 01:27:29,990 Sama seperti dalam permintaan HTTP normal. 1948 01:27:29,990 --> 01:27:31,950 Hal ini cukup banyak permintaan HTTP normal. 1949 01:27:31,950 --> 01:27:33,658 >> Dan kemudian, server akan mengatakan, OK, 1950 01:27:33,658 --> 01:27:37,270 Davin ingin saya untuk memeriksa apakah abc123 ini dalam database. 1951 01:27:37,270 --> 01:27:38,310 Pergi berbicara dengan model. 1952 01:27:38,310 --> 01:27:41,310 Model mengatakan tidak. abc123 adalah nama pengguna yang baik. 1953 01:27:41,310 --> 01:27:47,940 Dan kemudian, server web akan menggunakan PHP untuk membuat beberapa bentuk file. 1954 01:27:47,940 --> 01:27:52,280 Bisa jadi benar-benar hanya file yang berisi "ya" di dalamnya, atau "tidak, 1955 01:27:52,280 --> 01:27:53,315 atau sesuatu seperti itu. 1956 01:27:53,315 --> 01:27:54,190 Bisa jadi file apapun. 1957 01:27:54,190 --> 01:27:57,080 >> Bisa jadi seperti aku akan mengirim Davin gambar bebek 1958 01:27:57,080 --> 01:28:01,200 kalau ada di database dan mengirim gambar dari hamster 1959 01:28:01,200 --> 01:28:02,420 jika tidak dalam database. 1960 01:28:02,420 --> 01:28:04,294 Itu akan menjadi semacam bodoh, tetapi akan bekerja. 1961 01:28:04,294 --> 01:28:07,030 OK, jadi saya mengirim bebek ke Davin. 1962 01:28:07,030 --> 01:28:08,150 Davin mendapat bebek. 1963 01:28:08,150 --> 01:28:13,330 Dan sekarang, siapa yang akan untuk menangani bebek? 1964 01:28:13,330 --> 01:28:16,390 Bagian pintar Davin lagi, jadi JavaScript, kan? 1965 01:28:16,390 --> 01:28:18,620 JavaScript mengirim permintaan, dan JavaScript 1966 01:28:18,620 --> 01:28:22,300 akan menerima permintaan dan menafsirkannya dalam beberapa bentuk. 1967 01:28:22,300 --> 01:28:26,630 >> Dan dalam hal ini, itu akan mengatakan, OK, jika bebek maka aku baik. 1968 01:28:26,630 --> 01:28:30,770 Jika hamster, maka aku akan mengatakan, tidak, nama pengguna yang sudah 1969 01:28:30,770 --> 01:28:31,970 ada dalam database. 1970 01:28:31,970 --> 01:28:33,845 Tapi biasanya, Anda tidak akan mengirim bebek. 1971 01:28:33,845 --> 01:28:36,740 Anda akan mengirim sesuatu yang sedikit lebih pintar. 1972 01:28:36,740 --> 01:28:40,320 Dan apa yang kita gunakan adalah XML. 1973 01:28:40,320 --> 01:28:42,690 Dan baru-baru ini, kita menggunakan JSON. 1974 01:28:42,690 --> 01:28:45,629 JSON hanya JavaScript Object Notation, yang 1975 01:28:45,629 --> 01:28:47,670 pada dasarnya Anda mendapatkan seluruh objek JavaScript. 1976 01:28:47,670 --> 01:28:50,820 Dan Anda memasukkannya ke dalam sebuah file, sama seperti bahwa objek CS50 yang melihat kalian. 1977 01:28:50,820 --> 01:28:53,090 Anda memasukkannya ke dalam sebuah file, dan Anda kirimkan ke Davin. 1978 01:28:53,090 --> 01:28:55,850 >> Jadi dalam hal ini, saya akan membuat objek JavaScript 1979 01:28:55,850 --> 01:28:59,570 dan hanya mengatakan, pengguna ada, ya. 1980 01:28:59,570 --> 01:29:01,630 Atau pengguna ada, tidak ada. 1981 01:29:01,630 --> 01:29:02,810 Dan mengirimkannya kembali kepadanya. 1982 01:29:02,810 --> 01:29:03,830 Dan mengapa JSON? 1983 01:29:03,830 --> 01:29:07,330 Karena orang siapa yang menerima ini 1984 01:29:07,330 --> 01:29:10,030 akan menggunakan JavaScript untuk menangani respon. 1985 01:29:10,030 --> 01:29:14,970 Dan JavaScript bekerja dengan baik karena itu disebut JavaScript Object Notation. 1986 01:29:14,970 --> 01:29:15,470 Yang Tepat? 1987 01:29:15,470 --> 01:29:19,660 Jadi dia hanya bisa memanggil fungsi dan mendapatkan objek ini baik dari respon. 1988 01:29:19,660 --> 01:29:22,890 Dan kemudian, dia akan mengetahui apakah pengguna yang ada di database atau tidak. 1989 01:29:22,890 --> 01:29:25,230 >> Jadi Anda lihat, semua itu datang bersama-sama di server web, 1990 01:29:25,230 --> 01:29:28,450 dan kemudian ada satu permintaan HTTP dan satu respon HTTP dan segala sesuatu. 1991 01:29:28,450 --> 01:29:30,600 Jadi, pastikan kalian memahami panggilan AJAX ini 1992 01:29:30,600 --> 01:29:37,260 karena membantu Anda memahami semua konsep yang kita bicarakan. 1993 01:29:37,260 --> 01:29:40,260 >> Jadi, inilah contoh AJAX dengan jQuery. 1994 01:29:40,260 --> 01:29:42,130 Dan di sini, kita lakukan dengan mendapatkan JSON. 1995 01:29:42,130 --> 01:29:45,660 Jadi kita tidak mencoba untuk mendapatkan gambar kucing di sini, atau bebek. 1996 01:29:45,660 --> 01:29:48,110 Kami sedang berusaha untuk mendapatkan file JSON. 1997 01:29:48,110 --> 01:29:51,184 Dan kemudian kita menunggu sampai hal itu dilakukan, dot dilakukan. 1998 01:29:51,184 --> 01:29:52,850 Itu berarti saya sedang menunggu respon. 1999 01:29:52,850 --> 01:29:54,180 Mungkin butuh sedikit waktu. 2000 01:29:54,180 --> 01:29:56,360 Kemudian, Anda melihat loading sedikit. 2001 01:29:56,360 --> 01:29:59,340 Jika Anda ingin melakukan itu di website Anda. 2002 01:29:59,340 --> 01:30:01,440 Jadi dot dilakukan, dan kemudian apa terjadi bila dilakukan? 2003 01:30:01,440 --> 01:30:04,040 Anda lulus dalam anonim fungsi, sama seperti yang kita lihat sebelumnya. 2004 01:30:04,040 --> 01:30:07,800 Karena dilakukan merupakan acara, hanya seperti mengklik mouse atau apa pun, 2005 01:30:07,800 --> 01:30:08,710 untuk jQuery. 2006 01:30:08,710 --> 01:30:13,710 Jadi Anda lulus dalam fungsi ini dengan data, teks, status, dan jqXHR. 2007 01:30:13,710 --> 01:30:15,790 Dan pada dasarnya, itu hanya beberapa variabel 2008 01:30:15,790 --> 01:30:22,160 Anda dapat menggunakan di kemudian hari memiliki status permintaan HTTP, 2009 01:30:22,160 --> 01:30:24,470 data yang akan mengirimkan kembali kepada Anda. 2010 01:30:24,470 --> 01:30:28,740 Jadi Anda bisa nanti menafsirkannya dan melakukan sesuatu yang berarti dengan itu. 2011 01:30:28,740 --> 01:30:30,240 Dan jika gagal, ketika mungkin gagal? 2012 01:30:30,240 --> 01:30:33,780 Nah, ketika permintaan HTTP memberikan Anda 500 atau sesuatu seperti itu. 2013 01:30:33,780 --> 01:30:37,420 Kemudian, itu akan memberitahu Anda status, jenis kegagalan yang, 2014 01:30:37,420 --> 01:30:38,420 dan segala macam hal. 2015 01:30:38,420 --> 01:30:40,630 Anda harus memastikan untuk menangani kedua kasus, 2016 01:30:40,630 --> 01:30:42,770 jika tidak program pergi gila. 2017 01:30:42,770 --> 01:30:45,820 >> Davin: Jadi ya, ini adalah persis apa yang Anda lihat pada terakhir p-set Anda. 2018 01:30:45,820 --> 01:30:49,720 Panggilan AJAX sebenarnya dalam mendapatkan JSON. 2019 01:30:49,720 --> 01:30:50,587 Itulah panggilan. 2020 01:30:50,587 --> 01:30:52,920 Dan kemudian, dot dilakukan adalah seperti memeriksa apakah itu berhasil. 2021 01:30:52,920 --> 01:30:55,620 Jika berhasil, Anda ingin untuk melakukan sesuatu dengan data. 2022 01:30:55,620 --> 01:30:59,290 Anda kembali dari itu Data permintaan JSON. 2023 01:30:59,290 --> 01:31:00,600 Itulah apa yang Anda dapatkan kembali. 2024 01:31:00,600 --> 01:31:04,470 Jadi, jika Anda ingat dari p-set Anda, banyak Anda seperti Data braket i 2025 01:31:04,470 --> 01:31:06,302 atau apa pun, titik link atau judul. 2026 01:31:06,302 --> 01:31:08,260 Apapun datang kembali itu JSON, apa pun 2027 01:31:08,260 --> 01:31:11,020 bidang dalam bahwa objek JSON, itulah apa yang Anda dapatkan kembali. 2028 01:31:11,020 --> 01:31:12,394 Data apa yang Anda mendapatkan kembali. 2029 01:31:12,394 --> 01:31:15,510 Status teks, hanya sesuatu yang memungkinkan Anda tahu apa yang terjadi. 2030 01:31:15,510 --> 01:31:20,570 Dan kemudian, jqXHR, itu hanya permintaan XML HTTP jQuery. 2031 01:31:20,570 --> 01:31:21,990 Itu seperti sebuah objek. 2032 01:31:21,990 --> 01:31:23,932 Dan kemudian gagal, seperti Gabe mengatakan. 2033 01:31:23,932 --> 01:31:27,140 GABE: Dalam contoh kecil kami abc123 hanya untuk memeriksa apakah itu dalam database 2034 01:31:27,140 --> 01:31:32,260 atau tidak, data akan menjadi sesuatu yang Anda akan dilakukan, jika data yang dot nama pengguna ada, 2035 01:31:32,260 --> 01:31:37,720 yang adalah apa yang Anda PHP dihasilkan untuk Anda, jika data nama dot pengguna ada, maka 2036 01:31:37,720 --> 01:31:40,880 Aku akan waspada, pengguna Nama sudah ada. 2037 01:31:40,880 --> 01:31:44,300 Lain, aku hanya akan membiarkan pengguna lanjutkan mengisi formulir. 2038 01:31:44,300 --> 01:31:47,860 2039 01:31:47,860 --> 01:31:50,820 OK, keamanan, keren. 2040 01:31:50,820 --> 01:31:52,060 >> Davin: Mau? 2041 01:31:52,060 --> 01:31:54,500 >> GABE: Aku seperti ini. 2042 01:31:54,500 --> 01:31:57,680 Jadi sesuatu yang tampak akrab. 2043 01:31:57,680 --> 01:31:59,750 Kita hampir selesai. 2044 01:31:59,750 --> 01:32:02,670 Jadi ini hanya contoh kalian lihat di kelas. 2045 01:32:02,670 --> 01:32:04,860 Anda menggunakan argv1 sini. 2046 01:32:04,860 --> 01:32:06,460 Itu seperti argumen baris perintah. 2047 01:32:06,460 --> 01:32:09,270 Dan kita mem menyalin yang menjadi penyangga ukuran 12. 2048 01:32:09,270 --> 01:32:12,560 Apa masalahnya di sini? 2049 01:32:12,560 --> 01:32:13,660 Buffer overflow! 2050 01:32:13,660 --> 01:32:15,400 Karena kita memiliki buffer ukuran 12. 2051 01:32:15,400 --> 01:32:18,400 argv1 mungkin memiliki ukuran dua miliar. 2052 01:32:18,400 --> 01:32:19,960 Kami tidak melakukan pengecekan batas. 2053 01:32:19,960 --> 01:32:24,970 Jadi kita bisa menyalin banyak memori. 2054 01:32:24,970 --> 01:32:28,630 Dan kita akan menjadi sangat buruk tentang ini. 2055 01:32:28,630 --> 01:32:32,600 Apa yang bisa kita lakukan itu sangat, sangat berarti dalam kasus ini? 2056 01:32:32,600 --> 01:32:33,278 Iya Nih? 2057 01:32:33,278 --> 01:32:36,528 AUDIENCE: Bagian dari dua miliar hal berisi kode executable yang mengembalikan 2058 01:32:36,528 --> 01:32:38,127 [Tak terdengar]. 2059 01:32:38,127 --> 01:32:38,710 GABE: Tepat. 2060 01:32:38,710 --> 01:32:41,110 Jadi itulah jenis hal yang menggunakan orang 2061 01:32:41,110 --> 01:32:43,344 untuk jailbreak iPhone, misalnya. 2062 01:32:43,344 --> 01:32:44,260 Jadi hal semacam itu. 2063 01:32:44,260 --> 01:32:48,610 Karena Anda hanya dapat membuat perangkat mengeksekusi kode apapun yang Anda sukai. 2064 01:32:48,610 --> 01:32:50,247 Cara mengatasinya, sehingga memperbaiki mudah. 2065 01:32:50,247 --> 01:32:51,330 Hanya memeriksa batas. 2066 01:32:51,330 --> 01:32:53,455 Anda memeriksa null karena kami selalu memeriksa null 2067 01:32:53,455 --> 01:32:54,940 ketika kita sedang berhadapan dengan string. 2068 01:32:54,940 --> 01:32:57,840 Dan kemudian, Anda mengambil panjang string sebelumnya. 2069 01:32:57,840 --> 01:33:00,150 Dan jika string panjang adalah string yang valid 2070 01:33:00,150 --> 01:33:03,700 panjang, yang berjarak 0 dan 12, kemudian kita baik. 2071 01:33:03,700 --> 01:33:07,144 >> Davin: Jika Anda tidak memeriksa null, nyata cepat, apa yang akan terjadi? 2072 01:33:07,144 --> 01:33:07,810 Ini akan seg kesalahan. 2073 01:33:07,810 --> 01:33:10,850 Mengapa ia akan seg kesalahan? 2074 01:33:10,850 --> 01:33:12,510 Karena Anda menelepon strlen pada nol. 2075 01:33:12,510 --> 01:33:13,010 GABE: Ya. 2076 01:33:13,010 --> 01:33:16,490 2077 01:33:16,490 --> 01:33:19,630 Benar atau salah, menggunakan salah satu sandi adalah ide yang baik. 2078 01:33:19,630 --> 01:33:20,430 >> AUDIENCE: Salah. 2079 01:33:20,430 --> 01:33:21,150 >> GABE: Salah. 2080 01:33:21,150 --> 01:33:23,870 Gunakan banyak password, dan besar, yang panjang. 2081 01:33:23,870 --> 01:33:26,050 Ikon gembok memastikan keamanan. 2082 01:33:26,050 --> 01:33:27,080 >> AUDIENCE: Salah. 2083 01:33:27,080 --> 01:33:27,749 >> GABE: Salah. 2084 01:33:27,749 --> 01:33:28,790 Tidak ada maksud apa apa. 2085 01:33:28,790 --> 01:33:30,480 Ini hanya sebuah ikon. 2086 01:33:30,480 --> 01:33:32,824 SSL melindungi terhadap Pria dalam serangan tengah. 2087 01:33:32,824 --> 01:33:33,490 AUDIENCE: Salah. 2088 01:33:33,490 --> 01:33:34,110 GABE: Salah. 2089 01:33:34,110 --> 01:33:35,355 OK, jadi semua orang adalah palsu. 2090 01:33:35,355 --> 01:33:38,324 2091 01:33:38,324 --> 01:33:39,490 Nice. 2092 01:33:39,490 --> 01:33:40,220 [Tidak terdengar] 2093 01:33:40,220 --> 01:33:42,500 Ingin berbicara tentang ini? 2094 01:33:42,500 --> 01:33:43,259 Giliran Anda. 2095 01:33:43,259 --> 01:33:45,050 Davin: Jenis serangan, man in the middle. 2096 01:33:45,050 --> 01:33:47,134 Apa seorang pria di tengah serangan? 2097 01:33:47,134 --> 01:33:48,050 AUDIENCE: [tidak terdengar]. 2098 01:33:48,050 --> 01:33:51,437 2099 01:33:51,437 --> 01:33:54,020 Davin: Jika Anda mengirim HTTP permintaan, mereka bisa melakukan ini, kan? 2100 01:33:54,020 --> 01:33:57,890 Tetapi jika Anda mengirim HTTPS, mereka mungkin tidak akan mampu melakukan hal ini. 2101 01:33:57,890 --> 01:33:59,952 Ada banyak poin sepanjang koneksi Anda. 2102 01:33:59,952 --> 01:34:00,660 Anda memiliki router. 2103 01:34:00,660 --> 01:34:01,746 Anda memiliki server DNS. 2104 01:34:01,746 --> 01:34:04,120 Jika seseorang mampu secara fisik melihat apa yang Anda mengirim, 2105 01:34:04,120 --> 01:34:06,140 sehingga seseorang mampu benar-benar mendapatkan antara Anda, 2106 01:34:06,140 --> 01:34:08,840 klien, dan server, dan dapat melihat apa yang Anda mengirim, 2107 01:34:08,840 --> 01:34:10,298 ini adalah orang dalam serangan tengah. 2108 01:34:10,298 --> 01:34:14,287 Jadi untuk melihat apa yang Anda mencoba untuk mendapatkan dari server, atau dapat see-- buruk, 2109 01:34:14,287 --> 01:34:16,620 Anda mungkin bisa melihat cookie atau sesuatu seperti itu. 2110 01:34:16,620 --> 01:34:19,290 >> Jadi misalnya, jika Anda tidak menggunakan SSL, dia 2111 01:34:19,290 --> 01:34:21,900 mungkin bisa melihat sesi ID cookie. 2112 01:34:21,900 --> 01:34:25,460 Dan ini disebut pembajakan karena ia melihat cookie ID Anda, 2113 01:34:25,460 --> 01:34:28,317 dan kemudian dia mampu untuk pergi ke situs dan berpura-pura menjadi Anda. 2114 01:34:28,317 --> 01:34:31,150 Karena sama seperti di PHP, ingatlah ketika kita masuk, apa yang kita lakukan? 2115 01:34:31,150 --> 01:34:33,340 Kami menetapkan ID sesi yang sama dengan ID. 2116 01:34:33,340 --> 01:34:34,810 Jadi yang mengidentifikasi Anda. 2117 01:34:34,810 --> 01:34:38,300 Itu sebabnya Anda dapat melihat portofolio Anda dan portofolio tidak semua orang lain. 2118 01:34:38,300 --> 01:34:42,320 >> Nah, kalau aku bisa mendapatkan kue itu, maka saya bisa masuk ke halaman tersebut. 2119 01:34:42,320 --> 01:34:45,380 Dan kemudian, saya hanya bisa melihat barang-barang Anda dan mulai membeli dan menjual barang-barang. 2120 01:34:45,380 --> 01:34:46,800 Jadi itulah pembajakan. 2121 01:34:46,800 --> 01:34:50,810 Tapi Anda tidak harus dapat to-- sehingga Anda dapat menggunakan pria dalam serangan tengah 2122 01:34:50,810 --> 01:34:52,290 bahkan jika mereka menggunakan SSL. 2123 01:34:52,290 --> 01:34:53,520 Tapi Anda tidak harus bisa. 2124 01:34:53,520 --> 01:34:56,580 Jika mereka menggunakan SSL, Anda tidak bisa membajak sesi. 2125 01:34:56,580 --> 01:34:58,927 Mengapa? 2126 01:34:58,927 --> 01:35:01,135 Karena itu semua dienkripsi, yang tepat? jika itu dienkripsi, 2127 01:35:01,135 --> 01:35:03,509 dan aku masih seorang pria di tengah, aku masih mendapatkan data Anda. 2128 01:35:03,509 --> 01:35:04,279 Tidak apa-apa. 2129 01:35:04,279 --> 01:35:05,070 Tapi itu dienkripsi. 2130 01:35:05,070 --> 01:35:07,750 Jadi saya tidak bisa benar-benar menggunakannya. 2131 01:35:07,750 --> 01:35:09,840 Jadi itu dua. 2132 01:35:09,840 --> 01:35:11,544 >> Nyata cepat, lintas situs pemalsuan permintaan. 2133 01:35:11,544 --> 01:35:13,960 Itu hanya jika ada link dan link yang melakukan sesuatu 2134 01:35:13,960 --> 01:35:14,890 bahwa Anda tidak berpikir itu harus dilakukan. 2135 01:35:14,890 --> 01:35:18,150 Jadi misalnya, jika link itu akan membeli saham atau menjual saham, 2136 01:35:18,150 --> 01:35:19,360 dan Anda tidak tahu itu. 2137 01:35:19,360 --> 01:35:22,040 Anda mengklik pada link, mengirimkan permintaan, membeli 2138 01:35:22,040 --> 01:35:24,240 atau dijual sesuatu yang Anda tidak bermaksud melakukannya. 2139 01:35:24,240 --> 01:35:25,120 Itulah itu. 2140 01:35:25,120 --> 01:35:30,720 >> Scripting lintas situs, jadi di sini, Anda melintas di via q variabel, 2141 01:35:30,720 --> 01:35:33,510 bukan lewat dalam beberapa jenis nilai, mungkin q seperti nama. 2142 01:35:33,510 --> 01:35:36,560 Jadi bukan lewat equals q Davin atau sesuatu seperti itu, 2143 01:35:36,560 --> 01:35:38,740 jika Anda tidak menggunakan HTML karakter khusus, jika Anda 2144 01:35:38,740 --> 01:35:43,100 tidak melarikan diri ini untuk memastikan itu OK, maka saya bisa lulus dalam gantinya, 2145 01:35:43,100 --> 01:35:46,910 katakanlah di sini saya katakan cetak atau sesuatu seperti itu, 2146 01:35:46,910 --> 01:35:51,070 maka saya bisa lulus dalam sini panggilan skrip. 2147 01:35:51,070 --> 01:35:53,140 >> Jadi, alih-alih hanya mendapatkan variabel, 2148 01:35:53,140 --> 01:35:54,960 Saya kemudian akan mengeksekusi panggilan script ini. 2149 01:35:54,960 --> 01:35:57,065 Jadi dalam script yang panggilan, apa fungsinya? 2150 01:35:57,065 --> 01:36:00,190 Dokumen dot lokasi, yang akan mengubah lokasi dokumen. 2151 01:36:00,190 --> 01:36:02,290 Jadi aku akan mengarahkan ke tempat lain. 2152 01:36:02,290 --> 01:36:08,170 Ini disebut orang jahat di contoh ini, sangat baik. 2153 01:36:08,170 --> 01:36:10,536 Tidak bisa memikirkan kata. 2154 01:36:10,536 --> 01:36:12,410 Dan kemudian, apa yang bahkan lebih buruk adalah bahwa aku akan 2155 01:36:12,410 --> 01:36:16,832 untuk kemudian mengatur cookie, yang beberapa variabel yang saya miliki dalam website ini. 2156 01:36:16,832 --> 01:36:19,040 Aku akan mengaturnya sama ke dokumen dot kue. 2157 01:36:19,040 --> 01:36:20,660 Oleh karena itu, aku akan untuk mencuri cookie Anda. 2158 01:36:20,660 --> 01:36:22,951 Dan aku akan mengarahkan beberapa informasi ke situs web 2159 01:36:22,951 --> 01:36:25,120 bahwa Anda tidak harus mengakses. 2160 01:36:25,120 --> 01:36:29,250 Dan ini semua terjadi karena kau tidak melarikan diri apa yang telah Anda lihat. 2161 01:36:29,250 --> 01:36:29,910 Ya? 2162 01:36:29,910 --> 01:36:32,160 >> AUDIENCE: Jadi hanya untuk membuat yang jelas, itu 2163 01:36:32,160 --> 01:36:37,550 vulnerable.com bahwa rentan terhadap hal ini. 2164 01:36:37,550 --> 01:36:39,300 Jadi link yang dapat muncul pada halaman tertentu. 2165 01:36:39,300 --> 01:36:42,200 Seseorang mengklik di atasnya, pergi ke vulnerable.com. 2166 01:36:42,200 --> 01:36:43,700 Anda memiliki cookie untuk vulnerable.com. 2167 01:36:43,700 --> 01:36:46,670 Katakanlah Facebook adalah rentan, sehingga facebook.com. 2168 01:36:46,670 --> 01:36:48,310 Anda memiliki kue Facebook Anda. 2169 01:36:48,310 --> 01:36:50,925 Apa ini lakukan, Anda akan facebook.com, 2170 01:36:50,925 --> 01:36:53,990 itu segera mengarahkan Anda badguy.com, 2171 01:36:53,990 --> 01:36:57,182 namun termasuk informasi cookie Anda. 2172 01:36:57,182 --> 01:36:59,310 Jadi itu adalah redirect cepat, tapi kue Facebook Anda 2173 01:36:59,310 --> 01:37:02,572 disertakan dengan redirect itu, dan itulah bagaimana mereka [tidak terdengar]. 2174 01:37:02,572 --> 01:37:04,280 GABE: Ya, ada beberapa hal yang sangat berarti 2175 01:37:04,280 --> 01:37:06,070 bahwa orang dapat lakukan jika ada ini. 2176 01:37:06,070 --> 01:37:09,190 Sebagai contoh, jika diperbolehkan Facebook semua orang untuk mengubah nama pengguna Anda, 2177 01:37:09,190 --> 01:37:11,680 dan mereka tidak melakukan apapun pemeriksaan, sehingga Anda 2178 01:37:11,680 --> 01:37:16,810 bisa memasukkan hal JavaScript yang mengubah gambar Anda ke hamster. 2179 01:37:16,810 --> 01:37:22,590 Dan yang menyisipkan sama JavaScript ke semua orang yang melihat halaman Anda. 2180 01:37:22,590 --> 01:37:26,400 Jadi semua orang yang melihat halaman Anda memiliki hal yang sama dalam nama pengguna. 2181 01:37:26,400 --> 01:37:30,104 Dan karena itu virus, menyebar secara eksponensial. 2182 01:37:30,104 --> 01:37:32,270 Davin: Kami akan melewatkan terakhir satu, dan kemudian kami sudah selesai. 2183 01:37:32,270 --> 01:37:34,120 Jadi ini hanyalah contoh lain. 2184 01:37:34,120 --> 01:37:36,120 Jadi ini adalah mereka tidak melarikan diri tabel SQL mereka. 2185 01:37:36,120 --> 01:37:37,090 Jadi Anda bisa menjatuhkannya. 2186 01:37:37,090 --> 01:37:38,805 Jadi, Anda ingin menghindari hal-hal. 2187 01:37:38,805 --> 01:37:44,010 Itu adalah contoh sebelumnya dengan site scripting lintas. 2188 01:37:44,010 --> 01:37:45,430 Maaf kami berlari sedikit terlambat. 2189 01:37:45,430 --> 01:37:46,870 Besok, maaf! 2190 01:37:46,870 --> 01:37:48,560 Besok, kita memiliki jam kantor. 2191 01:37:48,560 --> 01:37:50,870 Jadi jam kantor di Cabbot 8:00-11:00. 2192 01:37:50,870 --> 01:37:55,240 Jam kantor yang ketat untuk pertanyaan kuis. 2193 01:37:55,240 --> 01:37:56,587