1 00:00:00,000 --> 00:00:01,940 >> [Музыка, играющая] 2 00:00:01,940 --> 00:00:11,130 3 00:00:11,130 --> 00:00:14,620 >> DAVID Маланом: Это CS 50, и это начало недели девять. 4 00:00:14,620 --> 00:00:18,240 И то, что мы думали, что мы делаем сегодня, это не только закрыть главу о прошлой недели 5 00:00:18,240 --> 00:00:22,670 Материал, где мы сосредоточились на сервере сторона веб-программирование с PHP и SQL, 6 00:00:22,670 --> 00:00:23,549 некоторые базы данных материал. 7 00:00:23,549 --> 00:00:25,590 Мы будем говорить о чем-то вроде сегодня безопасность, а затем 8 00:00:25,590 --> 00:00:29,590 Переход к программированию на стороне клиента язык известен как JavaScript. 9 00:00:29,590 --> 00:00:31,330 Но во-первых, некоторые выкуп. 10 00:00:31,330 --> 00:00:35,030 >> Вы можете вспомнить, что на Среда, я отправился 11 00:00:35,030 --> 00:00:37,550 написать сайт, который взял на входе пользователя 12 00:00:37,550 --> 00:00:41,120 с помощью HTML-форм, что затем сохраняются что имена пользовательского ввода, телефон 13 00:00:41,120 --> 00:00:43,124 номера, и телефон носителей в базе данных. 14 00:00:43,124 --> 00:00:45,540 А потом у меня было немного команду строка сценария написал в PHP 15 00:00:45,540 --> 00:00:47,956 , который должен был повторять более строк в базе данных 16 00:00:47,956 --> 00:00:49,400 и отправить текстовые сообщения. 17 00:00:49,400 --> 00:00:53,870 Несмотря на несколько, несколько попыток, мы не заставили это работать до конца. 18 00:00:53,870 --> 00:00:57,820 >> Так я провел этим всю неделю работает на этот код, чтобы получить нас мимо точки 19 00:00:57,820 --> 00:01:01,220 где мы остановились, в результате чего все Я получил к концу среды 20 00:01:01,220 --> 00:01:05,500 было это текст сообщения от Марго, как я боролся, 21 00:01:05,500 --> 00:01:09,940 затем текстовое сообщение от другого одноклассник, Вы должны эту Давида. 22 00:01:09,940 --> 00:01:14,030 Вслед за этим, удивительно обнадеживает. 23 00:01:14,030 --> 00:01:15,840 Продолжал идти, очень отрадно. 24 00:01:15,840 --> 00:01:20,960 Я почти не получил его до then-- и это примечание, мы закончили в среду. 25 00:01:20,960 --> 00:01:25,850 И тогда на самом деле, возможно, мой любимый, Мгновение спустя, это произошло в. 26 00:01:25,850 --> 00:01:27,000 Черт прямая трансляция. 27 00:01:27,000 --> 00:01:31,080 >> Итак, сегодня мы это исправить с быстрым посмотреть на то, что я сделал с тех пор. 28 00:01:31,080 --> 00:01:35,440 Так весь этот код доступен онлайн с прошлой недели, недели восемь, 29 00:01:35,440 --> 00:01:36,300 Исходный код. 30 00:01:36,300 --> 00:01:39,425 И вы увидите, что я прошел через, и я на самом деле очистить вещи немного. 31 00:01:39,425 --> 00:01:42,080 Я представил пару с другом особенности базе данных SQL. 32 00:01:42,080 --> 00:01:45,300 Например, вместо того, просто сделать носитель вар гольца 33 00:01:45,300 --> 00:01:47,310 как я думаю, что я сделал на лету на прошлой неделе. 34 00:01:47,310 --> 00:01:49,820 Я вместо определил его как то, что называется перечисление. 35 00:01:49,820 --> 00:01:53,310 >> И некоторые из вас, возможно, видели это как мы исследовали С. Enum на самом деле 36 00:01:53,310 --> 00:01:56,820 Особенностью С, где вы можете перечислить целую кучу констант 37 00:01:56,820 --> 00:01:59,640 и назначить их автоматическое значения, как один, два, три, четыре 38 00:01:59,640 --> 00:02:01,330 без жестких кодовыми номерами. 39 00:02:01,330 --> 00:02:04,780 Так SQL поддерживает то же самое, в котором, если у вас есть поле базы данных, только вы 40 00:02:04,780 --> 00:02:09,389 хочу взять на одной из конечных значения, вы можете буквально указать его 41 00:02:09,389 --> 00:02:13,120 как я сделал там в течение четырех популярные мобильников американские операторы. 42 00:02:13,120 --> 00:02:13,819 >> Так что я сделал это. 43 00:02:13,819 --> 00:02:16,610 И я сделал ряд изменений, как хорошо, самое главное из которых 44 00:02:16,610 --> 00:02:20,090 был Виртуальный работы, потому что отзыве, что эта программа опиралась на которых 45 00:02:20,090 --> 00:02:23,470 как правило, называют электронной почте, чтобы SMS шлюз, который является просто 46 00:02:23,470 --> 00:02:27,670 причудливый способ сказать, что Verizon, и AT & T, и другие люди поддерживают сервер, 47 00:02:27,670 --> 00:02:30,740 в результате чего, если он получает по электронной почте, он преобразует его в SMS 48 00:02:30,740 --> 00:02:33,290 и посылает текст Сообщение на другой телефон. 49 00:02:33,290 --> 00:02:37,010 Так что, если я сделал это правильно, вот новый и улучшенный вид 50 00:02:37,010 --> 00:02:39,259 что собирается поговорить с Новый и улучшенный код, который 51 00:02:39,259 --> 00:02:40,300 Вы можете играть с онлайн. 52 00:02:40,300 --> 00:02:44,140 И это будет, надеюсь, сделать мой телефон сигнал в минуту. 53 00:02:44,140 --> 00:02:47,240 >> Итак, сначала я собираюсь ввести в мое имя. 54 00:02:47,240 --> 00:02:51,400 Во-вторых, я не собираюсь сделать это в этот раз. 55 00:02:51,400 --> 00:02:53,920 Я собираюсь сделать Осмотрите элемент. 56 00:02:53,920 --> 00:02:56,710 И это всего лишь мелочь, так что я не 57 00:02:56,710 --> 00:02:59,250 создать часов после производства работать, как я сделал в прошлый раз. 58 00:02:59,250 --> 00:03:02,300 Там сейчас находится мой номер телефона. 59 00:03:02,300 --> 00:03:03,560 >> Я выбрать Verizon. 60 00:03:03,560 --> 00:03:10,260 И вот, давайте обратимся на этой микрофоном здесь, и цель эта в моем телефоне здесь. 61 00:03:10,260 --> 00:03:13,130 Я собираюсь нажмите Регистрация, которые, будем надеяться, 62 00:03:13,130 --> 00:03:14,530 положить его в базу данных. 63 00:03:14,530 --> 00:03:16,780 Теперь я собираюсь поехать в Программа командной строки, которые 64 00:03:16,780 --> 00:03:20,825 Напомним назывался точка слэш Текст и скрестите пальцы. 65 00:03:20,825 --> 00:03:24,092 66 00:03:24,092 --> 00:03:26,527 Здесь мы идем. 67 00:03:26,527 --> 00:03:27,501 >> [PHONE вмятины] 68 00:03:27,501 --> 00:03:28,962 >> [Аплодисменты] 69 00:03:28,962 --> 00:03:31,815 70 00:03:31,815 --> 00:03:34,940 DAVID Маланом: Так веселее, чем this-- это интересно, конечно, если бы я попасть в него. 71 00:03:34,940 --> 00:03:38,004 Но это более интересно, я думал, если мы создан один из тех моментов в кино 72 00:03:38,004 --> 00:03:40,420 где как-то на самом деле плохо, что произошло в мире, 73 00:03:40,420 --> 00:03:42,860 и, как и все АНБ Народной телефонов начать пищать 74 00:03:42,860 --> 00:03:44,860 с помощью текстовых сообщений готовность их к этому факту. 75 00:03:44,860 --> 00:03:47,026 Так я думал, что мы попробуем воссоздать то же самое здесь, 76 00:03:47,026 --> 00:03:49,610 чего не используя базу данных, Я вместо заранее 77 00:03:49,610 --> 00:03:51,490 написал программу, которая выглядит следующим образом. 78 00:03:51,490 --> 00:03:53,660 >> Это index.php-- и я положил этот код на сайте 79 00:03:53,660 --> 00:03:56,710 как well-- что, по-видимому просто оказывает form.php, 80 00:03:56,710 --> 00:04:00,990 используя стиль парадигму MVC, что мы говорить о более подробно в проблемной набора 81 00:04:00,990 --> 00:04:01,650 семь. 82 00:04:01,650 --> 00:04:02,910 Это форма довольно проста. 83 00:04:02,910 --> 00:04:06,634 Это собирается представить Файл называется here.php по почте. 84 00:04:06,634 --> 00:04:09,300 И это, по-видимому собирается просить для имени, и номер телефона, 85 00:04:09,300 --> 00:04:11,400 а затем с помощью так называемых Выберите меню, это 86 00:04:11,400 --> 00:04:14,250 собираюсь дать вам по меньшей мере четыре популярные мобильников американские операторы, 87 00:04:14,250 --> 00:04:17,470 а затем позволяют эффективно принять участие, нажав здесь. 88 00:04:17,470 --> 00:04:20,471 >> И здесь, между тем, собирается заимствовать часть кода с прошлого раза. 89 00:04:20,471 --> 00:04:22,553 И если вы просто бегло это, Вы увидите, что есть 90 00:04:22,553 --> 00:04:23,900 целая куча проверки ошибок. 91 00:04:23,900 --> 00:04:26,640 Но красота в конце, что мы не пишем в базу данных сегодня. 92 00:04:26,640 --> 00:04:29,130 Мы держим его простым и просто отправке, мы надеемся, 93 00:04:29,130 --> 00:04:32,190 Текст сообщения через функции I написал в течение последних нескольких дней вызову 94 00:04:32,190 --> 00:04:36,270 Текст, который находится в функции. PHP, что опять-таки доступны в Интернете. 95 00:04:36,270 --> 00:04:38,210 >> Так что, если вы хотите принять участие в этом. 96 00:04:38,210 --> 00:04:40,190 Мы не собираемся быть хранения ничего. 97 00:04:40,190 --> 00:04:43,809 Перейти к следующему адресу здесь в режиме реального времени. 98 00:04:43,809 --> 00:04:46,850 Не помещайте их только пока, но давайте сможем ли мы иметь один из этих фильмов 99 00:04:46,850 --> 00:04:49,830 моменты, когда телефон каждого начинает пищать, надеюсь, просто 100 00:04:49,830 --> 00:04:53,580 один раз в этом году, в отличие от 2011 где это пошло ужасно криво. 101 00:04:53,580 --> 00:04:58,910 И как только вы идете по этому адресу, Вы должны увидеть супер простую форму 102 00:04:58,910 --> 00:05:03,884 что если у вас есть имя, сотовый телефон число, и перевозчик телефон, что 103 00:05:03,884 --> 00:05:06,175 совпадает со списком там, пойдите вперед и заполнить форму. 104 00:05:06,175 --> 00:05:07,880 Но не ударил представить только пока. 105 00:05:07,880 --> 00:05:10,850 >> Форма будет выглядеть вот так. 106 00:05:10,850 --> 00:05:13,660 Идем дальше и ввести в Ваше имя, номер телефона. 107 00:05:13,660 --> 00:05:17,670 Oop, кто-то собирается на опережение. 108 00:05:17,670 --> 00:05:18,170 Это нормально. 109 00:05:18,170 --> 00:05:19,340 ОК, все это заполнил форму. 110 00:05:19,340 --> 00:05:21,400 Это должно работать на телефон тоже, если хотите. 111 00:05:21,400 --> 00:05:23,695 Ладно, на старт, внимание, марш. 112 00:05:23,695 --> 00:05:24,195 Хит Здесь. 113 00:05:24,195 --> 00:05:27,275 114 00:05:27,275 --> 00:05:27,775 Что? 115 00:05:27,775 --> 00:05:31,140 116 00:05:31,140 --> 00:05:31,640 Нет. 117 00:05:31,640 --> 00:05:34,410 118 00:05:34,410 --> 00:05:40,250 Клянусь Богом, я тестировал это несколько раз сегодня. 119 00:05:40,250 --> 00:05:41,720 Вы получили это? 120 00:05:41,720 --> 00:05:43,145 >> [Вставляя ГОЛОСА] 121 00:05:43,145 --> 00:05:46,470 122 00:05:46,470 --> 00:05:49,560 >> DAVID Маланом: ОК, ошибка пользователя, возможно. 123 00:05:49,560 --> 00:05:50,550 Это два. 124 00:05:50,550 --> 00:05:53,300 Он работал для двух из несколько сотен, три, четыре. 125 00:05:53,300 --> 00:05:55,940 Хорошо, что это хорошо. 126 00:05:55,940 --> 00:05:58,520 Четыре из пяти для Правильность, как о. 127 00:05:58,520 --> 00:05:59,810 >> Так что же произошло? 128 00:05:59,810 --> 00:06:02,727 Так, предположительно, не видя ваш экраны, поэтому, возможно, это уже с ошибкой? 129 00:06:02,727 --> 00:06:05,518 Это, наверное, что мы были просто пытается сделать слишком много подключений 130 00:06:05,518 --> 00:06:08,110 на почтовый сервер Гарвардского все в один раз из того же IP-адреса. 131 00:06:08,110 --> 00:06:10,740 Я просто предполагаю, что, так как я не сделал есть роскошь тестирования 132 00:06:10,740 --> 00:06:13,220 этот код с некоторыми 300 человек заранее 133 00:06:13,220 --> 00:06:16,040 но сейчас понимаю, что что по крайней мере должна 134 00:06:16,040 --> 00:06:18,250 получили работу на этот раз. 135 00:06:18,250 --> 00:06:22,880 >> Ладно, так почему же все это более уместны в том, что происходит? 136 00:06:22,880 --> 00:06:24,900 Ну во-первых, быстро Пару объявлений. 137 00:06:24,900 --> 00:06:29,350 Так что, если вы хотите присоединиться Чанг, и Ник, и другие на обед в пятницу, 138 00:06:29,350 --> 00:06:32,400 сделать RSVP в обычное URL там. 139 00:06:32,400 --> 00:06:35,650 Если вы думаете о концентрируясь или делать вторичный в CS, 140 00:06:35,650 --> 00:06:38,941 будь ты на втором курсе, или первокурсник, или даже младшего или старшего в этой точке 141 00:06:38,941 --> 00:06:42,490 и еще можно выжать в курсах, понимают, что в инженерной школе 142 00:06:42,490 --> 00:06:45,620 собирает для свободного Бен и Мороженое и советы Джерри 143 00:06:45,620 --> 00:06:48,910 в среду вскоре после класса в 4:00 вечера в здании CS 144 00:06:48,910 --> 00:06:49,771 на Максвелла Дворкин. 145 00:06:49,771 --> 00:06:51,520 Если это слишком быстро на экране, просто пойти 146 00:06:51,520 --> 00:06:55,260 в cs50.harvard.edu для ссылка на мероприятии Facebook 147 00:06:55,260 --> 00:06:57,140 где можно увидеть более подробную информацию. 148 00:06:57,140 --> 00:07:01,390 >> Между тем, я думал, что исправить еще одна вещь, я попал впросак в среду. 149 00:07:01,390 --> 00:07:04,400 Оказывается, что ID-Марко на Facebook, не было три года. 150 00:07:04,400 --> 00:07:05,230 Это было четыре года. 151 00:07:05,230 --> 00:07:08,330 Оказывается, он был больше тест счета, чем я помню. 152 00:07:08,330 --> 00:07:12,400 Но то, что это было похоже на возможность сделать, это подтянуть URL вроде этого. 153 00:07:12,400 --> 00:07:16,680 >> Вот и получается, что Facebook имеет API, интерфейс прикладного программирования, 154 00:07:16,680 --> 00:07:20,070 которая представляет собой механизм, в котором вы может запрашивать данные программно 155 00:07:20,070 --> 00:07:24,480 на Facebook и получить обратно машину читаемой, не веб-страницы 156 00:07:24,480 --> 00:07:28,690 но только простой текст, что-то называется JavaScript Object Notation. 157 00:07:28,690 --> 00:07:32,150 И в самом деле, если я посещаю этот URL, и увеличить, по умолчанию, 158 00:07:32,150 --> 00:07:34,960 это Марк публично доступная информация. 159 00:07:34,960 --> 00:07:37,430 >> И интересная деталь вот только, что его ID 160 00:07:37,430 --> 00:07:40,670 Действительно, номер четыре, который я понял, как только я сделал это. 161 00:07:40,670 --> 00:07:44,260 Вы можете сделать это самостоятельно, если вы знаете, Ваше имя пользователя Facebook, если у вас есть. 162 00:07:44,260 --> 00:07:45,440 Просто введите его верхнюю есть. 163 00:07:45,440 --> 00:07:46,640 И все это не является частным. 164 00:07:46,640 --> 00:07:48,670 Я просто делаю это даже в режиме инкогнито. 165 00:07:48,670 --> 00:07:49,900 Так что я даже не вошли в систему. 166 00:07:49,900 --> 00:07:54,440 И вы видите, что я по-видимому, был номер пользователя 6454 167 00:07:54,440 --> 00:07:56,480 на Facebook, которая не слишком плохо в эти дни. 168 00:07:56,480 --> 00:07:59,900 Так или иначе, вы также увидите Дополнительная информация есть. 169 00:07:59,900 --> 00:08:02,150 >> И полезный аспект того, что это ты 170 00:08:02,150 --> 00:08:06,890 может написать собственную программу, что как-то объединяет данные, как это 171 00:08:06,890 --> 00:08:08,170 Ваше приложение. 172 00:08:08,170 --> 00:08:10,650 Вы можете расширить возможности пользователей в войти в свой веб-сайт, 173 00:08:10,650 --> 00:08:14,190 не используя свои собственные пользовательские логин и пароль, но, может быть, их Facebook Войти 174 00:08:14,190 --> 00:08:16,170 и получить информацию даже о своих друзьях, 175 00:08:16,170 --> 00:08:18,740 если они одобрить такие, или аналогичный. 176 00:08:18,740 --> 00:08:21,430 Так, обратите внимание, что CS50, слишком, есть некоторые собственные API,, 177 00:08:21,430 --> 00:08:24,620 один для данных каталога Конечно, некоторые для меню объятия в столовой 178 00:08:24,620 --> 00:08:26,730 залы, все здания и места 179 00:08:26,730 --> 00:08:30,930 на территории кампуса нас есть API для а что вы можете запросить же и получить 180 00:08:30,930 --> 00:08:35,520 назад текстовая информация, вы можете интегрировать в PHP, или JavaScript, или даже, 181 00:08:35,520 --> 00:08:38,320 хотя реже, С основана окончательный проект. 182 00:08:38,320 --> 00:08:41,190 >> Действительно вперед в финал Проект несколько этапов. 183 00:08:41,190 --> 00:08:42,980 Вы получили от нас письмо на днях. 184 00:08:42,980 --> 00:08:45,761 Поймите, что предложения это из-за предстоящий понедельник. 185 00:08:45,761 --> 00:08:49,010 Это не обязательно обязательным, но вы действительно должны получить свои учебные парни 186 00:08:49,010 --> 00:08:51,260 утверждение, прежде чем сделать любые изменения после этого. 187 00:08:51,260 --> 00:08:54,280 И тогда вперед являются Ряд других этапов. 188 00:08:54,280 --> 00:08:56,542 >> Таким образом, чтобы дразнить тебя, с некоторыми возможностями, 189 00:08:56,542 --> 00:08:58,250 у нас есть куча эти оттенок лампочки. 190 00:08:58,250 --> 00:09:01,190 И некоторые из вас, ребята, теперь есть некоторые из них в вашей комнате в общежитии, а также. 191 00:09:01,190 --> 00:09:02,920 И они тоже имеют API. 192 00:09:02,920 --> 00:09:07,300 Так вспоминаю те двоичные луковицы недели назад, что Дэн Брэдли и Ансель 193 00:09:07,300 --> 00:09:08,780 Дафф создал для нас. 194 00:09:08,780 --> 00:09:12,560 Они использовали программный интерфейс для это лампочка, которая на данный момент 195 00:09:12,560 --> 00:09:15,232 подключен к электричеству а затем с помощью беспроводного 196 00:09:15,232 --> 00:09:17,690 подключен к небольшой вещи называется мост сюда, 197 00:09:17,690 --> 00:09:21,280 как маленький маршрутизатор проприетарных в этом конкретном устройстве. 198 00:09:21,280 --> 00:09:26,540 >> Но, оказывается, если я знаю, как отправить HTTP сообщения, как мы все теперь делать, 199 00:09:26,540 --> 00:09:31,670 Я могу отправить сообщение, как это это лампочка, чтобы включить его или выключить 200 00:09:31,670 --> 00:09:34,000 или сделать любое количество другие операции по нему. 201 00:09:34,000 --> 00:09:36,110 Обратите внимание, что это не получить, это не пост. 202 00:09:36,110 --> 00:09:37,760 Там еще один называется пут. 203 00:09:37,760 --> 00:09:39,630 Там на самом деле несколько других таких глаголов. 204 00:09:39,630 --> 00:09:42,920 Но обратите внимание, что есть путь там, слэш API, слэш нового разработчика, 205 00:09:42,920 --> 00:09:44,990 слэш свет, слэш один, слэш состояние. 206 00:09:44,990 --> 00:09:49,060 >> Это, по-видимому просто Путь, что компания, Philips, 207 00:09:49,060 --> 00:09:51,640 решил вы должны ударить с просьбой HTTP 208 00:09:51,640 --> 00:09:55,010 если вы хотите, чтобы изменить состояние колбы с использованием HTTP 1.1. 209 00:09:55,010 --> 00:09:56,380 Тогда обратите внимание на пустую строку. 210 00:09:56,380 --> 00:10:00,170 А потом, наконец, то, что выглядит как вид на массив какой-то, 211 00:10:00,170 --> 00:10:04,730 Это опять-таки будет называться JavaScript Object Notation, или Джейсон. 212 00:10:04,730 --> 00:10:08,000 И то, что вы видите здесь является то, что Есть три пары ключ-значение. 213 00:10:08,000 --> 00:10:09,115 >> Один ключ называется на. 214 00:10:09,115 --> 00:10:10,990 И его значение по-видимому, будет верно. 215 00:10:10,990 --> 00:10:13,612 Яркость составляет 128, который это своего рода междунар. 216 00:10:13,612 --> 00:10:15,820 А потом время перехода нулю, что, по-видимому 217 00:10:15,820 --> 00:10:17,970 как долго он собирается принять, чтобы превратить эту вещь на. 218 00:10:17,970 --> 00:10:19,890 >> Так что сейчас это лампочка не горит. 219 00:10:19,890 --> 00:10:22,880 Но если бы я делать то, this-- пусть мне пойти в небольшой шпаргалку 220 00:10:22,880 --> 00:10:25,200 что Дэн создана в advance-- и я собираюсь 221 00:10:25,200 --> 00:10:27,920 идти вперед и скопировать следующая команда. 222 00:10:27,920 --> 00:10:30,200 Curl, как некоторые из вас возможно, почерпнутые на CS50 223 00:10:30,200 --> 00:10:35,080 Обсудить это утилита, как Telnet такой что вы можете моделировать HTTP запросы, 224 00:10:35,080 --> 00:10:36,360 специально ставит. 225 00:10:36,360 --> 00:10:39,710 Я могу отправить эти данные, что конкретно мы просто 226 00:10:39,710 --> 00:10:43,430 увидел минуту назад специально по следующему адресу здесь. 227 00:10:43,430 --> 00:10:46,310 А потом Curl собирается обращаться все необходимые заголовки 228 00:10:46,310 --> 00:10:47,600 и разбор там из. 229 00:10:47,600 --> 00:10:54,700 >> Так что все что мне нужно сделать, это скопировать это в окно терминала, а затем нажмите Ввод. 230 00:10:54,700 --> 00:10:56,000 И лампочка продолжается. 231 00:10:56,000 --> 00:10:59,060 И это все происходит через мой компьютер по беспроводной сети 232 00:10:59,060 --> 00:11:01,960 как-то вниз к мосту, который Затем разговор на эту лампочку. 233 00:11:01,960 --> 00:11:02,960 Я могу сделать что-то еще. 234 00:11:02,960 --> 00:11:07,050 Я могу сделать эту вещь перейти красный например. 235 00:11:07,050 --> 00:11:11,040 Я могу, например, сделать эта вещь пойти зеленый. 236 00:11:11,040 --> 00:11:12,220 Я могу сделать его синим. 237 00:11:12,220 --> 00:11:14,760 >> И заметьте, в каждом из них случаи, все, что я меняю 238 00:11:14,760 --> 00:11:18,540 является так называемая значение оттенка для на самом деле дать ему немного цвета. 239 00:11:18,540 --> 00:11:20,320 Итак, позвольте мне вставить этот, как хорошо. 240 00:11:20,320 --> 00:11:21,000 Теперь он голубой. 241 00:11:21,000 --> 00:11:24,672 >> И вы можете сделать даже любитель вещи where-- пойдем на зеленый. 242 00:11:24,672 --> 00:11:26,630 И я мог бы сделать это из Конечно, с моей кода. 243 00:11:26,630 --> 00:11:30,670 Но даже сам API поддерживает разные операции 244 00:11:30,670 --> 00:11:35,510 как это, которые будут теперь беспокоить нам в течение следующих 30 секунд. 245 00:11:35,510 --> 00:11:39,170 >> Так вот один вкус того, что вы могли бы сделать с API, это один участием 246 00:11:39,170 --> 00:11:40,010 лампочки. 247 00:11:40,010 --> 00:11:42,510 Обратите внимание, что CS50 имеет несколько пары Google Glass, если бы ты 248 00:11:42,510 --> 00:11:45,380 хотели затронуть что-то вместе эти строки, Arduino Unos, которые 249 00:11:45,380 --> 00:11:48,670 являются крошечные компьютеры, по сути, на небольшой печатной плате 250 00:11:48,670 --> 00:11:50,470 что вы можете подключить провода и другие вещи 251 00:11:50,470 --> 00:11:52,732 чтобы и на самом деле контроль Ваш реальный мир среда. 252 00:11:52,732 --> 00:11:54,940 А еще есть пара из новых игрушек, которые у нас есть. 253 00:11:54,940 --> 00:11:59,294 Это один буквально только что прибыл На днях по почте, Мио повязки. 254 00:11:59,294 --> 00:12:01,710 И я подумал, что это способ вам рады о проектах 255 00:12:01,710 --> 00:12:03,720 что вы могли бы использовать с это оборудование будет 256 00:12:03,720 --> 00:12:08,900 быть играть в эту короткий клип что они используют, чтобы дразнить людей 257 00:12:08,900 --> 00:12:10,500 что мы сейчас живем в будущем. 258 00:12:10,500 --> 00:12:13,494 259 00:12:13,494 --> 00:12:15,490 >> [Музыка, играющая] 260 00:12:15,490 --> 00:13:33,410 261 00:13:33,410 --> 00:13:37,109 >> DAVID Маланом: Так в течение нескольких недель, вы тоже может быть, что здорово в CS50 ярмарке. 262 00:13:37,109 --> 00:13:39,150 Еще одно устройство, что мы есть куча, что мы 263 00:13:39,150 --> 00:13:42,090 рад взаймы для проектов называется контроллер движения. 264 00:13:42,090 --> 00:13:45,030 Это небольшое устройство USB подключении к компьютеру, 265 00:13:45,030 --> 00:13:47,520 позволяет вам взаимодействовать с Ваш ноутбук, Mac или PC, 266 00:13:47,520 --> 00:13:51,570 как будто вы были, как Xbox Kinect и на самом деле сделать физические движения гораздо 267 00:13:51,570 --> 00:13:54,509 как мы видим, в этом видение будущего. 268 00:13:54,509 --> 00:13:56,505 >> [Музыка, играющая] 269 00:13:56,505 --> 00:15:03,380 270 00:15:03,380 --> 00:15:06,260 >> DAVID Маланом: Так что даже если у вас есть не знаю, как что-то подобное 271 00:15:06,260 --> 00:15:10,050 могло быть изобретено или работа на аппаратном уровне, независимо от того,. 272 00:15:10,050 --> 00:15:13,520 Даже после того, как несколько месяцев CS50, и понимание программирования 273 00:15:13,520 --> 00:15:19,460 в более общем, и веб-программирование более Недавно, а затем и API-интерфейсы, и HTTP, 274 00:15:19,460 --> 00:15:21,830 Вы будете иметь доступ через программные интерфейсы API, если вас 275 00:15:21,830 --> 00:15:24,680 хочу взять один из них Устройства на самом деле поговорить с ним 276 00:15:24,680 --> 00:15:27,180 и не придется беспокоиться о Лежащая в основе реализация 277 00:15:27,180 --> 00:15:30,220 Детали, которые полностью в соответствии с этой понятия слоев 278 00:15:30,220 --> 00:15:33,610 абстракция, что мы видел в течение семестра. 279 00:15:33,610 --> 00:15:37,990 >> Так же в минувшие выходные, видел пару кусочков новостей. 280 00:15:37,990 --> 00:15:40,640 Перейти сначала перейдите на семинарах, если вас хотелось бы узнать что-то 281 00:15:40,640 --> 00:15:42,160 больше на любое количество вопросов. 282 00:15:42,160 --> 00:15:43,340 Смотрите URL там. 283 00:15:43,340 --> 00:15:45,890 И этот был отправлен мне Чангом, который вы знаете, 284 00:15:45,890 --> 00:15:47,850 кто печати нашу армию слонов. 285 00:15:47,850 --> 00:15:49,910 И это был заголовок следующим образом. 286 00:15:49,910 --> 00:15:51,280 Я в ужасе от моего нового телевизора. 287 00:15:51,280 --> 00:15:54,301 Почему я боюсь, чтобы превратить это вещь, и вы бы тоже. 288 00:15:54,301 --> 00:15:56,050 Так что мы сейчас в указать в семестр, 289 00:15:56,050 --> 00:15:58,860 тоже, где, даже если у вас есть малейшего понимания 290 00:15:58,860 --> 00:16:02,620 о том, как работает веб, и HTTP, и безопасности, такие вещи, как это 291 00:16:02,620 --> 00:16:03,980 должны начать, бросаются в глаза. 292 00:16:03,980 --> 00:16:07,450 Но также, вы поймете, являются ли эти вещи или нет 293 00:16:07,450 --> 00:16:08,430 реальные угрозы. 294 00:16:08,430 --> 00:16:10,940 >> Так что я взял несколько выдержек из этой статьи здесь. 295 00:16:10,940 --> 00:16:12,540 А история такова. 296 00:16:12,540 --> 00:16:14,300 Я сейчас владелец Новый Smart TV, которая 297 00:16:14,300 --> 00:16:18,470 обещает доставить потоковое мультимедийный контент, игры, приложения, 298 00:16:18,470 --> 00:16:21,450 социальные медиа, и Интернет просмотр, ой, и телевидение тоже. 299 00:16:21,450 --> 00:16:24,410 Единственная проблема заключается в том, что я сейчас боюсь его использовать, считает автор. 300 00:16:24,410 --> 00:16:29,592 Вы бы тоже, если вы прочитали 46 страница политика конфиденциальности для телевизора. 301 00:16:29,592 --> 00:16:31,800 Количество данных этой вещь собирает ошеломляет. 302 00:16:31,800 --> 00:16:35,710 Он регистрирует, где, когда, как, и как долго вы планируете использовать телевизор. 303 00:16:35,710 --> 00:16:38,190 Он устанавливает отслеживание печенье, как мы уже обсуждали, 304 00:16:38,190 --> 00:16:40,560 и маяки разработан чтобы определить, когда у вас есть 305 00:16:40,560 --> 00:16:43,185 рассматривается частности содержание или конкретное сообщение по электронной почте 306 00:16:43,185 --> 00:16:45,230 если вы хотите, чтобы проверить электронную почту на экране телевизора. 307 00:16:45,230 --> 00:16:48,430 Он записывает приложения, вы использовать, веб-сайты, которые вы посещаете, 308 00:16:48,430 --> 00:16:52,280 и как вы взаимодействуете с содержанием, делать все, что через ваш смарт-ТВ. 309 00:16:52,280 --> 00:16:55,470 Он также, жутким yet-- это моя addition-- 310 00:16:55,470 --> 00:16:58,140 имеет встроенную камеру с распознавания лиц. 311 00:16:58,140 --> 00:17:01,010 >> Цель состоит в том, чтобы обеспечить контроль жест для телевизора 312 00:17:01,010 --> 00:17:05,490 и позволит вам войти в персонализированные счета, используя ваше лицо. 313 00:17:05,490 --> 00:17:08,940 На верху, образы сохраняется на экране телевизора, а не загружено 314 00:17:08,940 --> 00:17:09,940 к корпоративному серверу. 315 00:17:09,940 --> 00:17:12,520 С другой стороны, интернет- Подключение делает весь телевизор 316 00:17:12,520 --> 00:17:14,811 уязвимы для хакеров, которые продемонстрировали способность 317 00:17:14,811 --> 00:17:16,700 чтобы получить полный контроль над машиной. 318 00:17:16,700 --> 00:17:20,880 >> Больше беспокойства, как будто это не было достаточно умны, это микрофон. 319 00:17:20,880 --> 00:17:23,599 Телевизор отличается голос Функция распознавания 320 00:17:23,599 --> 00:17:26,859 что позволяет зрителям управлять экран с помощью голосовых команд. 321 00:17:26,859 --> 00:17:30,290 Но обслуживание поставляется с а зловещее предупреждение. 322 00:17:30,290 --> 00:17:33,030 Помните, что если Ваши произнесенные слова относятся 323 00:17:33,030 --> 00:17:36,210 личные или другой конфиденциальной Информация, что информация 324 00:17:36,210 --> 00:17:40,310 будет среди данных, захваченных и передается третьему лицу. 325 00:17:40,310 --> 00:17:40,870 Есть что? 326 00:17:40,870 --> 00:17:45,860 Не сказать, личный или чувствительной материал перед вашим телевизором. 327 00:17:45,860 --> 00:17:47,280 >> Так что это на самом деле по-настоящему. 328 00:17:47,280 --> 00:17:50,530 И трудно не увидеть, если вас перейти к Best Buy и т.п. для телевизоров 329 00:17:50,530 --> 00:17:51,030 в эти дни. 330 00:17:51,030 --> 00:17:52,540 Они все умные в некотором роде. 331 00:17:52,540 --> 00:17:54,740 И они получают умнее и жутким. 332 00:17:54,740 --> 00:17:57,490 И они просто сбор данных таким образом, что мы говорили о 333 00:17:57,490 --> 00:18:01,840 а затем загрузить его через HTTP или некоторые другие протокол в какой-то сервер. 334 00:18:01,840 --> 00:18:05,720 >> Так что это было забавной статье в этой онлайн-сайт 335 00:18:05,720 --> 00:18:08,940 здесь, которые говорили о частности ошибка или ошибаюсь код 336 00:18:08,940 --> 00:18:11,340 что мы можем на самом деле связать в дискуссии на прошлой неделе. 337 00:18:11,340 --> 00:18:15,730 Так этот заголовок был, как следует, история идет здесь, 338 00:18:15,730 --> 00:18:18,720 Джош Breckman работал Компания, которая приземлилась контракт 339 00:18:18,720 --> 00:18:22,390 разработать управление контентом Система, или CMS, как они называются, 340 00:18:22,390 --> 00:18:24,380 для достаточно большого сайте правительства. 341 00:18:24,380 --> 00:18:27,300 Большая часть проекта участвует разработка системы управления контентом 342 00:18:27,300 --> 00:18:29,840 так что сотрудники будут возможность создавать и поддерживать 343 00:18:29,840 --> 00:18:31,877 постоянно меняется Содержание для своего сайта. 344 00:18:31,877 --> 00:18:34,210 Дела пошли очень хорошо для через несколько дней после будет жить. 345 00:18:34,210 --> 00:18:37,020 Но на шестой день, дела пошли не так хорошо. 346 00:18:37,020 --> 00:18:39,500 Все содержание по Сайт полностью исчез. 347 00:18:39,500 --> 00:18:42,950 И все страницы привел к дефолту, введите контента веб-страницы. 348 00:18:42,950 --> 00:18:43,810 Упс. 349 00:18:43,810 --> 00:18:46,080 Джош был призван, чтобы исследовать и заметил 350 00:18:46,080 --> 00:18:49,390 что один особенно хлопотно Внешний IP адрес был 351 00:18:49,390 --> 00:18:53,380 вошел и удаляются все Содержание в системе. 352 00:18:53,380 --> 00:18:56,290 >> IP-адрес не принадлежит в какой-то зарубежной хакерской согнутой 353 00:18:56,290 --> 00:18:58,340 на уничтожение полезными Правительство информация. 354 00:18:58,340 --> 00:19:05,190 Это решение о googlebot.com, Собственный веб-ползет паук Google,. 355 00:19:05,190 --> 00:19:06,010 Упс. 356 00:19:06,010 --> 00:19:09,150 После небольшого исследования и карабкаться вокруг, чтобы найти noncorrupt резервного копирования, 357 00:19:09,150 --> 00:19:10,180 Джош нашел проблему. 358 00:19:10,180 --> 00:19:12,700 >> Пользователь скопировал и вставил некоторый контент из одного 359 00:19:12,700 --> 00:19:15,670 страницы на другую, в том числе Изменить гиперссылку 360 00:19:15,670 --> 00:19:17,577 редактировать содержимое страницы. 361 00:19:17,577 --> 00:19:20,160 Как правило, это не будет Вопрос так внешнего пользователя будет 362 00:19:20,160 --> 00:19:24,320 необходимо ввести имя и пароль, но система аутентификации CMS, 363 00:19:24,320 --> 00:19:27,520 Войти система, не учитывать 364 00:19:27,520 --> 00:19:30,980 сложный взлом методы Google Паук. 365 00:19:30,980 --> 00:19:31,700 Упс. 366 00:19:31,700 --> 00:19:33,610 >> Как выясняется, Google Паук не использовать 367 00:19:33,610 --> 00:19:36,950 печенье, а это значит, что он может легко обойти проверку на 368 00:19:36,950 --> 00:19:39,840 регистрируется на печенья набор ложными. 369 00:19:39,840 --> 00:19:42,620 Он также не обратить внимание на JavaScript, который будет нормально 370 00:19:42,620 --> 00:19:45,170 подскажите и перенаправлять пользователей которые не вошли в систему. 371 00:19:45,170 --> 00:19:48,610 Она тем не менее следовать каждый гиперссылка на каждой странице он находит, 372 00:19:48,610 --> 00:19:51,700 в том числе с Удалить страницу в названии. 373 00:19:51,700 --> 00:19:52,650 Упс. 374 00:19:52,650 --> 00:19:56,070 >> Так что же это означает в более технические, но довольно доступные условия? 375 00:19:56,070 --> 00:19:58,340 Это просто означает, что на протяжении всей их веб-сайте, 376 00:19:58,340 --> 00:20:02,287 они имели URL, не в отличие от этого, что Вы могли бы видеть в проблему установить семь. 377 00:20:02,287 --> 00:20:04,620 Напомним, в задачи установить семь или знать проблемы установите семь 378 00:20:04,620 --> 00:20:06,411 что вы бросили вызов, среди прочего, 379 00:20:06,411 --> 00:20:08,570 продавать акции от имени пользователей. 380 00:20:08,570 --> 00:20:14,010 Но реализации этого функцию по пути из получаете через гиперссылки в вашем пользователь 381 00:20:14,010 --> 00:20:16,880 Интерфейс, вероятно, не самый умный идея 382 00:20:16,880 --> 00:20:20,300 потому что если ваш сайт каким-то образом доступны либо человеком 383 00:20:20,300 --> 00:20:23,577 кто нажав вокруг или купить бот, как Google, или паук 384 00:20:23,577 --> 00:20:26,160 как они называются, что это просто сканирования Интернета, пытаясь индекса 385 00:20:26,160 --> 00:20:29,060 Веб в качестве поисковой системы, они могли очень легко 386 00:20:29,060 --> 00:20:31,340 ударил через получить этот вид URL. 387 00:20:31,340 --> 00:20:33,770 И это функционально эквивалентно, в данном случае, 388 00:20:33,770 --> 00:20:37,000 продажа всех акций Google. 389 00:20:37,000 --> 00:20:40,030 >> Теперь, честно говоря, это полностью ослиный, что CMS 390 00:20:40,030 --> 00:20:43,240 б JavaScript и печенье реализовать свою систему входа 391 00:20:43,240 --> 00:20:47,100 и не делает, что на стороне сервера, а Вы, ребята, и будет в Pset 7-- 392 00:20:47,100 --> 00:20:49,940 есть login.php file-- всегда, всегда, 393 00:20:49,940 --> 00:20:52,789 всегда безопасность должна быть сделано на стороне сервера, 394 00:20:52,789 --> 00:20:56,080 не на стороне клиента, потому что, как это Статья предполагает и вы могли бы себя 395 00:20:56,080 --> 00:20:59,600 см в какой-то момент, это тривиально для пользователя, хорошо это или плохо, 396 00:20:59,600 --> 00:21:02,860 чтобы просто выключить JavaScript не говоря уже о печенье. 397 00:21:02,860 --> 00:21:06,020 Так что это ваша ежедневная WTF. 398 00:21:06,020 --> 00:21:07,970 >> Там еще один, который это просто какая-то страшная, 399 00:21:07,970 --> 00:21:11,360 так что я буду говорить об этом, если только как урок жизни. 400 00:21:11,360 --> 00:21:14,850 Всякий раз, когда вы используете приложение называется как Snapchat и т.п. 401 00:21:14,850 --> 00:21:19,380 что говорит эти фотографии только в течение пять секунд, десять секунд, или еще много чего. 402 00:21:19,380 --> 00:21:21,680 Они эфемерны То есть абсолютно не так. 403 00:21:21,680 --> 00:21:25,670 Как нет никакого способа, цифровой, для реализации той или иной форме видео, 404 00:21:25,670 --> 00:21:30,150 или изображение, или текстовая обмена, таких что получатель на другом конце 405 00:21:30,150 --> 00:21:31,660 не может каким-то образом сохранить данные. 406 00:21:31,660 --> 00:21:34,300 >> В наиболее наивным образом, кто- может принять на свой телефон. 407 00:21:34,300 --> 00:21:36,850 И они имеют второе окно 10 в то время как, глядя на некоторые оснастке 408 00:21:36,850 --> 00:21:39,410 просто взять какой-то другой телефон и сфотографировать его, очевидно. 409 00:21:39,410 --> 00:21:41,660 Таким образом, вы можете сохранить что-то в цифровом таким образом. 410 00:21:41,660 --> 00:21:44,620 Некоторые из вас знают, как взять скриншоты на вашем телефоне. 411 00:21:44,620 --> 00:21:49,290 На самом деле, если вы не знаете, это, понять, что, по крайней мере Snapchat, 412 00:21:49,290 --> 00:21:51,040 и я думаю, что другие приложения в эти дни, 413 00:21:51,040 --> 00:21:53,720 по крайней мере, сказать вам, если получатель имеет на самом деле 414 00:21:53,720 --> 00:21:55,310 приняты скриншот вашего образа. 415 00:21:55,310 --> 00:22:00,870 >> Но что еще хуже, это было snappening, как кто-то придумал его недавно, 416 00:22:00,870 --> 00:22:04,680 где некоторые 100000 снимки были освобождены 417 00:22:04,680 --> 00:22:09,310 в то, что называется торрент-файл на различных веб-сайтах, в конечном счете. 418 00:22:09,310 --> 00:22:12,000 И эти содержали целый букет личных сообщений и постов. 419 00:22:12,000 --> 00:22:15,210 Оказывается большинство из них доброкачественные, так не то, что вы могли бы ожидать. 420 00:22:15,210 --> 00:22:17,580 Но потому, что люди были использовать веб-сайт третьей стороны, 421 00:22:17,580 --> 00:22:20,270 вход с их Snapchat имя пользователя и пароль, а затем 422 00:22:20,270 --> 00:22:23,470 сохранения всех своих снимков на этом сайте третьей стороны. 423 00:22:23,470 --> 00:22:26,130 И это было то, что третья сторона сайт, который был взломан, 424 00:22:26,130 --> 00:22:30,710 который просто имел в виду кого-то понял, как чтобы получить все 100 000 плюс этих изображений 425 00:22:30,710 --> 00:22:33,822 в их собственном жестком диске для последующего распределения. 426 00:22:33,822 --> 00:22:36,030 Честно говоря, здесь тоже, это своего рода из ослиный, что Snapchat 427 00:22:36,030 --> 00:22:39,360 реализована таким образом, что третья сторона может сортировать перехвата 428 00:22:39,360 --> 00:22:43,310 данные и что он не привязан к вашему собственное приложение работает на телефоне. 429 00:22:43,310 --> 00:22:46,947 Но и здесь, понимают, что они вещи не должны поймать вас врасплох, 430 00:22:46,947 --> 00:22:49,030 или, по крайней мере, должно быть уроком жизни здесь. 431 00:22:49,030 --> 00:22:52,220 Если вы хотели бы техническим Детали, пойти в тот URL есть 432 00:22:52,220 --> 00:22:53,570 это в сегодняшних слайдов. 433 00:22:53,570 --> 00:23:00,960 Ладно, какие-либо вопросы по сегодняшние уроки жизни в CS? 434 00:23:00,960 --> 00:23:02,710 Поверните, что от. 435 00:23:02,710 --> 00:23:04,970 Все, что угодно? 436 00:23:04,970 --> 00:23:06,301 Все, что угодно? 437 00:23:06,301 --> 00:23:09,050 У меня есть много людей, зарегистрировавшихся их Snapchat или что-то сейчас. 438 00:23:09,050 --> 00:23:11,690 >> Ладно, так SQL, Structured Query Language. 439 00:23:11,690 --> 00:23:12,509 Давайте обернуть это. 440 00:23:12,509 --> 00:23:14,300 А также, даже при том, мы только царапины 441 00:23:14,300 --> 00:23:16,310 Поверхность этого язык, мы дадим вам 442 00:23:16,310 --> 00:23:18,930 достаточно языка в виде Pset 7 443 00:23:18,930 --> 00:23:22,140 так что вы можете решить некоторые довольно часто функциональность. 444 00:23:22,140 --> 00:23:24,912 Но понимаю, что есть пара вещи, которые мы не требующие от вас, 445 00:23:24,912 --> 00:23:27,120 но они собираются быть важно прийти окончательные проекты 446 00:23:27,120 --> 00:23:30,760 и, конечно, приходят делать фактическая сайты с реальных пользователей 447 00:23:30,760 --> 00:23:32,040 это дизайнерское решение. 448 00:23:32,040 --> 00:23:34,460 >> Получается, что в база данных MySQL, вы 449 00:23:34,460 --> 00:23:37,460 есть гроздья выбора, как типы данных для ваших колонок 450 00:23:37,460 --> 00:23:41,670 и другие вещи, но вы также должны Выбор так называемого хранения 451 00:23:41,670 --> 00:23:44,570 Двигатель для всех ваших данных, рода файловой системе, 452 00:23:44,570 --> 00:23:46,700 если вы знакомы, для всех ваших данных. 453 00:23:46,700 --> 00:23:48,830 Какой формат будет в конечном итоге это хранится в? 454 00:23:48,830 --> 00:23:53,300 И самым распространенным, пожалуй, был MyISAM и InnoDB, технические термины 455 00:23:53,300 --> 00:23:56,060 что мы будем заботиться о только до такой степени, что один имеет 456 00:23:56,060 --> 00:23:58,500 и не надо следующая особенность. 457 00:23:58,500 --> 00:24:00,390 >> Предположим, что у вас есть немного общежития холодильник. 458 00:24:00,390 --> 00:24:03,030 И предположим, что вы и ваши сосед по комнате, кто разделяет эту холодильник, 459 00:24:03,030 --> 00:24:04,682 действительно любил скажем молока. 460 00:24:04,682 --> 00:24:07,140 И это, по сути, как история была рассказана мне путь назад 461 00:24:07,140 --> 00:24:10,890 в тот день, когда я взял курс называется CS 161 Операционные системы, которые 462 00:24:10,890 --> 00:24:12,580 Аналогично рассматривается темой. 463 00:24:12,580 --> 00:24:13,760 Итак, вы получили этот холодильник. 464 00:24:13,760 --> 00:24:14,630 Ты из молока. 465 00:24:14,630 --> 00:24:17,000 И вы приходите домой, ваша соседка-х еще в классе или что-то, 466 00:24:17,000 --> 00:24:19,208 и вы решили, что я собираюсь выйти и получить немного молока. 467 00:24:19,208 --> 00:24:22,630 Таким образом, вы закрыть холодильник, блокировка комнаты в общежитии, пойти через улицу 468 00:24:22,630 --> 00:24:25,330 в CVS или там, где и получить в очереди, чтобы купить немного молока. 469 00:24:25,330 --> 00:24:28,960 >> Между тем, ваш сосед по комнате вернется домой от класса, попадает в комнате общежития, 470 00:24:28,960 --> 00:24:31,802 открывает холодильник, также понимает, ooph, мы из молока. 471 00:24:31,802 --> 00:24:33,760 Таким образом, он или она закрывается холодильник, а затем происходит 472 00:24:33,760 --> 00:24:35,610 чтобы перейти на другой CVS, которые, случается, 473 00:24:35,610 --> 00:24:38,470 в одном квартале от других CVS на площади, и получает в соответствии 474 00:24:38,470 --> 00:24:40,230 туда, чтобы получить немного молока. 475 00:24:40,230 --> 00:24:42,524 Сейчас, конечно, несколько минут позже, вы оба получите обратно, 476 00:24:42,524 --> 00:24:44,690 и худший из всех возможных Результаты случилось. 477 00:24:44,690 --> 00:24:45,792 У вас обоих молоко. 478 00:24:45,792 --> 00:24:47,500 И вы действительно не как молоко, что много. 479 00:24:47,500 --> 00:24:49,625 Так один из них является просто собирается портиться в какой-то момент. 480 00:24:49,625 --> 00:24:55,941 Так что теперь у вас есть чрезмерное количество молока в холодильнике все потому, что, почему? 481 00:24:55,941 --> 00:24:57,072 >> [Неразборчиво] 482 00:24:57,072 --> 00:24:59,780 DAVID Маланом: Да, вы не сделали как-то общаться друг с другом 483 00:24:59,780 --> 00:25:00,904 что вы получали молоко. 484 00:25:00,904 --> 00:25:04,320 Таким образом, в простейших способы в человеческом мире, 485 00:25:04,320 --> 00:25:08,390 как Вы могли бы избежать этого глупо Сценарий не происходило таких 486 00:25:08,390 --> 00:25:09,750 что вы только в конечном итоге с одной. 487 00:25:09,750 --> 00:25:10,840 Текст их, да ладно. 488 00:25:10,840 --> 00:25:12,877 Но как иначе? 489 00:25:12,877 --> 00:25:13,460 После он отмечает. 490 00:25:13,460 --> 00:25:14,626 DAVID Маланом: пост это к сведению. 491 00:25:14,626 --> 00:25:17,150 Любая форма общения что говорит ваш сосед по комнате 492 00:25:17,150 --> 00:25:18,670 не идут в холодильник для молока. 493 00:25:18,670 --> 00:25:20,440 Я собираюсь пойти пополнить самостоятельно. 494 00:25:20,440 --> 00:25:22,770 Таким образом, вы как-то нужно для блокировки этого ресурса. 495 00:25:22,770 --> 00:25:27,180 Таким образом, мы можем сделать this-- мы можем вид разрушить историю и превратиться в истории CS 496 00:25:27,180 --> 00:25:30,360 в результате чего думать об этом как раз как Переменная, которая хранит какую-то ценность. 497 00:25:30,360 --> 00:25:32,570 И прямо сейчас, ценность молока равна нулю, 498 00:25:32,570 --> 00:25:35,410 которые вы не хотите, чтобы ваши сосед по комнате, чтобы осмотреть эту переменную 499 00:25:35,410 --> 00:25:38,730 а затем принять решение его или себя в зависимости от состояния этой переменной 500 00:25:38,730 --> 00:25:42,430 если вы находитесь в процессе изменения состояния этой переменной. 501 00:25:42,430 --> 00:25:46,140 >> Так одним из направлений SQL, что мы дать вам в Pset 7 спецификации 502 00:25:46,140 --> 00:25:47,310 это один здесь. 503 00:25:47,310 --> 00:25:49,740 И мы не тратим огромное Количество времени говорить об этом. 504 00:25:49,740 --> 00:25:55,100 Но, оказывается, если вы пытаетесь купить некоторый запас в CS50 финансов 505 00:25:55,100 --> 00:25:58,000 что у вас уже есть некоторые акции, вам 506 00:25:58,000 --> 00:26:01,750 хочу быть в состоянии сделать ряд вещей мгновенно вместе. 507 00:26:01,750 --> 00:26:04,360 Вы хотите, чтобы иметь возможность эффективно, на высоком уровне, 508 00:26:04,360 --> 00:26:06,700 проверить все в порядке, если я хочу чтобы купить больше акций Free, 509 00:26:06,700 --> 00:26:08,780 мелкие акции, мы говорить в спецификации, 510 00:26:08,780 --> 00:26:10,660 Я хочу, чтобы первой проверки сколько акций у меня есть. 511 00:26:10,660 --> 00:26:11,810 И полагаю, что это пять. 512 00:26:11,810 --> 00:26:14,600 И предположим, что я хочу, чтобы купить более 10, я в конечном итоге 513 00:26:14,600 --> 00:26:17,069 хочу иметь 15 акциями. 514 00:26:17,069 --> 00:26:18,360 Так что у меня два вопроса. 515 00:26:18,360 --> 00:26:20,230 Что государство переменной? 516 00:26:20,230 --> 00:26:21,470 Что состояние подряд? 517 00:26:21,470 --> 00:26:22,970 Сколько акций я могу себе иметь? 518 00:26:22,970 --> 00:26:24,636 Тогда вы хотите, чтобы идти вперед и обновлять его. 519 00:26:24,636 --> 00:26:27,720 Так вот аналог молоко в том, что вы проверить строку, 520 00:26:27,720 --> 00:26:30,730 а затем вы хотите обновить его потому что, если вы хотите купить 10 акций, 521 00:26:30,730 --> 00:26:32,521 Вы не хотите, чтобы изменить строка 10, вы 522 00:26:32,521 --> 00:26:35,300 хотите изменить его на 5 плюс 10 или, конечно, 15. 523 00:26:35,300 --> 00:26:40,030 >> Эта строка кода гарантирует, что эти два концептуальные идеи 524 00:26:40,030 --> 00:26:42,810 произойдет вместе или нет вообще. 525 00:26:42,810 --> 00:26:46,920 Никто, в том числе какой-то другой пользователь кто вошел в ту же веб-сайте, 526 00:26:46,920 --> 00:26:49,900 может как-то прервать проверка строки 527 00:26:49,900 --> 00:26:52,960 и обновление строки, выбрать и обновление, если хотите. 528 00:26:52,960 --> 00:26:57,360 И синтаксис не супер очевидно, но это одна строка, долго это, 529 00:26:57,360 --> 00:27:01,150 гарантирует, что эти две операции проверить переменную или проверить строку 530 00:27:01,150 --> 00:27:04,660 и обновить ряд случиться атомно. 531 00:27:04,660 --> 00:27:06,849 >> О, здесь мы идем снова. 532 00:27:06,849 --> 00:27:07,890 Текстовое сообщение на моем телефоне. 533 00:27:07,890 --> 00:27:09,954 Так давайте сделаем это немного более конкретными. 534 00:27:09,954 --> 00:27:12,120 Предположим, что вы не реализации холодильник, 535 00:27:12,120 --> 00:27:16,400 и вы не реализации Pset 7, но фактическая банк, 536 00:27:16,400 --> 00:27:20,000 или ATM, Automated Teller Машина, в котором вы каким-то образом 537 00:27:20,000 --> 00:27:22,960 хочу, чтобы иметь возможность для расширения возможностей пользователям передавать деньги 538 00:27:22,960 --> 00:27:24,500 с одного счета на другой. 539 00:27:24,500 --> 00:27:25,100 ОК, держись. 540 00:27:25,100 --> 00:27:26,683 Я собираюсь отключить это сейчас, спасибо. 541 00:27:26,683 --> 00:27:30,450 Поэтому мы хотим, чтобы перевести деньги с одного номера счета 542 00:27:30,450 --> 00:27:33,600 в другой учетной записи число, в частности, $ 100. 543 00:27:33,600 --> 00:27:37,690 Так что это своего рода произвольное пример, в котором вы, банкомат, 544 00:27:37,690 --> 00:27:41,060 возможно, захотите выполнить два SQL запросы, вычесть из одной учетной записи, 545 00:27:41,060 --> 00:27:42,430 и добавить в другой учетной записи. 546 00:27:42,430 --> 00:27:46,766 Но вы хотите, чтобы убедиться, что эти две линии и произойдет или не на всех. 547 00:27:46,766 --> 00:27:48,640 Вы что-то не хочу получение прерывается. 548 00:27:48,640 --> 00:27:51,440 Вы не одни умные плохой парень как-то стоял в Банке Америки 549 00:27:51,440 --> 00:27:53,270 с двумя банкоматов в передней из него и как-то 550 00:27:53,270 --> 00:27:55,270 рода набрав в команды, в то же время, 551 00:27:55,270 --> 00:28:01,230 надеюсь, пытаясь удержать $ 200 вместо $ 100 и только имея $ 100 кредитуется. 552 00:28:01,230 --> 00:28:04,450 Короче говоря, вы хотите, чтобы это ведут себя именно так, как вы ожидаете. 553 00:28:04,450 --> 00:28:06,540 >> И то, как вы делаете это в SQL база данных 554 00:28:06,540 --> 00:28:09,350 Вы оберните его в то, что называется сделка. 555 00:28:09,350 --> 00:28:14,290 Буквально в SQL, вы можете позвонить CS50-х Функция запроса с цитатой конец цитаты начала 556 00:28:14,290 --> 00:28:15,370 Сделка. 557 00:28:15,370 --> 00:28:18,640 Тогда вы можете выполнить любое количество из последующих запросов SQL, 558 00:28:18,640 --> 00:28:20,870 но ни один из них не принимать влияет на базе 559 00:28:20,870 --> 00:28:25,880 до вызова запроса цитата конец цитаты совершить, если еще раз, используя PHP. 560 00:28:25,880 --> 00:28:29,810 И таким образом, вы можете быть уверены, что даже если у вас есть 1000 пользователей все 561 00:28:29,810 --> 00:28:32,080 попав базы данных в то же время, SQL- 562 00:28:32,080 --> 00:28:34,540 обещаю, что это два запроса будет 563 00:28:34,540 --> 00:28:36,740 реализован один за другим. 564 00:28:36,740 --> 00:28:40,330 Таким образом, вы не в конечном итоге с избытком молоко или неправильный размер, в итоге, 565 00:28:40,330 --> 00:28:40,830 денег. 566 00:28:40,830 --> 00:28:43,110 >> Так что имейте это в виду, не столько для Pset 7 567 00:28:43,110 --> 00:28:45,250 но для окончательных проектов если вы на самом деле 568 00:28:45,250 --> 00:28:49,690 пытаются перемещать данные по таблицам, как вы могли бы здесь. 569 00:28:49,690 --> 00:28:53,980 Но, пожалуй, еще более простой и более Очевидно, чтобы понять, с примера 570 00:28:53,980 --> 00:28:54,860 это один здесь. 571 00:28:54,860 --> 00:28:57,760 А кто-то по электронной почте нам о это только на днях 572 00:28:57,760 --> 00:28:59,600 когда он увидел что-то подобное в Интернете. 573 00:28:59,600 --> 00:29:03,480 >> Так, насколько мне известно, в контактном системы не подвержены этой атаке. 574 00:29:03,480 --> 00:29:06,637 И я понятия не имею, если он даже использует база данных SQL под капотом. 575 00:29:06,637 --> 00:29:08,470 Но давайте использовать его для ради обсуждения. 576 00:29:08,470 --> 00:29:10,178 Вот экран, что Гарвардский люди, как правило, 577 00:29:10,178 --> 00:29:13,620 чтобы увидеть при входе в систему с Гарвардский идентификационный номер и их контактный. 578 00:29:13,620 --> 00:29:19,020 И полагаю, что штифт система были реализованы в PHP и с MySQL 579 00:29:19,020 --> 00:29:22,000 базы данных, код, который кто- возможно, написанные лет назад 580 00:29:22,000 --> 00:29:23,270 может выглядеть следующим образом. 581 00:29:23,270 --> 00:29:25,230 Во-первых, объявить Переменная называется имя пользователя. 582 00:29:25,230 --> 00:29:27,560 И просто получить, что из POST суперглобальная. 583 00:29:27,560 --> 00:29:30,140 Тогда получите еще одну переменную называется пароль и сделать то же самое. 584 00:29:30,140 --> 00:29:33,080 А потом просто выполнить это долго запрос здесь, 585 00:29:33,080 --> 00:29:36,690 выберите звезда из пользователей, где Имя пользователя равен такой- 586 00:29:36,690 --> 00:29:38,510 и пароль равна такой-то. 587 00:29:38,510 --> 00:29:40,660 >> Обратите внимание, что вьющиеся брекеты я использовал здесь 588 00:29:40,660 --> 00:29:42,880 просто имею в виду, чтобы PHP, идут вперед и заменить 589 00:29:42,880 --> 00:29:45,400 значение этих двух Переменные прямо там. 590 00:29:45,400 --> 00:29:50,090 Они не обязательно, но они, как правило, чтобы избежать тонкие синтаксические ошибки. 591 00:29:50,090 --> 00:29:53,650 Так это выглядит полностью правильно на первый взгляд. 592 00:29:53,650 --> 00:29:54,240 И это. 593 00:29:54,240 --> 00:29:56,680 Вы могли бы реализовать Система контактный таким образом. 594 00:29:56,680 --> 00:30:00,460 >> Но предположим, что супер умный и злой студент 595 00:30:00,460 --> 00:30:03,020 вход это как своего пальца. 596 00:30:03,020 --> 00:30:05,550 Так я удалил пулю знаки здесь, в макете, 597 00:30:05,550 --> 00:30:08,760 и я на самом деле показал, то, что он или она может быть набрав. 598 00:30:08,760 --> 00:30:10,350 И это немного странно. 599 00:30:10,350 --> 00:30:13,850 Но то, что выскакивает в Вас на потенциально беспокойство о входе пользователя, 600 00:30:13,850 --> 00:30:16,450 даже если вы понятия не имеете, что Нападение инъекции SQL означает. 601 00:30:16,450 --> 00:30:20,300 Почему это выглядит немного подозрительно? 602 00:30:20,300 --> 00:30:21,050 Что это? 603 00:30:21,050 --> 00:30:21,550 [Неразборчиво] 604 00:30:21,550 --> 00:30:24,260 DAVID Маланом: или немного подозрительным. 605 00:30:24,260 --> 00:30:26,310 На самом деле, это ключевое слово из SQL. 606 00:30:26,310 --> 00:30:28,105 Так что не сулит ничего хорошего. 607 00:30:28,105 --> 00:30:29,980 Дело в том, что есть все эти одиночные кавычки 608 00:30:29,980 --> 00:30:32,646 there-- на самом деле, один из самых простых способы сломать некоторые базы данных 609 00:30:32,646 --> 00:30:35,880 это, набрав в имени, как O'Reilly что имеет апостроф в него 610 00:30:35,880 --> 00:30:38,600 потому что, если человек, который написал код за кулисами 611 00:30:38,600 --> 00:30:41,570 не принимать во внимание, что может быть одинарные кавычки в пользователя 612 00:30:41,570 --> 00:30:45,060 вход, и он или она использует одинарные кавычки в своем коде, 613 00:30:45,060 --> 00:30:46,040 плохие вещи могут случиться. 614 00:30:46,040 --> 00:30:47,870 >> На самом деле, что еще хуже, рассмотреть этот вопрос. 615 00:30:47,870 --> 00:30:50,600 Если бы это было снова код что кто-то в Гарварде лет 616 00:30:50,600 --> 00:30:53,100 назад написал для штифта Система, обратите внимание, что это 617 00:30:53,100 --> 00:30:56,220 собирается получить замещенных имя пользователя и пароль 618 00:30:56,220 --> 00:30:59,780 Если пользователь снова skroob как их имя пользователя 619 00:30:59,780 --> 00:31:03,960 а затем один, два, три, четыре, пять, цитата или цитата конец цитаты одного равных 620 00:31:03,960 --> 00:31:04,660 процитировать один. 621 00:31:04,660 --> 00:31:07,220 И обратите внимание, что ключ Здесь пользователь не 622 00:31:07,220 --> 00:31:09,900 начал свой пароль или их контактный с цитатой. 623 00:31:09,900 --> 00:31:12,610 И они не закончились его с цитаты, потому что он или она 624 00:31:12,610 --> 00:31:16,315 при условии, что, если программист не был таким острым, 625 00:31:16,315 --> 00:31:18,690 они будут иметь те, одинарные кавычки в своем коде. 626 00:31:18,690 --> 00:31:19,860 >> Так вот код. 627 00:31:19,860 --> 00:31:23,820 И замена, что может сейчас произойти это. 628 00:31:23,820 --> 00:31:26,350 И я подчеркнул, что пользователь ввел в. 629 00:31:26,350 --> 00:31:28,480 Поэтому, прежде чем, после. 630 00:31:28,480 --> 00:31:33,330 И обратите внимание, что мягко беспокойство сейчас о правой половине этого SQL кода? 631 00:31:33,330 --> 00:31:36,300 Это немного более сложным, по общему признанию, чем запросов мы видели. 632 00:31:36,300 --> 00:31:38,550 Но это не может быть хорошо, если вы 633 00:31:38,550 --> 00:31:42,240 говоря выберите звезду, которая выберите все со стола пользователя 634 00:31:42,240 --> 00:31:46,630 где имя пользователя равен skroob и пароль равен один, два, три, четыре, 635 00:31:46,630 --> 00:31:49,610 пять или один равняется один. 636 00:31:49,610 --> 00:31:53,860 Что логическое следствие этого последнего пункта предположительно? 637 00:31:53,860 --> 00:31:55,650 Это просто всегда верно. 638 00:31:55,650 --> 00:31:59,930 >> И потому, что мы-то догадался или выяснили методом проб и ошибок 639 00:31:59,930 --> 00:32:02,760 что программист, который написал этот код не сделал 640 00:32:02,760 --> 00:32:07,250 предвидеть человеческую или плохой человек набрав в одинарные кавычки, а, 641 00:32:07,250 --> 00:32:10,350 мы можем синтаксически завершить SQL-запрос 642 00:32:10,350 --> 00:32:12,260 с чем-то бессмысленный но что-то, что 643 00:32:12,260 --> 00:32:15,930 синтаксически неверно что всегда истинен. 644 00:32:15,930 --> 00:32:19,130 Так что, если этот код используется для ответа вопрос истинными или ложными должны 645 00:32:19,130 --> 00:32:22,930 этот пользователь будет разрешено пройти, Ответ всегда, видимо, собирается 646 00:32:22,930 --> 00:32:26,930 чтобы быть правдой, потому что это всегда будет выбрать что-то из базы данных 647 00:32:26,930 --> 00:32:29,280 потому что один, конечно, всегда равна единице. 648 00:32:29,280 --> 00:32:30,360 >> Так в чем же решение? 649 00:32:30,360 --> 00:32:33,290 Ну в Pset 7, мы на самом деле Во избежание этого все вместе. 650 00:32:33,290 --> 00:32:37,360 Мы даем вам функцию запроса, и мы рекомендуем вам использовать вопросительные знаки 651 00:32:37,360 --> 00:32:40,430 в качестве заполнителей, аналогичны по духу PRINTF в% х, 652 00:32:40,430 --> 00:32:43,710 но то, что ключ о вопросительных знаков вот если вы на самом деле прочитать 653 00:32:43,710 --> 00:32:46,950 functions.php, где наш Функция запроса будет реализован, 654 00:32:46,950 --> 00:32:52,780 эти знаки вопроса спасшиеся, чего-нибудь потенциально опасным 655 00:32:52,780 --> 00:32:58,210 как апостроф включен в сбежавшего одной цитатой. 656 00:32:58,210 --> 00:33:00,590 >> Так что это то, что на самом деле происходит, если вас 657 00:33:00,590 --> 00:33:04,850 использовать функцию запроса CS50 или любое количество из сторонних бесплатных библиотек, которые 658 00:33:04,850 --> 00:33:06,000 сделать то же самое. 659 00:33:06,000 --> 00:33:09,850 Не имеет значения, в данном случае, в зеленый, если пользователь ввел в одной цитатой 660 00:33:09,850 --> 00:33:12,070 потому что в запросе функция, которую мы написали, 661 00:33:12,070 --> 00:33:15,120 собираемся добавить обратную косую черту перед любая такая опасная цитата. 662 00:33:15,120 --> 00:33:17,360 Так что это не так, в Дело в том, будет законным. 663 00:33:17,360 --> 00:33:20,910 Это как набрав в сумасшедший смотрит пароль это, конечно, не собираюсь 664 00:33:20,910 --> 00:33:23,490 быть актуальной пароль skroob игровая. 665 00:33:23,490 --> 00:33:28,260 >> Так вынос для CS50 является одним, абсолютно всегда использовать что-то 666 00:33:28,260 --> 00:33:30,860 как функции запроса CS50 в или основная библиотека, 667 00:33:30,860 --> 00:33:32,560 которые, случается, называют PDO. 668 00:33:32,560 --> 00:33:35,880 Но никогда, никогда, никогда не такой код 669 00:33:35,880 --> 00:33:39,472 без побега или очистки как говорится ваши входы. 670 00:33:39,472 --> 00:33:42,430 И вы в какой-то момент, вероятно, попадаются каком-то сайте, как это. 671 00:33:42,430 --> 00:33:46,060 На самом деле, это, кажется, дело как в аэропортах и ​​отелях мест 672 00:33:46,060 --> 00:33:48,880 где у них есть бесплатный Wi-Fi Доступ что у вас есть, чтобы войти в, 673 00:33:48,880 --> 00:33:51,010 эти веб-сайты всегда ужасно реализован. 674 00:33:51,010 --> 00:33:55,680 И так-то весело дома упражнения, не в злонамеренных целях или более 675 00:33:55,680 --> 00:33:59,170 из удовольствия на дороге упражнения, это просто наберите 676 00:33:59,170 --> 00:34:02,850 апостроф, апостроф, в форме на каком-то сайте 677 00:34:02,850 --> 00:34:03,810 и посмотреть, что происходит. 678 00:34:03,810 --> 00:34:06,660 И если сервер выходит из строя или дает Вы какой-то сообщение об ошибке, 679 00:34:06,660 --> 00:34:09,690 очень может быть, что кто-то не ожидал этого. 680 00:34:09,690 --> 00:34:15,239 И тогда вы должны предупредить надлежащее Власти и не перейти дальше. 681 00:34:15,239 --> 00:34:20,843 >> Так что теперь вы, ребята, должны, мы надеемся, понять немного больше выродка юмор здесь. 682 00:34:20,843 --> 00:34:24,120 >> [Смех] 683 00:34:24,120 --> 00:34:27,571 684 00:34:27,571 --> 00:34:29,070 DAVID Маланом: Вы знаете, вы выродок. 685 00:34:29,070 --> 00:34:30,944 В течение следующих нескольких лет, вы будете помнить 686 00:34:30,944 --> 00:34:33,520 кто мало Бобби Столы является из-за этого мультфильма здесь. 687 00:34:33,520 --> 00:34:36,760 Так что имейте это в виду, как мы переключение контекста в последний раз 688 00:34:36,760 --> 00:34:38,770 сегодня в JavaScript. 689 00:34:38,770 --> 00:34:41,600 Мы провели довольно мало Время от синтаксиса PHP 690 00:34:41,600 --> 00:34:43,440 потому что это на самом деле супер похож на C. 691 00:34:43,440 --> 00:34:47,300 И достаточно хорошо, JavaScript слишком супер похож на синтаксис языка C 692 00:34:47,300 --> 00:34:49,639 а также мы увидим в только на мгновение, и как мы будем 693 00:34:49,639 --> 00:34:51,205 см в конце этой недели, в частности. 694 00:34:51,205 --> 00:34:54,080 Что вы можете сделать с этим языком, хотя, тем более мощным, 695 00:34:54,080 --> 00:34:55,790 особенно с API. 696 00:34:55,790 --> 00:34:56,960 >> Но сначала краткий тур. 697 00:34:56,960 --> 00:35:00,450 Так что, в JavaScript, есть нет Основная функция, которая хороша. 698 00:35:00,450 --> 00:35:02,650 Как с PHP, вы можете просто написать код. 699 00:35:02,650 --> 00:35:04,310 Условия выглядеть следующим образом. 700 00:35:04,310 --> 00:35:07,100 И логические выражения может выглядеть так или так. 701 00:35:07,100 --> 00:35:09,530 Существуют переключатели, и они может выглядеть следующим образом. 702 00:35:09,530 --> 00:35:10,970 Четыре петли выглядеть следующим образом. 703 00:35:10,970 --> 00:35:12,390 В то время как петли выглядеть следующим образом. 704 00:35:12,390 --> 00:35:14,160 У whiles выглядеть следующим образом. 705 00:35:14,160 --> 00:35:16,850 А потом массивы похожи это, очень похожа на РНР. 706 00:35:16,850 --> 00:35:20,740 Но заметим, что в JavaScript тебя объявить переменную не с долларом 707 00:35:20,740 --> 00:35:25,190 подписать, не с типом данных, но буквально говоря вар для переменной перед ней. 708 00:35:25,190 --> 00:35:27,900 Это слишком свободно набрали в том, что он имеет виды, 709 00:35:27,900 --> 00:35:29,729 но вы явно не объявлять их. 710 00:35:29,729 --> 00:35:31,520 И тогда строка, для Экземпляр, может выглядеть 711 00:35:31,520 --> 00:35:34,350 как это, что строка называют ы в этом случае. 712 00:35:34,350 --> 00:35:35,410 И затем объект. 713 00:35:35,410 --> 00:35:37,010 И это мы увидим больше в ближайшее время. 714 00:35:37,010 --> 00:35:41,470 И объект, пожалуй, один из Наиболее часто встречаются структуры данных 715 00:35:41,470 --> 00:35:44,050 в JavaScript на основе Программа так как он позволяет 716 00:35:44,050 --> 00:35:46,680 связать произвольное пар ключ-значение только 717 00:35:46,680 --> 00:35:51,240 как ассоциативные массивы в PHP и так же, как свой собственный хэш-таблице 718 00:35:51,240 --> 00:35:54,042 или попробовать как мы внедрили несколько недель назад. 719 00:35:54,042 --> 00:35:56,250 Так что давайте на самом деле увидеть, что мы можем сделать с помощью JavaScript. 720 00:35:56,250 --> 00:35:59,410 И, в частности, это длинный список функций 721 00:35:59,410 --> 00:36:02,300 что браузеры имеют, что позволяют подключить JavaScript 722 00:36:02,300 --> 00:36:05,470 в веб-сайт следующим образом. 723 00:36:05,470 --> 00:36:09,340 JavaScript часто используется в качестве на стороне клиента скриптовый язык. 724 00:36:09,340 --> 00:36:10,130 Это не составлен. 725 00:36:10,130 --> 00:36:11,370 Это тоже интерпретируется. 726 00:36:11,370 --> 00:36:15,740 Но в отличие от PHP, который работает уже на сервере, на веб-сервере, 727 00:36:15,740 --> 00:36:18,220 или глубоко внутри Клиенты, JavaScript 728 00:36:18,220 --> 00:36:22,190 отличается тем, что она как правило, проходит в браузере. 729 00:36:22,190 --> 00:36:26,060 >> Таким образом, любой код JavaScript вы начать писать для Pset 8 или вашего окончательного проекта, 730 00:36:26,060 --> 00:36:29,890 или в реальном мире, как правило, происходит быть сохранен на сервере, абсолютно 731 00:36:29,890 --> 00:36:33,110 в дот HTML или точкой JS для файла JavaScript. 732 00:36:33,110 --> 00:36:35,770 Но браузер собирается скачать что JavaScript 733 00:36:35,770 --> 00:36:39,530 Код для вашего собственного экземпляра Chrome, или IE, или Firefox, или что-то. 734 00:36:39,530 --> 00:36:43,870 И код на самом деле происходит, чтобы получить выполняется внутри вашего собственного браузера. 735 00:36:43,870 --> 00:36:46,560 Просто, чтобы сделать это более реально, давайте посмотрим это в конкретной форме. 736 00:36:46,560 --> 00:36:50,120 >> Мы понятия не имеем, что делает этот код на самом деле не читал через него. 737 00:36:50,120 --> 00:36:52,670 Но позвольте мне перейти к Facebook.com без регистрации. 738 00:36:52,670 --> 00:37:00,440 Позвольте мне пойти в Осмотрите элемент и идти, скажем, сети и перезагрузите страницу. 739 00:37:00,440 --> 00:37:04,150 И мы будем see-- позвольте мне перейти Обновить Страница, чтобы получить все запросы на новый. 740 00:37:04,150 --> 00:37:08,850 И самый первый Файл я вижу, CSS, CSS. 741 00:37:08,850 --> 00:37:10,880 Вот первый JavaScript-файл, и у меня есть 742 00:37:10,880 --> 00:37:14,600 никакая идея, что это делает, но здесь некоторые из кода JavaScript 743 00:37:14,600 --> 00:37:16,180 что приводит Facebook. 744 00:37:16,180 --> 00:37:18,400 Это даже не действительно, что выявление, чтобы увеличить. 745 00:37:18,400 --> 00:37:20,260 Это по-прежнему так же, как бессмысленно. 746 00:37:20,260 --> 00:37:24,341 >> Но вы увидите, даже внизу, есть еще более из этих файлов JavaScript. 747 00:37:24,341 --> 00:37:24,840 Упс. 748 00:37:24,840 --> 00:37:25,440 Вот пинг. 749 00:37:25,440 --> 00:37:28,550 Пойдем немного Кроме того, дополнительно, в дальнейшем. 750 00:37:28,550 --> 00:37:29,894 Там один. 751 00:37:29,894 --> 00:37:31,238 Там один. 752 00:37:31,238 --> 00:37:31,880 Там один. 753 00:37:31,880 --> 00:37:35,820 >> Таким образом, даже при том, что Facebook, за сцены, написано в части в PHP 754 00:37:35,820 --> 00:37:39,100 и Facebook, собственную версию его, есть огромное количество JavaScript. 755 00:37:39,100 --> 00:37:41,330 На самом деле, любой из в чате вы делаете на Facebook, 756 00:37:41,330 --> 00:37:45,520 любое из обновлений встроенного даты жизни что происходит в реальном времени, все, что 757 00:37:45,520 --> 00:37:47,944 приводится в движение JavaScript. 758 00:37:47,944 --> 00:37:48,444 Да? 759 00:37:48,444 --> 00:37:50,235 >> АУДИТОРИЯ: Я не уверен, если это Facebook, 760 00:37:50,235 --> 00:37:53,624 но я думал, что Facebook разработал их собственный внутренний код языка? 761 00:37:53,624 --> 00:37:54,540 DAVID Маланом: Они сделали. 762 00:37:54,540 --> 00:37:58,110 Так вот почему я говорю, дисперсию PHP называется хип-хоп, что они на самом деле 763 00:37:58,110 --> 00:38:03,440 дополнительные функции для таких, что при Марк впервые реализована Facebook, 764 00:38:03,440 --> 00:38:04,710 она была написана в PHP. 765 00:38:04,710 --> 00:38:07,370 И что-то осталось рода переднего конца языке 766 00:38:07,370 --> 00:38:09,030 что они используют для гораздо их кодирования, но это 767 00:38:09,030 --> 00:38:11,870 не был язык это весы особенно хорошо для миллиардов 768 00:38:11,870 --> 00:38:12,630 людей. 769 00:38:12,630 --> 00:38:15,300 И таким образом, они добавили свои собственные Улучшения за кулисами. 770 00:38:15,300 --> 00:38:17,049 И они использовать любое количество других языках 771 00:38:17,049 --> 00:38:19,170 для различных кусков их инфраструктуры. 772 00:38:19,170 --> 00:38:24,080 Так что, да, это дисперсия то, что мы теперь знаем, как PHP. 773 00:38:24,080 --> 00:38:26,610 >> Итак, давайте взглянем на пару примеров 774 00:38:26,610 --> 00:38:28,890 о том, как мы могли бы использовать JavaScript здесь. 775 00:38:28,890 --> 00:38:32,530 В современном исходного кода, у нас есть куча файлов, первый из которых, 776 00:38:32,530 --> 00:38:34,090 давайте называется DOM нулю. 777 00:38:34,090 --> 00:38:36,770 Так DOM ноль выглядит следующим образом. 778 00:38:36,770 --> 00:38:40,730 Отпусти меня в этот каталог и открыть domzero.html, 779 00:38:40,730 --> 00:38:44,970 верхняя из которых имеет тип DOC Декларация, говоря здесь приходит HTML 5. 780 00:38:44,970 --> 00:38:46,440 А теперь вот HTML тегов. 781 00:38:46,440 --> 00:38:47,540 Вот глава тег. 782 00:38:47,540 --> 00:38:49,210 А вот что нового сегодня. 783 00:38:49,210 --> 00:38:52,620 >> Теперь у нас есть тег сценария внутри главы странице. 784 00:38:52,620 --> 00:38:55,290 И это, по-видимому делает очень мало, но уведомление 785 00:38:55,290 --> 00:38:58,410 что я определил Сценарий, JavaScript. 786 00:38:58,410 --> 00:39:01,050 И, как в сторону, так как это Широко распространено заблуждение,, 787 00:39:01,050 --> 00:39:05,220 JavaScript не имеет абсолютно ничего делать с Java, языке 788 00:39:05,220 --> 00:39:08,010 что некоторые из вас, возможно, узнали в АСУ ТП. 789 00:39:08,010 --> 00:39:10,480 Это было больше маркетинга вещь, чем что-либо, 790 00:39:10,480 --> 00:39:12,980 езда на фалды Java лет назад. 791 00:39:12,980 --> 00:39:17,300 Но наличие ничего не делать с Java, просто так же, и досадно, 792 00:39:17,300 --> 00:39:18,480 смешения имени. 793 00:39:18,480 --> 00:39:21,890 >> Так вот как вы объявляете функцию в JavaScript, буквально сказать, функцию, 794 00:39:21,890 --> 00:39:24,556 то имя функции, то любой аргументы он может предпринять, 795 00:39:24,556 --> 00:39:25,530 точно так же как в PHP. 796 00:39:25,530 --> 00:39:28,990 Оказывается в JavaScript, одним из самых раздражающие функции, которые существуют в оповещения. 797 00:39:28,990 --> 00:39:31,392 Это небольшое окно, что всплывет и предупредить вас 798 00:39:31,392 --> 00:39:32,600 в какой-то части информации. 799 00:39:32,600 --> 00:39:33,766 Это правило, с неодобрением. 800 00:39:33,766 --> 00:39:35,980 Но мы будем использовать его в качестве нашего Первое упражнение здесь. 801 00:39:35,980 --> 00:39:37,900 >> Обратите внимание на некоторые особенности JavaScript. 802 00:39:37,900 --> 00:39:41,524 Одиночные и двойные кавычки на самом деле не имеет никакого значения. 803 00:39:41,524 --> 00:39:43,690 Одиночные кавычки и двойные Котировки могут быть взаимозаменяемыми, 804 00:39:43,690 --> 00:39:46,220 в то время как в C, вы должны использовать двойные кавычки для строк, 805 00:39:46,220 --> 00:39:48,150 и у вас есть два один котировки для символов. 806 00:39:48,150 --> 00:39:51,150 В мире JavaScript, многие люди, большинство людей 807 00:39:51,150 --> 00:39:54,970 использовать одинарные кавычки строк просто потому, что это стилистическое вещь. 808 00:39:54,970 --> 00:39:58,330 Но то, что оператор плюс здесь, которые мы раньше не видели? 809 00:39:58,330 --> 00:39:59,836 >> АУДИТОРИЯ: Сцепление. 810 00:39:59,836 --> 00:40:00,960 DAVID Маланом: Сцепление. 811 00:40:00,960 --> 00:40:02,450 Так C даже не в этом. 812 00:40:02,450 --> 00:40:04,820 PHP имеет оператора точки, который делает это. 813 00:40:04,820 --> 00:40:09,710 JavaScript имеет оператор плюс, который смешения является так же, как Java. 814 00:40:09,710 --> 00:40:11,440 Теперь то, что здесь происходит? 815 00:40:11,440 --> 00:40:14,260 >> Так вот, где базовый понимание этой картины 816 00:40:14,260 --> 00:40:17,010 мы подбросил пару дней назад вступает в игру. 817 00:40:17,010 --> 00:40:19,620 Помните, когда у нас был простой версия HTML page-- 818 00:40:19,620 --> 00:40:20,830 он просто сказал, привет мир. 819 00:40:20,830 --> 00:40:22,770 А потом мы рисовали дерево справа, который 820 00:40:22,770 --> 00:40:27,320 была куча прямоугольников и линий соединяя их, как родословной. 821 00:40:27,320 --> 00:40:30,820 Так вот так называемое DOM или объектной модели документов. 822 00:40:30,820 --> 00:40:36,759 И получается, что вы можете получить доступ к прямоугольники в этом дереве с синтаксисом 823 00:40:36,759 --> 00:40:37,550 как в следующем. 824 00:40:37,550 --> 00:40:41,370 Вы в буквальном смысле говорят документ, который является специальная глобальная переменная в JavaScript 825 00:40:41,370 --> 00:40:45,890 программа, которая имеет функцию связано с тем, что вы можете получить доступ к 826 00:40:45,890 --> 00:40:50,280 похоже на структуру, но вы просто говорят точку, а затем имя функции, 827 00:40:50,280 --> 00:40:52,390 получить элемент по ID. 828 00:40:52,390 --> 00:40:55,460 >> Элемент я хочу получить это по-видимому, цитирую конец цитаты имя. 829 00:40:55,460 --> 00:40:57,150 А потом я хочу, чтобы получить его значение. 830 00:40:57,150 --> 00:40:58,330 Теперь мы забегаем вперед. 831 00:40:58,330 --> 00:41:00,038 Я даже не уверен, что Все это о. 832 00:41:00,038 --> 00:41:03,000 Давайте перенесемся в HTML на страница, которая является супер просто. 833 00:41:03,000 --> 00:41:05,370 >> Обратите внимание, что я определил образуют здесь. 834 00:41:05,370 --> 00:41:07,940 Обратите внимание, что я дал ему уникальный ID, даже если мы не использовали 835 00:41:07,940 --> 00:41:08,870 этот атрибут прежде. 836 00:41:08,870 --> 00:41:11,300 Но это существует в HTML. 837 00:41:11,300 --> 00:41:15,570 Вы можете однозначно идентифицировать некоторое кусок из HTML с идентификатором, как это. 838 00:41:15,570 --> 00:41:19,880 >> Теперь обратите внимание this-- оказывается HTML поддерживает, в этом списке белья 839 00:41:19,880 --> 00:41:22,490 Минуту назад, в целом куча обработчиков событий. 840 00:41:22,490 --> 00:41:25,060 И это обработчик событий говорит о представить. 841 00:41:25,060 --> 00:41:28,730 На представлении пользователя этого форма, называют следующий код. 842 00:41:28,730 --> 00:41:31,360 И код, который собирается назвать или выполнены 843 00:41:31,360 --> 00:41:35,260 именно это, греческий Функция следуют вернуться ложным. 844 00:41:35,260 --> 00:41:37,360 Все остальное должно быть довольно знакомы. 845 00:41:37,360 --> 00:41:42,050 >> Здесь ввод текста типа, чьи ID, в этом случае, будет имя. 846 00:41:42,050 --> 00:41:45,430 У нас нет фактического имя атрибута это time-- и кнопку нажать кнопку. 847 00:41:45,430 --> 00:41:48,330 Так в результате страница выглядит следующим образом. 848 00:41:48,330 --> 00:41:52,890 И в результате поведения, Вы увидите, выглядит следующим образом. 849 00:41:52,890 --> 00:41:56,940 На странице Местное хозяева говорит, привет Дэвид, вряд ли эстетично 850 00:41:56,940 --> 00:41:58,340 способ приветствовать пользователя. 851 00:41:58,340 --> 00:41:59,950 Но что происходит на самом деле? 852 00:41:59,950 --> 00:42:01,360 >> Ну, подумайте, что это. 853 00:42:01,360 --> 00:42:02,310 Это текстовое поле. 854 00:42:02,310 --> 00:42:04,635 И в соответствии с HTML здесь, я дал его 855 00:42:04,635 --> 00:42:07,350 Уникальный идентификатор называется цитата конец цитаты имя. 856 00:42:07,350 --> 00:42:09,770 Между тем, я уже говорил, когда пользователь отправляет эту форму 857 00:42:09,770 --> 00:42:13,820 нажав Enter или нажав Отправить Кнопка, вызвать функцию под названием Приветствуйте 858 00:42:13,820 --> 00:42:15,410 а затем вернуться False. 859 00:42:15,410 --> 00:42:16,870 Давайте рассмотрим те в обратном направлении. 860 00:42:16,870 --> 00:42:20,590 Обратите внимание, когда я нажмите Отправить, Адрес этой страницы не изменяется. 861 00:42:20,590 --> 00:42:22,420 Значок браузера не начинают крутиться. 862 00:42:22,420 --> 00:42:27,050 Я никуда не ходил, и это буквально, потому что я сказал, вернуться False. 863 00:42:27,050 --> 00:42:31,534 Вернуться ложным коротких замыканий или остановки поведение по умолчанию в форме. 864 00:42:31,534 --> 00:42:33,700 Так что тогда у нас остается это один последний вопрос. 865 00:42:33,700 --> 00:42:34,764 Что Приветствуйте делать? 866 00:42:34,764 --> 00:42:36,680 Ну, Приветствуйте видимо, вызывает функцию под названием 867 00:42:36,680 --> 00:42:39,250 Оповещение, проходит в одном долго аргумент, что это 868 00:42:39,250 --> 00:42:43,950 результатом соединения вместе куча подстрок, привет запятая пространство, 869 00:42:43,950 --> 00:42:45,810 затем все это возвращается. 870 00:42:45,810 --> 00:42:51,490 Так документ как глобальная Переменная для этого корня этого дерева, 871 00:42:51,490 --> 00:42:55,560 вызове специальной функции, в противном случае теперь известно как метод. 872 00:42:55,560 --> 00:42:57,650 Функция это внутри переменная 873 00:42:57,650 --> 00:42:59,640 называется функцией метод вместо. 874 00:42:59,640 --> 00:43:01,570 >> Так что элемент по ID. 875 00:43:01,570 --> 00:43:03,940 Что элементом сделать вас хотите получить его ID? 876 00:43:03,940 --> 00:43:06,970 Цитировать конец цитаты имя и Затем специально ценим. 877 00:43:06,970 --> 00:43:12,000 Итак, другими словами, что код просто находит текстовое поле, ID является имя 878 00:43:12,000 --> 00:43:13,380 а затем получает свое значение. 879 00:43:13,380 --> 00:43:16,460 Так что, если бы я это изменить и сказать Дэвин вместо Давида, 880 00:43:16,460 --> 00:43:20,670 и нажмите Добавить, сейчас мы есть приветствие для Дэвин. 881 00:43:20,670 --> 00:43:22,890 >> Ладно, так что все прекрасно и замечательно. 882 00:43:22,890 --> 00:43:25,480 Но давайте посмотрим, если мы можем сделать это немного чище, так как только 883 00:43:25,480 --> 00:43:28,190 написания кода, как это как правило, будет с неодобрением. 884 00:43:28,190 --> 00:43:30,060 Это будет выглядеть страшнее. 885 00:43:30,060 --> 00:43:32,330 Но то, что первый Разница, что вы обратите внимание, здесь 886 00:43:32,330 --> 00:43:35,970 В этом варианте, кроме назвать изменения в DOM один? 887 00:43:35,970 --> 00:43:41,110 Что структурно выглядит по-другому Об этом в сравнении с другой? 888 00:43:41,110 --> 00:43:41,932 Да? 889 00:43:41,932 --> 00:43:43,890 АУДИТОРИЯ: Является ли форма на Верхняя часть сценария сейчас? 890 00:43:43,890 --> 00:43:46,570 DAVID Маланом: Да, форма находится на вершине сценария для какой-то странной причине. 891 00:43:46,570 --> 00:43:48,736 Так что первое, что что выскакивает на меня, тоже. 892 00:43:48,736 --> 00:43:50,990 И, к счастью, по крайней мере, Эта часть идентична. 893 00:43:50,990 --> 00:43:53,470 Так что единственное, что кажется будет отличаться это. 894 00:43:53,470 --> 00:43:55,296 >> Так вот то, что опрятно о JavaScript 2. 895 00:43:55,296 --> 00:43:57,420 И это делает его трудно понять на первый взгляд, 896 00:43:57,420 --> 00:44:00,670 особенно для конечных проектов, если Вы смотрите на образец кода на сайте, 897 00:44:00,670 --> 00:44:04,200 но это сводится к некоторым Основные синтаксические особенности. 898 00:44:04,200 --> 00:44:06,230 Здесь опять-таки, что Глобальная переменная документ. 899 00:44:06,230 --> 00:44:09,540 Здесь опять-таки, что метод или функция что говорит получить элемент по ID. 900 00:44:09,540 --> 00:44:11,570 На этот раз я хочу получить идентификатор, называемый демо. 901 00:44:11,570 --> 00:44:12,490 Где это? 902 00:44:12,490 --> 00:44:15,400 Это, по-видимому право здесь, сама форма. 903 00:44:15,400 --> 00:44:20,010 >> А теперь обратите внимание, что, по-видимому, если бы я вернуться к этому узлу в дереве, что 904 00:44:20,010 --> 00:44:22,940 представляет собой форму Сам, не текстовое поле, 905 00:44:22,940 --> 00:44:26,970 Оказывается, что форма, что узел или прямоугольник с дерева, 906 00:44:26,970 --> 00:44:30,450 есть то, что мы называем свойство, очень, очень, очень похожи 907 00:44:30,450 --> 00:44:35,390 по духу структуре в С. Это просто член данные внутри этого прямоугольника. 908 00:44:35,390 --> 00:44:38,300 >> Так что я получил форму здесь, и я есть, 909 00:44:38,300 --> 00:44:44,650 или я задаю, чтобы его на Отправить обработчик вернее На Разместить недвижимость 910 00:44:44,650 --> 00:44:45,740 Следующая функция. 911 00:44:45,740 --> 00:44:49,000 И это, безусловно, самая сумасшедшая вещь до сих пор синтаксически. 912 00:44:49,000 --> 00:44:53,610 Оказывается в JavaScript и в PHP, и, честно говоря уж на то пошло в C, 913 00:44:53,610 --> 00:44:58,990 даже если мы этого не делают, вы можете добавить безымянный, анонимный или AKA лямбда 914 00:44:58,990 --> 00:45:03,000 Функции, которые не имеют имени но может быть вызван тем не менее. 915 00:45:03,000 --> 00:45:07,050 >> Так, что я делаю здесь я задаю это на Предложить объект недвижимости, который 916 00:45:07,050 --> 00:45:14,330 находится внутри этого узла моего DOM дерева, Функция, указатель на функцию, если хотите. 917 00:45:14,330 --> 00:45:16,310 не что функция не имеет назвать, но это не 918 00:45:16,310 --> 00:45:19,110 значения, потому что мы будем видеть в минуту, как это назвать. 919 00:45:19,110 --> 00:45:21,780 Когда эта функция вызывается, этот код запускается на выполнение, то 920 00:45:21,780 --> 00:45:24,210 возвращается ложь, как и прежде. 921 00:45:24,210 --> 00:45:25,800 >> Но обратите внимание, что я сделал. 922 00:45:25,800 --> 00:45:27,830 На данный момент в История, у меня есть форма. 923 00:45:27,830 --> 00:45:30,190 У этого есть уникальный идентификатор, называемый демо. 924 00:45:30,190 --> 00:45:33,740 Здесь, внизу, у меня есть тег сценария который выполняет следующий код. 925 00:45:33,740 --> 00:45:37,720 Он прикрепляется к этому узлу в дерево, чтобы он находится на Отправить 926 00:45:37,720 --> 00:45:40,260 недвижимость эта функция здесь. 927 00:45:40,260 --> 00:45:44,310 И только по характеру, как браузеры работают, когда я теперь нажмите кнопку Отправить или нажмите Enter, 928 00:45:44,310 --> 00:45:45,889 что функция будет дозвонились. 929 00:45:45,889 --> 00:45:48,680 Это не нужно имя, потому что кто чёрта заботится, как это называется. 930 00:45:48,680 --> 00:45:52,540 Единственный раз, когда он когда-нибудь, чтобы получить называется то, когда я отправить форму. 931 00:45:52,540 --> 00:45:55,130 Там нет необходимости для меня, человек-разработчик, 932 00:45:55,130 --> 00:45:57,330 на самом деле назвать это где-нибудь еще. 933 00:45:57,330 --> 00:46:00,720 >> Теперь же, как задира, как будто что не были против, изгиб достаточно, 934 00:46:00,720 --> 00:46:03,330 мы можем даже сделать это выглядят более загадочным помощью 935 00:46:03,330 --> 00:46:05,850 супер популярной библиотеки называется JQuery. 936 00:46:05,850 --> 00:46:08,760 На самом деле JQuery и JavaScript нередко объединяются. 937 00:46:08,760 --> 00:46:12,790 И что мы будем делать в среду является начало с помощью этого языка и эти библиотеки 938 00:46:12,790 --> 00:46:16,030 построить более асинхронный и динамические приложения 939 00:46:16,030 --> 00:46:18,950 как карта становится приложения, приложения 940 00:46:18,950 --> 00:46:22,360 что обновлять веб-страницу в режиме реального Время, как и Facebook или Gchat 941 00:46:22,360 --> 00:46:27,130 сделать, и больше не ограничиваемся попав Отправить по GET или просто пост 942 00:46:27,130 --> 00:46:27,630 в одиночку. 943 00:46:27,630 --> 00:46:29,055 Так что я буду видеть вас в среду. 944 00:46:29,055 --> 00:46:31,805 945 00:46:31,805 --> 00:46:35,550 >> [Музыка, играющая] 946 00:46:35,550 --> 00:48:09,728