1 00:00:00,000 --> 00:00:11,330 2 00:00:11,330 --> 00:00:12,360 >> ДЭВИД Малан: Хорошо. 3 00:00:12,360 --> 00:00:15,970 Это CS50, и это конец недели девяти. 4 00:00:15,970 --> 00:00:18,560 Это был вихрь над за последние несколько дней. 5 00:00:18,560 --> 00:00:21,580 И проблема установить семь, если вы колено глубоко в нее, понять, есть довольно 6 00:00:21,580 --> 00:00:23,340 немного нового, что там внутри. 7 00:00:23,340 --> 00:00:26,660 Но давайте посмотрим, если мы не можем собрать все вместе здесь кратко 8 00:00:26,660 --> 00:00:29,230 до этого сворачивающих в еще другое направление и видение 9 00:00:29,230 --> 00:00:30,510 где еще мы можем пойти. 10 00:00:30,510 --> 00:00:32,630 >> Так до сих пор, мы говорили о HTML. 11 00:00:32,630 --> 00:00:33,740 Мы говорили о CSS. 12 00:00:33,740 --> 00:00:34,705 Мы говорили о PHP. 13 00:00:34,705 --> 00:00:36,520 Вы начали испытывать SQL. 14 00:00:36,520 --> 00:00:38,360 Сегодня мы поговорим немного о JavaScript. 15 00:00:38,360 --> 00:00:41,230 Но как все эти разрозненные языки сочетаются друг с другом? 16 00:00:41,230 --> 00:00:44,970 >> Поэтому мы говорили на прошлой неделе о Понятие имеющий сервер. 17 00:00:44,970 --> 00:00:48,470 Так что давайте просто нарисовать этот прямоугольник качестве веб-сервера здесь. 18 00:00:48,470 --> 00:00:52,200 И веб-сервер служит, безусловно, файлы. 19 00:00:52,200 --> 00:00:54,640 И некоторые из этих файлов может быть HTML файлы. 20 00:00:54,640 --> 00:00:58,270 Таким образом, одна из вещей, которые веб-сервер может выплюнуть может быть файл, который 21 00:00:58,270 --> 00:01:01,290 мы просто рисовать, как это содержащий некоторое HTML. 22 00:01:01,290 --> 00:01:04,786 Так с точки зрения непрофессионала, что делает HTML позволит вам сделать? 23 00:01:04,786 --> 00:01:06,036 >> Зала: хорошо выглядеть. 24 00:01:06,036 --> 00:01:09,670 25 00:01:09,670 --> 00:01:12,310 >> ДЭВИД Малан: Хорошо, сделать страницу выглядеть красиво, хотя я думаю, я доказал 26 00:01:12,310 --> 00:01:13,370 что в противном случае. 27 00:01:13,370 --> 00:01:18,250 Так HTML браузер позволяют выложить страниц структурно, и это позволяет 28 00:01:18,250 --> 00:01:22,410 рода эстетически сверстать страницу, размечать статического контента, так что вы 29 00:01:22,410 --> 00:01:23,640 Затем можно просмотреть с помощью веб-браузера. 30 00:01:23,640 --> 00:01:24,690 >> Но это ключ. 31 00:01:24,690 --> 00:01:26,130 Это статический контент. 32 00:01:26,130 --> 00:01:28,590 Вы пишете, вы сохраните его, а затем вы грузите его. 33 00:01:28,590 --> 00:01:31,130 И веб-сервер затем служит это до ваших посетителей. 34 00:01:31,130 --> 00:01:35,700 >> Но мы стилизовать вещи, используя разные язык в целом. 35 00:01:35,700 --> 00:01:40,150 Мы начали использовать атрибут стиля на определенных тегов. 36 00:01:40,150 --> 00:01:43,400 И атрибут стиля положим вещи, как размер и цвет шрифта. 37 00:01:43,400 --> 00:01:46,460 И вы, вероятно, открыли для себя, или вы скоро для окончательного 38 00:01:46,460 --> 00:01:50,160 проекты потенциально, все же другие свойства, которые можно использовать в CSS. 39 00:01:50,160 --> 00:01:54,710 И так с точки зрения непрофессионала, что действительно же тогда CSS делать? 40 00:01:54,710 --> 00:01:57,810 Это всего лишь примеры их. 41 00:01:57,810 --> 00:02:00,730 Что это позволить вам сделать это HTML кажется, не от того, что 42 00:02:00,730 --> 00:02:02,606 мы видели до сих пор? 43 00:02:02,606 --> 00:02:04,850 >> АУДИТОРИЯ: Определить стили самостоятельно. 44 00:02:04,850 --> 00:02:06,700 >> ДЭВИД Малан: Определить стили самостоятельно. 45 00:02:06,700 --> 00:02:10,280 Так определяют вещи, как классы, как вы наверняка встречали, или однозначно 46 00:02:10,280 --> 00:02:13,800 идентифицировать узлы в документе так что вы можете стилизовать их. 47 00:02:13,800 --> 00:02:16,890 Но более конкретно, я бы сказал, что CSS действительно позволяет делать вещи 48 00:02:16,890 --> 00:02:20,790 последней мили и позволяет задать много точнее эстетика, 49 00:02:20,790 --> 00:02:24,340 в то время как HTML по большей части позволяет структурировать свои страницы. 50 00:02:24,340 --> 00:02:27,310 >> И хотя есть некоторые умолчанию, как мы увидели метку для 51 00:02:27,310 --> 00:02:30,690 заголовок тег, который, грубо говоря, сделал вещи большой и жирный. 52 00:02:30,690 --> 00:02:34,250 Это довольно общее определение тега - большой и жирный. 53 00:02:34,250 --> 00:02:35,260 Какой размер шрифта является то, что? 54 00:02:35,260 --> 00:02:36,080 Что это цвет? 55 00:02:36,080 --> 00:02:36,890 Как смелый это? 56 00:02:36,890 --> 00:02:39,830 И CSS позволяет вам более точно настраивать такие вещи. 57 00:02:39,830 --> 00:02:42,150 Так же как расположение, так как некоторые из вас видели. 58 00:02:42,150 --> 00:02:45,180 >> И, честно говоря, CSS немного беспорядочна языке. 59 00:02:45,180 --> 00:02:48,370 Это очень мощный в том, что вы можете сделать буквально любой веб-сайт, что вы 60 00:02:48,370 --> 00:02:51,880 видел в Интернете сегодня с ним, но это вид боли в шее. 61 00:02:51,880 --> 00:02:54,440 И некоторые из вас ударил головой против стен уже просто сделать 62 00:02:54,440 --> 00:02:58,560 глупость как центра по меню Проблема установить семь, если вы дошли до 63 00:02:58,560 --> 00:02:59,470 что точка уже. 64 00:02:59,470 --> 00:03:01,530 >> Но поймите, те вещи, становится легче со временем. 65 00:03:01,530 --> 00:03:02,820 Вы начинаете замечать закономерности. 66 00:03:02,820 --> 00:03:06,020 И опять же, Google будет вашим другом для различных способов, которыми вы можете 67 00:03:06,020 --> 00:03:07,220 решить подобные проблемы. 68 00:03:07,220 --> 00:03:11,520 >> И я осмелюсь сказать, с CSS, и HTML более обычно, вы можете решить проблемы в 69 00:03:11,520 --> 00:03:15,910 много других способов, каждый из которых мог бы очень хорошо быть правильным, чем вы могли бы 70 00:03:15,910 --> 00:03:18,900 в чем-то вроде C, даже Теперь PHP или JavaScript. 71 00:03:18,900 --> 00:03:21,080 Есть только много разных способы лежали вещи. 72 00:03:21,080 --> 00:03:22,570 >> Но это начал получать грязный, мы сказали. 73 00:03:22,570 --> 00:03:26,480 Просто вид смешение ваш HTML и ваш CSS с атрибутом стиля было 74 00:03:26,480 --> 00:03:27,590 немного небрежен. 75 00:03:27,590 --> 00:03:31,460 И таким образом мы вместо сказал, своего рода абстрактно говоря, что вы должны 76 00:03:31,460 --> 00:03:34,050 по крайней мере, начать фактора из вашего CSS, вероятно. 77 00:03:34,050 --> 00:03:37,430 Атрибуты не ваш стиль, но по крайней мере использовать тег стиль внутри того, что 78 00:03:37,430 --> 00:03:38,840 часть веб-страницы? 79 00:03:38,840 --> 00:03:39,560 >> АУДИТОРИЯ: зав. 80 00:03:39,560 --> 00:03:40,120 >> ДЭВИД Малан: В голове. 81 00:03:40,120 --> 00:03:43,270 До сих пор у нас был только титул до там, но вы также можете добавить стиль 82 00:03:43,270 --> 00:03:47,230 тег, и вы можете положить ваш CSS примерно говоря к верхней части страницы. 83 00:03:47,230 --> 00:03:52,550 Но тогда мы взяли вещи на один шаг дальше и мы учли, что больше 84 00:03:52,550 --> 00:03:54,130 в отдельный файл. 85 00:03:54,130 --> 00:03:57,240 >> И вот эти два файла были как-то теперь связаны. 86 00:03:57,240 --> 00:03:59,550 И в самом деле это было тег, который сделал это. 87 00:03:59,550 --> 00:04:02,920 И то, что был одним из всеобъемлющих Мотивы факторинга наш CSS 88 00:04:02,920 --> 00:04:04,057 тем более? 89 00:04:04,057 --> 00:04:05,280 >> АУДИТОРИЯ: Повторное использование. 90 00:04:05,280 --> 00:04:05,785 >> ДЭВИД Малан: Повторное использование. 91 00:04:05,785 --> 00:04:06,150 Не так ли? 92 00:04:06,150 --> 00:04:09,470 Возможно, вы видели в р-установить семь уже что много страниц, 93 00:04:09,470 --> 00:04:12,260 покупка страница, страница продажа, Портфель страницы, вероятно 94 00:04:12,260 --> 00:04:13,550 структурирована несколько аналогично. 95 00:04:13,550 --> 00:04:17,579 Там в CS50 финансов логотип в верхней если вы не решили изменить это. 96 00:04:17,579 --> 00:04:19,839 Там в подвал на Дно страниц. 97 00:04:19,839 --> 00:04:24,315 И CSS позволяет затем к фактору его это в отдельный файл, так что если 98 00:04:24,315 --> 00:04:27,780 Вы хотите что-то изменить в глобальном масштабе через весь сайт, вы можете действительно 99 00:04:27,780 --> 00:04:29,390 просто изменить его в одном месте. 100 00:04:29,390 --> 00:04:32,750 >> Но есть цена, которую вы платите потенциально Имея факторизовали 101 00:04:32,750 --> 00:04:38,380 CSS от моего HTML файла в отдельный файла, относящийся его с 102 00:04:38,380 --> 00:04:40,650 тег, который мы видели в понедельник. 103 00:04:40,650 --> 00:04:43,850 Что может быть недостаток этого? 104 00:04:43,850 --> 00:04:48,830 Вспоминая неделю назад, чтобы, когда мы говорить о HTTP и TCP / IP и как 105 00:04:48,830 --> 00:04:52,070 Интернет работает. 106 00:04:52,070 --> 00:04:53,530 Что-то здесь? 107 00:04:53,530 --> 00:04:54,730 >> Зала: занимает больше времени. 108 00:04:54,730 --> 00:04:55,470 >> DAVID МАЛАН: Это занимает больше времени. 109 00:04:55,470 --> 00:04:56,750 Почему? 110 00:04:56,750 --> 00:04:59,450 >> АУДИТОРИЯ: [неразборчиво]. 111 00:04:59,450 --> 00:04:59,750 >> DAVID МАЛАН: Да. 112 00:04:59,750 --> 00:05:01,240 Так что, возможно, занимает немного больше времени. 113 00:05:01,240 --> 00:05:04,290 Потому что один, CSS, очевидно, Не в том же файле. 114 00:05:04,290 --> 00:05:06,920 Так что теперь у вас есть, чтобы не один, а два запросы. 115 00:05:06,920 --> 00:05:11,230 И каждый из этих запросов как мы видели в Chrome в так называемый инспектор, 116 00:05:11,230 --> 00:05:15,740 и мы смотрели на вкладке Сеть, каждый этих файлов требуется одна HTTP 117 00:05:15,740 --> 00:05:18,360 запрос, который мы видели, занимает некоторый промежуток времени. 118 00:05:18,360 --> 00:05:19,290 Теперь, может быть, это не так много. 119 00:05:19,290 --> 00:05:20,670 Может быть, это всего 20 миллисекунд. 120 00:05:20,670 --> 00:05:22,260 Может быть, это 200 миллисекунд. 121 00:05:22,260 --> 00:05:25,530 >> Но думать о странице, как Facebook, или CNN, или Google, которые намного 122 00:05:25,530 --> 00:05:28,060 больше, чем примерах, которые мы посмотрел на до сих пор. 123 00:05:28,060 --> 00:05:32,070 Эти страницы могут иметь десятки файлов, каждый из которых может потребовать 124 00:05:32,070 --> 00:05:33,550 загрузка файла. 125 00:05:33,550 --> 00:05:35,800 Так что вещи могут потенциально начинают замедляться. 126 00:05:35,800 --> 00:05:39,280 >> И особенно в эти дни, когда все мы есть мобильные телефоны в наших карманах и 127 00:05:39,280 --> 00:05:43,010 низкоскоростном подключении к Интернету, имея необходимость подождать еще несколько миллисекунд, несколько 128 00:05:43,010 --> 00:05:46,110 более миллисекунд для дополнительного Файлы действительно может быть медленным. 129 00:05:46,110 --> 00:05:50,430 Задержка это слово, которое описывает вид ожидания, что вы есть, что вы 130 00:05:50,430 --> 00:05:53,110 испытывают при ожидании некоторые части информации. 131 00:05:53,110 --> 00:05:54,430 >> Но есть и положительная сторона. 132 00:05:54,430 --> 00:05:56,600 Так что это не все рода - 133 00:05:56,600 --> 00:05:58,170 он на самом деле является чем-то вроде качелей здесь. 134 00:05:58,170 --> 00:06:02,970 Даунсайд сейчас, но то, что браузеры могут сделать если они умны, чтобы избежать 135 00:06:02,970 --> 00:06:08,870 обратиться с запросом о том же styles.css файл снова может быть, чтобы делать то, что? 136 00:06:08,870 --> 00:06:09,390 >> Кэшировать его. 137 00:06:09,390 --> 00:06:10,370 Так кэширования - 138 00:06:10,370 --> 00:06:11,690 C-C-H-E - 139 00:06:11,690 --> 00:06:15,810 как правило, означает здесь только, чтобы сохранить файла, который вы просили в первый раз, и 140 00:06:15,810 --> 00:06:17,440 затем проверьте свой кэш для него. 141 00:06:17,440 --> 00:06:20,400 Проверьте ты рода контейнер для хранения, и если у вас уже есть 142 00:06:20,400 --> 00:06:24,520 Копия styles.css, даже если некоторые другие страницы в р-набор, или любой веб-сайт, 143 00:06:24,520 --> 00:06:28,560 запросы его снова, только чтобы дать Пользователь же, что сохраненная копия. 144 00:06:28,560 --> 00:06:30,140 Не беспокойтесь просил об этом. 145 00:06:30,140 --> 00:06:32,560 >> Даунсайд там, хотя, как некоторые из вас было споткнуться в р-множество. 146 00:06:32,560 --> 00:06:35,870 Если вы вносите изменения на сервере и Вы идете обратно в браузер, и вы 147 00:06:35,870 --> 00:06:39,250 перезагрузить, иногда браузер делает вам одолжение и не беспокоит 148 00:06:39,250 --> 00:06:43,660 повторной загрузки файл styles.css потому что, давай, каковы шансы 149 00:06:43,660 --> 00:06:47,620 что эти стили, которые используют Facebook собираются изменить часа к часу или 150 00:06:47,620 --> 00:06:48,140 повседневно? 151 00:06:48,140 --> 00:06:48,800 Это довольно низкая. 152 00:06:48,800 --> 00:06:52,260 Они могут меняться с течением времени, но не С каждой минутой или по часам. 153 00:06:52,260 --> 00:06:55,810 >> Так трюк, просто FYI, когда делать веб- развития, часто удерживайте 154 00:06:55,810 --> 00:06:59,500 Клавиша Shift, например, и затем нажмите кнопку перезагрузить в вашем браузере, и это будет 155 00:06:59,500 --> 00:07:03,280 Обычно говорят перезагрузки браузера все, даже если у вас уже есть 156 00:07:03,280 --> 00:07:04,180 его в кэше. 157 00:07:04,180 --> 00:07:06,630 Итак, еще раз, плюсы и минусы, но все они 158 00:07:06,630 --> 00:07:08,260 в конечном счете, дизайнерских решений. 159 00:07:08,260 --> 00:07:11,520 >> Так что теперь, мы не просто конец этой истории. 160 00:07:11,520 --> 00:07:15,790 Если бы я сейчас вернуться назад и назад и назад и назад, мы начали внедрять не только 161 00:07:15,790 --> 00:07:18,060 HTML, но PHP. 162 00:07:18,060 --> 00:07:20,786 Так что с точки зрения непрофессионала, что делает PHP давайте делать? 163 00:07:20,786 --> 00:07:22,770 >> АУДИТОРИЯ: [неразборчиво]. 164 00:07:22,770 --> 00:07:24,258 >> DAVID МАЛАН: Что это? 165 00:07:24,258 --> 00:07:25,250 >> АУДИТОРИЯ: Представьтесь логики в код. 166 00:07:25,250 --> 00:07:26,620 >> DAVID МАЛАН: Да, ввести логики в код. 167 00:07:26,620 --> 00:07:29,570 Так что это истинный язык программирования с петлями, и переменные, и 168 00:07:29,570 --> 00:07:32,620 функций, и условия, и все вещи, которые мы использовали обратный путь 169 00:07:32,620 --> 00:07:33,780 , когда с нуля. 170 00:07:33,780 --> 00:07:36,780 И PHP, мы видели, могут быть использованы либо в командной строке - это 171 00:07:36,780 --> 00:07:39,190 не должна иметь ничего общего с сетью, даже если это 172 00:07:39,190 --> 00:07:43,150 действительно свое происхождение и то, что она имеет тенденцию быть хорошим и способствует - 173 00:07:43,150 --> 00:07:47,130 но вы можете использовать PHP просто по своей природе на то, что он имеет печати () 174 00:07:47,130 --> 00:07:49,660 функции и Е () функции или эхо () функцию. 175 00:07:49,660 --> 00:07:52,440 Там в пучки способов можете печатать текст с PHP. 176 00:07:52,440 --> 00:07:56,540 >> Таким образом, вы можете использовать эту программирования язык для вывода точно 177 00:07:56,540 --> 00:07:58,460 о чем мы говорили прежде. 178 00:07:58,460 --> 00:08:01,360 Вы можете динамически генерировать ваши HTML. 179 00:08:01,360 --> 00:08:02,300 Может быть, не все из них. 180 00:08:02,300 --> 00:08:06,460 Может быть, вы жесткие вещи кода, как и заголовок и нижний колонтитулы и логотип, 181 00:08:06,460 --> 00:08:07,950 и таблицы стилей, и все это. 182 00:08:07,950 --> 00:08:11,190 Но за то, как P-набор семи, где вы манипулируете акции и 183 00:08:11,190 --> 00:08:14,690 показывающие портфеля пользователя, который собирается динамически изменяться, вы можете 184 00:08:14,690 --> 00:08:18,960 , конечно, использовать PHP и логикой он дает Вы, как язык программирования 185 00:08:18,960 --> 00:08:22,320 Выход динамически подмножества части страницы. 186 00:08:22,320 --> 00:08:25,900 >> Поэтому, когда вы говорите о динамических веб-сайтов, или веб-программирование, вот 187 00:08:25,900 --> 00:08:27,200 что вы действительно говорите. 188 00:08:27,200 --> 00:08:31,450 Используя язык, как PHP, или вещи, называемых Python или Ruby, или Java, или 189 00:08:31,450 --> 00:08:35,900 Пока другие языки, запрос к базе данных Часто или другой сервер, а 190 00:08:35,900 --> 00:08:38,580 затем динамически выплюнуть HTML. 191 00:08:38,580 --> 00:08:42,470 >> Теперь конечный результат, как в сторону, является HTML, что большинство веб-сайтов, 192 00:08:42,470 --> 00:08:45,970 включая ваш р-набор семь, вероятно, будет огромный беспорядок, если 193 00:08:45,970 --> 00:08:48,060 Вы посмотрите на исходный кода в браузере. 194 00:08:48,060 --> 00:08:49,010 Это не имеет большого значения. 195 00:08:49,010 --> 00:08:51,550 На данный момент, когда мы заботимся о стиль, мы заботимся о 196 00:08:51,550 --> 00:08:52,740 Вещи, которые вы пишете. 197 00:08:52,740 --> 00:08:56,240 Мы не будем заботиться о вещи что то, что ваши выходы кода. 198 00:08:56,240 --> 00:08:59,520 Так что не беспокойтесь о отступы здесь, если это PHP это 199 00:08:59,520 --> 00:09:01,190 фактически выводя материал. 200 00:09:01,190 --> 00:09:04,430 В конце концов, браузер не будет заботиться, и человек не будет искать 201 00:09:04,430 --> 00:09:05,400 у источника в любом случае. 202 00:09:05,400 --> 00:09:09,000 Мы персоналом, например, будет быть, глядя на ваши PHP. 203 00:09:09,000 --> 00:09:13,440 >> Итак, позвольте мне дать быстрый пример сейчас о том, почему еще это может быть полезно. 204 00:09:13,440 --> 00:09:18,620 Так откровенно, я не могу вспомнить последний раз я использовал C, чтобы решить проблему в 205 00:09:18,620 --> 00:09:19,620 реальный мир. 206 00:09:19,620 --> 00:09:22,330 Это было, вероятно, в аспирантуре, когда Я должен был использовать язык, который 207 00:09:22,330 --> 00:09:26,710 был довольно низкий уровень и дал мне возможность сделать что-то очень высокую 208 00:09:26,710 --> 00:09:30,720 выполнения, чтобы действительно сохранить как много CPU циклы, как мог, в значительной степени 209 00:09:30,720 --> 00:09:33,990 потому что я использовал огромные массивы данных, и каждый цикл процессора учитываются. 210 00:09:33,990 --> 00:09:37,750 И, честно говоря, даже в таких вещах, как телефонов в эти дни и другие устройства 211 00:09:37,750 --> 00:09:39,910 где вы не достаточно иметь столько памяти, и вы не достаточно иметь в качестве 212 00:09:39,910 --> 00:09:44,160 много ресурсов процессора, используя более быстрые языки по-прежнему привлекательным. 213 00:09:44,160 --> 00:09:47,290 >> Но в реальном мире, когда вы просто хотите бросить какую-то программу вместе, чтобы 214 00:09:47,290 --> 00:09:50,340 проанализировать некоторые данные, или вы собрали целая куча регистраций для 215 00:09:50,340 --> 00:09:53,330 некоторые студент группы, и вы хотите, чтобы очень быстро автоматизировать отправки электронной почты 216 00:09:53,330 --> 00:09:56,240 по одному, чтобы каждый из тех, регистраций, вы собираетесь достичь за 217 00:09:56,240 --> 00:09:59,240 язык более высокого уровня чем С, так сказать. 218 00:09:59,240 --> 00:10:04,060 Что-то вроде PHP или Python, или Ruby, , которые существуют или полдюжины других 219 00:10:04,060 --> 00:10:04,550 в эти дни. 220 00:10:04,550 --> 00:10:07,200 Но те три, вероятно, самый модный сейчас. 221 00:10:07,200 --> 00:10:10,840 >> А что это означает, что вы можете открыть до текстовым редактором, например Gedit или 222 00:10:10,840 --> 00:10:14,030 Наиболее что-нибудь еще, а затем просто начать написания кода, не беспокоясь 223 00:10:14,030 --> 00:10:17,800 о компиляции, без того, чтобы действительно беспокоиться об управлении памятью, 224 00:10:17,800 --> 00:10:20,820 имея в виду, что немного неряшливость, в конечном счете вернуться 225 00:10:20,820 --> 00:10:24,790 чтобы укусить вас, если набор данных получает больше или проблема становится большой. 226 00:10:24,790 --> 00:10:27,230 Но что это означает для нам заключается в следующем. 227 00:10:27,230 --> 00:10:29,860 >> Позвольте мне идти вперед и работать правописания от проблемы установить шесть. 228 00:10:29,860 --> 00:10:33,480 Так что это мой синтаксического дерева на основе реализации что я использовал на большой 229 00:10:33,480 --> 00:10:35,500 доска, на которой я выступал не очень хорошо. 230 00:10:35,500 --> 00:10:38,720 Мы вернемся через неделю и вернуться те, кто в конечном итоге на вершине 231 00:10:38,720 --> 00:10:40,430 большая доска на нашей последней лекции. 232 00:10:40,430 --> 00:10:44,520 Но сейчас, позвольте мне идти вперед и просто запустить мое решение в тексте, и мы сделаем все 233 00:10:44,520 --> 00:10:48,460 Библия короля Джеймса, и здесь мы идем. 234 00:10:48,460 --> 00:10:51,080 >> Итак, это все, мол, слова с ошибками из 235 00:10:51,080 --> 00:10:52,240 Библия короля Джеймса. 236 00:10:52,240 --> 00:10:55,560 И моя реализация взял полсекунды в общей сложности. 237 00:10:55,560 --> 00:10:58,270 Так что не так уж плохо на этом конкретный компьютер. 238 00:10:58,270 --> 00:11:01,540 Но подумайте, сколько Код я должен был написать. 239 00:11:01,540 --> 00:11:02,880 Подумайте, сколько кода нужно было писать. 240 00:11:02,880 --> 00:11:06,170 Подумайте, сколько часов вы провели в Д-зал или ваша общежития или там, где 241 00:11:06,170 --> 00:11:07,890 на самом деле кодирования до это решение. 242 00:11:07,890 --> 00:11:11,850 >> Ну, если я на самом деле имеют более высокий уровень язык, как PHP, принять к сведению 243 00:11:11,850 --> 00:11:13,350 что я могу сделать здесь. 244 00:11:13,350 --> 00:11:16,410 Предположим сначала, что это вместо ваш код распределение. 245 00:11:16,410 --> 00:11:17,790 Этот файл называется орфографии. 246 00:11:17,790 --> 00:11:20,220 Она доступна как часть сегодня Код распределения. 247 00:11:20,220 --> 00:11:22,670 И я собираюсь машу рукой не более о деталях, но это на самом деле 248 00:11:22,670 --> 00:11:25,500 интересный пример того, как Вы могли бы порт язык 249 00:11:25,500 --> 00:11:28,870 как С в течение до PHP. 250 00:11:28,870 --> 00:11:33,420 Я буквально открыл два текстовых окна, один с моей C версии speller.c, 251 00:11:33,420 --> 00:11:36,960 и я просто начал переводить его в моем направиться в PHP и набрав его с помощью 252 00:11:36,960 --> 00:11:38,840 Ближайшим эквивалентом функции. 253 00:11:38,840 --> 00:11:40,100 >> Таким образом, некоторые из этих вещей различны. 254 00:11:40,100 --> 00:11:43,730 Мы видели в последний раз, что PHP не использует включить в совершенно так же,. 255 00:11:43,730 --> 00:11:47,050 Он использует требуют обычно, хотя включают существует. 256 00:11:47,050 --> 00:11:50,330 Определить это мало чем отличается от # Определить в C, но это 257 00:11:50,330 --> 00:11:51,890 как мы делаем константу. 258 00:11:51,890 --> 00:11:55,860 $ Агдс оказывается существует в PHP, таким образом, мы видели, что раньше. 259 00:11:55,860 --> 00:11:58,650 Это всего лишь переменные, все которые начинаются со знака доллара. 260 00:11:58,650 --> 00:12:00,590 Напомним, это просто куча плавающей точки. 261 00:12:00,590 --> 00:12:03,970 >> Так Короче говоря, вы всегда можете пролистывать это, если любопытно, это 262 00:12:03,970 --> 00:12:10,010 почти линейный для онлайн-преобразование С версия speller.c в PHP. 263 00:12:10,010 --> 00:12:12,630 А вы могли бы сделать это снова для полдюжины других языках. 264 00:12:12,630 --> 00:12:14,910 >> Но что интересно, это. 265 00:12:14,910 --> 00:12:16,910 Или то, что откровенно уныние это. 266 00:12:16,910 --> 00:12:20,790 Позвольте мне идти вперед и ввести около dictionary.php, и утверждают, что я 267 00:12:20,790 --> 00:12:23,670 собираюсь идти вперед и повторно реализовать Проблема установить шесть здесь. 268 00:12:23,670 --> 00:12:27,530 >> Так что давайте предлагать сначала, что в этом файл, который будет реализован в 269 00:12:27,530 --> 00:12:30,550 PHP, поэтому позвольте мне открыть мои теги, как, что. 270 00:12:30,550 --> 00:12:34,780 Позвольте мне дать себе глобальный переменная, $ Размер получает ноль. 271 00:12:34,780 --> 00:12:36,710 И я собираюсь дать сам хэш-таблицу. 272 00:12:36,710 --> 00:12:38,110 Я буду использовать хэш-таблицу для этой вещи. 273 00:12:38,110 --> 00:12:42,070 Как объявить хэш-таблицу в PHP? 274 00:12:42,070 --> 00:12:42,990 Готово. 275 00:12:42,990 --> 00:12:43,980 ОК. 276 00:12:43,980 --> 00:12:48,870 >> Так открывающая скобка закрывающая скобка представляет что в PHP, как мы видели? 277 00:12:48,870 --> 00:12:51,850 Массив, но массив, который мог быть ассоциативным массивом. 278 00:12:51,850 --> 00:12:54,320 Ассоциативный массив является структура данных, которая 279 00:12:54,320 --> 00:12:55,860 связывает ключи со значениями. 280 00:12:55,860 --> 00:12:59,430 >> Сейчас в простейших численно индексированный Массив эти клавиши, это то, что? 281 00:12:59,430 --> 00:13:02,250 282 00:13:02,250 --> 00:13:03,960 Ноль, один, два, три, не так ли? 283 00:13:03,960 --> 00:13:08,780 Старая школа вещи обратно из С. Но она может также быть строками, как Фу, и бар, 284 00:13:08,780 --> 00:13:12,210 или Максвелл, или чего-либо подобного строка. 285 00:13:12,210 --> 00:13:14,240 Так что я могу использовать, что через минуту. 286 00:13:14,240 --> 00:13:17,550 >> Позвольте мне идти вперед и объявить функция, как - 287 00:13:17,550 --> 00:13:19,020 давайте сделаем нагрузку () в первую очередь. 288 00:13:19,020 --> 00:13:20,690 Так функция нагрузка (). 289 00:13:20,690 --> 00:13:23,440 И PHP немного отличается тем, что вы буквально функцию типа, но вы 290 00:13:23,440 --> 00:13:24,930 не вводите тип возвращаемого значения. 291 00:13:24,930 --> 00:13:28,760 Я собираюсь идти вперед и сказать, что Функция загрузки () следует принимать в 292 00:13:28,760 --> 00:13:31,000 Аргумент $ словарь, просто как C версии сделал. 293 00:13:31,000 --> 00:13:32,510 Я делаю, что из памяти. 294 00:13:32,510 --> 00:13:34,910 >> И я предлагаю, чтобы я собираюсь сделать это. 295 00:13:34,910 --> 00:13:37,080 Я просто собираюсь сделать Еогеасп. 296 00:13:37,080 --> 00:13:40,710 Я собираюсь вызвать функцию названную файл (), передав во имя, что 297 00:13:40,710 --> 00:13:44,990 файл, который является переменной $ Словарь как $ слова. 298 00:13:44,990 --> 00:13:49,410 А потом внутри мой цикл здесь, я собираюсь идти вперед и хранить в моем 299 00:13:49,410 --> 00:13:57,440 $ Таблица, $ слово получает правда. 300 00:13:57,440 --> 00:13:57,918 Готово. 301 00:13:57,918 --> 00:14:01,264 Ой, подождите. 302 00:14:01,264 --> 00:14:02,422 Готово. 303 00:14:02,422 --> 00:14:02,760 ОК. 304 00:14:02,760 --> 00:14:04,970 >> То есть нагрузка функция () говорят в PHP. 305 00:14:04,970 --> 00:14:05,865 Теперь, почему это работает? 306 00:14:05,865 --> 00:14:07,010 И я отчасти обмана здесь. 307 00:14:07,010 --> 00:14:09,980 >> Так, один, Еогеасп мы видели кратко последний раз. 308 00:14:09,980 --> 00:14:13,680 Это просто означает, что вы можете перебрать массив, не беспокоя с г 309 00:14:13,680 --> 00:14:16,150 и п и плюс плюс, и все, что. 310 00:14:16,150 --> 00:14:21,350 Словарь является, конечно же, имя файла, что-то вроде большой или маленький, два 311 00:14:21,350 --> 00:14:22,830 словари, которые мы использовали в прошлый раз. 312 00:14:22,830 --> 00:14:26,715 Файл является функцией, которая открывает текст файл, читает его в одну строку, и 313 00:14:26,715 --> 00:14:29,840 руки You Back огромный массив, каждый из элементов которого 314 00:14:29,840 --> 00:14:31,340 линия из этого файла. 315 00:14:31,340 --> 00:14:36,040 Так вот сочетание FOPEN, и FREAD, и время цикла, и FClose, 316 00:14:36,040 --> 00:14:37,080 и все это. 317 00:14:37,080 --> 00:14:40,150 Наконец, как слово просто означает, что это переменная Я собираюсь иметь доступ к 318 00:14:40,150 --> 00:14:41,890 на каждой итерации в этом цикле. 319 00:14:41,890 --> 00:14:46,910 >> Короче говоря, этот лайнер в данном случае означает открыть файл, имя которого в 320 00:14:46,910 --> 00:14:50,750 словарь, переменная, перебрать это строка за строкой, и каждый раз, когда вы получаете 321 00:14:50,750 --> 00:14:54,290 линия, хранить в переменной называется словом, а затем сделать что-то со словом. 322 00:14:54,290 --> 00:14:55,280 Что я хочу сделать? 323 00:14:55,280 --> 00:14:58,110 Я хочу поставить слово в мою хэш-таблицы. 324 00:14:58,110 --> 00:15:00,860 >> Ну, я могу положить что-то в моем хэш-таблицу, как и в С 325 00:15:00,860 --> 00:15:02,140 используя квадратные скобки. 326 00:15:02,140 --> 00:15:03,660 Это имя для моего хэш-таблицы. 327 00:15:03,660 --> 00:15:07,180 Я собираюсь индекса в этот хэш таблица в этом месте. 328 00:15:07,180 --> 00:15:08,920 Так что не скобки нулю, не скобки один. 329 00:15:08,920 --> 00:15:11,990 Кронштейн цитатой конец цитаты что-то, что бы это ни слова. 330 00:15:11,990 --> 00:15:15,200 И так же, как вы, возможно, в вашем хэш рабочий стол синтаксического дерева, вы просто магазин 331 00:15:15,200 --> 00:15:17,650 эффективно логическое, неявно или явно. 332 00:15:17,650 --> 00:15:18,260 Готово. 333 00:15:18,260 --> 00:15:20,000 Я хранения значение верно. 334 00:15:20,000 --> 00:15:23,150 >> Теперь есть несколько вещей, Я срезать углы на здесь. 335 00:15:23,150 --> 00:15:27,720 Технически, это будет раздражает новая линия, / п, в конце 336 00:15:27,720 --> 00:15:28,820 каждое из этих слов. 337 00:15:28,820 --> 00:15:31,770 Так что я, вероятно, следует вызвать функцию PHP называют отбивная (), который будет 338 00:15:31,770 --> 00:15:33,460 буквально рубить, что выключен. 339 00:15:33,460 --> 00:15:35,020 И я на самом деле нужно сделать еще одну вещь. 340 00:15:35,020 --> 00:15:38,380 Я, вероятно, следует увеличить размер по каждому итерации, так что я отслеживание 341 00:15:38,380 --> 00:15:39,560 в глобальном масштабе, что это такое. 342 00:15:39,560 --> 00:15:43,180 И, честно говоря, и это является одним из глупее аспекты PHP, если вы 343 00:15:43,180 --> 00:15:46,950 с помощью глобальной переменной, необходимо явно сказать, что вы. 344 00:15:46,950 --> 00:15:51,670 Так что я собираюсь на самом деле ввести глобальный $ Размер, глобальная $ таблице, и теперь 345 00:15:51,670 --> 00:15:52,690 моя функция будет завершена. 346 00:15:52,690 --> 00:15:57,475 >> Так что не так просто, как раньше, но , вероятно, взял меньше времени, чем C 347 00:15:57,475 --> 00:15:58,220 версия, может быть? 348 00:15:58,220 --> 00:15:58,730 ОК. 349 00:15:58,730 --> 00:16:00,390 >> Так что теперь давайте сделаем проверку () функцию. 350 00:16:00,390 --> 00:16:04,300 Давайте посмотрим, если это по крайней мере взял часов подряд, что он взял нас в C. При этом 351 00:16:04,300 --> 00:16:06,500 позвольте мне идти вперед и объявить проверить, как функция. 352 00:16:06,500 --> 00:16:09,070 Принимает в аргумент словом, которое является будет исходить от правописания. 353 00:16:09,070 --> 00:16:13,410 И я просто хочу, чтобы проверить, Следующая переменная Исеть, настольный 354 00:16:13,410 --> 00:16:18,400 Кронштейн strtolower слова - 355 00:16:18,400 --> 00:16:20,590 давайте сбалансировать все мои скобках - 356 00:16:20,590 --> 00:16:24,275 затем вернуться верно. 357 00:16:24,275 --> 00:16:27,020 358 00:16:27,020 --> 00:16:28,460 Остальное - 359 00:16:28,460 --> 00:16:30,330 это было действительно трудно частью этой программы. 360 00:16:30,330 --> 00:16:31,940 В противном случае, возвращение ложным. 361 00:16:31,940 --> 00:16:32,630 Готово. 362 00:16:32,630 --> 00:16:33,460 Это проверка (). 363 00:16:33,460 --> 00:16:34,520 >> Теперь, почему это работает? 364 00:16:34,520 --> 00:16:37,040 Ну, тот, который я прошел в слове, который является строкой. 365 00:16:37,040 --> 00:16:41,400 Два, я проверяю внутри хэша стол, который называется $ таблице. 366 00:16:41,400 --> 00:16:45,470 Я заставляя его в нижний регистр по телефону функция очень похожа ToLower () в 367 00:16:45,470 --> 00:16:48,580 С, но это делает целое слово, не один символ. 368 00:16:48,580 --> 00:16:52,680 И если это установлено, другими словами существует представляет собой набор значений, другими словами, 369 00:16:52,680 --> 00:16:54,880 если это правда, то да, это слово. 370 00:16:54,880 --> 00:16:56,530 Потому что я положил его туда с грузом (). 371 00:16:56,530 --> 00:16:59,100 А если нет, я собираюсь вернуться ложным. 372 00:16:59,100 --> 00:17:00,090 >> Теперь остальные легко. 373 00:17:00,090 --> 00:17:03,570 Размер Функция (), как я могу это сделать? 374 00:17:03,570 --> 00:17:05,230 Я по существу сделать вернуть $ размер. 375 00:17:05,230 --> 00:17:07,770 Но я технически нужно сделать это раздражает вещь. 376 00:17:07,770 --> 00:17:10,640 А на самом деле до слышат, я резал один угол слишком много. 377 00:17:10,640 --> 00:17:12,920 Я действительно нужно сделать глобальную $ стол. 378 00:17:12,920 --> 00:17:16,260 >> Но это, как говорится, выгрузить). 379 00:17:16,260 --> 00:17:17,380 Выгрузка () является удивительным. 380 00:17:17,380 --> 00:17:20,500 Функция выгрузки (). 381 00:17:20,500 --> 00:17:23,990 Как я хочу реализовать выгрузку ()? 382 00:17:23,990 --> 00:17:25,079 Готово. 383 00:17:25,079 --> 00:17:25,450 ОК. 384 00:17:25,450 --> 00:17:28,900 >> Так выгрузить (), управление памятью полностью заботиться для вас в 385 00:17:28,900 --> 00:17:31,800 что-то вроде PHP и много из языков высокого уровня. 386 00:17:31,800 --> 00:17:32,600 Так что это удивительно. 387 00:17:32,600 --> 00:17:36,080 Например, почему, черт возьми, мы провели прошлое восемь плюс недели на C письменной форме 388 00:17:36,080 --> 00:17:41,030 по-видимому, очень медленно, на самом деле время потребляющие проблемы с десятков часов 389 00:17:41,030 --> 00:17:42,530 от того, работают под нашими поясами? 390 00:17:42,530 --> 00:17:46,110 >> Ну, с одной стороны, это может работать нормально для небольших программ. 391 00:17:46,110 --> 00:17:47,840 Это, конечно, ускорило мой время разработки. 392 00:17:47,840 --> 00:17:49,790 Но давайте посмотрим, что произойдет в реальном мире. 393 00:17:49,790 --> 00:17:52,370 >> Отпусти меня в этот каталог в окне терминала. 394 00:17:52,370 --> 00:17:53,370 Там в орфографии. 395 00:17:53,370 --> 00:17:56,570 И обратите внимание, как в сторону, и вы, возможно, столкнулись это в проблемы установите 396 00:17:56,570 --> 00:17:58,190 шесть или проблема установить семь. 397 00:17:58,190 --> 00:18:01,610 Вы не строго должны конец PHP файлы с расширением. PHP. 398 00:18:01,610 --> 00:18:05,250 Если поставить такую ​​строку этой первой в на самый верх, это специальная линия 399 00:18:05,250 --> 00:18:10,980 синтаксиса, что по существу означает найти программа под названием PHP и использовать его для 400 00:18:10,980 --> 00:18:12,270 интерпретировать этот файл. 401 00:18:12,270 --> 00:18:15,410 Так что теперь никто не знает, что Я бегу программу PHP. 402 00:18:15,410 --> 00:18:19,860 Я могу запустить его как будто это были что-то составлен в С. 403 00:18:19,860 --> 00:18:20,650 >> Но вот в чем дело. 404 00:18:20,650 --> 00:18:21,600 На самом деле, давайте сделаем это снова. 405 00:18:21,600 --> 00:18:23,530 Dropbox/pset6 /. 406 00:18:23,530 --> 00:18:25,390 Там в орфографии. 407 00:18:25,390 --> 00:18:26,720 Хорошо, 0.44 секунды. 408 00:18:26,720 --> 00:18:28,080 Он получил быстрее на этот раз. 409 00:18:28,080 --> 00:18:29,745 >> Теперь давайте идти в PHP версии. 410 00:18:29,745 --> 00:18:43,070 411 00:18:43,070 --> 00:18:44,320 Приятная неожиданность. 412 00:18:44,320 --> 00:18:50,830 413 00:18:50,830 --> 00:18:53,285 Но подумайте, как много времени Я спас в рабочее время. 414 00:18:53,285 --> 00:18:56,990 415 00:18:56,990 --> 00:18:57,790 ОК. 416 00:18:57,790 --> 00:19:01,020 >> Так 3,59 секунды, что на самом деле звучит не точны либо. 417 00:19:01,020 --> 00:19:03,710 Но это потому, короче говоря, когда вы печатаете из огромного количества 418 00:19:03,710 --> 00:19:06,840 материала на экран, что Сам замедляет работу. 419 00:19:06,840 --> 00:19:11,260 Что это действительно взял процессор в Прибор был 3,59 секунды, в 420 00:19:11,260 --> 00:19:15,260 В отличие от C, который состоялся 0,44 секунд в последнее время. 421 00:19:15,260 --> 00:19:17,620 Это действительно на порядок Величина разные. 422 00:19:17,620 --> 00:19:20,280 >> Так где же, что цена приходят? 423 00:19:20,280 --> 00:19:21,790 Почему это так гораздо медленнее? 424 00:19:21,790 --> 00:19:24,220 Почему PHP выполнять так плохо? 425 00:19:24,220 --> 00:19:25,242 Даниэль? 426 00:19:25,242 --> 00:19:26,550 >> АУДИТОРИЯ: Вы действительно не использовать хэш-таблицу. 427 00:19:26,550 --> 00:19:27,710 >> ДЭВИД Малан: я действительно не использовать хэш-таблицу. 428 00:19:27,710 --> 00:19:28,760 Так я вроде сделал. 429 00:19:28,760 --> 00:19:29,870 Так что это ассоциативный массив. 430 00:19:29,870 --> 00:19:33,650 Скорее всего, если люди на PHP являются очень умные, они использовали под 431 00:19:33,650 --> 00:19:39,520 капот фактический хэш-таблица реализованы в чем-то вроде C или C + +. 432 00:19:39,520 --> 00:19:41,290 Но. 433 00:19:41,290 --> 00:19:42,760 Да. 434 00:19:42,760 --> 00:19:44,010 >> АУДИТОРИЯ: [неразборчиво]. 435 00:19:44,010 --> 00:19:46,690 436 00:19:46,690 --> 00:19:47,080 >> ДЭВИД Малан: Да. 437 00:19:47,080 --> 00:19:50,780 Таким образом, каждый из функций я написал сейчас - на самом деле, вы можете сказать, что еще раз 438 00:19:50,780 --> 00:19:51,480 немного громче? 439 00:19:51,480 --> 00:19:54,509 >> АУДИТОРИЯ: Каждая из функций, которые Вы включили имеет намного больше полный 440 00:19:54,509 --> 00:19:56,610 Емкость, чем - 441 00:19:56,610 --> 00:19:57,550 >> ДЭВИД Малан: Так вот очень верно. 442 00:19:57,550 --> 00:20:01,490 Там очень много больше накладные расходы, что мы на самом деле не видя, сосредоточив внимание только на 443 00:20:01,490 --> 00:20:03,730 dictionary.php, которые я только что написал. 444 00:20:03,730 --> 00:20:08,020 С другой стороны, есть целый переводчик собирается в фоновом режиме. 445 00:20:08,020 --> 00:20:12,040 В самом деле, когда я запустил эту программу, она не был запущен, составленные из нулей и единиц 446 00:20:12,040 --> 00:20:14,290 предназначен для моего Intel CPU. 447 00:20:14,290 --> 00:20:19,270 Скорее, это был бегущая строка за строкой PHP код, который выглядит так же, 448 00:20:19,270 --> 00:20:20,350 как мы ввели его. 449 00:20:20,350 --> 00:20:22,475 И поэтому, когда вы используете интерпретируемый язык, вы 450 00:20:22,475 --> 00:20:23,850 на самом деле заплатить эту цену. 451 00:20:23,850 --> 00:20:27,010 Это займет некоторое время, чтобы прочитать Ваш файл сверху вниз, слева 452 00:20:27,010 --> 00:20:30,740 Хорошо, а затем выполнить каждый линия снова и снова. 453 00:20:30,740 --> 00:20:34,250 >> Сейчас на самом деле, особенно в Интернете, Вы можете фактически ускорить этот процесс 454 00:20:34,250 --> 00:20:38,660 за счет кэширования результатов PHP код интерпретируется. 455 00:20:38,660 --> 00:20:41,640 И это имеет смысл в Интернете, потому что если у вас есть не один пользователь, как 456 00:20:41,640 --> 00:20:46,300 меня здесь, но 1000 или 10000 пользователей, то может быть, в первый раз файл 457 00:20:46,300 --> 00:20:49,050 Доступ это медленно, но после этого это намного быстрее. 458 00:20:49,050 --> 00:20:51,000 >> Но это тоже, опять же, компромисс. 459 00:20:51,000 --> 00:20:53,870 И за то, как научных данных установить, или даже что-то большое, как 460 00:20:53,870 --> 00:20:58,330 это, ваши пользователи в конечном итоге начинаете чувствовать, что замедление. 461 00:20:58,330 --> 00:21:02,670 >> Короче говоря, интерпретировать языки очень в моде, очень популярны, и 462 00:21:02,670 --> 00:21:06,710 откровенно, вероятно, языки, которые должен достичь для при решении задач 463 00:21:06,710 --> 00:21:08,200 после CS50. 464 00:21:08,200 --> 00:21:12,720 Но понимаете, сколько вы на самом деле принимая как должное под капотом 465 00:21:12,720 --> 00:21:15,910 действительно эти последние несколько недель в хэш столы, и деревья, и пытается, 466 00:21:15,910 --> 00:21:20,770 которые используются в конечном счете, на самом деле реализовать такие вещи, как открывающей скобки, 467 00:21:20,770 --> 00:21:24,200 квадратная скобка, которую мы можем сейчас с благодарностью воспринимаем как должное. 468 00:21:24,200 --> 00:21:26,360 >> Итак, давайте посмотрим теперь на этом веб-контексте. 469 00:21:26,360 --> 00:21:29,890 И я уже говорил в прошлый раз, что есть куча суперглобальных в PHP, что 470 00:21:29,890 --> 00:21:32,490 на самом деле не актуальны в командной строке. 471 00:21:32,490 --> 00:21:36,210 Они более актуальным в контексте использования PHP в веб-контексте. 472 00:21:36,210 --> 00:21:41,220 Так работает PHP на веб-сервере для того, для создания вещи, как HTML. 473 00:21:41,220 --> 00:21:44,540 >> И мы взглянул на $ _GET и $ _POST, вот где автоматически пользователи ' 474 00:21:44,540 --> 00:21:49,100 вход заканчивается просто, если вы представить сформировать в файл с расширением. PHP на веб 475 00:21:49,100 --> 00:21:50,460 Сервер, как машины. 476 00:21:50,460 --> 00:21:53,310 Но давайте кратко рассмотрим $ _COOKIE И $ _SESSION. 477 00:21:53,310 --> 00:21:56,670 >> С точки зрения непрофессионала, что такое печенье, как Вы понимаете это в контексте 478 00:21:56,670 --> 00:21:58,220 с помощью веб? 479 00:21:58,220 --> 00:21:59,450 >> АУДИТОРИЯ: Файл на компьютере. 480 00:21:59,450 --> 00:21:59,920 >> ДЭВИД Малан: Да. 481 00:21:59,920 --> 00:22:03,500 Это файл на компьютере пользователя посажены все веб-сайт 482 00:22:03,500 --> 00:22:04,410 вам посчастливилось посетить. 483 00:22:04,410 --> 00:22:07,334 Так что, когда вы идете в Facebook, когда вы идете чтобы bankofamerica.com, когда вы идете 484 00:22:07,334 --> 00:22:10,330 на google.com, когда вы идете в почти любой сайт в мире в эти дни, 485 00:22:10,330 --> 00:22:14,850 в том числе cs50.net, печенье посадил на вашем компьютере, который является 486 00:22:14,850 --> 00:22:19,800 либо значение, которое хранится в оперативной памяти в вашем Компьютер в памяти браузера, или 487 00:22:19,800 --> 00:22:22,800 иногда действительно файл, хранящийся на жестком диске. 488 00:22:22,800 --> 00:22:26,960 >> И что, как правило, хранится в этом файле не имя пользователя, не ваш 489 00:22:26,960 --> 00:22:31,060 пароль, как правило, не то, чувствительны, если сайт не не так 490 00:22:31,060 --> 00:22:35,040 хорошо с их безопасности, а скорее это большой уникальный идентификатор среди 491 00:22:35,040 --> 00:22:35,680 другое. 492 00:22:35,680 --> 00:22:38,920 Это большая случайное число посадили на вашем компьютер, но вы можете думать о качестве 493 00:22:38,920 --> 00:22:42,740 рода виртуальный ручной штамп, как от клуб или некоторые парк аттракционов, что 494 00:22:42,740 --> 00:22:47,160 позволяет персоналу, владельцы, что обслуживание, чтобы помнить, кто ты. 495 00:22:47,160 --> 00:22:51,030 Таким образом, если большая случайное число, как 12345678, хотя это, очевидно, 496 00:22:51,030 --> 00:22:54,180 не слишком случайным, думают о том, что, как ручной штамп, что при посещении 497 00:22:54,180 --> 00:22:57,930 facebook.com впервые, они печать этот номер на вашей руке. 498 00:22:57,930 --> 00:23:01,510 А потом, потому что вы говорите HTTP, вы будучи браузеру, и потому Facebook 499 00:23:01,510 --> 00:23:06,440 очевидно, говорит то же самое, веб сервер, протокол HTTP говорит, что 500 00:23:06,440 --> 00:23:09,930 в любое время вы впоследствии посетить facebook.com, будь то вторая 501 00:23:09,930 --> 00:23:13,560 позже, через час, даже на следующий день, до тех пор, пока у вас есть явно не 502 00:23:13,560 --> 00:23:17,050 вышли из, которые эффективно , как мытье рук. 503 00:23:17,050 --> 00:23:20,280 HTTP говорит, что вы должны представить свой ручной штамп каждый раз, когда вы 504 00:23:20,280 --> 00:23:22,020 вернуться на этот сайт. 505 00:23:22,020 --> 00:23:24,390 >> Что Facebook же тогда, они посмотрите на эту ручной печатью и 506 00:23:24,390 --> 00:23:26,850 они говорят, о, 123456789. 507 00:23:26,850 --> 00:23:30,260 Я не знаю, на первый взгляд, что это Дэвид Малан в Кембридже, 508 00:23:30,260 --> 00:23:34,690 Массачусетс, но они могут проверить их базы данных и говорят, о, человек 509 00:23:34,690 --> 00:23:39,930 на чьей компьютерной мы посадили 123456789 Дэвид Малан из Кембриджа, 510 00:23:39,930 --> 00:23:40,440 Массачусетс. 511 00:23:40,440 --> 00:23:46,000 Давайте покажем, что пользователь затем его профиль страницы или его Экспорт новостей. 512 00:23:46,000 --> 00:23:49,660 >> Но есть проблема здесь, если это то, как веб-действительно работает. 513 00:23:49,660 --> 00:23:51,390 Давайте взглянем на простой пример. 514 00:23:51,390 --> 00:23:55,190 Давайте на самом деле пойти сказать facebook.com. 515 00:23:55,190 --> 00:23:58,130 Но прежде чем мы могли пойти туда, пусть меня идти вперед и открыть в Chrome 516 00:23:58,130 --> 00:23:59,790 Инспектор сюда. 517 00:23:59,790 --> 00:24:01,140 Дай мне посмотреть на вкладке Сеть. 518 00:24:01,140 --> 00:24:06,020 А теперь давайте идти вперед и ввести в https://facebook.com. 519 00:24:06,020 --> 00:24:09,410 И я делаю это так, что мы не видим все эти редиректы и отходов 520 00:24:09,410 --> 00:24:10,660 раз, глядя через тех. 521 00:24:10,660 --> 00:24:12,690 Позвольте мне нажмите ввод. 522 00:24:12,690 --> 00:24:13,130 >> Хорошо. 523 00:24:13,130 --> 00:24:14,580 Мы видим целую кучу запросов. 524 00:24:14,580 --> 00:24:15,640 Там приходит Facebook. 525 00:24:15,640 --> 00:24:16,930 Там целая куча файлов. 526 00:24:16,930 --> 00:24:19,290 И здесь, на мой упоминании задержки в последний раз, это 527 00:24:19,290 --> 00:24:21,240 много HTTP-запросов. 528 00:24:21,240 --> 00:24:23,700 Но первый из них, вероятно, самое интересное. 529 00:24:23,700 --> 00:24:26,420 >> Так что давайте прокрутите вниз здесь, и Я увеличения в секунду. 530 00:24:26,420 --> 00:24:29,090 Это будет своего рода беспорядок, но давайте посмотрим. 531 00:24:29,090 --> 00:24:31,660 Facebook посылает нам целая куча вещей. 532 00:24:31,660 --> 00:24:33,490 >> Но эй, интересно. 533 00:24:33,490 --> 00:24:37,880 Они посадки не один, а четыре ручные штампы на мою руку здесь. 534 00:24:37,880 --> 00:24:40,400 Set-Cookie, Set-Cookie, Set-Cookie, Set-Cookie. 535 00:24:40,400 --> 00:24:44,030 И есть несколько особенностей здесь. 536 00:24:44,030 --> 00:24:46,170 Все они упомянуть некоторые вид истечения. 537 00:24:46,170 --> 00:24:50,090 И, похоже, Facebook надеется не помнить меня до 2015 года. 538 00:24:50,090 --> 00:24:53,670 Так вот, предположительно время, по которому Я должен выйти или они просто 539 00:24:53,670 --> 00:24:55,710 автоматически предполагать, что я не вернется. 540 00:24:55,710 --> 00:24:57,840 Так что на самом деле неплохой количество времени. 541 00:24:57,840 --> 00:24:59,170 >> И есть некоторые другие вещи здесь происходит. 542 00:24:59,170 --> 00:25:03,036 Это печенье, кажется, насильно удален говоря он истек в 1970 году 543 00:25:03,036 --> 00:25:04,460 до появления печенье. 544 00:25:04,460 --> 00:25:06,510 Таким образом, браузер просто собираюсь предположить Хорошо, это как 545 00:25:06,510 --> 00:25:07,910 промывания печать руки. 546 00:25:07,910 --> 00:25:11,240 >> Но теперь, когда мой браузер делает последующий запрос - 547 00:25:11,240 --> 00:25:14,340 позвольте мне идти вперед и делать это снова и перезагрузки. 548 00:25:14,340 --> 00:25:18,170 Теперь позвольте мне вернитесь к лучших запрос и спуститься 549 00:25:18,170 --> 00:25:20,760 здесь, просить заголовки. 550 00:25:20,760 --> 00:25:21,390 Заметим, что это. 551 00:25:21,390 --> 00:25:25,280 Так что теперь я под заголовками не реагирования, но обратите внимание, это говорит заголовки запросов. 552 00:25:25,280 --> 00:25:29,220 И заметьте, что мой браузер в рамках свою просьбу после удара перезагрузки имеет 553 00:25:29,220 --> 00:25:32,780 отправлено по крайней мере следующие информация. 554 00:25:32,780 --> 00:25:34,670 Не Set-Cookie, но печенье. 555 00:25:34,670 --> 00:25:38,750 Так что это линия, заголовок HTTP так сказать, где мой браузер является своего рода 556 00:25:38,750 --> 00:25:43,340 из без моего ведома представления моя рука для осмотра Facebook. 557 00:25:43,340 --> 00:25:46,020 >> Таким образом, эти печенья может быть используется, то для чего? 558 00:25:46,020 --> 00:25:49,420 Чтобы помнить, кто ты есть, или вспомнить, как много раз вы были там, или 559 00:25:49,420 --> 00:25:50,280 действительно что-нибудь. 560 00:25:50,280 --> 00:25:52,742 >> Так вот counter.php. 561 00:25:52,742 --> 00:25:53,780 И позвольте мне увеличить на шрифте. 562 00:25:53,780 --> 00:25:58,380 И каждый раз, когда я перезагрузить эту страницу, уведомление это вспоминая, сколько раз 563 00:25:58,380 --> 00:25:59,250 Я был там. 564 00:25:59,250 --> 00:26:00,570 Ну, это еще не все, что впечатляет. 565 00:26:00,570 --> 00:26:03,140 Давайте просто закрыть эту вкладку, а теперь давайте вернемся к 566 00:26:03,140 --> 00:26:07,860 http://localhost/counter.php. 567 00:26:07,860 --> 00:26:08,970 >> О, это интересно. 568 00:26:08,970 --> 00:26:10,960 Это до сих пор помнят, даже хотя я закрыл вкладку. 569 00:26:10,960 --> 00:26:14,010 И, честно говоря, если бы я закрыть браузер, в случае их осуществления в правильном направлении, я 570 00:26:14,010 --> 00:26:18,950 еще может помнить, что этот пользователь которые он или она был первый раз, и 571 00:26:18,950 --> 00:26:22,840 только один раз я иду в меню Chrome, который здесь здесь, и перейти к 572 00:26:22,840 --> 00:26:25,990 История, и нажмите Очистить данные просмотров, как некоторые из вас, возможно, в 573 00:26:25,990 --> 00:26:33,050 прошлое, только тогда ваша печенье на самом деле быть удалены во время веб- 574 00:26:33,050 --> 00:26:33,970 развитие. 575 00:26:33,970 --> 00:26:35,340 >> Так что, если мы идем - 576 00:26:35,340 --> 00:26:37,080 давайте закрыть Gedit здесь. 577 00:26:37,080 --> 00:26:38,910 И если мы идем сейчас к этому файлу. 578 00:26:38,910 --> 00:26:44,210 Позвольте мне идти в наш виртуальных доменов / локальный / общественности, и сделаем 579 00:26:44,210 --> 00:26:46,340 counter.php. 580 00:26:46,340 --> 00:26:48,350 Обратите внимание, что это довольно простая программа. 581 00:26:48,350 --> 00:26:50,250 Это довольно простой веб-сайт. 582 00:26:50,250 --> 00:26:51,770 >> Таким образом, верхняя часть файла находится всего в комментарии. 583 00:26:51,770 --> 00:26:54,930 Но вот новая линия, что вы можете уже видели в р-установить семь, 584 00:26:54,930 --> 00:26:56,000 session_start (). 585 00:26:56,000 --> 00:27:00,380 Это линия PHP кода, который существенно сообщает веб-сервер, убедитесь, 586 00:27:00,380 --> 00:27:03,400 Обязательно печать руки и сделать почитать ручные штампы. 587 00:27:03,400 --> 00:27:06,810 Вот и все, что линия делает, и это делает все этого процесса для нас. 588 00:27:06,810 --> 00:27:09,510 Тогда обратите внимание, я только что получил две ветви здесь. 589 00:27:09,510 --> 00:27:14,150 Если ключ Счетчик внутри этого специальная глобальная переменная называется 590 00:27:14,150 --> 00:27:18,010 $ _SESSION Установлен, - иными словами, если есть какая-то ценность там - 591 00:27:18,010 --> 00:27:22,440 давайте его и хранить его в местный переменная с именем $ счетчика. 592 00:27:22,440 --> 00:27:27,000 В противном случае, давайте назначим $ счетчик значение по умолчанию 0. 593 00:27:27,000 --> 00:27:30,320 >> Теперь вот один из аспектов PHP это и благословение и проклятие. 594 00:27:30,320 --> 00:27:32,080 PHP немного неряшливо. 595 00:27:32,080 --> 00:27:35,160 Так в то время как в С, что бы Объем счетчика были 596 00:27:35,160 --> 00:27:36,725 либо здесь, либо здесь? 597 00:27:36,725 --> 00:27:39,270 598 00:27:39,270 --> 00:27:41,690 >> Было бы были ограничены тем фигурные скобки. 599 00:27:41,690 --> 00:27:42,090 Знаете, что? 600 00:27:42,090 --> 00:27:46,920 В PHP, он существует даже за пределами тех, фигурные скобки, здесь, и здесь, 601 00:27:46,920 --> 00:27:49,120 и здесь, и здесь, и даже внизу. 602 00:27:49,120 --> 00:27:52,400 Поэтому я говорю, что это благословение в том смысле, что вы не должны думать, как 603 00:27:52,400 --> 00:27:54,070 сложно, как мы сделали несколько недель назад. 604 00:27:54,070 --> 00:27:56,880 Но это также немного о проклятии в том, что независимо от того, где вы используете переменную в 605 00:27:56,880 --> 00:28:00,020 PHP, по крайней мере, в программе, как это, это глобально доступной для 606 00:28:00,020 --> 00:28:01,170 Хорошо это или плохо. 607 00:28:01,170 --> 00:28:06,130 Таким образом, вы должны иметь в виду, теперь, ваши переменные не могут быть неопределенными. 608 00:28:06,130 --> 00:28:07,640 Вы, возможно, определяется их в другом месте. 609 00:28:07,640 --> 00:28:09,460 >> Но то, что я буду делать в конечном счете? 610 00:28:09,460 --> 00:28:13,160 Я собираюсь хранить внутри, что глобальное переменная в качестве значения 611 00:28:13,160 --> 00:28:17,060 Счетчик ключевым результатом делает счетчик плюс 1. 612 00:28:17,060 --> 00:28:18,910 Так что это просто арифметика что делает 613 00:28:18,910 --> 00:28:20,590 приращение этого счетчика. 614 00:28:20,590 --> 00:28:24,850 И то, что я храню, что значение еще в здесь средством для 615 00:28:24,850 --> 00:28:29,970 существенно обновить базу данных, чтобы помнить, что пользователь 123456789 был 616 00:28:29,970 --> 00:28:31,010 здесь в два раза. 617 00:28:31,010 --> 00:28:33,780 И когда я сделать это снова в следующий раз я перезагрузите страницу, он собирается проверить 618 00:28:33,780 --> 00:28:36,710 мой штамп руку и сказать, о, Пользователь 123456789 имеет сейчас 619 00:28:36,710 --> 00:28:38,410 был здесь три раза. 620 00:28:38,410 --> 00:28:43,390 >> И так, что PHP и подобные языки делают для нас они выясняя 621 00:28:43,390 --> 00:28:47,720 , как и где и как долго для хранения значений в этой коллекции 622 00:28:47,720 --> 00:28:48,830 суперглобальная. 623 00:28:48,830 --> 00:28:52,750 И это суперглобальные в следующий раз я посетите страницу является своего рода магическим 624 00:28:52,750 --> 00:28:57,440 предварительно заполненные, наполненный значения, которые были там в последний раз вы посещали, 625 00:28:57,440 --> 00:29:02,310 было ли это секунду назад, в неделю назад, или в 2013 году, и мы сейчас говорим 626 00:29:02,310 --> 00:29:03,790 о 2015. 627 00:29:03,790 --> 00:29:07,600 PHP и веб-сервер уход взятие всего этого для вас. 628 00:29:07,600 --> 00:29:08,850 >> АУДИТОРИЯ: [неразборчиво]. 629 00:29:08,850 --> 00:29:11,900 630 00:29:11,900 --> 00:29:15,760 >> ДЭВИД Малан: Переменные в PHP являются практически всегда глобальная если вы 631 00:29:15,760 --> 00:29:18,400 объявить их внутри функции, и тогда они являются локальными для 632 00:29:18,400 --> 00:29:19,420 только функция. 633 00:29:19,420 --> 00:29:22,300 Но потому, что я не написал любой функции, то теперь они эффективно 634 00:29:22,300 --> 00:29:25,090 глобальная протяжении всей моей файла здесь. 635 00:29:25,090 --> 00:29:26,040 >> АУДИТОРИЯ: Есть ли способ чтобы сделать их местный? 636 00:29:26,040 --> 00:29:28,470 >> ДЭВИД Малан: Есть ли способ сделать их местный? 637 00:29:28,470 --> 00:29:30,680 Только, обернув их в функции. 638 00:29:30,680 --> 00:29:32,790 Что в последней версии PHP, вы можете сделать это с 639 00:29:32,790 --> 00:29:34,130 анонимная функция. 640 00:29:34,130 --> 00:29:35,930 Но об этом в контекст JavaScript. 641 00:29:35,930 --> 00:29:37,260 Но Краткий ответ: нет. 642 00:29:37,260 --> 00:29:40,888 Больше да. 643 00:29:40,888 --> 00:29:42,380 Хороший. 644 00:29:42,380 --> 00:29:43,380 Хорошо вопрос викторины. 645 00:29:43,380 --> 00:29:43,930 Хорошо. 646 00:29:43,930 --> 00:29:47,760 >> Таким образом, наконец, сама страница на самом деле довольно просто. 647 00:29:47,760 --> 00:29:51,470 Обратите внимание, что, как только я выйти из режима PHP, напомним что все эти вещи вниз 648 00:29:51,470 --> 00:29:53,700 ниже только собирается получить плевать из сырья в браузер. 649 00:29:53,700 --> 00:29:57,050 Который прекрасен, потому что я хочу, чтобы отправить пользователь некоторые HTML, но я хочу 650 00:29:57,050 --> 00:29:59,140 для динамического обновления, что HTML. 651 00:29:59,140 --> 00:30:03,930 И один из способов я могу сделать это, чтобы разобраться очень быстро упасть обратно в PHP 652 00:30:03,930 --> 00:30:07,730 Режим, использование открывающая скобка знак вопроса Знак равенства, а затем вывести значение 653 00:30:07,730 --> 00:30:08,650 счетчика. 654 00:30:08,650 --> 00:30:12,360 >> Или, если это выглядит немного загадочно, это Знак равенства на самом деле лишь некоторые 655 00:30:12,360 --> 00:30:16,190 синтаксический сахар для этого Е ($ счетчик). 656 00:30:16,190 --> 00:30:19,160 Но, откровенно говоря, это немного некрасиво и немного раздражает, чтобы напечатать. 657 00:30:19,160 --> 00:30:23,660 Итак, PHP очень красиво предлагает эту функцию где можно просто сказать, что это более 658 00:30:23,660 --> 00:30:25,450 кратко таким же образом. 659 00:30:25,450 --> 00:30:26,940 >> Так что же происходит под капот? 660 00:30:26,940 --> 00:30:31,210 Давайте быстро посмотрим на сети Вкладка здесь counter.php. 661 00:30:31,210 --> 00:30:35,090 И позвольте мне идти вперед и первым давайте очистить куки. 662 00:30:35,090 --> 00:30:38,670 Очистить данные просмотров Давайте так начало времени. 663 00:30:38,670 --> 00:30:39,680 Теперь давайте вернемся сюда. 664 00:30:39,680 --> 00:30:41,340 Теперь давайте перезагрузите страницу. 665 00:30:41,340 --> 00:30:42,170 И я вернулся в нуле. 666 00:30:42,170 --> 00:30:44,810 Потому что моя рука штамп был помыт, Сейчас я получить новый печенье. 667 00:30:44,810 --> 00:30:48,780 >> Действительно, если бы я посмотреть на вкладке сети и посмотреть на заголовки ответа, уведомления 668 00:30:48,780 --> 00:30:51,960 что прибор посылает меня печенье, чье имя несколько 669 00:30:51,960 --> 00:30:55,820 произвольно, но вид разумно, PHPSESSID. 670 00:30:55,820 --> 00:30:58,440 И это мне это отправка действительно большой случайное число. 671 00:30:58,440 --> 00:30:59,440 Это не совсем ряд. 672 00:30:59,440 --> 00:31:00,390 Это не совсем шестнадцатеричное. 673 00:31:00,390 --> 00:31:03,600 Это своего рода алфавитно-цифровая строка но по-видимому это случайным образом. 674 00:31:03,600 --> 00:31:06,830 И это ручной штамп так говорить, что я имею в виду. 675 00:31:06,830 --> 00:31:11,960 >> Между тем, если я нажму перезагрузку, а затем посмотреть на этой второй линии для моего второго 676 00:31:11,960 --> 00:31:17,600 просьба, уведомление сейчас, что мой запрос заголовки включают PHPSESSID равно это, 677 00:31:17,600 --> 00:31:19,390 не Set-Cookie, а просто печенье. 678 00:31:19,390 --> 00:31:22,950 И вот презентация моего браузера моей ручной штамп. 679 00:31:22,950 --> 00:31:28,820 >> Так что теперь в качестве тизера, и мы поговорим более об этом в течение недели или около того, но 680 00:31:28,820 --> 00:31:31,590 каким образом это делает вас уязвимы, ваш аккаунт Facebook 681 00:31:31,590 --> 00:31:34,137 уязвимыми, и другой такой приходится уязвимы? 682 00:31:34,137 --> 00:31:35,510 >> АУДИТОРИЯ: Если кто-то имеет свой печенье. 683 00:31:35,510 --> 00:31:36,750 >> ДЭВИД Малан: Да, если кто-то имеет свой печенье. 684 00:31:36,750 --> 00:31:39,920 Я имею в виду действительно, так же, как некоторые из вас возможно, попытались в подобном клубе или 685 00:31:39,920 --> 00:31:44,030 парк развлечений, если вы попытаетесь что-то как это скопировать штамп, хотя 686 00:31:44,030 --> 00:31:47,560 назад на руку другого человека, и тогда он или она представляет его как 687 00:31:47,560 --> 00:31:53,250 самостоятельно, если он на самом деле выглядит идентичны, 123456789, то веб 688 00:31:53,250 --> 00:31:57,980 сервер, по-видимому просто собираюсь надеюсь, что этот пользователь вы. 689 00:31:57,980 --> 00:32:01,450 >> И это действительно фундаментальная угроза в любое время использовать куки 690 00:32:01,450 --> 00:32:05,420 потому что, если кто-то просто подделывает так, чтобы говорим на Вашем печенье, выясняет, что это 691 00:32:05,420 --> 00:32:08,660 есть, либо действительно копируя его глядя на компьютере 692 00:32:08,660 --> 00:32:09,890 и быть как, в порядке. 693 00:32:09,890 --> 00:32:14,520 Печенье Дэвида JJ3JIK и так далее, а затем они достаточно умны, чтобы знать 694 00:32:14,520 --> 00:32:18,080 как сортировать вручную отправить, что печенье из браузера или из 695 00:32:18,080 --> 00:32:22,350 Программа они пишут, они могли полностью войти в веб-сайт, как вы. 696 00:32:22,350 --> 00:32:28,560 Это не так сложно притворяться кто-то еще, если мы не пересмотреть р-набор 697 00:32:28,560 --> 00:32:30,790 два, который ввел что? 698 00:32:30,790 --> 00:32:32,065 >> АУДИТОРИЯ: криптография. 699 00:32:32,065 --> 00:32:33,860 >> ДЭВИД Малан: Немного Немного криптографии. 700 00:32:33,860 --> 00:32:36,550 Простой криптография, по крайней мере стандартная версия, но крипто 701 00:32:36,550 --> 00:32:36,870 тем не менее. 702 00:32:36,870 --> 00:32:37,410 меньше. 703 00:32:37,410 --> 00:32:41,440 Вот и получается, если вы зашифровать все эти заголовки, используя то, что вы 704 00:32:41,440 --> 00:32:48,770 может теперь знают больше знакомо как SSL, Secure Socket Layer, или https:// URL-адреса, 705 00:32:48,770 --> 00:32:51,890 то все эти вещи мы были взглянув на самом деле в зашифрованном виде, 706 00:32:51,890 --> 00:32:54,800 Это означает, что это, как вы не может прочитать ручную марку. 707 00:32:54,800 --> 00:32:59,350 Только facebook.com может или google.com, или в данном случае, прибор может 708 00:32:59,350 --> 00:33:00,550 читал, что ручную марку. 709 00:33:00,550 --> 00:33:04,020 >> Трагически, хотя, и опять же, это слишком уместно с материалом NSA 710 00:33:04,020 --> 00:33:06,410 в последнее время, даже SSL является хрупким. 711 00:33:06,410 --> 00:33:09,850 И это на самом деле не так сложно даже взломать этот шифрование. 712 00:33:09,850 --> 00:33:12,040 Не столько взлома шифрования, но, обманывая 713 00:33:12,040 --> 00:33:15,720 браузеру в расшифровке данные преждевременно. 714 00:33:15,720 --> 00:33:17,880 Но опять же, мы будем дразнить вас с, что в скором времени. 715 00:33:17,880 --> 00:33:21,242 А сейчас просто бояться. 716 00:33:21,242 --> 00:33:23,070 Это трагически рода правда. 717 00:33:23,070 --> 00:33:23,760 >> Хорошо. 718 00:33:23,760 --> 00:33:27,910 Итак, где же теперь это нам дает? 719 00:33:27,910 --> 00:33:29,010 Ну, давайте сделаем это. 720 00:33:29,010 --> 00:33:31,790 Давайте идти вперед и принимать быстрые тизер, прежде чем мы сделать перерыв. 721 00:33:31,790 --> 00:33:33,790 И я думаю, мы будем задерживаться немного дольше сегодня, но мы собираемся, чтобы погрузиться в 722 00:33:33,790 --> 00:33:37,850 что-то новенькое и сексуальность, которая будет возбудить ваш аппетит еще больше. 723 00:33:37,850 --> 00:33:38,950 Так вот тизер. 724 00:33:38,950 --> 00:33:41,520 >> Так SQL, мы начали говорить о очень кратко последний раз. 725 00:33:41,520 --> 00:33:44,670 Вы действительно получить ваши руки грязные с некоторыми из его в р-набор семь. 726 00:33:44,670 --> 00:33:46,480 И с точки зрения непрофессионала, что делает SQL - 727 00:33:46,480 --> 00:33:47,110 S-Q-L - 728 00:33:47,110 --> 00:33:49,850 для вас сделать? 729 00:33:49,850 --> 00:33:50,310 Что это такое? 730 00:33:50,310 --> 00:33:51,546 Да. 731 00:33:51,546 --> 00:33:53,240 >> АУДИТОРИЯ: Давайте получить доступ к данным. 732 00:33:53,240 --> 00:33:53,360 >> DAVID МАЛАН: Да. 733 00:33:53,360 --> 00:33:55,120 Он препятствовал нам получить доступ к данным в базе данных. 734 00:33:55,120 --> 00:33:56,710 Язык структурированных запросов. 735 00:33:56,710 --> 00:33:59,890 И это, по существу языка программирования. 736 00:33:59,890 --> 00:34:03,400 Существуют особенности, что мы даже не будем использовать в классе. 737 00:34:03,400 --> 00:34:04,710 Но вы можете эффективно определении функций. 738 00:34:04,710 --> 00:34:06,870 Они называются хранится процедур в SQL. 739 00:34:06,870 --> 00:34:09,860 Но мы будем держать его довольно просто и просто использовать его для некоторых основных операций 740 00:34:09,860 --> 00:34:14,320 как выбор данных, вставки данных, обновления данных и удаления данных. 741 00:34:14,320 --> 00:34:17,400 >> И вы можете действительно думаете, базы данных, как база данных SQL, как только что 742 00:34:17,400 --> 00:34:18,800 бытия Microsoft Excel. 743 00:34:18,800 --> 00:34:21,989 Поскольку SQL относится к реляционной базы данных, где 744 00:34:21,989 --> 00:34:23,480 отношения просто означает, таблиц. 745 00:34:23,480 --> 00:34:24,739 Строк и столбцов. 746 00:34:24,739 --> 00:34:27,929 Так что все, что вы можете поместить в таблицу как это или Google Docs, 747 00:34:27,929 --> 00:34:32,460 вы могли бы поставить в базу данных SQL , объявив таблице. 748 00:34:32,460 --> 00:34:34,800 >> Теперь, как вы на самом деле доступ эту информацию? 749 00:34:34,800 --> 00:34:38,239 Ну, с команды или запросов, как это. 750 00:34:38,239 --> 00:34:40,199 SELECT, INSERT, UPDATE и DELETE. 751 00:34:40,199 --> 00:34:44,489 И, по большей части, те четыре только ингредиенты, которые вы должны будете 752 00:34:44,489 --> 00:34:47,370 сделать что-то довольно мощно В задачу, поставленную семь. 753 00:34:47,370 --> 00:34:49,940 >> Теперь назад в день, вы на самом деле взаимодействует с базой данных в 754 00:34:49,940 --> 00:34:52,730 черно-белый в окне терминала мигает приглашение вроде этого. 755 00:34:52,730 --> 00:34:56,370 И базы данных мы бежим на Устройство называется MySQL, который 756 00:34:56,370 --> 00:34:58,560 свободный и открытый двигатель исходной базы данных. 757 00:34:58,560 --> 00:35:02,240 Если вы читали Google и Википедии статью, вы будете знать, что имя 758 00:35:02,240 --> 00:35:05,060 немного перехода для некоторых версий Linux. 759 00:35:05,060 --> 00:35:10,460 Maria данных на самом деле раскошелиться поэтому говорить о MySQL. 760 00:35:10,460 --> 00:35:12,740 >> Короче говоря, Oracle купила MySQL. 761 00:35:12,740 --> 00:35:13,870 Oracle в большой компании. 762 00:35:13,870 --> 00:35:17,010 Люди были обеспокоены тем, что это было бы больше не остаются достаточно с открытым исходным кодом, 763 00:35:17,010 --> 00:35:20,930 так что это просто копия MySQL это еще на свободе, все еще открытым исходным кодом, и 764 00:35:20,930 --> 00:35:23,550 установлены в Fedora Linux по умолчанию. 765 00:35:23,550 --> 00:35:26,130 >> Но это вид боли в шею, чтобы познакомиться с 766 00:35:26,130 --> 00:35:27,310 базу данных таким образом. 767 00:35:27,310 --> 00:35:30,560 Так мы включаем в CS50 прибора Бесплатный инструмент с открытым исходным кодом под названием 768 00:35:30,560 --> 00:35:31,700 PHPMyAdmin. 769 00:35:31,700 --> 00:35:33,940 Просто совпадение, что она написана на PHP. 770 00:35:33,940 --> 00:35:36,450 Там нет фундаментальных нужно для PHP здесь. 771 00:35:36,450 --> 00:35:40,090 Но это всего лишь веб-инструмент, который мы загрузили бесплатно, установленных в 772 00:35:40,090 --> 00:35:43,850 прибора, что позволяет нам иметь Графический интерфейс пользователя, с которым 773 00:35:43,850 --> 00:35:48,610 изучить р-набор семи базу данных с для создания новых баз данных, 774 00:35:48,610 --> 00:35:51,980 говорят для вашего собственного конечного проекта, если бы нравится, и в конечном счете создать 775 00:35:51,980 --> 00:35:55,900 динамических веб-сайтов, как CS50 финансов , которые позволяют запрашивать данные и 776 00:35:55,900 --> 00:35:58,140 обновлять данные динамически. 777 00:35:58,140 --> 00:36:01,420 >> Вы не будете иметь, чтобы использовать только простой текстовый файл или CSV. 778 00:36:01,420 --> 00:36:05,950 Вы действительно можете использовать смарт-базу данных Программа так что вы можете выполнять более 779 00:36:05,950 --> 00:36:10,240 сложные запросы, чем просто чтение через все линейно. 780 00:36:10,240 --> 00:36:14,150 >> Так, например, это то, что мы даем Вы из коробки для р-набор семь. 781 00:36:14,150 --> 00:36:18,280 Это таблица с по-видимому, по меньшей мере три колонны, одна из которых 782 00:36:18,280 --> 00:36:21,450 имя пользователя, одним из которых является хэш и другой из которых является идентификатором. 783 00:36:21,450 --> 00:36:26,200 >> Но самое интересное, да и просто дразнить одна мысль здесь, имя пользователя 784 00:36:26,200 --> 00:36:29,270 Предположительно уже уникально, не так ли? 785 00:36:29,270 --> 00:36:31,190 Я имею в виду, большинство любого сайта, если у вас есть имя пользователя, есть 786 00:36:31,190 --> 00:36:32,370 Не может быть двух Цезарей. 787 00:36:32,370 --> 00:36:33,440 Там не может быть двух Malans. 788 00:36:33,440 --> 00:36:34,950 Там не может быть двух jharvards. 789 00:36:34,950 --> 00:36:35,600 Его уникальная. 790 00:36:35,600 --> 00:36:38,610 В противном случае, они не знают, которые jharvard на самом деле. 791 00:36:38,610 --> 00:36:42,710 Так что может быть мотивацией для также имеющей третий столбец слева 792 00:36:42,710 --> 00:36:46,970 там называется ID, который выглядит как число, которое аналогично уникальным? 793 00:36:46,970 --> 00:36:51,300 Он чувствует себя немного избыточной мне на первый взгляд. 794 00:36:51,300 --> 00:36:54,910 Почему это может быть убедительным, чтобы иметь не только уникальные имена пользователей, 795 00:36:54,910 --> 00:36:56,837 но и уникальные номера? 796 00:36:56,837 --> 00:36:59,460 >> АУДИТОРИЯ: Они могли бы и тот же пароль. 797 00:36:59,460 --> 00:37:01,720 >> DAVID МАЛАН: люди, возможно, тот же пароль, конечно. 798 00:37:01,720 --> 00:37:03,900 Это может случиться абсолютно. 799 00:37:03,900 --> 00:37:08,270 Но если у них есть это уникальное имя пользователя, я утверждают, что это действительно не 800 00:37:08,270 --> 00:37:11,630 вопрос, потому что, если они введут в имя пользователя, нужно только, чтобы проверить их 801 00:37:11,630 --> 00:37:15,060 пароль, их хэш их. 802 00:37:15,060 --> 00:37:15,970 Почему еще? 803 00:37:15,970 --> 00:37:17,950 >> АУДИТОРИЯ: быстрый поиск. 804 00:37:17,950 --> 00:37:18,680 >> DAVID МАЛАН: быстрый поиск. 805 00:37:18,680 --> 00:37:19,548 Почему? 806 00:37:19,548 --> 00:37:21,460 >> АУДИТОРИЯ: ID является лишь одним. 807 00:37:21,460 --> 00:37:24,040 >> DAVID МАЛАН: ID является только один символ, а если быть более точным, это число, 808 00:37:24,040 --> 00:37:26,910 поэтому, вероятно, 32 бит или что-то вроде этого. 809 00:37:26,910 --> 00:37:30,270 В то время как имя пользователя, по-видимому Джейсон Hirschhorn случилось там вроде 810 00:37:30,270 --> 00:37:33,900 неимоверно длинный, и он собирается возьмите меня намного больше времени в строку 811 00:37:33,900 --> 00:37:40,910 сравнить H-I-R-S-C-H-H-O-R-N, и возможно / 0 или что-то вроде этого, для того, 812 00:37:40,910 --> 00:37:45,100 для поиска Jason, а не только говорю, дайте мне пользователем номер два. 813 00:37:45,100 --> 00:37:46,510 Это 32 бит. 814 00:37:46,510 --> 00:37:48,550 Это одно, что INT у вас есть для сравнения. 815 00:37:48,550 --> 00:37:52,150 И действительно, именно поэтому базы данных стремятся возложить уникальных идентификаторов 816 00:37:52,150 --> 00:37:53,710 строк в них. 817 00:37:53,710 --> 00:37:56,280 >> Теперь то, что другие типы данных есть Кроме того, INT и, видимо, 818 00:37:56,280 --> 00:37:57,160 строк, как это? 819 00:37:57,160 --> 00:37:59,700 Ну, если быть более правильным, SQL базах данных, как 820 00:37:59,700 --> 00:38:02,060 MySQL, есть текстовые поля. 821 00:38:02,060 --> 00:38:05,320 И CHAR немного обманчиво ни одного СИМВОЛ. 822 00:38:05,320 --> 00:38:10,290 Поле CHAR в базе данных MySQL является один или несколько символов, но это 823 00:38:10,290 --> 00:38:11,780 фиксированное число символов. 824 00:38:11,780 --> 00:38:15,710 >> Так, например, если я иду к PHPMyAdmin, как вы, возможно, уже, или 825 00:38:15,710 --> 00:38:21,340 скоро проблема установить семь, и я иду в моей базе данных, и просто для удовольствия, 826 00:38:21,340 --> 00:38:25,700 давайте создадим новую таблицу с именем проверить с помощью всего двух колонок. 827 00:38:25,700 --> 00:38:27,160 Я затем нажмите кнопку Go. 828 00:38:27,160 --> 00:38:30,070 И это станет довольно знакомо, тем более, что вы возиться 829 00:38:30,070 --> 00:38:31,130 вокруг по своему усмотрению. 830 00:38:31,130 --> 00:38:34,140 Здесь я мог бы ввести ID для создания новая таблица типа INT. 831 00:38:34,140 --> 00:38:37,770 Но здесь я мог бы ввести имя пользователя для воссоздать, что ранее таблицу. 832 00:38:37,770 --> 00:38:40,700 И обратите внимание, у меня есть целый букет типов на выбор. 833 00:38:40,700 --> 00:38:43,610 >> И это тоже, почему PHPMyAdmin отчасти хорош. 834 00:38:43,610 --> 00:38:46,770 Это своего рода самообучения в этом вам может только отчасти точка и нажмите, и 835 00:38:46,770 --> 00:38:50,730 посмотреть на выпадающих меню, и вывести из что то, что полномочия SQL, дает тебе. 836 00:38:50,730 --> 00:38:54,090 >> И в самом деле, если я выбираю CHAR, я тогда должны указать длину, или, как 837 00:38:54,090 --> 00:38:55,940 многие ценности, сколько символов. 838 00:38:55,940 --> 00:39:00,090 Итак, очень общие ценности такие вещи, как 255, но это немного долго. 839 00:39:00,090 --> 00:39:02,250 Обычно это восемь имя пользователя. 840 00:39:02,250 --> 00:39:03,590 Но это немного небольшой эти дни. 841 00:39:03,590 --> 00:39:05,430 Так что это дизайнерское решение. 842 00:39:05,430 --> 00:39:08,630 Это макс. 8 символов, 32, 255, 1000? 843 00:39:08,630 --> 00:39:09,830 Это действительно зависит от вас. 844 00:39:09,830 --> 00:39:12,350 Но поле CHAR фиксированное число. 845 00:39:12,350 --> 00:39:16,420 Так что выбирайте слишком мало, и ты вроде резьбовое, если вы хотите более длительный логин. 846 00:39:16,420 --> 00:39:19,132 Выберите слишком много, и то, что недостаток? 847 00:39:19,132 --> 00:39:20,820 >> АУДИТОРИЯ: [неразборчиво]. 848 00:39:20,820 --> 00:39:21,620 >> ДЭВИД Малан: Это расточительно. 849 00:39:21,620 --> 00:39:24,835 Так же, как в C, если у вас есть больше, кусок памяти, чем нужно, вы 850 00:39:24,835 --> 00:39:27,190 просто тратить время и занимают пространство. 851 00:39:27,190 --> 00:39:31,430 Так в качестве альтернативы, существует VARCHAR, который решает эту проблему, 852 00:39:31,430 --> 00:39:36,390 лечении длину не в виде фиксированной длины, а в качестве максимальной длины, и с помощью 853 00:39:36,390 --> 00:39:40,990 переменное количество символов, которые затем стремится использовать только столько символов, как вы 854 00:39:40,990 --> 00:39:42,710 на самом деле нужно. 855 00:39:42,710 --> 00:39:43,670 Это звучит идеально. 856 00:39:43,670 --> 00:39:45,640 >> Почему бы нам не избавиться от Введите данные CHAR тогда? 857 00:39:45,640 --> 00:39:48,500 Какая может быть недостаток используя VARCHARS, что звучит 858 00:39:48,500 --> 00:39:51,644 как это хороший выигрыш? 859 00:39:51,644 --> 00:39:52,596 Да? 860 00:39:52,596 --> 00:39:53,846 >> АУДИТОРИЯ: [неразборчиво]. 861 00:39:53,846 --> 00:39:57,360 862 00:39:57,360 --> 00:39:57,790 >> ДЭВИД Малан: Хорошо, хорошо. 863 00:39:57,790 --> 00:40:01,101 Так что, если все ваши данные и то же Длина, в чем же проблема? 864 00:40:01,101 --> 00:40:05,250 >> АУДИТОРИЯ: Потому что вы тратите Данные по рассказывая им все. 865 00:40:05,250 --> 00:40:09,060 >> ДЭВИД Малан: Так что, если все ваши данные есть такой же длины, хотя, я бы сказал, 866 00:40:09,060 --> 00:40:12,300 что задание максимальную длину на VARCHAR ничем не отличается от 867 00:40:12,300 --> 00:40:16,070 указав фиксированную длину на CHAR если Вы знаете, что число заранее. 868 00:40:16,070 --> 00:40:19,500 Но есть на самом деле, и я буду своего рода извлечь из этого ответа реальность 869 00:40:19,500 --> 00:40:22,610 что есть еще более, которые могли бы раздражать, особенно если вы 870 00:40:22,610 --> 00:40:25,920 столкнуться имя человека, что это необычно долго, что вы этого не сделали 871 00:40:25,920 --> 00:40:26,860 предвидеть. 872 00:40:26,860 --> 00:40:31,420 И это также немного менее эффективным на самом деле поиск по типа VARCHAR как 873 00:40:31,420 --> 00:40:35,620 отличие от ищущих символы, особенно для длинных столов, которые имеют много и 874 00:40:35,620 --> 00:40:36,510 много данных. 875 00:40:36,510 --> 00:40:40,060 Так и здесь, тематическая снова нет очевидным выбором. 876 00:40:40,060 --> 00:40:42,870 >> Так что просто дать вам ощущение друга типы данных, которые могли бы представлять интерес 877 00:40:42,870 --> 00:40:45,400 либо для р-задать семь или в будущее, есть INT. 878 00:40:45,400 --> 00:40:47,270 Там в BIGINT, который , как долго долго. 879 00:40:47,270 --> 00:40:48,880 Это, как правило, 64 бита. 880 00:40:48,880 --> 00:40:51,640 Там в десятичную, которые вы увидите в Поставленная задача, которая является гораздо 881 00:40:51,640 --> 00:40:55,300 очиститель ответом на проблемы, мы столкнулся с поплавком и плавающей 882 00:40:55,300 --> 00:40:55,980 указать неточность. 883 00:40:55,980 --> 00:40:57,390 А тут еще DATETIME. 884 00:40:57,390 --> 00:41:01,530 Там в буквальном смысле тип данных, который имеет чтобы быть похожим на год, месяц, день, 885 00:41:01,530 --> 00:41:03,730 и час, минуту и ​​секунду. 886 00:41:03,730 --> 00:41:07,470 >> Но базы данных SQL также вещи, которые мы будем называть индексов. 887 00:41:07,470 --> 00:41:11,630 И индекс является то, что вы указать при создании таблицы в 888 00:41:11,630 --> 00:41:15,720 сделать обыски и другие операции более эффективным. 889 00:41:15,720 --> 00:41:18,550 В частности, есть то, что называется первичный индекс, что вы могли бы 890 00:41:18,550 --> 00:41:19,440 заявляем следующее. 891 00:41:19,440 --> 00:41:22,330 >> Мы сделали это для вас с Таблица пользователей мы даем вам. 892 00:41:22,330 --> 00:41:26,160 Но обратите внимание, если бы я вручную воссоздавать Таблица пользователей здесь давать 893 00:41:26,160 --> 00:41:27,110 это имя пользователей. 894 00:41:27,110 --> 00:41:28,125 Я уже указано ID. 895 00:41:28,125 --> 00:41:29,330 Я указал INT. 896 00:41:29,330 --> 00:41:32,000 Я указал имя пользователя с максимум 32 символов. 897 00:41:32,000 --> 00:41:36,140 Но если мы будем продолжать прокрутки в этом довольно широкое окно, уведомление есть 898 00:41:36,140 --> 00:41:38,260 куча других вещей, я могу указать. 899 00:41:38,260 --> 00:41:40,950 >> Один из них, я могу указать атрибуты как, вы знаете, что это 900 00:41:40,950 --> 00:41:42,190 INT должен быть подписан. 901 00:41:42,190 --> 00:41:45,510 Я не хочу отрицательные числа, так давайте сделаем это без подписи. 902 00:41:45,510 --> 00:41:48,660 Null не имеет отношения здесь, потому что Я хочу, чтобы каждый пользователь 903 00:41:48,660 --> 00:41:49,640 иметь уникальный номер. 904 00:41:49,640 --> 00:41:50,830 Я не хочу, чтобы это было нулевым. 905 00:41:50,830 --> 00:41:52,330 >> Но это интересно. 906 00:41:52,330 --> 00:41:57,780 Я могу указать, что ID является либо первичный ключ этой базы данных, или это 907 00:41:57,780 --> 00:42:00,620 уникальный, или это индексируются, или полный текст. 908 00:42:00,620 --> 00:42:05,630 Так что для сегодняшних целей, длинная история Короче говоря, основным средством, что это должен 909 00:42:05,630 --> 00:42:10,570 быть как концептуально и технически поле, которое мы используем, чтобы однозначно 910 00:42:10,570 --> 00:42:12,140 идентификации пользователей. 911 00:42:12,140 --> 00:42:16,140 >> Поэтому, когда мы смотрим пользователей, это своего рода обещания, чтобы смотреть их в основном 912 00:42:16,140 --> 00:42:17,370 что уникальный идентификатор. 913 00:42:17,370 --> 00:42:21,930 И эта база данных будет гарантировать, что если вам иметь пользовательский номер 3, вы не можете 914 00:42:21,930 --> 00:42:25,400 физически вставить другого пользователя с этим же номером 3. 915 00:42:25,400 --> 00:42:28,380 База данных будет просто отказываются , чтобы сохранить изменения. 916 00:42:28,380 --> 00:42:32,310 Какая хорошая вещь, потому что вы можете защитить себя от себя. само 917 00:42:32,310 --> 00:42:34,270 >> Кроме того, для пользователя. 918 00:42:34,270 --> 00:42:37,670 Таким образом, второй ряд, напомним, это поле имя пользователя. 919 00:42:37,670 --> 00:42:41,860 Таким образом, второй ряд здесь имя пользователя, как мы это делали в дальнем левом углу есть. 920 00:42:41,860 --> 00:42:43,940 >> Так что еще я мог бы хотеть указать? 921 00:42:43,940 --> 00:42:47,840 Я не имею права, в соответствии с SQL, указать два первичных ключей. 922 00:42:47,840 --> 00:42:50,750 Вы можете задать совместное ключ, где вы посмотреть на обоих полях, но они не могут 923 00:42:50,750 --> 00:42:52,260 индивидуально быть первичные ключи. 924 00:42:52,260 --> 00:42:54,750 Так вот может быть и речи. 925 00:42:54,750 --> 00:42:56,040 Так что может я хочу выбрать? 926 00:42:56,040 --> 00:42:59,710 >> Ну, УНИКАЛЬНЫЙ похож по духу первичный ключ, где вы указать это 927 00:42:59,710 --> 00:43:03,570 поле должно быть уникальным, но это не собирается быть тем, 928 00:43:03,570 --> 00:43:04,410 Я использую все время. 929 00:43:04,410 --> 00:43:08,450 И мы не собираемся использовать этот все время по какой причине снова? 930 00:43:08,450 --> 00:43:10,490 Это медленнее потенциально, если это долгая имя пользователя. 931 00:43:10,490 --> 00:43:11,740 Это просто пустая трата времени. 932 00:43:11,740 --> 00:43:16,140 >> ИНДЕКС, тем временем, указывает, что это не собирается быть уникальным, но я хотел бы 933 00:43:16,140 --> 00:43:19,470 работать свою магию под капот, чтобы сделать это быстрее для меня 934 00:43:19,470 --> 00:43:21,420 поиск по этой области. 935 00:43:21,420 --> 00:43:23,320 Так что это, вероятно, не имеет отношения здесь. 936 00:43:23,320 --> 00:43:26,500 Для имени пользователя, я бы утверждать, что УНИКАЛЬНАЯ хороший ответ. 937 00:43:26,500 --> 00:43:31,200 Но предположим, что мы сделали пользователям более Интересно, чем просто имена пользователей, 938 00:43:31,200 --> 00:43:32,430 хэши, и идентификационные номера. 939 00:43:32,430 --> 00:43:33,860 Что делать, если мы дали людям полные имена? 940 00:43:33,860 --> 00:43:37,700 Что делать, если мы дали им адреса и другие данные о них? 941 00:43:37,700 --> 00:43:43,360 >> Ну, если вы указать, что столбец в база данных индексируется, это означает, что 942 00:43:43,360 --> 00:43:47,730 MySQL или Oracle, или как база данных вы используете, должны работать свое волшебство 943 00:43:47,730 --> 00:43:51,300 и использовать какой-то причудливой данных Структура как дерево или синтаксического дерева, или 944 00:43:51,300 --> 00:43:55,940 хеш-таблицы, или что-то, чтобы гарантировать что при поиске данных с использованием 945 00:43:55,940 --> 00:43:58,150 выбрать на этой конкретной области - 946 00:43:58,150 --> 00:44:01,310 как показать мне все, что живет на Оксфорд-стрит. 947 00:44:01,310 --> 00:44:02,540 Запрос в этом роде. 948 00:44:02,540 --> 00:44:06,250 Если вы указали заранее, что Вы хотите индекс для этой области, 949 00:44:06,250 --> 00:44:09,050 результаты будут гораздо, гораздо быстрее. 950 00:44:09,050 --> 00:44:12,090 >> Если вы не укажете индекс, лучший Вы можете сделать это линейный поиск, если 951 00:44:12,090 --> 00:44:13,030 это не сортируются. 952 00:44:13,030 --> 00:44:16,220 Но если вы укажете INDEX, смарт- люди, которые сделали базу данных - 953 00:44:16,220 --> 00:44:19,340 люди, как вы, которые теперь знают, деревья и пытается и хэш-таблицы - 954 00:44:19,340 --> 00:44:23,220 автоматически построить такую ​​данных структура в памяти, чтобы убедиться, что 955 00:44:23,220 --> 00:44:26,050 эти результаты гораздо быстрее. 956 00:44:26,050 --> 00:44:29,660 >> FULLTEXT пока что близки по духу, но позволяет сделать шаблон 957 00:44:29,660 --> 00:44:35,480 результаты, как показать мне все, что живет в улицах, которые начинаются с 958 00:44:35,480 --> 00:44:36,960 буква О по любой причине. 959 00:44:36,960 --> 00:44:38,850 Вы можете сделать поиск подстановочные так. 960 00:44:38,850 --> 00:44:45,880 Или, что более убедительные вещи, как шоу меня все, кто имеет слово - 961 00:44:45,880 --> 00:44:49,400 покажите мне всех, чье имя начинается с определенной буквы. 962 00:44:49,400 --> 00:44:51,880 Вы можете искать по ключевым словам таким образом. 963 00:44:51,880 --> 00:44:52,630 Хорошо. 964 00:44:52,630 --> 00:44:55,760 >> Итак, возможности дизайна есть потенциально. 965 00:44:55,760 --> 00:44:57,740 Есть другие, которые я буду махать руками в. 966 00:44:57,740 --> 00:45:00,530 Получается, что вы можете иметь различные механизмы хранения. 967 00:45:00,530 --> 00:45:04,390 И это еще тайной, чем нам нужно конечно для задачи установить семь. 968 00:45:04,390 --> 00:45:06,920 По умолчанию, вы, ребята, с помощью то, что называется InnoDB. 969 00:45:06,920 --> 00:45:10,910 Вы увидите упоминания об этом где-то в Интерфейс PhpMyAdmin наиболее вероятно. 970 00:45:10,910 --> 00:45:14,130 Но знаю, что есть другой дизайн решения, которые имеют потенциал 971 00:45:14,130 --> 00:45:18,030 Интерес приходят окончательные проекты, если вы делаете что-то веб-. 972 00:45:18,030 --> 00:45:19,330 >> Но давайте сделаем это. 973 00:45:19,330 --> 00:45:23,130 Давайте пойдем дальше и поставить это на экран как тизер истории 974 00:45:23,130 --> 00:45:26,330 с участием вас, сосед по комнате, и стакан молока. 975 00:45:26,330 --> 00:45:28,240 Давайте две минуты или так сломать здесь. 976 00:45:28,240 --> 00:45:31,060 И если вы можете остаться, давайте приходят назад, выглядят немного больше на SQL, и 977 00:45:31,060 --> 00:45:35,160 затем немного JavaScript с р-установить восемь в виду. 978 00:45:35,160 --> 00:45:36,120 >> Хорошо. 979 00:45:36,120 --> 00:45:40,420 Итак, давайте заставить вас задуматься о угол так, что можно очень легко возникают 980 00:45:40,420 --> 00:45:44,240 в контексте с использованием базы данных, или честно говоря, даже при использовании реального мира вещей 981 00:45:44,240 --> 00:45:46,280 как банкоматы, чтобы получить деньги. 982 00:45:46,280 --> 00:45:47,640 Итак, вот холодильник. 983 00:45:47,640 --> 00:45:50,040 Предположим, у вас есть один тоже в Ваш общежития или ваш дом. 984 00:45:50,040 --> 00:45:54,990 И у вас есть один сосед по комнате, и оба вы действительно любите молоко, например. 985 00:45:54,990 --> 00:45:57,210 >> Таким образом, вы приходите домой с классом в один прекрасный день. 986 00:45:57,210 --> 00:45:58,490 Он или она не вернуться. 987 00:45:58,490 --> 00:45:59,180 Вы открываете холодильник. 988 00:45:59,180 --> 00:46:00,870 Вы действительно хотите большой стакан молока. 989 00:46:00,870 --> 00:46:01,820 Там нет молока. 990 00:46:01,820 --> 00:46:02,920 Так что же делать? 991 00:46:02,920 --> 00:46:03,840 Вы закрыть холодильник. 992 00:46:03,840 --> 00:46:04,670 Вы хватаете ключи. 993 00:46:04,670 --> 00:46:05,930 Вы выходите на площадь. 994 00:46:05,930 --> 00:46:09,240 И вы получите в очереди в CVS на тех, самостоятельно кассовые вещи, которые всегда 995 00:46:09,240 --> 00:46:11,180 занять больше времени, чем на самом деле имея кассиров. 996 00:46:11,180 --> 00:46:11,820 Во всяком случае. 997 00:46:11,820 --> 00:46:15,490 >> Итак, между тем, точка точка точка, ваш сосед приходит домой и он или она 998 00:46:15,490 --> 00:46:17,440 Аналогично есть страстное желание за молоком. 999 00:46:17,440 --> 00:46:20,380 Таким образом, он или она открывает холодильник, выглядит внутри, и черт побери. 1000 00:46:20,380 --> 00:46:21,160 Никакое молоко. 1001 00:46:21,160 --> 00:46:24,750 Таким образом, он или она головы,, происходит пойти на другую CVS, который был только 1002 00:46:24,750 --> 00:46:27,900 квартал по некоторым причинам, и он или она получает в очереди, чтобы купить молока. 1003 00:46:27,900 --> 00:46:30,480 >> Между тем, вы приходите домой, он или она приходит домой, и что делать 1004 00:46:30,480 --> 00:46:31,980 Вы в конечном счете есть? 1005 00:46:31,980 --> 00:46:33,080 Вдвое больше молока. 1006 00:46:33,080 --> 00:46:34,620 Но вы действительно не нравится молоко, что много. 1007 00:46:34,620 --> 00:46:37,300 Так что теперь у вас есть столько молока, что теперь один из них просто будет идти кислый 1008 00:46:37,300 --> 00:46:37,820 в конце концов. 1009 00:46:37,820 --> 00:46:39,370 Так что это действительно плохая проблема. 1010 00:46:39,370 --> 00:46:39,900 Не так ли? 1011 00:46:39,900 --> 00:46:41,990 >> Так что же произошло? 1012 00:46:41,990 --> 00:46:44,810 Так принципиально, это своего рода из смешной пример. 1013 00:46:44,810 --> 00:46:48,580 Но под капотом, что мы имели произойдет здесь вы оба проверили 1014 00:46:48,580 --> 00:46:52,390 состояние некоторой части памяти, холодильник. 1015 00:46:52,390 --> 00:46:54,420 Вы оба проверили состояние некоторой переменной. 1016 00:46:54,420 --> 00:46:57,360 Вы оба сделали вывод что вы тогда действовали на. 1017 00:46:57,360 --> 00:47:01,420 Но, к сожалению, в то время как ваш сосед по комнате был в магазине, состояние, что 1018 00:47:01,420 --> 00:47:05,670 переменная изменилась, он или она вернулась и теперь хочет, чтобы изменить состояние, но 1019 00:47:05,670 --> 00:47:07,480 это уже было изменено на него или нее. 1020 00:47:07,480 --> 00:47:11,120 И, конечно, он или она не будет иметь пошел в магазин, если они знали, 1021 00:47:11,120 --> 00:47:13,010 что вы уже были в пути. 1022 00:47:13,010 --> 00:47:16,430 >> Таким образом, в реальном мире, как ты мог избежать этой проблемы, если у вас есть 1023 00:47:16,430 --> 00:47:18,940 холодильник, у вас есть сосед по комнате, и вы на самом деле любите молоко? 1024 00:47:18,940 --> 00:47:19,760 >> АУДИТОРИЯ: Общение. 1025 00:47:19,760 --> 00:47:20,580 >> ДЭВИД Малан: Общение. 1026 00:47:20,580 --> 00:47:21,160 ОК. 1027 00:47:21,160 --> 00:47:22,500 Но как вы могли бы общаться? 1028 00:47:22,500 --> 00:47:23,990 >> АУДИТОРИЯ: Оставьте записку. 1029 00:47:23,990 --> 00:47:25,480 >> ДЭВИД Малан: Оставьте записку, не так ли? 1030 00:47:25,480 --> 00:47:28,025 Всегда оставьте записку, для поклонники шоу. 1031 00:47:28,025 --> 00:47:31,580 Ладно, всегда оставляют записку, или положить действительно, как на висячий замок или что-то 1032 00:47:31,580 --> 00:47:35,440 на холодильник, который держит ваши сосед по комнате от осмотра на состояние 1033 00:47:35,440 --> 00:47:36,540 эта переменная. 1034 00:47:36,540 --> 00:47:40,800 >> Теперь, почему это могло бы быть уместны в Проблема установить семь, или в банкоматах. 1035 00:47:40,800 --> 00:47:46,780 Ну, представьте себе мир, в банкомате, где Вы могли бы быть в состоянии подняться в банкомат 1036 00:47:46,780 --> 00:47:48,920 Машина здесь, а другой банкомат здесь. 1037 00:47:48,920 --> 00:47:50,680 И это происходит довольно часто. 1038 00:47:50,680 --> 00:47:54,150 И предположим, что у вас есть два банковских карточек, который можно получить. 1039 00:47:54,150 --> 00:47:57,420 И вы входите в обеих машинах эффективно одновременно, мы надеемся, 1040 00:47:57,420 --> 00:47:58,660 в то время как никто не смотрит. 1041 00:47:58,660 --> 00:48:01,260 И тогда вы вводите в PIN почти одновременно. 1042 00:48:01,260 --> 00:48:06,280 И тогда вы сделать баланс запрос чтобы увидеть, сколько денег у вас есть. 1043 00:48:06,280 --> 00:48:08,920 И скажем, у вас есть $ 100 оставили в вашей учетной записи. 1044 00:48:08,920 --> 00:48:13,310 Так по существу одновременно, вы говорят одно, ноль, ноль, введите. 1045 00:48:13,310 --> 00:48:16,000 И вы, надеемся вернуться немного денег. 1046 00:48:16,000 --> 00:48:18,440 >> Но сколько денег вы можете получить обратно? 1047 00:48:18,440 --> 00:48:21,710 Сейчас компьютеры в конце рабочего дня, особенно если они говорят с 1048 00:48:21,710 --> 00:48:27,360 серверы, не обязательно делать то, в том порядке, это ожидается. 1049 00:48:27,360 --> 00:48:30,860 >> Итак, пусть то, что происходит, потому что из независимо сеть проблемы со скоростью там 1050 00:48:30,860 --> 00:48:34,530 являются, или вопросы CPU есть, или ничего подобного, предположим, что 1051 00:48:34,530 --> 00:48:38,530 первый банкомат проверяет свой баланс и видит, о, у этого человека есть $ 100. 1052 00:48:38,530 --> 00:48:41,840 Но тогда отвлекается, потому что, может быть, резервное копирование происходит, и поэтому 1053 00:48:41,840 --> 00:48:42,500 замедляется. 1054 00:48:42,500 --> 00:48:45,080 Или, может быть, проверяя, сети подключение стало немного медленнее, потому что 1055 00:48:45,080 --> 00:48:45,910 это просто происходит. 1056 00:48:45,910 --> 00:48:47,100 Они физических устройств. 1057 00:48:47,100 --> 00:48:49,330 Таким образом, в то время, второй банкомат задавать тот же вопрос. 1058 00:48:49,330 --> 00:48:53,030 Сколько денег Дэвид иметь? $ 100 является ответом. 1059 00:48:53,030 --> 00:48:58,930 Но поскольку первый банкомат еще не посылается сообщение вычесть $ 100, как 1060 00:48:58,930 --> 00:49:03,000 Банкоматы осмотрели хранилище банка, видя там $ 100 есть, а теперь 1061 00:49:03,000 --> 00:49:07,160 обе машины потенциально являются собирается выплюнуть ответ. 1062 00:49:07,160 --> 00:49:12,240 >> Теперь, это здорово для вас в некотором смысле если то, что банк делает в конечном счете, 1063 00:49:12,240 --> 00:49:17,200 это изменить количество до минус 100 по установка переменной равно ваш 1064 00:49:17,200 --> 00:49:21,570 банковский счет равен 0, в отличие делать минус 100. 1065 00:49:21,570 --> 00:49:24,410 Теперь в худшем случае для банка - 1066 00:49:24,410 --> 00:49:27,470 или в лучшем для банка, тем временем, они дают вам $ 200, и 1067 00:49:27,470 --> 00:49:31,690 ваш банковский счет теперь показывает отрицательный $ 100, что на самом деле не 1068 00:49:31,690 --> 00:49:32,950 на пользу вам вообще. 1069 00:49:32,950 --> 00:49:36,500 Но дело в том, что эта гонка состояние в течение двух соседей по комнате, получающих 1070 00:49:36,500 --> 00:49:40,660 молоко, или в течение двух банкоматов, пытающихся получить наличные деньги и изменить состояние хранилище 1071 00:49:40,660 --> 00:49:44,510 в то же время существует какой-либо раз у вас есть база данных. 1072 00:49:44,510 --> 00:49:48,290 >> Сейчас в проблеме установить семь, этот вопрос возникает в том смысле, что если вы покупаете 1073 00:49:48,290 --> 00:49:52,110 Доля Facebook складе, а затем в течение Например, вы покупаете второй долю 1074 00:49:52,110 --> 00:49:55,160 Facebook акции, вы должны убедиться, Решение о том, программиста. 1075 00:49:55,160 --> 00:49:58,710 Для того, чтобы решить, как обновить В базе, шансы вы собираетесь 1076 00:49:58,710 --> 00:50:02,250 есть по одной строке для этой акции, а это является одним из способов ее реализации. 1077 00:50:02,250 --> 00:50:06,640 И вы будете иметь одну акцию FB, который является их символом тикер 1078 00:50:06,640 --> 00:50:10,120 для этого имя пользователя, или этого пользователя ID, уникальный идентификатор. 1079 00:50:10,120 --> 00:50:12,340 >> Но та же история может произойти здесь. 1080 00:50:12,340 --> 00:50:15,800 Если вы делаете Выбрать в SQL, как вы увидите в задаче установить семь, когда вы видите, 1081 00:50:15,800 --> 00:50:18,460 ой, Дэвид имеет одну акцию из Facebook складе. 1082 00:50:18,460 --> 00:50:23,240 А теперь позвольте мне изменить, чтобы это было две акции, потому что он хочет купить 1083 00:50:23,240 --> 00:50:24,120 Вторая акция. 1084 00:50:24,120 --> 00:50:27,860 Но предположим, что Дэвид на самом деле было два окна браузера открыть, или предположить, что 1085 00:50:27,860 --> 00:50:32,150 это общий счет с двумя супругами, и оба они пытаются выполнить 1086 00:50:32,150 --> 00:50:36,770 та же операция, там тоже существует потенциал для принятия решения, чтобы быть 1087 00:50:36,770 --> 00:50:39,670 сделан на основе предыдущего состояние мира - 1088 00:50:39,670 --> 00:50:41,290 учетная запись имеет одну акцию - 1089 00:50:41,290 --> 00:50:45,630 и оба человек, или оба сервера, теперь попробуйте сказать увеличивать его до двух акций. 1090 00:50:45,630 --> 00:50:49,020 Но в этом случае, вы, возможно, взимается мне деньги для обеих акций, но 1091 00:50:49,020 --> 00:50:50,830 увеличивается только, что один раз. 1092 00:50:50,830 --> 00:50:54,730 >> Короче говоря, основная проблема здесь, как и с шуткой об уходе 1093 00:50:54,730 --> 00:50:58,750 Отметим, или положить замок на нем, является если два человека, или два потока - 1094 00:50:58,750 --> 00:50:59,930 вспомните нуля - 1095 00:50:59,930 --> 00:51:03,220 может проверить состояние некоторой переменной , а затем попытаться изменить эту переменную, 1096 00:51:03,220 --> 00:51:07,950 но эти две вещи не происходят в В то же время, но может получить прерван 1097 00:51:07,950 --> 00:51:11,500 другими, что происходит, данные могут попасть в очень странном состоянии. 1098 00:51:11,500 --> 00:51:15,450 И вы можете воспользоваться или вы можете страдать в смысле на примере денег. 1099 00:51:15,450 --> 00:51:18,110 >> Таким образом, в проблеме установить семь, мы даем вам это одна строка кода, которая долгое 1100 00:51:18,110 --> 00:51:21,000 Короче говоря, решает эту проблему проблема в MySQL. 1101 00:51:21,000 --> 00:51:24,950 Это очень долго инструкция, которая не даже размещения на одной линии на 1102 00:51:24,950 --> 00:51:30,370 Экран здесь гарантирует, что ваш операция то, что называется атомарным. 1103 00:51:30,370 --> 00:51:33,720 Все это происходит сразу, или так не бывает вообще. 1104 00:51:33,720 --> 00:51:37,530 Это очень долго фраза не может получить прерван частично. 1105 00:51:37,530 --> 00:51:39,840 >> И то, что она делает, это в буквальном смысле что он говорит. 1106 00:51:39,840 --> 00:51:44,200 Вставьте в некоторой таблице следующее три поля эти конкретные ценности, 1107 00:51:44,200 --> 00:51:47,280 но на дубликат ключа, не делать вставки. 1108 00:51:47,280 --> 00:51:48,280 У обновления. 1109 00:51:48,280 --> 00:51:52,450 Так что это, как делать ВЫБОР и INSERT так сказать в то же время. 1110 00:51:52,450 --> 00:51:55,150 И то, что это ключ, который, вероятно, речь тут идет? 1111 00:51:55,150 --> 00:51:58,300 1112 00:51:58,300 --> 00:52:01,380 >> Оказывается, и вы увидите это в Проблема задать семь в спецификации, потому что 1113 00:52:01,380 --> 00:52:06,040 мы объявили там, чтобы быть уникальным ключом На этой конкретной таблице такая, что 1114 00:52:06,040 --> 00:52:08,480 Вы не можете иметь несколько строк для одного пользователя с 1115 00:52:08,480 --> 00:52:10,150 же символ акции копейки - 1116 00:52:10,150 --> 00:52:13,780 В этом примере, является DVN.V глупые мелкие акции, что мы 1117 00:52:13,780 --> 00:52:14,980 см. в спецификации. 1118 00:52:14,980 --> 00:52:17,860 Потому что мы объявили, что он будет уникальным, Что это означает, что если вы 1119 00:52:17,860 --> 00:52:23,580 попытаться вставить дубликат строки, вы Вместо собирается обновлять его без 1120 00:52:23,580 --> 00:52:27,020 кто-либо еще, имеющий возможность изменить состояние мира тоже. 1121 00:52:27,020 --> 00:52:29,400 Короче говоря, это гарантирует вещи атомные. 1122 00:52:29,400 --> 00:52:32,530 >> В более общем плане, хотя, базы данных как MySQL - 1123 00:52:32,530 --> 00:52:35,460 и вам не нужна эта функция для P-набор семи, но имейте в виду, для 1124 00:52:35,460 --> 00:52:36,200 будущее - 1125 00:52:36,200 --> 00:52:38,870 поддержка так называемых сделок, где вы можете сказать 1126 00:52:38,870 --> 00:52:40,990 Начальную транзакцию буквально. 1127 00:52:40,990 --> 00:52:43,270 Потом вы можете два SQL заявлений. 1128 00:52:43,270 --> 00:52:45,710 И заявление SQL, как вы увидите в р-набор семи, выглядит немного 1129 00:52:45,710 --> 00:52:46,750 что-то вроде этого. 1130 00:52:46,750 --> 00:52:48,820 Обновить таблицу с именем учетной записи. 1131 00:52:48,820 --> 00:52:52,550 Установите баланс колонки все равно столбец баланса в настоящее время 1132 00:52:52,550 --> 00:52:57,280 минус 1000, где число, тем номер счета, как и идентификатор пользователя, 1133 00:52:57,280 --> 00:53:00,830 равна 2, а затем обновить счету точка точка точка. 1134 00:53:00,830 --> 00:53:04,350 >> Так что с точки зрения непрофессионала, что делают эти два Запросы, кажется, делают в 1135 00:53:04,350 --> 00:53:05,840 реальный смысл банковском мире? 1136 00:53:05,840 --> 00:53:07,440 >> АУДИТОРИЯ: Переадресация на сбережения. 1137 00:53:07,440 --> 00:53:08,020 >> DAVID МАЛАН: Совершенно верно. 1138 00:53:08,020 --> 00:53:10,470 Перевод средств от одного составлять до другого. 1139 00:53:10,470 --> 00:53:14,400 И это еще один пример, где вы действительно хотим, чтобы эти две вещи, чтобы случиться 1140 00:53:14,400 --> 00:53:15,570 или не произошло. 1141 00:53:15,570 --> 00:53:18,880 Вы не хотите, чтобы что-то получить в посреди них и, возможно, испортите 1142 00:53:18,880 --> 00:53:22,220 математику, или испортить, сколько у вас денег, или сколько 1143 00:53:22,220 --> 00:53:23,170 деньги у банка. 1144 00:53:23,170 --> 00:53:26,890 Так в чем же действительно хорошо о сделках В MySQL, что и 1145 00:53:26,890 --> 00:53:30,160 баз данных в целом, является то, что они и умные люди, которые уже реализованы 1146 00:53:30,160 --> 00:53:33,670 эти возможности выяснить, как сделать Убедитесь, что обе эти вещи случаются 1147 00:53:33,670 --> 00:53:35,120 или не на всех. 1148 00:53:35,120 --> 00:53:38,580 >> И если вы действительно стремится сделать Веб-сайт, который используется людьми на 1149 00:53:38,580 --> 00:53:41,490 кампуса, люди в реальном мире, делают что-то в смысле запуска, 1150 00:53:41,490 --> 00:53:43,300 эти виды проектные решения, которые 1151 00:53:43,300 --> 00:53:45,020 становится все так важно. 1152 00:53:45,020 --> 00:53:48,240 В противном случае, вы начинаете терять данные, теряют пользователей, или, в худшем случае, как 1153 00:53:48,240 --> 00:53:51,800 мы видели здесь, потенциально потерять деньги. 1154 00:53:51,800 --> 00:53:56,180 Итак, еще раз, более подробно об этом в задачу, поставленную семь, а также, возможно, для некоторых 1155 00:53:56,180 --> 00:53:57,530 Вы в окончательном проектов. 1156 00:53:57,530 --> 00:54:01,870 >> Так давайте изменим эту картину у нас были несколько раньше, просто в еще один способ. 1157 00:54:01,870 --> 00:54:04,070 Итак, позвольте мне на самом деле, если я могу - 1158 00:54:04,070 --> 00:54:06,030 Нет, это ушло. 1159 00:54:06,030 --> 00:54:06,690 Там она есть. 1160 00:54:06,690 --> 00:54:09,020 >> Так что это, где мы оставили последний раз. 1161 00:54:09,020 --> 00:54:12,390 И получается, что мы собираемся, чтобы бросить еще одна вещь в микс здесь - 1162 00:54:12,390 --> 00:54:14,510 язык, называемый JavaScript. 1163 00:54:14,510 --> 00:54:18,060 Так что на самом деле подходит JavaScript в этой части - 1164 00:54:18,060 --> 00:54:22,086 и я не совсем оставить достаточно места, так что это не сейчас, не в масштабе. 1165 00:54:22,086 --> 00:54:23,900 Хорошо, это действительно жалко. 1166 00:54:23,900 --> 00:54:27,075 ОК, так что это JavaScript. 1167 00:54:27,075 --> 00:54:27,340 Хорошо. 1168 00:54:27,340 --> 00:54:28,760 Я действительно делаю это медвежью услугу. 1169 00:54:28,760 --> 00:54:29,390 Хорошо. 1170 00:54:29,390 --> 00:54:34,790 >> Так JavaScript другая программирования языке, а наша последняя, ​​если это помогает 1171 00:54:34,790 --> 00:54:37,770 заверить, что не намного больше, из пожарных гидрантов здесь. 1172 00:54:37,770 --> 00:54:41,100 Так JavaScript также интерпретируются язык, который означает, что вы не 1173 00:54:41,100 --> 00:54:42,670 скомпилировать его в нули и единицы. 1174 00:54:42,670 --> 00:54:43,690 Вы просто запустите его. 1175 00:54:43,690 --> 00:54:47,680 Но то, что принципиально разные с JavaScript обычно является то, что вы 1176 00:54:47,680 --> 00:54:49,815 не запустить его на своем веб-сервере. 1177 00:54:49,815 --> 00:54:52,570 Это не становится работать в прибор как таковой. 1178 00:54:52,570 --> 00:54:57,490 Скорее, он получает загруженный пользователем через HTTP в свой браузер - 1179 00:54:57,490 --> 00:55:00,260 Chrome, Safari, Internet Explorer, Firefox, что угодно, - 1180 00:55:00,260 --> 00:55:03,860 и это браузер, который выполняет эту конкретного языка программирования. 1181 00:55:03,860 --> 00:55:08,000 >> Таким образом, чтобы быть ясной, PHP до сих пор было выполнить либо в командной строке в 1182 00:55:08,000 --> 00:55:11,290 наш черно-белые окна, на сервере как прибор, компьютер 1183 00:55:11,290 --> 00:55:14,490 как прибор, или это было выполняются на веб-сервере 1184 00:55:14,490 --> 00:55:15,860 работает на компьютере. 1185 00:55:15,860 --> 00:55:20,490 Но тема в том, что до сих пор PHP была выполнена на стороне сервера так 1186 00:55:20,490 --> 00:55:24,820 пользователя и браузером пользователя никогда не видит строки кода PHP. 1187 00:55:24,820 --> 00:55:28,530 >> В самом деле, если вы когда-нибудь открыть браузер для Ваш сайт или другого, и вы 1188 00:55:28,530 --> 00:55:32,400 фактически видеть PHP код в окно, кто-то облажался. 1189 00:55:32,400 --> 00:55:34,950 Потому что это не должно быть отправлен в браузер непосредственно. 1190 00:55:34,950 --> 00:55:38,150 Он должен быть выполнен и повернулся в нечто вроде HTML. 1191 00:55:38,150 --> 00:55:40,120 >> Но в JavaScript по существу противоположное. 1192 00:55:40,120 --> 00:55:44,350 Он предназначен для выполнения обычно внутри окна браузера пользователя. 1193 00:55:44,350 --> 00:55:46,840 И какие веб-сайты используют JavaScript Затем в эти дни? 1194 00:55:46,840 --> 00:55:49,640 1195 00:55:49,640 --> 00:55:52,180 >> Нравится буквально каждый популярный веб-сайт. 1196 00:55:52,180 --> 00:55:55,430 Каждый веб-сайт, что вы, ребята, наверное, использовать ежедневно использовать JavaScript для 1197 00:55:55,430 --> 00:55:57,330 Простейший и даже самых сексуальных особенностей. 1198 00:55:57,330 --> 00:55:59,800 >> Так что-то вроде Facebook Чат, если вы используете это. 1199 00:55:59,800 --> 00:56:01,040 Как это на самом деле работает? 1200 00:56:01,040 --> 00:56:05,090 Ну до сих пор, все материал, который мы сделано с HTML и PHP предполагает, что 1201 00:56:05,090 --> 00:56:08,750 Вы тянете URL, и вы нажмете Enter, и вы увидите некоторые HTML содержания. 1202 00:56:08,750 --> 00:56:11,970 И вы нажмете на ссылку, которая изменяет URL, изменяет страницу и перезагружает 1203 00:56:11,970 --> 00:56:12,740 некоторое новое содержание. 1204 00:56:12,740 --> 00:56:16,340 Нажмите другого URL или отправить форму, Вы получить смахнул на другую страницу и 1205 00:56:16,340 --> 00:56:17,420 вы увидите некоторые новые содержания. 1206 00:56:17,420 --> 00:56:22,710 >> Но используя что-то вроде Facebook Chat, или Gchat или Google Maps, редко 1207 00:56:22,710 --> 00:56:27,350 делает целый обновления страницы таким образом, что Вы видите белый экран на непродолжительное время и 1208 00:56:27,350 --> 00:56:28,470 Затем новое содержание. 1209 00:56:28,470 --> 00:56:32,610 Скорее, веб-страницы сегодня динамично получение обновляются снова и 1210 00:56:32,610 --> 00:56:35,570 снова и снова все вроде из за кулисами. 1211 00:56:35,570 --> 00:56:38,560 И получается, что, когда вы действительно идете в что-то вроде Facebook или Gchat, 1212 00:56:38,560 --> 00:56:43,050 или Gmail, а обновления страницы автоматически без перезагрузки 1213 00:56:43,050 --> 00:56:47,630 весь экран, что случилось в том, что Ваш браузер сделал вид тайно 1214 00:56:47,630 --> 00:56:49,410 дополнительные HTTP запросы - 1215 00:56:49,410 --> 00:56:52,740 не для целых веб-страниц, но только для маленькие порции данных, как 1216 00:56:52,740 --> 00:56:55,740 мгновенное сообщение, что ваш друг только послал тебя, или обновление статуса, что 1217 00:56:55,740 --> 00:56:58,210 кто-то просто послал тебя, или твит что кто-то только что отправил. 1218 00:56:58,210 --> 00:57:02,120 Это просто сделать небольшие запросы на Данные, а затем с помощью Javascript, Этот 1219 00:57:02,120 --> 00:57:06,370 язык программирования, чтобы изменить то, что веб-страница выглядит без 1220 00:57:06,370 --> 00:57:09,860 сервер помогает без сервера генерации, что HTML. 1221 00:57:09,860 --> 00:57:13,820 >> Короче говоря, JavaScript может быть использован тогда чтобы не только принести новые данные от 1222 00:57:13,820 --> 00:57:16,750 сервер без перезагрузки целое страницы или отправке формы. 1223 00:57:16,750 --> 00:57:20,060 Он также может быть использован для изменения так называемый DOM - 1224 00:57:20,060 --> 00:57:21,520 объектная модель документа - 1225 00:57:21,520 --> 00:57:24,620 , который является просто причудливый способ для говоря дерево HTML 1226 00:57:24,620 --> 00:57:26,220 что мы видели в последний раз. 1227 00:57:26,220 --> 00:57:31,640 >> Таким образом, чтобы успокоить, JavaScript является синтаксически так похож на C, а также. 1228 00:57:31,640 --> 00:57:32,820 Там нет основной функцией. 1229 00:57:32,820 --> 00:57:35,430 Вы просто начать писать код и он будет получить выполнен, или 1230 00:57:35,430 --> 00:57:36,900 интерпретировать более правильно. 1231 00:57:36,900 --> 00:57:38,660 Условия будет выглядеть следующим образом. 1232 00:57:38,660 --> 00:57:41,230 Ничем не отличается от C или PHP по этому вопросу. 1233 00:57:41,230 --> 00:57:43,890 Логические выражения или-е изд вместе будет выглядеть следующим образом. 1234 00:57:43,890 --> 00:57:45,590 ANDed вместе выглядеть следующим образом. 1235 00:57:45,590 --> 00:57:47,750 >> Переключатели будет выглядеть следующим образом. 1236 00:57:47,750 --> 00:57:49,440 Для петель будет выглядеть следующим образом. 1237 00:57:49,440 --> 00:57:51,060 В то время как петли будут выглядеть следующим образом. 1238 00:57:51,060 --> 00:57:53,316 У а петли будет выглядеть следующим образом. 1239 00:57:53,316 --> 00:57:54,780 >> Это новая. 1240 00:57:54,780 --> 00:57:58,753 Так JavaScript не имеет Еогеасп построить как таковой, но эта конструкция 1241 00:57:58,753 --> 00:58:03,870 для переменной я в массиве, и я в этом дело становится значение индекса. 1242 00:58:03,870 --> 00:58:06,880 Так что это немного отличается от той, Еогеасп, хотя новые версии 1243 00:58:06,880 --> 00:58:10,280 JavaScript выходят все время, так что даже эти возможности языка 1244 00:58:10,280 --> 00:58:10,880 развиваются. 1245 00:58:10,880 --> 00:58:16,920 >> И как в сторону, JavaScript в эти дни также могут быть использованы на сервере так же, как 1246 00:58:16,920 --> 00:58:19,920 PHP с использованием базы под названием Node.js. 1247 00:58:19,920 --> 00:58:24,670 Один из CS50 в ТФ, Кевин, привело семинар по Node.js, что доступно в 1248 00:58:24,670 --> 00:58:26,440 cs50.net/seminars. 1249 00:58:26,440 --> 00:58:28,830 Так что если вам интересно, знают, что вам можете использовать это на стороне сервера, как 1250 00:58:28,830 --> 00:58:33,870 хорошо, но это довольно недавняя тенденция, но мощный в этом. 1251 00:58:33,870 --> 00:58:35,270 >> Это немного отличается. 1252 00:58:35,270 --> 00:58:37,910 Это массив в JavaScript. 1253 00:58:37,910 --> 00:58:40,115 И то, что кажется вам разные по сравнению с C или PHP? 1254 00:58:40,115 --> 00:58:43,890 1255 00:58:43,890 --> 00:58:47,420 Есть несколько простых историй мы можем сказать здесь. 1256 00:58:47,420 --> 00:58:49,367 Чего не хватает по сравнению с PHP? 1257 00:58:49,367 --> 00:58:51,652 >> АУДИТОРИЯ: [неразборчиво]. 1258 00:58:51,652 --> 00:58:52,110 >> ДЭВИД Малан: Да? 1259 00:58:52,110 --> 00:58:53,322 К сожалению, еще раз сказать? 1260 00:58:53,322 --> 00:58:54,740 >> АУДИТОРИЯ: Не объявляя тип переменной. 1261 00:58:54,740 --> 00:58:56,390 >> ДЭВИД Малан: Мы не объявив тип переменной. 1262 00:58:56,390 --> 00:58:59,630 Поэтому на самом деле совсем как PHP, мы не Указывая тип этой переменной. 1263 00:58:59,630 --> 00:59:02,670 Скорее, мы в более общем говоря вар для переменной. 1264 00:59:02,670 --> 00:59:06,690 У нас нет неприятность в PHP из знак доллара, который в то время утомительно 1265 00:59:06,690 --> 00:59:09,160 Тип, делает более ясным, что что-то переменная. 1266 00:59:09,160 --> 00:59:11,830 В то время как здесь, мы своего рода обратно Подход C путем просто звоню 1267 00:59:11,830 --> 00:59:14,500 переменная по имени мы хотим дать ее, например, номер. 1268 00:59:14,500 --> 00:59:17,170 А также, как PHP, мы имеем квадратные скобки для 1269 00:59:17,170 --> 00:59:19,170 значения внутри этого массива. 1270 00:59:19,170 --> 00:59:22,490 >> Так переменные в JavaScript также может выглядеть следующим образом. 1271 00:59:22,490 --> 00:59:26,900 Обратите внимание, здесь это строка называется с, но так же у нас не указан 1272 00:59:26,900 --> 00:59:28,750 что это строка. 1273 00:59:28,750 --> 00:59:33,160 Здесь, хотя это функция, которая не существуют в точности так же, в PHP, 1274 00:59:33,160 --> 00:59:34,460 но немного аналогично. 1275 00:59:34,460 --> 00:59:36,530 Это объект в JavaScript. 1276 00:59:36,530 --> 00:59:42,110 И объекты являются своего рода швейцарской армии Нож структуры данных в этом вам 1277 00:59:42,110 --> 00:59:43,900 их можно использовать для любого количества вещей. 1278 00:59:43,900 --> 00:59:46,860 >> Вот, например, мы объявив переменная с именем цитата. 1279 00:59:46,860 --> 00:59:49,110 Тип этой переменной является объектом. 1280 00:59:49,110 --> 00:59:53,550 Вы можете думать об этом как о C структуры что имеет ключи и значения. 1281 00:59:53,550 --> 00:59:55,250 Символ является одним из ключевых. 1282 00:59:55,250 --> 00:59:57,350 FB это значение, по-видимому, Символ акции. 1283 00:59:57,350 --> 00:59:57,930 Запятая. 1284 00:59:57,930 --> 01:00:02,180 Цена является еще одним ключевым, и его значение по-видимому, с плавающей точкой, или 1285 01:00:02,180 --> 01:00:06,510 число в целом в JavaScript, из $ 49.26. 1286 01:00:06,510 --> 01:00:09,030 >> Итак, PHP не имеет - 1287 01:00:09,030 --> 01:00:12,980 мы не видели в объектах PHP довольно как это, но мы действительно видели аналог, 1288 01:00:12,980 --> 01:00:14,093 который был и что? 1289 01:00:14,093 --> 01:00:14,980 >> АУДИТОРИЯ: [неразборчиво]. 1290 01:00:14,980 --> 01:00:16,110 >> ДЭВИД Малан: Ассоциативные массивы. 1291 01:00:16,110 --> 01:00:19,990 Так в то время как PHP имеет ассоциативные массивы чьи синтаксис когда-либо слегка так 1292 01:00:19,990 --> 01:00:20,370 разные - 1293 01:00:20,370 --> 01:00:21,780 мы видели квадратные скобки. 1294 01:00:21,780 --> 01:00:23,860 Мы видели странные стрелки символов. 1295 01:00:23,860 --> 01:00:27,330 JavaScript имеет объекты, но это в основном семантическое различие и 1296 01:00:27,330 --> 01:00:29,260 отличается синонимом сейчас. 1297 01:00:29,260 --> 01:00:35,060 Тем не менее, как в сторону, PHP также имеет объекты таким образом, что Java и другие 1298 01:00:35,060 --> 01:00:37,810 языки имеют объекты в объектно-ориентированное программирование. 1299 01:00:37,810 --> 01:00:40,440 Но мы будем использовать их только для типов данных для теперь. 1300 01:00:40,440 --> 01:00:42,170 Объекты и ассоциативные массивы. 1301 01:00:42,170 --> 01:00:44,140 >> Это можно было бы сделать его немного более ясным. 1302 01:00:44,140 --> 01:00:45,890 Вот почему объект полезно. 1303 01:00:45,890 --> 01:00:48,760 Когда вы хотите объявить студента, как Zamyla, мы можем на самом деле 1304 01:00:48,760 --> 01:00:52,630 инкапсуляции так сказать внутри, что объект с помощью фигурных скобок, как 1305 01:00:52,630 --> 01:00:55,060 до целой кучей ключей и значения в здесь. 1306 01:00:55,060 --> 01:00:59,150 У нас есть ID, дом, и имя Zamyla, следует точка с запятой в качестве 1307 01:00:59,150 --> 01:01:00,690 обычно в конце. 1308 01:01:00,690 --> 01:01:04,840 >> Здесь, внизу тоже это немного разные, но и очень мощный 1309 01:01:04,840 --> 01:01:05,690 в эти дни. 1310 01:01:05,690 --> 01:01:08,780 Вот массив, и я знаю, что, поскольку есть квадратная скобка до 1311 01:01:08,780 --> 01:01:11,090 верх и квадратная скобка в нижней части. 1312 01:01:11,090 --> 01:01:16,050 И это массив, какие данные из введите видимо, в JavaScript? 1313 01:01:16,050 --> 01:01:21,260 Это массив это выглядит как три объекта. 1314 01:01:21,260 --> 01:01:24,580 И я знаю, что это только объектом из-за фигурные скобки. 1315 01:01:24,580 --> 01:01:28,760 И обратите внимание, есть открытая фигурная скобка, некоторые вещи, недалеко фигурная скобка, запятая, 1316 01:01:28,760 --> 01:01:31,180 затем еще немного, запятая, а затем еще немного. 1317 01:01:31,180 --> 01:01:33,800 Так вот три аргумента разделенные двумя запятыми. 1318 01:01:33,800 --> 01:01:36,810 >> Так что это массив из трех объектов. 1319 01:01:36,810 --> 01:01:39,940 И каждый из этих объектов по-видимому, студент или сотрудник некоторых 1320 01:01:39,940 --> 01:01:42,370 рода, каждый с ID, дом, и имя. 1321 01:01:42,370 --> 01:01:45,060 Но я назвал это что-то называется JSON - 1322 01:01:45,060 --> 01:01:47,450 JavaScript Object Notation. 1323 01:01:47,450 --> 01:01:52,060 И это формат данных, который на самом деле настолько очень популярны и в 1324 01:01:52,060 --> 01:01:55,100 моде в эти дни, что, если вы пишете приложение, которое использует Facebook 1325 01:01:55,100 --> 01:01:59,150 API, API Twitter, действительно почти любой API там в эти дни, 1326 01:01:59,150 --> 01:02:02,820 в том числе некоторые из CS50 собственную, Данные вы вернетесь не в 1327 01:02:02,820 --> 01:02:04,720 старая школа формат CSV. 1328 01:02:04,720 --> 01:02:06,780 >> Потому напомним, что CSV супер просто. 1329 01:02:06,780 --> 01:02:10,230 Он находится всего в колонны, разделенные запятыми. 1330 01:02:10,230 --> 01:02:13,190 Данные JSON дает вам больше метаданных. 1331 01:02:13,190 --> 01:02:17,800 Он связывает ключ с каждого значения так они не должны просто предположить, что 1332 01:02:17,800 --> 01:02:22,460 столбец нулевая одно значение, колонка один другой, колонка два это другое. 1333 01:02:22,460 --> 01:02:26,790 Все в объекте JSON здесь является своего рода из самоописываемыми, потому что каждый 1334 01:02:26,790 --> 01:02:30,940 одно из имен в этом файле есть буквально назвать перед ним, как 1335 01:02:30,940 --> 01:02:32,510 кавычках. 1336 01:02:32,510 --> 01:02:34,950 >> Итак, давайте взглянем на Несколько примеров здесь. 1337 01:02:34,950 --> 01:02:36,800 Отпусти меня в прибор. 1338 01:02:36,800 --> 01:02:41,000 И позвольте мне перейти в наш виртуальный хост Каталог, в общественности. 1339 01:02:41,000 --> 01:02:45,590 И позвольте мне перейти в JavaScript каталог. 1340 01:02:45,590 --> 01:02:49,610 И давайте идти вперед и открыть дом-0.html, где DOM просто означает, 1341 01:02:49,610 --> 01:02:51,010 объектная модель документа. 1342 01:02:51,010 --> 01:02:53,490 Это дерево материал, к которому Я говорил раньше. 1343 01:02:53,490 --> 01:02:54,950 >> И позвольте мне предложить следующее. 1344 01:02:54,950 --> 01:02:57,720 Вот веб-страница которого Тело довольно прост. 1345 01:02:57,720 --> 01:03:00,170 Так здесь внизу, заметить меня есть форма. 1346 01:03:00,170 --> 01:03:01,500 Мы видели тех, перед. 1347 01:03:01,500 --> 01:03:07,600 Он имеет два входа, один из которых имеет Идентификатор имени, один из которых имеет тип 1348 01:03:07,600 --> 01:03:09,830 представить, и первый свое тип текста. 1349 01:03:09,830 --> 01:03:11,900 Так что это на самом деле звучит довольно просто. 1350 01:03:11,900 --> 01:03:13,090 >> Пойдем отсюда. 1351 01:03:13,090 --> 01:03:15,390 Давайте вернемся на эту страницу здесь. 1352 01:03:15,390 --> 01:03:21,030 Пойдем в локальный, и иди в наш каталог JavaScript, и перейти к 1353 01:03:21,030 --> 01:03:24,640 дом-0, и здесь мы имеем эту форму. 1354 01:03:24,640 --> 01:03:26,550 Так вот, по-видимому все это страница не содержит. 1355 01:03:26,550 --> 01:03:28,740 Он имеет поле имени с кнопку Отправить. 1356 01:03:28,740 --> 01:03:30,340 Но я не собираюсь использовать PHP здесь. 1357 01:03:30,340 --> 01:03:34,310 Я собираюсь сделать все, на стороне клиента так сказать в JavaScript следующим образом. 1358 01:03:34,310 --> 01:03:39,100 >> Обратите внимание, что я действительно получил имя Поле этого входа уникальный 1359 01:03:39,100 --> 01:03:42,350 Идентификатор, который будет на самом деле спасти меня какое-то время в один момент. 1360 01:03:42,350 --> 01:03:45,480 И заметьте, я представил другой тег в голове моей веб-странице, 1361 01:03:45,480 --> 01:03:46,565  тег. 1362 01:03:46,565 --> 01:03:50,120 >> Так что это в этом смысле, что JavaScript является язык программирования на стороне клиента. 1363 01:03:50,120 --> 01:03:55,020 В этом случае, так же, как CSS, я положил это прямо внутри моего HTML. 1364 01:03:55,020 --> 01:03:58,810 Но обратите внимание, я объявил функцию что выглядит немного как PHP 1365 01:03:58,810 --> 01:04:01,530 синтаксически, но это на самом деле JavaScript, потому что опять же, это 1366 01:04:01,530 --> 01:04:03,920 на стороне клиента в браузере. 1367 01:04:03,920 --> 01:04:07,590 И сделать предположение, что это будет сделать, хотя некоторые из синтаксиса 1368 01:04:07,590 --> 01:04:09,338 здесь является новым. 1369 01:04:09,338 --> 01:04:11,760 >> АУДИТОРИЯ: привет, кто бы ни. 1370 01:04:11,760 --> 01:04:14,020 >> ДЭВИД Малан: Это будет поздороваться тому, кто посещает эту страницу. 1371 01:04:14,020 --> 01:04:15,120 Так как? 1372 01:04:15,120 --> 01:04:18,070 >> Так заметить, получается, в JavaScript есть функция оповещения (). 1373 01:04:18,070 --> 01:04:22,840 Это очень рода грустно функция, на самом деле просто, как правило, раздражать пользователей. 1374 01:04:22,840 --> 01:04:25,440 Это не тот, который вы должны действительно использовать обычно, но это быстрый и грязный 1375 01:04:25,440 --> 01:04:27,710 способ рода печать что-то к графическим интерфейсом 1376 01:04:27,710 --> 01:04:29,180 интерфейс, как браузере. 1377 01:04:29,180 --> 01:04:31,400 Заметьте, что здесь у меня есть Строка в одинарные кавычки. 1378 01:04:31,400 --> 01:04:36,010 Оказывается, что в отличие от C, JavaScript может на самом деле имеют использовании одного 1379 01:04:36,010 --> 01:04:38,730 цитирует, и, честно говоря, это просто вид стилистического конвенции между 1380 01:04:38,730 --> 01:04:41,180 JavaScript программисты использовать одиночные кавычки. 1381 01:04:41,180 --> 01:04:43,750 PHP, они на самом деле имеют несколько другой смысл. 1382 01:04:43,750 --> 01:04:45,810 Но сейчас, просто знаю, что что это единственная причина. 1383 01:04:45,810 --> 01:04:49,270 Конвенция в JavaScript, что часто использовать одинарные кавычки, но мы могли бы использовать 1384 01:04:49,270 --> 01:04:50,950 двойные кавычки в обоих местах, а также. 1385 01:04:50,950 --> 01:04:52,610 >> Так что это интересно. 1386 01:04:52,610 --> 01:04:56,430 Напомним, в последний раз, что мы имели, что изображение на экране, который привлек дерево 1387 01:04:56,430 --> 01:04:59,720 где вы имели HTML узел, и Головной узел, а узел тела, 1388 01:04:59,720 --> 01:05:00,800 а затем некоторый текст. 1389 01:05:00,800 --> 01:05:04,700 Но был один специальный узел в самый верх, что я назвал этот документ. 1390 01:05:04,700 --> 01:05:08,260 Ну, оказывается, в JavaScript, любой раз, когда вы написать программу в JavaScript 1391 01:05:08,260 --> 01:05:11,040 в браузере, у вас есть доступ к специальная глобальная переменная. 1392 01:05:11,040 --> 01:05:14,130 Похожие по духу суперглобальных РНР, этот называется в 1393 01:05:14,130 --> 01:05:16,050 в нижнем регистре документ. 1394 01:05:16,050 --> 01:05:21,480 >> Это как структуры, но эта структура также имеет функции внутри него. 1395 01:05:21,480 --> 01:05:23,790 Так C структура просто есть данные обычно. 1396 01:05:23,790 --> 01:05:29,060 Но объект JavaScript, так как это технически также имеет функции, 1397 01:05:29,060 --> 01:05:31,830 иначе известный как методы, внутри него. 1398 01:05:31,830 --> 01:05:35,750 И вы можете вызвать функцию внутри этот объект в буквальном смысле делает свою 1399 01:05:35,750 --> 01:05:39,610 Имя, точка, а затем название функция, или снова метод. 1400 01:05:39,610 --> 01:05:41,160 Это просто синонимом, действительно. 1401 01:05:41,160 --> 01:05:42,450 >> И что эта функция делать? 1402 01:05:42,450 --> 01:05:43,840 Вы можете рода догадаться из названия. 1403 01:05:43,840 --> 01:05:45,590 Получить элемент по ID. 1404 01:05:45,590 --> 01:05:50,040 Так это будет поиск по веб-страницу, поиск это дерево, ищу 1405 01:05:50,040 --> 01:05:55,210 что узел, AKA элемент, имеет Уникальный идентификатор цитатой конец цитаты именем. 1406 01:05:55,210 --> 01:05:56,560 И что тогда я буду делать? 1407 01:05:56,560 --> 01:06:00,350 Я собираюсь получить значение внутри что узел в дереве, и я собираюсь 1408 01:06:00,350 --> 01:06:02,580 как-то поздороваться с таким именем. 1409 01:06:02,580 --> 01:06:05,360 >> Так сделать предположение, даже если мы не имею видел это все же, то, что делают плюс 1410 01:06:05,360 --> 01:06:07,396 символы означают здесь и здесь, вероятно,? 1411 01:06:07,396 --> 01:06:08,230 >> АУДИТОРИЯ: Объединение. 1412 01:06:08,230 --> 01:06:09,220 >> ДЭВИД Малан: Объединение. 1413 01:06:09,220 --> 01:06:11,290 Да, и это лишь рода проектным решениям 1414 01:06:11,290 --> 01:06:12,280 люди сделали лет назад. 1415 01:06:12,280 --> 01:06:15,190 В PHP, вы объединить вещи с точками. 1416 01:06:15,190 --> 01:06:18,800 В C, вы прыгаете через несколько обручей и вызов такой функции как StrCopy () или 1417 01:06:18,800 --> 01:06:20,600 Strcat () или другие подобные функции. 1418 01:06:20,600 --> 01:06:22,060 Но в JavaScript, вы используете плюсы. 1419 01:06:22,060 --> 01:06:24,770 Так что это просто объединения три струны - 1420 01:06:24,770 --> 01:06:27,850 привет, имя, а затем Восклицательный знак. 1421 01:06:27,850 --> 01:06:30,390 >> Так что, когда и почему эта функция называется, хотя? 1422 01:06:30,390 --> 01:06:33,150 Ну, взять догадаться из HTML в нижней части. 1423 01:06:33,150 --> 01:06:35,810 Почему приветствовать () называется, или когда? 1424 01:06:35,810 --> 01:06:39,730 1425 01:06:39,730 --> 01:06:44,030 >> По-видимому, как лучшее, что я могу сказать, на представить, когда эта форма представляется, 1426 01:06:44,030 --> 01:06:47,200 Я собираюсь сделать все внутри этих кавычек. 1427 01:06:47,200 --> 01:06:50,900 И в частности, я собираюсь позвонить приветствовать (), а затем вернуться ложным. 1428 01:06:50,900 --> 01:06:53,090 >> Ну, давайте посмотрим, что чистая Эффект здесь в первую очередь. 1429 01:06:53,090 --> 01:06:58,290 Итак, позвольте мне идти вперед и ввести в, скажем, Лорен, Отправить. 1430 01:06:58,290 --> 01:06:59,440 Здравствуйте Лорен. 1431 01:06:59,440 --> 01:07:02,990 Давайте посмотрим, если возможно это было просто повезло реализация. 1432 01:07:02,990 --> 01:07:03,200 Не-а. 1433 01:07:03,200 --> 01:07:05,990 Так что это набрав из все имя я на самом деле положил там. 1434 01:07:05,990 --> 01:07:07,970 >> Но обратите внимание, что не меняется. 1435 01:07:07,970 --> 01:07:10,360 URL-адрес по-прежнему дом-0.html. 1436 01:07:10,360 --> 01:07:11,820 Там нет register.php. 1437 01:07:11,820 --> 01:07:13,110 Там нет второй файл. 1438 01:07:13,110 --> 01:07:14,930 Там нет атрибут действия. 1439 01:07:14,930 --> 01:07:19,720 Так что же это возвращение ложным предположительно делаешь? 1440 01:07:19,720 --> 01:07:23,660 Почему я вызова приветствовать (), а затем возвращение ложным наверное? 1441 01:07:23,660 --> 01:07:26,420 Что обычно происходит, когда вы нажимаете Отправить на форме, что даже у нас есть 1442 01:07:26,420 --> 01:07:27,854 видел на прошлой неделе? 1443 01:07:27,854 --> 01:07:29,900 >> АУДИТОРИЯ: [неразборчиво]. 1444 01:07:29,900 --> 01:07:30,860 >> ДЭВИД Малан: Само где-то, не так ли? 1445 01:07:30,860 --> 01:07:32,720 Это выходит на какой-то URL назначения. 1446 01:07:32,720 --> 01:07:34,120 Но я не хочу, чтобы это произошло здесь. 1447 01:07:34,120 --> 01:07:37,620 Я хочу, чтобы мой веб-страницы, чтобы быть полностью динамичный, как Gmail, где, как только вы 1448 01:07:37,620 --> 01:07:38,650 там, вы будете останавливаться там. 1449 01:07:38,650 --> 01:07:42,900 URL-адрес не меняется таким образом, что указывает вся страница перезарядки. 1450 01:07:42,900 --> 01:07:46,680 Скорее, я просто хочу, чтобы что-то изменить как печать что-то 1451 01:07:46,680 --> 01:07:48,320 здесь на экране. 1452 01:07:48,320 --> 01:07:49,630 >> Ну позвольте мне очистить это до немного. 1453 01:07:49,630 --> 01:07:55,370 Позвольте мне открыть не Dom-0, но позвольте мне открыть Дом-2. 1454 01:07:55,370 --> 01:07:57,350 Точно так же вы видели некоторые синтаксис здесь. 1455 01:07:57,350 --> 01:08:02,080 >> Оказывается, что мы только что сделал использует сырье JavaScript. 1456 01:08:02,080 --> 01:08:04,420 Так что это действительно язык JavaScript. 1457 01:08:04,420 --> 01:08:07,340 Некоторые из вас могут знать, из библиотека называется JQuery. 1458 01:08:07,340 --> 01:08:09,980 >> Так JQuery не то же самое понятия, как JavaScript. 1459 01:08:09,980 --> 01:08:14,110 Это просто библиотека, которая очень умные парень написал и популяризировал такие 1460 01:08:14,110 --> 01:08:18,100 , что почти каждый человек в мире в настоящее время использует JQuery при использовании JavaScript. 1461 01:08:18,100 --> 01:08:20,890 И на первый взгляд, честно говоря, это выглядит немного более загадочным. 1462 01:08:20,890 --> 01:08:24,990 Но вы найдете, особенно если вы идете там для вашего окончательного проекта с веб 1463 01:08:24,990 --> 01:08:29,029 развитие, вы увидите, что это очищает вещи и экономит вам довольно 1464 01:08:29,029 --> 01:08:30,229 несколько строк кода. 1465 01:08:30,229 --> 01:08:33,189 >> Так что давайте просто взгляд на то, как эта форма работает. 1466 01:08:33,189 --> 01:08:35,664 Обратите внимание, что я удалить видимому от моего HTML? 1467 01:08:35,664 --> 01:08:38,240 1468 01:08:38,240 --> 01:08:40,630 Там нет на представить обработчик так сказать. 1469 01:08:40,630 --> 01:08:41,470 Там нет атрибута. 1470 01:08:41,470 --> 01:08:43,359 Потому что вы знаете, что Я действительно не нравится? 1471 01:08:43,359 --> 01:08:45,640 Я чувствовал, что мы падали к старым привычкам там. 1472 01:08:45,640 --> 01:08:49,340 Так же, как это начинало чувствовать себя неаккуратно смешиваться как CSS с 1473 01:08:49,340 --> 01:08:52,149 HTML, потому что вы вроде бросали разные языки по всему 1474 01:08:52,149 --> 01:08:56,180 место, так же это началось чувствовать как плохой дороге спуститься, где 1475 01:08:56,180 --> 01:09:01,069 Я ставлю код JavaScript внутри моего HTML, а не факторинговых его. 1476 01:09:01,069 --> 01:09:02,279 >> Так вот, урок здесь. 1477 01:09:02,279 --> 01:09:05,080 В Дом-2.html, я факторинга его. 1478 01:09:05,080 --> 01:09:07,399 И я немного делать вещи разному. 1479 01:09:07,399 --> 01:09:09,630 На данный момент, я собираюсь махнуть руками на то, что это действительно 1480 01:09:09,630 --> 01:09:10,590 под капотом. 1481 01:09:10,590 --> 01:09:14,210 Но только сейчас предположить, что, что первый строка кода в этой библиотеке 1482 01:09:14,210 --> 01:09:18,170 называется JQuery просто означает, когда Документ готов, выполните следующие действия. 1483 01:09:18,170 --> 01:09:20,080 >> Поскольку веб-страницы может занять некоторое время для загрузки. 1484 01:09:20,080 --> 01:09:23,029 Вы можете быть на медленном интернете соединение, и это могло бы быть спиннинг 1485 01:09:23,029 --> 01:09:25,290 и спиннинг, и, наконец, он заряжен. 1486 01:09:25,290 --> 01:09:29,060 Это строка кода просто говорит дождитесь вся страница будет готова, документ 1487 01:09:29,060 --> 01:09:31,189 готов, перед выполнением этого кода. 1488 01:09:31,189 --> 01:09:34,390 >> А теперь обратите внимание, это, вероятно, самый полезный первый 1489 01:09:34,390 --> 01:09:36,189 отнять у JQuery. 1490 01:09:36,189 --> 01:09:42,140 Эта линия здесь очень близки по духу к этому гораздо дольше линии здесь. 1491 01:09:42,140 --> 01:09:46,920 В то время как в сыром кода JavaScript, есть существует глобальный объект документа, 1492 01:09:46,920 --> 01:09:50,460 есть функция GetElementById (), люди, которые написали 1493 01:09:50,460 --> 01:09:55,720 JQuery упрощена, что просто сказать знак доллара, а затем внутри 1494 01:09:55,720 --> 01:10:00,250 скобки поставить две цитаты, а затем положить символ решетка с последующим 1495 01:10:00,250 --> 01:10:02,250 уникальный идентификатор вы хотите захватить. 1496 01:10:02,250 --> 01:10:06,170 Так это эквивалентно document.getElementById. 1497 01:10:06,170 --> 01:10:11,090 >> Между тем,. Представить просто означает на представление какой бы форме вы 1498 01:10:11,090 --> 01:10:14,240 ссылаясь на слева, перейдите вперед и выполнить это. 1499 01:10:14,240 --> 01:10:16,600 Но теперь это любопытство тоже. 1500 01:10:16,600 --> 01:10:19,560 Что странно о том, что Я выделил здесь? 1501 01:10:19,560 --> 01:10:23,840 1502 01:10:23,840 --> 01:10:28,594 Мало того, что это отчасти синтаксически новая, есть также чего-то не хватает. 1503 01:10:28,594 --> 01:10:29,558 >> АУДИТОРИЯ: Это просто называется функция? 1504 01:10:29,558 --> 01:10:31,970 Это не называется оповещения? 1505 01:10:31,970 --> 01:10:32,440 >> ДЭВИД Малан: Да. 1506 01:10:32,440 --> 01:10:35,450 Ну, так оповещения () не работает здесь, чтобы быть справедливым. 1507 01:10:35,450 --> 01:10:39,520 Но нет никакого упоминания о имя, как вы знаете, Foo или 1508 01:10:39,520 --> 01:10:40,980 что-то здесь. 1509 01:10:40,980 --> 01:10:43,830 И в самом деле, это одна из особенностей из JavaScript, что это довольно 1510 01:10:43,830 --> 01:10:45,370 мощный, но и совсем новые. 1511 01:10:45,370 --> 01:10:47,460 И PHP на самом деле имеет это также. 1512 01:10:47,460 --> 01:10:49,500 >> Позвольте мне идти вперед и делать что-то действительно быстро. 1513 01:10:49,500 --> 01:10:52,030 Позвольте мне идти вперед и поставить это здесь. 1514 01:10:52,030 --> 01:10:52,600 Позвольте мне сделать это. 1515 01:10:52,600 --> 01:10:53,690 Функция. 1516 01:10:53,690 --> 01:10:56,455 Давайте назовем этот обработчик (). 1517 01:10:56,455 --> 01:10:58,290 Функция обработчика, так сказать. 1518 01:10:58,290 --> 01:11:00,110 То, что выполняет некоторые операции. 1519 01:11:00,110 --> 01:11:02,700 Позвольте мне очистить свой отступа. 1520 01:11:02,700 --> 01:11:04,380 И поставить это здесь. 1521 01:11:04,380 --> 01:11:06,090 И что это здесь. 1522 01:11:06,090 --> 01:11:06,470 Да. 1523 01:11:06,470 --> 01:11:07,060 ОК. 1524 01:11:07,060 --> 01:11:10,300 >> Так что теперь у меня есть функция называется обработчик (), что я действительно не знаю, 1525 01:11:10,300 --> 01:11:10,890 что он делает еще. 1526 01:11:10,890 --> 01:11:12,710 Это просто еще есть такое. 1527 01:11:12,710 --> 01:11:13,900 К сожалению. 1528 01:11:13,900 --> 01:11:15,820 Принял слишком много. 1529 01:11:15,820 --> 01:11:18,490 Давайте сделаем это. 1530 01:11:18,490 --> 01:11:18,990 Хорошо. 1531 01:11:18,990 --> 01:11:20,240 Извините. 1532 01:11:20,240 --> 01:11:23,140 1533 01:11:23,140 --> 01:11:23,690 Хорошо. 1534 01:11:23,690 --> 01:11:24,720 Позвольте мне сделать это. 1535 01:11:24,720 --> 01:11:25,020 ОК. 1536 01:11:25,020 --> 01:11:27,040 Это выглядит красиво и прямо Теперь вперед. 1537 01:11:27,040 --> 01:11:29,090 Позвольте мне сделать это. 1538 01:11:29,090 --> 01:11:29,860 Сделайте это. 1539 01:11:29,860 --> 01:11:30,950 И хорошо. 1540 01:11:30,950 --> 01:11:33,080 Так что теперь, давайте поставим это здесь. 1541 01:11:33,080 --> 01:11:35,840 1542 01:11:35,840 --> 01:11:37,270 Нет больше программирования на лету. 1543 01:11:37,270 --> 01:11:37,900 ОК. 1544 01:11:37,900 --> 01:11:40,000 >> Так что теперь, давайте вернемся к где история началась. 1545 01:11:40,000 --> 01:11:43,530 Ранее я говорил, что эта линия здесь значит, когда документ будет готов, перейдите 1546 01:11:43,530 --> 01:11:44,380 вперед и делать это. 1547 01:11:44,380 --> 01:11:45,660 Что я хочу сделать? 1548 01:11:45,660 --> 01:11:49,070 Ну конкретно, я хочу пойти вперед и сделайте следующее. 1549 01:11:49,070 --> 01:11:53,700 Выполнить эту строку кода, а затем то, что я хочу, чтобы вы сделать, это позвонить этому 1550 01:11:53,700 --> 01:11:56,370 работать при отправке формы. 1551 01:11:56,370 --> 01:11:57,730 >> Вот что интересно. 1552 01:11:57,730 --> 01:11:59,170 Это само по себе не является функцией. 1553 01:11:59,170 --> 01:12:02,540 Обратите внимание, я не поставив скобки здесь, в обычном режиме. 1554 01:12:02,540 --> 01:12:06,800 Я буквально передачи функции называется обработчик () другую функцию 1555 01:12:06,800 --> 01:12:10,800 называется Submit () в качестве аргумента как хотя это как переменную. 1556 01:12:10,800 --> 01:12:14,290 И это одна из особенностей JavaScript, является самим функциям 1557 01:12:14,290 --> 01:12:15,710 на самом деле просто объектами. 1558 01:12:15,710 --> 01:12:18,350 В самом деле, в действительности они переменных какой-то. 1559 01:12:18,350 --> 01:12:21,340 И если название функции обработчик (), нет никаких причин, я не могу 1560 01:12:21,340 --> 01:12:23,390 передать его в качестве аргумента здесь. 1561 01:12:23,390 --> 01:12:27,530 А это значит, когда форма с идентификатором демо 1562 01:12:27,530 --> 01:12:29,320 представлены, вызвать эту функцию. 1563 01:12:29,320 --> 01:12:32,770 >> Но теперь, если я отменю все это, почему тогда я, возможно, сделать 1564 01:12:32,770 --> 01:12:34,850 это минуту назад? 1565 01:12:34,850 --> 01:12:36,840 Ну, это анонимная функция. 1566 01:12:36,840 --> 01:12:41,080 Потому что, честно говоря, я поняла, почему я беспокоит тратить время объявления 1567 01:12:41,080 --> 01:12:45,540 Функция называется обработчиком () только позвонить это в одном и только одном месте? 1568 01:12:45,540 --> 01:12:48,640 Если мне не нужно имя, и я не нужно позвонить его более чем в одном месте, 1569 01:12:48,640 --> 01:12:51,200 давайте просто реализовать функцию там, где мне это нужно. 1570 01:12:51,200 --> 01:12:55,190 И так JavaScript и PHP, что поддержка называются анонимными функциями, что 1571 01:12:55,190 --> 01:12:57,900 Позвольте мне сделать именно это здесь. 1572 01:12:57,900 --> 01:12:59,570 >> Но мы просто поцарапать поверхность. 1573 01:12:59,570 --> 01:13:02,430 Давайте дразнить только с парой Окончательный примеров. 1574 01:13:02,430 --> 01:13:04,600 >> Если я иду в quote.php. 1575 01:13:04,600 --> 01:13:07,160 1576 01:13:07,160 --> 01:13:11,870 Обратите внимание, что это на самом деле PHP функции, программа PHP, который я написал 1577 01:13:11,870 --> 01:13:15,270 что ожидает HTTP параметр, называемый символ, и я могу передать в 1578 01:13:15,270 --> 01:13:16,730 значение, как FB. 1579 01:13:16,730 --> 01:13:20,010 И если мы на самом деле посмотреть на исходный коде, это запрос бесплатный сайт 1580 01:13:20,010 --> 01:13:23,680 называется Yahoo Finance, как и P-набор семь, и он возвращает мне 1581 01:13:23,680 --> 01:13:26,580 видимо что-то в Формат JSON является известный - 1582 01:13:26,580 --> 01:13:28,010 Нотации объектов JavaScript. 1583 01:13:28,010 --> 01:13:28,810 Это просто объект. 1584 01:13:28,810 --> 01:13:32,500 Обратите внимание на фигурные скобки, кавычки толстой кишки, и запятые. 1585 01:13:32,500 --> 01:13:34,720 >> Теперь между тем, это довольно прохладно. 1586 01:13:34,720 --> 01:13:38,520 Потому что я, вероятно, может использовать программирование язык для создания URL-адресов 1587 01:13:38,520 --> 01:13:40,370 который выглядит следующим образом динамически, не так ли? 1588 01:13:40,370 --> 01:13:43,340 Я могу изменить это на Google и вернуться от Google 1589 01:13:43,340 --> 01:13:47,930 цена акций $ 1,017.55. 1590 01:13:47,930 --> 01:13:49,640 Итак, давайте посмотрим, если мы не можем использовать это сейчас. 1591 01:13:49,640 --> 01:13:56,590 >> Пустите меня к Ajax-0 здесь, которые выглядит следующим образом. 1592 01:13:56,590 --> 01:13:59,750 Это просто сайт, который имеет форма с кнопкой. 1593 01:13:59,750 --> 01:14:05,860 Позвольте мне пойти дальше и ввести YHOO для символа акций Yahoo, нажмите кнопку Получить 1594 01:14:05,860 --> 01:14:10,530 Цитата, и теперь замечаю я получил предупреждение 32.86. 1595 01:14:10,530 --> 01:14:14,050 >> Позвольте мне на самом деле пойти любитель версия на этой странице, версия два, а 1596 01:14:14,050 --> 01:14:17,530 введите скажем, Microsoft, MSFT. 1597 01:14:17,530 --> 01:14:18,410 Получить специальное предложение. 1598 01:14:18,410 --> 01:14:19,850 И теперь не замечаете, отсутствует оповещение. 1599 01:14:19,850 --> 01:14:22,770 Обратите внимание, где он говорит цену , которые будут определены? 1600 01:14:22,770 --> 01:14:27,060 Существует простой из примеров, которые намекает на то Gchat и Facebook 1601 01:14:27,060 --> 01:14:30,070 Чат и Gmail, и другие подобные веб-сайты делают на самом деле 1602 01:14:30,070 --> 01:14:31,290 изменение веб-страницы. 1603 01:14:31,290 --> 01:14:31,800 >> Заметим, что это. 1604 01:14:31,800 --> 01:14:33,120 Позвольте мне перезагрузите страницу. 1605 01:14:33,120 --> 01:14:35,080 Позвольте мне открыть Инспектор Chrome. 1606 01:14:35,080 --> 01:14:36,890 Пустите меня к элементам Вкладка здесь. 1607 01:14:36,890 --> 01:14:42,310 А теперь обратите внимание, если я увеличу сюда и открыть это, обратите внимание, что это мой 1608 01:14:42,310 --> 01:14:44,500 HTML DOM - моя объектной модели документа. 1609 01:14:44,500 --> 01:14:45,920 Это мой HTML. 1610 01:14:45,920 --> 01:14:48,750 Но теперь замечаю, хотя это будет быть немного трудно увидеть его в обоих 1611 01:14:48,750 --> 01:14:52,080 местах одновременно, если я печатаю в FB здесь, следите за нижней 1612 01:14:52,080 --> 01:14:54,110 на экране только. 1613 01:14:54,110 --> 01:14:57,720 >> Это на самом деле изменения мой HTML на лету. 1614 01:14:57,720 --> 01:15:01,670 И он делает это довольно просто , делая что-то вроде этого. 1615 01:15:01,670 --> 01:15:06,800 Если я открываю Ajax-2, обратите внимание реализации что-то так сексуально, как 1616 01:15:06,800 --> 01:15:09,560 , что, хотя это довольно уродливо, но так сложны, как, что 1617 01:15:09,560 --> 01:15:11,910 функционально, она имеет некоторые HTML в нижней части. 1618 01:15:11,910 --> 01:15:13,810 Но обратите внимание, я использовал для тега. 1619 01:15:13,810 --> 01:15:16,640 Мы не использовал это раньше, но это как, но это не заставит 1620 01:15:16,640 --> 01:15:17,840 все на новую строку. 1621 01:15:17,840 --> 01:15:20,830 Он просто имеет прямоугольную область на той же линии по существу. 1622 01:15:20,830 --> 01:15:22,870 >> Обратите внимание, что я дал ему идентификатор цене. 1623 01:15:22,870 --> 01:15:26,800 И оказывается, с помощью тех же JavaScript библиотека, у меня есть функция 1624 01:15:26,800 --> 01:15:30,440 называется цитата (), которая вызывается каждый раз формы. 1625 01:15:30,440 --> 01:15:31,800 И то, что я делаю это. 1626 01:15:31,800 --> 01:15:35,730 Я объявляю переменную в JavaScript называется URL, сохранения значения 1627 01:15:35,730 --> 01:15:38,650 quote.php? символа =. 1628 01:15:38,650 --> 01:15:44,220 Другими словами, я сам начинаю подготовить запрос HTTP, а затем 1629 01:15:44,220 --> 01:15:49,250 Я на эту объединения с плюсом любой элемент с ID 1630 01:15:49,250 --> 01:15:54,190 из символа, который заметить, что текстовое поле вплоть здесь. 1631 01:15:54,190 --> 01:15:56,630 Так же, как у нас было формах в прошлом. 1632 01:15:56,630 --> 01:16:01,450 >> А потом выясняется, в JQuery, если вы звонить. Val (), которая вызывает из Val 1633 01:16:01,450 --> 01:16:05,900 функция, значение функции, которая получает то, что пользователь ввели дюйма 1634 01:16:05,900 --> 01:16:08,920 А затем все сетевые трафика что происходит это. 1635 01:16:08,920 --> 01:16:11,230 $. GetJSON. 1636 01:16:11,230 --> 01:16:13,720 >> И как в сторону, знак доллара является просто сокращенная запись. 1637 01:16:13,720 --> 01:16:16,860 Это действительно jQuery.getJSON. 1638 01:16:16,860 --> 01:16:21,520 Получить меня JSON с данного адреса, и когда запрос возвращается, называем это 1639 01:16:21,520 --> 01:16:26,550 Функция и передать в качестве аргумента что вернулся с сервера. 1640 01:16:26,550 --> 01:16:31,205 >> Итак, другими словами, если я возвращаюсь в браузеру, и я возвращаюсь к quote.php, 1641 01:16:31,205 --> 01:16:35,590 что мой браузер делает это становится это фрагмент данных. 1642 01:16:35,590 --> 01:16:38,930 И когда я иду к веб-страница здесь, заметить, если мы вместо этого пойти к сети 1643 01:16:38,930 --> 01:16:43,820 Вкладка и очистить его, а затем введите в что-то вроде GOOG для Google и получить 1644 01:16:43,820 --> 01:16:46,340 Цитата, обратите внимание на страницу не изменилась. 1645 01:16:46,340 --> 01:16:50,990 Но запрос HTTP был сделан, и то, что вернулся сюда, если мы посмотрим на 1646 01:16:50,990 --> 01:16:56,130 ответ целая куча JSON что мы обращались, наконец, с 1647 01:16:56,130 --> 01:16:58,070 эта простая линия здесь. 1648 01:16:58,070 --> 01:17:00,150 >> Данных является то, что получили с сервера. 1649 01:17:00,150 --> 01:17:02,120 Цена это имя Ключ я забочусь о. 1650 01:17:02,120 --> 01:17:05,230 Так data.price дает мне, что. 1651 01:17:05,230 --> 01:17:07,540 >> Теперь тем временем, и этот последний пример. 1652 01:17:07,540 --> 01:17:09,280 Вы можете сделать еще больше со страницей. 1653 01:17:09,280 --> 01:17:12,440 Один на самом деле, ну два. 1654 01:17:12,440 --> 01:17:14,780 Мы можем вернуть пометить, если вы помните, что это. 1655 01:17:14,780 --> 01:17:15,850 Вот JavaScript. 1656 01:17:15,850 --> 01:17:17,110 Мы можем сделать это. 1657 01:17:17,110 --> 01:17:17,690 Очень интересно. 1658 01:17:17,690 --> 01:17:18,800 Мы оставим это как захватывающим. 1659 01:17:18,800 --> 01:17:21,590 >> Но более возбуждающе, вы можете делать вещи, как это. 1660 01:17:21,590 --> 01:17:25,940 Если я иду в геолокации-1, то получается, что Chrome знает, что мы находимся на 1661 01:17:25,940 --> 01:17:30,672 широту и долготу 42.37. -71,10. 1662 01:17:30,672 --> 01:17:32,940 Так что есть еще более есть в вашем распоряжении. 1663 01:17:32,940 --> 01:17:34,290 Но об этом на следующей неделе. 1664 01:17:34,290 --> 01:17:35,540 Увидимся в понедельник. 1665 01:17:35,540 --> 01:17:37,558