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 Kami akan memulakan hanya beberapa minit awal 4 00:00:09,530 --> 00:00:11,738 kerana kita mempunyai banyak keseluruhan bahan untuk mendapatkan melalui. 5 00:00:11,738 --> 00:00:12,790 Saya Hannah. 6 00:00:12,790 --> 00:00:13,865 Saya TF a. 7 00:00:13,865 --> 00:00:16,239 Maria akan menyertai kami dalam hanya beberapa minit. 8 00:00:16,239 --> 00:00:17,560 Beliau mengajar seksyen di depan. 9 00:00:17,560 --> 00:00:19,351 Saya mengajar bahagian kanan selepas itu, jadi kita akan 10 00:00:19,351 --> 00:00:21,200 untuk memastikan ia kepada jam setengah. 11 00:00:21,200 --> 00:00:25,490 >> Jadi seperti yang anda akan lihat di sini, kami mempunyai cukup beberapa topik yang kita perlukan untuk mendapatkan melalui, 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 bila-bila kita mengatakan sesuatu terlalu cepat atau anda tidak faham, 14 00:00:31,140 --> 00:00:33,170 berasa bebas untuk mengganggu dengan soalan. 15 00:00:33,170 --> 00:00:36,610 Kami mahu menjadi mampu untuk membuat ini sesi berguna mengkaji kepada anda semua 16 00:00:36,610 --> 00:00:37,973 yang mungkin. 17 00:00:37,973 --> 00:00:38,920 Awesome. 18 00:00:38,920 --> 00:00:41,650 >> Jadi mari kita melompat masuk dengan beberapa topik yang kita benar-benar 19 00:00:41,650 --> 00:00:46,980 sangat, sangat ringkas dilindungi untuk kuiz 0 dalam sesi kajian kuiz 0. 20 00:00:46,980 --> 00:00:48,840 Jadi bermula dengan senarai berkaitan. 21 00:00:48,840 --> 00:00:52,090 Jadi pastikan anda mempunyai pengetahuan asas mengenai senarai berkaitan 22 00:00:52,090 --> 00:00:55,110 dan selesa melakukan beberapa operasi asas. 23 00:00:55,110 --> 00:00:58,560 >> Jadi hanya untuk mengkaji semula, yang dikaitkan Senarai ini adalah lebih baik daripada tatasusunan 24 00:00:58,560 --> 00:01:01,020 kerana mereka boleh berkembang secara dinamik. 25 00:01:01,020 --> 00:01:03,300 Oleh itu, kita mempunyai bahawa kelebihan yang besar. 26 00:01:03,300 --> 00:01:06,031 Kami telah melihat mereka digunakan dalam jadual hash apabila kita 27 00:01:06,031 --> 00:01:08,280 tidak tahu berapa ramai perkara yang kita akan mahu 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 Malangnya, kita mempunyai keping senarai berkaitan di seluruh ingatan, 30 00:01:15,700 --> 00:01:20,820 jadi kita tidak semestinya dapat melakukan akses masa yang berterusan 31 00:01:20,820 --> 00:01:22,502 kepada mana-mana elemen dalam senarai berkaitan. 32 00:01:22,502 --> 00:01:24,210 Dalam usaha untuk mencari yang elemen tertentu, kita 33 00:01:24,210 --> 00:01:26,510 perlu melelar semua cara dari awal. 34 00:01:26,510 --> 00:01:30,610 Jadi ingat bahawa kebanyakan operasi asas adalah omega 1. 35 00:01:30,610 --> 00:01:32,130 Jadi masukkan hanya akan mengambil 1. 36 00:01:32,130 --> 00:01:37,520 Padam akan mengambil n kerana kita perlu pergi merasa dari senarai. 37 00:01:37,520 --> 00:01:39,260 Dan carian boleh mengambil, paling teruk, n. 38 00:01:39,260 --> 00:01:42,330 Kita tidak boleh melakukan sesuatu seperti carian binari dalam senarai berpaut 39 00:01:42,330 --> 00:01:45,101 kerana kita tidak boleh hanya rawak melompat ke tengah. 40 00:01:45,101 --> 00:01:45,600 Sejuk. 41 00:01:45,600 --> 00:01:48,160 42 00:01:48,160 --> 00:01:48,960 Awesome. 43 00:01:48,960 --> 00:01:50,270 >> Sedikit susunan. 44 00:01:50,270 --> 00:01:53,980 Ini, sekali lagi, datang pada kuiz 0, jadi anda harus super selesa dengannya. 45 00:01:53,980 --> 00:01:57,210 Tetapi bagi susunan, kami meminta anda ingat timbunan dulang. 46 00:01:57,210 --> 00:01:59,940 Dan ia akan menjadi yang pertama dalam, lepas keluar. 47 00:01:59,940 --> 00:02:02,272 Oleh itu, kita menyimpulkan perkara sehingga dalam timbunan, dan kemudian 48 00:02:02,272 --> 00:02:04,980 jika kita cuba untuk mengambil sesuatu off-- yang kita panggil pop off 49 00:02:04,980 --> 00:02:06,581 stack-- kita terkeluar atas. 50 00:02:06,581 --> 00:02:09,289 Dan jika kita mahu meletakkan sesuatu dalam timbunan, kita panggil ia menolak. 51 00:02:09,289 --> 00:02:13,170 Jadi ia sentiasa akan membesar dari bawah seperti timbunan dulang. 52 00:02:13,170 --> 00:02:14,540 Awesome. 53 00:02:14,540 --> 00:02:17,607 >> Kami telah susunan dilihat dilaksanakan dengan kedua-dua senarai berkaitan dan array. 54 00:02:17,607 --> 00:02:19,440 Jika anda melaksanakan dengan pameran, anda mahu 55 00:02:19,440 --> 00:02:22,350 memastikan untuk mengesan kedua-dua saiz dan kapasiti. 56 00:02:22,350 --> 00:02:27,540 Jadi saiz akan menjadi arus beberapa perkara dalam timbunan anda, 57 00:02:27,540 --> 00:02:32,900 sedangkan kapasiti adalah jumlah perkara yang anda boleh simpan dalam timbunan anda. 58 00:02:32,900 --> 00:02:34,220 Sejuk. 59 00:02:34,220 --> 00:02:35,767 >> Sangat begitu juga, kita perlu beratur. 60 00:02:35,767 --> 00:02:38,850 Dalam kes ini, bukan berfikir tentang timbunan dulang, fikirkan satu barisan. 61 00:02:38,850 --> 00:02:40,697 Ini akan menjadi yang terdahulu, keluar dahulu. 62 00:02:40,697 --> 00:02:42,780 Jadi, jika anda beratur untuk sesuatu di kedai, 63 00:02:42,780 --> 00:02:46,920 kami berharap bahawa orang yang pertama dalam line akan diberi pertolongan pertama. 64 00:02:46,920 --> 00:02:49,350 >> Daripada mengatakan tolak dan pop seperti yang kita lakukan untuk timbunan, 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 sekali lagi, jika anda melaksanakan ini dengan pelbagai, 67 00:02:54,970 --> 00:02:56,720 kita perlu untuk mengesan bukan sahaja saiz 68 00:02:56,720 --> 00:03:02,390 dan keupayaan, tetapi juga kepala, yang akan menjadi hadapan barisan kami. 69 00:03:02,390 --> 00:03:03,010 Sejuk. 70 00:03:03,010 --> 00:03:05,770 Sebarang pertanyaan mengenai apa-apa itu? 71 00:03:05,770 --> 00:03:06,320 Awesome. 72 00:03:06,320 --> 00:03:07,640 Bergerak kanan bersama-sama. 73 00:03:07,640 --> 00:03:08,564 >> OK, jadual hash. 74 00:03:08,564 --> 00:03:10,605 Berikut adalah di mana ia mula mendapatkan benar-benar menarik. 75 00:03:10,605 --> 00:03:14,150 Jadi jadual hash adalah satu pelaksanaan daripada pelbagai bersekutu. 76 00:03:14,150 --> 00:03:16,700 Jadi, pada asasnya apa yang berlaku adalah kita mempunyai semua input ini, 77 00:03:16,700 --> 00:03:18,750 dan kami memberikan kepada hash fungsi yang mengatakan, 78 00:03:18,750 --> 00:03:21,840 OK, ini adalah di mana dalam jadual hash ia tergolong. 79 00:03:21,840 --> 00:03:24,860 >> Jadi fungsi hash yang paling mudah yang kita lihat hanya mengatakan, 80 00:03:24,860 --> 00:03:28,170 OK, andaikan kita mahu meletakkan tali dalam jadual hash kami. 81 00:03:28,170 --> 00:03:30,870 Dan idea yang benar-benar mudah mungkin untuk mengatakan, OK, 82 00:03:30,870 --> 00:03:34,350 mari kita menyusun oleh Huruf pertama perkataan. 83 00:03:34,350 --> 00:03:37,570 Jadi, anda boleh lihat di sini, kami mengambil pisang, kita meletakkan ia melalui fungsi hash, 84 00:03:37,570 --> 00:03:40,190 dan ia berkata, hey, yang harus pergi pada indeks 1. 85 00:03:40,190 --> 00:03:45,120 >> Oleh itu, kita pada dasarnya boleh berfikir hash meja sebagai sekumpulan baldi yang berbeza. 86 00:03:45,120 --> 00:03:49,880 Dan setiap orang-orang baldi akan untuk memegang ketua senarai berpaut. 87 00:03:49,880 --> 00:03:55,030 Dan kepada apa senarai berpaut adalah di mana kita boleh sebenarnya meletakkan keping yang berbeza data. 88 00:03:55,030 --> 00:03:57,820 >> Jadi menyelam lebih sedikit ke dalam fungsi hash, di sini adalah 89 00:03:57,820 --> 00:03:59,870 contoh yang saya hanya diterangkan di mana kita hanya berkata, 90 00:03:59,870 --> 00:04:02,460 OK, mengambil huruf pertama dengan perkataan ini dan kami 91 00:04:02,460 --> 00:04:03,990 akan menyelesaikan ke dalam baldi. 92 00:04:03,990 --> 00:04:08,490 Jadi mungkin, akan ada 26 baldi, satu untuk setiap huruf abjad. 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 membuatkan ini bukan yang ideal? 95 00:04:13,461 --> 00:04:13,960 Yeah. 96 00:04:13,960 --> 00:04:15,790 >> PENONTON: Anda akan untuk mempunyai pertembungan. 97 00:04:15,790 --> 00:04:16,390 >> HANNAH Blumberg: Ya, betul-betul. 98 00:04:16,390 --> 00:04:18,000 Anda akan mempunyai pertembungan. 99 00:04:18,000 --> 00:04:18,954 Jadi, itu satu perkara. 100 00:04:18,954 --> 00:04:21,620 Dan kita akan bercakap tentang bagaimana kita boleh menetapkan perlanggaran dalam masa satu saat. 101 00:04:21,620 --> 00:04:23,980 Satu lagi masalah dengan ini fungsi hash tertentu 102 00:04:23,980 --> 00:04:25,980 adalah bahawa kami yang berbeza baldi akan menjadi 103 00:04:25,980 --> 00:04:28,960 saiz yang cukup drastik berbeza. 104 00:04:28,960 --> 00:04:33,840 >> Kami tahu bahawa ada banyak keseluruhan banyak kata-kata yang bermula dengan A daripada X, 105 00:04:33,840 --> 00:04:38,980 supaya kita akan mempunyai sangat baldi tidak seimbang dalam jadual hash kami. 106 00:04:38,980 --> 00:04:40,050 Sejuk. 107 00:04:40,050 --> 00:04:41,340 Jadi ya, mari kita kembali kepada titik pertembungan. 108 00:04:41,340 --> 00:04:42,900 Apa yang kami lakukan jika terdapat perlanggaran? 109 00:04:42,900 --> 00:04:44,490 >> Kami mempunyai pasangan pilihan yang berbeza. 110 00:04:44,490 --> 00:04:47,600 Jadi satu, jadi rasa kita cuba untuk meletakkan buah ke dalam jadual hash kami. 111 00:04:47,600 --> 00:04:50,370 Dan kita lihat, oh, kita mahu untuk memasukkannya ke dalam indeks 1, 112 00:04:50,370 --> 00:04:52,070 tetapi pisang sudah tinggal di sana. 113 00:04:52,070 --> 00:04:53,110 Apa yang kita akan lakukan? 114 00:04:53,110 --> 00:04:54,560 Kami mempunyai dua pilihan utama. 115 00:04:54,560 --> 00:04:58,050 >> Nombor satu ialah kita boleh berkata, OK, tidak ada ruang dalam indeks 1, 116 00:04:58,050 --> 00:05:03,210 tetapi mari kita terus mencari melalui sehingga kita boleh mencari satu lagi tempat yang terbuka. 117 00:05:03,210 --> 00:05:08,490 Oleh itu, kita akan berkata, OK, mari kita meletakkan ia di tempat 3. 118 00:05:08,490 --> 00:05:09,240 Itulah salah satu pilihan. 119 00:05:09,240 --> 00:05:11,470 Yang dinamakan linear menyelesaikan sesuatu. 120 00:05:11,470 --> 00:05:15,500 >> Dan pilihan kedua mengatakan, OK, baik, mari kita membuat setiap daripada kategori ini 121 00:05:15,500 --> 00:05:17,470 menjadi ketua senarai berkaitan. 122 00:05:17,470 --> 00:05:21,910 Dan ia adalah OK jika ada lagi daripada satu perkara dalam baldi. 123 00:05:21,910 --> 00:05:23,820 Kami hanya akan menambah ia ke hadapan. 124 00:05:23,820 --> 00:05:26,032 Jadi di sini anda boleh lihat, OK, apabila kita dimasukkan beri, kita 125 00:05:26,032 --> 00:05:28,240 hanya mengambil pisang, jenis ditolak ia lebih sedikit 126 00:05:28,240 --> 00:05:29,842 dan melemparkan beri di sana. 127 00:05:29,842 --> 00:05:31,050 Dan itu juga betul-betul halus. 128 00:05:31,050 --> 00:05:32,830 Ini dipanggil chaining berasingan. 129 00:05:32,830 --> 00:05:38,100 Anda boleh memikirkan ini sebagai jenis seperti pelbagai kepala ke senarai berkaitan. 130 00:05:38,100 --> 00:05:41,950 Sebarang pertanyaan mengenai hash jadual, fungsi hash? 131 00:05:41,950 --> 00:05:44,290 Awesome. 132 00:05:44,290 --> 00:05:45,470 >> Pokok-pokok dan cuba. 133 00:05:45,470 --> 00:05:47,287 Jadi pokok adalah apa-apa jenis struktur data 134 00:05:47,287 --> 00:05:49,453 di mana terdapat beberapa jenis hierarki atau semacam 135 00:05:49,453 --> 00:05:51,247 daripada kedudukan ke objek yang berbeza anda. 136 00:05:51,247 --> 00:05:53,580 Dan ini akan menjadi super jelas apabila kita melihat contoh. 137 00:05:53,580 --> 00:05:56,960 Dan kita melihat try, bersama-sama dengan jadual hash, dalam 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 boleh menyimpan perkara-perkara yang berbeza. 140 00:06:03,110 --> 00:06:06,782 Dalam kes kamus, kita disimpan sekumpulan kata-kata. 141 00:06:06,782 --> 00:06:08,240 Jadi mari kita lihat beberapa pokok. 142 00:06:08,240 --> 00:06:10,190 Jadi ini adalah satu contoh pokok. 143 00:06:10,190 --> 00:06:13,105 Ia mempunyai sejenis struktur, bahawa struktur hierarki, 144 00:06:13,105 --> 00:06:15,920 di mana anda boleh melihat bahawa ini nod 1 di bahagian atas 145 00:06:15,920 --> 00:06:20,750 mempunyai beberapa jenis pangkat 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 sahaja yang kita maksudkan dengan yang pokok, jadi anda boleh hanya jenis 148 00:06:25,210 --> 00:06:26,660 daripada gambar ini dalam kepala anda. 149 00:06:26,660 --> 00:06:29,050 >> Sekarang, kita mempunyai beberapa pokok-pokok yang lebih khusus. 150 00:06:29,050 --> 00:06:31,070 Jadi, satu contoh ialah pokok binari. 151 00:06:31,070 --> 00:06:33,290 Dan pokok binari adalah, sekali lagi, hanya akan menjadi 152 00:06:33,290 --> 00:06:37,040 struktur data dengan sejenis hierarki, tetapi setiap daripada nod 153 00:06:37,040 --> 00:06:38,650 boleh mempunyai paling banyak dua orang anak. 154 00:06:38,650 --> 00:06:41,530 Itulah di mana binari perkataan berasal dari. 155 00:06:41,530 --> 00:06:43,410 Jadi ini adalah satu contoh pokok binari. 156 00:06:43,410 --> 00:06:45,720 Jadi itulah kategori yang lebih kecil daripada pokok-pokok. 157 00:06:45,720 --> 00:06:48,960 >> Sekarang mari kita mendapatkan yang lebih khusus dan bercakap tentang binari carian binari trees-- 158 00:06:48,960 --> 00:06:51,310 pokok-pokok, dan bukan. 159 00:06:51,310 --> 00:06:56,430 Jadi di sini idea itu bukan sahaja tidak setiap nod mempunyai paling banyak dua orang anak, 160 00:06:56,430 --> 00:07:00,300 tetapi semua kanak-kanak untuk kiri akan menjadi lebih kecil 161 00:07:00,300 --> 00:07:03,450 dan semua anak-anak kepada betul akan menjadi lebih besar. 162 00:07:03,450 --> 00:07:05,890 Jadi notis dalam hanya kami pokok binari, ada 163 00:07:05,890 --> 00:07:08,650 ada hubungan antara nombor. 164 00:07:08,650 --> 00:07:12,990 Tetapi dalam carian binari kami pokok, kita lihat, OK, di sini adalah 44. 165 00:07:12,990 --> 00:07:17,080 Dan setiap nombor di sebelah kiri 44 adalah segala-galanya yang lebih kecil dan ke kanan 166 00:07:17,080 --> 00:07:17,920 adalah lebih besar. 167 00:07:17,920 --> 00:07:20,130 >> Dan yang memegang di setiap tahap pokok itu. 168 00:07:20,130 --> 00:07:24,810 Jadi di sini, ini adalah lebih kecil daripada 22 dan ini adalah lebih besar daripada 22. 169 00:07:24,810 --> 00:07:26,390 Dan itulah pokok carian binari. 170 00:07:26,390 --> 00:07:28,900 Mengapa kita fikir ia dipanggil pokok carian binari? 171 00:07:28,900 --> 00:07:30,651 Apa algoritma ia mengingatkan anda? 172 00:07:30,651 --> 00:07:31,650 PENONTON: Carian binari. 173 00:07:31,650 --> 00:07:32,480 HANNAH Blumberg: Carian binari. 174 00:07:32,480 --> 00:07:35,150 Kerana jika anda sedang mencari satu beberapa tertentu dalam pokok ini, 175 00:07:35,150 --> 00:07:38,800 di setiap titik, anda hanya boleh mengetuk separuh dari pokok itu, yang besar. 176 00:07:38,800 --> 00:07:43,800 Dan sebagainya yang akan memberi kita sesuatu yang kelihatan seperti carian binari. 177 00:07:43,800 --> 00:07:45,870 Ada soalan? 178 00:07:45,870 --> 00:07:47,570 Baiklah, sejuk. 179 00:07:47,570 --> 00:07:48,560 >> Baiklah, cuba. 180 00:07:48,560 --> 00:07:49,657 Kegemaran semua orang. 181 00:07:49,657 --> 00:07:51,990 Jadi ini adalah contoh yang kita telah melihat sekumpulan di dalam kelas. 182 00:07:51,990 --> 00:07:54,710 Dan sekali lagi, ini adalah hanya satu lagi cara yang kita boleh menyimpan data. 183 00:07:54,710 --> 00:07:57,530 Dalam kes kamus, sekali lagi, ini hanya akan menjadi tali. 184 00:07:57,530 --> 00:08:00,870 Jadi mari kita lihat apa ini sebenarnya kelihatan seperti pada tahap yang rendah sedikit. 185 00:08:00,870 --> 00:08:03,690 >> Jadi mari kita lihat pada satu nod di indone a. 186 00:08:03,690 --> 00:08:07,532 Dan kita lihat, OK, ada akan menjadi Boolean dan nod, 187 00:08:07,532 --> 00:08:09,170 penunjuk kepada nod. 188 00:08:09,170 --> 00:08:11,400 Dan kita melihat bahawa Boolean dipanggil is_word. 189 00:08:11,400 --> 00:08:13,490 Jadi pada asasnya, itu akan sesuai 190 00:08:13,490 --> 00:08:16,750 untuk ini segi tiga kecil yang berkata, jika anda telah mendapat di sini, 191 00:08:16,750 --> 00:08:19,100 anda memperolehi perkataan yang lengkap. 192 00:08:19,100 --> 00:08:23,670 >> Kita tahu bahawa "turing" lebih di sini adalah perkataan yang lengkap, 193 00:08:23,670 --> 00:08:28,030 sedangkan hanya T-U-R bukan perkataan kerana kita tidak melihat bahawa delta sedikit. 194 00:08:28,030 --> 00:08:31,440 Dan itu delta sedikit, sekali lagi, sepadan dengan is_word ini, 195 00:08:31,440 --> 00:08:34,480 ini is_word Boolean. 196 00:08:34,480 --> 00:08:36,320 Dan kemudian kita mempunyai pelbagai kanak-kanak. 197 00:08:36,320 --> 00:08:39,860 Jadi pada setiap peringkat, anda mempunyai nod tertentu, 198 00:08:39,860 --> 00:08:42,470 dan titik nod kepada pelbagai keseluruhan abjad. 199 00:08:42,470 --> 00:08:44,346 >> Jadi, anda boleh melihat, sekali lagi, dalam picture-- ini saya 200 00:08:44,346 --> 00:08:48,170 akan terus melompat ke belakang dan forth-- yang pelbagai itu di bahagian atas 201 00:08:48,170 --> 00:08:51,640 mempunyai sekumpulan yang berbeza nod datang jauh daripada itu. 202 00:08:51,640 --> 00:08:57,140 Ia mempunyai 26 atau 27 jika anda mahu untuk memasukkan watak tambahan. 203 00:08:57,140 --> 00:09:01,320 Dan ini memberikan kita cara untuk menyimpan data kami 204 00:09:01,320 --> 00:09:04,450 dengan cara yang boleh dilihat dengan penuh bahawa anda boleh mendapatkan super cepat. 205 00:09:04,450 --> 00:09:06,650 Apakah masa lookup untuk indone satu? 206 00:09:06,650 --> 00:09:07,970 >> PENONTON: [didengar]. 207 00:09:07,970 --> 00:09:08,300 >> HANNAH Blumberg: Ya. 208 00:09:08,300 --> 00:09:09,550 Secara teori, ia adalah masa yang berterusan. 209 00:09:09,550 --> 00:09:13,230 Ia hanya akan menjadi saiz perkataan yang anda mahu mencari. 210 00:09:13,230 --> 00:09:15,950 Walaupun kita menambah zillion yang banyak kata-kata untuk indone kami, 211 00:09:15,950 --> 00:09:18,160 ia tidak akan membawa kita apa-apa lagi untuk menentukan 212 00:09:18,160 --> 00:09:19,690 jika perkataan yang diberikan di indone itu. 213 00:09:19,690 --> 00:09:21,412 Jadi, itu benar-benar baik. 214 00:09:21,412 --> 00:09:23,697 >> PENONTON: Adakah anda hanya memulakan pelbagai itu? 215 00:09:23,697 --> 00:09:24,780 Anda terlepas titik atau dua. 216 00:09:24,780 --> 00:09:26,130 Bolehkah anda hanya bercakap tentang yang sekejap? 217 00:09:26,130 --> 00:09:26,680 >> HANNAH Blumberg: Pasti, sama sekali. 218 00:09:26,680 --> 00:09:27,590 Soalan yang baik. 219 00:09:27,590 --> 00:09:31,140 Persoalannya ialah, kita mempunyai pelbagai itulah 220 00:09:31,140 --> 00:09:34,180 akan mempunyai nod bintang sebagai berbanding hanya nod, bukan? 221 00:09:34,180 --> 00:09:35,180 Sejuk. 222 00:09:35,180 --> 00:09:37,990 Jadi di sini apa yang kita katakan adalah pelbagai kami hanya 223 00:09:37,990 --> 00:09:40,035 akan menjadi petunjuk untuk tatasusunan lain. 224 00:09:40,035 --> 00:09:42,910 Jadi ia essentially-- ia jenis terasa seperti senarai berpaut dengan cara ini 225 00:09:42,910 --> 00:09:46,620 di mana setiap kanak-kanak ini hanya menunjukkan nod seterusnya. 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 terlelar melalui keseluruhan yang perkataan, adalah perkataan ini dalam kamus, 228 00:09:52,320 --> 00:09:54,476 kita hanya menyemak is_word ini. 229 00:09:54,476 --> 00:09:55,100 Persoalan yang besar. 230 00:09:55,100 --> 00:09:55,675 Yeah. 231 00:09:55,675 --> 00:09:56,216 PENONTON: OK. 232 00:09:56,216 --> 00:09:57,470 Oleh itu, apa yang runtime untuk indone itu? 233 00:09:57,470 --> 00:09:58,386 >> HANNAH Blumberg: Pasti. 234 00:09:58,386 --> 00:10:01,852 Jadi runtime yang indone untuk lookup akan menjadi masa yang berterusan. 235 00:10:01,852 --> 00:10:04,310 Oleh itu, ia hanya akan menjadi Bilangan huruf dalam perkataan. 236 00:10:04,310 --> 00:10:06,310 Ia tidak bergantung kepada Saiz kamus 237 00:10:06,310 --> 00:10:09,510 atau saiz struktur data. 238 00:10:09,510 --> 00:10:12,170 Jadi di sini adalah contoh yang lebih mudah sedikit. 239 00:10:12,170 --> 00:10:15,430 >> Dalam kes ini, anda boleh melihat bahawa kelawar perkataan ada di dalam kamus 240 00:10:15,430 --> 00:10:18,900 dan anda mempunyai zoom, tetapi anda tidak mempunyai sesuatu seperti zoo. 241 00:10:18,900 --> 00:10:20,050 Bagaimana kita akan membuat zoo? 242 00:10:20,050 --> 00:10:24,276 Bagaimana kita menambah zoo kepada kami kamus, untuk indone kita? 243 00:10:24,276 --> 00:10:24,776 Yeah. 244 00:10:24,776 --> 00:10:27,014 >> PENONTON: Buat is_word benar untuk [didengar]. 245 00:10:27,014 --> 00:10:27,930 HANNAH Blumberg: Baik. 246 00:10:27,930 --> 00:10:31,731 Oleh itu, kita akan berkata Z-O-O, dan kemudian kita akan mahu menyemak di luar kotak itu juga. 247 00:10:31,731 --> 00:10:32,230 Yang besar. 248 00:10:32,230 --> 00:10:35,160 249 00:10:35,160 --> 00:10:37,930 Mari kita bandingkan dengan ringkas cuba berbanding jadual hash. 250 00:10:37,930 --> 00:10:39,770 Percubaan yang benar-benar hebat kerana, seperti yang kita berkata, 251 00:10:39,770 --> 00:10:41,610 mereka menyediakan malar masa carian. 252 00:10:41,610 --> 00:10:44,285 Tetapi kelemahan yang besar ialah mereka humongous. 253 00:10:44,285 --> 00:10:46,160 Anda boleh mendapatkan erti kata, walaupun dengan melihat, 254 00:10:46,160 --> 00:10:48,454 bahawa ia akan mengambil sejumlah besar memori. 255 00:10:48,454 --> 00:10:50,620 Jadi mereka akan menjadi lebih lebih besar daripada jadual hash, 256 00:10:50,620 --> 00:10:52,270 tetapi mereka akan memberi kami kali lookup lebih cepat. 257 00:10:52,270 --> 00:10:54,478 Jadi itulah jenis anda tradeoff, apa yang anda mahu ketahui 258 00:10:54,478 --> 00:10:57,350 sama ada ia adalah kelajuan atau ingatan. 259 00:10:57,350 --> 00:11:02,251 Sebarang pertanyaan mengenai apa-apa itu, semua struktur C data. 260 00:11:02,251 --> 00:11:02,750 Indah. 261 00:11:02,750 --> 00:11:03,250 OKEY. 262 00:11:03,250 --> 00:11:07,322 Kami akan bergerak ke sedikit sedikit pembangunan web dengan Maria. 263 00:11:07,322 --> 00:11:08,280 MARIA ZLATKOVA: Lovely. 264 00:11:08,280 --> 00:11:09,036 OKEY. 265 00:11:09,036 --> 00:11:10,380 >> HANNAH Blumberg: Anda boleh menggunakan komputer riba 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, sejuk. 269 00:11:14,912 --> 00:11:17,120 Seperti yang kita bergerak sekarang untuk web pembangunan, kami bercakap sedikit 270 00:11:17,120 --> 00:11:20,680 mengenai perubahan kebenaran fail dan direktori 271 00:11:20,680 --> 00:11:24,190 supaya mereka boleh diakses kepada pengguna lain, kepada dunia, 272 00:11:24,190 --> 00:11:28,640 dan supaya kita dapat melihat bagaimana pada dasarnya kita boleh menyampaikan mereka 273 00:11:28,640 --> 00:11:32,600 apabila kita membangunkan perkara seperti laman web bahawa kita telah kebanyakannya telah lakukan. 274 00:11:32,600 --> 00:11:36,400 >> Oleh itu, kita melihat arahan chmod itu, yang merupakan mod perubahan, pada asasnya. 275 00:11:36,400 --> 00:11:39,300 Itu adalah satu arahan Linux dan ia berubah kebenaran akses 276 00:11:39,300 --> 00:11:40,410 objek sistem fail. 277 00:11:40,410 --> 00:11:43,370 Dan objek sistem fail adalah hanya direktori, fail, 278 00:11:43,370 --> 00:11:46,810 apa-apa yang anda boleh menukar kebenaran. 279 00:11:46,810 --> 00:11:53,750 >> Jadi untuk melihat kebenaran fail, kita taip ls arahan, senarai, l. 280 00:11:53,750 --> 00:11:56,500 Dan apabila kita menaip itu, kami biasanya melihat beberapa kebenaran 281 00:11:56,500 --> 00:11:59,660 yang kelihatan jenis seperti ini di hadapan nama direktori. 282 00:11:59,660 --> 00:12:01,260 Jadi d merujuk kepada direktori. 283 00:12:01,260 --> 00:12:05,930 Dan kemudian kita mempunyai tiga kongsi gelap yang pada dasarnya 284 00:12:05,930 --> 00:12:11,675 merujuk kepada keizinan untuk memuat pengguna, kumpulan, atau dunia. 285 00:12:11,675 --> 00:12:16,490 >> Jenis-jenis kebenaran yang kita boleh ada bagi ketiga-tiga kumpulan orang 286 00:12:16,490 --> 00:12:20,830 adalah sama ada r untuk dibaca, w untuk menulis, dan x untuk melaksanakan. 287 00:12:20,830 --> 00:12:23,650 Dan kita boleh mempunyai orang-orang untuk kumpulan dan dunia juga. 288 00:12:23,650 --> 00:12:26,940 Perkara yang sukar adalah bahawa kadang-kadang apabila kita taip arahan chmod itu, 289 00:12:26,940 --> 00:12:32,960 kita akan menaip beberapa nombor yang terdiri daripada tiga bit. 290 00:12:32,960 --> 00:12:36,990 Oleh itu, kita boleh melakukan seperti 777 dan yang pada dasarnya 291 00:12:36,990 --> 00:12:40,450 disebut nilai tambah setiap kongsi gelap ini 292 00:12:40,450 --> 00:12:45,060 kerana r akan merujuk kepada 4, w akan merujuk kepada 2, dan x akan merujuk kepada 1, 293 00:12:45,060 --> 00:12:50,020 jadi apabila ditambah, setiap nombor akan turun kepada Kumulatif 294 00:12:50,020 --> 00:12:52,750 kepada nilai terkumpul di antara 0 dan 7. 295 00:12:52,750 --> 00:12:55,150 Oleh itu, kita juga boleh mempunyai 0 tanpa kebenaran sama sekali. 296 00:12:55,150 --> 00:12:58,200 Dan yang pada dasarnya akan memberi kita keizinan untuk sama ada pengguna, 297 00:12:58,200 --> 00:13:00,450 kumpulan, atau dunia. 298 00:13:00,450 --> 00:13:02,620 Sebarang pertanyaan mengenai perkara ini setakat ini? 299 00:13:02,620 --> 00:13:05,331 >> PENONTON: Anda berkata membaca adalah 4? 300 00:13:05,331 --> 00:13:06,164 MARIA ZLATKOVA: Ya. 301 00:13:06,164 --> 00:13:07,568 PENONTON: [didengar]. 302 00:13:07,568 --> 00:13:08,504 HANNAH Blumberg: Yup. 303 00:13:08,504 --> 00:13:11,790 PENONTON: Dan kemudian dengan menambah semua orang-orang orang lain akan menunjukkan nombor anda. 304 00:13:11,790 --> 00:13:12,665 MARIA ZLATKOVA: Ya. 305 00:13:12,665 --> 00:13:14,970 Yeah. 306 00:13:14,970 --> 00:13:17,810 Ini adalah soalan yang besar. 307 00:13:17,810 --> 00:13:20,490 Indah. 308 00:13:20,490 --> 00:13:25,340 Seterusnya, kita melompat ke dalam HTML dan sedikit lebih lanjut mengenai pembangunan web. 309 00:13:25,340 --> 00:13:27,990 Jadi HTML hanya bermakna Hiperteks Markup Language. 310 00:13:27,990 --> 00:13:30,460 Dan itu adalah markup bahasa yang standard yang 311 00:13:30,460 --> 00:13:32,720 bahawa ia digunakan untuk membuat laman web. 312 00:13:32,720 --> 00:13:35,750 >> Ia dipanggil bahasa penanda kerana ia tidak benar-benar disusun. 313 00:13:35,750 --> 00:13:40,310 Ia tidak mengatakan bagaimana beberapa kod sepatutnya dilaksanakan atau apa-apa seperti itu. 314 00:13:40,310 --> 00:13:44,800 Ia hanya menggariskan dan menerangkan bagaimana web yang 315 00:13:44,800 --> 00:13:46,840 halaman perlu ditubuhkan dengan setiap unsur-unsur 316 00:13:46,840 --> 00:13:48,460 dan bagaimana mereka harus melihat kepada pengguna. 317 00:13:48,460 --> 00:13:53,090 318 00:13:53,090 --> 00:13:57,110 >> Antara tag HTML yang kita pergi ke sana adalah seperti berikut. 319 00:13:57,110 --> 00:14:00,500 Semua dokumen HTML kami bermula dengan html DOCTYPE. 320 00:14:00,500 --> 00:14:02,550 Kemudian kita sentiasa mempunyai tag html. 321 00:14:02,550 --> 00:14:03,930 Kami mempunyai kepala dan badan. 322 00:14:03,930 --> 00:14:07,890 Dan ia adalah penting bahawa HTML mempunyai seperti ini struktur bersarang 323 00:14:07,890 --> 00:14:09,280 kerana ia sangat jelas. 324 00:14:09,280 --> 00:14:13,200 Dan kemudian ia menjadi sangat jelas apabila kita perlu membuka dan sebenarnya tag dekat. 325 00:14:13,200 --> 00:14:18,400 Dan kita sentiasa perlu untuk menutup tag yang kami telah dibuka. 326 00:14:18,400 --> 00:14:23,170 >> Dan di sini kita mempunyai beberapa jenis perkara di hadapan yang kita mahu. 327 00:14:23,170 --> 00:14:26,580 Oleh itu, kita mempunyai, sebagai contoh, gelaran CS50. 328 00:14:26,580 --> 00:14:31,980 Dan kemudian kita benar-benar boleh memautkan lembaran gaya 329 00:14:31,980 --> 00:14:34,030 yang menentukan bagaimana kita gaya laman web 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 atasnya di pasangan seterusnya slaid juga. 332 00:14:39,320 --> 00:14:42,580 >> Dalam badan, kita menetapkan beberapa kelas dan ID. 333 00:14:42,580 --> 00:14:45,860 Dan sebagai peringatan, sekali lagi, ID adalah unik dan kelas 334 00:14:45,860 --> 00:14:47,390 boleh diberikan kepada beberapa item. 335 00:14:47,390 --> 00:14:52,110 Dan itu hanya bererti bahawa kita boleh menggunakan kelas dan ID 336 00:14:52,110 --> 00:14:55,860 dalam structures-- lain jadi, Sebagai contoh, dalam fail CSS atau gaya 337 00:14:55,860 --> 00:15:00,940 sheets-- untuk merujuk kepada unsur-unsur tertentu dan pada dasarnya mengatakan bahawa kita mahu gaya 338 00:15:00,940 --> 00:15:03,280 atau mereka bentuk beberapa elemen 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 kita juga boleh merujuk kepada perkara yang berbeza-lagu juga, 341 00:15:09,870 --> 00:15:13,830 tetapi ID dan kelas hanya memberi kita beberapa serba boleh dan apa yang khusus kita 342 00:15:13,830 --> 00:15:15,850 ingin merujuk kepada. 343 00:15:15,850 --> 00:15:19,620 >> Jadi hanya satu contoh. 344 00:15:19,620 --> 00:15:22,730 Kita boleh, sekali lagi, dalam masa fail CSS di mana kita 345 00:15:22,730 --> 00:15:25,770 hendak menentukan beberapa style-- supaya warna, fon, 346 00:15:25,770 --> 00:15:30,340 dan barangan seperti bahawa- kita boleh menentukan gaya untuk badan. 347 00:15:30,340 --> 00:15:32,640 Supaya akan menentukan ia untuk tag seluruh badan. 348 00:15:32,640 --> 00:15:36,160 Tetapi kita juga boleh menentukan gaya untuk #title a. 349 00:15:36,160 --> 00:15:40,390 Dan sekali lagi, hashtag merujuk kepada kami ID dan titik merujuk kepada kelas kami. 350 00:15:40,390 --> 00:15:44,760 >> Dan kemudian untuk ubah, kita juga boleh menetapkan beberapa sifat-sifat. 351 00:15:44,760 --> 00:15:49,750 Dan sekali lagi, apabila kita kembali, kami terpaksa kami kelas dipanggil maklumat dan tajuk ID kami. 352 00:15:49,750 --> 00:15:53,422 Dan kita boleh melihat bahawa kita merujuk kepada mereka oleh #title dan ubah. 353 00:15:53,422 --> 00:15:55,380 PENONTON: Adakah anda mengatakan Hashtag [? menerima pakai saya? ?] 354 00:15:55,380 --> 00:15:55,725 MARIA ZLATKOVA Maaf? 355 00:15:55,725 --> 00:15:58,120 PENONTON: Adakah anda mengatakan Hashtag [? menerima pakai saya? ?] 356 00:15:58,120 --> 00:16:01,400 MARIA ZLATKOVA: Hashtag bermakna ID, jadi #title 357 00:16:01,400 --> 00:16:07,890 merujuk kepada apa sahaja unsur-unsur mempunyai ID ini dipanggil tajuk. 358 00:16:07,890 --> 00:16:10,735 Dan kemudian dot merujuk kepada kelas. 359 00:16:10,735 --> 00:16:14,590 Jadi ubah merujuk kepada elemen ini kerana ia mempunyai maklumat kelas. 360 00:16:14,590 --> 00:16:15,090 Yup. 361 00:16:15,090 --> 00:16:17,905 >> PENONTON: Mengapa anda membezakan mereka dalam HTML? 362 00:16:17,905 --> 00:16:20,985 Mengapa kamu memperkatakan perkara-perkara tertentu yang ID dan perkara-perkara tertentu adalah kelas? 363 00:16:20,985 --> 00:16:22,610 MARIA ZLATKOVA: Itu hanya sehingga atasmu, 364 00:16:22,610 --> 00:16:24,151 HANNAH Blumberg: Ulangi soalan. 365 00:16:24,151 --> 00:16:25,370 MARIA ZLATKOVA: Oh, maaf. 366 00:16:25,370 --> 00:16:29,480 Mengapa kita membezakan unsur-unsur tertentu sebagai ID dan unsur-unsur lain seperti kelas? 367 00:16:29,480 --> 00:16:34,760 Itu hanya kerana ia adalah benar-benar sering pilihan reka bentuk. 368 00:16:34,760 --> 00:16:38,520 Ia memberikan anda banyak serba boleh dalam menjadi 369 00:16:38,520 --> 00:16:43,250 dapat berkata saya mahu item ini khusus untuk mempunyai ID ini kerana mereka mahu 370 00:16:43,250 --> 00:16:45,300 untuk melakukan banyak perkara-perkara dengan itu, dan saya hanya 371 00:16:45,300 --> 00:16:50,010 hendak menentukan gaya, gaya tertentu atau warna apa sahaja untuk barangan tersebut. 372 00:16:50,010 --> 00:16:52,630 Dan cara untuk berbuat demikian adalah hanya memberikan ID. 373 00:16:52,630 --> 00:16:55,060 >> Dan kemudian jika saya ingin mempunyai beberapa perkara yang berbeza 374 00:16:55,060 --> 00:16:58,940 mempunyai bahawa, daripada berterusan dan menetapkan their-- 375 00:16:58,940 --> 00:17:03,840 daripada melakukan ia dengan tag kerana tag yang akan 376 00:17:03,840 --> 00:17:07,369 menetapkan sel untuk seluruh tag untuk setiap kali tag yang digunakan, 377 00:17:07,369 --> 00:17:09,740 anda boleh menetapkan kelas untuk beberapa item. 378 00:17:09,740 --> 00:17:15,109 Dan kemudian hanya mengakses kelas itu dan berkata Saya mahu gaya kelas ini dengan cara itu. 379 00:17:15,109 --> 00:17:17,579 >> Dan sekali lagi, kelas boleh menjadi pelbagai perkara yang berbeza 380 00:17:17,579 --> 00:17:21,150 dan ID telah menjadi unik. 381 00:17:21,150 --> 00:17:21,849 Soalan yang besar. 382 00:17:21,849 --> 00:17:25,339 Apa-apa soalan lain? 383 00:17:25,339 --> 00:17:26,220 OK, bagus. 384 00:17:26,220 --> 00:17:30,680 385 00:17:30,680 --> 00:17:35,330 Sekali lagi, ini adalah bagaimana pemilih dirujuk dalam CSS, dengan hashtag, 386 00:17:35,330 --> 00:17:40,031 dengan titik, atau tanpa apa-apa untuk memberikan gaya beberapa tag, 387 00:17:40,031 --> 00:17:40,530 seperti badan. 388 00:17:40,530 --> 00:17:43,500 389 00:17:43,500 --> 00:17:47,860 Dan di sini kita mempunyai umum sintaks bagaimana ini dilakukan. 390 00:17:47,860 --> 00:17:52,830 391 00:17:52,830 --> 00:17:55,680 >> Untuk mengulangi beberapa terbaik amalan untuk HTML dan CSS, 392 00:17:55,680 --> 00:17:59,170 kita perlu, sekali lagi, tutup semua tag HTML yang kita boleh dibuka. 393 00:17:59,170 --> 00:18:03,950 Dan apa yang kita disyorkan anda lakukan untuk projek akhir anda, 394 00:18:03,950 --> 00:18:10,560 dan juga untuk CS50 Kewangan, adalah untuk membuat memastikan bahawa semua HTML anda mengesahkan. 395 00:18:10,560 --> 00:18:12,920 Dan itu dilakukan dengan W3 Pengesah. 396 00:18:12,920 --> 00:18:16,940 >> Dan kemudian apa yang kita lakukan dan apa yang kami cadangkan melakukan 397 00:18:16,940 --> 00:18:19,790 yang memisahkan gaya, jadi CSS dari markup HTML. 398 00:18:19,790 --> 00:18:24,210 Jadi apa-apa yang berkaitan dengan bagaimana halaman anda akan kelihatan cacat 399 00:18:24,210 --> 00:18:27,330 dan bagaimana ia akan diubah suai harus pergi ke dalam dokumen CSS. 400 00:18:27,330 --> 00:18:33,880 Dan kemudian markup anda mengatakan bagaimana perkara-perkara adalah berkaitan dengan satu sama lain adalah HTML, 401 00:18:33,880 --> 00:18:37,550 dan yang perlu masuk ke dalam dokumen HTML anda. 402 00:18:37,550 --> 00:18:38,590 Ada soalan? 403 00:18:38,590 --> 00:18:39,226 Mhm. 404 00:18:39,226 --> 00:18:42,628 >> PENONTON: Apa sebenarnya yang sedang berlaku pada dengan pengesahan halaman 405 00:18:42,628 --> 00:18:47,945 apabila kita mengesahkan HTML yang [didengar] diciptakan? 406 00:18:47,945 --> 00:18:49,850 >> MARIA ZLATKOVA: Jadi what-- fikir anda. 407 00:18:49,850 --> 00:18:53,020 Jadi apa sebenarnya yang sedang berlaku pada dengan pengesahan halaman 408 00:18:53,020 --> 00:18:55,570 dan mengapa kita perlu untuk berbuat demikian? 409 00:18:55,570 --> 00:18:59,180 Pada asasnya, kita perlu untuk berbuat demikian kerana banyak kali, pelayar anda, 410 00:18:59,180 --> 00:19:01,390 jika anda tidak menutup tag atau sesuatu seperti itu, 411 00:19:01,390 --> 00:19:05,680 pelayar anda masih akan menyebabkan halaman dan mungkin masih bekerja, 412 00:19:05,680 --> 00:19:10,840 tetapi ia adalah amalan terbaik untuk memastikan bahawa anda, sekali lagi, menutup semua tag anda, 413 00:19:10,840 --> 00:19:13,190 bahawa semua unsur-unsur anda adalah cara yang mereka perlu, 414 00:19:13,190 --> 00:19:18,470 dan pada dasarnya bahawa itu oleh konvensyen yang dipratetap. 415 00:19:18,470 --> 00:19:21,970 >> Ia adalah, sekali lagi, hanya perkara yang anda perlu 416 00:19:21,970 --> 00:19:24,040 dapat belajar untuk lakukan, berbanding dengan yang mempunyai 417 00:19:24,040 --> 00:19:25,696 kod sloppier dan barangan seperti itu. 418 00:19:25,696 --> 00:19:26,688 Yeah. 419 00:19:26,688 --> 00:19:27,680 Oh maaf. 420 00:19:27,680 --> 00:19:29,221 Saya fikir anda mengangkat tangan anda. 421 00:19:29,221 --> 00:19:31,240 PENONTON: Tidak, saya hanya [didengar]. 422 00:19:31,240 --> 00:19:33,800 >> MARIA ZLATKOVA: OK. 423 00:19:33,800 --> 00:19:34,640 >> PENONTON: Terima kasih. 424 00:19:34,640 --> 00:19:36,181 >> MARIA ZLATKOVA: Sudah tentu, terima kasih. 425 00:19:36,181 --> 00:19:41,680 Jadi sekali lagi, pergi ke dalam bagaimana maklumat dipindahkan 426 00:19:41,680 --> 00:19:44,630 dan model komunikasi untuk memindahkan maklumat. 427 00:19:44,630 --> 00:19:45,730 TCP / IP. 428 00:19:45,730 --> 00:19:48,600 TCP hanya bermakna Transmission Protokol Kawalan dan IP 429 00:19:48,600 --> 00:19:51,260 merujuk kepada Protokol Internet. 430 00:19:51,260 --> 00:19:54,275 Dan yang hanya merujuk kepada cara data itu diserahkan. 431 00:19:54,275 --> 00:19:59,470 432 00:19:59,470 --> 00:20:02,710 >> Jika kita mempunyai beberapa data yang perlu dihantar ke atasmu, supaya 433 00:20:02,710 --> 00:20:06,770 anda membuat permintaan untuk pelayan tertentu. 434 00:20:06,770 --> 00:20:09,800 Sebagai contoh, apabila kita cuba untuk mengakses cs50.net, 435 00:20:09,800 --> 00:20:12,420 kita membuat permintaan kepada pelayan CS50 dan kami 436 00:20:12,420 --> 00:20:14,720 melihat bahawa kita mahu ini jenis maklumat. 437 00:20:14,720 --> 00:20:19,294 Dan kemudian adalah berdasarkan kepada protokol ini untuk bagaimana maklumat ini dihantar, 438 00:20:19,294 --> 00:20:21,460 pelayan memberikan maklumat kembali kepada kami, pelanggan. 439 00:20:21,460 --> 00:20:25,590 Dan kemudian kita untuk dapat melihat maklumat 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 >> Sebab itu Hypertext Transfer Protocol hanya protokol lain atau menetapkan 443 00:20:33,050 --> 00:20:37,470 konvensyen yang menentukan bagaimana pelayar web dan pelayan web 444 00:20:37,470 --> 00:20:38,890 perlu berkomunikasi. 445 00:20:38,890 --> 00:20:43,730 Dan meletakkan ini semua bersama-sama, HTTP, sekali lagi, 446 00:20:43,730 --> 00:20:50,960 hanya mentakrifkan bagaimana hiperteks ini ditakrifkan oleh HTML yang kita telah bekerja itu, 447 00:20:50,960 --> 00:20:59,500 bagaimana ia perlu dihantar kepada anda dan bagaimana data yang dihantar kepada anda 448 00:20:59,500 --> 00:21:00,540 mendapat kepada anda. 449 00:21:00,540 --> 00:21:05,990 >> Dan itulah sebabnya, jika anda semua masih ingat dari kelas, kita mempunyai banyak permintaan 450 00:21:05,990 --> 00:21:08,970 dan kami mempunyai banyak sintaks untuk permintaan ini bahawa kita 451 00:21:08,970 --> 00:21:10,250 akan pergi ke atas sekarang. 452 00:21:10,250 --> 00:21:13,270 Jadi sekali lagi, apabila kita menghantar permintaan kepada pelayan, 453 00:21:13,270 --> 00:21:15,920 kita perlu menentukan beberapa perkara. 454 00:21:15,920 --> 00:21:18,520 Oleh itu, kita perlu mencari jenis yang permintaan bahawa kita sedang terbenam. 455 00:21:18,520 --> 00:21:22,180 Dan sekali lagi, kita ada, sebagai contoh, GET adalah salah satu jenis kaedah 456 00:21:22,180 --> 00:21:25,290 yang ada di dalam permintaan kami. 457 00:21:25,290 --> 00:21:31,710 >> Dan kemudian HTTP / 1.1 adalah hanya protokol yang kita gunakan pada masa ini. 458 00:21:31,710 --> 00:21:34,224 459 00:21:34,224 --> 00:21:36,890 Kebanyakan masa, yang akan protokol yang kita gunakan. 460 00:21:36,890 --> 00:21:40,290 Jadi, jika anda mempunyai satu soalan seperti itu pada kuiz anda. 461 00:21:40,290 --> 00:21:43,120 Itulah konvensyen yang kita ada setakat ini. 462 00:21:43,120 --> 00:21:46,580 >> Backslash merujuk kepada apa jenis perkara yang kita meminta. 463 00:21:46,580 --> 00:21:52,810 Kemudian, tuan rumah kami adalah, sebagai contoh, dalam hal ini kes, kita cuba untuk pergi ke google.com. 464 00:21:52,810 --> 00:21:57,070 Jadi ini adalah nilai untuk mendapatkan darah. 465 00:21:57,070 --> 00:21:59,330 Ini adalah jenis permintaan yang dapat dihantar. 466 00:21:59,330 --> 00:22:02,890 >> Dan kemudian sejenis tindak balas yang boleh dihantar, sekali lagi, berdasarkan protokol ini, 467 00:22:02,890 --> 00:22:05,190 sekali 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 kod status. 470 00:22:09,730 --> 00:22:12,860 Dan OK yang hanya frasa berdasarkan bahawa kod status. 471 00:22:12,860 --> 00:22:15,520 >> Dan kemudian Content-Type merujuk kepada jenis 472 00:22:15,520 --> 00:22:20,295 yang dikembalikan kepada anda yang untuk halaman web yang anda terima 473 00:22:20,295 --> 00:22:22,570 dan bahawa pelayar anda boleh menyebabkan selepas itu. 474 00:22:22,570 --> 00:22:24,401 Dan itu adalah teks / html. 475 00:22:24,401 --> 00:22:26,660 >> PENONTON: Apakah 1.1 maksudkan? 476 00:22:26,660 --> 00:22:29,910 >> MARIA ZLATKOVA: Itu hanya versi daripada- oh, apakah 1.1 maksudkan? 477 00:22:29,910 --> 00:22:37,075 Itu baru versi, HTTP versi protokol yang kita gunakan. 478 00:22:37,075 --> 00:22:37,700 Persoalan yang besar. 479 00:22:37,700 --> 00:22:38,366 Soalan-soalan lain? 480 00:22:38,366 --> 00:22:41,222 481 00:22:41,222 --> 00:22:45,080 >> PENONTON: Bolehkah anda kesimpulan Content-Type cepat sebenar? 482 00:22:45,080 --> 00:22:48,150 >> MARIA ZLATKOVA: Supaya adalah apa yang pelayan. 483 00:22:48,150 --> 00:22:51,020 jenis information-- apa yang jenis kandungan adalah soalan. 484 00:22:51,020 --> 00:22:53,400 Sehingga adalah jenis maklumat yang anda kembali 485 00:22:53,400 --> 00:22:58,200 dari pelayan, jenis data bahawa pelayar yang boleh kemudian 486 00:22:58,200 --> 00:23:00,604 menyebabkan yang anda gunakan. 487 00:23:00,604 --> 00:23:03,020 PENONTON: Adakah 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 PENONTON: Adakah itu apa protokol katakan? 490 00:23:05,380 --> 00:23:05,915 MARIA ZLATKOVA: protocol-- ini 491 00:23:05,915 --> 00:23:07,940 PENONTON: --what yang Content-Type adalah atau what-- 492 00:23:07,940 --> 00:23:12,040 MARIA ZLATKOVA: protokol ini adalah berdasarkan pada-- apa yang protokol memberitahu anda? 493 00:23:12,040 --> 00:23:16,070 Itu hanya cara bahawa maklumat ini 494 00:23:16,070 --> 00:23:18,610 disampaikan kepada anda berdasarkan kepada apa jenis protokol 495 00:23:18,610 --> 00:23:21,830 telah mendapat maklumat ini diserahkan kembali kepada anda. 496 00:23:21,830 --> 00:23:23,500 Adakah ini masuk akal jenis? 497 00:23:23,500 --> 00:23:28,320 498 00:23:28,320 --> 00:23:30,070 HANNAH Blumberg: Anda boleh memikirkan protokol 499 00:23:30,070 --> 00:23:33,300 sebagai a-- saya fikir Profesor Malan menyifatkannya 500 00:23:33,300 --> 00:23:36,910 di dalam kelas sebagai jenis seperti a-- ia seperti sama dengan berjabat tangan manusia. 501 00:23:36,910 --> 00:23:44,930 Katakanlah, seperti, hey, Saya permintaan dan saya tahu bagaimana untuk mengendalikan HTTP versi 1.1. 502 00:23:44,930 --> 00:23:48,770 Dan kemudian pelayan itu berkata, oh, OK, Saya-- dan kedua-dua wujud. 503 00:23:48,770 --> 00:23:51,337 Saya juga tahu bagaimana untuk berurusan dengan HTTP / 1.1. 504 00:23:51,337 --> 00:23:53,170 Dan saya akan memberikan anda menyokong beberapa kandungan. 505 00:23:53,170 --> 00:23:56,230 Dalam kes ini, ia akan menjadi jenis teks / html. 506 00:23:56,230 --> 00:23:58,480 Jadi ia adalah jenis hanya cara yang daripada mereka untuk communicating-- 507 00:23:58,480 --> 00:24:00,480 >> MARIA ZLATKOVA: Ia hanya mengesahkan bahawa anda 508 00:24:00,480 --> 00:24:03,290 kedua-dua yang berikut yang sama protokol dan kedua-dua 509 00:24:03,290 --> 00:24:06,620 pelanggan dan server-- supaya pelayar anda dan server-- yang 510 00:24:06,620 --> 00:24:09,280 semacam tahu apa yang anda bercakap tentang dan mempunyai 511 00:24:09,280 --> 00:24:12,557 konvensyen untuk lulus dalam data. 512 00:24:12,557 --> 00:24:17,022 >> PENONTON: Jadi Content-Type part-- teks Content-Type / html-- itulah 513 00:24:17,022 --> 00:24:18,521 sebahagian berasingan mesej yang sama? 514 00:24:18,521 --> 00:24:20,509 Atau adakah ia sebahagian daripada katakan, 200? 515 00:24:20,509 --> 00:24:22,010 Adakah 200 memberitahu mereka bahawa atau is-- 516 00:24:22,010 --> 00:24:23,770 >> MARIA ZLATKOVA: 200 mengatakan ia semua pergi OK. 517 00:24:23,770 --> 00:24:27,900 Dan kemudian jenis kandungan adalah jenis bahagian yang berasingan mesej yang sama, 518 00:24:27,900 --> 00:24:34,274 dan berkata perkara yang saya Dikembalikan mempunyai jenis teks / html. 519 00:24:34,274 --> 00:24:35,690 Ia hanya memberi maklumat lanjut. 520 00:24:35,690 --> 00:24:38,700 521 00:24:38,700 --> 00:24:39,995 Mempunyai apa-apa untuk menambah? 522 00:24:39,995 --> 00:24:40,495 OKEY. 523 00:24:40,495 --> 00:24:43,590 524 00:24:43,590 --> 00:24:46,530 >> Mana-mana soalan-soalan lain mengenai perkara ini? 525 00:24:46,530 --> 00:24:48,370 Awesome. 526 00:24:48,370 --> 00:24:54,070 Jadi beberapa status HTTP lain yang kita boleh mendapatkan di samping 200 OK, 527 00:24:54,070 --> 00:24:59,500 orang-orang yang kami telah lihat mungkin mungkin banyak adalah 403 dan 404. 528 00:24:59,500 --> 00:25:05,190 Jadi 404, jika anda cuba untuk Akses sesuatu yang tidak wujud. 529 00:25:05,190 --> 00:25:10,460 Jadi, sebagai contoh, dalam anda Psets CS50 Kewangan, 530 00:25:10,460 --> 00:25:15,640 jika anda telah memberikan quote.html dan anda tidak mempunyai fail itu, 531 00:25:15,640 --> 00:25:19,740 tetapi sebaliknya anda mempunyai quote.php, yang akan menyebabkan 404 Not Found 532 00:25:19,740 --> 00:25:21,600 kerana fail mungkin tidak wujud. 533 00:25:21,600 --> 00:25:25,690 >> Untuk 403 dilarang, yang merujuk kepada kebenaran. 534 00:25:25,690 --> 00:25:31,150 Jadi, jika beberapa fail tidak boleh dibaca oleh dunia, anda mungkin akan yang 403 dikembalikan. 535 00:25:31,150 --> 00:25:34,510 536 00:25:34,510 --> 00:25:37,810 Beberapa orang lain yang anda mungkin get-- 301, Moved Permanently; 537 00:25:37,810 --> 00:25:41,300 302, Terdapat; 304, Modified; 400, Permintaan Bad; 538 00:25:41,300 --> 00:25:47,330 dan kemudian Ralat Pelayan Dalaman untuk 500 dan 503, Perkhidmatan Unavailable. 539 00:25:47,330 --> 00:25:48,140 Ya. 540 00:25:48,140 --> 00:25:51,490 >> PENONTON: Adakah kita dijangka menghafal semua status? 541 00:25:51,490 --> 00:25:53,739 MARIA ZLATKOVA: Saya akan mempunyai mereka pada lembaran menipu anda. 542 00:25:53,739 --> 00:25:55,146 [Ketawa] 543 00:25:55,146 --> 00:25:59,954 PENONTON: Adakah kita dijangka tahu apa yang mencetuskan masing-masing? 544 00:25:59,954 --> 00:26:00,995 MARIA ZLATKOVA: Adakah mereka? 545 00:26:00,995 --> 00:26:03,870 HANNAH Blumberg: Bagi orang-orang yang kami telah menjalankan into-- jadi persoalannya was-- 546 00:26:03,870 --> 00:26:08,010 MARIA ZLATKOVA: Adakah mereka dijangka tahu apa yang setiap seorang daripada status ini 547 00:26:08,010 --> 00:26:09,330 Kod mungkin dicetuskan oleh? 548 00:26:09,330 --> 00:26:13,240 Jadi bagi orang-orang yang kita telah menggunakan dan berlari ke dalam, saya akan berkata, ya. 549 00:26:13,240 --> 00:26:16,610 Oleh itu, kita pasti dilihat 200 OK dan syarahan dalam 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 orang-orang lain? 552 00:26:20,550 --> 00:26:22,690 >> HANNAH Blumberg: saya akan mengatakan 500 seolah-olah 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 mempunyai pengertian umum apa yang menyebabkan mereka. 556 00:26:27,006 --> 00:26:28,880 Dan juga hanya dengan ini nama, anda boleh jenis 557 00:26:28,880 --> 00:26:32,890 seperti membuat tekaan berpendidikan sebagai apa yang sebenarnya menyebabkan mereka. 558 00:26:32,890 --> 00:26:36,919 Sebagai contoh, bergerak secara kekal, mungkin fail itu dipindahkan secara kekal. 559 00:26:36,919 --> 00:26:39,328 >> PENONTON: Tetapi pada sebelum peperiksaan, terdapat begitu 560 00:26:39,328 --> 00:26:41,050 bagaimana anda mengharapkan kami untuk menjawab itu? 561 00:26:41,050 --> 00:26:42,883 >> HANNAH Blumberg: Itu bernilai sifar mata. 562 00:26:42,883 --> 00:26:45,870 Persoalan 418 pada teko secara teknikal status HTTP, 563 00:26:45,870 --> 00:26:47,090 tetapi ia adalah bernilai sifar mata. 564 00:26:47,090 --> 00:26:48,320 Jelas sekali, anda tidak dijangka mengenali mereka. 565 00:26:48,320 --> 00:26:49,670 >> PENONTON: Adakah yang sebenar? 566 00:26:49,670 --> 00:26:51,970 >> HANNAH Blumberg: Adalah benar yang satu, tetapi ia tidak bermakna apa-apa. 567 00:26:51,970 --> 00:26:52,700 Ia hanya jenaka. 568 00:26:52,700 --> 00:26:55,480 569 00:26:55,480 --> 00:26:57,010 Orang Internet adalah lucu. 570 00:26:57,010 --> 00:26:59,680 >> MARIA ZLATKOVA: soalan hebat, lelaki. 571 00:26:59,680 --> 00:27:01,452 Apa-apa soalan lain? 572 00:27:01,452 --> 00:27:04,891 >> PENONTON: Apakah Ralat pelayan dalaman? 573 00:27:04,891 --> 00:27:06,640 MARIA ZLATKOVA: Dalaman Ralat pelayan hanya 574 00:27:06,640 --> 00:27:10,050 bermakna bahawa anda telah tidak dapat berkomunikasi 575 00:27:10,050 --> 00:27:13,400 dengan pelayan atas sebab tertentu. 576 00:27:13,400 --> 00:27:15,400 Jadi ia tidak semestinya sesuatu yang mempunyai kaitan 577 00:27:15,400 --> 00:27:19,170 dengan pelanggan atau sesuatu seperti itu. 578 00:27:19,170 --> 00:27:22,170 Saya tidak tahu apa-apa contoh yang khusus yang kita telah pergi ke atas untuk menjelaskan, 579 00:27:22,170 --> 00:27:23,000 tetapi yeah. 580 00:27:23,000 --> 00:27:23,250 >> HANNAH Blumberg: Pasti. 581 00:27:23,250 --> 00:27:25,625 Jadi, sebagai contoh, seperti mari mengatakan anda telah bekerja di Mashup 582 00:27:25,625 --> 00:27:30,440 dan pelayan Google turun ke bawah untuk beberapa sebab, gangguan kuasa, katakan. 583 00:27:30,440 --> 00:27:33,400 Yang akan menjadi pelayan dalaman kesilapan atau beberapa jenis daripada- suka anda 584 00:27:33,400 --> 00:27:34,630 tidak akan mendapat jawapan kembali. 585 00:27:34,630 --> 00:27:35,260 >> MARIA ZLATKOVA: Ya. 586 00:27:35,260 --> 00:27:37,050 Ia hanya apabila anda berada tidak dapat berkomunikasi 587 00:27:37,050 --> 00:27:40,299 dengan pelayan sebab tertentu kerana itu akan turun atau sebab-sebab lain. 588 00:27:40,299 --> 00:27:44,430 589 00:27:44,430 --> 00:27:47,690 Jadi melompat ke dalam PHP. 590 00:27:47,690 --> 00:27:49,930 PHP, tidak seperti HTML, ialah bahasa pengaturcaraan. 591 00:27:49,930 --> 00:27:54,820 Dan kami mula menggunakannya kerana ia adalah sangat berguna untuk pembangunan web. 592 00:27:54,820 --> 00:27:56,940 >> Kita mula-mula digunakan dalam CS50 Kewangan. 593 00:27:56,940 --> 00:28:02,240 Dan pada dasarnya membantu kita membawa bersama-sama markup ini, reka bentuk, 594 00:28:02,240 --> 00:28:07,460 dan bagaimana kita sebenarnya menggunakan maklumat untuk memaparkan perkara di laman web. 595 00:28:07,460 --> 00:28:11,870 Jadi PHP sendiri bermaksud PHP Hypertext Preprocessor, 596 00:28:11,870 --> 00:28:15,360 maka ia adalah satu backnorym rekursi dengan sendirinya. 597 00:28:15,360 --> 00:28:22,330 Dan membuka tag untuk PHP kita kiri dan anak 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 >> Oleh itu, kita telah pun melihat sekumpulan daripadanya. 600 00:28:25,890 --> 00:28:29,150 Sekarang, kami hanya akan pergi ke atas beberapa perkara asas mengenainya. 601 00:28:29,150 --> 00:28:32,280 Jadi dengan PHP, pembolehubah namanya bermula dengan tanda dolar. 602 00:28:32,280 --> 00:28:35,660 Kami tidak menentukan, sekali lagi, pembolehubah menaip lagi. 603 00:28:35,660 --> 00:28:38,450 Sama seperti kita lakukan dengan C, kita tidak perlu untuk berbuat demikian. 604 00:28:38,450 --> 00:28:41,670 605 00:28:41,670 --> 00:28:44,490 >> Kita boleh melakukan sekumpulan yang berbeza barangan dengan pembolehubah. 606 00:28:44,490 --> 00:28:47,750 Kita boleh meletakkan mereka bersama-sama oleh concatenating mereka 607 00:28:47,750 --> 00:28:52,900 dengan notasi titik, yang kita tidak boleh melakukannya dalam C lagi. 608 00:28:52,900 --> 00:28:57,490 Sekali lagi, kita mempunyai serba sedikit lebih dengan PHP dari segi pembolehubah. 609 00:28:57,490 --> 00:29:00,080 Sekali lagi, kita tidak mempunyai fungsi utama. 610 00:29:00,080 --> 00:29:03,370 >> Dan PHP ditafsirkan yang bertentangan dengan disusun, 611 00:29:03,370 --> 00:29:09,970 Jadi, betapa kami tidak membuat untuk fail C, kita tidak perlu berbuat demikian untuk PHP. 612 00:29:09,970 --> 00:29:15,440 Tetapi, cara bahawa bahasa dijalankan dengan sendirinya, ia ditafsirkan. 613 00:29:15,440 --> 00:29:18,550 Dan kemudian longgar ditaip hanya bermakna bahawa kita 614 00:29:18,550 --> 00:29:22,490 tidak perlu nyatakan pembolehubah jenis dan jenis pembolehubah 615 00:29:22,490 --> 00:29:25,415 difahami pada masa jalanan. 616 00:29:25,415 --> 00:29:29,185 >> PENONTON: Tetapi apa yang anda lakukan maksudkan dengan dinamika dot? 617 00:29:29,185 --> 00:29:30,060 MARIA ZLATKOVA: Pasti. 618 00:29:30,060 --> 00:29:37,660 Apabila kita mahu meletakkan perkara together-- jadi jika kita mempunyai beberapa pembolehubah yang 619 00:29:37,660 --> 00:29:41,500 mempunyai nilai 3 dan kami mempunyai satu lagi pembolehubah yang mempunyai nilai tali, 620 00:29:41,500 --> 00:29:45,920 kita boleh meletakkan pembolehubah bersama-sama dengan meletakkan 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 boleh membuat berubah-ubah menamai 623 00:29:52,670 --> 00:29:56,900 dan meletakkannya bersama-sama dengan concatenating dua tali. 624 00:29:56,900 --> 00:30:00,680 >> Jadi, jika kita mempunyai rentetan dalam dua sebut harga dan kita meletakkan titik selepas itu, 625 00:30:00,680 --> 00:30:03,660 dan kemudian kita mempunyai rentetan yang lain, yang akan mewujudkan rentetan sama sekali. 626 00:30:03,660 --> 00:30:05,242 >> PENONTON: OK. 627 00:30:05,242 --> 00:30:06,450 MARIA LATVIA: Telah yang jelas? 628 00:30:06,450 --> 00:30:07,099 PENONTON: Ya. 629 00:30:07,099 --> 00:30:07,890 MARIA ZLATKOVA: OK. 630 00:30:07,890 --> 00:30:08,766 Ya. 631 00:30:08,766 --> 00:30:11,146 >> PENONTON: Apabila kamu berkata ditafsirkan dan bukannya disusun, 632 00:30:11,146 --> 00:30:14,160 yang anda bercakap tentang anda tidak perlu untuk menjadi tertentu apabila 633 00:30:14,160 --> 00:30:15,906 ia datang kepada PHP berbanding C? 634 00:30:15,906 --> 00:30:18,085 635 00:30:18,085 --> 00:30:20,710 MARIA ZLATKOVA: Apabila kita katakan ditafsirkan sebagai bertentangan dengan disusun, 636 00:30:20,710 --> 00:30:21,850 apa yang kita maksudkan? 637 00:30:21,850 --> 00:30:26,220 Ini bermakna bahawa kita tidak perlu fail boleh laku untuk menjalankan PHP. 638 00:30:26,220 --> 00:30:29,870 Ia bermakna bahawa ia berjalan yang ia pergi. 639 00:30:29,870 --> 00:30:31,650 Adakah ini 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 boleh berfikir jurubahasa 642 00:30:34,620 --> 00:30:38,980 sebagai satu lagi program yang bertanggungjawab untuk pergi baris demi baris melalui PHP 643 00:30:38,980 --> 00:30:42,745 dan benar-benar melaksanakannya, yang bertentangan untuk menyusun semua turun ke binari. 644 00:30:42,745 --> 00:30:46,050 Ia sebenarnya tidak bermakna apa-apa tentang bagaimana tertentu kita perlu. 645 00:30:46,050 --> 00:30:49,470 Kita masih perlu untuk menjadi tepat, dan tidak lupa koma bertitik anda, dan memastikan 646 00:30:49,470 --> 00:30:51,470 anda mempunyai tanda dolar anda, dan perkara-perkara seperti itu. 647 00:30:51,470 --> 00:30:52,240 Soalan yang baik. 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, kerana berbanding dengan fail C, 650 00:30:55,590 --> 00:30:59,100 kita perlu membuat seluruh akhir sebelum kita benar-benar dapat menjalankannya. 651 00:30:59,100 --> 00:31:00,360 Itulah perbezaan utama. 652 00:31:00,360 --> 00:31:02,655 Tetapi sekali lagi, kita tidak boleh benar-benar kurang tertentu. 653 00:31:02,655 --> 00:31:08,760 654 00:31:08,760 --> 00:31:13,950 Jadi tatasusunan dalam PHP mewakili sebenarnya peta yang teratur. 655 00:31:13,950 --> 00:31:17,550 >> Jadi nilai array bersekutu kepada kunci. 656 00:31:17,550 --> 00:31:23,350 Kedua-dua cara untuk mengisytiharkan pelbagai, berdasarkan sintaks ini, 657 00:31:23,350 --> 00:31:26,380 kita boleh menjadi lebih jelas dalam mengatakan kami mempunyai array 658 00:31:26,380 --> 00:31:31,010 dan kami mempunyai key1 ini yang memetakan untuk nilai1 ini, key2 yang memetakan value2. 659 00:31:31,010 --> 00:31:34,660 Atau kita hanya boleh membuat array yang mengandungi nilai sendiri 660 00:31:34,660 --> 00:31:38,360 dan kemudian kunci adalah difahami dengan cara yang. 661 00:31:38,360 --> 00:31:40,000 Sebarang pertanyaan mengenai perkara ini? 662 00:31:40,000 --> 00:31:42,500 >> PENONTON: Apa yang akan kekunci berada di dalam 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: Sebagai contoh, ia hanya kunci dalam tidak semestinya 667 00:31:55,780 --> 00:31:56,550 melakukan perubahan. 668 00:31:56,550 --> 00:32:01,720 Mereka hanya menentukan bagaimana anda boleh menggunakan nilai di dalamnya. 669 00:32:01,720 --> 00:32:08,660 Jadi, jika kita mempunyai foreach yang gelung dalam PHP yang akan 670 00:32:08,660 --> 00:32:14,760 membolehkan kita untuk pergi melalui semua nilai-nilai, kita boleh pergi melalui semua nilai-nilai, 671 00:32:14,760 --> 00:32:19,570 walaupun kita telah atau tidak ditakrifkan kunci tertentu di dalam laman ini 672 00:32:19,570 --> 00:32:20,820 sintaks sebelumnya. 673 00:32:20,820 --> 00:32:23,460 >> Jadi, walaupun dengan seperti ini array, kita masih boleh 674 00:32:23,460 --> 00:32:26,260 mempunyai gelung foreach yang melalui setiap 675 00:32:26,260 --> 00:32:31,240 nilai dalam kunci dalam array. 676 00:32:31,240 --> 00:32:36,180 Jadi sintaks foreach yang gelung, kita mulakan dengan array. 677 00:32:36,180 --> 00:32:38,720 678 00:32:38,720 --> 00:32:43,900 Pemboleh ubah $ arr adalah pelbagai sebenar kami yang kita ditakrifkan dalam slaid sebelumnya 679 00:32:43,900 --> 00:32:47,550 sebagai nilai yang benar-benar pergi melalui setiap nilai, 680 00:32:47,550 --> 00:32:50,122 tidak kira sama ada kita mempunyai kunci atau tidak. 681 00:32:50,122 --> 00:32:53,080 Dan kemudian kita boleh melakukan sesuatu dengan nilai dalam gelung foreach. 682 00:32:53,080 --> 00:32:57,730 Jadi sekali lagi, jika kita mempunyai array seperti ini di sini created-- 683 00:32:57,730 --> 00:33:03,270 jadi kami mempunyai kunci foo dan nilai bar, kunci baz dan nilai qux-- 684 00:33:03,270 --> 00:33:09,730 kita boleh mempunyai gelung foreach yang akan melalui pelbagai sebagai nilai utama 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 Tetapi kita tidak semestinya sentiasa perlu mempunyai foreach satu gelung yang 687 00:33:15,980 --> 00:33:19,410 akan melalui pelbagai sebagai peta kunci untuk nilai. 688 00:33:19,410 --> 00:33:26,060 Kita boleh pergi melalui pelbagai gelung foreach sebagai nilai. 689 00:33:26,060 --> 00:33:28,990 >> HANNAH Blumberg: Dan saya fikir supaya- adalah soalan anda, apa yang 690 00:33:28,990 --> 00:33:31,229 adalah indeks yang tersirat? 691 00:33:31,229 --> 00:33:31,895 PENONTON: 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 asasnya, jika anda tidak menentukan kunci, ia 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, ia adalah sifar diindeks jika anda tidak menentukan kunci. 697 00:33:41,718 --> 00:33:42,384 PENONTON: Maaf. 698 00:33:42,384 --> 00:33:43,827 Bolehkah anda cuba bercakap sedikit lebih kuat? 699 00:33:43,827 --> 00:33:45,270 Saya mempunyai sedikit masalah semua pendengaran. 700 00:33:45,270 --> 00:33:46,478 >> MARIA ZLATKOVA: Saya minta maaf. 701 00:33:46,478 --> 00:33:48,439 Yeah sudah tentu. 702 00:33:48,439 --> 00:33:50,230 Jadi adakah anda mahu saya untuk pergi ke ini lagi? 703 00:33:50,230 --> 00:33:51,680 Atau adakah this-- 704 00:33:51,680 --> 00:33:54,930 PENONTON: Maka pada slide-- sebelumnya jika anda hanya boleh kembali untuk satu saat. 705 00:33:54,930 --> 00:33:57,313 MARIA ZLATKOVA: Sudah tentu, maaf. 706 00:33:57,313 --> 00:33:59,237 PENONTON: Jadi yang kedua lokasi di sini tidak 707 00:33:59,237 --> 00:34:04,135 seolah-olah mempunyai nilai yang memasukkan, lebih kurang [? penyebaban. ?] 708 00:34:04,135 --> 00:34:05,343 MARIA ZLATKOVA: Betul, betul. 709 00:34:05,343 --> 00:34:07,608 PENONTON: Jadi bagaimana ia berfungsi apabila anda mengatakan itu semua atau tiada. 710 00:34:07,608 --> 00:34:08,969 Bagi saya, yang kelihatan seperti a [? 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 satu peta diperintahkan dalam pengertian ini 713 00:34:12,969 --> 00:34:15,639 bahawa terdapat difahami, sebagai contoh, indeks 714 00:34:15,639 --> 00:34:20,159 di sini boleh difahami sebagai 0, 1, 2, 3. 715 00:34:20,159 --> 00:34:25,929 Sekali lagi, itu mempunyai orang-orang indeks bersamaan kami 716 00:34:25,929 --> 00:34:28,980 mempunyai kunci digabungkan kepada nilai-nilai. 717 00:34:28,980 --> 00:34:34,710 Jadi, jika utama kami adalah 0-- maaf. 718 00:34:34,710 --> 00:34:36,524 >> HANNAH Blumberg: Tiada ada yang mencatatkan di sini. 719 00:34:36,524 --> 00:34:36,929 Ia sebenarnya benar-benar baik. 720 00:34:36,929 --> 00:34:37,460 >> MARIA ZLATKOVA: Itu yang besar. 721 00:34:37,460 --> 00:34:38,260 OKEY. 722 00:34:38,260 --> 00:34:49,489 Jadi sekali lagi, $ arr 0 adalah 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 PENONTON: Saya minta maaf. 725 00:34:51,971 --> 00:34:53,190 Ia tidak dapat dilihat. 726 00:34:53,190 --> 00:34:53,659 >> HANNAH Blumberg: Baiklah, takpa. 727 00:34:53,659 --> 00:34:54,980 Chalk adalah idea yang buruk. 728 00:34:54,980 --> 00:34:58,030 Saya mengambil kembali. 729 00:34:58,030 --> 00:35:01,425 Anda boleh memikirkan kekunci sebagai 0 peta untuk 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 adalah 1, 2, 3. 732 00:35:04,630 --> 00:35:05,760 Ini boleh menjadi kunci anda. 733 00:35:05,760 --> 00:35:10,020 Anda boleh memikirkan mereka as-- yeah. 734 00:35:10,020 --> 00:35:12,740 Jadi, daripada mempunyai kunci yang jelas, mereka 735 00:35:12,740 --> 00:35:17,180 semacam difahami sebagai indeks bermula pada 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 Yeah. 739 00:35:25,722 --> 00:35:30,914 >> PENONTON: Untuk gelung foreach, jika kita mahu melihat sebagai nilai, 740 00:35:30,914 --> 00:35:33,245 ia akan hanya indeks secara automatik ke 0? 741 00:35:33,245 --> 00:35:34,120 MARIA ZLATKOVA: Ya. 742 00:35:34,120 --> 00:35:35,745 Ia akan melalui setiap satu daripada nilai-nilai. 743 00:35:35,745 --> 00:35:39,130 PENONTON: [didengar] sebagai 0 atau akan yang hanya melakukan 0? 744 00:35:39,130 --> 00:35:43,710 >> MARIA ZLATKOVA: Anda akan mempunyai untuk mengatakan sebagai tanda dolar dan kemudian 745 00:35:43,710 --> 00:35:46,266 beberapa nama boleh ubah, nilai. 746 00:35:46,266 --> 00:35:47,182 PENONTON: [didengar]. 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 PENONTON: Maaf, Saya hanya cuba untuk ingat. 750 00:35:52,839 --> 00:35:57,190 Bagaimanakah anda bahawa jika anda boleh melakukannya secara automatik pengindeksan hanya 0 dari? 751 00:35:57,190 --> 00:36:00,780 >> MARIA ZLATKOVA: Jadi bagaimana anda akan berbuat demikian jika anda tidak mempunyai nama-nama utama tertentu? 752 00:36:00,780 --> 00:36:01,710 >> PENONTON: Ya. 753 00:36:01,710 --> 00:36:07,820 >> MARIA ZLATKOVA: Anda akan sama define-- hanya mengatakan diri anda sebagai nama beberapa. 754 00:36:07,820 --> 00:36:17,950 Jadi dalam psets anda, anda semua mungkin ingat foreach $ berturut-turut sebagai $ baris, 755 00:36:17,950 --> 00:36:24,610 kami mencipta diri kita ini $ berturut-turut berkata kita mahu pergi melalui berturut-turut sebagai $ baris. 756 00:36:24,610 --> 00:36:28,360 Walaupun kita tidak mempunyai $ ini jelas baris ditakrifkan, 757 00:36:28,360 --> 00:36:31,990 kita hanya boleh pergi dan kata ini boleh menjadi utama kami, 758 00:36:31,990 --> 00:36:33,615 dan hanya pergi melalui setiap nilai. 759 00:36:33,615 --> 00:36:37,295 760 00:36:37,295 --> 00:36:41,660 >> PENONTON: Jadi adalah nilai pembolehubah baru kami mewujudkan untuk menyimpan [didengar]? 761 00:36:41,660 --> 00:36:46,820 762 00:36:46,820 --> 00:36:49,990 >> MARIA ZLATKOVA: Jadi ia bukan memang pembolehubah baru. 763 00:36:49,990 --> 00:37:00,310 Ia adalah satu pembolehubah yang merujuk kepada dalam array kepada setiap daripada mereka. 764 00:37:00,310 --> 00:37:02,060 HANNAH Blumberg: Ia nama boleh ubah baru. 765 00:37:02,060 --> 00:37:04,018 MARIA ZLATKOVA: Ya, ia adalah satu nama pembolehubah baru, 766 00:37:04,018 --> 00:37:06,680 tetapi ia tidak inherently-- yeah. 767 00:37:06,680 --> 00:37:08,950 Ia hanya satu pembolehubah baru bahawa anda boleh berbuat demikian. 768 00:37:08,950 --> 00:37:12,680 Jadi hanya bagaimana kita lakukan $ berdayung sebagai $ baris, baris 769 00:37:12,680 --> 00:37:17,980 adalah nama pembolehubah baru yang kita boleh mewujudkan dalam gelung foreach kami. 770 00:37:17,980 --> 00:37:22,065 Ia tidak perlu preexist sebelum itu. 771 00:37:22,065 --> 00:37:25,777 >> PENONTON: Bolehkah anda pergi melalui logik untuk setiap, 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 adalah contoh. 776 00:37:33,780 --> 00:37:34,280 Pasti. 777 00:37:34,280 --> 00:37:38,950 Jadi bagi setiap array-- supaya yang bermakna pergi ke pelbagai ini 778 00:37:38,950 --> 00:37:43,930 sebagai kunci value-- yang akan melalui pelbagai ini 779 00:37:43,930 --> 00:37:49,480 dan pertama kali pergi dan mendapatkan foo, yang foo utama dan bar nilai. 780 00:37:49,480 --> 00:37:51,570 Dan kemudian pada kedua lelaran untuk gelung, 781 00:37:51,570 --> 00:37:55,090 ia akan pergi melalui dan mengambil yang baz utama dan qux nilai. 782 00:37:55,090 --> 00:38:00,512 Dan kemudian anda boleh melakukan sesuatu dengan salah seorang daripada mereka atau kedua-dua mereka. 783 00:38:00,512 --> 00:38:03,488 >> PENONTON: Jadi idea di sebalik mempunyai takat Kunci kepada 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: Apakah idea yang yang mempunyai menunjuk utama untuk menghargai? 786 00:38:10,680 --> 00:38:16,400 Ia hanya satu lagi konvensyen, satu lagi cara melalui array 787 00:38:16,400 --> 00:38:22,600 dan dapat mengakses sama ada kunci atau nilai atau kedua-duanya dan menggunakannya. 788 00:38:22,600 --> 00:38:27,100 >> PENONTON: Apa peranan untuk memerintahkan supaya foreach berjalan dalam? 789 00:38:27,100 --> 00:38:29,250 Jadi jika kita menambah unsur-unsur untuk array kemudian, 790 00:38:29,250 --> 00:38:32,140 mereka akan menjadi orang-orang pertama dipanggil dalam pelbagai foreach, 791 00:38:32,140 --> 00:38:33,750 atau ia akan menjadi di kemudian hari? 792 00:38:33,750 --> 00:38:37,770 >> MARIA ZLATKOVA: Jadi apa yang perintah itu bahawa foreach 793 00:38:37,770 --> 00:38:39,210 gelung akan melalui pelbagai dalam? 794 00:38:39,210 --> 00:38:42,220 Ia pergi melalui pertama unsur dengan unsur yang lalu, 795 00:38:42,220 --> 00:38:43,400 kepada elemen terkini ditambah. 796 00:38:43,400 --> 00:38:48,020 Jika anda menambah elemen di kemudian hari, mereka akan dapat accessed-- unsur-unsur 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 setiap unsur-unsur sebagai jenis ordered-- yang 799 00:38:57,620 --> 00:39:02,930 tidak yang teratur, tetapi cara yang mereka telah dimasukkan ke dalam array. 800 00:39:02,930 --> 00:39:06,855 >> PENONTON: unsur-unsur Jadi baru ditambah kemudian? 801 00:39:06,855 --> 00:39:10,680 Jadi mereka added-- mereka akan menjadi orang-orang yang terakhir di dalam [itu? lelaran. ?] 802 00:39:10,680 --> 00:39:14,280 >> MARIA ZLATKOVA: unsur-unsur New can-- pada asasnya, apabila unsur-unsur baru ditambah, 803 00:39:14,280 --> 00:39:16,520 adakah mereka ditambah kepada hujung array? 804 00:39:16,520 --> 00:39:17,632 >> PENONTON: Ya. 805 00:39:17,632 --> 00:39:18,840 MARIA ZLATKOVA: Saya percaya begitu. 806 00:39:18,840 --> 00:39:20,850 Ya. 807 00:39:20,850 --> 00:39:24,330 Dan kemudian dengan gelung foreach anda, selepas anda telah menambah unsur-unsur baru 808 00:39:24,330 --> 00:39:26,790 dan anda akan melalui mereka, unsur-unsur baru akan 809 00:39:26,790 --> 00:39:30,930 menjadi accessed-- elemen baru, jika ia ditambah lepas, ia akan diakses lepas. 810 00:39:30,930 --> 00:39:34,416 >> PENONTON: Bolehkah anda hanya memberikan contoh sesuatu yang akan [didengar] 811 00:39:34,416 --> 00:39:37,404 dengan sesuatu yang mempunyai nilai seperti [didengar] atau nilai, 812 00:39:37,404 --> 00:39:38,910 suka cara anda format itu? 813 00:39:38,910 --> 00:39:39,785 >> MARIA ZLATKOVA: Pasti. 814 00:39:39,785 --> 00:39:42,340 815 00:39:42,340 --> 00:39:46,410 Bolehkah saya memberi satu contoh apa yang yang kita akan lakukan dengan nilai? 816 00:39:46,410 --> 00:39:52,440 Jadi apa yang anda semua mungkin biasa dengan adalah bahawa kita telah melalui array 817 00:39:52,440 --> 00:39:55,380 dan pada dasarnya dicetak setiap unsur-unsur, 818 00:39:55,380 --> 00:40:00,910 sebagai contoh, sebagai sebahagian daripada senarai yang diperintahkan atau sesuatu yang. 819 00:40:00,910 --> 00:40:02,674 Adakah ini masuk akal atau adakah kita mahu supaya- 820 00:40:02,674 --> 00:40:04,340 PENONTON: Bolehkah kita mencetak nilai-nilai ini keluar? 821 00:40:04,340 --> 00:40:13,220 MARIA ZLATKOVA: Ya, kita boleh mencetak dan kemudian pada dasarnya $ nilai kerana pada 822 00:40:13,220 --> 00:40:16,570 bahawa nilai tertentu, kita akan mencetak nilai di dalamnya. 823 00:40:16,570 --> 00:40:20,150 Jadi, jika kita berada di lelaran pertama kami itu dan kita dicetak $ nilai, 824 00:40:20,150 --> 00:40:23,775 kita akan mencetak bar. 825 00:40:23,775 --> 00:40:27,020 >> PENONTON: Adakah terdapat juga untuk gelung dalam PHP atau hanya gelung foreach? 826 00:40:27,020 --> 00:40:30,430 >> MARIA ZLATKOVA: Ada juga untuk gelung dalam PHP. 827 00:40:30,430 --> 00:40:33,399 Dan logik mereka adalah kebanyakannya sama seperti apa yang anda telah digunakan untuk. 828 00:40:33,399 --> 00:40:34,690 PENONTON: Jadi nilainya adalah null. 829 00:40:34,690 --> 00:40:35,090 MARIA ZLATKOVA: Ia seperti yang sama. 830 00:40:35,090 --> 00:40:35,590 Yeah. 831 00:40:35,590 --> 00:40:37,747 PENONTON: saya hanya akan bertanya. 832 00:40:37,747 --> 00:40:39,695 Oleh itu, apabila anda mengisytiharkan pelbagai, anda tidak perlu 833 00:40:39,695 --> 00:40:42,617 untuk memberitahu apa saiz ia akan berkenaan, yang bermaksud bahawa anda boleh hanya 834 00:40:42,617 --> 00:40:44,417 menambah dan mengambil unsur-unsur [didengar]. 835 00:40:44,417 --> 00:40:45,250 MARIA ZLATKOVA: Yup. 836 00:40:45,250 --> 00:40:45,750 Yup. 837 00:40:45,750 --> 00:40:46,251 Tepat sekali. 838 00:40:46,251 --> 00:40:48,875 Apabila kita mengisytiharkan array, kita tidak perlu berkata apa saiz pun, 839 00:40:48,875 --> 00:40:51,022 jadi kita hanya boleh menambah unsur-unsur ke ia kemudian juga. 840 00:40:51,022 --> 00:40:55,075 841 00:40:55,075 --> 00:40:55,700 Soalan lagi? 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 sebagai contoh, dalam contoh ini, kita ada bentuk HTML yang mempunyai medan input. 845 00:41:15,130 --> 00:41:18,830 >> Dan medan input adalah nama hanya dan kemudian ia mempunyai butang Submit. 846 00:41:18,830 --> 00:41:26,040 Dan apabila anda menekan Hantar butang, dalam fail hello.php kami, 847 00:41:26,040 --> 00:41:32,130 kerana kaedah untuk bentuk adalah mendapatkan, kita boleh mengakses apa yang ada pada nama 848 00:41:32,130 --> 00:41:40,360 dengan ini mendapatkan pembolehubah global yang is-- sintaks kerana ia adalah $ _GET. 849 00:41:40,360 --> 00:41:44,520 Dan kemudian kita boleh mengakses apa sahaja input pengguna di dalam bentuk yang bagi nama 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 >> Mana-mana soalan-soalan lain atau mana-mana soalan dalam contoh ini tertentu? 853 00:41:55,060 --> 00:41:58,275 >> PENONTON: Di manakah PHP? 854 00:41:58,275 --> 00:41:59,150 MARIA ZLATKOVA: Di sini. 855 00:41:59,150 --> 00:42:01,150 Jadi ini adalah tag pembukaan kami untuk PHP. 856 00:42:01,150 --> 00:42:01,530 >> PENONTON: Oh, betul. 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 trengkas untuk ini adalah PHP dan hanya gema. 860 00:42:09,609 --> 00:42:10,150 PENONTON: Oh. 861 00:42:10,150 --> 00:42:10,720 MARIA ZLATKOVA: Ya, maaf. 862 00:42:10,720 --> 00:42:12,040 Perlu saya telah membuat yang jelas. 863 00:42:12,040 --> 00:42:13,759 >> HANNAH Blumberg: Cetak. 864 00:42:13,759 --> 00:42:16,800 MARIA ZLATKOVA: Ia hanya fungsi yang membolehkan kita untuk mencetak sesuatu. 865 00:42:16,800 --> 00:42:19,795 866 00:42:19,795 --> 00:42:20,420 Persoalan yang 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 >> PENONTON: Adakah terdapat akan menjadi agak sedikit coding tangan PHP dan HTML 870 00:42:31,940 --> 00:42:33,450 kuiz 1? 871 00:42:33,450 --> 00:42:36,310 872 00:42:36,310 --> 00:42:38,810 MARIA ZLATKOVA: Ada boleh menjadi Jumlah saksama tafsiran 873 00:42:38,810 --> 00:42:43,330 PHP dan HTML, tidak semestinya seperti sejumlah besar pengekodan, 874 00:42:43,330 --> 00:42:46,960 walaupun anda mungkin perlu menulis gelung foreach, walaupun, untuk gelung. 875 00:42:46,960 --> 00:42:49,790 Mana-mana gelung yang kita meliputi di sini adalah permainan yang adil. 876 00:42:49,790 --> 00:42:51,889 Dan itu kebanyakannya ia. 877 00:42:51,889 --> 00:42:53,430 HANNAH Blumberg: Saya akan disediakan. 878 00:42:53,430 --> 00:42:57,010 Dengan cara yang sama bahawa kita meminta anda untuk menulis sekumpulan fungsi C kuiz 0, 879 00:42:57,010 --> 00:42:59,766 Saya akan bersedia untuk melakukan perkara yang sama dalam 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 berkata yang little-- seperti kita tidak 882 00:43:03,210 --> 00:43:06,251 akan membuat anda menulis HTML besar halaman hanya kerana itulah sedikit 883 00:43:06,251 --> 00:43:08,240 membosankan, tetapi anda mungkin mempunyai bahagian. 884 00:43:08,240 --> 00:43:09,310 Itulah permainan 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 PENONTON: OK. 887 00:43:11,623 --> 00:43:13,814 Bagaimana pula dalam 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 itu. 890 00:43:15,250 --> 00:43:15,635 >> MARIA ZLATKOVA: Ya. 891 00:43:15,635 --> 00:43:16,801 Itulah permainan benar-benar adil. 892 00:43:16,801 --> 00:43:19,280 HANNAH Blumberg: Kami akan dengan yang di seperti 10 minit. 893 00:43:19,280 --> 00:43:23,750 >> MARIA ZLATKOVA: SQL, sekali lagi, Bahasa Pertanyaan Berstruktur. 894 00:43:23,750 --> 00:43:28,651 Ia pada dasarnya membolehkan kita untuk menguruskan data dalam pengurusan pangkalan data hubungan 895 00:43:28,651 --> 00:43:29,150 sistem. 896 00:43:29,150 --> 00:43:31,149 Yang hanya pada asasnya bermakna yang kita ada di suatu tempat 897 00:43:31,149 --> 00:43:37,980 untuk menyimpan beberapa data yang kita mungkin mahu digunakan dalam laman web atau dalam bentuk lain. 898 00:43:37,980 --> 00:43:42,190 Dan kemudian kita mempunyai pertanyaan untuk mendapatkan maklumat daripada pangkalan data kami, 899 00:43:42,190 --> 00:43:44,320 atau untuk memasukkan maklumat di dalamnya. 900 00:43:44,320 --> 00:43:47,560 Banyak UPDATE ones-- bersama, INSERT, SELECT, dan DELETE. 901 00:43:47,560 --> 00:43:50,790 >> Jadi untuk UPDATE, ini adalah sintaks untuk mengemaskini data di dalam sistem database. 902 00:43:50,790 --> 00:43:53,330 903 00:43:53,330 --> 00:43:57,340 Mengemaskini jadual ini dipanggil meja dengan mengatakan SET, 904 00:43:57,340 --> 00:44:04,170 kita boleh menetapkan beberapa nilai dalam semua baris kepada sesuatu sama lain. 905 00:44:04,170 --> 00:44:09,410 Oleh itu, kita juga boleh menentukan beberapa tertentu entri yang kita mahu untuk mengubah suai 906 00:44:09,410 --> 00:44:11,240 dan yang boleh menggunakan mana. 907 00:44:11,240 --> 00:44:16,380 Dan kita boleh menentukan bahawa kami hanya mahu mengubah suai beberapa baris di mana rumah untuk, 908 00:44:16,380 --> 00:44:19,830 jika kita mempunyai meja pelajar dan semua pelajar mempunyai rumah, 909 00:44:19,830 --> 00:44:24,890 jadi kami hanya akan mengubah suai beberapa nilai mana rumah yang sama Currier, 910 00:44:24,890 --> 00:44:25,430 contohnya. 911 00:44:25,430 --> 00:44:29,120 912 00:44:29,120 --> 00:44:31,800 >> Untuk INSERT, kita boleh memasukkan nilai-nilai tertentu ke dalam jadual. 913 00:44:31,800 --> 00:44:35,150 Jadi INSERT INTO meja, dan kemudian nilai-nilai, 914 00:44:35,150 --> 00:44:39,080 dan kemudian dalam kurungan, kami menyatakan yang menghargai anda mahu masukkan. 915 00:44:39,080 --> 00:44:43,220 Jadi INSERT INTO meja, col1 dan col2, nilai adalah VAL1 dan VAL2. 916 00:44:43,220 --> 00:44:48,930 Jadi ini pada dasarnya memasukkan baris baru ke dalam jadual yang mengandungi nilai-nilai 1 dan 2 917 00:44:48,930 --> 00:44:50,850 di bawah tiang 1 dan 2. 918 00:44:50,850 --> 00:44:54,760 >> Dan kemudian kita akan pergi ke atas contoh cepat bagaimana ini kelihatan 919 00:44:54,760 --> 00:44:56,310 seperti dalam pangkalan data kami sedikit. 920 00:44:56,310 --> 00:44:58,685 Tetapi pertanyaan terakhir ini yang saya fikir kita akan pergi ke, 921 00:44:58,685 --> 00:45:01,450 SELECT, ia hanya membolehkan kita untuk memilih data dari jadual 922 00:45:01,450 --> 00:45:03,080 untuk mungkin menggunakannya selepas itu. 923 00:45:03,080 --> 00:45:05,830 Dan cara yang kita lakukan ini adalah kami hanya menyimpannya di beberapa pembolehubah. 924 00:45:05,830 --> 00:45:07,780 Dan kemudian kita mungkin boleh menggunakannya lagi. 925 00:45:07,780 --> 00:45:10,260 >> Jadi bintang SELECT bermakna memilih semua. 926 00:45:10,260 --> 00:45:13,280 Itu hanya trengkas yang untuk memilih semua. 927 00:45:13,280 --> 00:45:19,760 DARI MANA jadual, kami sedang mencari untuk beberapa keadaan tertentu, 928 00:45:19,760 --> 00:45:22,290 jadi di mana ruang sama sesuatu, sebagai contoh. 929 00:45:22,290 --> 00:45:24,410 Jika kita hanya mahu memilih semua dari meja, 930 00:45:24,410 --> 00:45:28,400 ini hanya memilih semua ruangan dan semua baris daripada jadual. 931 00:45:28,400 --> 00:45:32,040 >> Dan kemudian DELETE FROM meja MANA col sama sesuatu, 932 00:45:32,040 --> 00:45:36,440 ini hanya memadam beberapa baris dari meja kami 933 00:45:36,440 --> 00:45:38,860 di mana kita mempunyai beberapa keadaan tertentu. 934 00:45:38,860 --> 00:45:41,870 Dalam kes ini, syarat-syarat adalah ruangan sama sesuatu. 935 00:45:41,870 --> 00:45:43,460 Jadi hanya satu contoh yang cepat ini. 936 00:45:43,460 --> 00:45:49,100 Jika kita mempunyai jadual ini di sini dan kami masukkannya ke dalam jadual, nilai-nilai, 937 00:45:49,100 --> 00:45:50,400 yang akan memasukkan baris baru. 938 00:45:50,400 --> 00:45:56,380 Dan jika kita mempunyai auto-kenaikan, akan ini hanya kenaikan ID kami 0-1 untuk 2. 939 00:45:56,380 --> 00:46:00,010 >> Jika kita memilih semua daripada pelajar, ia hanya mengembalikan semua bidang dan semua baris. 940 00:46:00,010 --> 00:46:02,430 Mana tahun adalah lebih besar daripada atau sama dengan 2016, 941 00:46:02,430 --> 00:46:04,390 yang hanya akan kembali Hannah dan saya sendiri. 942 00:46:04,390 --> 00:46:08,360 Dan kemudian jika kita hanya dipilih id tahun dan tahun DARI pelajar 943 00:46:08,360 --> 00:46:11,710 di mana rumah itu Cabot House, yang akan, sekali lagi, kembali Hannah dan saya sendiri. 944 00:46:11,710 --> 00:46:14,430 >> Kalau kita dipadam daripada pelajar mana nama adalah sama dengan Rob, 945 00:46:14,430 --> 00:46:16,760 yang akan memadam keseluruhan baris. 946 00:46:16,760 --> 00:46:19,696 Dan kalau kita menetapkan nama, pelajar UPDATE 947 00:46:19,696 --> 00:46:21,570 Nama SET sama dengan Daven MANA rumah adalah sama 948 00:46:21,570 --> 00:46:27,010 Cabot House, yang akan pergi ke mereka baris dan kemudian mengemas kini nama. 949 00:46:27,010 --> 00:46:31,470 >> Dan kemudian beberapa jenis SQL data adalah 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 Saya akan pergi lagi dan pastikan anda tahu 952 00:46:36,740 --> 00:46:40,930 dan mempunyai mereka pada lembaran menipu anda, apa yang setiap mereka watak-watak 953 00:46:40,930 --> 00:46:44,140 telah digunakan untuk, apa anda menggunakannya pada psets anda, 954 00:46:44,140 --> 00:46:48,050 dan pastikan anda biasa dan selesa dengan mempunyai untuk memilih 955 00:46:48,050 --> 00:46:51,450 dari data berlainan jenis dalam pset anda. 956 00:46:51,450 --> 00:46:51,950 Ya. 957 00:46:51,950 --> 00:46:54,300 >> PENONTON: Apa yang jadual yang disimpan? 958 00:46:54,300 --> 00:46:57,119 Ya, di mana jadual ini disimpan? 959 00:46:57,119 --> 00:46:59,160 MARIA ZLATKOVA: Nah, sekarang, ia tidak disimpan. 960 00:46:59,160 --> 00:47:00,700 Bagaimanapun, di mana jadual ini disimpan? 961 00:47:00,700 --> 00:47:04,503 Tetapi ia boleh disimpan di dalam pangkalan data SQL. 962 00:47:04,503 --> 00:47:07,330 >> PENONTON: Dan di mana pangkalan data SQL? 963 00:47:07,330 --> 00:47:11,200 Dalam komputer, talian di suatu tempat, pelayan? 964 00:47:11,200 --> 00:47:15,000 >> MARIA ZLATKOVA: Ia boleh menjadi satu beberapa perkara yang berbeza. 965 00:47:15,000 --> 00:47:19,690 >> HANNAH Blumberg: Kami telah muka dengan Jadual SQL kebanyakannya dengan phpMyAdmin. 966 00:47:19,690 --> 00:47:22,060 Oleh itu, kita boleh meminta pelayan untuk menyimpan mereka untuk kita. 967 00:47:22,060 --> 00:47:23,830 Kita boleh menyimpan mereka di dalam komputer kita sendiri. 968 00:47:23,830 --> 00:47:27,950 >> MARIA ZLATKOVA: Ia hanya bergantung kepada bagaimana yang anda mahu lakukan untuk diri sendiri. 969 00:47:27,950 --> 00:47:30,075 Tetapi kita telah menyimpan mereka, seperti Hannah disebutkan, 970 00:47:30,075 --> 00:47:31,755 pada phpMyAdmin, yang dalam talian. 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 pembolehubah apa yang kita telah disoal untuk. 974 00:47:43,450 --> 00:47:48,370 >> Jadi, jika kita semua PILIH DARI Sejarah mana user_id sama id sesi, 975 00:47:48,370 --> 00:47:53,900 yang akan memilih semua baris untuk orang yang tertentu yang 976 00:47:53,900 --> 00:47:58,327 log masuk dalam dari sejarah meja dan menyusun mereka ke dalam baris. 977 00:47:58,327 --> 00:48:00,410 Satu perkara yang sejuk untuk tahu adalah bahawa fungsi Pertanyaan CS50 978 00:48:00,410 --> 00:48:02,180 melindungi tag suntikan SQL. 979 00:48:02,180 --> 00:48:07,420 Yang hanya bermakna bahawa ia akan memastikan input yang dimasukkan adalah betul 980 00:48:07,420 --> 00:48:09,920 dan bahawa orang yang memasuki input 981 00:48:09,920 --> 00:48:15,100 tidak cuba untuk memasukkan beberapa berniat jahat kod untuk memuat drop meja kami 982 00:48:15,100 --> 00:48:17,305 atau memadam segala-galanya di dalam pangkalan data kami. 983 00:48:17,305 --> 00:48:20,060 984 00:48:20,060 --> 00:48:23,400 >> Satu gambaran keseluruhan cepat daripada Model model Lihat Pengawal, 985 00:48:23,400 --> 00:48:27,360 ia hanya satu cara mengatur dan berfikir tentang kod. 986 00:48:27,360 --> 00:48:29,100 Ia sekali lagi, paradigma reka bentuk. 987 00:48:29,100 --> 00:48:33,380 Apa yang bermakna bahawa kita can-- dan ia adalah amalan yang baik 988 00:48:33,380 --> 00:48:37,790 untuk memisahkan bahagian-bahagian yang berbeza kod kami dan apa yang mereka 989 00:48:37,790 --> 00:48:40,530 mengawal ke dalam ketiga-tiga paradigma. 990 00:48:40,530 --> 00:48:46,700 >> Jadi pandangan kami adalah yang paling sering kami template, susun atur kita, cara 991 00:48:46,700 --> 00:48:48,260 yang kita tetapkan bagaimana kod kami kelihatan. 992 00:48:48,260 --> 00:48:55,190 Yang kebanyakannya fail CSS kita dan cara yang kita ditakrifkan reka bentuk kod kami, 993 00:48:55,190 --> 00:48:55,710 pada asasnya. 994 00:48:55,710 --> 00:48:59,280 Pengawal kami kebanyakannya apa kita telah lakukan dengan PHP fail. 995 00:48:59,280 --> 00:49:03,030 Jadi sekali lagi, bekerjasama dengan maklumat yang kita ada 996 00:49:03,030 --> 00:49:06,700 dan menentukan bagaimana yang maklumat digunakan, 997 00:49:06,700 --> 00:49:10,660 dan kemudian lulus maklumat yang sama ada ke pandangan atau model. 998 00:49:10,660 --> 00:49:13,880 Dan model, cara yang kita ada telah menggunakan IS telah pangkalan data kami, 999 00:49:13,880 --> 00:49:17,510 jadi di mana maklumat kami adalah disimpan jadi ia mempunyai suatu tempat 1000 00:49:17,510 --> 00:49:21,490 untuk didiami, dan mana-mana kod yang berkaitan dengan cara 1001 00:49:21,490 --> 00:49:25,410 bahawa kita akan mendapat maklumat atau cara yang kita mengemas kini maklumat tersebut. 1002 00:49:25,410 --> 00:49:28,940 1003 00:49:28,940 --> 00:49:33,200 >> Jadi, dalam model MVC ini, HTTP permintaan dihantar ke pelayan web. 1004 00:49:33,200 --> 00:49:36,220 Kemudian, mentafsir pengawal permintaan daripada pengguna 1005 00:49:36,220 --> 00:49:38,260 dan kemudian mengesahkan input pengguna. 1006 00:49:38,260 --> 00:49:41,580 Ia adalah pilihan yang kita ada pengawal berkomunikasi 1007 00:49:41,580 --> 00:49:44,000 dengan model, jadi sesuatu seperti pangkalan data kami 1008 00:49:44,000 --> 00:49:47,500 atau beberapa fungsi lain yang tertumu maklumat. 1009 00:49:47,500 --> 00:49:50,340 Dan kemudian akhirnya, pengawal pas maklumat ke pemandangan 1010 00:49:50,340 --> 00:49:52,090 supaya ia boleh menjadi diberikan dan bahawa ia boleh 1011 00:49:52,090 --> 00:49:55,860 kelihatan dengan mana-mana orang mengakses laman web. 1012 00:49:55,860 --> 00:49:58,440 1013 00:49:58,440 --> 00:50:01,340 >> Ada soalan? 1014 00:50:01,340 --> 00:50:01,840 Awesome. 1015 00:50:01,840 --> 00:50:04,530 1016 00:50:04,530 --> 00:50:08,469 Jadi sekali lagi, model, fungsinya, sekali lagi, 1017 00:50:08,469 --> 00:50:11,260 adalah simpanan berterusan maklumat, mengurus dan menyusun data. 1018 00:50:11,260 --> 00:50:13,890 Dan apa yang kita lihat setakat ini adalah pangkalan data MySQL 1019 00:50:13,890 --> 00:50:16,200 dan apa-apa fail data yang boleh digunakan. 1020 00:50:16,200 --> 00:50:20,580 >> View, penyampaian maklumat kepada pengguna, UI, atau antara muka pengguna. 1021 00:50:20,580 --> 00:50:22,350 Dan perumpamaan ini adalah HTML. 1022 00:50:22,350 --> 00:50:23,950 Dan kemudian kita mungkin mempunyai PHP minimum. 1023 00:50:23,950 --> 00:50:28,360 Jadi untuk gelung yang iterates atas data yang dicetak 1024 00:50:28,360 --> 00:50:30,720 adalah sebahagian daripada pandangan, kerana bertentangan dengan pengawal. 1025 00:50:30,720 --> 00:50:35,660 Dan kemudian banyak fail PHP kami termasuk dalam kategori pengawal. 1026 00:50:35,660 --> 00:50:38,410 Ia hanya menguruskan permintaan pengguna dan mendapat maklumat daripada model. 1027 00:50:38,410 --> 00:50:42,880 1028 00:50:42,880 --> 00:50:45,590 >> Melompat ke dalam Dokumen Objek Model, ini hanya 1029 00:50:45,590 --> 00:50:47,700 merujuk kepada cara HTML dokumen yang dianjurkan. 1030 00:50:47,700 --> 00:50:51,600 Dan mereka dibahagikan kepada pokok struktur yang mempunyai hierarki. 1031 00:50:51,600 --> 00:50:56,720 Jadi, jika kita mempunyai akses kepada [didengar] perwakilan dokumen itu, 1032 00:50:56,720 --> 00:51:02,750 kita boleh bekerja dengan dokumen, seperti kita memanipulasi objek pada asasnya. 1033 00:51:02,750 --> 00:51:06,630 >> Dan untuk membuat ini sedikit lebih jelas, apabila 1034 00:51:06,630 --> 00:51:10,540 kita mempunyai banyak kami tag yang berbeza bertindak balas 1035 00:51:10,540 --> 00:51:12,590 untuk laluan yang berbeza dalam pokok kami. 1036 00:51:12,590 --> 00:51:17,070 Dan kemudian untuk contoh ini, kita mempunyai nod dokumen itu bermula. 1037 00:51:17,070 --> 00:51:20,010 Kita ada, maka, nod HTML kami yang berpecah kepada kepala dan badan. 1038 00:51:20,010 --> 00:51:22,810 Ketua mempunyai tajuk dan kemudian tajuk mengandungi hello, dunia. 1039 00:51:22,810 --> 00:51:24,860 Dan badan kita hanya mengandungi hello, dunia juga. 1040 00:51:24,860 --> 00:51:28,700 1041 00:51:28,700 --> 00:51:31,900 >> Jadi mana-mana soalan di mana-mana perkara yang kita dilindungi setakat 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 Awesome. 1044 00:51:36,390 --> 00:51:37,473 >> HANNAH Blumberg: OK, sejuk. 1045 00:51:37,473 --> 00:51:40,980 Jika apa-apa datang dengan PHP atau HTML, atau mana-mana bahan yang Maria dilindungi, 1046 00:51:40,980 --> 00:51:42,700 kita sentiasa boleh berhenti seketika. 1047 00:51:42,700 --> 00:51:46,430 Kami melakukan yang lebih baik pada masa sekali lagi, begitu hebat. 1048 00:51:46,430 --> 00:51:48,770 Dan hanya untuk kembali benar-benar cepat ini, 1049 00:51:48,770 --> 00:51:51,010 jika anda melihat penggunaan di setiap peperiksaan tahun-tahun lepas, ini 1050 00:51:51,010 --> 00:51:54,120 datang di sini adalah sama ada- beberapa HTML, membuat gambar rajah ini. 1051 00:51:54,120 --> 00:51:58,380 Atau di sini adalah gambar rajah ini, membuat beberapa HTML, jadi pasti amalan itu. 1052 00:51:58,380 --> 00:52:01,500 Dan kemudian itu salah satu yang terjamin soalan yang anda boleh mendapatkan hak. 1053 00:52:01,500 --> 00:52:02,000 Sejuk. 1054 00:52:02,000 --> 00:52:04,510 Jadi mari kita bercakap tentang JavaScript dan bagaimana ia sedikit 1055 00:52:04,510 --> 00:52:09,130 berbeza dengan bahasa seperti PHP dan C, kedua-dua bahasa yang kita lihat terlebih dahulu. 1056 00:52:09,130 --> 00:52:10,780 Jadi nombor satu, ia longgar ditaip. 1057 00:52:10,780 --> 00:52:14,630 Itulah seperti PHP, tetapi tidak seperti C. 1058 00:52:14,630 --> 00:52:15,890 >> Ia adalah bahasa yang ditafsirkan. 1059 00:52:15,890 --> 00:52:19,870 Sekali lagi, itu seperti PHP, tidak seperti C. Dan ini 1060 00:52:19,870 --> 00:52:24,630 akan membolehkan kita untuk use-- ia bekerja dengan sangat baik dengan laman web. 1061 00:52:24,630 --> 00:52:28,350 Ia akan membolehkan kita untuk memanipulasi kandungan dan bagaimana ia kelihatan 1062 00:52:28,350 --> 00:52:30,300 dan apa yang dilakukan. 1063 00:52:30,300 --> 00:52:32,330 >> Kita akan melihat sedikit Ajax. 1064 00:52:32,330 --> 00:52:36,140 Ia membolehkan kita berkomunikasi asynchronously dengan pelayan yang berbeza 1065 00:52:36,140 --> 00:52:37,950 dan mendapatkan maklumat. 1066 00:52:37,950 --> 00:52:42,820 Dan ini adalah perkara yang benar-benar memisahkan JavaScript dari PHP dan C 1067 00:52:42,820 --> 00:52:45,590 adalah bahawa ia adalah pihak pelanggan. 1068 00:52:45,590 --> 00:52:49,860 Kedua-dua PHP dan C adalah biasanya pelayan-sampingan. 1069 00:52:49,860 --> 00:52:51,960 >> Bagi sebahagian besar dan hampir keseluruhannya apa 1070 00:52:51,960 --> 00:52:53,900 yang kita lihat, sekurang-kurangnya dalam kelas ini, JavaScript 1071 00:52:53,900 --> 00:52:57,040 bertindak ke atas pihak pelanggan, yang bermaksud bahawa pelayar sebenarnya 1072 00:52:57,040 --> 00:52:58,597 bertanggungjawab untuk menguruskannya. 1073 00:52:58,597 --> 00:53:01,180 Dan itu bererti bahawa kita tidak perlu berinteraksi dengan pelayan. 1074 00:53:01,180 --> 00:53:04,380 Jadi ia bermakna ia boleh menjadi banyak yang lebih cepat kerana ia sebenarnya hanya itu Chrome, 1075 00:53:04,380 --> 00:53:10,420 ia Safari, ia Firefox, apa sahaja yang anda menggunakan sebenarnya berjalan anda JavaScript. 1076 00:53:10,420 --> 00:53:12,290 >> PENONTON: Apa yang tak segerak bermakna? 1077 00:53:12,290 --> 00:53:13,620 >> HANNAH Blumberg: Ah, apa yang tidak asynchronously bermakna? 1078 00:53:13,620 --> 00:53:14,250 Persoalan yang besar. 1079 00:53:14,250 --> 00:53:17,890 Asynchronously ertinya- dengan baik, kandungan di mana 1080 00:53:17,890 --> 00:53:22,140 kita menggunakan ia, OK, kita sedang mencipta satu laman web 1081 00:53:22,140 --> 00:53:23,860 dan kita perlu untuk mendapatkan beberapa maklumat. 1082 00:53:23,860 --> 00:53:28,250 Jadi dengan contoh Mashup, beberapa maklumat yang kita mungkin mahu 1083 00:53:28,250 --> 00:53:30,580 adalah tajuk artikel. 1084 00:53:30,580 --> 00:53:33,330 Sekarang, kita could-- satu pilihan adalah untuk melakukannya serentak 1085 00:53:33,330 --> 00:53:37,940 dan itu bererti mari berhenti, pergi mendapatkan artikel itu, 1086 00:53:37,940 --> 00:53:41,275 kembali artikel itu, dan kemudian memberi, tetapi yang akan menjadi benar-benar perlahan. 1087 00:53:41,275 --> 00:53:44,150 Itu akan menjadi satu pengalaman pengguna yang tidak baik kerana anda hanya akan duduk 1088 00:53:44,150 --> 00:53:46,630 ada menunggu sesuatu untuk bertindak balas. 1089 00:53:46,630 --> 00:53:50,020 >> Asynchronously bermakna kita akan terus akan tentang perniagaan kami, 1090 00:53:50,020 --> 00:53:52,529 menjadikan halaman, dan kami akan menghantar off permintaan 1091 00:53:52,529 --> 00:53:54,570 yang yang jenis akan berlaku di latar belakang. 1092 00:53:54,570 --> 00:53:57,610 Saya rasa kita menggunakan contoh dalam kuliah memanggil Rob dan berkata, 1093 00:53:57,610 --> 00:53:59,980 hey, anda boleh melihat ini sehingga bagi saya dan kembali kepada saya, 1094 00:53:59,980 --> 00:54:02,870 berbanding dengan hanya saya menunggu di telefon. 1095 00:54:02,870 --> 00:54:07,020 Jadi asynchronously bermakna ia berlaku di latar belakang dari kami 1096 00:54:07,020 --> 00:54:08,676 secara selari. 1097 00:54:08,676 --> 00:54:10,400 >> Persoalan yang besar. 1098 00:54:10,400 --> 00:54:11,830 Apa-apa lagi? 1099 00:54:11,830 --> 00:54:12,330 Yang besar. 1100 00:54:12,330 --> 00:54:15,020 Kami akan melompat yang lebih banyak ke dalam permintaan tak segerak dengan Ajax. 1101 00:54:15,020 --> 00:54:18,287 >> PENONTON: Adakah JavaScript-- di mana tidak ia jatuh dengan model-view-pengawal? 1102 00:54:18,287 --> 00:54:19,620 HANNAH Blumberg: Soalan yang hebat. 1103 00:54:19,620 --> 00:54:23,320 Di manakah JavaScript kejatuhan dengan model-view-pengawal? 1104 00:54:23,320 --> 00:54:23,930 Hm. 1105 00:54:23,930 --> 00:54:28,350 Saya rasa ia boleh fall-- jadi kami biasanya tidak 1106 00:54:28,350 --> 00:54:31,340 suka squish ia ke dalam yang paradigma, tetapi saya rasa saya akan berkata, 1107 00:54:31,340 --> 00:54:34,280 OK, jadi JavaScript sebenarnya akan membolehkan 1108 00:54:34,280 --> 00:54:37,587 kita untuk mengumpulkan data, mentafsir data, benar-benar melakukan 1109 00:54:37,587 --> 00:54:38,920 perkara yang bermakna dengan data. 1110 00:54:38,920 --> 00:54:41,100 Dengan cara itu, ia sangat kawalan seperti. 1111 00:54:41,100 --> 00:54:43,900 >> Tetapi ia juga akan membolehkan kita untuk memaparkan benda dengan benda cetak. 1112 00:54:43,900 --> 00:54:47,021 Dengan cara itu, ia sangat pandangan seperti. 1113 00:54:47,021 --> 00:54:47,520 Yeah. 1114 00:54:47,520 --> 00:54:51,710 Jadi ia adalah jenis seperti PHP dalam di mana ia jenis boleh menjadi kedua-duanya. 1115 00:54:51,710 --> 00:54:53,330 Soalan yang baik. 1116 00:54:53,330 --> 00:54:55,209 Apa-apa lagi? 1117 00:54:55,209 --> 00:54:56,000 Baiklah, hebat. 1118 00:54:56,000 --> 00:54:57,120 Bergerak kanan bersama-sama. 1119 00:54:57,120 --> 00:54:59,110 >> Jadi mari kita lihat contoh bagaimana kita boleh menggunakan 1120 00:54:59,110 --> 00:55:02,250 JavaScript dalam salah satu program web kami. 1121 00:55:02,250 --> 00:55:05,680 Jadi saya akan menganggap ini index.html dengan sekumpulan HTML. 1122 00:55:05,680 --> 00:55:08,800 Dan perkara yang saya mahu anda memberi tumpuan kepada adalah tag skrip ini. 1123 00:55:08,800 --> 00:55:13,280 Dan ini berkata, OK, saya mahu menjalankan beberapa JavaScript dan di sini adalah di mana ia hidup. 1124 00:55:13,280 --> 00:55:15,400 Ia hidup di hello.js. 1125 00:55:15,400 --> 00:55:21,120 >> Dan sangat banyak seperti CSS, kita boleh meletakkan JavaScript dalam HTML. 1126 00:55:21,120 --> 00:55:24,000 Mengapa kita mungkin mahu untuk memisahkan itu? 1127 00:55:24,000 --> 00:55:24,500 Yeah. 1128 00:55:24,500 --> 00:55:25,486 >> PENONTON: Lebih mudah untuk menulis semula? 1129 00:55:25,486 --> 00:55:26,402 >> HANNAH Blumberg: Ya. 1130 00:55:26,402 --> 00:55:28,450 Ia lebih mudah untuk menggunakan seluruh laman web yang berbeza. 1131 00:55:28,450 --> 00:55:29,980 Ia menyimpan perkara-perkara yang lebih bersih. 1132 00:55:29,980 --> 00:55:32,090 Ia hanya amalan yang baik. 1133 00:55:32,090 --> 00:55:32,590 Awesome. 1134 00:55:32,590 --> 00:55:33,930 Jawapan yang baik. 1135 00:55:33,930 --> 00:55:36,690 Begitu baik, jadi ini akan sebagai index.html kami. 1136 00:55:36,690 --> 00:55:39,430 Dan kemudian turun di sini ialah kami kecil fail JavaScript sedikit. 1137 00:55:39,430 --> 00:55:42,410 >> Dan semua yang dikatakan adalah amaran Hello, world. 1138 00:55:42,410 --> 00:55:46,040 Jadi apa yang berlaku adalah apabila ini renders-- halaman 1139 00:55:46,040 --> 00:55:49,680 jadi jika anda pergi ke apa sahaja laman web ini is-- semua itu akan berlaku 1140 00:55:49,680 --> 00:55:53,330 adakah ia akan berkata, OK, Saya akan menjalankan kod JavaScript ini. 1141 00:55:53,330 --> 00:55:56,370 Dan kod JavaScript ini hanya berkata amaran Hello, world. 1142 00:55:56,370 --> 00:55:59,090 Jadi, saya akan mendapatkan ini mesra sedikit pop-up. 1143 00:55:59,090 --> 00:56:00,360 >> Cool? 1144 00:56:00,360 --> 00:56:04,746 Itulah jenis seperti kami yang pertama JavaScript program, kami Hello, world. 1145 00:56:04,746 --> 00:56:07,690 1146 00:56:07,690 --> 00:56:12,190 Mari kita lihat sedikit lebih lanjut mengenai apa sintaks JavaScript kelihatan seperti. 1147 00:56:12,190 --> 00:56:16,330 Dan secara khusus, mari kita bandingkan dengan C dan PHP, yang kita lihat sebelum ini. 1148 00:56:16,330 --> 00:56:20,610 >> Dalam JavaScript, kita akan mempunyai var, nama pembolehubah, dan kemudian 1149 00:56:20,610 --> 00:56:21,690 nilai sebenar. 1150 00:56:21,690 --> 00:56:26,170 Dan kita tidak menyatakan jenis, sama seperti di PHP, tetapi sangat tidak seperti di C. 1151 00:56:26,170 --> 00:56:28,850 Jadi, sebagai contoh, jika kita mahu untuk menyimpan nilai 50, 1152 00:56:28,850 --> 00:56:32,490 dalam C, kita perlu mengatakan, hey, C, saya mahu integer, 1153 00:56:32,490 --> 00:56:35,076 Saya akan memanggilnya i, dan nilainya adalah 50. 1154 00:56:35,076 --> 00:56:36,450 Dalam PHP, ia sedikit lebih mudah. 1155 00:56:36,450 --> 00:56:41,880 Kami berkata, hey, saya mahu pembolehubah dipanggil i dan nilai ialah 50. 1156 00:56:41,880 --> 00:56:45,890 Sangat begitu juga, dalam JavaScript, kita berkata hey, saya mahu ubah yang dipanggil 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 Ia hanya i dari sudut bahawa pada. 1160 00:56:53,810 --> 00:56:58,660 Dengan cara yang sama, dalam C, di mana sekali kita katakan int i, kita hanya menggunakan i. 1161 00:56:58,660 --> 00:57:00,340 Cool? 1162 00:57:00,340 --> 00:57:01,800 Baiklah. 1163 00:57:01,800 --> 00:57:03,710 >> Beralih kepada gelung, bernasib baik, ini hampir 1164 00:57:03,710 --> 00:57:06,720 melihat exactly-- Saya fikir mereka sama seperti apa yang 1165 00:57:06,720 --> 00:57:09,799 gelung akan kelihatan seperti dalam sesuatu seperti C di mana anda untuk gelung 1166 00:57:09,799 --> 00:57:11,840 akan mempunyai tiga parts-- pengawalan yang, 1167 00:57:11,840 --> 00:57:13,640 keadaan, dan kemas kini. 1168 00:57:13,640 --> 00:57:15,340 A gelung sementara, ia kelihatan yang sama. 1169 00:57:15,340 --> 00:57:16,390 Kami hanya memberikan syarat. 1170 00:57:16,390 --> 00:57:18,264 >> Dan lakukan semasa gelung, sekali lagi, betul-betul sama. 1171 00:57:18,264 --> 00:57:20,190 Kami memberikan syarat. 1172 00:57:20,190 --> 00:57:24,510 Katakan saya mahu melelar over-- Saya mahu melakukan sesuatu yang lima kali. 1173 00:57:24,510 --> 00:57:27,840 Dalam C, kita boleh menulis untuk init i sama dengan 0. 1174 00:57:27,840 --> 00:57:30,480 i adalah kurang daripada 5, i ++. 1175 00:57:30,480 --> 00:57:34,240 Hanya perbezaan, dalam JavaScript, daripada berkata 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 perbezaan. 1179 00:57:41,320 --> 00:57:43,200 Sebarang pertanyaan mengenai apa-apa itu? 1180 00:57:43,200 --> 00:57:44,160 Ya. 1181 00:57:44,160 --> 00:57:48,480 >> PENONTON: Jadi dalam PHP, ia adalah sama perkara, kecuali tetapi seperti pembolehubah? 1182 00:57:48,480 --> 00:57:49,564 Atau adalah bahawa 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, ia akan untuk menjadi tanda dolar. 1185 00:57:52,310 --> 00:57:59,450 Jadi ia akan $ i setaraf 0, $ i adalah kurang daripada 5, $ i ++. 1186 00:57:59,450 --> 00:58:02,490 Persoalan yang besar. 1187 00:58:02,490 --> 00:58:04,570 >> Sekarang mari kita bercakap tentang pengisytiharan fungsi. 1188 00:58:04,570 --> 00:58:07,010 Dalam C, apabila kita mengisytiharkan fungsi, kita memberi nama kepada 1189 00:58:07,010 --> 00:58:08,490 dan kami memberikannya beberapa parameter. 1190 00:58:08,490 --> 00:58:10,670 Dan pada awal, kita menulis jenis. 1191 00:58:10,670 --> 00:58:12,440 Dalam JavaScript, semua kita hanya perlu menulis 1192 00:58:12,440 --> 00:58:15,080 fungsi kata kunci yang berkata, hey, JavaScript, 1193 00:58:15,080 --> 00:58:16,570 Saya kira-kira untuk menentukan fungsi. 1194 00:58:16,570 --> 00:58:18,520 >> Dalam kes ini, ia mempunyai jumlah nama. 1195 00:58:18,520 --> 00:58:20,820 Dan ia mengambil masa dua hujah, x dan y. 1196 00:58:20,820 --> 00:58:23,280 Perhatikan bahawa kita tidak peduli mengenai jenis x dan y. 1197 00:58:23,280 --> 00:58:26,280 Dan seperti C, kami mempunyai kembali perkara ini, 1198 00:58:26,280 --> 00:58:29,140 supaya kita boleh melakukan sesuatu seperti pulangan x dan y. 1199 00:58:29,140 --> 00:58:32,540 >> Dan sekarang apabila kita telah menulis ini pertama fungsi, kita boleh menggunakan sejumlah wang mana-mana. 1200 00:58:32,540 --> 00:58:34,740 Dan itu betul-betul halus. 1201 00:58:34,740 --> 00:58:37,530 Satu perkara yang benar-benar sejuk kira-kira JavaScript yang sangat tidak seperti C 1202 00:58:37,530 --> 00:58:40,770 adalah bahawa fungsi boleh dilayan seperti nilai-nilai. 1203 00:58:40,770 --> 00:58:43,895 Oleh itu, kita boleh melakukan sesuatu seperti di sini di mana saya rasa saya menutup ini up-- 1204 00:58:43,895 --> 00:58:46,400 Saya dilindungi sehingga jumlah var part-- dan kita hanya berkata 1205 00:58:46,400 --> 00:58:49,850 fungsi xy sama pulangan x campur y. 1206 00:58:49,850 --> 00:58:52,140 >> Itulah yang akan dipanggil fungsi tanpa nama. 1207 00:58:52,140 --> 00:58:53,920 Ia adalah satu fungsi tanpa nama. 1208 00:58:53,920 --> 00:58:56,290 Manakala ini mengatakan fungsi Kesimpulannya, blah, blah, blah, 1209 00:58:56,290 --> 00:58:59,340 ini hanya akan berkata fungsi. 1210 00:58:59,340 --> 00:59:02,020 Tetapi sekarang walaupun saya mempunyai fungsi tanpa nama ini, 1211 00:59:02,020 --> 00:59:03,630 fungsi yang benar-benar hanya nilai. 1212 00:59:03,630 --> 00:59:05,160 Kita boleh memperlakukannya seperti nilai. 1213 00:59:05,160 --> 00:59:10,180 >> Oleh itu, kita boleh menyimpannya di dalam pembolehubah yang sama cara kita boleh menyimpan 50 dalam pembolehubah. 1214 00:59:10,180 --> 00:59:13,870 Oleh itu, kita boleh berkata, OK, saya mahu berubah-ubah, ia dipanggil Kesimpulannya, 1215 00:59:13,870 --> 00:59:16,011 dan ia adalah fungsi ini. 1216 00:59:16,011 --> 00:59:18,760 Jadi kedua-dua perkara-perkara yang benar-benar akan melakukan perkara yang sama, 1217 00:59:18,760 --> 00:59:21,576 tetapi sintaks adalah sedikit yang berbeza dan jenis komen yang menyeronokkan. 1218 00:59:21,576 --> 00:59:22,076 Yeah. 1219 00:59:22,076 --> 00:59:25,548 >> PENONTON: Jadi, anda boleh memanggil fungsi itu adalah tanpa nama dengan berkata, 1220 00:59:25,548 --> 00:59:28,244 kurungan jumlah 2, 5? 1221 00:59:28,244 --> 00:59:29,160 HANNAH Blumberg: Ya. 1222 00:59:29,160 --> 00:59:32,280 Anda boleh memanggil ini tanpa nama berfungsi dengan cara yang sama. 1223 00:59:32,280 --> 00:59:33,350 Anda akan melakukan jumlah (2, 5) ;. 1224 00:59:33,350 --> 00:59:36,180 1225 00:59:36,180 --> 00:59:38,200 Itu akan menjadi betul-betul halus. 1226 00:59:38,200 --> 00:59:41,575 >> Jika saya tidak melakukan jumlah var sama fungsi, jika saya hanya dipadam 1227 00:59:41,575 --> 00:59:45,480 this-- Saya tahu ia adalah di tangan saya, tetapi berpura-pura saya dipadam this-- kemudian 1228 00:59:45,480 --> 00:59:46,964 fungsi yang jenis hanya hilang. 1229 00:59:46,964 --> 00:59:49,630 Anda tidak boleh menggunakannya lagi kerana anda tidak mempunyai nama untuk itu. 1230 00:59:49,630 --> 00:59:53,497 Adalah sukar untuk merujuk kepada sesuatu anda tidak tahu apa yang perlu memanggil. 1231 00:59:53,497 --> 00:59:54,080 Soalan yang baik. 1232 00:59:54,080 --> 00:59:54,580 Yeah. 1233 00:59:54,580 --> 00:59:59,580 >> PENONTON: Bolehkah anda merujuk jumlah wang tempat-tempat lain dengan nilai x + y? 1234 00:59:59,580 --> 01:00:01,940 >> HANNAH Blumberg: Bolehkah anda jumlah rujukan di tempat-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 pasti apa yang anda maksudkan. 1237 01:00:05,130 --> 01:00:10,582 >> PENONTON: Jadi masa lalu anda separuh tanpa nama fungsi adalah jumlah adalah sama dengan ini 1238 01:00:10,582 --> 01:00:14,452 fungsi tanpa nama, jadi jumlah wang kini merupakan pembolehubah yang anda can-- 1239 01:00:14,452 --> 01:00:15,410 HANNAH Blumberg: Betul. 1240 01:00:15,410 --> 01:00:18,980 Jadi jumlahnya adalah pembolehubah, tetapi ia actually-- 1241 01:00:18,980 --> 01:00:23,770 supaya jumlah wang pembolehubah yang nilai adalah fungsi. 1242 01:00:23,770 --> 01:00:27,030 Jadi ia adalah fungsi, yang merupakan jenis satu perkara yang pelik untuk membalut kepala anda sekitar 1243 01:00:27,030 --> 01:00:29,880 kerana kita telah bermain dengan C dan anda tidak boleh melakukannya dalam C. 1244 01:00:29,880 --> 01:00:32,679 Tetapi sekarang kita boleh memanggil menjumlahkan Cara yang sama kita boleh memanggil sejumlah wang di sini. 1245 01:00:32,679 --> 01:00:33,220 PENONTON: OK. 1246 01:00:33,220 --> 01:00:33,970 HANNAH Blumberg: Ya. 1247 01:00:33,970 --> 01:00:34,553 Soalan yang baik. 1248 01:00:34,553 --> 01:00:35,438 Yeah. 1249 01:00:35,438 --> 01:00:39,862 >> PENONTON: Oleh itu, kita tidak menggunakan prototaip dalam PHP atau JavaScript? 1250 01:00:39,862 --> 01:00:42,070 HANNAH Blumberg: Tidak, kami tidak perlu menggunakan prototaip, 1251 01:00:42,070 --> 01:00:43,880 terutamanya dalam JavaScript. 1252 01:00:43,880 --> 01:00:49,380 Jadi satu perkara amalan yang tidak baik yang saya akan mengatakan bahawa anda tidak patut lakukan 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 boleh mula melakukan i = 50. 1255 01:00:54,840 --> 01:00:57,490 Dan hanya akan membuat i pembolehubah global. 1256 01:00:57,490 --> 01:01:00,550 >> Ia adalah amalan yang sangat tidak baik kepada tidak pernah berkata explicity var i, 1257 01:01:00,550 --> 01:01:01,800 tetapi ia adalah sesuatu yang anda boleh lakukan. 1258 01:01:01,800 --> 01:01:03,591 Jurubahasa bukan akan menjerit pada anda. 1259 01:01:03,591 --> 01:01:05,920 JavaScript agak seperti, anda boleh melakukan apa yang anda mahu. 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 Dalam seluar oren. 1264 01:01:12,150 --> 01:01:13,190 Teruskan. 1265 01:01:13,190 --> 01:01:14,390 >> PENONTON: Tidak, anda pergi dulu. 1266 01:01:14,390 --> 01:01:16,765 >> PENONTON: Tidak, saya hanya berkata Saya tidak mempunyai tangan saya ke atas. 1267 01:01:16,765 --> 01:01:20,248 1268 01:01:20,248 --> 01:01:20,748 OKEY. 1269 01:01:20,748 --> 01:01:26,604 Jadi, jika anda mahu menyeksa masa pertama, kini kesimpulan, 1270 01:01:26,604 --> 01:01:29,864 kita panggil ia 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-dua dasarnya melakukan perkara yang sama. 1273 01:01:32,572 --> 01:01:35,113 PENONTON: Dan apa yang kelebihan menggunakan satu atau yang lain? 1274 01:01:35,113 --> 01:01:37,500 HANNAH Blumberg: Tiada kelebihan menggunakan satu atau yang lain. 1275 01:01:37,500 --> 01:01:40,080 Saya hanya mahu menunjukkan dua keping yang berbeza sintaksis. 1276 01:01:40,080 --> 01:01:42,770 Banyak kali di mana tanpa nama fungsi lakukan mempunyai tujuan 1277 01:01:42,770 --> 01:01:48,220 adalah jika hujah yang lain fungsi harus fungsi. 1278 01:01:48,220 --> 01:01:50,600 Dan kita akan melihat bahawa dalam hanya kedua dengan Ajax. 1279 01:01:50,600 --> 01:01:53,577 >> Jadi, jika yang tidak masuk akal, menyimpannya di belakang kepala anda. 1280 01:01:53,577 --> 01:01:55,660 Itulah di mana tanpa nama fungsi mungkin berguna 1281 01:01:55,660 --> 01:01:58,284 kerana ia tidak benar-benar bernilai memberikan nama sejak kami Hanya 1282 01:01:58,284 --> 01:01:59,443 akan menggunakannya sekali. 1283 01:01:59,443 --> 01:02:00,370 Yeah. 1284 01:02:00,370 --> 01:02:03,635 >> PENONTON: Jika x dan y perubahan kemudian pada, akan meringkaskannya berubah juga? 1285 01:02:03,635 --> 01:02:06,510 HANNAH Blumberg: Jika x dan y perubahan kemudian, akan meringkaskannya berubah juga? 1286 01:02:06,510 --> 01:02:08,840 Jadi ini adalah sebenarnya saya berfikir sesuatu yang, 1287 01:02:08,840 --> 01:02:12,260 sekali lagi, ia hanya berasa sangat berbeza dari C. Ini bukan nilai. 1288 01:02:12,260 --> 01:02:13,620 Ia bukan 5. 1289 01:02:13,620 --> 01:02:15,550 Ia hanya fungsi itu sendiri. 1290 01:02:15,550 --> 01:02:19,110 Jadi sebaik sahaja anda memberikan parameter, maka anda benar-benar akan mengira nilai. 1291 01:02:19,110 --> 01:02:21,193 >> MARIA ZLATKOVA: Kemudian anda boleh 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: Betul. 1294 01:02:24,230 --> 01:02:25,250 Tepat sekali. 1295 01:02:25,250 --> 01:02:25,863 Yeah. 1296 01:02:25,863 --> 01:02:27,946 >> PENONTON: Jadi jika anda hanya menyimpannya dalam pembolehubah, 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 boleh melakukan jumlah var sama dengan hasil tambah dua nilai. 1300 01:02:35,320 --> 01:02:37,670 Yeah. 1301 01:02:37,670 --> 01:02:38,680 Apa-apa soalan lain? 1302 01:02:38,680 --> 01:02:39,642 Yeah. 1303 01:02:39,642 --> 01:02:42,047 >> PENONTON: Tetapi kiranya mengelirukan jumlah dan jumlah wang? 1304 01:02:42,047 --> 01:02:45,062 Seperti jika anda memanggil jumlah variabel, anda akan memanggil jumlah majlis itu? 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, jumlah sama dengan jumlah 2, 5? 1308 01:02:51,253 --> 01:02:53,170 >> PENONTON: Ya. 1309 01:02:53,170 --> 01:02:56,465 >> HANNAH Blumberg: Saya percaya bahawa akan menulis ganti nilai jumlah. 1310 01:02:56,465 --> 01:02:59,290 Jadi satu lagi yang menarik perkara tentang JavaScript 1311 01:02:59,290 --> 01:03:02,950 ialah pembolehubah tunggal boleh mengambil pada sekumpulan jenis yang berbeza. 1312 01:03:02,950 --> 01:03:03,790 Amalan yang tidak baik. 1313 01:03:03,790 --> 01:03:06,280 Anda tidak perlu melakukan sesuatu seperti apa yang anda hanya berkata. 1314 01:03:06,280 --> 01:03:10,240 >> Tetapi dalam C, jika saya ditetapkan sama dengan integer, 1315 01:03:10,240 --> 01:03:13,570 kita tahu bahawa ia tidak pernah akan menjadi rentetan. 1316 01:03:13,570 --> 01:03:15,670 Ini tidak berlaku dalam JavaScript. 1317 01:03:15,670 --> 01:03:17,770 Ya, soalan yang baik. 1318 01:03:17,770 --> 01:03:20,151 Apa-apa lagi? 1319 01:03:20,151 --> 01:03:20,650 Baiklah. 1320 01:03:20,650 --> 01:03:21,850 Melakukan semua tepat pada masanya. 1321 01:03:21,850 --> 01:03:23,050 Menyimpan pergi. 1322 01:03:23,050 --> 01:03:25,200 Baiklah. 1323 01:03:25,200 --> 01:03:27,780 >> Jika kita melihat array dalam JavaScript, di sini adalah 1324 01:03:27,780 --> 01:03:30,250 contoh cepat daripada pelbagai rentetan. 1325 01:03:30,250 --> 01:03:31,967 Dan array boleh berkembang secara dinamik. 1326 01:03:31,967 --> 01:03:33,675 Mereka tidak mempunyai saiz tetap dengan cara yang sama 1327 01:03:33,675 --> 01:03:37,990 yang mereka lakukan dalam C. Kita boleh mengakses unsur-unsur dengan hanya kurungan persegi. 1328 01:03:37,990 --> 01:03:41,720 >> Yang kelihatan banyak seperti PHP dan banyak seperti C, di mana kita boleh berkata, dalam kes ini, 1329 01:03:41,720 --> 01:03:48,360 jika saya mahu JavaScript perkataan, saya akan jangan arr kurungan 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 masih ingat pada C apabila kita mahu mendapatkan panjang array, 1332 01:03:55,390 --> 01:03:56,820 ia adalah benar-benar menjengkelkan. 1333 01:03:56,820 --> 01:03:58,460 Tetapi 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 Menyebabkan ia panjang. 1336 01:04:01,120 --> 01:04:01,892 Itu sahaja. 1337 01:04:01,892 --> 01:04:03,140 >> PENONTON: Itu mudah. 1338 01:04:03,140 --> 01:04:05,306 >> HANNAH Blumberg: Ya, membuat hidup anda lebih mudah. 1339 01:04:05,306 --> 01:04:08,950 1340 01:04:08,950 --> 01:04:11,560 OK, tidak object-- sana. 1341 01:04:11,560 --> 01:04:15,480 Objek dalam JavaScript rasa banyak seperti structs dalam C 1342 01:04:15,480 --> 01:04:18,280 dan array bersekutu dalam PHP. 1343 01:04:18,280 --> 01:04:20,270 Jadi apa yang kita telah melihat banyak adalah JSON, yang 1344 01:04:20,270 --> 01:04:23,150 bermaksud JavaScript Object Notation. 1345 01:04:23,150 --> 01:04:25,550 Dan ia pada dasarnya cara yang daripada penstrukturan 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 satu contoh objek yang menyimpan kelas, CS50. 1348 01:04:32,540 --> 01:04:37,790 Dan aku berkata kelas, saya maksudkan sudah tentu, tidak like-- yeah, kursus, CS50. 1349 01:04:37,790 --> 01:04:40,730 Dan anda akan melihat bahawa segala-galanya dalam objek 1350 01:04:40,730 --> 01:04:43,526 akan dibendung dalam pendakap kerinting. 1351 01:04:43,526 --> 01:04:48,260 >> Dan kita mula mengaitkan nama medan atau kekunci dengan nilai-nilai yang berbeza. 1352 01:04:48,260 --> 01:04:52,920 Jadi, anda boleh mula melihat bagaimana jenis ini terasa seperti pelbagai bersekutu dalam PHP. 1353 01:04:52,920 --> 01:04:57,450 Jadi, kita akan mengaitkan padang atau kunci nama, sudah tentu, dengan tali, 1354 01:04:57,450 --> 01:04:58,510 CS50. 1355 01:04:58,510 --> 01:04:59,940 >> Kita akan mempunyai tenaga pengajar. 1356 01:04:59,940 --> 01:05:00,940 Kami akan mempunyai TFS. 1357 01:05:00,940 --> 01:05:05,240 Kita akan mempunyai beberapa psets dan kita akan telah direkodkan. 1358 01:05:05,240 --> 01:05:10,720 Dan satu perkara yang sejuk untuk diperhatikan adalah semua perkara-perkara ini mempunyai pelbagai jenis, 1359 01:05:10,720 --> 01:05:12,020 dan itu betul-betul halus. 1360 01:05:12,020 --> 01:05:15,330 >> Ia baik untuk objek, sebenarnya, ia mungkin dijangka untuk objek 1361 01:05:15,330 --> 01:05:19,620 untuk mempunyai gabungan tali dan nombor dan Booleans dan array 1362 01:05:19,620 --> 01:05:23,420 dan apa-apa sahaja anda mungkin ingin mempunyai dalam objek anda. 1363 01:05:23,420 --> 01:05:28,570 Dan ambil perhatian bahawa ini akan menjadi nama-nama atau kekunci, dan kemudian kita hanya 1364 01:05:28,570 --> 01:05:30,300 menetapkan ia sama dengan usus kecil. 1365 01:05:30,300 --> 01:05:32,015 >> PENONTON: Apa sebenarnya yang JSON bermakna? 1366 01:05:32,015 --> 01:05:33,890 HANNAH Blumberg: Apa sebenarnya yang JSON bermakna? 1367 01:05:33,890 --> 01:05:36,470 JSON hanya bermaksud JavaScript Object Notation. 1368 01:05:36,470 --> 01:05:38,430 Ia hanya satu cara untuk pemformatan. 1369 01:05:38,430 --> 01:05:40,040 Yeah. 1370 01:05:40,040 --> 01:05:41,800 Ia adalah satu cara memformat data kami. 1371 01:05:41,800 --> 01:05:43,620 >> Dalam C, ia structs. 1372 01:05:43,620 --> 01:05:45,800 Dalam PHP, ia array bersekutu. 1373 01:05:45,800 --> 01:05:47,120 Dalam JavaScript, kami mempunyai objek. 1374 01:05:47,120 --> 01:05:48,969 >> PENONTON: Jadi CS50 adalah objek? 1375 01:05:48,969 --> 01:05:51,010 HANNAH Blumberg: CS50 adalah objek dalam kes 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-bidang atau menukar bidang tersebut. 1378 01:05:57,880 --> 01:06:03,920 Sebagai contoh, katakan kami memutuskan bahawa anda mahu satu kurang pset semester ini. 1379 01:06:03,920 --> 01:06:06,300 Daripada sembilan, kami hanya akan mempunyai lapan. 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 salah. 1382 01:06:09,436 --> 01:06:11,060 Terdapat dua cara yang boleh kita lakukan itu. 1383 01:06:11,060 --> 01:06:13,490 Nombor satu adalah dengan titik notasi dan nombor dua 1384 01:06:13,490 --> 01:06:15,750 adalah dengan notasi kurungan persegi. 1385 01:06:15,750 --> 01:06:19,720 Jadi, sebagai contoh, jika saya mahu menukar atau akses 1386 01:06:19,720 --> 01:06:26,820 bidang psets dalam objek CS50 kami, apa yang saya akan lakukan adalah CS50.psets, 1387 01:06:26,820 --> 01:06:30,770 jadi nama objek titik nama bidang atau kunci. 1388 01:06:30,770 --> 01:06:37,120 >> Sangat begitu juga, ia betul-betul bersamaan dengan melakukan CS50, dan kemudian 1389 01:06:37,120 --> 01:06:42,050 dalam pendakap persegi, psets. 1390 01:06:42,050 --> 01:06:42,837 Cool? 1391 01:06:42,837 --> 01:06:44,298 Yeah. 1392 01:06:44,298 --> 01:06:47,707 >> PENONTON: Begitu juga JSON secara teknikal JavaScript lagi, 1393 01:06:47,707 --> 01:06:51,814 walaupun dalam psets kita memisahkan ia keluar [didengar]? 1394 01:06:51,814 --> 01:06:52,730 HANNAH Blumberg: Pasti. 1395 01:06:52,730 --> 01:06:56,290 Jadi persoalannya ialah, adalah JavaScript dan JSON bersamaan? 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 sama. 1399 01:07:05,190 --> 01:07:08,950 >> Saya akan berkata JavaScript, terdapat objek dalam JavaScript. 1400 01:07:08,950 --> 01:07:12,590 JSON mengambil objek dan mencetak mereka dan memaparkannya 1401 01:07:12,590 --> 01:07:15,160 atau menyimpan mereka dengan cara yang baik. 1402 01:07:15,160 --> 01:07:18,110 Jadi JSON tidak pengaturcaraan bahasa cara yang JavaScript. 1403 01:07:18,110 --> 01:07:20,900 Ia hanya notasi untuk objek kami dalam JavaScript. 1404 01:07:20,900 --> 01:07:21,400 Yeah. 1405 01:07:21,400 --> 01:07:24,144 >> PENONTON: Jadi apa sebenarnya [Didengar] meliputi? 1406 01:07:24,144 --> 01:07:25,060 HANNAH Blumberg: Pasti. 1407 01:07:25,060 --> 01:07:27,727 Jadi ini sebenarnya tidak apa-apa. 1408 01:07:27,727 --> 01:07:28,935 Ini adalah hanya satu cara untuk mengakses. 1409 01:07:28,935 --> 01:07:31,393 Katakan kita mahu menukar bilangan set masalah 1410 01:07:31,393 --> 01:07:32,450 9-8. 1411 01:07:32,450 --> 01:07:34,383 Apa yang kami 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, persoalan yang besar. 1414 01:07:39,400 --> 01:07:40,733 Ini adalah hanya untuk menunjukkan kepada anda sintaksis. 1415 01:07:40,733 --> 01:07:43,620 Adakah sebenarnya tidak berbuat apa-apa yang berguna. 1416 01:07:43,620 --> 01:07:46,085 Ada soalan? 1417 01:07:46,085 --> 01:07:48,210 Bergerak kanan bersama-sama. 1418 01:07:48,210 --> 01:07:51,960 >> Jadi mari kita lihat satu contoh yang cepat bagaimana JavaScript berfungsi kerana saya memberitahu anda ia 1419 01:07:51,960 --> 01:07:55,170 melakukan semua perkara-perkara ini sejuk dan membolehkan kita untuk mengubah suai laman web. 1420 01:07:55,170 --> 01:07:56,970 Mari kita sebenarnya melihat dalam tindakan. 1421 01:07:56,970 --> 01:07:59,850 Oleh itu, mengambil, sebagai contoh, fail HTML ini. 1422 01:07:59,850 --> 01:08:04,350 >> Dan perkara yang saya mahu anda untuk memberi tumpuan kepada adalah ini tag tertentu, yang butang, 1423 01:08:04,350 --> 01:08:06,182 dengan id search_button. 1424 01:08:06,182 --> 01:08:08,670 Ia hanya pada halaman. 1425 01:08:08,670 --> 01:08:10,690 Jadi sekarang mari kita lihat apa kita sebenarnya boleh lakukan. 1426 01:08:10,690 --> 01:08:12,560 >> Nah, katakan apabila anda klik butang itu, 1427 01:08:12,560 --> 01:08:16,010 kami ingin alert-- yang anda klik butang. 1428 01:08:16,010 --> 01:08:17,840 Mari kita lihat bagaimana kita boleh berbuat demikian. 1429 01:08:17,840 --> 01:08:23,869 Jadi window.onload-- ini bukan sesuatu yang anda lihat di dalam kelas, oleh itu 1430 01:08:23,869 --> 01:08:26,180 tidak perlu tahu ia untuk kuiz. 1431 01:08:26,180 --> 01:08:33,660 Tetapi ini pada dasarnya mengatakan, OK, panggilan fungsi ini apabila beban tingkap. 1432 01:08:33,660 --> 01:08:35,080 >> Jadi itu hanya jenis kod persediaan. 1433 01:08:35,080 --> 01:08:36,390 Jangan terlalu bimbang tentang itu. 1434 01:08:36,390 --> 01:08:39,170 Apa yang saya mahu anda untuk memberi tumpuan kepada adalah di sini. 1435 01:08:39,170 --> 01:08:44,020 Kami berkata var Searchbutton sama document.getElementByID search_button. 1436 01:08:44,020 --> 01:08:46,450 >> Jadi seperti yang anda sangka, apa ini tidak adalah ia berkata, 1437 01:08:46,450 --> 01:08:50,920 OK, pergi mencari elemen dengan ibu search_button. 1438 01:08:50,920 --> 01:08:52,790 Dan sekarang kita ada yang unsur yang sebenar dan saya 1439 01:08:52,790 --> 01:08:56,279 akan simpan dalam Searchbutton berubah-ubah. 1440 01:08:56,279 --> 01:09:00,651 Dan sekarang kita sebenarnya boleh menggunakan elemen yang dan mengubahnya, atau mengakses nilai, 1441 01:09:00,651 --> 01:09:01,359 perkara-perkara seperti itu. 1442 01:09:01,359 --> 01:09:04,649 Kami benar-benar boleh mula terlibat dengan laman web. 1443 01:09:04,649 --> 01:09:10,330 >> Jadi di sini saya katakan, OK, sekarang bahawa saya mempunyai butang yang, apabila di klik, 1444 01:09:10,330 --> 01:09:12,859 memanggil fungsi tanpa nama ini. 1445 01:09:12,859 --> 01:09:16,811 Jadi ini adalah di mana tanpa nama 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, ia hanya panggilan ini fungsi amaran dan ia berkata, 1448 01:09:20,529 --> 01:09:22,910 anda klik butang Cari. 1449 01:09:22,910 --> 01:09:29,670 >> Jadi apa yang akan berlaku jika saya pergi ke mana sahaja yang HTML ini hidup dan saya klik butang, 1450 01:09:29,670 --> 01:09:33,729 Saya akan mendapat amaran sedikit mewah yang mengatakan bahawa anda klik butang. 1451 01:09:33,729 --> 01:09:40,710 Jadi perkara-perkara yang memberi tumpuan kepada sini-- document.getElementByID 1452 01:09:40,710 --> 01:09:44,960 mendapat HTML tertentu unsur dengan ID yang diberikan. 1453 01:09:44,960 --> 01:09:48,529 Dan sekarang kita boleh menetapkan apa yang patut berlaku apabila 1454 01:09:48,529 --> 01:09:50,702 elemen tersebut diklik. 1455 01:09:50,702 --> 01:09:52,670 >> PENONTON: Kita perlu meletakkan semua itu dalam? 1456 01:09:52,670 --> 01:09:53,162 >> HANNAH Blumberg Maaf? 1457 01:09:53,162 --> 01:09:55,130 >> PENONTON: Adakah kita perlu fizikal kod semua itu? 1458 01:09:55,130 --> 01:09:56,340 >> HANNAH Blumberg: Adakah kita perlu fizikal kod semua itu? 1459 01:09:56,340 --> 01:09:56,839 Ya. 1460 01:09:56,839 --> 01:09:58,120 Bukankah ini jenis menjengkelkan? 1461 01:09:58,120 --> 01:10:00,032 Ini adalah banyak kod. 1462 01:10:00,032 --> 01:10:01,574 >> PENONTON: Anda boleh mengimport sesuatu. 1463 01:10:01,574 --> 01:10:02,532 HANNAH Blumberg: Betul. 1464 01:10:02,532 --> 01:10:03,610 Kita boleh menggunakan sesuatu. 1465 01:10:03,610 --> 01:10:08,140 Dan khususnya-- oh, itu memberitahu saya saya perlu mengajar bahagian. 1466 01:10:08,140 --> 01:10:11,061 Khususnya, mari kita menggunakan perpustakaan jQuery, 1467 01:10:11,061 --> 01:10:13,060 kerana itu adalah benar-benar panjang dan benar-benar menjengkelkan 1468 01:10:13,060 --> 01:10:16,860 dan saya mahu dapat untuk memudahkan ia dan membuat ia lebih pendek dan lebih mudah untuk menulis. 1469 01:10:16,860 --> 01:10:19,810 >> Jadi jQuery sebuah perpustakaan JavaScript. 1470 01:10:19,810 --> 01:10:24,930 Jadi JavaScript adalah pengaturcaraan bahasa; jQuery adalah perpustakaan. 1471 01:10:24,930 --> 01:10:27,190 Dan ia membuatkan sekumpulan perkara yang lebih mudah. 1472 01:10:27,190 --> 01:10:33,230 Ia menjadikan berubah dan akan merentasi dokumen HTML lebih mudah. 1473 01:10:33,230 --> 01:10:35,030 >> Ia menjadikan aktiviti pengendalian yang mudah. 1474 01:10:35,030 --> 01:10:37,580 Ia menjadikan animasi lebih mudah dan ia membuatkan Ajax lebih mudah. 1475 01:10:37,580 --> 01:10:40,140 Jadi mari kita melompat ke dalam dua perkara-perkara sekarang. 1476 01:10:40,140 --> 01:10:40,900 Maafkan saya. 1477 01:10:40,900 --> 01:10:42,620 Sebelum kita lakukan, beberapa sintaks asas. 1478 01:10:42,620 --> 01:10:46,870 >> Ini adalah apa yang kebanyakan panggilan untuk perpustakaan jQuery kelihatan seperti. 1479 01:10:46,870 --> 01:10:50,520 Kami menggunakan dolar ini sign-- ada tanda-tanda sambungan kepada 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 konkrit itu. 1482 01:10:58,860 --> 01:11:02,980 >> Jadi ini sebenarnya adalah sama kod dari slaid acara tersebut. 1483 01:11:02,980 --> 01:11:08,740 Jadi, perkara ini hodoh lama menjadi , perkara ini lebih bagus kecil. 1484 01:11:08,740 --> 01:11:10,370 Jadi mari kita cuba untuk memecahkan ini ke bawah. 1485 01:11:10,370 --> 01:11:17,090 Ini mengatakan, OK, jQuery-- dolar ini sign-- jQuery, mencari saya tingkap. 1486 01:11:17,090 --> 01:11:18,480 Jadi itulah pemilih. 1487 01:11:18,480 --> 01:11:21,800 >> Apabila ia memuatkan, panggilan fungsi ini. 1488 01:11:21,800 --> 01:11:23,880 Jadi itulah segala-galanya di dalam. 1489 01:11:23,880 --> 01:11:24,380 OKEY. 1490 01:11:24,380 --> 01:11:25,740 Setakat ini, begitu baik? 1491 01:11:25,740 --> 01:11:26,750 Baiklah. 1492 01:11:26,750 --> 01:11:32,970 >> Sekarang, jQuery, mencari saya perkara dengan ibu search_button. 1493 01:11:32,970 --> 01:11:36,090 Dan apa yang ia diklik, memanggil fungsi ini. 1494 01:11:36,090 --> 01:11:37,900 Dan kemudian ini fungsi ini betul-betul sama. 1495 01:11:37,900 --> 01:11:41,052 Lakukan sedikit berjaga-jaga, anda klik butang Cari. 1496 01:11:41,052 --> 01:11:42,650 >> Jadi ia adalah benar-benar baik. 1497 01:11:42,650 --> 01:11:46,260 Ia benar-benar memeluwap dan memudahkan kod kami. 1498 01:11:46,260 --> 01:11:49,030 Bagaimana saya tahu bahawa ia ID search_button 1499 01:11:49,030 --> 01:11:50,960 dan tidak suka kelas search_button? 1500 01:11:50,960 --> 01:11:52,024 >> PENONTON: Hashtag? 1501 01:11:52,024 --> 01:11:52,940 HANNAH Blumberg: Ya. 1502 01:11:52,940 --> 01:11:56,450 Simbol hash, ia seperti CSS. 1503 01:11:56,450 --> 01:12:00,080 Jadi ingat, dengan CSS, apabila kita mahu untuk memilih sesuatu dengan ID, 1504 01:12:00,080 --> 01:12:01,590 kita menggunakan tanda pound. 1505 01:12:01,590 --> 01:12:05,400 Dan apabila kita mahu untuk memilih sesuatu dengan kelas, kita menggunakan titik. 1506 01:12:05,400 --> 01:12:06,870 Yang besar. 1507 01:12:06,870 --> 01:12:08,230 Masuk akal? 1508 01:12:08,230 --> 01:12:11,500 Jadi jQuery sepatutnya hanya membuat hidup kita lebih mudah. 1509 01:12:11,500 --> 01:12:12,000 Yeah. 1510 01:12:12,000 --> 01:12:15,660 >> PENONTON: Jadi saya sedikit keliru bagaimana fungsi tanpa nama berfungsi. 1511 01:12:15,660 --> 01:12:19,027 Adakah anda menamakan anonymouse ini fungsi, berfungsi? 1512 01:12:19,027 --> 01:12:20,594 Bagaimana ia dipanggil? 1513 01:12:20,594 --> 01:12:21,510 HANNAH Blumberg: Pasti. 1514 01:12:21,510 --> 01:12:25,812 Jadi fungsi hanya kata kunci yang berkata, saya kira-kira untuk menentukan fungsi. 1515 01:12:25,812 --> 01:12:26,520 PENONTON: 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 hujah supaya- mari 1518 01:12:32,120 --> 01:12:37,040 one-- ini dalaman untuk fungsi klik. 1519 01:12:37,040 --> 01:12:39,420 Jadi ya, jadi fungsi itu, fungsi tanpa nama ini, 1520 01:12:39,420 --> 01:12:40,910 menjadi hujah yang sebenar. 1521 01:12:40,910 --> 01:12:43,632 Jadi ingat dalam JavaScript, kita boleh merawat berfungsi sebagai nilai-nilai. 1522 01:12:43,632 --> 01:12:44,340 PENONTON: 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 bahawa "oh." 1525 01:12:46,035 --> 01:12:47,490 Nice. 1526 01:12:47,490 --> 01:12:49,915 Soalan-soalan lain? 1527 01:12:49,915 --> 01:12:50,505 Time? 1528 01:12:50,505 --> 01:12:51,380 MARIA ZLATKOVA: Baik. 1529 01:12:51,380 --> 01:12:52,760 Yang baik. 1530 01:12:52,760 --> 01:12:54,210 >> HANNAH Blumberg: Awesome. 1531 01:12:54,210 --> 01:12:55,720 Sesetengah jQuery berguna cepat. 1532 01:12:55,720 --> 01:12:57,559 Saya tidak akan pergi melalui semua ini. 1533 01:12:57,559 --> 01:12:59,350 Ini slaid akan dalam talian sedikit 1534 01:12:59,350 --> 01:13:02,040 kemudian, supaya anda boleh menyemak ia keluar sedikit kemudian. 1535 01:13:02,040 --> 01:13:07,120 Tetapi pada dasarnya, umum corak memegang mana kita katakan, 1536 01:13:07,120 --> 01:13:11,510 OK, hey, jQuery, di sini saya pemilih dan kemudian di sini adalah sesuatu tindakan. 1537 01:13:11,510 --> 01:13:15,940 Dan anda boleh melakukan perkara-perkara seperti akses nilai borang, mengakses beberapa HTML, 1538 01:13:15,940 --> 01:13:19,195 kawalan apa yang berlaku apabila pengguna mengemukakan satu bentuk, perkara seperti itu. 1539 01:13:19,195 --> 01:13:20,106 Ya. 1540 01:13:20,106 --> 01:13:22,090 >> PENONTON: Jadi dalam peperiksaan, kita akan perlu 1541 01:13:22,090 --> 01:13:25,066 tahu agak banyak dari dokumentasi jQuery. 1542 01:13:25,066 --> 01:13:31,018 Jadi memandangkan kami menyalin / menampal jQuery dokumentasi untuk lembaran menipu kita, 1543 01:13:31,018 --> 01:13:32,506 di mana adalah garisan yang dilukis? 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: Soalan yang hebat. 1546 01:13:35,290 --> 01:13:37,765 Persoalannya ialah dasarnya memandangkan anda 1547 01:13:37,765 --> 01:13:41,330 tidak boleh mengakses dokumentasi jQuery semasa ujian, berapa banyak yang perlu 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 rawak 1550 01:13:45,540 --> 01:13:47,240 bahawa kita akan mengharapkan anda untuk Google. 1551 01:13:47,240 --> 01:13:52,930 >> Perkara-perkara yang permainan adil adalah saya akan mengatakan hanya jenis sintaks umum, 1552 01:13:52,930 --> 01:13:58,310 dapat memilih dengan ID dan oleh class-- jadi seperti CSS. 1553 01:13:58,310 --> 01:14:01,876 Dan kemudian dan fungsi sebenar dirinya sendiri, kita mungkin akan memberitahu anda. 1554 01:14:01,876 --> 01:14:02,376 Yeah. 1555 01:14:02,376 --> 01:14:05,591 >> PENONTON: Jadi apabila anda memilih mengikut kelas bermakna titik. 1556 01:14:05,591 --> 01:14:06,840 HANNAH Blumberg: Ya, betul-betul. 1557 01:14:06,840 --> 01:14:07,340 Yang baik. 1558 01:14:07,340 --> 01:14:10,461 Apabila anda memilih mengikut kelas, ia akan hendak dot bukannya tanda pound. 1559 01:14:10,461 --> 01:14:10,960 Ya. 1560 01:14:10,960 --> 01:14:12,710 >> PENONTON: Adakah anda pergi perbezaan 1561 01:14:12,710 --> 01:14:14,310 antara memilih oleh ID dan oleh kelas? 1562 01:14:14,310 --> 01:14:14,560 >> HANNAH Blumberg: Pasti. 1563 01:14:14,560 --> 01:14:17,510 Perbezaan antara memilih ID dan memilih mengikut kelas. 1564 01:14:17,510 --> 01:14:20,685 Jadi seperti Maria berkata, sedikit sebelum ini, terdapat 1565 01:14:20,685 --> 01:14:26,280 hanya boleh menjadi salah satu elemen HTML dengan ibu yang diberikan, manakala kelas, 1566 01:14:26,280 --> 01:14:29,740 ia membolehkan kami untuk mengumpulkan sekumpulan unsur-unsur yang berbeza bersama-sama, 1567 01:14:29,740 --> 01:14:34,300 supaya perkara-perkara yang berkaitan, tetapi tidak sama. 1568 01:14:34,300 --> 01:14:35,685 Adakah ini menjawab soalan? 1569 01:14:35,685 --> 01:14:36,200 Awesome. 1570 01:14:36,200 --> 01:14:37,194 Ya. 1571 01:14:37,194 --> 01:14:40,680 >> PENONTON: Bagaimana jika anda mempunyai berbilang perkara-perkara yang berada di dalam kelas yang sama? 1572 01:14:40,680 --> 01:14:42,150 >> HANNAH Blumberg: Apa yang berlaku jika anda mempunyai beberapa perkara yang 1573 01:14:42,150 --> 01:14:43,280 adalah kelas yang sama? 1574 01:14:43,280 --> 01:14:45,829 Jadi, sebagai contoh, jika kita berada hanya menggunakan tulen 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 tidak adalah pulangan pelbagai elemen. 1578 01:14:56,320 --> 01:14:59,517 >> Dan anda perlu sama ada melelar mereka atau mencari yang mana yang anda mahu. 1579 01:14:59,517 --> 01:15:01,350 Ia tidak akan memberi anda satu elemen tunggal. 1580 01:15:01,350 --> 01:15:03,450 Ia akan memberikan anda pelbagai elemen. 1581 01:15:03,450 --> 01:15:05,280 Persoalan yang besar. 1582 01:15:05,280 --> 01:15:07,700 Apa-apa lagi? 1583 01:15:07,700 --> 01:15:09,520 Awesome. 1584 01:15:09,520 --> 01:15:12,860 >> Jadi saya fikir jika anda biasa dengan sebarang jQuery yang anda lihat dalam pset, 1585 01:15:12,860 --> 01:15:15,600 anda perlu baik untuk pergi. 1586 01:15:15,600 --> 01:15:16,325 Soalan? 1587 01:15:16,325 --> 01:15:17,610 Oh tidak. 1588 01:15:17,610 --> 01:15:18,859 Saya benar-benar perlu mengajar. 1589 01:15:18,859 --> 01:15:19,358 Berehat. 1590 01:15:19,358 --> 01:15:20,035 Ia akan selamat. 1591 01:15:20,035 --> 01:15:20,660 Saya akan sampai ke sana. 1592 01:15:20,660 --> 01:15:24,670 1593 01:15:24,670 --> 01:15:26,870 >> Mari kita bercakap tentang Ajax. 1594 01:15:26,870 --> 01:15:31,350 Jadi Ajax akan menjadi a-- baik, mari kita mulakan dengan apa yang ia bermaksud. 1595 01:15:31,350 --> 01:15:32,350 Ia singkatan. 1596 01:15:32,350 --> 01:15:35,855 Ia bermaksud Asynchronous JavaScript dan XML. 1597 01:15:35,855 --> 01:15:39,800 Dan XML pada dasarnya akan menjadi [Didengar] dengan jenis data kami. 1598 01:15:39,800 --> 01:15:42,100 Tetapi kita tidak 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 asasnya, ia adalah beberapa data-- tak segerak, JavaScript, dan data, 1601 01:15:48,350 --> 01:15:50,040 dalam kes ini, JSON. 1602 01:15:50,040 --> 01:15:52,820 Dan matlamat kami, seperti yang telah dinyatakan sedikit sebelum ini, 1603 01:15:52,820 --> 01:15:56,880 yang dapat membuat permintaan, permintaan telah kerjakan 1604 01:15:56,880 --> 01:16:00,700 perkara yang di latar belakang, tetapi terus 1605 01:16:00,700 --> 01:16:02,550 melakukan apa sahaja yang kita ingin lakukan. 1606 01:16:02,550 --> 01:16:06,650 Dan kemudian apabila maklumat yang bersedia, maka kami akan menggabungkan ia. 1607 01:16:06,650 --> 01:16:08,470 >> Jadi mari kita lihat apa ini sebenarnya kelihatan seperti. 1608 01:16:08,470 --> 01:16:11,210 Dan ini, anda perlu sedikit biasa 1609 01:16:11,210 --> 01:16:13,680 dari pset8, yang anda hanya bertukar masuk. 1610 01:16:13,680 --> 01:16:16,200 Jadi di sini adalah jQuery yang sah 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 Maka ia berkata fungsi jQuery, .getJson. 1613 01:16:21,500 --> 01:16:25,020 >> Dan apa fungsi ini tidak adalah ia mengambil URL dan beberapa parameters-- 1614 01:16:25,020 --> 01:16:28,000 jadi saya fikir dalam kes daripada pset8, ia adalah seperti, 1615 01:16:28,000 --> 01:16:33,520 URL adalah articles.php dan parameter adalah pergi = beberapa kod pos. 1616 01:16:33,520 --> 01:16:41,580 Dan ia berkata, OK, membuat permintaan kepada URL ini dengan parameter diberikan. 1617 01:16:41,580 --> 01:16:43,480 Dan itu hanya berlaku. 1618 01:16:43,480 --> 01:16:47,730 >> Setelah selesai, ia sama ada akan berjaya menyelesaikan 1619 01:16:47,730 --> 01:16:49,370 atau ia akan gagal. 1620 01:16:49,370 --> 01:16:53,480 Jadi ini adalah sama dengan panggilan Rob dan meminta dia melakukan sesuatu. 1621 01:16:53,480 --> 01:17:00,260 Dan kemudian apabila ia memohon kembali, dia sama ada akan berkata saya lakukan atau saya gagal. 1622 01:17:00,260 --> 01:17:04,030 >> Jadi, dalam kes di mana anda berada dilakukan, anda mengatakan, OK, saya dilakukan. 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 kes ini, ia akan menjadi fungsi yang mengambil beberapa maklumat. 1625 01:17:08,915 --> 01:17:12,890 Yang kita biasanya mengambil berat tentang adalah data, data yang kita sebenarnya kembali 1626 01:17:12,890 --> 01:17:15,900 akibat daripada memanggil .getJSON. 1627 01:17:15,900 --> 01:17:17,470 >> Dan anda boleh melakukan sesuatu dengan ia. 1628 01:17:17,470 --> 01:17:23,670 Jadi dalam kes pset8, kita dipaparkan sebagai senarai. 1629 01:17:23,670 --> 01:17:29,050 Fail akan menjadi satu majlis yang dipanggil jika permintaan itu gagal 1630 01:17:29,050 --> 01:17:30,450 atas apa jua sebab. 1631 01:17:30,450 --> 01:17:35,104 Dan dalam hal pset8, kita hanya console.log ia. 1632 01:17:35,104 --> 01:17:36,020 Sebarang pertanyaan mengenai itu? 1633 01:17:36,020 --> 01:17:36,300 Yeah. 1634 01:17:36,300 --> 01:17:39,633 >> PENONTON: Bolehkah kita hanya menggunakan fungsi theta dan bukan fungsi, textStatus, jqHXR. 1635 01:17:39,633 --> 01:17:43,464 1636 01:17:43,464 --> 01:17:44,380 HANNAH Blumberg: Pasti. 1637 01:17:44,380 --> 01:17:46,713 Jadi ya, saya fikir dalam pset, kita hanya melihat fungsi data. 1638 01:17:46,713 --> 01:17:48,700 Jadi ia hanya the-- ya, OK. 1639 01:17:48,700 --> 01:17:50,510 Itulah yang kita lihat dalam pset. 1640 01:17:50,510 --> 01:17:51,480 Itu betul-betul halus. 1641 01:17:51,480 --> 01:17:54,210 >> Ini hanya jika anda mahu untuk menarik keluar maklumat lanjut, 1642 01:17:54,210 --> 01:17:57,190 ini adalah perkara-perkara yang anda boleh dapatkan dari .getJSON. 1643 01:17:57,190 --> 01:17:59,040 Soalan yang baik. 1644 01:17:59,040 --> 01:17:59,706 Apa-apa lagi? 1645 01:17:59,706 --> 01:18:00,206 Yeah. 1646 01:18:00,206 --> 01:18:01,787 >> PENONTON: 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 bahagian yang sukar. 1649 01:18:05,700 --> 01:18:12,390 Ia adalah fungsi jQuery yang membolehkan anda untuk melakukan panggilan tak segerak. 1650 01:18:12,390 --> 01:18:16,080 Dan orang-orang panggilan tak segerak, itu apa yang kita telah merujuk kepada sebagai Ajax. 1651 01:18:16,080 --> 01:18:16,850 Yeah. 1652 01:18:16,850 --> 01:18:20,185 Yang telah mengambil masa yang lama untuk benar-benar menarik selain apabila saya adalah seorang pelajar. 1653 01:18:20,185 --> 01:18:21,560 PENONTON: Bolehkah anda mengatakan bahawa sekali lagi? 1654 01:18:21,560 --> 01:18:22,476 HANNAH Blumberg: Ya. 1655 01:18:22,476 --> 01:18:23,630 Bolehkah saya mengatakan bahawa sekali lagi? 1656 01:18:23,630 --> 01:18:29,010 Fungsi .getJSON, ia adalah fungsi jQuery. 1657 01:18:29,010 --> 01:18:31,970 Dan ia akan membuat panggilan tak segerak. 1658 01:18:31,970 --> 01:18:35,700 Inilah panggilan tak segerak, kami telah telah merujuk kepada mereka sebagai Ajax. 1659 01:18:35,700 --> 01:18:39,610 1660 01:18:39,610 --> 01:18:41,872 >> Apa-apa soalan lain? 1661 01:18:41,872 --> 01:18:43,330 Kami mempunyai hanya beberapa minit. 1662 01:18:43,330 --> 01:18:45,080 Dan Maria akan mengakhiri dengan keselamatan 1663 01:18:45,080 --> 01:18:47,464 dan kemudian kita akan untuk hanya kira-kira 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 pasangan saat untuk melihat lebih ini. 1666 01:18:54,030 --> 01:18:56,750 Dan ini bukanlah sesuatu yang benar-benar hebat. 1667 01:18:56,750 --> 01:18:59,430 Dan seseorang boleh beritahu saya kenapa? 1668 01:18:59,430 --> 01:19:05,650 Apa yang sedang berlaku di foo dan boleh boleh berpotensi menyebabkan sesuatu yang buruk, 1669 01:19:05,650 --> 01:19:06,770 dan apa yang dinamakan? 1670 01:19:06,770 --> 01:19:07,270 Yeah. 1671 01:19:07,270 --> 01:19:10,391 PENONTON: Jika hujah itu diluluskan di lebih daripada 12 aksara, 1672 01:19:10,391 --> 01:19:11,454 ia boleh melimpah. 1673 01:19:11,454 --> 01:19:12,370 MARIA ZLATKOVA: Betul. 1674 01:19:12,370 --> 01:19:14,180 Perfect. 1675 01:19:14,180 --> 01:19:15,384 Apakah ia dipanggil? 1676 01:19:15,384 --> 01:19:16,300 Anda hanya menyebut ia. 1677 01:19:16,300 --> 01:19:16,840 >> PENONTON: Buffer limpahan. 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 rujuk sebagai buffer overflow. 1680 01:19:21,230 --> 01:19:25,500 Dan kita melihat bahawa di dalam foo, kami telah ditakrifkan penampan kami, c, 1681 01:19:25,500 --> 01:19:27,240 dengan saiz 12. 1682 01:19:27,240 --> 01:19:32,680 Walau bagaimanapun, dalam utama, kita tidak menyemak dalam mana-mana cara sekalipun 1683 01:19:32,680 --> 01:19:36,480 sama ada argv1-- supaya ialah dengan mendakwa kedua. 1684 01:19:36,480 --> 01:19:39,630 Kami tidak memeriksa sama ada Saiz adalah wajar. 1685 01:19:39,630 --> 01:19:43,380 >> Jadi, jika kita mempunyai pengguna terutamanya yang berniat jahat 1686 01:19:43,380 --> 01:19:47,170 yang dimasukkan ke dalam beberapa hujah itu adalah lebih lama daripada 12, dan kemudian berpotensi 1687 01:19:47,170 --> 01:19:50,850 luar batas-batas yang hujah, mempunyai beberapa kod boleh laksana 1688 01:19:50,850 --> 01:19:55,570 bahawa dia telah cuba untuk melakukan sesuatu yang tidak baik bersama ia; maka ini, apa yang akan berlaku, 1689 01:19:55,570 --> 01:19:59,310 akan mengatasi pulangan alamat fungsi foo itu, 1690 01:19:59,310 --> 01:20:04,370 menyebabkan fungsi untuk apabila kembali untuk melaksanakan kod itu. 1691 01:20:04,370 --> 01:20:07,540 Dan kemudian perkara-perkara buruk boleh berlaku. 1692 01:20:07,540 --> 01:20:09,850 Adakah ini masuk akal untuk semua orang? 1693 01:20:09,850 --> 01:20:12,424 >> Dan bagaimana kita boleh melindungi daripada ini? 1694 01:20:12,424 --> 01:20:13,090 Ada apa-apa cadangan? 1695 01:20:13,090 --> 01:20:16,480 1696 01:20:16,480 --> 01:20:21,890 Pada dasarnya, di dalam berpotensi foo, bagaimana 1697 01:20:21,890 --> 01:20:28,294 kita boleh periksa untuk memastikan yang yang tidak boleh berlaku? 1698 01:20:28,294 --> 01:20:33,879 >> PENONTON: Jika saiz 12 melebihi, anda akan memperuntukkan memori tambahan? 1699 01:20:33,879 --> 01:20:37,170 MARIA ZLATKOVA: Cadangan adalah, memperuntukkan memori tambahan saiz melebihi. 1700 01:20:37,170 --> 01:20:39,800 Sebenarnya, kita boleh melakukan sesuatu yang banyak lebih mudah daripada itu juga. 1701 01:20:39,800 --> 01:20:44,870 Kita hanya boleh mendapatkan panjang rentetan hujah yang dimasukkan, 1702 01:20:44,870 --> 01:20:48,590 memeriksa jika yang kurang daripada atau sama dengan 12-- 1703 01:20:48,590 --> 01:20:50,790 iaitu apa yang kita mahu ia yang mendakwa bahawa kerana kita tidak mahu 1704 01:20:50,790 --> 01:20:52,373 ia melebihi batas-batas penampan kami. 1705 01:20:52,373 --> 01:20:55,690 Dan kemudian jika tidak, kita boleh bekerja dengan hujah. 1706 01:20:55,690 --> 01:21:00,296 Dan kemudian jika ia berlaku, kita benar-benar mahu untuk Yello berpotensi pada pengguna. 1707 01:21:00,296 --> 01:21:01,670 Tetapi ini adalah bagaimana kita akan berbuat demikian. 1708 01:21:01,670 --> 01:21:02,443 Ya. 1709 01:21:02,443 --> 01:21:04,360 >> PENONTON: Bolehkah anda menjelaskan cepat sebenar memcpy? 1710 01:21:04,360 --> 01:21:05,443 MARIA ZLATKOVA: Oh, maaf. 1711 01:21:05,443 --> 01:21:06,040 Ya. 1712 01:21:06,040 --> 01:21:11,290 Memcpy mengambil apa sahaja is-- maaf, OK. 1713 01:21:11,290 --> 01:21:15,850 Memcpy mengambil apa yang ada di bar, apa sahaja yang diluluskan 1714 01:21:15,850 --> 01:21:18,050 ke foo sebagai hujah baris arahan. 1715 01:21:18,050 --> 01:21:19,440 Oleh itu, ia akan mengambil argv1. 1716 01:21:19,440 --> 01:21:21,420 Argv1 dipanggil bar di sini. 1717 01:21:21,420 --> 01:21:24,453 Oleh itu, ia akan mengambil bar dan ia akan menyalinnya ke dalam c. 1718 01:21:24,453 --> 01:21:25,402 >> PENONTON: OK. 1719 01:21:25,402 --> 01:21:28,360 MARIA ZLATKOVA: Dan ia akan copy-- hujah ketiga hanya merujuk 1720 01:21:28,360 --> 01:21:30,601 berapa banyak ia akan menyalin ke dalam c. 1721 01:21:30,601 --> 01:21:31,142 PENONTON: Ah. 1722 01:21:31,142 --> 01:21:33,030 Jadi menyalin satu ini semua itu ketika itu. 1723 01:21:33,030 --> 01:21:34,310 >> MARIA ZLATKOVA: Ya, ia 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, kita pastikan bar tidak sama dengan nol kerana ia adalah penunjuk. 1727 01:21:41,910 --> 01:21:44,680 Kemudian kami mendapatkan panjang tali bar. 1728 01:21:44,680 --> 01:21:47,530 Kami memastikan bahawa ia kurang daripada atau sama dengan 12. 1729 01:21:47,530 --> 01:21:50,070 Dan kemudian kerana kita ada memastikan, kita boleh sebenarnya 1730 01:21:50,070 --> 01:21:53,122 memcpy dan pastikan bahawa itu OK. 1731 01:21:53,122 --> 01:21:53,705 Ada soalan? 1732 01:21:53,705 --> 01:21:56,280 1733 01:21:56,280 --> 01:21:58,690 Yang besar. 1734 01:21:58,690 --> 01:22:00,400 Saya mempunyai dua soalan betul atau salah. 1735 01:22:00,400 --> 01:22:05,470 Bolehkah sesiapa beritahu saya dengan segera jika ini adalah benar atau palsu? 1736 01:22:05,470 --> 01:22:07,460 Ya, ia adalah palsu. 1737 01:22:07,460 --> 01:22:07,960 Tepat sekali. 1738 01:22:07,960 --> 01:22:09,330 Kedua-dua mereka adalah palsu. 1739 01:22:09,330 --> 01:22:12,682 Jadi menggunakan kata laluan tunggal adalah idea tidak pernah benar-benar baik 1740 01:22:12,682 --> 01:22:14,890 kerana jika seseorang mengetahui kata laluan anda, mereka boleh hanya 1741 01:22:14,890 --> 01:22:16,260 mengakses semua akaun anda yang lain. 1742 01:22:16,260 --> 01:22:19,260 Dan kemudian ikon berbuat apa-apa untuk memastikan keselamatan. 1743 01:22:19,260 --> 01:22:24,900 Kami biasanya perlu mencari HTTPS bukan HTTP dan URL. 1744 01:22:24,900 --> 01:22:28,560 >> Dan beberapa lain-lain jenis serangan yang kami telah disebutkan, 1745 01:22:28,560 --> 01:22:31,390 Daud telah disebutkan dalam syarahan, serangan suntikan SQL. 1746 01:22:31,390 --> 01:22:37,310 Kita sudah melihat bahawa jika kita don't-- yang Fungsi CS50 Pertanyaan memastikan SQL yang 1747 01:22:37,310 --> 01:22:39,530 serangan suntikan tidak boleh berlaku. 1748 01:22:39,530 --> 01:22:42,640 Tetapi jika kita tidak menggunakan CS50, quote, unquote "dalam pertanyaan," 1749 01:22:42,640 --> 01:22:46,830 kita perlu memastikan bahawa input pengguna tidak sebenarnya beberapa SQL 1750 01:22:46,830 --> 01:22:49,670 pertanyaan yang akan menyebabkan semua meja kami yang akan digugurkan 1751 01:22:49,670 --> 01:22:54,070 atau sesuatu yang tidak baik kepada berlaku dengan pangkalan data kami. 1752 01:22:54,070 --> 01:22:56,790 >> Sesi rampasan adalah satu lagi jenis serangan 1753 01:22:56,790 --> 01:23:05,940 yang berlaku apabila beberapa buruk orang menggunakan sesi beberapa mangsa 1754 01:23:05,940 --> 01:23:08,740 ID untuk mengakses maklumat log masuk. 1755 01:23:08,740 --> 01:23:13,620 Jadi contoh yang sangat remeh iaitu seperti jika kita mempunyai komputer awam, 1756 01:23:13,620 --> 01:23:21,120 maka orang yang buruk log masuk dan kemudian mereka mempunyai kuki yang disimpan. 1757 01:23:21,120 --> 01:23:23,380 Dan Cookies ini tidak berubah untuk sesi. 1758 01:23:23,380 --> 01:23:27,620 >> Kemudian kami telah mangsa pergi dan kemudian log masuk ke laman web ini. 1759 01:23:27,620 --> 01:23:30,290 Kuki tidak berubah untuk sesi tertentu. 1760 01:23:30,290 --> 01:23:33,060 Dan kemudian mangsa log ke dalam laman web dan kemudian meninggalkan. 1761 01:23:33,060 --> 01:23:36,190 Dan kemudian orang yang kembali boleh kemudian masih menggunakan ID sesi mereka 1762 01:23:36,190 --> 01:23:37,430 untuk mengakses maklumat mereka. 1763 01:23:37,430 --> 01:23:40,050 Jadi, itu satu contoh bagaimana yang boleh berlaku. 1764 01:23:40,050 --> 01:23:45,570 >> Dan kemudian saya tidak akan bimbang terlalu banyak tentang kod tertentu atau apa-apa 1765 01:23:45,570 --> 01:23:49,270 seperti itu yang boleh menyebabkan ini, tetapi mempunyai beberapa jenis idea apa 1766 01:23:49,270 --> 01:23:51,400 pembolehubah yang terlibat dalam ini adalah. 1767 01:23:51,400 --> 01:23:53,897 Dan kemudian memanipulasi header data adalah satu lagi jenis serangan 1768 01:23:53,897 --> 01:23:55,230 yang mempunyai David telah bercakap tentang. 1769 01:23:55,230 --> 01:23:59,730 Dan ia hanya merujuk kepada apa yang boleh berlaku apabila 1770 01:23:59,730 --> 01:24:04,300 sambutan, HTTP tindak balas di dalam kepala kami 1771 01:24:04,300 --> 01:24:05,720 tidak dibersihkan dengan betul. 1772 01:24:05,720 --> 01:24:14,340 >> Dan mana-mana fields-- sebagai contoh, jika seseorang menulis ganti salah satu tajuk 1773 01:24:14,340 --> 01:24:18,860 nilai-nilai yang mengandungi apa-apa lagi daripada Apakah yang mereka akan mengandungi- dan benar-benar 1774 01:24:18,860 --> 01:24:22,720 mengandungi, sebagai contoh, 200 Kod status OK, maka mereka 1775 01:24:22,720 --> 01:24:26,890 berpotensi tidak berniat jahat perkara yang apabila mereka tidak sepatutnya. 1776 01:24:26,890 --> 01:24:30,815 Tetapi saya tidak akan bimbang terlalu banyak tentang kod tertentu 1777 01:24:30,815 --> 01:24:34,110 yang boleh menyebabkan ini, hanya jenis persefahaman 1778 01:24:34,110 --> 01:24:37,290 perkara yang peringkat tinggi seperti itu. 1779 01:24:37,290 --> 01:24:39,570 >> Saya rasa ini adalah semua yang kita ada untuk menutup. 1780 01:24:39,570 --> 01:24:40,090 Menakjubkan. 1781 01:24:40,090 --> 01:24:43,310 Sesiapa yang mempunyai sebarang soalan mengenai apa-apa satu perkara yang kita dilindungi? 1782 01:24:43,310 --> 01:24:44,213 Ya. 1783 01:24:44,213 --> 01:24:48,077 >> PENONTON: Jadi satu jenis soalan yang lebih logistik. 1784 01:24:48,077 --> 01:24:53,400 Apakah kandungan yang lebih tertumpu kepada perkara-perkara selepas kuiz 1? 1785 01:24:53,400 --> 01:24:55,730 >> MARIA ZLATKOVA: Jadi soalan adalah, adalah kandungan 1786 01:24:55,730 --> 01:24:59,720 tertumpu terutamanya kepada perkara-perkara selepas kuiz 1? 1787 01:24:59,720 --> 01:25:06,070 Jadi tumpuan diberikan kepada selepas kuiz 1, kecuali 1788 01:25:06,070 --> 01:25:10,914 yang kita perlu memberi tumpuan kepada perkara-perkara dalam pset5 dan banyak struktur data 1789 01:25:10,914 --> 01:25:11,580 bahawa kita dilindungi. 1790 01:25:11,580 --> 01:25:14,300 Dan kita tidak boleh mengatakan bahawa kita boleh mengabaikan apa-apa sebelum 1791 01:25:14,300 --> 01:25:17,120 itu kerana ia dibina di atas itu juga. 1792 01:25:17,120 --> 01:25:21,845 >> Jadi tumpuan kepada itu, ditambah bahan pset5 seperti termasuk dikaitkan senarai, susunan, 1793 01:25:21,845 --> 01:25:23,720 beratur, dan segala-galanya yang Hannah pergi ke sana. 1794 01:25:23,720 --> 01:25:24,050 >> HANNAH Blumberg: Betul. 1795 01:25:24,050 --> 01:25:27,450 Ya, kami pergi ke atas semua barangan C di awal-awal dengan cepat. 1796 01:25:27,450 --> 01:25:29,090 Tetapi pastikan untuk mengkaji semula itu. 1797 01:25:29,090 --> 01:25:32,700 Kembali dan menonton kuiz 0 ulasan. 1798 01:25:32,700 --> 01:25:36,110 >> Beberapa nota lebih logistik, hanya sementara kita mempunyai perhatian anda. 1799 01:25:36,110 --> 01:25:39,100 Kita akan mempunyai waktu pejabat kedua-dua pada Isnin dan Selasa malam. 1800 01:25:39,100 --> 01:25:41,540 Mereka akan berada di dalam MD 119. 1801 01:25:41,540 --> 01:25:44,220 Ini semua di laman web, supaya jika anda tidak mendengar, tidak ada kebimbangan. 1802 01:25:44,220 --> 01:25:45,266 >> MARIA ZLATKOVA: 8:30 hingga 11:00. 1803 01:25:45,266 --> 01:25:46,260 >> HANNAH Blumberg: Ya, dari jam 8:30 hingga 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 soalan. 1806 01:25:48,368 --> 01:25:49,480 Ia sejuk cantik dan menyeronokkan. 1807 01:25:49,480 --> 01:25:53,240 Anda semua boleh meminta apa-apa soalan yang ada pada kuiz 1. 1808 01:25:53,240 --> 01:25:55,740 Dan kuiz 1 adalah pada Rabu, nasib begitu baik. 1809 01:25:55,740 --> 01:25:59,770 Jika anda mempunyai sebarang pertanyaan, mungkin datang bercakap dengan kita di sini pada satu-satu. 1810 01:25:59,770 --> 01:26:00,880 Sejuk. 1811 01:26:00,880 --> 01:26:01,630 Terima kasih banyak-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 >> PENONTON: Yay. 1814 01:26:03,480 --> 01:26:05,930 >> [Tepuk tangan] 1815 01:26:05,930 --> 01:26:07,530