1 00:00:00,000 --> 00:00:02,964 2 00:00:02,964 --> 00:00:05,434 >> [Muzik bermain] 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 guys begitu banyak untuk keluar dalam cuaca yang menjijikkan untuk kuiz satu 6 00:00:15,866 --> 00:00:16,910 sesi mengkaji. 7 00:00:16,910 --> 00:00:20,020 Seperti yang anda semua tahu, kuiz satu adalah Rabu ini. 8 00:00:20,020 --> 00:00:22,209 Jadi, kita akan pergi melalui sekumpulan topik. 9 00:00:22,209 --> 00:00:24,000 DAVIN: Hey, boleh saya katakan sesuatu yang cepat sebenar? 10 00:00:24,000 --> 00:00:25,215 Hannah: Yeah, ini akan Davin untuk mengatakan sesuatu yang cepat. 11 00:00:25,215 --> 00:00:25,780 DAVIN: Maaf. 12 00:00:25,780 --> 00:00:29,490 Hanya cepat sebenar, jika anda mempunyai soalan mengenai kuiz ini, anda boleh pergi ke dalam talian. 13 00:00:29,490 --> 00:00:32,420 Pergi ke 2014 kuiz satu, kira-kira kuiz. 14 00:00:32,420 --> 00:00:34,680 Ia mempunyai kira-kira logistik di mana untuk pergi, apabila pergi. 15 00:00:34,680 --> 00:00:38,100 Jika anda mendaftar pada masa yang sama, kami akan mempunyai kuiz solek pada 5:30. 16 00:00:38,100 --> 00:00:40,350 Atau jika anda menghantar saya satu isu, anda mempunyai beberapa isu lain. 17 00:00:40,350 --> 00:00:42,640 Tetapi 05:30 adalah solekan masa pada hari Rabu. 18 00:00:42,640 --> 00:00:44,540 Tetapi jika anda mempunyai soalan, soalan umum, 19 00:00:44,540 --> 00:00:45,748 talian mempunyai semua logistik. 20 00:00:45,748 --> 00:00:47,690 Jadi semak sana dahulu. 21 00:00:47,690 --> 00:00:49,070 >> Hannah: Awesome. 22 00:00:49,070 --> 00:00:53,030 Jadi di sini adalah senarai besar topik bahawa kita akan melalui hari ini. 23 00:00:53,030 --> 00:00:57,390 Saya akan menutup semua C barangan, iaitu bahawa Lajur pertama. 24 00:00:57,390 --> 00:01:00,710 Jadi bahan C yang kita dilindungi selepas kuiz sifar. 25 00:01:00,710 --> 00:01:05,459 Bermula dengan senarai yang berkaitan, termasuk petunjuk. 26 00:01:05,459 --> 00:01:07,668 >> Baiklah, jadi kami melihat ini dalam sesi kajian semula yang 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 mahu saya memperlahankan atau menangani sesuatu lanjut. 29 00:01:13,500 --> 00:01:17,150 Tetapi kita menggunakan dikaitkan senarai kerana kami bermula pada C dengan pameran. 30 00:01:17,150 --> 00:01:20,920 Dan tatasusunan yang besar, tetapi masalah ialah mereka mempunyai saiz yang tetap. 31 00:01:20,920 --> 00:01:24,925 Senarai Berkaitan membolehkan kita untuk mewujudkan dinamik bersaiz struktur data. 32 00:01:24,925 --> 00:01:28,520 33 00:01:28,520 --> 00:01:32,320 >> Dan kita mempunyai asas operasi kami, memasukkan, memadam, dan mencari. 34 00:01:32,320 --> 00:01:36,780 Dan yang boleh kita lakukan dalam sisipan kes paling teruk masa tetap 35 00:01:36,780 --> 00:01:39,140 jika kita hanya meletakkan ia di peringkat awal lagi. 36 00:01:39,140 --> 00:01:45,220 Padam dan mencari, paling teruk kes besar oh n masa. 37 00:01:45,220 --> 00:01:47,140 Jadi sekali lagi, hanya untuk flip melalui gambar-gambar ini, 38 00:01:47,140 --> 00:01:50,860 Saya tahu bahawa kita melihat ini masa lalu, tetapi kita mahu menjejaki senarai dikaitkan kami 39 00:01:50,860 --> 00:01:53,440 dengan mengesan yang ketua senarai dikaitkan kami. 40 00:01:53,440 --> 00:01:55,580 Kerana kita tahu bahawa setiap satu daripada nod kami 41 00:01:55,580 --> 00:01:58,610 hanya pergi untuk menunjukkan kepada nod seterusnya dalam senarai berkaitan kami. 42 00:01:58,610 --> 00:02:00,460 >> Jadi itulah bagaimana kita menjejaki. 43 00:02:00,460 --> 00:02:02,910 Walaupun ini tidak keping berterusan ingatan, 44 00:02:02,910 --> 00:02:07,410 kita boleh menemui mereka dengan hanya berikut anak panah yang berbeza. 45 00:02:07,410 --> 00:02:09,800 Berikut adalah struktur kami untuk nod senarai berkaitan. 46 00:02:09,800 --> 00:02:11,440 Kami melihat masa lalu ini. 47 00:02:11,440 --> 00:02:13,080 Kami mempunyai nod struct kami. 48 00:02:13,080 --> 00:02:14,340 Dan ia mempunyai dua sifat. 49 00:02:14,340 --> 00:02:17,020 Nombor satu, sebenar nilai yang kita mahu untuk menyimpan. 50 00:02:17,020 --> 00:02:18,290 Dalam kes ini, ia adalah integer. 51 00:02:18,290 --> 00:02:21,100 Ia boleh menjadi rentetan, ia boleh menjadi arang, apa sahaja yang anda mahu. 52 00:02:21,100 --> 00:02:24,710 Dan kemudian, kita perlu menjejaki nod seterusnya dalam senarai berkaitan kami. 53 00:02:24,710 --> 00:02:29,797 Jadi yang akan menjadi satu penunjuk kepada nod yang seterusnya. 54 00:02:29,797 --> 00:02:31,880 Jika anda hanya melakukan carian, seperti yang saya katakan sebelum ini, 55 00:02:31,880 --> 00:02:34,900 anda akan mempunyai untuk mengikuti anak panah anda ke bawah. 56 00:02:34,900 --> 00:02:40,720 Pemasukan, anda akan menjejaki di mana seluruh senarai anda. 57 00:02:40,720 --> 00:02:44,150 Dan anda mahu mengubah hala kepala untuk menunjuk kepada elemen baru kami, yang 58 00:02:44,150 --> 00:02:46,640 dalam kes ini adalah satu, dan kemudian satu akan menunjukkan 59 00:02:46,640 --> 00:02:49,480 untuk baki senarai yang dipautkan. 60 00:02:49,480 --> 00:02:52,996 Jadi sekali lagi, saya tahu ini adalah sedikit sedikit berulang dari kuiz sifar. 61 00:02:52,996 --> 00:02:55,370 Oleh itu, kita perlu berhati-hati mengenai perintah itu di mana kita 62 00:02:55,370 --> 00:03:00,390 melakukan pointings ini supaya kita tidak kehilangan jejak belakang senarai. 63 00:03:00,390 --> 00:03:04,122 OK, apa-apa soalan dengan hanya secara tunggal dikaitkan senarai? 64 00:03:04,122 --> 00:03:06,060 Awesome, OK, sejuk. 65 00:03:06,060 --> 00:03:09,410 >> Oleh sebab itu, kita akan pergi ke sesuatu hanya sedikit lebih rumit, 66 00:03:09,410 --> 00:03:10,920 duanya adalah terpakai dikaitkan senarai. 67 00:03:10,920 --> 00:03:13,680 Jadi di samping menjaga trek nod seterusnya, 68 00:03:13,680 --> 00:03:16,220 kami juga ingin menjejaki nod sebelumnya. 69 00:03:16,220 --> 00:03:19,580 Dan ini membolehkan kita, jika kita pada satu ketika dalam senarai dikaitkan kami, 70 00:03:19,580 --> 00:03:23,110 bukan sahaja berjalan lurus, tetapi juga melelar ke belakang. 71 00:03:23,110 --> 00:03:25,220 Kerana seperti yang kita lihat dalam senarai secara tunggal berkaitan, 72 00:03:25,220 --> 00:03:27,980 jika kami di beberapa nod, dan tiba-tiba, kami mengambil keputusan, 73 00:03:27,980 --> 00:03:30,160 sebenarnya, saya mahu pergi ke hak nod di hadapan-Ku, 74 00:03:30,160 --> 00:03:32,034 anda akan mempunyai untuk pergi semua perjalanan pulang ke kepala 75 00:03:32,034 --> 00:03:35,710 dan melelar melalui sehingga anda dapati nod yang anda cari. 76 00:03:35,710 --> 00:03:37,680 >> Jadi ini menjadikan perkara-perkara sedikit mudah kerana kami 77 00:03:37,680 --> 00:03:39,670 cuba untuk melelar senarai dikaitkan kami. 78 00:03:39,670 --> 00:03:47,870 Tetapi ia memerlukan kita untuk mengesan satu pointer lebih, jadi satu lebih nod bintang. 79 00:03:47,870 --> 00:03:50,830 Baiklah, jadi di sini datang bahagian yang menyeronokkan. 80 00:03:50,830 --> 00:03:55,600 Kami akan mengamalkan melaksanakan keluarkan untuk senarai duanya adalah terpakai dikaitkan. 81 00:03:55,600 --> 00:03:58,660 Jadi ini adalah sesuatu yang permainan adil sama sekali untuk kuiz. 82 00:03:58,660 --> 00:04:00,750 Ia muncul pada masa lalu kuiz. 83 00:04:00,750 --> 00:04:04,220 Jadi pasti bersedia untuk memberi kod sedikit dalam C. 84 00:04:04,220 --> 00:04:07,900 Jangan lupa bahawa dengan semua PHP menyeronokkan dan JavaScript, 85 00:04:07,900 --> 00:04:10,560 kita masih perlu ingat untuk melakukan C. Jadi memoles yang 86 00:04:10,560 --> 00:04:12,146 jika anda berasa berkarat. 87 00:04:12,146 --> 00:04:14,580 >> Baiklah, mari kita lihat jika kita boleh melakukan ini. 88 00:04:14,580 --> 00:04:16,312 OK, sejuk. 89 00:04:16,312 --> 00:04:18,600 Jadi kita akan cuba untuk mengedit betul-betul di sini, 90 00:04:18,600 --> 00:04:20,707 dan mudah-mudahan ini berjalan seperti yang dirancang. 91 00:04:20,707 --> 00:04:23,915 Baiklah, adakah sesiapa yang mahu memberikan saya cadangan tentang bagaimana saya harus bermula? 92 00:04:23,915 --> 00:04:27,030 Itu hanya andaian saya membuat adalah bahawa saya telah 93 00:04:27,030 --> 00:04:30,180 telah struktur tertentu, yang satu saya menunjukkan di muka surat terakhir, 94 00:04:30,180 --> 00:04:31,420 pada slaid terakhir. 95 00:04:31,420 --> 00:04:39,250 Dan saya menyimpan kepala saya dikaitkan Senarai di beberapa penunjuk dipanggil senarai. 96 00:04:39,250 --> 00:04:42,190 Adakah sesiapa yang ingin mendapatkan saya bermula? 97 00:04:42,190 --> 00:04:45,410 >> PENONTON: Bolehkah anda mewujudkan baru nod untuk memanggil melalui senarai? 98 00:04:45,410 --> 00:04:46,410 >> Hannah: Awesome, jadi kita akan membuat 99 00:04:46,410 --> 00:04:47,951 nod baru merangkak melalui senarai. 100 00:04:47,951 --> 00:04:48,570 Saya suka bahawa. 101 00:04:48,570 --> 00:04:50,799 Saya hanya akan memanggilnya penunjuk jika itu OK. 102 00:04:50,799 --> 00:04:52,340 Dan di mana ia harus pada asalnya bermula? 103 00:04:52,340 --> 00:04:57,280 104 00:04:57,280 --> 00:04:59,840 >> PENONTON: Mungkin di ketua senarai. 105 00:04:59,840 --> 00:05:00,590 Hannah: Beautiful. 106 00:05:00,590 --> 00:05:03,670 Kami ingin memulakan di kepala, yang Saya berkata akan disimpan di dalam senarai. 107 00:05:03,670 --> 00:05:04,170 Awesome. 108 00:05:04,170 --> 00:05:05,220 Setakat ini, begitu baik. 109 00:05:05,220 --> 00:05:08,260 Dan sekarang, matlamat kami adalah untuk melelar melalui senarai 110 00:05:08,260 --> 00:05:12,870 sehingga kita dapati nod dengan nilai n yang kita mahu memadam. 111 00:05:12,870 --> 00:05:13,540 OK? 112 00:05:13,540 --> 00:05:15,910 >> Jadi sekarang adalah bahagian di mana kami mahu melelar melalui. 113 00:05:15,910 --> 00:05:19,488 Bolehkah sesiapa mencadangkan cara untuk melelar melalui? 114 00:05:19,488 --> 00:05:20,979 >> PENONTON: gelung A. 115 00:05:20,979 --> 00:05:21,840 >> Hannah: gelung A. 116 00:05:21,840 --> 00:05:22,620 Saya suka ia. 117 00:05:22,620 --> 00:05:25,550 Secara khusus, kita boleh cuba gelung sementara. 118 00:05:25,550 --> 00:05:30,919 OK, dan kita tahu bahawa kita telah mencapai akhir senarai kami apabila apa? 119 00:05:30,919 --> 00:05:32,210 PENONTON: Apabila penunjuk adalah batal. 120 00:05:32,210 --> 00:05:33,418 Hannah: Apabila penunjuk adalah batal. 121 00:05:33,418 --> 00:05:34,320 Beautiful, saya menyukainya. 122 00:05:34,320 --> 00:05:35,110 OK, sejuk. 123 00:05:35,110 --> 00:05:39,300 124 00:05:39,300 --> 00:05:43,190 Jadi maaf jika pendakap bounding saya jenis terjatuh dari skrin. 125 00:05:43,190 --> 00:05:44,090 Kami membawanya kembali. 126 00:05:44,090 --> 00:05:46,610 OK, sejuk. 127 00:05:46,610 --> 00:05:48,690 Apa seterusnya? 128 00:05:48,690 --> 00:05:51,950 >> Oleh itu, kita tahu kita mahu memadam nod yang mempunyai nilai n. 129 00:05:51,950 --> 00:05:56,340 Jadi mari kita mencari kes di mana kita sebenarnya mencari nod kami. 130 00:05:56,340 --> 00:05:57,840 Jadi bagaimana saya akan pastikan bahawa? 131 00:05:57,840 --> 00:06:02,210 Saya katakan jika penunjuk, dan kemudian jika saya ingin mendapatkan nilai daripada penunjuk, 132 00:06:02,210 --> 00:06:08,940 Saya hanya arrow n, sama dengan n, parameter 133 00:06:08,940 --> 00:06:14,490 yang kita berikan kepada fungsi ini, nod yang kita mahu untuk benar-benar padam. 134 00:06:14,490 --> 00:06:17,090 Sebarang soalan sehingga 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 melukis gambar yang cepat di papan untuk menggambarkan ini. 137 00:06:24,140 --> 00:06:30,710 >> Jadi katakan ada nod yang indah kami. 138 00:06:30,710 --> 00:06:34,480 Dan ia mempunyai nilai, saya hanya akan mengatakan empat. 139 00:06:34,480 --> 00:06:40,340 Dan ia menunjuk ke depan nod dalam senarai berkaitan kami. 140 00:06:40,340 --> 00:06:42,220 Dan tiada apa-apa di hadapannya. 141 00:06:42,220 --> 00:06:45,800 Oleh itu, kita mempunyai sebelumnya kami menunjuk kepada apa-apa. 142 00:06:45,800 --> 00:06:48,110 Dalam kes ini, kami tunjukkan ke belakang. 143 00:06:48,110 --> 00:06:50,960 OK, hanya menubuhkan saya senarai dikaitkan di sini. 144 00:06:50,960 --> 00:06:53,630 Dan kita mempunyai senarai yang menunjukkan untuk struktur ini untuk memulakan. 145 00:06:53,630 --> 00:06:57,220 146 00:06:57,220 --> 00:07:00,485 Saya akan membuat satu lagi untuk demi kesempurnaan. 147 00:07:00,485 --> 00:07:04,209 148 00:07:04,209 --> 00:07:06,117 OK. 149 00:07:06,117 --> 00:07:07,480 Saya akan menunjukkan ke hadapan ini. 150 00:07:07,480 --> 00:07:09,550 Dan saya akan menunjukkan satu belakang itu. 151 00:07:09,550 --> 00:07:10,360 Oops, maaf. 152 00:07:10,360 --> 00:07:12,710 Yeah, ini mendapat ke belakang. 153 00:07:12,710 --> 00:07:15,548 154 00:07:15,548 --> 00:07:16,967 Adakah ia sekali lagi. 155 00:07:16,967 --> 00:07:18,330 OK, ada kita pergi. 156 00:07:18,330 --> 00:07:19,910 Baiklah, faham. 157 00:07:19,910 --> 00:07:21,780 OK, di sini adalah gambar kami. 158 00:07:21,780 --> 00:07:24,860 >> OK, jadi kami ingin mempertimbangkan dua kes. 159 00:07:24,860 --> 00:07:27,330 Kes pertama adalah jika nod kita mahu memadam 160 00:07:27,330 --> 00:07:29,420 adalah pada permulaan sangat dalam senarai kami. 161 00:07:29,420 --> 00:07:34,070 Dan kemudian, kes kedua yang kita mahu yang perlu dipertimbangkan ialah jika itu di tempat lain. 162 00:07:34,070 --> 00:07:37,660 Saya faham bahawa ini yang sama sekali kemas melukis dengan semua memadam saya, 163 00:07:37,660 --> 00:07:40,400 tetapi mudah-mudahan kami akan cuba membuat ini jelas dengan beberapa kod. 164 00:07:40,400 --> 00:07:45,450 >> OK, jadi mari kita menutup kes ini di mana kami mendapati nod kami, 165 00:07:45,450 --> 00:07:48,900 dan itu sekurang- memulakan senarai dikaitkan kami. 166 00:07:48,900 --> 00:07:50,810 Sesiapa pun memberi saya cadangan di sini tentang apa yang 167 00:07:50,810 --> 00:07:54,684 Yang perlu saya lakukan untuk benar-benar membuang nod kami? 168 00:07:54,684 --> 00:07:55,970 Ia sedikit rumit. 169 00:07:55,970 --> 00:07:56,470 OK? 170 00:07:56,470 --> 00:07:59,628 >> PENONTON: Anda perlu mengambil nod yang akan sebelum ia 171 00:07:59,628 --> 00:08:01,794 dan membuat ia menunjuk kepada keputusan yang boleh selepas itu, 172 00:08:01,794 --> 00:08:03,004 dan mengambil nod yang akan selepas ia dan membuat 173 00:08:03,004 --> 00:08:04,554 ia menunjuk kepada nod sebelumnya. 174 00:08:04,554 --> 00:08:05,220 Hannah: Tepat. 175 00:08:05,220 --> 00:08:10,640 OK, jadi ini adalah kes jika- kita mempunyai dua kes. 176 00:08:10,640 --> 00:08:14,100 Kami mempunyai kes di mana nod yang kami cari 177 00:08:14,100 --> 00:08:18,270 adalah bahagian depan senarai. 178 00:08:18,270 --> 00:08:23,110 OK, dan kemudian kes yang anda yang dinyatakan adalah sebaliknya, bukan? 179 00:08:23,110 --> 00:08:24,500 Itu di tempat lain di dalam senarai. 180 00:08:24,500 --> 00:08:27,460 181 00:08:27,460 --> 00:08:32,840 Jadi, anda berkata, kita perlu melihat nod sebelumnya, 182 00:08:32,840 --> 00:08:36,500 dan membuat nod sebelumnya menunjuk kepada nod yang seterusnya. 183 00:08:36,500 --> 00:08:40,510 Jadi katakan kami cuba untuk mengambil lima 184 00:08:40,510 --> 00:08:43,059 dalam lukisan sangat kemas saya di sini. 185 00:08:43,059 --> 00:08:47,530 Kami ingin memastikan bahawa empat masa kini menyebabkan enam. 186 00:08:47,530 --> 00:08:49,590 Four mata sebelah enam. 187 00:08:49,590 --> 00:08:52,150 Dan enam itu titik sebelumnya kepada empat. 188 00:08:52,150 --> 00:08:53,960 Itulah matlamat kami di sini, bukan? 189 00:08:53,960 --> 00:08:56,150 Ini adalah apa yang saya fikir anda hanya berkata di sana. 190 00:08:56,150 --> 00:08:58,450 >> OK, jadi mari kita mendapatkan yang sekeping pertama. 191 00:08:58,450 --> 00:09:02,300 Mari kita buat yang mempunyai penunjuk sebelumnya sebelumnya. 192 00:09:02,300 --> 00:09:06,550 193 00:09:06,550 --> 00:09:09,690 Jadi harus menunjukkan empat di sebelah apa? 194 00:09:09,690 --> 00:09:13,210 195 00:09:13,210 --> 00:09:14,900 Tepat, dalam kes ini, enam. 196 00:09:14,900 --> 00:09:18,470 Oleh itu, kita tidak mengatakan penunjuk, akan datang. 197 00:09:18,470 --> 00:09:20,600 OK? 198 00:09:20,600 --> 00:09:21,150 Baiklah. 199 00:09:21,150 --> 00:09:24,870 Jadi mari kita menghilangkan gambar hodoh ini dan cuba untuk menarik satu yang lebih bagus sedikit. 200 00:09:24,870 --> 00:09:29,040 201 00:09:29,040 --> 00:09:31,172 Kami mempunyai kepala senarai kami di sini. 202 00:09:31,172 --> 00:09:36,440 203 00:09:36,440 --> 00:09:42,740 Dan yang menunjuk kepada nod yang pertama di Senarai berkaitan kami, yang kita kata adalah empat. 204 00:09:42,740 --> 00:09:45,620 Berikut adalah nod kedua kami, lima. 205 00:09:45,620 --> 00:09:47,307 Dan nod ketiga kami, enam. 206 00:09:47,307 --> 00:09:50,265 Hanya cuba untuk menarik yang sama tepat 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 ini seterusnya asalnya menunjuk ke lima. 209 00:09:56,280 --> 00:09:58,620 Lima ini mata sebelah enam. 210 00:09:58,620 --> 00:10:00,170 Titik sebelumnya enam untuk lima. 211 00:10:00,170 --> 00:10:02,470 Dan lima tempat itu sebelumnya kepada empat. 212 00:10:02,470 --> 00:10:03,360 Begitu banyak lebih bagus! 213 00:10:03,360 --> 00:10:04,530 OK, sejuk. 214 00:10:04,530 --> 00:10:07,770 >> Oleh sebab itu, apa yang kita lakukan hanya di sini, talian ini kod, 215 00:10:07,770 --> 00:10:12,680 yang mengatakan penunjuk sebelumnya akan datang, jadi apa maksudnya? 216 00:10:12,680 --> 00:10:17,540 Ini bermakna jika kita melihat lima, pergi ke nod sebelumnya, 217 00:10:17,540 --> 00:10:21,970 dan ia akan datang perlu sekarang titik hingga lima itu akan datang. 218 00:10:21,970 --> 00:10:27,840 Jadi pada dasarnya, apa itu melakukan adalah yang yang memadamkan anak panah ini 219 00:10:27,840 --> 00:10:29,640 dan menjadikannya melangkau hak ke atas lima. 220 00:10:29,640 --> 00:10:31,360 Adakah itu jelas? 221 00:10:31,360 --> 00:10:33,200 Saya tahu yang boleh menjadi sedikit tidak lengkap. 222 00:10:33,200 --> 00:10:34,480 Saya melihat beberapa mengangguk kepala. 223 00:10:34,480 --> 00:10:35,390 Itu baik. 224 00:10:35,390 --> 00:10:36,670 OK, sejuk. 225 00:10:36,670 --> 00:10:39,590 Sekarang, apa langkah seterusnya? 226 00:10:39,590 --> 00:10:42,060 >> Saya telah menetapkan semula seterusnya. 227 00:10:42,060 --> 00:10:45,297 Sekarang, anak panah yang lain saya perlu berubah? 228 00:10:45,297 --> 00:10:46,130 Yang ini di sini. 229 00:10:46,130 --> 00:10:47,560 Enam sebelum ini. 230 00:10:47,560 --> 00:10:50,620 Kita tidak mahu enam ini sebelumnya untuk menghala ke lima lagi. 231 00:10:50,620 --> 00:10:54,580 Kami mahu ia menunjuk kepada empat. 232 00:10:54,580 --> 00:10:56,190 Adakah gambar yang masuk akal? 233 00:10:56,190 --> 00:10:58,370 Oleh sebab itu kita benar-benar dapat mengambil lima daripada. 234 00:10:58,370 --> 00:10:59,370 Jadi mari kita mendapatkan sekeping itu. 235 00:10:59,370 --> 00:11:03,390 236 00:11:03,390 --> 00:11:11,180 Apakah yang perlu saya lakukan sebelum saya menetapkan semula enam ini sebelumnya kepada empat? 237 00:11:11,180 --> 00:11:14,360 Mana-mana idea-idea di sana? 238 00:11:14,360 --> 00:11:17,369 >> PENONTON: Membebaskan nod antara mereka dengan mengesetnya kepada nol? 239 00:11:17,369 --> 00:11:17,910 Hannah: Cool. 240 00:11:17,910 --> 00:11:21,100 Yang pasti, matlamat akhir kita adalah akan menjadi untuk membebaskan nod. 241 00:11:21,100 --> 00:11:22,490 Oleh itu, kita boleh berbuat demikian di sini. 242 00:11:22,490 --> 00:11:23,540 Penunjuk percuma. 243 00:11:23,540 --> 00:11:24,810 Sama sekali. 244 00:11:24,810 --> 00:11:29,160 Tetapi sebelum itu, mari kita just-- hak matlamat kami 245 00:11:29,160 --> 00:11:38,730 di sini adalah untuk menetapkan penunjuk seterusnya sebelumnya sama dengan penunjuk sebelumnya. 246 00:11:38,730 --> 00:11:40,760 Saya tahu ini semakin ditutupi. 247 00:11:40,760 --> 00:11:45,440 OK, mari kita take-- sejuk. 248 00:11:45,440 --> 00:11:46,990 Semua orang boleh melihat keuntungan ini? 249 00:11:46,990 --> 00:11:47,840 Atau adakah ia super kecil? 250 00:11:47,840 --> 00:11:50,430 251 00:11:50,430 --> 00:11:54,300 >> Jadi sebelum kita melaksanakan baris ini di sini, kita mahu 252 00:11:54,300 --> 00:11:58,375 memastikan bahawa penunjuk akan datang tidak adalah batal. 253 00:11:58,375 --> 00:12:00,500 Kerana jika penunjuk seterusnya adalah batal, jenis apa ralat 254 00:12:00,500 --> 00:12:02,727 saya akan dapat apabila saya cuba rujukan penunjuk batal? 255 00:12:02,727 --> 00:12:03,560 PENONTON: Seg bersalah. 256 00:12:03,560 --> 00:12:05,660 Hannah: A bersalah seg, cantik. 257 00:12:05,660 --> 00:12:09,690 OK, jadi jika itu bukan batal, maka kita boleh menetapkan semula. 258 00:12:09,690 --> 00:12:14,420 Dan kita mempunyai enam mata sekali lagi untuk empat. 259 00:12:14,420 --> 00:12:17,440 Soalan sehingga titik ini? 260 00:12:17,440 --> 00:12:17,940 Ya? 261 00:12:17,940 --> 00:12:19,814 >> PENONTON: Pada anda yang pertama jika pernyataan, yang anda lakukan 262 00:12:19,814 --> 00:12:23,817 ertinya mempunyai anak panah akan datang, atau [didengar]? 263 00:12:23,817 --> 00:12:25,150 Hannah: Saya bermaksud penunjuk anak panah n. 264 00:12:25,150 --> 00:12:30,270 Jadi, pada asasnya, apa yang saya cuba lakukan yang mengatakan, nod semasa yang saya 265 00:12:30,270 --> 00:12:34,100 iterating berakhir, nod semasa yang Saya melihat, saya menyimpan penuding. 266 00:12:34,100 --> 00:12:37,630 Dan saya ingin tahu penunjuk ini nilai, yang dalam kes ini adalah n. 267 00:12:37,630 --> 00:12:39,500 Dan saya mahu melihat, adalah nod Saya cari 268 00:12:39,500 --> 00:12:42,790 untuk nod Saya menyasarkan untuk memadamkan? 269 00:12:42,790 --> 00:12:47,657 Jadi itulah sebabnya kami ada di sini penunjuk n. 270 00:12:47,657 --> 00:12:49,857 >> PENONTON: Jadi anak panah pergi untuk n, anda menetapkan nilai 271 00:12:49,857 --> 00:12:52,058 dan menyimpannya dalam nod yang dipanggil n? 272 00:12:52,058 --> 00:12:55,410 273 00:12:55,410 --> 00:12:58,820 >> Hannah: Jadi ia seperti jika saya melalui senarai ini dikaitkan 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 yang, jika Saya ingin mendapatkan jumlah itu, 5, 276 00:13:03,600 --> 00:13:06,400 Saya lakukan penunjuk anak panah n. 277 00:13:06,400 --> 00:13:06,900 Cool? 278 00:13:06,900 --> 00:13:07,900 Yeah. 279 00:13:07,900 --> 00:13:11,200 >> PENONTON: Apakah n nama pembolehubah? 280 00:13:11,200 --> 00:13:11,700 Hannah: Ya. 281 00:13:11,700 --> 00:13:14,870 Jadi, jika kita menyelak kembali satu slaid, n adalah nama 282 00:13:14,870 --> 00:13:18,660 dari nilai bahagian dalam nod dalam senarai berkaitan kami. 283 00:13:18,660 --> 00:13:21,510 Dan saya tahu ia boleh mendapatkan sedikit sedikit mengelirukan kerana kita juga 284 00:13:21,510 --> 00:13:24,680 memanggil perkara yang yang kita mahu memadam n. 285 00:13:24,680 --> 00:13:26,717 Supaya di mana yang satu talian datang dari. 286 00:13:26,717 --> 00:13:27,671 Yeah? 287 00:13:27,671 --> 00:13:31,010 >> PENONTON: Apa yang anda mempunyai [Didengar] bagaimana ia berfungsi? 288 00:13:31,010 --> 00:13:33,872 289 00:13:33,872 --> 00:13:35,780 Penunjuk A [didengar]? 290 00:13:35,780 --> 00:13:37,520 >> Hannah: Pasti. 291 00:13:37,520 --> 00:13:40,027 Adakah anda bercakap about-- yang sejajar? 292 00:13:40,027 --> 00:13:41,526 PENONTON: Garis lepas [didengar]. 293 00:13:41,526 --> 00:13:44,280 294 00:13:44,280 --> 00:13:45,250 >> Hannah: Pasti, OK. 295 00:13:45,250 --> 00:13:48,540 Jadi mari kita lihat gambar di untuk cuba menjelaskan ini. 296 00:13:48,540 --> 00:13:51,030 Saya minta maaf, untuk kamera, soalan itu 297 00:13:51,030 --> 00:13:54,580 kita dapat menjelaskan penunjuk arrow penunjuk Sebelum Seterusnya. 298 00:13:54,580 --> 00:14:01,510 OK, jadi mari kita mengatakan bahawa kita berada di lima dan matlamat kami adalah untuk memadam lima. 299 00:14:01,510 --> 00:14:07,240 Jadi penunjuk akan datang, yang ini tiga nod adakah itu memberi kita? 300 00:14:07,240 --> 00:14:10,840 Yang membawa kita kepada nod yang keenam, bukan? 301 00:14:10,840 --> 00:14:16,490 >> OK, jadi sekarang kami meminta untuk lepas enam ini. 302 00:14:16,490 --> 00:14:17,060 OK? 303 00:14:17,060 --> 00:14:20,210 Dan kami menetapkan semula ini menjadi sama dengan empat, 304 00:14:20,210 --> 00:14:23,214 yang kebetulan berada lima sebelum ini. 305 00:14:23,214 --> 00:14:25,180 Saya tahu, ia super sukar untuk mengesan. 306 00:14:25,180 --> 00:14:29,286 Saya benar-benar mengesyorkan anda melukis gambar jika anda mendapatkan soalan seperti ini. 307 00:14:29,286 --> 00:14:30,242 Ya? 308 00:14:30,242 --> 00:14:32,617 >> PENONTON: Apakah sebab yang kita tidak mempunyai [didengar]? 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 persoalannya ialah, mengapa kita tidak perlu mendaftar di sini? 312 00:14:44,800 --> 00:14:48,160 Apa kata kita perlu menyemak bahawa penunjuk sebelumnya tidak sama dengan nol? 313 00:14:48,160 --> 00:14:50,070 Dan ia adalah kerana kita telah sudah dipisahkan daripada 314 00:14:50,070 --> 00:14:52,490 kes jika penunjuk ini yang terdahulu. 315 00:14:52,490 --> 00:14:54,060 Soalan yang sangat baik. 316 00:14:54,060 --> 00:14:56,880 Apa-apa lagi mengenai perkara ini? 317 00:14:56,880 --> 00:14:57,380 OK, sejuk. 318 00:14:57,380 --> 00:14:58,360 Jadi mari kita menyelesaikannya sehingga. 319 00:14:58,360 --> 00:14:59,890 Kami hampir di sana. 320 00:14:59,890 --> 00:15:01,310 >> Jadi apa jika ia adalah di kepala? 321 00:15:01,310 --> 00:15:03,360 Bagaimana jika bukan cuba untuk memadam lima, 322 00:15:03,360 --> 00:15:06,240 kita sebenarnya mahu memadam empat? 323 00:15:06,240 --> 00:15:07,270 Apa yang perlu saya lakukan? 324 00:15:07,270 --> 00:15:09,610 Well, saya mahu menetapkan semula kepala saya untuk apa? 325 00:15:09,610 --> 00:15:14,288 326 00:15:14,288 --> 00:15:15,585 Menjerit itu? 327 00:15:15,585 --> 00:15:16,710 PENONTON: Yang selepasnya. 328 00:15:16,710 --> 00:15:17,460 Hannah: Beautiful. 329 00:15:17,460 --> 00:15:26,430 OK, jadi kita mahu senaraikan yang akan menunjuk untuk apa sahaja nod seterusnya penunjuk kita. 330 00:15:26,430 --> 00:15:29,040 Baik. 331 00:15:29,040 --> 00:15:30,810 Dan hanya untuk kesempurnaan ini demi, kita akan 332 00:15:30,810 --> 00:15:35,590 mahu menyemak bahawa selagi senarai kami adalah tidak sah, selagi senarai kami tidak 333 00:15:35,590 --> 00:15:42,730 kosong, maka kita mahu menetapkan sama sebelumnya kami untuk batal. 334 00:15:42,730 --> 00:15:46,960 335 00:15:46,960 --> 00:15:50,230 Soalan setakat ini? 336 00:15:50,230 --> 00:15:53,205 Satu langkah lagi from--? 337 00:15:53,205 --> 00:15:55,530 >> PENONTON: Adakah ia jika senarai tidak sama dengan nol? 338 00:15:55,530 --> 00:15:56,950 >> Hannah: Ya, anda betul-betul tepat. 339 00:15:56,950 --> 00:15:58,130 Aku meminta maaf. 340 00:15:58,130 --> 00:16:00,040 Adalah senarai tidak sama dengan nol. 341 00:16:00,040 --> 00:16:01,915 Awesome. 342 00:16:01,915 --> 00:16:04,245 Cuba untuk membawa semua ini pada skrin. 343 00:16:04,245 --> 00:16:06,870 Ia sejenis jatuh. 344 00:16:06,870 --> 00:16:07,730 Maaf, guys. 345 00:16:07,730 --> 00:16:11,874 Dan akhir sekali, semua kita hanya perlu kembali. 346 00:16:11,874 --> 00:16:12,840 OK. 347 00:16:12,840 --> 00:16:15,400 Itu adalah lebih penuh dalam benar-benar cepat. 348 00:16:15,400 --> 00:16:16,800 Luangkan sedikit masa untuk melihat lebih ini. 349 00:16:16,800 --> 00:16:18,216 Beritahu saya jika anda mempunyai sebarang soalan. 350 00:16:18,216 --> 00:16:20,232 351 00:16:20,232 --> 00:16:20,732 Yeah? 352 00:16:20,732 --> 00:16:26,940 >> PENONTON: Jika senarai adalah di kepala, then-- menunggu, takpa. 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 senarai adalah di kepala, kita mengeluarkannya untuk apa saja yang kita dimasukkan. 355 00:16:30,987 --> 00:16:31,486 Yeah? 356 00:16:31,486 --> 00:16:33,777 >> PENONTON: Bolehkah anda menerangkan pertama jika kenyataan sekali lagi? 357 00:16:33,777 --> 00:16:36,149 Jika penunjuk kepada n adalah sama dengan n? 358 00:16:36,149 --> 00:16:36,690 Hannah: Pasti. 359 00:16:36,690 --> 00:16:42,780 Jadi matlamat kita untuk fungsi ini keseluruhannya adalah memadam nod yang mempunyai nilai n. 360 00:16:42,780 --> 00:16:47,460 Jadi, jika kita dapati, seperti kami iterating melalui senarai kami, 361 00:16:47,460 --> 00:16:51,770 nod dengan nilai n, itu yang kita mahu memadam. 362 00:16:51,770 --> 00:16:57,286 Jadi semua yang berlaku penghapusan bahagian dalam yang besar jika kenyataan. 363 00:16:57,286 --> 00:16:58,593 Adakah ini masuk akal? 364 00:16:58,593 --> 00:16:59,480 Cool. 365 00:16:59,480 --> 00:16:59,990 Yeah? 366 00:16:59,990 --> 00:17:02,864 >> PENONTON: Mungkin anda tidak boleh melihat itu, tetapi tidak anda juga perlu garis 367 00:17:02,864 --> 00:17:06,024 untuk menatal melalui senarai? 368 00:17:06,024 --> 00:17:06,690 Hannah: Awesome. 369 00:17:06,690 --> 00:17:10,896 Marilah kita ini sehingga sedikit, dan kami akan membuang yang betul-betul di bahagian bawah. 370 00:17:10,896 --> 00:17:13,282 371 00:17:13,282 --> 00:17:15,490 Mungkin lembaga akan tunggu menjadi idea yang lebih baik sedikit. 372 00:17:15,490 --> 00:17:17,829 Jadi bagaimana saya akan gerakkan penuding ke hadapan? 373 00:17:17,829 --> 00:17:20,184 >> PENONTON: pointer sama penunjuk tambah satu. 374 00:17:20,184 --> 00:17:21,599 >> Hannah: Beautiful. 375 00:17:21,599 --> 00:17:25,050 Jadi yang membolehkan kita untuk terus iterating melalui. 376 00:17:25,050 --> 00:17:26,251 OK. 377 00:17:26,251 --> 00:17:27,750 PENONTON: Tidak akan ada sesuatu yang berlainan? 378 00:17:27,750 --> 00:17:29,028 Hannah: Satu masa lebih? 379 00:17:29,028 --> 00:17:32,444 PENONTON: Tidak akan ada yang lain selepas lama besar jika 380 00:17:32,444 --> 00:17:35,519 kenyataan [didengar]? 381 00:17:35,519 --> 00:17:36,310 Hannah: Bahagian manakah? 382 00:17:36,310 --> 00:17:38,350 Saya minta maaf. 383 00:17:38,350 --> 00:17:41,800 >> PENONTON: penyusuran ini, tidak ada lagi satu? 384 00:17:41,800 --> 00:17:43,550 Hannah: Anda benar-benar boleh mempunyai satu lagi. 385 00:17:43,550 --> 00:17:46,930 Kerana saya mempunyai hak pulangan di sana, anda tidak perlu lagi satu. 386 00:17:46,930 --> 00:17:48,760 Tetapi yeah, soalan yang baik. 387 00:17:48,760 --> 00:17:50,170 OK, ya? 388 00:17:50,170 --> 00:17:52,878 PENONTON: Bolehkah kita berfikir penunjuk yang bergerak melalui senarai 389 00:17:52,878 --> 00:17:56,610 sebagai mengambil nilai setiap nod dalam senarai? 390 00:17:56,610 --> 00:18:00,650 Atau kita perlu menganggapnya sebagai semacam luar ke dalam senarai? 391 00:18:00,650 --> 00:18:02,350 >> Hannah: Sama ada satu adalah baik, saya fikir. 392 00:18:02,350 --> 00:18:05,880 Cara yang saya bayangkan ia adalah Aku berkata, OK, saya penunjuk. 393 00:18:05,880 --> 00:18:06,520 Dan ini adalah saya. 394 00:18:06,520 --> 00:18:07,150 Ini adalah tangan-Ku. 395 00:18:07,150 --> 00:18:09,960 Saya akan menunjukkan kepada yang berbeza perkara yang saya mahu untuk melelar melalui. 396 00:18:09,960 --> 00:18:12,270 Pertama, saya akan menunjukkan kepada ketua senarai. 397 00:18:12,270 --> 00:18:14,144 Dan yang memberitahu saya saya akan menunjukkan empat. 398 00:18:14,144 --> 00:18:18,060 Dan jadi saya, yang luar ke dalam senarai, Saya boleh menunjukkan kepada setiap elemen-elemen ini. 399 00:18:18,060 --> 00:18:19,520 Jadi saya rasa diri saya sebagai penunjuk. 400 00:18:19,520 --> 00:18:21,645 PENONTON: Oleh itu, apabila anda menghapuskan salah satu daripada unsur-unsur, 401 00:18:21,645 --> 00:18:23,404 anda memadam diri sendiri, jadi untuk bercakap. 402 00:18:23,404 --> 00:18:24,070 Hannah: Tepat. 403 00:18:24,070 --> 00:18:25,920 Jadi anda menghapuskan perkara yang anda menunjuk ke. 404 00:18:25,920 --> 00:18:28,340 Jadi dalam contoh yang kita melihat di mana kita berada 405 00:18:28,340 --> 00:18:31,670 cuba untuk memadam lima, apabila saya menunjuk ke lima, 406 00:18:31,670 --> 00:18:34,200 Saya mahu memadam Perkara yang saya menunjuk ke. 407 00:18:34,200 --> 00:18:35,870 Tepat betul. 408 00:18:35,870 --> 00:18:36,577 Ya? 409 00:18:36,577 --> 00:18:39,410 PENONTON: Adakah kita dijaga daripada kes di mana n tiada dalam senarai ini? 410 00:18:39,410 --> 00:18:40,460 Hannah: Jika n tiada dalam senarai itu? 411 00:18:40,460 --> 00:18:43,501 Semua yang akan berlaku adalah anda akan melelar melalui dan Itekadar 412 00:18:43,501 --> 00:18:47,616 melalui, dan kemudian, anda akan untuk sampai ke penunjuk menjadi batal, 413 00:18:47,616 --> 00:18:48,990 dan kemudian anda akan dilakukan. 414 00:18:48,990 --> 00:18:50,812 >> PENONTON: Jadi adakah kita perlu untuk kembali apa-apa? 415 00:18:50,812 --> 00:18:51,520 Hannah: Kami boleh. 416 00:18:51,520 --> 00:18:54,500 Cara yang jika ditakrifkan ini fungsi, saya hanya mengatakan bahawa ia mengembalikan 417 00:18:54,500 --> 00:18:55,770 tidak sah tanpa mengira. 418 00:18:55,770 --> 00:18:58,360 Tetapi, anda boleh mempunyai sesuatu seperti kembali integer, 419 00:18:58,360 --> 00:19:00,920 dan ia telah kembali 1 negatif jika ia gagal. 420 00:19:00,920 --> 00:19:03,070 Sesuatu seperti itu. 421 00:19:03,070 --> 00:19:04,494 Soalan with-- ya? 422 00:19:04,494 --> 00:19:05,410 PENONTON: [didengar]? 423 00:19:05,410 --> 00:19:05,993 Hannah: Maaf? 424 00:19:05,993 --> 00:19:07,419 PENONTON: [didengar]? 425 00:19:07,419 --> 00:19:07,960 Hannah: Pasti. 426 00:19:07,960 --> 00:19:11,730 Jadi itulah actual-- sekali kita kena dilakukan semua ini kerja bergerak 427 00:19:11,730 --> 00:19:16,530 semua anak panah ini sekitar, keseluruhan kami matlamat adalah untuk menghilangkan nod 428 00:19:16,530 --> 00:19:18,230 yang kami cari. 429 00:19:18,230 --> 00:19:21,610 Jadi dalam kes ini, membebaskan penunjuk, jika saya menunjuk ke lima, 430 00:19:21,610 --> 00:19:24,670 ia seperti memadam nod pertengahan ini. 431 00:19:24,670 --> 00:19:27,250 Itu sebahagian penunjuk percuma. 432 00:19:27,250 --> 00:19:29,090 Yang masuk akal? 433 00:19:29,090 --> 00:19:31,390 >> PENONTON: Jadi memikirkan yang anda lakukan tidak [didengar]? 434 00:19:31,390 --> 00:19:36,060 >> Hannah: Jadi kita diambil alih pada mulanya kami mempunyai beberapa senarai yang already-- 435 00:19:36,060 --> 00:19:37,220 mereka telah meletakkan ini bersama-sama. 436 00:19:37,220 --> 00:19:39,761 Jadi, untuk membina ini senarai, mereka must've [didengar]. 437 00:19:39,761 --> 00:19:42,190 438 00:19:42,190 --> 00:19:42,750 Cool. 439 00:19:42,750 --> 00:19:44,490 Apa-apa lagi dengan ini? 440 00:19:44,490 --> 00:19:46,386 Ya? 441 00:19:46,386 --> 00:19:49,204 >> PENONTON: Bagaimana jika senarai tidak sama dengan garis batal? 442 00:19:49,204 --> 00:19:49,704 [Didengar]? 443 00:19:49,704 --> 00:19:52,289 444 00:19:52,289 --> 00:19:53,080 Hannah: Berikut? 445 00:19:53,080 --> 00:19:53,840 PENONTON: Yeah. 446 00:19:53,840 --> 00:19:57,370 Hannah: OK, semua yang saya lakukan adalah saya hanya memastikan 447 00:19:57,370 --> 00:20:03,250 bahawa sebelum saya cuba untuk senarai dereference, sebelum saya cuba untuk mengakses sebelumnya, 448 00:20:03,250 --> 00:20:07,210 Saya ingin memastikan bahawa ia tidak null jadi saya tidak mendapat satu kesalahan seg. 449 00:20:07,210 --> 00:20:08,400 Cool. 450 00:20:08,400 --> 00:20:10,820 >> OK, saya tahu ini adalah agak banyak untuk mendapatkan melalui. 451 00:20:10,820 --> 00:20:14,950 Jadi slaid ini akan yang disediakan untuk anda. 452 00:20:14,950 --> 00:20:17,341 Jadi, anda boleh melaluinya dengan lebih terperinci. 453 00:20:17,341 --> 00:20:17,841 Ya? 454 00:20:17,841 --> 00:20:19,749 >> PENONTON: Mengapakah senarai [didengar]? 455 00:20:19,749 --> 00:20:24,129 456 00:20:24,129 --> 00:20:24,670 Hannah: Pasti. 457 00:20:24,670 --> 00:20:27,390 Jadi senarai benar-benar menunjukkan kepada elemen ini di sini, 458 00:20:27,390 --> 00:20:29,200 elemen yang pertama dalam senarai. 459 00:20:29,200 --> 00:20:30,748 Jadi ia tidak boleh mempunyai sebelumnya. 460 00:20:30,748 --> 00:20:31,736 Ya? 461 00:20:31,736 --> 00:20:35,194 >> PENONTON: Adakah titik penunjuk ke alamat yang sama dalam ingatan? 462 00:20:35,194 --> 00:20:38,404 Adakah ia menunjukkan yang sama alamat dalam ingatan sebagai nod 463 00:20:38,404 --> 00:20:40,640 bahawa ia menunjuk ke? 464 00:20:40,640 --> 00:20:43,865 >> Hannah: Ya, ia menunjuk untuk nod ini dalam ingatan. 465 00:20:43,865 --> 00:20:47,190 >> PENONTON: Betul, jadi apabila anda [didengar]? 466 00:20:47,190 --> 00:20:50,580 >> Hannah: Dari satu segi, ya. 467 00:20:50,580 --> 00:20:51,280 OK. 468 00:20:51,280 --> 00:20:52,997 Baiklah, mari kita bergerak bersama-sama dengan ini. 469 00:20:52,997 --> 00:20:55,330 Dan jika anda mempunyai soalan, melekat di sekeliling pada akhirnya, 470 00:20:55,330 --> 00:20:57,130 dan kita boleh melaluinya sekali lagi. 471 00:20:57,130 --> 00:20:58,120 OK, sejuk. 472 00:20:58,120 --> 00:21:00,490 Sekarang, kita dapat bergerak untuk hash jadual, try, 473 00:21:00,490 --> 00:21:04,940 dan pokok-pokok, yang anda mendapat super mengetahui dalam p-set lima, buku ejaan. 474 00:21:04,940 --> 00:21:11,020 >> Jadi jadual hash hanyalah pelbagai dengan senarai secara tunggal berkaitan 475 00:21:11,020 --> 00:21:14,050 atau duanya adalah terpakai dikaitkan senarai datang kira ia. 476 00:21:14,050 --> 00:21:16,380 Oleh itu, kita mempunyai beberapa jenis array bersekutu. 477 00:21:16,380 --> 00:21:21,280 Dan bagaimana kita tahu yang mana satu ini tatasusunan baldi 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 kes ini, boleh sesiapa meneka apa fungsi hash 480 00:21:26,470 --> 00:21:28,636 akan hanya berdasarkan beberapa daripada input dan output? 481 00:21:28,636 --> 00:21:31,392 482 00:21:31,392 --> 00:21:33,194 >> PENONTON: Nombor Surat abjad. 483 00:21:33,194 --> 00:21:33,860 Hannah: Tepat. 484 00:21:33,860 --> 00:21:36,160 Ia hanya meletakkan mereka dalam susunan abjad. 485 00:21:36,160 --> 00:21:39,280 Semua yang bermula dengan A dimasukkan ke dalam baldi yang pertama. 486 00:21:39,280 --> 00:21:43,340 Semua dengan B dimasukkan ke dalam baldi kedua, sebagainya, 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 apa-apa fungsi yang mengambil dalam perkataan 489 00:21:48,980 --> 00:21:51,910 dan akan memberitahu anda apa Bucket ia tergolong dalam. 490 00:21:51,910 --> 00:21:55,150 Jadi yang masuk dalam kami array ia tergolong dalam. 491 00:21:55,150 --> 00:21:58,080 >> Jadi setiap kali saya memberikan saya hash berfungsi perkataan, 492 00:21:58,080 --> 00:22:00,660 ia perlu beritahu saya yang sama meletakkan setiap kali. 493 00:22:00,660 --> 00:22:03,270 Jadi, jika kita menggunakan fungsi hash daripada slaid yang lalu 494 00:22:03,270 --> 00:22:05,950 di mana kami sorting oleh surat pertama dalam abjad, 495 00:22:05,950 --> 00:22:08,230 setiap kali saya memberikan saya fungsi hash "epal," 496 00:22:08,230 --> 00:22:10,180 ia perlu sentiasa memberikan saya kembali 0. 497 00:22:10,180 --> 00:22:12,890 Jadi, jika saya mempunyai sebiji epal untuk dimasukkan ke dalam jadual hash saya, 498 00:22:12,890 --> 00:22:17,700 jika saya memberikan "epal" untuk fungsi hash saya, ada yang berkata, pergi memasukkannya ke dalam baldi 0. 499 00:22:17,700 --> 00:22:19,980 Jika saya mencari seorang epal dalam jadual hash saya 500 00:22:19,980 --> 00:22:24,340 dan aku berkata, di mana kekuatan epal secara langsung, anda bertanya fungsi hash anda. 501 00:22:24,340 --> 00:22:26,900 Dan ia berkata, pergi ke baldi 0. 502 00:22:26,900 --> 00:22:29,150 Baiklah? 503 00:22:29,150 --> 00:22:32,660 Soalan dengan fungsi hash? 504 00:22:32,660 --> 00:22:34,570 Awesome. 505 00:22:34,570 --> 00:22:37,320 >> Di sini adalah yang lebih sedikit penjelasan terperinci 506 00:22:37,320 --> 00:22:39,570 apa fungsi hash mungkin kelihatan 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 adalah dalam dunia yang ideal, 510 00:22:45,960 --> 00:22:48,870 kita hanya akan mempunyai satu perkara dalam setiap baldi. 511 00:22:48,870 --> 00:22:50,900 Tetapi pada hakikatnya, ada bukan sahaja satu perkataan 512 00:22:50,900 --> 00:22:54,280 yang bermula dengan A. Terdapat bukan hanya satu perkataan yang bermula dengan B. Jadi 513 00:22:54,280 --> 00:22:56,960 dalam kes ini, jika kita tiba-tiba mendapat "berry," 514 00:22:56,960 --> 00:22:58,710 dan kita mahu meletakkan ia ke dalam jadual hash kami, 515 00:22:58,710 --> 00:23:03,640 dan kita lihat, oh, tidak, pisang adalah sudah ada, apa yang kita nak buat? 516 00:23:03,640 --> 00:23:05,900 >> Nah, kita mempunyai dua pilihan. 517 00:23:05,900 --> 00:23:07,990 Pilihan pertama adalah linear menyelesaikan sesuatu, yang 518 00:23:07,990 --> 00:23:11,100 hanya bermakna pergi mencari baldi yang kosong akan datang. 519 00:23:11,100 --> 00:23:14,100 Pergi mencari kemasukan array kosong akan datang. 520 00:23:14,100 --> 00:23:15,750 Dan hanya meletakkan "berry" di sana. 521 00:23:15,750 --> 00:23:18,880 Jadi saya tahu ia sepatutnya pergi dengan pisang dalam baldi satu. 522 00:23:18,880 --> 00:23:22,155 Tetapi hanya memasukkannya ke dalam baldi tiga, kerana tiga baldi kosong. 523 00:23:22,155 --> 00:23:24,806 524 00:23:24,806 --> 00:23:26,680 Pilihan lain adalah mungkin apa yang anda melaksanakan 525 00:23:26,680 --> 00:23:29,220 dalam p-set anda, di mana anda mempunyai rantaian berasingan. 526 00:23:29,220 --> 00:23:33,990 Jadi setiap baldi anda, setiap unsur dan anda, 527 00:23:33,990 --> 00:23:38,410 bukan sahaja memegang satu perkataan, tetapi sebenarnya memegang satu penuding kepada satu senarai perkataan. 528 00:23:38,410 --> 00:23:41,880 Jadi jika anda mempunyai pisang dalam jadual hash anda 529 00:23:41,880 --> 00:23:44,740 dan anda tiba-tiba mahu menambah berry, tidak ada masalah. 530 00:23:44,740 --> 00:23:51,110 Hanya menambah berry ke akhirnya, atau untuk permulaan, senarai yang terkait dengannya. 531 00:23:51,110 --> 00:23:54,040 OK, hebat. 532 00:23:54,040 --> 00:23:58,490 Soalan dengan hash meja sebelum kita teruskan? 533 00:23:58,490 --> 00:23:59,850 >> Baiklah. 534 00:23:59,850 --> 00:24:01,070 Pokok dan cuba. 535 00:24:01,070 --> 00:24:07,980 OK, jadi ini adalah satu lagi pilihan untuk melaksanakan kamus. 536 00:24:07,980 --> 00:24:09,100 Anda boleh membuat cuba. 537 00:24:09,100 --> 00:24:13,420 Jadi ini adalah sejenis khas pokok yang berkelakuan seperti jadual hash pelbagai peringkat. 538 00:24:13,420 --> 00:24:16,862 Jadi, anda akan melihat gambar di mana anda mempunyai array yang 539 00:24:16,862 --> 00:24:19,320 menunjuk kepada sekumpulan tatasusunan ketika itu kepada sekumpulan tatasusunan 540 00:24:19,320 --> 00:24:20,390 ketika itu kepada sekumpulan tatasusunan. 541 00:24:20,390 --> 00:24:23,140 Dan kita akan melihat apa yang akan kelihatan seperti pada slaid masa depan. 542 00:24:23,140 --> 00:24:26,070 Dan lebih amnya, pokok hanya struktur data mana-mana 543 00:24:26,070 --> 00:24:29,710 di mana data tersebut dianjurkan di beberapa hierarki. 544 00:24:29,710 --> 00:24:32,610 Jadi di mana kita melihat kita mempunyai semacam pemahaman 545 00:24:32,610 --> 00:24:36,130 pada tahap yang tinggi, tahap yang seterusnya, tahap yang seterusnya, tahap yang seterusnya. 546 00:24:36,130 --> 00:24:39,690 Jadi ini mungkin yang paling jelas dengan beberapa contoh khusus. 547 00:24:39,690 --> 00:24:40,880 Jadi, inilah pokok kita. 548 00:24:40,880 --> 00:24:42,970 Anda boleh melihat bahawa ia mempunyai tahap tertentu 549 00:24:42,970 --> 00:24:45,480 kita mulakan dengan yang nod akar, satu. 550 00:24:45,480 --> 00:24:47,640 Dan kita boleh turun melalui pokok kami. 551 00:24:47,640 --> 00:24:50,730 552 00:24:50,730 --> 00:24:53,910 >> Pokok binari adalah sejenis pokok. 553 00:24:53,910 --> 00:24:56,770 Dan satu-satunya spesifikasi untuk pokok binari 554 00:24:56,770 --> 00:25:01,130 adalah bahawa setiap nod mempunyai paling banyak dua daun. 555 00:25:01,130 --> 00:25:03,960 Jadi anda tidak akan melihat apa-apa nod ini mempunyai tiga atau empat 556 00:25:03,960 --> 00:25:06,880 atau beberapa nombor lain daun. 557 00:25:06,880 --> 00:25:11,310 Dan kemudian yang lebih spesifik adalah pokok carian binari 558 00:25:11,310 --> 00:25:18,010 di mana setiap nod di sebelah kiri yang nod akan mempunyai nilai yang lebih kecil. 559 00:25:18,010 --> 00:25:21,180 Dan setiap nilai kepada betul akan menjadi lebih besar. 560 00:25:21,180 --> 00:25:26,900 Jadi, jika anda melihat 44 adalah pada akar kita, ke kiri, 11, 22, dan 33 561 00:25:26,900 --> 00:25:28,940 adalah kurang dari akar kami. 562 00:25:28,940 --> 00:25:33,890 Dan di sebelah kanan adalah semua nombor bigger-- 66, 55, dan 77. 563 00:25:33,890 --> 00:25:37,380 Dan harta ini berlaku di setiap peringkat pokok itu. 564 00:25:37,380 --> 00:25:42,690 >> Oleh itu, apabila kita turun ke 22, 11, dan 33, masih 11 565 00:25:42,690 --> 00:25:46,950 adalah lebih kecil daripada 22 dan 33 adalah lebih besar daripada 22. 566 00:25:46,950 --> 00:25:50,160 Dan ini menjadikan ia lebih mudah untuk mencari kerana jika kita cari nombor, 567 00:25:50,160 --> 00:25:53,877 kita tahu yang cawangan untuk mengikuti ke bawah. 568 00:25:53,877 --> 00:25:56,210 Jadi ini perlu mengingatkan anda yang sedikit sedikit carian binari. 569 00:25:56,210 --> 00:25:56,967 Yeah? 570 00:25:56,967 --> 00:25:58,835 >> PENONTON: Oleh itu, apabila anda menggambarkan binari, 571 00:25:58,835 --> 00:26:00,587 anda berkata ia mempunyai 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 PENONTON: Bolehkah ia mempunyai kurang? 574 00:26:02,580 --> 00:26:03,121 Hannah: Yeah. 575 00:26:03,121 --> 00:26:06,720 Jadi mari kita berkata, sebagai contoh, anda tidak mempunyai nombor genap perkara 576 00:26:06,720 --> 00:26:11,791 dan anda tidak boleh mengisi semua anda daun, ia adalah baik jika seseorang itu mempunyai satu. 577 00:26:11,791 --> 00:26:12,290 OK? 578 00:26:12,290 --> 00:26:12,789 Awesome. 579 00:26:12,789 --> 00:26:15,930 Lain-lain soalan di atas pokok? 580 00:26:15,930 --> 00:26:16,670 OK. 581 00:26:16,670 --> 00:26:20,110 >> Kembali ke cuba kita seperti yang saya telah bercakap kira-kira sedikit lebih awal, 582 00:26:20,110 --> 00:26:23,900 bagaimana kita mempunyai tatasusunan pelbagai peringkat. 583 00:26:23,900 --> 00:26:26,280 Jadi dalam kes ini, kita mula di bahagian atas. 584 00:26:26,280 --> 00:26:29,030 Dan kita boleh mengikut mana-mana perkataan yang diberikan ke bawah. 585 00:26:29,030 --> 00:26:30,780 Jadi mari kita mengatakan bahawa kita mahu mencari Turing. 586 00:26:30,780 --> 00:26:34,380 Kami bermula pada T, mengikutinya turun kepada satu tatasusunan yang mengandungi U, 587 00:26:34,380 --> 00:26:37,350 dan mengikutinya ke bawah sehingga kita mencapai delta kecil ini yang 588 00:26:37,350 --> 00:26:39,060 memberitahu kita, ya, anda mendapati perkataan. 589 00:26:39,060 --> 00:26:43,200 590 00:26:43,200 --> 00:26:44,120 Jelas mengenai try? 591 00:26:44,120 --> 00:26:48,138 Apa-apa sahaja untuk pergi ke sana? 592 00:26:48,138 --> 00:26:48,908 Ya? 593 00:26:48,908 --> 00:26:51,866 PENONTON: Adakah simbol delta perlu menduduki ruang dalam yang cuba? 594 00:26:51,866 --> 00:26:54,532 Hannah: Yeah, jadi ia tidak semestinya perlu untuk menjadi delta. 595 00:26:54,532 --> 00:26:57,760 Tetapi kita perlu beberapa cara untuk memberitahu kami computer-- maaf, 596 00:26:57,760 --> 00:27:01,130 supaya kita tahu bahawa TUR tidak adalah perkataan. 597 00:27:01,130 --> 00:27:04,180 Kerana mari kita mengatakan bahawa kita tidak mempunyai konsep delta, konsep ini 598 00:27:04,180 --> 00:27:09,850 tahniah, anda mendapati perkataan, ia akan melalui dan melelar T-U-R, 599 00:27:09,850 --> 00:27:11,300 dan kemudian berkata, hebat, saya mendapati ia! 600 00:27:11,300 --> 00:27:12,670 Ia mestilah satu perkataan. 601 00:27:12,670 --> 00:27:13,720 Tetapi ia adalah benar-benar tidak. 602 00:27:13,720 --> 00:27:15,310 Kita mahu seluruh Turing untuk menjadi satu perkataan. 603 00:27:15,310 --> 00:27:17,760 Oleh itu, kita mesti mempunyai sesuatu di akhir yang kata, tahniah, 604 00:27:17,760 --> 00:27:19,051 anda telah menemui perkataan yang sah. 605 00:27:19,051 --> 00:27:21,680 PENONTON: Oleh itu, jika anda mempunyai seperti 26 huruf dalam abjad, 606 00:27:21,680 --> 00:27:24,560 akan anda benar-benar mempunyai 27 kunci dalam cuba anda? 607 00:27:24,560 --> 00:27:26,010 >> Hannah: Awesome, yeah. 608 00:27:26,010 --> 00:27:28,210 Jadi sebenarnya, saya berfikir bahawa akan diberikan kepada slaid seterusnya. 609 00:27:28,210 --> 00:27:29,440 Ta-da! 610 00:27:29,440 --> 00:27:32,880 Di mana jika anda mempunyai nod dalam cuba anda, anda 611 00:27:32,880 --> 00:27:35,800 akan mempunyai 27 kanak-kanak dan bukannya 26. 612 00:27:35,800 --> 00:27:39,010 613 00:27:39,010 --> 00:27:40,050 Sebarang soalan dengan itu? 614 00:27:40,050 --> 00:27:40,550 Yeah? 615 00:27:40,550 --> 00:27:44,569 PENONTON: Mengapa cuba mengambil jadi ruang yang lebih [didengar] seperti anda pergi? 616 00:27:44,569 --> 00:27:47,629 Mengapa ia dianggap sebagai [didengar]? 617 00:27:47,629 --> 00:27:48,170 Hannah: Pasti. 618 00:27:48,170 --> 00:27:48,790 Mari kita kembali. 619 00:27:48,790 --> 00:27:52,350 Persoalannya, mengapa adalah cuba jadi lebih besar 620 00:27:52,350 --> 00:27:54,620 daripada sesuatu seperti jadual hash. 621 00:27:54,620 --> 00:27:57,790 Jadi untuk setiap peringkat itu, walaupun mereka tidak akan disediakan di sini, 622 00:27:57,790 --> 00:28:01,250 anda perlu mempunyai semua 26 aksara. 623 00:28:01,250 --> 00:28:04,420 Dan sebab yang anda tidak boleh berkata, oh, tetapi seperti untuk Turing, saya 624 00:28:04,420 --> 00:28:07,570 tidak perlu mempunyai apa-apa dari orang-orang perkara yang sama pada tahap U. Nah, 625 00:28:07,570 --> 00:28:11,390 jika tiba-tiba anda mahu menambah sesuatu yang seperti T-H, 626 00:28:11,390 --> 00:28:14,800 anda akan perlu mempunyai keupayaan menambah perkataan itu. 627 00:28:14,800 --> 00:28:17,330 Jadi untuk setiap huruf, anda akan mempunyai 628 00:28:17,330 --> 00:28:19,730 mempunyai sekumpulan tatasusunan datang kira ia. 629 00:28:19,730 --> 00:28:24,060 Jadi, anda boleh melihat bagaimana ia akan mendapat benar-benar besar, benar-benar cepat. 630 00:28:24,060 --> 00:28:26,560 Apa-apa soalan lain? 631 00:28:26,560 --> 00:28:28,980 Baiklah. 632 00:28:28,980 --> 00:28:29,832 Yeah? 633 00:28:29,832 --> 00:28:33,210 >> PENONTON: Bilakah kali percubaan lebih cepat daripada jadual hash? 634 00:28:33,210 --> 00:28:36,280 >> Hannah: Bilakah kali percubaan lebih cepat daripada jadual hash? 635 00:28:36,280 --> 00:28:39,120 Jadi, jika anda benar-benar mempunyai fungsi hash buruk. 636 00:28:39,120 --> 00:28:41,840 Jadi mari kita mengatakan saya adalah seperti, inilah fungsi hash anda. 637 00:28:41,840 --> 00:28:43,660 Tidak kira apa perkataan anda memberi saya, saya sentiasa 638 00:28:43,660 --> 00:28:47,740 akan memasukkannya ke dalam kemasukan pelbagai 0. 639 00:28:47,740 --> 00:28:52,000 Demikianlah kita berakhir dengan hanya meletakkan segala-galanya dalam satu senarai panjang dikaitkan besar. 640 00:28:52,000 --> 00:28:58,740 Dan supaya masa yang lookup akan mengambil paling teruk n jika itu bagi mereka yang dalam senarai kami. 641 00:28:58,740 --> 00:29:03,150 Dengan cuba ini, kita hanya perlu untuk melelar melalui huruf dalam perkataan. 642 00:29:03,150 --> 00:29:07,080 Jadi, walaupun Kami tambahi lagi sekumpulan banyak kata-kata untuk cuba kami, 643 00:29:07,080 --> 00:29:09,620 ia tidak akan membawa kita lebih lama untuk mencari perkataan tertentu. 644 00:29:09,620 --> 00:29:11,750 >> Apa yang perlu kita lakukan ialah, untuk Sebagai contoh, dalam kes ini, 645 00:29:11,750 --> 00:29:17,170 katakan yang kami cari zoom, kita hanya perlu melelar lebih 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 itulah sahaja panjang zoom perkataan. 648 00:29:22,250 --> 00:29:25,400 Tidak kira berapa banyak banyak kata-kata kita masukkan ke dalam cuba ini. 649 00:29:25,400 --> 00:29:30,225 Kami sentiasa boleh mendapatkannya dalam empat langkah mereka. 650 00:29:30,225 --> 00:29:31,215 Awesome. 651 00:29:31,215 --> 00:29:32,205 Ya? 652 00:29:32,205 --> 00:29:34,185 >> PENONTON: Jadi [didengar] adalah array, bukan? 653 00:29:34,185 --> 00:29:35,322 >> Hannah: Mm-hm. 654 00:29:35,322 --> 00:29:37,155 PENONTON: Jika anda mencari [didengar], 655 00:29:37,155 --> 00:29:40,929 anda akan perlu melalui pelbagai anda untuk mencari [didengar]? 656 00:29:40,929 --> 00:29:41,470 Hannah: Pasti. 657 00:29:41,470 --> 00:29:44,000 PENONTON: Tidak yang mengambil lebih banyak masa? 658 00:29:44,000 --> 00:29:46,370 Hannah: Jika saya akan mengatakan bahawa pelbagai saya sentiasa 659 00:29:46,370 --> 00:29:49,250 akan menjadi A, B, C, D, E, F, G, blah blah blah, 660 00:29:49,250 --> 00:29:51,630 jadi jika saya sentiasa tahu ia dalam perintah itu tepat sama, 661 00:29:51,630 --> 00:29:53,880 jika saya sentiasa tahu ia mengikut abjad, 662 00:29:53,880 --> 00:29:57,860 Saya hanya boleh mengatakan O adalah jumlah fulan dalam abjad. 663 00:29:57,860 --> 00:29:59,620 Hanya melompat ke tempat itu. 664 00:29:59,620 --> 00:30:01,860 Kerana ingat, dengan tatasusunan, kita boleh mengakses 665 00:30:01,860 --> 00:30:06,590 apa-apa unsur yang pelbagai dalam berterusan masa 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 Yeah? 668 00:30:09,580 --> 00:30:12,005 >> PENONTON: Pada yang lalu slaid [didengar] 27, 669 00:30:12,005 --> 00:30:14,430 tetapi untuk 26 yang pertama. 670 00:30:14,430 --> 00:30:15,400 >> Hannah: Maaf? 671 00:30:15,400 --> 00:30:18,800 >> PENONTON: Bukankah pertama satu 0, supaya ia tidak akan menjadi 26? 672 00:30:18,800 --> 00:30:24,900 >> Hannah: Pasti, jadi apabila kita katakan 27, itu akan memberikan kita indeks 0 melalui 26. 673 00:30:24,900 --> 00:30:28,220 Tetapi jika anda benar-benar mengira mereka keluar, ia akan menjadi 27. 674 00:30:28,220 --> 00:30:30,007 Soalan yang baik. 675 00:30:30,007 --> 00:30:30,590 Apa-apa lagi? 676 00:30:30,590 --> 00:30:31,200 Yeah? 677 00:30:31,200 --> 00:30:34,420 >> PENONTON: Begitu juga cuba perlahan daripada jadual hash? 678 00:30:34,420 --> 00:30:37,920 >> Hannah: cuba akan menjadi, dalam teori, lebih cepat daripada jadual hash 679 00:30:37,920 --> 00:30:39,760 tetapi mengambil lebih banyak memori. 680 00:30:39,760 --> 00:30:40,534 Yeah? 681 00:30:40,534 --> 00:30:41,450 PENONTON: [didengar]? 682 00:30:41,450 --> 00:30:45,770 683 00:30:45,770 --> 00:30:47,484 >> Hannah: Saya minta maaf, saya tidak mendengar anda. 684 00:30:47,484 --> 00:30:48,400 PENONTON: [didengar]. 685 00:30:48,400 --> 00:30:51,250 686 00:30:51,250 --> 00:30:54,100 0-25 memberikan anda 26. 687 00:30:54,100 --> 00:30:56,958 >> Hannah: 0-25 akan memberikan anda 26, betul. 688 00:30:56,958 --> 00:30:58,457 >> PENONTON: Dan kemudian [didengar]. 689 00:30:58,457 --> 00:30:59,040 Hannah: Betul. 690 00:30:59,040 --> 00:31:04,760 Oleh itu jumlah kami adalah menyatakan beberapa perkara yang sedang kita. 691 00:31:04,760 --> 00:31:07,260 Jadi, jika kita mempunyai 27, itu akan memberikan kita 0 692 00:31:07,260 --> 00:31:10,620 melalui 26, yang akan memberi bilik kami untuk, dalam kes ini, 693 00:31:10,620 --> 00:31:12,770 Saya tidak termasuk apostrofe. 694 00:31:12,770 --> 00:31:17,040 Jadi kita sudah melalui 25 0 adalah 26 huruf pertama abjad, 695 00:31:17,040 --> 00:31:18,990 atau semua 26 huruf abjad. 696 00:31:18,990 --> 00:31:21,190 Dan kemudian yang lalu perkara, di entri 26, adalah 697 00:31:21,190 --> 00:31:24,598 akan menjadi cek tanda, atau delta. 698 00:31:24,598 --> 00:31:26,960 Apa-apa lagi? 699 00:31:26,960 --> 00:31:29,130 Awesome. 700 00:31:29,130 --> 00:31:30,020 Hilang ruang saya. 701 00:31:30,020 --> 00:31:31,020 OK, sejuk. 702 00:31:31,020 --> 00:31:33,240 >> Oleh itu, kita sudah menyentuh ini. 703 00:31:33,240 --> 00:31:37,430 Tetapi perdagangan yang besar di luar antara percubaan dan jadual hash 704 00:31:37,430 --> 00:31:39,720 ialah cuba memberi, dalam teori, tetap mencari 705 00:31:39,720 --> 00:31:42,890 kali tetapi menggunakan banyak keseluruhan memori. 706 00:31:42,890 --> 00:31:46,495 Baiklah, sekarang kita mempunyai sedikit struktur kurang rumit, 707 00:31:46,495 --> 00:31:49,640 dan kami akan dilakukan dengan C, dan kami akan bergerak ke kanan bersama-sama. 708 00:31:49,640 --> 00:31:51,930 >> Jadi susunan, kita lihat ini dalam kuliah di mana anda 709 00:31:51,930 --> 00:31:55,020 mempunyai sesuatu seperti susunan dulang di mana 710 00:31:55,020 --> 00:31:57,330 perkara terakhir yang anda meletakkan pada timbunan akan 711 00:31:57,330 --> 00:31:59,500 menjadi perkara pertama yang anda bermula. 712 00:31:59,500 --> 00:32:02,880 Jadi itulah yang benar-benar mentakrifkan timbunan adalah yang perkara terakhir yang anda memakai 713 00:32:02,880 --> 00:32:06,080 akan menjadi yang pertama perkara yang anda bermula. 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 menambah sesuatu untuk timbunan kita, kita panggil yang menolak. 716 00:32:12,070 --> 00:32:14,970 Dan jika kita mengambil sesuatu off, kita panggil ia pop. 717 00:32:14,970 --> 00:32:17,080 Dan jika kita akan melaksanakan tindanan, kita 718 00:32:17,080 --> 00:32:20,660 perlu pastikan anda menjejaki kedua-dua saiz dan keupayaan. 719 00:32:20,660 --> 00:32:24,940 Jadi jumlah bilangan elemen yang kita boleh memegang dan nombor semasa elemen 720 00:32:24,940 --> 00:32:27,880 yang kami memegang. 721 00:32:27,880 --> 00:32:29,885 >> Dan sangat begitu juga kami mempunyai barisan. 722 00:32:29,885 --> 00:32:34,510 Dan satu-satunya perbezaan adalah bukan dengan susunan, 723 00:32:34,510 --> 00:32:37,630 kita berkata sesuatu yang kita tidak memakai adalah perkara pertama yang kami bermula. 724 00:32:37,630 --> 00:32:40,940 Jadi dengan beratur, yang Perkara pertama yang kita masukkan ke dalam 725 00:32:40,940 --> 00:32:43,129 akan menjadi Perkara pertama yang kita keluarkan. 726 00:32:43,129 --> 00:32:45,420 Jadi ini adalah seperti jika anda sebenarnya beratur di kedai 727 00:32:45,420 --> 00:32:48,140 dan anda yang membantu, maka orang yang pertama dalam talian 728 00:32:48,140 --> 00:32:50,880 harus menjadi orang yang pertama yang telah membantu. 729 00:32:50,880 --> 00:32:52,220 Jadi yang akan beratur. 730 00:32:52,220 --> 00:32:55,880 >> Oleh itu, kita perlu menjejaki saiz, kapasiti, dan kepala sejak kami 731 00:32:55,880 --> 00:33:01,130 akan mengambil setiap orang di bagian depan daripada senarai dan bukannya belakang. 732 00:33:01,130 --> 00:33:03,480 Soalan pada itu? 733 00:33:03,480 --> 00:33:06,330 Sebarang pertanyaan C yang mengganggu anda? 734 00:33:06,330 --> 00:33:09,590 Struktur data, mana-mana barangan yang menyeronokkan? 735 00:33:09,590 --> 00:33:10,530 Baiklah, sejuk. 736 00:33:10,530 --> 00:33:14,120 Jadi saya akan menyerahkannya ke dalam tangan Alison untuk melompat ke dalam pengaturcaraan beberapa. 737 00:33:14,120 --> 00:33:15,965 >> Alison: Oh, kita akan melihat. 738 00:33:15,965 --> 00:33:17,370 Kita akan melihat bagaimana saya lakukan di sini. 739 00:33:17,370 --> 00:33:21,410 OK, saya akan cuba terbang melalui hal-hal ini, guys. 740 00:33:21,410 --> 00:33:24,540 Hannah pergi sangat dalam mendalam tentang segala hal yang beliau. 741 00:33:24,540 --> 00:33:26,900 Saya akan cuba untuk memberikan anda gambaran letupan cepat 742 00:33:26,900 --> 00:33:31,290 supaya kita boleh mendapatkan untuk Davin dengan semua keseronokan dan keselamatan JavaScript perkara 743 00:33:31,290 --> 00:33:33,380 yang mungkin anda sebenarnya mahu mendengar lebih lanjut mengenai. 744 00:33:33,380 --> 00:33:36,600 >> OK, sebagai Hannah berkata, jika anda mempunyai apa-apa soalan, 745 00:33:36,600 --> 00:33:39,170 Saya akan terlalu cepat, sila, beritahu saya. 746 00:33:39,170 --> 00:33:42,114 Saya akan menjawab soalan-soalan yang perlu. 747 00:33:42,114 --> 00:33:45,280 Jadi untuk memulakan, kita akan bermula dengan mungkin salah satu perkara pertama 748 00:33:45,280 --> 00:33:48,730 anda belajar dengan web pengaturcaraan, kebenaran. 749 00:33:48,730 --> 00:33:52,720 Jadi chmod, anda semua harus sudah pakar dalam semua ini dengan web 750 00:33:52,720 --> 00:33:54,870 pengaturcaraan yang anda mempunyai telah melakukan akhir-akhir ini. 751 00:33:54,870 --> 00:33:57,320 Ia pada dasarnya hanya arahan yang mengubah keizinan 752 00:33:57,320 --> 00:34:00,779 atau kebenaran akses objek sistem fail kami. 753 00:34:00,779 --> 00:34:02,570 Sudah tentu, untuk benar-benar lihat ini, jika anda 754 00:34:02,570 --> 00:34:04,910 mempunyai apa-apa masalah dengan ini dalam set masalah anda, 755 00:34:04,910 --> 00:34:11,460 anda mungkin telah menggunakan ls l, yang panjang, untuk mendapatkan jenis pandangan daripada seperti ini, 756 00:34:11,460 --> 00:34:14,209 di mana anda benar-benar melihat semua keizinan untuk fail. 757 00:34:14,209 --> 00:34:16,850 758 00:34:16,850 --> 00:34:20,732 >> Dan benar-benar, kita hanya akan pergi melalui cukup cepat hanya cantik 759 00:34:20,732 --> 00:34:21,940 banyak apa yang masing-masing bermakna. 760 00:34:21,940 --> 00:34:24,481 Oleh itu, kita telah d di sini, yang hanya bermaksud direktori. 761 00:34:24,481 --> 00:34:26,790 762 00:34:26,790 --> 00:34:31,739 Jelas di sini, kita lihat rwx, yang boleh baca, tulis, dan boleh dilaksanakan. 763 00:34:31,739 --> 00:34:37,090 Ini juga boleh diwakili sebagai bit, yang kita akan masuk ke dalam pada halaman seterusnya. 764 00:34:37,090 --> 00:34:40,699 Jadi setiap kumpulan kongsi gelap yang kita lihat di sini, jadi ia tiga kongsi gelap. 765 00:34:40,699 --> 00:34:48,120 Kami telah rwx, r dan apa-apa x r apa-apa x untuk fail pertama ini. 766 00:34:48,120 --> 00:34:49,690 Ia ini struktur umum. 767 00:34:49,690 --> 00:34:50,940 >> Oleh itu, kita mempunyai beberapa direktori. 768 00:34:50,940 --> 00:34:53,999 Kami mempunyai beberapa kumpulan pengguna dengan kebenaran ini. 769 00:34:53,999 --> 00:34:57,040 Beberapa kumpulan yang tidak mempunyai kebenaran ini, dan dunia yang mempunyai kebenaran yang. 770 00:34:57,040 --> 00:34:59,420 Anda boleh memikirkan ini sebagai kongsi gelap yang. 771 00:34:59,420 --> 00:35:01,130 Anda boleh memikirkan ini sebagai tiga bit. 772 00:35:01,130 --> 00:35:04,060 Sehingga mereka dapat memegang nilai-nilai mana-mana sahaja dari 0 sehingga 773 00:35:04,060 --> 00:35:07,350 hingga 7, itulah sebabnya kadang-kadang kami mempunyai anda melakukan chmod 774 00:35:07,350 --> 00:35:17,510 600 bukan chmod rw apa sahaja. 775 00:35:17,510 --> 00:35:19,170 Kami akan masuk ke dalam contoh di sana. 776 00:35:19,170 --> 00:35:24,260 Tetapi pada dasarnya, anda boleh berfikir ini sama ada sebagai hanya rwx, 777 00:35:24,260 --> 00:35:28,520 atau anda boleh memikirkan mereka kerana beberapa jumlah di mana yang pertama ini di sini 778 00:35:28,520 --> 00:35:31,480 mewakili satu nombor di antara 0 dan 7, satu saat ini 779 00:35:31,480 --> 00:35:33,970 mewakili satu nombor di antara 0 dan 7, dan yang ketiga 780 00:35:33,970 --> 00:35:38,245 mewakili satu nombor di antara 0 dan 7, OK? 781 00:35:38,245 --> 00:35:42,700 >> r mempunyai nilai 4. w mempunyai nilai 2, dan x 782 00:35:42,700 --> 00:35:49,230 mempunyai nilai 1, itulah sebabnya ini kebenaran di sini akan chmod 700. 783 00:35:49,230 --> 00:35:53,520 Kerana dalam kes ini di sini, ia mengatakan kita telah sedikit yang pertama ada dibalik pada. 784 00:35:53,520 --> 00:35:55,380 Oleh itu, kita mempunyai 4 untuk dibaca. 785 00:35:55,380 --> 00:35:58,730 Bit kedua dibalik selama w, 2, jadi sekarang kita mempunyai 6. 786 00:35:58,730 --> 00:36:02,070 Dan sedikit yang ketiga dibalik pada untuk x, yang adalah 1, sehingga kita mendapatkan tujuh. 787 00:36:02,070 --> 00:36:04,820 Dan sudah tentu, kumpulan kami dan dunia kita masing-masing 0. 788 00:36:04,820 --> 00:36:07,770 Jadi ini juga bersamaan chmod 700. 789 00:36:07,770 --> 00:36:12,081 Dan saya pasti akan cuba memahami pemetaan di antara mereka. 790 00:36:12,081 --> 00:36:14,080 Saya tidak pasti jika ia mempunyai datang di dalam kuiz sebelum, 791 00:36:14,080 --> 00:36:18,590 tetapi ia akan menjadi satu soalan yang saya mungkin bertanya. 792 00:36:18,590 --> 00:36:22,110 >> Hanya sedikit pergi walaupun lanjut ke chmod sini, 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, sudah tentu, kita telah chmod sini. 795 00:36:29,500 --> 00:36:34,410 Rujukan, apa ini adalah merujuk kepada yang kita memberi kebenaran ini untuk 796 00:36:34,410 --> 00:36:36,570 atau yang kita mengambil ini kebenaran dari. 797 00:36:36,570 --> 00:36:44,330 Oleh itu, kita mempunyai di sini dalam kebenaran, seperti yang kita telah diberikan anda chmod tambah x, 798 00:36:44,330 --> 00:36:45,440 seperti yang kita akan lihat tidak lama lagi. 799 00:36:45,440 --> 00:36:48,460 yang hanya bermakna memberikan ini khusus kebenaran kepada semua orang. 800 00:36:48,460 --> 00:36:49,600 Beri mereka kepada semua. 801 00:36:49,600 --> 00:36:55,370 Oleh itu, anda dengan baik boleh mempunyai u plus x atau g plus x atau o campur x atau berbilang 802 00:36:55,370 --> 00:36:55,870 daripadanya. 803 00:36:55,870 --> 00:36:59,280 Supaya Bahagian pertama adalah sentiasa akan menjadi rujukan. 804 00:36:59,280 --> 00:37:03,220 Siapakah kita memberi kebenaran ini untuk, atau yang kita mengambil mereka dari? 805 00:37:03,220 --> 00:37:04,850 >> Yang kedua adalah pengendali. 806 00:37:04,850 --> 00:37:07,350 Jadi anda semua telah kebanyakannya diuruskan ditambah. 807 00:37:07,350 --> 00:37:12,140 Ini memberi kebenaran kepada siapa anda memberikan mereka, 808 00:37:12,140 --> 00:37:14,840 manakala tolak, secara logik, menghilangkan mereka. 809 00:37:14,840 --> 00:37:16,880 Jadi apa-apa terlalu dahsyat di sana. 810 00:37:16,880 --> 00:37:23,060 Dan kemudian Mod adalah apa yang kita bercakap tentang dengan membaca, menulis, atau melaksanakan. 811 00:37:23,060 --> 00:37:29,070 Jadi tambah x bermakna memberikan laku kebenaran kepada semua orang. 812 00:37:29,070 --> 00:37:33,430 Dan kemudian, sudah tentu, di mana fail tertentu atau direktori. 813 00:37:33,430 --> 00:37:33,980 OK? 814 00:37:33,980 --> 00:37:36,010 Semua orang baik dengan chmod? 815 00:37:36,010 --> 00:37:37,850 Tidak terlalu buruk? 816 00:37:37,850 --> 00:37:42,417 >> OK, jadi HTML, mana-mana anda berada sudah cukup supaya- MySpace umur? 817 00:37:42,417 --> 00:37:44,750 Saya menghantar ini kepada seksyen saya, dan literal separuh rakyat 818 00:37:44,750 --> 00:37:45,790 memandang saya seperti saya gila. 819 00:37:45,790 --> 00:37:47,498 Dan saya adalah seperti, lelaki, kita bukan orang tua. 820 00:37:47,498 --> 00:37:48,910 Ayuh. 821 00:37:48,910 --> 00:37:53,360 Jadi Hiperteks Markup Language, itu jujur ​​hanya satu cara untuk anda 822 00:37:53,360 --> 00:37:57,990 untuk memaparkan perkara-perkara tertentu di web. 823 00:37:57,990 --> 00:37:59,210 Jadi ia adalah bahasa markup. 824 00:37:59,210 --> 00:38:00,640 Ia bukan satu bahasa skrip. 825 00:38:00,640 --> 00:38:02,160 Tidak ada logik di dalamnya. 826 00:38:02,160 --> 00:38:05,710 Ia adalah semata-mata untuk mengubah cara sesuatu dipaparkan. 827 00:38:05,710 --> 00:38:07,670 OK, jadi itulah yang penting perbezaan untuk membuat. 828 00:38:07,670 --> 00:38:12,030 Ia dianggap sebagai bahasa markup, tidak bahasa skrip. 829 00:38:12,030 --> 00:38:15,100 >> Jadi di sini kita mempunyai tag HTML kami. 830 00:38:15,100 --> 00:38:20,390 Pada slaid ini mungkin sebahagian besar orang-orang yang anda perlu membiasakan diri dengan 831 00:38:20,390 --> 00:38:22,390 dan menjadi benar-benar selesa dengan. 832 00:38:22,390 --> 00:38:25,700 Jadi jelas, kita mempunyai HTML tag kami, yang 833 00:38:25,700 --> 00:38:29,930 menandakan bahawa segala-galanya dalam antara kedua-dua akan HTML. 834 00:38:29,930 --> 00:38:33,070 Kami mempunyai beberapa pautan yang jelas akan memberikan anda 835 00:38:33,070 --> 00:38:34,990 pautan ke laman web luar. 836 00:38:34,990 --> 00:38:37,520 Beberapa tajuk, dalam kepala kita di sini. 837 00:38:37,520 --> 00:38:40,020 Dan kita mempunyai badan kita dengan h1, yang boleh menanduk, 838 00:38:40,020 --> 00:38:42,260 jadi ia akan membuat ia bagus dan berani dan lebih besar. 839 00:38:42,260 --> 00:38:46,040 Dan kemudian, kita mempunyai beberapa p, iaitu perenggan. 840 00:38:46,040 --> 00:38:49,000 Anda mungkin perlu tahu dan membiasakan diri dengan perkara-perkara 841 00:38:49,000 --> 00:38:54,030 seperti bagaimana anda memasukkan imej, adalah ada apa-apa kelas header lain? 842 00:38:54,030 --> 00:38:57,240 Saya pasti akan menjadi selesa dengan div. 843 00:38:57,240 --> 00:39:00,840 Jadi ini mempunyai majoriti tag bahawa anda perlu membiasakan diri dengan. 844 00:39:00,840 --> 00:39:04,370 Tetapi sudah tentu, seperti segala-galanya dalam CS 50, senarai 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, sesiapa di antara kamu menonton seminar saya dari dua minggu lepas, 847 00:39:13,260 --> 00:39:16,250 adalah benar-benar hanya satu cara yang untuk gaya laman web anda? 848 00:39:16,250 --> 00:39:18,950 OK, jadi kami mempunyai beberapa bahasa markup. 849 00:39:18,950 --> 00:39:23,220 HTML, yang menjaga hanya teks yang dan di mana ia mungkin berada di laman ini. 850 00:39:23,220 --> 00:39:25,760 Tetapi CSS adalah benar-benar apa yang membuat ia cantik. 851 00:39:25,760 --> 00:39:30,690 Anda boleh mempunyai ini dalam HTML anda fail, tetapi seperti yang kita akan bercakap mengenai kemudian, 852 00:39:30,690 --> 00:39:32,660 Saya agak pasti ia mungkin menjadi slaid seterusnya, ia 853 00:39:32,660 --> 00:39:35,620 adalah amalan biasa, dan benar-benar amalan yang kita benar-benar menggalakkan, 854 00:39:35,620 --> 00:39:40,670 bagi anda untuk memastikan mereka dipisahkan apabila kita bercakap tentang MVC dan bahawa keseluruhan paradigma. 855 00:39:40,670 --> 00:39:42,490 Itu benar-benar apa ini suapan ke dalam. 856 00:39:42,490 --> 00:39:46,110 >> Jadi CSS adalah hanya satu cara untuk membuat perkara yang kelihatan cantik. 857 00:39:46,110 --> 00:39:50,500 Perkara-perkara di sini, seperti badan dan #title dan .info, 858 00:39:50,500 --> 00:39:54,340 ini dipanggil pemilih dan apa yang mereka lakukan ialah mereka memilih perkara tertentu 859 00:39:54,340 --> 00:39:59,260 dalam fail HTML anda dan memohon apa sahaja gaya, 860 00:39:59,260 --> 00:40:04,090 apa jenis perkara yang anda mahu, dengan elemen tertentu web anda 861 00:40:04,090 --> 00:40:04,590 halaman. 862 00:40:04,590 --> 00:40:08,820 Jadi di sini, kita mempunyai warna latar belakang dan warna 863 00:40:08,820 --> 00:40:12,450 dan keluarga font yang yang menjadi digunakan untuk apa yang ada di dalam badan. 864 00:40:12,450 --> 00:40:15,530 Jadi, jika kita menoleh ke belakang di sini, ia tidak akan memohon kepada tajuk. 865 00:40:15,530 --> 00:40:22,340 Ia hanya akan terpakai bagi apa yang dalam badan pemilih, OK? 866 00:40:22,340 --> 00:40:25,250 >> Dengan tajuk di sini, ini adalah akan menjadi perkara yang sama, 867 00:40:25,250 --> 00:40:28,410 warna teks yang menjadi biru hanya akan 868 00:40:28,410 --> 00:40:33,870 menjejaskan apa yang ada dalam yang pemilih tajuk. 869 00:40:33,870 --> 00:40:36,580 Serta info di sini, teks yang akan menjadi merah jambu, 870 00:40:36,580 --> 00:40:38,600 apa itu maklumat, yang di sini. 871 00:40:38,600 --> 00:40:40,860 Jadi satu-satunya perkara yang akan menjadi merah jambu di halaman ini 872 00:40:40,860 --> 00:40:44,100 adalah tarikh, ISNIN, 17 November, 2014. 873 00:40:44,100 --> 00:40:48,770 OK, jadi CSS adalah hanya satu cara untuk mempunyai lebih kawalan over-- ya? 874 00:40:48,770 --> 00:40:51,850 >> PENONTON: Kenapa anda mempunyai menggunakan hash dengan tajuk? 875 00:40:51,850 --> 00:40:55,170 >> Hannah: Slaid berikutnya, janji! 876 00:40:55,170 --> 00:40:56,810 Kami akan ke sana. 877 00:40:56,810 --> 00:40:59,830 Jadi ini adalah mengapa kita perlu menggunakan hash. 878 00:40:59,830 --> 00:41:03,429 Jadi pemilih mengambil tiga utama bentuk-bentuk yang kita bercakap dengan anda semua tentang. 879 00:41:03,429 --> 00:41:05,595 Saya fyou ingin mengetahui lebih lanjut, terdapat 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 tanda nama yang mempunyai kaitan dengan hanya tag biasa anda dalam HTML. 882 00:41:12,680 --> 00:41:17,210 Jadi h1, p, div, h2, orang macam perkara. 883 00:41:17,210 --> 00:41:20,320 Dan kita hanya boleh menamakan mereka sebagai adalah. 884 00:41:20,320 --> 00:41:22,650 Jadi seperti yang kita lihat di sini dengan badan, ia adalah satu tanda biasa. 885 00:41:22,650 --> 00:41:26,660 Oleh itu, kita hanya boleh meletakkan badan apabila kita berbicara dalam fail CSS kami. 886 00:41:26,660 --> 00:41:29,730 >> Dengan tajuk, keseluruhan sebab kita mempunyai hash ini adalah kita mempunyai apa yang 887 00:41:29,730 --> 00:41:31,010 dianggap ID. 888 00:41:31,010 --> 00:41:35,400 Jadi ID perlu sentiasa unik dalam halaman HTML anda 889 00:41:35,400 --> 00:41:37,930 supaya apabila anda merujuk kepadanya, anda 890 00:41:37,930 --> 00:41:41,990 tahu bahawa anda hanya merujuk kepada satu perkara tertentu. 891 00:41:41,990 --> 00:41:46,270 Jadi dalam kes ini di sini, dengan kami h1 sini, sesi kajian CS 50, 892 00:41:46,270 --> 00:41:47,810 kita mempunyai id hakmilik. 893 00:41:47,810 --> 00:41:54,280 Jadi, untuk hanya merujuk kepada yang sekeping HTML kami, kami melakukan tajuk hash. 894 00:41:54,280 --> 00:41:58,080 Hanya dengan konvensyen, ID ditetapkan dengan hash di hadapan mereka. 895 00:41:58,080 --> 00:42:01,650 Dengan cara yang sama, kita lihat Maklumat di sini adalah sebuah kelas. 896 00:42:01,650 --> 00:42:06,070 Dan sebagainya kelas dengan CSS adalah ditetapkan sebagai kelas dot 897 00:42:06,070 --> 00:42:08,895 atau dot apa kelas yang. 898 00:42:08,895 --> 00:42:10,850 Jadi dalam kes 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-dua ini akan menjadi merah jambu untuk CSS kami di sini 901 00:42:16,200 --> 00:42:18,430 kerana kedua-duanya mempunyai kelas info. 902 00:42:18,430 --> 00:42:23,070 Dan dalam fail CSS kami, kami telah ditetapkan apa-apa yang dengan kelas info 903 00:42:23,070 --> 00:42:24,120 hendaklah menjadi merah jambu. 904 00:42:24,120 --> 00:42:25,968 Adakah ini masuk akal? 905 00:42:25,968 --> 00:42:27,435 Ya? 906 00:42:27,435 --> 00:42:30,731 >> PENONTON: Sekiranya anda membuat segala-galanya dalam putih badan, 907 00:42:30,731 --> 00:42:32,814 dan kemudian anda cuba untuk membuat sesuatu yang di dalamnya biru, 908 00:42:32,814 --> 00:42:34,770 yang akan menyebabkan masalah? 909 00:42:34,770 --> 00:42:37,310 >> Hannah: Jadi CSS adalah lembaran gaya melata. 910 00:42:37,310 --> 00:42:40,730 Jadi apa yang ada ke arah bahagian bawah akan diberi keutamaan. 911 00:42:40,730 --> 00:42:44,080 Jadi, jika anda melakukan sesuatu dengan badan, dan anda membuat semua putih, 912 00:42:44,080 --> 00:42:49,300 dan kemudian kemudian anda menukar tajuk atau anda menukar teks di dalam badan, 913 00:42:49,300 --> 00:42:50,560 ia akan menulis ganti itu. 914 00:42:50,560 --> 00:42:55,360 Jadi apa-apa ke arah bahagian bawah akan diberi keutamaan. 915 00:42:55,360 --> 00:42:56,730 Ya? 916 00:42:56,730 --> 00:42:59,627 >> PENONTON: Dan ID unik, tetapi kelas yang lebih? 917 00:42:59,627 --> 00:43:00,210 Hannah: Betul. 918 00:43:00,210 --> 00:43:06,320 Jadi ID perlu menjadi unik, dan kelas boleh merujuk kepada sebagai banyak perkara yang anda suka. 919 00:43:06,320 --> 00:43:07,580 Apa-apa soalan lain? 920 00:43:07,580 --> 00:43:09,800 Ya. 921 00:43:09,800 --> 00:43:11,210 >> PENONTON: [didengar]. 922 00:43:11,210 --> 00:43:13,509 Saya tertanya-tanya sama ada yang membuat perbezaan. 923 00:43:13,509 --> 00:43:15,217 Hannah: Saya minta maaf, apa soalan? 924 00:43:15,217 --> 00:43:18,960 PENONTON: Ada kecil "F" dan modal "F." 925 00:43:18,960 --> 00:43:21,440 Hannah: Jadi perbezaan antara kecil "f" dan modal "F" 926 00:43:21,440 --> 00:43:22,606 tidak boleh membuat perbezaan. 927 00:43:22,606 --> 00:43:26,330 Jadi "f" akan menjadi 15 cara sama ada. 928 00:43:26,330 --> 00:43:28,130 Sejuk, apa-apa lagi? 929 00:43:28,130 --> 00:43:29,930 Semua orang baik, CSS? 930 00:43:29,930 --> 00:43:30,850 Ya? 931 00:43:30,850 --> 00:43:31,790 >> PENONTON: Maaf. 932 00:43:31,790 --> 00:43:35,550 Bolehkah anda mempunyai kelas dan ID? 933 00:43:35,550 --> 00:43:38,030 >> Hannah: Ya, anda boleh. 934 00:43:38,030 --> 00:43:40,420 Perkara yang boleh mempunyai kedua-dua kelas dan ID. 935 00:43:40,420 --> 00:43:44,670 Dan saya sangat mengesyorkan ujian ini pada anda sendiri. 936 00:43:44,670 --> 00:43:50,480 CSS anda akan belajar terbaik dengan hanya membuat sesuatu, halaman web yang sangat mudah, 937 00:43:50,480 --> 00:43:53,440 merangka beberapa CSS, dan hanya melihat bagaimana mereka berinteraksi. 938 00:43:53,440 --> 00:43:56,970 Dan anda akan mendapat yang sangat baik, rasa intuitif untuk bagaimana ia berfungsi. 939 00:43:56,970 --> 00:43:58,810 >> OK, semua orang baik dengan CSS? 940 00:43:58,810 --> 00:44:01,280 Anda semua akan membuat laman indah dengan CSS kini. 941 00:44:01,280 --> 00:44:05,460 OK, amalan terbaik, hanya perkara yang perlu diingat, perkara 942 00:44:05,460 --> 00:44:09,810 bahawa- ini adalah mengapa kita berlabuh anda untuk pereka dan barang kecil. 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 mempunyai sebuah badan yang terbuka, perlu ada badan dekat. 945 00:44:14,840 --> 00:44:18,180 Jika anda mempunyai perenggan terbuka, perlu ada perenggan dekat. 946 00:44:18,180 --> 00:44:19,555 Semak untuk melihat halaman anda mengesahkan. 947 00:44:19,555 --> 00:44:23,330 Anda semua harus sangat akrab dengan ini dari p-set tujuh 948 00:44:23,330 --> 00:44:26,350 dengan CS 50 kewangan dengan validator W3 itu. 949 00:44:26,350 --> 00:44:28,340 Dan seperti yang saya katakan sebelum ini, salah satu paradigma besar kami 950 00:44:28,340 --> 00:44:33,780 adalah memisahkan gaya anda dengan CSS dari markup anda, iaitu HTML. 951 00:44:33,780 --> 00:44:36,900 Dan kemudian, sudah tentu, kita mempunyai XKCD besar ini turun di sini. 952 00:44:36,900 --> 00:44:38,280 Yay, pelepasan komik! 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 kedua-dua protokol. 955 00:44:44,650 --> 00:44:46,810 Jadi anda hanya boleh berfikir daripada mereka sebagai satu set peraturan 956 00:44:46,810 --> 00:44:50,110 yang mengawal bagaimana perkara bergerak seluruh internet. 957 00:44:50,110 --> 00:44:53,410 Jadi kawalan penghantaran protokol, atau protokol internet, 958 00:44:53,410 --> 00:44:57,280 adalah hanya satu cara untuk memastikan data yang mendapat di mana ia akan 959 00:44:57,280 --> 00:45:00,030 dan kita tahu jika kami pernah hilang data. 960 00:45:00,030 --> 00:45:03,520 Jadi, jika anda semua berfikir kembali ke kuliah beberapa minggu lalu dengan Daud 961 00:45:03,520 --> 00:45:06,980 di mana kita mempunyai empat sampul surat, mereka telah dihitung semuanya seperti salah satu daripada empat, 962 00:45:06,980 --> 00:45:11,300 dua daripada empat, tiga daripada empat, empat daripada empat, ini hanyalah satu set peraturan. 963 00:45:11,300 --> 00:45:13,830 Kami berkata, OK, apabila kami menghantar lebih daripada satu paket, 964 00:45:13,830 --> 00:45:16,610 kita akan berjumlah dengan apa jumlah itu adalah 965 00:45:16,610 --> 00:45:19,040 dan berapa banyak jumlah yang pengguna perlu mendapatkan. 966 00:45:19,040 --> 00:45:22,540 >> Dan ini adalah hanya memberitahu sesiapa menerima data sama ada mereka 967 00:45:22,540 --> 00:45:26,120 telah mendapat segala-galanya atau jika sesuatu yang tenggelam di sepanjang jalan. 968 00:45:26,120 --> 00:45:28,840 Dan mereka perlu meminta sekali lagi. 969 00:45:28,840 --> 00:45:31,140 Ini adalah benar-benar hanya satu set peraturan. 970 00:45:31,140 --> 00:45:33,650 Itulah bagaimana anda boleh berfikir, OK? 971 00:45:33,650 --> 00:45:37,700 Dan juga, ia menyatakan pelabuhan itu, yang anda semua can-- saya tahu semasa kuliah, 972 00:45:37,700 --> 00:45:39,170 mereka mempunyai senarai keseluruhan pelabuhan. 973 00:45:39,170 --> 00:45:41,630 Tetapi kita tidak mempunyai mereka di sini sekarang. 974 00:45:41,630 --> 00:45:45,290 >> Protokol pemindahan hiperteks Jadi adalah, sekali lagi, adalah protokol lain. 975 00:45:45,290 --> 00:45:48,630 Jadi, satu lagi set peraturan yang mengawal, dalam kes ini, 976 00:45:48,630 --> 00:45:51,130 bagaimana hiperteks dipindahkan. 977 00:45:51,130 --> 00:45:54,340 Jadi ia hanya membenarkan pelayar untuk bercakap dengan pelayan web. 978 00:45:54,340 --> 00:45:56,910 Dan seperti yang kita katakan di sini, ia seperti berjabat tangan manusia. 979 00:45:56,910 --> 00:46:00,480 Ia hanya satu cara untuk mentadbir bagaimana pelayan web adalah 980 00:46:00,480 --> 00:46:02,690 akan berinteraksi dengan penyemak imbas anda. 981 00:46:02,690 --> 00:46:05,660 Dan kita mempunyai hanya beberapa contoh. 982 00:46:05,660 --> 00:46:09,100 Kami mempunyai beberapa pertanyaan di sini mana GET adalah kaedah. 983 00:46:09,100 --> 00:46:13,760 Kami mempunyai HTTP 1.1, iaitu versi protokol untuk kita. 984 00:46:13,760 --> 00:46:17,230 Dan kemudian, tuan rumah, yang adalah apa yang kita sebenarnya cuba untuk mengakses. 985 00:46:17,230 --> 00:46:21,800 Dan kemudian, seperti yang anda lihat di sini, kita mendapatkan beberapa respons dengan ini 200 986 00:46:21,800 --> 00:46:25,032 OK sebagai kod sambutan HTTP kami. 987 00:46:25,032 --> 00:46:27,240 Kami mempunyai senarai besar saya akan untuk menarik dalam satu saat 988 00:46:27,240 --> 00:46:29,430 yang anda semua perlu membiasakan diri dengan. 989 00:46:29,430 --> 00:46:35,750 Dan kita mempunyai jenis kandungan teks / HTML, yang hanya berkata jenis data apa 990 00:46:35,750 --> 00:46:39,990 kita menerima dari pelayan, OK? 991 00:46:39,990 --> 00:46:44,230 Ini tuan rumah dan jenis kandungan ini adalah sebahagian daripada header HTTP. 992 00:46:44,230 --> 00:46:49,610 Anda boleh mempunyai sedikit atau sesedikit yang perlu bagi konteks apa 993 00:46:49,610 --> 00:46:50,580 anda berurusan dengan. 994 00:46:50,580 --> 00:46:53,371 Kadang-kadang anda akan mempunyai banyak maklumat yang datang dari pelayan anda. 995 00:46:53,371 --> 00:46:56,040 Mungkin mereka meminta banyak maklumat daripada pengguna. 996 00:46:56,040 --> 00:46:57,600 Ia berbeza bergantung kepada konteks. 997 00:46:57,600 --> 00:47:01,144 Jika anda melihat CS 50 Kajian, ada banyak lagi pada yang. 998 00:47:01,144 --> 00:47:03,060 Tetapi kita mempunyai banyak untuk mendapatkan melalui, jadi saya akan 999 00:47:03,060 --> 00:47:05,760 untuk pergi ke kanan di hadapan jika tidak apa-apa dengan kalian? 1000 00:47:05,760 --> 00:47:07,960 Cool. 1001 00:47:07,960 --> 00:47:08,460 Berpegang. 1002 00:47:08,460 --> 00:47:11,182 Saya pasti mempunyai yang seluruh senarai daripada- huh! 1003 00:47:11,182 --> 00:47:13,140 Saya tidak tahu mengapa ini adalah sepanjang jalan di sini. 1004 00:47:13,140 --> 00:47:15,660 Saya fikir saya benar-benar berpindah ia ketika Aku sitting-- 1005 00:47:15,660 --> 00:47:16,540 >> DAVIN: Adakah anda ingin untuk mengajar ia? 1006 00:47:16,540 --> 00:47:17,420 Atau adakah anda mahu saya untuk mengajar ia? 1007 00:47:17,420 --> 00:47:20,010 >> PENONTON: Saya fikir kita boleh hanya menunjukkan kepada mereka untuk memulakan dengan. 1008 00:47:20,010 --> 00:47:22,210 Maksud saya, anda boleh pergi ke mereka lagi, tetapi saya 1009 00:47:22,210 --> 00:47:26,030 fikir ia masuk akal yang lebih kerana saya hanya bercakap mengenai status HTTP. 1010 00:47:26,030 --> 00:47:28,200 Jadi di sini adalah seluruh senarai. 1011 00:47:28,200 --> 00:47:31,730 Saya rasa apa yang akan berlaku adalah Davin akan pergi kepada mereka kemudian. 1012 00:47:31,730 --> 00:47:35,330 Tetapi ada senarai keseluruhan, yang preview rasa yang akan datang. 1013 00:47:35,330 --> 00:47:41,640 OK, kita akan blow-- ini akan menjadi kursus kemalangan PHP seperti yang lain. 1014 00:47:41,640 --> 00:47:44,874 >> Jadi PHP, hiperteks prapemproses, ia adalah backronym rekursi, 1015 00:47:44,874 --> 00:47:46,540 yang bermaksud ia dinamakan 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 Oleh itu mereka hanya dinamakan it-- dan ia adalah akronim, 1018 00:47:52,210 --> 00:47:54,840 jadi mereka hanya berjaya PHP prapemproses hiperteks, yang 1019 00:47:54,840 --> 00:47:55,980 hanya tidak masuk akal. 1020 00:47:55,980 --> 00:47:57,714 Cerita Fun. 1021 00:47:57,714 --> 00:47:58,880 Ia adalah satu bahasa pengaturcaraan. 1022 00:47:58,880 --> 00:48:02,360 Jadi sebanyak saya menekankan bahawa HTML tidak adalah bahasa pengaturcaraan, 1023 00:48:02,360 --> 00:48:05,350 ia adalah bahasa markup, PHP adalah bahasa pengaturcaraan. 1024 00:48:05,350 --> 00:48:07,422 Bagaimana anda tahu ini adalah kerana tidak logik. 1025 00:48:07,422 --> 00:48:08,380 Terdapat Syarat yang. 1026 00:48:08,380 --> 00:48:12,750 Kami mempunyai pembolehubah, sedangkan kita ada sesiapa pun daripada perkara-perkara dalam HTML. 1027 00:48:12,750 --> 00:48:16,960 >> Baiklah, kita mempunyai ini sedikit sedikit di sini bahawa seperti rasa PHP. 1028 00:48:16,960 --> 00:48:20,510 Jadi asas, nama-nama pembolehubah bermula 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 wang. 1031 00:48:22,371 --> 00:48:22,995 Itu semua hebat. 1032 00:48:22,995 --> 00:48:25,280 Kita semua mahu PHP. 1033 00:48:25,280 --> 00:48:28,020 Oleh itu, kita tidak menentukan Jenis pembolehubah ini lagi. 1034 00:48:28,020 --> 00:48:29,995 Ia ditentukan pada masa larian. 1035 00:48:29,995 --> 00:48:32,710 1036 00:48:32,710 --> 00:48:35,890 Jurubahasa itu akan menjadi seperti, oh, kami hanya akan berjalan melalui, 1037 00:48:35,890 --> 00:48:39,565 dan mengikut konteks, kita akan melihat apa jenis jenis 1038 00:48:39,565 --> 00:48:41,560 pemboleh ubah ini perlu mempunyai. 1039 00:48:41,560 --> 00:48:42,815 Tiada fungsi utama. 1040 00:48:42,815 --> 00:48:43,690 Perkara yang hanya akan berjalan. 1041 00:48:43,690 --> 00:48:47,851 Anda lelaki dengan import anda dalam anda p-set terakhir, anda akan melihat ini. 1042 00:48:47,851 --> 00:48:49,350 Tidak ada benar-benar satu fungsi utama. 1043 00:48:49,350 --> 00:48:52,070 Anda hanya menulis apa yang anda mahu berlaku. 1044 00:48:52,070 --> 00:48:53,280 Dan ia hanya jenis yang berlaku. 1045 00:48:53,280 --> 00:48:56,760 Jadi itulah PHP untuk anda. 1046 00:48:56,760 --> 00:48:59,180 >> Tatasusunan yang hampir sama. 1047 00:48:59,180 --> 00:49:01,270 Kami masih mempunyai pendakap ini. 1048 00:49:01,270 --> 00:49:05,940 Di sini, kami mempunyai beberapa pembolehubah dipanggil arr, dan ia sama 1049 00:49:05,940 --> 00:49:08,540 supaya- kita biasa kami notasi kurungan. 1050 00:49:08,540 --> 00:49:10,630 Dan kita mempunyai beberapa nilai utama. 1051 00:49:10,630 --> 00:49:14,630 Dan perbezaan besar antara C dan PHP array 1052 00:49:14,630 --> 00:49:19,330 adalah bahawa kita boleh mempunyai associate-- ini kita boleh mengaitkan nilai untuk kunci. 1053 00:49:19,330 --> 00:49:22,440 Jadi, daripada hanya mempunyai pelbagai yang diindeks 1054 00:49:22,440 --> 00:49:26,630 dengan nombor atau kedudukan daripada elemen dalam array, 1055 00:49:26,630 --> 00:49:29,060 kita sebenarnya boleh mengaitkannya dengan kunci. 1056 00:49:29,060 --> 00:49:36,700 Di mana kita boleh mengatakan, OK, saya mahu apa sahaja nilai dikaitkan dengan buah-buahan. 1057 00:49:36,700 --> 00:49:39,280 Dan mungkin kita perlu pergi ke buah pisang. 1058 00:49:39,280 --> 00:49:41,760 Jadi ia akan kembali pisang kepada kami. 1059 00:49:41,760 --> 00:49:44,100 >> Tetapi pada dasarnya, yang paling perkara yang kuat tentang ini 1060 00:49:44,100 --> 00:49:47,960 adalah bahawa jika anda semua masih ingat yang demo dari kuliah di mana kita pada dasarnya 1061 00:49:47,960 --> 00:49:53,050 menulis semula buku ejaan dalam PHP, dan ia lookup was-- adalah benar-benar hanya suka, 1062 00:49:53,050 --> 00:49:55,007 adakah utama ini wujud? 1063 00:49:55,007 --> 00:49:56,590 Itulah jenis benar-benar kuasa itu. 1064 00:49:56,590 --> 00:49:58,560 Anda tidak perlu untuk melelar melalui pelbagai anda. 1065 00:49:58,560 --> 00:50:00,311 Anda tidak perlu tahu apa itu ruang dalam. 1066 00:50:00,311 --> 00:50:01,976 Ia boleh berada di akhir atau permulaan. 1067 00:50:01,976 --> 00:50:04,790 Selama anda tahu kunci yang yang berkaitan dengan nilai, 1068 00:50:04,790 --> 00:50:09,740 PHP hanya boleh meludah nilai yang hak kembali keluar pada anda, OK? 1069 00:50:09,740 --> 00:50:12,960 >> Dan kemudian, kita juga hanya mempunyai hanya kerana kita 1070 00:50:12,960 --> 00:50:16,750 boleh mempunyai pasangan nilai utama tidak bermakna anda perlu. 1071 00:50:16,750 --> 00:50:19,180 Anda juga boleh hanya membuat pelbagai seperti biasa di sini, 1072 00:50:19,180 --> 00:50:21,540 di bawah, di mana ia 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 sebenarnya, kunci mereka adalah indeks. 1075 00:50:25,320 --> 00:50:26,830 Jadi yang utama untuk seseorang itu menjadi sifar. 1076 00:50:26,830 --> 00:50:28,610 Kunci untuk dua akan menjadi satu. 1077 00:50:28,610 --> 00:50:31,910 Sebagainya dan sebagainya, melainkan jika Anda dengan jelas menetapkan kekunci, 1078 00:50:31,910 --> 00:50:34,630 anda boleh mengandaikan bahawa nilai hanya indeks mereka. 1079 00:50:34,630 --> 00:50:37,290 Adakah ini masuk akal untuk semua orang? 1080 00:50:37,290 --> 00:50:38,070 Tiada soalan? 1081 00:50:38,070 --> 00:50:38,930 Awesome. 1082 00:50:38,930 --> 00:50:44,420 >> OK, foreach adalah satu cara untuk melelar melalui array anda. 1083 00:50:44,420 --> 00:50:47,490 Oleh itu, kita mempunyai sesuatu di sini, hanya struktur umum. 1084 00:50:47,490 --> 00:50:51,020 Jadi foreach, nama pelbagai kami, sebagai apa sahaja 1085 00:50:51,020 --> 00:50:53,930 anda mahu untuk memanggil setiap elemen dalam array anda, 1086 00:50:53,930 --> 00:50:57,270 dan kita boleh melakukan sesuatu dengan unsur atau dengan nilai itu. 1087 00:50:57,270 --> 00:50:58,680 Oleh itu, kita mempunyai contoh di sini. 1088 00:50:58,680 --> 00:51:05,770 Kami mempunyai satu bersekutu pelbagai dengan kedua-dua penyertaan 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 kunci adalah foo dan Baz. 1091 00:51:12,180 --> 00:51:13,650 Nilai adalah bar dan qux. 1092 00:51:13,650 --> 00:51:18,560 Jadi foreach, kami mempunyai pelbagai kami di sini, sebagai pasangan nilai utama. 1093 00:51:18,560 --> 00:51:21,560 Ini membolehkan kami untuk akses kedua-dua utama dan nilai. 1094 00:51:21,560 --> 00:51:23,680 Mungkin anda hanya mahu nilai, di mana 1095 00:51:23,680 --> 00:51:27,640 anda hanya boleh melakukan seperti arr sebagai $ nilai, dan kemudian anda 1096 00:51:27,640 --> 00:51:30,640 hanya mengakses nilai kerana anda melelar melalui. 1097 00:51:30,640 --> 00:51:32,600 Tetapi mungkin, bagi sesetengah sebab, anda mahu kunci, 1098 00:51:32,600 --> 00:51:35,460 itulah sebabnya saya memilih contoh ini bukan. 1099 00:51:35,460 --> 00:51:40,240 Oleh itu, anda sebenarnya boleh memanipulasi utama dan nilai dalam kes ini. 1100 00:51:40,240 --> 00:51:41,070 OK? 1101 00:51:41,070 --> 00:51:41,905 Soalan? 1102 00:51:41,905 --> 00:51:44,279 >> PENONTON: Jika anda mahu hanya memanipulasi kunci, akan 1103 00:51:44,279 --> 00:51:45,910 anda perlu lakukan foreach-- 1104 00:51:45,910 --> 00:51:47,360 >> Alison: Betul. 1105 00:51:47,360 --> 00:51:50,560 Jadi jika anda mahu memanipulasi hanya kunci, 1106 00:51:50,560 --> 00:51:53,680 anda masih perlu ini sintaks kerana jika anda hanya 1107 00:51:53,680 --> 00:51:56,930 mempunyai arr sebagai sesuatu, sebagai satu perkara, itu 1108 00:51:56,930 --> 00:52:00,070 akan menganggap anda mahu nilai, tidak kunci. 1109 00:52:00,070 --> 00:52:06,780 Jadi, jika anda pernah mempunyai hanya seperti arr sebagai, mungkin ini adalah seperti elemen $, 1110 00:52:06,780 --> 00:52:11,670 ia akan menganggap bahawa anda bertanya hanya nilai pada setiap titik. 1111 00:52:11,670 --> 00:52:13,879 Jika anda jelas mahu melakukan sesuatu dengan kunci, 1112 00:52:13,879 --> 00:52:16,170 walaupun anda tidak akan berbuat apa-apa dengan nilai, 1113 00:52:16,170 --> 00:52:18,430 anda perlu struktur ini yang kami ada di sini 1114 00:52:18,430 --> 00:52:22,330 di mana anda dengan jelas meminta untuk kedua-dua utama dan nilai. 1115 00:52:22,330 --> 00:52:24,170 Soalan yang besar. 1116 00:52:24,170 --> 00:52:25,940 Apa-apa lagi? 1117 00:52:25,940 --> 00:52:27,490 Cool. 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 untuk p-set tujuh lagi. 1120 00:52:31,410 --> 00:52:35,380 Jadi ini harus melihat sedikit biasa. 1121 00:52:35,380 --> 00:52:41,760 Jadi ini adalah beberapa bentuk HTML sederhana yang mempunyai beberapa nama input hello. 1122 00:52:41,760 --> 00:52:43,820 Dan kita melihat kita mempunyai kaedah kami GET. 1123 00:52:43,820 --> 00:52:47,430 Dan jika kita ingat dari kami p-set, apabila borang ini dikemukakan, 1124 00:52:47,430 --> 00:52:58,130 ia menghantar pelbagai dipanggil $ _GET yang mempunyai semua ini input atau pembolehubah daripada 1125 00:52:58,130 --> 00:53:00,490 borang yang perlu dimanipulasi dalam PHP kami. 1126 00:53:00,490 --> 00:53:03,320 Jadi dalam kes ini, pengguna akan dimasukkan ke dalam nama mereka. 1127 00:53:03,320 --> 00:53:04,370 Mereka menyerahkannya. 1128 00:53:04,370 --> 00:53:07,810 Dan kita melihat bahawa kita akan mendapat beberapa pelbagai di sini. 1129 00:53:07,810 --> 00:53:09,080 Kami mempunyai pelbagai 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 kata, OK, berikanlah kepadaku nilai yang dikaitkan dengan nama, 1132 00:53:15,070 --> 00:53:16,550 menamakan menjadi kunci di sini. 1133 00:53:16,550 --> 00:53:21,400 Dan yang maps secara langsung dengan apa yang kita berkata nama input kita. 1134 00:53:21,400 --> 00:53:28,960 Jadi ini telah memberi anda kunci kepada apa akan menjadi yang sedang anda di sini. 1135 00:53:28,960 --> 00:53:31,220 Adakah ini masuk akal untuk semua orang? 1136 00:53:31,220 --> 00:53:32,070 Ya? 1137 00:53:32,070 --> 00:53:36,240 >> PENONTON: Adakah nama dalam GET merujuk ke garisan ungu di [didengar]? 1138 00:53:36,240 --> 00:53:37,740 >> Alison: Ia merujuk kepada ini di sini. 1139 00:53:37,740 --> 00:53:43,840 Jadi bidang ini di sini, ia merujuk kepada nama ini di sini. 1140 00:53:43,840 --> 00:53:47,800 Jadi ini boleh dinamakan seperti nombor telefon, atau apa sahaja. 1141 00:53:47,800 --> 00:53:51,790 Nama ini sebenarnya berkata, apa yang yang anda memanggil bidang ini? 1142 00:53:51,790 --> 00:53:53,600 Bagaimana anda akan merujuk kepada bidang ini? 1143 00:53:53,600 --> 00:53:57,670 Dan nama ini adalah benar-benar suka, kami berkata bidang ini dipanggil nama. 1144 00:53:57,670 --> 00:53:59,224 Itulah bagaimana kita akan mengaksesnya. 1145 00:53:59,224 --> 00:54:02,070 >> PENONTON: Jadi rasanya, Nama input sama dengan Bob, dan- 1146 00:54:02,070 --> 00:54:04,380 >> Alison: kanan, maka anda akan mendapatkan Bob di bawah sana. 1147 00:54:04,380 --> 00:54:06,090 Tepat. 1148 00:54:06,090 --> 00:54:07,800 Semua orang sejuk? 1149 00:54:07,800 --> 00:54:10,990 Baiklah, jadi DAPATKAN berbanding POST, ini adalah dua cara utama 1150 00:54:10,990 --> 00:54:14,880 bahawa kita lulus data dalam permintaan HTTP. 1151 00:54:14,880 --> 00:54:17,370 Anda semua perlu lihat kedua-dua diharapkan. 1152 00:54:17,370 --> 00:54:20,940 Jadi dengan GET, maklumat dialirkan melalui URL. 1153 00:54:20,940 --> 00:54:23,490 Jadi, jika anda pernah melakukan Google carian, 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 perkataan bahawa anda hanya meletakkan di sana. 1156 00:54:28,230 --> 00:54:31,410 Dan POST pas data dalam badan mesej HTTP. 1157 00:54:31,410 --> 00:54:36,922 Jadi tidak seperti GET, anda jenis mempertimbangkan bahawa data yang tersembunyi kepada pengguna. 1158 00:54:36,922 --> 00:54:38,630 Tetapi apa yang benar-benar penting untuk memahami 1159 00:54:38,630 --> 00:54:44,040 adalah bahawa ini adalah masih hanya sebagai tidak selamat kerana GET. 1160 00:54:44,040 --> 00:54:48,780 Analogi Saya suka menggunakan adalah jika anda mempunyai nombor akaun bank anda 1161 00:54:48,780 --> 00:54:52,795 dan anda menulisnya di luar sampul surat, yang agak tidak selamat. 1162 00:54:52,795 --> 00:54:55,920 Jika anda hendak menulis di atas sekeping kertas dan memasukkannya ke dalam sampul surat, 1163 00:54:55,920 --> 00:54:58,850 ia masih benar-benar tidak selamat kerana semua yang anda perlu lakukan adalah membuka bahawa sehingga 1164 00:54:58,850 --> 00:55:03,480 dan melihat kandungan sebenar mesej untuk melihat bahawa. 1165 00:55:03,480 --> 00:55:08,310 Jadi ini adalah "tersembunyi", dan orang-orang seperti untuk fikir ia adalah selamat, tetapi ia benar-benar tidak. 1166 00:55:08,310 --> 00:55:11,000 Dan saya pasti akan Davin masuk ke dalam yang lebih, mungkin. 1167 00:55:11,000 --> 00:55:12,850 Tetapi itu yang penting perbezaan 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 barangan yang kita telah melihat begitu baru-baru ini! 1171 00:55:22,220 --> 00:55:25,400 Jadi ia pada dasarnya hanya direka, jelas, untuk menguruskan data. 1172 00:55:25,400 --> 00:55:30,560 Anda semua mempunyai banyak pengalaman dengan ini di meja anda dengan PHP MyAdmin. 1173 00:55:30,560 --> 00:55:34,100 Dan terdapat empat pertanyaan biasa kami mahu anda semua tahu. 1174 00:55:34,100 --> 00:55:37,304 Jadi ada update, sisipan, pilih, dan memadam. 1175 00:55:37,304 --> 00:55:38,970 Jadi, pastikan anda tahu mereka benar-benar baik. 1176 00:55:38,970 --> 00:55:40,960 Kami akan pergi melalui mereka benar-benar cepat. 1177 00:55:40,960 --> 00:55:44,340 >> Jadi kini, benar-benar, kerana apa yang anda mungkin berfikir ia, 1178 00:55:44,340 --> 00:55:46,740 ia hanya mengemas kini data dalam pangkalan data anda. 1179 00:55:46,740 --> 00:55:48,750 Oleh itu, kita mempunyai beberapa contoh di sini. 1180 00:55:48,750 --> 00:55:53,310 Ini adalah umum struktur sebuah pertanyaan kemas kini. 1181 00:55:53,310 --> 00:55:56,150 Oleh itu, kita mengemas kini jadual bahawa kita berbicara tentang. 1182 00:55:56,150 --> 00:56:00,520 Dan kita mahu menetapkan tertentu nilai, ruangan 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 mengemas kini jadual, mengubah nilai-nilai dalam semua baris dalam kes ini. 1185 00:56:07,500 --> 00:56:13,690 Jadi, dalam satu ini ke sini, sebenar Sebagai contoh, kita mempunyai insert-- maaf. 1186 00:56:13,690 --> 00:56:17,630 Slaid yang didahulukan tanpa saya sedari. 1187 00:56:17,630 --> 00:56:22,230 >> Jadi jadual kemas kini ini ditetapkan col1 sama untuk VAL1 mana rumah sama dengan "Currier." 1188 00:56:22,230 --> 00:56:25,300 Apa satu ini tidak adalah ia hanya perubahan, ia hanya 1189 00:56:25,300 --> 00:56:28,130 mengemas kini nilai-nilai ini di tempat-tempat tertentu. 1190 00:56:28,130 --> 00:56:32,300 Jadi, dalam satu pertama ini, ia berubah ini Nilai untuk segala-galanya dalam jadual anda, 1191 00:56:32,300 --> 00:56:32,860 OK? 1192 00:56:32,860 --> 00:56:35,820 Ia akan mengubah ini ruangan untuk setiap penyertaan tunggal, 1193 00:56:35,820 --> 00:56:37,020 untuk setiap baris tunggal. 1194 00:56:37,020 --> 00:56:40,840 Tetapi di mana ini, anda boleh menganggapnya sebagai penerang. 1195 00:56:40,840 --> 00:56:44,020 Jadi ia hanya akan mengubah ia di tempat-tempat yang sangat khusus. 1196 00:56:44,020 --> 00:56:47,840 Jadi dalam p-set tujuh, apabila anda mungkin dikemaskini jumlah tunai 1197 00:56:47,840 --> 00:56:53,050 pengguna yang anda mempunyai, anda mungkin mempunyai beberapa di mana ID ID sesi sama, bukan? 1198 00:56:53,050 --> 00:56:55,280 >> Kerana anda tidak mahu menukar jumlah tunai 1199 00:56:55,280 --> 00:56:57,630 bagi tiap-tiap orang yang telah menggunakan laman web anda. 1200 00:56:57,630 --> 00:57:00,480 Anda mahu mengubahnya untuk satu orang tertentu, orang itu menjadi 1201 00:57:00,480 --> 00:57:02,410 sesiapa yang menggunakannya pada masa itu. 1202 00:57:02,410 --> 00:57:04,320 Betul? 1203 00:57:04,320 --> 00:57:07,510 OK, jadi memasukkan, sisipan nilai-nilai tertentu ke dalam jadual. 1204 00:57:07,510 --> 00:57:11,650 Ini seperti apabila anda mewujudkan pengguna baru. 1205 00:57:11,650 --> 00:57:14,240 Struktur umum di sini yang memasukkan ke dalam apa sahaja jadual 1206 00:57:14,240 --> 00:57:15,680 kita berbicara tentang. 1207 00:57:15,680 --> 00:57:18,910 Nilai-nilai, yang merupakan nilai-nilai yang kita sebenarnya mahu masukkan. 1208 00:57:18,910 --> 00:57:23,060 OK, jadi seperti yang kita lihat di sini, kita telah memasukkan ke dalam jadual. 1209 00:57:23,060 --> 00:57:27,790 Ini adalah ruangan khusus dengan nilai berutus mereka. 1210 00:57:27,790 --> 00:57:29,940 Jadi ini berkata, sisipan berturut-turut baru yang mengandungi 1211 00:57:29,940 --> 00:57:33,660 nilai VAL1 dan VAL2 bawah ruangan ini khusus. 1212 00:57:33,660 --> 00:57:39,240 >> Jadi mungkin anda hanya mahu mengisi daripada separuh yang ada di baris ini. 1213 00:57:39,240 --> 00:57:41,150 Itulah yang bahagian ini di sini membolehkan anda melakukan. 1214 00:57:41,150 --> 00:57:43,280 Ia membolehkan anda sebenarnya menentukan bahagian. 1215 00:57:43,280 --> 00:57:44,244 Ya? 1216 00:57:44,244 --> 00:57:52,150 >> PENONTON: Bolehkah anda hanya [didengar] sel-sel di barisan [didengar]? 1217 00:57:52,150 --> 00:57:55,000 >> Alison: Jika anda hanya masukkan bahagian-bahagian tertentu barisan anda, 1218 00:57:55,000 --> 00:57:57,480 seluruh sel-sel hanya kosong. 1219 00:57:57,480 --> 00:58:02,730 1220 00:58:02,730 --> 00:58:05,660 Selama anda membenarkan mereka untuk kosong, ia bukan masalah. 1221 00:58:05,660 --> 00:58:09,570 Jika anda cuba untuk mengakses mereka, itu akan kembali beberapa elemen kosong. 1222 00:58:09,570 --> 00:58:13,850 Tetapi ia adalah penting untuk mengetahui bahawa dalam jadual tertentu, 1223 00:58:13,850 --> 00:58:16,690 mereka telah dibenarkan untuk batal. 1224 00:58:16,690 --> 00:58:18,890 Anda mungkin menghadapi satu masalah semasa p-set anda 1225 00:58:18,890 --> 00:58:21,320 kerana kita tidak membenarkan mana-mana daripada nilai-nilai anda adalah batal. 1226 00:58:21,320 --> 00:58:26,110 Tetapi anda boleh menentukan satu nilai pilihan dalam jadual anda. 1227 00:58:26,110 --> 00:58:29,640 >> OK, pilih, jadi ini adalah hanya satu cara untuk mendapatkan 1228 00:58:29,640 --> 00:58:33,790 data khusus dari meja di beberapa pengecam yang anda mahu. 1229 00:58:33,790 --> 00:58:37,990 Jadi pilih bintang dari meja di mana col sama dengan sesuatu yang hanya bermaksud, 1230 00:58:37,990 --> 00:58:43,820 memberikan aku semua data yang berkaitan di mana ruangan ini khusus adalah benar. 1231 00:58:43,820 --> 00:58:49,020 Jadi bintang dalam kes ini akan kembali keseluruhan barisan untuk anda, OK? 1232 00:58:49,020 --> 00:58:54,880 >> Dan kemudian, dalam kes ini, memilih bintang daripada meja hanya memberikan anda keseluruhan meja. 1233 00:58:54,880 --> 00:58:58,940 Dan kemudian, memadam jelas, ia hanya memadam baris dari meja. 1234 00:58:58,940 --> 00:59:01,320 Jadi memotong daripada jadual, apa pun jadual kami 1235 00:59:01,320 --> 00:59:06,830 rujukan, di mana beberapa tertentu pengecam atau beberapa keadaan benar. 1236 00:59:06,830 --> 00:59:07,720 Ya? 1237 00:59:07,720 --> 00:59:08,700 >> PENONTON: Soalan. 1238 00:59:08,700 --> 00:59:10,699 Mengapa kamu menggunakan dua sebut harga, dan sama ada anda 1239 00:59:10,699 --> 00:59:13,600 melakukan tanda petik tunggal atau sebut harga, adakah ia membuat perbezaan? 1240 00:59:13,600 --> 00:59:18,235 >> Alison: sebut harga Double atau petikan tunggal tidak membuat perbezaan dalam SQL. 1241 00:59:18,235 --> 00:59:19,610 Saya fikir saya melihat satu lagi soalan. 1242 00:59:19,610 --> 00:59:20,814 Ya? 1243 00:59:20,814 --> 00:59:25,070 >> PENONTON: Adakah ia tidak memberi kesan kepada apa yang mendapat selamat dari pertanyaan? 1244 00:59:25,070 --> 00:59:27,945 >> Alison: Rob? 1245 00:59:27,945 --> 00:59:31,410 >> ROB: Apa yang dimaksudkan dengan melarikan diri dari pertanyaan? 1246 00:59:31,410 --> 00:59:36,870 >> PENONTON: Jika seseorang mempunyai pertanyaan tunggal dalam bentuk yang daripada- 1247 00:59:36,870 --> 00:59:39,862 >> ROB: Jika seseorang adalah untuk meletakkan quote tunggal dalam, 1248 00:59:39,862 --> 00:59:43,560 maka selagi anda sanitasi input anda, maka ia tidak mengapa. 1249 00:59:43,560 --> 00:59:46,205 Tetapi jika anda menggunakan satu quote dan anda adalah salah 1250 00:59:46,205 --> 00:59:47,914 melarikan diri input anda, maka ya, mereka perlu 1251 00:59:47,914 --> 00:59:51,079 untuk meletakkan quote tunggal untuk memecahkan kod anda. jika anda menggunakan tanda petik, 1252 00:59:51,079 --> 00:59:53,580 mereka perlu meletakkan dua memetik untuk memecahkan kod anda. 1253 00:59:53,580 --> 00:59:56,163 Tetapi selagi anda melarikan diri perkara dengan betul, ia tidak mengapa. 1254 00:59:56,163 --> 00:59:59,220 Ia hanya akan diterjemahkan kepada simbol yang betul juga. 1255 00:59:59,220 --> 01:00:02,332 >> PENONTON: Apakah yang melarikan diri bermakna? 1256 01:00:02,332 --> 01:00:04,040 Alison: Well, seperti pembersihan dan melarikan diri. 1257 01:00:04,040 --> 01:00:06,810 1258 01:00:06,810 --> 01:00:13,820 Peperiksaan yang kita ada, yang XKCD besar komik yang mereka menarik di mana anda mempunyai, 1259 01:00:13,820 --> 01:00:15,629 oh-- 1260 01:00:15,629 --> 01:00:16,670 ROB: Ia slaid terakhir. 1261 01:00:16,670 --> 01:00:18,500 Alison: Ia slaid terakhir, benar-benar? 1262 01:00:18,500 --> 01:00:20,200 Oh my god. 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 boleh menyuntik sesuatu ke dalam SQL query ini 1265 01:00:27,900 --> 01:00:30,560 di mana ia pecah anda kod, atau seperti Daud menunjukkan 1266 01:00:30,560 --> 01:00:38,460 dalam kelas, jika kita mempunyai beberapa tunggal quote 1 sama dengan 1 dan jika dalam kod kami, 1267 01:00:38,460 --> 01:00:41,230 kita hanya terus menyalin yang dalam, dan kita mempunyai petikan tunggal berakhir, 1268 01:00:41,230 --> 01:00:44,740 apa yang berlaku ialah kita mendapatkan ungkapan beberapa yang 1269 01:00:44,740 --> 01:00:48,680 menilai dengan benar akan membiarkan orang memasuki pangkalan data kami 1270 01:00:48,680 --> 01:00:51,720 dan mendapatkan data yang kita tidak mahu mereka untuk mendapatkan. 1271 01:00:51,720 --> 01:00:54,240 Jadi sanitasi input hanya bermakna memastikan 1272 01:00:54,240 --> 01:00:57,680 bahawa kita melepaskan diri ini watak dan menamakannya 1273 01:00:57,680 --> 01:01:01,720 sebagai aksara dan bukan yang yang harus dibenarkan 1274 01:01:01,720 --> 01:01:04,990 untuk diambil secara literal sebagai pernyataan SQL kami. 1275 01:01:04,990 --> 01:01:09,980 >> Jadi perkara yang besar yang kita kata yang anda semua perlu menggunakan 1276 01:01:09,980 --> 01:01:13,650 adalah HTML aksara khas, yang merupakan sesuatu 1277 01:01:13,650 --> 01:01:15,730 yang anda mungkin mahu mengambil lihat. 1278 01:01:15,730 --> 01:01:17,240 OK, memadam. 1279 01:01:17,240 --> 01:01:19,450 Jenis data, ini semua akan berada dalam talian. 1280 01:01:19,450 --> 01:01:23,510 Oleh kerana kita telah 15 minit, saya hanya akan pergi kanan melalui ini. 1281 01:01:23,510 --> 01:01:28,500 PHP dan SQL, pada dasarnya ini adalah hanya kami mempunyai fungsi pertanyaan yang 1282 01:01:28,500 --> 01:01:31,520 telah membantu melindungi daripada ini serangan berniat jahat. 1283 01:01:31,520 --> 01:01:33,970 Jadi, setiap kali anda menggunakan pertanyaan, kami telah memastikan 1284 01:01:33,970 --> 01:01:36,560 bahawa perkara yang telah dibersihkan dan barang kecil. 1285 01:01:36,560 --> 01:01:41,070 >> MVC hanya paradigma reka bentuk, jadi model, pandangan, pengawal. 1286 01:01:41,070 --> 01:01:44,200 Ia hanya satu cara untuk menjaga perkara-perkara bagus dan berpecah dengan cara yang sama 1287 01:01:44,200 --> 01:01:47,100 bahawa kita cenderung untuk faktor kod ke dalam fungsi. 1288 01:01:47,100 --> 01:01:53,390 Ini hanya satu rangka kerja reka bentuk web yang membolehkan anda untuk melakukan perkara yang sama. 1289 01:01:53,390 --> 01:01:54,760 Saya akan skip ini. 1290 01:01:54,760 --> 01:01:58,530 >> Ini adalah sesuatu yang saya akan menjadi super selesa dengan. 1291 01:01:58,530 --> 01:02:01,132 Ia satu meja kecil yang hebat di sana. 1292 01:02:01,132 --> 01:02:03,090 Ia memberikan anda fungsi contoh model. 1293 01:02:03,090 --> 01:02:05,473 Saya hanya pergi melalui ini kerana saya benar-benar mahu Davin dapat bercakap. 1294 01:02:05,473 --> 01:02:07,140 Jika anda mempunyai sebarang soalan, sila. 1295 01:02:07,140 --> 01:02:07,931 Saya akan berada di sini selepas. 1296 01:02:07,931 --> 01:02:10,360 Hanya datang bercakap dengan saya. 1297 01:02:10,360 --> 01:02:13,380 Dengan itu, kami mempunyai status HTTP. 1298 01:02:13,380 --> 01:02:16,270 Dan ini Davin akan meniup melalui ini dalam masa 15 minit. 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, mikrofon anda? 1302 01:02:20,312 --> 01:02:22,210 Yeah. 1303 01:02:22,210 --> 01:02:23,336 Maaf. 1304 01:02:23,336 --> 01:02:24,460 Alison: Way disediakan. 1305 01:02:24,460 --> 01:02:25,335 DAVIN: Tidak, saya sudah bersedia. 1306 01:02:25,335 --> 01:02:25,860 Saya sudah bersedia. 1307 01:02:25,860 --> 01:02:28,790 Mari kita buat ini. 1308 01:02:28,790 --> 01:02:29,290 Ia bersedia. 1309 01:02:29,290 --> 01:02:30,041 OK. 1310 01:02:30,041 --> 01:02:30,540 Maaf. 1311 01:02:30,540 --> 01:02:31,664 Saya tertumpah kopi pada diri saya. 1312 01:02:31,664 --> 01:02:36,037 1313 01:02:36,037 --> 01:02:38,210 Saya tidak tahu jika saya lebih kecewa bahawa saya kelihatan bodoh, 1314 01:02:38,210 --> 01:02:40,600 atau bahawa saya tidak minum kopi lagi. 1315 01:02:40,600 --> 01:02:44,480 Bagaimanapun, hanya satu pengumuman cepat mengenai kunci yang anda lelaki itu mempunyai. 1316 01:02:44,480 --> 01:02:47,994 Jadi kunci ini anda lelaki itu mempunyai tidak rasmi apa yang kuiz. 1317 01:02:47,994 --> 01:02:49,660 Ini adalah apa yang rasmi pada kuiz. 1318 01:02:49,660 --> 01:02:52,520 Juga, di laman web, kita memberitahu anda, OK, ini akan menjadi kuiz. 1319 01:02:52,520 --> 01:02:55,020 Jadi dalam kunci cheat kecil anda mempunyai, tidak rasmi. 1320 01:02:55,020 --> 01:02:56,690 Dan terdapat kesilapan di atasnya. 1321 01:02:56,690 --> 01:03:01,490 Jadi yang terbaik untuk tidak hanya membuta tuli menggunakannya. 1322 01:03:01,490 --> 01:03:04,390 Jadi yeah, itu yang. 1323 01:03:04,390 --> 01:03:05,980 Jadi mari kita masuk ke dalam ini cepat sebenar. 1324 01:03:05,980 --> 01:03:07,420 >> Jadi status HTTP. 1325 01:03:07,420 --> 01:03:10,430 Jadi apa yang berlaku apabila laman web, segala-galanya adalah hak semua. 1326 01:03:10,430 --> 01:03:11,144 OK segala-galanya. 1327 01:03:11,144 --> 01:03:13,310 Semua kembali kepada anda dengan cara yang anda mahu ia. 1328 01:03:13,310 --> 01:03:15,370 Anda mendapat 200 OK. 1329 01:03:15,370 --> 01:03:19,250 301, di mana kita melihat bahawa 301 sebelum ini? 1330 01:03:19,250 --> 01:03:20,890 Tunggu, ada apa? 1331 01:03:20,890 --> 01:03:23,250 Maaf. 1332 01:03:23,250 --> 01:03:24,980 Kami melihat i timah kuliah semasa keselamatan. 1333 01:03:24,980 --> 01:03:30,690 Jadi semasa keselamatan, jadi jika Daud ditaip dalam http dan kemudian cuba untuk pergi ke cs50.net, 1334 01:03:30,690 --> 01:03:31,940 anda akan melihat 301 berpindah. 1335 01:03:31,940 --> 01:03:32,440 Mengapa? 1336 01:03:32,440 --> 01:03:35,570 Kerana ia akan redirect anda secara automatik untuk HTTPS kami. 1337 01:03:35,570 --> 01:03:38,649 >> Jadi 301 dipindahkan, hanya itu pada dasarnya penghantaran semula. 1338 01:03:38,649 --> 01:03:40,190 Dan anda boleh berfikir tentang hal seperti ini. 1339 01:03:40,190 --> 01:03:43,790 Mana-mana status yang bermula dengan 2, mereka adalah seperti, OK, OK segala-galanya. 1340 01:03:43,790 --> 01:03:46,530 Mana-mana status yang bermula dengan 3, mereka adalah penghalaan semula. 1341 01:03:46,530 --> 01:03:49,571 Status yang bermula dengan 4, yang cara ada beberapa jenis kesilapan klien. 1342 01:03:49,571 --> 01:03:52,440 Status yang bermula dengan 5, itulah beberapa jenis ralat pelayan. 1343 01:03:52,440 --> 01:03:54,680 Jadi anda jenis memecahkan yang status seperti itu. 1344 01:03:54,680 --> 01:03:59,120 Jadi 304 tidak tidak diubah suai, jadi dalam anda server.c p-set, jadi mari kita mengatakan anda 1345 01:03:59,120 --> 01:04:00,600 cat.html dimuatkan. 1346 01:04:00,600 --> 01:04:03,360 Semua datang kembali, anda mendapatkan 200S, OK, hebat. 1347 01:04:03,360 --> 01:04:04,540 >> Katakan anda segar itu. 1348 01:04:04,540 --> 01:04:07,310 Nah, dalam yang cat.html, anda mempunyai JPEG. 1349 01:04:07,310 --> 01:04:09,520 Nah, JPEG yang tidak pergi untuk kembali. 1350 01:04:09,520 --> 01:04:12,140 Anda tidak akan menyiarkan lagi DAPATKAN permintaan kepada pelayan, 1351 01:04:12,140 --> 01:04:13,980 dan kemudian mendapatkan semua maklumat yang kembali. 1352 01:04:13,980 --> 01:04:17,560 Ia akan hanya adalah-- imej yang akan cache pada mesin anda. 1353 01:04:17,560 --> 01:04:19,540 Dan supaya imej yang akan menjadi 304. 1354 01:04:19,540 --> 01:04:20,720 Jadi ia tidak diubah suai. 1355 01:04:20,720 --> 01:04:24,600 Jika anda kemudian menutup, jelas cookies, dan kemudian muat semula 1356 01:04:24,600 --> 01:04:27,490 dan cuba untuk memuatkan halaman yang sekali lagi, anda akan melihat 200S. 1357 01:04:27,490 --> 01:04:28,910 Anda tidak akan melihat bahawa 304. 1358 01:04:28,910 --> 01:04:32,340 >> 400, permintaan buruk, benar cepat, seperti jika anda 1359 01:04:32,340 --> 01:04:34,880 telah hendak menghantarkan Objek JSON ke pelayan 1360 01:04:34,880 --> 01:04:38,090 dan objek JSON anda tidak betul, 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 Apabila anda akan menyaksikan terlarang? 1363 01:04:40,330 --> 01:04:41,394 Mungkin Mungkin? 1364 01:04:41,394 --> 01:04:42,060 PENONTON: chmod. 1365 01:04:42,060 --> 01:04:42,950 DAVIN: chmod, yeah. 1366 01:04:42,950 --> 01:04:44,730 Jadi, anda telah tidak ditetapkan kebenaran dengan betul. 1367 01:04:44,730 --> 01:04:45,577 404, tidak dijumpai. 1368 01:04:45,577 --> 01:04:46,410 Ia hanya tidak ada. 1369 01:04:46,410 --> 01:04:48,670 Jadi jika anda menaip URL yang salah. 1370 01:04:48,670 --> 01:04:53,500 500, ralat pelayan dalaman, pelayan mungkin tidak dikonfigurasikan dengan betul. 1371 01:04:53,500 --> 01:04:56,260 Sesuatu yang tidak pada akhir anda, tetapi sesuatu yang di sebelah pelayan. 1372 01:04:56,260 --> 01:04:57,240 Dan 503? 1373 01:04:57,240 --> 01:04:59,502 Banyak orang melihat 503s dalam lepas p-set. 1374 01:04:59,502 --> 01:05:00,460 Apabila yang akan terjadi? 1375 01:05:00,460 --> 01:05:04,180 1376 01:05:04,180 --> 01:05:05,660 Saya mendengar bisikan. 1377 01:05:05,660 --> 01:05:07,767 >> PENONTON: Apabila Google memutuskan anda robot. 1378 01:05:07,767 --> 01:05:10,350 DAVIN: Ya, apabila Google memutuskan anda robot, anda mendapatkan 503s. 1379 01:05:10,350 --> 01:05:11,560 Jadi itulah melebihi keupayaan. 1380 01:05:11,560 --> 01:05:14,620 Jika anda telah diminta dari pelayan terlalu banyak, ia biasanya sementara. 1381 01:05:14,620 --> 01:05:15,560 Dan kebanyakan di antara kamu perasan ia. 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 sedikit rehat, maka 503s pergi, 1384 01:05:19,282 --> 01:05:20,490 dan segala-galanya adalah hak semua. 1385 01:05:20,490 --> 01:05:26,640 >> Gabe: Real cepat, apabila yang anda semua mendapatkan 500 dalam masalah mungkin lepas ini ditetapkan? 1386 01:05:26,640 --> 01:05:27,954 Ya? 1387 01:05:27,954 --> 01:05:30,906 >> PENONTON: Biasanya jika server mempunyai fail tidak kena pada tempatnya 1388 01:05:30,906 --> 01:05:34,650 atau [didengar] mereka mesin [didengar]. 1389 01:05:34,650 --> 01:05:38,870 >> Gabe: Jadi ia mungkin konfigurasi yang isu dalam PHP anda pada pelayan anda. 1390 01:05:38,870 --> 01:05:42,250 Tetapi ia mungkin hanya sesuatu seperti koma bertitik yang terlupa anda. 1391 01:05:42,250 --> 01:05:44,130 Jika anda menaip PHP, beberapa sintaks tidak betul 1392 01:05:44,130 --> 01:05:46,000 mungkin anda mendapatkan sesuatu seperti itu. 1393 01:05:46,000 --> 01:05:46,960 OK? 1394 01:05:46,960 --> 01:05:48,610 >> DAVIN: Cool. 1395 01:05:48,610 --> 01:05:51,180 Adakah anda mahu saya untuk berbuat sehingga AJAX? 1396 01:05:51,180 --> 01:05:52,950 >> Gabe: [didengar]. 1397 01:05:52,950 --> 01:05:53,450 DAVIN: OK. 1398 01:05:53,450 --> 01:05:54,230 Jadi apa yang DOM? 1399 01:05:54,230 --> 01:05:55,290 Apakah DOM berdiri untuk? 1400 01:05:55,290 --> 01:05:56,990 >> PENONTON: Dokumen model objek. 1401 01:05:56,990 --> 01:05:57,490 DAVIN: Nice. 1402 01:05:57,490 --> 01:06:00,775 Mengapa kita suka? 1403 01:06:00,775 --> 01:06:02,670 Awesome. 1404 01:06:02,670 --> 01:06:06,651 Betul, jadi ia hanya membolehkan kita untuk akses HTML, mengakses halaman kami dengan cepat. 1405 01:06:06,651 --> 01:06:07,150 Mengapa? 1406 01:06:07,150 --> 01:06:09,980 Kerana kita merawat kami halaman, merawat tag HTML kami, 1407 01:06:09,980 --> 01:06:11,730 merawat segala-galanya seolah-olah mereka objek. 1408 01:06:11,730 --> 01:06:13,710 Jika kita merawat mereka seperti mereka objek, maka apa yang kita boleh lakukan? 1409 01:06:13,710 --> 01:06:15,210 Nah, kita boleh memanggil fungsi pada mereka. 1410 01:06:15,210 --> 01:06:16,460 Dan ini adalah penting mengapa? 1411 01:06:16,460 --> 01:06:19,200 Nah, kerana kita akan menggunakan JavaScript untuk mengemaskini HTML kami, 1412 01:06:19,200 --> 01:06:20,500 mengemaskini objek-objek ini. 1413 01:06:20,500 --> 01:06:23,869 Jadi, jika kita melayan mereka seperti objek, kita boleh memanggil fungsi pada mereka. 1414 01:06:23,869 --> 01:06:26,660 Saya akan masuk ke dalam ini sedikit lebih apabila saya pergi ke dalam JavaScript, 1415 01:06:26,660 --> 01:06:30,510 tetapi anda semua telah melihat seperti document.getElementByID. 1416 01:06:30,510 --> 01:06:32,870 Jadi adalah dokumen anda elemen, dapatkan unsur oleh ID, 1417 01:06:32,870 --> 01:06:35,087 jadi anda akan melihat untuk beberapa ID dalam tag HTML. 1418 01:06:35,087 --> 01:06:36,920 Kemudian, anda boleh melakukan sesuatu yang lain itu. 1419 01:06:36,920 --> 01:06:40,089 Sebagai contoh, seperti document.body, maka anda boleh menambah kanak-kanak. 1420 01:06:40,089 --> 01:06:41,630 Jadi anda akan mendapati dokumen itu. 1421 01:06:41,630 --> 01:06:42,340 Anda mempunyai dokumen itu. 1422 01:06:42,340 --> 01:06:43,629 Anda akan mendapati badan. 1423 01:06:43,629 --> 01:06:44,420 Anda mendapati badan. 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 menambah kanak-kanak, dan anda boleh menambah beberapa HTML ke akhir dalam badan anda. 1426 01:06:50,312 --> 01:06:52,520 Jadi, pada asasnya, anda hanya merawat ia seperti objek. 1427 01:06:52,520 --> 01:06:54,515 Anda merawat HTML tag seperti objek. 1428 01:06:54,515 --> 01:06:57,071 Dan ia menjadikan ia sangat mudah dan cepat untuk pergi melalui mereka. 1429 01:06:57,071 --> 01:06:59,070 Tetapi ia juga membolehkan anda untuk memanggil fungsi pada mereka 1430 01:06:59,070 --> 01:07:04,410 supaya anda boleh memanipulasi dan menukar unsur-unsur. 1431 01:07:04,410 --> 01:07:10,162 >> Gabe: Memandangkan ini, mengapa JavaScript seperti bahasa yang baik untuk berinteraksi dengan HTML? 1432 01:07:10,162 --> 01:07:12,870 Kemungkinan besar, apabila orang telah memilih bahasa untuk penyemak imbas, 1433 01:07:12,870 --> 01:07:14,990 bagi pihak pelanggan, JavaScript adalah benar-benar bagus, 1434 01:07:14,990 --> 01:07:16,765 ia benar-benar baik di mengendalikan objek. 1435 01:07:16,765 --> 01:07:20,620 Dan benda-benda yang jenis suka objek yang muncul dalam HTML, 1436 01:07:20,620 --> 01:07:23,940 sehingga sangat mudah untuk JavaScript untuk berbuat seperti itu pengendalian. 1437 01:07:23,940 --> 01:07:24,440 DAVIN: Nice. 1438 01:07:24,440 --> 01:07:25,670 Jadi di sini hanya satu contoh. 1439 01:07:25,670 --> 01:07:29,020 Jadi saya fikir pada kuiz tahun lepas, atau mungkin dua tahun yang lalu, kita 1440 01:07:29,020 --> 01:07:30,840 meminta anda untuk membuat pokok. 1441 01:07:30,840 --> 01:07:32,660 Jadi ini adalah apa yang anda akan lakukan. 1442 01:07:32,660 --> 01:07:34,255 Jadi, anda bermula 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 bermula dengan tag HTML. 1445 01:07:38,100 --> 01:07:41,660 Dan kemudian, anda akan mendapat petunjuk mengenai cara untuk melakukan ini berdasarkan lekukan itu. 1446 01:07:41,660 --> 01:07:43,870 Jadi jenis ketua cawangan luar. 1447 01:07:43,870 --> 01:07:46,242 Di dalam kepala, kita mempunyai lain untuk tag tajuk. 1448 01:07:46,242 --> 01:07:47,450 Sebab itu, kita mempunyai tag tajuk. 1449 01:07:47,450 --> 01:07:49,760 Dan di dalam itu, kami mempunyai beberapa rentetan. 1450 01:07:49,760 --> 01:07:52,210 Dan jadi kami mewakili rentetan dalam bulatan. 1451 01:07:52,210 --> 01:07:54,010 Dan semua tag adalah dalam kuasa dua. 1452 01:07:54,010 --> 01:07:56,270 >> Dan jika anda melihat, jika kita memikirkan ini sebagai pokok, 1453 01:07:56,270 --> 01:07:58,730 dan katakanlah HTML yang seorang ibu atau bapa, maka kepala dan badan 1454 01:07:58,730 --> 01:07:59,772 akan menjadi adik-beradik. 1455 01:07:59,772 --> 01:08:01,813 Mereka kedua-duanya akan menjadi kanak-kanak daripada ibu bapa yang. 1456 01:08:01,813 --> 01:08:03,620 Jadi kerana mereka kedua-dua adik-beradik, mereka 1457 01:08:03,620 --> 01:08:06,590 akan menjadi jenis sebelah satu sama lain dalam model pokok kami. 1458 01:08:06,590 --> 01:08:08,590 Dan kemudian, anda pada dasarnya melakukan perkara yang sama. 1459 01:08:08,590 --> 01:08:13,512 Jadi tidak sukar, tetapi kami telah meminta soalan seperti ini sebelum kuiz. 1460 01:08:13,512 --> 01:08:15,220 Gabe: Adakah sesiapa mempunyai soalan setakat ini? 1461 01:08:15,220 --> 01:08:16,357 Adakah ia 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, bahan yang baik. 1465 01:08:21,600 --> 01:08:24,069 Jadi JavaScript, apakah 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 sorotan bahawa anda harus ingat. 1468 01:08:30,727 --> 01:08:31,810 Pertama, ia longgar ditaip. 1469 01:08:31,810 --> 01:08:33,529 Apa maksudnya? 1470 01:08:33,529 --> 01:08:35,596 Jadi PHP was-- yeah, ada apa? 1471 01:08:35,596 --> 01:08:39,854 >> PENONTON: Anda tidak perlu jelas negeri jenis pembolehubah ia. 1472 01:08:39,854 --> 01:08:40,479 DAVIN: Perfect. 1473 01:08:40,479 --> 01:08:43,270 Sebab itu ia berkata anda tidak perlu jelas menyatakan jenis pembolehubah. 1474 01:08:43,270 --> 01:08:44,160 Itulah hak. 1475 01:08:44,160 --> 01:08:49,700 Jadi, dalam C, jika saya mempunyai int i sama dengan 50, maka dalam PHP, ia 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 menjadi panggilan? 1478 01:08:54,319 --> 01:08:55,260 Var, bukan? 1479 01:08:55,260 --> 01:08:56,566 Ia akan menjadi seperti var i sama dengan 50. 1480 01:08:56,566 --> 01:08:58,649 Tetapi anda tidak perlu seperti, OK, ini adalah int. 1481 01:08:58,649 --> 01:09:00,350 OK, ini adalah rentetan. 1482 01:09:00,350 --> 01:09:01,731 Tidak perlu untuk berbuat demikian. 1483 01:09:01,731 --> 01:09:02,939 Ia adalah bahasa yang diterjemahkan. 1484 01:09:02,939 --> 01:09:04,904 Jadi apa maksudnya? 1485 01:09:04,904 --> 01:09:06,340 >> PENONTON: Tidak disusun. 1486 01:09:06,340 --> 01:09:10,470 >> DAVIN: Apa yang tidak disusun bermakna? 1487 01:09:10,470 --> 01:09:11,392 Yeah? 1488 01:09:11,392 --> 01:09:15,336 >> PENONTON: Anda tidak perlu untuk menyusun semula kod 1489 01:09:15,336 --> 01:09:18,294 untuk mendapatkan bersedia untuk komputer untuk menjalankan ia. 1490 01:09:18,294 --> 01:09:23,144 Ia hanya diambil pada masa pelaksanaan dan komputer [didengar]. 1491 01:09:23,144 --> 01:09:25,560 DAVIN: Yeah, jadi ia akan melalui seorang jurubahasa. 1492 01:09:25,560 --> 01:09:26,750 Tetapi anda betul-betul tepat. 1493 01:09:26,750 --> 01:09:28,319 Jadi anda tidak akan untuk menyusun ia, bukan? 1494 01:09:28,319 --> 01:09:30,399 Apabila anda telah melakukan anda PHP dan kod JavaScript, 1495 01:09:30,399 --> 01:09:31,365 anda tidak pernah dipanggil menyusun. 1496 01:09:31,365 --> 01:09:33,779 Anda tidak pernah dipanggil sesuatu seperti membuat atau apa-apa seperti itu. 1497 01:09:33,779 --> 01:09:34,800 Ini kerana ia ditafsirkan. 1498 01:09:34,800 --> 01:09:37,319 Jadi setiap kali ia melalui pelayar, ia pergi melalui jurubahasa. 1499 01:09:37,319 --> 01:09:40,370 Dan itu akan menafsirkannya hanya dalam masa sebenar segera untuk anda. 1500 01:09:40,370 --> 01:09:43,770 Jadi apakah beberapa positif dan negatif untuk mempunyai bahasa yang diterjemahkan 1501 01:09:43,770 --> 01:09:45,258 dan mempunyai bahasa yang disusun? 1502 01:09:45,258 --> 01:09:48,240 1503 01:09:48,240 --> 01:09:50,540 Jadi compiling-- yeah, ada apa? 1504 01:09:50,540 --> 01:09:52,444 >> PENONTON: Ditafsirkan adalah lebih perlahan. 1505 01:09:52,444 --> 01:09:53,319 DAVIN: Dalam apa rasa? 1506 01:09:53,319 --> 01:09:57,167 1507 01:09:57,167 --> 01:09:59,091 >> PENONTON: Selepas anda menyusun, anda tidak perlu 1508 01:09:59,091 --> 01:10:04,400 melakukan apa-apa langkah-langkah tambahan untuk melaksanakan itu, sedangkan ini [didengar]. 1509 01:10:04,400 --> 01:10:05,570 >> DAVIN: Betul, sempurna. 1510 01:10:05,570 --> 01:10:08,386 Jadi apa yang anda berkata adalah pada dasarnya Mengkompilasi bahawa, 1511 01:10:08,386 --> 01:10:10,760 ketika anda mengumpul, anda mempunyai banyak kos pendahuluan, bukan? 1512 01:10:10,760 --> 01:10:11,760 Anda akan menyusun ia. 1513 01:10:11,760 --> 01:10:13,750 Tetapi selepas anda menyusun ia, yang pengkompil yang akan mengoptimumkan ia. 1514 01:10:13,750 --> 01:10:14,840 Ia akan menjadi cepat. 1515 01:10:14,840 --> 01:10:16,170 Ia akan pada dasarnya secepat yang boleh. 1516 01:10:16,170 --> 01:10:18,830 Dengan mentafsir, anda tidak mempunyai bahawa kos pendahuluan. 1517 01:10:18,830 --> 01:10:22,260 Sebaliknya, ia akan menjadi lebih perlahan sedikit setiap kali anda menafsirkannya. 1518 01:10:22,260 --> 01:10:24,940 Dan anda akan perlu mentafsir setiap kali tunggal. 1519 01:10:24,940 --> 01:10:27,114 Jadi, daripada mempunyai ini satu kos masa, kini anda 1520 01:10:27,114 --> 01:10:29,530 akan perlu menafsirkannya setiap kali halaman yang menjadikan. 1521 01:10:29,530 --> 01:10:31,890 >> Jadi penterjemah adalah baik kerana anda tidak perlu untuk menyusun ia, 1522 01:10:31,890 --> 01:10:33,980 tetapi ia tidak baik dalam setiap masa beban halaman, itu 1523 01:10:33,980 --> 01:10:35,771 akan perlu mentafsir JavaScript ini. 1524 01:10:35,771 --> 01:10:40,520 Dan ia akan berjalan dengan lebih perlahan sedikit daripada jika anda untuk menyusun ia. 1525 01:10:40,520 --> 01:10:43,044 Membolehkan anda communicate-- oh, tunggu. 1526 01:10:43,044 --> 01:10:44,960 Digunakan untuk memanipulasi kandungan dan penampilan. 1527 01:10:44,960 --> 01:10:46,043 Kami hanya bercakap tentang itu. 1528 01:10:46,043 --> 01:10:47,250 Ia menggunakan DOM itu. 1529 01:10:47,250 --> 01:10:49,930 AJAX, kami akan masuk ke dalam AJAX dalam sedikit. 1530 01:10:49,930 --> 01:10:51,520 Dan kemudian, ia adalah bahagian pelanggan. 1531 01:10:51,520 --> 01:10:53,110 Jadi PHP adalah sebelah pelayan. 1532 01:10:53,110 --> 01:10:54,360 JavaScript adalah bahagian pelanggan. 1533 01:10:54,360 --> 01:10:57,780 Apakah positif untuk itu? 1534 01:10:57,780 --> 01:10:58,280 Ia mengatakan ia. 1535 01:10:58,280 --> 01:11:01,480 1536 01:11:01,480 --> 01:11:02,780 Ia lebih cepat, bukan? 1537 01:11:02,780 --> 01:11:05,282 Kerana anda tidak mempunyai supaya- itu lebih cepat. 1538 01:11:05,282 --> 01:11:07,490 Anda tidak perlu untuk berkomunikasi dengan beberapa peranti lain. 1539 01:11:07,490 --> 01:11:08,790 Jika anda hanya pada anda pelanggan, anda tidak pernah 1540 01:11:08,790 --> 01:11:11,280 akan harus pergi dan melihat apa yang pada pelayan 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 sebelah pelanggan cenderung untuk menjadi sedikit lebih cepat. 1543 01:11:15,410 --> 01:11:17,910 >> Gabe: Ya, tetapi ini tidak bermakna PHP adalah 1544 01:11:17,910 --> 01:11:20,440 lebih cepat daripada JavaScript atau apa-apa yang seumpamanya. 1545 01:11:20,440 --> 01:11:23,270 Mereka berjalan dalam jenis yang sama kelajuan kerana mereka berdua 1546 01:11:23,270 --> 01:11:24,490 bahasa ditafsirkan. 1547 01:11:24,490 --> 01:11:26,680 Perkara itu lambat di sini adalah permintaan itu. 1548 01:11:26,680 --> 01:11:28,870 Jadi anda sebenarnya akan sepanjang jalan ke Brazil 1549 01:11:28,870 --> 01:11:31,460 untuk mendapatkan maklumat yang hidup di sana. 1550 01:11:31,460 --> 01:11:34,590 Tetapi PHP dan JavaScript, mereka jenis berjalan dalam kelajuan yang sama. 1551 01:11:34,590 --> 01:11:37,930 Ia bukan satu yang lebih cepat daripada yang lain. 1552 01:11:37,930 --> 01:11:40,600 Ini, juga, soalan trik di sini. 1553 01:11:40,600 --> 01:11:47,338 Jadi JavaScript pernah menjadi kod mesin, benar atau salah? 1554 01:11:47,338 --> 01:11:48,590 >> PENONTON: Palsu. 1555 01:11:48,590 --> 01:11:49,090 Gabe: Palsu. 1556 01:11:49,090 --> 01:11:51,298 Ia mempunyai untuk menjadi mesin kod kod mesin kerana adalah 1557 01:11:51,298 --> 01:11:53,210 satu-satunya mesin memahami. 1558 01:11:53,210 --> 01:11:55,800 Walaupun ia tidak disusun, ia masih menjadi kod mesin 1559 01:11:55,800 --> 01:11:59,120 kerana jurubahasa hanya program yang masuk baris demi baris 1560 01:11:59,120 --> 01:12:02,170 dan mengubah baris yang ke sesuatu komputer yang memahami. 1561 01:12:02,170 --> 01:12:02,825 OK? 1562 01:12:02,825 --> 01:12:03,325 Cool. 1563 01:12:03,325 --> 01:12:08,530 1564 01:12:08,530 --> 01:12:12,890 >> DAVIN: Di sini adalah hanya yang sangat asas hello dunia program JavaScript. 1565 01:12:12,890 --> 01:12:15,590 Jadi, saya tidak tahu jika- anda lihat ini. 1566 01:12:15,590 --> 01:12:17,630 Tetapi anda hanya perlu HTML di sini. 1567 01:12:17,630 --> 01:12:21,020 Dan bukannya benar-benar meletakkan JavaScript dalam tag skrip, 1568 01:12:21,020 --> 01:12:22,810 jadi biasa anda boleh memasukkannya ke dalam kepala. 1569 01:12:22,810 --> 01:12:24,030 Anda mempunyai tag skrip. 1570 01:12:24,030 --> 01:12:24,870 Anda jatuh di sana. 1571 01:12:24,870 --> 01:12:28,350 Semua yang telah kami lakukan di sini adalah kami telah dikaitkan dalam- jadi kami telah dikaitkan dalam fail JavaScript 1572 01:12:28,350 --> 01:12:29,137 seperti ini. 1573 01:12:29,137 --> 01:12:30,470 Dan anda semua dilakukan ini, bukan? 1574 01:12:30,470 --> 01:12:34,740 Oleh itu, apabila anda menggunakan jQuery dan underscore.js dalam lepas p-set, 1575 01:12:34,740 --> 01:12:38,700 anda tidak mempunyai banyak lagi kod di tag skrip anda, dalam kepala anda. 1576 01:12:38,700 --> 01:12:41,415 Anda boleh berbuat demikian, tetapi sebaliknya anda baru menghubungkan ia dalam. 1577 01:12:41,415 --> 01:12:43,540 Dan anda mengaitkannya dalam hanya suka anda lakukan dengan CSS. 1578 01:12:43,540 --> 01:12:50,186 Jadi ia hanya menjadikannya lebih mudah untuk membaca supaya kod anda tidak suka 1,000 barisan panjang 1579 01:12:50,186 --> 01:12:52,310 dengan tan fungsi yang anda mungkin tidak akan menggunakan. 1580 01:12:52,310 --> 01:12:53,518 >> Sebaliknya, anda hanya pautan dalam. 1581 01:12:53,518 --> 01:12:55,050 Ia compartmentalizes ia. 1582 01:12:55,050 --> 01:13:00,110 Ia seperti menulis beberapa fail header, dan kemudian termasuk yang fail tandukan pada C. 1583 01:13:00,110 --> 01:13:01,620 Fikirkan ia seperti ini. 1584 01:13:01,620 --> 01:13:02,680 Jadi apakah ini lakukan? 1585 01:13:02,680 --> 01:13:04,560 Nah, ini akan berjalan. 1586 01:13:04,560 --> 01:13:05,410 Ia akan memberi amaran. 1587 01:13:05,410 --> 01:13:08,020 Jadi anda akan mendapat sedikit pop up dipanggil hello dunia. 1588 01:13:08,020 --> 01:13:11,420 Soalan cepat, hanya cek kewarasan, jadi anda lihat di sini di dalam badan, 1589 01:13:11,420 --> 01:13:13,160 berkata badan, HTML di sini. 1590 01:13:13,160 --> 01:13:14,080 Apa yang berlaku dahulu? 1591 01:13:14,080 --> 01:13:16,864 Adakah saya melihat badan, HTML di sini, atau saya melihat amaran pertama? 1592 01:13:16,864 --> 01:13:19,828 1593 01:13:19,828 --> 01:13:20,820 >> PENONTON: Pemberitahuan. 1594 01:13:20,820 --> 01:13:21,470 >> DAVIN: Betul. 1595 01:13:21,470 --> 01:13:22,110 Beliau berkata amaran. 1596 01:13:22,110 --> 01:13:22,610 Mengapa? 1597 01:13:22,610 --> 01:13:24,470 >> PENONTON: Kerana 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 Perfect. 1600 01:13:26,100 --> 01:13:29,207 Maka dia berkata, anda pergi dari atas ke bahagian bawah, yang sememangnya betul. 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 mempunyai fungsi itulah onload seperti, atau bersedia, 1603 01:13:34,790 --> 01:13:38,030 dan mengatakan, OK, tunggu sehingga semua HTML ini telah dimuatkan. 1604 01:13:38,030 --> 01:13:39,580 Kemudian, hubungi JavaScript. 1605 01:13:39,580 --> 01:13:42,190 Kerana kita tidak mempunyai bahawa di sini, yang Perkara pertama yang akan berlaku 1606 01:13:42,190 --> 01:13:43,920 adalah ia akan pergi dari atas ke bawah. 1607 01:13:43,920 --> 01:13:46,310 Ia akan memukul bahawa JS memanggil, ia akan memberi isyarat. 1608 01:13:46,310 --> 01:13:49,510 Selepas itu anda klik OK, amaran yang hilang. 1609 01:13:49,510 --> 01:13:53,600 Kemudian ia akan menunjukkan anda HTML badan itu di sini. 1610 01:13:53,600 --> 01:13:54,590 Nice. 1611 01:13:54,590 --> 01:14:00,880 >> OK, jadi sebenar cepat, bertulis dalam JavaScript adalah super cepat. 1612 01:14:00,880 --> 01:14:02,710 Dalam usaha untuk mengisytiharkan pembolehubah, nama var. 1613 01:14:02,710 --> 01:14:07,070 Jadi, dalam C, anda mempunyai int i, anda mempunyai mengisytiharkan jenis jenis ia. 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 berbual-bual tentang perkara ini. 1617 01:14:09,630 --> 01:14:11,020 Baiklah, mari kita pergi. 1618 01:14:11,020 --> 01:14:12,510 >> Gelung, perkara yang sama. 1619 01:14:12,510 --> 01:14:14,230 Perkara yang sama. 1620 01:14:14,230 --> 01:14:18,165 Pengisytiharan fungsi, jadi seperti yang anda lihat dalam C. 1621 01:14:18,165 --> 01:14:21,290 Satu-satunya perkara yang berbeza begitu apabila anda mendapatkan untuk bahasa pengaturcaraan yang lain, 1622 01:14:21,290 --> 01:14:24,780 seperti apabila anda mengambil 51 semester seterusnya dan yang anda lakukan dengan OCaml, 1623 01:14:24,780 --> 01:14:26,690 anda boleh berurusan dengan fungsi tanpa nama. 1624 01:14:26,690 --> 01:14:28,240 Jadi itulah apa yang anda ada di sini. 1625 01:14:28,240 --> 01:14:31,560 Jadi, anda mahu untuk dimasukkan ke dalam jumlah, beberapa jenis nilai wang. 1626 01:14:31,560 --> 01:14:33,870 Tetapi anda mungkin hanya boleh melakukannya dalam satu masa. 1627 01:14:33,870 --> 01:14:37,310 Jadi, anda tidak mahu untuk memanggil ia berfungsi Kesimpulannya, memberikan akuan fungsi. 1628 01:14:37,310 --> 01:14:39,830 Sebaliknya, anda hanya menggunakannya sebagai fungsi tanpa nama. 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 slaid. 1631 01:14:44,510 --> 01:14:45,597 Ya, kita akan melihat. 1632 01:14:45,597 --> 01:14:46,430 Gabe: Soalan yang baik. 1633 01:14:46,430 --> 01:14:50,660 Apabila anda mungkin mahu menggunakan fungsi tanpa nama di sini? 1634 01:14:50,660 --> 01:14:54,111 Pada asasnya, apabila anda mahukan sesuatu, seperti peristiwa, berlaku. 1635 01:14:54,111 --> 01:14:55,860 Oleh itu, apabila tetikus adalah klik, sebagai contoh, 1636 01:14:55,860 --> 01:14:57,790 anda mahu beberapa fungsi untuk dipanggil. 1637 01:14:57,790 --> 01:15:00,570 Jadi anda lulus untuk acara pengendali, anda lulus untuk majlis itu, 1638 01:15:00,570 --> 01:15:02,870 jenis, fungsi yang anda mahu untuk dipanggil. 1639 01:15:02,870 --> 01:15:04,710 Dan apa yang anda lulus adalah seperti, pada akhir 1640 01:15:04,710 --> 01:15:08,757 hari, hanya penunjuk untuk bahawa arahan, untuk majlis itu. 1641 01:15:08,757 --> 01:15:11,090 Jadi ia tidak seperti yang anda lulus keseluruhan kod, seperti 1642 01:15:11,090 --> 01:15:12,173 penunjuk kepada majlis itu. 1643 01:15:12,173 --> 01:15:17,871 Dan kemudian, apabila seseorang klik yang tetikus, kemudian fungsi yang mendapat dipanggil. 1644 01:15:17,871 --> 01:15:22,340 >> DAVIN: Tatasusunan, jadi anda mempunyai pengisytiharan tatasusunan. 1645 01:15:22,340 --> 01:15:23,990 Kemudian, array bagi memperbetulkan keadaan. 1646 01:15:23,990 --> 01:15:25,769 Real cepat, apa ini akan mencetak? 1647 01:15:25,769 --> 01:15:27,060 Apa yang akan elemen yang ketiga menjadi? 1648 01:15:27,060 --> 01:15:31,470 1649 01:15:31,470 --> 01:15:32,450 >> PENONTON: "JS". 1650 01:15:32,450 --> 01:15:33,940 >> DAVIN: Betul, ia akan menjadi "JS." 1651 01:15:33,940 --> 01:15:35,760 Tunggu, kembali. 1652 01:15:35,760 --> 01:15:37,100 Apakah yang panjang? 1653 01:15:37,100 --> 01:15:38,117 >> PENONTON: Tiga. 1654 01:15:38,117 --> 01:15:38,950 DAVIN: Tiga, bukan? 1655 01:15:38,950 --> 01:15:40,210 Apa yang anda berfikir. 1656 01:15:40,210 --> 01:15:42,072 OK, sekarang pergi. 1657 01:15:42,072 --> 01:15:43,530 Tatasusunan, anda boleh menambah sesuatu kepada mereka. 1658 01:15:43,530 --> 01:15:45,395 Jadi, anda boleh pergi di luar 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 dari segi perkara 1661 01:15:49,760 --> 01:15:50,570 seperti itu. 1662 01:15:50,570 --> 01:15:54,260 Objek, sama seperti structs dalam C, sangat banyak 1663 01:15:54,260 --> 01:15:56,590 seperti array bersekutu dalam PHP. 1664 01:15:56,590 --> 01:15:58,720 Anda semua telah mempunyai pengalaman dengan ini. 1665 01:15:58,720 --> 01:16:01,880 Jadi JSON, apabila anda lulus JSON depan dan ke belakang di p-set lapan, 1666 01:16:01,880 --> 01:16:03,260 itulah objek anda. 1667 01:16:03,260 --> 01:16:06,290 >> Jadi yeah, contoh, contoh cepat. 1668 01:16:06,290 --> 01:16:07,880 Di sini adalah objek. 1669 01:16:07,880 --> 01:16:12,700 Cara anda rujukan ini objek, jadi sebenar cepat, 1670 01:16:12,700 --> 01:16:18,630 katakan saya mahu mencari keluar, OK, apakah kursus? 1671 01:16:18,630 --> 01:16:20,681 Dan supaya nama objek di sini adalah CS50. 1672 01:16:20,681 --> 01:16:23,180 Dan kemudian jika saya mempunyai sebuah bersekutu pelbagai, bagaimana saya akan berbuat demikian? 1673 01:16:23,180 --> 01:16:24,580 Saya akan menggunakan kekunci, bukan? 1674 01:16:24,580 --> 01:16:26,030 Jadi saya mempunyai nama array. 1675 01:16:26,030 --> 01:16:30,160 Saya mempunyai pendakap, sebut harga, utama, sebut harga akhir, kurungan akhir, 1676 01:16:30,160 --> 01:16:33,610 dan yang akan rujukan yang elemen dalam array bersekutu saya. 1677 01:16:33,610 --> 01:16:37,646 Bagaimana saya dirujuk kursus dalam objek saya? 1678 01:16:37,646 --> 01:16:39,170 Musuh? 1679 01:16:39,170 --> 01:16:40,622 >> PENONTON: [didengar]. 1680 01:16:40,622 --> 01:16:41,784 >> DAVIN: Ada apa? 1681 01:16:41,784 --> 01:16:42,700 PENONTON: CS50.course. 1682 01:16:42,700 --> 01:16:43,510 DAVIN: Betul, yeah. 1683 01:16:43,510 --> 01:16:45,320 Jadi CS50.course. 1684 01:16:45,320 --> 01:16:48,770 Jadi cara yang anda merujuk perkara dalam objek JSON adalah dengan titik. 1685 01:16:48,770 --> 01:16:53,114 >> PENONTON: Anda juga boleh menggunakan pelbagai sintaks. 1686 01:16:53,114 --> 01:16:54,050 >> DAVIN: OK, denda. 1687 01:16:54,050 --> 01:16:57,544 >> Gabe: Anda juga boleh menggunakan CS50 kurungan, string, seperti tanda petikan. 1688 01:16:57,544 --> 01:16:59,210 PENONTON: Saya fikir ia adalah sama dengan PHP. 1689 01:16:59,210 --> 01:17:00,293 Gabe: Ia adalah perkara yang sama. 1690 01:17:00,293 --> 01:17:02,487 DAVIN: Fine! 1691 01:17:02,487 --> 01:17:03,945 Tetapi anda akan melihat ini tempat-tempat lain. 1692 01:17:03,945 --> 01:17:08,990 1693 01:17:08,990 --> 01:17:10,480 Yeah, jadi menyimpan berterusan. 1694 01:17:10,480 --> 01:17:13,330 Ini adalah apa yang saya hanya berkata. 1695 01:17:13,330 --> 01:17:17,840 Jadi menjadi contoh JavaScript jQuery. 1696 01:17:17,840 --> 01:17:19,440 Jadi ini adalah DOM saya, bukan? 1697 01:17:19,440 --> 01:17:22,290 1698 01:17:22,290 --> 01:17:25,410 Real cepat, jadi saya mempunyai kepala, hello dunia, badan. 1699 01:17:25,410 --> 01:17:26,160 Saya mempunyai butang. 1700 01:17:26,160 --> 01:17:27,870 Ia berkata "menolak saya," jadi saya mahu menolak ia. 1701 01:17:27,870 --> 01:17:29,745 Dan saya mahu melakukan sesuatu apabila ia diklik. 1702 01:17:29,745 --> 01:17:31,220 Betul, akan datang. 1703 01:17:31,220 --> 01:17:34,630 >> Betul, jadi ini adalah JavaScript saya. 1704 01:17:34,630 --> 01:17:37,790 Jadi jQuery hanya yang lebih mudah cara untuk menulis JavaScript. 1705 01:17:37,790 --> 01:17:40,920 Jadi ini, dan apa yang saya akan menunjukkan anda akan datang, akan menjadi jQuery, 1706 01:17:40,920 --> 01:17:41,930 adalah sama. 1707 01:17:41,930 --> 01:17:43,990 Jadi mereka akan melakukan perkara yang sama. 1708 01:17:43,990 --> 01:17:45,974 Hanya jQuery cenderung untuk menjadi sedikit lebih mudah. 1709 01:17:45,974 --> 01:17:47,140 Orang cenderung untuk suka lebih. 1710 01:17:47,140 --> 01:17:48,390 Ia mempunyai banyak fungsi. 1711 01:17:48,390 --> 01:17:49,830 Jadi orang cenderung untuk menggunakan jQuery. 1712 01:17:49,830 --> 01:17:53,270 Anda semua digunakan jQuery dalam lepas p-set. 1713 01:17:53,270 --> 01:17:54,270 Jadi apa yang akan dilakukan? 1714 01:17:54,270 --> 01:17:56,580 Apa yang akan JavaScript-- ini supaya ini adalah sekadar JavaScript. 1715 01:17:56,580 --> 01:17:57,430 Apa yang akan dilakukan? 1716 01:17:57,430 --> 01:18:00,600 1717 01:18:00,600 --> 01:18:03,450 Apa yang akan berlaku? 1718 01:18:03,450 --> 01:18:04,890 >> Jadi pertama, anda melihat onload tetingkap. 1719 01:18:04,890 --> 01:18:05,390 Betul? 1720 01:18:05,390 --> 01:18:06,640 Oleh itu, kita tidak melihat bahawa sebelum. 1721 01:18:06,640 --> 01:18:09,380 Jadi ini akan menunggu sehingga beban tetingkap keseluruhan. 1722 01:18:09,380 --> 01:18:12,770 Jadi ia akan menunggu sehingga beban HTML, semua imej 1723 01:18:12,770 --> 01:18:13,770 sebelum ia apa-apa. 1724 01:18:13,770 --> 01:18:16,050 Jadi katakan DOM kami telah dimuatkan. 1725 01:18:16,050 --> 01:18:17,270 Semua yang ada di sana. 1726 01:18:17,270 --> 01:18:19,080 Kemudian apa yang akan berlaku? 1727 01:18:19,080 --> 01:18:19,922 Yeah? 1728 01:18:19,922 --> 01:18:22,880 >> PENONTON: Button muncul. 1729 01:18:22,880 --> 01:18:25,201 >> DAVIN: butang ini sudah ada. 1730 01:18:25,201 --> 01:18:26,700 Yeah, jadi butang ini sudah ada. 1731 01:18:26,700 --> 01:18:31,190 Tetapi ini akan mengatakan, OK, jika saya klik butang, 1732 01:18:31,190 --> 01:18:33,650 jadi butang sudah di sana, seperti yang 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 hak di sini adalah akan menjadi butang yang sudah. 1735 01:18:39,470 --> 01:18:40,810 Sudah terdapat butang. 1736 01:18:40,810 --> 01:18:44,120 Tetapi kemudian, yang JavaScript tag, di sini, 1737 01:18:44,120 --> 01:18:46,160 ia berkata, OK, saya ingin untuk mendapatkan unsur oleh ID, 1738 01:18:46,160 --> 01:18:50,300 jadi butang carian hanya berkata, OK, saya ingin peta pembolehubah ini pada butang itu. 1739 01:18:50,300 --> 01:18:53,120 Boleh berubah sehingga hanya satu cara yang lebih mudah untuk mengakses butang itu. 1740 01:18:53,120 --> 01:18:57,300 Aku berkata, OK, jika saya klik yang butang, jadi jika saya klik elemen itu, 1741 01:18:57,300 --> 01:18:59,560 dan elemen ini merujuk kepada butang, jika saya klik ia, 1742 01:18:59,560 --> 01:19:00,875 maka saya mahu memanggil fungsi. 1743 01:19:00,875 --> 01:19:03,500 Berikut adalah salah satu daripada orang-orang tanpa nama fungsi kita bercakap tentang. 1744 01:19:03,500 --> 01:19:04,840 >> Hanya hubungi beberapa fungsi. 1745 01:19:04,840 --> 01:19:08,840 Di dalam majlis itu, pada dasarnya sesuatu yang kita telah melihat banyak, amaran. 1746 01:19:08,840 --> 01:19:10,477 Anda klik butang carian. 1747 01:19:10,477 --> 01:19:12,060 Ia akan pada dasarnya mempunyai butang. 1748 01:19:12,060 --> 01:19:13,040 Anda klik. 1749 01:19:13,040 --> 01:19:14,040 Anda mendapatkan amaran itu. 1750 01:19:14,040 --> 01:19:14,850 X keluar. 1751 01:19:14,850 --> 01:19:15,754 Itu sahaja. 1752 01:19:15,754 --> 01:19:16,254 Yeah? 1753 01:19:16,254 --> 01:19:21,980 >> PENONTON: jika anda meletakkan skrip Jadi [Didengar], skrip tag dalam HTML anda? 1754 01:19:21,980 --> 01:19:24,300 >> DAVIN: Anda boleh meletakkan skrip tag lurus di kepala 1755 01:19:24,300 --> 01:19:30,667 kerana anda mempunyai onload ini. 1756 01:19:30,667 --> 01:19:32,000 Ia juga bahawa anda mempunyai satu klik. 1757 01:19:32,000 --> 01:19:34,166 Jadi ia akan menunggu sehingga anda klik untuk sesuatu. 1758 01:19:34,166 --> 01:19:37,470 Tetapi onload adalah untuk tujuan keselamatan, untuk membuat beban semua pasti ke dalam HTML anda 1759 01:19:37,470 --> 01:19:38,170 terlebih dahulu. 1760 01:19:38,170 --> 01:19:39,247 Yeah? 1761 01:19:39,247 --> 01:19:40,330 Anda ingin berkata sesuatu? 1762 01:19:40,330 --> 01:19:41,080 >> Gabe: [didengar]. 1763 01:19:41,080 --> 01:19:42,485 DAVIN: Yeah. 1764 01:19:42,485 --> 01:19:45,426 >> PENONTON: Elakkan daripada Jadi onload mentakrifkan butang carian pembolehubah 1765 01:19:45,426 --> 01:19:49,930 dengan hanya mengatakan document.getElementByID carian butang dot [didengar]. 1766 01:19:49,930 --> 01:19:52,320 >> DAVIN: Yang pasti, tetapi kemudian rentetan anda hanya mendapat besar. 1767 01:19:52,320 --> 01:19:55,553 Tepat, jadi ini adalah hanya untuk membuat lebih mudah bagi anda, yeah. 1768 01:19:55,553 --> 01:19:56,053 Ya? 1769 01:19:56,053 --> 01:19:57,886 >> PENONTON: Di mana yang kami lakukan mewujudkan 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 mengambil berat tentang. 1774 01:20:03,710 --> 01:20:06,970 >> DAVIN: OK, jadi saya akan untuk memberitahu anda juga. 1775 01:20:06,970 --> 01:20:11,005 Jadi, pada asasnya, hanya secara umum, jadi window.onload menunggu sehingga DOM anda, semua 1776 01:20:11,005 --> 01:20:12,180 HTML anda, beban. 1777 01:20:12,180 --> 01:20:13,513 Ia menunggu sehingga beban imej anda. 1778 01:20:13,513 --> 01:20:14,930 Ia menunggu sehingga beban segala-galanya. 1779 01:20:14,930 --> 01:20:18,410 document.ready, ia hanya menunggu sehingga beban DOM anda. 1780 01:20:18,410 --> 01:20:22,190 Setelah HTML adalah semua di sana, sekali DOM anda di sana, mula berjalan. 1781 01:20:22,190 --> 01:20:23,400 Itulah satu-satunya perbezaan. 1782 01:20:23,400 --> 01:20:24,700 >> Gabe: kewarasan Cepat daftar di sini. 1783 01:20:24,700 --> 01:20:29,060 Jadi ini dapat dilihat jenis seperti garis kod, bukan? 1784 01:20:29,060 --> 01:20:33,600 Oleh kerana itu window.onload sama dengan sekumpulan barangan. 1785 01:20:33,600 --> 01:20:39,030 Apabila JavaScript membaca ini, benar atau palsu, majlis itu mendapat dilaksanakan. 1786 01:20:39,030 --> 01:20:40,020 Palsu. 1787 01:20:40,020 --> 01:20:40,920 OK? 1788 01:20:40,920 --> 01:20:44,470 Apa yang berlaku di sini, anda hanya lulus fungsi ini sebagai fungsi tanpa nama 1789 01:20:44,470 --> 01:20:45,300 untuk window.onload. 1790 01:20:45,300 --> 01:20:48,480 Dan kemudian apabila ia sedang pergi untuk benar-benar dilaksanakan? 1791 01:20:48,480 --> 01:20:49,600 Apabila beban tetingkap. 1792 01:20:49,600 --> 01:20:50,420 Itulah peristiwa. 1793 01:20:50,420 --> 01:20:52,460 Jadi itulah jus t perkara kami bercakap tentang awal, bukan? 1794 01:20:52,460 --> 01:20:54,580 Oleh itu, apabila acara itu berlaku, fungsi yang berlaku. 1795 01:20:54,580 --> 01:20:55,746 Perkara yang sama dengan onclick itu. 1796 01:20:55,746 --> 01:20:59,510 1797 01:20:59,510 --> 01:21:03,130 >> DAVIN: OK, jadi seseorang mengambil jauh document.ready itu. 1798 01:21:03,130 --> 01:21:04,698 Tetapi ini akan menjadi same-- yang tepat 1799 01:21:04,698 --> 01:21:06,864 PENONTON: Tanda dolar, yang document.ready a. 1800 01:21:06,864 --> 01:21:07,710 Itulah jalan pintas. 1801 01:21:07,710 --> 01:21:08,501 >> DAVIN: Oh, iaitu? 1802 01:21:08,501 --> 01:21:10,880 1803 01:21:10,880 --> 01:21:15,500 OK, jadi cara ini document.ready, jalan pintas. 1804 01:21:15,500 --> 01:21:19,660 Tetapi ini adalah sama seperti window.onload kecuali untuk perbezaan yang sedikit 1805 01:21:19,660 --> 01:21:20,680 Saya memberitahu anda 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 tepat thing-- ini adalah JavaScript. 1808 01:21:25,190 --> 01:21:29,500 Ini just-- beberapa orang berfikir ia sebagai berat badan yang lebih ringan, versi anggun 1809 01:21:29,500 --> 01:21:32,370 yang mempunyai banyak fungsi bahawa anda mungkin menggunakan. 1810 01:21:32,370 --> 01:21:34,500 Jadi ini melakukan perkara yang sama. 1811 01:21:34,500 --> 01:21:37,110 >> Jadi perkara yang sejenis menunjukkan. 1812 01:21:37,110 --> 01:21:40,364 Jadi dalam contoh yang lain, kita mempunyai document.getElementByID, 1813 01:21:40,364 --> 01:21:42,280 jadi kami ini panjang rentetan perkara yang berlaku untuk mendapatkan 1814 01:21:42,280 --> 01:21:44,290 unsur dengan apa jua ID ia mempunyai. 1815 01:21:44,290 --> 01:21:46,470 Itu digantikan dengan panggilan ini di sini. 1816 01:21:46,470 --> 01:21:50,860 Jadi anda lihat tanda dolar, kemudian anda lihat petikan, hashtag. 1817 01:21:50,860 --> 01:21:52,370 Hashtag sentiasa pemilih yang. 1818 01:21:52,370 --> 01:21:54,730 Ia berkata, OK, ini ada kaitan dengan ID. 1819 01:21:54,730 --> 01:21:56,120 Apa pemilih untuk kelas? 1820 01:21:56,120 --> 01:21:57,190 >> PENONTON: Dot. 1821 01:21:57,190 --> 01:21:57,960 >> DAVIN: Dot, betul. 1822 01:21:57,960 --> 01:22:01,950 Jika anda hanya mahu pilih tag, apakah ia? 1823 01:22:01,950 --> 01:22:03,310 Ia hanya tag, betul-betul. 1824 01:22:03,310 --> 01:22:05,560 Dan anda boleh menggunakan bahawa di sini, juga. 1825 01:22:05,560 --> 01:22:08,560 >> Gabe: Dan mengikut label, kita maksudkan seperti div, sebagai contoh, atau kepala. 1826 01:22:08,560 --> 01:22:11,500 >> DAVIN: Atau badan atau p atau apa-apa seperti itu, yeah. 1827 01:22:11,500 --> 01:22:14,390 Jadi di sini, OK, daripada berkata document.getElementByID, 1828 01:22:14,390 --> 01:22:16,500 ini adalah hanya perkara yang sama. 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 ia lebih mudah. 1831 01:22:19,860 --> 01:22:23,420 Sebab itu, tidak lebih onclick, hanya 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 yang sama. 1834 01:22:27,580 --> 01:22:29,452 Jadi ia sedikit lebih kecil, atau sedikit 1835 01:22:29,452 --> 01:22:32,410 lebih pendek, sedikit orang bit-- berfikir ia sedikit lebih mudah untuk menulis, 1836 01:22:32,410 --> 01:22:34,600 sedikit lebih mudah untuk difahami. 1837 01:22:34,600 --> 01:22:35,640 Tetapi ini adalah jQuery. 1838 01:22:35,640 --> 01:22:37,887 Banyak orang mendapatkan sedikit agak keliru dan bimbang 1839 01:22:37,887 --> 01:22:40,220 dan mereka fikir, OK, jQuery adalah berbeza daripada JavaScript. 1840 01:22:40,220 --> 01:22:42,136 Saya perlu ingat ini dua perkara yang berbeza. 1841 01:22:42,136 --> 01:22:42,740 Ia bukan. 1842 01:22:42,740 --> 01:22:45,315 Maksud saya, ia sintaks yang berbeza. 1843 01:22:45,315 --> 01:22:46,970 Tetapi jQuery adalah JavaScript. 1844 01:22:46,970 --> 01:22:50,050 Ia hanya seolah-olah versi yang lebih baik yang 1845 01:22:50,050 --> 01:22:51,967 mungkin lebih mudah untuk memahami bahawa orang menggunakan. 1846 01:22:51,967 --> 01:22:53,716 Gabe: Ya, untuk menjadi jujur, bahawa tanda dolar 1847 01:22:53,716 --> 01:22:57,240 yang anda lihat dalam jQuery, itu sahaja nama daripada satu fungsi yang jQuery mentakrifkan. 1848 01:22:57,240 --> 01:22:58,614 Ia tidak mempunyai apa-apa yang istimewa. 1849 01:22:58,614 --> 01:23:03,140 Adakah Ia hanya nama suatu fungsi, seperti anda boleh menentukan tanda dolar. 1850 01:23:03,140 --> 01:23:05,670 >> DAVIN: Yeah, jadi bercakap tentang ini. 1851 01:23:05,670 --> 01:23:06,680 Beberapa perkara yang berguna. 1852 01:23:06,680 --> 01:23:10,414 Saya cari kembali pada kuiz lama. 1853 01:23:10,414 --> 01:23:13,080 Dalam beberapa kuiz yang lalu, mereka telah terpaksa menggunakan perkara-perkara seperti ini. 1854 01:23:13,080 --> 01:23:15,230 Jadi document.ready, jadi memastikan segala-galanya 1855 01:23:15,230 --> 01:23:17,410 dimuatkan sebelum anda mula melakukan sesuatu. 1856 01:23:17,410 --> 01:23:20,120 Pilih ID, atau pilih kelas, ia akan hanya 1857 01:23:20,120 --> 01:23:24,020 menjadi quote dot beberapa kelas, quote akhir. 1858 01:23:24,020 --> 01:23:26,580 Hantar, jadi jika anda meminta penghantaran borang dan panggilan 1859 01:23:26,580 --> 01:23:28,830 fungsi ini selepas mengemukakan borang. 1860 01:23:28,830 --> 01:23:34,210 Nilai, jadi mari kita mengatakan saya mempunyai bentuk yang penyerahan, seperti nama pengguna, e-mel, 1861 01:23:34,210 --> 01:23:34,950 apa sahaja. 1862 01:23:34,950 --> 01:23:36,010 Saya mempunyai kotak teks. 1863 01:23:36,010 --> 01:23:37,670 Jadi, saya menaip ke dalam kotak teks. 1864 01:23:37,670 --> 01:23:42,170 Nah, jika anda ingin mendapatkan nilai daripada kotak teks, anda menggunakan Val titik. 1865 01:23:42,170 --> 01:23:44,050 Dan kemudian, turun di sini, dot HTML adalah sama 1866 01:23:44,050 --> 01:23:47,710 adalah seperti dokumen dot getElementByID dot innerHTML. 1867 01:23:47,710 --> 01:23:50,890 Jadi perkara yang berlaku untuk kembali anda HTML daripada ID itu. 1868 01:23:50,890 --> 01:23:55,080 Di sini, anda hanya menggunakan beberapa ID atau apa sahaja dot HTML. 1869 01:23:55,080 --> 01:23:56,930 Yang akan mendapat HTML daripada elemen itu. 1870 01:23:56,930 --> 01:24:00,130 Jika anda mahu kemudian mengubahnya HTML, anda boleh lulus ia sesuatu. 1871 01:24:00,130 --> 01:24:05,600 Jadi, anda akan menjadi seperti HTML dot, dan kemudian dalam, sebut harga, 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 Saya benar-benar suka untuk memahami AJAX benar-benar baik. 1874 01:24:10,347 --> 01:24:12,430 Jadi saya mahu anda semua untuk AJAX memahami benar-benar baik. 1875 01:24:12,430 --> 01:24:14,221 Kerana jika anda lakukan, anda cukup banyak akan 1876 01:24:14,221 --> 01:24:16,810 untuk memahami segala sesuatu yang mempunyai kaitan dengan HTTP, PHP, 1877 01:24:16,810 --> 01:24:21,080 JavaScript kerana semua datang bersama-sama dalam AJAX. 1878 01:24:21,080 --> 01:24:25,130 AJAX bukan bahasa. 1879 01:24:25,130 --> 01:24:27,000 AJAX adalah teknik yang. 1880 01:24:27,000 --> 01:24:31,690 Dan ia menggunakan banyak alat yang berbeza. 1881 01:24:31,690 --> 01:24:35,090 AJAX bermaksud tak segerak JavaScript XML. 1882 01:24:35,090 --> 01:24:36,730 Jadi kaedah, bahasa, data. 1883 01:24:36,730 --> 01:24:40,610 >> Jadi bahasa utama yang kita gunakan dalam AJAX untuk mencetuskan segala-galanya 1884 01:24:40,610 --> 01:24:42,830 dan untuk mengendalikan segala-galanya kemudian adalah JavaScript. 1885 01:24:42,830 --> 01:24:45,160 Itulah sebabnya ia berkaitan sangat dekat dengan JavaScript. 1886 01:24:45,160 --> 01:24:49,810 Dan kemudian tak segerak adalah kerana kita tidak melakukannya 1887 01:24:49,810 --> 01:24:51,980 sekaligus apabila kami memuatkan halaman. 1888 01:24:51,980 --> 01:24:57,190 Ini adalah perkara yang kita boleh melakukan perkara-perkara semacam selari. 1889 01:24:57,190 --> 01:24:59,725 Idea utama di sebalik AJAX adalah yang anda mahu 1890 01:24:59,725 --> 01:25:02,170 ia untuk mendapatkan beberapa maklumat khusus. 1891 01:25:02,170 --> 01:25:06,450 Sebagai contoh, apabila anda menaip baru Nama pengguna apabila anda mendaftar nama pengguna, 1892 01:25:06,450 --> 01:25:08,520 Nama pengguna saya adalah abc123. 1893 01:25:08,520 --> 01:25:11,671 Dan kemudian, di akhir bentuk, anda perlu klik Hantar. 1894 01:25:11,671 --> 01:25:14,420 Dan ia terpaksa pergi ke pelayan, dan kemudian memeriksa jika dalam pangkalan data, 1895 01:25:14,420 --> 01:25:15,594 abc123 sudah ada. 1896 01:25:15,594 --> 01:25:18,510 Dan jika ia sudah ada, ia berkata, Nama pengguna sudah dalam pangkalan data. 1897 01:25:18,510 --> 01:25:21,010 Dan mereka, anda perlu mengisi daripada keseluruhan bentuk lagi. 1898 01:25:21,010 --> 01:25:23,110 Dan ia adalah benar-benar, benar-benar buruk. 1899 01:25:23,110 --> 01:25:25,440 >> Dan kemudian orang berkata, OK, mengapa tidak kita hanya 1900 01:25:25,440 --> 01:25:29,560 melakukan permintaan HTTP kecil untuk hanya memeriksa untuk melihat jika pengguna ini adalah dalam pangkalan data 1901 01:25:29,560 --> 01:25:32,080 sebelum pengguna terpaksa mengemukakan keseluruhan borang ini? 1902 01:25:32,080 --> 01:25:36,350 Jadi, sebagai contoh, apabila pengguna kemasan menaip abc123, 1903 01:25:36,350 --> 01:25:39,660 mari kita pergi ke pelayan sedikit sedikit dan hanya mendapatkan yang benar atau palsu 1904 01:25:39,660 --> 01:25:43,080 dari pelayan untuk melihat jika itulah nama pengguna yang sah atau tidak. 1905 01:25:43,080 --> 01:25:49,250 OK, jadi itulah salah satu utama menggunakan AJAX daripada masa kini masih. 1906 01:25:49,250 --> 01:25:52,130 >> DAVIN: Jadi sebenar cepat, dalam panggilan Ajax dalam jQuery, 1907 01:25:52,130 --> 01:25:54,770 anda boleh menandakan bahawa anda mahu ia menjadi segerak. 1908 01:25:54,770 --> 01:25:56,330 Anda tidak perlu melakukan ini. 1909 01:25:56,330 --> 01:25:57,640 Tetapi, anda boleh berbuat demikian. 1910 01:25:57,640 --> 01:25:59,277 Dan jika anda melakukannya, apa yang akan berlaku? 1911 01:25:59,277 --> 01:26:01,610 Well, sebagai contoh, apabila anda mendapatkan berita atau apa sahaja, 1912 01:26:01,610 --> 01:26:05,464 penyemak imbas anda hanya akan menunggu sehingga bahawa seluruh panggilan selesai 1913 01:26:05,464 --> 01:26:08,130 bukannya membiarkan anda melakukan lain perkara yang betul selepas anda klik. 1914 01:26:08,130 --> 01:26:14,560 1915 01:26:14,560 --> 01:26:17,115 >> Gabe: Ia tidak lulus lagi. 1916 01:26:17,115 --> 01:26:19,681 Oh my god. 1917 01:26:19,681 --> 01:26:20,180 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 "Pada masa lalu, yang pelanggan yang diperlukan untuk permintaan 1921 01:26:25,350 --> 01:26:26,840 kandungan keseluruhan laman web. " 1922 01:26:26,840 --> 01:26:28,210 Itulah apa yang saya katakan. 1923 01:26:28,210 --> 01:26:30,070 Ia membolehkan kita menghantar GET tambahan atau POST 1924 01:26:30,070 --> 01:26:32,140 permintaan tanpa untuk memuat semula pelayar kami. 1925 01:26:32,140 --> 01:26:34,806 Jadi pada akhir hari, kami sebenarnya yang membuat permintaan HTTP 1926 01:26:34,806 --> 01:26:35,740 di sini menggunakan JavaScript. 1927 01:26:35,740 --> 01:26:39,700 Kerana sebelum ini, kami hanya digunakan JavaScript untuk menukar HTML yang sudah datang. 1928 01:26:39,700 --> 01:26:43,110 Dan sekarang, kita boleh menggunakannya untuk berhubung dengan pelayan web juga. 1929 01:26:43,110 --> 01:26:46,140 Cara ini berlaku adalah kita mempunyai pelanggan. 1930 01:26:46,140 --> 01:26:47,340 Davin adalah pelanggan. 1931 01:26:47,340 --> 01:26:50,797 Dan dia mempunyai semua JavaScript berjalan kerana HTML adalah dalam keadaan sihat. 1932 01:26:50,797 --> 01:26:51,630 JavaScript adalah bijak. 1933 01:26:51,630 --> 01:26:54,690 Jadi davin Davin mempunyai pintar sebahagian dan sebahagian bisu beliau. 1934 01:26:54,690 --> 01:26:57,590 Dia akan menggunakan sebahagian pintar kini. 1935 01:26:57,590 --> 01:27:00,860 Dia akan menggunakan JavaScript kepada permintaan, sebagai contoh, 1936 01:27:00,860 --> 01:27:04,340 sama ada abc123 adalah dalam pangkalan data atau tidak. 1937 01:27:04,340 --> 01:27:08,450 >> Jadi Davin, sila, anda hanya hantarkan permintaan HTTP. 1938 01:27:08,450 --> 01:27:09,197 Terima kasih. 1939 01:27:09,197 --> 01:27:10,530 Jadi dia hanya menghantar permintaan HTTP. 1940 01:27:10,530 --> 01:27:11,270 Anda melihat bahawa? 1941 01:27:11,270 --> 01:27:14,700 Dan itu hanya cara yang sama bahawa apa-apa permintaan HTTP dihantar. 1942 01:27:14,700 --> 01:27:16,830 Pelayar, Google Chrome atau sesuatu, adalah 1943 01:27:16,830 --> 01:27:19,570 akan melihat bahawa ini Davin cuba untuk menghantar 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 sepanjang jalan ke pelayan. 1946 01:27:23,950 --> 01:27:27,370 Sekarang, pelayan akan mempunyai PHP di sini, atau apa-apa bahasa lain. 1947 01:27:27,370 --> 01:27:29,990 Sama seperti dalam permintaan HTTP biasa. 1948 01:27:29,990 --> 01:27:31,950 Ia cukup banyak permintaan HTTP biasa. 1949 01:27:31,950 --> 01:27:33,658 >> Dan kemudian, pelayan akan mengatakan, OK, 1950 01:27:33,658 --> 01:27:37,270 Davin mahu saya untuk memeriksa sama ada abc123 ini adalah di dalam pangkalan data. 1951 01:27:37,270 --> 01:27:38,310 Pergi bercakap dengan model. 1952 01:27:38,310 --> 01:27:41,310 Model ini mengatakan tidak. abc123 adalah nama pengguna yang baik. 1953 01:27:41,310 --> 01:27:47,940 Dan kemudian, pelayan web yang akan menggunakan PHP untuk menyebabkan beberapa bentuk fail. 1954 01:27:47,940 --> 01:27:52,280 Ia boleh menjadi benar-benar hanya fail yang mengandungi "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 Ia boleh menjadi apa-apa fail. 1957 01:27:54,190 --> 01:27:57,080 >> Ia boleh menjadi seperti saya akan menghantar Davin gambar itik 1958 01:27:57,080 --> 01:28:01,200 jika ia dalam pangkalan data dan menghantar gambar hamster yang 1959 01:28:01,200 --> 01:28:02,420 jika ia bukan dalam pangkalan data. 1960 01:28:02,420 --> 01:28:04,294 Itu akan menjadi jenis bisu, tetapi ia akan bekerja. 1961 01:28:04,294 --> 01:28:07,030 OK, jadi saya menghantar itik untuk Davin. 1962 01:28:07,030 --> 01:28:08,150 Davin mendapat itik. 1963 01:28:08,150 --> 01:28:13,330 Dan sekarang, siapa yang akan untuk mengendalikan itik? 1964 01:28:13,330 --> 01:28:16,390 Sebahagian pintar Davin sekali lagi, jadi JavaScript, bukan? 1965 01:28:16,390 --> 01:28:18,620 JavaScript menghantar permintaan, dan JavaScript 1966 01:28:18,620 --> 01:28:22,300 akan menerima permintaan itu dan mentafsirkannya dalam bentuk tertentu. 1967 01:28:22,300 --> 01:28:26,630 >> Dan dalam hal ini, ia akan berkata, OK, jika itik maka saya baik. 1968 01:28:26,630 --> 01:28:30,770 Jika hamster, maka saya akan untuk mengatakan, tidak, nama pengguna sudah 1969 01:28:30,770 --> 01:28:31,970 wujud dalam pangkalan data. 1970 01:28:31,970 --> 01:28:33,845 Tetapi biasanya, anda tidak akan menghantar itik. 1971 01:28:33,845 --> 01:28:36,740 Anda akan menghantar sesuatu yang lebih bijak sedikit. 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, kami menggunakan JSON. 1974 01:28:42,690 --> 01:28:45,629 JSON hanya JavaScript Objek Notasi, yang 1975 01:28:45,629 --> 01:28:47,670 pada dasarnya anda mendapat keseluruhan JavaScript objek. 1976 01:28:47,670 --> 01:28:50,820 Dan memasukkannya ke dalam fail, hanya suka bahawa objek CS50 yang anda semua nampak. 1977 01:28:50,820 --> 01:28:53,090 Memasukkannya ke dalam fail, dan anda hantar kepada Davin. 1978 01:28:53,090 --> 01:28:55,850 >> Jadi dalam kes ini, saya akan membuat objek JavaScript 1979 01:28:55,850 --> 01:28:59,570 dan hanya berkata, pengguna wujud, ya. 1980 01:28:59,570 --> 01:29:01,630 Atau manual wujud, tidak. 1981 01:29:01,630 --> 01:29:02,810 Dan menghantar kembali kepadanya. 1982 01:29:02,810 --> 01:29:03,830 Dan mengapa JSON? 1983 01:29:03,830 --> 01:29:07,330 Kerana orang siapa yang menerima ini adalah 1984 01:29:07,330 --> 01:29:10,030 akan menggunakan JavaScript untuk mengendalikan tindak balas yang. 1985 01:29:10,030 --> 01:29:14,970 Dan JavaScript berfungsi dengan baik kerana ia dipanggil JavaScript Objek notasi. 1986 01:29:14,970 --> 01:29:15,470 Betul? 1987 01:29:15,470 --> 01:29:19,660 Jadi dia hanya boleh memanggil fungsi dan mendapatkan objek ini bagus dari sambutan. 1988 01:29:19,660 --> 01:29:22,890 Dan kemudian, dia akan tahu sama ada pengguna yang ada di pangkalan data atau tidak. 1989 01:29:22,890 --> 01:29:25,230 >> Jadi anda lihat, semua itu datang bersama-sama dalam pelayan web, 1990 01:29:25,230 --> 01:29:28,450 dan kemudian ada satu HTTP permintaan dan satu sambutan HTTP dan segala-galanya. 1991 01:29:28,450 --> 01:29:30,600 Jadi pastikan anda semua memahami panggilan AJAX ini 1992 01:29:30,600 --> 01:29:37,260 kerana ia membantu anda memahami semua konsep kita berbicara tentang. 1993 01:29:37,260 --> 01:29:40,260 >> Jadi di sini adalah contoh daripada AJAX dengan jQuery. 1994 01:29:40,260 --> 01:29:42,130 Dan di sini, kita lakukan dengan get JSON. 1995 01:29:42,130 --> 01:29:45,660 Oleh itu, kita tidak cuba untuk mendapatkan gambar kucing di sini, atau itik. 1996 01:29:45,660 --> 01:29:48,110 Kami cuba untuk mendapatkan fail JSON. 1997 01:29:48,110 --> 01:29:51,184 Dan kemudian kita menunggu sehingga ia dilakukan, dot dilakukan. 1998 01:29:51,184 --> 01:29:52,850 Ini bermakna saya menunggu jawapan. 1999 01:29:52,850 --> 01:29:54,180 Ia mungkin mengambil sedikit masa. 2000 01:29:54,180 --> 01:29:56,360 Kemudian, anda lihat beban sedikit. 2001 01:29:56,360 --> 01:29:59,340 Jika anda ingin berbuat demikian dalam laman web anda. 2002 01:29:59,340 --> 01:30:01,440 Jadi dot dilakukan, dan kemudian apa yang berlaku apabila ia dilakukan? 2003 01:30:01,440 --> 01:30:04,040 Anda lulus tanpa nama fungsi, hanya suka kita lihat sebelum ini. 2004 01:30:04,040 --> 01:30:07,800 Kerana dilakukan adalah acara, hanya seperti mengklik tetikus atau apa sahaja, 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 pembolehubah 2008 01:30:15,790 --> 01:30:22,160 yang boleh anda gunakan di kemudian hari untuk mempunyai status HTTP permintaan, 2009 01:30:22,160 --> 01:30:24,470 data yang ia akan untuk menghantar kembali kepada anda. 2010 01:30:24,470 --> 01:30:28,740 Sebab itu anda kemudian boleh menafsirkannya dan melakukan sesuatu yang bermakna dengan ia. 2011 01:30:28,740 --> 01:30:30,240 Dan jika ia gagal, apabila ia mungkin gagal? 2012 01:30:30,240 --> 01:30:33,780 Nah, apabila permintaan HTTP memberikan anda 500 atau sesuatu seperti itu. 2013 01:30:33,780 --> 01:30:37,420 Kemudian, ia akan memberitahu anda status, jenis kegagalan yang, 2014 01:30:37,420 --> 01:30:38,420 dan segala macam perkara. 2015 01:30:38,420 --> 01:30:40,630 Anda perlu memastikan untuk mengendalikan kedua-dua kes, 2016 01:30:40,630 --> 01:30:42,770 jika tidak program yang pergi gila. 2017 01:30:42,770 --> 01:30:45,820 >> DAVIN: Jadi yeah, ini betul-betul apa yang anda nampak pada lepas p-set anda. 2018 01:30:45,820 --> 01:30:49,720 Panggilan AJAX sebenar adalah dalam get JSON. 2019 01:30:49,720 --> 01:30:50,587 Itulah panggilan. 2020 01:30:50,587 --> 01:30:52,920 Dan kemudian, bintik dilakukan adalah seperti ia memeriksa jika ia berjaya. 2021 01:30:52,920 --> 01:30:55,620 Jika ia berjaya, anda mahu melakukan sesuatu dengan data. 2022 01:30:55,620 --> 01:30:59,290 Anda kembali itu Permintaan data JSON. 2023 01:30:59,290 --> 01:31:00,600 Itulah apa yang anda kembali. 2024 01:31:00,600 --> 01:31:04,470 Jadi, jika anda ingat daripada p-set anda, banyak anda adalah seperti pendakap data i 2025 01:31:04,470 --> 01:31:06,302 atau apa sahaja, pautan dot atau tajuk. 2026 01:31:06,302 --> 01:31:08,260 Apa sahaja yang akan kembali itu JSON, apa sahaja 2027 01:31:08,260 --> 01:31:11,020 ladang-ladang yang dalam bahawa objek JSON, itulah apa yang anda kembali. 2028 01:31:11,020 --> 01:31:12,394 Data adalah apa yang anda kembali. 2029 01:31:12,394 --> 01:31:15,510 Status teks, hanya sesuatu yang membolehkan anda tahu apa yang berlaku. 2030 01:31:15,510 --> 01:31:20,570 Dan kemudian, yang jqXHR, itu hanya yang jQuery permintaan HTTP XML. 2031 01:31:20,570 --> 01:31:21,990 Itu hanya seperti objek. 2032 01:31:21,990 --> 01:31:23,932 Dan kemudian gagal, sama seperti Gabe berkata. 2033 01:31:23,932 --> 01:31:27,140 Gabe: Dalam contoh kecil kami abc123 hanya untuk memeriksa jika itu dalam pangkalan data 2034 01:31:27,140 --> 01:31:32,260 atau tidak, data akan menjadi sesuatu yang anda akan lakukan, jika nama pengguna data dot wujud, 2035 01:31:32,260 --> 01:31:37,720 iaitu apa PHP anda dihasilkan untuk anda, jika nama pengguna data dot wujud, maka 2036 01:31:37,720 --> 01:31:40,880 Saya akan memberi amaran, pengguna nama sudah wujud. 2037 01:31:40,880 --> 01:31:44,300 Yang lain, saya hanya akan membiarkan pengguna meneruskan mengisi borang. 2038 01:31:44,300 --> 01:31:47,860 2039 01:31:47,860 --> 01:31:50,820 OK, keselamatan, sejuk. 2040 01:31:50,820 --> 01:31:52,060 >> DAVIN: Ingin saya? 2041 01:31:52,060 --> 01:31:54,500 >> Gabe: Saya suka yang satu ini. 2042 01:31:54,500 --> 01:31:57,680 Jadi sesuatu yang kelihatan biasa. 2043 01:31:57,680 --> 01:31:59,750 Kami hampir selesai. 2044 01:31:59,750 --> 01:32:02,670 Jadi ini merupakan contoh kamu melihat di dalam kelas. 2045 01:32:02,670 --> 01:32:04,860 Anda telah menggunakan argv1 sini. 2046 01:32:04,860 --> 01:32:06,460 Itulah seperti hujah baris arahan. 2047 01:32:06,460 --> 01:32:09,270 Dan kami Mem penyalinan yang menjadi penampan daripada saiz 12. 2048 01:32:09,270 --> 01:32:12,560 Ada apa di sini? 2049 01:32:12,560 --> 01:32:13,660 Penimbal melimpah! 2050 01:32:13,660 --> 01:32:15,400 Kerana kita mempunyai penimbal saiz 12. 2051 01:32:15,400 --> 01:32:18,400 argv1 mungkin mempunyai saiz dua bilion. 2052 01:32:18,400 --> 01:32:19,960 Kami tidak melakukan apa-apa pemeriksaan sempadan. 2053 01:32:19,960 --> 01:32:24,970 Oleh itu, kita mungkin menyalin banyak memori. 2054 01:32:24,970 --> 01:32:28,630 Dan kami akan menjadi terutamanya buruk tentang ini. 2055 01:32:28,630 --> 01:32:32,600 Apa yang kita boleh lakukan itu sangat, sangat bermakna dalam kes ini? 2056 01:32:32,600 --> 01:32:33,278 Ya? 2057 01:32:33,278 --> 01:32:36,528 PENONTON: Sebahagian daripada dua bilion perkara mengandungi kod boleh laku yang mengembalikan 2058 01:32:36,528 --> 01:32:38,127 [Didengar]. 2059 01:32:38,127 --> 01:32:38,710 Gabe: Tepat. 2060 01:32:38,710 --> 01:32:41,110 Jadi itulah jenis perkara yang digunakan orang 2061 01:32:41,110 --> 01:32:43,344 untuk jailbreak iPhone, contohnya. 2062 01:32:43,344 --> 01:32:44,260 Jadi begitulah keadaannya. 2063 01:32:44,260 --> 01:32:48,610 Kerana anda hanya boleh membuat peranti melaksanakan apa-apa kod yang anda suka. 2064 01:32:48,610 --> 01:32:50,247 Menetapkan, jadi tetap yang mudah. 2065 01:32:50,247 --> 01:32:51,330 Hanya menyemak untuk batas. 2066 01:32:51,330 --> 01:32:53,455 Anda memeriksa batal kerana kita selalu memeriksa batal 2067 01:32:53,455 --> 01:32:54,940 apabila kita sedang berhadapan dengan tali. 2068 01:32:54,940 --> 01:32:57,840 Dan kemudian, anda mengambil panjang tali sebelum. 2069 01:32:57,840 --> 01:33:00,150 Dan jika tali panjang adalah rentetan yang sah 2070 01:33:00,150 --> 01:33:03,700 panjang, iaitu dalam lingkungan 0 dan 12, maka kami baik. 2071 01:33:03,700 --> 01:33:07,144 >> DAVIN: Jika anda tidak menyemak batal, cepat sebenar, apa yang akan berlaku? 2072 01:33:07,144 --> 01:33:07,810 Ia akan seg bersalah. 2073 01:33:07,810 --> 01:33:10,850 Mengapa ia akan seg kesalahan? 2074 01:33:10,850 --> 01:33:12,510 Kerana anda memanggil strlen di null. 2075 01:33:12,510 --> 01:33:13,010 Gabe: Yeah. 2076 01:33:13,010 --> 01:33:16,490 2077 01:33:16,490 --> 01:33:19,630 Benar atau palsu, menggunakan satu kata laluan adalah idea yang baik. 2078 01:33:19,630 --> 01:33:20,430 >> PENONTON: Palsu. 2079 01:33:20,430 --> 01:33:21,150 >> Gabe: Palsu. 2080 01:33:21,150 --> 01:33:23,870 Menggunakan banyak kata laluan, dan besar, yang panjang. 2081 01:33:23,870 --> 01:33:26,050 Ikon mangga memastikan keselamatan. 2082 01:33:26,050 --> 01:33:27,080 >> PENONTON: Palsu. 2083 01:33:27,080 --> 01:33:27,749 >> Gabe: Palsu. 2084 01:33:27,749 --> 01:33:28,790 Ia tidak bermakna apa-apa. 2085 01:33:28,790 --> 01:33:30,480 Ia hanya satu ikon. 2086 01:33:30,480 --> 01:33:32,824 SSL melindungi daripada satu serangan orang tengah. 2087 01:33:32,824 --> 01:33:33,490 PENONTON: Palsu. 2088 01:33:33,490 --> 01:33:34,110 Gabe: Palsu. 2089 01:33:34,110 --> 01:33:35,355 OK, jadi semua mereka 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 [Didengar] 2093 01:33:40,220 --> 01:33:42,500 Mahu bercakap tentang perkara ini? 2094 01:33:42,500 --> 01:33:43,259 Giliran anda. 2095 01:33:43,259 --> 01:33:45,050 DAVIN: Jenis-jenis serangan, lelaki di tengah-tengah. 2096 01:33:45,050 --> 01:33:47,134 Apakah yang dimaksudkan dengan serangan orang tengah? 2097 01:33:47,134 --> 01:33:48,050 PENONTON: [didengar]. 2098 01:33:48,050 --> 01:33:51,437 2099 01:33:51,437 --> 01:33:54,020 DAVIN: Jika anda menghantar HTTP permintaan, mereka boleh melakukan ini, bukan? 2100 01:33:54,020 --> 01:33:57,890 Tetapi jika anda menghantar HTTPS, mereka mungkin tidak akan dapat melakukan ini. 2101 01:33:57,890 --> 01:33:59,952 Ada banyak tempat di sepanjang sambungan anda. 2102 01:33:59,952 --> 01:34:00,660 Anda mempunyai router. 2103 01:34:00,660 --> 01:34:01,746 Anda mempunyai pelayan DNS. 2104 01:34:01,746 --> 01:34:04,120 Jika seseorang itu mampu dari segi fizikal melihat apa yang anda menghantar, 2105 01:34:04,120 --> 01:34:06,140 jadi seseorang mampu benar-benar mendapatkan antara anda, 2106 01:34:06,140 --> 01:34:08,840 pelanggan, dan pelayan, dan adalah dapat melihat apa yang anda menghantar, 2107 01:34:08,840 --> 01:34:10,298 ini adalah seorang lelaki dalam serangan tengah. 2108 01:34:10,298 --> 01:34:14,287 Jadi untuk melihat apa yang anda cuba untuk mendapatkan daripada pelayan, atau dapat see-- lebih teruk, 2109 01:34:14,287 --> 01:34:16,620 anda mungkin dapat melihat cookies atau sesuatu seperti itu. 2110 01:34:16,620 --> 01:34:19,290 >> Sebagai contoh, jika anda tidak menggunakan SSL, beliau 2111 01:34:19,290 --> 01:34:21,900 mungkin dapat melihat ID kuki sesi anda. 2112 01:34:21,900 --> 01:34:25,460 Dan ini dipanggil sesi rampasan kerana dia melihat cookies ID anda, 2113 01:34:25,460 --> 01:34:28,317 dan kemudian dia dapat pergi ke bahawa laman web dan berpura-pura menjadi anda. 2114 01:34:28,317 --> 01:34:31,150 Oleh kerana hanya suka dalam PHP, ingat apabila kita log masuk, apa yang kita lakukan? 2115 01:34:31,150 --> 01:34:33,340 Kami menetapkan ID sesi sama dengan ID. 2116 01:34:33,340 --> 01:34:34,810 Jadi yang mengenal pasti anda. 2117 01:34:34,810 --> 01:34:38,300 Itulah sebabnya anda boleh melihat portfolio anda dan portfolio tidak semua orang lain. 2118 01:34:38,300 --> 01:34:42,320 >> Nah, jika saya mampu untuk mendapatkan cookie yang, maka saya boleh layari laman tersebut. 2119 01:34:42,320 --> 01:34:45,380 Dan kemudian, saya hanya boleh melihat bahan anda dan mula membeli dan menjual barangan. 2120 01:34:45,380 --> 01:34:46,800 Jadi itulah sesi rampasan. 2121 01:34:46,800 --> 01:34:50,810 Tetapi anda tidak perlu bagi- dapat jadi anda boleh menggunakan orang dalam serangan tengah 2122 01:34:50,810 --> 01:34:52,290 walaupun mereka menggunakan SSL. 2123 01:34:52,290 --> 01:34:53,520 Tetapi anda tidak akan dapat. 2124 01:34:53,520 --> 01:34:56,580 Jika mereka menggunakan SSL, anda tidak boleh sesi rampasan. 2125 01:34:56,580 --> 01:34:58,927 Mengapa? 2126 01:34:58,927 --> 01:35:01,135 Oleh kerana itu semua disulitkan, hak? jika ia disulitkan, 2127 01:35:01,135 --> 01:35:03,509 dan saya masih seorang lelaki dalam pertengahan, saya masih mendapat data anda. 2128 01:35:03,509 --> 01:35:04,279 Itu baik. 2129 01:35:04,279 --> 01:35:05,070 Tetapi ia disulitkan. 2130 01:35:05,070 --> 01:35:07,750 Jadi saya tidak boleh benar-benar menggunakannya. 2131 01:35:07,750 --> 01:35:09,840 Jadi itulah dua. 2132 01:35:09,840 --> 01:35:11,544 >> Real cepat, permintaan tapak silang pemalsuan. 2133 01:35:11,544 --> 01:35:13,960 Itu hanya jika ada pautan dan pautan yang melakukan sesuatu 2134 01:35:13,960 --> 01:35:14,890 bahawa anda tidak fikir ia perlu dilakukan. 2135 01:35:14,890 --> 01:35:18,150 Sebagai contoh, jika pautan 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 klik pada pautan, menghantar permintaan, membeli 2138 01:35:22,040 --> 01:35:24,240 atau sesuatu yang dijual anda tidak bermaksud untuk melakukan. 2139 01:35:24,240 --> 01:35:25,120 Itulah yang. 2140 01:35:25,120 --> 01:35:30,720 >> Tapak skrip Cross, jadi di sini, anda lulus dalam melalui q berubah-ubah, 2141 01:35:30,720 --> 01:35:33,510 bukannya lulus dalam beberapa jenis nilai, mungkin q adalah seperti nama. 2142 01:35:33,510 --> 01:35:36,560 Jadi, daripada lulus q setaraf Davin atau sesuatu seperti itu, 2143 01:35:36,560 --> 01:35:38,740 jika anda tidak menggunakan HTML aksara khas, jika anda 2144 01:35:38,740 --> 01:35:43,100 tidak melarikan diri ini untuk memastikan ia OK, maka saya boleh lulus dalam sebaliknya, 2145 01:35:43,100 --> 01:35:46,910 katakan di sini saya cakapkan cetak atau sesuatu seperti itu, 2146 01:35:46,910 --> 01:35:51,070 kemudian saya boleh lulus di sini panggilan skrip. 2147 01:35:51,070 --> 01:35:53,140 >> Sebab itu, bukan hanya mendapat pembolehubah, 2148 01:35:53,140 --> 01:35:54,960 Saya kemudian akan melaksanakan panggilan skrip ini. 2149 01:35:54,960 --> 01:35:57,065 Jadi di dalam skrip yang memanggil, apa yang ia buat? 2150 01:35:57,065 --> 01:36:00,190 Dokumen lokasi dot, perkara yang berlaku untuk ubah lokasi dokumen itu. 2151 01:36:00,190 --> 01:36:02,290 Jadi saya akan mengarahkan ke tempat lain. 2152 01:36:02,290 --> 01:36:08,170 Ia dipanggil lelaki yang buruk dalam contoh ini, sangat baik. 2153 01:36:08,170 --> 01:36:10,536 Tidak dapat memikirkan perkataan. 2154 01:36:10,536 --> 01:36:12,410 Dan kemudian, apa yang lebih lebih buruk adalah bahawa saya akan 2155 01:36:12,410 --> 01:36:16,832 untuk kemudian menetapkan kuki, iaitu beberapa pembolehubah saya di laman web ini. 2156 01:36:16,832 --> 01:36:19,040 Saya akan menetapkan sama kepada cookie dokumen titik. 2157 01:36:19,040 --> 01:36:20,660 Oleh itu, saya akan untuk mencuri cookies anda. 2158 01:36:20,660 --> 01:36:22,951 Dan saya akan mengarahkan beberapa maklumat untuk laman web 2159 01:36:22,951 --> 01:36:25,120 bahawa anda tidak boleh mengakses. 2160 01:36:25,120 --> 01:36:29,250 Dan ini semua berlaku kerana anda tidak melarikan diri apa yang anda lihat. 2161 01:36:29,250 --> 01:36:29,910 Yeah? 2162 01:36:29,910 --> 01:36:32,160 >> PENONTON: Jadi, untuk membuat yang jelas, ia 2163 01:36:32,160 --> 01:36:37,550 vulnerable.com yang adalah terdedah kepada ini. 2164 01:36:37,550 --> 01:36:39,300 Jadi link yang boleh muncul pada halaman tertentu. 2165 01:36:39,300 --> 01:36:42,200 Seseorang klik di atasnya, pergi ke vulnerable.com. 2166 01:36:42,200 --> 01:36:43,700 Anda mempunyai cookie untuk vulnerable.com. 2167 01:36:43,700 --> 01:36:46,670 Katakan Facebook adalah terdedah, jadi facebook.com. 2168 01:36:46,670 --> 01:36:48,310 Anda mempunyai cookie 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 ia segera mengarahkan anda badguy.com, 2171 01:36:53,990 --> 01:36:57,182 tetapi termasuk cookie anda. 2172 01:36:57,182 --> 01:36:59,310 Jadi ia merupakan halaman peralihan cepat, tetapi cookie Facebook anda 2173 01:36:59,310 --> 01:37:02,572 dimasukkan dengan peralihan itu, dan itulah bagaimana mereka [didengar]. 2174 01:37:02,572 --> 01:37:04,280 Gabe: Yeah, ada beberapa perkara yang sangat bermakna 2175 01:37:04,280 --> 01:37:06,070 yang orang boleh lakukan jika ada ini. 2176 01:37:06,070 --> 01:37:09,190 Sebagai contoh, jika dibenarkan Facebook semua orang untuk menukar nama pengguna anda, 2177 01:37:09,190 --> 01:37:11,680 dan mereka tidak melakukan apa-apa semakan waras, jadi anda 2178 01:37:11,680 --> 01:37:16,810 boleh memasukkan perkara JavaScript yang mengubah imej anda ke hamster yang. 2179 01:37:16,810 --> 01:37:22,590 Dan yang memasukkan JavaScript sama ke semua orang yang melihat halaman anda. 2180 01:37:22,590 --> 01:37:26,400 Jadi semua orang yang melihat halaman anda mempunyai perkara yang sama dalam nama pengguna. 2181 01:37:26,400 --> 01:37:30,104 Dan kerana ia adalah virus, ia merebak dengan pesat. 2182 01:37:30,104 --> 01:37:32,270 DAVIN: Kami akan skip terakhir satu, dan kemudian kami sudah selesai. 2183 01:37:32,270 --> 01:37:34,120 Jadi ini adalah hanya satu lagi contoh. 2184 01:37:34,120 --> 01:37:36,120 Jadi ini adalah mereka tidak melarikan diri jadual SQL mereka. 2185 01:37:36,120 --> 01:37:37,090 Jadi, anda boleh menjatuhkannya. 2186 01:37:37,090 --> 01:37:38,805 Jadi, anda mahu untuk melarikan diri sesuatu. 2187 01:37:38,805 --> 01:37:44,010 Itu adalah contoh sebelumnya dengan tapak skrip salib. 2188 01:37:44,010 --> 01:37:45,430 Maaf, kami berlari sedikit lewat. 2189 01:37:45,430 --> 01:37:46,870 Esok, maaf! 2190 01:37:46,870 --> 01:37:48,560 Esok, kita mempunyai waktu pejabat. 2191 01:37:48,560 --> 01:37:50,870 Jadi waktu pejabat di Cabbot 8:00-11:00. 2192 01:37:50,870 --> 01:37:55,240 Waktu pejabat adalah hanya untuk soalan kuiz. 2193 01:37:55,240 --> 01:37:56,587