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, неверный запрос; 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, опять же, Structured Query Language. 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 Где больше года чем или равно 2016, 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