1 00:00:00,000 --> 00:00:05,616 2 00:00:05,616 --> 00:00:07,030 >> Ханна Блумберг: Привет всем. 3 00:00:07,030 --> 00:00:09,530 Ми збираємося почати всього пару хвилин раніше 4 00:00:09,530 --> 00:00:11,738 оскільки у нас є цілий багато матеріалу, щоб пройти. 5 00:00:11,738 --> 00:00:12,790 Я Ханна. 6 00:00:12,790 --> 00:00:13,865 Я TF. 7 00:00:13,865 --> 00:00:16,239 Марія збирається приєднатися нам всього пару хвилин. 8 00:00:16,239 --> 00:00:17,560 Розділ Вона викладає прямо перед. 9 00:00:17,560 --> 00:00:19,351 Я вчу розділ право після, так що ми збираємося 10 00:00:19,351 --> 00:00:21,200 тримати його в півтори години. 11 00:00:21,200 --> 00:00:25,490 >> Отже, як ви побачите тут, у нас є достатньо кілька тем, ми повинні пройти, 12 00:00:25,490 --> 00:00:27,200 таким чином, ми будемо йти трохи швидше. 13 00:00:27,200 --> 00:00:31,140 Але якщо в якийсь момент ми щось сказати занадто швидко або ви не розумієте, 14 00:00:31,140 --> 00:00:33,170 не соромтеся, щоб перервати з питаннями. 15 00:00:33,170 --> 00:00:36,610 Ми хочемо, щоб мати можливість зробити це огляд сесії в якості корисної для всіх вас 16 00:00:36,610 --> 00:00:37,973 як можна. 17 00:00:37,973 --> 00:00:38,920 Високий. 18 00:00:38,920 --> 00:00:41,650 >> Отже, давайте стрибати прямо в с деякі теми, які ми насправді 19 00:00:41,650 --> 00:00:46,980 дуже, дуже коротко розглянуті для Тест 0 в оглядовій сесії вікторини 0. 20 00:00:46,980 --> 00:00:48,840 Так, починаючи з пов'язаними списками. 21 00:00:48,840 --> 00:00:52,090 Так що переконайтеся, що у вас є деякі базові знання про пов'язаних списків 22 00:00:52,090 --> 00:00:55,110 і зручно робити деякі з основних операцій. 23 00:00:55,110 --> 00:00:58,560 >> Так що просто розглянути, пов'язані Списки краще, ніж масиви 24 00:00:58,560 --> 00:01:01,020 тому що вони можуть рости динамічно. 25 00:01:01,020 --> 00:01:03,300 Отже, ми маємо величезну перевагу, що. 26 00:01:03,300 --> 00:01:06,031 Ми бачили їх використовувати в хеш-таблиць, коли ми 27 00:01:06,031 --> 00:01:08,280 не знаю точно, скільки речі, які ми збираємося хочете 28 00:01:08,280 --> 00:01:10,900 вставити в нашій структурі даних. 29 00:01:10,900 --> 00:01:15,700 На жаль, у нас є шматки зв'язаний список всього пам'яті, 30 00:01:15,700 --> 00:01:20,820 таким чином, ми не обов'язково буде в змозі зробити постійний доступ часу 31 00:01:20,820 --> 00:01:22,502 до будь-якого елементу у зв'язаному списку. 32 00:01:22,502 --> 00:01:24,210 Для того, щоб знайти конкретний елемент, ми 33 00:01:24,210 --> 00:01:26,510 є для перебору всіх спосіб з самого початку. 34 00:01:26,510 --> 00:01:30,610 Так що майте на увазі, що більшість з Основні операції Омега 1. 35 00:01:30,610 --> 00:01:32,130 Так вставка тільки збирається взяти 1. 36 00:01:32,130 --> 00:01:37,520 Видалити збирається взяти п, так як ми повинні піти і знайти його в списку. 37 00:01:37,520 --> 00:01:39,260 І пошук може зайняти, в гіршому випадку, п. 38 00:01:39,260 --> 00:01:42,330 Ми не можемо зробити щось на зразок бінарний пошук на зв'язаний список 39 00:01:42,330 --> 00:01:45,101 Оскільки ми не можемо просто випадково перейти до середини. 40 00:01:45,101 --> 00:01:45,600 Прохолодний. 41 00:01:45,600 --> 00:01:48,160 42 00:01:48,160 --> 00:01:48,960 Високий. 43 00:01:48,960 --> 00:01:50,270 >> Трохи стеків. 44 00:01:50,270 --> 00:01:53,980 Це, знову ж, прийшли на вікторині 0, так що ви повинні бути супер комфортно з ним. 45 00:01:53,980 --> 00:01:57,210 Але для стеків, ми просимо вас запам'ятати стек тарілок. 46 00:01:57,210 --> 00:01:59,940 І це буде перший в, останній з. 47 00:01:59,940 --> 00:02:02,272 Таким чином, ми стек речі в стеку, а потім 48 00:02:02,272 --> 00:02:04,980 якщо ми намагаємося взяти щось off-- які ми називаємо з'являються від 49 00:02:04,980 --> 00:02:06,581 stack-- ми відірватися від вершини. 50 00:02:06,581 --> 00:02:09,289 І якщо ми хочемо, щоб покласти щось в стеку, ми називаємо це штовхає. 51 00:02:09,289 --> 00:02:13,170 Таким чином, це завжди буде ростуть знизу, як стек лотків. 52 00:02:13,170 --> 00:02:14,540 Високий. 53 00:02:14,540 --> 00:02:17,607 >> Ми бачили стеки реалізовані з обох зв'язані списки і масиви. 54 00:02:17,607 --> 00:02:19,440 Якщо ви реалізуєте з масивами, ви хочете 55 00:02:19,440 --> 00:02:22,350 щоб переконатися, що стежити за І розмір, і пропускна здатність. 56 00:02:22,350 --> 00:02:27,540 Так розмір буде струм Кількість речей у вашому стеку, 57 00:02:27,540 --> 00:02:32,900 у той час як потужність складає загальна кількість речей, які ви можете зберігати в стеці. 58 00:02:32,900 --> 00:02:34,220 Прохолодний. 59 00:02:34,220 --> 00:02:35,767 >> Дуже точно так само, у нас є черги. 60 00:02:35,767 --> 00:02:38,850 У цьому випадку, замість того, щоб думати про стек тарілок, думаю лінії. 61 00:02:38,850 --> 00:02:40,697 Це буде перший в перший вийшов. 62 00:02:40,697 --> 00:02:42,780 Так що, якщо ви шикуються в чергу за то в магазині, 63 00:02:42,780 --> 00:02:46,920 ми сподіваємося, що людина вперше в Лінія буде допомогти в першу чергу. 64 00:02:46,920 --> 00:02:49,350 >> Замість того щоб сказати поштовх і поп, як ми робимо для стека, 65 00:02:49,350 --> 00:02:52,000 ми просто говоримо в чергу і виведення з. 66 00:02:52,000 --> 00:02:54,970 І знову ж, якщо ви реалізації цього з масивом, 67 00:02:54,970 --> 00:02:56,720 ми повинні стежити за не тільки розмір 68 00:02:56,720 --> 00:03:02,390 і потужність, але також керівник, який буде передня нашої черги. 69 00:03:02,390 --> 00:03:03,010 Прохолодний. 70 00:03:03,010 --> 00:03:05,770 Будь-які питання по кожній із, що? 71 00:03:05,770 --> 00:03:06,320 Високий. 72 00:03:06,320 --> 00:03:07,640 Рухаємося далі. 73 00:03:07,640 --> 00:03:08,564 >> ОК, хеш-таблиці. 74 00:03:08,564 --> 00:03:10,605 Ось де він починає отримати дійсно цікаво. 75 00:03:10,605 --> 00:03:14,150 Таким чином, хеш-таблиця один реалізація асоціативного масиву. 76 00:03:14,150 --> 00:03:16,700 Тому в основному те, що відбулося є у нас є все це вхід, 77 00:03:16,700 --> 00:03:18,750 і ми даємо його в хеш функція, що говорить, 78 00:03:18,750 --> 00:03:21,840 ОК, це десь в хеш-таблиця належить. 79 00:03:21,840 --> 00:03:24,860 >> Так найпростішому хеш-функції що ми бачили тільки говорять, 80 00:03:24,860 --> 00:03:28,170 ОК, припустимо, ми хочемо, щоб покласти рядки в нашій таблиці. хеш 81 00:03:28,170 --> 00:03:30,870 І дійсно проста ідея може бути, щоб сказати, добре, 82 00:03:30,870 --> 00:03:34,350 давайте просто Сортувати за Перша буква цього слова. 83 00:03:34,350 --> 00:03:37,570 Таким чином, ви можете бачити тут, ми беремо банан, покласти його через хеш-функції, 84 00:03:37,570 --> 00:03:40,190 і він каже, гей, що повинні піти на індекс 1. 85 00:03:40,190 --> 00:03:45,120 >> Таким чином, ми може істотно думати про хеш Таблиця в купу різних відра. 86 00:03:45,120 --> 00:03:49,880 І кожен з цих ковшів відбувається щоб тримати голову пов'язаного списку. 87 00:03:49,880 --> 00:03:55,030 І в цьому зв'язаний список, де ми можемо фактично поклав різні частини даних. 88 00:03:55,030 --> 00:03:57,820 >> Так дайвінг трохи більше в хеш-функции, ось 89 00:03:57,820 --> 00:03:59,870 приклад я просто описано, де ми просто говоримо, 90 00:03:59,870 --> 00:04:02,460 ОК, взяти перші букву слова, і ми 91 00:04:02,460 --> 00:04:03,990 збирається розбиратися у відрах. 92 00:04:03,990 --> 00:04:08,490 Так, імовірно, там буде 26 відра, по одному для кожної літери алфавіту. 93 00:04:08,490 --> 00:04:10,090 Чому це не велика хеш-функція? 94 00:04:10,090 --> 00:04:13,461 Що робить цей не-ідеал? 95 00:04:13,461 --> 00:04:13,960 Так. 96 00:04:13,960 --> 00:04:15,790 >> АУДИТОРІЯ: Ви збираєтеся мати зіткнень. 97 00:04:15,790 --> 00:04:16,390 >> Ханна Блумберг: Так, саме так. 98 00:04:16,390 --> 00:04:18,000 Ви будете мати зіткнень. 99 00:04:18,000 --> 00:04:18,954 Так ось одна річ. 100 00:04:18,954 --> 00:04:21,620 І ми будемо говорити про те, як ми можемо виправити зіткнень всього секунду. 101 00:04:21,620 --> 00:04:23,980 Ще одна проблема з цим Зокрема хеш-функція 102 00:04:23,980 --> 00:04:25,980 є те, що наша відрізняється Ковші буде 103 00:04:25,980 --> 00:04:28,960 досить різко різних розмірів. 104 00:04:28,960 --> 00:04:33,840 >> Ми знаємо, що є багато більше слів, які починаються з А, ніж X, 105 00:04:33,840 --> 00:04:38,980 таким чином, ми будемо мати дуже незбалансовані відра в нашій таблиці. хеш 106 00:04:38,980 --> 00:04:40,050 Прохолодний. 107 00:04:40,050 --> 00:04:41,340 Так що, так, давайте повернемося до точка зіткнення. 108 00:04:41,340 --> 00:04:42,900 Що нам робити, якщо є зіткнення? 109 00:04:42,900 --> 00:04:44,490 >> У нас є кілька різних варіантів. 110 00:04:44,490 --> 00:04:47,600 Таким чином, одна, тому припустимо, що ми намагаємося покласти ягоду в нашу хеш-таблиці. 111 00:04:47,600 --> 00:04:50,370 І ми бачимо, о, ми хочемо щоб покласти його в індекс 1, 112 00:04:50,370 --> 00:04:52,070 але банан вже живе там. 113 00:04:52,070 --> 00:04:53,110 Що ми будемо робити? 114 00:04:53,110 --> 00:04:54,560 У нас є два основних варіанти. 115 00:04:54,560 --> 00:04:58,050 >> Номер один, ми можемо говорити, ОК, немає ніякої кімнати в індексі 1, 116 00:04:58,050 --> 00:05:03,210 але давайте просто тримати дивлячись через поки ми не можемо знайти інший відкрите місце. 117 00:05:03,210 --> 00:05:08,490 Так ми будемо казати, добре, давайте покласти його в місці 3. 118 00:05:08,490 --> 00:05:09,240 Це один варіант. 119 00:05:09,240 --> 00:05:11,470 Це називається лінійне зондування. 120 00:05:11,470 --> 00:05:15,500 >> І другий варіант говорить, добре, добре, давайте просто зробити кожен з цих відер 121 00:05:15,500 --> 00:05:17,470 бути керівники пов'язаних списків. 122 00:05:17,470 --> 00:05:21,910 І це нормально, якщо є більше ніж однієї речі у відро. 123 00:05:21,910 --> 00:05:23,820 Ми просто збираємося додайте його на фронт. 124 00:05:23,820 --> 00:05:26,032 Тому тут можна побачити, добре, коли ми вставили ягоду, ми 125 00:05:26,032 --> 00:05:28,240 просто взяв банан, вид штовхнув його на трохи 126 00:05:28,240 --> 00:05:29,842 і кинув ягоду там. 127 00:05:29,842 --> 00:05:31,050 І це теж абсолютно нормально. 128 00:05:31,050 --> 00:05:32,830 Це називається окремий ланцюжка. 129 00:05:32,830 --> 00:05:38,100 Ви можете думати про це як щось на зразок масив з керівників в пов'язаних списках. 130 00:05:38,100 --> 00:05:41,950 Будь-які питання по хеш столи, хеш-функції? 131 00:05:41,950 --> 00:05:44,290 Високий. 132 00:05:44,290 --> 00:05:45,470 >> Дерева і намагається. 133 00:05:45,470 --> 00:05:47,287 Таким чином, дерево якої-небудь структури даних 134 00:05:47,287 --> 00:05:49,453 в якому є свого роду ієрархії або якийсь 135 00:05:49,453 --> 00:05:51,247 ранжирування ваших різних об'єктів. 136 00:05:51,247 --> 00:05:53,580 І це стане супер ясно, коли ми бачимо приклад. 137 00:05:53,580 --> 00:05:56,960 І ми побачили спроб, а з хеш-таблиць, в pset5-- 138 00:05:56,960 --> 00:06:00,700 які, знову ж, абсолютно справедлива гра для цього quiz-- як інший даних 139 00:06:00,700 --> 00:06:03,110 структури, які ми можемо зберігати різні речі. 140 00:06:03,110 --> 00:06:06,782 У разі словника, ми зберегли купу слів. 141 00:06:06,782 --> 00:06:08,240 Отже, давайте поглянемо на деякі дерева. 142 00:06:08,240 --> 00:06:10,190 Таким чином, це є прикладом дерева. 143 00:06:10,190 --> 00:06:13,105 Він має таку структуру, ієрархічної структури, яка, 144 00:06:13,105 --> 00:06:15,920 де ви можете побачити, що це 1 вузол у верхній 145 00:06:15,920 --> 00:06:20,750 є якась рангу вище 2 і 3, які перевищують 4, 5, і 6 і 7, 146 00:06:20,750 --> 00:06:22,860 які вище 8 і 9. 147 00:06:22,860 --> 00:06:25,210 Так що все, що ми розуміємо під дерево, так що ви можете просто вид 148 00:06:25,210 --> 00:06:26,660 зображення у вашій голові. 149 00:06:26,660 --> 00:06:29,050 >> Тепер у нас є кілька більш спеціалізовані дерева. 150 00:06:29,050 --> 00:06:31,070 Так одним із прикладів є бінарне дерево. 151 00:06:31,070 --> 00:06:33,290 І бінарне дерево, знову ж таки, буде 152 00:06:33,290 --> 00:06:37,040 структура даних з якоюсь Ієрархія, але кожен з вузлів 153 00:06:37,040 --> 00:06:38,650 може мати не більше двох дітей. 154 00:06:38,650 --> 00:06:41,530 Ось де слово походить від довічного. 155 00:06:41,530 --> 00:06:43,410 Таким чином, це приклад двійкового дерева. 156 00:06:43,410 --> 00:06:45,720 Так що це менше, категорія дерев. 157 00:06:45,720 --> 00:06:48,960 >> Тепер давайте ще більш конкретно і говорити про бінарної trees-- бінарного пошуку 158 00:06:48,960 --> 00:06:51,310 дерева, а. 159 00:06:51,310 --> 00:06:56,430 Так от ідея не тільки робить кожен вузол має не більше двох дітей, 160 00:06:56,430 --> 00:07:00,300 але всі діти в лівий будуть менше 161 00:07:00,300 --> 00:07:03,450 і всі діти в Праворуч буде більше. 162 00:07:03,450 --> 00:07:05,890 Так помітити в тільки наш бінарне дерево, є 163 00:07:05,890 --> 00:07:08,650 Немає зв'язку між числами. 164 00:07:08,650 --> 00:07:12,990 Але в нашому бінарного пошуку дерево, ми бачимо, ОК, ось 44. 165 00:07:12,990 --> 00:07:17,080 І кожен номер зліва 44 є менше, і всі вправо 166 00:07:17,080 --> 00:07:17,920 більше. 167 00:07:17,920 --> 00:07:20,130 >> І, що тримає на кожному рівень дерева. 168 00:07:20,130 --> 00:07:24,810 Таким чином, тут, це менше, ніж 22, і це більше, ніж 22. 169 00:07:24,810 --> 00:07:26,390 І це бінарне дерево пошуку. 170 00:07:26,390 --> 00:07:28,900 Чому ми думаємо, що називається бінарного дерева пошуку? 171 00:07:28,900 --> 00:07:30,651 Який алгоритм це вам нагадує? 172 00:07:30,651 --> 00:07:31,650 АУДИТОРІЯ: Двійковий пошук. 173 00:07:31,650 --> 00:07:32,480 Ханна Блумберг: Двійковий пошук. 174 00:07:32,480 --> 00:07:35,150 Тому що, якщо ви шукаєте Номер, в цьому дереві, 175 00:07:35,150 --> 00:07:38,800 в кожній точці, ви можете просто постукати від половини дерева, який є великим. 176 00:07:38,800 --> 00:07:43,800 І так, що відбувається, щоб дати нам щось що виглядає як бінарний пошук. 177 00:07:43,800 --> 00:07:45,870 Які-небудь питання? 178 00:07:45,870 --> 00:07:47,570 Гаразд, круто. 179 00:07:47,570 --> 00:07:48,560 >> Гаразд, намагається. 180 00:07:48,560 --> 00:07:49,657 Улюбленець. 181 00:07:49,657 --> 00:07:51,990 Так що це приклад того, що ми бачили купу в класі. 182 00:07:51,990 --> 00:07:54,710 І знову ж, це просто ще один так, що ми можемо зберігати дані. 183 00:07:54,710 --> 00:07:57,530 У разі словнику, знову ж, це просто буде струни. 184 00:07:57,530 --> 00:08:00,870 Отже, давайте подивимося, що це насправді Схоже, на дещо нижчому рівні. 185 00:08:00,870 --> 00:08:03,690 >> Отже, давайте поглянемо в одному вузлі в синтаксичного дерева. 186 00:08:03,690 --> 00:08:07,532 І ми бачимо, гаразд, там збирається бути логічне і вузол, 187 00:08:07,532 --> 00:08:09,170 покажчик на вузол. 188 00:08:09,170 --> 00:08:11,400 І ми бачимо, що Логічне називається is_word. 189 00:08:11,400 --> 00:08:13,490 Так по суті, це збирається відповідати 190 00:08:13,490 --> 00:08:16,750 в цих маленьких трикутників, які каже, якщо ви отримали тут, 191 00:08:16,750 --> 00:08:19,100 Ви знайшли повне слово. 192 00:08:19,100 --> 00:08:23,670 >> Ми знаємо, що "Турінг" над ось повний слово, 193 00:08:23,670 --> 00:08:28,030 в той час як тільки Т-У-Р не словом тому що ми не бачимо, що мало дельту. 194 00:08:28,030 --> 00:08:31,440 І, що мало дельта, знову ж, відповідає цьому is_word, 195 00:08:31,440 --> 00:08:34,480 цей логічний is_word. 196 00:08:34,480 --> 00:08:36,320 І тоді у нас є масив дітей. 197 00:08:36,320 --> 00:08:39,860 Таким чином, на кожному рівні, ви є конкретний вузол, 198 00:08:39,860 --> 00:08:42,470 і що вузол вказує на Масив весь алфавіт. 199 00:08:42,470 --> 00:08:44,346 >> Таким чином, ви можете бачити, знову ж таки, в цьому picture-- Я 200 00:08:44,346 --> 00:08:48,170 буде тримати стрибки назад і forth--, що цей масив у верхній 201 00:08:48,170 --> 00:08:51,640 має купу різних вузли, що надходять від нього. 202 00:08:51,640 --> 00:08:57,140 Він має 26 або 27, якщо ви хочете включити додатковий символ. 203 00:08:57,140 --> 00:09:01,320 І це дає нам спосіб зберігання наших даних 204 00:09:01,320 --> 00:09:04,450 таким чином, що можна подивитися на що ви можете подивитися супер швидко. 205 00:09:04,450 --> 00:09:06,650 Що таке час пошуку для синтаксичного дерева? 206 00:09:06,650 --> 00:09:07,970 >> АУДИТОРІЯ: [нерозбірливо]. 207 00:09:07,970 --> 00:09:08,300 >> Ханна Блумберг: Так. 208 00:09:08,300 --> 00:09:09,550 У теорії, це постійна часу. 209 00:09:09,550 --> 00:09:13,230 Це тільки збирається бути розмір Слово, яке ви хочете подивитися. 210 00:09:13,230 --> 00:09:15,950 Навіть якщо ми додамо Zillion більше слів у нашій синтаксичного дерева, 211 00:09:15,950 --> 00:09:18,160 він не збирається, щоб взяти нас більше, щоб визначити, 212 00:09:18,160 --> 00:09:19,690 якщо дане слово в синтаксичного дерева. 213 00:09:19,690 --> 00:09:21,412 Так що це дійсно приємно. 214 00:09:21,412 --> 00:09:23,697 >> АУДИТОРІЯ: чи тільки вам ініціалізувати цей масив? 215 00:09:23,697 --> 00:09:24,780 Ви пропустили точку або два. 216 00:09:24,780 --> 00:09:26,130 Ви можете просто поговорити про що на секунду? 217 00:09:26,130 --> 00:09:26,680 >> Ханна Блумберг: Звичайно, абсолютно. 218 00:09:26,680 --> 00:09:27,590 Гарне питання. 219 00:09:27,590 --> 00:09:31,140 Питання було, ми є масив, що це 220 00:09:31,140 --> 00:09:34,180 матиме вузол зірки, як на відміну від просто вузла, вірно? 221 00:09:34,180 --> 00:09:35,180 Прохолодний. 222 00:09:35,180 --> 00:09:37,990 Так ось те, що ми говоримо, це наш масив це просто 223 00:09:37,990 --> 00:09:40,035 буде покажчиками на інші масиви. 224 00:09:40,035 --> 00:09:42,910 Так що це essentially-- його вид відчуває, як зв'язаний список таким чином 225 00:09:42,910 --> 00:09:46,620 де кожен з цих дітей просто вказують на наступний вузол. 226 00:09:46,620 --> 00:09:49,030 >> І те, як ми насправді визначити, гей, добре, 227 00:09:49,030 --> 00:09:52,320 ми повторний через весь Слово, це слово в словнику, 228 00:09:52,320 --> 00:09:54,476 ми просто перевірити цю is_word. 229 00:09:54,476 --> 00:09:55,100 Велике питання. 230 00:09:55,100 --> 00:09:55,675 Так. 231 00:09:55,675 --> 00:09:56,216 АУДИТОРІЯ: ОК. 232 00:09:56,216 --> 00:09:57,470 Так що ж середу для синтаксичного дерева? 233 00:09:57,470 --> 00:09:58,386 >> Ханна Блумберг: Звичайно. 234 00:09:58,386 --> 00:10:01,852 Так під час виконання для синтаксичного дерева для пошук буде постійна часу. 235 00:10:01,852 --> 00:10:04,310 Так що це просто збирається бути кількість букв в слові. 236 00:10:04,310 --> 00:10:06,310 Це не залежить від Розмір словника 237 00:10:06,310 --> 00:10:09,510 або розмір структури даних. 238 00:10:09,510 --> 00:10:12,170 Так от трохи більш простий приклад. 239 00:10:12,170 --> 00:10:15,430 >> У цьому випадку, ви можете бачити, що слово кажан в словнику 240 00:10:15,430 --> 00:10:18,900 і у вас є зум, але ви не їсти щось на зразок зоопарку. 241 00:10:18,900 --> 00:10:20,050 Як би ми зробити зоопарк? 242 00:10:20,050 --> 00:10:24,276 Як додати зоопарк до нашого словник, на наш синтаксичного дерева? 243 00:10:24,276 --> 00:10:24,776 Так. 244 00:10:24,776 --> 00:10:27,014 >> АУДИТОРІЯ: Зробіть is_word вірно для [нерозбірливо]. 245 00:10:27,014 --> 00:10:27,930 Ханна Блумберг: Добре. 246 00:10:27,930 --> 00:10:31,731 Таким чином, ми б сказати, Z-O-O, а потім ми б хочете перевірити цю коробку від а. 247 00:10:31,731 --> 00:10:32,230 Відмінно. 248 00:10:32,230 --> 00:10:35,160 249 00:10:35,160 --> 00:10:37,930 Давайте порівняємо дуже коротко намагається проти хеш-таблиці. 250 00:10:37,930 --> 00:10:39,770 Намагається дійсно здорово тому що, як ми вже говорили, 251 00:10:39,770 --> 00:10:41,610 вони забезпечують постійної часу пошуку. 252 00:10:41,610 --> 00:10:44,285 Але величезний мінус це вони величезний. 253 00:10:44,285 --> 00:10:46,160 Ви можете отримати почуття, навіть дивлячись на нього, 254 00:10:46,160 --> 00:10:48,454 що збирається взяти величезна кількість пам'яті. 255 00:10:48,454 --> 00:10:50,620 Так вони збираються бути набагато більше, ніж хеш-таблиці, 256 00:10:50,620 --> 00:10:52,270 але вони збираються, щоб дати нам набагато швидше раз підстановки. 257 00:10:52,270 --> 00:10:54,478 Так що начебто вашої компроміс, то, що ви дбаєте про, 258 00:10:54,478 --> 00:10:57,350 будь то швидкість або пам'ять. 259 00:10:57,350 --> 00:11:02,251 Будь-які питання по кожній із, що, всі структури даних C. 260 00:11:02,251 --> 00:11:02,750 Гарний. 261 00:11:02,750 --> 00:11:03,250 ДОБРЕ. 262 00:11:03,250 --> 00:11:07,322 Ми збираємося, щоб перейти на трохи трохи веб-розробки з Марією. 263 00:11:07,322 --> 00:11:08,280 МАРІЯ ZLATKOVA: Прекрасний. 264 00:11:08,280 --> 00:11:09,036 ДОБРЕ. 265 00:11:09,036 --> 00:11:10,380 >> Ханна Блумберг: Ви можете використовувати свій ноутбук. 266 00:11:10,380 --> 00:11:11,255 >> МАРІЯ ZLATKOVA: Ніцца. 267 00:11:11,255 --> 00:11:13,320 268 00:11:13,320 --> 00:11:14,912 ОК здорово. 269 00:11:14,912 --> 00:11:17,120 Як ми рухаємося в даний час на веб розвитку, ми трохи поговорили 270 00:11:17,120 --> 00:11:20,680 про зміну прав доступу файлів і каталогів 271 00:11:20,680 --> 00:11:24,190 так що вони можуть бути доступні іншим користувачам, до світу, 272 00:11:24,190 --> 00:11:28,640 і так, що ми можемо побачити, як в основному ми можемо передати їх 273 00:11:28,640 --> 00:11:32,600 коли ми розробляємо такі речі, як веб-сайти що ми в основному робили. 274 00:11:32,600 --> 00:11:36,400 >> Таким чином, ми побачили команду CHMOD, що зміна режиму, в основному. 275 00:11:36,400 --> 00:11:39,300 Це команда Linux і він змінює права доступу 276 00:11:39,300 --> 00:11:40,410 об'єктів файлової системи. 277 00:11:40,410 --> 00:11:43,370 І об'єкт файлової системи просто каталог, файл, 278 00:11:43,370 --> 00:11:46,810 все, що ви можете змінити дозволу. 279 00:11:46,810 --> 00:11:53,750 >> Таким чином, щоб побачити права доступу до файлів, ми набираємо команду Ls, список -l. 280 00:11:53,750 --> 00:11:56,500 І коли ми вводимо, що ми зазвичай бачите деякі права 281 00:11:56,500 --> 00:11:59,660 які виглядають ніби як це перед ім'ям каталогу. 282 00:11:59,660 --> 00:12:01,260 Так г відноситься до каталогу. 283 00:12:01,260 --> 00:12:05,930 І тоді у нас є три тріади, що в основному 284 00:12:05,930 --> 00:12:11,675 см дозволів або користувач, група, чи світ. 285 00:12:11,675 --> 00:12:16,490 >> Типи дозволів, що ми можемо Тобто для цих трьох груп людей 286 00:12:16,490 --> 00:12:20,830 або R для читання, W для писати і виконувати на х. 287 00:12:20,830 --> 00:12:23,650 І ми можемо мати ті, для група і світ, а також. 288 00:12:23,650 --> 00:12:26,940 Складна річ, що іноді коли ми введіть команду CHMOD, 289 00:12:26,940 --> 00:12:32,960 ми повинні ввести деяку кількість яка складалася з трьох бітів. 290 00:12:32,960 --> 00:12:36,990 Таким чином, ми могли б зробити, як 777 і що в принципі 291 00:12:36,990 --> 00:12:40,450 послався на додану вартість кожного з цих тріад 292 00:12:40,450 --> 00:12:45,060 бо г буде ставитися до 4, ж б см 2, а х буде ставитися до 1, 293 00:12:45,060 --> 00:12:50,020 тому, коли підсумовуються, кожне з чисел зійде з загальним числом 294 00:12:50,020 --> 00:12:52,750 кумулятивного значення між 0 і 7. 295 00:12:52,750 --> 00:12:55,150 Таким чином, ми також могли б 0 для будь-яких дозволів на все. 296 00:12:55,150 --> 00:12:58,200 І, що б дати нам в основному дозволів для кожної користувача, 297 00:12:58,200 --> 00:13:00,450 група, чи світ. 298 00:13:00,450 --> 00:13:02,620 Будь-які питання з цього так далеко? 299 00:13:02,620 --> 00:13:05,331 >> АУДИТОРІЯ: Ви сказали, читав, було 4? 300 00:13:05,331 --> 00:13:06,164 МАРІЯ ZLATKOVA: Так. 301 00:13:06,164 --> 00:13:07,568 АУДИТОРІЯ: [нерозбірливо]. 302 00:13:07,568 --> 00:13:08,504 Ханна Блумберг: Так. 303 00:13:08,504 --> 00:13:11,790 АУДИТОРІЯ: А потім, додавши всі ті інші будуть вказувати номер. 304 00:13:11,790 --> 00:13:12,665 МАРІЯ ZLATKOVA: Так. 305 00:13:12,665 --> 00:13:14,970 Так. 306 00:13:14,970 --> 00:13:17,810 Ці великі питання. 307 00:13:17,810 --> 00:13:20,490 Прекрасний. 308 00:13:20,490 --> 00:13:25,340 Далі, ми стрибнули в HTML і а трохи більше про веб-розробці. 309 00:13:25,340 --> 00:13:27,990 Так просто означає, HTML Мова розмітки гіпертексту. 310 00:13:27,990 --> 00:13:30,460 І це розмітка мова, яка є стандартним 311 00:13:30,460 --> 00:13:32,720 що він використовується для створення веб-сторінок. 312 00:13:32,720 --> 00:13:35,750 >> Це називається мова розмітки бо це насправді не складено. 313 00:13:35,750 --> 00:13:40,310 Це не говорить, як якийсь код повинен бути виконані або що-небудь подібне. 314 00:13:40,310 --> 00:13:44,800 Це просто окреслює і описує, як веб- 315 00:13:44,800 --> 00:13:46,840 сторінка повинна бути створена з кожним з її елементів 316 00:13:46,840 --> 00:13:48,460 і як вони повинні виглядати для користувача. 317 00:13:48,460 --> 00:13:53,090 318 00:13:53,090 --> 00:13:57,110 >> Деякі з HTML-теги, що ми підійшов є наступні. 319 00:13:57,110 --> 00:14:00,500 Всі наші HTML документів почав з DOCTYPE HTML. 320 00:14:00,500 --> 00:14:02,550 Тоді у нас завжди є HTML тег. 321 00:14:02,550 --> 00:14:03,930 У нас є голова і тіло. 322 00:14:03,930 --> 00:14:07,890 І важливо, що HTML-є це свого роду вкладеної структури 323 00:14:07,890 --> 00:14:09,280 тому що це дуже ясно. 324 00:14:09,280 --> 00:14:13,200 І тоді стає ясно, коли ми потрібно відкрити і насправді близькі міток. 325 00:14:13,200 --> 00:14:18,400 І ми завжди повинні закрити мітки, які ми відкрили. 326 00:14:18,400 --> 00:14:23,170 >> І тут у нас є деякі види речей вперед, які ми хочемо мати. 327 00:14:23,170 --> 00:14:26,580 Отже, ми маємо, наприклад, назва CS50. 328 00:14:26,580 --> 00:14:31,980 І тоді ми насправді можна пов'язати таблиці стилів 329 00:14:31,980 --> 00:14:34,030 який визначає, як ми стиль наш сайт. 330 00:14:34,030 --> 00:14:35,650 Це CSS. 331 00:14:35,650 --> 00:14:39,320 Ми збираємося йти по ньому в Наступна пара слайдів, а також. 332 00:14:39,320 --> 00:14:42,580 >> У тілі, ми ставимо деякі класи і ідентифікатори. 333 00:14:42,580 --> 00:14:45,860 І як нагадування, знову ж, Ідентифікатори унікальні і класи 334 00:14:45,860 --> 00:14:47,390 можуть бути віднесені до кількох пунктів. 335 00:14:47,390 --> 00:14:52,110 І, що просто означає, що ми можемо використовувати класи і ідентифікатори 336 00:14:52,110 --> 00:14:55,860 в іншій structures-- Так, Наприклад, в CSS файлів або стилю 337 00:14:55,860 --> 00:15:00,940 sheets-- звернутися до конкретних елементів і в основному говорять, що ми хочемо, щоб стиль 338 00:15:00,940 --> 00:15:03,280 або створити певний елемент в якійсь особливим чином. 339 00:15:03,280 --> 00:15:06,440 І ми говоримо їм їх ідентифікатори і класи. 340 00:15:06,440 --> 00:15:09,870 І ми можемо також звернутися до різні речі по тегам, а також, 341 00:15:09,870 --> 00:15:13,830 але ідентифікатори і класи просто дати нам деякі Універсальність і що конкретно ми 342 00:15:13,830 --> 00:15:15,850 хочу звернутися до. 343 00:15:15,850 --> 00:15:19,620 >> Так що приклад. 344 00:15:19,620 --> 00:15:22,730 Ми можемо, знову ж таки, в межах файл CSS, де ми 345 00:15:22,730 --> 00:15:25,770 хочу, щоб визначити деякі style-- так кольори, шрифти, 346 00:15:25,770 --> 00:15:30,340 тощо that-- ми можемо визначити стиль для тіла. 347 00:15:30,340 --> 00:15:32,640 Так що б визначити його на весь тега тіла. 348 00:15:32,640 --> 00:15:36,160 Але тоді ми можемо також визначити стиль для #title. 349 00:15:36,160 --> 00:15:40,390 І знову, хештегом відноситься до нашого ID і крапка ставиться до нашого класу. 350 00:15:40,390 --> 00:15:44,760 >> І тоді для .info, ми можна також встановити деякі атрибути. 351 00:15:44,760 --> 00:15:49,750 І знову, коли ми повернемося, у нас були Клас називається інформація і наше посвідчення назву. 352 00:15:49,750 --> 00:15:53,422 І ми бачимо, що ми називаємо їм #title і .info. 353 00:15:53,422 --> 00:15:55,380 АУДИТОРІЯ: Ви хочете сказати, хештегом [? прийняти мене? ?] 354 00:15:55,380 --> 00:15:55,725 МАРІЯ ZLATKOVA: Вибачте? 355 00:15:55,725 --> 00:15:58,120 АУДИТОРІЯ: Ви хочете сказати, хештегом [? прийняти мене? ?] 356 00:15:58,120 --> 00:16:01,400 МАРІЯ ZLATKOVA: хештегом означає ідентифікатор, так #title 357 00:16:01,400 --> 00:16:07,890 ставиться до того, що елементи Тобто цей ідентифікатор, званий титул. 358 00:16:07,890 --> 00:16:10,735 І тоді точка відноситься до класу. 359 00:16:10,735 --> 00:16:14,590 Так .info відноситься до цього елементу оскільки він має інформації про клас. 360 00:16:14,590 --> 00:16:15,090 Так. 361 00:16:15,090 --> 00:16:17,905 >> АУДИТОРІЯ: Чому вас виділити їх в HTML? 362 00:16:17,905 --> 00:16:20,985 Чому ви кажете, певні речі Ідентифікатори і деякі речі клас? 363 00:16:20,985 --> 00:16:22,610 МАРІЯ ZLATKOVA: Це просто до you-- 364 00:16:22,610 --> 00:16:24,151 Ханна Блумберг: Повторіть питання. 365 00:16:24,151 --> 00:16:25,370 МАРІЯ ZLATKOVA: О, вибачте. 366 00:16:25,370 --> 00:16:29,480 Чому ми виділяємо певні елементи як ідентифікатори та інші елементи як класи? 367 00:16:29,480 --> 00:16:34,760 Це тільки тому, що дійсно часто вибір дизайну. 368 00:16:34,760 --> 00:16:38,520 Це дає вам багато Універсальність в тому 369 00:16:38,520 --> 00:16:43,250 змозі сказати, що я хочу це певний елемент щоб цей ідентифікатор, тому що вони хочуть 370 00:16:43,250 --> 00:16:45,300 щоб зробити багато речей, з ним, і я тільки 371 00:16:45,300 --> 00:16:50,010 хочу, щоб визначити стиль, певний стиль або колір все для цього елемента. 372 00:16:50,010 --> 00:16:52,630 І те, як зробити, що просто даючи йому ID. 373 00:16:52,630 --> 00:16:55,060 >> І потім, якщо я хочу, щоб мати пара різних предметів 374 00:16:55,060 --> 00:16:58,940 маючи того, що замість відбувається і установка their-- 375 00:16:58,940 --> 00:17:03,840 а не робити це за допомогою тег, бо тег буде 376 00:17:03,840 --> 00:17:07,369 встановити осередок для всієї тега кожен раз використовується цей тег, 377 00:17:07,369 --> 00:17:09,740 Ви можете встановити клас декількох елементів. 378 00:17:09,740 --> 00:17:15,109 А потім просто відкрити цей клас і сказати, Я хочу, щоб розробити Такий клас шлях. 379 00:17:15,109 --> 00:17:17,579 >> І знову, клас може бути кілька різних предметів 380 00:17:17,579 --> 00:17:21,150 і ідентифікатор повинен бути унікальним. 381 00:17:21,150 --> 00:17:21,849 Великі питання. 382 00:17:21,849 --> 00:17:25,339 Будь-які інші питання? 383 00:17:25,339 --> 00:17:26,220 ОК, дивовижний. 384 00:17:26,220 --> 00:17:30,680 385 00:17:30,680 --> 00:17:35,330 Знову ж, це, як ці селектори які посилаються на CSS, з хештегом, 386 00:17:35,330 --> 00:17:40,031 з точки, або без нічого для присвоєння стиль якийсь тег, 387 00:17:40,031 --> 00:17:40,530 як тіло. 388 00:17:40,530 --> 00:17:43,500 389 00:17:43,500 --> 00:17:47,860 І тут у нас є спільне Синтаксис, як це робиться. 390 00:17:47,860 --> 00:17:52,830 391 00:17:52,830 --> 00:17:55,680 >> Щоб повторити деякі краще практики для HTML і CSS, 392 00:17:55,680 --> 00:17:59,170 ми повинні, знову ж, закрити всі HTML-теги, які ми відкриваємо. 393 00:17:59,170 --> 00:18:03,950 І те, що ми рекомендували вам зробити для ваших кінцевих проектів, 394 00:18:03,950 --> 00:18:10,560 а також для CS50 фінансів, щоб зробити Переконайтеся, що всі ваші HTML перевіряє. 395 00:18:10,560 --> 00:18:12,920 І це буде зроблено з W3 валідатора. 396 00:18:12,920 --> 00:18:16,940 >> І тоді те, що ми зробили, і те, що ми рекомендуємо це робити 397 00:18:16,940 --> 00:18:19,790 відокремлює стиль, так CSS від розмітки HTML. 398 00:18:19,790 --> 00:18:24,210 Тому все, що відноситься до того, як Ваша сторінка буде виглядати візуально 399 00:18:24,210 --> 00:18:27,330 і як він збирається бути змінені повинен йти в CSS документа. 400 00:18:27,330 --> 00:18:33,880 І тоді ваша розмітка кажучи, як все у відношенні один одного, HTML і 401 00:18:33,880 --> 00:18:37,550 і що повинно пройти всередину Ваші HTML документи. 402 00:18:37,550 --> 00:18:38,590 Які-небудь питання? 403 00:18:38,590 --> 00:18:39,226 Ммм. 404 00:18:39,226 --> 00:18:42,628 >> АУДИТОРІЯ: Що саме відбувається на с перевірки сторінки 405 00:18:42,628 --> 00:18:47,945 коли ми підтвердження HTML-що [нерозбірливо] створив? 406 00:18:47,945 --> 00:18:49,850 >> МАРІЯ ZLATKOVA: Так что-- думаю, що ви. 407 00:18:49,850 --> 00:18:53,020 Так що ж відбувається на сторінці з перевіркою 408 00:18:53,020 --> 00:18:55,570 і чому ми повинні це робити? 409 00:18:55,570 --> 00:18:59,180 В принципі, ми повинні зробити що тому що багато разів, ваш браузер, 410 00:18:59,180 --> 00:19:01,390 якщо ви не встигли закрити тег або щось подібне, 411 00:19:01,390 --> 00:19:05,680 Ваш браузер як і раніше буде відобразити сторінку і, можливо, все ще працюють, 412 00:19:05,680 --> 00:19:10,840 але краще практика, щоб переконатися, що Ви, знову ж, закриті всі теги, 413 00:19:10,840 --> 00:19:13,190 що всі ваші елементи так, що вони повинні бути, 414 00:19:13,190 --> 00:19:18,470 і в основному, що це сама конвенцій, які збережені в пам'яті. 415 00:19:18,470 --> 00:19:21,970 >> Це, знову ж, тільки що ви повинні 416 00:19:21,970 --> 00:19:24,040 вчитися, щоб робити, на відміну від того 417 00:19:24,040 --> 00:19:25,696 sloppier код тощо. 418 00:19:25,696 --> 00:19:26,688 Так. 419 00:19:26,688 --> 00:19:27,680 Ой, вибачте. 420 00:19:27,680 --> 00:19:29,221 Я думав, ви були піднімаючи руку. 421 00:19:29,221 --> 00:19:31,240 АУДИТОРІЯ: Ні, я був просто [нерозбірливо]. 422 00:19:31,240 --> 00:19:33,800 >> МАРІЯ ZLATKOVA: ОК. 423 00:19:33,800 --> 00:19:34,640 >> АУДИТОРІЯ: Спасибо. 424 00:19:34,640 --> 00:19:36,181 >> МАРІЯ ZLATKOVA: Звичайно, спасибі. 425 00:19:36,181 --> 00:19:41,680 Отже, ще раз, відправляючись на те, як інформація передається 426 00:19:41,680 --> 00:19:44,630 і моделі комунікації для передачі інформації. 427 00:19:44,630 --> 00:19:45,730 TCP / IP. 428 00:19:45,730 --> 00:19:48,600 TCP просто означає передач Протокол управління та ІС 429 00:19:48,600 --> 00:19:51,260 відноситься до інтернет-протоколу. 430 00:19:51,260 --> 00:19:54,275 І тільки відноситься до спосіб дані передаються. 431 00:19:54,275 --> 00:19:59,470 432 00:19:59,470 --> 00:20:02,710 >> Якщо у нас є деякі дані, які потрібно доставлений you-- так 433 00:20:02,710 --> 00:20:06,770 Ви робите запит на певний сервер. 434 00:20:06,770 --> 00:20:09,800 Наприклад, коли ми намагаються отримати доступ до cs50.net, 435 00:20:09,800 --> 00:20:12,420 ми робимо запит до CS50-сервер і ми 436 00:20:12,420 --> 00:20:14,720 бачити, що ми хочемо отримати це свого роду інформації. 437 00:20:14,720 --> 00:20:19,294 І потім на основі цього протоколу про те, як доставляється ця інформація, 438 00:20:19,294 --> 00:20:21,460 сервер дає інформацію назад до нас, клієнт. 439 00:20:21,460 --> 00:20:25,590 І тоді ми можемо дивитися інформація для цієї сторінки 440 00:20:25,590 --> 00:20:26,390 а потім використати його. 441 00:20:26,390 --> 00:20:29,300 442 00:20:29,300 --> 00:20:33,050 >> Отже передачі гіпертексту це просто ще один протокол або набір 443 00:20:33,050 --> 00:20:37,470 конвенцій, визначає, як веб-браузер і веб-сервер 444 00:20:37,470 --> 00:20:38,890 повинні спілкуватися. 445 00:20:38,890 --> 00:20:43,730 І все це покласти разом, HTTP, знову ж таки, 446 00:20:43,730 --> 00:20:50,960 просто визначає, як визначив це гіпертекстова в HTML, що ми працювали його, 447 00:20:50,960 --> 00:20:59,500 як це повинно бути доставлені до вас і як це дані, які доставлені до вас 448 00:20:59,500 --> 00:21:00,540 стає для вас. 449 00:21:00,540 --> 00:21:05,990 >> І ось чому, якщо ви, хлопці, пам'ятайте, з класу, у нас було багато запитів 450 00:21:05,990 --> 00:21:08,970 і у нас було багато синтаксису для цих запитів, що ми 451 00:21:08,970 --> 00:21:10,250 збираюся перейти на прямо зараз. 452 00:21:10,250 --> 00:21:13,270 Отже, ще раз, коли ми відправляємо запит до сервера, 453 00:21:13,270 --> 00:21:15,920 ми повинні визначити пару речей. 454 00:21:15,920 --> 00:21:18,520 Таким чином, ми повинні знайти тип запиту, що ми встановлюємо. 455 00:21:18,520 --> 00:21:22,180 І знову, у нас є, наприклад, GET є одним з видів методу 456 00:21:22,180 --> 00:21:25,290 що ми маємо в нашій прохання. 457 00:21:25,290 --> 00:21:31,710 >> І тоді HTTP / 1.1 тільки протокол, який ми використовуємо в даний час. 458 00:21:31,710 --> 00:21:34,224 459 00:21:34,224 --> 00:21:36,890 Велику частину часу, що відбувається протоколом, який ми використовуємо. 460 00:21:36,890 --> 00:21:40,290 Так що, якщо у вас є питання так на вікторині. 461 00:21:40,290 --> 00:21:43,120 Ось конвенції що у нас так далеко. 462 00:21:43,120 --> 00:21:46,580 >> Обернена коса риска відноситься до якоїсь з речей, які ми проханням. 463 00:21:46,580 --> 00:21:52,810 Потім господар являє собою, наприклад, в цьому так, що ми намагаємося йти в google.com. 464 00:21:52,810 --> 00:21:57,070 Так що це значення для господаря. 465 00:21:57,070 --> 00:21:59,330 Це тип запиту які можуть бути відправлені. 466 00:21:59,330 --> 00:22:02,890 >> І тоді тип відповіді, який міг направляється знову, грунтуючись на цьому протоколі, 467 00:22:02,890 --> 00:22:05,190 знову, HTTP / 1.1. 468 00:22:05,190 --> 00:22:07,150 Так що це HTTP-версія знову. 469 00:22:07,150 --> 00:22:09,730 200 ОК це тільки код стану. 470 00:22:09,730 --> 00:22:12,860 І, що ОК це просто фраза на основі цього коду стану. 471 00:22:12,860 --> 00:22:15,520 >> І тоді Content-Type відноситься до типу 472 00:22:15,520 --> 00:22:20,295 що повертається до вас, що це для цієї веб-сторінці, що ви отримуєте 473 00:22:20,295 --> 00:22:22,570 і що у вашому браузері може надати згодом. 474 00:22:22,570 --> 00:22:24,401 І це текст / HTML. 475 00:22:24,401 --> 00:22:26,660 >> АУДИТОРІЯ: Що означає 1,1? 476 00:22:26,660 --> 00:22:29,910 >> МАРІЯ ZLATKOVA: Це просто Версія of-- ой, що ж 1.1 увазі? 477 00:22:29,910 --> 00:22:37,075 Це просто версії, HTTP версія протоколу, який ми використовуємо. 478 00:22:37,075 --> 00:22:37,700 Велике питання. 479 00:22:37,700 --> 00:22:38,366 Інші питання? 480 00:22:38,366 --> 00:22:41,222 481 00:22:41,222 --> 00:22:45,080 >> АУДИТОРІЯ: Не могли б ви підвести підсумки Content-Type дуже швидко? 482 00:22:45,080 --> 00:22:48,150 >> МАРІЯ ZLATKOVA: Так що це те, що сервер. 483 00:22:48,150 --> 00:22:51,020 тип information--, що тип вмісту були питання. 484 00:22:51,020 --> 00:22:53,400 Так що був тип Інформація, яку Ви отримаєте назад 485 00:22:53,400 --> 00:22:58,200 з сервера, типу дані, які браузер може потім 486 00:22:58,200 --> 00:23:00,604 надати, що ви використовуєте. 487 00:23:00,604 --> 00:23:03,020 АУДИТОРІЯ: Це те, що це Протокол кажу вам робити? 488 00:23:03,020 --> 00:23:03,390 МАРІЯ ZLATKOVA: Вибачте? 489 00:23:03,390 --> 00:23:05,380 АУДИТОРІЯ: Це те, що кажуть, що протокол? 490 00:23:05,380 --> 00:23:05,915 МАРІЯ ZLATKOVA: The protocol-- 491 00:23:05,915 --> 00:23:07,940 АУДИТОРІЯ: --what Content-Type є або что-- 492 00:23:07,940 --> 00:23:12,040 МАРІЯ ZLATKOVA: Протокол заснований on-- що протокол кажу вам? 493 00:23:12,040 --> 00:23:16,070 Ось тільки шлях що цієї інформації 494 00:23:16,070 --> 00:23:18,610 був доставлений до вас на основі від того, яка з протоколу 495 00:23:18,610 --> 00:23:21,830 Чи є ця інформація отримала поставляється до вас. 496 00:23:21,830 --> 00:23:23,500 Чи має це сенс то? 497 00:23:23,500 --> 00:23:28,320 498 00:23:28,320 --> 00:23:30,070 Ханна Блумберг: Ви може думати про протоколі 499 00:23:30,070 --> 00:23:33,300 а a-- Я думаю, професор Малан описав його 500 00:23:33,300 --> 00:23:36,910 в класі, ніби як a-- це як еквівалент людського квітірованія. 501 00:23:36,910 --> 00:23:44,930 Скажіть, як, гей, я запит, і я знає, як поводитися HTTP версії 1.1. 502 00:23:44,930 --> 00:23:48,770 І тоді сервер говорить, О, добре, я-- і обидва існують. 503 00:23:48,770 --> 00:23:51,337 Я також знаю, як мати справу з HTTP / 1.1. 504 00:23:51,337 --> 00:23:53,170 І я збираюся дати Ви підтримуєте деякий контент. 505 00:23:53,170 --> 00:23:56,230 У цьому випадку, це буде до типу тексту / HTML. 506 00:23:56,230 --> 00:23:58,480 Так що це свого роду просто спосіб з них для communicating-- 507 00:23:58,480 --> 00:24:00,480 >> МАРІЯ ZLATKOVA: Це просто підтверджують, що ви 508 00:24:00,480 --> 00:24:03,290 і слідуючи тій же Протокол і що обидва 509 00:24:03,290 --> 00:24:06,620 клієнт і так server-- Ваш браузер і server-- 510 00:24:06,620 --> 00:24:09,280 начебто знаю, що ти про що говорить і є 511 00:24:09,280 --> 00:24:12,557 Конвенція для проходження в даних. 512 00:24:12,557 --> 00:24:17,022 >> АУДИТОРІЯ: Так Content-Type пройшов проби Тип змісту тексту / html-- це 513 00:24:17,022 --> 00:24:18,521 окрема частина того ж повідомлення? 514 00:24:18,521 --> 00:24:20,509 Або це частина скажімо, 200? 515 00:24:20,509 --> 00:24:22,010 Чи говорить їм, що 200 або is-- 516 00:24:22,010 --> 00:24:23,770 >> МАРІЯ ZLATKOVA: 200 каже, що все це пройшло нормально. 517 00:24:23,770 --> 00:24:27,900 І тоді тип вмісту роду Окрема частина того ж повідомлення, 518 00:24:27,900 --> 00:24:34,274 і заявивши, що річ, яку я Повертається має цей тип тексту / HTML. 519 00:24:34,274 --> 00:24:35,690 Це просто давати більше інформації. 520 00:24:35,690 --> 00:24:38,700 521 00:24:38,700 --> 00:24:39,995 Є що додати? 522 00:24:39,995 --> 00:24:40,495 ДОБРЕ. 523 00:24:40,495 --> 00:24:43,590 524 00:24:43,590 --> 00:24:46,530 >> Будь-які інші питання з цього приводу? 525 00:24:46,530 --> 00:24:48,370 Високий. 526 00:24:48,370 --> 00:24:54,070 Таким чином, деякі інші HTTP статуси, які ми могли б отримати на додаток до 200 OK, 527 00:24:54,070 --> 00:24:59,500 ті, що ми бачили, може бути, коли- можливо, багато 403 і 404. 528 00:24:59,500 --> 00:25:05,190 Так 404, якщо ви намагаєтеся Доступ те, що не існує. 529 00:25:05,190 --> 00:25:10,460 Так, наприклад, у вашому CS50 Фінанси psets, 530 00:25:10,460 --> 00:25:15,640 якщо ви були рендеринга quote.html і ви не повинні файл, 531 00:25:15,640 --> 00:25:19,740 але замість цього ви були quote.php, що призведе до 404 Not Found 532 00:25:19,740 --> 00:25:21,600 бо файл не може існувати. 533 00:25:21,600 --> 00:25:25,690 >> Для 403 заборонено, що належить до повноважень. 534 00:25:25,690 --> 00:25:31,150 Так що, якщо який-небудь файл не доступний для читання Світ, ви можете отримати 403 повернувся. 535 00:25:31,150 --> 00:25:34,510 536 00:25:34,510 --> 00:25:37,810 Деякі інші, які ви можете get-- 301, переїхав на постійне проживання; 537 00:25:37,810 --> 00:25:41,300 302, Знайдено; 304, модифікований; 400, Bad Request; 538 00:25:41,300 --> 00:25:47,330 а потім Внутрішня помилка сервера для 500 і 503, Служба недоступна. 539 00:25:47,330 --> 00:25:48,140 Так. 540 00:25:48,140 --> 00:25:51,490 >> АУДИТОРІЯ: чи будемо ми очікувати запам'ятовувати всі ці статуси? 541 00:25:51,490 --> 00:25:53,739 МАРІЯ ZLATKOVA: Я б їм на шпаргалку. 542 00:25:53,739 --> 00:25:55,146 [Сміх] 543 00:25:55,146 --> 00:25:59,954 АУДИТОРІЯ: Ми, як очікується, знаю, що викликає кожен? 544 00:25:59,954 --> 00:26:00,995 МАРІЯ ZLATKOVA: Чи є вони? 545 00:26:00,995 --> 00:26:03,870 Ханна Блумберг: Для тих, які ми запустити into-- тому питання was-- 546 00:26:03,870 --> 00:26:08,010 МАРІЯ ZLATKOVA: Чи є вони, як очікується, знаю, що кожен з них статусу 547 00:26:08,010 --> 00:26:09,330 Коди можуть бути викликані? 548 00:26:09,330 --> 00:26:13,240 Таким чином, для тих, які ми використовували і побіг у, я б сказав, так. 549 00:26:13,240 --> 00:26:16,610 Таким чином, ми безумовно бачили 200 ОК та лекції його в psets. 550 00:26:16,610 --> 00:26:19,071 Ми бачили 403, 404. 551 00:26:19,071 --> 00:26:20,550 Для решти? 552 00:26:20,550 --> 00:26:22,690 >> Ханна Блумберг: Я б кажуть 500 здається чесної гри. 553 00:26:22,690 --> 00:26:23,330 >> МАРІЯ ZLATKOVA: 500, так. 554 00:26:23,330 --> 00:26:24,246 >> Ханна Блумберг: Так. 555 00:26:24,246 --> 00:26:27,006 Просто загальний зміст що викликає їх. 556 00:26:27,006 --> 00:26:28,880 А також просто це Імена, ви можете вид 557 00:26:28,880 --> 00:26:32,890 як зробити обґрунтоване припущення як до чого насправді викликало їх. 558 00:26:32,890 --> 00:26:36,919 Наприклад, рух постійно, ймовірно, файл був переміщений назавжди. 559 00:26:36,919 --> 00:26:39,328 >> АУДИТОРІЯ: Але на попередній іспит, було так 560 00:26:39,328 --> 00:26:41,050 як ви очікуєте, щоб ми відповісти? 561 00:26:41,050 --> 00:26:42,883 >> Ханна Блумберг: Це стоїть нуль очок. 562 00:26:42,883 --> 00:26:45,870 Питання про 418 на чайнику технічно статус HTTP, 563 00:26:45,870 --> 00:26:47,090 але це коштувало нуль очок. 564 00:26:47,090 --> 00:26:48,320 Очевидно, що ви не Очікується, знаю їх. 565 00:26:48,320 --> 00:26:49,670 >> АУДИТОРІЯ: Це справжній? 566 00:26:49,670 --> 00:26:51,970 >> Ханна Блумберг: Це справжній Один з них, але це нічого не значить. 567 00:26:51,970 --> 00:26:52,700 Це просто жарт. 568 00:26:52,700 --> 00:26:55,480 569 00:26:55,480 --> 00:26:57,010 Інтернет люди веселі. 570 00:26:57,010 --> 00:26:59,680 >> МАРІЯ ZLATKOVA: Великі питання, хлопці. 571 00:26:59,680 --> 00:27:01,452 Будь-які інші питання? 572 00:27:01,452 --> 00:27:04,891 >> АУДИТОРІЯ: Що внутрішня помилка сервера? 573 00:27:04,891 --> 00:27:06,640 МАРІЯ ZLATKOVA: Внутрішня Помилка сервера тільки 574 00:27:06,640 --> 00:27:10,050 означає, що ви були не в змозі спілкуватися 575 00:27:10,050 --> 00:27:13,400 з сервером з деяких причин. 576 00:27:13,400 --> 00:27:15,400 Так що це не обов'язково те, що має відношення до 577 00:27:15,400 --> 00:27:19,170 з клієнтом або щось подібне. 578 00:27:19,170 --> 00:27:22,170 Я не знаю жодного конкретного прикладу що ми перейшли, щоб пояснити, 579 00:27:22,170 --> 00:27:23,000 але так. 580 00:27:23,000 --> 00:27:23,250 >> Ханна Блумберг: Звичайно. 581 00:27:23,250 --> 00:27:25,625 Так, наприклад, як давайте що ви працювали на колажів 582 00:27:25,625 --> 00:27:30,440 і сервер Google пішов на деякі Причина, відключення електрики, скажемо так. 583 00:27:30,440 --> 00:27:33,400 Це було б внутрішній сервер помилка або якийсь of-- подобається вам 584 00:27:33,400 --> 00:27:34,630 не хотів би отримати відповідь назад. 585 00:27:34,630 --> 00:27:35,260 >> МАРІЯ ZLATKOVA: Так. 586 00:27:35,260 --> 00:27:37,050 Це просто, коли ви не в змозі спілкуватися 587 00:27:37,050 --> 00:27:40,299 з сервером для якоїсь причини, бо з нього йде вниз або який-небудь іншої причини. 588 00:27:40,299 --> 00:27:44,430 589 00:27:44,430 --> 00:27:47,690 Так стрибати в PHP. 590 00:27:47,690 --> 00:27:49,930 PHP, на відміну від HTML, є мова програмування. 591 00:27:49,930 --> 00:27:54,820 І ми почали використовувати його, тому що це дуже корисно для веб-розробки. 592 00:27:54,820 --> 00:27:56,940 >> Ми вперше використовував його в CS50 фінансів. 593 00:27:56,940 --> 00:28:02,240 І це в основному допомагає нам принести разом це розмітки, дизайн, 594 00:28:02,240 --> 00:28:07,460 і як ми насправді використовувати інформацію для відображення речі на веб-сторінці. 595 00:28:07,460 --> 00:28:11,870 Так PHP саме по собі означає PHP Препроцесор гіпертексту, 596 00:28:11,870 --> 00:28:15,360 так що це рекурсивна backnorym сам по собі. 597 00:28:15,360 --> 00:28:22,330 І відкриття теги для PHP ми ліва і права стрілки з питальними знаками 598 00:28:22,330 --> 00:28:23,060 і PHP. 599 00:28:23,060 --> 00:28:25,890 >> Таким чином, ми вже бачили купу нього. 600 00:28:25,890 --> 00:28:29,150 Тепер, ми тільки збираємося переходити деякі з основних речей, про нього. 601 00:28:29,150 --> 00:28:32,280 Так з PHP, змінної імена яких починаються з знаку долара. 602 00:28:32,280 --> 00:28:35,660 Ми не вказати, знову ж, змінна типу більше. 603 00:28:35,660 --> 00:28:38,450 Так само, як ми зробили з C, ми не повинні цього робити. 604 00:28:38,450 --> 00:28:41,670 605 00:28:41,670 --> 00:28:44,490 >> Ми можемо зробити купу різних матеріал зі змінними. 606 00:28:44,490 --> 00:28:47,750 Ми можемо поставити їх разом шляхом об'єднання їх 607 00:28:47,750 --> 00:28:52,900 з точковою нотації, яка ми не могли б зробити в C знову. 608 00:28:52,900 --> 00:28:57,490 Знову ж таки, у нас є трохи більше гнучкості з PHP в умовах змінних. 609 00:28:57,490 --> 00:29:00,080 Знову ж таки, ми не маємо основну функцію. 610 00:29:00,080 --> 00:29:03,370 >> І PHP інтерпретується на відміну від компіляції 611 00:29:03,370 --> 00:29:09,970 Отже, як же зробити, ми для файлів C., ми не повинні робити, що для PHP. 612 00:29:09,970 --> 00:29:15,440 Але, швидше, так, що мова виконується сама по собі, вона інтерпретується. 613 00:29:15,440 --> 00:29:18,550 А потім слабо типізований просто означає, що ми 614 00:29:18,550 --> 00:29:22,490 не потрібно вказувати змінну тип і типи змінних 615 00:29:22,490 --> 00:29:25,415 розуміються під час виконання. 616 00:29:25,415 --> 00:29:29,185 >> АУДИТОРІЯ: Але те, що зробив тобі маю на увазі точка об'єднання? 617 00:29:29,185 --> 00:29:30,060 МАРІЯ ZLATKOVA: Звичайно. 618 00:29:30,060 --> 00:29:37,660 Коли ми хочемо навести together-- так що якщо у нас були деякі змінну, 619 00:29:37,660 --> 00:29:41,500 мав значення 3 і у нас був інший змінна, мав значення рядка, 620 00:29:41,500 --> 00:29:45,920 ми могли б змінні разом поставивши крапку між ними 621 00:29:45,920 --> 00:29:46,970 та об'єднання їх. 622 00:29:46,970 --> 00:29:52,670 Або ми могли б створити Мінлива називається ім'я 623 00:29:52,670 --> 00:29:56,900 і поклав його разом об'єднання двох рядків. 624 00:29:56,900 --> 00:30:00,680 >> Так що, якщо у нас був подвійний рядок у котирування і ставимо крапку після нього, 625 00:30:00,680 --> 00:30:03,660 і тоді ми мали інший рядок, що буде створити рядок в цілому. 626 00:30:03,660 --> 00:30:05,242 >> АУДИТОРІЯ: ОК. 627 00:30:05,242 --> 00:30:06,450 МАРІЯ ЛАТВІЯ: Був, що ясно? 628 00:30:06,450 --> 00:30:07,099 АУДИТОРІЯ: Так. 629 00:30:07,099 --> 00:30:07,890 МАРІЯ ZLATKOVA: ОК. 630 00:30:07,890 --> 00:30:08,766 Так. 631 00:30:08,766 --> 00:30:11,146 >> АУДИТОРІЯ: Коли ви говорите, інтерпретувати, що складено, 632 00:30:11,146 --> 00:30:14,160 Ви говорите про вас не повинні бути також конкретні, коли 633 00:30:14,160 --> 00:30:15,906 Що стосується PHP в порівнянні з C? 634 00:30:15,906 --> 00:30:18,085 635 00:30:18,085 --> 00:30:20,710 МАРІЯ ZLATKOVA: Коли ми говоримо, інтерпретується як протилежність складений, 636 00:30:20,710 --> 00:30:21,850 що ми маємо на увазі? 637 00:30:21,850 --> 00:30:26,220 Так це означає, що ми не повинні виконувані файли для запуску PHP. 638 00:30:26,220 --> 00:30:29,870 Це означає, що він працює, як вона йде. 639 00:30:29,870 --> 00:30:31,650 Чи має це сенс? 640 00:30:31,650 --> 00:30:32,495 Трохи більше. 641 00:30:32,495 --> 00:30:34,620 Ханна Блумберг: Таким чином, ви може думати перекладача 642 00:30:34,620 --> 00:30:38,980 а іншою програмою, яка відповідає для переходу по рядках через PHP 643 00:30:38,980 --> 00:30:42,745 а насправді його виконання, на відміну до складання все це вниз в двійковий. 644 00:30:42,745 --> 00:30:46,050 Це насправді не означає нічого про те, як конкретні, ми повинні бути. 645 00:30:46,050 --> 00:30:49,470 Ми як і раніше повинні бути точними, і не забули коми, і переконайтеся, що 646 00:30:49,470 --> 00:30:51,470 у вас є знак долара, тощо. 647 00:30:51,470 --> 00:30:52,240 Гарне питання. 648 00:30:52,240 --> 00:30:53,115 >> МАРІЯ ZLATKOVA: Так. 649 00:30:53,115 --> 00:30:55,590 Так порядково, а на відміну від C з файлами, 650 00:30:55,590 --> 00:30:59,100 ми повинні зробити все фінал перш, ніж ми насправді можемо запустити його. 651 00:30:59,100 --> 00:31:00,360 Це головна відмінність. 652 00:31:00,360 --> 00:31:02,655 Але, знову ж, ми не можемо дійсно менш специфічні. 653 00:31:02,655 --> 00:31:08,760 654 00:31:08,760 --> 00:31:13,950 Так масиви в PHP представляють насправді наказав карту. 655 00:31:13,950 --> 00:31:17,550 >> Так масиви асоційованих значень клавішах. 656 00:31:17,550 --> 00:31:23,350 Два способи оголосити Масив, на основі цього синтаксису, 657 00:31:23,350 --> 00:31:26,380 ми можемо бути більш явним кажучи у нас є масив 658 00:31:26,380 --> 00:31:31,010 і у нас є цей key1, який відображається це значення1, ключ2, який відображає значення2. 659 00:31:31,010 --> 00:31:34,660 Або ми можемо просто створити масив який містить сам значення 660 00:31:34,660 --> 00:31:38,360 і потім клавіші розуміти в дорозі. 661 00:31:38,360 --> 00:31:40,000 Будь-які питання з цього приводу? 662 00:31:40,000 --> 00:31:42,500 >> Аудиторія: що б ключі бути у другому прикладі? 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 >> МАРІЯ ZLATKOVA: Наприклад, це просто ключі в це не обов'язково 667 00:31:55,780 --> 00:31:56,550 зробити різницю. 668 00:31:56,550 --> 00:32:01,720 Вони просто визначити, як ви можете використовувати значення всередині нього. 669 00:32:01,720 --> 00:32:08,660 Так що, якщо у нас був Еогеасп петля в PHP, що б 670 00:32:08,660 --> 00:32:14,760 дозволяють нам пройти через всі значення, ми можемо пройти через всі значення, 671 00:32:14,760 --> 00:32:19,570 навіть якщо б ми мали чи не визначили певний ключ в сайту 672 00:32:19,570 --> 00:32:20,820 попередня синтаксис. 673 00:32:20,820 --> 00:32:23,460 >> Таким чином, навіть з такого роду масиву, ми могли б ще 674 00:32:23,460 --> 00:32:26,260 є цикл по кожному елементу який проходить через кожен 675 00:32:26,260 --> 00:32:31,240 значень в ключі масиву. 676 00:32:31,240 --> 00:32:36,180 Так синтаксисі Еогеасп цикл, ми починаємо з масивом. 677 00:32:36,180 --> 00:32:38,720 678 00:32:38,720 --> 00:32:43,900 Ця змінна $ обр наша поточна масив що ми визначили в попередньому слайді 679 00:32:43,900 --> 00:32:47,550 як значення, які буквально йде через кожне із значень, 680 00:32:47,550 --> 00:32:50,122 не зважаючи на погоду у нас був ключ чи ні. 681 00:32:50,122 --> 00:32:53,080 І тоді ми можемо зробити щось з значення всередині цикл по кожному елементу. 682 00:32:53,080 --> 00:32:57,730 Отже, ще раз, якби ми мали масив ось так от created-- 683 00:32:57,730 --> 00:33:03,270 тому у нас є ключ Foo і вартості бар, ключ Baz і вартість qux-- 684 00:33:03,270 --> 00:33:09,730 ми можемо мати цикл по кожному елементу, що проходить через масив визначенні ключа 685 00:33:09,730 --> 00:33:11,900 а потім зробити щось з ключем, і / або значення. 686 00:33:11,900 --> 00:33:15,980 Але ми не завжди обов'язково повинні мати Еогеасп петлі, що 687 00:33:15,980 --> 00:33:19,410 проходить через масив як ключовий карті до вартості. 688 00:33:19,410 --> 00:33:26,060 Ми можемо піти через Масив цикл по кожному елементу як значення. 689 00:33:26,060 --> 00:33:28,990 >> Ханна Блумберг: І я думаю, , Метою яких було на ваше запитання, то, що 690 00:33:28,990 --> 00:33:31,229 неявна індекс? 691 00:33:31,229 --> 00:33:31,895 АУДИТОРІЯ: Свого роду. 692 00:33:31,895 --> 00:33:32,240 МАРІЯ ZLATKOVA: Ой. 693 00:33:32,240 --> 00:33:33,406 Ханна Блумберг: Так, так. 694 00:33:33,406 --> 00:33:36,150 Так в основному, якщо ви не вкажете ключ, він буде 01. 695 00:33:36,150 --> 00:33:37,140 >> МАРІЯ ZLATKOVA: Так. 696 00:33:37,140 --> 00:33:41,718 Так само, як з C, це нуль індексується, якщо ви не вкажете ключ. 697 00:33:41,718 --> 00:33:42,384 АУДИТОРІЯ: Вибачте. 698 00:33:42,384 --> 00:33:43,827 Не могли б ви спробуйте говорити трохи голосніше? 699 00:33:43,827 --> 00:33:45,270 У мене трохи Біда слуху все. 700 00:33:45,270 --> 00:33:46,478 >> МАРІЯ ZLATKOVA: Мені так шкода. 701 00:33:46,478 --> 00:33:48,439 Так, звичайно. 702 00:33:48,439 --> 00:33:50,230 Так що ви хочете мені перейти на цей раз? 703 00:33:50,230 --> 00:33:51,680 Або this-- 704 00:33:51,680 --> 00:33:54,930 АУДИТОРІЯ: Так на попередній slide-- якщо ви могли б просто повернутися протягом однієї секунди. 705 00:33:54,930 --> 00:33:57,313 МАРІЯ ZLATKOVA: Звичайно, шкода. 706 00:33:57,313 --> 00:33:59,237 АУДИТОРІЯ: Таким чином, другий Масив тут не 707 00:33:59,237 --> 00:34:04,135 здається, мають значення для ключа, різновид [? причинно-наслідковий зв'язок. ?] 708 00:34:04,135 --> 00:34:05,343 МАРІЯ ZLATKOVA: Вірно, вірно. 709 00:34:05,343 --> 00:34:07,608 АУДИТОРІЯ: Так як це працює коли ви говорите, що це все або нічого. 710 00:34:07,608 --> 00:34:08,969 Для мене, який виглядає як а [? Foo?] Вже. 711 00:34:08,969 --> 00:34:10,093 >> МАРІЯ ZLATKOVA: Так, так. 712 00:34:10,093 --> 00:34:12,969 Отже, ще раз, це замовити карту в цьому сенсі 713 00:34:12,969 --> 00:34:15,639 що слід розуміти, Наприклад, покажчики 714 00:34:15,639 --> 00:34:20,159 Тут можна розуміти як 0, 1, 2, 3. 715 00:34:20,159 --> 00:34:25,929 Знову ж таки, це ті, що мають Індекси наш еквівалент 716 00:34:25,929 --> 00:34:28,980 мати ключі, відображені на цінностей. 717 00:34:28,980 --> 00:34:34,710 Так що, якщо наш ключ був 0-- вибачте. 718 00:34:34,710 --> 00:34:36,524 >> Ханна Блумберг: Ні, там крейда тут. 719 00:34:36,524 --> 00:34:36,929 Це насправді дуже приємно. 720 00:34:36,929 --> 00:34:37,460 >> МАРІЯ ZLATKOVA: Це здорово. 721 00:34:37,460 --> 00:34:38,260 ДОБРЕ. 722 00:34:38,260 --> 00:34:49,489 Отже, ще раз, $ обр 0 буде ключ до значення 1. 723 00:34:49,489 --> 00:34:51,138 0 буде ключем до значення 1. 724 00:34:51,138 --> 00:34:51,971 АУДИТОРІЯ: Я перепрошую. 725 00:34:51,971 --> 00:34:53,190 Це невидима. 726 00:34:53,190 --> 00:34:53,659 >> Ханна Блумберг: Гаразд, по фігу. 727 00:34:53,659 --> 00:34:54,980 Мел була погана ідея. 728 00:34:54,980 --> 00:34:58,030 Беру свої слова назад. 729 00:34:58,030 --> 00:35:01,425 Ви можете думати про ключах а 0 відображається в значення 1. 730 00:35:01,425 --> 00:35:02,300 МАРІЯ ZLATKOVA: Так. 731 00:35:02,300 --> 00:35:04,630 Таким чином, це 0, це 1, 2, 3. 732 00:35:04,630 --> 00:35:05,760 Вони можуть бути ваші ключі. 733 00:35:05,760 --> 00:35:10,020 Ви можете думати про них as-- так. 734 00:35:10,020 --> 00:35:12,740 Таким чином, замість того, ключах, вони 735 00:35:12,740 --> 00:35:17,180 ніби як зрозумів, індекси, починаючи з 0. 736 00:35:17,180 --> 00:35:21,630 737 00:35:21,630 --> 00:35:24,820 Мел не допоможе. 738 00:35:24,820 --> 00:35:25,722 Так. 739 00:35:25,722 --> 00:35:30,914 >> АУДИТОРІЯ: Для цикл по кожному елементу, якби ми хотіли, щоб переглянути, як цінність, 740 00:35:30,914 --> 00:35:33,245 це було б просто автоматично індекс 0? 741 00:35:33,245 --> 00:35:34,120 МАРІЯ ZLATKOVA: Так. 742 00:35:34,120 --> 00:35:35,745 Було б пройти кожне з значень. 743 00:35:35,745 --> 00:35:39,130 АУДИТОРІЯ: [нерозбірливо], як 0 або, що б просто зробити 0? 744 00:35:39,130 --> 00:35:43,710 >> МАРІЯ ZLATKOVA: Ви б сказати, як знак долара, а потім 745 00:35:43,710 --> 00:35:46,266 деякі ім'я змінної, значення. 746 00:35:46,266 --> 00:35:47,182 АУДИТОРІЯ: [нерозбірливо]. 747 00:35:47,182 --> 00:35:50,048 748 00:35:50,048 --> 00:35:50,964 МАРІЯ ZLATKOVA: Вибачте? 749 00:35:50,964 --> 00:35:52,839 АУДИТОРІЯ: На жаль, я просто намагаюся згадати. 750 00:35:52,839 --> 00:35:57,190 Як би ви, що якщо ви можете зробити це автоматично індексації просто 0 з? 751 00:35:57,190 --> 00:36:00,780 >> МАРІЯ ZLATKOVA: Так як би ви зробити це якщо у вас не було конкретних імен ключів? 752 00:36:00,780 --> 00:36:01,710 >> АУДИТОРІЯ: Так. 753 00:36:01,710 --> 00:36:07,820 >> МАРІЯ ZLATKOVA: Ви б просто define-- просто сказати собі, як якийсь ім'я. 754 00:36:07,820 --> 00:36:17,950 Так що у вашому psets, ви, хлопці, могли б пам'ятайте Еогеасп $ ряд як $ рядків, 755 00:36:17,950 --> 00:36:24,610 ми створили цей OURSELF $ ряд кажучи ми хочемо, щоб пройти через ряд, як $ рядів. 756 00:36:24,610 --> 00:36:28,360 Навіть якщо у нас не було це явно $ ряди визначені, 757 00:36:28,360 --> 00:36:31,990 ми могли б просто піти і кажуть, що це може бути наш ключ, 758 00:36:31,990 --> 00:36:33,615 і просто пройти через кожне з значень. 759 00:36:33,615 --> 00:36:37,295 760 00:36:37,295 --> 00:36:41,660 >> АУДИТОРІЯ: Так значення нової змінної ми створюємо для зберігання [нерозбірливо]? 761 00:36:41,660 --> 00:36:46,820 762 00:36:46,820 --> 00:36:49,990 >> МАРІЯ ZLATKOVA: Так що це не по суті це нова змінна. 763 00:36:49,990 --> 00:37:00,310 Це змінна, яка відноситься до всередині масиву до кожного з них. 764 00:37:00,310 --> 00:37:02,060 Ханна Блумберг: Це нова змінна ім'я. 765 00:37:02,060 --> 00:37:04,018 МАРІЯ ZLATKOVA: Так, це нова змінна ім'я, 766 00:37:04,018 --> 00:37:06,680 але це не inherently-- так. 767 00:37:06,680 --> 00:37:08,950 Це просто нова змінна що ви можете зробити це. 768 00:37:08,950 --> 00:37:12,680 Отже, як ми зробили $ Гребти, як $ рядків, рядків 769 00:37:12,680 --> 00:37:17,980 був нову змінну ім'я, що ми може створити в нашій цикл по кожному елементу. 770 00:37:17,980 --> 00:37:22,065 Це не повинен існувати до до цього. 771 00:37:22,065 --> 00:37:25,777 >> АУДИТОРІЯ: Не могли б ви пройти через Логіка для кожного, використовуючи приклад є? 772 00:37:25,777 --> 00:37:26,610 МАРІЯ ZLATKOVA: Ммм. 773 00:37:26,610 --> 00:37:31,240 774 00:37:31,240 --> 00:37:32,080 Ой, вибачте. 775 00:37:32,080 --> 00:37:33,780 Ось приклад. 776 00:37:33,780 --> 00:37:34,280 Звичайно. 777 00:37:34,280 --> 00:37:38,950 Таким чином, для кожного array-- так це означає, що піти на цей масив 778 00:37:38,950 --> 00:37:43,930 як ключ value--, що відбувається пройти через цей масив 779 00:37:43,930 --> 00:37:49,480 і спочатку піти і отримати Foo, то Ключ Foo і бар значення. 780 00:37:49,480 --> 00:37:51,570 І тоді на другому ітерація цикл, 781 00:37:51,570 --> 00:37:55,090 він збирається пройти і прийняти ключ Баз і значення QUX. 782 00:37:55,090 --> 00:38:00,512 І тоді ви можете зробити щось з будь-який з них або обидва з них. 783 00:38:00,512 --> 00:38:03,488 >> АУДИТОРІЯ: Так ідея мають ключові точки до значення, 784 00:38:03,488 --> 00:38:07,470 що ви в кінцевому підсумку доступу? 785 00:38:07,470 --> 00:38:10,680 >> МАРІЯ ZLATKOVA: Яка ідея мати ключ, який вказує на цінуєте? 786 00:38:10,680 --> 00:38:16,400 Це просто ще один конвенція, інший спосіб йти по масиву 787 00:38:16,400 --> 00:38:22,600 і бути в змозі отримати доступ до або ключ або значення або обидва, і використовувати їх. 788 00:38:22,600 --> 00:38:27,100 >> АУДИТОРІЯ: Яка роль для замовити що Еогеасп працює в? 789 00:38:27,100 --> 00:38:29,250 Так що, якщо ми повинні були додати елементи в масив пізніше, 790 00:38:29,250 --> 00:38:32,140 буде тих, бути першими називається в масиві Еогеасп, 791 00:38:32,140 --> 00:38:33,750 або це буде пізніше? 792 00:38:33,750 --> 00:38:37,770 >> МАРІЯ ZLATKOVA: Так що порядок, що Еогеасп 793 00:38:37,770 --> 00:38:39,210 цикл проходить через масив в? 794 00:38:39,210 --> 00:38:42,220 Він проходить через перший елемент останнього елемента, 795 00:38:42,220 --> 00:38:43,400 до останнього доданого елемента. 796 00:38:43,400 --> 00:38:48,020 Якщо ви додаєте елементи надалі, вони будуть бути accessed-- перші елементи будуть 797 00:38:48,020 --> 00:38:51,410 Доступ в якості першого Елементи масиву, 798 00:38:51,410 --> 00:38:57,620 і тоді ви б пройти через кожен з елементи якось в ordered-- 799 00:38:57,620 --> 00:39:02,930 НЕ наказав, але так, що вони були введені в масиві. 800 00:39:02,930 --> 00:39:06,855 >> АУДИТОРІЯ: Так нові елементи додані пізніше? 801 00:39:06,855 --> 00:39:10,680 Так вони added-- вони буду останні, в [? ітерації. ?] 802 00:39:10,680 --> 00:39:14,280 >> МАРІЯ ZLATKOVA: Нові елементи can-- в основному, коли нові елементи додаються, 803 00:39:14,280 --> 00:39:16,520 вони додаються в кінець масиву? 804 00:39:16,520 --> 00:39:17,632 >> АУДИТОРІЯ: Так. 805 00:39:17,632 --> 00:39:18,840 МАРІЯ ZLATKOVA: Я вірю в це. 806 00:39:18,840 --> 00:39:20,850 Так. 807 00:39:20,850 --> 00:39:24,330 А потім з цикл по кожному елементу, після того як ви додали нові елементи 808 00:39:24,330 --> 00:39:26,790 і ви йдете через них, нові елементи будуть 809 00:39:26,790 --> 00:39:30,930 бути accessed-- нового елемента, якщо це доданий останнім, він буде доступний в минулому. 810 00:39:30,930 --> 00:39:34,416 >> АУДИТОРІЯ: Чи можете ви просто дати приклад про щось, що б [нерозбірливо] 811 00:39:34,416 --> 00:39:37,404 з чимось зі значенням як [нерозбірливо] або вартості, 812 00:39:37,404 --> 00:39:38,910 подобається, як ви відформатувати це? 813 00:39:38,910 --> 00:39:39,785 >> МАРІЯ ZLATKOVA: Звичайно. 814 00:39:39,785 --> 00:39:42,340 815 00:39:42,340 --> 00:39:46,410 Чи можу я дати приклад того, що ми хотіли б зробити з цінність? 816 00:39:46,410 --> 00:39:52,440 Так що ви, хлопці, можете бути знайомі з є те, що ми пішли через масив 817 00:39:52,440 --> 00:39:55,380 і в основному друкуються кожен з елементів, 818 00:39:55,380 --> 00:40:00,910 наприклад, як частина впорядкований список або щось, що. 819 00:40:00,910 --> 00:40:02,674 Чи має це сенс або ми хочемо, метою яких 820 00:40:02,674 --> 00:40:04,340 АУДИТОРІЯ: Чи можемо ми роздрукувати ці значення поза межами дому? 821 00:40:04,340 --> 00:40:13,220 МАРІЯ ZLATKOVA: Так, ми могли б друкувати і то в основному тому, що значення $ в 822 00:40:13,220 --> 00:40:16,570 що конкретне значення, ми б друк значення всередині нього. 823 00:40:16,570 --> 00:40:20,150 Так що, якщо ми були в нашій першій ітерації з нього, і ми надруковані $ значення, 824 00:40:20,150 --> 00:40:23,775 ми б друкувати бар. 825 00:40:23,775 --> 00:40:27,020 >> АУДИТОРІЯ: Є також для петлі в PHP або просто Foreach петлі? 826 00:40:27,020 --> 00:40:30,430 >> МАРІЯ ZLATKOVA: Там це Також для петель в PHP. 827 00:40:30,430 --> 00:40:33,399 І їх логіка в основному так само, як те, що ви були раніше. 828 00:40:33,399 --> 00:40:34,690 АУДИТОРІЯ: Таким чином, її значення дорівнює нулю. 829 00:40:34,690 --> 00:40:35,090 МАРІЯ ZLATKOVA: Це як те ж саме. 830 00:40:35,090 --> 00:40:35,590 Так. 831 00:40:35,590 --> 00:40:37,747 АУДИТОРІЯ: Я просто хочу, щоб запитати. 832 00:40:37,747 --> 00:40:39,695 Тому, коли ви оголошуєте Масив, вам не потрібно 833 00:40:39,695 --> 00:40:42,617 сказати, що розмір він збирається бути, що означає, що ви можете просто 834 00:40:42,617 --> 00:40:44,417 додати і забрати елементи [нерозбірливо]. 835 00:40:44,417 --> 00:40:45,250 МАРІЯ ZLATKOVA: Так. 836 00:40:45,250 --> 00:40:45,750 Так. 837 00:40:45,750 --> 00:40:46,251 Точно. 838 00:40:46,251 --> 00:40:48,875 Коли ми оголошуємо масив, ми не потрібно говорити, що розмір це, 839 00:40:48,875 --> 00:40:51,022 таким чином, ми можемо просто додати елементи на це пізніше. 840 00:40:51,022 --> 00:40:55,075 841 00:40:55,075 --> 00:40:55,700 Ще питання? 842 00:40:55,700 --> 00:40:59,870 843 00:40:59,870 --> 00:41:05,950 Так чого PHP і HTML разом, те, що ми seen-- добре, 844 00:41:05,950 --> 00:41:15,130 Наприклад, у цьому прикладі, ми маємо HTML-форма, яка має поле введення. 845 00:41:15,130 --> 00:41:18,830 >> І поле введення просто назва і то він має кнопку Надіслати. 846 00:41:18,830 --> 00:41:26,040 І при натисканні Відправити Кнопка, на наш hello.php файлу, 847 00:41:26,040 --> 00:41:32,130 оскільки метод для форми отримати, ми можемо отримати доступ все, що знаходиться на ім'я 848 00:41:32,130 --> 00:41:40,360 цим отримати глобальну змінну, яка is-- синтаксис це $ _GET. 849 00:41:40,360 --> 00:41:44,520 І тоді ми можемо отримати доступ незалежно від користувальницький введення в цій формі для імені 850 00:41:44,520 --> 00:41:47,410 вказавши ім'я цього поля. 851 00:41:47,410 --> 00:41:51,480 852 00:41:51,480 --> 00:41:55,060 >> Будь-які інші питання або будь питання з цього конкретному прикладі? 853 00:41:55,060 --> 00:41:58,275 >> АУДИТОРІЯ: Де PHP? 854 00:41:58,275 --> 00:41:59,150 МАРІЯ ZLATKOVA: Тут. 855 00:41:59,150 --> 00:42:01,150 Так що це наш відкриваючого тега для PHP. 856 00:42:01,150 --> 00:42:01,530 >> АУДИТОРІЯ: Так, правильно. 857 00:42:01,530 --> 00:42:02,363 >> МАРІЯ ZLATKOVA: Так. 858 00:42:02,363 --> 00:42:05,320 859 00:42:05,320 --> 00:42:09,609 >> Ханна Блумберг? В: = це скорочення для цього є PHP і просто луна. 860 00:42:09,609 --> 00:42:10,150 АУДИТОРІЯ: Ой. 861 00:42:10,150 --> 00:42:10,720 МАРІЯ ZLATKOVA: Так, вибачте. 862 00:42:10,720 --> 00:42:12,040 Я повинен був зробити, що ясно. 863 00:42:12,040 --> 00:42:13,759 >> Ханна Блумберг: Друк. 864 00:42:13,759 --> 00:42:16,800 МАРІЯ ZLATKOVA: Це просто функція що дозволяє надрукувати що-небудь. 865 00:42:16,800 --> 00:42:19,795 866 00:42:19,795 --> 00:42:20,420 Велике питання. 867 00:42:20,420 --> 00:42:24,140 868 00:42:24,140 --> 00:42:25,495 Так going-- так. 869 00:42:25,495 --> 00:42:31,940 >> АУДИТОРІЯ: Чи буде достатньо трохи ручного кодування РНР і HTML 870 00:42:31,940 --> 00:42:33,450 на вікторині 1? 871 00:42:33,450 --> 00:42:36,310 872 00:42:36,310 --> 00:42:38,810 МАРІЯ ZLATKOVA: Там може бути неабияку кількість інтерпретації 873 00:42:38,810 --> 00:42:43,330 РНР і HTML, не обов'язково як величезна кількість кодування, 874 00:42:43,330 --> 00:42:46,960 якщо ви, можливо, доведеться написати цикл по кожному елементу, хоча, для петлі. 875 00:42:46,960 --> 00:42:49,790 Будь-який з петель, які ми покрив тут чесна гра. 876 00:42:49,790 --> 00:42:51,889 І це в основному це. 877 00:42:51,889 --> 00:42:53,430 Ханна Блумберг: Я був би готовий. 878 00:42:53,430 --> 00:42:57,010 Таким же чином, що ми просили вас написати купу функцій C на вікторині 0, 879 00:42:57,010 --> 00:42:59,766 Я би готовий зробити те ж саме в PHP і JavaScript. 880 00:42:59,766 --> 00:43:00,640 МАРІЯ ZLATKOVA: Так. 881 00:43:00,640 --> 00:43:03,210 Ханна Блумберг: Я б сказав, little-- як ми не 882 00:43:03,210 --> 00:43:06,251 зробить вас написати величезний HTML- сторінка просто, тому що це трохи 883 00:43:06,251 --> 00:43:08,240 втомлює, але ви, можливо, частини. 884 00:43:08,240 --> 00:43:09,310 Це абсолютно справедлива гра. 885 00:43:09,310 --> 00:43:11,082 Як невеликий HTML сторінки, повністю справедливим. 886 00:43:11,082 --> 00:43:11,623 АУДИТОРІЯ: ОК. 887 00:43:11,623 --> 00:43:13,814 Як щодо в JavaScript, а? 888 00:43:13,814 --> 00:43:14,730 Ханна Блумберг: Так. 889 00:43:14,730 --> 00:43:15,250 Справедлива гра в JavaScript. 890 00:43:15,250 --> 00:43:15,635 >> МАРІЯ ZLATKOVA: Так. 891 00:43:15,635 --> 00:43:16,801 Це повністю справедлива гра. 892 00:43:16,801 --> 00:43:19,280 Ханна Блумберг: Ми отримаємо до того, що в подібних 10 хвилин. 893 00:43:19,280 --> 00:43:23,750 >> МАРІЯ ZLATKOVA: SQL, знову ж таки, Мова Структурованих Запитів. 894 00:43:23,750 --> 00:43:28,651 Це в основному дозволяє управляти даними в реляційної бази даних управління 895 00:43:28,651 --> 00:43:29,150 Система. 896 00:43:29,150 --> 00:43:31,149 Це просто означає, в основному що у нас є десь 897 00:43:31,149 --> 00:43:37,980 зберігати деякі дані, які ми могли б використовувати в сайті або в іншому вигляді. 898 00:43:37,980 --> 00:43:42,190 І тоді у нас є запити, щоб отримати Інформація з нашої бази даних, 899 00:43:42,190 --> 00:43:44,320 або вставити в них інформацію. 900 00:43:44,320 --> 00:43:47,560 Багато спільного ones-- UPDATE, INSERT, SELECT і DELETE. 901 00:43:47,560 --> 00:43:50,790 >> Таким чином, для UPDATE, це синтаксис для відновлення даних у базі даних. 902 00:43:50,790 --> 00:43:53,330 903 00:43:53,330 --> 00:43:57,340 Оновлення цієї таблиці під назвою Таблиця кажучи SET, 904 00:43:57,340 --> 00:44:04,170 ми можемо встановити деякі значення у всіх Рядки в рівній чогось ще. 905 00:44:04,170 --> 00:44:09,410 Таким чином, ми можемо також вказати деякі конкретні Записи, які ми хочемо змінити 906 00:44:09,410 --> 00:44:11,240 і що може бути за допомогою ДЕ. 907 00:44:11,240 --> 00:44:16,380 І ми можемо вказати, що ми хочемо, щоб змінити кілька рядків, де будинок для, 908 00:44:16,380 --> 00:44:19,830 якби ми мали таблицю студентів і всі студенти мали будинок, 909 00:44:19,830 --> 00:44:24,890 так що ми тільки змінити деякі значення де будинок дорівнює кур'єром, 910 00:44:24,890 --> 00:44:25,430 наприклад. 911 00:44:25,430 --> 00:44:29,120 912 00:44:29,120 --> 00:44:31,800 >> Для INSERT, ми можемо вставити певні значення в таблицю. 913 00:44:31,800 --> 00:44:35,150 Так INSERT INTO таблиці, а потім значення, 914 00:44:35,150 --> 00:44:39,080 а потім в дужках ми вказуємо який цінує ви хочете вставити. 915 00:44:39,080 --> 00:44:43,220 Так INSERT в таблицю, col1 і col2, значення val1 і val2. 916 00:44:43,220 --> 00:44:48,930 Так що це вставляє в основному новий рядок в таблиця, що містить значення 1 і 2 917 00:44:48,930 --> 00:44:50,850 під колонами 1 і 2. 918 00:44:50,850 --> 00:44:54,760 >> А потім ми збираємося перейти на швидкий приклад того, як це виглядає 919 00:44:54,760 --> 00:44:56,310 як у нашій базі даних небагато. 920 00:44:56,310 --> 00:44:58,685 Але цей останній запит, який я думаю, що ми збираємося перейти, 921 00:44:58,685 --> 00:45:01,450 ВИБІР, він просто дозволяє нам для вибору даних з таблиці 922 00:45:01,450 --> 00:45:03,080 щоб, можливо, використовувати його згодом. 923 00:45:03,080 --> 00:45:05,830 І те, як ми робимо це, ми просто зберігати його в який-небудь змінної. 924 00:45:05,830 --> 00:45:07,780 І тоді, можливо, ми можемо використовувати його знову. 925 00:45:07,780 --> 00:45:10,260 >> Так ВИБІР зірка означає вибрати все. 926 00:45:10,260 --> 00:45:13,280 Це просто скорочення для вибору всіх. 927 00:45:13,280 --> 00:45:19,760 ВІД стіл, де ми шукаємо для деяких конкретних умов, 928 00:45:19,760 --> 00:45:22,290 так де колонка дорівнює -то, наприклад. 929 00:45:22,290 --> 00:45:24,410 Якщо ми просто хотіли, щоб вибрати все з-за столу, 930 00:45:24,410 --> 00:45:28,400 це просто вибирає всі стовпці і всі рядки таблиці. 931 00:45:28,400 --> 00:45:32,040 >> І тоді видалити з таблиці ДЕ колонка дорівнює те, 932 00:45:32,040 --> 00:45:36,440 це тільки видаляє деякі гребти з нашого столу 933 00:45:36,440 --> 00:45:38,860 де у нас є деякі специфічні умови. 934 00:45:38,860 --> 00:45:41,870 У цьому випадку умови є колонки дорівнює дещо. 935 00:45:41,870 --> 00:45:43,460 Так що просто невеликий приклад цього. 936 00:45:43,460 --> 00:45:49,100 Якщо у нас є ця столик прямо тут, і ми вставте його в таблицю, ці значення, 937 00:45:49,100 --> 00:45:50,400 що б вставити новий рядок. 938 00:45:50,400 --> 00:45:56,380 І якби ми мали автоматичне прирощення, це буде просто збільшувати наш ID від 0 до 1 до 2. 939 00:45:56,380 --> 00:46:00,010 >> Якщо ми вибрали все зі студентів, його просто повертає всі поля і всі рядки. 940 00:46:00,010 --> 00:46:02,430 Де більше року ніж або дорівнює 2 016, 941 00:46:02,430 --> 00:46:04,390 що тільки повернеться Ханна і я. 942 00:46:04,390 --> 00:46:08,360 І потім, якщо ми тільки що вибрали рік ID і рік від студентів 943 00:46:08,360 --> 00:46:11,710 де будинок Кабот Будинок, який буде, знову ж, повернутися Ханна і я. 944 00:46:11,710 --> 00:46:14,430 >> Тоді, якщо ми видалили зі студентів де ім'я одно Роба, 945 00:46:14,430 --> 00:46:16,760 що б видалити весь рядок. 946 00:46:16,760 --> 00:46:19,696 І потім, якщо ми встановлюємо Ім'я, UPDATE студенти 947 00:46:19,696 --> 00:46:21,570 SET ім'я дорівнює Daven ДЕ будинок дорівнює 948 00:46:21,570 --> 00:46:27,010 Кабот Будинок, який збирається йти до ці рядки, а потім змінити ім'я. 949 00:46:27,010 --> 00:46:31,470 >> А потім кілька типів даних SQL є СИМВОЛ, VARCHAR, INT і FLOAT. 950 00:46:31,470 --> 00:46:32,760 Це чесна гра. 951 00:46:32,760 --> 00:46:36,740 Я б знову і переконайтеся, що ви знаєте, 952 00:46:36,740 --> 00:46:40,930 і мати їх на шпаргалці, що кожен з цих персонажів 953 00:46:40,930 --> 00:46:44,140 були використані для те, що Ви використовували їх на ваших psets, 954 00:46:44,140 --> 00:46:48,050 і переконайтеся, що ви знайомі і комфортно з того, щоб вибрати 955 00:46:48,050 --> 00:46:51,450 з різних типів даних у вашому PSET. 956 00:46:51,450 --> 00:46:51,950 Так. 957 00:46:51,950 --> 00:46:54,300 >> АУДИТОРІЯ: Що було те, що таблиця зберігається? 958 00:46:54,300 --> 00:46:57,119 Так, де ця таблиця зберігається? 959 00:46:57,119 --> 00:46:59,160 МАРІЯ ZLATKOVA: Ну, Прямо зараз, це не зберігається. 960 00:46:59,160 --> 00:47:00,700 У всякому разі, де ця таблиця зберігається? 961 00:47:00,700 --> 00:47:04,503 Але він може бути збережений в базі даних SQL в. 962 00:47:04,503 --> 00:47:07,330 >> АУДИТОРІЯ: А де це база даних SQL? 963 00:47:07,330 --> 00:47:11,200 У комп'ютері, в Інтернеті де сервер? 964 00:47:11,200 --> 00:47:15,000 >> МАРІЯ ZLATKOVA: Це може бути кількість різних речей. 965 00:47:15,000 --> 00:47:19,690 >> Ханна Блумберг: Ми сполучена з SQL таблиці в основному з PhpMyAdmin. 966 00:47:19,690 --> 00:47:22,060 Таким чином, ми могли б запитати сервер зберігати їх для нас. 967 00:47:22,060 --> 00:47:23,830 Ми могли б зберігати їх на власному комп'ютері. 968 00:47:23,830 --> 00:47:27,950 >> МАРІЯ ZLATKOVA: Це залежить тільки від як ви хочете, щоб зробити це для себе. 969 00:47:27,950 --> 00:47:30,075 Але ми були зберігання їм, як уже згадувалося Ханна, 970 00:47:30,075 --> 00:47:31,755 на PhpMyAdmin, який знаходиться в мережі. 971 00:47:31,755 --> 00:47:36,550 972 00:47:36,550 --> 00:47:39,280 А потім, як ми використовуємо PHP і SQL, ми зберігаємо його 973 00:47:39,280 --> 00:47:43,450 в якійсь змінної те, що ми запитуються. 974 00:47:43,450 --> 00:47:48,370 >> Так що, якщо ми Виділити всі історії де user_id дорівнює ідентифікатор сесії, 975 00:47:48,370 --> 00:47:53,900 що б вибрати всі рядки для конкретної людини, яка 976 00:47:53,900 --> 00:47:58,327 реєструється в з історії стіл і сортувати їх у ряди. 977 00:47:58,327 --> 00:48:00,410 Крута річ, щоб знати, що функції запиту CS50 в 978 00:48:00,410 --> 00:48:02,180 захищає від тегів SQL-ін'єкції. 979 00:48:02,180 --> 00:48:07,420 Це просто означає, що він робить, що вхід, який введено правильно 980 00:48:07,420 --> 00:48:09,920 і що людина, яка вступає введення 981 00:48:09,920 --> 00:48:15,100 не намагається ввести деякі шкідливі код або видалити наші таблиці 982 00:48:15,100 --> 00:48:17,305 або видалити всі всередині нашій базі. 983 00:48:17,305 --> 00:48:20,060 984 00:48:20,060 --> 00:48:23,400 >> Швидкий огляд Модель Модель View Controller, 985 00:48:23,400 --> 00:48:27,360 це просто спосіб організації і думати про коді. 986 00:48:27,360 --> 00:48:29,100 Це знову ж таки, дизайн парадигма. 987 00:48:29,100 --> 00:48:33,380 Те, що це означає, що ми can-- і це гарна практика 988 00:48:33,380 --> 00:48:37,790 для розділення різних частин наш код і те, що вони 989 00:48:37,790 --> 00:48:40,530 контролювати в цих трьох парадигм. 990 00:48:40,530 --> 00:48:46,700 >> Таким чином, наш погляд найбільш часто наші шаблони, наша розмітка, шлях 991 00:48:46,700 --> 00:48:48,260 що ми встановлюємо, як наш код виглядає. 992 00:48:48,260 --> 00:48:55,190 Це в основному наші CSS-файли і так що ми визначили дизайн нашого коду, 993 00:48:55,190 --> 00:48:55,710 в основному. 994 00:48:55,710 --> 00:48:59,280 Наш контролер в основному те, що ми робили з PHP файлів. 995 00:48:59,280 --> 00:49:03,030 Отже, ще раз, працюючи з Інформація, яку ми маємо 996 00:49:03,030 --> 00:49:06,700 і визначення, як, що інформація використовується, 997 00:49:06,700 --> 00:49:10,660 і передає цю інформацію або на представленні чи моделлю. 998 00:49:10,660 --> 00:49:13,880 І модель, так, що ми були використовуєте була наша база, 999 00:49:13,880 --> 00:49:17,510 так де наша інформація зберігатися таким чином, він має десь 1000 00:49:17,510 --> 00:49:21,490 жити, і будь-який з код, який відноситься до способу 1001 00:49:21,490 --> 00:49:25,410 що ми отримуємо цю інформацію або так, що ми оновлюємо цю інформацію. 1002 00:49:25,410 --> 00:49:28,940 1003 00:49:28,940 --> 00:49:33,200 >> Таким чином, в моделі MVC, HTTP запити направляються на веб-сервері. 1004 00:49:33,200 --> 00:49:36,220 Потім контролер інтерпретує запит від користувача 1005 00:49:36,220 --> 00:49:38,260 і потім перевіряє дані, введені користувачем. 1006 00:49:38,260 --> 00:49:41,580 Це необов'язково, що ми маємо контролер спілкуватися 1007 00:49:41,580 --> 00:49:44,000 з моделлю, так щось як нашій базі 1008 00:49:44,000 --> 00:49:47,500 або деякі інші функціональні що передає інформацію. 1009 00:49:47,500 --> 00:49:50,340 І, нарешті, контролер передає інформацію на погляд 1010 00:49:50,340 --> 00:49:52,090 таким чином, що він може бути надавали і що він може 1011 00:49:52,090 --> 00:49:55,860 стають видимими будь-якій особі доступ до веб-сторінці. 1012 00:49:55,860 --> 00:49:58,440 1013 00:49:58,440 --> 00:50:01,340 >> Які-небудь питання? 1014 00:50:01,340 --> 00:50:01,840 Високий. 1015 00:50:01,840 --> 00:50:04,530 1016 00:50:04,530 --> 00:50:08,469 Отже, ще раз, модель, його функція, знову ж, 1017 00:50:08,469 --> 00:50:11,260 це постійного зберігання інформації, управління та організації даних. 1018 00:50:11,260 --> 00:50:13,890 І те, що ми бачили до сих далеко база даних MySQL 1019 00:50:13,890 --> 00:50:16,200 і різні файли даних, які можуть використовувати. 1020 00:50:16,200 --> 00:50:20,580 >> Подивитися, презентація інформації користувач, користувальницький інтерфейс, або користувальницький інтерфейс. 1021 00:50:20,580 --> 00:50:22,350 А прикладом є HTML. 1022 00:50:22,350 --> 00:50:23,950 І тоді ми могли б мати мінімальний PHP. 1023 00:50:23,950 --> 00:50:28,360 Таким чином, цикл, який перебирає в порівнянні з даними, які роздруковуються 1024 00:50:28,360 --> 00:50:30,720 є частиною зору, як протилежність до контролера. 1025 00:50:30,720 --> 00:50:35,660 І тоді багато хто з наших PHP файлів потрапляють в категорію контролера. 1026 00:50:35,660 --> 00:50:38,410 Це просто обробляє запити користувачів і отримує інформацію від моделі. 1027 00:50:38,410 --> 00:50:42,880 1028 00:50:42,880 --> 00:50:45,590 >> Стрибки у документ Модель об'єкта, це тільки 1029 00:50:45,590 --> 00:50:47,700 ставиться до того, HTML документи організовані. 1030 00:50:47,700 --> 00:50:51,600 І вони організовані у вигляді дерева Структура, що має ієрархію. 1031 00:50:51,600 --> 00:50:56,720 Так що, якщо у нас є доступ до [нерозбірливо] уявлення документа, 1032 00:50:56,720 --> 00:51:02,750 ми можемо працювати з документом, як ми маніпулювати об'єктами в принципі. 1033 00:51:02,750 --> 00:51:06,630 >> І зробити це трохи ясніше, коли 1034 00:51:06,630 --> 00:51:10,540 у нас є багато наших різні мітки відповісти 1035 00:51:10,540 --> 00:51:12,590 до різних маршрутах в нашому дереві. 1036 00:51:12,590 --> 00:51:17,070 І тоді для цього прикладу, ми є стартовий вузол документа. 1037 00:51:17,070 --> 00:51:20,010 Отже, ми маємо, наш HTML-вузол що розпадається на голові та тілі. 1038 00:51:20,010 --> 00:51:22,810 Керівник має назву, а потім Назва містить привіт, світ. 1039 00:51:22,810 --> 00:51:24,860 І наше тіло містить тільки привіт, світ, а також. 1040 00:51:24,860 --> 00:51:28,700 1041 00:51:28,700 --> 00:51:31,900 >> Так які-небудь питання по кожній із речі, які ми розглянули досі? 1042 00:51:31,900 --> 00:51:35,891 А якщо ні, Ханна взяти на себе з JavaScript. 1043 00:51:35,891 --> 00:51:36,390 Високий. 1044 00:51:36,390 --> 00:51:37,473 >> Ханна Блумберг: ОК, круто. 1045 00:51:37,473 --> 00:51:40,980 Якщо щось трапиться з PHP або HTML, або будь-який матеріал, Марія, покритої, 1046 00:51:40,980 --> 00:51:42,700 ми завжди можемо призупинити. 1047 00:51:42,700 --> 00:51:46,430 Ми робимо краще на знову, настільки дивовижним. 1048 00:51:46,430 --> 00:51:48,770 І тільки, щоб повернутися дуже швидко, щоб це, 1049 00:51:48,770 --> 00:51:51,010 якщо ви подивіться на кожен Іспит минулого року, це 1050 00:51:51,010 --> 00:51:54,120 приходить either-- тут деякі HTML, щоб цю діаграму. 1051 00:51:54,120 --> 00:51:58,380 Або ось ця схема, зробити деякі HTML, так виразно, що практика. 1052 00:51:58,380 --> 00:52:01,500 І то це один гарантований Питання, яке ви можете отримати права. 1053 00:52:01,500 --> 00:52:02,000 Прохолодний. 1054 00:52:02,000 --> 00:52:04,510 Отже, давайте поговоримо про JavaScript і як це трохи 1055 00:52:04,510 --> 00:52:09,130 відрізняється від мов, таких як PHP і З двох мовах, які ми бачили заздалегідь. 1056 00:52:09,130 --> 00:52:10,780 Так номер один, це слабо типізований. 1057 00:52:10,780 --> 00:52:14,630 Це, як PHP, але на відміну від С. 1058 00:52:14,630 --> 00:52:15,890 >> Це інтерпретована мова. 1059 00:52:15,890 --> 00:52:19,870 Знову ж, це, як PHP, на відміну від С і це 1060 00:52:19,870 --> 00:52:24,630 збирається, щоб дозволити нам use-- його працює дуже добре з веб-сторінок. 1061 00:52:24,630 --> 00:52:28,350 Це відбувається, щоб дозволити нам маніпулювати зміст і як він виглядає 1062 00:52:28,350 --> 00:52:30,300 і що він робить. 1063 00:52:30,300 --> 00:52:32,330 >> Ми збираємося, щоб побачити трохи Ajax. 1064 00:52:32,330 --> 00:52:36,140 Це дозволяє нам спілкуватися асинхронно з різних серверів 1065 00:52:36,140 --> 00:52:37,950 й одержати інформацію. 1066 00:52:37,950 --> 00:52:42,820 І це те, що дійсно відокремлює від JavaScript PHP і C 1067 00:52:42,820 --> 00:52:45,590 є те, що на стороні клієнта. 1068 00:52:45,590 --> 00:52:49,860 Обидва PHP і С як правило, на стороні сервера. 1069 00:52:49,860 --> 00:52:51,960 >> Здебільшого, і майже повністю, що 1070 00:52:51,960 --> 00:52:53,900 ми бачили, принаймні, в цей клас, JavaScript 1071 00:52:53,900 --> 00:52:57,040 діє на стороні клієнта, а це означає, що браузер насправді 1072 00:52:57,040 --> 00:52:58,597 відповідальність за її запуску. 1073 00:52:58,597 --> 00:53:01,180 А це означає, що ми не потрібно взаємодіяти з сервером. 1074 00:53:01,180 --> 00:53:04,380 Так це означає, що може бути набагато швидше, бо це насправді просто це хром, 1075 00:53:04,380 --> 00:53:10,420 це Safari, Firefox, це, все, що вам використовувати насправді працює ваш JavaScript. 1076 00:53:10,420 --> 00:53:12,290 >> АУДИТОРІЯ: Що означає асинхронний? 1077 00:53:12,290 --> 00:53:13,620 >> Ханна Блумберг: Ах, що зовсім асинхронно на увазі? 1078 00:53:13,620 --> 00:53:14,250 Велике питання. 1079 00:53:14,250 --> 00:53:17,890 Асинхронний означає: добре, утримання в яких 1080 00:53:17,890 --> 00:53:22,140 ми використовуємо це, добре, ми створюють веб-сторінки 1081 00:53:22,140 --> 00:53:23,860 і ми повинні отримати деяку інформацію. 1082 00:53:23,860 --> 00:53:28,250 Так на прикладі колажів, деякі відомості, які ми могли б 1083 00:53:28,250 --> 00:53:30,580 це заголовки статей. 1084 00:53:30,580 --> 00:53:33,330 Тепер ми could-- один варіант , Щоб робити це синхронно 1085 00:53:33,330 --> 00:53:37,940 і це означає, що давайте зупинити, йди статтю, 1086 00:53:37,940 --> 00:53:41,275 отримати статтю спину, а потім надавати, але це було б дуже повільно. 1087 00:53:41,275 --> 00:53:44,150 Це було б поганий досвід користувача тому що ви просто сидіти 1088 00:53:44,150 --> 00:53:46,630 там чекає щось відповісти. 1089 00:53:46,630 --> 00:53:50,020 >> Асинхронний означає, що ми Ми продовжуємо йти про нашому бізнесі, 1090 00:53:50,020 --> 00:53:52,529 надання сторінку, і ми надішлемо запит від 1091 00:53:52,529 --> 00:53:54,570 Це начебто збирається відбудеться у фоновому режимі. 1092 00:53:54,570 --> 00:53:57,610 Я думаю, що ми використовуємо приклад в Лекція виклику Роба і кажуть, 1093 00:53:57,610 --> 00:53:59,980 агов, ви можете шукати це на для мене, і повернутися до мене, 1094 00:53:59,980 --> 00:54:02,870 на відміну від просто мене очікування на телефоні. 1095 00:54:02,870 --> 00:54:07,020 Так асинхронно означає, що відбувається на тлі далеко від нас 1096 00:54:07,020 --> 00:54:08,676 паралельно. 1097 00:54:08,676 --> 00:54:10,400 >> Велике питання. 1098 00:54:10,400 --> 00:54:11,830 Ще щось? 1099 00:54:11,830 --> 00:54:12,330 Відмінно. 1100 00:54:12,330 --> 00:54:15,020 Ми стрибати набагато більше в асинхронні запити з Ajax. 1101 00:54:15,020 --> 00:54:18,287 >> АУДИТОРІЯ: Чи JavaScript-- де робить він впав з Model-View-Controller? 1102 00:54:18,287 --> 00:54:19,620 Ханна Блумберг: Велике питання. 1103 00:54:19,620 --> 00:54:23,320 Де падіння JavaScript з Model-View-Controller? 1104 00:54:23,320 --> 00:54:23,930 Гектометри 1105 00:54:23,930 --> 00:54:28,350 Я думаю, це може fall-- таким чином, ми зазвичай не 1106 00:54:28,350 --> 00:54:31,340 хотів хлюпати його в тому, що парадигма, але я думаю, я б сказала, 1107 00:54:31,340 --> 00:54:34,280 Отже, JavaScript насправді відбувається, щоб дозволити 1108 00:54:34,280 --> 00:54:37,587 нам зібрати дані, інтерпретувати дані, насправді 1109 00:54:37,587 --> 00:54:38,920 значущі речі з даними. 1110 00:54:38,920 --> 00:54:41,100 Таким чином, це дуже управління, як. 1111 00:54:41,100 --> 00:54:43,900 >> Але це також збирається дозволити нам відображати речі і друку речі. 1112 00:54:43,900 --> 00:54:47,021 Таким чином, це дуже вид-як. 1113 00:54:47,021 --> 00:54:47,520 Так. 1114 00:54:47,520 --> 00:54:51,710 Так що це ніби як PHP в де він може бути вид обох. 1115 00:54:51,710 --> 00:54:53,330 Гарне питання. 1116 00:54:53,330 --> 00:54:55,209 Ще щось? 1117 00:54:55,209 --> 00:54:56,000 Гаразд, дивним. 1118 00:54:56,000 --> 00:54:57,120 Рухаємося далі. 1119 00:54:57,120 --> 00:54:59,110 >> Отже, давайте подивимося приклад про те, як ми можемо використовувати 1120 00:54:59,110 --> 00:55:02,250 JavaScript в одному з наших веб-програм. 1121 00:55:02,250 --> 00:55:05,680 Так що я вважаю, що це index.html з купою HTML. 1122 00:55:05,680 --> 00:55:08,800 І що я хочу, щоб ти зосередитися на це сценарій тегів. 1123 00:55:08,800 --> 00:55:13,280 І це говорить, добре, я хочу, щоб запустити деякі JavaScript, і ось де вона живе. 1124 00:55:13,280 --> 00:55:15,400 Він живе в hello.js. 1125 00:55:15,400 --> 00:55:21,120 >> І дуже схоже CSS, ми могли б помістити JavaScript в HTML. 1126 00:55:21,120 --> 00:55:24,000 Чому може ми хочемо, щоб відокремити його? 1127 00:55:24,000 --> 00:55:24,500 Так. 1128 00:55:24,500 --> 00:55:25,486 >> АУДИТОРІЯ: Легше переписати? 1129 00:55:25,486 --> 00:55:26,402 >> Ханна Блумберг: Так. 1130 00:55:26,402 --> 00:55:28,450 Це простіше у використанні по різні веб-сторінки. 1131 00:55:28,450 --> 00:55:29,980 Це тримає речі чистіше. 1132 00:55:29,980 --> 00:55:32,090 Це просто хороша практика. 1133 00:55:32,090 --> 00:55:32,590 Високий. 1134 00:55:32,590 --> 00:55:33,930 Гарна відповідь. 1135 00:55:33,930 --> 00:55:36,690 Так добре, так що це буде щоб бути нашим index.html. 1136 00:55:36,690 --> 00:55:39,430 А потім сюди це наша крихітний файл JavaScript. 1137 00:55:39,430 --> 00:55:42,410 >> І все це говорить, оповіщення Привіт, світ. 1138 00:55:42,410 --> 00:55:46,040 Так що ж відбувається, коли Ця сторінка renders-- 1139 00:55:46,040 --> 00:55:49,680 так що якщо ви йдете в який-небудь веб-сайті це is-- все, що відбудеться 1140 00:55:49,680 --> 00:55:53,330 це скаже, добре, я збирається запустити цей код JavaScript. 1141 00:55:53,330 --> 00:55:56,370 І це JavaScript код просто говорить оповіщення Привіт, світ. 1142 00:55:56,370 --> 00:55:59,090 Так що я збираюся отримати це доброзичливий трохи спливаюче. 1143 00:55:59,090 --> 00:56:00,360 >> Прохолодний? 1144 00:56:00,360 --> 00:56:04,746 Це ніби як наш перший JavaScript програма, наш Привіт, світ. 1145 00:56:04,746 --> 00:56:07,690 1146 00:56:07,690 --> 00:56:12,190 Давайте подивимося трохи більше про те, що синтаксис JavaScript виглядає. 1147 00:56:12,190 --> 00:56:16,330 І спеціально, давайте порівняємо його С і PHP, які ми бачили раніше. 1148 00:56:16,330 --> 00:56:20,610 >> У JavaScript, ми будемо мати вар, ім'я змінної, а потім 1149 00:56:20,610 --> 00:56:21,690 його фактичне значення. 1150 00:56:21,690 --> 00:56:26,170 І ми не вказуємо тип, тільки як в PHP, але дуже на відміну від С. 1151 00:56:26,170 --> 00:56:28,850 Так, наприклад, якщо ми хочемо для зберігання значення 50, 1152 00:56:28,850 --> 00:56:32,490 в C, ми повинні були б сказати, агов, С, я хочу ціле, 1153 00:56:32,490 --> 00:56:35,076 Я буду називати його я і його значення 50. 1154 00:56:35,076 --> 00:56:36,450 У PHP, це трохи легше. 1155 00:56:36,450 --> 00:56:41,880 Ми говоримо, гей, я хочу змінну називається я і його значення 50. 1156 00:56:41,880 --> 00:56:45,890 Дуже точно так само, в JavaScript, ми привітатися, я хочу змінна називається I, 1157 00:56:45,890 --> 00:56:47,080 його значення 50. 1158 00:56:47,080 --> 00:56:52,140 Кожен наступний раз, коли я використовувати я, мені не потрібно, щоб написати вар. 1159 00:56:52,140 --> 00:56:53,810 Це просто я з цього моменту. 1160 00:56:53,810 --> 00:56:58,660 Таким же чином, в С, де коли ми говоримо, INT I, ми просто використовуємо I. 1161 00:56:58,660 --> 00:57:00,340 Прохолодний? 1162 00:57:00,340 --> 00:57:01,800 Добре. 1163 00:57:01,800 --> 00:57:03,710 >> Переходячи до петель, На щастя, ці майже 1164 00:57:03,710 --> 00:57:06,720 шукати exactly-- я думаю, що вони точно так само, як те, що 1165 00:57:06,720 --> 00:57:09,799 петлі буде виглядати в щось на зразок C, де ваш цикл 1166 00:57:09,799 --> 00:57:11,840 матиме три parts-- ініціалізацію, 1167 00:57:11,840 --> 00:57:13,640 стан і оновлення. 1168 00:57:13,640 --> 00:57:15,340 Деякий час циклу, він виглядає точно такий же. 1169 00:57:15,340 --> 00:57:16,390 Ми просто дати йому стан. 1170 00:57:16,390 --> 00:57:18,264 >> І в той час як петлі робити, знову, точно так само. 1171 00:57:18,264 --> 00:57:20,190 Ми даємо цей стан. 1172 00:57:20,190 --> 00:57:24,510 Скажімо, я хотів, щоб ітерації over-- Я хотів зробити щось в п'ять разів. 1173 00:57:24,510 --> 00:57:27,840 У C, ми могли б написати для ініціалізації я дорівнює 0. 1174 00:57:27,840 --> 00:57:30,480 я менше, ніж 5, я ++. 1175 00:57:30,480 --> 00:57:34,240 Тільки різниця в JavaScript, замість того щоб сказати INT я дорівнює 0, 1176 00:57:34,240 --> 00:57:36,820 ми говоримо, вар я дорівнює 0. 1177 00:57:36,820 --> 00:57:38,370 Гарний. 1178 00:57:38,370 --> 00:57:41,320 От і вся різниця. 1179 00:57:41,320 --> 00:57:43,200 Будь-які питання по кожній із, що? 1180 00:57:43,200 --> 00:57:44,160 Так. 1181 00:57:44,160 --> 00:57:48,480 >> АУДИТОРІЯ: Таким чином, в PHP, це те ж саме що, за винятком, але, як змінної? 1182 00:57:48,480 --> 00:57:49,564 Чи в тому, що в прикладі вар? 1183 00:57:49,564 --> 00:57:50,480 Ханна Блумберг: Так. 1184 00:57:50,480 --> 00:57:52,310 Таким чином, в PHP, це буде бути знак долара. 1185 00:57:52,310 --> 00:57:59,450 Так це буде $ я рівних 0, $ я менше 5, $ я ++. 1186 00:57:59,450 --> 00:58:02,490 Велике питання. 1187 00:58:02,490 --> 00:58:04,570 >> Тепер давайте поговоримо про оголошення функцій. 1188 00:58:04,570 --> 00:58:07,010 У C, коли ми оголошений Функція, ми дали йому ім'я 1189 00:58:07,010 --> 00:58:08,490 і ми дали йому деякі параметри. 1190 00:58:08,490 --> 00:58:10,670 І на початку, ми писали тип. 1191 00:58:10,670 --> 00:58:12,440 У JavaScript, всі ми потрібно зробити, це написати 1192 00:58:12,440 --> 00:58:15,080 функція ключове слово, говорить, гей, JavaScript, 1193 00:58:15,080 --> 00:58:16,570 Я збираюся визначити функцію. 1194 00:58:16,570 --> 00:58:18,520 >> У цьому випадку він має назву суму. 1195 00:58:18,520 --> 00:58:20,820 І він приймає два аргументи х та у. 1196 00:58:20,820 --> 00:58:23,280 Зверніть увагу, що ми не дбаємо про типи х та у. 1197 00:58:23,280 --> 00:58:26,280 І так само, як C, у нас є це повернення ключове слово, 1198 00:58:26,280 --> 00:58:29,140 так що ми можемо зробити щось як зворотний х та у. 1199 00:58:29,140 --> 00:58:32,540 >> А тепер, коли ми написали цей перший Функція, ми можемо використовувати суму в будь-якому місці. 1200 00:58:32,540 --> 00:58:34,740 І це абсолютно нормально. 1201 00:58:34,740 --> 00:58:37,530 Один дійсно здорово річ про JavaScript, що дуже на відміну від C 1202 00:58:37,530 --> 00:58:40,770 що функції можуть розглядатися як цінності. 1203 00:58:40,770 --> 00:58:43,895 Таким чином, ми можемо зробити щось на зразок тут де я припускаю, що я це up-- покриття 1204 00:58:43,895 --> 00:58:46,400 Я прикрили Вар суму пройшов проби, і ми тільки що сказали, 1205 00:58:46,400 --> 00:58:49,850 Функція ху дорівнює зворотний х плюс у. 1206 00:58:49,850 --> 00:58:52,140 >> Тобто те, що можна було б назвати анонімна функція. 1207 00:58:52,140 --> 00:58:53,920 Це функція без імені. 1208 00:58:53,920 --> 00:58:56,290 У той час як це говорить функції сума, бла, бла, бла, 1209 00:58:56,290 --> 00:58:59,340 це просто сказати функції. 1210 00:58:59,340 --> 00:59:02,020 Але тепер, навіть якщо у мене є це анонімна функція, 1211 00:59:02,020 --> 00:59:03,630 що функція насправді просто значення. 1212 00:59:03,630 --> 00:59:05,160 Ми можемо розглядати його як цінності. 1213 00:59:05,160 --> 00:59:10,180 >> Таким чином, ми можемо зберегти його у змінній те ж саме як ми могли б зберігати 50 у змінній. 1214 00:59:10,180 --> 00:59:13,870 Таким чином, ми можемо сказати, гаразд, я хочу Мінлива, це називається сума, 1215 00:59:13,870 --> 00:59:16,011 і ця функція. 1216 00:59:16,011 --> 00:59:18,760 Таким чином, ці дві речі насправді збирається зробити ту ж саму річ, 1217 00:59:18,760 --> 00:59:21,576 але синтаксис трохи відрізняється і вид веселій ноті. 1218 00:59:21,576 --> 00:59:22,076 Так. 1219 00:59:22,076 --> 00:59:25,548 >> АУДИТОРІЯ: Таким чином, можна назвати функція, яка була анонімною, кажучи, 1220 00:59:25,548 --> 00:59:28,244 сума кронштейни 2, 5? 1221 00:59:28,244 --> 00:59:29,160 Ханна Блумберг: Так. 1222 00:59:29,160 --> 00:59:32,280 Ви можете назвати це анонімний Функція таким же чином. 1223 00:59:32,280 --> 00:59:33,350 Ви б суму (2, 5);. 1224 00:59:33,350 --> 00:59:36,180 1225 00:59:36,180 --> 00:59:38,200 Це було б абсолютно нормально. 1226 00:59:38,200 --> 00:59:41,575 >> Якщо я не зробив вар сума дорівнює Функція, якщо я просто видалив 1227 00:59:41,575 --> 00:59:45,480 this-- я знаю, що це на моїй руці, але прикидатися, що я видалив this-- то 1228 00:59:45,480 --> 00:59:46,964 що функція як би просто пішов. 1229 00:59:46,964 --> 00:59:49,630 Ви ніколи не можете використовувати його знову, тому що Ви не мають для нього ім'я. 1230 00:59:49,630 --> 00:59:53,497 Важко щось ставляться до Ви не знаєте, як назвати. 1231 00:59:53,497 --> 00:59:54,080 Гарне питання. 1232 00:59:54,080 --> 00:59:54,580 Так. 1233 00:59:54,580 --> 00:59:59,580 >> АУДИТОРІЯ: Чи можете ви посилатися суму в інші місця зі значенням х плюс у? 1234 00:59:59,580 --> 01:00:01,940 >> Ханна Блумберг: Чи можете ви посилання сума в інших місцях 1235 01:00:01,940 --> 01:00:03,360 зі значенням х плюс у? 1236 01:00:03,360 --> 01:00:05,130 Я не зовсім впевнений, що ви маєте на увазі. 1237 01:00:05,130 --> 01:00:10,582 >> АУДИТОРІЯ: Так що ваші повз напів-анонімно Функція сума дорівнює цього 1238 01:00:10,582 --> 01:00:14,452 анонімна функція, так сума Тепер змінна, що ви can-- 1239 01:00:14,452 --> 01:00:15,410 Ханна Блумберг: Вірно. 1240 01:00:15,410 --> 01:00:18,980 Так сума змінна, але це actually-- 1241 01:00:18,980 --> 01:00:23,770 так сума є змінна, значення функції. 1242 01:00:23,770 --> 01:00:27,030 Таким чином, це функція, яка є своєрідною дивна річ, щоб обернути навколо голови 1243 01:00:27,030 --> 01:00:29,880 так як ми грали з С, і ви не можете зробити це на мові C. 1244 01:00:29,880 --> 01:00:32,679 Але тепер ми можемо назвати підсумовувати Точно так само ми могли б назвати суму тут. 1245 01:00:32,679 --> 01:00:33,220 АУДИТОРІЯ: ОК. 1246 01:00:33,220 --> 01:00:33,970 Ханна Блумберг: Так. 1247 01:00:33,970 --> 01:00:34,553 Гарне питання. 1248 01:00:34,553 --> 01:00:35,438 Так. 1249 01:00:35,438 --> 01:00:39,862 >> АУДИТОРІЯ: Таким чином, ми не використовувати прототипи в PHP або JavaScript? 1250 01:00:39,862 --> 01:00:42,070 Ханна Блумберг: Ні, ми не потрібно використовувати прототипи, 1251 01:00:42,070 --> 01:00:43,880 особливо в JavaScript. 1252 01:00:43,880 --> 01:00:49,380 Таким чином, одна погана практика, що, що я хочу сказати, що ви не повинні робити 1253 01:00:49,380 --> 01:00:52,620 вам не потрібно писати УАГ I = 50. 1254 01:00:52,620 --> 01:00:54,840 Ви могли б просто почати робити I = 50. 1255 01:00:54,840 --> 01:00:57,490 І буде просто зробити я глобальна змінна. 1256 01:00:57,490 --> 01:01:00,550 >> Це дуже погана практика, щоб ніколи не кажи в явній вар я, 1257 01:01:00,550 --> 01:01:01,800 але це щось можна зробити. 1258 01:01:01,800 --> 01:01:03,591 Перекладач не збирається кричати на вас. 1259 01:01:03,591 --> 01:01:05,920 JavaScript є досить, як, Ви можете робити те, що ви хочете. 1260 01:01:05,920 --> 01:01:09,301 1261 01:01:09,301 --> 01:01:09,800 Ой, вибачте. 1262 01:01:09,800 --> 01:01:10,300 Там два. 1263 01:01:10,300 --> 01:01:12,150 У помаранчевих штанах. 1264 01:01:12,150 --> 01:01:13,190 Ідіть вперед. 1265 01:01:13,190 --> 01:01:14,390 >> АУДИТОРІЯ: Ні, ти перший. 1266 01:01:14,390 --> 01:01:16,765 >> АУДИТОРІЯ: Ні, я просто говорю У мене не було мою руку вгору. 1267 01:01:16,765 --> 01:01:20,248 1268 01:01:20,248 --> 01:01:20,748 ДОБРЕ. 1269 01:01:20,748 --> 01:01:26,604 Так що, якщо ви були зателефонувати що перший раз, тепер підвести, 1270 01:01:26,604 --> 01:01:29,864 ми називаємо його так само, як, х, у, як кожен раз? 1271 01:01:29,864 --> 01:01:30,780 Ханна Блумберг: Так. 1272 01:01:30,780 --> 01:01:32,572 Таким чином, ці два істотно зробити те ж саме. 1273 01:01:32,572 --> 01:01:35,113 АУДИТОРІЯ: І чому перевага використання одного або іншого? 1274 01:01:35,113 --> 01:01:37,500 Ханна Блумберг: Ні перевагою використання одного або іншого. 1275 01:01:37,500 --> 01:01:40,080 Я просто хотів показати вам два різні частини синтаксису. 1276 01:01:40,080 --> 01:01:42,770 Багато разів, коли анонімний Функції мають мету 1277 01:01:42,770 --> 01:01:48,220 , Якщо аргумент на інший функція повинна бути функцією. 1278 01:01:48,220 --> 01:01:50,600 І ми побачимо, що в тільки другий з Ajax. 1279 01:01:50,600 --> 01:01:53,577 >> Так що, якщо не має ніякого сенсу, зберігати його в задній частині голови. 1280 01:01:53,577 --> 01:01:55,660 Ось де анонімний Функція може бути корисна 1281 01:01:55,660 --> 01:01:58,284 тому що це не дійсно варто даючи йому ім'я, так як ми просто 1282 01:01:58,284 --> 01:01:59,443 збираєтеся використовувати його один раз. 1283 01:01:59,443 --> 01:02:00,370 Так. 1284 01:02:00,370 --> 01:02:03,635 >> АУДИТОРІЯ: Якщо х і у зміна пізніше від того, буде підвести змінити, а? 1285 01:02:03,635 --> 01:02:06,510 Ханна Блумберг: Якщо х і у зміна пізніше, будуть підведені змінити, а? 1286 01:02:06,510 --> 01:02:08,840 Так що це насправді я думаю, те, що це, 1287 01:02:08,840 --> 01:02:12,260 знову ж, це просто відчуває себе дуже різні з C. Це не цінність. 1288 01:02:12,260 --> 01:02:13,620 Це не 5. 1289 01:02:13,620 --> 01:02:15,550 Це просто сама функція. 1290 01:02:15,550 --> 01:02:19,110 Тому, як тільки ви дасте йому параметри, то ви насправді обчислити значення. 1291 01:02:19,110 --> 01:02:21,193 >> МАРІЯ ZLATKOVA: А потім Ви можете викликати функцію 1292 01:02:21,193 --> 01:02:23,272 і використовувати його, щоб отримати якусь цінність. 1293 01:02:23,272 --> 01:02:24,230 Ханна Блумберг: Вірно. 1294 01:02:24,230 --> 01:02:25,250 Точно. 1295 01:02:25,250 --> 01:02:25,863 Так. 1296 01:02:25,863 --> 01:02:27,946 >> АУДИТОРІЯ: Так що, якщо ви тільки що зберігати його в змінної, 1297 01:02:27,946 --> 01:02:31,430 як вар х дорівнює сумі двох values-- 1298 01:02:31,430 --> 01:02:32,420 >> Ханна Блумберг: Так. 1299 01:02:32,420 --> 01:02:35,320 Таким чином, ви можете просто зробити УАГ суму дорівнює сумі двох значень. 1300 01:02:35,320 --> 01:02:37,670 Так. 1301 01:02:37,670 --> 01:02:38,680 Будь-які інші питання? 1302 01:02:38,680 --> 01:02:39,642 Так. 1303 01:02:39,642 --> 01:02:42,047 >> АУДИТОРІЯ: Але, що плутають суму і суму? 1304 01:02:42,047 --> 01:02:45,062 Як, якщо ви телефонуєте вашої змінної суму, ви могли б назвати функцію суму? 1305 01:02:45,062 --> 01:02:45,895 Ханна Блумберг: Мм. 1306 01:02:45,895 --> 01:02:46,395 Мм. 1307 01:02:46,395 --> 01:02:51,253 Якщо ви зробили щось як, сума дорівнює сума 2, 5? 1308 01:02:51,253 --> 01:02:53,170 >> АУДИТОРІЯ: Так. 1309 01:02:53,170 --> 01:02:56,465 >> Ханна Блумберг: Я вважаю, що буде перезаписувати значення суми. 1310 01:02:56,465 --> 01:02:59,290 Так ще один цікавий річ JavaScript 1311 01:02:59,290 --> 01:03:02,950 є те, що одна змінна може приймати на купу різних типів. 1312 01:03:02,950 --> 01:03:03,790 Погана практика. 1313 01:03:03,790 --> 01:03:06,280 Ви не повинні робити щось як те, що ви тільки що сказали. 1314 01:03:06,280 --> 01:03:10,240 >> Але в C, якщо я встановлено одно цілому числу, 1315 01:03:10,240 --> 01:03:13,570 ми знаємо, що це ніколи не стане рядком. 1316 01:03:13,570 --> 01:03:15,670 Це не той випадок в JavaScript. 1317 01:03:15,670 --> 01:03:17,770 Так, гарне питання. 1318 01:03:17,770 --> 01:03:20,151 Ще щось? 1319 01:03:20,151 --> 01:03:20,650 Добре. 1320 01:03:20,650 --> 01:03:21,850 Роблячи все вчасно. 1321 01:03:21,850 --> 01:03:23,050 Ведення збирається. 1322 01:03:23,050 --> 01:03:25,200 Добре. 1323 01:03:25,200 --> 01:03:27,780 >> Якщо ми подивимося на масив в JavaScript, ось 1324 01:03:27,780 --> 01:03:30,250 Невеликий приклад з масиву рядків. 1325 01:03:30,250 --> 01:03:31,967 І масиви можуть рости динамічно. 1326 01:03:31,967 --> 01:03:33,675 Вони не мають фіксований розмір так само, як 1327 01:03:33,675 --> 01:03:37,990 що вони роблять на C. Ми можемо отримати доступ до елементи за допомогою всього квадратних дужках. 1328 01:03:37,990 --> 01:03:41,720 >> Це виглядає як PHP і багато як С, де ми можемо сказати, в цьому випадку, 1329 01:03:41,720 --> 01:03:48,360 якби я хотів слово JavaScript, я б у обр квадратні дужки з 0, 1, 2. 1330 01:03:48,360 --> 01:03:51,450 1331 01:03:51,450 --> 01:03:55,390 І потім, якщо ви пам'ятаєте, в C, коли ми хотів, щоб отримати довжину масиву, 1332 01:03:55,390 --> 01:03:56,820 це було дійсно дратує. 1333 01:03:56,820 --> 01:03:58,460 Але в JavaScript, дуже легко. 1334 01:03:58,460 --> 01:03:59,910 Все, що ми робимо, .length. 1335 01:03:59,910 --> 01:04:01,120 Дає йому довжини. 1336 01:04:01,120 --> 01:04:01,892 Це воно. 1337 01:04:01,892 --> 01:04:03,140 >> АУДИТОРІЯ: Це просто. 1338 01:04:03,140 --> 01:04:05,306 >> Ханна Блумберг: Так, робить Ваше життя набагато простіше. 1339 01:04:05,306 --> 01:04:08,950 1340 01:04:08,950 --> 01:04:11,560 ОК, що не object-- там. 1341 01:04:11,560 --> 01:04:15,480 Об'єкти в JavaScript дотик багато, як в C структур 1342 01:04:15,480 --> 01:04:18,280 і асоціативні масиви в PHP. 1343 01:04:18,280 --> 01:04:20,270 Так що ми бачили Багато це JSON, який 1344 01:04:20,270 --> 01:04:23,150 виступає за JavaScript Object Notation. 1345 01:04:23,150 --> 01:04:25,550 І це в основному спосіб структурування наші дані. 1346 01:04:25,550 --> 01:04:27,880 >> Отже, давайте подивимося приклад, ймовірно, найпростіший. 1347 01:04:27,880 --> 01:04:32,540 Так ось приклад об'єкта що зберігає клас, CS50. 1348 01:04:32,540 --> 01:04:37,790 І коли я кажу клас, я маю на увазі, звичайно, НЕ like-- да, курс, CS50. 1349 01:04:37,790 --> 01:04:40,730 І ви побачите, що все в об'єкті 1350 01:04:40,730 --> 01:04:43,526 міститиметься у фігурні дужки. 1351 01:04:43,526 --> 01:04:48,260 >> І ми починаємо асоціювати імена полів або ключі з різними значеннями. 1352 01:04:48,260 --> 01:04:52,920 Таким чином, ви можете почати бачити, як цей вид відчуває, як асоціативний масив в PHP. 1353 01:04:52,920 --> 01:04:57,450 Отже, ми збираємося, щоб зв'язати поле або ім'я ключа, звичайно, з рядком, 1354 01:04:57,450 --> 01:04:58,510 CS50. 1355 01:04:58,510 --> 01:04:59,940 >> Ми збираємося, щоб мати інструктора. 1356 01:04:59,940 --> 01:05:00,940 Ми збираємося, щоб мати ТФ. 1357 01:05:00,940 --> 01:05:05,240 Ми збираємося, щоб мати ряд psets і ми збираємося, щоб записали. 1358 01:05:05,240 --> 01:05:10,720 І один крута річ, щоб відзначити, все ці речі мають різні типи, 1359 01:05:10,720 --> 01:05:12,020 і це абсолютно нормально. 1360 01:05:12,020 --> 01:05:15,330 >> Це прекрасно для об'єкта, насправді, це, ймовірно, очікується об'єкта 1361 01:05:15,330 --> 01:05:19,620 щоб мати комбінацію рядків і номери і Булеві масиви і 1362 01:05:19,620 --> 01:05:23,420 і все інше, ви могли б хочете, щоб всередині об'єкта. 1363 01:05:23,420 --> 01:05:28,570 І зверніть увагу, що вони збираються, щоб бути імена або ключі, а потім ми просто 1364 01:05:28,570 --> 01:05:30,300 встановити його рівним з невеликим товстої кишки. 1365 01:05:30,300 --> 01:05:32,015 >> АУДИТОРІЯ: Що саме це означає JSON? 1366 01:05:32,015 --> 01:05:33,890 Ханна Блумберг: Що саме робить JSON на увазі? 1367 01:05:33,890 --> 01:05:36,470 JSON просто стоїть для JavaScript Object Notation. 1368 01:05:36,470 --> 01:05:38,430 Це просто спосіб форматування. 1369 01:05:38,430 --> 01:05:40,040 Так. 1370 01:05:40,040 --> 01:05:41,800 Це спосіб форматування наші дані. 1371 01:05:41,800 --> 01:05:43,620 >> У C, це структур. 1372 01:05:43,620 --> 01:05:45,800 У PHP, це асоціативні масиви. 1373 01:05:45,800 --> 01:05:47,120 У JavaScript, у нас є об'єкти. 1374 01:05:47,120 --> 01:05:48,969 >> АУДИТОРІЯ: Так CS50 це об'єкт? 1375 01:05:48,969 --> 01:05:51,010 Ханна Блумберг: CS50 є об'єкт в даному випадку. 1376 01:05:51,010 --> 01:05:54,830 1377 01:05:54,830 --> 01:05:57,880 Тепер, як ми насправді доступ ці поля або змінювати ці поля. 1378 01:05:57,880 --> 01:06:03,920 Наприклад, припустимо, що ми вирішили, що Ви хотіли один менше PSET в цьому семестрі. 1379 01:06:03,920 --> 01:06:06,300 Замість дев'яти, ми просто доведеться восьмій. 1380 01:06:06,300 --> 01:06:08,240 Як би ми змінити це? 1381 01:06:08,240 --> 01:06:09,436 >> О, неправильно. 1382 01:06:09,436 --> 01:06:11,060 Є два способи, якими ми можемо зробити це. 1383 01:06:11,060 --> 01:06:13,490 Номер один з точкою позначення і номер два 1384 01:06:13,490 --> 01:06:15,750 це з квадратним позначення кронштейна. 1385 01:06:15,750 --> 01:06:19,720 Так, наприклад, якщо я хотів, щоб змінити або доступ 1386 01:06:19,720 --> 01:06:26,820 поле psets в нашій CS50 об'єкта, що я буду робити це CS50.psets, 1387 01:06:26,820 --> 01:06:30,770 таким чином, назва об'єкта точки ім'я поля або ключа. 1388 01:06:30,770 --> 01:06:37,120 >> Дуже точно так само, це саме те, еквівалентно, щоб зробити CS50, а потім 1389 01:06:37,120 --> 01:06:42,050 в квадратні дужки, psets. 1390 01:06:42,050 --> 01:06:42,837 Прохолодний? 1391 01:06:42,837 --> 01:06:44,298 Так. 1392 01:06:44,298 --> 01:06:47,707 >> АУДИТОРІЯ: Так JSON технічно JavaScript раніше, 1393 01:06:47,707 --> 01:06:51,814 навіть якщо в psets ми відокремити його [нерозбірливо]? 1394 01:06:51,814 --> 01:06:52,730 Ханна Блумберг: Звичайно. 1395 01:06:52,730 --> 01:06:56,290 Таким чином, питання, є JavaScript і JSON еквівалентно? 1396 01:06:56,290 --> 01:07:00,750 Так JSON є позначення, в основному так, що ми виписуємо 1397 01:07:00,750 --> 01:07:02,700 об'єкт з JavaScript. 1398 01:07:02,700 --> 01:07:05,190 Так що вони не зовсім те ж саме. 1399 01:07:05,190 --> 01:07:08,950 >> Я б сказав, JavaScript, є об'єкти в JavaScript. 1400 01:07:08,950 --> 01:07:12,590 JSON приймає ці об'єкти і друкує їх і відображає їх 1401 01:07:12,590 --> 01:07:15,160 або зберігає їх у хороший спосіб. 1402 01:07:15,160 --> 01:07:18,110 Так JSON НЕ програмування мову так, що JavaScript є. 1403 01:07:18,110 --> 01:07:20,900 Це просто позначення наші об'єкти в JavaScript. 1404 01:07:20,900 --> 01:07:21,400 Так. 1405 01:07:21,400 --> 01:07:24,144 >> АУДИТОРІЯ: Так що ж [Нерозбірливо] завершити? 1406 01:07:24,144 --> 01:07:25,060 Ханна Блумберг: Звичайно. 1407 01:07:25,060 --> 01:07:27,727 Так це насправді нічого не робить. 1408 01:07:27,727 --> 01:07:28,935 Це просто спосіб отримати доступ. 1409 01:07:28,935 --> 01:07:31,393 Так що давайте говорити, що ми хотіли змінити кількість проблемних наборів 1410 01:07:31,393 --> 01:07:32,450 з дев'яти до восьми. 1411 01:07:32,450 --> 01:07:34,383 Що ми робимо це щось зробити як CS50.psets = 8;. 1412 01:07:34,383 --> 01:07:38,500 1413 01:07:38,500 --> 01:07:39,400 >> Так, велике питання. 1414 01:07:39,400 --> 01:07:40,733 Це просто, щоб показати вам синтаксис. 1415 01:07:40,733 --> 01:07:43,620 Насправді не роблять нічого корисного. 1416 01:07:43,620 --> 01:07:46,085 Які-небудь питання? 1417 01:07:46,085 --> 01:07:48,210 Рухаємося далі. 1418 01:07:48,210 --> 01:07:51,960 >> Отже, давайте подивимося на швидкий приклад того, як JavaScript працює, тому що я сказав вам це 1419 01:07:51,960 --> 01:07:55,170 робить всі ці речі і класні дозволяє модифікувати веб-сторінок. 1420 01:07:55,170 --> 01:07:56,970 Давайте реально побачити його в дії. 1421 01:07:56,970 --> 01:07:59,850 Так що, наприклад, цей HTML-файл. 1422 01:07:59,850 --> 01:08:04,350 >> І що я хочу, щоб ви зосередити увагу на це Цей конкретний тег, який являє собою кнопку, 1423 01:08:04,350 --> 01:08:06,182 з ідентифікатором search_button. 1424 01:08:06,182 --> 01:08:08,670 Це просто на сторінці. 1425 01:08:08,670 --> 01:08:10,690 Так що тепер давайте подивимося, що ми можемо насправді. 1426 01:08:10,690 --> 01:08:12,560 >> Ну, припустимо, коли Ви натисніть на цю кнопку, 1427 01:08:12,560 --> 01:08:16,010 ми хочемо, щоб зробити alert-- Ви натиснули кнопку. 1428 01:08:16,010 --> 01:08:17,840 Давайте подивимося, як ми можемо це зробити. 1429 01:08:17,840 --> 01:08:23,869 Так window.onload-- це не те, що ви бачили в класі, тому 1430 01:08:23,869 --> 01:08:26,180 не потрібно знати це для вікторини. 1431 01:08:26,180 --> 01:08:33,660 Але це в основному говорить, добре, виклик ця функція, коли вікно навантаження. 1432 01:08:33,660 --> 01:08:35,080 >> Так що це просто свого роду код установки. 1433 01:08:35,080 --> 01:08:36,390 Не хвилюйтеся так багато про це. 1434 01:08:36,390 --> 01:08:39,170 Те, що я хочу, щоб ви зосередити увагу на це тут. 1435 01:08:39,170 --> 01:08:44,020 Ми говоримо вар searchButton дорівнює document.getElementById search_button. 1436 01:08:44,020 --> 01:08:46,450 >> Отже, як ви вже могли здогадатися, що це робить це говорить, 1437 01:08:46,450 --> 01:08:50,920 ОК, треба знайти елемент з ID search_button. 1438 01:08:50,920 --> 01:08:52,790 І тепер у нас є, що поточна елемент, і я 1439 01:08:52,790 --> 01:08:56,279 збирається зберігати його в Мінлива searchButton. 1440 01:08:56,279 --> 01:09:00,651 І тепер ми можете використовувати цей елемент і змінити його, або отримати доступ до його цінності, 1441 01:09:00,651 --> 01:09:01,359 такі речі, як, що. 1442 01:09:01,359 --> 01:09:04,649 Ми можемо насправді почати взаємодіяти з веб-сторінки. 1443 01:09:04,649 --> 01:09:10,330 >> Так от я кажу, добре, тепер у мене є що кнопка, коли вона натиснута, 1444 01:09:10,330 --> 01:09:12,859 називають цю анонімну функцію. 1445 01:09:12,859 --> 01:09:16,811 Так що це, де анонімний функції стають корисними. 1446 01:09:16,811 --> 01:09:18,060 І що функція робити? 1447 01:09:18,060 --> 01:09:20,529 Ну, це просто називає це попередження функція, і він каже, 1448 01:09:20,529 --> 01:09:22,910 Ви натиснули кнопку Search. 1449 01:09:22,910 --> 01:09:29,670 >> Так що ж станеться, якщо я йду туди, де Цей HTML-живе, і я натисніть кнопку, 1450 01:09:29,670 --> 01:09:33,729 Я отримаю повідомлення, трохи фантазії що говорить, що ви натиснули кнопку. 1451 01:09:33,729 --> 01:09:40,710 Таким чином, речі, щоб зосередитися на here-- document.getElementById 1452 01:09:40,710 --> 01:09:44,960 отримує HTML зокрема елемент із заданим ідентифікатором. 1453 01:09:44,960 --> 01:09:48,529 А тепер ми можемо встановити те, що має статися, коли 1454 01:09:48,529 --> 01:09:50,702 що конкретний елемент кнопки. 1455 01:09:50,702 --> 01:09:52,670 >> АУДИТОРІЯ: Ми повинні покласти все, що в? 1456 01:09:52,670 --> 01:09:53,162 >> Ханна Блумберг: Вибачте? 1457 01:09:53,162 --> 01:09:55,130 >> АУДИТОРІЯ: Чи є у нас фізично код все це? 1458 01:09:55,130 --> 01:09:56,340 >> Ханна Блумберг: Чи є у нас в фізично код все це? 1459 01:09:56,340 --> 01:09:56,839 Так. 1460 01:09:56,839 --> 01:09:58,120 Хіба це не вид дратує? 1461 01:09:58,120 --> 01:10:00,032 Це багато коду. 1462 01:10:00,032 --> 01:10:01,574 >> АУДИТОРІЯ: Ви могли імпортувати щось. 1463 01:10:01,574 --> 01:10:02,532 Ханна Блумберг: Вірно. 1464 01:10:02,532 --> 01:10:03,610 Ми могли б використовувати щось. 1465 01:10:03,610 --> 01:10:08,140 І в particular-- о, це каже, що мені треба вчити розділ. 1466 01:10:08,140 --> 01:10:11,061 Зокрема, давайте використовувати бібліотеку JQuery, 1467 01:10:11,061 --> 01:10:13,060 бо насправді довго і дійсно дратує 1468 01:10:13,060 --> 01:10:16,860 і я хочу, щоб мати можливість спростити і зробити його коротше і легше писати. 1469 01:10:16,860 --> 01:10:19,810 >> Так JQuery є бібліотека JavaScript. 1470 01:10:19,810 --> 01:10:24,930 Так JavaScript є програмування мова; JQuery є бібліотека. 1471 01:10:24,930 --> 01:10:27,190 І це робить купу речей легше. 1472 01:10:27,190 --> 01:10:33,230 Це робить зміни і відбувається через HTML документ набагато простіше. 1473 01:10:33,230 --> 01:10:35,030 >> Це робить обробку події простіше. 1474 01:10:35,030 --> 01:10:37,580 Це робить анімацію простіше і це робить Ajax простіше. 1475 01:10:37,580 --> 01:10:40,140 Отже, давайте стрибати в двох ці речі прямо зараз. 1476 01:10:40,140 --> 01:10:40,900 Вибачте. 1477 01:10:40,900 --> 01:10:42,620 Перш, ніж ми робимо, деякі основний синтаксис. 1478 01:10:42,620 --> 01:10:46,870 >> Це те, що більшість викликів бібліотека JQuery виглядати. 1479 01:10:46,870 --> 01:10:50,520 Ми використовуємо цю долара sign-- немає знак підключення до PHP, 1480 01:10:50,520 --> 01:10:56,030 просто inconvenient-- ім'я Селектор, точка, а потім дію. 1481 01:10:56,030 --> 01:10:58,860 Отже, давайте подивимося деякі конкретні приклади цього. 1482 01:10:58,860 --> 01:11:02,980 >> Таким чином, це насправді те ж саме код з слайда подій. 1483 01:11:02,980 --> 01:11:08,740 Так що це довго, потворна річ стає це набагато приємніше, менше річ. 1484 01:11:08,740 --> 01:11:10,370 Так давайте спробуємо розірвати це вниз. 1485 01:11:10,370 --> 01:11:17,090 Це говорить, добре, jQuery-- цей долар sign-- JQuery, знайти мені у вікно. 1486 01:11:17,090 --> 01:11:18,480 Так от селектор. 1487 01:11:18,480 --> 01:11:21,800 >> При завантаженні, викликати цю функцію. 1488 01:11:21,800 --> 01:11:23,880 Так от все всередині. 1489 01:11:23,880 --> 01:11:24,380 ДОБРЕ. 1490 01:11:24,380 --> 01:11:25,740 Все йде нормально? 1491 01:11:25,740 --> 01:11:26,750 Добре. 1492 01:11:26,750 --> 01:11:32,970 >> Тепер, JQuery, знайти мене в що з ID search_button. 1493 01:11:32,970 --> 01:11:36,090 І що вона натиснута, викликати цю функцію. 1494 01:11:36,090 --> 01:11:37,900 А потім цієї функції точно так само. 1495 01:11:37,900 --> 01:11:41,052 Просто зробити трохи оповіщення, Ви натиснули кнопку Search. 1496 01:11:41,052 --> 01:11:42,650 >> Так що це дійсно приємно. 1497 01:11:42,650 --> 01:11:46,260 Це дійсно конденсується і спрощує наш код. 1498 01:11:46,260 --> 01:11:49,030 Як я знаю, що це ID search_button 1499 01:11:49,030 --> 01:11:50,960 а не як клас search_button? 1500 01:11:50,960 --> 01:11:52,024 >> АУДИТОРІЯ: хештегом? 1501 01:11:52,024 --> 01:11:52,940 Ханна Блумберг: Так. 1502 01:11:52,940 --> 01:11:56,450 Цей символ хеш, це просто, як CSS. 1503 01:11:56,450 --> 01:12:00,080 Так що пам'ятайте, з CSS, коли ми хотів, щоб вибрати щось по ID, 1504 01:12:00,080 --> 01:12:01,590 ми використовували знак #. 1505 01:12:01,590 --> 01:12:05,400 І коли ми хотіли, щоб вибрати то по класу, ми використовуємо точку. 1506 01:12:05,400 --> 01:12:06,870 Відмінно. 1507 01:12:06,870 --> 01:12:08,230 Мати сенс? 1508 01:12:08,230 --> 01:12:11,500 Так JQuery, як передбачається, просто зробити наше життя простіше. 1509 01:12:11,500 --> 01:12:12,000 Так. 1510 01:12:12,000 --> 01:12:15,660 >> АУДИТОРІЯ: Так що я трохи заплутався, про те, як анонімна функція працює. 1511 01:12:15,660 --> 01:12:19,027 Є назвати вам цю Anonymouse функція, функція? 1512 01:12:19,027 --> 01:12:20,594 Як це називається? 1513 01:12:20,594 --> 01:12:21,510 Ханна Блумберг: Звичайно. 1514 01:12:21,510 --> 01:12:25,812 Так функція просто ключове слово, каже, що я збираюся визначити функцію. 1515 01:12:25,812 --> 01:12:26,520 АУДИТОРІЯ: О, добре. 1516 01:12:26,520 --> 01:12:27,353 Ханна Блумберг: ОК? 1517 01:12:27,353 --> 01:12:32,120 І тоді ми проходимо його в якості Аргумент, метою яких давайте 1518 01:12:32,120 --> 01:12:37,040 це внутрішня одно-- функції миші. 1519 01:12:37,040 --> 01:12:39,420 Так що, так, так що функції, це анонімна функція, 1520 01:12:39,420 --> 01:12:40,910 стає фактичним аргументом. 1521 01:12:40,910 --> 01:12:43,632 Так що пам'ятайте, в JavaScript, ми може відноситися до функції в якості значень. 1522 01:12:43,632 --> 01:12:44,340 АУДИТОРІЯ: О, добре. 1523 01:12:44,340 --> 01:12:45,256 Ханна Блумберг: Так. 1524 01:12:45,256 --> 01:12:46,035 Мені подобається, що "ой". 1525 01:12:46,035 --> 01:12:47,490 Ніцца. 1526 01:12:47,490 --> 01:12:49,915 Інші питання? 1527 01:12:49,915 --> 01:12:50,505 Час? 1528 01:12:50,505 --> 01:12:51,380 МАРІЯ ZLATKOVA: Добре. 1529 01:12:51,380 --> 01:12:52,760 Добре. 1530 01:12:52,760 --> 01:12:54,210 >> Ханна Блумберг: Високий. 1531 01:12:54,210 --> 01:12:55,720 Деякі швидко корисно JQuery. 1532 01:12:55,720 --> 01:12:57,559 Я не збираюся йти через всіх з них. 1533 01:12:57,559 --> 01:12:59,350 Ці слайди будуть до онлайн трохи 1534 01:12:59,350 --> 01:13:02,040 пізніше, так що ви можете перевірити це з трохи пізніше. 1535 01:13:02,040 --> 01:13:07,120 Але в принципі, загальне малюнок має, де ми говоримо, 1536 01:13:07,120 --> 01:13:11,510 ОК, гей, JQuery, ось мій Селектор, а потім ось дію. 1537 01:13:11,510 --> 01:13:15,940 І ви можете робити речі, як доступ в значення формі, доступ до деяких HTML, 1538 01:13:15,940 --> 01:13:19,195 контроль, що відбувається, коли користувач відправляє форму, подібні речі. 1539 01:13:19,195 --> 01:13:20,106 Так. 1540 01:13:20,106 --> 01:13:22,090 >> АУДИТОРІЯ: Таким чином, в іспит, ми будемо повинні 1541 01:13:22,090 --> 01:13:25,066 знати досить багато із документація JQuery. 1542 01:13:25,066 --> 01:13:31,018 Тому, враховуючи, що ми копіювати / вставити JQuery Документація в нашу шпаргалку, 1543 01:13:31,018 --> 01:13:32,506 де ж лінія, проведена? 1544 01:13:32,506 --> 01:13:33,957 Як, скільки нам потрібно знати? 1545 01:13:33,957 --> 01:13:35,290 Ханна Блумберг: Велике питання. 1546 01:13:35,290 --> 01:13:37,765 Питання в тому, по суті, враховуючи, що ви 1547 01:13:37,765 --> 01:13:41,330 не може отримати доступ до документації JQuery під час тесту, скільки ви повинні 1548 01:13:41,330 --> 01:13:41,830 знати? 1549 01:13:41,830 --> 01:13:45,540 Ми не очікуємо, щоб ви прийшли з якоюсь випадковою функції 1550 01:13:45,540 --> 01:13:47,240 що можна було б очікувати вас Google. 1551 01:13:47,240 --> 01:13:52,930 >> Речі, які є чесна гра, я б сказати тільки вид загального синтаксису, 1552 01:13:52,930 --> 01:13:58,310 можливість вибору по ID і по class-- так само, як CSS. 1553 01:13:58,310 --> 01:14:01,876 А потім фактичні функції сам собі, ми, швидше за все, вам сказати. 1554 01:14:01,876 --> 01:14:02,376 Так. 1555 01:14:02,376 --> 01:14:05,591 >> АУДИТОРІЯ: Отже, коли ви виберіть по класу означатиме точку. 1556 01:14:05,591 --> 01:14:06,840 Ханна Блумберг: Так, саме так. 1557 01:14:06,840 --> 01:14:07,340 Добре. 1558 01:14:07,340 --> 01:14:10,461 При виборі по класу, це буде бути точка, а не знак фунта. 1559 01:14:10,461 --> 01:14:10,960 Так. 1560 01:14:10,960 --> 01:14:12,710 >> АУДИТОРІЯ: Хотіли б Ви перейти різниці 1561 01:14:12,710 --> 01:14:14,310 між вибором по ID і класу? 1562 01:14:14,310 --> 01:14:14,560 >> Ханна Блумберг: Звичайно. 1563 01:14:14,560 --> 01:14:17,510 Різниця між вибору ID і вибору по класу. 1564 01:14:17,510 --> 01:14:20,685 Так, як сказав Марії трохи раніше, 1565 01:14:20,685 --> 01:14:26,280 може бути тільки один елемент HTML- із заданою ID, у той час як клас, 1566 01:14:26,280 --> 01:14:29,740 це дозволяє нам групувати купу з різних елементів разом, 1567 01:14:29,740 --> 01:14:34,300 так що речі, пов'язані, але не зовсім те ж саме. 1568 01:14:34,300 --> 01:14:35,685 Чи означає це, відповісти на питання? 1569 01:14:35,685 --> 01:14:36,200 Високий. 1570 01:14:36,200 --> 01:14:37,194 Так. 1571 01:14:37,194 --> 01:14:40,680 >> АУДИТОРІЯ: Що робити, якщо у вас є кілька речі, які в одному класі? 1572 01:14:40,680 --> 01:14:42,150 >> Ханна Блумберг: Що відбувається якщо у вас є кілька речей, які 1573 01:14:42,150 --> 01:14:43,280 те ж саме клас? 1574 01:14:43,280 --> 01:14:45,829 Так, наприклад, якщо ми тільки за допомогою чистого JavaScript, 1575 01:14:45,829 --> 01:14:48,120 ми хотіли б зробити щось на зразок document.getElementsByClass. 1576 01:14:48,120 --> 01:14:52,280 1577 01:14:52,280 --> 01:14:56,320 А потім, що це насправді це повертає масив елементів. 1578 01:14:56,320 --> 01:14:59,517 >> І ви повинні або перебрати їх або знайти, який ви хочете. 1579 01:14:59,517 --> 01:15:01,350 Це не дасть Ви один елемент. 1580 01:15:01,350 --> 01:15:03,450 Це дасть вам масив елементів. 1581 01:15:03,450 --> 01:15:05,280 Велике питання. 1582 01:15:05,280 --> 01:15:07,700 Ще щось? 1583 01:15:07,700 --> 01:15:09,520 Високий. 1584 01:15:09,520 --> 01:15:12,860 >> Так що я думаю, якщо ви знайомі з будь JQuery ви бачили в PSET, 1585 01:15:12,860 --> 01:15:15,600 ви повинні бути добре йти. 1586 01:15:15,600 --> 01:15:16,325 Питання? 1587 01:15:16,325 --> 01:15:17,610 О ні. 1588 01:15:17,610 --> 01:15:18,859 Мені дійсно потрібно вчити. 1589 01:15:18,859 --> 01:15:19,358 Розслабтеся. 1590 01:15:19,358 --> 01:15:20,035 Все буде в порядку. 1591 01:15:20,035 --> 01:15:20,660 Я туди потрапити. 1592 01:15:20,660 --> 01:15:24,670 1593 01:15:24,670 --> 01:15:26,870 >> Давайте поговоримо про Ajax. 1594 01:15:26,870 --> 01:15:31,350 Так Аякс буде a-- добре, давайте почнемо з того, що це коштує. 1595 01:15:31,350 --> 01:15:32,350 Це абревіатура. 1596 01:15:32,350 --> 01:15:35,855 Це коштує для асинхронних JavaScript і XML-. 1597 01:15:35,855 --> 01:15:39,800 І XML є в основному буде [Нерозбірливо] з типом наших даних. 1598 01:15:39,800 --> 01:15:42,100 Але ми насправді не використовується XML. 1599 01:15:42,100 --> 01:15:43,430 Замість цього, ми просто використовуємо JSON. 1600 01:15:43,430 --> 01:15:48,350 >> Тому в основному, це деякі data-- асинхронний, JavaScript і дані, 1601 01:15:48,350 --> 01:15:50,040 в цьому випадку, JSON. 1602 01:15:50,040 --> 01:15:52,820 І наша мета, як ми вже згадували трохи раніше, 1603 01:15:52,820 --> 01:15:56,880 є, щоб мати можливість зробити Запит, що запит вже робити 1604 01:15:56,880 --> 01:16:00,700 його справу в тло, але як і раніше 1605 01:16:00,700 --> 01:16:02,550 робити все, що ми маємо намір робити. 1606 01:16:02,550 --> 01:16:06,650 А потім, коли ця інформація готові, то ми будемо включати його. 1607 01:16:06,650 --> 01:16:08,470 >> Отже, давайте подивимося, що це насправді виглядає. 1608 01:16:08,470 --> 01:16:11,210 І це, ви повинні бути трохи знайомі 1609 01:16:11,210 --> 01:16:13,680 від pset8, той, який ви щойно виповнилося в. 1610 01:16:13,680 --> 01:16:16,200 Так от дійсний JQuery функція, ми могли б 1611 01:16:16,200 --> 01:16:18,250 хочете знати about-- цього знака долара. 1612 01:16:18,250 --> 01:16:21,500 Так він говорить функція JQuery, .getJSON. 1613 01:16:21,500 --> 01:16:25,020 >> І те, що ця функція робить його приймає URL і деякі parameters-- 1614 01:16:25,020 --> 01:16:28,000 так що я думаю, у разі з pset8, як це було, 1615 01:16:28,000 --> 01:16:33,520 URL-адресу було articles.php і Параметри було йти = деякий поштовий індекс. 1616 01:16:33,520 --> 01:16:41,580 І це говорить, добре, зробіть запит на цю адресу із заданими параметрами. 1617 01:16:41,580 --> 01:16:43,480 І, що просто трапляється. 1618 01:16:43,480 --> 01:16:47,730 >> Коли він закінчує, це або збирається для успішного завершення 1619 01:16:47,730 --> 01:16:49,370 або це буде провал. 1620 01:16:49,370 --> 01:16:53,480 Так що це еквівалент виклику Роб і попросити його зробити щось. 1621 01:16:53,480 --> 01:17:00,260 А потім, коли він передзвонює, він або хочу сказати, я зробив або я не зміг. 1622 01:17:00,260 --> 01:17:04,030 >> Таким чином, у разі, коли ви знаходитесь зроблено, ви говорите, гаразд, я зробив. 1623 01:17:04,030 --> 01:17:05,980 І тоді ви називаєте цю функцію. 1624 01:17:05,980 --> 01:17:08,915 У цьому випадку, це буде функція, яка приймає інформацію. 1625 01:17:08,915 --> 01:17:12,890 Той, який ми, як правило, піклуються про те, дані, дані, які ми насправді були повернуті 1626 01:17:12,890 --> 01:17:15,900 в результаті виклику .getJSON. 1627 01:17:15,900 --> 01:17:17,470 >> І ви можете зробити щось з ним. 1628 01:17:17,470 --> 01:17:23,670 Таким чином, у разі pset8, ми презентували його у вигляді списку. 1629 01:17:23,670 --> 01:17:29,050 Відмова буде функція що називається, якщо клопотання не 1630 01:17:29,050 --> 01:17:30,450 з якої причини. 1631 01:17:30,450 --> 01:17:35,104 І у випадку pset8, ми просто console.log його. 1632 01:17:35,104 --> 01:17:36,020 Будь-які питання з цього приводу? 1633 01:17:36,020 --> 01:17:36,300 Так. 1634 01:17:36,300 --> 01:17:39,633 >> АУДИТОРІЯ: Чи можемо ми просто використовувати функцію тета замість функції, textStatus, jqHXR. 1635 01:17:39,633 --> 01:17:43,464 1636 01:17:43,464 --> 01:17:44,380 Ханна Блумберг: Звичайно. 1637 01:17:44,380 --> 01:17:46,713 Так що так, я думаю, що в PSET, ми тільки що бачили функцію даних. 1638 01:17:46,713 --> 01:17:48,700 Так що це просто the-- так, добре. 1639 01:17:48,700 --> 01:17:50,510 Це те, що ми бачили в PSET. 1640 01:17:50,510 --> 01:17:51,480 Це абсолютно нормально. 1641 01:17:51,480 --> 01:17:54,210 >> Такими є лише, якщо ви хочете витягнути більше інформації, 1642 01:17:54,210 --> 01:17:57,190 це те, що ви могли б отримати від .getJSON. 1643 01:17:57,190 --> 01:17:59,040 Гарне питання. 1644 01:17:59,040 --> 01:17:59,706 Ще щось? 1645 01:17:59,706 --> 01:18:00,206 Так. 1646 01:18:00,206 --> 01:18:01,787 >> АУДИТОРІЯ: Так .getJSON є Аякс? 1647 01:18:01,787 --> 01:18:02,620 Ханна Блумберг: ОК. 1648 01:18:02,620 --> 01:18:05,700 Так що це свого роду хитрість. 1649 01:18:05,700 --> 01:18:12,390 Це функція JQuery, який дозволяє Ви зробити асинхронних викликів. 1650 01:18:12,390 --> 01:18:16,080 І ці асинхронні виклики, це те, що ми на увазі як Ajax. 1651 01:18:16,080 --> 01:18:16,850 Так. 1652 01:18:16,850 --> 01:18:20,185 Це зайняло у мене дуже багато часу, щоб розтягнути, коли я був студентом. 1653 01:18:20,185 --> 01:18:21,560 АУДИТОРІЯ: Чи можете ви сказати, що знову? 1654 01:18:21,560 --> 01:18:22,476 Ханна Блумберг: Так. 1655 01:18:22,476 --> 01:18:23,630 Чи можу я сказати, що ще раз? 1656 01:18:23,630 --> 01:18:29,010 Ця функція .getJSON, це функція JQuery. 1657 01:18:29,010 --> 01:18:31,970 І це збирається зробити асинхронний виклик. 1658 01:18:31,970 --> 01:18:35,700 І ці асинхронні виклики, ми посилався на ті, як Ajax. 1659 01:18:35,700 --> 01:18:39,610 1660 01:18:39,610 --> 01:18:41,872 >> Будь-які інші питання? 1661 01:18:41,872 --> 01:18:43,330 У нас є всього пара хвилин залишилося. 1662 01:18:43,330 --> 01:18:45,080 І Марія збирається укутати безпеки 1663 01:18:45,080 --> 01:18:47,464 а потім ми збираємося щоб бути майже закінчили. 1664 01:18:47,464 --> 01:18:48,630 МАРІЯ ZLATKOVA: Високий, добре. 1665 01:18:48,630 --> 01:18:54,030 Так що це просто is-- взяти пару секунд, щоб переглянути цей. 1666 01:18:54,030 --> 01:18:56,750 І це не те, що дійсно здорово. 1667 01:18:56,750 --> 01:18:59,430 А може хтось скажіть мені, чому? 1668 01:18:59,430 --> 01:19:05,650 Що відбувається в Foo і може міг потенційно призвести до щось погане, 1669 01:19:05,650 --> 01:19:06,770 і що, що називається? 1670 01:19:06,770 --> 01:19:07,270 Так. 1671 01:19:07,270 --> 01:19:10,391 АУДИТОРІЯ: Якщо аргумент, що це пройшов у більш ніж 12 символів, 1672 01:19:10,391 --> 01:19:11,454 це може переповнити. 1673 01:19:11,454 --> 01:19:12,370 МАРІЯ ZLATKOVA: Вірно. 1674 01:19:12,370 --> 01:19:14,180 Ідеальний. 1675 01:19:14,180 --> 01:19:15,384 Як це називається? 1676 01:19:15,384 --> 01:19:16,300 Ви щойно згадали його. 1677 01:19:16,300 --> 01:19:16,840 >> АУДИТОРІЯ: Переповнення буфера. 1678 01:19:16,840 --> 01:19:18,381 >> МАРІЯ ZLATKOVA: Так, переповнення буфера. 1679 01:19:18,381 --> 01:19:21,230 Так що це те, що ми називають переповненням буфера. 1680 01:19:21,230 --> 01:19:25,500 І ми бачимо, що всередині Foo, ми визначили нашу буфера, с, 1681 01:19:25,500 --> 01:19:27,240 з розміром від 12. 1682 01:19:27,240 --> 01:19:32,680 Тим не менш, в основному, ми не перевірити в будь-якому випадку на всіх 1683 01:19:32,680 --> 01:19:36,480 Чи так, що argv1-- був другим аргументом. 1684 01:19:36,480 --> 01:19:39,630 Ми не перевіряємо, чи є Розмір доцільно. 1685 01:19:39,630 --> 01:19:43,380 >> Так що, якщо ми мали особливо зловмисник 1686 01:19:43,380 --> 01:19:47,170 які покласти в деяких аргументу, який був більше, ніж 12, і потім, можливо, 1687 01:19:47,170 --> 01:19:50,850 за межі, які Аргумент, були деякі виконуваний код 1688 01:19:50,850 --> 01:19:55,570 що він намагався зробити щось погане з цим; то це, що б сталося, 1689 01:19:55,570 --> 01:19:59,310 буде превалювати повернення адреса функції Foo, 1690 01:19:59,310 --> 01:20:04,370 викликаючи функцію, коли повернення виконати цей код. 1691 01:20:04,370 --> 01:20:07,540 І тоді погані речі може статися. 1692 01:20:07,540 --> 01:20:09,850 Чи має це сенс для всіх? 1693 01:20:09,850 --> 01:20:12,424 >> І як ми можемо захистити проти цього? 1694 01:20:12,424 --> 01:20:13,090 Будь-які пропозиції? 1695 01:20:13,090 --> 01:20:16,480 1696 01:20:16,480 --> 01:20:21,890 В основному, всередині потенційно Foo, як 1697 01:20:21,890 --> 01:20:28,294 ми можемо перевірити, щоб переконатися, що це не може статися? 1698 01:20:28,294 --> 01:20:33,879 >> АУДИТОРІЯ: Якщо розмір 12 буде перевищений, Ви б виділити додаткову пам'ять? 1699 01:20:33,879 --> 01:20:37,170 МАРІЯ ZLATKOVA: Пропозиція це, виділити додаткова пам'ять розміром перевищений. 1700 01:20:37,170 --> 01:20:39,800 Насправді, ми можемо зробити щось набагато простіше, ніж, що, як добре. 1701 01:20:39,800 --> 01:20:44,870 Ми можемо просто отримати довжину рядка аргументу, який вводиться, 1702 01:20:44,870 --> 01:20:48,590 перевірити, якщо це менш або рівним 12-- 1703 01:20:48,590 --> 01:20:50,790 що те, що ми хочемо його бути, тому що ми не хочемо, 1704 01:20:50,790 --> 01:20:52,373 це вихід за межі нашого буфера. 1705 01:20:52,373 --> 01:20:55,690 І потім, якщо це не так, ми може працювати з аргументом. 1706 01:20:55,690 --> 01:21:00,296 І потім, якщо це відбудеться, ми насправді хочемо щоб Yello потенційно у користувача. 1707 01:21:00,296 --> 01:21:01,670 Але це, як ми б цього робити. 1708 01:21:01,670 --> 01:21:02,443 Так. 1709 01:21:02,443 --> 01:21:04,360 >> АУДИТОРІЯ: Могли б ви пояснити тетсру дуже швидко? 1710 01:21:04,360 --> 01:21:05,443 МАРІЯ ZLATKOVA: О, вибачте. 1711 01:21:05,443 --> 01:21:06,040 Так. 1712 01:21:06,040 --> 01:21:11,290 Тетсру приймає всі is-- вибачте, ОК. 1713 01:21:11,290 --> 01:21:15,850 Тетсру приймає все, що в барі, все, що передається 1714 01:21:15,850 --> 01:21:18,050 на Foo як аргумент командного рядка. 1715 01:21:18,050 --> 01:21:19,440 Таким чином, це займе argv1. 1716 01:21:19,440 --> 01:21:21,420 Argv1 називається бар тут. 1717 01:21:21,420 --> 01:21:24,453 Таким чином, це займе бар і це буде скопіювати його в с. 1718 01:21:24,453 --> 01:21:25,402 >> АУДИТОРІЯ: ОК. 1719 01:21:25,402 --> 01:21:28,360 МАРІЯ ZLATKOVA: І він збирається copy-- третій аргумент просто відноситься 1720 01:21:28,360 --> 01:21:30,601 про те, скільки це буде скопіювати в с. 1721 01:21:30,601 --> 01:21:31,142 АУДИТОРІЯ: Ах. 1722 01:21:31,142 --> 01:21:33,030 Так що це свого копіювання все це потім. 1723 01:21:33,030 --> 01:21:34,310 >> МАРІЯ ZLATKOVA: Так, це копіювання всього цього. 1724 01:21:34,310 --> 01:21:34,810 Так. 1725 01:21:34,810 --> 01:21:38,400 1726 01:21:38,400 --> 01:21:41,910 По-перше, ми впевнені, бар не дорівнює нулю, тому що це покажчик. 1727 01:21:41,910 --> 01:21:44,680 Тоді ми отримаємо довжину рядка бар. 1728 01:21:44,680 --> 01:21:47,530 Ми впевнені, що це менше або дорівнює 12. 1729 01:21:47,530 --> 01:21:50,070 А потім, тому що ми переконалися, ми можемо насправді 1730 01:21:50,070 --> 01:21:53,122 тетсру і бути впевнені, що це нормально. 1731 01:21:53,122 --> 01:21:53,705 Які-небудь питання? 1732 01:21:53,705 --> 01:21:56,280 1733 01:21:56,280 --> 01:21:58,690 Відмінно. 1734 01:21:58,690 --> 01:22:00,400 У мене є два істинним чи хибним питання. 1735 01:22:00,400 --> 01:22:05,470 Може хто-небудь сказати мені відразу якщо вони істинними чи хибні? 1736 01:22:05,470 --> 01:22:07,460 Так, це брехня. 1737 01:22:07,460 --> 01:22:07,960 Точно. 1738 01:22:07,960 --> 01:22:09,330 Обидва з них є помилковими. 1739 01:22:09,330 --> 01:22:12,682 Таким чином, використання одного пароля ніколи не дійсно хороша ідея 1740 01:22:12,682 --> 01:22:14,890 тому що, якщо хтось знає пароль, вони можуть просто 1741 01:22:14,890 --> 01:22:16,260 доступ до всіх інших свої рахунки. 1742 01:22:16,260 --> 01:22:19,260 А потім ікони нічого не робити для забезпечення безпеки. 1743 01:22:19,260 --> 01:22:24,900 Ми повинні, як правило, шукають HTTPS замість HTTP і URL. 1744 01:22:24,900 --> 01:22:28,560 >> І деякі інші види атак, які ми вже згадували, 1745 01:22:28,560 --> 01:22:31,390 що Девід згадується в лекції, атаки SQL-ін'єкції. 1746 01:22:31,390 --> 01:22:37,310 Ми вже бачили, що, якщо ми don't-- Функція CS50 запит гарантує, що SQL 1747 01:22:37,310 --> 01:22:39,530 атаки ін'єкції не може статися. 1748 01:22:39,530 --> 01:22:42,640 Але якщо ми не використовували CS50, цитата, кінець цитати "в запиті," 1749 01:22:42,640 --> 01:22:46,830 ми повинні були б переконатися, що користувальницький введення насправді не деякі SQL 1750 01:22:46,830 --> 01:22:49,670 запит, який буде викликати все Наші столи для впав 1751 01:22:49,670 --> 01:22:54,070 або щось погане, щоб станеться з нашою базою даних. 1752 01:22:54,070 --> 01:22:56,790 >> Угон сесії є ще один тип атаки 1753 01:22:56,790 --> 01:23:05,940 що відбувається, коли деякі погано людина використовує сесії деяких жертви 1754 01:23:05,940 --> 01:23:08,740 ID для доступу до реєстраційної інформації. 1755 01:23:08,740 --> 01:23:13,620 Таким чином, дуже тривіальний приклад, який як якщо у нас є комп'ютер в громадському, 1756 01:23:13,620 --> 01:23:21,120 то погана людина входить в, а потім вони мають печиво, збережені. 1757 01:23:21,120 --> 01:23:23,380 І печиво не зміниться сесії. 1758 01:23:23,380 --> 01:23:27,620 >> Тоді ми жертвою перейти в а потім зайти на сайт. 1759 01:23:27,620 --> 01:23:30,290 Печиво не змінити протягом певного сеансу. 1760 01:23:30,290 --> 01:23:33,060 І тоді жертва реєструє в сайт, а потім йде. 1761 01:23:33,060 --> 01:23:36,190 І тоді людина, яка сходить може як і раніше використовувати їх ідентифікатор сеансу 1762 01:23:36,190 --> 01:23:37,430 щоб отримати доступ до інформації. 1763 01:23:37,430 --> 01:23:40,050 Так ось один з прикладів як це могло трапитися. 1764 01:23:40,050 --> 01:23:45,570 >> І тоді я б не надто турбуватися про конкретну код або що-небудь 1765 01:23:45,570 --> 01:23:49,270 так що може привести до цього, але мають якоюсь ідеєю, що в 1766 01:23:49,270 --> 01:23:51,400 змінні, що беруть участь в цьому є. 1767 01:23:51,400 --> 01:23:53,897 А потім маніпулювати заголовок дані ще один тип атаки 1768 01:23:53,897 --> 01:23:55,230 що має Девід говорив о. 1769 01:23:55,230 --> 01:23:59,730 І це якраз відноситься до те, що може статися, коли 1770 01:23:59,730 --> 01:24:04,300 відповідь, то HTTP відповідь всередині нашого заголовка 1771 01:24:04,300 --> 01:24:05,720 не продезінфікують належним чином. 1772 01:24:05,720 --> 01:24:14,340 >> І будь-який з fields-- наприклад, якщо хтось переписує один із заголовку 1773 01:24:14,340 --> 01:24:18,860 Значення містити щось більше, ніж що вони повинні contain-- і фактично 1774 01:24:18,860 --> 01:24:22,720 містить, наприклад, 200 Код ОК-статус, то вони 1775 01:24:22,720 --> 01:24:26,890 потенційно може зробити шкідливий речі, коли вони не повинні. 1776 01:24:26,890 --> 01:24:30,815 Але я не хвилюйтеся б занадто багато про конкретну код 1777 01:24:30,815 --> 01:24:34,110 які можуть призвести до цього, тільки вид розуміння 1778 01:24:34,110 --> 01:24:37,290 на високому рівні такі речі. 1779 01:24:37,290 --> 01:24:39,570 >> Я думаю, що це все що у нас є, щоб покрити. 1780 01:24:39,570 --> 01:24:40,090 Дивовижний. 1781 01:24:40,090 --> 01:24:43,310 Хто-небудь є які-небудь питання по будь з речей, які ми розповідали? 1782 01:24:43,310 --> 01:24:44,213 Так. 1783 01:24:44,213 --> 01:24:48,077 >> АУДИТОРІЯ: Так один вид більш матеріально питання. 1784 01:24:48,077 --> 01:24:53,400 Чи є зміст основному зосереджені на речі після вікторини 1? 1785 01:24:53,400 --> 01:24:55,730 >> МАРІЯ ZLATKOVA: Так Питання в тому, є вміст 1786 01:24:55,730 --> 01:24:59,720 зосереджена головним чином на речі після вікторини 1? 1787 01:24:59,720 --> 01:25:06,070 Таким чином, акцент робиться на після Тест 1, за винятком 1788 01:25:06,070 --> 01:25:10,914 що ми повинні зосередитися на речах, в pset5 і багато структур даних 1789 01:25:10,914 --> 01:25:11,580 що ми розглянули. 1790 01:25:11,580 --> 01:25:14,300 І ми не можемо сказати, що ми може ігнорувати що-небудь до 1791 01:25:14,300 --> 01:25:17,120 , Тому що це опирається на нього, а також. 1792 01:25:17,120 --> 01:25:21,845 >> Так зосередитися на тому, що, плюс pset5 матеріал як у тому числі пов'язані списки, стеки, 1793 01:25:21,845 --> 01:25:23,720 Черги, і всі що Ханна підійшла. 1794 01:25:23,720 --> 01:25:24,050 >> Ханна Блумберг: Вірно. 1795 01:25:24,050 --> 01:25:27,450 Так, ми пішли по всій C речі на самому початку дуже швидко. 1796 01:25:27,450 --> 01:25:29,090 Але переконайтеся, що для розгляду цього. 1797 01:25:29,090 --> 01:25:32,700 Поверніться назад і подивитися вікторини 0 відгук. 1798 01:25:32,700 --> 01:25:36,110 >> Ще пара логістичні зазначає, просто в той час як у нас є Вашу увагу. 1799 01:25:36,110 --> 01:25:39,100 Ми матимемо робочі години і в понеділок, і у вівторок ввечері. 1800 01:25:39,100 --> 01:25:41,540 Вони збираються, щоб бути в MD 119. 1801 01:25:41,540 --> 01:25:44,220 Це все на сайті, так що якщо ви не чуєте його, ні турбот. 1802 01:25:44,220 --> 01:25:45,266 >> МАРІЯ ZLATKOVA: з 8:30 до 11:00. 1803 01:25:45,266 --> 01:25:46,260 >> Ханна Блумберг: Так, з 8:30 до 11:00. 1804 01:25:46,260 --> 01:25:46,910 Ми будемо там. 1805 01:25:46,910 --> 01:25:48,368 Ми будемо там, щоб відповісти на питання. 1806 01:25:48,368 --> 01:25:49,480 Це досить холод і веселощі. 1807 01:25:49,480 --> 01:25:53,240 Ви, хлопці, можете задати будь-які питання що у вас на вікторину 1. 1808 01:25:53,240 --> 01:25:55,740 І вікторини на 1 Середа, так що удачі. 1809 01:25:55,740 --> 01:25:59,770 Якщо у вас є які-небудь питання, можливо, прийти поговорити з нами тут один на один. 1810 01:25:59,770 --> 01:26:00,880 Прохолодний. 1811 01:26:00,880 --> 01:26:01,630 Дуже дякую. 1812 01:26:01,630 --> 01:26:02,880 >> МАРІЯ ZLATKOVA: спасибі, хлопці. 1813 01:26:02,880 --> 01:26:03,480 >> АУДИТОРІЯ: Ура. 1814 01:26:03,480 --> 01:26:05,930 >> [Оплески] 1815 01:26:05,930 --> 01:26:07,530