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 >> ДЕВІД Малан: Це займає більше часу. 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 >> ДЕВІД Малан: Так. 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-A-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 перекласти ключ, наприклад, і потім натисніть перезавантажити у вашому браузері, і це буде 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 >> ДЕВІД Малан: Що це? 165 00:07:24,258 --> 00:07:25,250 >> АУДИТОРІЯ: Назвіться логіку в код. 166 00:07:25,250 --> 00:07:26,620 >> ДЕВІД Малан: Так, ввести Логіка в код. 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 Але за те, як п-встановити сім, де ви маніпулюєте запасів і 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, або Рубі або 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 Те, що це дійсно взяв у CPU Прилад був 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 >> DAVID мала: я дійсно не використовувати хеш-таблицю. 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 >> DAVID мала: Так. 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 >> AUDIENCE: кожна з функцій, які Ви включили має набагато більше повної 440 00:19:54,509 --> 00:19:56,610 ємність, ніж - 441 00:19:56,610 --> 00:19:57,550 >> DAVID мала: Так от дуже вірно. 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. 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 >> DAVID мала: Так. 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 Дозвольте мені натисніть Enter. 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, захищених сокетів, або 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 >> ДЕВІД Малан: Так. 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 У базі Марія насправді розщедритися тому говорити про 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 ім'я користувача, одним з яких є хеш, та іншої з яких є ID. 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 Не може бути двох Caesars. 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 >> ДЕВІД Малан: Люди можуть мати той же пароль, звичайно. 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 >> ДЕВІД Малан: Більш швидкий пошук. 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 >> ДЕВІД Малан: 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 для пошуку Джейсона, а не просто кажучи, дайте мені користувача номер два. 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 І СИМВОЛ трохи оманливе жодного СИМВОЛ. 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 вказавши фіксовану довжину на Чарі, якщо Ви знаєте, що число заздалегідь. 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 >> DAVID мала: Спілкування. 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 >> DAVID мала: залиште записку, вірно? 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 для цього ім'я користувача або цього користувача Ідентифікатор, унікальний ідентифікатор. 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 Так що це, як робити вибір і Вставте так, щоб говорити в той же час. 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 і вам не потрібно цю функцію для р-задати сім, але мати на увазі, для 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 >> ДЕВІД Малан: Абсолютно вірно. 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 Кожен веб-сайт, що ви, хлопці, ймовірно, використовувати щодня використовувати наявність для 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 називається уявити () як аргумент як хоча це як змінну. 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 А це означає, коли форма з ID демо є 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, як п-набір сім, і це повернення до мене 1581 01:13:23,680 --> 01:13:26,580 щось в мабуть, Формат відомо, JSON - 1582 01:13:26,580 --> 01:13:28,010 JavaScript Object Notation. 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 Я об'єднання на що з плюсом будь-який елемент з ідентифікатором 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 (), яка викликає з вал 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