1 00:00:00,000 --> 00:00:05,616 2 00:00:05,616 --> 00:00:07,030 >> HANNAH Blumberg: Hi semua orang. 3 00:00:07,030 --> 00:00:09,530 Kita akan memulai hanya beberapa menit lebih awal 4 00:00:09,530 --> 00:00:11,738 karena kita memiliki seluruh banyak bahan untuk melewati. 5 00:00:11,738 --> 00:00:12,790 Aku Hannah. 6 00:00:12,790 --> 00:00:13,865 Aku TF a. 7 00:00:13,865 --> 00:00:16,239 Maria akan bergabung kita hanya dalam beberapa menit. 8 00:00:16,239 --> 00:00:17,560 Dia mengajarkan bagian kanan sebelumnya. 9 00:00:17,560 --> 00:00:19,351 Saya mengajar bagian kanan setelah, jadi kita akan 10 00:00:19,351 --> 00:00:21,200 untuk tetap ke satu setengah jam. 11 00:00:21,200 --> 00:00:25,490 >> Jadi seperti yang Anda akan melihat di sini, kita memiliki cukup beberapa topik kita perlu untuk melewati, 12 00:00:25,490 --> 00:00:27,200 jadi kami akan pergi sedikit cepat. 13 00:00:27,200 --> 00:00:31,140 Tetapi jika pada setiap titik kami mengatakan sesuatu terlalu cepat atau Anda tidak mengerti, 14 00:00:31,140 --> 00:00:33,170 merasa bebas untuk mengganggu dengan pertanyaan. 15 00:00:33,170 --> 00:00:36,610 Kami ingin dapat membuat ini meninjau sesi berguna untuk anda semua 16 00:00:36,610 --> 00:00:37,973 mungkin. 17 00:00:37,973 --> 00:00:38,920 Mengagumkan. 18 00:00:38,920 --> 00:00:41,650 >> Jadi mari kita melompat ke kanan dengan beberapa topik yang kita benar-benar 19 00:00:41,650 --> 00:00:46,980 sangat, sangat singkat tertutup untuk kuis 0 di kuis 0 sesi ulasan. 20 00:00:46,980 --> 00:00:48,840 Jadi dimulai dengan daftar terkait. 21 00:00:48,840 --> 00:00:52,090 Jadi pastikan Anda memiliki beberapa pengetahuan dasar tentang daftar terkait 22 00:00:52,090 --> 00:00:55,110 dan nyaman melakukan beberapa operasi dasar. 23 00:00:55,110 --> 00:00:58,560 >> Jadi hanya untuk meninjau, terkait daftar lebih baik dari array 24 00:00:58,560 --> 00:01:01,020 karena mereka dapat tumbuh secara dinamis. 25 00:01:01,020 --> 00:01:03,300 Jadi kita memiliki keuntungan besar. 26 00:01:03,300 --> 00:01:06,031 Kami telah melihat mereka digunakan dalam tabel hash ketika kita 27 00:01:06,031 --> 00:01:08,280 tidak tahu persis berapa banyak hal yang kita akan ingin 28 00:01:08,280 --> 00:01:10,900 untuk memasukkan ke dalam struktur data kami. 29 00:01:10,900 --> 00:01:15,700 Sayangnya, kita memiliki potongan linked list seluruh memori, 30 00:01:15,700 --> 00:01:20,820 jadi kita belum tentu mampu melakukan akses waktu yang konstan 31 00:01:20,820 --> 00:01:22,502 untuk setiap elemen dalam linked list. 32 00:01:22,502 --> 00:01:24,210 Dalam rangka untuk menemukan elemen tertentu, kita 33 00:01:24,210 --> 00:01:26,510 harus iterate semua cara dari awal. 34 00:01:26,510 --> 00:01:30,610 Jadi perlu diingat bahwa sebagian besar operasi dasar adalah omega dari 1. 35 00:01:30,610 --> 00:01:32,130 Jadi insert hanya akan mengambil 1. 36 00:01:32,130 --> 00:01:37,520 Hapus akan mengambil n karena kita harus pergi mencari dari daftar. 37 00:01:37,520 --> 00:01:39,260 Dan pencarian bisa mengambil, paling buruk, n. 38 00:01:39,260 --> 00:01:42,330 Kita tidak bisa melakukan sesuatu seperti pencarian biner pada linked list 39 00:01:42,330 --> 00:01:45,101 karena kita tidak bisa hanya acak melompat ke tengah. 40 00:01:45,101 --> 00:01:45,600 Keren. 41 00:01:45,600 --> 00:01:48,160 42 00:01:48,160 --> 00:01:48,960 Mengagumkan. 43 00:01:48,960 --> 00:01:50,270 >> Sedikit tumpukan. 44 00:01:50,270 --> 00:01:53,980 Ini, sekali lagi, muncul di kuis 0, sehingga Anda harus menjadi super nyaman dengan itu. 45 00:01:53,980 --> 00:01:57,210 Tapi untuk tumpukan, kami meminta Anda mengingat tumpukan nampan. 46 00:01:57,210 --> 00:01:59,940 Dan itu akan menjadi yang pertama di, terakhir keluar. 47 00:01:59,940 --> 00:02:02,272 Jadi kita tumpukan hal-hal dalam tumpukan, dan kemudian 48 00:02:02,272 --> 00:02:04,980 jika kita mencoba untuk mengambil sesuatu off-- yang kita sebut bermunculan off 49 00:02:04,980 --> 00:02:06,581 stack-- kami datang dari atas. 50 00:02:06,581 --> 00:02:09,289 Dan jika kita ingin menempatkan sesuatu dalam tumpukan, kita menyebutnya mendorong. 51 00:02:09,289 --> 00:02:13,170 Jadi itu selalu akan tumbuh dari bawah seperti tumpukan nampan. 52 00:02:13,170 --> 00:02:14,540 Mengagumkan. 53 00:02:14,540 --> 00:02:17,607 >> Kami telah melihat tumpukan diimplementasikan dengan kedua daftar terhubung dan array. 54 00:02:17,607 --> 00:02:19,440 Jika Anda menerapkan dengan array, Anda ingin 55 00:02:19,440 --> 00:02:22,350 memastikan untuk melacak baik ukuran dan kapasitas. 56 00:02:22,350 --> 00:02:27,540 Sehingga ukuran akan menjadi arus beberapa hal di tumpukan Anda, 57 00:02:27,540 --> 00:02:32,900 sedangkan kapasitas adalah jumlah total hal yang dapat Anda simpan di stack. 58 00:02:32,900 --> 00:02:34,220 Keren. 59 00:02:34,220 --> 00:02:35,767 >> Sangat mirip, kita harus antrian. 60 00:02:35,767 --> 00:02:38,850 Dalam hal ini, bukan berpikir tentang tumpukan nampan, memikirkan garis. 61 00:02:38,850 --> 00:02:40,697 Ini akan menjadi yang pertama, keluar pertama. 62 00:02:40,697 --> 00:02:42,780 Jadi jika Anda sedang berbaris untuk sesuatu di toko, 63 00:02:42,780 --> 00:02:46,920 kami berharap bahwa orang pertama di line akan membantu pertama. 64 00:02:46,920 --> 00:02:49,350 >> Alih-alih mengatakan push dan pop seperti yang kita lakukan untuk stack, 65 00:02:49,350 --> 00:02:52,000 kita hanya mengatakan enqueue dan dequeue. 66 00:02:52,000 --> 00:02:54,970 Dan lagi, jika Anda menerapkan ini dengan array, 67 00:02:54,970 --> 00:02:56,720 kita perlu melacak tidak hanya ukuran 68 00:02:56,720 --> 00:03:02,390 dan kapasitas, tetapi juga kepala, yang akan menjadi bagian depan antrian kami. 69 00:03:02,390 --> 00:03:03,010 Keren. 70 00:03:03,010 --> 00:03:05,770 Pertanyaan semua itu? 71 00:03:05,770 --> 00:03:06,320 Mengagumkan. 72 00:03:06,320 --> 00:03:07,640 Bergerak kanan sepanjang. 73 00:03:07,640 --> 00:03:08,564 >> OK, tabel hash. 74 00:03:08,564 --> 00:03:10,605 Di sinilah ia mulai mendapatkan benar-benar menarik. 75 00:03:10,605 --> 00:03:14,150 Jadi tabel hash adalah salah satu implementasi array asosiatif. 76 00:03:14,150 --> 00:03:16,700 Jadi pada dasarnya apa yang terjadi adalah kita memiliki semua masukan ini, 77 00:03:16,700 --> 00:03:18,750 dan kami memberikannya kepada hash fungsi yang mengatakan, 78 00:03:18,750 --> 00:03:21,840 OK, ini adalah di mana dalam tabel hash itu milik. 79 00:03:21,840 --> 00:03:24,860 >> Jadi fungsi hash yang paling sederhana bahwa kita telah melihat hanya mengatakan, 80 00:03:24,860 --> 00:03:28,170 OK, misalkan kita ingin menempatkan string dalam tabel hash kami. 81 00:03:28,170 --> 00:03:30,870 Dan ide yang sangat sederhana mungkin untuk mengatakan, OK, 82 00:03:30,870 --> 00:03:34,350 mari kita mengurutkan oleh huruf pertama dari kata. 83 00:03:34,350 --> 00:03:37,570 Jadi Anda bisa lihat di sini, kita mengambil pisang, kita meletakkannya melalui fungsi hash, 84 00:03:37,570 --> 00:03:40,190 dan ia mengatakan, hei, yang harus pergi pada indeks 1. 85 00:03:40,190 --> 00:03:45,120 >> Jadi kita pada dasarnya bisa memikirkan hash tabel sebagai sekelompok ember yang berbeda. 86 00:03:45,120 --> 00:03:49,880 Dan masing-masing ember akan memegang kepala dari linked list. 87 00:03:49,880 --> 00:03:55,030 Dan di dalam linked list adalah di mana kita bisa benar-benar menempatkan potongan data yang berbeda. 88 00:03:55,030 --> 00:03:57,820 >> Jadi menyelam sedikit lebih menjadi fungsi hash, inilah 89 00:03:57,820 --> 00:03:59,870 contoh saya hanya dijelaskan di mana kita hanya mengatakan, 90 00:03:59,870 --> 00:04:02,460 OK, mengambil huruf pertama kata dan kami 91 00:04:02,460 --> 00:04:03,990 akan menyortir ke dalam ember. 92 00:04:03,990 --> 00:04:08,490 Jadi mungkin, akan ada 26 ember, satu untuk setiap huruf dari alfabet. 93 00:04:08,490 --> 00:04:10,090 Mengapa tidak ini fungsi hash yang besar? 94 00:04:10,090 --> 00:04:13,461 Apa yang membuat ini non-ideal? 95 00:04:13,461 --> 00:04:13,960 Ya. 96 00:04:13,960 --> 00:04:15,790 >> AUDIENCE: Kau akan untuk memiliki tabrakan. 97 00:04:15,790 --> 00:04:16,390 >> HANNAH Blumberg: Ya, persis. 98 00:04:16,390 --> 00:04:18,000 Anda akan memiliki tabrakan. 99 00:04:18,000 --> 00:04:18,954 Jadi itu satu hal. 100 00:04:18,954 --> 00:04:21,620 Dan kita akan berbicara tentang bagaimana kita bisa memperbaiki tabrakan hanya dalam satu detik. 101 00:04:21,620 --> 00:04:23,980 Masalah lain dengan ini fungsi hash tertentu 102 00:04:23,980 --> 00:04:25,980 adalah bahwa kami berbeda ember akan menjadi 103 00:04:25,980 --> 00:04:28,960 ukuran cukup drastis berbeda. 104 00:04:28,960 --> 00:04:33,840 >> Kita tahu bahwa ada banyak seluruh banyak kata yang dimulai dengan A dari X, 105 00:04:33,840 --> 00:04:38,980 sehingga kita akan memiliki sangat ember seimbang dalam tabel hash kami. 106 00:04:38,980 --> 00:04:40,050 Keren. 107 00:04:40,050 --> 00:04:41,340 Jadi ya, mari kita kembali ke titik tabrakan. 108 00:04:41,340 --> 00:04:42,900 Apa yang kita lakukan jika ada tabrakan? 109 00:04:42,900 --> 00:04:44,490 >> Kami memiliki beberapa pilihan yang berbeda. 110 00:04:44,490 --> 00:04:47,600 Jadi satu, jadi misalkan kita mencoba untuk menempatkan berry ke dalam tabel hash kami. 111 00:04:47,600 --> 00:04:50,370 Dan kita lihat, oh, kita ingin untuk memasukkannya ke dalam index 1, 112 00:04:50,370 --> 00:04:52,070 tapi pisang sudah tinggal di sana. 113 00:04:52,070 --> 00:04:53,110 Apa yang akan kita lakukan? 114 00:04:53,110 --> 00:04:54,560 Kami memiliki dua pilihan utama. 115 00:04:54,560 --> 00:04:58,050 >> Nomor satu adalah kita dapat mengatakan, OK, tidak ada ruang dalam indeks 1, 116 00:04:58,050 --> 00:05:03,210 tapi mari kita terus mencari melalui sampai kita dapat menemukan tempat lain yang terbuka. 117 00:05:03,210 --> 00:05:08,490 Jadi kita akan mengatakan, OK, mari kita meletakkannya di tempat 3. 118 00:05:08,490 --> 00:05:09,240 Itu salah satu pilihan. 119 00:05:09,240 --> 00:05:11,470 Itulah yang disebut linear menyelidik. 120 00:05:11,470 --> 00:05:15,500 >> Dan pilihan kedua mengatakan, OK, baik, mari kita membuat masing-masing ember ini 121 00:05:15,500 --> 00:05:17,470 menjadi kepala daftar terkait. 122 00:05:17,470 --> 00:05:21,910 Dan itu OK jika ada lebih dari satu hal dalam ember. 123 00:05:21,910 --> 00:05:23,820 Kami hanya akan tambahkan ke depan. 124 00:05:23,820 --> 00:05:26,032 Jadi di sini Anda dapat melihat, OK, ketika kita dimasukkan berry, kami 125 00:05:26,032 --> 00:05:28,240 hanya mengambil pisang, jenis mendorongnya lebih sedikit 126 00:05:28,240 --> 00:05:29,842 dan melemparkan berry di sana. 127 00:05:29,842 --> 00:05:31,050 Dan itu juga benar-benar baik-baik saja. 128 00:05:31,050 --> 00:05:32,830 Ini disebut chaining terpisah. 129 00:05:32,830 --> 00:05:38,100 Anda dapat menganggap ini sebagai jenis seperti array kepala ke daftar terkait. 130 00:05:38,100 --> 00:05:41,950 Pertanyaan hash tabel, fungsi hash? 131 00:05:41,950 --> 00:05:44,290 Mengagumkan. 132 00:05:44,290 --> 00:05:45,470 >> Pohon dan mencoba. 133 00:05:45,470 --> 00:05:47,287 Jadi pohon adalah apapun dari struktur data 134 00:05:47,287 --> 00:05:49,453 di mana ada semacam hirarki atau semacam 135 00:05:49,453 --> 00:05:51,247 dari peringkat ke objek yang berbeda Anda. 136 00:05:51,247 --> 00:05:53,580 Dan ini akan menjadi yang super jelas ketika kita melihat contoh. 137 00:05:53,580 --> 00:05:56,960 Dan kami melihat mencoba, bersama dengan tabel hash, di pset5-- 138 00:05:56,960 --> 00:06:00,700 yang, sekali lagi, permainan benar-benar adil untuk ini quiz-- sebagai data lain 139 00:06:00,700 --> 00:06:03,110 struktur yang kita bisa menyimpan hal yang berbeda. 140 00:06:03,110 --> 00:06:06,782 Dalam kasus kamus, kita disimpan sekelompok kata-kata. 141 00:06:06,782 --> 00:06:08,240 Jadi mari kita lihat beberapa pohon. 142 00:06:08,240 --> 00:06:10,190 Jadi ini adalah contoh dari pohon. 143 00:06:10,190 --> 00:06:13,105 Ia memiliki jenis struktur, bahwa struktur hirarkis, 144 00:06:13,105 --> 00:06:15,920 di mana Anda dapat melihat bahwa ini 1 simpul di bagian atas 145 00:06:15,920 --> 00:06:20,750 memiliki semacam peringkat di atas 2 dan 3, yang berada di atas 4, 5, dan 6 dan 7, 146 00:06:20,750 --> 00:06:22,860 yang berada di atas 8 dan 9. 147 00:06:22,860 --> 00:06:25,210 Jadi itu yang kita maksud dengan pohon, sehingga Anda dapat hanya jenis 148 00:06:25,210 --> 00:06:26,660 dari gambar ini di kepala Anda. 149 00:06:26,660 --> 00:06:29,050 >> Sekarang, kami memiliki beberapa pohon yang lebih khusus. 150 00:06:29,050 --> 00:06:31,070 Jadi salah satu contoh adalah pohon biner. 151 00:06:31,070 --> 00:06:33,290 Dan pohon biner adalah, lagi, hanya akan menjadi 152 00:06:33,290 --> 00:06:37,040 struktur data dengan semacam hirarki, tetapi setiap node 153 00:06:37,040 --> 00:06:38,650 dapat memiliki paling banyak dua anak. 154 00:06:38,650 --> 00:06:41,530 Di situlah biner kata berasal dari. 155 00:06:41,530 --> 00:06:43,410 Jadi ini adalah contoh dari sebuah pohon biner. 156 00:06:43,410 --> 00:06:45,720 Jadi itulah kategori lebih kecil dari pohon. 157 00:06:45,720 --> 00:06:48,960 >> Sekarang mari kita mendapatkan bahkan lebih spesifik dan berbicara tentang biner pencarian biner trees-- 158 00:06:48,960 --> 00:06:51,310 pohon, bukan. 159 00:06:51,310 --> 00:06:56,430 Jadi di sini ide tidak hanya melakukan setiap simpul memiliki paling banyak dua anak, 160 00:06:56,430 --> 00:07:00,300 tapi semua anak-anak ke kiri akan menjadi lebih kecil 161 00:07:00,300 --> 00:07:03,450 dan semua anak-anak ke tepat akan menjadi lebih besar. 162 00:07:03,450 --> 00:07:05,890 Jadi melihat di hanya kami pohon biner, ada 163 00:07:05,890 --> 00:07:08,650 tidak ada hubungan antara nomor. 164 00:07:08,650 --> 00:07:12,990 Namun dalam pencarian biner kami pohon, kita melihat, OK, inilah 44. 165 00:07:12,990 --> 00:07:17,080 Dan setiap nomor di sebelah kiri adalah 44 lebih kecil dan segala sesuatu ke kanan 166 00:07:17,080 --> 00:07:17,920 lebih besar. 167 00:07:17,920 --> 00:07:20,130 >> Dan yang memegang pada setiap tingkat pohon. 168 00:07:20,130 --> 00:07:24,810 Jadi di sini, ini lebih kecil dari 22 dan ini lebih besar dari 22. 169 00:07:24,810 --> 00:07:26,390 Dan itulah pohon pencarian biner. 170 00:07:26,390 --> 00:07:28,900 Mengapa kita pikir itu disebut pohon pencarian biner? 171 00:07:28,900 --> 00:07:30,651 Apa algoritma apakah itu mengingatkan Anda tentang? 172 00:07:30,651 --> 00:07:31,650 AUDIENCE: Pencarian biner. 173 00:07:31,650 --> 00:07:32,480 HANNAH Blumberg: pencarian biner. 174 00:07:32,480 --> 00:07:35,150 Karena jika Anda sedang mencari nomor tertentu di pohon ini, 175 00:07:35,150 --> 00:07:38,800 di setiap titik, Anda hanya dapat mengetuk off setengah dari pohon, yang besar. 176 00:07:38,800 --> 00:07:43,800 Dan sehingga akan memberikan kita sesuatu yang banyak seperti pencarian biner terlihat. 177 00:07:43,800 --> 00:07:45,870 Ada pertanyaan? 178 00:07:45,870 --> 00:07:47,570 Baiklah, keren. 179 00:07:47,570 --> 00:07:48,560 >> Baiklah, mencoba. 180 00:07:48,560 --> 00:07:49,657 Favorit semua orang. 181 00:07:49,657 --> 00:07:51,990 Jadi ini adalah contoh yang kita telah melihat banyak di kelas. 182 00:07:51,990 --> 00:07:54,710 Dan lagi, ini hanyalah cara itu kita dapat menyimpan data. 183 00:07:54,710 --> 00:07:57,530 Dalam kasus kamus, sekali lagi, ini hanya akan menjadi string. 184 00:07:57,530 --> 00:08:00,870 Jadi mari kita lihat apa ini sebenarnya Sepertinya pada tingkat yang sedikit lebih rendah. 185 00:08:00,870 --> 00:08:03,690 >> Jadi mari kita lihat di salah satu node dalam trie. 186 00:08:03,690 --> 00:08:07,532 Dan kita lihat, OK, ada akan menjadi Boolean dan node, 187 00:08:07,532 --> 00:08:09,170 pointer ke node. 188 00:08:09,170 --> 00:08:11,400 Dan kita melihat bahwa Boolean disebut is_word. 189 00:08:11,400 --> 00:08:13,490 Jadi pada dasarnya, itu akan sesuai 190 00:08:13,490 --> 00:08:16,750 untuk ini segitiga kecil yang mengatakan, jika Anda sudah mendapatkan di sini, 191 00:08:16,750 --> 00:08:19,100 Anda telah menemukan sebuah kata yang lengkap. 192 00:08:19,100 --> 00:08:23,670 >> Kita tahu bahwa "turing" lebih di sini adalah kata yang lengkap, 193 00:08:23,670 --> 00:08:28,030 sedangkan hanya T-U-R adalah bukan kata karena kita tidak melihat bahwa delta kecil. 194 00:08:28,030 --> 00:08:31,440 Dan bahwa delta kecil, lagi, sesuai dengan is_word ini, 195 00:08:31,440 --> 00:08:34,480 is_word Boolean ini. 196 00:08:34,480 --> 00:08:36,320 Dan kemudian kita memiliki sebuah array anak. 197 00:08:36,320 --> 00:08:39,860 Jadi pada setiap tingkat, Anda memiliki node tertentu, 198 00:08:39,860 --> 00:08:42,470 dan bahwa simpul poin ke array seluruh alfabet. 199 00:08:42,470 --> 00:08:44,346 >> Sehingga Anda dapat melihat, lagi, di picture-- ini saya 200 00:08:44,346 --> 00:08:48,170 akan terus melompat kembali dan forth-- yang bahwa array di atas 201 00:08:48,170 --> 00:08:51,640 memiliki banyak berbeda node datang dari itu. 202 00:08:51,640 --> 00:08:57,140 Memiliki 26, atau 27 jika Anda ingin untuk memasukkan karakter tambahan. 203 00:08:57,140 --> 00:09:01,320 Dan ini memberi kita cara untuk menyimpan data kami 204 00:09:01,320 --> 00:09:04,450 dengan cara yang dapat dilihat pada Anda dapat melihat super cepat. 205 00:09:04,450 --> 00:09:06,650 Apa waktu pencarian untuk trie? 206 00:09:06,650 --> 00:09:07,970 >> AUDIENCE: [tidak terdengar]. 207 00:09:07,970 --> 00:09:08,300 >> HANNAH Blumberg: Ya. 208 00:09:08,300 --> 00:09:09,550 Dalam teori, saatnya konstan. 209 00:09:09,550 --> 00:09:13,230 Itu hanya akan menjadi ukuran kata yang ingin Anda melihat ke atas. 210 00:09:13,230 --> 00:09:15,950 Bahkan jika kita menambahkan miliaran sebuah lebih kata-kata untuk trie kami, 211 00:09:15,950 --> 00:09:18,160 itu tidak akan membawa kita lagi untuk menentukan 212 00:09:18,160 --> 00:09:19,690 jika kata yang diberikan dalam trie. 213 00:09:19,690 --> 00:09:21,412 Jadi itu benar-benar bagus. 214 00:09:21,412 --> 00:09:23,697 >> AUDIENCE: Apakah Anda hanya menginisialisasi array? 215 00:09:23,697 --> 00:09:24,780 Anda melewatkan satu atau dua titik. 216 00:09:24,780 --> 00:09:26,130 Dapatkah Anda hanya berbicara tentang bahwa untuk kedua? 217 00:09:26,130 --> 00:09:26,680 >> HANNAH Blumberg: Tentu, benar-benar. 218 00:09:26,680 --> 00:09:27,590 Pertanyaan bagus. 219 00:09:27,590 --> 00:09:31,140 Pertanyaannya adalah, kita memiliki sebuah array yang 220 00:09:31,140 --> 00:09:34,180 akan memiliki bintang node sebagai lawan hanya node, kan? 221 00:09:34,180 --> 00:09:35,180 Keren. 222 00:09:35,180 --> 00:09:37,990 Jadi di sini apa yang kita katakan adalah array kita hanya 223 00:09:37,990 --> 00:09:40,035 akan menjadi pointer ke array lain. 224 00:09:40,035 --> 00:09:42,910 Jadi itu essentially-- itu jenis terasa seperti linked list dengan cara ini 225 00:09:42,910 --> 00:09:46,620 di mana masing-masing anak-anak ini hanya menunjuk ke node berikutnya. 226 00:09:46,620 --> 00:09:49,030 >> Dan cara yang kita sebenarnya menentukan, hey, OK, 227 00:09:49,030 --> 00:09:52,320 kami telah iterasi melalui seluruh kata, adalah kata ini dalam kamus, 228 00:09:52,320 --> 00:09:54,476 kami hanya memeriksa is_word ini. 229 00:09:54,476 --> 00:09:55,100 Pertanyaan besar. 230 00:09:55,100 --> 00:09:55,675 Ya. 231 00:09:55,675 --> 00:09:56,216 AUDIENCE: OK. 232 00:09:56,216 --> 00:09:57,470 Jadi apa adalah runtime untuk trie? 233 00:09:57,470 --> 00:09:58,386 >> HANNAH Blumberg: Tentu. 234 00:09:58,386 --> 00:10:01,852 Jadi runtime untuk trie untuk lookup akan menjadi waktu yang konstan. 235 00:10:01,852 --> 00:10:04,310 Jadi itu hanya akan menjadi jumlah huruf dalam kata. 236 00:10:04,310 --> 00:10:06,310 Ini tidak tergantung pada ukuran kamus 237 00:10:06,310 --> 00:10:09,510 atau ukuran struktur data. 238 00:10:09,510 --> 00:10:12,170 Jadi, inilah contoh yang sedikit lebih sederhana. 239 00:10:12,170 --> 00:10:15,430 >> Dalam hal ini, Anda dapat melihat bahwa kelelawar kata dalam kamus 240 00:10:15,430 --> 00:10:18,900 dan Anda memiliki zoom, tetapi Anda tidak memiliki sesuatu seperti kebun binatang. 241 00:10:18,900 --> 00:10:20,050 Bagaimana kita akan membuat kebun binatang? 242 00:10:20,050 --> 00:10:24,276 Bagaimana kita menambahkan kebun binatang untuk kami kamus, untuk trie kami? 243 00:10:24,276 --> 00:10:24,776 Ya. 244 00:10:24,776 --> 00:10:27,014 >> AUDIENCE: Membuat is_word berlaku untuk [tidak terdengar]. 245 00:10:27,014 --> 00:10:27,930 HANNAH Blumberg: Baik. 246 00:10:27,930 --> 00:10:31,731 Jadi kita akan mengatakan Z-O-O, dan kemudian kami akan ingin memeriksa off kotak itu juga. 247 00:10:31,731 --> 00:10:32,230 Besar. 248 00:10:32,230 --> 00:10:35,160 249 00:10:35,160 --> 00:10:37,930 Mari kita bandingkan secara singkat mencoba vs tabel hash. 250 00:10:37,930 --> 00:10:39,770 Mencoba benar-benar hebat karena, seperti yang kita katakan, 251 00:10:39,770 --> 00:10:41,610 mereka menyediakan konstan-waktu pencarian. 252 00:10:41,610 --> 00:10:44,285 Tapi kerugian besar adalah mereka humongous. 253 00:10:44,285 --> 00:10:46,160 Anda bisa mendapatkan arti, bahkan dengan melihat itu, 254 00:10:46,160 --> 00:10:48,454 bahwa itu akan mengambil sejumlah besar memori. 255 00:10:48,454 --> 00:10:50,620 Jadi mereka akan menjadi jauh lebih besar dari tabel hash, 256 00:10:50,620 --> 00:10:52,270 tapi mereka akan memberikan kami kali lookup lebih cepat. 257 00:10:52,270 --> 00:10:54,478 Jadi itu semacam Anda tradeoff, apa yang Anda peduli, 258 00:10:54,478 --> 00:10:57,350 apakah itu kecepatan atau memori. 259 00:10:57,350 --> 00:11:02,251 Pertanyaan semua itu, semua struktur data C. 260 00:11:02,251 --> 00:11:02,750 Indah. 261 00:11:02,750 --> 00:11:03,250 OKE. 262 00:11:03,250 --> 00:11:07,322 Kita akan pindah ke sedikit sedikit pengembangan web dengan Maria. 263 00:11:07,322 --> 00:11:08,280 MARIA ZLATKOVA: Lovely. 264 00:11:08,280 --> 00:11:09,036 OKE. 265 00:11:09,036 --> 00:11:10,380 >> HANNAH Blumberg: Anda dapat menggunakan laptop saya. 266 00:11:10,380 --> 00:11:11,255 >> MARIA ZLATKOVA: Nice. 267 00:11:11,255 --> 00:11:13,320 268 00:11:13,320 --> 00:11:14,912 OK keren. 269 00:11:14,912 --> 00:11:17,120 Ketika kita bergerak sekarang untuk web pengembangan, kami berbicara sedikit 270 00:11:17,120 --> 00:11:20,680 tentang perizinan berubah file dan direktori 271 00:11:20,680 --> 00:11:24,190 sehingga mereka dapat diakses ke pengguna lain, untuk dunia, 272 00:11:24,190 --> 00:11:28,640 dan sehingga kita dapat melihat bagaimana pada dasarnya kita bisa menyampaikan mereka 273 00:11:28,640 --> 00:11:32,600 ketika kita mengembangkan hal-hal seperti situs bahwa kita sudah sebagian besar telah melakukan. 274 00:11:32,600 --> 00:11:36,400 >> Jadi kita melihat perintah chmod, yang modus perubahan, pada dasarnya. 275 00:11:36,400 --> 00:11:39,300 Itu perintah Linux dan perubahan izin akses 276 00:11:39,300 --> 00:11:40,410 benda sistem file. 277 00:11:40,410 --> 00:11:43,370 Dan objek sistem berkas adalah hanya direktori, file, 278 00:11:43,370 --> 00:11:46,810 apa pun yang Anda bisa mengubah hak akses dari. 279 00:11:46,810 --> 00:11:53,750 >> Jadi untuk melihat hak akses file, kita ketik perintah ls, daftar, l. 280 00:11:53,750 --> 00:11:56,500 Dan ketika kita mengetik itu, kita biasanya melihat beberapa izin 281 00:11:56,500 --> 00:11:59,660 yang terlihat semacam seperti ini di depan nama direktori. 282 00:11:59,660 --> 00:12:01,260 Jadi d mengacu pada direktori. 283 00:12:01,260 --> 00:12:05,930 Dan kemudian kami memiliki tiga triad bahwa pada dasarnya 284 00:12:05,930 --> 00:12:11,675 mengacu pada izin baik pengguna, kelompok, atau dunia. 285 00:12:11,675 --> 00:12:16,490 >> Jenis-jenis perizinan yang kita dapat miliki untuk tiga kelompok orang 286 00:12:16,490 --> 00:12:20,830 yang baik r untuk membaca, w untuk menulis, dan x untuk mengeksekusi. 287 00:12:20,830 --> 00:12:23,650 Dan kita dapat memiliki orang-orang untuk kelompok dan dunia juga. 288 00:12:23,650 --> 00:12:26,940 Hal yang sulit adalah bahwa kadang-kadang ketika kita ketik perintah chmod, 289 00:12:26,940 --> 00:12:32,960 kita akan mengetik beberapa nomor yang terdiri dari tiga bit. 290 00:12:32,960 --> 00:12:36,990 Jadi kita bisa melakukan seperti 777 dan bahwa pada dasarnya 291 00:12:36,990 --> 00:12:40,450 mengacu pada nilai tambah dari masing-masing triad ini 292 00:12:40,450 --> 00:12:45,060 karena r akan merujuk ke 4, w akan mengacu pada 2, dan x akan merujuk ke 1, 293 00:12:45,060 --> 00:12:50,020 jadi ketika ditambahkan, masing-masing dari nomor akan turun ke sejumlah kumulatif 294 00:12:50,020 --> 00:12:52,750 ke nilai kumulatif antara 0 dan 7. 295 00:12:52,750 --> 00:12:55,150 Jadi kita juga bisa memiliki 0 tanpa izin sama sekali. 296 00:12:55,150 --> 00:12:58,200 Dan yang pada dasarnya akan memberi kita izin untuk baik pengguna, 297 00:12:58,200 --> 00:13:00,450 kelompok, atau dunia. 298 00:13:00,450 --> 00:13:02,620 Pertanyaan ini sejauh ini? 299 00:13:02,620 --> 00:13:05,331 >> AUDIENCE: Anda mengatakan membaca adalah 4? 300 00:13:05,331 --> 00:13:06,164 MARIA ZLATKOVA: Ya. 301 00:13:06,164 --> 00:13:07,568 AUDIENCE: [tidak terdengar]. 302 00:13:07,568 --> 00:13:08,504 HANNAH Blumberg: Yup. 303 00:13:08,504 --> 00:13:11,790 AUDIENCE: Dan kemudian dengan menambahkan semua orang lain akan menunjukkan nomor Anda. 304 00:13:11,790 --> 00:13:12,665 MARIA ZLATKOVA: Ya. 305 00:13:12,665 --> 00:13:14,970 Ya. 306 00:13:14,970 --> 00:13:17,810 Ini adalah pertanyaan besar. 307 00:13:17,810 --> 00:13:20,490 Indah. 308 00:13:20,490 --> 00:13:25,340 Berikutnya, kita melompat ke HTML dan sedikit tentang pengembangan web. 309 00:13:25,340 --> 00:13:27,990 Jadi HTML hanya berarti Hyper Text Markup Language. 310 00:13:27,990 --> 00:13:30,460 Dan itu adalah markup bahasa yang standar 311 00:13:30,460 --> 00:13:32,720 bahwa itu digunakan untuk membuat halaman web. 312 00:13:32,720 --> 00:13:35,750 >> Ini disebut bahasa markup karena itu tidak benar-benar disusun. 313 00:13:35,750 --> 00:13:40,310 Ia tidak mengatakan bagaimana beberapa kode harus dieksekusi atau sesuatu seperti itu. 314 00:13:40,310 --> 00:13:44,800 Itu hanya melukiskan dan menjelaskan bagaimana web 315 00:13:44,800 --> 00:13:46,840 Halaman harus dibentuk dengan masing-masing elemen 316 00:13:46,840 --> 00:13:48,460 dan bagaimana mereka harus melihat ke pengguna. 317 00:13:48,460 --> 00:13:53,090 318 00:13:53,090 --> 00:13:57,110 >> Beberapa tag HTML yang kita pergi adalah sebagai berikut. 319 00:13:57,110 --> 00:14:00,500 Semua dokumen HTML kita mulai dengan html DOCTYPE. 320 00:14:00,500 --> 00:14:02,550 Kemudian kita selalu memiliki tag html. 321 00:14:02,550 --> 00:14:03,930 Kami memiliki kepala dan tubuh. 322 00:14:03,930 --> 00:14:07,890 Dan itu penting bahwa HTML memiliki semacam ini struktur bersarang 323 00:14:07,890 --> 00:14:09,280 karena itu sangat jelas. 324 00:14:09,280 --> 00:14:13,200 Dan kemudian menjadi sangat jelas ketika kita perlu membuka dan benar-benar tag dekat. 325 00:14:13,200 --> 00:14:18,400 Dan kita selalu perlu untuk menutup tag yang kita sudah dibuka. 326 00:14:18,400 --> 00:14:23,170 >> Dan di sini kita memiliki beberapa jenis hal depan yang kita ingin memiliki. 327 00:14:23,170 --> 00:14:26,580 Jadi kita memiliki, misalnya, judul CS50. 328 00:14:26,580 --> 00:14:31,980 Dan kemudian kita benar-benar dapat menghubungkan style sheet 329 00:14:31,980 --> 00:14:34,030 yang mendefinisikan bagaimana kita gaya website kami. 330 00:14:34,030 --> 00:14:35,650 Itulah CSS. 331 00:14:35,650 --> 00:14:39,320 Kami akan pergi ke dalam beberapa berikutnya slide juga. 332 00:14:39,320 --> 00:14:42,580 >> Dalam tubuh, kita menetapkan beberapa kelas dan ID. 333 00:14:42,580 --> 00:14:45,860 Dan sebagai pengingat, sekali lagi, ID unik dan kelas 334 00:14:45,860 --> 00:14:47,390 dapat ditugaskan untuk beberapa item. 335 00:14:47,390 --> 00:14:52,110 Dan itu hanya berarti bahwa kita dapat menggunakan kelas dan ID 336 00:14:52,110 --> 00:14:55,860 dalam structures-- lain sehingga, untuk Misalnya, dalam file CSS atau gaya 337 00:14:55,860 --> 00:15:00,940 sheets-- untuk merujuk ke elemen tertentu dan pada dasarnya mengatakan bahwa kita ingin bergaya 338 00:15:00,940 --> 00:15:03,280 atau merancang beberapa unsur dalam beberapa cara tertentu. 339 00:15:03,280 --> 00:15:06,440 Dan kita merujuk kepada mereka oleh ID dan kelas mereka. 340 00:15:06,440 --> 00:15:09,870 Dan kami juga dapat merujuk ke hal yang berbeda dengan tag juga, 341 00:15:09,870 --> 00:15:13,830 tapi ID dan kelas hanya memberikan kita beberapa fleksibilitas dan apa yang secara khusus kita 342 00:15:13,830 --> 00:15:15,850 ingin lihat. 343 00:15:15,850 --> 00:15:19,620 >> Jadi hanya sebuah contoh. 344 00:15:19,620 --> 00:15:22,730 Kita bisa, lagi, dalam file CSS di mana kita 345 00:15:22,730 --> 00:15:25,770 ingin mendefinisikan beberapa style-- sehingga warna, font, 346 00:15:25,770 --> 00:15:30,340 dan hal-hal seperti itu-- kita bisa menentukan gaya untuk tubuh. 347 00:15:30,340 --> 00:15:32,640 Sehingga akan mendefinisikannya untuk seluruh tag tubuh. 348 00:15:32,640 --> 00:15:36,160 Tapi kemudian kita juga dapat mendefinisikan gaya untuk #title a. 349 00:15:36,160 --> 00:15:40,390 Dan lagi, hashtag mengacu kami ID dan dot mengacu pada kelas kami. 350 00:15:40,390 --> 00:15:44,760 >> Dan kemudian untuk .info, kami juga dapat mengatur beberapa atribut. 351 00:15:44,760 --> 00:15:49,750 Dan lagi, ketika kita kembali, kami telah kami kelas yang disebut info dan judul ID kami. 352 00:15:49,750 --> 00:15:53,422 Dan kita dapat melihat bahwa kita merujuk kepada mereka oleh #title dan .info. 353 00:15:53,422 --> 00:15:55,380 AUDIENCE: Apakah Anda mengatakan tanda pagar [? mengadopsi saya? ?] 354 00:15:55,380 --> 00:15:55,725 MARIA ZLATKOVA: Maaf? 355 00:15:55,725 --> 00:15:58,120 AUDIENCE: Apakah Anda mengatakan tanda pagar [? mengadopsi saya? ?] 356 00:15:58,120 --> 00:16:01,400 MARIA ZLATKOVA: Hashtag berarti ID, sehingga #title 357 00:16:01,400 --> 00:16:07,890 mengacu pada unsur-unsur apa saja yang memiliki ID ini disebut judul. 358 00:16:07,890 --> 00:16:10,735 Dan kemudian dot mengacu pada kelas. 359 00:16:10,735 --> 00:16:14,590 Jadi .info mengacu pada elemen ini karena memiliki info kelas. 360 00:16:14,590 --> 00:16:15,090 Oke. 361 00:16:15,090 --> 00:16:17,905 >> AUDIENCE: Mengapa Anda membedakan mereka dalam HTML? 362 00:16:17,905 --> 00:16:20,985 Mengapa Anda mengatakan hal-hal tertentu ID dan hal-hal tertentu adalah kelas? 363 00:16:20,985 --> 00:16:22,610 MARIA ZLATKOVA: Itu hanya sampai you-- 364 00:16:22,610 --> 00:16:24,151 HANNAH Blumberg: Ulangi pertanyaan. 365 00:16:24,151 --> 00:16:25,370 MARIA ZLATKOVA: Oh, maaf. 366 00:16:25,370 --> 00:16:29,480 Mengapa kita membedakan unsur-unsur tertentu sebagai ID dan elemen lain sebagai kelas? 367 00:16:29,480 --> 00:16:34,760 Itu hanya karena itu benar-benar sering merupakan pilihan desain. 368 00:16:34,760 --> 00:16:38,520 Ini memberi Anda banyak fleksibilitas dalam menjadi 369 00:16:38,520 --> 00:16:43,250 bisa mengatakan saya ingin item tertentu ini untuk memiliki ID ini karena mereka ingin 370 00:16:43,250 --> 00:16:45,300 untuk melakukan banyak hal dengan itu, dan saya hanya 371 00:16:45,300 --> 00:16:50,010 ingin mendefinisikan gaya, gaya tertentu atau apa pun warna untuk item. 372 00:16:50,010 --> 00:16:52,630 Dan cara untuk melakukan itu hanya memberikan sebuah ID. 373 00:16:52,630 --> 00:16:55,060 >> Dan kemudian jika saya ingin memiliki beberapa item yang berbeda 374 00:16:55,060 --> 00:16:58,940 memiliki itu, bukannya pergi dan pengaturan their-- 375 00:16:58,940 --> 00:17:03,840 bukannya melakukan itu dengan tag karena tag akan 376 00:17:03,840 --> 00:17:07,369 mengatur sel untuk seluruh tag untuk setiap kali tag yang digunakan, 377 00:17:07,369 --> 00:17:09,740 Anda dapat mengatur kelas untuk beberapa item. 378 00:17:09,740 --> 00:17:15,109 Dan kemudian hanya mengakses kelas itu dan mengatakan Saya ingin gaya kelas ini dengan cara itu. 379 00:17:15,109 --> 00:17:17,579 >> Dan lagi, kelas dapat ada beberapa item yang berbeda 380 00:17:17,579 --> 00:17:21,150 dan ID harus unik. 381 00:17:21,150 --> 00:17:21,849 Pertanyaan besar. 382 00:17:21,849 --> 00:17:25,339 Ada pertanyaan lain? 383 00:17:25,339 --> 00:17:26,220 OK, mengagumkan. 384 00:17:26,220 --> 00:17:30,680 385 00:17:30,680 --> 00:17:35,330 Sekali lagi, ini adalah bagaimana pemilih ini dirujuk dalam CSS, dengan hashtag, 386 00:17:35,330 --> 00:17:40,031 dengan dot, atau tanpa apa-apa untuk menugaskan gaya beberapa tag, 387 00:17:40,031 --> 00:17:40,530 seperti tubuh. 388 00:17:40,530 --> 00:17:43,500 389 00:17:43,500 --> 00:17:47,860 Dan di sini kita memiliki umum sintaks dari bagaimana hal ini dilakukan. 390 00:17:47,860 --> 00:17:52,830 391 00:17:52,830 --> 00:17:55,680 >> Untuk mengulang beberapa terbaik praktek untuk HTML dan CSS, 392 00:17:55,680 --> 00:17:59,170 kita perlu, sekali lagi, tutup semua tag HTML yang kita buka. 393 00:17:59,170 --> 00:18:03,950 Dan apa yang kami merekomendasikan Anda lakukan untuk proyek akhir Anda, 394 00:18:03,950 --> 00:18:10,560 serta untuk CS50 Keuangan, adalah untuk membuat memastikan bahwa semua HTML Anda memvalidasi. 395 00:18:10,560 --> 00:18:12,920 Dan itu dilakukan dengan W3 Validator. 396 00:18:12,920 --> 00:18:16,940 >> Dan kemudian apa yang kita lakukan dan apa yang kita lakukan merekomendasikan 397 00:18:16,940 --> 00:18:19,790 memisahkan gaya, sehingga CSS dari markup HTML. 398 00:18:19,790 --> 00:18:24,210 Jadi apa pun yang berkaitan dengan bagaimana halaman Anda akan terlihat secara visual 399 00:18:24,210 --> 00:18:27,330 dan bagaimana hal itu akan diubah harus pergi ke dalam dokumen CSS. 400 00:18:27,330 --> 00:18:33,880 Dan kemudian markup Anda mengatakan bagaimana hal-hal berada dalam hubungan satu sama lain adalah HTML, 401 00:18:33,880 --> 00:18:37,550 dan yang harus masuk ke dalam dokumen HTML Anda. 402 00:18:37,550 --> 00:18:38,590 Ada pertanyaan? 403 00:18:38,590 --> 00:18:39,226 Mhm. 404 00:18:39,226 --> 00:18:42,628 >> AUDIENCE: Apa sebenarnya yang terjadi pada dengan validasi halaman 405 00:18:42,628 --> 00:18:47,945 ketika kita memvalidasi HTML yang [tak terdengar] dibuat? 406 00:18:47,945 --> 00:18:49,850 >> MARIA ZLATKOVA: Jadi-UMPC pikir Anda. 407 00:18:49,850 --> 00:18:53,020 Jadi apa sebenarnya yang sedang terjadi pada halaman dengan validasi 408 00:18:53,020 --> 00:18:55,570 dan mengapa kita perlu melakukan itu? 409 00:18:55,570 --> 00:18:59,180 Pada dasarnya, kita perlu melakukan yang karena banyak kali, browser Anda, 410 00:18:59,180 --> 00:19:01,390 jika Anda tidak menutup tag atau semacam itu, 411 00:19:01,390 --> 00:19:05,680 browser Anda masih akan membuat halaman dan masih bisa bekerja, 412 00:19:05,680 --> 00:19:10,840 tapi praktek terbaik untuk memastikan bahwa Anda, sekali lagi, menutup semua tag Anda, 413 00:19:10,840 --> 00:19:13,190 bahwa semua elemen Anda cara yang mereka seharusnya, 414 00:19:13,190 --> 00:19:18,470 dan pada dasarnya bahwa itu oleh konvensi yang diatur. 415 00:19:18,470 --> 00:19:21,970 >> Ini, sekali lagi, hanya hal yang Anda harus 416 00:19:21,970 --> 00:19:24,040 akan belajar untuk melakukan, sebagai lawan untuk memiliki 417 00:19:24,040 --> 00:19:25,696 kode ceroboh dan hal-hal seperti itu. 418 00:19:25,696 --> 00:19:26,688 Ya. 419 00:19:26,688 --> 00:19:27,680 Oh maaf. 420 00:19:27,680 --> 00:19:29,221 Saya pikir Anda mengangkat tangan Anda. 421 00:19:29,221 --> 00:19:31,240 AUDIENCE: Tidak, saya hanya [tidak terdengar]. 422 00:19:31,240 --> 00:19:33,800 >> MARIA ZLATKOVA: OK. 423 00:19:33,800 --> 00:19:34,640 >> AUDIENCE: Terima kasih. 424 00:19:34,640 --> 00:19:36,181 >> MARIA ZLATKOVA: Tentu saja, terima kasih. 425 00:19:36,181 --> 00:19:41,680 Jadi sekali lagi, terjadi bagaimana Informasi ditransfer 426 00:19:41,680 --> 00:19:44,630 dan model komunikasi untuk mentransfer informasi. 427 00:19:44,630 --> 00:19:45,730 TCP / IP. 428 00:19:45,730 --> 00:19:48,600 TCP hanya berarti Transmisi Control Protocol dan IP 429 00:19:48,600 --> 00:19:51,260 mengacu pada Internet Protocol. 430 00:19:51,260 --> 00:19:54,275 Dan itu hanya mengacu cara data dikirimkan. 431 00:19:54,275 --> 00:19:59,470 432 00:19:59,470 --> 00:20:02,710 >> Jika kita memiliki beberapa data yang perlu disampaikan ke you-- sehingga 433 00:20:02,710 --> 00:20:06,770 Anda membuat permintaan untuk server tertentu. 434 00:20:06,770 --> 00:20:09,800 Sebagai contoh, ketika kita mencoba untuk mengakses cs50.net, 435 00:20:09,800 --> 00:20:12,420 kami membuat permintaan untuk server CS50 dan kami 436 00:20:12,420 --> 00:20:14,720 melihat bahwa kita ingin mendapatkan informasi semacam ini. 437 00:20:14,720 --> 00:20:19,294 Dan kemudian didasarkan pada protokol ini bagaimana informasi ini disampaikan, 438 00:20:19,294 --> 00:20:21,460 server memberikan informasi kembali kepada kami, klien. 439 00:20:21,460 --> 00:20:25,590 Dan kemudian kami dapat melihat informasi untuk halaman 440 00:20:25,590 --> 00:20:26,390 dan kemudian menggunakannya. 441 00:20:26,390 --> 00:20:29,300 442 00:20:29,300 --> 00:20:33,050 >> Jadi Hypertext Transfer Protocol hanya protokol lain atau setel 443 00:20:33,050 --> 00:20:37,470 konvensi yang mendefinisikan bagaimana web browser dan web server 444 00:20:37,470 --> 00:20:38,890 harus berkomunikasi. 445 00:20:38,890 --> 00:20:43,730 Dan menempatkan ini semua bersama-sama, HTTP, lagi, 446 00:20:43,730 --> 00:20:50,960 hanya mendefinisikan bagaimana hypertext ini didefinisikan oleh HTML yang kami telah bekerja itu, 447 00:20:50,960 --> 00:20:59,500 bagaimana harus dikirimkan kepada Anda dan bagaimana data yang dikirimkan kepada Anda 448 00:20:59,500 --> 00:21:00,540 sampai ke Anda. 449 00:21:00,540 --> 00:21:05,990 >> Dan itu sebabnya, jika kalian ingat dari kelas, kami memiliki banyak permintaan 450 00:21:05,990 --> 00:21:08,970 dan kami memiliki banyak sintaks untuk permintaan ini bahwa kita 451 00:21:08,970 --> 00:21:10,250 akan pergi ke sekarang. 452 00:21:10,250 --> 00:21:13,270 Jadi sekali lagi, ketika kita mengirim permintaan ke server, 453 00:21:13,270 --> 00:21:15,920 kita harus mendefinisikan beberapa hal. 454 00:21:15,920 --> 00:21:18,520 Jadi kita perlu menemukan jenis dari permintaan yang kita sedang menyiapkan. 455 00:21:18,520 --> 00:21:22,180 Dan lagi, kita memiliki, misalnya, GET adalah salah satu jenis metode 456 00:21:22,180 --> 00:21:25,290 yang kita miliki dalam permintaan kami. 457 00:21:25,290 --> 00:21:31,710 >> Dan kemudian HTTP / 1.1 adalah hanya protokol yang kita gunakan saat ini. 458 00:21:31,710 --> 00:21:34,224 459 00:21:34,224 --> 00:21:36,890 Sebagian besar waktu, itu akan dengan protokol yang kita gunakan. 460 00:21:36,890 --> 00:21:40,290 Jadi jika Anda memiliki pertanyaan seperti itu pada kuis Anda. 461 00:21:40,290 --> 00:21:43,120 Itulah konvensi yang kita miliki sejauh ini. 462 00:21:43,120 --> 00:21:46,580 >> Backslash mengacu pada apa pun hal kita meminta. 463 00:21:46,580 --> 00:21:52,810 Kemudian, tuan rumah kami, misalnya, dalam hal ini kasus, kami mencoba untuk pergi ke google.com. 464 00:21:52,810 --> 00:21:57,070 Jadi ini adalah nilai untuk host. 465 00:21:57,070 --> 00:21:59,330 Ini adalah jenis permintaan yang bisa dikirim. 466 00:21:59,330 --> 00:22:02,890 >> Dan kemudian jenis respon yang bisa dikirim, lagi, berdasarkan protokol ini, 467 00:22:02,890 --> 00:22:05,190 lagi, HTTP / 1.1. 468 00:22:05,190 --> 00:22:07,150 Jadi itulah versi HTTP lagi. 469 00:22:07,150 --> 00:22:09,730 200 OK hanya kode status. 470 00:22:09,730 --> 00:22:12,860 Dan itu OK hanya frase berdasarkan kode status. 471 00:22:12,860 --> 00:22:15,520 >> Dan kemudian Content-Type mengacu pada tipe 472 00:22:15,520 --> 00:22:20,295 yang dikembalikan kepada Anda bahwa adalah untuk halaman web yang Anda terima 473 00:22:20,295 --> 00:22:22,570 dan bahwa browser Anda dapat membuat sesudahnya. 474 00:22:22,570 --> 00:22:24,401 Dan itu adalah text / html. 475 00:22:24,401 --> 00:22:26,660 >> AUDIENCE: Apa 1.1 artinya? 476 00:22:26,660 --> 00:22:29,910 >> MARIA ZLATKOVA: Itu hanya Versi of-- oh, apa 1,1 berarti? 477 00:22:29,910 --> 00:22:37,075 Itu hanya versi, HTTP versi protokol yang kita gunakan. 478 00:22:37,075 --> 00:22:37,700 Pertanyaan besar. 479 00:22:37,700 --> 00:22:38,366 Pertanyaan lain? 480 00:22:38,366 --> 00:22:41,222 481 00:22:41,222 --> 00:22:45,080 >> AUDIENCE: Bisakah Anda meringkas Content-Type cepat nyata? 482 00:22:45,080 --> 00:22:48,150 >> MARIA ZLATKOVA: Jadi yang adalah apa server. 483 00:22:48,150 --> 00:22:51,020 jenis information-- apa jenis konten adalah pertanyaan. 484 00:22:51,020 --> 00:22:53,400 Jadi itu jenis informasi yang Anda dapatkan kembali 485 00:22:53,400 --> 00:22:58,200 dari server, jenis Data bahwa browser kemudian dapat 486 00:22:58,200 --> 00:23:00,604 membuat yang Anda gunakan. 487 00:23:00,604 --> 00:23:03,020 AUDIENCE: Apakah itu yang ini protokol memberitahu Anda lakukan? 488 00:23:03,020 --> 00:23:03,390 MARIA ZLATKOVA: Maaf? 489 00:23:03,390 --> 00:23:05,380 AUDIENCE: Apakah itu yang dikatakan protokol? 490 00:23:05,380 --> 00:23:05,915 MARIA ZLATKOVA: protocol-- The 491 00:23:05,915 --> 00:23:07,940 AUDIENCE: --what yang Content-Type adalah atau-UMPC 492 00:23:07,940 --> 00:23:12,040 MARIA ZLATKOVA: protokol ini didasarkan on-- apa protokol memberitahu Anda? 493 00:23:12,040 --> 00:23:16,070 Itu hanya cara bahwa informasi ini 494 00:23:16,070 --> 00:23:18,610 disampaikan kepada Anda berdasarkan pada apa jenis protokol 495 00:23:18,610 --> 00:23:21,830 itu informasi ini mendapat disampaikan kembali kepada Anda. 496 00:23:21,830 --> 00:23:23,500 Apakah itu masuk akal semacam? 497 00:23:23,500 --> 00:23:28,320 498 00:23:28,320 --> 00:23:30,070 HANNAH Blumberg: Anda bisa memikirkan protokol 499 00:23:30,070 --> 00:23:33,300 sebagai a-- saya pikir Profesor Malan menggambarkannya 500 00:23:33,300 --> 00:23:36,910 di kelas sebagai jenis seperti a-- itu seperti setara dengan handshaking manusia. 501 00:23:36,910 --> 00:23:44,930 Mengatakan, seperti, hei, aku permintaan dan saya tahu bagaimana menangani HTTP versi 1.1. 502 00:23:44,930 --> 00:23:48,770 Dan kemudian server mengatakan, oh, OK, aku-- dan kedua ada. 503 00:23:48,770 --> 00:23:51,337 Saya juga tahu bagaimana menangani HTTP / 1.1. 504 00:23:51,337 --> 00:23:53,170 Dan aku akan memberikan Anda kembali beberapa konten. 505 00:23:53,170 --> 00:23:56,230 Dalam hal ini, itu akan menjadi tipe text / html. 506 00:23:56,230 --> 00:23:58,480 Jadi itu semacam hanya cara dari mereka untuk communicating-- 507 00:23:58,480 --> 00:24:00,480 >> MARIA ZLATKOVA: Ini hanya mengkonfirmasikan bahwa Anda 508 00:24:00,480 --> 00:24:03,290 baik mengikuti yang sama protokol dan yang kedua 509 00:24:03,290 --> 00:24:06,620 klien dan server-- sehingga browser Anda dan server-- yang 510 00:24:06,620 --> 00:24:09,280 semacam tahu apa yang Anda bicarakan dan memiliki 511 00:24:09,280 --> 00:24:12,557 konvensi untuk melewati data. 512 00:24:12,557 --> 00:24:17,022 >> AUDIENCE: Jadi Content-Type part-- Content-Type text / html-- itu 513 00:24:17,022 --> 00:24:18,521 bagian terpisah dari pesan yang sama? 514 00:24:18,521 --> 00:24:20,509 Atau itu bagian dari katakanlah, 200? 515 00:24:20,509 --> 00:24:22,010 Apakah 200 memberitahu mereka bahwa atau is-- 516 00:24:22,010 --> 00:24:23,770 >> MARIA ZLATKOVA: 200 mengatakan itu semua pergi OK. 517 00:24:23,770 --> 00:24:27,900 Dan kemudian jenis konten adalah semacam bagian terpisah dari pesan yang sama, 518 00:24:27,900 --> 00:24:34,274 dan mengatakan hal yang saya Returned memiliki jenis text / html. 519 00:24:34,274 --> 00:24:35,690 Itu hanya memberikan informasi lebih lanjut. 520 00:24:35,690 --> 00:24:38,700 521 00:24:38,700 --> 00:24:39,995 Memiliki sesuatu untuk menambahkan? 522 00:24:39,995 --> 00:24:40,495 OKE. 523 00:24:40,495 --> 00:24:43,590 524 00:24:43,590 --> 00:24:46,530 >> Pertanyaan lain tentang hal ini? 525 00:24:46,530 --> 00:24:48,370 Mengagumkan. 526 00:24:48,370 --> 00:24:54,070 Jadi beberapa status HTTP lain yang kita bisa mendapatkan selain 200 OK, 527 00:24:54,070 --> 00:24:59,500 orang yang kita lihat mungkin mungkin banyak yang 403 dan 404. 528 00:24:59,500 --> 00:25:05,190 Jadi 404, jika Anda mencoba untuk Akses sesuatu yang tidak ada. 529 00:25:05,190 --> 00:25:10,460 Jadi misalnya, di Anda Psets CS50 Keuangan, 530 00:25:10,460 --> 00:25:15,640 jika Anda telah render quote.html dan Anda tidak memiliki file tersebut, 531 00:25:15,640 --> 00:25:19,740 namun Anda memiliki quote.php, yang akan menghasilkan 404 Tidak Ditemukan 532 00:25:19,740 --> 00:25:21,600 karena file mungkin tidak ada. 533 00:25:21,600 --> 00:25:25,690 >> Untuk 403 dilarang, yang mengacu pada izin. 534 00:25:25,690 --> 00:25:31,150 Jadi jika beberapa file tidak dapat dibaca oleh dunia, Anda mungkin akan 403 kembali. 535 00:25:31,150 --> 00:25:34,510 536 00:25:34,510 --> 00:25:37,810 Beberapa orang lain bahwa Anda mungkin get-- 301, Pindah Permanen; 537 00:25:37,810 --> 00:25:41,300 302, Ditemukan; 304, Modifikasi; 400 permintaan Buruk; 538 00:25:41,300 --> 00:25:47,330 dan Kesalahan Server kemudian Internal 500 dan 503, Service Unavailable. 539 00:25:47,330 --> 00:25:48,140 Iya nih. 540 00:25:48,140 --> 00:25:51,490 >> AUDIENCE: Akankah kita diharapkan untuk menghafal semua status mereka? 541 00:25:51,490 --> 00:25:53,739 MARIA ZLATKOVA: Saya akan mereka pada contekan Anda. 542 00:25:53,739 --> 00:25:55,146 [TAWA] 543 00:25:55,146 --> 00:25:59,954 AUDIENCE: Apakah kita diharapkan untuk tahu apa yang memicu masing-masing? 544 00:25:59,954 --> 00:26:00,995 MARIA ZLATKOVA: Apakah mereka? 545 00:26:00,995 --> 00:26:03,870 HANNAH Blumberg: Untuk orang-orang yang kita sudah menjalankan into-- jadi pertanyaannya was-- 546 00:26:03,870 --> 00:26:08,010 MARIA ZLATKOVA: Apakah mereka diharapkan tahu apa yang masing-masing status ini 547 00:26:08,010 --> 00:26:09,330 Kode mungkin dipicu oleh? 548 00:26:09,330 --> 00:26:13,240 Jadi untuk orang-orang yang kami telah digunakan dan berlari ke dalam, saya akan mengatakan, ya. 549 00:26:13,240 --> 00:26:16,610 Jadi kita pasti melihat 200 OK dan kuliah di psets. 550 00:26:16,610 --> 00:26:19,071 Kami telah melihat 403, 404. 551 00:26:19,071 --> 00:26:20,550 Untuk yang lain? 552 00:26:20,550 --> 00:26:22,690 >> HANNAH Blumberg: Saya akan mengatakan 500 tampaknya permainan yang adil. 553 00:26:22,690 --> 00:26:23,330 >> MARIA ZLATKOVA: 500, ya. 554 00:26:23,330 --> 00:26:24,246 >> HANNAH Blumberg: Ya. 555 00:26:24,246 --> 00:26:27,006 Hanya memiliki pengertian umum dari apa yang menyebabkan mereka. 556 00:26:27,006 --> 00:26:28,880 Dan juga hanya dengan ini nama, Anda dapat jenis 557 00:26:28,880 --> 00:26:32,890 seperti membuat tebakan sebagai untuk apa yang sebenarnya menyebabkan mereka. 558 00:26:32,890 --> 00:26:36,919 Misalnya, pindah secara permanen, mungkin file dipindahkan secara permanen. 559 00:26:36,919 --> 00:26:39,328 >> AUDIENCE: Tapi pada sebelumnya ujian, ada begitu 560 00:26:39,328 --> 00:26:41,050 bagaimana Anda mengharapkan kita untuk menjawab itu? 561 00:26:41,050 --> 00:26:42,883 >> HANNAH Blumberg: Itu layak nol poin. 562 00:26:42,883 --> 00:26:45,870 Pertanyaan di atas 418 teko secara teknis status HTTP, 563 00:26:45,870 --> 00:26:47,090 tapi itu layak nol poin. 564 00:26:47,090 --> 00:26:48,320 Jelas, Anda tidak diharapkan mengenal mereka. 565 00:26:48,320 --> 00:26:49,670 >> AUDIENCE: Apakah yang nyata? 566 00:26:49,670 --> 00:26:51,970 >> HANNAH Blumberg: Ini adalah nyata satu, tapi itu tidak berarti apa-apa. 567 00:26:51,970 --> 00:26:52,700 Ini hanya lelucon. 568 00:26:52,700 --> 00:26:55,480 569 00:26:55,480 --> 00:26:57,010 Orang internet yang lucu. 570 00:26:57,010 --> 00:26:59,680 >> MARIA ZLATKOVA: pertanyaan besar, guys. 571 00:26:59,680 --> 00:27:01,452 Ada pertanyaan lain? 572 00:27:01,452 --> 00:27:04,891 >> AUDIENCE: Apa kesalahan internal server? 573 00:27:04,891 --> 00:27:06,640 MARIA ZLATKOVA: internal server error hanya 574 00:27:06,640 --> 00:27:10,050 berarti bahwa Anda telah tidak dapat berkomunikasi 575 00:27:10,050 --> 00:27:13,400 dengan server untuk beberapa alasan. 576 00:27:13,400 --> 00:27:15,400 Jadi itu belum tentu sesuatu yang ada hubungannya 577 00:27:15,400 --> 00:27:19,170 dengan klien atau sesuatu seperti itu. 578 00:27:19,170 --> 00:27:22,170 Saya tidak tahu apakah ada contoh spesifik bahwa kami telah pergi ke menjelaskan, 579 00:27:22,170 --> 00:27:23,000 tapi ya. 580 00:27:23,000 --> 00:27:23,250 >> HANNAH Blumberg: Tentu. 581 00:27:23,250 --> 00:27:25,625 Jadi misalnya, seperti mari mengatakan Anda bekerja pada mashup 582 00:27:25,625 --> 00:27:30,440 dan server Google turun untuk beberapa Alasannya, pemadaman listrik, katakanlah. 583 00:27:30,440 --> 00:27:33,400 Itu akan menjadi server internal error atau semacam of-- seperti Anda 584 00:27:33,400 --> 00:27:34,630 tidak akan mendapatkan respon balik. 585 00:27:34,630 --> 00:27:35,260 >> MARIA ZLATKOVA: Ya. 586 00:27:35,260 --> 00:27:37,050 Hanya saja ketika Anda tidak dapat berkomunikasi 587 00:27:37,050 --> 00:27:40,299 dengan server untuk beberapa alasan karena itu turun atau alasan lain. 588 00:27:40,299 --> 00:27:44,430 589 00:27:44,430 --> 00:27:47,690 Jadi melompat ke PHP. 590 00:27:47,690 --> 00:27:49,930 PHP, tidak seperti HTML, adalah bahasa pemrograman. 591 00:27:49,930 --> 00:27:54,820 Dan kami mulai menggunakannya karena itu sangat berguna untuk pengembangan web. 592 00:27:54,820 --> 00:27:56,940 >> Kami pertama kali digunakan dalam CS50 Keuangan. 593 00:27:56,940 --> 00:28:02,240 Dan pada dasarnya membantu kita membawa bersama-sama markup ini, desain, 594 00:28:02,240 --> 00:28:07,460 dan bagaimana kita benar-benar menggunakan informasi untuk menampilkan hal-hal pada halaman web. 595 00:28:07,460 --> 00:28:11,870 Jadi PHP itu sendiri berarti PHP Hypertext Preprocessor, 596 00:28:11,870 --> 00:28:15,360 jadi itu adalah backnorym rekursif dengan sendirinya. 597 00:28:15,360 --> 00:28:22,330 Dan membuka tag untuk PHP kita kiri dan panah kanan dengan tanda tanya 598 00:28:22,330 --> 00:28:23,060 dan php. 599 00:28:23,060 --> 00:28:25,890 >> Jadi kita sudah melihat banyak dari itu. 600 00:28:25,890 --> 00:28:29,150 Sekarang, kami hanya akan pergi beberapa hal dasar tentang hal itu. 601 00:28:29,150 --> 00:28:32,280 Jadi dengan PHP, variabel namanya mulai dengan tanda dolar. 602 00:28:32,280 --> 00:28:35,660 Kami tidak menentukan, sekali lagi, variabel ketik lagi. 603 00:28:35,660 --> 00:28:38,450 Sama seperti yang kita lakukan dengan C, kita tidak perlu melakukan itu. 604 00:28:38,450 --> 00:28:41,670 605 00:28:41,670 --> 00:28:44,490 >> Kita bisa melakukan banyak berbeda hal dengan variabel. 606 00:28:44,490 --> 00:28:47,750 Kita bisa menempatkan mereka bersama-sama dengan menggabungkan mereka 607 00:28:47,750 --> 00:28:52,900 dengan notasi dot, yang kita tidak bisa melakukan di C lagi. 608 00:28:52,900 --> 00:28:57,490 Sekali lagi, kami memiliki sedikit lebih fleksibilitas dengan PHP dalam hal variabel. 609 00:28:57,490 --> 00:29:00,080 Sekali lagi, kita tidak memiliki fungsi utama. 610 00:29:00,080 --> 00:29:03,370 >> Dan PHP ditafsirkan sebagai lawan disusun, 611 00:29:03,370 --> 00:29:09,970 Jadi hanya bagaimana kita membuat file C, kita tidak perlu melakukan itu untuk PHP. 612 00:29:09,970 --> 00:29:15,440 Melainkan, cara bahwa bahasa dijalankan dengan sendirinya, itu ditafsirkan. 613 00:29:15,440 --> 00:29:18,550 Dan kemudian longgar diketik hanya berarti bahwa kita 614 00:29:18,550 --> 00:29:22,490 tidak harus menentukan variabel Jenis dan jenis variabel 615 00:29:22,490 --> 00:29:25,415 dipahami pada saat runtime. 616 00:29:25,415 --> 00:29:29,185 >> AUDIENCE: Tapi apa kau maksud dengan dot Rangkaian? 617 00:29:29,185 --> 00:29:30,060 MARIA ZLATKOVA: Tentu. 618 00:29:30,060 --> 00:29:37,660 Ketika kita ingin menempatkan hal-hal together-- jadi jika kita memiliki beberapa variabel yang 619 00:29:37,660 --> 00:29:41,500 memiliki nilai 3 dan kami telah lain variabel yang memiliki nilai string, 620 00:29:41,500 --> 00:29:45,920 kita bisa menempatkan variabel bersama-sama dengan menempatkan sebuah titik di antara mereka 621 00:29:45,920 --> 00:29:46,970 dan concatenating mereka. 622 00:29:46,970 --> 00:29:52,670 Atau kita bisa membuat variabel yang disebut nama 623 00:29:52,670 --> 00:29:56,900 dan meletakkannya bersama-sama oleh concatenating dua string. 624 00:29:56,900 --> 00:30:00,680 >> Jadi jika kita memiliki string di ganda kutipan dan kami menempatkan titik setelah, 625 00:30:00,680 --> 00:30:03,660 dan kemudian kami memiliki string lain, yang akan membuat string sama sekali. 626 00:30:03,660 --> 00:30:05,242 >> AUDIENCE: OK. 627 00:30:05,242 --> 00:30:06,450 MARIA LATVIA: Apakah itu jelas? 628 00:30:06,450 --> 00:30:07,099 AUDIENCE: Ya. 629 00:30:07,099 --> 00:30:07,890 MARIA ZLATKOVA: OK. 630 00:30:07,890 --> 00:30:08,766 Iya nih. 631 00:30:08,766 --> 00:30:11,146 >> AUDIENCE: Ketika Anda mengatakan ditafsirkan bukan dikompilasi, 632 00:30:11,146 --> 00:30:14,160 Anda berbicara tentang Anda tidak perlu sebagai tertentu ketika 633 00:30:14,160 --> 00:30:15,906 datang ke PHP dibandingkan C? 634 00:30:15,906 --> 00:30:18,085 635 00:30:18,085 --> 00:30:20,710 MARIA ZLATKOVA: Ketika kita mengatakan ditafsirkan sebagai lawan disusun, 636 00:30:20,710 --> 00:30:21,850 apa yang kita maksud? 637 00:30:21,850 --> 00:30:26,220 Jadi itu berarti bahwa kita tidak perlu file yang dapat dieksekusi untuk menjalankan PHP. 638 00:30:26,220 --> 00:30:29,870 Ini berarti bahwa ia berjalan sebagai kelanjutannya. 639 00:30:29,870 --> 00:30:31,650 Apakah itu masuk akal? 640 00:30:31,650 --> 00:30:32,495 Sedikit lagi. 641 00:30:32,495 --> 00:30:34,620 HANNAH Blumberg: Jadi Anda bisa memikirkan seorang penerjemah 642 00:30:34,620 --> 00:30:38,980 sebagai program lain yang bertanggung jawab untuk pergi baris demi baris melalui PHP 643 00:30:38,980 --> 00:30:42,745 dan benar-benar dijalankan, sebagai lawan untuk menyusun semua turun ke biner. 644 00:30:42,745 --> 00:30:46,050 Ini tidak benar-benar berarti apa-apa tentang bagaimana spesifik kita perlu. 645 00:30:46,050 --> 00:30:49,470 Kami masih harus tepat, dan tidak lupa titik koma Anda, dan pastikan 646 00:30:49,470 --> 00:30:51,470 Anda memiliki tanda dolar Anda, dan hal-hal seperti itu. 647 00:30:51,470 --> 00:30:52,240 Pertanyaan bagus. 648 00:30:52,240 --> 00:30:53,115 >> MARIA ZLATKOVA: Ya. 649 00:30:53,115 --> 00:30:55,590 Jadi baris demi baris, seperti lawan dengan file C, 650 00:30:55,590 --> 00:30:59,100 kita harus membuat seluruh akhir sebelum kita benar-benar bisa menjalankannya. 651 00:30:59,100 --> 00:31:00,360 Itulah perbedaan utama. 652 00:31:00,360 --> 00:31:02,655 Tapi sekali lagi, kita tidak bisa benar-benar menjadi kurang spesifik. 653 00:31:02,655 --> 00:31:08,760 654 00:31:08,760 --> 00:31:13,950 Jadi array di PHP merupakan sebenarnya merupakan peta memerintahkan. 655 00:31:13,950 --> 00:31:17,550 >> Jadi nilai-nilai array asosiasi untuk kunci. 656 00:31:17,550 --> 00:31:23,350 Dua cara untuk mendeklarasikan array, berdasarkan sintaks ini, 657 00:31:23,350 --> 00:31:26,380 kita bisa lebih eksplisit mengatakan kami memiliki sebuah array 658 00:31:26,380 --> 00:31:31,010 dan kami memiliki key1 ini yang memetakan ke value1 ini, key2 yang memetakan nilai2. 659 00:31:31,010 --> 00:31:34,660 Atau kita hanya dapat membuat sebuah array yang berisi nilai-nilai itu sendiri 660 00:31:34,660 --> 00:31:38,360 dan kemudian tombol yang dipahami dengan cara. 661 00:31:38,360 --> 00:31:40,000 Pertanyaan ini? 662 00:31:40,000 --> 00:31:42,500 >> AUDIENCE: Apa yang akan tombol berada di contoh kedua? 663 00:31:42,500 --> 00:31:47,100 664 00:31:47,100 --> 00:31:47,920 0, 1, 2, 3? 665 00:31:47,920 --> 00:31:50,650 666 00:31:50,650 --> 00:31:55,780 >> MARIA ZLATKOVA: Misalnya, itu hanya kunci dalam belum tentu 667 00:31:55,780 --> 00:31:56,550 membuat perbedaan. 668 00:31:56,550 --> 00:32:01,720 Mereka hanya menentukan bagaimana Anda bisa menggunakan nilai-nilai di dalamnya. 669 00:32:01,720 --> 00:32:08,660 Jadi jika kita memiliki foreach loop dalam PHP yang akan 670 00:32:08,660 --> 00:32:14,760 memungkinkan kita untuk pergi melalui semua nilai, kita bisa melalui semua nilai, 671 00:32:14,760 --> 00:32:19,570 bahkan jika kita memiliki atau tidak didefinisikan kunci tertentu dalam situs 672 00:32:19,570 --> 00:32:20,820 sintaks sebelumnya. 673 00:32:20,820 --> 00:32:23,460 >> Begitu pun dengan semacam ini array, kita masih bisa 674 00:32:23,460 --> 00:32:26,260 memiliki loop foreach yang melewati setiap 675 00:32:26,260 --> 00:32:31,240 dari nilai-nilai dalam kunci dalam array. 676 00:32:31,240 --> 00:32:36,180 Jadi sintaks foreach lingkaran, kita mulai dengan array. 677 00:32:36,180 --> 00:32:38,720 678 00:32:38,720 --> 00:32:43,900 Variabel $ arr ini array kita yang sebenarnya bahwa kita ditetapkan dalam slide sebelumnya 679 00:32:43,900 --> 00:32:47,550 sebagai nilai yang benar-benar terjadi melalui masing-masing nilai, 680 00:32:47,550 --> 00:32:50,122 terlepas dari apa pun kami memiliki kunci atau tidak. 681 00:32:50,122 --> 00:32:53,080 Dan kemudian kita bisa melakukan sesuatu dengan nilai dalam loop foreach. 682 00:32:53,080 --> 00:32:57,730 Jadi sekali lagi, jika kita memiliki sebuah array seperti ini di sini created-- 683 00:32:57,730 --> 00:33:03,270 jadi kami memiliki kunci dari foo dan nilai bar, kunci baz dan nilai qux-- 684 00:33:03,270 --> 00:33:09,730 kita dapat memiliki loop foreach yang melewati array sebagai nilai kunci 685 00:33:09,730 --> 00:33:11,900 dan kemudian melakukan sesuatu dengan kunci dan / atau nilai. 686 00:33:11,900 --> 00:33:15,980 Tapi kita tidak harus selalu harus memiliki foreach loop yang 687 00:33:15,980 --> 00:33:19,410 melewati array sebagai peta kunci untuk nilai. 688 00:33:19,410 --> 00:33:26,060 Kita bisa pergi melalui loop foreach array sebagai nilai. 689 00:33:26,060 --> 00:33:28,990 >> HANNAH Blumberg: Dan saya pikir to-- adalah pertanyaan Anda, apa 690 00:33:28,990 --> 00:33:31,229 adalah indeks implisit? 691 00:33:31,229 --> 00:33:31,895 AUDIENCE: Kinda. 692 00:33:31,895 --> 00:33:32,240 MARIA ZLATKOVA: Oh. 693 00:33:32,240 --> 00:33:33,406 HANNAH Blumberg: Ya, ya. 694 00:33:33,406 --> 00:33:36,150 Jadi pada dasarnya, jika Anda tidak menentukan kunci, itu akan menjadi 01. 695 00:33:36,150 --> 00:33:37,140 >> MARIA ZLATKOVA: Ya. 696 00:33:37,140 --> 00:33:41,718 Sama seperti dengan C, itu nol diindeks jika Anda tidak menentukan kunci. 697 00:33:41,718 --> 00:33:42,384 AUDIENCE: Maaf. 698 00:33:42,384 --> 00:33:43,827 Bisakah Anda mencoba berbicara sedikit lebih keras? 699 00:33:43,827 --> 00:33:45,270 Saya mengalami sedikit kesulitan mendengar segala sesuatu. 700 00:33:45,270 --> 00:33:46,478 >> MARIA ZLATKOVA: Aku sangat menyesal. 701 00:33:46,478 --> 00:33:48,439 Ya tentu saja. 702 00:33:48,439 --> 00:33:50,230 Jadi Anda ingin saya untuk pergi lebih ini lagi? 703 00:33:50,230 --> 00:33:51,680 Atau this-- 704 00:33:51,680 --> 00:33:54,930 AUDIENCE: Jadi pada slide-- sebelumnya jika Anda hanya bisa kembali untuk satu detik. 705 00:33:54,930 --> 00:33:57,313 MARIA ZLATKOVA: Tentu saja, maaf. 706 00:33:57,313 --> 00:33:59,237 AUDIENCE: Jadi yang kedua Array sini tidak 707 00:33:59,237 --> 00:34:04,135 tampaknya memiliki nilai untuk kunci, semacam [? hal menyebabkan. ?] 708 00:34:04,135 --> 00:34:05,343 MARIA ZLATKOVA: Benar, benar. 709 00:34:05,343 --> 00:34:07,608 AUDIENCE: Jadi bagaimana cara kerja yang ketika Anda mengatakan itu semua atau tidak. 710 00:34:07,608 --> 00:34:08,969 Bagi saya, yang terlihat seperti Sebuah [? foo?] sudah. 711 00:34:08,969 --> 00:34:10,093 >> MARIA ZLATKOVA: Ya, ya. 712 00:34:10,093 --> 00:34:12,969 Jadi sekali lagi, ini adalah memerintahkan peta dalam pengertian ini 713 00:34:12,969 --> 00:34:15,639 bahwa ada dipahami, misalnya, indeks 714 00:34:15,639 --> 00:34:20,159 di sini dapat dipahami sebagai 0, 1, 2, 3. 715 00:34:20,159 --> 00:34:25,929 Sekali lagi, itu memiliki orang- indeks setara kami 716 00:34:25,929 --> 00:34:28,980 memiliki kunci dipetakan ke nilai-nilai. 717 00:34:28,980 --> 00:34:34,710 Jadi jika kunci kami adalah 0-- maaf. 718 00:34:34,710 --> 00:34:36,524 >> HANNAH Blumberg: Tidak, ada yang kapur di sini. 719 00:34:36,524 --> 00:34:36,929 Ini sebenarnya benar-benar bagus. 720 00:34:36,929 --> 00:34:37,460 >> MARIA ZLATKOVA: Itu bagus. 721 00:34:37,460 --> 00:34:38,260 OKE. 722 00:34:38,260 --> 00:34:49,489 Jadi sekali lagi, $ arr 0 akan kunci untuk nilai 1. 723 00:34:49,489 --> 00:34:51,138 0 akan menjadi kunci untuk nilai 1. 724 00:34:51,138 --> 00:34:51,971 AUDIENCE: Maaf. 725 00:34:51,971 --> 00:34:53,190 Ini terlihat. 726 00:34:53,190 --> 00:34:53,659 >> HANNAH Blumberg: Baiklah, Nevermind. 727 00:34:53,659 --> 00:34:54,980 Kapur adalah ide yang buruk. 728 00:34:54,980 --> 00:34:58,030 Aku mengambil kembali. 729 00:34:58,030 --> 00:35:01,425 Anda dapat menganggap tombol sebagai 0 peta dengan nilai 1. 730 00:35:01,425 --> 00:35:02,300 MARIA ZLATKOVA: Ya. 731 00:35:02,300 --> 00:35:04,630 Jadi ini adalah 0, ini 1, 2, 3. 732 00:35:04,630 --> 00:35:05,760 Ini dapat kunci Anda. 733 00:35:05,760 --> 00:35:10,020 Anda dapat menganggap mereka as-- ya. 734 00:35:10,020 --> 00:35:12,740 Jadi, bukannya memiliki kunci eksplisit, mereka 735 00:35:12,740 --> 00:35:17,180 semacam dipahami sebagai indeks mulai dari 0. 736 00:35:17,180 --> 00:35:21,630 737 00:35:21,630 --> 00:35:24,820 Kapur tidak membantu. 738 00:35:24,820 --> 00:35:25,722 Ya. 739 00:35:25,722 --> 00:35:30,914 >> AUDIENCE: Untuk loop foreach, jika kita ingin melihat sebagai nilai, 740 00:35:30,914 --> 00:35:33,245 itu akan hanya secara otomatis indeks 0? 741 00:35:33,245 --> 00:35:34,120 MARIA ZLATKOVA: Ya. 742 00:35:34,120 --> 00:35:35,745 Ini akan pergi melalui masing-masing nilai. 743 00:35:35,745 --> 00:35:39,130 AUDIENCE: [tidak terdengar] sebagai 0 atau akan yang hanya melakukan 0? 744 00:35:39,130 --> 00:35:43,710 >> MARIA ZLATKOVA: Anda akan memiliki mengatakan sebagai tanda dolar dan kemudian 745 00:35:43,710 --> 00:35:46,266 beberapa nama variabel, nilai. 746 00:35:46,266 --> 00:35:47,182 AUDIENCE: [tidak terdengar]. 747 00:35:47,182 --> 00:35:50,048 748 00:35:50,048 --> 00:35:50,964 MARIA ZLATKOVA: Maaf? 749 00:35:50,964 --> 00:35:52,839 AUDIENCE: Maaf, aku hanya mencoba untuk mengingat. 750 00:35:52,839 --> 00:35:57,190 Bagaimana Anda bahwa jika Anda dapat melakukannya otomatis pengindeksan hanya 0 dari? 751 00:35:57,190 --> 00:36:00,780 >> MARIA ZLATKOVA: Jadi bagaimana Anda melakukannya jika Anda tidak memiliki nama kunci tertentu? 752 00:36:00,780 --> 00:36:01,710 >> AUDIENCE: Ya. 753 00:36:01,710 --> 00:36:07,820 >> MARIA ZLATKOVA: Anda akan hanya define-- hanya mengatakan pada diri sendiri karena beberapa nama. 754 00:36:07,820 --> 00:36:17,950 Jadi dalam psets Anda, kalian mungkin ingat foreach $ row sebagai $ baris, 755 00:36:17,950 --> 00:36:24,610 kita buat diri kita $ row ini mengatakan kami ingin pergi melalui baris sebagai $ baris. 756 00:36:24,610 --> 00:36:28,360 Meskipun kita tidak memiliki $ ini eksplisit baris didefinisikan, 757 00:36:28,360 --> 00:36:31,990 kita hanya bisa pergi dan mengatakan ini bisa menjadi kunci kami, 758 00:36:31,990 --> 00:36:33,615 dan hanya pergi melalui masing-masing nilai. 759 00:36:33,615 --> 00:36:37,295 760 00:36:37,295 --> 00:36:41,660 >> AUDIENCE: Jadi adalah nilai variabel baru kita menciptakan untuk menyimpan [tidak terdengar]? 761 00:36:41,660 --> 00:36:46,820 762 00:36:46,820 --> 00:36:49,990 >> MARIA ZLATKOVA: Jadi bukan inheren variabel baru. 763 00:36:49,990 --> 00:37:00,310 Ini adalah variabel yang mengacu pada dalam array untuk masing-masing. 764 00:37:00,310 --> 00:37:02,060 HANNAH Blumberg: Ini nama variabel baru. 765 00:37:02,060 --> 00:37:04,018 MARIA ZLATKOVA: Ya, itu nama variabel baru, 766 00:37:04,018 --> 00:37:06,680 tapi itu tidak inherently-- ya. 767 00:37:06,680 --> 00:37:08,950 Ini hanya variabel baru Anda bisa melakukan itu. 768 00:37:08,950 --> 00:37:12,680 Jadi bagaimana kita lakukan $ baris sebagai $ baris, baris 769 00:37:12,680 --> 00:37:17,980 adalah nama variabel baru yang kita bisa menciptakan dalam lingkaran foreach kami. 770 00:37:17,980 --> 00:37:22,065 Itu tidak harus ada sebelumnya sebelum itu. 771 00:37:22,065 --> 00:37:25,777 >> AUDIENCE: Bisakah Anda pergi melalui logika untuk masing-masing, dengan menggunakan contoh di sana? 772 00:37:25,777 --> 00:37:26,610 MARIA ZLATKOVA: Mhm. 773 00:37:26,610 --> 00:37:31,240 774 00:37:31,240 --> 00:37:32,080 Oh maaf. 775 00:37:32,080 --> 00:37:33,780 Berikut contoh. 776 00:37:33,780 --> 00:37:34,280 Yakin. 777 00:37:34,280 --> 00:37:38,950 Jadi untuk setiap array-- sehingga yang berarti pergi ke array ini 778 00:37:38,950 --> 00:37:43,930 sebagai kunci value-- yang akan untuk pergi melalui array ini 779 00:37:43,930 --> 00:37:49,480 dan pertama pergi dan mendapatkan foo, yang foo kunci dan bar nilai. 780 00:37:49,480 --> 00:37:51,570 Dan kemudian pada kedua iterasi dari loop, 781 00:37:51,570 --> 00:37:55,090 itu akan pergi melalui dan mengambil yang baz kunci dan nilai qux. 782 00:37:55,090 --> 00:38:00,512 Dan kemudian Anda dapat melakukan sesuatu dengan salah satu dari mereka atau keduanya. 783 00:38:00,512 --> 00:38:03,488 >> AUDIENCE: Jadi ide di balik memiliki titik kunci untuk nilai, 784 00:38:03,488 --> 00:38:07,470 apa yang Anda akhirnya mengakses? 785 00:38:07,470 --> 00:38:10,680 >> MARIA ZLATKOVA: Apa ide memiliki menunjuk kunci untuk menghargai? 786 00:38:10,680 --> 00:38:16,400 Ini hanya konvensi lain, lain cara melalui array 787 00:38:16,400 --> 00:38:22,600 dan mampu mengakses baik kunci atau nilai atau keduanya dan menggunakannya. 788 00:38:22,600 --> 00:38:27,100 >> AUDIENCE: Apa peran untuk memerintahkan agar foreach berjalan di? 789 00:38:27,100 --> 00:38:29,250 Jadi jika kita menambahkan elemen ke array kemudian, 790 00:38:29,250 --> 00:38:32,140 akan mereka menjadi orang-orang pertama disebut dalam array foreach, 791 00:38:32,140 --> 00:38:33,750 atau akan nanti? 792 00:38:33,750 --> 00:38:37,770 >> MARIA ZLATKOVA: Jadi apa urutan yang foreach 793 00:38:37,770 --> 00:38:39,210 lingkaran berjalan melalui array di? 794 00:38:39,210 --> 00:38:42,220 Ia pergi melalui pertama elemen ke elemen terakhir, 795 00:38:42,220 --> 00:38:43,400 ke elemen ditambahkan terakhir. 796 00:38:43,400 --> 00:38:48,020 Jika Anda menambahkan elemen di kemudian hari, mereka akan akan accessed-- elemen pertama akan 797 00:38:48,020 --> 00:38:51,410 diakses sebagai yang pertama elemen array, 798 00:38:51,410 --> 00:38:57,620 dan kemudian Anda akan pergi melalui masing-masing unsur sebagai semacam sebuah ordered-- 799 00:38:57,620 --> 00:39:02,930 bukan memerintahkan, tetapi cara yang mereka telah dimasukkan ke dalam array. 800 00:39:02,930 --> 00:39:06,855 >> AUDIENCE: elemen Jadi baru ditambahkan di kemudian hari? 801 00:39:06,855 --> 00:39:10,680 Jadi mereka added-- mereka akan menjadi yang terakhir di [? perulangan. ?] 802 00:39:10,680 --> 00:39:14,280 >> MARIA ZLATKOVA: elemen New can-- pada dasarnya, ketika unsur-unsur baru ditambahkan, 803 00:39:14,280 --> 00:39:16,520 yang mereka ditambahkan ke akhir array? 804 00:39:16,520 --> 00:39:17,632 >> AUDIENCE: Ya. 805 00:39:17,632 --> 00:39:18,840 MARIA ZLATKOVA: Saya percaya begitu. 806 00:39:18,840 --> 00:39:20,850 Iya nih. 807 00:39:20,850 --> 00:39:24,330 Dan kemudian dengan foreach loop Anda, setelah Anda menambahkan elemen baru 808 00:39:24,330 --> 00:39:26,790 dan Anda pergi melalui mereka, unsur-unsur baru akan 809 00:39:26,790 --> 00:39:30,930 menjadi accessed-- unsur baru, apakah itu ditambahkan terakhir, itu akan diakses terakhir. 810 00:39:30,930 --> 00:39:34,416 >> AUDIENCE: Dapatkah Anda hanya memberikan contoh sesuatu yang akan [tidak terdengar] 811 00:39:34,416 --> 00:39:37,404 dengan sesuatu dengan nilai seperti [tak terdengar] atau nilai, 812 00:39:37,404 --> 00:39:38,910 suka bagaimana Anda akan memformat itu? 813 00:39:38,910 --> 00:39:39,785 >> MARIA ZLATKOVA: Tentu. 814 00:39:39,785 --> 00:39:42,340 815 00:39:42,340 --> 00:39:46,410 Dapatkah saya memberikan contoh dari apa yang kita akan melakukan dengan nilai? 816 00:39:46,410 --> 00:39:52,440 Jadi apa yang kalian mungkin akrab dengan adalah bahwa kita sudah melalui array 817 00:39:52,440 --> 00:39:55,380 dan pada dasarnya dicetak masing-masing elemen, 818 00:39:55,380 --> 00:40:00,910 misalnya, sebagai bagian dari daftar memerintahkan atau sesuatu yang. 819 00:40:00,910 --> 00:40:02,674 Apakah itu masuk akal atau kita ingin to-- 820 00:40:02,674 --> 00:40:04,340 AUDIENCE: Bisakah kita mencetak nilai-nilai ini keluar? 821 00:40:04,340 --> 00:40:13,220 MARIA ZLATKOVA: Ya, kita bisa mencetak dan kemudian pada dasarnya $ nilai karena pada 822 00:40:13,220 --> 00:40:16,570 bahwa nilai tertentu, kami akan mencetak nilai di dalamnya. 823 00:40:16,570 --> 00:40:20,150 Jadi jika kita berada di iterasi pertama kami itu dan kami dicetak $ nilai, 824 00:40:20,150 --> 00:40:23,775 kami akan mencetak bar. 825 00:40:23,775 --> 00:40:27,020 >> AUDIENCE: Apakah ada juga untuk loop dalam PHP atau hanya loop foreach? 826 00:40:27,020 --> 00:40:30,430 >> MARIA ZLATKOVA: Ada juga untuk loop di PHP. 827 00:40:30,430 --> 00:40:33,399 Dan logika mereka adalah sebagian besar sama seperti apa yang telah digunakan untuk. 828 00:40:33,399 --> 00:40:34,690 AUDIENCE: Jadi nilainya adalah nol. 829 00:40:34,690 --> 00:40:35,090 MARIA ZLATKOVA: Ini seperti sama. 830 00:40:35,090 --> 00:40:35,590 Ya. 831 00:40:35,590 --> 00:40:37,747 AUDIENCE: aku hanya akan bertanya. 832 00:40:37,747 --> 00:40:39,695 Jadi, ketika Anda mendeklarasikan array, Anda tidak perlu 833 00:40:39,695 --> 00:40:42,617 untuk mengatakan apa ukuran itu akan menjadi, yang berarti bahwa Anda hanya dapat 834 00:40:42,617 --> 00:40:44,417 menambah dan mengambil elemen [tidak terdengar]. 835 00:40:44,417 --> 00:40:45,250 MARIA ZLATKOVA: Yup. 836 00:40:45,250 --> 00:40:45,750 Oke. 837 00:40:45,750 --> 00:40:46,251 Persis. 838 00:40:46,251 --> 00:40:48,875 Ketika kita mendeklarasikan array, kita tidak perlu mengatakan apa ukuran itu, 839 00:40:48,875 --> 00:40:51,022 jadi kami hanya dapat menambahkan elemen ke atasnya kemudian juga. 840 00:40:51,022 --> 00:40:55,075 841 00:40:55,075 --> 00:40:55,700 Pertanyaan lebih? 842 00:40:55,700 --> 00:40:59,870 843 00:40:59,870 --> 00:41:05,950 Jadi membawa PHP dan HTML bersama-sama, apa yang kita telah seen-- baik, 844 00:41:05,950 --> 00:41:15,130 misalnya, dalam contoh ini, kita memiliki bentuk HTML yang memiliki field input. 845 00:41:15,130 --> 00:41:18,830 >> Dan field input hanya nama dan kemudian memiliki tombol Submit. 846 00:41:18,830 --> 00:41:26,040 Dan ketika Anda menekan Kirim tombol, dalam file hello.php kami, 847 00:41:26,040 --> 00:41:32,130 karena metode untuk form adalah mendapatkan, kita bisa mengakses apa pun di nama 848 00:41:32,130 --> 00:41:40,360 dengan ini mendapatkan variabel global yang is-- sintaks untuk itu adalah $ _GET. 849 00:41:40,360 --> 00:41:44,520 Dan kemudian kita dapat mengakses apapun input pengguna dalam bentuk nama yang 850 00:41:44,520 --> 00:41:47,410 dengan menentukan nama bidang itu. 851 00:41:47,410 --> 00:41:51,480 852 00:41:51,480 --> 00:41:55,060 >> Pertanyaan lain atau pertanyaan pada contoh khusus ini? 853 00:41:55,060 --> 00:41:58,275 >> AUDIENCE: Dimana PHP? 854 00:41:58,275 --> 00:41:59,150 MARIA ZLATKOVA: Berikut. 855 00:41:59,150 --> 00:42:01,150 Jadi ini adalah tag pembuka untuk PHP. 856 00:42:01,150 --> 00:42:01,530 >> AUDIENCE: Oh, benar. 857 00:42:01,530 --> 00:42:02,363 >> MARIA ZLATKOVA: Ya. 858 00:42:02,363 --> 00:42:05,320 859 00:42:05,320 --> 00:42:09,609 >> HANNAH Blumberg: The = adalah istilah untuk ini adalah PHP dan hanya gema. 860 00:42:09,609 --> 00:42:10,150 AUDIENCE: Oh. 861 00:42:10,150 --> 00:42:10,720 MARIA ZLATKOVA: Ya, maaf. 862 00:42:10,720 --> 00:42:12,040 Saya harus membuat yang jelas. 863 00:42:12,040 --> 00:42:13,759 >> HANNAH Blumberg: Print. 864 00:42:13,759 --> 00:42:16,800 MARIA ZLATKOVA: Ini hanya fungsi yang memungkinkan kita untuk mencetak sesuatu. 865 00:42:16,800 --> 00:42:19,795 866 00:42:19,795 --> 00:42:20,420 Pertanyaan besar. 867 00:42:20,420 --> 00:42:24,140 868 00:42:24,140 --> 00:42:25,495 Jadi going-- ya. 869 00:42:25,495 --> 00:42:31,940 >> AUDIENCE: Apakah ada akan cukup sedikit coding tangan PHP dan HTML 870 00:42:31,940 --> 00:42:33,450 pada kuis 1? 871 00:42:33,450 --> 00:42:36,310 872 00:42:36,310 --> 00:42:38,810 MARIA ZLATKOVA: Ada bisa menjadi cukup banyak interpretasi 873 00:42:38,810 --> 00:42:43,330 PHP dan HTML, belum tentu seperti sejumlah besar coding, 874 00:42:43,330 --> 00:42:46,960 meskipun Anda mungkin harus menulis loop foreach, meskipun, untuk loop. 875 00:42:46,960 --> 00:42:49,790 Salah satu loop yang kita menutupi di sini adalah permainan yang adil. 876 00:42:49,790 --> 00:42:51,889 Dan itu sebagian besar itu. 877 00:42:51,889 --> 00:42:53,430 HANNAH Blumberg: Saya akan siap. 878 00:42:53,430 --> 00:42:57,010 Dengan cara yang sama bahwa kami meminta Anda untuk menulis sekelompok fungsi C pada kuis 0, 879 00:42:57,010 --> 00:42:59,766 Saya akan siap untuk melakukan sama di PHP dan JavaScript. 880 00:42:59,766 --> 00:43:00,640 MARIA ZLATKOVA: Ya. 881 00:43:00,640 --> 00:43:03,210 HANNAH Blumberg: Saya akan mengatakan sebuah little-- seperti kita tidak 882 00:43:03,210 --> 00:43:06,251 akan membuat Anda menulis HTML besar Halaman hanya karena itulah sedikit 883 00:43:06,251 --> 00:43:08,240 membosankan, tetapi Anda mungkin memiliki bagian-bagian. 884 00:43:08,240 --> 00:43:09,310 Itu pertandingan benar-benar adil. 885 00:43:09,310 --> 00:43:11,082 Seperti halaman HTML kecil, benar-benar adil. 886 00:43:11,082 --> 00:43:11,623 AUDIENCE: OK. 887 00:43:11,623 --> 00:43:13,814 Bagaimana di JavaScript juga? 888 00:43:13,814 --> 00:43:14,730 HANNAH Blumberg: Ya. 889 00:43:14,730 --> 00:43:15,250 Permainan yang adil JavaScript ini. 890 00:43:15,250 --> 00:43:15,635 >> MARIA ZLATKOVA: Ya. 891 00:43:15,635 --> 00:43:16,801 Itu pertandingan benar-benar adil. 892 00:43:16,801 --> 00:43:19,280 HANNAH Blumberg: Kita akan dengan yang di seperti 10 menit. 893 00:43:19,280 --> 00:43:23,750 >> MARIA ZLATKOVA: SQL, sekali lagi, Structured Query Bahasa. 894 00:43:23,750 --> 00:43:28,651 Pada dasarnya memungkinkan kita untuk mengelola data dalam manajemen database relasional 895 00:43:28,651 --> 00:43:29,150 sistem. 896 00:43:29,150 --> 00:43:31,149 Itu hanya pada dasarnya berarti bahwa kita punya tempat 897 00:43:31,149 --> 00:43:37,980 untuk menyimpan beberapa data yang kita mungkin ingin digunakan dalam website atau dalam bentuk lain. 898 00:43:37,980 --> 00:43:42,190 Dan kemudian kita memiliki pertanyaan untuk mendapatkan informasi dari database kami, 899 00:43:42,190 --> 00:43:44,320 atau untuk memasukkan informasi di dalamnya. 900 00:43:44,320 --> 00:43:47,560 Banyak umum UPDATE ones--, INSERT, SELECT, dan DELETE. 901 00:43:47,560 --> 00:43:50,790 >> Jadi untuk UPDATE, ini adalah sintaks untuk memperbarui data dalam database. 902 00:43:50,790 --> 00:43:53,330 903 00:43:53,330 --> 00:43:57,340 Memperbarui tabel ini disebut meja dengan mengatakan SET, 904 00:43:57,340 --> 00:44:04,170 kita dapat mengatur beberapa nilai dalam semua baris ke sesuatu yang sama yang lain. 905 00:44:04,170 --> 00:44:09,410 Jadi kita juga bisa menentukan beberapa spesifik entri yang ingin kita memodifikasi 906 00:44:09,410 --> 00:44:11,240 dan yang dapat menggunakan MANA. 907 00:44:11,240 --> 00:44:16,380 Dan kita dapat menentukan bahwa kita hanya ingin memodifikasi beberapa baris di mana rumah untuk, 908 00:44:16,380 --> 00:44:19,830 jika kita memiliki meja siswa dan semua siswa memiliki rumah, 909 00:44:19,830 --> 00:44:24,890 jadi kami hanya akan memodifikasi beberapa nilai di mana rumah sama Currier, 910 00:44:24,890 --> 00:44:25,430 sebagai contoh. 911 00:44:25,430 --> 00:44:29,120 912 00:44:29,120 --> 00:44:31,800 >> Untuk INSERT, kita dapat menyisipkan nilai-nilai tertentu ke dalam tabel. 913 00:44:31,800 --> 00:44:35,150 Jadi INSERT INTO tabel, dan kemudian nilai-nilai, 914 00:44:35,150 --> 00:44:39,080 dan kemudian di kurung, kita tentukan yang menghargai Anda ingin menyisipkan. 915 00:44:39,080 --> 00:44:43,220 Jadi INSERT INTO tabel, col1 dan col2, nilai VAL1 dan VAL2. 916 00:44:43,220 --> 00:44:48,930 Jadi ini menyisipkan dasarnya baris baru ke dalam tabel yang berisi nilai-nilai 1 dan 2 917 00:44:48,930 --> 00:44:50,850 di bawah kolom 1 dan 2. 918 00:44:50,850 --> 00:44:54,760 >> Dan kemudian kita akan pergi contoh singkat tentang bagaimana ini terlihat 919 00:44:54,760 --> 00:44:56,310 seperti dalam database kami sedikit. 920 00:44:56,310 --> 00:44:58,685 Tetapi permintaan akhir ini bahwa saya pikir kita akan pergi, 921 00:44:58,685 --> 00:45:01,450 SELECT, itu hanya memungkinkan kita untuk memilih data dari tabel 922 00:45:01,450 --> 00:45:03,080 untuk mungkin menggunakannya setelah itu. 923 00:45:03,080 --> 00:45:05,830 Dan cara kita melakukan hal ini adalah kita hanya menyimpannya dalam beberapa variabel. 924 00:45:05,830 --> 00:45:07,780 Dan kemudian kita mungkin dapat menggunakannya lagi. 925 00:45:07,780 --> 00:45:10,260 >> Jadi Bintang SELECT berarti memilih semua. 926 00:45:10,260 --> 00:45:13,280 Itu hanya sebuah singkatan untuk memilih semua. 927 00:45:13,280 --> 00:45:19,760 DARI MANA meja, kami sedang mencari untuk beberapa kondisi tertentu, 928 00:45:19,760 --> 00:45:22,290 jadi di mana kolom sama sesuatu, misalnya. 929 00:45:22,290 --> 00:45:24,410 Jika kita hanya ingin pilih semua dari meja, 930 00:45:24,410 --> 00:45:28,400 ini hanya memilih semua kolom dan semua baris dari tabel. 931 00:45:28,400 --> 00:45:32,040 >> Dan kemudian DELETE FROM table MANA col sama sesuatu, 932 00:45:32,040 --> 00:45:36,440 ini hanya menghapus beberapa baris dari meja kami 933 00:45:36,440 --> 00:45:38,860 di mana kita memiliki beberapa kondisi tertentu. 934 00:45:38,860 --> 00:45:41,870 Dalam hal ini, kondisi adalah kolom sama dengan sesuatu. 935 00:45:41,870 --> 00:45:43,460 Jadi hanya contoh cepat dari ini. 936 00:45:43,460 --> 00:45:49,100 Jika kita memiliki tabel ini di sini dan kami masukkan ke dalam tabel, nilai-nilai ini, 937 00:45:49,100 --> 00:45:50,400 yang akan menyisipkan baris baru. 938 00:45:50,400 --> 00:45:56,380 Dan jika kita memiliki auto-increment, ini akan hanya selisih ID kita dari 0 1 sampai 2. 939 00:45:56,380 --> 00:46:00,010 >> Jika kita memilih semua dari siswa, itu hanya mengembalikan semua bidang dan semua baris. 940 00:46:00,010 --> 00:46:02,430 Dimana tahun lebih besar dari atau sama dengan 2016, 941 00:46:02,430 --> 00:46:04,390 yang hanya akan kembali Hannah dan diriku sendiri. 942 00:46:04,390 --> 00:46:08,360 Dan kemudian jika kita hanya dipilih tahun id dan tahun DARI siswa 943 00:46:08,360 --> 00:46:11,710 di mana rumah Cabot House, yang akan, lagi, kembali Hannah dan saya sendiri. 944 00:46:11,710 --> 00:46:14,430 >> Kemudian jika kita dihapus dari siswa di mana nama sama dengan Rob, 945 00:46:14,430 --> 00:46:16,760 yang akan menghapus seluruh baris. 946 00:46:16,760 --> 00:46:19,696 Dan kemudian jika kita mengatur Nama, siswa UPDATE 947 00:46:19,696 --> 00:46:21,570 Nama SET sama dengan Daven MANA rumah sama 948 00:46:21,570 --> 00:46:27,010 Cabot House, yang akan pergi ke baris itu dan kemudian memperbarui nama. 949 00:46:27,010 --> 00:46:31,470 >> Dan kemudian beberapa jenis SQL data CHAR, VARCHAR, INT, dan FLOAT. 950 00:46:31,470 --> 00:46:32,760 Ini adalah permainan yang adil. 951 00:46:32,760 --> 00:46:36,740 Aku akan pergi lagi dan pastikan Anda tahu 952 00:46:36,740 --> 00:46:40,930 dan mereka pada lembar contekan Anda, apa masing-masing karakter 953 00:46:40,930 --> 00:46:44,140 telah digunakan untuk, apa Anda menggunakan mereka pada psets Anda, 954 00:46:44,140 --> 00:46:48,050 dan pastikan Anda akrab dan nyaman dengan harus memilih 955 00:46:48,050 --> 00:46:51,450 dari jenis data yang berbeda dalam pset Anda. 956 00:46:51,450 --> 00:46:51,950 Iya nih. 957 00:46:51,950 --> 00:46:54,300 >> AUDIENCE: Apa yang tabel yang disimpan? 958 00:46:54,300 --> 00:46:57,119 Ya, di mana tabel ini disimpan? 959 00:46:57,119 --> 00:46:59,160 MARIA ZLATKOVA: Nah, sekarang, itu tidak disimpan. 960 00:46:59,160 --> 00:47:00,700 Pokoknya, di mana tabel ini disimpan? 961 00:47:00,700 --> 00:47:04,503 Tetapi dapat disimpan dalam database SQL. 962 00:47:04,503 --> 00:47:07,330 >> AUDIENCE: Dan di mana database SQL? 963 00:47:07,330 --> 00:47:11,200 Dalam komputer, secara online di suatu tempat, server? 964 00:47:11,200 --> 00:47:15,000 >> MARIA ZLATKOVA: Ini bisa menjadi beberapa hal yang berbeda. 965 00:47:15,000 --> 00:47:19,690 >> HANNAH Blumberg: Kami telah dihubungkan dengan Tabel SQL sebagian besar dengan phpMyAdmin. 966 00:47:19,690 --> 00:47:22,060 Jadi kita bisa meminta server untuk menyimpan mereka untuk kita. 967 00:47:22,060 --> 00:47:23,830 Kita bisa menyimpannya di komputer kita sendiri. 968 00:47:23,830 --> 00:47:27,950 >> MARIA ZLATKOVA: Ini tergantung pada bagaimana Anda ingin melakukannya sendiri. 969 00:47:27,950 --> 00:47:30,075 Tapi kami telah menyimpan mereka, sebagai Hannah disebutkan, 970 00:47:30,075 --> 00:47:31,755 pada phpMyAdmin, yang online. 971 00:47:31,755 --> 00:47:36,550 972 00:47:36,550 --> 00:47:39,280 Dan kemudian cara kita menggunakan PHP dan SQL, kita menyimpannya 973 00:47:39,280 --> 00:47:43,450 ke dalam beberapa variabel apa yang telah kita tanya untuk. 974 00:47:43,450 --> 00:47:48,370 >> Jadi jika kita SELECT semua DARI sejarah dimana user_id sama dengan id SESI, 975 00:47:48,370 --> 00:47:53,900 yang akan memilih semua baris untuk orang tertentu yang 976 00:47:53,900 --> 00:47:58,327 login dari sejarah meja dan mengurutkan mereka ke dalam baris. 977 00:47:58,327 --> 00:48:00,410 Sebuah hal yang keren untuk tahu adalah bahwa fungsi permintaan CS50 ini 978 00:48:00,410 --> 00:48:02,180 melindungi terhadap tag SQL injection. 979 00:48:02,180 --> 00:48:07,420 Itu hanya berarti bahwa itu memastikan input yang dimasukkan sudah benar 980 00:48:07,420 --> 00:48:09,920 dan bahwa orang yang memasuki input 981 00:48:09,920 --> 00:48:15,100 tidak mencoba untuk memasukkan beberapa berbahaya kode untuk baik drop meja kami 982 00:48:15,100 --> 00:48:17,305 atau menghapus segala sesuatu dalam database kami. 983 00:48:17,305 --> 00:48:20,060 984 00:48:20,060 --> 00:48:23,400 >> Sebuah gambaran singkat dari Model Model View Controller, 985 00:48:23,400 --> 00:48:27,360 itu hanya cara mengatur dan berpikir tentang kode. 986 00:48:27,360 --> 00:48:29,100 Ini lagi, paradigma desain. 987 00:48:29,100 --> 00:48:33,380 Apa itu artinya kita bahwa can-- dan itu praktek yang baik 988 00:48:33,380 --> 00:48:37,790 untuk memisahkan bagian-bagian yang berbeda dari kode kita dan apa yang mereka 989 00:48:37,790 --> 00:48:40,530 mengontrol ke dalam tiga paradigma. 990 00:48:40,530 --> 00:48:46,700 >> Jadi pandangan kami adalah yang paling sering kami template, tata letak kami, jalan 991 00:48:46,700 --> 00:48:48,260 bahwa kita menetapkan bagaimana kode kita terlihat. 992 00:48:48,260 --> 00:48:55,190 Itu sebagian besar file CSS kami dan cara bahwa kita mendefinisikan desain kode kita, 993 00:48:55,190 --> 00:48:55,710 dasarnya. 994 00:48:55,710 --> 00:48:59,280 Controller kita adalah sebagian besar apa kami sudah melakukan dengan file PHP. 995 00:48:59,280 --> 00:49:03,030 Jadi sekali lagi, bekerja dengan informasi yang kami miliki 996 00:49:03,030 --> 00:49:06,700 dan mendefinisikan bagaimana yang informasi yang digunakan, 997 00:49:06,700 --> 00:49:10,660 dan kemudian menyampaikan informasi yang baik ke tampilan atau model. 998 00:49:10,660 --> 00:49:13,880 Dan model, dengan cara yang kita sudah telah menggunakan yaitu telah database kami, 999 00:49:13,880 --> 00:49:17,510 jadi di mana informasi kami adalah disimpan sehingga memiliki suatu tempat 1000 00:49:17,510 --> 00:49:21,490 tinggal di, dan salah satu kode yang berkaitan dengan cara 1001 00:49:21,490 --> 00:49:25,410 bahwa kita mendapatkan informasi atau cara yang kami memperbarui informasi tersebut. 1002 00:49:25,410 --> 00:49:28,940 1003 00:49:28,940 --> 00:49:33,200 >> Jadi dalam model MVC, HTTP permintaan dikirim ke web server. 1004 00:49:33,200 --> 00:49:36,220 Kemudian, menafsirkan kontroler permintaan dari pengguna 1005 00:49:36,220 --> 00:49:38,260 dan kemudian memvalidasi input pengguna. 1006 00:49:38,260 --> 00:49:41,580 Ini opsional yang kita miliki controller berkomunikasi 1007 00:49:41,580 --> 00:49:44,000 dengan model, jadi sesuatu seperti database kami 1008 00:49:44,000 --> 00:49:47,500 atau beberapa fungsi lainnya yang relay informasi. 1009 00:49:47,500 --> 00:49:50,340 Dan akhirnya, controller melewati informasi ke tampilan 1010 00:49:50,340 --> 00:49:52,090 sehingga dapat diberikan dan bahwa hal itu dapat 1011 00:49:52,090 --> 00:49:55,860 menjadi terlihat untuk setiap orang mengakses halaman web. 1012 00:49:55,860 --> 00:49:58,440 1013 00:49:58,440 --> 00:50:01,340 >> Ada pertanyaan? 1014 00:50:01,340 --> 00:50:01,840 Mengagumkan. 1015 00:50:01,840 --> 00:50:04,530 1016 00:50:04,530 --> 00:50:08,469 Jadi sekali lagi, model, fungsinya, lagi, 1017 00:50:08,469 --> 00:50:11,260 adalah penyimpanan persisten informasi, mengelola dan mengorganisasi data. 1018 00:50:11,260 --> 00:50:13,890 Dan apa yang kita telah melihat begitu jauh adalah database MySQL 1019 00:50:13,890 --> 00:50:16,200 dan file data yang dapat digunakan. 1020 00:50:16,200 --> 00:50:20,580 >> View, penyajian informasi ke pengguna, UI, atau user interface. 1021 00:50:20,580 --> 00:50:22,350 Dan contoh dari hal ini adalah HTML. 1022 00:50:22,350 --> 00:50:23,950 Dan kemudian kita mungkin memiliki PHP minimal. 1023 00:50:23,950 --> 00:50:28,360 Jadi untuk loop yang iterates atas data yang dicetak 1024 00:50:28,360 --> 00:50:30,720 adalah bagian dari pandangan, sebagai lawan controller. 1025 00:50:30,720 --> 00:50:35,660 Dan kemudian banyak file PHP kami masuk dalam kategori kontroler. 1026 00:50:35,660 --> 00:50:38,410 Itu hanya menangani permintaan pengguna dan mendapat informasi dari model. 1027 00:50:38,410 --> 00:50:42,880 1028 00:50:42,880 --> 00:50:45,590 >> Melompat ke Dokumen Object Model, ini hanya 1029 00:50:45,590 --> 00:50:47,700 mengacu pada cara HTML dokumen diatur. 1030 00:50:47,700 --> 00:50:51,600 Dan mereka disusun dalam pohon struktur yang memiliki hierarki. 1031 00:50:51,600 --> 00:50:56,720 Jadi jika kita memiliki akses ke [tidak terdengar] representasi dari dokumen, 1032 00:50:56,720 --> 00:51:02,750 kita dapat bekerja dengan dokumen, seperti kita memanipulasi objek pada dasarnya. 1033 00:51:02,750 --> 00:51:06,630 >> Dan untuk membuat ini sedikit lebih jelas, ketika 1034 00:51:06,630 --> 00:51:10,540 kami memiliki banyak kami tag yang berbeda merespon 1035 00:51:10,540 --> 00:51:12,590 untuk rute yang berbeda di pohon kita. 1036 00:51:12,590 --> 00:51:17,070 Dan kemudian untuk contoh ini, kita memiliki node dokumen mulai. 1037 00:51:17,070 --> 00:51:20,010 Kami memiliki, kemudian, simpul HTML kami yang terbagi menjadi kepala dan tubuh. 1038 00:51:20,010 --> 00:51:22,810 Kepala memiliki judul dan kemudian judul mengandung halo, dunia. 1039 00:51:22,810 --> 00:51:24,860 Dan tubuh kita hanya berisi halo, dunia juga. 1040 00:51:24,860 --> 00:51:28,700 1041 00:51:28,700 --> 00:51:31,900 >> Jadi pertanyaan pada salah satu hal-hal yang kita pelajari sejauh ini? 1042 00:51:31,900 --> 00:51:35,891 Dan jika tidak, Hannah akan mengambil alih dengan JavaScript. 1043 00:51:35,891 --> 00:51:36,390 Mengagumkan. 1044 00:51:36,390 --> 00:51:37,473 >> HANNAH Blumberg: OK, keren. 1045 00:51:37,473 --> 00:51:40,980 Jika sesuatu datang dengan PHP atau HTML, atau salah satu dari hal-hal Maria tertutup, 1046 00:51:40,980 --> 00:51:42,700 kita selalu dapat menghentikan sebentar. 1047 00:51:42,700 --> 00:51:46,430 Kami melakukan yang lebih baik di waktu lagi, begitu mengagumkan. 1048 00:51:46,430 --> 00:51:48,770 Dan hanya untuk kembali benar-benar cepat untuk ini, 1049 00:51:48,770 --> 00:51:51,010 jika Anda melihat setiap ujian tahun lalu, hal ini 1050 00:51:51,010 --> 00:51:54,120 muncul either-- sini adalah beberapa HTML, membuat diagram ini. 1051 00:51:54,120 --> 00:51:58,380 Atau inilah diagram ini, membuat beberapa HTML, jadi pasti berlatih itu. 1052 00:51:58,380 --> 00:52:01,500 Dan kemudian itu satu dijamin pertanyaan yang dapat Anda mendapatkan hak. 1053 00:52:01,500 --> 00:52:02,000 Keren. 1054 00:52:02,000 --> 00:52:04,510 Jadi mari kita bicara tentang JavaScript dan bagaimana itu sedikit 1055 00:52:04,510 --> 00:52:09,130 berbeda dari bahasa seperti PHP dan C, dua bahasa yang kita lihat sebelumnya. 1056 00:52:09,130 --> 00:52:10,780 Jadi nomor satu, itu longgar diketik. 1057 00:52:10,780 --> 00:52:14,630 Itu seperti PHP, tapi tidak seperti C. 1058 00:52:14,630 --> 00:52:15,890 >> Ini bahasa ditafsirkan. 1059 00:52:15,890 --> 00:52:19,870 Sekali lagi, itu seperti PHP, seperti C. Dan ini 1060 00:52:19,870 --> 00:52:24,630 akan memungkinkan kita untuk use-- itu bekerja sangat baik dengan halaman web. 1061 00:52:24,630 --> 00:52:28,350 Ini akan memungkinkan kita untuk memanipulasi konten dan bagaimana tampilannya 1062 00:52:28,350 --> 00:52:30,300 dan apa yang dilakukannya. 1063 00:52:30,300 --> 00:52:32,330 >> Kita akan melihat sedikit dari Ajax. 1064 00:52:32,330 --> 00:52:36,140 Hal ini memungkinkan kita untuk berkomunikasi asynchronously dengan server yang berbeda 1065 00:52:36,140 --> 00:52:37,950 dan mendapatkan informasi. 1066 00:52:37,950 --> 00:52:42,820 Dan ini adalah hal yang yang benar-benar memisahkan JavaScript dari PHP dan C 1067 00:52:42,820 --> 00:52:45,590 adalah bahwa itu adalah sisi klien. 1068 00:52:45,590 --> 00:52:49,860 Kedua PHP dan C adalah biasanya server-side. 1069 00:52:49,860 --> 00:52:51,960 >> Untuk sebagian besar, dan hampir seluruhnya apa 1070 00:52:51,960 --> 00:52:53,900 kita lihat, setidaknya di kelas ini, JavaScript 1071 00:52:53,900 --> 00:52:57,040 bekerja pada sisi klien, yang berarti bahwa browser sebenarnya 1072 00:52:57,040 --> 00:52:58,597 bertanggung jawab untuk menjalankannya. 1073 00:52:58,597 --> 00:53:01,180 Dan itu berarti bahwa kita tidak perlu berinteraksi dengan server. 1074 00:53:01,180 --> 00:53:04,380 Jadi itu berarti itu bisa menjadi jauh lebih cepat karena itu sebenarnya hanya itu Chrome, 1075 00:53:04,380 --> 00:53:10,420 itu Safari, Firefox itu, apa pun yang Anda menggunakan benar-benar menjalankan JavaScript. 1076 00:53:10,420 --> 00:53:12,290 >> AUDIENCE: Apa asynchronous artinya? 1077 00:53:12,290 --> 00:53:13,620 >> HANNAH Blumberg: Ah, apa tidak asynchronous berarti? 1078 00:53:13,620 --> 00:53:14,250 Pertanyaan besar. 1079 00:53:14,250 --> 00:53:17,890 Asynchronous means-- baik, konten yang 1080 00:53:17,890 --> 00:53:22,140 kita gunakan itu, OK, kita menciptakan halaman web 1081 00:53:22,140 --> 00:53:23,860 dan kita perlu untuk mendapatkan beberapa informasi. 1082 00:53:23,860 --> 00:53:28,250 Jadi dengan contoh mashup, beberapa informasi yang kita mungkin ingin 1083 00:53:28,250 --> 00:53:30,580 adalah judul artikel. 1084 00:53:30,580 --> 00:53:33,330 Sekarang, kami could-- salah satu pilihan adalah melakukannya serentak 1085 00:53:33,330 --> 00:53:37,940 dan itu berarti mari berhenti, pergi mendapatkan artikel, 1086 00:53:37,940 --> 00:53:41,275 mendapatkan artikel kembali, dan kemudian membuat, tapi itu akan menjadi benar-benar lambat. 1087 00:53:41,275 --> 00:53:44,150 Itu akan menjadi pengalaman pengguna yang buruk karena Anda hanya akan duduk 1088 00:53:44,150 --> 00:53:46,630 ada menunggu sesuatu untuk merespon. 1089 00:53:46,630 --> 00:53:50,020 >> Asynchronous berarti kami akan terus akan tentang bisnis kami, 1090 00:53:50,020 --> 00:53:52,529 render halaman, dan kami akan mengirimkan permintaan 1091 00:53:52,529 --> 00:53:54,570 yang jenis akan terjadi di latar belakang. 1092 00:53:54,570 --> 00:53:57,610 Saya pikir kita menggunakan contoh di kuliah menelepon Rob dan mengatakan, 1093 00:53:57,610 --> 00:53:59,980 hey, Anda bisa melihat hal ini bagi saya dan kembali ke saya, 1094 00:53:59,980 --> 00:54:02,870 sebagai lawan hanya saya menunggu di telepon. 1095 00:54:02,870 --> 00:54:07,020 Jadi asynchronous berarti terjadi di latar belakang jauh dari kita 1096 00:54:07,020 --> 00:54:08,676 sejajar. 1097 00:54:08,676 --> 00:54:10,400 >> Pertanyaan besar. 1098 00:54:10,400 --> 00:54:11,830 ada lagi? 1099 00:54:11,830 --> 00:54:12,330 Besar. 1100 00:54:12,330 --> 00:54:15,020 Kami akan melompat lebih banyak ke permintaan asynchronous dengan Ajax. 1101 00:54:15,020 --> 00:54:18,287 >> AUDIENCE: Apakah JavaScript-- mana tidak jatuh dengan model-view-controller? 1102 00:54:18,287 --> 00:54:19,620 HANNAH Blumberg: pertanyaan besar. 1103 00:54:19,620 --> 00:54:23,320 Mana JavaScript jatuh dengan model-view-controller? 1104 00:54:23,320 --> 00:54:23,930 Hm. 1105 00:54:23,930 --> 00:54:28,350 Saya kira itu bisa fall-- jadi kami biasanya tidak 1106 00:54:28,350 --> 00:54:31,340 ingin squish menjadi yang paradigma, tapi saya kira saya akan mengatakan, 1107 00:54:31,340 --> 00:54:34,280 OK, jadi JavaScript sebenarnya akan memungkinkan 1108 00:54:34,280 --> 00:54:37,587 kita untuk mengumpulkan data, menafsirkan data, benar-benar melakukan 1109 00:54:37,587 --> 00:54:38,920 hal yang bermakna dengan data. 1110 00:54:38,920 --> 00:54:41,100 Dengan cara itu, itu sangat kontrol seperti. 1111 00:54:41,100 --> 00:54:43,900 >> Tapi itu juga akan memungkinkan kita untuk menampilkan hal-hal dan hal-hal cetak. 1112 00:54:43,900 --> 00:54:47,021 Dengan cara itu, itu sangat pandangan-seperti. 1113 00:54:47,021 --> 00:54:47,520 Ya. 1114 00:54:47,520 --> 00:54:51,710 Jadi jenis seperti PHP di di mana ia dapat jenis menjadi keduanya. 1115 00:54:51,710 --> 00:54:53,330 Pertanyaan bagus. 1116 00:54:53,330 --> 00:54:55,209 ada lagi? 1117 00:54:55,209 --> 00:54:56,000 Baiklah, mengagumkan. 1118 00:54:56,000 --> 00:54:57,120 Bergerak kanan sepanjang. 1119 00:54:57,120 --> 00:54:59,110 >> Jadi mari kita lihat contoh bagaimana kita dapat menggunakan 1120 00:54:59,110 --> 00:55:02,250 JavaScript di salah satu program web kami. 1121 00:55:02,250 --> 00:55:05,680 Jadi saya akan mempertimbangkan ini index.html dengan sekelompok HTML. 1122 00:55:05,680 --> 00:55:08,800 Dan hal yang saya ingin Anda fokus pada adalah tag script ini. 1123 00:55:08,800 --> 00:55:13,280 Dan ini mengatakan, OK, saya ingin menjalankan beberapa JavaScript dan di sini adalah di mana ia tinggal. 1124 00:55:13,280 --> 00:55:15,400 Ia tinggal di hello.js. 1125 00:55:15,400 --> 00:55:21,120 >> Dan sangat banyak seperti CSS, kita bisa menempatkan JavaScript dalam HTML. 1126 00:55:21,120 --> 00:55:24,000 Mengapa kita ingin memisahkan keluar? 1127 00:55:24,000 --> 00:55:24,500 Ya. 1128 00:55:24,500 --> 00:55:25,486 >> AUDIENCE: Mudah untuk menulis ulang? 1129 00:55:25,486 --> 00:55:26,402 >> HANNAH Blumberg: Ya. 1130 00:55:26,402 --> 00:55:28,450 Lebih mudah untuk menggunakan seluruh halaman web yang berbeda. 1131 00:55:28,450 --> 00:55:29,980 Ini membuat hal-hal lebih bersih. 1132 00:55:29,980 --> 00:55:32,090 Itu hanya praktek yang baik. 1133 00:55:32,090 --> 00:55:32,590 Mengagumkan. 1134 00:55:32,590 --> 00:55:33,930 Jawaban yang bagus. 1135 00:55:33,930 --> 00:55:36,690 Begitu baik, jadi ini akan menjadi index.html kami. 1136 00:55:36,690 --> 00:55:39,430 Dan kemudian di sini adalah kami File JavaScript kecil kecil. 1137 00:55:39,430 --> 00:55:42,410 >> Dan semua yang dikatakannya adalah peringatan Halo, dunia. 1138 00:55:42,410 --> 00:55:46,040 Jadi apa yang terjadi adalah ketika Halaman ini renders-- 1139 00:55:46,040 --> 00:55:49,680 jadi jika Anda pergi ke situs web apapun ini is-- semua yang akan terjadi 1140 00:55:49,680 --> 00:55:53,330 yang itu akan mengatakan, OK, aku akan menjalankan kode JavaScript ini. 1141 00:55:53,330 --> 00:55:56,370 Dan kode JavaScript ini hanya mengatakan peringatan Halo, dunia. 1142 00:55:56,370 --> 00:55:59,090 Jadi aku akan mendapatkan ini ramah sedikit pop-up. 1143 00:55:59,090 --> 00:56:00,360 >> Keren? 1144 00:56:00,360 --> 00:56:04,746 Itu jenis seperti kami pertama Program JavaScript, kami Halo, dunia. 1145 00:56:04,746 --> 00:56:07,690 1146 00:56:07,690 --> 00:56:12,190 Mari kita lihat sedikit lebih banyak tentang apa sintaks JavaScript terlihat seperti. 1147 00:56:12,190 --> 00:56:16,330 Dan secara khusus, mari kita bandingkan dengan C dan PHP, yang telah kita lihat sebelumnya. 1148 00:56:16,330 --> 00:56:20,610 >> Dalam JavaScript, kita akan memiliki var, nama variabel, dan kemudian 1149 00:56:20,610 --> 00:56:21,690 nilai sebenarnya. 1150 00:56:21,690 --> 00:56:26,170 Dan kita tidak menentukan jenis, hanya seperti di PHP, tapi sangat tidak seperti di C. 1151 00:56:26,170 --> 00:56:28,850 Jadi misalnya, jika kita ingin untuk menyimpan nilai 50, 1152 00:56:28,850 --> 00:56:32,490 di C, kita harus mengatakan, hey, C, saya ingin integer, 1153 00:56:32,490 --> 00:56:35,076 Aku akan menyebutnya i, dan nilainya adalah 50. 1154 00:56:35,076 --> 00:56:36,450 Dalam PHP, itu sedikit lebih mudah. 1155 00:56:36,450 --> 00:56:41,880 Kita mengatakan, hei, saya ingin variabel disebut i dan nilainya adalah 50. 1156 00:56:41,880 --> 00:56:45,890 Sangat mirip, dalam JavaScript, kita mengatakan hey, saya ingin variabel yang disebut i, 1157 00:56:45,890 --> 00:56:47,080 nilainya adalah 50. 1158 00:56:47,080 --> 00:56:52,140 Setiap kali berikutnya yang saya gunakan i, saya tidak perlu menulis var. 1159 00:56:52,140 --> 00:56:53,810 Hanya saja saya dari saat itu. 1160 00:56:53,810 --> 00:56:58,660 Dengan cara yang sama, di C, di mana setelah kami mengatakan int i, kita hanya menggunakan i. 1161 00:56:58,660 --> 00:57:00,340 Keren? 1162 00:57:00,340 --> 00:57:01,800 Baiklah. 1163 00:57:01,800 --> 00:57:03,710 >> Pindah ke loop, Untungnya, ini hampir 1164 00:57:03,710 --> 00:57:06,720 melihat exactly-- Saya pikir mereka persis sama dengan apa yang 1165 00:57:06,720 --> 00:57:09,799 loop akan terlihat seperti di sesuatu seperti C di mana Anda untuk loop 1166 00:57:09,799 --> 00:57:11,840 akan memiliki tiga bagian- inisialisasi, 1167 00:57:11,840 --> 00:57:13,640 kondisi, dan update. 1168 00:57:13,640 --> 00:57:15,340 Sebuah loop sementara, terlihat sama persis. 1169 00:57:15,340 --> 00:57:16,390 Kami hanya memberikan kondisi. 1170 00:57:16,390 --> 00:57:18,264 >> Dan do a while, lagi, persis sama. 1171 00:57:18,264 --> 00:57:20,190 Kami memberikan kondisi. 1172 00:57:20,190 --> 00:57:24,510 Katakanlah saya ingin iterate over-- Saya ingin melakukan sesuatu yang lima kali. 1173 00:57:24,510 --> 00:57:27,840 Dalam C, kita bisa menulis untuk init i sama dengan 0. 1174 00:57:27,840 --> 00:57:30,480 i kurang dari 5, i ++. 1175 00:57:30,480 --> 00:57:34,240 Hanya bedanya, dalam JavaScript, bukannya mengatakan int i sama dengan 0, 1176 00:57:34,240 --> 00:57:36,820 kita katakan var i sama dengan 0. 1177 00:57:36,820 --> 00:57:38,370 Indah. 1178 00:57:38,370 --> 00:57:41,320 Itulah satu-satunya perbedaan. 1179 00:57:41,320 --> 00:57:43,200 Pertanyaan semua itu? 1180 00:57:43,200 --> 00:57:44,160 Iya nih. 1181 00:57:44,160 --> 00:57:48,480 >> AUDIENCE: Jadi dalam PHP, itu sama hal, kecuali tapi seperti variabel? 1182 00:57:48,480 --> 00:57:49,564 Atau adalah bahwa contoh var? 1183 00:57:49,564 --> 00:57:50,480 HANNAH Blumberg: Ya. 1184 00:57:50,480 --> 00:57:52,310 Jadi dalam PHP, itu akan menjadi tanda dolar. 1185 00:57:52,310 --> 00:57:59,450 Jadi itu akan $ i equals 0, $ i kurang dari 5, $ i ++. 1186 00:57:59,450 --> 00:58:02,490 Pertanyaan besar. 1187 00:58:02,490 --> 00:58:04,570 >> Sekarang mari kita bicara tentang deklarasi fungsi. 1188 00:58:04,570 --> 00:58:07,010 Dalam C, ketika kita mendeklarasikan fungsi, kami berikan itu nama 1189 00:58:07,010 --> 00:58:08,490 dan kami memberikan beberapa parameter. 1190 00:58:08,490 --> 00:58:10,670 Dan di awal, kami menulis jenis. 1191 00:58:10,670 --> 00:58:12,440 Dalam JavaScript, semua yang kita harus lakukan adalah menulis 1192 00:58:12,440 --> 00:58:15,080 fungsi kata kunci yang mengatakan, hey, JavaScript, 1193 00:58:15,080 --> 00:58:16,570 Aku akan mendefinisikan fungsi. 1194 00:58:16,570 --> 00:58:18,520 >> Dalam hal ini, ia memiliki nama sum. 1195 00:58:18,520 --> 00:58:20,820 Dan itu membutuhkan dua argumen, x dan y. 1196 00:58:20,820 --> 00:58:23,280 Perhatikan bahwa kita tidak peduli tentang jenis x dan y. 1197 00:58:23,280 --> 00:58:26,280 Dan seperti C, kita memiliki ini kembali kata kunci, 1198 00:58:26,280 --> 00:58:29,140 sehingga kita bisa melakukan sesuatu seperti return x dan y. 1199 00:58:29,140 --> 00:58:32,540 >> Dan sekarang setelah kami telah menulis ini pertama fungsi, kita dapat menggunakan sum di mana saja. 1200 00:58:32,540 --> 00:58:34,740 Dan itu benar-benar baik-baik saja. 1201 00:58:34,740 --> 00:58:37,530 Satu hal yang benar-benar keren tentang JavaScript yang sangat tidak seperti C 1202 00:58:37,530 --> 00:58:40,770 adalah bahwa fungsi dapat diperlakukan seperti nilai-nilai. 1203 00:58:40,770 --> 00:58:43,895 Jadi kita bisa melakukan sesuatu seperti di sini di mana saya kira saya menutupi ini up-- 1204 00:58:43,895 --> 00:58:46,400 Aku menutupi var sum part-- dan kami hanya mengatakan 1205 00:58:46,400 --> 00:58:49,850 Fungsi xy sama pulang x ditambah y. 1206 00:58:49,850 --> 00:58:52,140 >> Itulah yang akan disebut fungsi anonim. 1207 00:58:52,140 --> 00:58:53,920 Ini fungsi tanpa nama. 1208 00:58:53,920 --> 00:58:56,290 Sedangkan ini mengatakan fungsi sum, bla, bla, bla, 1209 00:58:56,290 --> 00:58:59,340 ini hanya akan mengatakan fungsi. 1210 00:58:59,340 --> 00:59:02,020 Tapi sekarang meskipun saya memiliki fungsi anonim ini, 1211 00:59:02,020 --> 00:59:03,630 fungsi yang benar-benar hanya sebuah nilai. 1212 00:59:03,630 --> 00:59:05,160 Kita bisa memperlakukannya seperti nilai. 1213 00:59:05,160 --> 00:59:10,180 >> Jadi kita bisa menyimpannya dalam variabel yang sama cara kita bisa menyimpan 50 dalam variabel. 1214 00:59:10,180 --> 00:59:13,870 Jadi kita bisa mengatakan, OK, saya ingin variabel, itu disebut sum, 1215 00:59:13,870 --> 00:59:16,011 dan itu adalah fungsi ini. 1216 00:59:16,011 --> 00:59:18,760 Jadi dua hal yang benar-benar akan melakukan hal yang sama persis, 1217 00:59:18,760 --> 00:59:21,576 tetapi sintaks sedikit yang berbeda dan jenis yang menyenangkan catatan. 1218 00:59:21,576 --> 00:59:22,076 Ya. 1219 00:59:22,076 --> 00:59:25,548 >> AUDIENCE: Jadi Anda bisa menelepon fungsi yang anonim dengan mengatakan, 1220 00:59:25,548 --> 00:59:28,244 sum kurung 2, 5? 1221 00:59:28,244 --> 00:59:29,160 HANNAH Blumberg: Ya. 1222 00:59:29,160 --> 00:59:32,280 Anda dapat menyebutnya anonim fungsi dengan cara yang sama. 1223 00:59:32,280 --> 00:59:33,350 Anda akan melakukan sum (2, 5) ;. 1224 00:59:33,350 --> 00:59:36,180 1225 00:59:36,180 --> 00:59:38,200 Itu akan benar-benar baik. 1226 00:59:38,200 --> 00:59:41,575 >> Jika saya tidak melakukan var sum sama fungsi, jika aku hanya dihapus 1227 00:59:41,575 --> 00:59:45,480 this-- Aku tahu itu di tangan saya, tapi berpura-pura aku dihapus this-- kemudian 1228 00:59:45,480 --> 00:59:46,964 fungsi yang jenis saja pergi. 1229 00:59:46,964 --> 00:59:49,630 Anda tidak pernah bisa menggunakannya lagi karena Anda tidak memiliki nama untuk itu. 1230 00:59:49,630 --> 00:59:53,497 Sulit untuk menyebut sesuatu Anda tidak tahu apa yang harus menelepon. 1231 00:59:53,497 --> 00:59:54,080 Pertanyaan bagus. 1232 00:59:54,080 --> 00:59:54,580 Ya. 1233 00:59:54,580 --> 00:59:59,580 >> AUDIENCE: Dapatkah Anda referensi sum di tempat-tempat lain dengan nilai x ditambah y? 1234 00:59:59,580 --> 01:00:01,940 >> HANNAH Blumberg: Dapatkah Anda sum referensi di tempat lain 1235 01:00:01,940 --> 01:00:03,360 dengan x nilai ditambah y? 1236 01:00:03,360 --> 01:00:05,130 Saya tidak sepenuhnya yakin apa yang Anda maksud. 1237 01:00:05,130 --> 01:00:10,582 >> AUDIENCE: Jadi masa lalu Anda semi-anonim fungsi sum sama dengan ini 1238 01:00:10,582 --> 01:00:14,452 fungsi anonim, sehingga sum sekarang variabel yang Anda can-- 1239 01:00:14,452 --> 01:00:15,410 HANNAH Blumberg: Benar. 1240 01:00:15,410 --> 01:00:18,980 Jadi sum variabel, tapi itu actually-- 1241 01:00:18,980 --> 01:00:23,770 sehingga jumlah adalah variabel yang nilai adalah fungsi. 1242 01:00:23,770 --> 01:00:27,030 Jadi itu adalah fungsi, yang merupakan jenis hal yang aneh untuk membungkus kepala Anda sekitar 1243 01:00:27,030 --> 01:00:29,880 karena kami sudah bermain dengan C dan Anda tidak bisa melakukan itu di C. 1244 01:00:29,880 --> 01:00:32,679 Tapi sekarang kita bisa menyebut jumlah yang cara yang sama kita bisa menyebut sum di sini. 1245 01:00:32,679 --> 01:00:33,220 AUDIENCE: OK. 1246 01:00:33,220 --> 01:00:33,970 HANNAH Blumberg: Ya. 1247 01:00:33,970 --> 01:00:34,553 Pertanyaan bagus. 1248 01:00:34,553 --> 01:00:35,438 Ya. 1249 01:00:35,438 --> 01:00:39,862 >> AUDIENCE: Jadi kita tidak menggunakan prototipe di PHP atau JavaScript? 1250 01:00:39,862 --> 01:00:42,070 HANNAH Blumberg: Tidak, kami tidak perlu menggunakan prototipe, 1251 01:00:42,070 --> 01:00:43,880 terutama dalam JavaScript. 1252 01:00:43,880 --> 01:00:49,380 Jadi satu praktek hal yang buruk bahwa aku akan mengatakan bahwa Anda tidak harus melakukan 1253 01:00:49,380 --> 01:00:52,620 adalah Anda tidak perlu menulis var i = 50. 1254 01:00:52,620 --> 01:00:54,840 Anda hanya bisa mulai melakukan i = 50. 1255 01:00:54,840 --> 01:00:57,490 Dan hanya akan membuat saya variabel global. 1256 01:00:57,490 --> 01:01:00,550 >> Ini praktek yang sangat buruk untuk tidak pernah mengatakan explicity var i, 1257 01:01:00,550 --> 01:01:01,800 tapi itu sesuatu yang dapat Anda lakukan. 1258 01:01:01,800 --> 01:01:03,591 Penafsir tidak akan berteriak pada Anda. 1259 01:01:03,591 --> 01:01:05,920 JavaScript cukup seperti, Anda dapat melakukan apa yang Anda inginkan. 1260 01:01:05,920 --> 01:01:09,301 1261 01:01:09,301 --> 01:01:09,800 Oh maaf. 1262 01:01:09,800 --> 01:01:10,300 Ada dua. 1263 01:01:10,300 --> 01:01:12,150 Di celana oranye. 1264 01:01:12,150 --> 01:01:13,190 Lanjutkan. 1265 01:01:13,190 --> 01:01:14,390 >> AUDIENCE: Tidak, Anda pergi pertama. 1266 01:01:14,390 --> 01:01:16,765 >> AUDIENCE: Tidak, aku hanya mengatakan Saya tidak punya tangan saya. 1267 01:01:16,765 --> 01:01:20,248 1268 01:01:20,248 --> 01:01:20,748 OKE. 1269 01:01:20,748 --> 01:01:26,604 Jadi jika Anda adalah untuk memanggil yang pertama kali, sekarang jumlah, 1270 01:01:26,604 --> 01:01:29,864 kita menyebutnya dengan cara yang sama, x, y, seperti setiap kali? 1271 01:01:29,864 --> 01:01:30,780 HANNAH Blumberg: Ya. 1272 01:01:30,780 --> 01:01:32,572 Jadi kedua pada dasarnya melakukan hal yang sama. 1273 01:01:32,572 --> 01:01:35,113 AUDIENCE: Dan apa keuntungan menggunakan satu atau yang lain? 1274 01:01:35,113 --> 01:01:37,500 HANNAH Blumberg: Tidak ada keuntungan menggunakan satu atau yang lain. 1275 01:01:37,500 --> 01:01:40,080 Saya hanya ingin menunjukkan dua bagian yang berbeda dari sintaks. 1276 01:01:40,080 --> 01:01:42,770 Banyak kali di mana anonim fungsi memiliki tujuan 1277 01:01:42,770 --> 01:01:48,220 adalah jika argumen lain Fungsi harus fungsi. 1278 01:01:48,220 --> 01:01:50,600 Dan kita akan melihat bahwa di hanya kedua dengan Ajax. 1279 01:01:50,600 --> 01:01:53,577 >> Jadi jika itu tidak masuk akal, menyimpannya di bagian belakang kepala Anda. 1280 01:01:53,577 --> 01:01:55,660 Di situlah anonim Fungsi mungkin berguna 1281 01:01:55,660 --> 01:01:58,284 karena itu tidak benar-benar layak memberikan nama karena kita hanya 1282 01:01:58,284 --> 01:01:59,443 akan menggunakannya sekali. 1283 01:01:59,443 --> 01:02:00,370 Ya. 1284 01:02:00,370 --> 01:02:03,635 >> AUDIENCE: Jika x dan y perubahan kemudian pada, akan meringkas berubah juga? 1285 01:02:03,635 --> 01:02:06,510 HANNAH Blumberg: Jika x dan y perubahan nanti, akan meringkas berubah juga? 1286 01:02:06,510 --> 01:02:08,840 Jadi ini sebenarnya saya berpikir sesuatu yang, 1287 01:02:08,840 --> 01:02:12,260 sekali lagi, itu hanya terasa sangat berbeda dari C. Ini bukan nilai. 1288 01:02:12,260 --> 01:02:13,620 Ini bukan 5. 1289 01:02:13,620 --> 01:02:15,550 Hanya saja fungsi itu sendiri. 1290 01:02:15,550 --> 01:02:19,110 Jadi, segera setelah Anda memberikan parameter, maka Anda benar-benar akan menghitung nilai. 1291 01:02:19,110 --> 01:02:21,193 >> MARIA ZLATKOVA: Dan kemudian Anda dapat memanggil fungsi 1292 01:02:21,193 --> 01:02:23,272 dan menggunakannya untuk mendapatkan beberapa nilai. 1293 01:02:23,272 --> 01:02:24,230 HANNAH Blumberg: Benar. 1294 01:02:24,230 --> 01:02:25,250 Persis. 1295 01:02:25,250 --> 01:02:25,863 Ya. 1296 01:02:25,863 --> 01:02:27,946 >> AUDIENCE: Jadi jika Anda hanya menyimpannya dalam variabel, 1297 01:02:27,946 --> 01:02:31,430 seperti var x sama jumlah dua values-- 1298 01:02:31,430 --> 01:02:32,420 >> HANNAH Blumberg: Ya. 1299 01:02:32,420 --> 01:02:35,320 Jadi Anda hanya bisa melakukan var sum sama jumlah dari dua nilai. 1300 01:02:35,320 --> 01:02:37,670 Ya. 1301 01:02:37,670 --> 01:02:38,680 Ada pertanyaan lain? 1302 01:02:38,680 --> 01:02:39,642 Ya. 1303 01:02:39,642 --> 01:02:42,047 >> AUDIENCE: Tapi alangkah baiknya membingungkan sum dan jumlah? 1304 01:02:42,047 --> 01:02:45,062 Seperti jika Anda memanggil variabel sum Anda, akan Anda memanggil fungsi sum? 1305 01:02:45,062 --> 01:02:45,895 HANNAH Blumberg: Mm. 1306 01:02:45,895 --> 01:02:46,395 Mm. 1307 01:02:46,395 --> 01:02:51,253 Jika Anda melakukan sesuatu seperti, sum sum sama 2, 5? 1308 01:02:51,253 --> 01:02:53,170 >> AUDIENCE: Ya. 1309 01:02:53,170 --> 01:02:56,465 >> HANNAH Blumberg: Saya percaya bahwa akan menimpa nilai sum. 1310 01:02:56,465 --> 01:02:59,290 Jadi lain yang menarik hal tentang JavaScript 1311 01:02:59,290 --> 01:03:02,950 adalah bahwa variabel tunggal dapat mengambil pada sekelompok jenis. 1312 01:03:02,950 --> 01:03:03,790 Praktek yang buruk. 1313 01:03:03,790 --> 01:03:06,280 Anda tidak harus melakukan sesuatu seperti apa yang Anda katakan. 1314 01:03:06,280 --> 01:03:10,240 >> Tapi di C, jika saya diatur sama dengan integer, 1315 01:03:10,240 --> 01:03:13,570 kita tahu bahwa itu tidak pernah akan menjadi string. 1316 01:03:13,570 --> 01:03:15,670 Hal ini tidak terjadi di JavaScript. 1317 01:03:15,670 --> 01:03:17,770 Ya, pertanyaan yang bagus. 1318 01:03:17,770 --> 01:03:20,151 ada lagi? 1319 01:03:20,151 --> 01:03:20,650 Baiklah. 1320 01:03:20,650 --> 01:03:21,850 Melakukan semua tepat waktu. 1321 01:03:21,850 --> 01:03:23,050 Menjaga pergi. 1322 01:03:23,050 --> 01:03:25,200 Baiklah. 1323 01:03:25,200 --> 01:03:27,780 >> Jika kita melihat sebuah array dalam JavaScript, inilah 1324 01:03:27,780 --> 01:03:30,250 contoh cepat dari array dari string. 1325 01:03:30,250 --> 01:03:31,967 Dan array dapat tumbuh secara dinamis. 1326 01:03:31,967 --> 01:03:33,675 Mereka tidak memiliki ukuran tetap dengan cara yang sama 1327 01:03:33,675 --> 01:03:37,990 yang mereka lakukan di C. Kita dapat mengakses elemen hanya dengan tanda kurung persegi. 1328 01:03:37,990 --> 01:03:41,720 >> Yang banyak seperti PHP dan terlihat banyak seperti C, di mana kita dapat mengatakan, dalam kasus ini, 1329 01:03:41,720 --> 01:03:48,360 jika saya ingin kata JavaScript, saya akan jangan arr kurung persegi dengan 0, 1, 2. 1330 01:03:48,360 --> 01:03:51,450 1331 01:03:51,450 --> 01:03:55,390 Dan kemudian jika Anda ingat di C ketika kita ingin mendapatkan panjang dari sebuah array, 1332 01:03:55,390 --> 01:03:56,820 itu benar-benar menjengkelkan. 1333 01:03:56,820 --> 01:03:58,460 Namun dalam JavaScript, super mudah. 1334 01:03:58,460 --> 01:03:59,910 Semua yang kita lakukan, .length. 1335 01:03:59,910 --> 01:04:01,120 Memberikan panjang. 1336 01:04:01,120 --> 01:04:01,892 Itu dia. 1337 01:04:01,892 --> 01:04:03,140 >> AUDIENCE: Itu sederhana. 1338 01:04:03,140 --> 01:04:05,306 >> HANNAH Blumberg: Ya, membuat hidup Anda jauh lebih mudah. 1339 01:04:05,306 --> 01:04:08,950 1340 01:04:08,950 --> 01:04:11,560 OK, tidak object-- ada. 1341 01:04:11,560 --> 01:04:15,480 Objek dalam JavaScript merasa banyak seperti struct di C 1342 01:04:15,480 --> 01:04:18,280 dan array asosiatif di PHP. 1343 01:04:18,280 --> 01:04:20,270 Jadi apa yang telah kita lihat sebuah banyak adalah JSON, yang 1344 01:04:20,270 --> 01:04:23,150 singkatan JavaScript Object Notation. 1345 01:04:23,150 --> 01:04:25,550 Dan itu pada dasarnya cara penataan data kami. 1346 01:04:25,550 --> 01:04:27,880 >> Jadi mari kita lihat contoh, mungkin yang paling mudah. 1347 01:04:27,880 --> 01:04:32,540 Jadi di sini adalah contoh dari sebuah objek yang menyimpan kelas, CS50. 1348 01:04:32,540 --> 01:04:37,790 Dan ketika saya mengatakan kelas, maksudku tentu saja, tidak like-- ya, tentu saja, CS50. 1349 01:04:37,790 --> 01:04:40,730 Dan Anda akan melihat bahwa segala sesuatu di objek 1350 01:04:40,730 --> 01:04:43,526 akan dimuat kurung keriting. 1351 01:04:43,526 --> 01:04:48,260 >> Dan kita mulai untuk mengasosiasikan nama field atau kunci dengan nilai yang berbeda. 1352 01:04:48,260 --> 01:04:52,920 Sehingga Anda dapat mulai untuk melihat bagaimana jenis terasa seperti sebuah array asosiatif PHP. 1353 01:04:52,920 --> 01:04:57,450 Jadi kita akan mengasosiasikan lapangan atau nama kunci, tentu saja, dengan string, 1354 01:04:57,450 --> 01:04:58,510 CS50. 1355 01:04:58,510 --> 01:04:59,940 >> Kita akan memiliki instruktur. 1356 01:04:59,940 --> 01:05:00,940 Kita akan memiliki TF. 1357 01:05:00,940 --> 01:05:05,240 Kita akan memiliki jumlah psets dan kita akan mencatat. 1358 01:05:05,240 --> 01:05:10,720 Dan satu hal yang keren untuk diperhatikan adalah semua hal-hal ini memiliki berbagai jenis, 1359 01:05:10,720 --> 01:05:12,020 dan itu benar-benar baik-baik saja. 1360 01:05:12,020 --> 01:05:15,330 >> Ini baik untuk sebuah objek, pada kenyataannya, itu mungkin diharapkan untuk sebuah objek 1361 01:05:15,330 --> 01:05:19,620 untuk memiliki kombinasi string dan angka dan Booleans dan array 1362 01:05:19,620 --> 01:05:23,420 dan apa pun Anda mungkin ingin memiliki di dalam objek Anda. 1363 01:05:23,420 --> 01:05:28,570 Dan perhatikan bahwa ini akan menjadi nama-nama atau tombol, dan kemudian kami hanya 1364 01:05:28,570 --> 01:05:30,300 mengaturnya sama dengan usus kecil. 1365 01:05:30,300 --> 01:05:32,015 >> AUDIENCE: Apa sebenarnya yang JSON berarti? 1366 01:05:32,015 --> 01:05:33,890 HANNAH Blumberg: Apa persis berarti JSON? 1367 01:05:33,890 --> 01:05:36,470 JSON hanya singkatan JavaScript Object Notation. 1368 01:05:36,470 --> 01:05:38,430 Ini hanya cara format. 1369 01:05:38,430 --> 01:05:40,040 Ya. 1370 01:05:40,040 --> 01:05:41,800 Ini adalah cara format data kami. 1371 01:05:41,800 --> 01:05:43,620 >> Dalam C, itu struct. 1372 01:05:43,620 --> 01:05:45,800 Dalam PHP, itu array asosiatif. 1373 01:05:45,800 --> 01:05:47,120 Dalam JavaScript, kita memiliki objek. 1374 01:05:47,120 --> 01:05:48,969 >> AUDIENCE: Jadi CS50 sebuah objek? 1375 01:05:48,969 --> 01:05:51,010 HANNAH Blumberg: CS50 adalah objek dalam kasus ini. 1376 01:05:51,010 --> 01:05:54,830 1377 01:05:54,830 --> 01:05:57,880 Sekarang, bagaimana kita benar-benar akses bidang tersebut atau mengubah bidang-bidang. 1378 01:05:57,880 --> 01:06:03,920 Misalnya, kami memutuskan bahwa Anda ingin satu lebih sedikit pset semester ini. 1379 01:06:03,920 --> 01:06:06,300 Alih-alih sembilan, kami hanya akan memiliki delapan. 1380 01:06:06,300 --> 01:06:08,240 Bagaimana kita akan mengubah itu? 1381 01:06:08,240 --> 01:06:09,436 >> Oh, cara yang salah. 1382 01:06:09,436 --> 01:06:11,060 Ada dua cara yang bisa kita lakukan itu. 1383 01:06:11,060 --> 01:06:13,490 Nomor satu adalah dengan dot notasi dan nomor dua 1384 01:06:13,490 --> 01:06:15,750 adalah dengan notasi braket persegi. 1385 01:06:15,750 --> 01:06:19,720 Jadi, misalnya, jika saya ingin mengubah atau akses 1386 01:06:19,720 --> 01:06:26,820 bidang psets di objek CS50 kami, apa yang akan saya lakukan adalah CS50.psets, 1387 01:06:26,820 --> 01:06:30,770 sehingga nama objek dot nama lapangan atau kunci. 1388 01:06:30,770 --> 01:06:37,120 >> Sangat mirip, itu persis setara dengan melakukan CS50, dan kemudian 1389 01:06:37,120 --> 01:06:42,050 kurung siku, psets. 1390 01:06:42,050 --> 01:06:42,837 Keren? 1391 01:06:42,837 --> 01:06:44,298 Ya. 1392 01:06:44,298 --> 01:06:47,707 >> AUDIENCE: Jadi itu JSON teknis JavaScript masih, 1393 01:06:47,707 --> 01:06:51,814 meskipun di psets kami memisahkan itu [tidak terdengar]? 1394 01:06:51,814 --> 01:06:52,730 HANNAH Blumberg: Tentu. 1395 01:06:52,730 --> 01:06:56,290 Jadi pertanyaannya adalah, yang JavaScript dan JSON setara? 1396 01:06:56,290 --> 01:07:00,750 Jadi JSON adalah notasi, pada dasarnya cara kita menulis 1397 01:07:00,750 --> 01:07:02,700 objek dari JavaScript. 1398 01:07:02,700 --> 01:07:05,190 Jadi mereka tidak persis sama. 1399 01:07:05,190 --> 01:07:08,950 >> Saya akan mengatakan JavaScript, ada adalah objek dalam JavaScript. 1400 01:07:08,950 --> 01:07:12,590 JSON mengambil benda-benda dan mencetak mereka dan menampilkannya 1401 01:07:12,590 --> 01:07:15,160 atau menyimpan mereka dalam cara yang baik. 1402 01:07:15,160 --> 01:07:18,110 Jadi JSON tidak pemrograman bahasa cara JavaScript. 1403 01:07:18,110 --> 01:07:20,900 Itu hanya notasi untuk benda kami dalam JavaScript. 1404 01:07:20,900 --> 01:07:21,400 Ya. 1405 01:07:21,400 --> 01:07:24,144 >> AUDIENCE: Jadi apa sebenarnya [Tak terdengar] menyelesaikan? 1406 01:07:24,144 --> 01:07:25,060 HANNAH Blumberg: Tentu. 1407 01:07:25,060 --> 01:07:27,727 Jadi ini benar-benar tidak apa-apa. 1408 01:07:27,727 --> 01:07:28,935 Ini hanya cara untuk mengakses. 1409 01:07:28,935 --> 01:07:31,393 Jadi katakanlah kita ingin mengubah jumlah masalah set 1410 01:07:31,393 --> 01:07:32,450 9-8. 1411 01:07:32,450 --> 01:07:34,383 Apa yang kita lakukan adalah melakukan sesuatu seperti CS50.psets = 8 ;. 1412 01:07:34,383 --> 01:07:38,500 1413 01:07:38,500 --> 01:07:39,400 >> Ya, pertanyaan besar. 1414 01:07:39,400 --> 01:07:40,733 Ini hanya menunjukkan sintaks. 1415 01:07:40,733 --> 01:07:43,620 Tidak benar-benar melakukan sesuatu yang berguna. 1416 01:07:43,620 --> 01:07:46,085 Ada pertanyaan? 1417 01:07:46,085 --> 01:07:48,210 Bergerak kanan sepanjang. 1418 01:07:48,210 --> 01:07:51,960 >> Jadi mari kita lihat contoh singkat tentang bagaimana JavaScript bekerja karena saya bilang itu 1419 01:07:51,960 --> 01:07:55,170 melakukan semua hal ini dingin dan memungkinkan kita untuk memodifikasi halaman web. 1420 01:07:55,170 --> 01:07:56,970 Mari kita benar-benar melihat dalam tindakan. 1421 01:07:56,970 --> 01:07:59,850 Jadi mengambil, misalnya, file HTML ini. 1422 01:07:59,850 --> 01:08:04,350 >> Dan hal yang saya ingin Anda fokus pada adalah tag tertentu, yang merupakan sebuah tombol, 1423 01:08:04,350 --> 01:08:06,182 dengan id search_button. 1424 01:08:06,182 --> 01:08:08,670 Hanya saja pada halaman. 1425 01:08:08,670 --> 01:08:10,690 Jadi sekarang mari kita lihat apa kita benar-benar bisa melakukan. 1426 01:08:10,690 --> 01:08:12,560 >> Nah, kira saat Anda klik tombol itu, 1427 01:08:12,560 --> 01:08:16,010 kami ingin membuat alert-- Anda mengklik tombol. 1428 01:08:16,010 --> 01:08:17,840 Mari kita lihat bagaimana kita bisa melakukan itu. 1429 01:08:17,840 --> 01:08:23,869 Jadi window.onload-- ini bukan sesuatu yang bahwa Anda telah melihat di kelas, oleh karena itu 1430 01:08:23,869 --> 01:08:26,180 tidak akan perlu tahu untuk kuis. 1431 01:08:26,180 --> 01:08:33,660 Tapi ini pada dasarnya mengatakan, OK, panggilan fungsi ini ketika beban jendela. 1432 01:08:33,660 --> 01:08:35,080 >> Jadi itu hanya semacam kode setup. 1433 01:08:35,080 --> 01:08:36,390 Jangan khawatir begitu banyak tentang itu. 1434 01:08:36,390 --> 01:08:39,170 Apa yang saya ingin Anda untuk fokus pada adalah di sini. 1435 01:08:39,170 --> 01:08:44,020 Kita mengatakan var searchButton sama document.getElementById search_button. 1436 01:08:44,020 --> 01:08:46,450 >> Jadi seperti yang Anda duga, apa yang dilakukan adalah ia mengatakan, 1437 01:08:46,450 --> 01:08:50,920 OK, pergi mencari elemen dengan ID search_button. 1438 01:08:50,920 --> 01:08:52,790 Dan sekarang kami memiliki yang elemen yang sebenarnya dan aku 1439 01:08:52,790 --> 01:08:56,279 akan menyimpannya dalam searchButton variabel. 1440 01:08:56,279 --> 01:09:00,651 Dan sekarang kita benar-benar bisa menggunakan elemen yang dan mengubahnya, atau mengakses nilai-nilainya, 1441 01:09:00,651 --> 01:09:01,359 hal-hal seperti itu. 1442 01:09:01,359 --> 01:09:04,649 Kami benar-benar dapat mulai terlibat dengan halaman web. 1443 01:09:04,649 --> 01:09:10,330 >> Jadi di sini saya katakan, OK, sekarang aku memiliki tombol yang, ketika diklik, 1444 01:09:10,330 --> 01:09:12,859 memanggil fungsi anonim ini. 1445 01:09:12,859 --> 01:09:16,811 Jadi ini adalah di mana anonim fungsi menjadi berguna. 1446 01:09:16,811 --> 01:09:18,060 Dan apa fungsi lakukan? 1447 01:09:18,060 --> 01:09:20,529 Nah, itu hanya panggilan ini fungsi alert dan mengatakan, 1448 01:09:20,529 --> 01:09:22,910 Anda mengklik tombol Search. 1449 01:09:22,910 --> 01:09:29,670 >> Jadi apa yang akan terjadi jika saya pergi ke mana pun HTML ini hidup dan saya klik tombol, 1450 01:09:29,670 --> 01:09:33,729 Aku akan mendapatkan peringatan sedikit mewah yang mengatakan Anda mengklik tombol. 1451 01:09:33,729 --> 01:09:40,710 Jadi hal-hal untuk fokus pada sini-document.getElementById 1452 01:09:40,710 --> 01:09:44,960 mendapat HTML tertentu elemen dengan ID yang diberikan. 1453 01:09:44,960 --> 01:09:48,529 Dan sekarang kita dapat mengatur apa yang harus terjadi ketika 1454 01:09:48,529 --> 01:09:50,702 bahwa elemen tertentu diklik. 1455 01:09:50,702 --> 01:09:52,670 >> AUDIENCE: Kita harus menempatkan semua itu di? 1456 01:09:52,670 --> 01:09:53,162 >> HANNAH Blumberg: Maaf? 1457 01:09:53,162 --> 01:09:55,130 >> AUDIENCE: Apakah kita harus fisik kode semua itu? 1458 01:09:55,130 --> 01:09:56,340 >> HANNAH Blumberg: Apakah kita harus fisik kode semua itu? 1459 01:09:56,340 --> 01:09:56,839 Iya nih. 1460 01:09:56,839 --> 01:09:58,120 Bukankah semacam ini mengganggu? 1461 01:09:58,120 --> 01:10:00,032 Ini adalah banyak kode. 1462 01:10:00,032 --> 01:10:01,574 >> AUDIENCE: Anda bisa mengimpor sesuatu. 1463 01:10:01,574 --> 01:10:02,532 HANNAH Blumberg: Benar. 1464 01:10:02,532 --> 01:10:03,610 Kita bisa menggunakan sesuatu. 1465 01:10:03,610 --> 01:10:08,140 Dan di particular-- oh, itu mengatakan bahwa saya harus mengajar bagian. 1466 01:10:08,140 --> 01:10:11,061 Secara khusus, mari kita menggunakan perpustakaan jQuery, 1467 01:10:11,061 --> 01:10:13,060 karena itu benar-benar panjang dan benar-benar menjengkelkan 1468 01:10:13,060 --> 01:10:16,860 dan saya ingin dapat menyederhanakannya dan membuatnya lebih pendek dan lebih mudah untuk menulis. 1469 01:10:16,860 --> 01:10:19,810 >> Jadi jQuery adalah library JavaScript. 1470 01:10:19,810 --> 01:10:24,930 Jadi JavaScript adalah pemrograman bahasa; jQuery adalah sebuah perpustakaan. 1471 01:10:24,930 --> 01:10:27,190 Dan itu membuat banyak hal lebih mudah. 1472 01:10:27,190 --> 01:10:33,230 Itu membuat perubahan dan akan di dokumen HTML lebih mudah. 1473 01:10:33,230 --> 01:10:35,030 >> Itu membuat acara penanganan lebih mudah. 1474 01:10:35,030 --> 01:10:37,580 Itu membuat animasi lebih mudah dan itu membuat Ajax lebih mudah. 1475 01:10:37,580 --> 01:10:40,140 Jadi mari kita melompat ke dua hal-hal sekarang. 1476 01:10:40,140 --> 01:10:40,900 Permisi. 1477 01:10:40,900 --> 01:10:42,620 Sebelum kita lakukan, beberapa sintaks dasar. 1478 01:10:42,620 --> 01:10:46,870 >> Inilah yang paling panggilan ke perpustakaan jQuery terlihat seperti. 1479 01:10:46,870 --> 01:10:50,520 Kami menggunakan dolar ini sign-- ada tanda-tanda koneksi ke PHP, 1480 01:10:50,520 --> 01:10:56,030 hanya inconvenient-- nama pemilih, dot, dan kemudian tindakan. 1481 01:10:56,030 --> 01:10:58,860 Jadi mari kita lihat beberapa contoh-contoh konkret dari itu. 1482 01:10:58,860 --> 01:11:02,980 >> Jadi ini sebenarnya sama kode dari slide acara. 1483 01:11:02,980 --> 01:11:08,740 Jadi, hal ini panjang jelek menjadi jauh lebih baik, hal ini lebih kecil. 1484 01:11:08,740 --> 01:11:10,370 Jadi mari kita coba untuk istirahat ini turun. 1485 01:11:10,370 --> 01:11:17,090 Ini mengatakan, OK, jQuery-- dolar ini sign-- jQuery, menemukan saya jendela. 1486 01:11:17,090 --> 01:11:18,480 Jadi itulah pemilih. 1487 01:11:18,480 --> 01:11:21,800 >> Ketika beban, memanggil fungsi ini. 1488 01:11:21,800 --> 01:11:23,880 Jadi itulah segala sesuatu di dalam. 1489 01:11:23,880 --> 01:11:24,380 OKE. 1490 01:11:24,380 --> 01:11:25,740 Sejauh ini bagus? 1491 01:11:25,740 --> 01:11:26,750 Baiklah. 1492 01:11:26,750 --> 01:11:32,970 >> Sekarang, jQuery, menemukan saya Hal dengan ID search_button. 1493 01:11:32,970 --> 01:11:36,090 Dan apa yang diklik, memanggil fungsi ini. 1494 01:11:36,090 --> 01:11:37,900 Dan maka ini fungsi ini persis sama. 1495 01:11:37,900 --> 01:11:41,052 Hanya melakukan sedikit waspada, Anda mengklik tombol Search. 1496 01:11:41,052 --> 01:11:42,650 >> Jadi itu benar-benar bagus. 1497 01:11:42,650 --> 01:11:46,260 Itu benar-benar mengembun dan menyederhanakan kode kita. 1498 01:11:46,260 --> 01:11:49,030 Bagaimana saya tahu bahwa itu ID search_button 1499 01:11:49,030 --> 01:11:50,960 dan tidak seperti kelas search_button? 1500 01:11:50,960 --> 01:11:52,024 >> AUDIENCE: Hashtag? 1501 01:11:52,024 --> 01:11:52,940 HANNAH Blumberg: Ya. 1502 01:11:52,940 --> 01:11:56,450 Simbol hash ini, itu hanya seperti CSS. 1503 01:11:56,450 --> 01:12:00,080 Jadi ingat, dengan CSS, ketika kita ingin memilih sesuatu dengan ID, 1504 01:12:00,080 --> 01:12:01,590 kami menggunakan tanda pound. 1505 01:12:01,590 --> 01:12:05,400 Dan ketika kita ingin memilih sesuatu dengan kelas, kita menggunakan dot. 1506 01:12:05,400 --> 01:12:06,870 Besar. 1507 01:12:06,870 --> 01:12:08,230 Masuk akal? 1508 01:12:08,230 --> 01:12:11,500 Jadi jQuery seharusnya hanya membuat hidup kita lebih mudah. 1509 01:12:11,500 --> 01:12:12,000 Ya. 1510 01:12:12,000 --> 01:12:15,660 >> AUDIENCE: Jadi aku agak bingung bagaimana fungsi anonim bekerja. 1511 01:12:15,660 --> 01:12:19,027 Apakah Anda nama anonymouse ini fungsi, fungsi? 1512 01:12:19,027 --> 01:12:20,594 Bagaimana disebut? 1513 01:12:20,594 --> 01:12:21,510 HANNAH Blumberg: Tentu. 1514 01:12:21,510 --> 01:12:25,812 Jadi fungsi hanya kata kunci yang mengatakan, saya akan mendefinisikan fungsi. 1515 01:12:25,812 --> 01:12:26,520 AUDIENCE: Oh, OK. 1516 01:12:26,520 --> 01:12:27,353 HANNAH Blumberg: OK? 1517 01:12:27,353 --> 01:12:32,120 Dan kemudian kita lulus sebagai Argumen to-- mari 1518 01:12:32,120 --> 01:12:37,040 satu-- batin ini untuk fungsi klik. 1519 01:12:37,040 --> 01:12:39,420 Jadi ya, sehingga fungsi itu, fungsi anonim ini, 1520 01:12:39,420 --> 01:12:40,910 menjadi argumen yang sebenarnya. 1521 01:12:40,910 --> 01:12:43,632 Jadi ingat dalam JavaScript, kita dapat mengobati fungsi sebagai nilai-nilai. 1522 01:12:43,632 --> 01:12:44,340 AUDIENCE: Oh, OK. 1523 01:12:44,340 --> 01:12:45,256 HANNAH Blumberg: Ya. 1524 01:12:45,256 --> 01:12:46,035 Saya suka bahwa "oh." 1525 01:12:46,035 --> 01:12:47,490 Bagus. 1526 01:12:47,490 --> 01:12:49,915 Pertanyaan lain? 1527 01:12:49,915 --> 01:12:50,505 Waktu? 1528 01:12:50,505 --> 01:12:51,380 MARIA ZLATKOVA: Baik. 1529 01:12:51,380 --> 01:12:52,760 Baik. 1530 01:12:52,760 --> 01:12:54,210 >> HANNAH Blumberg: Awesome. 1531 01:12:54,210 --> 01:12:55,720 Beberapa jQuery berguna cepat. 1532 01:12:55,720 --> 01:12:57,559 Aku tidak akan pergi melalui semua ini. 1533 01:12:57,559 --> 01:12:59,350 Slide ini akan secara online sedikit 1534 01:12:59,350 --> 01:13:02,040 kemudian, sehingga Anda dapat memeriksa itu sedikit kemudian. 1535 01:13:02,040 --> 01:13:07,120 Tapi pada dasarnya, umum Pola memegang mana kita mengatakan, 1536 01:13:07,120 --> 01:13:11,510 OK, hey, jQuery, inilah saya pemilih dan kemudian di sini adalah tindakan. 1537 01:13:11,510 --> 01:13:15,940 Dan Anda dapat melakukan hal-hal seperti akses nilai bentuk, mengakses beberapa HTML, 1538 01:13:15,940 --> 01:13:19,195 Kontrol apa yang terjadi ketika pengguna menyerahkan formulir, hal-hal seperti itu. 1539 01:13:19,195 --> 01:13:20,106 Iya nih. 1540 01:13:20,106 --> 01:13:22,090 >> AUDIENCE: Jadi dalam ujian, kita akan membutuhkan 1541 01:13:22,090 --> 01:13:25,066 untuk mengetahui cukup banyak dari dokumentasi jQuery. 1542 01:13:25,066 --> 01:13:31,018 Jadi mengingat bahwa kita copy / paste jQuery dokumentasi untuk lembar contekan kita, 1543 01:13:31,018 --> 01:13:32,506 mana yang garis yang ditarik? 1544 01:13:32,506 --> 01:13:33,957 Seperti berapa banyak yang kita perlu tahu? 1545 01:13:33,957 --> 01:13:35,290 HANNAH Blumberg: pertanyaan besar. 1546 01:13:35,290 --> 01:13:37,765 Pertanyaannya adalah dasarnya mengingat bahwa Anda 1547 01:13:37,765 --> 01:13:41,330 tidak dapat mengakses dokumentasi jQuery selama pengujian, berapa banyak yang harus Anda 1548 01:13:41,330 --> 01:13:41,830 tahu? 1549 01:13:41,830 --> 01:13:45,540 Kami tidak akan mengharapkan Anda untuk datang dengan beberapa fungsi acak 1550 01:13:45,540 --> 01:13:47,240 bahwa kita akan mengharapkan Anda untuk Google. 1551 01:13:47,240 --> 01:13:52,930 >> Hal-hal yang permainan yang adil adalah saya akan mengatakan hanya jenis sintaks umum, 1552 01:13:52,930 --> 01:13:58,310 mampu memilih dengan ID dan oleh class-- jadi seperti CSS. 1553 01:13:58,310 --> 01:14:01,876 Dan kemudian fungsi yang sebenarnya dirinya sendiri, kami akan memberitahu Anda mungkin. 1554 01:14:01,876 --> 01:14:02,376 Ya. 1555 01:14:02,376 --> 01:14:05,591 >> AUDIENCE: Jadi, ketika Anda memilih oleh kelas berarti titik. 1556 01:14:05,591 --> 01:14:06,840 HANNAH Blumberg: Ya, persis. 1557 01:14:06,840 --> 01:14:07,340 Baik. 1558 01:14:07,340 --> 01:14:10,461 Bila Anda memilih dengan kelas, itu akan untuk dot bukan tanda pound. 1559 01:14:10,461 --> 01:14:10,960 Iya nih. 1560 01:14:10,960 --> 01:14:12,710 >> AUDIENCE: Akan Anda pergi perbedaan 1561 01:14:12,710 --> 01:14:14,310 antara memilih dengan ID dan dengan kelas? 1562 01:14:14,310 --> 01:14:14,560 >> HANNAH Blumberg: Tentu. 1563 01:14:14,560 --> 01:14:17,510 Perbedaan antara memilih ID dan pemilihan dengan kelas. 1564 01:14:17,510 --> 01:14:20,685 Jadi sebagai Maria mengatakan sedikit sebelumnya, ada 1565 01:14:20,685 --> 01:14:26,280 hanya bisa menjadi salah satu elemen HTML dengan ID yang diberikan, sedangkan kelas, 1566 01:14:26,280 --> 01:14:29,740 memungkinkan kita untuk kelompok a bunch unsur yang berbeda bersama-sama, 1567 01:14:29,740 --> 01:14:34,300 sehingga hal-hal yang terkait, tapi tidak persis sama. 1568 01:14:34,300 --> 01:14:35,685 Apakah itu menjawab pertanyaan? 1569 01:14:35,685 --> 01:14:36,200 Mengagumkan. 1570 01:14:36,200 --> 01:14:37,194 Iya nih. 1571 01:14:37,194 --> 01:14:40,680 >> AUDIENCE: Bagaimana jika Anda memiliki beberapa hal-hal yang di kelas yang sama? 1572 01:14:40,680 --> 01:14:42,150 >> HANNAH Blumberg: Apa yang terjadi jika Anda memiliki beberapa hal yang 1573 01:14:42,150 --> 01:14:43,280 adalah kelas yang sama? 1574 01:14:43,280 --> 01:14:45,829 Jadi, misalnya, jika kita hanya menggunakan murni JavaScript, 1575 01:14:45,829 --> 01:14:48,120 kita akan melakukan sesuatu seperti document.getElementsByClass. 1576 01:14:48,120 --> 01:14:52,280 1577 01:14:52,280 --> 01:14:56,320 Dan kemudian apa yang sebenarnya adalah kembali array elemen. 1578 01:14:56,320 --> 01:14:59,517 >> Dan Anda harus baik iterate atas mereka atau menemukan mana yang Anda inginkan. 1579 01:14:59,517 --> 01:15:01,350 Ini tidak akan memberikan Anda satu elemen. 1580 01:15:01,350 --> 01:15:03,450 Ini akan memberi Anda array elemen. 1581 01:15:03,450 --> 01:15:05,280 Pertanyaan besar. 1582 01:15:05,280 --> 01:15:07,700 ada lagi? 1583 01:15:07,700 --> 01:15:09,520 Mengagumkan. 1584 01:15:09,520 --> 01:15:12,860 >> Jadi saya pikir jika Anda terbiasa dengan setiap jQuery Anda lihat di pset itu, 1585 01:15:12,860 --> 01:15:15,600 Anda harus baik untuk pergi. 1586 01:15:15,600 --> 01:15:16,325 Pertanyaan? 1587 01:15:16,325 --> 01:15:17,610 Oh tidak. 1588 01:15:17,610 --> 01:15:18,859 Aku benar-benar harus mengajar. 1589 01:15:18,859 --> 01:15:19,358 Bersantai. 1590 01:15:19,358 --> 01:15:20,035 Ini akan baik-baik. 1591 01:15:20,035 --> 01:15:20,660 Aku akan sampai di sana. 1592 01:15:20,660 --> 01:15:24,670 1593 01:15:24,670 --> 01:15:26,870 >> Mari kita bicara tentang Ajax. 1594 01:15:26,870 --> 01:15:31,350 Jadi Ajax akan menjadi a-- baik, mari kita mulai dengan apa singkatan. 1595 01:15:31,350 --> 01:15:32,350 Ini akronim. 1596 01:15:32,350 --> 01:15:35,855 Itu singkatan Asynchronous JavaScript dan XML. 1597 01:15:35,855 --> 01:15:39,800 Dan XML pada dasarnya akan menjadi [Tak terdengar] dengan jenis data kami. 1598 01:15:39,800 --> 01:15:42,100 Tapi kita belum benar-benar digunakan XML. 1599 01:15:42,100 --> 01:15:43,430 Sebaliknya, kita hanya menggunakan JSON. 1600 01:15:43,430 --> 01:15:48,350 >> Jadi pada dasarnya, itu beberapa data-- asynchronous, JavaScript, dan data, 1601 01:15:48,350 --> 01:15:50,040 dalam kasus ini, JSON. 1602 01:15:50,040 --> 01:15:52,820 Dan tujuan kami, seperti yang kami sebutkan sedikit sebelumnya, 1603 01:15:52,820 --> 01:15:56,880 adalah untuk dapat membuat permintaan, telah permintaan yang melakukan 1604 01:15:56,880 --> 01:16:00,700 hal tersebut di latar belakang, tetapi terus 1605 01:16:00,700 --> 01:16:02,550 melakukan apapun yang kami berniat untuk melakukan. 1606 01:16:02,550 --> 01:16:06,650 Dan kemudian ketika informasi yang siap, maka kita akan memasukkan. 1607 01:16:06,650 --> 01:16:08,470 >> Jadi mari kita lihat apa ini benar-benar terlihat seperti. 1608 01:16:08,470 --> 01:16:11,210 Dan ini, Anda harus sedikit familiar 1609 01:16:11,210 --> 01:16:13,680 dari pset8, salah satu yang baru saja diaktifkan. 1610 01:16:13,680 --> 01:16:16,200 Jadi, inilah jQuery valid fungsi yang kita mungkin 1611 01:16:16,200 --> 01:16:18,250 ingin tahu about-- tanda dolar ini. 1612 01:16:18,250 --> 01:16:21,500 Jadi ia mengatakan fungsi jQuery, GetJSON. 1613 01:16:21,500 --> 01:16:25,020 >> Dan apa fungsi yang dilakukan adalah mengambil URL dan beberapa parameters-- 1614 01:16:25,020 --> 01:16:28,000 jadi saya pikir dalam kasus dari pset8, itu seperti, 1615 01:16:28,000 --> 01:16:33,520 URL itu articles.php dan parameter adalah pergi = beberapa kode pos. 1616 01:16:33,520 --> 01:16:41,580 Dan mengatakan, OK, membuat permintaan untuk URL ini dengan parameter yang diberikan. 1617 01:16:41,580 --> 01:16:43,480 Dan itu terjadi begitu saja. 1618 01:16:43,480 --> 01:16:47,730 >> Ketika selesai, itu baik akan berhasil menyelesaikan 1619 01:16:47,730 --> 01:16:49,370 atau itu akan gagal. 1620 01:16:49,370 --> 01:16:53,480 Jadi ini adalah setara dengan panggilan Rob dan memintanya melakukan sesuatu. 1621 01:16:53,480 --> 01:17:00,260 Dan kemudian ketika ia menyebut kembali, dia baik akan mengatakan saya sudah selesai atau saya gagal. 1622 01:17:00,260 --> 01:17:04,030 >> Jadi dalam kasus di mana Anda dilakukan, Anda mengatakan, OK, aku sudah selesai. 1623 01:17:04,030 --> 01:17:05,980 Dan kemudian Anda memanggil fungsi ini. 1624 01:17:05,980 --> 01:17:08,915 Dalam hal ini, itu akan menjadi fungsi yang mengambil beberapa informasi. 1625 01:17:08,915 --> 01:17:12,890 Yang biasanya kita pedulikan adalah data, data yang kita benar-benar kembali 1626 01:17:12,890 --> 01:17:15,900 sebagai hasil dari panggilan GetJSON. 1627 01:17:15,900 --> 01:17:17,470 >> Dan Anda dapat melakukan sesuatu dengan itu. 1628 01:17:17,470 --> 01:17:23,670 Jadi dalam kasus pset8, kami ditampilkan sebagai daftar. 1629 01:17:23,670 --> 01:17:29,050 Gagal akan menjadi fungsi yang disebut jika permintaan gagal 1630 01:17:29,050 --> 01:17:30,450 untuk alasan apa pun. 1631 01:17:30,450 --> 01:17:35,104 Dan dalam kasus pset8, kita hanya console.log itu. 1632 01:17:35,104 --> 01:17:36,020 Pertanyaan itu? 1633 01:17:36,020 --> 01:17:36,300 Ya. 1634 01:17:36,300 --> 01:17:39,633 >> AUDIENCE: Bisakah kita menggunakan fungsi theta bukan fungsi, textStatus, jqHXR. 1635 01:17:39,633 --> 01:17:43,464 1636 01:17:43,464 --> 01:17:44,380 HANNAH Blumberg: Tentu. 1637 01:17:44,380 --> 01:17:46,713 Jadi ya, saya pikir dalam pset itu, kita hanya melihat fungsi data. 1638 01:17:46,713 --> 01:17:48,700 Jadi itu hanya the-- ya, OK. 1639 01:17:48,700 --> 01:17:50,510 Itulah yang kita lihat di pset tersebut. 1640 01:17:50,510 --> 01:17:51,480 Itu benar-benar baik-baik saja. 1641 01:17:51,480 --> 01:17:54,210 >> Ini hanya jika Anda ingin untuk menarik informasi lebih lanjut, 1642 01:17:54,210 --> 01:17:57,190 ini adalah hal yang Anda bisa mendapatkan dari GetJSON. 1643 01:17:57,190 --> 01:17:59,040 Pertanyaan bagus. 1644 01:17:59,040 --> 01:17:59,706 ada lagi? 1645 01:17:59,706 --> 01:18:00,206 Ya. 1646 01:18:00,206 --> 01:18:01,787 >> AUDIENCE: Jadi GetJSON adalah Ajax? 1647 01:18:01,787 --> 01:18:02,620 HANNAH Blumberg: OK. 1648 01:18:02,620 --> 01:18:05,700 Jadi ini adalah jenis bagian yang sulit. 1649 01:18:05,700 --> 01:18:12,390 Ini adalah fungsi jQuery yang memungkinkan Anda lakukan panggilan asynchronous. 1650 01:18:12,390 --> 01:18:16,080 Dan orang-orang panggilan asynchronous, yang apa yang kita telah mengacu sebagai Ajax. 1651 01:18:16,080 --> 01:18:16,850 Ya. 1652 01:18:16,850 --> 01:18:20,185 Itu butuh waktu yang sangat lama untuk memisahkan ketika saya masih mahasiswa. 1653 01:18:20,185 --> 01:18:21,560 AUDIENCE: Dapatkah Anda mengatakan itu lagi? 1654 01:18:21,560 --> 01:18:22,476 HANNAH Blumberg: Ya. 1655 01:18:22,476 --> 01:18:23,630 Bisa saya katakan itu lagi? 1656 01:18:23,630 --> 01:18:29,010 Fungsi GetJSON ini, itu adalah fungsi jQuery. 1657 01:18:29,010 --> 01:18:31,970 Dan itu akan membuat panggilan asynchronous. 1658 01:18:31,970 --> 01:18:35,700 Dan ini panggilan asynchronous, kami telah telah mengacu kepada mereka sebagai Ajax. 1659 01:18:35,700 --> 01:18:39,610 1660 01:18:39,610 --> 01:18:41,872 >> Ada pertanyaan lain? 1661 01:18:41,872 --> 01:18:43,330 Kami memiliki hanya beberapa menit tersisa. 1662 01:18:43,330 --> 01:18:45,080 Dan Maria akan membungkus dengan keamanan 1663 01:18:45,080 --> 01:18:47,464 dan kemudian kita akan harus hanya tentang dilakukan. 1664 01:18:47,464 --> 01:18:48,630 MARIA ZLATKOVA: Awesome, OK. 1665 01:18:48,630 --> 01:18:54,030 Jadi ini is-- hanya mengambil beberapa detik untuk melihat lebih ini. 1666 01:18:54,030 --> 01:18:56,750 Dan ini bukan sesuatu yang benar-benar hebat. 1667 01:18:56,750 --> 01:18:59,430 Dan bisa seseorang mengatakan padaku mengapa? 1668 01:18:59,430 --> 01:19:05,650 Apa yang terjadi di foo dan mungkin bisa berpotensi menghasilkan sesuatu yang buruk, 1669 01:19:05,650 --> 01:19:06,770 dan apa yang disebut itu? 1670 01:19:06,770 --> 01:19:07,270 Ya. 1671 01:19:07,270 --> 01:19:10,391 AUDIENCE: Jika argumen itu disahkan pada lebih dari 12 karakter, 1672 01:19:10,391 --> 01:19:11,454 itu bisa meluap. 1673 01:19:11,454 --> 01:19:12,370 MARIA ZLATKOVA: Benar. 1674 01:19:12,370 --> 01:19:14,180 Sempurna. 1675 01:19:14,180 --> 01:19:15,384 Disebut apakah itu? 1676 01:19:15,384 --> 01:19:16,300 Anda hanya disebutkan itu. 1677 01:19:16,300 --> 01:19:16,840 >> AUDIENCE: Buffer overflow. 1678 01:19:16,840 --> 01:19:18,381 >> MARIA ZLATKOVA: Yup, buffer overflow. 1679 01:19:18,381 --> 01:19:21,230 Jadi ini adalah sesuatu yang kita sebut sebagai buffer overflow. 1680 01:19:21,230 --> 01:19:25,500 Dan kita melihat bahwa dalam foo, kami telah didefinisikan penyangga kami, c, 1681 01:19:25,500 --> 01:19:27,240 dengan ukuran 12. 1682 01:19:27,240 --> 01:19:32,680 Namun, dalam utama, kita tidak periksa dengan cara apapun sama sekali 1683 01:19:32,680 --> 01:19:36,480 apakah argv1-- sehingga adalah argumen kedua. 1684 01:19:36,480 --> 01:19:39,630 Kami tidak memeriksa apakah ukuran adalah tepat. 1685 01:19:39,630 --> 01:19:43,380 >> Jadi jika kita memiliki pengguna terutama berbahaya 1686 01:19:43,380 --> 01:19:47,170 yang dimasukkan ke dalam beberapa argumen yang lebih dari 12, dan kemudian berpotensi 1687 01:19:47,170 --> 01:19:50,850 di luar batas yang argumen, memiliki beberapa kode executable 1688 01:19:50,850 --> 01:19:55,570 bahwa ia berusaha untuk melakukan sesuatu yang buruk dengan itu; maka ini, apa yang akan terjadi, 1689 01:19:55,570 --> 01:19:59,310 akan menimpa pengembalian alamat fungsi foo, 1690 01:19:59,310 --> 01:20:04,370 menyebabkan fungsi untuk saat kembali untuk mengeksekusi kode tersebut. 1691 01:20:04,370 --> 01:20:07,540 Dan kemudian hal-hal buruk bisa terjadi. 1692 01:20:07,540 --> 01:20:09,850 Apakah ini masuk akal untuk semua orang? 1693 01:20:09,850 --> 01:20:12,424 >> Dan bagaimana kita dapat melindungi terhadap ini? 1694 01:20:12,424 --> 01:20:13,090 Ada saran? 1695 01:20:13,090 --> 01:20:16,480 1696 01:20:16,480 --> 01:20:21,890 Pada dasarnya, dalam berpotensi foo, bagaimana 1697 01:20:21,890 --> 01:20:28,294 dapat kita periksa untuk memastikan bahwa tidak bisa terjadi? 1698 01:20:28,294 --> 01:20:33,879 >> AUDIENCE: Jika ukuran 12 terlampaui, Anda akan mengalokasikan memori tambahan? 1699 01:20:33,879 --> 01:20:37,170 MARIA ZLATKOVA: Saran adalah, mengalokasikan memori tambahan dari ukuran melebihi. 1700 01:20:37,170 --> 01:20:39,800 Sebenarnya, kita bisa melakukan sesuatu yang banyak sederhana dari itu juga. 1701 01:20:39,800 --> 01:20:44,870 Kami hanya bisa mendapatkan panjang string argumen yang masuk, 1702 01:20:44,870 --> 01:20:48,590 memeriksa apakah yang kurang dari atau sama dengan 12-- 1703 01:20:48,590 --> 01:20:50,790 yang adalah apa yang kita inginkan menjadi karena kita tidak ingin 1704 01:20:50,790 --> 01:20:52,373 itu melebihi batas-batas penyangga kami. 1705 01:20:52,373 --> 01:20:55,690 Dan kemudian jika tidak, kita dapat bekerja dengan argumen. 1706 01:20:55,690 --> 01:21:00,296 Dan kemudian jika tidak, kita benar-benar ingin untuk Yello berpotensi di pengguna. 1707 01:21:00,296 --> 01:21:01,670 Tapi ini adalah bagaimana kita akan melakukannya. 1708 01:21:01,670 --> 01:21:02,443 Iya nih. 1709 01:21:02,443 --> 01:21:04,360 >> AUDIENCE: Bisakah Anda menjelaskan cepat nyata memcpy? 1710 01:21:04,360 --> 01:21:05,443 MARIA ZLATKOVA: Oh, maaf. 1711 01:21:05,443 --> 01:21:06,040 Iya nih. 1712 01:21:06,040 --> 01:21:11,290 Memcpy mengambil apapun is-- maaf, OK. 1713 01:21:11,290 --> 01:21:15,850 Memcpy mengambil apa pun yang di bar, apa pun yang berlalu 1714 01:21:15,850 --> 01:21:18,050 ke foo sebagai argumen baris perintah. 1715 01:21:18,050 --> 01:21:19,440 Jadi itu akan mengambil argv1. 1716 01:21:19,440 --> 01:21:21,420 Argv1 disebut bar di sini. 1717 01:21:21,420 --> 01:21:24,453 Jadi itu akan mengambil bar dan itu akan menyalinnya ke dalam c. 1718 01:21:24,453 --> 01:21:25,402 >> AUDIENCE: OK. 1719 01:21:25,402 --> 01:21:28,360 MARIA ZLATKOVA: Dan itu akan copy-- argumen ketiga hanya mengacu 1720 01:21:28,360 --> 01:21:30,601 berapa banyak itu akan menyalin ke c. 1721 01:21:30,601 --> 01:21:31,142 AUDIENCE: Ah. 1722 01:21:31,142 --> 01:21:33,030 Jadi yang satu ini menyalin semua itu kemudian. 1723 01:21:33,030 --> 01:21:34,310 >> MARIA ZLATKOVA: Ya, itu menyalin semua itu. 1724 01:21:34,310 --> 01:21:34,810 Ya. 1725 01:21:34,810 --> 01:21:38,400 1726 01:21:38,400 --> 01:21:41,910 Pertama, kami pastikan bar tidak sama dengan nol karena pointer. 1727 01:21:41,910 --> 01:21:44,680 Kemudian kami mendapatkan panjang string bar. 1728 01:21:44,680 --> 01:21:47,530 Kami pastikan bahwa itu kurang dari atau sama dengan 12. 1729 01:21:47,530 --> 01:21:50,070 Dan kemudian karena kita sudah memastikan, kita bisa benar-benar 1730 01:21:50,070 --> 01:21:53,122 memcpy dan pastikan bahwa itu OK. 1731 01:21:53,122 --> 01:21:53,705 Ada pertanyaan? 1732 01:21:53,705 --> 01:21:56,280 1733 01:21:56,280 --> 01:21:58,690 Besar. 1734 01:21:58,690 --> 01:22:00,400 Aku punya dua pertanyaan benar atau salah. 1735 01:22:00,400 --> 01:22:05,470 Bisa ada yang bilang saya segera jika ini benar atau salah? 1736 01:22:05,470 --> 01:22:07,460 Ya, itu palsu. 1737 01:22:07,460 --> 01:22:07,960 Persis. 1738 01:22:07,960 --> 01:22:09,330 Keduanya adalah palsu. 1739 01:22:09,330 --> 01:22:12,682 Jadi menggunakan satu password adalah ide yang tidak pernah benar-benar baik 1740 01:22:12,682 --> 01:22:14,890 karena jika seseorang tahu password Anda, mereka hanya bisa 1741 01:22:14,890 --> 01:22:16,260 mengakses semua akun Anda yang lain. 1742 01:22:16,260 --> 01:22:19,260 Dan kemudian melakukan apa-apa ikon untuk menjamin keamanan. 1743 01:22:19,260 --> 01:22:24,900 Kami biasanya harus mencari HTTPS bukannya HTTP dan URL. 1744 01:22:24,900 --> 01:22:28,560 >> Dan beberapa jenis lain serangan yang telah kami sebutkan, 1745 01:22:28,560 --> 01:22:31,390 bahwa David telah disebutkan di kuliah, serangan injeksi SQL. 1746 01:22:31,390 --> 01:22:37,310 Kita sudah melihat bahwa jika kita don't-- yang Fungsi permintaan CS50 memastikan bahwa SQL 1747 01:22:37,310 --> 01:22:39,530 serangan injeksi tidak dapat terjadi. 1748 01:22:39,530 --> 01:22:42,640 Tetapi jika kita tidak menggunakan CS50, kutipan, tanda kutip "dalam query," 1749 01:22:42,640 --> 01:22:46,830 kita harus memastikan bahwa input pengguna tidak benar-benar beberapa SQL 1750 01:22:46,830 --> 01:22:49,670 query yang akan menyebabkan semua meja kami akan dijatuhkan 1751 01:22:49,670 --> 01:22:54,070 atau sesuatu yang buruk untuk terjadi dengan database kami. 1752 01:22:54,070 --> 01:22:56,790 >> Pembajakan adalah jenis lain dari serangan 1753 01:22:56,790 --> 01:23:05,940 itu terjadi ketika beberapa buruk orang menggunakan sesi beberapa korban 1754 01:23:05,940 --> 01:23:08,740 ID untuk mengakses informasi login. 1755 01:23:08,740 --> 01:23:13,620 Jadi contoh yang sangat sepele yang seperti jika kita memiliki komputer umum, 1756 01:23:13,620 --> 01:23:21,120 maka orang jahat log in dan kemudian mereka memiliki cookie yang disimpan. 1757 01:23:21,120 --> 01:23:23,380 Dan cookies tidak berubah untuk sesi. 1758 01:23:23,380 --> 01:23:27,620 >> Kemudian kita telah korban masuk dan kemudian login ke situs web. 1759 01:23:27,620 --> 01:23:30,290 Cookie tidak berubah untuk sesi tertentu. 1760 01:23:30,290 --> 01:23:33,060 Dan kemudian korban log ke website dan kemudian meninggalkan. 1761 01:23:33,060 --> 01:23:36,190 Dan kemudian orang yang kembali kemudian dapat menggunakan ID sesi masih mereka 1762 01:23:36,190 --> 01:23:37,430 untuk mengakses informasi mereka. 1763 01:23:37,430 --> 01:23:40,050 Jadi itulah salah satu contoh bagaimana itu bisa terjadi. 1764 01:23:40,050 --> 01:23:45,570 >> Dan kemudian aku tidak akan terlalu khawatir tentang kode tertentu atau apapun 1765 01:23:45,570 --> 01:23:49,270 seperti itu yang dapat menyebabkan ini, tetapi memiliki semacam tahu apa 1766 01:23:49,270 --> 01:23:51,400 variabel yang terlibat dalam hal ini adalah. 1767 01:23:51,400 --> 01:23:53,897 Dan kemudian memanipulasi sundulan Data adalah jenis lain dari serangan 1768 01:23:53,897 --> 01:23:55,230 yang memiliki David telah berbicara tentang. 1769 01:23:55,230 --> 01:23:59,730 Dan itu hanya mengacu apa yang bisa terjadi ketika 1770 01:23:59,730 --> 01:24:04,300 respon, HTTP Tanggapan dalam header kami 1771 01:24:04,300 --> 01:24:05,720 tidak dibersihkan dengan benar. 1772 01:24:05,720 --> 01:24:14,340 >> Dan salah satu fields-- misalnya, jika seseorang menimpa salah satu header 1773 01:24:14,340 --> 01:24:18,860 nilai mengandung sesuatu yang lebih dari apa yang mereka harus contain-- dan benar-benar 1774 01:24:18,860 --> 01:24:22,720 mengandung, misalnya, 200 Kode status OK, maka mereka 1775 01:24:22,720 --> 01:24:26,890 berpotensi melakukan berbahaya hal ketika mereka tidak seharusnya. 1776 01:24:26,890 --> 01:24:30,815 Tapi aku tidak akan khawatir terlalu banyak tentang kode tertentu 1777 01:24:30,815 --> 01:24:34,110 yang dapat menyebabkan ini, hanya semacam pemahaman 1778 01:24:34,110 --> 01:24:37,290 hal-tingkat tinggi seperti itu. 1779 01:24:37,290 --> 01:24:39,570 >> Saya rasa ini adalah semua bahwa kita harus menutup. 1780 01:24:39,570 --> 01:24:40,090 Menakjubkan. 1781 01:24:40,090 --> 01:24:43,310 Ada yang punya pertanyaan pada setiap dari hal-hal yang kita bahas? 1782 01:24:43,310 --> 01:24:44,213 Iya nih. 1783 01:24:44,213 --> 01:24:48,077 >> AUDIENCE: Jadi satu jenis Pertanyaan yang lebih logistik. 1784 01:24:48,077 --> 01:24:53,400 Apakah konten terutama difokuskan pada hal-hal setelah kuis 1? 1785 01:24:53,400 --> 01:24:55,730 >> MARIA ZLATKOVA: Jadi Pertanyaannya adalah, adalah konten 1786 01:24:55,730 --> 01:24:59,720 difokuskan terutama pada hal-hal setelah kuis 1? 1787 01:24:59,720 --> 01:25:06,070 Jadi fokusnya adalah pada setelah kuis 1, dengan pengecualian 1788 01:25:06,070 --> 01:25:10,914 bahwa kita perlu fokus pada hal-hal di pset5 dan banyak struktur data 1789 01:25:10,914 --> 01:25:11,580 yang kita bahas. 1790 01:25:11,580 --> 01:25:14,300 Dan kita tidak bisa mengatakan bahwa kita bisa mengabaikan apa pun sebelum 1791 01:25:14,300 --> 01:25:17,120 bahwa karena dibangun berdasarkan itu juga. 1792 01:25:17,120 --> 01:25:21,845 >> Jadi fokus pada hal itu, ditambah bahan pset5 seperti termasuk terkait daftar, tumpukan, 1793 01:25:21,845 --> 01:25:23,720 antrian, dan segala sesuatu bahwa Hannah pergi. 1794 01:25:23,720 --> 01:25:24,050 >> HANNAH Blumberg: Benar. 1795 01:25:24,050 --> 01:25:27,450 Ya, kami pergi semua hal C di bagian paling awal sangat cepat. 1796 01:25:27,450 --> 01:25:29,090 Tapi pastikan untuk meninjau itu. 1797 01:25:29,090 --> 01:25:32,700 Kembali dan menonton kuis 0 ulasan. 1798 01:25:32,700 --> 01:25:36,110 >> Beberapa catatan yang lebih logistik, hanya sementara kita memiliki perhatian Anda. 1799 01:25:36,110 --> 01:25:39,100 Kita akan memiliki jam kantor baik pada hari Senin dan Selasa malam. 1800 01:25:39,100 --> 01:25:41,540 Mereka akan berada di MD 119. 1801 01:25:41,540 --> 01:25:44,220 Ini semua pada website, sehingga jika Anda tidak mendengarnya, tidak ada kekhawatiran. 1802 01:25:44,220 --> 01:25:45,266 >> MARIA ZLATKOVA: 8:30-11:00. 1803 01:25:45,266 --> 01:25:46,260 >> HANNAH Blumberg: Ya, 8:30-11:00. 1804 01:25:46,260 --> 01:25:46,910 Kami akan berada di sana. 1805 01:25:46,910 --> 01:25:48,368 Kami akan berada di sana untuk menjawab pertanyaan. 1806 01:25:48,368 --> 01:25:49,480 Itu cukup dingin dan menyenangkan. 1807 01:25:49,480 --> 01:25:53,240 Kalian bisa mengajukan pertanyaan yang Anda miliki di kuis 1. 1808 01:25:53,240 --> 01:25:55,740 Dan kuis 1 adalah pada Rabu, sehingga keberuntungan. 1809 01:25:55,740 --> 01:25:59,770 Jika Anda memiliki pertanyaan, mungkin datang berbicara dengan kami di sini satu-satu. 1810 01:25:59,770 --> 01:26:00,880 Keren. 1811 01:26:00,880 --> 01:26:01,630 Terima kasih banyak. 1812 01:26:01,630 --> 01:26:02,880 >> MARIA ZLATKOVA: Terima kasih banyak, guys. 1813 01:26:02,880 --> 01:26:03,480 >> AUDIENCE: Yay. 1814 01:26:03,480 --> 01:26:05,930 >> [TEPUK TANGAN] 1815 01:26:05,930 --> 01:26:07,530